From a5bd153118631c44e0404e9939c6217d39bdb535 Mon Sep 17 00:00:00 2001 From: BadIdeaException <7235795+BadIdeaException@users.noreply.github.com> Date: Mon, 29 Sep 2025 22:28:58 +0200 Subject: [PATCH 01/61] Fix faulty tests for `createAppointment` (#2767) * fix: correct implementation of `createAppointment` Makes the suggested implementation of `createAppointment` correctly handle appointment creations that cross timezones - e.g. due to Daylight Savings Time. re: https://forum.exercism.org/t/tests-and-suggested-implementation-for-appointment-time-are-wrong/ * fix: correct tests for `createAppointment` Corrects the test so that they respect locales with Daylight Savings Time. Previously, tests and suggested implementation simply did simple time arithmetic based on the offset provided to `createAppointment`. This is wrong, as it will shift appointment time-of-day when moving accross DST boundaries. This changes test implementation so that: 1. correct usage of input times is checked, by passing a 0 offset 2. correct offsetting of appointment time is checked, by passing in a known start date and then creating one appointment that is within the same DST state and one that is not. re: https://forum.exercism.org/t/tests-and-suggested-implementation-for-appointment-time-are-wrong/ * docs: update hints * chore: update contributors * style: prettier * docs: refer to instructions for going about getter method Co-authored-by: Cool-Katt * docs: more concise hint about setters Co-authored-by: Cool-Katt * Format all the things --------- Co-authored-by: Cool-Katt Co-authored-by: Derk-Jan Karrenbeld --- .prettierignore | 8 ++-- .../concept/appointment-time/.docs/hints.md | 3 +- .../appointment-time/.meta/config.json | 3 ++ .../appointment-time/.meta/exemplar.js | 5 ++- .../appointment-time/appointment-time.spec.js | 44 ++++++++++++------- 5 files changed, 42 insertions(+), 21 deletions(-) diff --git a/.prettierignore b/.prettierignore index 1306859a0c..0187784ddc 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,7 +1,9 @@ /.github/labels.yml -/.github/workflows/sync-labels.yml -/.github/workflows/no-important-files-changed.yml + +# Generated exercises/**/README.md +pnpm-lock.yaml + !/README.md # Originates from https://github.com/exercism/org-wide-files @@ -19,4 +21,4 @@ config.json # Originates from https://github.com/exercism/problem-specifications exercises/practice/**/.docs/instructions.md -exercises/practice/**/.docs/introduction.md +exercises/practice/**/.docs/introduction.md \ No newline at end of file diff --git a/exercises/concept/appointment-time/.docs/hints.md b/exercises/concept/appointment-time/.docs/hints.md index 805e162bdd..f089f650fb 100644 --- a/exercises/concept/appointment-time/.docs/hints.md +++ b/exercises/concept/appointment-time/.docs/hints.md @@ -4,7 +4,8 @@ - You need to create a new date. The introduction elaborates on the different ways. - `Date.now()` gives you current time in milliseconds -- A day consist of 24 hour. An hour consist of 60 minutes. A minute consist of 60 seconds. A second consist of 1000 milliseconds. In order to get timestamp of `n` days later from current date, you can sum current timestamp and `n * 24 * 60 * 60 * 1000`. +- `Date` has several getter methods, listed in the introduction, to get date components. Can you use one of those methods? +- Likewise, `Date` has matching setter methods to set those components, rolling over into "higher" components if needed. ## 2. Convert a date into a timestamp diff --git a/exercises/concept/appointment-time/.meta/config.json b/exercises/concept/appointment-time/.meta/config.json index 4488a8e345..649f219e32 100644 --- a/exercises/concept/appointment-time/.meta/config.json +++ b/exercises/concept/appointment-time/.meta/config.json @@ -3,6 +3,9 @@ "SalahuddinAhammed", "SleeplessByte" ], + "contributors": [ + "BadIdeaException" + ], "files": { "solution": [ "appointment-time.js" diff --git a/exercises/concept/appointment-time/.meta/exemplar.js b/exercises/concept/appointment-time/.meta/exemplar.js index ae0b84fca7..ff47aad2fc 100644 --- a/exercises/concept/appointment-time/.meta/exemplar.js +++ b/exercises/concept/appointment-time/.meta/exemplar.js @@ -9,7 +9,10 @@ * @returns {Date} the appointment */ export function createAppointment(days, now = Date.now()) { - return new Date(now + days * 24 * 3600 * 1000); + const date = new Date(now); + date.setDate(date.getDate() + days); + + return date; } /** diff --git a/exercises/concept/appointment-time/appointment-time.spec.js b/exercises/concept/appointment-time/appointment-time.spec.js index 689e2075c5..d0872cc2b3 100644 --- a/exercises/concept/appointment-time/appointment-time.spec.js +++ b/exercises/concept/appointment-time/appointment-time.spec.js @@ -10,33 +10,45 @@ import { } from './appointment-time'; describe('createAppointment', () => { - test('creates appointment 4 days in the future', () => { - const currentTime = Date.now(); - const expectedTime = currentTime + 345600 * 1000; + test('uses the passed in current time', () => { + const currentTime = Date.UTC(2000, 6, 16, 12, 0, 0, 0); + const result = createAppointment(0, currentTime); - expect(createAppointment(4, currentTime)).toEqual(new Date(expectedTime)); + expect(result).toEqual(new Date(currentTime)); }); - test('creates appointment 124 in the future', () => { + test('uses the actual current time when it is not passed in', () => { const currentTime = Date.now(); - const expectedTime = currentTime + 10713600 * 1000; + const result = createAppointment(0); - expect(createAppointment(124, currentTime)).toEqual(new Date(expectedTime)); + expect(result).toEqual(new Date(currentTime)); }); - test('uses the passed in current time', () => { - const currentTime = Date.UTC(2000, 6, 16, 12, 0, 0, 0); - const result = createAppointment(0, currentTime); + test('creates appointment without DST change', () => { + const offset = 4; // days - expect(result.getFullYear()).toEqual(2000); + const currentTime = Date.UTC(2000, 6, 1, 12, 0, 0, 0); + const expectedTime = currentTime + offset * 24 * 60 * 60 * 1000; + + expect(createAppointment(offset, currentTime)).toEqual( + new Date(expectedTime), + ); }); - test('uses the actual current time when it is not passed in', () => { - const result = createAppointment(0); + test('creates appointment with potential DST change', () => { + const offset = 180; // days + + const currentTime = Date.UTC(2000, 6, 1, 12, 0, 0, 0); + let expectedTime = currentTime + offset * 24 * 60 * 60 * 1000; + // Manually adjust for DST timezone offset: + expectedTime += + (new Date(expectedTime).getTimezoneOffset() - + new Date(currentTime).getTimezoneOffset()) * + 60 * + 1000; - expect(Math.abs(Date.now() - result.getTime())).toBeLessThanOrEqual( - // Maximum number of time zones difference - 27 * 60 * 60 * 1000, + expect(createAppointment(offset, currentTime)).toEqual( + new Date(expectedTime), ); }); From 3a5f9ae999de80fa34aeb2dbd48bb826992ec3f3 Mon Sep 17 00:00:00 2001 From: Adebiyi Itunuayo <44436048+FFFF-0000h@users.noreply.github.com> Date: Thu, 2 Oct 2025 07:23:26 +0100 Subject: [PATCH 02/61] Enhance template string lesson with newline escape sequence demonstration (#2776) * Update introduction.md * Update instructions.md * Update concepts/template-strings/introduction.md Co-authored-by: Derk-Jan Karrenbeld * [CI] Format code --------- Co-authored-by: Derk-Jan Karrenbeld Co-authored-by: github-actions[bot] --- concepts/template-strings/introduction.md | 16 +++++++++++++++- .../concept/custom-signs/.docs/instructions.md | 4 +++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/concepts/template-strings/introduction.md b/concepts/template-strings/introduction.md index 7e54dc9cf9..ed6ba23b6a 100644 --- a/concepts/template-strings/introduction.md +++ b/concepts/template-strings/introduction.md @@ -32,8 +32,22 @@ When you are needing to have strings formatted on multiple lines: `This is an example of using template strings to accomplish multiple lines`; + +/* => This is an example of using template + strings to accomplish multiple + lines +*/ ``` +If you want to represent a newline inside a regular string instead of using a template string (ie. not using backticks), you can use the newline escape sequence `\n`: + +````javascript +"This is an example of using the newline escape sequence!\nWithout backticks" + +/* => This is an example of using the newline escape sequence! + Without backticks +*/ + With the available substitution capabilities, you can also introduce logic into the process to determine what the output string should be. One way to handle the logic could be using the [ternary operator][ternary-operator]. This gives the same conditional `if/else` functionality in a slightly different format. @@ -45,7 +59,7 @@ const grade = 95; `You have ${grade > 90 ? 'passed' : 'failed'} the exam.`; // => You have passed the exam. -``` +```` [string-reference]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String [type-conversion-concept]: /tracks/javascript/concepts/type-conversion diff --git a/exercises/concept/custom-signs/.docs/instructions.md b/exercises/concept/custom-signs/.docs/instructions.md index 3a8a659d6f..e4ccb0ba46 100644 --- a/exercises/concept/custom-signs/.docs/instructions.md +++ b/exercises/concept/custom-signs/.docs/instructions.md @@ -32,7 +32,9 @@ Implement the function `graduationFor(name, year)` which takes a name as a strin ```javascript graduationFor('Hannah', 2022); -// => "Congratulations Hannah!\nClass of 2022" +/* => "Congratulations Hannah! + Class of 2022" +*/ ``` ## 4. Compute the cost of a sign From e48e30f8bb793ed2526f8178613578be58ca54a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:11:30 +0530 Subject: [PATCH 03/61] Bump actions/setup-node from 4.4.0 to 5.0.0 (#2771) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.4.0 to 5.0.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/49933ea5288caeca8642d1e84afbd3f7d6820020...a0853c24544627f65ddf259abe73b1d18a591444) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 2 +- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/pr.ci.js.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index 38462cba30..f56ec5022d 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 with: node-version: 22.x cache: 'pnpm' diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index d623c9d4ed..91c1439a28 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -18,7 +18,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 with: node-version: 22.x cache: 'pnpm' @@ -42,7 +42,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 67572e1739..683834b1a6 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -28,7 +28,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 with: node-version: 22.x cache: 'pnpm' @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' From b24b4605a3f7cd39ab719434590716fb382e81a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 14:12:09 +0530 Subject: [PATCH 04/61] Bump actions/github-script from 7.0.1 to 8.0.0 (#2770) Bumps [actions/github-script](https://github.com/actions/github-script) from 7.0.1 to 8.0.0. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/60a0d83039c74a4aee543508d2ffcb1c3799cdea...ed597411d8f924073f98dfc5c65a23a2325f34cd) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: 8.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 6 +++--- .github/workflows/action-sync.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index f56ec5022d..4567e8ac85 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -13,7 +13,7 @@ jobs: steps: - name: 'Post acknowledgement that it will format code' continue-on-error: true # Never fail the build if this fails - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -95,7 +95,7 @@ jobs: - name: 'Post acknowledgement that it has formatted the code' continue-on-error: true # Never fail the build if this fails - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -109,7 +109,7 @@ jobs: - name: 'Post reminder to trigger build manually' continue-on-error: true # Never fail the build if this fails if: steps.fork_status.outputs.fork == 'true' - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/action-sync.yml b/.github/workflows/action-sync.yml index 5f8de73c82..a184d04905 100644 --- a/.github/workflows/action-sync.yml +++ b/.github/workflows/action-sync.yml @@ -13,7 +13,7 @@ jobs: steps: - name: 'Post acknowledgement that it will sync exercises' continue-on-error: true # Never fail the build if this fails - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -87,7 +87,7 @@ jobs: - name: 'Post acknowledgement that it has synced the code' continue-on-error: true # Never fail the build if this fails - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -101,7 +101,7 @@ jobs: - name: 'Post reminder to trigger build manually' continue-on-error: true # Never fail the build if this fails if: steps.fork_status.outputs.fork == 'true' - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | From 14231cbe9fdc708139aac133711ffd805852492b Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Thu, 2 Oct 2025 16:37:25 +0200 Subject: [PATCH 05/61] Update CONTRIBUTING.md (#2779) * Update CONTRIBUTING.md @Cool-Katt something like this for now? * [CI] Format code --------- Co-authored-by: github-actions[bot] --- CONTRIBUTING.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4aa8847d1e..89fa61f770 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,6 +4,13 @@ This is the JavaScript track, one of the many tracks on [exercism][web-exercism] You can find this in the [`config.json`][file-config]. It's not uncommon that people discover incorrect implementations of certain tests, have a suggestion for a track-specific hint to aid the student on the _JavaScript specifics_, see optimisations in terms of the configurations of `jest`, `eslint` or other dependencies, report missing edge cases, factual errors, logical errors, and, implement exercises or develop new exercises. +> [!CAUTION] +> +> Please see https://github.com/exercism/javascript/issues/2144. +> +> All contributions _MUST_ preceed by opening a topic on the forum. +> This is for both new content and fixes/changes to old content. + We welcome contributions of all sorts and sizes, from reporting issues to submitting patches, as well as joining the current [discussions 💬][issue-discussion]. > [!WARNING] @@ -112,6 +119,9 @@ Don't worry! You're not alone in this. There are always improvements possible on existing exercises. +> [!IMPORTANT] +> If you are opening a PR, please ensure you are _on a branch in your fork_, or our automated tooling will not work as expected. + #### Improving the README.md For _practice_ exercises, `README.md` is generated from a canonical source. From 7310ff6ac0af072636f2b096e19d7e3b5d98de2c Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Thu, 2 Oct 2025 16:39:31 +0200 Subject: [PATCH 06/61] Sync from root after merging deps (#2778) --- exercises/concept/amusement-park/package.json | 4 ++-- exercises/concept/annalyns-infiltration/package.json | 4 ++-- exercises/concept/appointment-time/package.json | 4 ++-- exercises/concept/bird-watcher/package.json | 4 ++-- exercises/concept/captains-log/package.json | 4 ++-- exercises/concept/coordinate-transformation/package.json | 4 ++-- exercises/concept/custom-signs/package.json | 4 ++-- exercises/concept/elyses-analytic-enchantments/package.json | 4 ++-- .../concept/elyses-destructured-enchantments/package.json | 4 ++-- exercises/concept/elyses-enchantments/package.json | 4 ++-- exercises/concept/elyses-looping-enchantments/package.json | 4 ++-- .../concept/elyses-transformative-enchantments/package.json | 4 ++-- exercises/concept/factory-sensors/package.json | 4 ++-- exercises/concept/freelancer-rates/package.json | 4 ++-- exercises/concept/fruit-picker/package.json | 4 ++-- exercises/concept/high-score-board/package.json | 4 ++-- exercises/concept/lasagna-master/package.json | 4 ++-- exercises/concept/lasagna/package.json | 4 ++-- exercises/concept/lucky-numbers/package.json | 4 ++-- exercises/concept/mixed-juices/package.json | 4 ++-- exercises/concept/nullability/package.json | 4 ++-- exercises/concept/ozans-playlist/package.json | 4 ++-- exercises/concept/pizza-order/package.json | 4 ++-- exercises/concept/poetry-club-door-policy/package.json | 4 ++-- exercises/concept/recycling-robot/package.json | 4 ++-- exercises/concept/regular-chatbot/package.json | 4 ++-- exercises/concept/train-driver/package.json | 4 ++-- exercises/concept/translation-service/package.json | 4 ++-- exercises/concept/vehicle-purchase/package.json | 4 ++-- exercises/concept/windowing-system/package.json | 4 ++-- exercises/practice/accumulate/package.json | 4 ++-- exercises/practice/acronym/package.json | 4 ++-- exercises/practice/affine-cipher/package.json | 4 ++-- exercises/practice/all-your-base/package.json | 4 ++-- exercises/practice/allergies/package.json | 4 ++-- exercises/practice/alphametics/package.json | 4 ++-- exercises/practice/anagram/package.json | 4 ++-- exercises/practice/armstrong-numbers/package.json | 4 ++-- exercises/practice/atbash-cipher/package.json | 4 ++-- exercises/practice/bank-account/package.json | 4 ++-- exercises/practice/beer-song/package.json | 4 ++-- exercises/practice/binary-search-tree/package.json | 4 ++-- exercises/practice/binary-search/package.json | 4 ++-- exercises/practice/binary/package.json | 4 ++-- exercises/practice/bob/package.json | 4 ++-- exercises/practice/book-store/package.json | 4 ++-- exercises/practice/bottle-song/package.json | 4 ++-- exercises/practice/bowling/package.json | 4 ++-- exercises/practice/change/package.json | 4 ++-- exercises/practice/circular-buffer/package.json | 4 ++-- exercises/practice/clock/package.json | 4 ++-- exercises/practice/collatz-conjecture/package.json | 4 ++-- exercises/practice/complex-numbers/package.json | 4 ++-- exercises/practice/connect/package.json | 4 ++-- exercises/practice/crypto-square/package.json | 4 ++-- exercises/practice/custom-set/package.json | 4 ++-- exercises/practice/darts/package.json | 4 ++-- exercises/practice/diamond/package.json | 4 ++-- exercises/practice/difference-of-squares/package.json | 4 ++-- exercises/practice/diffie-hellman/package.json | 4 ++-- exercises/practice/dnd-character/package.json | 4 ++-- exercises/practice/dominoes/package.json | 4 ++-- exercises/practice/eliuds-eggs/package.json | 4 ++-- exercises/practice/etl/package.json | 4 ++-- exercises/practice/flatten-array/package.json | 4 ++-- exercises/practice/flower-field/package.json | 4 ++-- exercises/practice/food-chain/package.json | 4 ++-- exercises/practice/forth/package.json | 4 ++-- exercises/practice/game-of-life/package.json | 4 ++-- exercises/practice/gigasecond/package.json | 4 ++-- exercises/practice/go-counting/package.json | 4 ++-- exercises/practice/grade-school/package.json | 4 ++-- exercises/practice/grains/package.json | 4 ++-- exercises/practice/grep/package.json | 4 ++-- exercises/practice/hamming/package.json | 4 ++-- exercises/practice/hello-world/package.json | 4 ++-- exercises/practice/hexadecimal/package.json | 4 ++-- exercises/practice/high-scores/package.json | 4 ++-- exercises/practice/house/package.json | 4 ++-- exercises/practice/isbn-verifier/package.json | 4 ++-- exercises/practice/isogram/package.json | 4 ++-- exercises/practice/killer-sudoku-helper/package.json | 4 ++-- exercises/practice/kindergarten-garden/package.json | 4 ++-- exercises/practice/knapsack/package.json | 4 ++-- exercises/practice/largest-series-product/package.json | 4 ++-- exercises/practice/leap/package.json | 4 ++-- exercises/practice/ledger/package.json | 4 ++-- exercises/practice/lens-person/package.json | 4 ++-- exercises/practice/linked-list/package.json | 4 ++-- exercises/practice/list-ops/package.json | 4 ++-- exercises/practice/luhn/package.json | 4 ++-- exercises/practice/markdown/package.json | 4 ++-- exercises/practice/matching-brackets/package.json | 4 ++-- exercises/practice/matrix/package.json | 4 ++-- exercises/practice/meetup/package.json | 4 ++-- exercises/practice/micro-blog/package.json | 4 ++-- exercises/practice/minesweeper/package.json | 4 ++-- exercises/practice/nth-prime/package.json | 4 ++-- exercises/practice/nucleotide-count/package.json | 4 ++-- exercises/practice/ocr-numbers/package.json | 4 ++-- exercises/practice/octal/package.json | 4 ++-- exercises/practice/palindrome-products/package.json | 4 ++-- exercises/practice/pangram/package.json | 4 ++-- exercises/practice/parallel-letter-frequency/package.json | 4 ++-- exercises/practice/pascals-triangle/package.json | 4 ++-- exercises/practice/perfect-numbers/package.json | 4 ++-- exercises/practice/phone-number/package.json | 4 ++-- exercises/practice/pig-latin/package.json | 4 ++-- exercises/practice/point-mutations/package.json | 4 ++-- exercises/practice/poker/package.json | 4 ++-- exercises/practice/prime-factors/package.json | 4 ++-- exercises/practice/promises/package.json | 4 ++-- exercises/practice/protein-translation/package.json | 4 ++-- exercises/practice/proverb/package.json | 4 ++-- exercises/practice/pythagorean-triplet/package.json | 4 ++-- exercises/practice/queen-attack/package.json | 4 ++-- exercises/practice/rail-fence-cipher/package.json | 4 ++-- exercises/practice/raindrops/package.json | 4 ++-- exercises/practice/rational-numbers/package.json | 4 ++-- exercises/practice/react/package.json | 4 ++-- exercises/practice/rectangles/package.json | 4 ++-- exercises/practice/relative-distance/package.json | 4 ++-- exercises/practice/resistor-color-duo/package.json | 4 ++-- exercises/practice/resistor-color-trio/package.json | 4 ++-- exercises/practice/resistor-color/package.json | 4 ++-- exercises/practice/rest-api/package.json | 4 ++-- exercises/practice/reverse-string/package.json | 4 ++-- exercises/practice/rna-transcription/package.json | 4 ++-- exercises/practice/robot-name/package.json | 4 ++-- exercises/practice/robot-simulator/package.json | 4 ++-- exercises/practice/roman-numerals/package.json | 4 ++-- exercises/practice/rotational-cipher/package.json | 4 ++-- exercises/practice/run-length-encoding/package.json | 4 ++-- exercises/practice/saddle-points/package.json | 4 ++-- exercises/practice/satellite/package.json | 4 ++-- exercises/practice/say/package.json | 4 ++-- exercises/practice/scale-generator/package.json | 4 ++-- exercises/practice/scrabble-score/package.json | 4 ++-- exercises/practice/secret-handshake/package.json | 4 ++-- exercises/practice/series/package.json | 4 ++-- exercises/practice/sieve/package.json | 4 ++-- exercises/practice/simple-cipher/package.json | 4 ++-- exercises/practice/simple-linked-list/package.json | 4 ++-- exercises/practice/space-age/package.json | 4 ++-- exercises/practice/spiral-matrix/package.json | 4 ++-- exercises/practice/square-root/package.json | 4 ++-- exercises/practice/state-of-tic-tac-toe/package.json | 4 ++-- exercises/practice/strain/package.json | 4 ++-- exercises/practice/sublist/package.json | 4 ++-- exercises/practice/sum-of-multiples/package.json | 4 ++-- exercises/practice/tournament/package.json | 4 ++-- exercises/practice/transpose/package.json | 4 ++-- exercises/practice/triangle/package.json | 4 ++-- exercises/practice/trinary/package.json | 4 ++-- exercises/practice/twelve-days/package.json | 4 ++-- exercises/practice/two-bucket/package.json | 4 ++-- exercises/practice/two-fer/package.json | 4 ++-- exercises/practice/variable-length-quantity/package.json | 4 ++-- exercises/practice/word-count/package.json | 4 ++-- exercises/practice/word-search/package.json | 4 ++-- exercises/practice/wordy/package.json | 4 ++-- exercises/practice/yacht/package.json | 4 ++-- exercises/practice/zebra-puzzle/package.json | 4 ++-- exercises/practice/zipper/package.json | 4 ++-- 164 files changed, 328 insertions(+), 328 deletions(-) diff --git a/exercises/concept/amusement-park/package.json b/exercises/concept/amusement-park/package.json index 9119422911..e579429881 100644 --- a/exercises/concept/amusement-park/package.json +++ b/exercises/concept/amusement-park/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/annalyns-infiltration/package.json b/exercises/concept/annalyns-infiltration/package.json index 7a54d5a37f..7c145a56d7 100644 --- a/exercises/concept/annalyns-infiltration/package.json +++ b/exercises/concept/annalyns-infiltration/package.json @@ -16,14 +16,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/appointment-time/package.json b/exercises/concept/appointment-time/package.json index 48fdcc8354..4774be2131 100644 --- a/exercises/concept/appointment-time/package.json +++ b/exercises/concept/appointment-time/package.json @@ -17,14 +17,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/bird-watcher/package.json b/exercises/concept/bird-watcher/package.json index 148ac83395..2325591588 100644 --- a/exercises/concept/bird-watcher/package.json +++ b/exercises/concept/bird-watcher/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/captains-log/package.json b/exercises/concept/captains-log/package.json index e58159e675..ca51da6aaf 100644 --- a/exercises/concept/captains-log/package.json +++ b/exercises/concept/captains-log/package.json @@ -17,14 +17,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/coordinate-transformation/package.json b/exercises/concept/coordinate-transformation/package.json index ec531a9c0a..61cb3c5c69 100644 --- a/exercises/concept/coordinate-transformation/package.json +++ b/exercises/concept/coordinate-transformation/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/custom-signs/package.json b/exercises/concept/custom-signs/package.json index 3b0a1608e1..5da8244182 100644 --- a/exercises/concept/custom-signs/package.json +++ b/exercises/concept/custom-signs/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/elyses-analytic-enchantments/package.json b/exercises/concept/elyses-analytic-enchantments/package.json index 5508918816..5d8bae6a78 100644 --- a/exercises/concept/elyses-analytic-enchantments/package.json +++ b/exercises/concept/elyses-analytic-enchantments/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/elyses-destructured-enchantments/package.json b/exercises/concept/elyses-destructured-enchantments/package.json index a6b0e11626..692c9f17a9 100644 --- a/exercises/concept/elyses-destructured-enchantments/package.json +++ b/exercises/concept/elyses-destructured-enchantments/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/elyses-enchantments/package.json b/exercises/concept/elyses-enchantments/package.json index 1ab582c1b1..f7108cd080 100644 --- a/exercises/concept/elyses-enchantments/package.json +++ b/exercises/concept/elyses-enchantments/package.json @@ -16,14 +16,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/elyses-looping-enchantments/package.json b/exercises/concept/elyses-looping-enchantments/package.json index b7e0269d6f..ee14b3a6ff 100644 --- a/exercises/concept/elyses-looping-enchantments/package.json +++ b/exercises/concept/elyses-looping-enchantments/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/elyses-transformative-enchantments/package.json b/exercises/concept/elyses-transformative-enchantments/package.json index 635ccdf82b..4a19b22fda 100644 --- a/exercises/concept/elyses-transformative-enchantments/package.json +++ b/exercises/concept/elyses-transformative-enchantments/package.json @@ -17,14 +17,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/factory-sensors/package.json b/exercises/concept/factory-sensors/package.json index ebf6a261ce..f8d305b5bb 100644 --- a/exercises/concept/factory-sensors/package.json +++ b/exercises/concept/factory-sensors/package.json @@ -12,14 +12,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/freelancer-rates/package.json b/exercises/concept/freelancer-rates/package.json index fc09775358..2ecfb98abb 100644 --- a/exercises/concept/freelancer-rates/package.json +++ b/exercises/concept/freelancer-rates/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/fruit-picker/package.json b/exercises/concept/fruit-picker/package.json index f92ae9e3fa..b72027dc8a 100644 --- a/exercises/concept/fruit-picker/package.json +++ b/exercises/concept/fruit-picker/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/high-score-board/package.json b/exercises/concept/high-score-board/package.json index b51b226bd1..f73cc263fa 100644 --- a/exercises/concept/high-score-board/package.json +++ b/exercises/concept/high-score-board/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/lasagna-master/package.json b/exercises/concept/lasagna-master/package.json index cb1448e94d..3557cba201 100644 --- a/exercises/concept/lasagna-master/package.json +++ b/exercises/concept/lasagna-master/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/lasagna/package.json b/exercises/concept/lasagna/package.json index b992b56271..1e4e80c0e4 100644 --- a/exercises/concept/lasagna/package.json +++ b/exercises/concept/lasagna/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/lucky-numbers/package.json b/exercises/concept/lucky-numbers/package.json index aad33e6ab4..ebc04afeb2 100644 --- a/exercises/concept/lucky-numbers/package.json +++ b/exercises/concept/lucky-numbers/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/mixed-juices/package.json b/exercises/concept/mixed-juices/package.json index 0b65061749..4964356673 100644 --- a/exercises/concept/mixed-juices/package.json +++ b/exercises/concept/mixed-juices/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/nullability/package.json b/exercises/concept/nullability/package.json index a165fe0a50..6454d18f4e 100644 --- a/exercises/concept/nullability/package.json +++ b/exercises/concept/nullability/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/ozans-playlist/package.json b/exercises/concept/ozans-playlist/package.json index d1c19267a0..b8094fb361 100644 --- a/exercises/concept/ozans-playlist/package.json +++ b/exercises/concept/ozans-playlist/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/pizza-order/package.json b/exercises/concept/pizza-order/package.json index 2d56d6d732..481599c8b0 100644 --- a/exercises/concept/pizza-order/package.json +++ b/exercises/concept/pizza-order/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/poetry-club-door-policy/package.json b/exercises/concept/poetry-club-door-policy/package.json index 3391e577e6..41f1e67b0b 100644 --- a/exercises/concept/poetry-club-door-policy/package.json +++ b/exercises/concept/poetry-club-door-policy/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/recycling-robot/package.json b/exercises/concept/recycling-robot/package.json index 930bad9e0c..59199e8cb2 100644 --- a/exercises/concept/recycling-robot/package.json +++ b/exercises/concept/recycling-robot/package.json @@ -17,14 +17,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/regular-chatbot/package.json b/exercises/concept/regular-chatbot/package.json index 21b9374160..c01c435a37 100644 --- a/exercises/concept/regular-chatbot/package.json +++ b/exercises/concept/regular-chatbot/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/train-driver/package.json b/exercises/concept/train-driver/package.json index db170f0a11..c4088315a6 100644 --- a/exercises/concept/train-driver/package.json +++ b/exercises/concept/train-driver/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/translation-service/package.json b/exercises/concept/translation-service/package.json index 7ae392644d..7dc0988070 100644 --- a/exercises/concept/translation-service/package.json +++ b/exercises/concept/translation-service/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/vehicle-purchase/package.json b/exercises/concept/vehicle-purchase/package.json index d5601f238f..f73a35dc09 100644 --- a/exercises/concept/vehicle-purchase/package.json +++ b/exercises/concept/vehicle-purchase/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/concept/windowing-system/package.json b/exercises/concept/windowing-system/package.json index f9625d873a..1c4a8062bf 100644 --- a/exercises/concept/windowing-system/package.json +++ b/exercises/concept/windowing-system/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/accumulate/package.json b/exercises/practice/accumulate/package.json index 20a733dcc5..0119f1ff92 100644 --- a/exercises/practice/accumulate/package.json +++ b/exercises/practice/accumulate/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/acronym/package.json b/exercises/practice/acronym/package.json index 7f77cbebfb..9ca625f03d 100644 --- a/exercises/practice/acronym/package.json +++ b/exercises/practice/acronym/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/affine-cipher/package.json b/exercises/practice/affine-cipher/package.json index b9fcfe36b4..0727a62f4d 100644 --- a/exercises/practice/affine-cipher/package.json +++ b/exercises/practice/affine-cipher/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/all-your-base/package.json b/exercises/practice/all-your-base/package.json index cac41d5b73..bafa6313b5 100644 --- a/exercises/practice/all-your-base/package.json +++ b/exercises/practice/all-your-base/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/allergies/package.json b/exercises/practice/allergies/package.json index a5545720ef..0e19adc624 100644 --- a/exercises/practice/allergies/package.json +++ b/exercises/practice/allergies/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/alphametics/package.json b/exercises/practice/alphametics/package.json index f5b67f1402..1e61a50e9c 100644 --- a/exercises/practice/alphametics/package.json +++ b/exercises/practice/alphametics/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/anagram/package.json b/exercises/practice/anagram/package.json index 6c36cc946c..254e0d3bbf 100644 --- a/exercises/practice/anagram/package.json +++ b/exercises/practice/anagram/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/armstrong-numbers/package.json b/exercises/practice/armstrong-numbers/package.json index 9fc3297273..7c52be865d 100644 --- a/exercises/practice/armstrong-numbers/package.json +++ b/exercises/practice/armstrong-numbers/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/atbash-cipher/package.json b/exercises/practice/atbash-cipher/package.json index bb20418054..9245cce6a1 100644 --- a/exercises/practice/atbash-cipher/package.json +++ b/exercises/practice/atbash-cipher/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/bank-account/package.json b/exercises/practice/bank-account/package.json index 8ceca36715..cbb952491a 100644 --- a/exercises/practice/bank-account/package.json +++ b/exercises/practice/bank-account/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/beer-song/package.json b/exercises/practice/beer-song/package.json index 3b3c916bc2..7f8315c4ef 100644 --- a/exercises/practice/beer-song/package.json +++ b/exercises/practice/beer-song/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/binary-search-tree/package.json b/exercises/practice/binary-search-tree/package.json index 84e3dd0864..50115ba0c4 100644 --- a/exercises/practice/binary-search-tree/package.json +++ b/exercises/practice/binary-search-tree/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/binary-search/package.json b/exercises/practice/binary-search/package.json index 9a466afa0c..119e43caa6 100644 --- a/exercises/practice/binary-search/package.json +++ b/exercises/practice/binary-search/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/binary/package.json b/exercises/practice/binary/package.json index 53268bf5fd..e3f14d37b7 100644 --- a/exercises/practice/binary/package.json +++ b/exercises/practice/binary/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/bob/package.json b/exercises/practice/bob/package.json index ce32b5b00f..4b9793a3dc 100644 --- a/exercises/practice/bob/package.json +++ b/exercises/practice/bob/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/book-store/package.json b/exercises/practice/book-store/package.json index 6833611a17..d81104e063 100644 --- a/exercises/practice/book-store/package.json +++ b/exercises/practice/book-store/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/bottle-song/package.json b/exercises/practice/bottle-song/package.json index af7073d600..911e0e0341 100644 --- a/exercises/practice/bottle-song/package.json +++ b/exercises/practice/bottle-song/package.json @@ -18,14 +18,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/bowling/package.json b/exercises/practice/bowling/package.json index e63266ac62..ea76c21245 100644 --- a/exercises/practice/bowling/package.json +++ b/exercises/practice/bowling/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/change/package.json b/exercises/practice/change/package.json index 0348f07a0b..2d0645bac0 100644 --- a/exercises/practice/change/package.json +++ b/exercises/practice/change/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/circular-buffer/package.json b/exercises/practice/circular-buffer/package.json index 4f332b428f..3665fab161 100644 --- a/exercises/practice/circular-buffer/package.json +++ b/exercises/practice/circular-buffer/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/clock/package.json b/exercises/practice/clock/package.json index 18146eb9a6..64f0efe669 100644 --- a/exercises/practice/clock/package.json +++ b/exercises/practice/clock/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/collatz-conjecture/package.json b/exercises/practice/collatz-conjecture/package.json index ceccb02279..907442194d 100644 --- a/exercises/practice/collatz-conjecture/package.json +++ b/exercises/practice/collatz-conjecture/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/complex-numbers/package.json b/exercises/practice/complex-numbers/package.json index fed44d94f6..0eeff89616 100644 --- a/exercises/practice/complex-numbers/package.json +++ b/exercises/practice/complex-numbers/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/connect/package.json b/exercises/practice/connect/package.json index 498e1ec33c..945e4032ea 100644 --- a/exercises/practice/connect/package.json +++ b/exercises/practice/connect/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/crypto-square/package.json b/exercises/practice/crypto-square/package.json index c9e6db08f8..3953569072 100644 --- a/exercises/practice/crypto-square/package.json +++ b/exercises/practice/crypto-square/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/custom-set/package.json b/exercises/practice/custom-set/package.json index a9b3f1c73d..6b9b1006dd 100644 --- a/exercises/practice/custom-set/package.json +++ b/exercises/practice/custom-set/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/darts/package.json b/exercises/practice/darts/package.json index d29d03e089..d1a435f5de 100644 --- a/exercises/practice/darts/package.json +++ b/exercises/practice/darts/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/diamond/package.json b/exercises/practice/diamond/package.json index 3a11f2610d..12e2cf8a8d 100644 --- a/exercises/practice/diamond/package.json +++ b/exercises/practice/diamond/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/difference-of-squares/package.json b/exercises/practice/difference-of-squares/package.json index 4ae916896d..53e2d8f1f3 100644 --- a/exercises/practice/difference-of-squares/package.json +++ b/exercises/practice/difference-of-squares/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/diffie-hellman/package.json b/exercises/practice/diffie-hellman/package.json index a0fd4f98f8..44f5ddaea5 100644 --- a/exercises/practice/diffie-hellman/package.json +++ b/exercises/practice/diffie-hellman/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/dnd-character/package.json b/exercises/practice/dnd-character/package.json index 6b476bcd61..da165aa850 100644 --- a/exercises/practice/dnd-character/package.json +++ b/exercises/practice/dnd-character/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/dominoes/package.json b/exercises/practice/dominoes/package.json index d22c576522..9d00f2c7be 100644 --- a/exercises/practice/dominoes/package.json +++ b/exercises/practice/dominoes/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/eliuds-eggs/package.json b/exercises/practice/eliuds-eggs/package.json index b811c4487a..86d033f52b 100644 --- a/exercises/practice/eliuds-eggs/package.json +++ b/exercises/practice/eliuds-eggs/package.json @@ -18,14 +18,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/etl/package.json b/exercises/practice/etl/package.json index 224fcfe4df..5a1cdf88b6 100644 --- a/exercises/practice/etl/package.json +++ b/exercises/practice/etl/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/flatten-array/package.json b/exercises/practice/flatten-array/package.json index fe36f372db..db728287bb 100644 --- a/exercises/practice/flatten-array/package.json +++ b/exercises/practice/flatten-array/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/flower-field/package.json b/exercises/practice/flower-field/package.json index 70fa0fe9ba..fba0c73e0f 100644 --- a/exercises/practice/flower-field/package.json +++ b/exercises/practice/flower-field/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/food-chain/package.json b/exercises/practice/food-chain/package.json index 5025679676..9acd7bf30b 100644 --- a/exercises/practice/food-chain/package.json +++ b/exercises/practice/food-chain/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/forth/package.json b/exercises/practice/forth/package.json index e1881cd5b2..eb098b1753 100644 --- a/exercises/practice/forth/package.json +++ b/exercises/practice/forth/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/game-of-life/package.json b/exercises/practice/game-of-life/package.json index 154591f036..d3aa259c2c 100644 --- a/exercises/practice/game-of-life/package.json +++ b/exercises/practice/game-of-life/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/gigasecond/package.json b/exercises/practice/gigasecond/package.json index badd43eb29..a8cd4672f5 100644 --- a/exercises/practice/gigasecond/package.json +++ b/exercises/practice/gigasecond/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/go-counting/package.json b/exercises/practice/go-counting/package.json index a63929db22..e08f11c62c 100644 --- a/exercises/practice/go-counting/package.json +++ b/exercises/practice/go-counting/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/grade-school/package.json b/exercises/practice/grade-school/package.json index 2d31c05a16..38c78ff95c 100644 --- a/exercises/practice/grade-school/package.json +++ b/exercises/practice/grade-school/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/grains/package.json b/exercises/practice/grains/package.json index da56eae10d..0815ed8dd8 100644 --- a/exercises/practice/grains/package.json +++ b/exercises/practice/grains/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/grep/package.json b/exercises/practice/grep/package.json index ca9d03a928..d36f6e3ff8 100644 --- a/exercises/practice/grep/package.json +++ b/exercises/practice/grep/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/hamming/package.json b/exercises/practice/hamming/package.json index ef7baff27d..7e4db1430e 100644 --- a/exercises/practice/hamming/package.json +++ b/exercises/practice/hamming/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/hello-world/package.json b/exercises/practice/hello-world/package.json index 63032d3b05..a9df27e55b 100644 --- a/exercises/practice/hello-world/package.json +++ b/exercises/practice/hello-world/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/hexadecimal/package.json b/exercises/practice/hexadecimal/package.json index f39d2357cd..fac4ba86c4 100644 --- a/exercises/practice/hexadecimal/package.json +++ b/exercises/practice/hexadecimal/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/high-scores/package.json b/exercises/practice/high-scores/package.json index 37a08291d4..a6ac13673d 100644 --- a/exercises/practice/high-scores/package.json +++ b/exercises/practice/high-scores/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/house/package.json b/exercises/practice/house/package.json index be5b333820..ec12813a26 100644 --- a/exercises/practice/house/package.json +++ b/exercises/practice/house/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/isbn-verifier/package.json b/exercises/practice/isbn-verifier/package.json index 3ed9f52678..e7bf24707b 100644 --- a/exercises/practice/isbn-verifier/package.json +++ b/exercises/practice/isbn-verifier/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/isogram/package.json b/exercises/practice/isogram/package.json index 5a1759921b..6d826ffcc9 100644 --- a/exercises/practice/isogram/package.json +++ b/exercises/practice/isogram/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/killer-sudoku-helper/package.json b/exercises/practice/killer-sudoku-helper/package.json index 20a90e694d..4903feae2f 100644 --- a/exercises/practice/killer-sudoku-helper/package.json +++ b/exercises/practice/killer-sudoku-helper/package.json @@ -18,14 +18,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/kindergarten-garden/package.json b/exercises/practice/kindergarten-garden/package.json index 47af2ab20d..50fcc5f072 100644 --- a/exercises/practice/kindergarten-garden/package.json +++ b/exercises/practice/kindergarten-garden/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/knapsack/package.json b/exercises/practice/knapsack/package.json index a9040fa087..bcd3605e59 100644 --- a/exercises/practice/knapsack/package.json +++ b/exercises/practice/knapsack/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/largest-series-product/package.json b/exercises/practice/largest-series-product/package.json index b9e1f12260..fbf6bc0c62 100644 --- a/exercises/practice/largest-series-product/package.json +++ b/exercises/practice/largest-series-product/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/leap/package.json b/exercises/practice/leap/package.json index 510fbfefff..61ae1fcc53 100644 --- a/exercises/practice/leap/package.json +++ b/exercises/practice/leap/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/ledger/package.json b/exercises/practice/ledger/package.json index 7016e140d8..2151bb99dd 100644 --- a/exercises/practice/ledger/package.json +++ b/exercises/practice/ledger/package.json @@ -18,14 +18,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/lens-person/package.json b/exercises/practice/lens-person/package.json index 051b86eba4..476fbc2202 100644 --- a/exercises/practice/lens-person/package.json +++ b/exercises/practice/lens-person/package.json @@ -19,14 +19,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/linked-list/package.json b/exercises/practice/linked-list/package.json index 99318a1f74..35db126e36 100644 --- a/exercises/practice/linked-list/package.json +++ b/exercises/practice/linked-list/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/list-ops/package.json b/exercises/practice/list-ops/package.json index e6d91b32ce..7ac4c1c676 100644 --- a/exercises/practice/list-ops/package.json +++ b/exercises/practice/list-ops/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/luhn/package.json b/exercises/practice/luhn/package.json index 2c1e28e457..cdf5b4fc35 100644 --- a/exercises/practice/luhn/package.json +++ b/exercises/practice/luhn/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/markdown/package.json b/exercises/practice/markdown/package.json index 20c08532e5..d7727509f0 100644 --- a/exercises/practice/markdown/package.json +++ b/exercises/practice/markdown/package.json @@ -18,14 +18,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/matching-brackets/package.json b/exercises/practice/matching-brackets/package.json index 7d64c71b1d..3c44be37d7 100644 --- a/exercises/practice/matching-brackets/package.json +++ b/exercises/practice/matching-brackets/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/matrix/package.json b/exercises/practice/matrix/package.json index fdf9342a34..5c26393964 100644 --- a/exercises/practice/matrix/package.json +++ b/exercises/practice/matrix/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/meetup/package.json b/exercises/practice/meetup/package.json index 46e0f6c632..9aaaca1de8 100644 --- a/exercises/practice/meetup/package.json +++ b/exercises/practice/meetup/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/micro-blog/package.json b/exercises/practice/micro-blog/package.json index fccce366bf..3620e46e04 100644 --- a/exercises/practice/micro-blog/package.json +++ b/exercises/practice/micro-blog/package.json @@ -18,14 +18,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/minesweeper/package.json b/exercises/practice/minesweeper/package.json index 157bd378c9..a1d5a3a468 100644 --- a/exercises/practice/minesweeper/package.json +++ b/exercises/practice/minesweeper/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/nth-prime/package.json b/exercises/practice/nth-prime/package.json index 8702968f83..c1ca698fa6 100644 --- a/exercises/practice/nth-prime/package.json +++ b/exercises/practice/nth-prime/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/nucleotide-count/package.json b/exercises/practice/nucleotide-count/package.json index bec032c29c..4a8d397402 100644 --- a/exercises/practice/nucleotide-count/package.json +++ b/exercises/practice/nucleotide-count/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/ocr-numbers/package.json b/exercises/practice/ocr-numbers/package.json index 8ca59b7538..65748cb3fa 100644 --- a/exercises/practice/ocr-numbers/package.json +++ b/exercises/practice/ocr-numbers/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/octal/package.json b/exercises/practice/octal/package.json index 9f42836089..a1537680d0 100644 --- a/exercises/practice/octal/package.json +++ b/exercises/practice/octal/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/palindrome-products/package.json b/exercises/practice/palindrome-products/package.json index d30b35ef19..5362d0bbd7 100644 --- a/exercises/practice/palindrome-products/package.json +++ b/exercises/practice/palindrome-products/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/pangram/package.json b/exercises/practice/pangram/package.json index e70f565b28..d3a4d66671 100644 --- a/exercises/practice/pangram/package.json +++ b/exercises/practice/pangram/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/parallel-letter-frequency/package.json b/exercises/practice/parallel-letter-frequency/package.json index b9929fe2bd..d1574227a1 100644 --- a/exercises/practice/parallel-letter-frequency/package.json +++ b/exercises/practice/parallel-letter-frequency/package.json @@ -18,14 +18,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/pascals-triangle/package.json b/exercises/practice/pascals-triangle/package.json index bafcd7a6ad..5162af97fb 100644 --- a/exercises/practice/pascals-triangle/package.json +++ b/exercises/practice/pascals-triangle/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/perfect-numbers/package.json b/exercises/practice/perfect-numbers/package.json index 333c1d5bb2..8a892e5658 100644 --- a/exercises/practice/perfect-numbers/package.json +++ b/exercises/practice/perfect-numbers/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/phone-number/package.json b/exercises/practice/phone-number/package.json index 1b06afa641..8d36e60647 100644 --- a/exercises/practice/phone-number/package.json +++ b/exercises/practice/phone-number/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/pig-latin/package.json b/exercises/practice/pig-latin/package.json index c1032a4979..4ee61e9b37 100644 --- a/exercises/practice/pig-latin/package.json +++ b/exercises/practice/pig-latin/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/point-mutations/package.json b/exercises/practice/point-mutations/package.json index e03b8ed8f1..2287bfba09 100644 --- a/exercises/practice/point-mutations/package.json +++ b/exercises/practice/point-mutations/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/poker/package.json b/exercises/practice/poker/package.json index 09b8bbc78e..89fac0d68f 100644 --- a/exercises/practice/poker/package.json +++ b/exercises/practice/poker/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/prime-factors/package.json b/exercises/practice/prime-factors/package.json index af8156e22f..427bbee485 100644 --- a/exercises/practice/prime-factors/package.json +++ b/exercises/practice/prime-factors/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/promises/package.json b/exercises/practice/promises/package.json index 896211d773..a7ef213af3 100644 --- a/exercises/practice/promises/package.json +++ b/exercises/practice/promises/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/protein-translation/package.json b/exercises/practice/protein-translation/package.json index e722b47146..aa0ed1f52b 100644 --- a/exercises/practice/protein-translation/package.json +++ b/exercises/practice/protein-translation/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/proverb/package.json b/exercises/practice/proverb/package.json index dabff2282b..08deade0c4 100644 --- a/exercises/practice/proverb/package.json +++ b/exercises/practice/proverb/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/pythagorean-triplet/package.json b/exercises/practice/pythagorean-triplet/package.json index 62b4c63ce9..0681b2ad13 100644 --- a/exercises/practice/pythagorean-triplet/package.json +++ b/exercises/practice/pythagorean-triplet/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/queen-attack/package.json b/exercises/practice/queen-attack/package.json index 019162dbd3..b67cc4b0c2 100644 --- a/exercises/practice/queen-attack/package.json +++ b/exercises/practice/queen-attack/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/rail-fence-cipher/package.json b/exercises/practice/rail-fence-cipher/package.json index cbc4dda490..aca100ebdc 100644 --- a/exercises/practice/rail-fence-cipher/package.json +++ b/exercises/practice/rail-fence-cipher/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/raindrops/package.json b/exercises/practice/raindrops/package.json index 89cfca88ea..da8d1f71ab 100644 --- a/exercises/practice/raindrops/package.json +++ b/exercises/practice/raindrops/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/rational-numbers/package.json b/exercises/practice/rational-numbers/package.json index ea8408e309..3fe3a09e3b 100644 --- a/exercises/practice/rational-numbers/package.json +++ b/exercises/practice/rational-numbers/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/react/package.json b/exercises/practice/react/package.json index 786fa56353..a9f8764757 100644 --- a/exercises/practice/react/package.json +++ b/exercises/practice/react/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/rectangles/package.json b/exercises/practice/rectangles/package.json index 9e25ba26a0..4c3b011185 100644 --- a/exercises/practice/rectangles/package.json +++ b/exercises/practice/rectangles/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/relative-distance/package.json b/exercises/practice/relative-distance/package.json index 4b35330716..c3f4377292 100644 --- a/exercises/practice/relative-distance/package.json +++ b/exercises/practice/relative-distance/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/resistor-color-duo/package.json b/exercises/practice/resistor-color-duo/package.json index 159b4fa8f2..051b9dc69c 100644 --- a/exercises/practice/resistor-color-duo/package.json +++ b/exercises/practice/resistor-color-duo/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/resistor-color-trio/package.json b/exercises/practice/resistor-color-trio/package.json index 557f9f130c..42c0dc8d69 100644 --- a/exercises/practice/resistor-color-trio/package.json +++ b/exercises/practice/resistor-color-trio/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/resistor-color/package.json b/exercises/practice/resistor-color/package.json index 7014a1d2d8..fe9cb3426d 100644 --- a/exercises/practice/resistor-color/package.json +++ b/exercises/practice/resistor-color/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/rest-api/package.json b/exercises/practice/rest-api/package.json index e8fca97457..bf6cbee782 100644 --- a/exercises/practice/rest-api/package.json +++ b/exercises/practice/rest-api/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/reverse-string/package.json b/exercises/practice/reverse-string/package.json index 58a6617239..e7c20ee14b 100644 --- a/exercises/practice/reverse-string/package.json +++ b/exercises/practice/reverse-string/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/rna-transcription/package.json b/exercises/practice/rna-transcription/package.json index 33d43c6f9e..efdca557c9 100644 --- a/exercises/practice/rna-transcription/package.json +++ b/exercises/practice/rna-transcription/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/robot-name/package.json b/exercises/practice/robot-name/package.json index 590a6c4a48..98e79dbf3b 100644 --- a/exercises/practice/robot-name/package.json +++ b/exercises/practice/robot-name/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/robot-simulator/package.json b/exercises/practice/robot-simulator/package.json index dd98a2667a..6136ef3a81 100644 --- a/exercises/practice/robot-simulator/package.json +++ b/exercises/practice/robot-simulator/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/roman-numerals/package.json b/exercises/practice/roman-numerals/package.json index 6f89567638..eb1dcf3b41 100644 --- a/exercises/practice/roman-numerals/package.json +++ b/exercises/practice/roman-numerals/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/rotational-cipher/package.json b/exercises/practice/rotational-cipher/package.json index fc1f50fb3f..b7514805a0 100644 --- a/exercises/practice/rotational-cipher/package.json +++ b/exercises/practice/rotational-cipher/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/run-length-encoding/package.json b/exercises/practice/run-length-encoding/package.json index 59f1ea99b8..a567ed1f30 100644 --- a/exercises/practice/run-length-encoding/package.json +++ b/exercises/practice/run-length-encoding/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/saddle-points/package.json b/exercises/practice/saddle-points/package.json index db41801863..0f6baa6282 100644 --- a/exercises/practice/saddle-points/package.json +++ b/exercises/practice/saddle-points/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/satellite/package.json b/exercises/practice/satellite/package.json index 483e37704a..1b16f58f12 100644 --- a/exercises/practice/satellite/package.json +++ b/exercises/practice/satellite/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/say/package.json b/exercises/practice/say/package.json index ba99a6bf52..69b265eb3b 100644 --- a/exercises/practice/say/package.json +++ b/exercises/practice/say/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/scale-generator/package.json b/exercises/practice/scale-generator/package.json index e294c4e863..f10e93bc1c 100644 --- a/exercises/practice/scale-generator/package.json +++ b/exercises/practice/scale-generator/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/scrabble-score/package.json b/exercises/practice/scrabble-score/package.json index 771e50fc80..37734b3ae7 100644 --- a/exercises/practice/scrabble-score/package.json +++ b/exercises/practice/scrabble-score/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/secret-handshake/package.json b/exercises/practice/secret-handshake/package.json index e69e602ebb..504bfda83d 100644 --- a/exercises/practice/secret-handshake/package.json +++ b/exercises/practice/secret-handshake/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/series/package.json b/exercises/practice/series/package.json index b7ef4ef512..25e815a3d7 100644 --- a/exercises/practice/series/package.json +++ b/exercises/practice/series/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/sieve/package.json b/exercises/practice/sieve/package.json index 4602409f06..94ffd00d00 100644 --- a/exercises/practice/sieve/package.json +++ b/exercises/practice/sieve/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/simple-cipher/package.json b/exercises/practice/simple-cipher/package.json index 64ae3c951a..e74157aa78 100644 --- a/exercises/practice/simple-cipher/package.json +++ b/exercises/practice/simple-cipher/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/simple-linked-list/package.json b/exercises/practice/simple-linked-list/package.json index cf017227e1..646ce6b5f8 100644 --- a/exercises/practice/simple-linked-list/package.json +++ b/exercises/practice/simple-linked-list/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/space-age/package.json b/exercises/practice/space-age/package.json index 095bafb8d0..ebbf1e53f8 100644 --- a/exercises/practice/space-age/package.json +++ b/exercises/practice/space-age/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/spiral-matrix/package.json b/exercises/practice/spiral-matrix/package.json index 0d4b37c868..b4c539458c 100644 --- a/exercises/practice/spiral-matrix/package.json +++ b/exercises/practice/spiral-matrix/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/square-root/package.json b/exercises/practice/square-root/package.json index 7dda8cac46..c9c4002bac 100644 --- a/exercises/practice/square-root/package.json +++ b/exercises/practice/square-root/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/state-of-tic-tac-toe/package.json b/exercises/practice/state-of-tic-tac-toe/package.json index 2f016e94b4..45a451d88b 100644 --- a/exercises/practice/state-of-tic-tac-toe/package.json +++ b/exercises/practice/state-of-tic-tac-toe/package.json @@ -18,14 +18,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/strain/package.json b/exercises/practice/strain/package.json index 6a9e1ff742..5f75c3a2d5 100644 --- a/exercises/practice/strain/package.json +++ b/exercises/practice/strain/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/sublist/package.json b/exercises/practice/sublist/package.json index 160d07ed6d..09dc85353d 100644 --- a/exercises/practice/sublist/package.json +++ b/exercises/practice/sublist/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/sum-of-multiples/package.json b/exercises/practice/sum-of-multiples/package.json index 6f34a63a08..a410ee7c4d 100644 --- a/exercises/practice/sum-of-multiples/package.json +++ b/exercises/practice/sum-of-multiples/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/tournament/package.json b/exercises/practice/tournament/package.json index 6aeee15837..73b28d7ccd 100644 --- a/exercises/practice/tournament/package.json +++ b/exercises/practice/tournament/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/transpose/package.json b/exercises/practice/transpose/package.json index c597d5d367..6281aeb85a 100644 --- a/exercises/practice/transpose/package.json +++ b/exercises/practice/transpose/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/triangle/package.json b/exercises/practice/triangle/package.json index 6f24674754..184f7679a9 100644 --- a/exercises/practice/triangle/package.json +++ b/exercises/practice/triangle/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/trinary/package.json b/exercises/practice/trinary/package.json index 5bb6971abf..c71227f917 100644 --- a/exercises/practice/trinary/package.json +++ b/exercises/practice/trinary/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/twelve-days/package.json b/exercises/practice/twelve-days/package.json index a4371c33f7..01e070f835 100644 --- a/exercises/practice/twelve-days/package.json +++ b/exercises/practice/twelve-days/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/two-bucket/package.json b/exercises/practice/two-bucket/package.json index b8f71f20d1..37fe9017e8 100644 --- a/exercises/practice/two-bucket/package.json +++ b/exercises/practice/two-bucket/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/two-fer/package.json b/exercises/practice/two-fer/package.json index 4881d04d3e..5c656f595d 100644 --- a/exercises/practice/two-fer/package.json +++ b/exercises/practice/two-fer/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/variable-length-quantity/package.json b/exercises/practice/variable-length-quantity/package.json index 3e130ae764..c9ff5f75d9 100644 --- a/exercises/practice/variable-length-quantity/package.json +++ b/exercises/practice/variable-length-quantity/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/word-count/package.json b/exercises/practice/word-count/package.json index 98eab15608..e5df84718a 100644 --- a/exercises/practice/word-count/package.json +++ b/exercises/practice/word-count/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/word-search/package.json b/exercises/practice/word-search/package.json index 334eb5115c..2ad4671f78 100644 --- a/exercises/practice/word-search/package.json +++ b/exercises/practice/word-search/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/wordy/package.json b/exercises/practice/wordy/package.json index b564859909..8d991ff332 100644 --- a/exercises/practice/wordy/package.json +++ b/exercises/practice/wordy/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/yacht/package.json b/exercises/practice/yacht/package.json index dc04676d05..849347c62a 100644 --- a/exercises/practice/yacht/package.json +++ b/exercises/practice/yacht/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/zebra-puzzle/package.json b/exercises/practice/zebra-puzzle/package.json index de721ef8aa..503a57148d 100644 --- a/exercises/practice/zebra-puzzle/package.json +++ b/exercises/practice/zebra-puzzle/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, diff --git a/exercises/practice/zipper/package.json b/exercises/practice/zipper/package.json index a732e8a7f9..3cea55c687 100644 --- a/exercises/practice/zipper/package.json +++ b/exercises/practice/zipper/package.json @@ -13,14 +13,14 @@ "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", "@jest/globals": "^29.7.0", - "@types/node": "^22.15.29", + "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", "core-js": "~3.42.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", - "globals": "^16.2.0", + "globals": "^16.3.0", "jest": "^29.7.0" }, "dependencies": {}, From 1eed40b8731ad149ff798e5a617cdf05b0057134 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Sat, 4 Oct 2025 13:05:07 +0200 Subject: [PATCH 07/61] Fix incorrect code fence in introduction.md (#2777) * Fix incorrect code fence in introduction.md * [CI] Format code --------- Co-authored-by: github-actions[bot] --- concepts/template-strings/introduction.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/concepts/template-strings/introduction.md b/concepts/template-strings/introduction.md index ed6ba23b6a..396c8d8f18 100644 --- a/concepts/template-strings/introduction.md +++ b/concepts/template-strings/introduction.md @@ -41,12 +41,13 @@ lines`; If you want to represent a newline inside a regular string instead of using a template string (ie. not using backticks), you can use the newline escape sequence `\n`: -````javascript -"This is an example of using the newline escape sequence!\nWithout backticks" +```javascript +'This is an example of using the newline escape sequence!\nWithout backticks'; /* => This is an example of using the newline escape sequence! Without backticks */ +``` With the available substitution capabilities, you can also introduce logic into the process to determine what the output string should be. One way to handle the logic could be using the [ternary operator][ternary-operator]. @@ -59,7 +60,7 @@ const grade = 95; `You have ${grade > 90 ? 'passed' : 'failed'} the exam.`; // => You have passed the exam. -```` +``` [string-reference]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String [type-conversion-concept]: /tracks/javascript/concepts/type-conversion From d59bdfec0282be0ea29274ebdb487ab1354a0dd4 Mon Sep 17 00:00:00 2001 From: Adebiyi Itunuayo <44436048+FFFF-0000h@users.noreply.github.com> Date: Sat, 4 Oct 2025 16:44:48 +0100 Subject: [PATCH 08/61] Update introduction.md (#2781) --- .../concept/coordinate-transformation/.docs/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/concept/coordinate-transformation/.docs/introduction.md b/exercises/concept/coordinate-transformation/.docs/introduction.md index d443933587..50865ade37 100644 --- a/exercises/concept/coordinate-transformation/.docs/introduction.md +++ b/exercises/concept/coordinate-transformation/.docs/introduction.md @@ -105,7 +105,7 @@ const mySecondCounter = makeCounter(); mySecondCounter(); // => 1 -// It is not affect the first counter. +// It does not affect the first counter. myFirstCounter(); // => 3 From 2e0b4d12f90479977ad592db4fc41a60b7e6c3a1 Mon Sep 17 00:00:00 2001 From: Adebiyi Itunuayo <44436048+FFFF-0000h@users.noreply.github.com> Date: Tue, 7 Oct 2025 08:49:41 +0100 Subject: [PATCH 09/61] Update instructions.md (#2782) --- exercises/concept/captains-log/.docs/instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/concept/captains-log/.docs/instructions.md b/exercises/concept/captains-log/.docs/instructions.md index 5b8b2a8d61..cb70343718 100644 --- a/exercises/concept/captains-log/.docs/instructions.md +++ b/exercises/concept/captains-log/.docs/instructions.md @@ -10,7 +10,7 @@ Help Mary by creating random generators for data commonly appearing in the capta ## 1. Generate a random starship registry number Enterprise (registry number NCC-1701) is not the only starship flying around! -When it rendezvous with another starship, Mary needs to log the registry number of that starship. +When it meets another starship, Mary needs to log the registry number of that starship. Registry numbers start with the prefix "NCC-" and then use a number from 1000 to 9999 (both inclusive). From 6680fb1203cc3a20592b3bc74001170ea28f7a6e Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Fri, 10 Oct 2025 00:07:48 +0200 Subject: [PATCH 10/61] Fix incorrect test name (#2784) --- exercises/practice/strain/strain.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/practice/strain/strain.spec.js b/exercises/practice/strain/strain.spec.js index 919bd7d169..875b0e3338 100644 --- a/exercises/practice/strain/strain.spec.js +++ b/exercises/practice/strain/strain.spec.js @@ -47,7 +47,7 @@ describe('strain', () => { ]); }); - xtest('discards everything', () => { + xtest('discard on empty list returns empty list', () => { expect(discard([], (e) => e < 10)).toEqual([]); }); From fded3314e24f2d16ff958fc715bec61814b2f673 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Fri, 10 Oct 2025 00:08:15 +0200 Subject: [PATCH 11/61] Fix incorrect test name (#2783) --- exercises/practice/bank-account/bank-account.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/practice/bank-account/bank-account.spec.js b/exercises/practice/bank-account/bank-account.spec.js index 7b2664b6f3..406027a249 100644 --- a/exercises/practice/bank-account/bank-account.spec.js +++ b/exercises/practice/bank-account/bank-account.spec.js @@ -67,7 +67,7 @@ describe('Bank Account', () => { }).toThrow(ValueError); }); - xtest('Cannot deposit into closed account', () => { + xtest('Cannot deposit into unopened account', () => { const account = new BankAccount(); expect(() => { account.deposit(50); From e163d24454129403e8c6fd701302348cd2cf256b Mon Sep 17 00:00:00 2001 From: Adebiyi Itunuayo <44436048+FFFF-0000h@users.noreply.github.com> Date: Fri, 10 Oct 2025 09:57:29 +0100 Subject: [PATCH 12/61] Update README.md (#2785) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9de18799c6..7fa8de99f4 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ It also has a list of tools you can use, of which the `test` tool is one of them ## Running the code quality tooling (linter) -This run `eslint` for all files that _require_ linting. +This runs `eslint` for all files that _require_ linting. ```shell corepack pnpm node scripts/lint.mjs --fix From 9c300b460a8a386eeeb4fb575cccf9c667db004a Mon Sep 17 00:00:00 2001 From: Adebiyi Itunuayo <44436048+FFFF-0000h@users.noreply.github.com> Date: Mon, 13 Oct 2025 02:04:05 +0100 Subject: [PATCH 13/61] Minor grammar fixes (#2786) * Update introduction.md * Update introduction.md * Update introduction.md * Update introduction.md * Update instructions.md * Update about.md --- concepts/basics/introduction.md | 2 +- concepts/errors/introduction.md | 2 +- concepts/numbers/about.md | 6 +++--- concepts/promises/introduction.md | 2 +- concepts/template-strings/introduction.md | 2 +- exercises/concept/factory-sensors/.docs/instructions.md | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/concepts/basics/introduction.md b/concepts/basics/introduction.md index 0e1fd62da2..a54e1c1e84 100644 --- a/concepts/basics/introduction.md +++ b/concepts/basics/introduction.md @@ -21,7 +21,7 @@ In contrast to `let` and `var`, variables that are defined with `const` can only ```javascript const MY_FIRST_CONSTANT = 10; -// Can not be re-assigned. +// Cannot be re-assigned. MY_FIRST_CONSTANT = 20; // => TypeError: Assignment to constant variable. ``` diff --git a/concepts/errors/introduction.md b/concepts/errors/introduction.md index 138afd6610..39fcd13cd9 100644 --- a/concepts/errors/introduction.md +++ b/concepts/errors/introduction.md @@ -2,7 +2,7 @@ Errors are useful to report when something is wrong or unexpected in a program or a piece of code. -They are javascript objects. +They are JavaScript objects. The main property of this object is `message`: diff --git a/concepts/numbers/about.md b/concepts/numbers/about.md index cefa271b7b..b9d13b5d75 100644 --- a/concepts/numbers/about.md +++ b/concepts/numbers/about.md @@ -26,7 +26,7 @@ Numbers may also be expressed in literal forms like `0b101`, `0o13`, `0x0A`. Lea ### Exponential Notation The E-notation indicates a number that should be multiplied by 10 raised to a given power. -The format of E-notation is to have a number, followed by `e` or `E`, than by the power of 10 to multiply by. +The format of E-notation is to have a number, followed by `e` or `E`, then by the power of 10 to multiply by. ```javascript const num = 3.125e7; @@ -37,7 +37,7 @@ const num = 3.125e7; E-notation can also be used to represent very small numbers: ```javascript -const num = 325987e-6; // Equals to 0. 325987 +const num = 325987e-6; // Equals 0.325987 // The notation essentially says, "Take 325987 and multiply it by 10^-6. ``` @@ -153,7 +153,7 @@ isFinite(NaN); // => false `+0` or `-0` are distinct numbers in JavaScript. They can be produced if you represented a number, that is so small that it is indistinguishable from 0. The signed zero allows you to record “from which direction” you approached zero; that is, what sign the number had before it was considered zero. -It is best practise to pretend there's only one zero. +It is best practice to pretend there's only one zero. ## Comparison diff --git a/concepts/promises/introduction.md b/concepts/promises/introduction.md index f077711929..3b1440a5d8 100644 --- a/concepts/promises/introduction.md +++ b/concepts/promises/introduction.md @@ -4,7 +4,7 @@ The [`Promise`][promise-docs] object represents the eventual completion (or fail ~~~exercism/note -This is a hard topic for many people, specially if you know programming in a language that is completely _synchronous_. +This is a hard topic for many people, especially if you know programming in a language that is completely _synchronous_. If you feel overwhelmed, or you would like to learn more about **concurrency** and **parallelism**, [watch (via go.dev)][talk-blog] or [watch directly via vimeo][talk-video] and [read the slides][talk-slides] of the brilliant talk "Concurrency is not parallelism". [talk-slides]: https://go.dev/talks/2012/waza.slide#1 diff --git a/concepts/template-strings/introduction.md b/concepts/template-strings/introduction.md index 396c8d8f18..6af7f9cbc7 100644 --- a/concepts/template-strings/introduction.md +++ b/concepts/template-strings/introduction.md @@ -1,6 +1,6 @@ # Introduction -In JavaScript, _template strings_ allows for embedding expressions in strings, also referred to as string interpolation. +In JavaScript, _template strings_ allow for embedding expressions in strings, also referred to as string interpolation. This functionality extends the functionality of the built-in [`String`][string-reference] global object. You can create template strings in JavaScript by wrapping text in backticks. diff --git a/exercises/concept/factory-sensors/.docs/instructions.md b/exercises/concept/factory-sensors/.docs/instructions.md index 545c242b4e..ccee09cce3 100644 --- a/exercises/concept/factory-sensors/.docs/instructions.md +++ b/exercises/concept/factory-sensors/.docs/instructions.md @@ -61,7 +61,7 @@ Now that your machine can detect errors, you will implement a function that reac - If the temperature is too high, you will either shut down the machine if the temperature exceeds 600°C or turn on a warning light if it is less than that. - If another error happens, you'll rethrow it. -Implements a function `monitorTheMachine` that takes an argument `actions`. +Implement a function `monitorTheMachine` that takes an argument `actions`. `actions` is an object that has 4 properties : From 636641577bbeea1a24a03709824186657b94f744 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 02:18:43 +0200 Subject: [PATCH 14/61] =?UTF-8?q?=F0=9F=A4=96=20Auto-sync=20docs,=20metada?= =?UTF-8?q?ta,=20and=20filepaths=20(#2787)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- exercises/practice/killer-sudoku-helper/.docs/instructions.md | 2 +- exercises/practice/triangle/.docs/instructions.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/exercises/practice/killer-sudoku-helper/.docs/instructions.md b/exercises/practice/killer-sudoku-helper/.docs/instructions.md index fdafdca8fb..9f5cb1368f 100644 --- a/exercises/practice/killer-sudoku-helper/.docs/instructions.md +++ b/exercises/practice/killer-sudoku-helper/.docs/instructions.md @@ -74,7 +74,7 @@ You can also find Killer Sudokus in varying difficulty in numerous newspapers, a ## Credit -The screenshots above have been generated using [F-Puzzles.com](https://www.f-puzzles.com/), a Puzzle Setting Tool by Eric Fox. +The screenshots above have been generated using F-Puzzles.com, a Puzzle Setting Tool by Eric Fox. [sudoku-rules]: https://masteringsudoku.com/sudoku-rules-beginners/ [killer-guide]: https://masteringsudoku.com/killer-sudoku/ diff --git a/exercises/practice/triangle/.docs/instructions.md b/exercises/practice/triangle/.docs/instructions.md index 755cb8d19d..e9b053dcd3 100644 --- a/exercises/practice/triangle/.docs/instructions.md +++ b/exercises/practice/triangle/.docs/instructions.md @@ -14,7 +14,8 @@ A _scalene_ triangle has all sides of different lengths. For a shape to be a triangle at all, all sides have to be of length > 0, and the sum of the lengths of any two sides must be greater than or equal to the length of the third side. ~~~~exercism/note -We opted to not include tests for degenerate triangles (triangles that violate these rules) to keep things simpler. +_Degenerate triangles_ are triangles where the sum of the length of two sides is **equal** to the length of the third side, e.g. `1, 1, 2`. +We opted to not include tests for degenerate triangles in this exercise. You may handle those situations if you wish to do so, or safely ignore them. ~~~~ From 901c223b6619531ad40a545dfa020e8bba14fe0e Mon Sep 17 00:00:00 2001 From: Eda <58330360+rivea0@users.noreply.github.com> Date: Sun, 19 Oct 2025 22:59:48 +0300 Subject: [PATCH 15/61] Train Driver: Fix incorrect JSDoc type (#2788) --- exercises/concept/train-driver/train-driver.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/concept/train-driver/train-driver.js b/exercises/concept/train-driver/train-driver.js index b33bc4309f..4c14baa8a3 100644 --- a/exercises/concept/train-driver/train-driver.js +++ b/exercises/concept/train-driver/train-driver.js @@ -7,7 +7,7 @@ /** * Return each wagon's id in form of an array. * - * @param {...numbers} ids + * @param {...number} ids * @returns {number[]} wagon ids */ export function getListOfWagons(a, b, c, d, e, f, g, h, i, j, k, l, m, n) { From f3e8a696837e769fa7ab5ac939a626523b2fcd3f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Oct 2025 16:11:08 +0530 Subject: [PATCH 16/61] Bump core-js from 3.42.0 to 3.45.1 (#2753) Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.42.0 to 3.45.1. - [Release notes](https://github.com/zloirock/core-js/releases) - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/zloirock/core-js/commits/v3.45.1/packages/core-js) --- updated-dependencies: - dependency-name: core-js dependency-version: 3.45.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index bddbaa23ce..268c5c098d 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", - "core-js": "~3.42.0", + "core-js": "~3.45.1", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 62c71f38fb..2af57a4d82 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^29.7.0 version: 29.7.0(@babel/core@7.25.8) core-js: - specifier: ~3.42.0 - version: 3.42.0 + specifier: ~3.45.1 + version: 3.45.1 diff: specifier: ^8.0.2 version: 8.0.2 @@ -1158,8 +1158,8 @@ packages: core-js@3.38.1: resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} - core-js@3.42.0: - resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + core-js@3.45.1: + resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} create-jest@29.7.0: resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} @@ -2729,7 +2729,7 @@ snapshots: '@babel/core': 7.25.8 '@babel/register': 7.25.7(@babel/core@7.25.8) commander: 6.2.1 - core-js: 3.42.0 + core-js: 3.45.1 node-environment-flags: 1.0.6 regenerator-runtime: 0.14.1 v8flags: 3.2.0 @@ -3985,7 +3985,7 @@ snapshots: core-js@3.38.1: {} - core-js@3.42.0: {} + core-js@3.45.1: {} create-jest@29.7.0(@types/node@24.3.0): dependencies: From 03ff634194b31d80f8a4c8b24ec555edfe69a31b Mon Sep 17 00:00:00 2001 From: Mytia Dorofieiev Date: Tue, 28 Oct 2025 17:09:17 +0100 Subject: [PATCH 17/61] Fix typo in instructions.md (#2789) --- exercises/concept/high-score-board/.docs/instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/concept/high-score-board/.docs/instructions.md b/exercises/concept/high-score-board/.docs/instructions.md index ea7118dfdb..7fea2acda0 100644 --- a/exercises/concept/high-score-board/.docs/instructions.md +++ b/exercises/concept/high-score-board/.docs/instructions.md @@ -2,7 +2,7 @@ In this exercise, you are implementing a way to keep track of the high scores for the most popular game in your local arcade hall. -You have 6 functions to implement, mostly related to manipulating an object that holds high scores. +You have 5 functions to implement, mostly related to manipulating an object that holds high scores. ## 1. Create a new high score board From 7c8974e3e4aef305a10c473ba49b0419b2ba1d24 Mon Sep 17 00:00:00 2001 From: Mytia Dorofieiev Date: Sun, 9 Nov 2025 09:12:50 +0100 Subject: [PATCH 18/61] Add a test for partially changed input (#2795) --- .../coordinate-transformation/coordinate-transformation.spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/exercises/concept/coordinate-transformation/coordinate-transformation.spec.js b/exercises/concept/coordinate-transformation/coordinate-transformation.spec.js index ab12e99d46..f548002ca0 100644 --- a/exercises/concept/coordinate-transformation/coordinate-transformation.spec.js +++ b/exercises/concept/coordinate-transformation/coordinate-transformation.spec.js @@ -122,6 +122,7 @@ describe('memoizeTransform', () => { test('should return different results for different inputs', () => { const memoizedTranslate = memoizeTransform(translate2d(1, 2)); expect(memoizedTranslate(2, 2)).toEqual([3, 4]); + expect(memoizedTranslate(2, 1)).toEqual([3, 3]); expect(memoizedTranslate(6, 6)).toEqual([7, 8]); }); From 7edd843ae9b63141b02bb04e0aced7bd06262644 Mon Sep 17 00:00:00 2001 From: David Uhlig Date: Sun, 9 Nov 2025 09:15:01 +0100 Subject: [PATCH 19/61] Fix pseudorandom typo (#2794) --- concepts/randomness/about.md | 4 ++-- concepts/randomness/introduction.md | 4 ++-- exercises/concept/captains-log/.docs/introduction.md | 4 ++-- exercises/concept/captains-log/.meta/design.md | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/concepts/randomness/about.md b/concepts/randomness/about.md index d09087ffd8..7898ab4f1e 100644 --- a/concepts/randomness/about.md +++ b/concepts/randomness/about.md @@ -31,8 +31,8 @@ This concept is not about Web Crypto and will restrict itself to pseudo-random n ## Generating random numbers -In Javascript, you can generate psuedorandom numbers using the [`Math.random()`][Math.random] function. -It will return a psuedorandom floating-point number between 0 (inclusive), and 1 (exclusive). +In Javascript, you can generate pseudorandom numbers using the [`Math.random()`][Math.random] function. +It will return a pseudorandom floating-point number between 0 (inclusive), and 1 (exclusive). To get a random number between _min_ (inclusive) and _max_ (exclusive) you can use a function something like this: diff --git a/concepts/randomness/introduction.md b/concepts/randomness/introduction.md index 79b03703b6..4cd34460f5 100644 --- a/concepts/randomness/introduction.md +++ b/concepts/randomness/introduction.md @@ -19,8 +19,8 @@ Finish the learning exercise(s) about this concept to learn more ## Generating random numbers -In Javascript, you can generate psuedorandom numbers using the [`Math.random()`][Math.random] function. -It will return a psuedorandom floating-point number between 0 (inclusive), and 1 (exclusive). +In Javascript, you can generate pseudorandom numbers using the [`Math.random()`][Math.random] function. +It will return a pseudorandom floating-point number between 0 (inclusive), and 1 (exclusive). To get a random number between _min_ (inclusive) and _max_ (exclusive) you can use a function something like this: diff --git a/exercises/concept/captains-log/.docs/introduction.md b/exercises/concept/captains-log/.docs/introduction.md index 12bf08e3e8..cfa1b59484 100644 --- a/exercises/concept/captains-log/.docs/introduction.md +++ b/exercises/concept/captains-log/.docs/introduction.md @@ -19,8 +19,8 @@ Finish the learning exercise(s) about this concept to learn more ## Generating random numbers -In Javascript, you can generate psuedorandom numbers using the [`Math.random()`][Math.random] function. -It will return a psuedorandom floating-point number between 0 (inclusive), and 1 (exclusive). +In Javascript, you can generate pseudorandom numbers using the [`Math.random()`][Math.random] function. +It will return a pseudorandom floating-point number between 0 (inclusive), and 1 (exclusive). [why-randomness-is-hard]: https://www.malwarebytes.com/blog/news/2013/09/in-computers-are-random-numbers-really-random [Math.random]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random diff --git a/exercises/concept/captains-log/.meta/design.md b/exercises/concept/captains-log/.meta/design.md index 63a5f94e50..fcf0cc49f9 100644 --- a/exercises/concept/captains-log/.meta/design.md +++ b/exercises/concept/captains-log/.meta/design.md @@ -2,7 +2,7 @@ ## Goal -The goal of this exercise is to teach the student how to generate psuedorandom numbers in JavaScript. +The goal of this exercise is to teach the student how to generate pseudorandom numbers in JavaScript. ## Learning objectives From 50973fc80179438435e485baf9912bbd29258d76 Mon Sep 17 00:00:00 2001 From: Mytia Dorofieiev Date: Wed, 12 Nov 2025 11:09:19 +0100 Subject: [PATCH 20/61] Fix typos in hints.md (#2796) --- exercises/concept/train-driver/.docs/hints.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/concept/train-driver/.docs/hints.md b/exercises/concept/train-driver/.docs/hints.md index a80b5c2af0..fc5145a939 100644 --- a/exercises/concept/train-driver/.docs/hints.md +++ b/exercises/concept/train-driver/.docs/hints.md @@ -12,12 +12,12 @@ ## 2. Move the first two elements to the end of the array - You can unpack a series of parameters using [a destructuring assignment (`...`)][destructuring-assignment]. - This lets you extract the first two elements of a `array` while keeping the rest intact. + This lets you extract the first two elements of an `array` while keeping the rest intact. - To add another `array` into an existing `array`, you can use the `...` operator to "spread" the `array`. ## 3. Add missing values -- Using unpacking with the rest operator(`...`), lets you extract the first two elements of a `array` while keeping the rest intact. +- Using unpacking with the rest operator(`...`), you can extract the first element of an `array` while keeping the rest intact. - To add another `array` into an existing `array`, you can use the `...` operator to "spread" the `array`. ## 4. Extend routing information From 4afedc1776bb6d3a96aa9f68e8e7624f98e123d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:46:44 +0530 Subject: [PATCH 21/61] Bump actions/setup-node from 5.0.0 to 6.0.0 (#2790) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5.0.0 to 6.0.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/a0853c24544627f65ddf259abe73b1d18a591444...2028fbc5c25fe9cf00d9f06a71cc4710d4507903) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 2 +- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/pr.ci.js.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index 4567e8ac85..8aba7824ca 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 with: node-version: 22.x cache: 'pnpm' diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 91c1439a28..90632fb242 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -18,7 +18,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 with: node-version: 22.x cache: 'pnpm' @@ -42,7 +42,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 683834b1a6..4873fd7c7b 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -28,7 +28,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 with: node-version: 22.x cache: 'pnpm' @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 + uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' From 0b70400020d5727a4c7680301b11b21c985e1417 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:47:18 +0530 Subject: [PATCH 22/61] Bump github/codeql-action from 3 to 4 (#2791) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v3...v4) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4ad26b8320..277fbf1a50 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -33,7 +33,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -44,7 +44,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v4 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -58,4 +58,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 From efe753b7c9ead3d76a1ffb77d7a251f25ffda9dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 15:15:15 +0530 Subject: [PATCH 23/61] Bump actions/checkout from 5.0.0 to 6.0.0 (#2799) Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 6.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/08c6903cd8c0fde910a37f88322edcfb5dd907a8...1af3b93b6815bc44a9784bd300feb67ff0d1eeb3) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/codeql.yml | 2 +- .github/workflows/pr.ci.js.yml | 4 ++-- .github/workflows/verify-code-formatting.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 90632fb242..a970ed95fd 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm @@ -37,7 +37,7 @@ jobs: node-version: [22.x] steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 277fbf1a50..6f3e21c308 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 4873fd7c7b..1d768817f1 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} @@ -48,7 +48,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} diff --git a/.github/workflows/verify-code-formatting.yml b/.github/workflows/verify-code-formatting.yml index 705d85d23a..9dc3e161d8 100644 --- a/.github/workflows/verify-code-formatting.yml +++ b/.github/workflows/verify-code-formatting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: 'Checkout code' - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 - name: 'Verify formatting of all files' run: ./bin/check-formatting.sh From 9b67208e38ca76f6c08c46f4bde57735012d3ec5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jan 2026 11:44:05 +0400 Subject: [PATCH 24/61] Bump actions/checkout from 6.0.0 to 6.0.1 (#2802) Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3...8e8c483db84b4bee98b60c0593521ed34d9990e8) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/codeql.yml | 2 +- .github/workflows/pr.ci.js.yml | 4 ++-- .github/workflows/verify-code-formatting.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index a970ed95fd..019158de18 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm @@ -37,7 +37,7 @@ jobs: node-version: [22.x] steps: - - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6f3e21c308..6bf823d712 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 1d768817f1..49dadd73ef 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} @@ -48,7 +48,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} diff --git a/.github/workflows/verify-code-formatting.yml b/.github/workflows/verify-code-formatting.yml index 9dc3e161d8..b5dca55cb5 100644 --- a/.github/workflows/verify-code-formatting.yml +++ b/.github/workflows/verify-code-formatting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: 'Checkout code' - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 - name: 'Verify formatting of all files' run: ./bin/check-formatting.sh From bf23b003c677ea1c03cb27fb704a6ad00e090961 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jan 2026 12:01:43 +0400 Subject: [PATCH 25/61] Bump actions/setup-node from 6.0.0 to 6.1.0 (#2801) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/2028fbc5c25fe9cf00d9f06a71cc4710d4507903...395ad3262231945c25e8478fd5baf05154b1d79f) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 2 +- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/pr.ci.js.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index 8aba7824ca..252ee6f62d 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f with: node-version: 22.x cache: 'pnpm' diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 019158de18..bf612d372c 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -18,7 +18,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f with: node-version: 22.x cache: 'pnpm' @@ -42,7 +42,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f with: node-version: ${{ matrix.node-version }} cache: 'pnpm' diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 49dadd73ef..87c3f0fa07 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -28,7 +28,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f with: node-version: 22.x cache: 'pnpm' @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f with: node-version: ${{ matrix.node-version }} cache: 'pnpm' From 98ef6de4b0e0981f0c50f4c0f3a7c48251149c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:43:47 -0800 Subject: [PATCH 26/61] Sync `flower-field` tests (#2804) --- exercises/practice/flower-field/.meta/tests.toml | 3 +++ exercises/practice/flower-field/flower-field.spec.js | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/exercises/practice/flower-field/.meta/tests.toml b/exercises/practice/flower-field/.meta/tests.toml index c2b24fdaf5..965ba8fd4d 100644 --- a/exercises/practice/flower-field/.meta/tests.toml +++ b/exercises/practice/flower-field/.meta/tests.toml @@ -44,3 +44,6 @@ description = "cross" [dd9d4ca8-9e68-4f78-a677-a2a70fd7a7b8] description = "large garden" + +[6e4ac13a-3e43-4728-a2e3-3551d4b1a996] +description = "multiple adjacent flowers" diff --git a/exercises/practice/flower-field/flower-field.spec.js b/exercises/practice/flower-field/flower-field.spec.js index 115693b513..5cd53b5f04 100644 --- a/exercises/practice/flower-field/flower-field.spec.js +++ b/exercises/practice/flower-field/flower-field.spec.js @@ -76,4 +76,10 @@ describe('Flower Field', () => { ]; expect(annotate(input)).toEqual(expected); }); + + xtest('multiple adjacent flowers', () => { + const input = [' ** ']; + const expected = ['1**1']; + expect(annotate(input)).toEqual(expected); + }); }); From 18bcdee7012019a111aad692c1c4f700b2c69168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:45:37 -0800 Subject: [PATCH 27/61] Sync `isbn-verifier` tests (#2805) --- exercises/practice/isbn-verifier/.meta/tests.toml | 6 ++++++ exercises/practice/isbn-verifier/isbn-verifier.spec.js | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/exercises/practice/isbn-verifier/.meta/tests.toml b/exercises/practice/isbn-verifier/.meta/tests.toml index 6d5a845990..17e18d47ac 100644 --- a/exercises/practice/isbn-verifier/.meta/tests.toml +++ b/exercises/practice/isbn-verifier/.meta/tests.toml @@ -30,6 +30,12 @@ description = "invalid character in isbn is not treated as zero" [28025280-2c39-4092-9719-f3234b89c627] description = "X is only valid as a check digit" +[8005b57f-f194-44ee-88d2-a77ac4142591] +description = "only one check digit is allowed" + +[fdb14c99-4cf8-43c5-b06d-eb1638eff343] +description = "X is not substituted by the value 10" + [f6294e61-7e79-46b3-977b-f48789a4945b] description = "valid isbn without separating dashes" diff --git a/exercises/practice/isbn-verifier/isbn-verifier.spec.js b/exercises/practice/isbn-verifier/isbn-verifier.spec.js index 6ff9dedbf8..99d2cbf419 100644 --- a/exercises/practice/isbn-verifier/isbn-verifier.spec.js +++ b/exercises/practice/isbn-verifier/isbn-verifier.spec.js @@ -30,6 +30,14 @@ describe('ISBN Verifier', () => { expect(isValid('3-598-2X507-9')).toEqual(false); }); + xtest('only one check digit is allowed', () => { + expect(isValid('3-598-21508-96')).toEqual(false); + }); + + xtest('X is not substituted by the value 10', () => { + expect(isValid('3-598-2X507-5')).toEqual(false); + }); + xtest('valid isbn without separating dashes', () => { expect(isValid('3598215088')).toEqual(true); }); From 55274239b22ed18bf0da0183833415c157e8a2ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Mon, 5 Jan 2026 22:47:42 -0800 Subject: [PATCH 28/61] sync `satellite` tests (#2806) --- exercises/practice/satellite/.meta/tests.toml | 22 ++++- .../practice/satellite/satellite.spec.js | 89 +++++++++++++++++++ 2 files changed, 108 insertions(+), 3 deletions(-) diff --git a/exercises/practice/satellite/.meta/tests.toml b/exercises/practice/satellite/.meta/tests.toml index 8314daa436..d0ed5b6ac5 100644 --- a/exercises/practice/satellite/.meta/tests.toml +++ b/exercises/practice/satellite/.meta/tests.toml @@ -1,6 +1,13 @@ -# This is an auto-generated file. Regular comments will be removed when this -# file is regenerated. Regenerating will not touch any manually added keys, -# so comments can be added in a "comment" key. +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. [8df3fa26-811a-4165-9286-ff9ac0850d19] description = "Empty tree" @@ -19,3 +26,12 @@ description = "Reject inconsistent traversals of same length" [d86a3d72-76a9-43b5-9d3a-e64cb1216035] description = "Reject traversals with repeated items" + +[af31ae02-7e5b-4452-a990-bccb3fca9148] +description = "A degenerate binary tree" + +[ee54463d-a719-4aae-ade4-190d30ce7320] +description = "Another degenerate binary tree" + +[87123c08-c155-4486-90a4-e2f75b0f3e8f] +description = "Tree with many more items" diff --git a/exercises/practice/satellite/satellite.spec.js b/exercises/practice/satellite/satellite.spec.js index 1c401ffecb..e120338463 100644 --- a/exercises/practice/satellite/satellite.spec.js +++ b/exercises/practice/satellite/satellite.spec.js @@ -49,4 +49,93 @@ describe('Satellite', () => { treeFromTraversals(preorder, inorder); }).toThrow(new Error('traversals must contain unique items')); }); + + xtest('A degenerate binary tree', () => { + const preorder = ['a', 'b', 'c', 'd']; + const inorder = ['d', 'c', 'b', 'a']; + const expected = { + value: 'a', + left: { + value: 'b', + left: { + value: 'c', + left: { + value: 'd', + left: {}, + right: {}, + }, + right: {}, + }, + right: {}, + }, + right: {}, + }; + expect(treeFromTraversals(preorder, inorder)).toEqual(expected); + }); + + xtest('Another degenerate binary tree', () => { + const preorder = ['a', 'b', 'c', 'd']; + const inorder = ['a', 'b', 'c', 'd']; + const expected = { + value: 'a', + left: {}, + right: { + value: 'b', + left: {}, + right: { + value: 'c', + left: {}, + right: { + value: 'd', + left: {}, + right: {}, + }, + }, + }, + }; + expect(treeFromTraversals(preorder, inorder)).toEqual(expected); + }); + + xtest('Tree with many more items', () => { + const preorder = ['a', 'b', 'd', 'g', 'h', 'c', 'e', 'f', 'i']; + const inorder = ['g', 'd', 'h', 'b', 'a', 'e', 'c', 'i', 'f']; + const expected = { + value: 'a', + left: { + value: 'b', + left: { + value: 'd', + left: { + value: 'g', + left: {}, + right: {}, + }, + right: { + value: 'h', + left: {}, + right: {}, + }, + }, + right: {}, + }, + right: { + value: 'c', + left: { + value: 'e', + left: {}, + right: {}, + }, + right: { + value: 'f', + left: { + value: 'i', + left: {}, + right: {}, + }, + right: {}, + }, + }, + }; + expect(treeFromTraversals(preorder, inorder)).toEqual(expected); + }); }); From 8d6c7530ec6a591612de16a67ea947351c615456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Sat, 24 Jan 2026 10:05:31 -0800 Subject: [PATCH 29/61] add `camicia` (#2811) --- config.json | 10 + .../practice/camicia/.docs/instructions.md | 84 ++++ .../practice/camicia/.docs/introduction.md | 24 ++ exercises/practice/camicia/.gitignore | 5 + exercises/practice/camicia/.meta/config.json | 25 ++ exercises/practice/camicia/.meta/proof.ci.js | 73 ++++ exercises/practice/camicia/.meta/tests.toml | 94 +++++ exercises/practice/camicia/.npmrc | 1 + exercises/practice/camicia/LICENSE | 21 + exercises/practice/camicia/babel.config.js | 4 + exercises/practice/camicia/camicia.js | 8 + exercises/practice/camicia/camicia.spec.js | 375 ++++++++++++++++++ exercises/practice/camicia/eslint.config.mjs | 45 +++ exercises/practice/camicia/jest.config.js | 22 + exercises/practice/camicia/package.json | 34 ++ 15 files changed, 825 insertions(+) create mode 100644 exercises/practice/camicia/.docs/instructions.md create mode 100644 exercises/practice/camicia/.docs/introduction.md create mode 100644 exercises/practice/camicia/.gitignore create mode 100644 exercises/practice/camicia/.meta/config.json create mode 100644 exercises/practice/camicia/.meta/proof.ci.js create mode 100644 exercises/practice/camicia/.meta/tests.toml create mode 100644 exercises/practice/camicia/.npmrc create mode 100644 exercises/practice/camicia/LICENSE create mode 100644 exercises/practice/camicia/babel.config.js create mode 100644 exercises/practice/camicia/camicia.js create mode 100644 exercises/practice/camicia/camicia.spec.js create mode 100644 exercises/practice/camicia/eslint.config.mjs create mode 100644 exercises/practice/camicia/jest.config.js create mode 100644 exercises/practice/camicia/package.json diff --git a/config.json b/config.json index ddc35cb96d..850b677699 100644 --- a/config.json +++ b/config.json @@ -869,6 +869,16 @@ "integers" ] }, + { + "slug": "camicia", + "name": "Camicia", + "uuid": "96d482ab-effc-4082-b4a8-3165de8ff0eb", + "practices": [], + "prerequisites": [ + "arrays" + ], + "difficulty": 5 + }, { "slug": "clock", "name": "Clock", diff --git a/exercises/practice/camicia/.docs/instructions.md b/exercises/practice/camicia/.docs/instructions.md new file mode 100644 index 0000000000..5ce3c755d0 --- /dev/null +++ b/exercises/practice/camicia/.docs/instructions.md @@ -0,0 +1,84 @@ +# Instructions + +In this exercise, you will simulate a game very similar to the classic card game **Camicia**. +Your program will receive the initial configuration of two players' decks and must simulate the game until it ends (or detect that it will never end). + +## Rules + +- The deck is split between **two players**. + The player's cards are read from left to right, where the leftmost card is the top of the deck. +- A round consists of both players playing at least one card. +- Players take turns placing the **top card** of their deck onto a central pile. +- If the card is a **number card** (2-10), play simply passes to the other player. +- If the card is a **payment card**, a penalty must be paid: + - **J** → opponent must pay 1 card + - **Q** → opponent must pay 2 cards + - **K** → opponent must pay 3 cards + - **A** → opponent must pay 4 cards +- If the player paying a penalty reveals another payment card, that player stops paying the penalty. + The other player must then pay a penalty based on the new payment card. +- If the penalty is fully paid without interruption, the player who placed the **last payment card** collects the central pile and places it at the bottom of their deck. + That player then starts the next round. +- If a player runs out of cards and is unable to play a card (either while paying a penalty or when it is their turn), the other player collects the central pile. +- The moment when a player collects cards from the central pile is called a **trick**. +- If a player has all the cards in their possession after a trick, the game **ends**. +- The game **enters a loop** as soon as the decks are identical to what they were earlier during the game, **not** counting number cards! + +## Examples + +A small example of a match that ends. + +| Round | Player A | Player B | Pile | Penalty Due | +| :---- | :----------- | :------------------------- | :------------------------- | :---------- | +| 1 | 2 A 7 8 Q 10 | 3 4 5 6 K 9 J | | - | +| 1 | A 7 8 Q 10 | 3 4 5 6 K 9 J | 2 | - | +| 1 | A 7 8 Q 10 | 4 5 6 K 9 J | 2 3 | - | +| 1 | 7 8 Q 10 | 4 5 6 K 9 J | 2 3 A | Player B: 4 | +| 1 | 7 8 Q 10 | 5 6 K 9 J | 2 3 A 4 | Player B: 3 | +| 1 | 7 8 Q 10 | 6 K 9 J | 2 3 A 4 5 | Player B: 2 | +| 1 | 7 8 Q 10 | K 9 J | 2 3 A 4 5 6 | Player B: 1 | +| 1 | 7 8 Q 10 | 9 J | 2 3 A 4 5 6 K | Player A: 3 | +| 1 | 8 Q 10 | 9 J | 2 3 A 4 5 6 K 7 | Player A: 2 | +| 1 | Q 10 | 9 J | 2 3 A 4 5 6 K 7 8 | Player A: 1 | +| 1 | 10 | 9 J | 2 3 A 4 5 6 K 7 8 Q | Player B: 2 | +| 1 | 10 | J | 2 3 A 4 5 6 K 7 8 Q 9 | Player B: 1 | +| 1 | 10 | - | 2 3 A 4 5 6 K 7 8 Q 9 J | Player A: 1 | +| 1 | - | - | 2 3 A 4 5 6 K 7 8 Q 9 J 10 | - | +| 2 | - | 2 3 A 4 5 6 K 7 8 Q 9 J 10 | - | - | + +status: `"finished"`, cards: 13, tricks: 1 + +This is a small example of a match that loops. + +| Round | Player A | Player B | Pile | Penalty Due | +| :---- | :------- | :------- | :---- | :---------- | +| 1 | J 2 3 | 4 J 5 | - | - | +| 1 | 2 3 | 4 J 5 | J | Player B: 1 | +| 1 | 2 3 | J 5 | J 4 | - | +| 2 | 2 3 J 4 | J 5 | - | - | +| 2 | 3 J 4 | J 5 | 2 | - | +| 2 | 3 J 4 | 5 | 2 J | Player A: 1 | +| 2 | J 4 | 5 | 2 J 3 | - | +| 3 | J 4 | 5 2 J 3 | - | - | +| 3 | J 4 | 2 J 3 | 5 | - | +| 3 | 4 | 2 J 3 | 5 J | Player B: 1 | +| 3 | 4 | J 3 | 5 J 2 | - | +| 4 | 4 5 J 2 | J 3 | - | - | + +The start of round 4 matches the start of round 2. +Recall, the value of the number cards does not matter. + +status: `"loop"`, cards: 8, tricks: 3 + +## Your Task + +- Using the input, simulate the game following the rules above. +- Determine the following information regarding the game: + - **Status**: `"finished"` or `"loop"` + - **Cards**: total number of cards played throughout the game + - **Tricks**: number of times the central pile was collected + +```exercism/advanced +For those who want to take on a more exciting challenge, the hunt for other records for the longest game with an end is still open. +There are 653,534,134,886,878,245,000 (approximately 654 quintillion) possibilities, and we haven't calculated them all yet! +``` diff --git a/exercises/practice/camicia/.docs/introduction.md b/exercises/practice/camicia/.docs/introduction.md new file mode 100644 index 0000000000..761d8a82c5 --- /dev/null +++ b/exercises/practice/camicia/.docs/introduction.md @@ -0,0 +1,24 @@ +# Introduction + +One rainy afternoon, you sit at the kitchen table playing cards with your grandmother. +The game is her take on [Camicia][bmn]. + +At first it feels like just another friendly match: cards slapped down, laughter across the table, the occasional victorious grin from Nonna. +But as the game stretches on, something strange happens. +The same cards keep cycling back. +You play card after card, yet the end never seems to come. + +You start to wonder. +_Will this game ever finish? +Or could we keep playing forever?_ + +Later, driven by curiosity, you search online and to your surprise you discover that what happened wasn't just bad luck. +You and your grandmother may have stumbled upon one of the longest possible sequences! +Suddenly, you're hooked. +What began as a casual game has turned into a quest: _how long can such a game really last?_ +_Can you find a sequence even longer than the one you played at the kitchen table?_ +_Perhaps even long enough to set a new world record?_ + +And so, armed with nothing but a deck of cards and some algorithmic ingenuity, you decide to investigate... + +[bmn]: https://en.wikipedia.org/wiki/Beggar-my-neighbour diff --git a/exercises/practice/camicia/.gitignore b/exercises/practice/camicia/.gitignore new file mode 100644 index 0000000000..0c88ff6ec3 --- /dev/null +++ b/exercises/practice/camicia/.gitignore @@ -0,0 +1,5 @@ +/node_modules +/bin/configlet +/bin/configlet.exe +/package-lock.json +/yarn.lock diff --git a/exercises/practice/camicia/.meta/config.json b/exercises/practice/camicia/.meta/config.json new file mode 100644 index 0000000000..4d851b07d7 --- /dev/null +++ b/exercises/practice/camicia/.meta/config.json @@ -0,0 +1,25 @@ +{ + "authors": [ + "BNAndras" + ], + "files": { + "solution": [ + "camicia.js" + ], + "test": [ + "camicia.spec.js" + ], + "example": [ + ".meta/proof.ci.js" + ] + }, + "blurb": "Simulate the card game and determine whether the match ends or enters an infinite loop.", + "source": "Beggar-My-Neighbour", + "source_url": "https://www.richardpmann.com/beggar-my-neighbour-records.html", + "custom": { + "version.tests.compatibility": "jest-27", + "flag.tests.task-per-describe": false, + "flag.tests.may-run-long": false, + "flag.tests.includes-optional": false + } +} diff --git a/exercises/practice/camicia/.meta/proof.ci.js b/exercises/practice/camicia/.meta/proof.ci.js new file mode 100644 index 0000000000..60ddbe93e2 --- /dev/null +++ b/exercises/practice/camicia/.meta/proof.ci.js @@ -0,0 +1,73 @@ +export const simulateGame = (playerA, playerB) => { + const getCardValue = (card) => { + if (card === 'J') return 1; + if (card === 'Q') return 2; + if (card === 'K') return 3; + if (card === 'A') return 4; + return 0; + }; + + const handA = playerA.map(getCardValue); + const handB = playerB.map(getCardValue); + let turn = 'A'; + let pile = []; + const seen = new Set(); + let totalTricks = 0; + let cardsPlayed = 0; + let currentDebt = 0; + + while (true) { + if (pile.length === 0) { + const round = JSON.stringify([handA, handB, turn]); + if (seen.has(round)) { + return { status: 'loop', tricks: totalTricks, cards: cardsPlayed }; + } + seen.add(round); + } + + const activeHand = turn === 'A' ? handA : handB; + const otherHand = turn === 'A' ? handB : handA; + + if (activeHand.length === 0) { + const extraTrick = pile.length === 0 ? 0 : 1; + return { + status: 'finished', + tricks: totalTricks + extraTrick, + cards: cardsPlayed, + }; + } + + const cardVal = activeHand.shift(); + pile.push(cardVal); + cardsPlayed += 1; + + // payment card so debt is either forgiven for player or assigned to opponent + if (cardVal > 0) { + currentDebt = cardVal; + turn = turn === 'A' ? 'B' : 'A'; + } else { + // time to pay up! + if (currentDebt > 0) { + currentDebt -= 1; + if (currentDebt === 0) { + // penalty paid off + otherHand.push(...pile); + pile = []; + totalTricks += 1; + currentDebt = 0; + + if (handA.length === 0 || handB.length === 0) { + return { + status: 'finished', + tricks: totalTricks, + cards: cardsPlayed, + }; + } + turn = turn === 'A' ? 'B' : 'A'; + } + } else { + turn = turn === 'A' ? 'B' : 'A'; + } + } + } +}; diff --git a/exercises/practice/camicia/.meta/tests.toml b/exercises/practice/camicia/.meta/tests.toml new file mode 100644 index 0000000000..18d3fdd99f --- /dev/null +++ b/exercises/practice/camicia/.meta/tests.toml @@ -0,0 +1,94 @@ +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. + +[0b7f737c-3ecd-4a55-b34d-e65c62a85c28] +description = "two cards, one trick" + +[27c19d75-53a5-48e5-b33b-232c3884d4f3] +description = "three cards, one trick" + +[9b02dd49-efaf-4b71-adca-a05c18a7c5b0] +description = "four cards, one trick" + +[fa3f4479-466a-4734-a001-ab79bfe27260] +description = "the ace reigns supreme" + +[07629689-f589-4f54-a6d1-8ce22776ce72] +description = "the king beats ace" + +[54d4a1c5-76fb-4d1e-8358-0e0296ac0601] +description = "the queen seduces the king" + +[c875500c-ff3d-47a4-bd1e-b60b90da80aa] +description = "the jack betrays the queen" + +[436875da-96ca-4149-be22-0b78173b8125] +description = "the 10 just wants to put on a show" + +[5be39bb6-1b34-4ce6-a1cd-0fcc142bb272] +description = "simple loop with decks of 3 cards" + +[2795dc21-0a2a-4c38-87c2-5a42e1ff15eb] +description = "the story is starting to get a bit complicated" + +[6999dfac-3fdc-41e2-b64b-38f4be228712] +description = "two tricks" + +[83dcd4f3-e089-4d54-855a-73f5346543a3] +description = "more tricks" + +[3107985a-f43e-486a-9ce8-db51547a9941] +description = "simple loop with decks of 4 cards" + +[dca32c31-11ed-49f6-b078-79ab912c1f7b] +description = "easy card combination" + +[1f8488d0-48d3-45ae-b819-59cedad0a5f4] +description = "easy card combination, inverted decks" + +[98878d35-623a-4d05-b81a-7bdc569eb88d] +description = "mirrored decks" + +[3e0ba597-ca10-484b-87a3-31a7df7d6da3] +description = "opposite decks" + +[92334ddb-aaa7-47fa-ab36-e928a8a6a67c] +description = "random decks #1" + +[30477523-9651-4860-84a3-e1ac461bb7fa] +description = "random decks #2" + +[20967de8-9e94-4e0e-9010-14bc1c157432] +description = "Kleber 1999" + +[9f2fdfe8-27f3-4323-816d-6bce98a9c6f7] +description = "Collins 2006" + +[c90b6f8d-7013-49f3-b5cb-14ea006cca1d] +description = "Mann and Wu 2007" + +[a3f1fbc5-1d0b-499a-92a5-22932dfc6bc8] +description = "Nessler 2012" + +[9cefb1ba-e6d1-4ab7-9d8f-76d8e0976d5f] +description = "Anderson 2013" + +[d37c0318-5be6-48d0-ab72-a7aaaff86179] +description = "Rucklidge 2014" + +[4305e479-ba87-432f-8a29-cd2bd75d2f05] +description = "Nessler 2021" + +[252f5cc3-b86d-4251-87ce-f920b7a6a559] +description = "Nessler 2022" + +[b9efcfa4-842f-4542-8112-8389c714d958] +description = "Casella 2024, first infinite game found" diff --git a/exercises/practice/camicia/.npmrc b/exercises/practice/camicia/.npmrc new file mode 100644 index 0000000000..d26df800bb --- /dev/null +++ b/exercises/practice/camicia/.npmrc @@ -0,0 +1 @@ +audit=false diff --git a/exercises/practice/camicia/LICENSE b/exercises/practice/camicia/LICENSE new file mode 100644 index 0000000000..90e73be03b --- /dev/null +++ b/exercises/practice/camicia/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Exercism + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/exercises/practice/camicia/babel.config.js b/exercises/practice/camicia/babel.config.js new file mode 100644 index 0000000000..a638497df1 --- /dev/null +++ b/exercises/practice/camicia/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: [['@exercism/babel-preset-javascript', { corejs: '3.40' }]], + plugins: [], +}; diff --git a/exercises/practice/camicia/camicia.js b/exercises/practice/camicia/camicia.js new file mode 100644 index 0000000000..afbb5a7d49 --- /dev/null +++ b/exercises/practice/camicia/camicia.js @@ -0,0 +1,8 @@ +// +// This is only a SKELETON file for the 'BookStore' exercise. It's been provided as a +// convenience to get you started writing code faster. +// + +export const simulateGame = (playerA, playerB) => { + throw new Error('Remove this line and implement the function'); +}; diff --git a/exercises/practice/camicia/camicia.spec.js b/exercises/practice/camicia/camicia.spec.js new file mode 100644 index 0000000000..238db65cb2 --- /dev/null +++ b/exercises/practice/camicia/camicia.spec.js @@ -0,0 +1,375 @@ +import { describe, expect, test, xtest } from '@jest/globals'; +import { simulateGame } from './camicia'; + +describe('Camicia', () => { + test('two cards, one trick', () => { + const playerA = ['2']; + const playerB = ['3']; + const expected = { status: 'finished', cards: 2, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('three cards, one trick', () => { + const playerA = ['2', '4']; + const playerB = ['3']; + const expected = { status: 'finished', cards: 3, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('four cards, one trick', () => { + const playerA = ['2', '4']; + const playerB = ['3', '5', '6']; + const expected = { status: 'finished', cards: 4, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('the ace reigns supreme', () => { + const playerA = ['2', 'A']; + const playerB = ['3', '4', '5', '6', '7']; + const expected = { status: 'finished', cards: 7, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('the king beats ace', () => { + const playerA = ['2', 'A']; + const playerB = ['3', '4', '5', '6', 'K']; + const expected = { status: 'finished', cards: 7, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('the queen seduces the king', () => { + const playerA = ['2', 'A', '7', '8', 'Q']; + const playerB = ['3', '4', '5', '6', 'K']; + const expected = { status: 'finished', cards: 10, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('the jack betrays the queen', () => { + const playerA = ['2', 'A', '7', '8', 'Q']; + const playerB = ['3', '4', '5', '6', 'K', '9', 'J']; + const expected = { status: 'finished', cards: 12, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('the 10 just wants to put on a show', () => { + const playerA = ['2', 'A', '7', '8', 'Q', '10']; + const playerB = ['3', '4', '5', '6', 'K', '9', 'J']; + const expected = { status: 'finished', cards: 13, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('simple loop with decks of 3 cards', () => { + const playerA = ['J', '2', '3']; + const playerB = ['4', 'J', '5']; + const expected = { status: 'loop', cards: 8, tricks: 3 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('the story is starting to get a bit complicated', () => { + const playerA = [ + '2', '6', '6', 'J', '4', 'K', 'Q', '10', 'K', 'J', + 'Q', '2', '3', 'K', '5', '6', 'Q', 'Q', 'A', 'A', + '6', '9', 'K', 'A', '8', 'K', '2', 'A', '9', 'A', + 'Q', '4', 'K', 'K', 'K', '3', '5', 'K', '8', 'Q', + '3', 'Q', '7', 'J', 'K', 'J', '9', 'J', '3', '3', + 'K', 'K', 'Q', 'A', 'K', '7', '10', 'A', 'Q', '7', + '10', 'J', '4', '5', 'J', '9', '10', 'Q', 'J', 'J', + 'K', '6', '10', 'J', '6', 'Q', 'J', '5', 'J', 'Q', + 'Q', '8', '3', '8', 'A', '2', '6', '9', 'K', '7', + 'J', 'K', 'K', '8', 'K', 'Q', '6', '10', 'J', '10', + 'J', 'Q', 'J', '10', '3', '8', 'K', 'A', '6', '9', + 'K', '2', 'A', 'A', '10', 'J', '6', 'A', '4', 'J', + 'A', 'J', 'J', '6', '2', 'J', '3', 'K', '2', '5', + '9', 'J', '9', '6', 'K', 'A', '5', 'Q', 'J', '2', + 'Q', 'K', 'A', '3', 'K', 'J', 'K', '2', '5', '6', + 'Q', 'J', 'Q', 'Q', 'J', '2', 'J', '9', 'Q', '7', + '7', 'A', 'Q', '7', 'Q', 'J', 'K', 'J', 'A', '7', + '7', '8', 'Q', '10', 'J', '10', 'J', 'J', '9', '2', + 'A', '2', + ]; + const playerB = [ + '7', '2', '10', 'K', '8', '2', 'J', '9', 'A', '5', + '6', 'J', 'Q', '6', 'K', '6', '5', 'A', '4', 'Q', + '7', 'J', '7', '10', '2', 'Q', '8', '2', '2', 'K', + 'J', 'A', '5', '5', 'A', '4', 'Q', '6', 'Q', 'K', + '10', '8', 'Q', '2', '10', 'J', 'A', 'Q', '8', 'Q', + 'Q', 'J', 'J', 'A', 'A', '9', '10', 'J', 'K', '4', + 'Q', '10', '10', 'J', 'K', '10', '2', 'J', '7', 'A', + 'K', 'K', 'J', 'A', 'J', '10', '8', 'K', 'A', '7', + 'Q', 'Q', 'J', '3', 'Q', '4', 'A', '3', 'A', 'Q', + 'Q', 'Q', '5', '4', 'K', 'J', '10', 'A', 'Q', 'J', + '6', 'J', 'A', '10', 'A', '5', '8', '3', 'K', '5', + '9', 'Q', '8', '7', '7', 'J', '7', 'Q', 'Q', 'Q', + 'A', '7', '8', '9', 'A', 'Q', 'A', 'K', '8', 'A', + 'A', 'J', '8', '4', '8', 'K', 'J', 'A', '10', 'Q', + '8', 'J', '8', '6', '10', 'Q', 'J', 'J', 'A', 'A', + 'J', '5', 'Q', '6', 'J', 'K', 'Q', '8', 'K', '4', + 'Q', 'Q', '6', 'J', 'K', '4', '7', 'J', 'J', '9', + '9', 'A', 'Q', 'Q', 'K', 'A', '6', '5', 'K', + ]; + const expected = { status: 'finished', cards: 361, tricks: 1 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('two tricks', () => { + const playerA = ['J']; + const playerB = ['3', 'J']; + const expected = { status: 'finished', cards: 5, tricks: 2 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('more tricks', () => { + const playerA = ['J', '2', '4']; + const playerB = ['3', 'J', 'A']; + const expected = { status: 'finished', cards: 12, tricks: 4 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + xtest('simple loop with decks of 4 cards', () => { + const playerA = ['2', '3', 'J', '6']; + const playerB = ['K', '5', 'J', '7']; + const expected = { status: 'loop', cards: 16, tricks: 4 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('easy card combination', () => { + const playerA = [ + '4', '8', '7', '5', '4', '10', '3', '9', '7', '3', + '10', '10', '6', '8', '2', '8', '5', '4', '5', '9', + '6', '5', '2', '8', '10', '9', + ]; + const playerB = [ + '6', '9', '4', '7', '2', '2', '3', '6', '7', '3', + 'A', 'A', 'A', 'A', 'K', 'K', 'K', 'K', 'Q', 'Q', + 'Q', 'Q', 'J', 'J', 'J', 'J', + ]; + const expected = { status: 'finished', cards: 40, tricks: 4 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('easy card combination, inverted decks', () => { + const playerA = [ + '3', '3', '5', '7', '3', '2', '10', '7', '6', '7', + 'A', 'A', 'A', 'A', 'K', 'K', 'K', 'K', 'Q', 'Q', + 'Q', 'Q', 'J', 'J', 'J', 'J', + ]; + const playerB = [ + '5', '10', '8', '2', '6', '7', '2', '4', '9', '2', + '6', '10', '10', '5', '4', '8', '4', '8', '6', '9', + '8', '5', '9', '3', '4', '9', + ]; + const expected = { status: 'finished', cards: 40, tricks: 4 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('mirrored decks', () => { + const playerA = [ + '2', 'A', '3', 'A', '3', 'K', '4', 'K', '2', 'Q', + '2', 'Q', '10', 'J', '5', 'J', '6', '10', '2', '9', + '10', '7', '3', '9', '6', '9', + ]; + const playerB = [ + '6', 'A', '4', 'A', '7', 'K', '4', 'K', '7', 'Q', + '7', 'Q', '5', 'J', '8', 'J', '4', '5', '8', '9', + '10', '6', '8', '3', '8', '5', + ]; + const expected = { status: 'finished', cards: 59, tricks: 4 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('opposite decks', () => { + const playerA = [ + '4', 'A', '9', 'A', '4', 'K', '9', 'K', '6', 'Q', + '8', 'Q', '8', 'J', '10', 'J', '9', '8', '4', '6', + '3', '6', '5', '2', '4', '3', + ]; + const playerB = [ + '10', '7', '3', '2', '9', '2', '7', '8', '7', '5', + 'J', '7', 'J', '10', 'Q', '10', 'Q', '3', 'K', '5', + 'K', '6', 'A', '2', 'A', '5', + ]; + const expected = { status: 'finished', cards: 151, tricks: 21 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('random decks #1', () => { + const playerA = [ + 'K', '10', '9', '8', 'J', '8', '6', '9', '7', 'A', + 'K', '5', '4', '4', 'J', '5', 'J', '4', '3', '5', + '8', '6', '7', '7', '4', '9', + ]; + const playerB = [ + '6', '3', 'K', 'A', 'Q', '10', 'A', '2', 'Q', '8', + '2', '10', '10', '2', 'Q', '3', 'K', '9', '7', 'A', + '3', 'Q', '5', 'J', '2', '6', + ]; + const expected = { status: 'finished', cards: 542, tricks: 76 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('random decks #2', () => { + const playerA = [ + '8', 'A', '4', '8', '5', 'Q', 'J', '2', '6', '2', + '9', '7', 'K', 'A', '8', '10', 'K', '8', '10', '9', + 'K', '6', '7', '3', 'K', '9', + ]; + const playerB = [ + '10', '5', '2', '6', 'Q', 'J', 'A', '9', '5', '5', + '3', '7', '3', 'J', 'A', '2', 'Q', '3', 'J', 'Q', + '4', '10', '4', '7', '4', '6', + ]; + const expected = { status: 'finished', cards: 327, tricks: 42 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Kleber 1999', () => { + const playerA = [ + '4', '8', '9', 'J', 'Q', '8', '5', '5', 'K', '2', + 'A', '9', '8', '5', '10', 'A', '4', 'J', '3', 'K', + '6', '9', '2', 'Q', 'K', '7', + ]; + const playerB = [ + '10', 'J', '3', '2', '4', '10', '4', '7', '5', '3', + '6', '6', '7', 'A', 'J', 'Q', 'A', '7', '2', '10', + '3', 'K', '9', '6', '8', 'Q', + ]; + const expected = { status: 'finished', cards: 5790, tricks: 805 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Collins 2006', () => { + const playerA = [ + 'A', '8', 'Q', 'K', '9', '10', '3', '7', '4', '2', + 'Q', '3', '2', '10', '9', 'K', 'A', '8', '7', '7', + '4', '5', 'J', '9', '2', '10', + ]; + const playerB = [ + '4', 'J', 'A', 'K', '8', '5', '6', '6', 'A', '6', + '5', 'Q', '4', '6', '10', '8', 'J', '2', '5', '7', + 'Q', 'J', '3', '3', 'K', '9', + ]; + const expected = { status: 'finished', cards: 6913, tricks: 960 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Mann and Wu 2007', () => { + const playerA = [ + 'K', '2', 'K', 'K', '3', '3', '6', '10', 'K', '6', + 'A', '2', '5', '5', '7', '9', 'J', 'A', 'A', '3', + '4', 'Q', '4', '8', 'J', '6', + ]; + const playerB = [ + '4', '5', '2', 'Q', '7', '9', '9', 'Q', '7', 'J', + '9', '8', '10', '3', '10', 'J', '4', '10', '8', '6', + '8', '7', 'A', 'Q', '5', '2', + ]; + const expected = { status: 'finished', cards: 7157, tricks: 1007 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Nessler 2012', () => { + const playerA = [ + '10', '3', '6', '7', 'Q', '2', '9', '8', '2', '8', + '4', 'A', '10', '6', 'K', '2', '10', 'A', '5', 'A', + '2', '4', 'Q', 'J', 'K', '4', + ]; + const playerB = [ + '10', 'Q', '4', '6', 'J', '9', '3', 'J', '9', '3', + '3', 'Q', 'K', '5', '9', '5', 'K', '6', '5', '7', + '8', 'J', 'A', '7', '8', '7', + ]; + const expected = { status: 'finished', cards: 7207, tricks: 1015 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Anderson 2013', () => { + const playerA = [ + '6', '7', 'A', '3', 'Q', '3', '5', 'J', '3', '2', + 'J', '7', '4', '5', 'Q', '10', '5', 'A', 'J', '2', + 'K', '8', '9', '9', 'K', '3', + ]; + const playerB = [ + '4', 'J', '6', '9', '8', '5', '10', '7', '9', 'Q', + '2', '7', '10', '8', '4', '10', 'A', '6', '4', 'A', + '6', '8', 'Q', 'K', 'K', '2', + ]; + const expected = { status: 'finished', cards: 7225, tricks: 1016 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Rucklidge 2014', () => { + const playerA = [ + '8', 'J', '2', '9', '4', '4', '5', '8', 'Q', '3', + '9', '3', '6', '2', '8', 'A', 'A', 'A', '9', '4', + '7', '2', '5', 'Q', 'Q', '3', + ]; + const playerB = [ + 'K', '7', '10', '6', '3', 'J', 'A', '7', '6', '5', + '5', '8', '10', '9', '10', '4', '2', '7', 'K', 'Q', + '10', 'K', '6', 'J', 'J', 'K', + ]; + const expected = { status: 'finished', cards: 7959, tricks: 1122 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Nessler 2021', () => { + const playerA = [ + '7', '2', '3', '4', 'K', '9', '6', '10', 'A', '8', + '9', 'Q', '7', 'A', '4', '8', 'J', 'J', 'A', '4', + '3', '2', '5', '6', '6', 'J', + ]; + const playerB = [ + '3', '10', '8', '9', '8', 'K', 'K', '2', '5', '5', + '7', '6', '4', '3', '5', '7', 'A', '9', 'J', 'K', + '2', 'Q', '10', 'Q', '10', 'Q', + ]; + const expected = { status: 'finished', cards: 7972, tricks: 1106 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Nessler 2022', () => { + const playerA = [ + '2', '10', '10', 'A', 'J', '3', '8', 'Q', '2', '5', + '5', '5', '9', '2', '4', '3', '10', 'Q', 'A', 'K', + 'Q', 'J', 'J', '9', 'Q', 'K', + ]; + const playerB = [ + '10', '7', '6', '3', '6', 'A', '8', '9', '4', '3', + 'K', 'J', '6', 'K', '4', '9', '7', '8', '5', '7', + '8', '2', 'A', '7', '4', '6', + ]; + const expected = { status: 'finished', cards: 8344, tricks: 1164 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); + + // prettier-ignore + xtest('Casella 2024, first infinite game found', () => { + const playerA = [ + '2', '8', '4', 'K', '5', '2', '3', 'Q', '6', 'K', + 'Q', 'A', 'J', '3', '5', '9', '8', '3', 'A', 'A', + 'J', '4', '4', 'J', '7', '5', + ]; + const playerB = [ + '7', '7', '8', '6', '10', '10', '6', '10', '7', '2', + 'Q', '6', '3', '2', '4', 'K', 'Q', '10', 'J', '5', + '9', '8', '9', '9', 'K', 'A', + ]; + const expected = { status: 'loop', cards: 474, tricks: 66 }; + expect(simulateGame(playerA, playerB)).toEqual(expected); + }); +}); diff --git a/exercises/practice/camicia/eslint.config.mjs b/exercises/practice/camicia/eslint.config.mjs new file mode 100644 index 0000000000..ca517111ed --- /dev/null +++ b/exercises/practice/camicia/eslint.config.mjs @@ -0,0 +1,45 @@ +// @ts-check + +import config from '@exercism/eslint-config-javascript'; +import maintainersConfig from '@exercism/eslint-config-javascript/maintainers.mjs'; + +import globals from 'globals'; + +export default [ + ...config, + ...maintainersConfig, + { + files: maintainersConfig[1].files, + rules: { + 'jest/expect-expect': ['warn', { assertFunctionNames: ['expect*'] }], + }, + }, + { + files: ['scripts/**/*.mjs'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + // <> + { + ignores: [ + // # Protected or generated + '/.appends/**/*', + '/.github/**/*', + '/.vscode/**/*', + + // # Binaries + '/bin/*', + + // # Configuration + '/config', + '/babel.config.js', + + // # Typings + '/exercises/**/global.d.ts', + '/exercises/**/env.d.ts', + ], + }, +]; diff --git a/exercises/practice/camicia/jest.config.js b/exercises/practice/camicia/jest.config.js new file mode 100644 index 0000000000..ec8e908127 --- /dev/null +++ b/exercises/practice/camicia/jest.config.js @@ -0,0 +1,22 @@ +module.exports = { + verbose: true, + projects: [''], + testMatch: [ + '**/__tests__/**/*.[jt]s?(x)', + '**/test/**/*.[jt]s?(x)', + '**/?(*.)+(spec|test).[jt]s?(x)', + ], + testPathIgnorePatterns: [ + '/(?:production_)?node_modules/', + '.d.ts$', + '/test/fixtures', + '/test/helpers', + '__mocks__', + ], + transform: { + '^.+\\.[jt]sx?$': 'babel-jest', + }, + moduleNameMapper: { + '^(\\.\\/.+)\\.js$': '$1', + }, +}; diff --git a/exercises/practice/camicia/package.json b/exercises/practice/camicia/package.json new file mode 100644 index 0000000000..68fe60c323 --- /dev/null +++ b/exercises/practice/camicia/package.json @@ -0,0 +1,34 @@ +{ + "name": "@exercism/javascript-camicia", + "description": "Exercism exercises in Javascript.", + "author": "Katrina Owen", + "private": true, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/exercism/javascript", + "directory": "exercises/practice/camicia" + }, + "devDependencies": { + "@exercism/babel-preset-javascript": "^0.5.1", + "@exercism/eslint-config-javascript": "^0.8.1", + "@jest/globals": "^29.7.0", + "@types/node": "^24.3.0", + "@types/shelljs": "^0.8.17", + "babel-jest": "^29.7.0", + "core-js": "~3.42.0", + "diff": "^8.0.2", + "eslint": "^9.28.0", + "expect": "^29.7.0", + "globals": "^16.3.0", + "jest": "^29.7.0" + }, + "dependencies": {}, + "scripts": { + "lint": "corepack pnpm eslint .", + "test": "corepack pnpm jest", + "watch": "corepack pnpm jest --watch", + "format": "corepack pnpm prettier -w ." + }, + "packageManager": "pnpm@9.15.2" +} From ffcc478ece72fa559a41dc2489044b4300eefdfc Mon Sep 17 00:00:00 2001 From: Ryan Hartlage <2488333+ryanplusplus@users.noreply.github.com> Date: Sun, 25 Jan 2026 00:19:09 -0500 Subject: [PATCH 30/61] Use correct exercise name in the skeleton comment for Camicia (#2812) --- exercises/practice/camicia/camicia.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/practice/camicia/camicia.js b/exercises/practice/camicia/camicia.js index afbb5a7d49..7ff81985ee 100644 --- a/exercises/practice/camicia/camicia.js +++ b/exercises/practice/camicia/camicia.js @@ -1,5 +1,5 @@ // -// This is only a SKELETON file for the 'BookStore' exercise. It's been provided as a +// This is only a SKELETON file for the 'Camicia' exercise. It's been provided as a // convenience to get you started writing code faster. // From 75e094e547a8eb44ba3e69ed6d0624d29e659241 Mon Sep 17 00:00:00 2001 From: Stephen Spinks Date: Sun, 25 Jan 2026 05:19:33 +0000 Subject: [PATCH 31/61] Add a link to an arbitrary precision explanation (#2810) --- concepts/numbers/introduction.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/concepts/numbers/introduction.md b/concepts/numbers/introduction.md index 4327074891..6cef5b1aab 100644 --- a/concepts/numbers/introduction.md +++ b/concepts/numbers/introduction.md @@ -7,7 +7,7 @@ Many programming languages have specific numeric types to represent different ty - `bigint`: a numeric data type that can represent _integers_ in the arbitrary precision format. Examples are `-12n`, `0n`, `4n`, and `9007199254740991n`. -If you require arbitrary precision or work with extremely large numbers, use the `bigint` type. +If you require [arbitrary precision][ref-arbitrary-precision] or work with extremely large numbers, use the `bigint` type. Otherwise, the `number` type is likely the better option. ## Rounding @@ -20,3 +20,4 @@ Math.ceil(234.34); // => 235 ``` [ref-math-object-rounding]: https://javascript.info/number#rounding +[ref-arbitrary-precision]: https://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic From b4368f5b6851da1df9513b6e9bcb877ee18376a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Mon, 26 Jan 2026 12:41:44 -0800 Subject: [PATCH 32/61] Add `line-up` (#2813) * Add `line-up` * Minor cleanup to stub * [CI] Format code --------- Co-authored-by: github-actions[bot] --- config.json | 14 +++ .../practice/line-up/.docs/instructions.md | 19 +++ .../practice/line-up/.docs/introduction.md | 7 ++ exercises/practice/line-up/.gitignore | 5 + exercises/practice/line-up/.meta/config.json | 19 +++ exercises/practice/line-up/.meta/proof.ci.js | 25 ++++ exercises/practice/line-up/.meta/tests.toml | 67 ++++++++++ exercises/practice/line-up/.npmrc | 1 + exercises/practice/line-up/LICENSE | 21 ++++ exercises/practice/line-up/babel.config.js | 4 + exercises/practice/line-up/eslint.config.mjs | 45 +++++++ exercises/practice/line-up/jest.config.js | 22 ++++ exercises/practice/line-up/line-up.js | 8 ++ exercises/practice/line-up/line-up.spec.js | 118 ++++++++++++++++++ exercises/practice/line-up/package.json | 34 +++++ 15 files changed, 409 insertions(+) create mode 100644 exercises/practice/line-up/.docs/instructions.md create mode 100644 exercises/practice/line-up/.docs/introduction.md create mode 100644 exercises/practice/line-up/.gitignore create mode 100644 exercises/practice/line-up/.meta/config.json create mode 100644 exercises/practice/line-up/.meta/proof.ci.js create mode 100644 exercises/practice/line-up/.meta/tests.toml create mode 100644 exercises/practice/line-up/.npmrc create mode 100644 exercises/practice/line-up/LICENSE create mode 100644 exercises/practice/line-up/babel.config.js create mode 100644 exercises/practice/line-up/eslint.config.mjs create mode 100644 exercises/practice/line-up/jest.config.js create mode 100644 exercises/practice/line-up/line-up.js create mode 100644 exercises/practice/line-up/line-up.spec.js create mode 100644 exercises/practice/line-up/package.json diff --git a/config.json b/config.json index 850b677699..3f4ad36bfb 100644 --- a/config.json +++ b/config.json @@ -528,6 +528,20 @@ "time" ] }, + { + "slug": "line-up", + "name": "Line Up", + "uuid": "034b31ef-331a-419d-bb62-465c05b533d8", + "practices": [ + "numbers", + "strings" + ], + "prerequisites": [ + "numbers", + "strings" + ], + "difficulty": 1 + }, { "slug": "rna-transcription", "name": "RNA Transcription", diff --git a/exercises/practice/line-up/.docs/instructions.md b/exercises/practice/line-up/.docs/instructions.md new file mode 100644 index 0000000000..9e686ecbff --- /dev/null +++ b/exercises/practice/line-up/.docs/instructions.md @@ -0,0 +1,19 @@ +# Instructions + +Given a name and a number, your task is to produce a sentence using that name and that number as an [ordinal numeral][ordinal-numeral]. +Yaʻqūb expects to use numbers from 1 up to 999. + +Rules: + +- Numbers ending in 1 (unless ending in 11) → `"st"` +- Numbers ending in 2 (unless ending in 12) → `"nd"` +- Numbers ending in 3 (unless ending in 13) → `"rd"` +- All other numbers → `"th"` + +Examples: + +- `"Mary", 1` → `"Mary, you are the 1st customer we serve today. Thank you!"` +- `"John", 12` → `"John, you are the 12th customer we serve today. Thank you!"` +- `"Dahir", 162` → `"Dahir, you are the 162nd customer we serve today. Thank you!"` + +[ordinal-numeral]: https://en.wikipedia.org/wiki/Ordinal_numeral diff --git a/exercises/practice/line-up/.docs/introduction.md b/exercises/practice/line-up/.docs/introduction.md new file mode 100644 index 0000000000..ea07268ae3 --- /dev/null +++ b/exercises/practice/line-up/.docs/introduction.md @@ -0,0 +1,7 @@ +# Introduction + +Your friend Yaʻqūb works the counter at a deli in town, slicing, weighing, and wrapping orders for a line of hungry customers that gets longer every day. +Waiting customers are starting to lose track of who is next, so he wants numbered tickets they can use to track the order in which they arrive. + +To make the customers feel special, he does not want the ticket to have only a number on it. +They shall get a proper English sentence with their name and number on it. diff --git a/exercises/practice/line-up/.gitignore b/exercises/practice/line-up/.gitignore new file mode 100644 index 0000000000..0c88ff6ec3 --- /dev/null +++ b/exercises/practice/line-up/.gitignore @@ -0,0 +1,5 @@ +/node_modules +/bin/configlet +/bin/configlet.exe +/package-lock.json +/yarn.lock diff --git a/exercises/practice/line-up/.meta/config.json b/exercises/practice/line-up/.meta/config.json new file mode 100644 index 0000000000..b555adb6e6 --- /dev/null +++ b/exercises/practice/line-up/.meta/config.json @@ -0,0 +1,19 @@ +{ + "authors": [ + "BNAndras" + ], + "files": { + "solution": [ + "line-up.js" + ], + "test": [ + "line-up.spec.js" + ], + "example": [ + ".meta/proof.ci.js" + ] + }, + "blurb": "Help lining up customers at Yaʻqūb's Deli.", + "source": "mk-mxp, based on previous work from Exercism contributors codedge and neenjaw", + "source_url": "https://forum.exercism.org/t/new-exercise-ordinal-numbers/19147" +} diff --git a/exercises/practice/line-up/.meta/proof.ci.js b/exercises/practice/line-up/.meta/proof.ci.js new file mode 100644 index 0000000000..64ba5c1919 --- /dev/null +++ b/exercises/practice/line-up/.meta/proof.ci.js @@ -0,0 +1,25 @@ +const getSuffix = (number) => { + const lastTwoDigits = number % 100; + const lastDigit = number % 10; + + if (lastTwoDigits >= 11 && lastTwoDigits <= 13) { + return 'th'; + } + + if (lastDigit === 1) { + return 'st'; + } + + if (lastDigit === 2) { + return 'nd'; + } + + if (lastDigit === 3) { + return 'rd'; + } + + return 'th'; +}; + +export const format = (name, number) => + `${name}, you are the ${number}${getSuffix(number)} customer we serve today. Thank you!`; diff --git a/exercises/practice/line-up/.meta/tests.toml b/exercises/practice/line-up/.meta/tests.toml new file mode 100644 index 0000000000..36fdf1d0cd --- /dev/null +++ b/exercises/practice/line-up/.meta/tests.toml @@ -0,0 +1,67 @@ +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. + +[7760d1b8-4864-4db4-953b-0fa7c047dbc0] +description = "format smallest non-exceptional ordinal numeral 4" + +[e8b7c715-6baa-4f7b-8fb3-2fa48044ab7a] +description = "format greatest single digit non-exceptional ordinal numeral 9" + +[f370aae9-7ae7-4247-90ce-e8ff8c6934df] +description = "format non-exceptional ordinal numeral 5" + +[37f10dea-42a2-49de-bb92-0b690b677908] +description = "format non-exceptional ordinal numeral 6" + +[d8dfb9a2-3a1f-4fee-9dae-01af3600054e] +description = "format non-exceptional ordinal numeral 7" + +[505ec372-1803-42b1-9377-6934890fd055] +description = "format non-exceptional ordinal numeral 8" + +[8267072d-be1f-4f70-b34a-76b7557a47b9] +description = "format exceptional ordinal numeral 1" + +[4d8753cb-0364-4b29-84b8-4374a4fa2e3f] +description = "format exceptional ordinal numeral 2" + +[8d44c223-3a7e-4f48-a0ca-78e67bf98aa7] +description = "format exceptional ordinal numeral 3" + +[6c4f6c88-b306-4f40-bc78-97cdd583c21a] +description = "format smallest two digit non-exceptional ordinal numeral 10" + +[e257a43f-d2b1-457a-97df-25f0923fc62a] +description = "format non-exceptional ordinal numeral 11" + +[bb1db695-4d64-457f-81b8-4f5a2107e3f4] +description = "format non-exceptional ordinal numeral 12" + +[60a3187c-9403-4835-97de-4f10ebfd63e2] +description = "format non-exceptional ordinal numeral 13" + +[2bdcebc5-c029-4874-b6cc-e9bec80d603a] +description = "format exceptional ordinal numeral 21" + +[74ee2317-0295-49d2-baf0-d56bcefa14e3] +description = "format exceptional ordinal numeral 62" + +[b37c332d-7f68-40e3-8503-e43cbd67a0c4] +description = "format exceptional ordinal numeral 100" + +[0375f250-ce92-4195-9555-00e28ccc4d99] +description = "format exceptional ordinal numeral 101" + +[0d8a4974-9a8a-45a4-aca7-a9fb473c9836] +description = "format non-exceptional ordinal numeral 112" + +[06b62efe-199e-4ce7-970d-4bf73945713f] +description = "format exceptional ordinal numeral 123" diff --git a/exercises/practice/line-up/.npmrc b/exercises/practice/line-up/.npmrc new file mode 100644 index 0000000000..d26df800bb --- /dev/null +++ b/exercises/practice/line-up/.npmrc @@ -0,0 +1 @@ +audit=false diff --git a/exercises/practice/line-up/LICENSE b/exercises/practice/line-up/LICENSE new file mode 100644 index 0000000000..90e73be03b --- /dev/null +++ b/exercises/practice/line-up/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Exercism + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/exercises/practice/line-up/babel.config.js b/exercises/practice/line-up/babel.config.js new file mode 100644 index 0000000000..a638497df1 --- /dev/null +++ b/exercises/practice/line-up/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: [['@exercism/babel-preset-javascript', { corejs: '3.40' }]], + plugins: [], +}; diff --git a/exercises/practice/line-up/eslint.config.mjs b/exercises/practice/line-up/eslint.config.mjs new file mode 100644 index 0000000000..ca517111ed --- /dev/null +++ b/exercises/practice/line-up/eslint.config.mjs @@ -0,0 +1,45 @@ +// @ts-check + +import config from '@exercism/eslint-config-javascript'; +import maintainersConfig from '@exercism/eslint-config-javascript/maintainers.mjs'; + +import globals from 'globals'; + +export default [ + ...config, + ...maintainersConfig, + { + files: maintainersConfig[1].files, + rules: { + 'jest/expect-expect': ['warn', { assertFunctionNames: ['expect*'] }], + }, + }, + { + files: ['scripts/**/*.mjs'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + // <> + { + ignores: [ + // # Protected or generated + '/.appends/**/*', + '/.github/**/*', + '/.vscode/**/*', + + // # Binaries + '/bin/*', + + // # Configuration + '/config', + '/babel.config.js', + + // # Typings + '/exercises/**/global.d.ts', + '/exercises/**/env.d.ts', + ], + }, +]; diff --git a/exercises/practice/line-up/jest.config.js b/exercises/practice/line-up/jest.config.js new file mode 100644 index 0000000000..ec8e908127 --- /dev/null +++ b/exercises/practice/line-up/jest.config.js @@ -0,0 +1,22 @@ +module.exports = { + verbose: true, + projects: [''], + testMatch: [ + '**/__tests__/**/*.[jt]s?(x)', + '**/test/**/*.[jt]s?(x)', + '**/?(*.)+(spec|test).[jt]s?(x)', + ], + testPathIgnorePatterns: [ + '/(?:production_)?node_modules/', + '.d.ts$', + '/test/fixtures', + '/test/helpers', + '__mocks__', + ], + transform: { + '^.+\\.[jt]sx?$': 'babel-jest', + }, + moduleNameMapper: { + '^(\\.\\/.+)\\.js$': '$1', + }, +}; diff --git a/exercises/practice/line-up/line-up.js b/exercises/practice/line-up/line-up.js new file mode 100644 index 0000000000..d052cd5eb9 --- /dev/null +++ b/exercises/practice/line-up/line-up.js @@ -0,0 +1,8 @@ +// +// This is only a SKELETON file for the 'Line Up' exercise. It's been provided as a +// convenience to get you started writing code faster. +// + +export const format = () => { + throw new Error('Remove this line and implement the function'); +}; diff --git a/exercises/practice/line-up/line-up.spec.js b/exercises/practice/line-up/line-up.spec.js new file mode 100644 index 0000000000..62877284de --- /dev/null +++ b/exercises/practice/line-up/line-up.spec.js @@ -0,0 +1,118 @@ +import { describe, expect, test, xtest } from '@jest/globals'; +import { format } from './line-up'; + +describe('Line Up', () => { + test('format smallest non-exceptional ordinal numeral 4', () => { + expect(format('Gianna', 4)).toBe( + 'Gianna, you are the 4th customer we serve today. Thank you!', + ); + }); + + xtest('format greatest single digit non-exceptional ordinal numeral 9', () => { + expect(format('Maarten', 9)).toBe( + 'Maarten, you are the 9th customer we serve today. Thank you!', + ); + }); + + xtest('format non-exceptional ordinal numeral 5', () => { + expect(format('Petronila', 5)).toBe( + 'Petronila, you are the 5th customer we serve today. Thank you!', + ); + }); + + xtest('format non-exceptional ordinal numeral 6', () => { + expect(format('Attakullakulla', 6)).toBe( + 'Attakullakulla, you are the 6th customer we serve today. Thank you!', + ); + }); + + xtest('format non-exceptional ordinal numeral 7', () => { + expect(format('Kate', 7)).toBe( + 'Kate, you are the 7th customer we serve today. Thank you!', + ); + }); + + xtest('format non-exceptional ordinal numeral 8', () => { + expect(format('Maximiliano', 8)).toBe( + 'Maximiliano, you are the 8th customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 1', () => { + expect(format('Mary', 1)).toBe( + 'Mary, you are the 1st customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 2', () => { + expect(format('Haruto', 2)).toBe( + 'Haruto, you are the 2nd customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 3', () => { + expect(format('Henriette', 3)).toBe( + 'Henriette, you are the 3rd customer we serve today. Thank you!', + ); + }); + + xtest('format smallest two digit non-exceptional ordinal numeral 10', () => { + expect(format('Alvarez', 10)).toBe( + 'Alvarez, you are the 10th customer we serve today. Thank you!', + ); + }); + + xtest('format non-exceptional ordinal numeral 11', () => { + expect(format('Jacqueline', 11)).toBe( + 'Jacqueline, you are the 11th customer we serve today. Thank you!', + ); + }); + + xtest('format non-exceptional ordinal numeral 12', () => { + expect(format('Juan', 12)).toBe( + 'Juan, you are the 12th customer we serve today. Thank you!', + ); + }); + + xtest('format non-exceptional ordinal numeral 13', () => { + expect(format('Patricia', 13)).toBe( + 'Patricia, you are the 13th customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 21', () => { + expect(format('Washi', 21)).toBe( + 'Washi, you are the 21st customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 62', () => { + expect(format('Nayra', 62)).toBe( + 'Nayra, you are the 62nd customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 100', () => { + expect(format('John', 100)).toBe( + 'John, you are the 100th customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 101', () => { + expect(format('Zeinab', 101)).toBe( + 'Zeinab, you are the 101st customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 112', () => { + expect(format('Knud', 112)).toBe( + 'Knud, you are the 112th customer we serve today. Thank you!', + ); + }); + + xtest('format exceptional ordinal numeral 123', () => { + expect(format('Yma', 123)).toBe( + 'Yma, you are the 123rd customer we serve today. Thank you!', + ); + }); +}); diff --git a/exercises/practice/line-up/package.json b/exercises/practice/line-up/package.json new file mode 100644 index 0000000000..2d55c3710b --- /dev/null +++ b/exercises/practice/line-up/package.json @@ -0,0 +1,34 @@ +{ + "name": "@exercism/javascript-line-up", + "description": "Exercism exercises in Javascript.", + "author": "Katrina Owen", + "private": true, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/exercism/javascript", + "directory": "exercises/practice/line-up" + }, + "devDependencies": { + "@exercism/babel-preset-javascript": "^0.5.1", + "@exercism/eslint-config-javascript": "^0.8.1", + "@jest/globals": "^29.7.0", + "@types/node": "^24.3.0", + "@types/shelljs": "^0.8.17", + "babel-jest": "^29.7.0", + "core-js": "~3.42.0", + "diff": "^8.0.2", + "eslint": "^9.28.0", + "expect": "^29.7.0", + "globals": "^16.3.0", + "jest": "^29.7.0" + }, + "dependencies": {}, + "scripts": { + "lint": "corepack pnpm eslint .", + "test": "corepack pnpm jest", + "watch": "corepack pnpm jest --watch", + "format": "corepack pnpm prettier -w ." + }, + "packageManager": "pnpm@9.15.2" +} From 34ba7f272dd37c6e2c60323c8f70fd7ed5fb1d10 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 14:28:07 +0400 Subject: [PATCH 33/61] Bump actions/setup-node from 6.1.0 to 6.2.0 (#2816) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/395ad3262231945c25e8478fd5baf05154b1d79f...6044e13b5dc448c55e2357c09f80417699197238) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 2 +- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/pr.ci.js.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index 252ee6f62d..840c00a1c3 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 with: node-version: 22.x cache: 'pnpm' diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index bf612d372c..1878d6ca13 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -18,7 +18,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 with: node-version: 22.x cache: 'pnpm' @@ -42,7 +42,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 87c3f0fa07..0ab11348fd 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -28,7 +28,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 with: node-version: 22.x cache: 'pnpm' @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' From 391bb53b299c811ebc02740c6cd38a9d7dacbd0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 14:28:38 +0400 Subject: [PATCH 34/61] Bump actions/checkout from 6.0.1 to 6.0.2 (#2815) Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/8e8c483db84b4bee98b60c0593521ed34d9990e8...de0fac2e4500dabe0009e67214ff5f5447ce83dd) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/codeql.yml | 2 +- .github/workflows/pr.ci.js.yml | 4 ++-- .github/workflows/verify-code-formatting.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 1878d6ca13..0a06164ee1 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm @@ -37,7 +37,7 @@ jobs: node-version: [22.x] steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6bf823d712..c4188e83df 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 0ab11348fd..35219e600b 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} @@ -48,7 +48,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} diff --git a/.github/workflows/verify-code-formatting.yml b/.github/workflows/verify-code-formatting.yml index b5dca55cb5..269101550d 100644 --- a/.github/workflows/verify-code-formatting.yml +++ b/.github/workflows/verify-code-formatting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: 'Checkout code' - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - name: 'Verify formatting of all files' run: ./bin/check-formatting.sh From 20b2d240e0d8383e598ef92a7b75ba6e194121c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Sun, 15 Feb 2026 09:46:44 -0800 Subject: [PATCH 35/61] Sync `perfect-numbers` tests (#2821) --- .../practice/perfect-numbers/.meta/tests.toml | 42 ++++++++++++------- .../perfect-numbers/perfect-numbers.spec.js | 4 ++ 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/exercises/practice/perfect-numbers/.meta/tests.toml b/exercises/practice/perfect-numbers/.meta/tests.toml index 3232bb44e0..81d484081c 100644 --- a/exercises/practice/perfect-numbers/.meta/tests.toml +++ b/exercises/practice/perfect-numbers/.meta/tests.toml @@ -1,42 +1,52 @@ -# This is an auto-generated file. Regular comments will be removed when this -# file is regenerated. Regenerating will not touch any manually added keys, -# so comments can be added in a "comment" key. +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. [163e8e86-7bfd-4ee2-bd68-d083dc3381a3] -description = "Smallest perfect number is classified correctly" +description = "Perfect numbers -> Smallest perfect number is classified correctly" [169a7854-0431-4ae0-9815-c3b6d967436d] -description = "Medium perfect number is classified correctly" +description = "Perfect numbers -> Medium perfect number is classified correctly" [ee3627c4-7b36-4245-ba7c-8727d585f402] -description = "Large perfect number is classified correctly" +description = "Perfect numbers -> Large perfect number is classified correctly" [80ef7cf8-9ea8-49b9-8b2d-d9cb3db3ed7e] -description = "Smallest abundant number is classified correctly" +description = "Abundant numbers -> Smallest abundant number is classified correctly" [3e300e0d-1a12-4f11-8c48-d1027165ab60] -description = "Medium abundant number is classified correctly" +description = "Abundant numbers -> Medium abundant number is classified correctly" [ec7792e6-8786-449c-b005-ce6dd89a772b] -description = "Large abundant number is classified correctly" +description = "Abundant numbers -> Large abundant number is classified correctly" + +[05f15b93-849c-45e9-9c7d-1ea131ef7d10] +description = "Abundant numbers -> Perfect square abundant number is classified correctly" [e610fdc7-2b6e-43c3-a51c-b70fb37413ba] -description = "Smallest prime deficient number is classified correctly" +description = "Deficient numbers -> Smallest prime deficient number is classified correctly" [0beb7f66-753a-443f-8075-ad7fbd9018f3] -description = "Smallest non-prime deficient number is classified correctly" +description = "Deficient numbers -> Smallest non-prime deficient number is classified correctly" [1c802e45-b4c6-4962-93d7-1cad245821ef] -description = "Medium deficient number is classified correctly" +description = "Deficient numbers -> Medium deficient number is classified correctly" [47dd569f-9e5a-4a11-9a47-a4e91c8c28aa] -description = "Large deficient number is classified correctly" +description = "Deficient numbers -> Large deficient number is classified correctly" [a696dec8-6147-4d68-afad-d38de5476a56] -description = "Edge case (no factors other than itself) is classified correctly" +description = "Deficient numbers -> Edge case (no factors other than itself) is classified correctly" [72445cee-660c-4d75-8506-6c40089dc302] -description = "Zero is rejected (not a natural number)" +description = "Invalid inputs -> Zero is rejected (as it is not a positive integer)" [2d72ce2c-6802-49ac-8ece-c790ba3dae13] -description = "Negative integer is rejected (not a natural number)" +description = "Invalid inputs -> Negative integer is rejected (as it is not a positive integer)" diff --git a/exercises/practice/perfect-numbers/perfect-numbers.spec.js b/exercises/practice/perfect-numbers/perfect-numbers.spec.js index 3889240c8f..e89a142014 100644 --- a/exercises/practice/perfect-numbers/perfect-numbers.spec.js +++ b/exercises/practice/perfect-numbers/perfect-numbers.spec.js @@ -42,6 +42,10 @@ describe('Exercise - Perfect Numbers', () => { xtest('Large abundant number is classified correctly', () => { expect(classify(33550335)).toEqual('abundant'); }); + + xtest('Perfect square abundant number is classified correctly', () => { + expect(classify(196)).toEqual('abundant'); + }); }); describe('Deficient Numbers', () => { From 9ec28c139815a21e0f4fa73a3048d6c99da4f909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Wed, 18 Feb 2026 00:54:04 -0800 Subject: [PATCH 36/61] Add `prism` (#2822) --- config.json | 15 + .../practice/prism/.docs/instructions.md | 36 +++ .../practice/prism/.docs/introduction.md | 5 + exercises/practice/prism/.gitignore | 5 + exercises/practice/prism/.meta/config.json | 25 ++ exercises/practice/prism/.meta/proof.ci.js | 41 +++ exercises/practice/prism/.meta/tests.toml | 52 ++++ exercises/practice/prism/.npmrc | 1 + exercises/practice/prism/LICENSE | 21 ++ exercises/practice/prism/babel.config.js | 4 + exercises/practice/prism/eslint.config.mjs | 45 +++ exercises/practice/prism/jest.config.js | 22 ++ exercises/practice/prism/package.json | 34 +++ exercises/practice/prism/prism.js | 8 + exercises/practice/prism/prism.spec.js | 270 ++++++++++++++++++ 15 files changed, 584 insertions(+) create mode 100644 exercises/practice/prism/.docs/instructions.md create mode 100644 exercises/practice/prism/.docs/introduction.md create mode 100644 exercises/practice/prism/.gitignore create mode 100644 exercises/practice/prism/.meta/config.json create mode 100644 exercises/practice/prism/.meta/proof.ci.js create mode 100644 exercises/practice/prism/.meta/tests.toml create mode 100644 exercises/practice/prism/.npmrc create mode 100644 exercises/practice/prism/LICENSE create mode 100644 exercises/practice/prism/babel.config.js create mode 100644 exercises/practice/prism/eslint.config.mjs create mode 100644 exercises/practice/prism/jest.config.js create mode 100644 exercises/practice/prism/package.json create mode 100644 exercises/practice/prism/prism.js create mode 100644 exercises/practice/prism/prism.spec.js diff --git a/config.json b/config.json index 3f4ad36bfb..90c064066b 100644 --- a/config.json +++ b/config.json @@ -2596,6 +2596,21 @@ "logic" ] }, + { + "slug": "prism", + "name": "Prism", + "uuid": "ef463b82-bf5c-4761-a821-29eeabee3050", + "practices": [], + "prerequisites": [ + "arithmetic-operators", + "arrays", + "array-loops", + "comparison", + "conditionals", + "for-loops" + ], + "difficulty": 5 + }, { "slug": "satellite", "name": "Satellite", diff --git a/exercises/practice/prism/.docs/instructions.md b/exercises/practice/prism/.docs/instructions.md new file mode 100644 index 0000000000..a68c80defd --- /dev/null +++ b/exercises/practice/prism/.docs/instructions.md @@ -0,0 +1,36 @@ +# Instructions + +Before activating the laser array, you must predict the exact order in which crystals will be hit, identified by their sample IDs. + +## Example Test Case + +Consider this crystal array configuration: + +```json +{ + "start": { "x": 0, "y": 0, "angle": 0 }, + "prisms": [ + { "id": 3, "x": 30, "y": 10, "angle": 45 }, + { "id": 1, "x": 10, "y": 10, "angle": -90 }, + { "id": 2, "x": 10, "y": 0, "angle": 90 }, + { "id": 4, "x": 20, "y": 0, "angle": 0 } + ] +} +``` + +## What's Happening + +The laser starts at the origin `(0, 0)` and fires horizontally to the right at angle 0°. +Here's the step-by-step beam path: + +**Step 1**: The beam travels along the x-axis (y = 0) and first encounters **Crystal #2** at position `(10, 0)`. +This crystal has a refraction angle of 90°, which means it bends the beam perpendicular to its current path. +The beam, originally traveling at 0°, is now redirected to 90° (straight up). + +**Step 2**: The beam now travels vertically upward from position `(10, 0)` and strikes **Crystal #1** at position `(10, 10)`. +This crystal has a refraction angle of -90°, bending the beam by -90° relative to its current direction. +The beam was traveling at 90°, so after refraction it's now at 0° (90° + (-90°) = 0°), traveling horizontally to the right again. + +**Step 3**: From position `(10, 10)`, the beam travels horizontally and encounters **Crystal #3** at position `(30, 10)`. +This crystal refracts the beam by 45°, changing its direction to 45°. +The beam continues into empty space beyond the array. diff --git a/exercises/practice/prism/.docs/introduction.md b/exercises/practice/prism/.docs/introduction.md new file mode 100644 index 0000000000..bfa7ed72e4 --- /dev/null +++ b/exercises/practice/prism/.docs/introduction.md @@ -0,0 +1,5 @@ +# Introduction + +You're a researcher at **PRISM** (Precariously Redirected Illumination Safety Management), working with a precision laser calibration system that tests experimental crystal prisms. +These crystals are being developed for next-generation optical computers, and each one has unique refractive properties based on its molecular structure. +The lab's laser system can damage crystals if they receive unexpected illumination, so precise path prediction is critical. diff --git a/exercises/practice/prism/.gitignore b/exercises/practice/prism/.gitignore new file mode 100644 index 0000000000..0c88ff6ec3 --- /dev/null +++ b/exercises/practice/prism/.gitignore @@ -0,0 +1,5 @@ +/node_modules +/bin/configlet +/bin/configlet.exe +/package-lock.json +/yarn.lock diff --git a/exercises/practice/prism/.meta/config.json b/exercises/practice/prism/.meta/config.json new file mode 100644 index 0000000000..31c9ad08f8 --- /dev/null +++ b/exercises/practice/prism/.meta/config.json @@ -0,0 +1,25 @@ +{ + "authors": [ + "BNAndras" + ], + "files": { + "solution": [ + "prism.js" + ], + "test": [ + "prism.spec.js" + ], + "example": [ + ".meta/proof.ci.js" + ] + }, + "blurb": "Calculate the path of a laser through reflective prisms.", + "source": "FraSanga", + "source_url": "https://github.com/exercism/problem-specifications/pull/2625", + "custom": { + "version.tests.compatibility": "jest-27", + "flag.tests.task-per-describe": false, + "flag.tests.may-run-long": false, + "flag.tests.includes-optional": false + } +} diff --git a/exercises/practice/prism/.meta/proof.ci.js b/exercises/practice/prism/.meta/proof.ci.js new file mode 100644 index 0000000000..d327e18496 --- /dev/null +++ b/exercises/practice/prism/.meta/proof.ci.js @@ -0,0 +1,41 @@ +export const findSequence = (start, prisms) => { + let { x, y, angle } = start; + const sequence = []; + + while (true) { + const rad = (angle * Math.PI) / 180; + const dirX = Math.cos(rad); + const dirY = Math.sin(rad); + + let nearest = null; + let nearestDist = Infinity; + + for (const prism of prisms) { + const dx = prism.x - x; + const dy = prism.y - y; + + const dist = dx * dirX + dy * dirY; + const baseTolerance = 1e-6; + if (dist <= baseTolerance) continue; + + const crossProductSquared = + (dx - dist * dirX) ** 2 + (dy - dist * dirY) ** 2; + const relativeTolerance = baseTolerance * Math.max(1, dist * dist); + if (crossProductSquared >= relativeTolerance) continue; + + if (dist < nearestDist) { + nearestDist = dist; + nearest = prism; + } + } + + if (!nearest) break; + + sequence.push(nearest.id); + x = nearest.x; + y = nearest.y; + angle = (angle + nearest.angle) % 360; + } + + return sequence; +}; diff --git a/exercises/practice/prism/.meta/tests.toml b/exercises/practice/prism/.meta/tests.toml new file mode 100644 index 0000000000..b00222383a --- /dev/null +++ b/exercises/practice/prism/.meta/tests.toml @@ -0,0 +1,52 @@ +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. + +[ec65d3b3-f7bf-4015-8156-0609c141c4c4] +description = "zero prisms" + +[ec0ca17c-0c5f-44fb-89ba-b76395bdaf1c] +description = "one prism one hit" + +[0db955f2-0a27-4c82-ba67-197bd6202069] +description = "one prism zero hits" + +[8d92485b-ebc0-4ee9-9b88-cdddb16b52da] +description = "going up zero hits" + +[78295b3c-7438-492d-8010-9c63f5c223d7] +description = "going down zero hits" + +[acc723ea-597b-4a50-8d1b-b980fe867d4c] +description = "going left zero hits" + +[3f19b9df-9eaa-4f18-a2db-76132f466d17] +description = "negative angle" + +[96dacffb-d821-4cdf-aed8-f152ce063195] +description = "large angle" + +[513a7caa-957f-4c5d-9820-076842de113c] +description = "upward refraction two hits" + +[d452b7c7-9761-4ea9-81a9-2de1d73eb9ef] +description = "downward refraction two hits" + +[be1a2167-bf4c-4834-acc9-e4d68e1a0203] +description = "same prism twice" + +[df5a60dd-7c7d-4937-ac4f-c832dae79e2e] +description = "simple path" + +[8d9a3cc8-e846-4a3b-a137-4bfc4aa70bd1] +description = "multiple prisms floating point precision" + +[e077fc91-4e4a-46b3-a0f5-0ba00321da56] +description = "complex path with multiple prisms floating point precision" diff --git a/exercises/practice/prism/.npmrc b/exercises/practice/prism/.npmrc new file mode 100644 index 0000000000..d26df800bb --- /dev/null +++ b/exercises/practice/prism/.npmrc @@ -0,0 +1 @@ +audit=false diff --git a/exercises/practice/prism/LICENSE b/exercises/practice/prism/LICENSE new file mode 100644 index 0000000000..90e73be03b --- /dev/null +++ b/exercises/practice/prism/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Exercism + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/exercises/practice/prism/babel.config.js b/exercises/practice/prism/babel.config.js new file mode 100644 index 0000000000..a638497df1 --- /dev/null +++ b/exercises/practice/prism/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: [['@exercism/babel-preset-javascript', { corejs: '3.40' }]], + plugins: [], +}; diff --git a/exercises/practice/prism/eslint.config.mjs b/exercises/practice/prism/eslint.config.mjs new file mode 100644 index 0000000000..ca517111ed --- /dev/null +++ b/exercises/practice/prism/eslint.config.mjs @@ -0,0 +1,45 @@ +// @ts-check + +import config from '@exercism/eslint-config-javascript'; +import maintainersConfig from '@exercism/eslint-config-javascript/maintainers.mjs'; + +import globals from 'globals'; + +export default [ + ...config, + ...maintainersConfig, + { + files: maintainersConfig[1].files, + rules: { + 'jest/expect-expect': ['warn', { assertFunctionNames: ['expect*'] }], + }, + }, + { + files: ['scripts/**/*.mjs'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + // <> + { + ignores: [ + // # Protected or generated + '/.appends/**/*', + '/.github/**/*', + '/.vscode/**/*', + + // # Binaries + '/bin/*', + + // # Configuration + '/config', + '/babel.config.js', + + // # Typings + '/exercises/**/global.d.ts', + '/exercises/**/env.d.ts', + ], + }, +]; diff --git a/exercises/practice/prism/jest.config.js b/exercises/practice/prism/jest.config.js new file mode 100644 index 0000000000..ec8e908127 --- /dev/null +++ b/exercises/practice/prism/jest.config.js @@ -0,0 +1,22 @@ +module.exports = { + verbose: true, + projects: [''], + testMatch: [ + '**/__tests__/**/*.[jt]s?(x)', + '**/test/**/*.[jt]s?(x)', + '**/?(*.)+(spec|test).[jt]s?(x)', + ], + testPathIgnorePatterns: [ + '/(?:production_)?node_modules/', + '.d.ts$', + '/test/fixtures', + '/test/helpers', + '__mocks__', + ], + transform: { + '^.+\\.[jt]sx?$': 'babel-jest', + }, + moduleNameMapper: { + '^(\\.\\/.+)\\.js$': '$1', + }, +}; diff --git a/exercises/practice/prism/package.json b/exercises/practice/prism/package.json new file mode 100644 index 0000000000..7750c52c42 --- /dev/null +++ b/exercises/practice/prism/package.json @@ -0,0 +1,34 @@ +{ + "name": "@exercism/javascript-prism", + "description": "Exercism exercises in Javascript.", + "author": "Katrina Owen", + "private": true, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/exercism/javascript", + "directory": "exercises/practice/prism" + }, + "devDependencies": { + "@exercism/babel-preset-javascript": "^0.5.1", + "@exercism/eslint-config-javascript": "^0.8.1", + "@jest/globals": "^29.7.0", + "@types/node": "^24.3.0", + "@types/shelljs": "^0.8.17", + "babel-jest": "^29.7.0", + "core-js": "~3.42.0", + "diff": "^8.0.2", + "eslint": "^9.28.0", + "expect": "^29.7.0", + "globals": "^16.3.0", + "jest": "^29.7.0" + }, + "dependencies": {}, + "scripts": { + "lint": "corepack pnpm eslint .", + "test": "corepack pnpm jest", + "watch": "corepack pnpm jest --watch", + "format": "corepack pnpm prettier -w ." + }, + "packageManager": "pnpm@9.15.2" +} diff --git a/exercises/practice/prism/prism.js b/exercises/practice/prism/prism.js new file mode 100644 index 0000000000..3a0dbdea69 --- /dev/null +++ b/exercises/practice/prism/prism.js @@ -0,0 +1,8 @@ +// +// This is only a SKELETON file for the 'Prism' exercise. It's been provided as a +// convenience to get you started writing code faster. +// + +export const findSequence = () => { + throw new Error('Remove this line and implement the function'); +}; diff --git a/exercises/practice/prism/prism.spec.js b/exercises/practice/prism/prism.spec.js new file mode 100644 index 0000000000..7b5c504f01 --- /dev/null +++ b/exercises/practice/prism/prism.spec.js @@ -0,0 +1,270 @@ +import { describe, expect, test, xtest } from '@jest/globals'; +import { findSequence } from './prism'; + +describe('Prism', () => { + test('zero prisms', () => { + const start = { x: 0, y: 0, angle: 0 }; + const prisms = []; + const result = findSequence(start, prisms); + const expected = []; + expect(result).toEqual(expected); + }); + + xtest('one prism one hit', () => { + const start = { x: 0, y: 0, angle: 0 }; + const prisms = [{ id: 1, x: 10, y: 0, angle: 0 }]; + const result = findSequence(start, prisms); + const expected = [1]; + expect(result).toEqual(expected); + }); + + xtest('one prism zero hits', () => { + const start = { x: 0, y: 0, angle: 0 }; + const prisms = [{ id: 1, x: -10, y: 0, angle: 0 }]; + const result = findSequence(start, prisms); + const expected = []; + expect(result).toEqual(expected); + }); + + xtest('going up zero hits', () => { + const start = { x: 0, y: 0, angle: 90 }; + const prisms = [ + { id: 3, x: 0, y: -10, angle: 0 }, + { id: 1, x: -10, y: 0, angle: 0 }, + { id: 2, x: 10, y: 0, angle: 0 }, + ]; + const result = findSequence(start, prisms); + const expected = []; + expect(result).toEqual(expected); + }); + + xtest('going down zero hits', () => { + const start = { x: 0, y: 0, angle: -90 }; + const prisms = [ + { id: 1, x: 10, y: 0, angle: 0 }, + { id: 2, x: 0, y: 10, angle: 0 }, + { id: 3, x: -10, y: 0, angle: 0 }, + ]; + const result = findSequence(start, prisms); + const expected = []; + expect(result).toEqual(expected); + }); + + xtest('going left zero hits', () => { + const start = { x: 0, y: 0, angle: 180 }; + const prisms = [ + { id: 2, x: 0, y: 10, angle: 0 }, + { id: 3, x: 10, y: 0, angle: 0 }, + { id: 1, x: 0, y: -10, angle: 0 }, + ]; + const result = findSequence(start, prisms); + const expected = []; + expect(result).toEqual(expected); + }); + + xtest('negative angle', () => { + const start = { x: 0, y: 0, angle: -180 }; + const prisms = [ + { id: 1, x: 0, y: -10, angle: 0 }, + { id: 2, x: 0, y: 10, angle: 0 }, + { id: 3, x: 10, y: 0, angle: 0 }, + ]; + const result = findSequence(start, prisms); + const expected = []; + expect(result).toEqual(expected); + }); + + xtest('large angle', () => { + const start = { x: 0, y: 0, angle: 2340 }; + const prisms = [{ id: 1, x: 10, y: 0, angle: 0 }]; + const result = findSequence(start, prisms); + const expected = []; + expect(result).toEqual(expected); + }); + + xtest('upward refraction two hits', () => { + const start = { x: 0, y: 0, angle: 0 }; + const prisms = [ + { id: 1, x: 10, y: 10, angle: 0 }, + { id: 2, x: 10, y: 0, angle: 90 }, + ]; + const result = findSequence(start, prisms); + const expected = [2, 1]; + expect(result).toEqual(expected); + }); + + xtest('downward refraction two hits', () => { + const start = { x: 0, y: 0, angle: 0 }; + const prisms = [ + { id: 1, x: 10, y: 0, angle: -90 }, + { id: 2, x: 10, y: -10, angle: 0 }, + ]; + const result = findSequence(start, prisms); + const expected = [1, 2]; + expect(result).toEqual(expected); + }); + + xtest('same prism twice', () => { + const start = { x: 0, y: 0, angle: 0 }; + const prisms = [ + { id: 2, x: 10, y: 0, angle: 0 }, + { id: 1, x: 20, y: 0, angle: -180 }, + ]; + const result = findSequence(start, prisms); + const expected = [2, 1, 2]; + expect(result).toEqual(expected); + }); + + xtest('simple path', () => { + const start = { x: 0, y: 0, angle: 0 }; + const prisms = [ + { id: 3, x: 30, y: 10, angle: 45 }, + { id: 1, x: 10, y: 10, angle: -90 }, + { id: 2, x: 10, y: 0, angle: 90 }, + { id: 4, x: 20, y: 0, angle: 0 }, + ]; + const result = findSequence(start, prisms); + const expected = [2, 1, 3]; + expect(result).toEqual(expected); + }); + + xtest('multiple prisms floating point precision', () => { + const start = { x: 0, y: 0, angle: -6.429 }; + const prisms = [ + { id: 26, x: 5.8, y: 73.4, angle: 6.555 }, + { id: 24, x: 36.2, y: 65.2, angle: -0.304 }, + { id: 20, x: 20.4, y: 82.8, angle: 45.17 }, + { id: 31, x: -20.2, y: 48.8, angle: 30.615 }, + { id: 30, x: 24.0, y: 0.6, angle: 28.771 }, + { id: 29, x: 31.4, y: 79.4, angle: 61.327 }, + { id: 28, x: 36.4, y: 31.4, angle: -18.157 }, + { id: 22, x: 47.0, y: 57.8, angle: 54.745 }, + { id: 38, x: 36.4, y: 79.2, angle: 49.05 }, + { id: 10, x: 37.8, y: 55.2, angle: 11.978 }, + { id: 18, x: -26.0, y: 42.6, angle: 22.661 }, + { id: 25, x: 38.8, y: 76.2, angle: 51.958 }, + { id: 2, x: 0.0, y: 42.4, angle: -21.817 }, + { id: 35, x: 21.4, y: 44.8, angle: -171.579 }, + { id: 7, x: 14.2, y: -1.6, angle: 19.081 }, + { id: 33, x: 11.2, y: 44.4, angle: -165.941 }, + { id: 11, x: 15.4, y: 82.6, angle: 66.262 }, + { id: 16, x: 30.8, y: 6.6, angle: 35.852 }, + { id: 15, x: -3.0, y: 79.2, angle: 53.782 }, + { id: 4, x: 29.0, y: 75.4, angle: 17.016 }, + { id: 23, x: 41.6, y: 59.8, angle: 70.763 }, + { id: 8, x: -10.0, y: 15.8, angle: -9.24 }, + { id: 13, x: 48.6, y: 51.8, angle: 45.812 }, + { id: 1, x: 13.2, y: 77.0, angle: 17.937 }, + { id: 34, x: -8.8, y: 36.8, angle: -4.199 }, + { id: 21, x: 24.4, y: 75.8, angle: 20.783 }, + { id: 17, x: -4.4, y: 74.6, angle: 24.709 }, + { id: 9, x: 30.8, y: 41.8, angle: -165.413 }, + { id: 32, x: 4.2, y: 78.6, angle: 40.892 }, + { id: 37, x: -15.8, y: 47.0, angle: 33.29 }, + { id: 6, x: 1.0, y: 80.6, angle: 51.295 }, + { id: 36, x: -27.0, y: 47.8, angle: 92.52 }, + { id: 14, x: -2.0, y: 34.4, angle: -52.001 }, + { id: 5, x: 23.2, y: 80.2, angle: 31.866 }, + { id: 27, x: -5.6, y: 32.8, angle: -75.303 }, + { id: 12, x: -1.0, y: 0.2, angle: 0.0 }, + { id: 3, x: -6.6, y: 3.2, angle: 46.72 }, + { id: 19, x: -13.8, y: 24.2, angle: -9.205 }, + ]; + const result = findSequence(start, prisms); + const expected = [ + 7, 30, 16, 28, 13, 22, 23, 10, 9, 24, 25, 38, 29, 4, 35, 21, 5, 20, 11, 1, + 33, 26, 32, 6, 15, 17, 2, 14, 27, 34, 37, 31, 36, 18, 19, 8, 3, 12, + ]; + expect(result).toEqual(expected); + }); + + xtest('complex path with multiple prisms floating point precision', () => { + const start = { x: 0, y: 0, angle: 0.0 }; + const prisms = [ + { id: 46, x: 37.4, y: 20.6, angle: -88.332 }, + { id: 72, x: -24.2, y: 23.4, angle: -90.774 }, + { id: 25, x: 78.6, y: 7.8, angle: 98.562 }, + { id: 60, x: -58.8, y: 31.6, angle: 115.56 }, + { id: 22, x: 75.2, y: 28.0, angle: 63.515 }, + { id: 2, x: 89.8, y: 27.8, angle: 91.176 }, + { id: 23, x: 9.8, y: 30.8, angle: 30.829 }, + { id: 69, x: 22.8, y: 20.6, angle: -88.315 }, + { id: 44, x: -0.8, y: 15.6, angle: -116.565 }, + { id: 36, x: -24.2, y: 8.2, angle: -90.0 }, + { id: 53, x: -1.2, y: 0.0, angle: 0.0 }, + { id: 52, x: 14.2, y: 24.0, angle: -143.896 }, + { id: 5, x: -65.2, y: 21.6, angle: 93.128 }, + { id: 66, x: 5.4, y: 15.6, angle: 31.608 }, + { id: 51, x: -72.6, y: 21.0, angle: -100.976 }, + { id: 65, x: 48.0, y: 10.2, angle: 87.455 }, + { id: 21, x: -41.8, y: 0.0, angle: 68.352 }, + { id: 18, x: -46.2, y: 19.2, angle: -128.362 }, + { id: 10, x: 74.4, y: 0.4, angle: 90.939 }, + { id: 15, x: 67.6, y: 0.4, angle: 84.958 }, + { id: 35, x: 14.8, y: -0.4, angle: 89.176 }, + { id: 1, x: 83.0, y: 0.2, angle: 89.105 }, + { id: 68, x: 14.6, y: 28.0, angle: -29.867 }, + { id: 67, x: 79.8, y: 18.6, angle: -136.643 }, + { id: 38, x: 53.0, y: 14.6, angle: -90.848 }, + { id: 31, x: -58.0, y: 6.6, angle: -61.837 }, + { id: 74, x: -30.8, y: 0.4, angle: 85.966 }, + { id: 48, x: -4.6, y: 10.0, angle: -161.222 }, + { id: 12, x: 59.0, y: 5.0, angle: -91.164 }, + { id: 33, x: -16.4, y: 18.4, angle: 90.734 }, + { id: 4, x: 82.6, y: 27.6, angle: 71.127 }, + { id: 75, x: -10.2, y: 30.6, angle: -1.108 }, + { id: 28, x: 38.0, y: 0.0, angle: 86.863 }, + { id: 11, x: 64.4, y: -0.2, angle: 92.353 }, + { id: 9, x: -51.4, y: 31.6, angle: 67.249 }, + { id: 26, x: -39.8, y: 30.8, angle: 61.113 }, + { id: 30, x: -34.2, y: 0.6, angle: 111.33 }, + { id: 56, x: -51.0, y: 0.2, angle: 70.445 }, + { id: 41, x: -12.0, y: 0.0, angle: 91.219 }, + { id: 24, x: 63.8, y: 14.4, angle: 86.586 }, + { id: 70, x: -72.8, y: 13.4, angle: -87.238 }, + { id: 3, x: 22.4, y: 7.0, angle: -91.685 }, + { id: 13, x: 34.4, y: 7.0, angle: 90.0 }, + { id: 16, x: -47.4, y: 11.4, angle: -136.02 }, + { id: 6, x: 90.0, y: 0.2, angle: 90.415 }, + { id: 54, x: 44.0, y: 27.8, angle: 85.969 }, + { id: 32, x: -9.0, y: 0.0, angle: 91.615 }, + { id: 8, x: -31.6, y: 30.8, angle: 0.535 }, + { id: 39, x: -12.0, y: 8.2, angle: 90.0 }, + { id: 14, x: -79.6, y: 32.4, angle: 92.342 }, + { id: 42, x: 65.8, y: 20.8, angle: -85.867 }, + { id: 40, x: -65.0, y: 14.0, angle: 87.109 }, + { id: 45, x: 10.6, y: 18.8, angle: 23.697 }, + { id: 71, x: -24.2, y: 18.6, angle: -88.531 }, + { id: 7, x: -72.6, y: 6.4, angle: -89.148 }, + { id: 62, x: -32.0, y: 24.8, angle: -140.8 }, + { id: 49, x: 34.4, y: -0.2, angle: 89.415 }, + { id: 63, x: 74.2, y: 12.6, angle: -138.429 }, + { id: 59, x: 82.8, y: 13.0, angle: -140.177 }, + { id: 34, x: -9.4, y: 23.2, angle: -88.238 }, + { id: 76, x: -57.6, y: 0.0, angle: 1.2 }, + { id: 43, x: 7.0, y: 0.0, angle: 116.565 }, + { id: 20, x: 45.8, y: -0.2, angle: 1.469 }, + { id: 37, x: -16.6, y: 13.2, angle: 84.785 }, + { id: 58, x: -79.0, y: -0.2, angle: 89.481 }, + { id: 50, x: -24.2, y: 12.8, angle: -86.987 }, + { id: 64, x: 59.2, y: 10.2, angle: -92.203 }, + { id: 61, x: -72.0, y: 26.4, angle: -83.66 }, + { id: 47, x: 45.4, y: 5.8, angle: -82.992 }, + { id: 17, x: -52.2, y: 17.8, angle: -52.938 }, + { id: 57, x: -61.8, y: 32.0, angle: 84.627 }, + { id: 29, x: 47.2, y: 28.2, angle: 92.954 }, + { id: 27, x: -4.6, y: 0.2, angle: 87.397 }, + { id: 55, x: -61.4, y: 26.4, angle: 94.086 }, + { id: 73, x: -40.4, y: 13.4, angle: -62.229 }, + { id: 19, x: 53.2, y: 20.6, angle: -87.181 }, + ]; + const result = findSequence(start, prisms); + const expected = [ + 43, 44, 66, 45, 52, 35, 49, 13, 3, 69, 46, 28, 20, 11, 24, 38, 19, 42, 15, + 10, 63, 25, 59, 1, 6, 2, 4, 67, 22, 29, 65, 64, 12, 47, 54, 68, 23, 75, 8, + 26, 18, 9, 60, 17, 31, 7, 70, 40, 5, 51, 61, 55, 57, 14, 58, 76, 56, 16, + 21, 30, 73, 62, 74, 41, 39, 36, 50, 37, 33, 71, 72, 34, 32, 27, 48, 53, + ]; + expect(result).toEqual(expected); + }); +}); From 64726da3c10c5fed4a4a8c3f8e4bfcc61a8d579e Mon Sep 17 00:00:00 2001 From: Adam Monsen Date: Fri, 27 Feb 2026 15:08:40 -0800 Subject: [PATCH 37/61] docs: improve grammar in coordinate transformation intro (#2819) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: improve grammar in coordinate transformation intro and fix als → also typo * add myself to contributors list Shameless self-promotion FTW! --- .../concept/coordinate-transformation/.docs/introduction.md | 2 +- exercises/concept/coordinate-transformation/.meta/config.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/exercises/concept/coordinate-transformation/.docs/introduction.md b/exercises/concept/coordinate-transformation/.docs/introduction.md index 50865ade37..db1e434ff6 100644 --- a/exercises/concept/coordinate-transformation/.docs/introduction.md +++ b/exercises/concept/coordinate-transformation/.docs/introduction.md @@ -18,7 +18,7 @@ twoDozen; // => Uncaught ReferenceError: twoDozen is not defined ``` -Except for braces `{}`, functions (and classes) als create new scopes, which can _enclose_ values: +Besides braces `{}`, functions (and classes) also create new scopes, and can _enclose_ values: ```javascript const dozen = 12; diff --git a/exercises/concept/coordinate-transformation/.meta/config.json b/exercises/concept/coordinate-transformation/.meta/config.json index 978f9b9544..76b4e5a024 100644 --- a/exercises/concept/coordinate-transformation/.meta/config.json +++ b/exercises/concept/coordinate-transformation/.meta/config.json @@ -3,7 +3,8 @@ "neenjaw" ], "contributors": [ - "SleeplessByte" + "SleeplessByte", + "meonkeys" ], "files": { "solution": [ From 8d2fd0c7edd8b10244fd4a96a857fd2fbc397fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20B=20Nagy?= <20251272+BNAndras@users.noreply.github.com> Date: Mon, 9 Mar 2026 01:23:36 -0700 Subject: [PATCH 38/61] add `split-second-stopwatch` (#2824) * add `split-second-stopwatch` * [CI] Format code * Trigger builds * Fix stub --------- Co-authored-by: github-actions[bot] --- config.json | 11 + .../.docs/instructions.md | 22 ++ .../.docs/introduction.md | 6 + .../split-second-stopwatch/.gitignore | 5 + .../split-second-stopwatch/.meta/config.json | 25 ++ .../split-second-stopwatch/.meta/proof.ci.js | 77 ++++++ .../split-second-stopwatch/.meta/tests.toml | 97 +++++++ .../practice/split-second-stopwatch/.npmrc | 1 + .../practice/split-second-stopwatch/LICENSE | 21 ++ .../split-second-stopwatch/babel.config.js | 4 + .../split-second-stopwatch/eslint.config.mjs | 45 ++++ .../split-second-stopwatch/jest.config.js | 22 ++ .../split-second-stopwatch/package.json | 34 +++ .../split-second-stopwatch.js | 41 +++ .../split-second-stopwatch.spec.js | 253 ++++++++++++++++++ 15 files changed, 664 insertions(+) create mode 100644 exercises/practice/split-second-stopwatch/.docs/instructions.md create mode 100644 exercises/practice/split-second-stopwatch/.docs/introduction.md create mode 100644 exercises/practice/split-second-stopwatch/.gitignore create mode 100644 exercises/practice/split-second-stopwatch/.meta/config.json create mode 100644 exercises/practice/split-second-stopwatch/.meta/proof.ci.js create mode 100644 exercises/practice/split-second-stopwatch/.meta/tests.toml create mode 100644 exercises/practice/split-second-stopwatch/.npmrc create mode 100644 exercises/practice/split-second-stopwatch/LICENSE create mode 100644 exercises/practice/split-second-stopwatch/babel.config.js create mode 100644 exercises/practice/split-second-stopwatch/eslint.config.mjs create mode 100644 exercises/practice/split-second-stopwatch/jest.config.js create mode 100644 exercises/practice/split-second-stopwatch/package.json create mode 100644 exercises/practice/split-second-stopwatch/split-second-stopwatch.js create mode 100644 exercises/practice/split-second-stopwatch/split-second-stopwatch.spec.js diff --git a/config.json b/config.json index 90c064066b..0ac62ffcd5 100644 --- a/config.json +++ b/config.json @@ -671,6 +671,17 @@ "text_formatting" ] }, + { + "slug": "split-second-stopwatch", + "name": "Split Second Stopwatch", + "uuid": "8ddc2921-c0f6-400e-bb74-c2bec51b9d63", + "practices": [], + "prerequisites": [ + "classes", + "numbers" + ], + "difficulty": 4 + }, { "slug": "linked-list", "name": "Linked List", diff --git a/exercises/practice/split-second-stopwatch/.docs/instructions.md b/exercises/practice/split-second-stopwatch/.docs/instructions.md new file mode 100644 index 0000000000..30bdc988da --- /dev/null +++ b/exercises/practice/split-second-stopwatch/.docs/instructions.md @@ -0,0 +1,22 @@ +# Instructions + +Your task is to build a stopwatch to keep precise track of lap times. + +The stopwatch uses four commands (start, stop, lap, and reset) to keep track of: + +1. The current lap's tracked time +2. Previously recorded lap times + +What commands can be used depends on which state the stopwatch is in: + +1. Ready: initial state +2. Running: tracking time +3. Stopped: not tracking time + +| Command | Begin state | End state | Effect | +| ------- | ----------- | --------- | -------------------------------------------------------- | +| Start | Ready | Running | Start tracking time | +| Start | Stopped | Running | Resume tracking time | +| Stop | Running | Stopped | Stop tracking time | +| Lap | Running | Running | Add current lap to previous laps, then reset current lap | +| Reset | Stopped | Ready | Reset current lap and clear previous laps | diff --git a/exercises/practice/split-second-stopwatch/.docs/introduction.md b/exercises/practice/split-second-stopwatch/.docs/introduction.md new file mode 100644 index 0000000000..a843224771 --- /dev/null +++ b/exercises/practice/split-second-stopwatch/.docs/introduction.md @@ -0,0 +1,6 @@ +# Introduction + +You've always run for the thrill of it — no schedules, no timers, just the sound of your feet on the pavement. +But now that you've joined a competitive running crew, things are getting serious. +Training sessions are timed to the second, and every split second counts. +To keep pace, you've picked up the _Split-Second Stopwatch_ — a sleek, high-tech gadget that's about to become your new best friend. diff --git a/exercises/practice/split-second-stopwatch/.gitignore b/exercises/practice/split-second-stopwatch/.gitignore new file mode 100644 index 0000000000..0c88ff6ec3 --- /dev/null +++ b/exercises/practice/split-second-stopwatch/.gitignore @@ -0,0 +1,5 @@ +/node_modules +/bin/configlet +/bin/configlet.exe +/package-lock.json +/yarn.lock diff --git a/exercises/practice/split-second-stopwatch/.meta/config.json b/exercises/practice/split-second-stopwatch/.meta/config.json new file mode 100644 index 0000000000..4503fabbdd --- /dev/null +++ b/exercises/practice/split-second-stopwatch/.meta/config.json @@ -0,0 +1,25 @@ +{ + "authors": [ + "BNAndras" + ], + "files": { + "solution": [ + "split-second-stopwatch.js" + ], + "test": [ + "split-second-stopwatch.spec.js" + ], + "example": [ + ".meta/proof.ci.js" + ] + }, + "blurb": "Keep track of time through a digital stopwatch.", + "source": "Erik Schierboom", + "source_url": "https://github.com/exercism/problem-specifications/pull/2547", + "custom": { + "version.tests.compatibility": "jest-27", + "flag.tests.task-per-describe": false, + "flag.tests.may-run-long": false, + "flag.tests.includes-optional": false + } +} diff --git a/exercises/practice/split-second-stopwatch/.meta/proof.ci.js b/exercises/practice/split-second-stopwatch/.meta/proof.ci.js new file mode 100644 index 0000000000..9d4e19e92d --- /dev/null +++ b/exercises/practice/split-second-stopwatch/.meta/proof.ci.js @@ -0,0 +1,77 @@ +export class SplitSecondStopwatch { + constructor() { + this._state = 'ready'; + this._totalSeconds = 0; + this._currentLap = 0; + this._previousLaps = []; + } + + get state() { + return this._state; + } + + get currentLap() { + return this._formatTime(this._currentLap); + } + + get total() { + return this._formatTime(this._totalSeconds); + } + + get previousLaps() { + return this._previousLaps.map(this._formatTime); + } + + start() { + if (this._state === 'running') { + throw new Error('cannot start an already running stopwatch'); + } + this._state = 'running'; + } + + stop() { + if (this._state !== 'running') { + throw new Error('cannot stop a stopwatch that is not running'); + } + this._state = 'stopped'; + } + + lap() { + if (this._state !== 'running') { + throw new Error('cannot lap a stopwatch that is not running'); + } + this._previousLaps.push(this._currentLap); + this._currentLap = 0; + } + + reset() { + if (this._state !== 'stopped') { + throw new Error('cannot reset a stopwatch that is not stopped'); + } + this._state = 'ready'; + this._totalSeconds = 0; + this._currentLap = 0; + this._previousLaps = []; + } + + advanceTime(duration) { + if (this._state === 'running') { + const seconds = this._toSeconds(duration); + this._currentLap += seconds; + this._totalSeconds += seconds; + } + } + + _toSeconds(duration) { + const [h, m, s] = duration.split(':').map(Number); + return h * 3600 + m * 60 + s; + } + + _formatTime(seconds) { + const h = Math.floor(seconds / 3600); + const m = Math.floor((seconds % 3600) / 60); + const s = seconds % 60; + + return `${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`; + } +} diff --git a/exercises/practice/split-second-stopwatch/.meta/tests.toml b/exercises/practice/split-second-stopwatch/.meta/tests.toml new file mode 100644 index 0000000000..323cb7ae8f --- /dev/null +++ b/exercises/practice/split-second-stopwatch/.meta/tests.toml @@ -0,0 +1,97 @@ +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. + +[ddb238ea-99d4-4eaa-a81d-3c917a525a23] +description = "new stopwatch starts in ready state" + +[b19635d4-08ad-4ac3-b87f-aca10e844071] +description = "new stopwatch's current lap has no elapsed time" + +[492eb532-268d-43ea-8a19-2a032067d335] +description = "new stopwatch's total has no elapsed time" + +[8a892c1e-9ef7-4690-894e-e155a1fe4484] +description = "new stopwatch does not have previous laps" + +[5b2705b6-a584-4042-ba3a-4ab8d0ab0281] +description = "start from ready state changes state to running" + +[748235ce-1109-440b-9898-0a431ea179b6] +description = "start does not change previous laps" + +[491487b1-593d-423e-a075-aa78d449ff1f] +description = "start initiates time tracking for current lap" + +[a0a7ba2c-8db6-412c-b1b6-cb890e9b72ed] +description = "start initiates time tracking for total" + +[7f558a17-ef6d-4a5b-803a-f313af7c41d3] +description = "start cannot be called from running state" + +[32466eef-b2be-4d60-a927-e24fce52dab9] +description = "stop from running state changes state to stopped" + +[621eac4c-8f43-4d99-919c-4cad776d93df] +description = "stop pauses time tracking for current lap" + +[465bcc82-7643-41f2-97ff-5e817cef8db4] +description = "stop pauses time tracking for total" + +[b1ba7454-d627-41ee-a078-891b2ed266fc] +description = "stop cannot be called from ready state" + +[5c041078-0898-44dc-9d5b-8ebb5352626c] +description = "stop cannot be called from stopped state" + +[3f32171d-8fbf-46b6-bc2b-0810e1ec53b7] +description = "start from stopped state changes state to running" + +[626997cb-78d5-4fe8-b501-29fdef804799] +description = "start from stopped state resumes time tracking for current lap" + +[58487c53-ab26-471c-a171-807ef6363319] +description = "start from stopped state resumes time tracking for total" + +[091966e3-ed25-4397-908b-8bb0330118f8] +description = "lap adds current lap to previous laps" + +[1aa4c5ee-a7d5-4d59-9679-419deef3c88f] +description = "lap resets current lap and resumes time tracking" + +[4b46b92e-1b3f-46f6-97d2-0082caf56e80] +description = "lap continues time tracking for total" + +[ea75d36e-63eb-4f34-97ce-8c70e620bdba] +description = "lap cannot be called from ready state" + +[63731154-a23a-412d-a13f-c562f208eb1e] +description = "lap cannot be called from stopped state" + +[e585ee15-3b3f-4785-976b-dd96e7cc978b] +description = "stop does not change previous laps" + +[fc3645e2-86cf-4d11-97c6-489f031103f6] +description = "reset from stopped state changes state to ready" + +[20fbfbf7-68ad-4310-975a-f5f132886c4e] +description = "reset resets current lap" + +[00a8f7bb-dd5c-43e5-8705-3ef124007662] +description = "reset clears previous laps" + +[76cea936-6214-4e95-b6d1-4d4edcf90499] +description = "reset cannot be called from ready state" + +[ba4d8e69-f200-4721-b59e-90d8cf615153] +description = "reset cannot be called from running state" + +[0b01751a-cb57-493f-bb86-409de6e84306] +description = "supports very long laps" diff --git a/exercises/practice/split-second-stopwatch/.npmrc b/exercises/practice/split-second-stopwatch/.npmrc new file mode 100644 index 0000000000..d26df800bb --- /dev/null +++ b/exercises/practice/split-second-stopwatch/.npmrc @@ -0,0 +1 @@ +audit=false diff --git a/exercises/practice/split-second-stopwatch/LICENSE b/exercises/practice/split-second-stopwatch/LICENSE new file mode 100644 index 0000000000..90e73be03b --- /dev/null +++ b/exercises/practice/split-second-stopwatch/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Exercism + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/exercises/practice/split-second-stopwatch/babel.config.js b/exercises/practice/split-second-stopwatch/babel.config.js new file mode 100644 index 0000000000..a638497df1 --- /dev/null +++ b/exercises/practice/split-second-stopwatch/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: [['@exercism/babel-preset-javascript', { corejs: '3.40' }]], + plugins: [], +}; diff --git a/exercises/practice/split-second-stopwatch/eslint.config.mjs b/exercises/practice/split-second-stopwatch/eslint.config.mjs new file mode 100644 index 0000000000..ca517111ed --- /dev/null +++ b/exercises/practice/split-second-stopwatch/eslint.config.mjs @@ -0,0 +1,45 @@ +// @ts-check + +import config from '@exercism/eslint-config-javascript'; +import maintainersConfig from '@exercism/eslint-config-javascript/maintainers.mjs'; + +import globals from 'globals'; + +export default [ + ...config, + ...maintainersConfig, + { + files: maintainersConfig[1].files, + rules: { + 'jest/expect-expect': ['warn', { assertFunctionNames: ['expect*'] }], + }, + }, + { + files: ['scripts/**/*.mjs'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + // <> + { + ignores: [ + // # Protected or generated + '/.appends/**/*', + '/.github/**/*', + '/.vscode/**/*', + + // # Binaries + '/bin/*', + + // # Configuration + '/config', + '/babel.config.js', + + // # Typings + '/exercises/**/global.d.ts', + '/exercises/**/env.d.ts', + ], + }, +]; diff --git a/exercises/practice/split-second-stopwatch/jest.config.js b/exercises/practice/split-second-stopwatch/jest.config.js new file mode 100644 index 0000000000..ec8e908127 --- /dev/null +++ b/exercises/practice/split-second-stopwatch/jest.config.js @@ -0,0 +1,22 @@ +module.exports = { + verbose: true, + projects: [''], + testMatch: [ + '**/__tests__/**/*.[jt]s?(x)', + '**/test/**/*.[jt]s?(x)', + '**/?(*.)+(spec|test).[jt]s?(x)', + ], + testPathIgnorePatterns: [ + '/(?:production_)?node_modules/', + '.d.ts$', + '/test/fixtures', + '/test/helpers', + '__mocks__', + ], + transform: { + '^.+\\.[jt]sx?$': 'babel-jest', + }, + moduleNameMapper: { + '^(\\.\\/.+)\\.js$': '$1', + }, +}; diff --git a/exercises/practice/split-second-stopwatch/package.json b/exercises/practice/split-second-stopwatch/package.json new file mode 100644 index 0000000000..93c216d206 --- /dev/null +++ b/exercises/practice/split-second-stopwatch/package.json @@ -0,0 +1,34 @@ +{ + "name": "@exercism/javascript-split-second-stopwatch", + "description": "Exercism exercises in Javascript.", + "author": "Katrina Owen", + "private": true, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/exercism/javascript", + "directory": "exercises/practice/split-second-stopwatch" + }, + "devDependencies": { + "@exercism/babel-preset-javascript": "^0.5.1", + "@exercism/eslint-config-javascript": "^0.8.1", + "@jest/globals": "^29.7.0", + "@types/node": "^24.3.0", + "@types/shelljs": "^0.8.17", + "babel-jest": "^29.7.0", + "core-js": "~3.42.0", + "diff": "^8.0.2", + "eslint": "^9.28.0", + "expect": "^29.7.0", + "globals": "^16.3.0", + "jest": "^29.7.0" + }, + "dependencies": {}, + "scripts": { + "lint": "corepack pnpm eslint .", + "test": "corepack pnpm jest", + "watch": "corepack pnpm jest --watch", + "format": "corepack pnpm prettier -w ." + }, + "packageManager": "pnpm@9.15.2" +} diff --git a/exercises/practice/split-second-stopwatch/split-second-stopwatch.js b/exercises/practice/split-second-stopwatch/split-second-stopwatch.js new file mode 100644 index 0000000000..1e7db922b8 --- /dev/null +++ b/exercises/practice/split-second-stopwatch/split-second-stopwatch.js @@ -0,0 +1,41 @@ +export class SplitSecondStopwatch { + constructor() { + throw new Error('Remove this line and implement the function'); + } + + get state() { + throw new Error('Remove this line and implement the function'); + } + + get currentLap() { + throw new Error('Remove this line and implement the function'); + } + + get total() { + throw new Error('Remove this line and implement the function'); + } + + get previousLaps() { + throw new Error('Remove this line and implement the function'); + } + + start() { + throw new Error('Remove this line and implement the function'); + } + + stop() { + throw new Error('Remove this line and implement the function'); + } + + lap() { + throw new Error('Remove this line and implement the function'); + } + + reset() { + throw new Error('Remove this line and implement the function'); + } + + advanceTime(duration) { + throw new Error('Remove this line and implement the function'); + } +} diff --git a/exercises/practice/split-second-stopwatch/split-second-stopwatch.spec.js b/exercises/practice/split-second-stopwatch/split-second-stopwatch.spec.js new file mode 100644 index 0000000000..a782550840 --- /dev/null +++ b/exercises/practice/split-second-stopwatch/split-second-stopwatch.spec.js @@ -0,0 +1,253 @@ +import { describe, expect, test, xtest } from '@jest/globals'; +import { SplitSecondStopwatch } from './split-second-stopwatch'; + +describe('SplitSecondStopwatch', () => { + test('new stopwatch starts in ready state', () => { + const stopwatch = new SplitSecondStopwatch(); + expect(stopwatch.state).toBe('ready'); + }); + + xtest("new stopwatch's current lap has no elapsed time", () => { + const stopwatch = new SplitSecondStopwatch(); + expect(stopwatch.currentLap).toBe('00:00:00'); + }); + + xtest("new stopwatch's total has no elapsed time", () => { + const stopwatch = new SplitSecondStopwatch(); + expect(stopwatch.total).toBe('00:00:00'); + }); + + xtest('new stopwatch does not have previous laps', () => { + const stopwatch = new SplitSecondStopwatch(); + expect(stopwatch.previousLaps).toEqual([]); + }); + + xtest('start from ready state changes state to running', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + expect(stopwatch.state).toBe('running'); + }); + + xtest('start does not change previous laps', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + expect(stopwatch.previousLaps).toEqual([]); + }); + + xtest('start initiates time tracking for current lap', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:00:05'); + expect(stopwatch.currentLap).toBe('00:00:05'); + }); + + xtest('start initiates time tracking for total', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:00:23'); + expect(stopwatch.total).toBe('00:00:23'); + }); + + xtest('start cannot be called from running state', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + expect(() => stopwatch.start()).toThrow( + 'cannot start an already running stopwatch', + ); + }); + + xtest('stop from running state changes state to stopped', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.stop(); + expect(stopwatch.state).toBe('stopped'); + }); + + xtest('stop pauses time tracking for current lap', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:00:05'); + stopwatch.stop(); + stopwatch.advanceTime('00:00:08'); + expect(stopwatch.currentLap).toBe('00:00:05'); + }); + + xtest('stop pauses time tracking for total', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:00:13'); + stopwatch.stop(); + stopwatch.advanceTime('00:00:44'); + expect(stopwatch.total).toBe('00:00:13'); + }); + + xtest('stop cannot be called from ready state', () => { + const stopwatch = new SplitSecondStopwatch(); + expect(() => stopwatch.stop()).toThrow( + 'cannot stop a stopwatch that is not running', + ); + }); + + xtest('stop cannot be called from stopped state', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.stop(); + expect(() => stopwatch.stop()).toThrow( + 'cannot stop a stopwatch that is not running', + ); + }); + + xtest('start from stopped state changes state to running', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.stop(); + stopwatch.start(); + expect(stopwatch.state).toBe('running'); + }); + + xtest('start from stopped state resumes time tracking for current lap', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:01:20'); + stopwatch.stop(); + stopwatch.advanceTime('00:00:20'); + stopwatch.start(); + stopwatch.advanceTime('00:00:08'); + expect(stopwatch.currentLap).toBe('00:01:28'); + }); + + xtest('start from stopped state resumes time tracking for total', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:00:23'); + stopwatch.stop(); + stopwatch.advanceTime('00:00:44'); + stopwatch.start(); + stopwatch.advanceTime('00:00:09'); + expect(stopwatch.total).toBe('00:00:32'); + }); + + xtest('lap adds current lap to previous laps', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:01:38'); + stopwatch.lap(); + expect(stopwatch.previousLaps).toEqual(['00:01:38']); + stopwatch.advanceTime('00:00:44'); + stopwatch.lap(); + expect(stopwatch.previousLaps).toEqual(['00:01:38', '00:00:44']); + }); + + xtest('lap resets current lap and resumes time tracking', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:08:22'); + stopwatch.lap(); + expect(stopwatch.currentLap).toBe('00:00:00'); + stopwatch.advanceTime('00:00:15'); + expect(stopwatch.currentLap).toBe('00:00:15'); + }); + + xtest('lap continues time tracking for total', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:00:22'); + stopwatch.lap(); + stopwatch.advanceTime('00:00:33'); + expect(stopwatch.total).toBe('00:00:55'); + }); + + xtest('lap cannot be called from ready state', () => { + const stopwatch = new SplitSecondStopwatch(); + expect(() => stopwatch.lap()).toThrow( + 'cannot lap a stopwatch that is not running', + ); + }); + + xtest('lap cannot be called from stopped state', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.stop(); + expect(() => stopwatch.lap()).toThrow( + 'cannot lap a stopwatch that is not running', + ); + }); + + xtest('stop does not change previous laps', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:11:22'); + stopwatch.lap(); + expect(stopwatch.previousLaps).toEqual(['00:11:22']); + stopwatch.stop(); + expect(stopwatch.previousLaps).toEqual(['00:11:22']); + }); + + xtest('reset from stopped state changes state to ready', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.stop(); + stopwatch.reset(); + expect(stopwatch.state).toBe('ready'); + }); + + xtest('reset resets current lap', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:00:10'); + stopwatch.stop(); + stopwatch.reset(); + expect(stopwatch.currentLap).toBe('00:00:00'); + }); + + xtest('reset clears previous laps', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('00:00:10'); + stopwatch.lap(); + stopwatch.advanceTime('00:00:20'); + stopwatch.lap(); + expect(stopwatch.previousLaps).toEqual(['00:00:10', '00:00:20']); + stopwatch.stop(); + stopwatch.reset(); + expect(stopwatch.previousLaps).toEqual([]); + }); + + xtest('reset cannot be called from ready state', () => { + const stopwatch = new SplitSecondStopwatch(); + expect(() => stopwatch.reset()).toThrow( + 'cannot reset a stopwatch that is not stopped', + ); + }); + + xtest('reset cannot be called from running state', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + expect(() => stopwatch.reset()).toThrow( + 'cannot reset a stopwatch that is not stopped', + ); + }); + + xtest('supports very long laps', () => { + const stopwatch = new SplitSecondStopwatch(); + stopwatch.start(); + stopwatch.advanceTime('01:23:45'); + expect(stopwatch.currentLap).toBe('01:23:45'); + stopwatch.lap(); + expect(stopwatch.previousLaps).toEqual(['01:23:45']); + stopwatch.advanceTime('04:01:40'); + expect(stopwatch.currentLap).toBe('04:01:40'); + expect(stopwatch.total).toBe('05:25:25'); + stopwatch.lap(); + expect(stopwatch.previousLaps).toEqual(['01:23:45', '04:01:40']); + stopwatch.advanceTime('08:43:05'); + expect(stopwatch.currentLap).toBe('08:43:05'); + expect(stopwatch.total).toBe('14:08:30'); + stopwatch.lap(); + expect(stopwatch.previousLaps).toEqual([ + '01:23:45', + '04:01:40', + '08:43:05', + ]); + }); +}); From 56fcef5069aa0706d54371dcd673fb87976d5336 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Apr 2026 01:24:08 +0530 Subject: [PATCH 39/61] Bump jest from 29.7.0 to 30.2.0 (#2773) Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) from 29.7.0 to 30.2.0. - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.2.0/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-version: 30.2.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 1754 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 1413 insertions(+), 343 deletions(-) diff --git a/package.json b/package.json index 268c5c098d..08761bbbfb 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0", + "jest": "^30.2.0", "prettier": "^3.6.2", "shelljs": "^0.10.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2af57a4d82..a0ee4d0bf3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 0.5.1 '@exercism/eslint-config-javascript': specifier: ^0.8.1 - version: 0.8.1(@babel/core@7.25.8)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@29.7.0(@types/node@24.3.0))(typescript@5.6.3) + version: 0.8.1(@babel/core@7.28.5)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3) '@jest/globals': specifier: ^29.7.0 version: 29.7.0 @@ -25,7 +25,7 @@ importers: version: 0.8.17 babel-jest: specifier: ^29.7.0 - version: 29.7.0(@babel/core@7.25.8) + version: 29.7.0(@babel/core@7.28.5) core-js: specifier: ~3.45.1 version: 3.45.1 @@ -42,8 +42,8 @@ importers: specifier: ^16.3.0 version: 16.3.0 jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@24.3.0) + specifier: ^30.2.0 + version: 30.2.0(@types/node@24.3.0) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -61,14 +61,26 @@ packages: resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.8': resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + engines: {node: '>=6.9.0'} + '@babel/core@7.25.8': resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} engines: {node: '>=6.9.0'} + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + engines: {node: '>=6.9.0'} + '@babel/eslint-parser@7.25.9': resolution: {integrity: sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -87,6 +99,10 @@ packages: resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.7': resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} engines: {node: '>=6.9.0'} @@ -99,6 +115,10 @@ packages: resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.25.7': resolution: {integrity: sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==} engines: {node: '>=6.9.0'} @@ -116,6 +136,10 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.25.7': resolution: {integrity: sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==} engines: {node: '>=6.9.0'} @@ -124,12 +148,22 @@ packages: resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.25.7': resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.25.7': resolution: {integrity: sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==} engines: {node: '>=6.9.0'} @@ -138,6 +172,10 @@ packages: resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.25.7': resolution: {integrity: sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==} engines: {node: '>=6.9.0'} @@ -162,14 +200,26 @@ packages: resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.7': resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.7': resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.25.7': resolution: {integrity: sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==} engines: {node: '>=6.9.0'} @@ -178,6 +228,10 @@ packages: resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.25.7': resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} @@ -194,6 +248,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7': resolution: {integrity: sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==} engines: {node: '>=6.9.0'} @@ -263,6 +322,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -279,6 +344,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -327,6 +398,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -652,17 +729,38 @@ packages: resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.7': resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.25.8': resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@emnapi/core@1.6.0': + resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} + + '@emnapi/runtime@1.6.0': + resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -754,42 +852,74 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/console@30.2.0': + resolution: {integrity: sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/core@30.2.0': + resolution: {integrity: sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true + '@jest/diff-sequences@30.0.1': + resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/environment@29.7.0': resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@30.2.0': + resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect-utils@29.7.0': resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@30.2.0': + resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect@29.7.0': resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@30.2.0': + resolution: {integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/fake-timers@29.7.0': resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@30.2.0': + resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/get-type@30.1.0': + resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/globals@29.7.0': resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/globals@30.2.0': + resolution: {integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/pattern@30.0.1': + resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/reporters@30.2.0': + resolution: {integrity: sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -800,30 +930,52 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@30.0.5': + resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/snapshot-utils@30.2.0': + resolution: {integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/source-map@30.0.1': + resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-result@30.2.0': + resolution: {integrity: sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-sequencer@30.2.0': + resolution: {integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@30.2.0': + resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@30.2.0': + resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -835,9 +987,18 @@ packages: '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} @@ -853,15 +1014,32 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.34.41': + resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} + '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@sinonjs/fake-timers@13.0.5': + resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -907,6 +1085,9 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@types/yargs@17.0.34': + resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} + '@typescript-eslint/scope-manager@8.10.0': resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -934,6 +1115,104 @@ packages: resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -971,8 +1250,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} anymatch@3.1.3: @@ -1007,14 +1286,28 @@ packages: peerDependencies: '@babel/core': ^7.8.0 + babel-jest@30.2.0: + resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-0 + babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} + babel-plugin-istanbul@7.0.1: + resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} + engines: {node: '>=12'} + babel-plugin-jest-hoist@29.6.3: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-plugin-jest-hoist@30.2.0: + resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + babel-plugin-polyfill-corejs2@0.4.11: resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: @@ -1035,15 +1328,30 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 + babel-preset-jest@30.2.0: + resolution: {integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + baseline-browser-mapping@2.8.20: + resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} + hasBin: true + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1059,6 +1367,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.27.0: + resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -1092,6 +1405,9 @@ packages: caniuse-lite@1.0.30001669: resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + caniuse-lite@1.0.30001751: + resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1108,8 +1424,12 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + ci-info@4.3.1: + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} + engines: {node: '>=8'} + + cjs-module-lexer@2.1.0: + resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -1123,8 +1443,8 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1161,11 +1481,6 @@ packages: core-js@3.45.1: resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1191,8 +1506,17 @@ packages: supports-color: optional: true - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.7.0: + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -1233,6 +1557,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + electron-to-chromium@1.5.240: + resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==} + electron-to-chromium@1.5.41: resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} @@ -1246,8 +1573,8 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} @@ -1386,14 +1713,18 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + exit-x@0.2.2: + resolution: {integrity: sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==} engines: {node: '>= 0.8.0'} expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect@30.2.0: + resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1509,6 +1840,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} @@ -1736,29 +2071,32 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.1.1: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-changed-files@30.2.0: + resolution: {integrity: sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-circus@30.2.0: + resolution: {integrity: sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-cli@30.2.0: + resolution: {integrity: sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -1766,15 +2104,18 @@ packages: node-notifier: optional: true - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-config@30.2.0: + resolution: {integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: '@types/node': '*' + esbuild-register: '>=3.4.0' ts-node: '>=9.0.0' peerDependenciesMeta: '@types/node': optional: true + esbuild-register: + optional: true ts-node: optional: true @@ -1782,17 +2123,21 @@ packages: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@30.2.0: + resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@30.2.0: + resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-each@30.2.0: + resolution: {integrity: sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-environment-node@30.2.0: + resolution: {integrity: sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} @@ -1802,22 +2147,38 @@ packages: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@30.2.0: + resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-leak-detector@30.2.0: + resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@30.2.0: + resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@30.2.0: + resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-mock@29.7.0: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@30.2.0: + resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-pnp-resolver@1.2.3: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -1831,45 +2192,61 @@ packages: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-regex-util@30.0.1: + resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@30.2.0: + resolution: {integrity: sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve@30.2.0: + resolution: {integrity: sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runner@30.2.0: + resolution: {integrity: sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-runtime@30.2.0: + resolution: {integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-snapshot@29.7.0: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-snapshot@30.2.0: + resolution: {integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@30.2.0: + resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@30.2.0: + resolution: {integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-watcher@30.2.0: + resolution: {integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-worker@29.7.0: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@30.2.0: + resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest@30.2.0: + resolution: {integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -1893,6 +2270,11 @@ packages: engines: {node: '>=6'} hasBin: true + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -1917,10 +2299,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -1950,6 +2328,9 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.1.0: resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} engines: {node: 20 || >=22} @@ -2005,6 +2386,11 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -2017,6 +2403,9 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.26: + resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2114,6 +2503,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} @@ -2125,6 +2518,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -2133,6 +2530,10 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} @@ -2158,16 +2559,16 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + pretty-format@30.2.0: + resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + pure-rand@7.0.1: + resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2219,10 +2620,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -2255,6 +2652,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -2302,9 +2704,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -2385,6 +2784,10 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -2406,6 +2809,9 @@ packages: peerDependencies: typescript: '>=4.2.0' + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2461,12 +2867,21 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -2512,6 +2927,10 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -2543,8 +2962,16 @@ snapshots: '@babel/highlight': 7.25.7 picocolors: 1.1.1 + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.25.8': {} + '@babel/compat-data@7.28.5': {} + '@babel/core@7.25.8': dependencies: '@ampproject/remapping': 2.3.0 @@ -2565,17 +2992,37 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.25.9(@babel/core@7.25.8)(eslint@9.28.0)': + '@babel/core@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.25.9(@babel/core@7.28.5)(eslint@9.28.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.28.5 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 9.28.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/eslint-plugin@7.25.9(@babel/eslint-parser@7.25.9(@babel/core@7.25.8)(eslint@9.28.0))(eslint@9.28.0)': + '@babel/eslint-plugin@7.25.9(@babel/eslint-parser@7.25.9(@babel/core@7.28.5)(eslint@9.28.0))(eslint@9.28.0)': dependencies: - '@babel/eslint-parser': 7.25.9(@babel/core@7.25.8)(eslint@9.28.0) + '@babel/eslint-parser': 7.25.9(@babel/core@7.28.5)(eslint@9.28.0) eslint: 9.28.0 eslint-rule-composer: 0.3.0 @@ -2586,6 +3033,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.25.7': dependencies: '@babel/types': 7.25.8 @@ -2605,6 +3060,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.5 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.27.0 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -2636,10 +3099,12 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-globals@7.28.0': {} + '@babel/helper-member-expression-to-functions@7.25.7': dependencies: '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -2650,6 +3115,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -2660,12 +3132,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.25.7': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.28.5 '@babel/helper-plugin-utils@7.25.7': {} + '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -2700,15 +3183,21 @@ snapshots: '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.25.7': {} + '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-wrap-function@7.25.7': dependencies: '@babel/template': 7.25.7 '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color @@ -2717,6 +3206,11 @@ snapshots: '@babel/template': 7.25.7 '@babel/types': 7.25.8 + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + '@babel/highlight@7.25.7': dependencies: '@babel/helper-validator-identifier': 7.25.7 @@ -2738,6 +3232,10 @@ snapshots: dependencies: '@babel/types': 7.25.8 + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -2782,21 +3280,41 @@ snapshots: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -2807,66 +3325,136 @@ snapshots: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.8)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.8)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.8)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.8)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.8)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.8)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.8)': + dependencies: + '@babel/core': 7.25.8 + '@babel/helper-plugin-utils': 7.25.7 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 @@ -3290,6 +3878,12 @@ snapshots: '@babel/parser': 7.25.8 '@babel/types': 7.25.8 + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@babel/traverse@7.25.7': dependencies: '@babel/code-frame': 7.25.7 @@ -3302,14 +3896,47 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.28.5': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@babel/types@7.25.8': dependencies: '@babel/helper-string-parser': 7.25.7 '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@bcoe/v8-coverage@0.2.3': {} + '@emnapi/core@1.6.0': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.6.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0)': dependencies: eslint: 9.28.0 @@ -3365,15 +3992,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@exercism/eslint-config-javascript@0.8.1(@babel/core@7.25.8)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@29.7.0(@types/node@24.3.0))(typescript@5.6.3)': + '@exercism/eslint-config-javascript@0.8.1(@babel/core@7.28.5)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3)': dependencies: - '@babel/eslint-parser': 7.25.9(@babel/core@7.25.8)(eslint@9.28.0) - '@babel/eslint-plugin': 7.25.9(@babel/eslint-parser@7.25.9(@babel/core@7.25.8)(eslint@9.28.0))(eslint@9.28.0) + '@babel/eslint-parser': 7.25.9(@babel/core@7.28.5)(eslint@9.28.0) + '@babel/eslint-plugin': 7.25.9(@babel/eslint-parser@7.25.9(@babel/core@7.28.5)(eslint@9.28.0))(eslint@9.28.0) '@eslint/js': 9.17.0 '@exercism/babel-preset-javascript': 0.5.1 eslint: 9.28.0 eslint-config-prettier: 9.1.0(eslint@9.28.0) - eslint-plugin-jest: 28.10.0(eslint@9.28.0)(jest@29.7.0(@types/node@24.3.0))(typescript@5.6.3) + eslint-plugin-jest: 28.10.0(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3) globals: 15.15.0 transitivePeerDependencies: - '@babel/core' @@ -3420,50 +4047,53 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jest/console@29.7.0': + '@jest/console@30.2.0': dependencies: - '@jest/types': 29.6.3 + '@jest/types': 30.2.0 '@types/node': 24.3.0 chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + jest-message-util: 30.2.0 + jest-util: 30.2.0 slash: 3.0.0 - '@jest/core@29.7.0': + '@jest/core@30.2.0': dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 30.2.0 + '@jest/pattern': 30.0.1 + '@jest/reporters': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 '@types/node': 24.3.0 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 + ci-info: 4.3.1 + exit-x: 0.2.2 graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@24.3.0) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 + jest-changed-files: 30.2.0 + jest-config: 30.2.0(@types/node@24.3.0) + jest-haste-map: 30.2.0 + jest-message-util: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-resolve-dependencies: 30.2.0 + jest-runner: 30.2.0 + jest-runtime: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 + jest-watcher: 30.2.0 micromatch: 4.0.8 - pretty-format: 29.7.0 + pretty-format: 30.2.0 slash: 3.0.0 - strip-ansi: 6.0.1 transitivePeerDependencies: - babel-plugin-macros + - esbuild-register - supports-color - ts-node + '@jest/diff-sequences@30.0.1': {} + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -3471,10 +4101,21 @@ snapshots: '@types/node': 24.3.0 jest-mock: 29.7.0 + '@jest/environment@30.2.0': + dependencies: + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 + '@types/node': 24.3.0 + jest-mock: 30.2.0 + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 + '@jest/expect-utils@30.2.0': + dependencies: + '@jest/get-type': 30.1.0 + '@jest/expect@29.7.0': dependencies: expect: 29.7.0 @@ -3482,6 +4123,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/expect@30.2.0': + dependencies: + expect: 30.2.0 + jest-snapshot: 30.2.0 + transitivePeerDependencies: + - supports-color + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -3491,6 +4139,17 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 + '@jest/fake-timers@30.2.0': + dependencies: + '@jest/types': 30.2.0 + '@sinonjs/fake-timers': 13.0.5 + '@types/node': 24.3.0 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-util: 30.2.0 + + '@jest/get-type@30.1.0': {} + '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 @@ -3500,31 +4159,44 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@29.7.0': + '@jest/globals@30.2.0': + dependencies: + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/types': 30.2.0 + jest-mock: 30.2.0 + transitivePeerDependencies: + - supports-color + + '@jest/pattern@30.0.1': + dependencies: + '@types/node': 24.3.0 + jest-regex-util: 30.0.1 + + '@jest/reporters@30.2.0': dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 + '@jest/console': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 '@types/node': 24.3.0 chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 + collect-v8-coverage: 1.0.3 + exit-x: 0.2.2 + glob: 10.4.5 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + jest-message-util: 30.2.0 + jest-util: 30.2.0 + jest-worker: 30.2.0 slash: 3.0.0 string-length: 4.0.2 - strip-ansi: 6.0.1 v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color @@ -3533,24 +4205,35 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 - '@jest/source-map@29.6.3': + '@jest/schemas@30.0.5': dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@sinclair/typebox': 0.34.41 + + '@jest/snapshot-utils@30.2.0': + dependencies: + '@jest/types': 30.2.0 + chalk: 4.1.2 + graceful-fs: 4.2.11 + natural-compare: 1.4.0 + + '@jest/source-map@30.0.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.31 callsites: 3.1.0 graceful-fs: 4.2.11 - '@jest/test-result@29.7.0': + '@jest/test-result@30.2.0': dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 30.2.0 + '@jest/types': 30.2.0 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 - '@jest/test-sequencer@29.7.0': + '@jest/test-sequencer@30.2.0': dependencies: - '@jest/test-result': 29.7.0 + '@jest/test-result': 30.2.0 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 + jest-haste-map: 30.2.0 slash: 3.0.0 '@jest/transform@29.7.0': @@ -3573,6 +4256,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/transform@30.2.0': + dependencies: + '@babel/core': 7.28.5 + '@jest/types': 30.2.0 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 7.0.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.2.0 + jest-regex-util: 30.0.1 + jest-util: 30.2.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -3582,23 +4285,57 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 + '@jest/types@30.2.0': + dependencies: + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.3.0 + '@types/yargs': 17.0.34 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.6.0 + '@emnapi/runtime': 1.6.0 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': dependencies: eslint-scope: 5.1.1 @@ -3615,8 +4352,15 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.2.9': {} + '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.34.41': {} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 @@ -3625,6 +4369,15 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers@13.0.5': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.25.8 @@ -3681,6 +4434,10 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@types/yargs@17.0.34': + dependencies: + '@types/yargs-parser': 21.0.3 + '@typescript-eslint/scope-manager@8.10.0': dependencies: '@typescript-eslint/types': 8.10.0 @@ -3696,7 +4453,7 @@ snapshots: fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.3 + semver: 7.7.3 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 @@ -3719,6 +4476,67 @@ snapshots: '@typescript-eslint/types': 8.10.0 eslint-visitor-keys: 3.4.3 + '@ungap/structured-clone@1.3.0': {} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -3750,7 +4568,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} anymatch@3.1.3: dependencies: @@ -3793,13 +4611,26 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - babel-jest@29.7.0(@babel/core@7.25.8): + babel-jest@29.7.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.28.5 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.25.8) + babel-preset-jest: 29.6.3(@babel/core@7.28.5) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-jest@30.2.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@jest/transform': 30.2.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.2.0(@babel/core@7.28.5) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -3816,6 +4647,16 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-istanbul@7.0.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 6.0.3 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.7 @@ -3823,6 +4664,10 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 + babel-plugin-jest-hoist@30.2.0: + dependencies: + '@types/babel__core': 7.20.5 + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.8): dependencies: '@babel/compat-data': 7.25.8 @@ -3866,14 +4711,60 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.8) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.8) - babel-preset-jest@29.6.3(@babel/core@7.25.8): - dependencies: - '@babel/core': 7.25.8 + babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) + + babel-preset-jest@29.6.3(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.8) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.5) + + babel-preset-jest@30.2.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + babel-plugin-jest-hoist: 30.2.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) balanced-match@1.0.2: {} + baseline-browser-mapping@2.8.20: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -3894,6 +4785,14 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.0) + browserslist@4.27.0: + dependencies: + baseline-browser-mapping: 2.8.20 + caniuse-lite: 1.0.30001751 + electron-to-chromium: 1.5.240 + node-releases: 2.0.26 + update-browserslist-db: 1.1.4(browserslist@4.27.0) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -3926,6 +4825,8 @@ snapshots: caniuse-lite@1.0.30001669: {} + caniuse-lite@1.0.30001751: {} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -3941,7 +4842,9 @@ snapshots: ci-info@3.9.0: {} - cjs-module-lexer@1.4.1: {} + ci-info@4.3.1: {} + + cjs-module-lexer@2.1.0: {} cliui@8.0.1: dependencies: @@ -3957,7 +4860,7 @@ snapshots: co@4.6.0: {} - collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.3: {} color-convert@1.9.3: dependencies: @@ -3987,21 +4890,6 @@ snapshots: core-js@3.45.1: {} - create-jest@29.7.0(@types/node@24.3.0): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@24.3.0) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -4030,7 +4918,11 @@ snapshots: dependencies: ms: 2.1.3 - dedent@1.5.3: {} + debug@4.4.3: + dependencies: + ms: 2.1.3 + + dedent@1.7.0: {} deep-is@0.1.4: {} @@ -4062,6 +4954,8 @@ snapshots: eastasianwidth@0.2.0: {} + electron-to-chromium@1.5.240: {} + electron-to-chromium@1.5.41: {} emittery@0.13.1: {} @@ -4070,7 +4964,7 @@ snapshots: emoji-regex@9.2.2: {} - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -4165,12 +5059,12 @@ snapshots: dependencies: eslint: 9.28.0 - eslint-plugin-jest@28.10.0(eslint@9.28.0)(jest@29.7.0(@types/node@24.3.0))(typescript@5.6.3): + eslint-plugin-jest@28.10.0(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3): dependencies: '@typescript-eslint/utils': 8.10.0(eslint@9.28.0)(typescript@5.6.3) eslint: 9.28.0 optionalDependencies: - jest: 29.7.0(@types/node@24.3.0) + jest: 30.2.0(@types/node@24.3.0) transitivePeerDependencies: - supports-color - typescript @@ -4267,7 +5161,7 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - exit@0.1.2: {} + exit-x@0.2.2: {} expect@29.7.0: dependencies: @@ -4277,6 +5171,15 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 + expect@30.2.0: + dependencies: + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-util: 30.2.0 + fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -4407,6 +5310,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@11.0.3: dependencies: foreground-child: 3.3.1 @@ -4604,11 +5516,11 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.25.8 - '@babel/parser': 7.25.8 + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.3 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -4618,96 +5530,104 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: + istanbul-lib-source-maps@5.0.6: dependencies: - debug: 4.4.1 + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jackspeak@4.1.1: dependencies: '@isaacs/cliui': 8.0.2 - jest-changed-files@29.7.0: + jest-changed-files@30.2.0: dependencies: execa: 5.1.1 - jest-util: 29.7.0 + jest-util: 30.2.0 p-limit: 3.1.0 - jest-circus@29.7.0: + jest-circus@30.2.0: dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/environment': 30.2.0 + '@jest/expect': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 '@types/node': 24.3.0 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.3 + dedent: 1.7.0 is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 + jest-each: 30.2.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-runtime: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 + pretty-format: 30.2.0 + pure-rand: 7.0.1 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@24.3.0): + jest-cli@30.2.0(@types/node@24.3.0): dependencies: - '@jest/core': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/core': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@24.3.0) - exit: 0.1.2 + exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@24.3.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 + jest-config: 30.2.0(@types/node@24.3.0) + jest-util: 30.2.0 + jest-validate: 30.2.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - babel-plugin-macros + - esbuild-register - supports-color - ts-node - jest-config@29.7.0(@types/node@24.3.0): + jest-config@30.2.0(@types/node@24.3.0): dependencies: - '@babel/core': 7.25.8 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.8) + '@babel/core': 7.28.5 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.0.1 + '@jest/test-sequencer': 30.2.0 + '@jest/types': 30.2.0 + babel-jest: 30.2.0(@babel/core@7.28.5) chalk: 4.1.2 - ci-info: 3.9.0 + ci-info: 4.3.1 deepmerge: 4.3.1 - glob: 7.2.3 + glob: 10.4.5 graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 + jest-circus: 30.2.0 + jest-docblock: 30.2.0 + jest-environment-node: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-runner: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 micromatch: 4.0.8 parse-json: 5.2.0 - pretty-format: 29.7.0 + pretty-format: 30.2.0 slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: @@ -4723,26 +5643,34 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-docblock@29.7.0: + jest-diff@30.2.0: + dependencies: + '@jest/diff-sequences': 30.0.1 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.2.0 + + jest-docblock@30.2.0: dependencies: detect-newline: 3.1.0 - jest-each@29.7.0: + jest-each@30.2.0: dependencies: - '@jest/types': 29.6.3 + '@jest/get-type': 30.1.0 + '@jest/types': 30.2.0 chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 + jest-util: 30.2.0 + pretty-format: 30.2.0 - jest-environment-node@29.7.0: + jest-environment-node@30.2.0: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/types': 30.2.0 '@types/node': 24.3.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 + jest-mock: 30.2.0 + jest-util: 30.2.0 + jest-validate: 30.2.0 jest-get-type@29.6.3: {} @@ -4762,10 +5690,25 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-leak-detector@29.7.0: + jest-haste-map@30.2.0: dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + '@jest/types': 30.2.0 + '@types/node': 24.3.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 30.0.1 + jest-util: 30.2.0 + jest-worker: 30.2.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@30.2.0: + dependencies: + '@jest/get-type': 30.1.0 + pretty-format: 30.2.0 jest-matcher-utils@29.7.0: dependencies: @@ -4774,6 +5717,13 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-matcher-utils@30.2.0: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.2.0 + pretty-format: 30.2.0 + jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.25.7 @@ -4786,85 +5736,105 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 + jest-message-util@30.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 30.2.0 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 30.2.0 + slash: 3.0.0 + stack-utils: 2.0.6 + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 24.3.0 jest-util: 29.7.0 - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + jest-mock@30.2.0: + dependencies: + '@jest/types': 30.2.0 + '@types/node': 24.3.0 + jest-util: 30.2.0 + + jest-pnp-resolver@1.2.3(jest-resolve@30.2.0): optionalDependencies: - jest-resolve: 29.7.0 + jest-resolve: 30.2.0 jest-regex-util@29.6.3: {} - jest-resolve-dependencies@29.7.0: + jest-regex-util@30.0.1: {} + + jest-resolve-dependencies@30.2.0: dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 + jest-regex-util: 30.0.1 + jest-snapshot: 30.2.0 transitivePeerDependencies: - supports-color - jest-resolve@29.7.0: + jest-resolve@30.2.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.8 - resolve.exports: 2.0.2 + jest-haste-map: 30.2.0 + jest-pnp-resolver: 1.2.3(jest-resolve@30.2.0) + jest-util: 30.2.0 + jest-validate: 30.2.0 slash: 3.0.0 + unrs-resolver: 1.11.1 - jest-runner@29.7.0: + jest-runner@30.2.0: dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/console': 30.2.0 + '@jest/environment': 30.2.0 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 '@types/node': 24.3.0 chalk: 4.1.2 emittery: 0.13.1 + exit-x: 0.2.2 graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 + jest-docblock: 30.2.0 + jest-environment-node: 30.2.0 + jest-haste-map: 30.2.0 + jest-leak-detector: 30.2.0 + jest-message-util: 30.2.0 + jest-resolve: 30.2.0 + jest-runtime: 30.2.0 + jest-util: 30.2.0 + jest-watcher: 30.2.0 + jest-worker: 30.2.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - jest-runtime@29.7.0: + jest-runtime@30.2.0: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 + '@jest/environment': 30.2.0 + '@jest/fake-timers': 30.2.0 + '@jest/globals': 30.2.0 + '@jest/source-map': 30.0.1 + '@jest/test-result': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 '@types/node': 24.3.0 chalk: 4.1.2 - cjs-module-lexer: 1.4.1 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 + cjs-module-lexer: 2.1.0 + collect-v8-coverage: 1.0.3 + glob: 10.4.5 graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 + jest-haste-map: 30.2.0 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-regex-util: 30.0.1 + jest-resolve: 30.2.0 + jest-snapshot: 30.2.0 + jest-util: 30.2.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: @@ -4895,6 +5865,32 @@ snapshots: transitivePeerDependencies: - supports-color + jest-snapshot@30.2.0: + dependencies: + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/types': 7.28.5 + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.2.0 + '@jest/transform': 30.2.0 + '@jest/types': 30.2.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) + chalk: 4.1.2 + expect: 30.2.0 + graceful-fs: 4.2.11 + jest-diff: 30.2.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-util: 30.2.0 + pretty-format: 30.2.0 + semver: 7.7.3 + synckit: 0.11.11 + transitivePeerDependencies: + - supports-color + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -4904,24 +5900,33 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@29.7.0: + jest-util@30.2.0: dependencies: - '@jest/types': 29.6.3 + '@jest/types': 30.2.0 + '@types/node': 24.3.0 + chalk: 4.1.2 + ci-info: 4.3.1 + graceful-fs: 4.2.11 + picomatch: 4.0.3 + + jest-validate@30.2.0: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.2.0 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 29.7.0 + pretty-format: 30.2.0 - jest-watcher@29.7.0: + jest-watcher@30.2.0: dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 + '@jest/test-result': 30.2.0 + '@jest/types': 30.2.0 '@types/node': 24.3.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.7.0 + jest-util: 30.2.0 string-length: 4.0.2 jest-worker@29.7.0: @@ -4931,15 +5936,24 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@24.3.0): + jest-worker@30.2.0: dependencies: - '@jest/core': 29.7.0 - '@jest/types': 29.6.3 + '@types/node': 24.3.0 + '@ungap/structured-clone': 1.3.0 + jest-util: 30.2.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@30.2.0(@types/node@24.3.0): + dependencies: + '@jest/core': 30.2.0 + '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@24.3.0) + jest-cli: 30.2.0(@types/node@24.3.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros + - esbuild-register - supports-color - ts-node @@ -4956,6 +5970,8 @@ snapshots: jsesc@3.0.2: {} + jsesc@3.1.0: {} + json-buffer@3.0.1: {} json-parse-even-better-errors@2.3.1: {} @@ -4972,8 +5988,6 @@ snapshots: kind-of@6.0.3: {} - kleur@3.0.3: {} - leven@3.1.0: {} levn@0.4.1: @@ -5000,6 +6014,8 @@ snapshots: lodash.merge@4.6.2: {} + lru-cache@10.4.3: {} + lru-cache@11.1.0: {} lru-cache@5.1.1: @@ -5013,7 +6029,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.7.3 makeerror@1.0.12: dependencies: @@ -5048,6 +6064,8 @@ snapshots: ms@2.1.3: {} + napi-postinstall@0.3.4: {} + natural-compare@1.4.0: {} node-environment-flags@1.0.6: @@ -5059,6 +6077,8 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.26: {} + normalize-path@3.0.0: {} npm-run-path@4.0.1: @@ -5135,8 +6155,8 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.25.7 - error-ex: 1.3.2 + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5152,6 +6172,11 @@ snapshots: path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + path-scurry@2.0.0: dependencies: lru-cache: 11.1.0 @@ -5161,10 +6186,14 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.3: {} + pify@4.0.1: {} pirates@4.0.6: {} + pirates@4.0.7: {} + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 @@ -5185,14 +6214,15 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - prompts@2.4.2: + pretty-format@30.2.0: dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 + '@jest/schemas': 30.0.5 + ansi-styles: 5.2.0 + react-is: 18.3.1 punycode@2.3.1: {} - pure-rand@6.1.0: {} + pure-rand@7.0.1: {} queue-microtask@1.2.3: {} @@ -5242,8 +6272,6 @@ snapshots: resolve-from@5.0.0: {} - resolve.exports@2.0.2: {} - resolve@1.22.8: dependencies: is-core-module: 2.15.1 @@ -5275,6 +6303,8 @@ snapshots: semver@7.6.3: {} + semver@7.7.3: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -5338,8 +6368,6 @@ snapshots: signal-exit@4.1.0: {} - sisteransi@1.0.5: {} - slash@3.0.0: {} source-map-support@0.5.13: @@ -5424,6 +6452,10 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + synckit@0.11.11: + dependencies: + '@pkgr/core': 0.2.9 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -5442,6 +6474,9 @@ snapshots: dependencies: typescript: 5.6.3 + tslib@2.8.1: + optional: true + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -5504,19 +6539,49 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + update-browserslist-db@1.1.1(browserslist@4.24.0): dependencies: browserslist: 4.24.0 escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.4(browserslist@4.27.0): + dependencies: + browserslist: 4.27.0 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -5558,7 +6623,7 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 strip-ansi: 7.1.0 @@ -5569,6 +6634,11 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + y18n@5.0.8: {} yallist@3.1.1: {} From 32576d485eba989b8d38f3627b5505187361c5e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Apr 2026 01:24:33 +0530 Subject: [PATCH 40/61] Bump core-js from 3.45.1 to 3.46.0 (#2792) Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.45.1 to 3.46.0. - [Release notes](https://github.com/zloirock/core-js/releases) - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/zloirock/core-js/commits/v3.46.0/packages/core-js) --- updated-dependencies: - dependency-name: core-js dependency-version: 3.46.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 08761bbbfb..5f2c9763ee 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^29.7.0", - "core-js": "~3.45.1", + "core-js": "~3.46.0", "diff": "^8.0.2", "eslint": "^9.28.0", "expect": "^29.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0ee4d0bf3..9957b091c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^29.7.0 version: 29.7.0(@babel/core@7.28.5) core-js: - specifier: ~3.45.1 - version: 3.45.1 + specifier: ~3.46.0 + version: 3.46.0 diff: specifier: ^8.0.2 version: 8.0.2 @@ -1478,8 +1478,8 @@ packages: core-js@3.38.1: resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} - core-js@3.45.1: - resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} + core-js@3.46.0: + resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -3223,7 +3223,7 @@ snapshots: '@babel/core': 7.25.8 '@babel/register': 7.25.7(@babel/core@7.25.8) commander: 6.2.1 - core-js: 3.45.1 + core-js: 3.46.0 node-environment-flags: 1.0.6 regenerator-runtime: 0.14.1 v8flags: 3.2.0 @@ -4888,7 +4888,7 @@ snapshots: core-js@3.38.1: {} - core-js@3.45.1: {} + core-js@3.46.0: {} cross-spawn@7.0.6: dependencies: From ddc7358910a5cc1a709e0bbe651deb162c2e4177 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Apr 2026 01:25:47 +0530 Subject: [PATCH 41/61] Bump actions/setup-node from 6.2.0 to 6.3.0 (#2831) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/6044e13b5dc448c55e2357c09f80417699197238...53b83947a5a98c8d113130e565377fae1a50d02f) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 6.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 2 +- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/pr.ci.js.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index 840c00a1c3..10caaa9b51 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f with: node-version: 22.x cache: 'pnpm' diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 0a06164ee1..1a7436e4fa 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -18,7 +18,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f with: node-version: 22.x cache: 'pnpm' @@ -42,7 +42,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f with: node-version: ${{ matrix.node-version }} cache: 'pnpm' diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 35219e600b..2a89723750 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -28,7 +28,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f with: node-version: 22.x cache: 'pnpm' @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 + uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f with: node-version: ${{ matrix.node-version }} cache: 'pnpm' From 7cc784115bac9a71d2617624738f372a863b38bf Mon Sep 17 00:00:00 2001 From: Joyal George K J <144530321+joyalgeorgekj@users.noreply.github.com> Date: Thu, 30 Apr 2026 22:56:37 +0530 Subject: [PATCH 42/61] [FIX]: `Coordinate Transformation` JSDoc type error in offline mode (#2835) * Update JSDoc to use CallbackType for return types * Update JSDoc types from function to CallbackType * Apply suggestion from @SleeplessByte --------- Co-authored-by: Derk-Jan Karrenbeld --- .../coordinate-transformation.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/exercises/concept/coordinate-transformation/coordinate-transformation.js b/exercises/concept/coordinate-transformation/coordinate-transformation.js index 03fd4ff20b..561faa2d3e 100644 --- a/exercises/concept/coordinate-transformation/coordinate-transformation.js +++ b/exercises/concept/coordinate-transformation/coordinate-transformation.js @@ -4,6 +4,10 @@ // the @ts-check directive. It will give you helpful autocompletion when // implementing this exercise. +/** + * @typedef {function (number, number): [number, number]} CallbackType + */ + /** * Create a function that returns a function making use of a closure to * perform a repeatable 2d translation of a coordinate pair. @@ -11,7 +15,7 @@ * @param {number} dx the translate x component * @param {number} dy the translate y component * - * @returns {function} a function which takes an x, y parameter, returns the + * @returns {CallbackType} a function which takes an x, y parameter, returns the * translated coordinate pair in the form [x, y] */ export function translate2d(dx, dy) { @@ -25,7 +29,7 @@ export function translate2d(dx, dy) { * @param {number} sx the amount to scale the x component * @param {number} sy the amount to scale the y component * - * @returns {function} a function which takes an x, y parameter, returns the + * @returns {CallbackType} a function which takes an x, y parameter, returns the * scaled coordinate pair in the form [x, y] */ export function scale2d(sx, sy) { @@ -36,10 +40,10 @@ export function scale2d(sx, sy) { * Create a composition function that returns a function that combines two * functions to perform a repeatable transformation * - * @param {function} f the first function to apply - * @param {function} g the second function to apply + * @param {CallbackType} f the first function to apply + * @param {CallbackType} g the second function to apply * - * @returns {function} a function which takes an x, y parameter, returns the + * @returns {CallbackType} a function which takes an x, y parameter, returns the * transformed coordinate pair in the form [x, y] */ export function composeTransform(f, g) { @@ -50,11 +54,12 @@ export function composeTransform(f, g) { * Return a function that memoizes the last result. If the arguments are the same as the last call, * then memoized result returned. * - * @param {function} f the transformation function to memoize, assumes takes two arguments 'x' and 'y' + * @param {CallbackType} f the transformation function to memoize, assumes takes two arguments 'x' and 'y' * - * @returns {function} a function which takes x and y arguments, and will either return the saved result + * @returns {CallbackType} a function which takes x and y arguments, and will either return the saved result * if the arguments are the same on subsequent calls, or compute a new result if they are different. */ export function memoizeTransform(f) { + // To narrow the type of the return variable, add `/** @type {[number, number]} */` above it. throw new Error('Remove this line and implement the function'); } From c8ef6ff9e6c004cd03f2500a6441a5788cee261b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 11:49:36 +0400 Subject: [PATCH 43/61] Bump babel-jest from 29.7.0 to 30.3.0 (#2772) Bumps [babel-jest](https://github.com/jestjs/jest/tree/HEAD/packages/babel-jest) from 29.7.0 to 30.3.0. - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.3.0/packages/babel-jest) --- updated-dependencies: - dependency-name: babel-jest dependency-version: 30.2.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 772 ++++++++++++++++++++++++++++--------------------- 2 files changed, 450 insertions(+), 324 deletions(-) diff --git a/package.json b/package.json index 5f2c9763ee..b431978bbb 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@jest/globals": "^29.7.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", + "babel-jest": "^30.3.0", "core-js": "~3.46.0", "diff": "^8.0.2", "eslint": "^9.28.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9957b091c6..cfa17ed33c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 0.5.1 '@exercism/eslint-config-javascript': specifier: ^0.8.1 - version: 0.8.1(@babel/core@7.28.5)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3) + version: 0.8.1(@babel/core@7.29.0)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3) '@jest/globals': specifier: ^29.7.0 version: 29.7.0 @@ -24,8 +24,8 @@ importers: specifier: ^0.8.17 version: 0.8.17 babel-jest: - specifier: ^29.7.0 - version: 29.7.0(@babel/core@7.28.5) + specifier: ^30.3.0 + version: 30.3.0(@babel/core@7.29.0) core-js: specifier: ~3.46.0 version: 3.46.0 @@ -65,20 +65,24 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.8': resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.5': - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} + '@babel/compat-data@7.29.3': + resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} engines: {node: '>=6.9.0'} '@babel/core@7.25.8': resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} '@babel/eslint-parser@7.25.9': @@ -103,6 +107,10 @@ packages: resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.7': resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} engines: {node: '>=6.9.0'} @@ -115,8 +123,8 @@ packages: resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.25.7': @@ -148,8 +156,8 @@ packages: resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} '@babel/helper-module-transforms@7.25.7': @@ -158,8 +166,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -172,8 +180,8 @@ packages: resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.25.7': @@ -228,8 +236,8 @@ packages: resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} '@babel/highlight@7.25.7': @@ -248,8 +256,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true @@ -322,8 +330,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -729,24 +737,24 @@ packages: resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} '@babel/traverse@7.25.7': resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} '@babel/types@7.25.8': resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -848,8 +856,8 @@ packages: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + '@istanbuljs/schema@0.1.6': + resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} engines: {node: '>=8'} '@jest/console@30.2.0': @@ -958,6 +966,10 @@ packages: resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/transform@30.3.0': + resolution: {integrity: sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -966,6 +978,10 @@ packages: resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@30.3.0': + resolution: {integrity: sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1043,14 +1059,14 @@ packages: '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} @@ -1088,6 +1104,9 @@ packages: '@types/yargs@17.0.34': resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + '@typescript-eslint/scope-manager@8.10.0': resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1280,18 +1299,18 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - babel-jest@30.2.0: resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: '@babel/core': ^7.11.0 || ^8.0.0-0 + babel-jest@30.3.0: + resolution: {integrity: sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-0 + babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -1300,14 +1319,14 @@ packages: resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} engines: {node: '>=12'} - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-jest-hoist@30.2.0: resolution: {integrity: sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + babel-plugin-jest-hoist@30.3.0: + resolution: {integrity: sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + babel-plugin-polyfill-corejs2@0.4.11: resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: @@ -1333,30 +1352,34 @@ packages: peerDependencies: '@babel/core': ^7.0.0 || ^8.0.0-0 - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - babel-preset-jest@30.2.0: resolution: {integrity: sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: '@babel/core': ^7.11.0 || ^8.0.0-beta.1 + babel-preset-jest@30.3.0: + resolution: {integrity: sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.8.20: - resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==} + baseline-browser-mapping@2.10.24: + resolution: {integrity: sha512-I2NkZOOrj2XuguvWCK6OVh9GavsNjZjK908Rq3mIBK25+GD8vPX5w2WdxVqnQ7xx3SrZJiCiZFu+/Oz50oSYSA==} + engines: {node: '>=6.0.0'} hasBin: true brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} + + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -1367,8 +1390,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserslist@4.27.0: - resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1405,8 +1428,8 @@ packages: caniuse-lite@1.0.30001669: resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} - caniuse-lite@1.0.30001751: - resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} + caniuse-lite@1.0.30001791: + resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1428,6 +1451,10 @@ packages: resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + cjs-module-lexer@2.1.0: resolution: {integrity: sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==} @@ -1557,8 +1584,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.240: - resolution: {integrity: sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==} + electron-to-chromium@1.5.348: + resolution: {integrity: sha512-QC2X59nRlycQQMc4ZXjSVBX+tSgJfgRtcrYHbIZLgOV2dCvefoQGegLR7lLXKgpPpSuVmJU19LMzGrSa2C7k3Q==} electron-to-chromium@1.5.41: resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} @@ -1842,16 +1869,18 @@ packages: glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -2151,6 +2180,10 @@ packages: resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-haste-map@30.3.0: + resolution: {integrity: sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-leak-detector@30.2.0: resolution: {integrity: sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2228,6 +2261,10 @@ packages: resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@30.3.0: + resolution: {integrity: sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-validate@30.2.0: resolution: {integrity: sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2244,6 +2281,10 @@ packages: resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-worker@30.3.0: + resolution: {integrity: sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest@30.2.0: resolution: {integrity: sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2257,8 +2298,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true js-yaml@4.1.0: @@ -2375,8 +2416,11 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} minipass@7.1.2: @@ -2403,8 +2447,8 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - node-releases@2.0.26: - resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==} + node-releases@2.0.38: + resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -2518,10 +2562,18 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -2657,6 +2709,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -2876,8 +2933,8 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -2968,9 +3025,15 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.25.8': {} - '@babel/compat-data@7.28.5': {} + '@babel/compat-data@7.29.3': {} '@babel/core@7.25.8': dependencies: @@ -2992,17 +3055,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -3012,17 +3075,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.25.9(@babel/core@7.28.5)(eslint@9.28.0)': + '@babel/eslint-parser@7.25.9(@babel/core@7.29.0)(eslint@9.28.0)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 eslint: 9.28.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/eslint-plugin@7.25.9(@babel/eslint-parser@7.25.9(@babel/core@7.28.5)(eslint@9.28.0))(eslint@9.28.0)': + '@babel/eslint-plugin@7.25.9(@babel/eslint-parser@7.25.9(@babel/core@7.29.0)(eslint@9.28.0))(eslint@9.28.0)': dependencies: - '@babel/eslint-parser': 7.25.9(@babel/core@7.28.5)(eslint@9.28.0) + '@babel/eslint-parser': 7.25.9(@babel/core@7.29.0)(eslint@9.28.0) eslint: 9.28.0 eslint-rule-composer: 0.3.0 @@ -3035,20 +3098,28 @@ snapshots: '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.7': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.29.0 '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': dependencies: '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -3060,11 +3131,11 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-compilation-targets@7.27.2': + '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.28.5 + '@babel/compat-data': 7.29.3 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.27.0 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -3092,7 +3163,7 @@ snapshots: dependencies: '@babel/core': 7.25.8 '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.1 lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -3103,22 +3174,22 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.7': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.28.5 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.25.7': dependencies: '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.27.1': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -3132,22 +3203,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.7': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 '@babel/helper-plugin-utils@7.25.7': {} - '@babel/helper-plugin-utils@7.27.1': {} + '@babel/helper-plugin-utils@7.28.6': {} '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.8)': dependencies: @@ -3170,14 +3241,14 @@ snapshots: '@babel/helper-simple-access@7.25.7': dependencies: '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.7': dependencies: '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -3195,9 +3266,9 @@ snapshots: '@babel/helper-wrap-function@7.25.7': dependencies: - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.28.5 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -3206,10 +3277,10 @@ snapshots: '@babel/template': 7.25.7 '@babel/types': 7.25.8 - '@babel/helpers@7.28.4': + '@babel/helpers@7.29.2': dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 '@babel/highlight@7.25.7': dependencies: @@ -3232,9 +3303,9 @@ snapshots: dependencies: '@babel/types': 7.25.8 - '@babel/parser@7.28.5': + '@babel/parser@7.29.3': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.8)': dependencies: @@ -3278,42 +3349,42 @@ snapshots: '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.25.8)': dependencies: @@ -3325,135 +3396,130 @@ snapshots: '@babel/core': 7.25.8 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.8)': dependencies: @@ -3878,11 +3944,11 @@ snapshots: '@babel/parser': 7.25.8 '@babel/types': 7.25.8 - '@babel/template@7.27.2': + '@babel/template@7.28.6': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 '@babel/traverse@7.25.7': dependencies: @@ -3896,14 +3962,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.28.5': + '@babel/traverse@7.29.0': dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/parser': 7.29.3 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -3914,7 +3980,7 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 - '@babel/types@7.28.5': + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 @@ -3992,10 +4058,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@exercism/eslint-config-javascript@0.8.1(@babel/core@7.28.5)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3)': + '@exercism/eslint-config-javascript@0.8.1(@babel/core@7.29.0)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3)': dependencies: - '@babel/eslint-parser': 7.25.9(@babel/core@7.28.5)(eslint@9.28.0) - '@babel/eslint-plugin': 7.25.9(@babel/eslint-parser@7.25.9(@babel/core@7.28.5)(eslint@9.28.0))(eslint@9.28.0) + '@babel/eslint-parser': 7.25.9(@babel/core@7.29.0)(eslint@9.28.0) + '@babel/eslint-plugin': 7.25.9(@babel/eslint-parser@7.25.9(@babel/core@7.29.0)(eslint@9.28.0))(eslint@9.28.0) '@eslint/js': 9.17.0 '@exercism/babel-preset-javascript': 0.5.1 eslint: 9.28.0 @@ -4042,10 +4108,10 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 - '@istanbuljs/schema@0.1.3': {} + '@istanbuljs/schema@0.1.6': {} '@jest/console@30.2.0': dependencies: @@ -4238,9 +4304,9 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.29.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -4250,7 +4316,7 @@ snapshots: jest-regex-util: 29.6.3 jest-util: 29.7.0 micromatch: 4.0.8 - pirates: 4.0.6 + pirates: 4.0.7 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: @@ -4258,7 +4324,7 @@ snapshots: '@jest/transform@30.2.0': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@jest/types': 30.2.0 '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 7.0.1 @@ -4276,6 +4342,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/transform@30.3.0': + dependencies: + '@babel/core': 7.29.0 + '@jest/types': 30.3.0 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 7.0.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.3.0 + jest-regex-util: 30.0.1 + jest-util: 30.3.0 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -4295,6 +4380,16 @@ snapshots: '@types/yargs': 17.0.34 chalk: 4.1.2 + '@jest/types@30.3.0': + dependencies: + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.3.0 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -4304,7 +4399,7 @@ snapshots: dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: @@ -4380,24 +4475,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 - '@types/babel__generator': 7.6.8 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.28.0 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.29.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 + '@babel/parser': 7.29.3 + '@babel/types': 7.29.0 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.29.0 '@types/estree@1.0.7': {} @@ -4438,6 +4533,10 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + '@typescript-eslint/scope-manager@8.10.0': dependencies: '@typescript-eslint/types': 8.10.0 @@ -4449,11 +4548,11 @@ snapshots: dependencies: '@typescript-eslint/types': 8.10.0 '@typescript-eslint/visitor-keys': 8.10.0 - debug: 4.4.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.3 + minimatch: 9.0.9 + semver: 7.7.4 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 @@ -4573,7 +4672,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 argparse@1.0.10: dependencies: @@ -4611,26 +4710,26 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - babel-jest@29.7.0(@babel/core@7.28.5): + babel-jest@30.2.0(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.5 - '@jest/transform': 29.7.0 + '@babel/core': 7.29.0 + '@jest/transform': 30.2.0 '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.28.5) + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.2.0(@babel/core@7.29.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-jest@30.2.0(@babel/core@7.28.5): + babel-jest@30.3.0(@babel/core@7.29.0): dependencies: - '@babel/core': 7.28.5 - '@jest/transform': 30.2.0 + '@babel/core': 7.29.0 + '@jest/transform': 30.3.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 7.0.1 - babel-preset-jest: 30.2.0(@babel/core@7.28.5) + babel-preset-jest: 30.3.0(@babel/core@7.29.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -4639,9 +4738,9 @@ snapshots: babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 + '@istanbuljs/schema': 0.1.6 istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: @@ -4649,22 +4748,19 @@ snapshots: babel-plugin-istanbul@7.0.1: dependencies: - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 + '@istanbuljs/schema': 0.1.6 istanbul-lib-instrument: 6.0.3 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@29.6.3: + babel-plugin-jest-hoist@30.2.0: dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - babel-plugin-jest-hoist@30.2.0: + babel-plugin-jest-hoist@30.3.0: dependencies: '@types/babel__core': 7.20.5 @@ -4711,66 +4807,52 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.8) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.8) - babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.5): - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) - '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.28.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) - - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) - - babel-preset-jest@29.6.3(@babel/core@7.28.5): - dependencies: - '@babel/core': 7.28.5 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.5) - - babel-preset-jest@30.2.0(@babel/core@7.28.5): - dependencies: - '@babel/core': 7.28.5 + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) + + babel-preset-jest@30.2.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 babel-plugin-jest-hoist: 30.2.0 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + + babel-preset-jest@30.3.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + babel-plugin-jest-hoist: 30.3.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) balanced-match@1.0.2: {} - baseline-browser-mapping@2.8.20: {} + baseline-browser-mapping@2.10.24: {} brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@1.1.14: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.0: dependencies: balanced-match: 1.0.2 @@ -4785,13 +4867,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.0) - browserslist@4.27.0: + browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.8.20 - caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.240 - node-releases: 2.0.26 - update-browserslist-db: 1.1.4(browserslist@4.27.0) + baseline-browser-mapping: 2.10.24 + caniuse-lite: 1.0.30001791 + electron-to-chromium: 1.5.348 + node-releases: 2.0.38 + update-browserslist-db: 1.2.3(browserslist@4.28.2) bser@2.1.1: dependencies: @@ -4825,7 +4907,7 @@ snapshots: caniuse-lite@1.0.30001669: {} - caniuse-lite@1.0.30001751: {} + caniuse-lite@1.0.30001791: {} chalk@2.4.2: dependencies: @@ -4844,6 +4926,8 @@ snapshots: ci-info@4.3.1: {} + ci-info@4.4.0: {} + cjs-module-lexer@2.1.0: {} cliui@8.0.1: @@ -4954,7 +5038,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.240: {} + electron-to-chromium@1.5.348: {} electron-to-chromium@1.5.41: {} @@ -5314,7 +5398,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 - minimatch: 9.0.5 + minimatch: 9.0.9 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 @@ -5333,7 +5417,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -5506,9 +5590,9 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.25.8 - '@babel/parser': 7.25.8 - '@istanbuljs/schema': 0.1.3 + '@babel/core': 7.29.0 + '@babel/parser': 7.29.3 + '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: @@ -5516,11 +5600,11 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.5 - '@babel/parser': 7.28.5 - '@istanbuljs/schema': 0.1.3 + '@babel/core': 7.29.0 + '@babel/parser': 7.29.3 + '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 - semver: 7.7.3 + semver: 7.7.4 transitivePeerDependencies: - supports-color @@ -5606,12 +5690,12 @@ snapshots: jest-config@30.2.0(@types/node@24.3.0): dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@jest/get-type': 30.1.0 '@jest/pattern': 30.0.1 '@jest/test-sequencer': 30.2.0 '@jest/types': 30.2.0 - babel-jest: 30.2.0(@babel/core@7.28.5) + babel-jest: 30.2.0(@babel/core@7.29.0) chalk: 4.1.2 ci-info: 4.3.1 deepmerge: 4.3.1 @@ -5705,6 +5789,21 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + jest-haste-map@30.3.0: + dependencies: + '@jest/types': 30.3.0 + '@types/node': 24.3.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 30.0.1 + jest-util: 30.3.0 + jest-worker: 30.3.0 + picomatch: 4.0.4 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + jest-leak-detector@30.2.0: dependencies: '@jest/get-type': 30.1.0 @@ -5867,17 +5966,17 @@ snapshots: jest-snapshot@30.2.0: dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.0 '@babel/generator': 7.28.5 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) - '@babel/types': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.29.0) + '@babel/types': 7.29.0 '@jest/expect-utils': 30.2.0 '@jest/get-type': 30.1.0 '@jest/snapshot-utils': 30.2.0 '@jest/transform': 30.2.0 '@jest/types': 30.2.0 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) chalk: 4.1.2 expect: 30.2.0 graceful-fs: 4.2.11 @@ -5909,6 +6008,15 @@ snapshots: graceful-fs: 4.2.11 picomatch: 4.0.3 + jest-util@30.3.0: + dependencies: + '@jest/types': 30.3.0 + '@types/node': 24.3.0 + chalk: 4.1.2 + ci-info: 4.4.0 + graceful-fs: 4.2.11 + picomatch: 4.0.4 + jest-validate@30.2.0: dependencies: '@jest/get-type': 30.1.0 @@ -5944,6 +6052,14 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 + jest-worker@30.3.0: + dependencies: + '@types/node': 24.3.0 + '@ungap/structured-clone': 1.3.0 + jest-util: 30.3.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + jest@30.2.0(@types/node@24.3.0): dependencies: '@jest/core': 30.2.0 @@ -5959,7 +6075,7 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 @@ -6029,7 +6145,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 makeerror@1.0.12: dependencies: @@ -6056,9 +6172,13 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@9.0.5: + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.14 + + minimatch@9.0.9: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.1.0 minipass@7.1.2: {} @@ -6077,7 +6197,7 @@ snapshots: node-releases@2.0.18: {} - node-releases@2.0.26: {} + node-releases@2.0.38: {} normalize-path@3.0.0: {} @@ -6155,7 +6275,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.27.1 + '@babel/code-frame': 7.29.0 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -6186,8 +6306,12 @@ snapshots: picomatch@2.3.1: {} + picomatch@2.3.2: {} + picomatch@4.0.3: {} + picomatch@4.0.4: {} + pify@4.0.1: {} pirates@4.0.6: {} @@ -6305,6 +6429,8 @@ snapshots: semver@7.7.3: {} + semver@7.7.4: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -6458,9 +6584,9 @@ snapshots: test-exclude@6.0.0: dependencies: - '@istanbuljs/schema': 0.1.3 + '@istanbuljs/schema': 0.1.6 glob: 7.2.3 - minimatch: 3.1.2 + minimatch: 3.1.5 tmpl@1.0.5: {} @@ -6569,9 +6695,9 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - update-browserslist-db@1.1.4(browserslist@4.27.0): + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 From 078b99817219e34d289b843940bbdd93dfe24fe7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 12:09:40 +0400 Subject: [PATCH 44/61] Bump @jest/globals from 29.7.0 to 30.3.0 (#2774) Bumps [@jest/globals](https://github.com/jestjs/jest/tree/HEAD/packages/jest-globals) from 29.7.0 to 30.3.0. - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.3.0/packages/jest-globals) --- updated-dependencies: - dependency-name: "@jest/globals" dependency-version: 30.2.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 502 +++++++++++++++++++------------------------------ 2 files changed, 193 insertions(+), 311 deletions(-) diff --git a/package.json b/package.json index b431978bbb..37e0bb8e93 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", "babel-jest": "^30.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cfa17ed33c..bd439d4191 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: ^0.8.1 version: 0.8.1(@babel/core@7.29.0)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.28.0)(jest@30.2.0(@types/node@24.3.0))(typescript@5.6.3) '@jest/globals': - specifier: ^29.7.0 - version: 29.7.0 + specifier: ^30.3.0 + version: 30.3.0 '@types/node': specifier: ^24.3.0 version: 24.3.0 @@ -346,14 +346,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.25.7': - resolution: {integrity: sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==} + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -400,14 +400,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.25.7': - resolution: {integrity: sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==} + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -877,14 +877,18 @@ packages: resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/diff-sequences@30.3.0': + resolution: {integrity: sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/environment@30.2.0': resolution: {integrity: sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/environment@30.3.0': + resolution: {integrity: sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect-utils@29.7.0': resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -893,34 +897,38 @@ packages: resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@30.3.0': + resolution: {integrity: sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/expect@30.2.0': resolution: {integrity: sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@30.3.0': + resolution: {integrity: sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/fake-timers@30.2.0': resolution: {integrity: sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/fake-timers@30.3.0': + resolution: {integrity: sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/get-type@30.1.0': resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/globals@30.2.0': resolution: {integrity: sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/globals@30.3.0': + resolution: {integrity: sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/pattern@30.0.1': resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -946,6 +954,10 @@ packages: resolution: {integrity: sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/snapshot-utils@30.3.0': + resolution: {integrity: sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/source-map@30.0.1': resolution: {integrity: sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -958,10 +970,6 @@ packages: resolution: {integrity: sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/transform@30.2.0': resolution: {integrity: sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -1047,12 +1055,12 @@ packages: '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@sinonjs/fake-timers@13.0.5': resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} + '@sinonjs/fake-timers@15.3.2': + resolution: {integrity: sha512-mrn35Jl2pCpns+mE3HaZa1yPN5EYCRgiMI+135COjr2hr8Cls9DXqIZ57vZe2cz7y2XVSq92tcs6kGQcT1J8Rw==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -1071,9 +1079,6 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -1098,9 +1103,6 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@types/yargs@17.0.34': resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} @@ -1311,10 +1313,6 @@ packages: peerDependencies: '@babel/core': ^7.11.0 || ^8.0.0-0 - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - babel-plugin-istanbul@7.0.1: resolution: {integrity: sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==} engines: {node: '>=12'} @@ -1342,11 +1340,6 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - babel-preset-current-node-syntax@1.2.0: resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} peerDependencies: @@ -1752,6 +1745,10 @@ packages: resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + expect@30.3.0: + resolution: {integrity: sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2088,10 +2085,6 @@ packages: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - istanbul-lib-instrument@6.0.3: resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} @@ -2156,6 +2149,10 @@ packages: resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-diff@30.3.0: + resolution: {integrity: sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-docblock@30.2.0: resolution: {integrity: sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2172,10 +2169,6 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@30.2.0: resolution: {integrity: sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2196,6 +2189,10 @@ packages: resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-matcher-utils@30.3.0: + resolution: {integrity: sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2204,14 +2201,18 @@ packages: resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@30.3.0: + resolution: {integrity: sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-mock@30.2.0: resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-mock@30.3.0: + resolution: {integrity: sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-pnp-resolver@1.2.3: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} @@ -2221,10 +2222,6 @@ packages: jest-resolve: optional: true - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-regex-util@30.0.1: resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2245,14 +2242,14 @@ packages: resolution: {integrity: sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-snapshot@30.2.0: resolution: {integrity: sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-snapshot@30.3.0: + resolution: {integrity: sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2273,10 +2270,6 @@ packages: resolution: {integrity: sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-worker@30.2.0: resolution: {integrity: sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2615,6 +2608,10 @@ packages: resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-format@30.3.0: + resolution: {integrity: sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2699,11 +2696,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -2845,6 +2837,10 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.11.12: + resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} + engines: {node: ^14.18.0 || >=16.0.0} + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -2980,10 +2976,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -3346,41 +3338,21 @@ snapshots: dependencies: '@babel/core': 7.25.8 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -3401,39 +3373,24 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.8)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': @@ -3441,82 +3398,47 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 @@ -4160,12 +4082,7 @@ snapshots: '@jest/diff-sequences@30.0.1': {} - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 24.3.0 - jest-mock: 29.7.0 + '@jest/diff-sequences@30.3.0': {} '@jest/environment@30.2.0': dependencies: @@ -4174,6 +4091,13 @@ snapshots: '@types/node': 24.3.0 jest-mock: 30.2.0 + '@jest/environment@30.3.0': + dependencies: + '@jest/fake-timers': 30.3.0 + '@jest/types': 30.3.0 + '@types/node': 24.3.0 + jest-mock: 30.3.0 + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 @@ -4182,12 +4106,9 @@ snapshots: dependencies: '@jest/get-type': 30.1.0 - '@jest/expect@29.7.0': + '@jest/expect-utils@30.3.0': dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color + '@jest/get-type': 30.1.0 '@jest/expect@30.2.0': dependencies: @@ -4196,14 +4117,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/fake-timers@29.7.0': + '@jest/expect@30.3.0': dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 24.3.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 + expect: 30.3.0 + jest-snapshot: 30.3.0 + transitivePeerDependencies: + - supports-color '@jest/fake-timers@30.2.0': dependencies: @@ -4214,16 +4133,16 @@ snapshots: jest-mock: 30.2.0 jest-util: 30.2.0 - '@jest/get-type@30.1.0': {} - - '@jest/globals@29.7.0': + '@jest/fake-timers@30.3.0': dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color + '@jest/types': 30.3.0 + '@sinonjs/fake-timers': 15.3.2 + '@types/node': 24.3.0 + jest-message-util: 30.3.0 + jest-mock: 30.3.0 + jest-util: 30.3.0 + + '@jest/get-type@30.1.0': {} '@jest/globals@30.2.0': dependencies: @@ -4234,6 +4153,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/globals@30.3.0': + dependencies: + '@jest/environment': 30.3.0 + '@jest/expect': 30.3.0 + '@jest/types': 30.3.0 + jest-mock: 30.3.0 + transitivePeerDependencies: + - supports-color + '@jest/pattern@30.0.1': dependencies: '@types/node': 24.3.0 @@ -4282,6 +4210,13 @@ snapshots: graceful-fs: 4.2.11 natural-compare: 1.4.0 + '@jest/snapshot-utils@30.3.0': + dependencies: + '@jest/types': 30.3.0 + chalk: 4.1.2 + graceful-fs: 4.2.11 + natural-compare: 1.4.0 + '@jest/source-map@30.0.1': dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -4302,26 +4237,6 @@ snapshots: jest-haste-map: 30.2.0 slash: 3.0.0 - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.29.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - '@jest/transform@30.2.0': dependencies: '@babel/core': 7.29.0 @@ -4367,7 +4282,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 24.3.0 - '@types/yargs': 17.0.33 + '@types/yargs': 17.0.35 chalk: 4.1.2 '@jest/types@30.2.0': @@ -4460,11 +4375,11 @@ snapshots: dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@10.3.0': + '@sinonjs/fake-timers@13.0.5': dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers@13.0.5': + '@sinonjs/fake-timers@15.3.2': dependencies: '@sinonjs/commons': 3.0.1 @@ -4496,10 +4411,6 @@ snapshots: '@types/estree@1.0.7': {} - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 24.3.0 - '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-report@3.0.3': @@ -4525,10 +4436,6 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - '@types/yargs@17.0.34': dependencies: '@types/yargs-parser': 21.0.3 @@ -4736,16 +4643,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.28.6 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.6 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - babel-plugin-istanbul@7.0.1: dependencies: '@babel/helper-plugin-utils': 7.28.6 @@ -4788,25 +4685,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.8): - dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.8) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.8) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.8) - '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.8) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.8) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.8) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.8) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.8) - babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 @@ -5264,6 +5142,15 @@ snapshots: jest-mock: 30.2.0 jest-util: 30.2.0 + expect@30.3.0: + dependencies: + '@jest/expect-utils': 30.3.0 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.3.0 + jest-message-util: 30.3.0 + jest-mock: 30.3.0 + jest-util: 30.3.0 + fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -5588,16 +5475,6 @@ snapshots: istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.3 - '@istanbuljs/schema': 0.1.6 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.29.0 @@ -5734,6 +5611,13 @@ snapshots: chalk: 4.1.2 pretty-format: 30.2.0 + jest-diff@30.3.0: + dependencies: + '@jest/diff-sequences': 30.3.0 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.3.0 + jest-docblock@30.2.0: dependencies: detect-newline: 3.1.0 @@ -5758,22 +5642,6 @@ snapshots: jest-get-type@29.6.3: {} - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 24.3.0 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - jest-haste-map@30.2.0: dependencies: '@jest/types': 30.2.0 @@ -5823,6 +5691,13 @@ snapshots: jest-diff: 30.2.0 pretty-format: 30.2.0 + jest-matcher-utils@30.3.0: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.3.0 + pretty-format: 30.3.0 + jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.25.7 @@ -5847,11 +5722,17 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@29.7.0: + jest-message-util@30.3.0: dependencies: - '@jest/types': 29.6.3 - '@types/node': 24.3.0 - jest-util: 29.7.0 + '@babel/code-frame': 7.29.0 + '@jest/types': 30.3.0 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + picomatch: 4.0.4 + pretty-format: 30.3.0 + slash: 3.0.0 + stack-utils: 2.0.6 jest-mock@30.2.0: dependencies: @@ -5859,12 +5740,16 @@ snapshots: '@types/node': 24.3.0 jest-util: 30.2.0 + jest-mock@30.3.0: + dependencies: + '@jest/types': 30.3.0 + '@types/node': 24.3.0 + jest-util: 30.3.0 + jest-pnp-resolver@1.2.3(jest-resolve@30.2.0): optionalDependencies: jest-resolve: 30.2.0 - jest-regex-util@29.6.3: {} - jest-regex-util@30.0.1: {} jest-resolve-dependencies@30.2.0: @@ -5939,31 +5824,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.25.8 - '@babel/generator': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.25.8) - '@babel/types': 7.25.8 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.8) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - jest-snapshot@30.2.0: dependencies: '@babel/core': 7.29.0 @@ -5990,6 +5850,32 @@ snapshots: transitivePeerDependencies: - supports-color + jest-snapshot@30.3.0: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 + '@jest/expect-utils': 30.3.0 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.3.0 + '@jest/transform': 30.3.0 + '@jest/types': 30.3.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + chalk: 4.1.2 + expect: 30.3.0 + graceful-fs: 4.2.11 + jest-diff: 30.3.0 + jest-matcher-utils: 30.3.0 + jest-message-util: 30.3.0 + jest-util: 30.3.0 + pretty-format: 30.3.0 + semver: 7.7.4 + synckit: 0.11.12 + transitivePeerDependencies: + - supports-color + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -6037,13 +5923,6 @@ snapshots: jest-util: 30.2.0 string-length: 4.0.2 - jest-worker@29.7.0: - dependencies: - '@types/node': 24.3.0 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - jest-worker@30.2.0: dependencies: '@types/node': 24.3.0 @@ -6344,6 +6223,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-format@30.3.0: + dependencies: + '@jest/schemas': 30.0.5 + ansi-styles: 5.2.0 + react-is: 18.3.1 + punycode@2.3.1: {} pure-rand@7.0.1: {} @@ -6425,8 +6310,6 @@ snapshots: semver@6.3.1: {} - semver@7.6.3: {} - semver@7.7.3: {} semver@7.7.4: {} @@ -6582,6 +6465,10 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 + synckit@0.11.12: + dependencies: + '@pkgr/core': 0.2.9 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.6 @@ -6755,11 +6642,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 From fff3724f909f899eb63e0271d815f634def9256d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 12:10:23 +0400 Subject: [PATCH 45/61] Bump diff from 8.0.2 to 8.0.3 (#2809) Bumps [diff](https://github.com/kpdecker/jsdiff) from 8.0.2 to 8.0.3. - [Changelog](https://github.com/kpdecker/jsdiff/blob/master/release-notes.md) - [Commits](https://github.com/kpdecker/jsdiff/compare/v8.0.2...v8.0.3) --- updated-dependencies: - dependency-name: diff dependency-version: 8.0.3 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 37e0bb8e93..70e5fa68f1 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@types/shelljs": "^0.8.17", "babel-jest": "^30.3.0", "core-js": "~3.46.0", - "diff": "^8.0.2", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd439d4191..61a01e3a9b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: ~3.46.0 version: 3.46.0 diff: - specifier: ^8.0.2 - version: 8.0.2 + specifier: ^8.0.3 + version: 8.0.3 eslint: specifier: ^9.28.0 version: 9.28.0 @@ -1566,8 +1566,8 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff@8.0.2: - resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} + diff@8.0.3: + resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} engines: {node: '>=0.3.1'} dunder-proto@1.0.1: @@ -4906,7 +4906,7 @@ snapshots: diff-sequences@29.6.3: {} - diff@8.0.2: {} + diff@8.0.3: {} dunder-proto@1.0.1: dependencies: From 00fe608b1be1cf8d161e38880f8d6789d916e53e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 May 2026 16:45:43 +0400 Subject: [PATCH 46/61] Bump actions/github-script from 8.0.0 to 9.0.0 (#2836) Bumps [actions/github-script](https://github.com/actions/github-script) from 8.0.0 to 9.0.0. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 6 +++--- .github/workflows/action-sync.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index 10caaa9b51..cc68c9a6ff 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -13,7 +13,7 @@ jobs: steps: - name: 'Post acknowledgement that it will format code' continue-on-error: true # Never fail the build if this fails - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -95,7 +95,7 @@ jobs: - name: 'Post acknowledgement that it has formatted the code' continue-on-error: true # Never fail the build if this fails - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -109,7 +109,7 @@ jobs: - name: 'Post reminder to trigger build manually' continue-on-error: true # Never fail the build if this fails if: steps.fork_status.outputs.fork == 'true' - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/action-sync.yml b/.github/workflows/action-sync.yml index a184d04905..7ea0a2a96f 100644 --- a/.github/workflows/action-sync.yml +++ b/.github/workflows/action-sync.yml @@ -13,7 +13,7 @@ jobs: steps: - name: 'Post acknowledgement that it will sync exercises' continue-on-error: true # Never fail the build if this fails - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -87,7 +87,7 @@ jobs: - name: 'Post acknowledgement that it has synced the code' continue-on-error: true # Never fail the build if this fails - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -101,7 +101,7 @@ jobs: - name: 'Post reminder to trigger build manually' continue-on-error: true # Never fail the build if this fails if: steps.fork_status.outputs.fork == 'true' - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | From c692080be769d319a18264723476e7804b536a04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 May 2026 16:46:03 +0400 Subject: [PATCH 47/61] Bump actions/setup-node from 6.3.0 to 6.4.0 (#2837) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.3.0 to 6.4.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/53b83947a5a98c8d113130e565377fae1a50d02f...48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 6.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 2 +- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/pr.ci.js.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index cc68c9a6ff..df002f03e0 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: node-version: 22.x cache: 'pnpm' diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 1a7436e4fa..73a5158e26 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -18,7 +18,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: node-version: 22.x cache: 'pnpm' @@ -42,7 +42,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: node-version: ${{ matrix.node-version }} cache: 'pnpm' diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 2a89723750..ac808a1576 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -28,7 +28,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: node-version: 22.x cache: 'pnpm' @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f + uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: node-version: ${{ matrix.node-version }} cache: 'pnpm' From 266d3fdc8b801f131473daf750d731af20c1ff80 Mon Sep 17 00:00:00 2001 From: emgordon154 <30507443+emgordon154@users.noreply.github.com> Date: Wed, 13 May 2026 02:33:42 -0700 Subject: [PATCH 48/61] Clarify URL format in Regular Chatbot exercise's instructions.md (#2713) * Clarify URL format in instructions.md Currently, the instructions say to get the URLs, but it doesn't specify what "URLs" are. (https://exercism.org/tracks/javascript/exercises/regular-chatbot is a valid URL, but this exercise does not test for such complicated URLs, and the reference solution in exemplar.js would not reject it.) It would be frustrating for a user to exert their effort trying to write a regex for URLs the exercise isn't testing for (especially if the tests were to reject a valid URL, though I haven't checked if they currently could). * [CI] Format code --------- Co-authored-by: github-actions[bot] --- exercises/concept/regular-chatbot/.docs/instructions.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/exercises/concept/regular-chatbot/.docs/instructions.md b/exercises/concept/regular-chatbot/.docs/instructions.md index 779fa40688..0dd94a71bb 100644 --- a/exercises/concept/regular-chatbot/.docs/instructions.md +++ b/exercises/concept/regular-chatbot/.docs/instructions.md @@ -68,11 +68,13 @@ Example of Conversation: - **Chatbot**: Hey username, I would like to learn how to code in JavaScript, do you know any cool website where I could learn? - **User**: I learned a lot from [exercism.org](http://exercism.org) -Implement the function `getURL()` which is able to return an array with just the link of each website. +Implement the function `getURL()` which is able to return an array with just the link of each website. Writing a regex to recognize any URL would be very complicated, but the Chatbot only needs to read simple URLs. For this exercise, a URL is any `"."`-delimited sequence of words. ```javascript -getURL('I learned a lot from exercism.org'); -// => ["exercism.org"]; +getURL( + 'I learned a lot from exercism.org and developer.mozilla.org, but I found ts39.es very boring!', +); +// => ["exercism.org", "developer.mozilla.org", "ts39.es"]; ``` ## Greet the user From 722742f8056cb4e0d9f79ddf33a534bbfde3b586 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 12:35:50 +0300 Subject: [PATCH 49/61] =?UTF-8?q?=F0=9F=A4=96=20Auto-sync=20docs,=20metada?= =?UTF-8?q?ta,=20and=20filepaths=20(#2800)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../practice/allergies/.meta/config.json | 2 +- exercises/practice/bob/.meta/config.json | 2 +- .../practice/book-store/.meta/config.json | 2 +- .../practice/camicia/.docs/instructions.md | 4 +- exercises/practice/etl/.meta/config.json | 2 +- .../practice/gigasecond/.meta/config.json | 2 +- exercises/practice/grep/.meta/config.json | 2 +- .../.docs/instructions.md | 6 +- .../kindergarten-garden/.meta/config.json | 2 +- .../practice/markdown/.docs/instructions.md | 2 +- exercises/practice/matrix/.meta/config.json | 2 +- .../ocr-numbers/.docs/instructions.md | 80 ++++++------------- .../ocr-numbers/.docs/introduction.md | 6 ++ .../practice/phone-number/.meta/config.json | 2 +- .../practice/pig-latin/.meta/config.json | 2 +- .../practice/prism/.docs/instructions.md | 4 +- exercises/practice/prism/.meta/config.json | 2 +- .../relative-distance/.docs/instructions.md | 2 +- .../practice/rest-api/.docs/instructions.md | 2 +- .../practice/reverse-string/.meta/config.json | 2 +- .../practice/space-age/.meta/config.json | 2 +- exercises/practice/triangle/.meta/config.json | 2 +- 22 files changed, 55 insertions(+), 79 deletions(-) create mode 100644 exercises/practice/ocr-numbers/.docs/introduction.md diff --git a/exercises/practice/allergies/.meta/config.json b/exercises/practice/allergies/.meta/config.json index 7b04fe6c24..6aa4013041 100644 --- a/exercises/practice/allergies/.meta/config.json +++ b/exercises/practice/allergies/.meta/config.json @@ -26,7 +26,7 @@ }, "blurb": "Given a person's allergy score, determine whether or not they're allergic to a given item, and their full list of allergies.", "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu", + "source_url": "https://www.turing.edu/", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/bob/.meta/config.json b/exercises/practice/bob/.meta/config.json index 153830ffee..2c8cd78fcb 100644 --- a/exercises/practice/bob/.meta/config.json +++ b/exercises/practice/bob/.meta/config.json @@ -29,7 +29,7 @@ }, "blurb": "Bob is a lackadaisical teenager. In conversation, his responses are very limited.", "source": "Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial.", - "source_url": "https://pine.fm/LearnToProgram/?Chapter=06", + "source_url": "https://pine.fm/LearnToProgram/chap_06.html", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/book-store/.meta/config.json b/exercises/practice/book-store/.meta/config.json index a27d472a8e..613f425460 100644 --- a/exercises/practice/book-store/.meta/config.json +++ b/exercises/practice/book-store/.meta/config.json @@ -15,7 +15,7 @@ }, "blurb": "To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts of multiple-book purchases.", "source": "Inspired by the harry potter kata from Cyber-Dojo.", - "source_url": "https://cyber-dojo.org", + "source_url": "https://cyber-dojo.org/creator/home", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/camicia/.docs/instructions.md b/exercises/practice/camicia/.docs/instructions.md index 5ce3c755d0..db62fcef27 100644 --- a/exercises/practice/camicia/.docs/instructions.md +++ b/exercises/practice/camicia/.docs/instructions.md @@ -78,7 +78,7 @@ status: `"loop"`, cards: 8, tricks: 3 - **Cards**: total number of cards played throughout the game - **Tricks**: number of times the central pile was collected -```exercism/advanced +~~~~exercism/advanced For those who want to take on a more exciting challenge, the hunt for other records for the longest game with an end is still open. There are 653,534,134,886,878,245,000 (approximately 654 quintillion) possibilities, and we haven't calculated them all yet! -``` +~~~~ diff --git a/exercises/practice/etl/.meta/config.json b/exercises/practice/etl/.meta/config.json index 592c6932ea..96eb0bf2a7 100644 --- a/exercises/practice/etl/.meta/config.json +++ b/exercises/practice/etl/.meta/config.json @@ -26,7 +26,7 @@ }, "blurb": "Change the data format for scoring a game to more easily add other languages.", "source": "Based on an exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu", + "source_url": "https://www.turing.edu/", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/gigasecond/.meta/config.json b/exercises/practice/gigasecond/.meta/config.json index 3f378534c5..ea565718f8 100644 --- a/exercises/practice/gigasecond/.meta/config.json +++ b/exercises/practice/gigasecond/.meta/config.json @@ -27,7 +27,7 @@ }, "blurb": "Given a moment, determine the moment that would be after a gigasecond has passed.", "source": "Chapter 9 in Chris Pine's online Learn to Program tutorial.", - "source_url": "https://pine.fm/LearnToProgram/?Chapter=09", + "source_url": "https://pine.fm/LearnToProgram/chap_09.html", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/grep/.meta/config.json b/exercises/practice/grep/.meta/config.json index 7fdcac0960..4e6e96b3bf 100644 --- a/exercises/practice/grep/.meta/config.json +++ b/exercises/practice/grep/.meta/config.json @@ -19,7 +19,7 @@ }, "blurb": "Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.", "source": "Conversation with Nate Foster.", - "source_url": "https://www.cs.cornell.edu/Courses/cs3110/2014sp/hw/0/ps0.pdf", + "source_url": "https://www.cs.cornell.edu/courses/cs3110/2014sp/hw/0/ps0.pdf", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/killer-sudoku-helper/.docs/instructions.md b/exercises/practice/killer-sudoku-helper/.docs/instructions.md index 9f5cb1368f..4153c3e9e1 100644 --- a/exercises/practice/killer-sudoku-helper/.docs/instructions.md +++ b/exercises/practice/killer-sudoku-helper/.docs/instructions.md @@ -76,10 +76,10 @@ You can also find Killer Sudokus in varying difficulty in numerous newspapers, a The screenshots above have been generated using F-Puzzles.com, a Puzzle Setting Tool by Eric Fox. -[sudoku-rules]: https://masteringsudoku.com/sudoku-rules-beginners/ -[killer-guide]: https://masteringsudoku.com/killer-sudoku/ +[sudoku-rules]: https://en.wikipedia.org/wiki/Sudoku +[killer-guide]: https://en.wikipedia.org/wiki/Killer_sudoku [one-solution-img]: https://assets.exercism.org/images/exercises/killer-sudoku-helper/example1.png [four-solutions-img]: https://assets.exercism.org/images/exercises/killer-sudoku-helper/example2.png [not-possible-img]: https://assets.exercism.org/images/exercises/killer-sudoku-helper/example3.png -[clover-puzzle]: https://app.crackingthecryptic.com/sudoku/HqTBn3Pr6R +[clover-puzzle]: https://sudokupad.app/HqTBn3Pr6R [goodliffe-video]: https://youtu.be/c_NjEbFEeW0?t=1180 diff --git a/exercises/practice/kindergarten-garden/.meta/config.json b/exercises/practice/kindergarten-garden/.meta/config.json index a5f555ad04..a1698780f6 100644 --- a/exercises/practice/kindergarten-garden/.meta/config.json +++ b/exercises/practice/kindergarten-garden/.meta/config.json @@ -23,7 +23,7 @@ }, "blurb": "Given a diagram, determine which plants each child in the kindergarten class is responsible for.", "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu", + "source_url": "https://www.turing.edu/", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/markdown/.docs/instructions.md b/exercises/practice/markdown/.docs/instructions.md index 9b756d9917..b3f3044c66 100644 --- a/exercises/practice/markdown/.docs/instructions.md +++ b/exercises/practice/markdown/.docs/instructions.md @@ -10,4 +10,4 @@ Your challenge is to re-write this code to make it easier to read and maintain w It would be helpful if you made notes of what you did in your refactoring in comments so reviewers can see that, but it isn't strictly necessary. The most important thing is to make the code better! -[markdown]: https://guides.github.com/features/mastering-markdown/ +[markdown]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax diff --git a/exercises/practice/matrix/.meta/config.json b/exercises/practice/matrix/.meta/config.json index 29ad82dd02..b04a67ff5d 100644 --- a/exercises/practice/matrix/.meta/config.json +++ b/exercises/practice/matrix/.meta/config.json @@ -26,7 +26,7 @@ }, "blurb": "Given a string representing a matrix of numbers, return the rows and columns of that matrix.", "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu", + "source_url": "https://www.turing.edu/", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/ocr-numbers/.docs/instructions.md b/exercises/practice/ocr-numbers/.docs/instructions.md index 7beb257795..8a391ce4f6 100644 --- a/exercises/practice/ocr-numbers/.docs/instructions.md +++ b/exercises/practice/ocr-numbers/.docs/instructions.md @@ -1,79 +1,47 @@ # Instructions -Given a 3 x 4 grid of pipes, underscores, and spaces, determine which number is represented, or whether it is garbled. +Optical Character Recognition or OCR is software that converts images of text into machine-readable text. +Given a grid of characters representing some digits, convert the grid to a string of digits. +If the grid has multiple rows of cells, the rows should be separated in the output with a `","`. -## Step One +- The grid is made of one of more lines of cells. +- Each line of the grid is made of one or more cells. +- Each cell is three columns wide and four rows high (3x4) and represents one digit. +- Digits are drawn using pipes (`"|"`), underscores (`"_"`), and spaces (`" "`). -To begin with, convert a simple binary font to a string containing 0 or 1. +## Edge cases -The binary font uses pipes and underscores, four rows high and three columns wide. +- If the input is not a valid size, your program should indicate there is an error. +- If the input is the correct size, but a cell is not recognizable, your program should output a `"?"` for that character. -```text - _ # - | | # zero. - |_| # - # the fourth row is always blank -``` +## Examples -Is converted to "0" - -```text - # - | # one. - | # - # (blank fourth row) -``` - -Is converted to "1" - -If the input is the correct size, but not recognizable, your program should return '?' - -If the input is the incorrect size, your program should return an error. - -## Step Two - -Update your program to recognize multi-character binary strings, replacing garbled numbers with ? - -## Step Three - -Update your program to recognize all numbers 0 through 9, both individually and as part of a larger string. - -```text - _ - _| -|_ - -``` - -Is converted to "2" +The following input (without the comments) is converted to `"1234567890"`. ```text _ _ _ _ _ _ _ _ # - | _| _||_||_ |_ ||_||_|| | # decimal numbers. + | _| _||_||_ |_ ||_||_|| | # Decimal numbers. ||_ _| | _||_| ||_| _||_| # - # fourth line is always blank + # The fourth line is always blank, ``` -Is converted to "1234567890" - -## Step Four +The following input is converted to `"123,456,789"`. -Update your program to handle multiple numbers, one per line. -When converting several lines, join the lines with commas. + ```text - _ _ + _ _ | _| _| ||_ _| - - _ _ -|_||_ |_ + + _ _ +|_||_ |_ | _||_| - - _ _ _ + + _ _ _ ||_||_| ||_| _| - + ``` -Is converted to "123,456,789". + diff --git a/exercises/practice/ocr-numbers/.docs/introduction.md b/exercises/practice/ocr-numbers/.docs/introduction.md new file mode 100644 index 0000000000..366d76062c --- /dev/null +++ b/exercises/practice/ocr-numbers/.docs/introduction.md @@ -0,0 +1,6 @@ +# Introduction + +Your best friend Marta recently landed their dream job working with a local history museum's collections. +Knowing of your interests in programming, they confide in you about an issue at work for an upcoming exhibit on computing history. +A local university's math department had donated several boxes of historical printouts, but given the poor condition of the documents, the decision has been made to digitize the text. +However, the university's old printer had some quirks in how text was represented, and your friend could use your help to extract the data successfully. diff --git a/exercises/practice/phone-number/.meta/config.json b/exercises/practice/phone-number/.meta/config.json index 66b2bd7569..82503d7126 100644 --- a/exercises/practice/phone-number/.meta/config.json +++ b/exercises/practice/phone-number/.meta/config.json @@ -28,7 +28,7 @@ }, "blurb": "Clean up user-entered phone numbers so that they can be sent SMS messages.", "source": "Exercise by the JumpstartLab team for students at The Turing School of Software and Design.", - "source_url": "https://turing.edu", + "source_url": "https://www.turing.edu/", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/pig-latin/.meta/config.json b/exercises/practice/pig-latin/.meta/config.json index a1fc612643..a7fac9d227 100644 --- a/exercises/practice/pig-latin/.meta/config.json +++ b/exercises/practice/pig-latin/.meta/config.json @@ -25,7 +25,7 @@ }, "blurb": "Implement a program that translates from English to Pig Latin.", "source": "The Pig Latin exercise at Test First Teaching by Ultrasaurus", - "source_url": "https://github.com/ultrasaurus/test-first-teaching/blob/master/learn_ruby/pig_latin/", + "source_url": "https://github.com/ultrasaurus/test-first-teaching/tree/master/learn_ruby/pig_latin", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/prism/.docs/instructions.md b/exercises/practice/prism/.docs/instructions.md index a68c80defd..13cefae8c5 100644 --- a/exercises/practice/prism/.docs/instructions.md +++ b/exercises/practice/prism/.docs/instructions.md @@ -10,9 +10,9 @@ Consider this crystal array configuration: { "start": { "x": 0, "y": 0, "angle": 0 }, "prisms": [ - { "id": 3, "x": 30, "y": 10, "angle": 45 }, { "id": 1, "x": 10, "y": 10, "angle": -90 }, { "id": 2, "x": 10, "y": 0, "angle": 90 }, + { "id": 3, "x": 30, "y": 10, "angle": 45 }, { "id": 4, "x": 20, "y": 0, "angle": 0 } ] } @@ -34,3 +34,5 @@ The beam was traveling at 90°, so after refraction it's now at 0° (90° + (-90 **Step 3**: From position `(10, 10)`, the beam travels horizontally and encounters **Crystal #3** at position `(30, 10)`. This crystal refracts the beam by 45°, changing its direction to 45°. The beam continues into empty space beyond the array. + +!["A graph showing the path of a laser beam refracted through three prisms."](https://assets.exercism.org/images/exercises/prism/laser_path-light.svg) diff --git a/exercises/practice/prism/.meta/config.json b/exercises/practice/prism/.meta/config.json index 31c9ad08f8..36275c7258 100644 --- a/exercises/practice/prism/.meta/config.json +++ b/exercises/practice/prism/.meta/config.json @@ -13,7 +13,7 @@ ".meta/proof.ci.js" ] }, - "blurb": "Calculate the path of a laser through reflective prisms.", + "blurb": "Calculate the path of a laser through refractive prisms.", "source": "FraSanga", "source_url": "https://github.com/exercism/problem-specifications/pull/2625", "custom": { diff --git a/exercises/practice/relative-distance/.docs/instructions.md b/exercises/practice/relative-distance/.docs/instructions.md index 9046aee7c8..64ca4e4374 100644 --- a/exercises/practice/relative-distance/.docs/instructions.md +++ b/exercises/practice/relative-distance/.docs/instructions.md @@ -36,4 +36,4 @@ Isla and Tariq are siblings and have a separation of 1. Similarly, this implementation would report a separation of 2 from you to your father's brother. ~~~~ -[six-bacons]: https://en.m.wikipedia.org/wiki/Six_Degrees_of_Kevin_Bacon +[six-bacons]: https://en.wikipedia.org/wiki/Six_Degrees_of_Kevin_Bacon diff --git a/exercises/practice/rest-api/.docs/instructions.md b/exercises/practice/rest-api/.docs/instructions.md index af223ba4b4..e889b1bf20 100644 --- a/exercises/practice/rest-api/.docs/instructions.md +++ b/exercises/practice/rest-api/.docs/instructions.md @@ -43,6 +43,6 @@ Your task is to implement a simple [RESTful API][restful-wikipedia] that receive [restful-wikipedia]: https://en.wikipedia.org/wiki/Representational_state_transfer [iou]: https://en.wikipedia.org/wiki/IOU -[github-rest]: https://developer.github.com/v3/ +[github-rest]: https://docs.github.com/en/rest [reddit-rest]: https://web.archive.org/web/20231202231149/https://www.reddit.com/dev/api/ [restfulapi]: https://restfulapi.net/ diff --git a/exercises/practice/reverse-string/.meta/config.json b/exercises/practice/reverse-string/.meta/config.json index 284ffe7700..d62b96b3ca 100644 --- a/exercises/practice/reverse-string/.meta/config.json +++ b/exercises/practice/reverse-string/.meta/config.json @@ -22,7 +22,7 @@ }, "blurb": "Reverse a given string.", "source": "Introductory challenge to reverse an input string", - "source_url": "https://medium.freecodecamp.org/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb", + "source_url": "https://www.freecodecamp.org/news/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/space-age/.meta/config.json b/exercises/practice/space-age/.meta/config.json index d7d1b2ae57..35737171a9 100644 --- a/exercises/practice/space-age/.meta/config.json +++ b/exercises/practice/space-age/.meta/config.json @@ -30,7 +30,7 @@ }, "blurb": "Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.", "source": "Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial.", - "source_url": "https://pine.fm/LearnToProgram/?Chapter=01", + "source_url": "https://pine.fm/LearnToProgram/chap_01.html", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, diff --git a/exercises/practice/triangle/.meta/config.json b/exercises/practice/triangle/.meta/config.json index c344aa6eb8..42ae8c171e 100644 --- a/exercises/practice/triangle/.meta/config.json +++ b/exercises/practice/triangle/.meta/config.json @@ -26,7 +26,7 @@ }, "blurb": "Determine if a triangle is equilateral, isosceles, or scalene.", "source": "The Ruby Koans triangle project, parts 1 & 2", - "source_url": "https://web.archive.org/web/20220831105330/http://rubykoans.com", + "source_url": "https://www.rubykoans.com/", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, From 7eea95fdb71b13879dcdba877f74f5cb6cddca0f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 12:38:11 +0300 Subject: [PATCH 50/61] Bump @babel/plugin-transform-modules-systemjs (#2840) Bumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.25.9 to 7.29.4. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-modules-systemjs" dependency-version: 7.29.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../practice/relative-distance/pnpm-lock.yaml | 4071 +++++------------ 1 file changed, 1255 insertions(+), 2816 deletions(-) diff --git a/exercises/practice/relative-distance/pnpm-lock.yaml b/exercises/practice/relative-distance/pnpm-lock.yaml index 9b52cbebca..0b902124af 100644 --- a/exercises/practice/relative-distance/pnpm-lock.yaml +++ b/exercises/practice/relative-distance/pnpm-lock.yaml @@ -5,6 +5,7 @@ settings: excludeLinksFromLockfile: false importers: + .: devDependencies: '@exercism/babel-preset-javascript': @@ -12,1115 +13,740 @@ importers: version: 0.5.1 '@exercism/eslint-config-javascript': specifier: ^0.8.1 - version: 0.8.1(@babel/core@7.26.10)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.25.1)(jest@29.7.0(@types/node@22.15.2))(typescript@5.8.3) + version: 0.8.1(@babel/core@7.26.10)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.39.4)(jest@29.7.0(@types/node@24.12.3))(typescript@5.8.3) '@jest/globals': specifier: ^29.7.0 version: 29.7.0 '@types/node': - specifier: ^22.10.3 - version: 22.15.2 + specifier: ^24.3.0 + version: 24.12.3 '@types/shelljs': - specifier: ^0.8.15 - version: 0.8.15 + specifier: ^0.8.17 + version: 0.8.17 babel-jest: specifier: ^29.7.0 version: 29.7.0(@babel/core@7.26.10) core-js: - specifier: ~3.40.0 - version: 3.40.0 + specifier: ~3.42.0 + version: 3.42.0 diff: - specifier: ^7.0.0 - version: 7.0.0 + specifier: ^8.0.2 + version: 8.0.4 eslint: - specifier: ^9.19.0 - version: 9.25.1 + specifier: ^9.28.0 + version: 9.39.4 expect: specifier: ^29.7.0 version: 29.7.0 globals: - specifier: ^15.14.0 - version: 15.15.0 + specifier: ^16.3.0 + version: 16.5.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.2) + version: 29.7.0(@types/node@24.12.3) packages: + '@ampproject/remapping@2.3.0': - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} '@babel/code-frame@7.26.2': - resolution: - { - integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} '@babel/compat-data@7.26.8': - resolution: - { - integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} '@babel/core@7.26.10': - resolution: - { - integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + engines: {node: '>=6.9.0'} '@babel/eslint-parser@7.27.0': - resolution: - { - integrity: sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==, - } - engines: { node: ^10.13.0 || ^12.13.0 || >=14.0.0 } + resolution: {integrity: sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 '@babel/eslint-plugin@7.27.0': - resolution: - { - integrity: sha512-b8YXz2RX72kf2mOsmvtRdk4GMmpp4bUsvaI0cLJrUsvltMXvELiJPYsy6ikoHqzx40kKdw/3DEBgA8wqCLzJxA==, - } - engines: { node: ^10.13.0 || ^12.13.0 || >=14.0.0 } + resolution: {integrity: sha512-b8YXz2RX72kf2mOsmvtRdk4GMmpp4bUsvaI0cLJrUsvltMXvELiJPYsy6ikoHqzx40kKdw/3DEBgA8wqCLzJxA==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/eslint-parser': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 '@babel/generator@7.27.0': - resolution: - { - integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': - resolution: - { - integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.27.0': - resolution: - { - integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} + engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.27.0': - resolution: - { - integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-create-regexp-features-plugin@7.27.0': - resolution: - { - integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-define-polyfill-provider@0.6.4': - resolution: - { - integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==, - } + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 '@babel/helper-member-expression-to-functions@7.25.9': - resolution: - { - integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.25.9': - resolution: - { - integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} '@babel/helper-module-transforms@7.26.0': - resolution: - { - integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-optimise-call-expression@7.25.9': - resolution: - { - integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.26.5': - resolution: - { - integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.25.9': - resolution: - { - integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-replace-supers@7.26.5': - resolution: - { - integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: - { - integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.25.9': - resolution: - { - integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.25.9': - resolution: - { - integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.25.9': - resolution: - { - integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} '@babel/helper-wrap-function@7.25.9': - resolution: - { - integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} '@babel/helpers@7.27.0': - resolution: - { - integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} + engines: {node: '>=6.9.0'} '@babel/node@7.26.0': - resolution: - { - integrity: sha512-5ASMjh42hbnqyCOK68Q5chh1jKAqn91IswFTN+niwt4FLABhEWCT1tEuuo6mlNQ4WG/oFQLvJ71PaHAKtWtJyA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-5ASMjh42hbnqyCOK68Q5chh1jKAqn91IswFTN+niwt4FLABhEWCT1tEuuo6mlNQ4WG/oFQLvJ71PaHAKtWtJyA==} + engines: {node: '>=6.9.0'} hasBin: true peerDependencies: '@babel/core': ^7.0.0-0 '@babel/parser@7.27.0': - resolution: - { - integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} hasBin: true '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': - resolution: - { - integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': - resolution: - { - integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': - resolution: - { - integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': - resolution: - { - integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': - resolution: - { - integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: - { - integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-async-generators@7.8.4': - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-bigint@7.8.3': - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-class-properties@7.12.13': - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: - { - integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-import-assertions@7.26.0': - resolution: - { - integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: - { - integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-import-meta@7.10.4': - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-json-strings@7.8.3': - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-jsx@7.25.9': - resolution: - { - integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: - { - integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-typescript@7.25.9': - resolution: - { - integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: - { - integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-arrow-functions@7.25.9': - resolution: - { - integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-async-generator-functions@7.26.8': - resolution: - { - integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-async-to-generator@7.25.9': - resolution: - { - integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-block-scoped-functions@7.26.5': - resolution: - { - integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-block-scoping@7.27.0': - resolution: - { - integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-class-properties@7.25.9': - resolution: - { - integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-class-static-block@7.26.0': - resolution: - { - integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 '@babel/plugin-transform-classes@7.25.9': - resolution: - { - integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-computed-properties@7.25.9': - resolution: - { - integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-destructuring@7.25.9': - resolution: - { - integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-dotall-regex@7.25.9': - resolution: - { - integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-duplicate-keys@7.25.9': - resolution: - { - integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': - resolution: - { - integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-dynamic-import@7.25.9': - resolution: - { - integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-exponentiation-operator@7.26.3': - resolution: - { - integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-export-namespace-from@7.25.9': - resolution: - { - integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-for-of@7.26.9': - resolution: - { - integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-function-name@7.25.9': - resolution: - { - integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-json-strings@7.25.9': - resolution: - { - integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-literals@7.25.9': - resolution: - { - integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-logical-assignment-operators@7.25.9': - resolution: - { - integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-member-expression-literals@7.25.9': - resolution: - { - integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-amd@7.25.9': - resolution: - { - integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-commonjs@7.26.3': - resolution: - { - integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-systemjs@7.25.9': - resolution: - { - integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-umd@7.25.9': - resolution: - { - integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': - resolution: - { - integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-new-target@7.25.9': - resolution: - { - integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': - resolution: - { - integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-numeric-separator@7.25.9': - resolution: - { - integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-object-rest-spread@7.25.9': - resolution: - { - integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-object-super@7.25.9': - resolution: - { - integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-optional-catch-binding@7.25.9': - resolution: - { - integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-optional-chaining@7.25.9': - resolution: - { - integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-parameters@7.25.9': - resolution: - { - integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-private-methods@7.25.9': - resolution: - { - integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-private-property-in-object@7.25.9': - resolution: - { - integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-property-literals@7.25.9': - resolution: - { - integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-regenerator@7.27.0': - resolution: - { - integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-regexp-modifiers@7.26.0': - resolution: - { - integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-reserved-words@7.25.9': - resolution: - { - integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-shorthand-properties@7.25.9': - resolution: - { - integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-spread@7.25.9': - resolution: - { - integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-sticky-regex@7.25.9': - resolution: - { - integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-template-literals@7.26.8': - resolution: - { - integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-typeof-symbol@7.27.0': - resolution: - { - integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-escapes@7.25.9': - resolution: - { - integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-property-regex@7.25.9': - resolution: - { - integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-regex@7.25.9': - resolution: - { - integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-sets-regex@7.25.9': - resolution: - { - integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/preset-env@7.26.9': - resolution: - { - integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: - { - integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, - } + 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 '@babel/register@7.25.9': - resolution: - { - integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/runtime@7.27.0': - resolution: - { - integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + engines: {node: '>=6.9.0'} '@babel/template@7.27.0': - resolution: - { - integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + engines: {node: '>=6.9.0'} '@babel/traverse@7.27.0': - resolution: - { - integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + engines: {node: '>=6.9.0'} '@babel/types@7.27.0': - resolution: - { - integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} '@eslint-community/eslint-utils@4.6.1': - resolution: - { - integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 '@eslint-community/regexpp@4.12.1': - resolution: - { - integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - - '@eslint/config-array@0.20.0': - resolution: - { - integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - '@eslint/config-helpers@0.2.1': - resolution: - { - integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - '@eslint/core@0.13.0': - resolution: - { - integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - '@eslint/eslintrc@3.3.1': - resolution: - { - integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@9.25.1': - resolution: - { - integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - '@eslint/object-schema@2.1.6': - resolution: - { - integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - '@eslint/plugin-kit@0.2.8': - resolution: - { - integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@exercism/babel-preset-javascript@0.5.1': - resolution: - { - integrity: sha512-6NywGKngMLmuDhDVLov1fm6O8MTtirKfQlDmg3q/3cnP4ElErtqzyOoBoI4Om54hHrTfHXlw+UQxQ7NkKeRAfA==, - } + resolution: {integrity: sha512-6NywGKngMLmuDhDVLov1fm6O8MTtirKfQlDmg3q/3cnP4ElErtqzyOoBoI4Om54hHrTfHXlw+UQxQ7NkKeRAfA==} '@exercism/eslint-config-javascript@0.8.1': - resolution: - { - integrity: sha512-KFk43KvV4lUArh/1RUmFMTGXWGp6Pqqs3eXlDXpHQ7xhBKUatbTIL7xbhUB8o366DDyqkcmlxnhOnDsbnL66Qg==, - } + resolution: {integrity: sha512-KFk43KvV4lUArh/1RUmFMTGXWGp6Pqqs3eXlDXpHQ7xhBKUatbTIL7xbhUB8o366DDyqkcmlxnhOnDsbnL66Qg==} peerDependencies: '@exercism/babel-preset-javascript': '>= 0.5.1' eslint: '>= 9.17' '@humanfs/core@0.19.1': - resolution: - { - integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==, - } - engines: { node: '>=18.18.0' } + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} '@humanfs/node@0.16.6': - resolution: - { - integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==, - } - engines: { node: '>=18.18.0' } + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: '>=12.22' } + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} '@humanwhocodes/retry@0.3.1': - resolution: - { - integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==, - } - engines: { node: '>=18.18' } + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} '@humanwhocodes/retry@0.4.2': - resolution: - { - integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==, - } - engines: { node: '>=18.18' } + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} + engines: {node: '>=18'} '@istanbuljs/load-nyc-config@1.1.0': - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} '@istanbuljs/schema@0.1.3': - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} '@jest/console@29.7.0': - resolution: - { - integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/core@29.7.0': - resolution: - { - integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -1128,46 +754,28 @@ packages: optional: true '@jest/environment@29.7.0': - resolution: - { - integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/expect-utils@29.7.0': - resolution: - { - integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/expect@29.7.0': - resolution: - { - integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/fake-timers@29.7.0': - resolution: - { - integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/globals@29.7.0': - resolution: - { - integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/reporters@29.7.0': - resolution: - { - integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -1175,680 +783,382 @@ packages: optional: true '@jest/schemas@29.6.3': - resolution: - { - integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/source-map@29.6.3': - resolution: - { - integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/test-result@29.7.0': - resolution: - { - integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/test-sequencer@29.7.0': - resolution: - { - integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/transform@29.7.0': - resolution: - { - integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jest/types@29.6.3': - resolution: - { - integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} '@jridgewell/gen-mapping@0.3.8': - resolution: - { - integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} '@jridgewell/resolve-uri@3.1.2': - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} '@jridgewell/set-array@1.2.1': - resolution: - { - integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, - } - engines: { node: '>=6.0.0' } + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} '@jridgewell/sourcemap-codec@1.5.0': - resolution: - { - integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, - } + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': - resolution: - { - integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, - } + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - resolution: - { - integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==, - } + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} '@nodelib/fs.scandir@2.1.5': - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} '@nodelib/fs.stat@2.0.5': - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} '@nodelib/fs.walk@1.2.8': - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} '@sinclair/typebox@0.27.8': - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, - } + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} '@sinonjs/commons@3.0.1': - resolution: - { - integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==, - } + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} '@sinonjs/fake-timers@10.3.0': - resolution: - { - integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==, - } + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} '@types/babel__core@7.20.5': - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} '@types/babel__generator@7.27.0': - resolution: - { - integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, - } + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} '@types/babel__traverse@7.20.7': - resolution: - { - integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==, - } + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} '@types/estree@1.0.7': - resolution: - { - integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==, - } - - '@types/glob@7.2.0': - resolution: - { - integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==, - } + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} '@types/graceful-fs@4.1.9': - resolution: - { - integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==, - } + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} '@types/istanbul-lib-coverage@2.0.6': - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, - } + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} '@types/istanbul-lib-report@3.0.3': - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, - } + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} '@types/istanbul-reports@3.0.4': - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, - } + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} '@types/json-schema@7.0.15': - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } - - '@types/minimatch@5.1.2': - resolution: - { - integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==, - } - - '@types/node@22.15.2': - resolution: - { - integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==, - } - - '@types/shelljs@0.8.15': - resolution: - { - integrity: sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==, - } + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@24.12.3': + resolution: {integrity: sha512-8oljBDGun9cIsZRJR6fkihn0TSXJI0UDOOhncYaERq6M0JMDoPLxyscwruJcb4GKS6dvK/d8xebYBg27h/duaQ==} + + '@types/shelljs@0.8.17': + resolution: {integrity: sha512-IDksKYmQA2W9MkQjiyptbMmcQx+8+Ol6b7h6dPU5S05JyiQDSb/nZKnrMrZqGwgV6VkVdl6/SPCKPDlMRvqECg==} '@types/stack-utils@2.0.3': - resolution: - { - integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, - } + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} '@types/yargs-parser@21.0.3': - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} '@types/yargs@17.0.33': - resolution: - { - integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==, - } + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} '@typescript-eslint/scope-manager@8.31.0': - resolution: - { - integrity: sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/types@8.31.0': - resolution: - { - integrity: sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.31.0': - resolution: - { - integrity: sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' '@typescript-eslint/utils@8.31.0': - resolution: - { - integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' '@typescript-eslint/visitor-keys@8.31.0': - resolution: - { - integrity: sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.1: - resolution: - { - integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==, - } - engines: { node: '>=0.4.0' } + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} hasBin: true - ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} array-buffer-byte-length@1.0.2: - resolution: - { - integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} array.prototype.reduce@1.0.8: - resolution: - { - integrity: sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==} + engines: {node: '>= 0.4'} arraybuffer.prototype.slice@1.0.4: - resolution: - { - integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} async-function@1.0.0: - resolution: - { - integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} available-typed-arrays@1.0.7: - resolution: - { - integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} babel-jest@29.7.0: - resolution: - { - integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} babel-plugin-jest-hoist@29.6.3: - resolution: - { - integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} babel-plugin-polyfill-corejs2@0.4.13: - resolution: - { - integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==, - } + resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-corejs3@0.11.1: - resolution: - { - integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==, - } + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-regenerator@0.6.4: - resolution: - { - integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==, - } + resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-preset-current-node-syntax@1.1.0: - resolution: - { - integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==, - } + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} peerDependencies: '@babel/core': ^7.0.0 babel-preset-jest@29.6.3: - resolution: - { - integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} brace-expansion@2.0.1: - resolution: - { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, - } + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} browserslist@4.24.4: - resolution: - { - integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} call-bind-apply-helpers@1.0.2: - resolution: - { - integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} call-bind@1.0.8: - resolution: - { - integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} call-bound@1.0.4: - resolution: - { - integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} caniuse-lite@1.0.30001715: - resolution: - { - integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==, - } + resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==} chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} ci-info@3.9.0: - resolution: - { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} cjs-module-lexer@1.4.3: - resolution: - { - integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==, - } + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} clone-deep@4.0.1: - resolution: - { - integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, - } - engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} collect-v8-coverage@1.0.2: - resolution: - { - integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==, - } + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: '>=7.0.0' } + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} commander@6.2.1: - resolution: - { - integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} commondir@1.0.1: - resolution: - { - integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, - } + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} core-js-compat@3.41.0: - resolution: - { - integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==, - } + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} core-js@3.38.1: - resolution: - { - integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==, - } + resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} - core-js@3.40.0: - resolution: - { - integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==, - } + core-js@3.42.0: + resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} create-jest@29.7.0: - resolution: - { - integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} data-view-buffer@1.0.2: - resolution: - { - integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} data-view-byte-length@1.0.2: - resolution: - { - integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} data-view-byte-offset@1.0.1: - resolution: - { - integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} debug@4.4.0: - resolution: - { - integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==, - } - engines: { node: '>=6.0' } + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -1856,10 +1166,7 @@ packages: optional: true dedent@1.5.3: - resolution: - { - integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==, - } + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -1867,169 +1174,97 @@ packages: optional: true deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} define-data-property@1.1.4: - resolution: - { - integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} define-properties@1.2.1: - resolution: - { - integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} diff-sequences@29.6.3: - resolution: - { - integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - diff@7.0.0: - resolution: - { - integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==, - } - engines: { node: '>=0.3.1' } + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} dunder-proto@1.0.1: - resolution: - { - integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} electron-to-chromium@1.5.143: - resolution: - { - integrity: sha512-QqklJMOFBMqe46k8iIOwA9l2hz57V2OKMmP5eSWcUvwx+mASAsbU+wkF1pHjn9ZVSBPrsYWr4/W/95y5SwYg2g==, - } + resolution: {integrity: sha512-QqklJMOFBMqe46k8iIOwA9l2hz57V2OKMmP5eSWcUvwx+mASAsbU+wkF1pHjn9ZVSBPrsYWr4/W/95y5SwYg2g==} emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, - } + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} es-abstract@1.23.9: - resolution: - { - integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} es-array-method-boxes-properly@1.0.0: - resolution: - { - integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==, - } + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} es-define-property@1.0.1: - resolution: - { - integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} es-object-atoms@1.1.1: - resolution: - { - integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: - resolution: - { - integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} es-to-primitive@1.3.0: - resolution: - { - integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} escalade@3.2.0: - resolution: - { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} eslint-config-prettier@9.1.0: - resolution: - { - integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==, - } + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' eslint-plugin-jest@28.11.0: - resolution: - { - integrity: sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==, - } - engines: { node: ^16.10.0 || ^18.12.0 || >=20.0.0 } + resolution: {integrity: sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==} + engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 || ^8.0.0 eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -2041,53 +1276,36 @@ packages: optional: true eslint-rule-composer@0.3.0: - resolution: - { - integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==, - } - engines: { node: '>=4.0.0' } + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} eslint-scope@5.1.1: - resolution: - { - integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, - } - engines: { node: '>=8.0.0' } - - eslint-scope@8.3.0: - resolution: - { - integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@2.1.0: - resolution: - { - integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} eslint-visitor-keys@3.4.3: - resolution: - { - integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} eslint-visitor-keys@4.2.0: - resolution: - { - integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - - eslint@9.25.1: - resolution: - { - integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: jiti: '*' @@ -2095,720 +1313,426 @@ packages: jiti: optional: true - espree@10.3.0: - resolution: - { - integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} hasBin: true esquery@1.6.0: - resolution: - { - integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, - } - engines: { node: '>=0.10' } + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} estraverse@4.3.0: - resolution: - { - integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: '>=4.0' } + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} exit@0.1.2: - resolution: - { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} expect@29.7.0: - resolution: - { - integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-glob@3.3.3: - resolution: - { - integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, - } - engines: { node: '>=8.6.0' } + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} fastq@1.19.1: - resolution: - { - integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, - } + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} file-entry-cache@8.0.0: - resolution: - { - integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, - } - engines: { node: '>=16.0.0' } + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} find-cache-dir@2.1.0: - resolution: - { - integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} find-up@3.0.0: - resolution: - { - integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} flat-cache@4.0.1: - resolution: - { - integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, - } - engines: { node: '>=16' } + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.3.3: - resolution: - { - integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, - } + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} for-each@0.3.5: - resolution: - { - integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} function.prototype.name@1.1.8: - resolution: - { - integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} functions-have-names@1.2.3: - resolution: - { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, - } + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: '>=6.9.0' } + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} get-intrinsic@1.3.0: - resolution: - { - integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} get-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, - } - engines: { node: '>=8.0.0' } + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} get-proto@1.0.1: - resolution: - { - integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} get-symbol-description@1.1.0: - resolution: - { - integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: '>=10.13.0' } + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@11.1.0: + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} + engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, - } - deprecated: Glob versions prior to v9 are no longer supported + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} globals@14.0.0: - resolution: - { - integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} globals@15.15.0: - resolution: - { - integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==, - } - engines: { node: '>=18' } + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} globalthis@1.0.4: - resolution: - { - integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} gopd@1.2.0: - resolution: - { - integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} has-bigints@1.1.0: - resolution: - { - integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} has-property-descriptors@1.0.2: - resolution: - { - integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, - } + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} has-proto@1.2.0: - resolution: - { - integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} has-symbols@1.1.0: - resolution: - { - integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} has-tostringtag@1.0.2: - resolution: - { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} homedir-polyfill@1.0.3: - resolution: - { - integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, - } + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: '>=10.17.0' } + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} ignore@5.3.2: - resolution: - { - integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, - } - engines: { node: '>= 4' } + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} import-fresh@3.3.1: - resolution: - { - integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} import-local@3.2.0: - resolution: - { - integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} hasBin: true imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: '>=0.8.19' } + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} internal-slot@1.1.0: - resolution: - { - integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} is-array-buffer@3.0.5: - resolution: - { - integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} is-async-function@2.1.1: - resolution: - { - integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} is-bigint@1.1.0: - resolution: - { - integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} is-boolean-object@1.2.2: - resolution: - { - integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} is-core-module@2.16.1: - resolution: - { - integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} is-data-view@1.0.2: - resolution: - { - integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} is-date-object@1.1.0: - resolution: - { - integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} is-finalizationregistry@1.1.1: - resolution: - { - integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} is-generator-function@1.1.0: - resolution: - { - integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} is-map@2.0.3: - resolution: - { - integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} is-number-object@1.1.1: - resolution: - { - integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: '>=0.12.0' } + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} is-plain-object@2.0.4: - resolution: - { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} is-regex@1.2.1: - resolution: - { - integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} is-set@2.0.3: - resolution: - { - integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} is-shared-array-buffer@1.0.4: - resolution: - { - integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} is-string@1.1.1: - resolution: - { - integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} is-symbol@1.1.1: - resolution: - { - integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} is-typed-array@1.1.15: - resolution: - { - integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} is-weakmap@2.0.2: - resolution: - { - integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} is-weakref@1.1.1: - resolution: - { - integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} is-weakset@2.0.4: - resolution: - { - integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} isarray@2.0.5: - resolution: - { - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, - } + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} isobject@3.0.1: - resolution: - { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} istanbul-lib-coverage@3.2.2: - resolution: - { - integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} istanbul-lib-instrument@5.2.1: - resolution: - { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} istanbul-lib-instrument@6.0.3: - resolution: - { - integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} istanbul-lib-report@3.0.1: - resolution: - { - integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} istanbul-lib-source-maps@4.0.1: - resolution: - { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} istanbul-reports@3.1.7: - resolution: - { - integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@4.2.3: + resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} + engines: {node: 20 || >=22} jest-changed-files@29.7.0: - resolution: - { - integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-circus@29.7.0: - resolution: - { - integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-cli@29.7.0: - resolution: - { - integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2817,11 +1741,8 @@ packages: optional: true jest-config@29.7.0: - resolution: - { - integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' ts-node: '>=9.0.0' @@ -2832,81 +1753,48 @@ packages: optional: true jest-diff@29.7.0: - resolution: - { - integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-docblock@29.7.0: - resolution: - { - integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-each@29.7.0: - resolution: - { - integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-environment-node@29.7.0: - resolution: - { - integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-get-type@29.6.3: - resolution: - { - integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-haste-map@29.7.0: - resolution: - { - integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-leak-detector@29.7.0: - resolution: - { - integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-matcher-utils@29.7.0: - resolution: - { - integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-message-util@29.7.0: - resolution: - { - integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-mock@29.7.0: - resolution: - { - integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-pnp-resolver@1.2.3: - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} peerDependencies: jest-resolve: '*' peerDependenciesMeta: @@ -2914,81 +1802,48 @@ packages: optional: true jest-regex-util@29.6.3: - resolution: - { - integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-resolve-dependencies@29.7.0: - resolution: - { - integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-resolve@29.7.0: - resolution: - { - integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-runner@29.7.0: - resolution: - { - integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-runtime@29.7.0: - resolution: - { - integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-snapshot@29.7.0: - resolution: - { - integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-util@29.7.0: - resolution: - { - integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-validate@29.7.0: - resolution: - { - integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-watcher@29.7.0: - resolution: - { - integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-worker@29.7.0: - resolution: - { - integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest@29.7.0: - resolution: - { - integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2997,1132 +1852,664 @@ packages: optional: true js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsesc@3.0.2: - resolution: - { - integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} hasBin: true jsesc@3.1.0: - resolution: - { - integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} hasBin: true json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, - } + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} hasBin: true keyv@4.5.4: - resolution: - { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, - } + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} locate-path@3.0.0: - resolution: - { - integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} lodash.debounce@4.0.8: - resolution: - { - integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, - } + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lru-cache@11.3.6: + resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} + engines: {node: 20 || >=22} lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} make-dir@2.1.0: - resolution: - { - integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} make-dir@4.0.0: - resolution: - { - integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} math-intrinsics@1.1.0: - resolution: - { - integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} micromatch@4.0.8: - resolution: - { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} minimatch@9.0.5: - resolution: - { - integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, - } - engines: { node: '>=16 || 14 >=14.17' } + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} node-environment-flags@1.0.6: - resolution: - { - integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==, - } + resolution: {integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==} node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} node-releases@2.0.19: - resolution: - { - integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==, - } + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} object-inspect@1.13.4: - resolution: - { - integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} object.assign@4.1.7: - resolution: - { - integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} object.getownpropertydescriptors@2.1.8: - resolution: - { - integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==, - } - engines: { node: '>= 0.8' } + resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} + engines: {node: '>= 0.8'} once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} optionator@0.9.4: - resolution: - { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} own-keys@1.0.1: - resolution: - { - integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} p-locate@3.0.0: - resolution: - { - integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} parse-passwd@1.0.0: - resolution: - { - integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} path-exists@3.0.0: - resolution: - { - integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} picocolors@1.1.1: - resolution: - { - integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, - } + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: '>=8.6' } + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} pify@4.0.1: - resolution: - { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} pirates@4.0.7: - resolution: - { - integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} pkg-dir@3.0.0: - resolution: - { - integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} possible-typed-array-names@1.1.0: - resolution: - { - integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: '>= 6' } + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} pure-rand@6.1.0: - resolution: - { - integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==, - } + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} react-is@18.3.1: - resolution: - { - integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, - } + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} reflect.getprototypeof@1.0.10: - resolution: - { - integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} regenerate-unicode-properties@10.2.0: - resolution: - { - integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} regenerate@1.4.2: - resolution: - { - integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, - } + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} regenerator-runtime@0.14.1: - resolution: - { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, - } + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} regenerator-transform@0.15.2: - resolution: - { - integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==, - } + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} regexp.prototype.flags@1.5.4: - resolution: - { - integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} regexpu-core@6.2.0: - resolution: - { - integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} regjsgen@0.8.0: - resolution: - { - integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, - } + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} regjsparser@0.12.0: - resolution: - { - integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==, - } + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} resolve.exports@2.0.3: - resolution: - { - integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} resolve@1.22.10: - resolution: - { - integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true reusify@1.1.0: - resolution: - { - integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, - } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} safe-array-concat@1.1.3: - resolution: - { - integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==, - } - engines: { node: '>=0.4' } + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} safe-push-apply@1.0.0: - resolution: - { - integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} safe-regex-test@1.1.0: - resolution: - { - integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} semver@5.7.2: - resolution: - { - integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, - } + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.7.1: - resolution: - { - integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} hasBin: true set-function-length@1.2.2: - resolution: - { - integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} set-function-name@2.0.2: - resolution: - { - integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} set-proto@1.0.0: - resolution: - { - integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} shallow-clone@3.0.1: - resolution: - { - integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} side-channel-list@1.0.0: - resolution: - { - integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} side-channel-map@1.0.1: - resolution: - { - integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} side-channel-weakmap@1.0.2: - resolution: - { - integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} side-channel@1.1.0: - resolution: - { - integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, - } + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} source-map-support@0.5.21: - resolution: - { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, - } + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} string.prototype.trim@1.2.10: - resolution: - { - integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} string.prototype.trimend@1.0.9: - resolution: - { - integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} string.prototype.trimstart@1.0.8: - resolution: - { - integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} strip-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: '>=6' } + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, - } - engines: { node: '>=8' } + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: '>=8.0' } + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} ts-api-utils@2.1.0: - resolution: - { - integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==, - } - engines: { node: '>=18.12' } + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: '>= 0.8.0' } + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} type-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} typed-array-buffer@1.0.3: - resolution: - { - integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} typed-array-byte-length@1.0.3: - resolution: - { - integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} typed-array-byte-offset@1.0.4: - resolution: - { - integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} typed-array-length@1.0.7: - resolution: - { - integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} typescript@5.8.3: - resolution: - { - integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==, - } - engines: { node: '>=14.17' } + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} hasBin: true unbox-primitive@1.1.0: - resolution: - { - integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==, - } - engines: { node: '>= 0.4' } - - undici-types@6.21.0: - resolution: - { - integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, - } + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} unicode-canonical-property-names-ecmascript@2.0.1: - resolution: - { - integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} unicode-match-property-ecmascript@2.0.0: - resolution: - { - integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} unicode-match-property-value-ecmascript@2.2.0: - resolution: - { - integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.1.0: - resolution: - { - integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==, - } - engines: { node: '>=4' } + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} update-browserslist-db@1.1.3: - resolution: - { - integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==, - } + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} v8-to-istanbul@9.3.0: - resolution: - { - integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==, - } - engines: { node: '>=10.12.0' } + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} v8flags@3.2.0: - resolution: - { - integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==, - } - engines: { node: '>= 0.10' } + resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} + engines: {node: '>= 0.10'} walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} which-boxed-primitive@1.1.1: - resolution: - { - integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} which-builtin-type@1.2.1: - resolution: - { - integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} which-collection@1.0.2: - resolution: - { - integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} which-typed-array@1.1.19: - resolution: - { - integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==, - } - engines: { node: '>= 0.4' } + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: '>= 8' } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true word-wrap@1.2.5: - resolution: - { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, - } - engines: { node: '>=0.10.0' } + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} write-file-atomic@4.0.2: - resolution: - { - integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: '>=12' } + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: '>=10' } + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} snapshots: + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -4156,18 +2543,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.27.0(@babel/core@7.26.10)(eslint@9.25.1)': + '@babel/eslint-parser@7.27.0(@babel/core@7.26.10)(eslint@9.39.4)': dependencies: '@babel/core': 7.26.10 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.25.1 + eslint: 9.39.4 eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/eslint-plugin@7.27.0(@babel/eslint-parser@7.27.0(@babel/core@7.26.10)(eslint@9.25.1))(eslint@9.25.1)': + '@babel/eslint-plugin@7.27.0(@babel/eslint-parser@7.27.0(@babel/core@7.26.10)(eslint@9.39.4))(eslint@9.39.4)': dependencies: - '@babel/eslint-parser': 7.27.0(@babel/core@7.26.10)(eslint@9.25.1) - eslint: 9.25.1 + '@babel/eslint-parser': 7.27.0(@babel/core@7.26.10)(eslint@9.39.4) + eslint: 9.39.4 eslint-rule-composer: 0.3.0 '@babel/generator@7.27.0': @@ -4299,7 +2686,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/register': 7.25.9(@babel/core@7.26.10) commander: 6.2.1 - core-js: 3.40.0 + core-js: 3.42.0 node-environment-flags: 1.0.6 regenerator-runtime: 0.14.1 v8flags: 3.2.0 @@ -4882,48 +3269,57 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@eslint-community/eslint-utils@4.6.1(eslint@9.25.1)': + '@eslint-community/eslint-utils@4.6.1(eslint@9.39.4)': dependencies: - eslint: 9.25.1 + eslint: 9.39.4 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': + dependencies: + eslint: 9.39.4 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.0': + '@eslint/config-array@0.21.2': dependencies: - '@eslint/object-schema': 2.1.6 + '@eslint/object-schema': 2.1.7 debug: 4.4.0 - minimatch: 3.1.2 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.1': {} + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 - '@eslint/core@0.13.0': + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.5': dependencies: - ajv: 6.12.6 + ajv: 6.15.0 debug: 4.4.0 - espree: 10.3.0 + espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 + js-yaml: 4.1.1 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color '@eslint/js@9.25.1': {} - '@eslint/object-schema@2.1.6': {} + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.2.8': + '@eslint/plugin-kit@0.4.1': dependencies: - '@eslint/core': 0.13.0 + '@eslint/core': 0.17.0 levn: 0.4.1 '@exercism/babel-preset-javascript@0.5.1': @@ -4935,15 +3331,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@exercism/eslint-config-javascript@0.8.1(@babel/core@7.26.10)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.25.1)(jest@29.7.0(@types/node@22.15.2))(typescript@5.8.3)': + '@exercism/eslint-config-javascript@0.8.1(@babel/core@7.26.10)(@exercism/babel-preset-javascript@0.5.1)(eslint@9.39.4)(jest@29.7.0(@types/node@24.12.3))(typescript@5.8.3)': dependencies: - '@babel/eslint-parser': 7.27.0(@babel/core@7.26.10)(eslint@9.25.1) - '@babel/eslint-plugin': 7.27.0(@babel/eslint-parser@7.27.0(@babel/core@7.26.10)(eslint@9.25.1))(eslint@9.25.1) + '@babel/eslint-parser': 7.27.0(@babel/core@7.26.10)(eslint@9.39.4) + '@babel/eslint-plugin': 7.27.0(@babel/eslint-parser@7.27.0(@babel/core@7.26.10)(eslint@9.39.4))(eslint@9.39.4) '@eslint/js': 9.25.1 '@exercism/babel-preset-javascript': 0.5.1 - eslint: 9.25.1 - eslint-config-prettier: 9.1.0(eslint@9.25.1) - eslint-plugin-jest: 28.11.0(eslint@9.25.1)(jest@29.7.0(@types/node@22.15.2))(typescript@5.8.3) + eslint: 9.39.4 + eslint-config-prettier: 9.1.0(eslint@9.39.4) + eslint-plugin-jest: 28.11.0(eslint@9.39.4)(jest@29.7.0(@types/node@24.12.3))(typescript@5.8.3) globals: 15.15.0 transitivePeerDependencies: - '@babel/core' @@ -4965,6 +3361,8 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} + '@isaacs/cliui@9.0.0': {} + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -4978,7 +3376,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -4991,14 +3389,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.2) + jest-config: 29.7.0(@types/node@24.12.3) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -5023,7 +3421,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -5041,7 +3439,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.2 + '@types/node': 24.12.3 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5063,7 +3461,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.2 + '@types/node': 24.12.3 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -5133,7 +3531,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.2 + '@types/node': 24.12.3 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -5203,14 +3601,9 @@ snapshots: '@types/estree@1.0.7': {} - '@types/glob@7.2.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 22.15.2 - '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.2 + '@types/node': 24.12.3 '@types/istanbul-lib-coverage@2.0.6': {} @@ -5224,16 +3617,14 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/minimatch@5.1.2': {} - - '@types/node@22.15.2': + '@types/node@24.12.3': dependencies: - undici-types: 6.21.0 + undici-types: 7.16.0 - '@types/shelljs@0.8.15': + '@types/shelljs@0.8.17': dependencies: - '@types/glob': 7.2.0 - '@types/node': 22.15.2 + '@types/node': 24.12.3 + glob: 11.1.0 '@types/stack-utils@2.0.3': {} @@ -5264,13 +3655,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.31.0(eslint@9.25.1)(typescript@5.8.3)': + '@typescript-eslint/utils@8.31.0(eslint@9.39.4)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1) + '@eslint-community/eslint-utils': 4.6.1(eslint@9.39.4) '@typescript-eslint/scope-manager': 8.31.0 '@typescript-eslint/types': 8.31.0 '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3) - eslint: 9.25.1 + eslint: 9.39.4 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -5280,13 +3671,13 @@ snapshots: '@typescript-eslint/types': 8.31.0 eslint-visitor-keys: 4.2.0 - acorn-jsx@5.3.2(acorn@8.14.1): + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: - acorn: 8.14.1 + acorn: 8.16.0 - acorn@8.14.1: {} + acorn@8.16.0: {} - ajv@6.12.6: + ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -5429,6 +3820,8 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -5438,6 +3831,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -5527,15 +3924,15 @@ snapshots: core-js@3.38.1: {} - core-js@3.40.0: {} + core-js@3.42.0: {} - create-jest@29.7.0(@types/node@22.15.2): + create-jest@29.7.0(@types/node@24.12.3): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.2) + jest-config: 29.7.0(@types/node@24.12.3) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -5594,7 +3991,7 @@ snapshots: diff-sequences@29.6.3: {} - diff@7.0.0: {} + diff@8.0.4: {} dunder-proto@1.0.1: dependencies: @@ -5695,16 +4092,16 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@9.1.0(eslint@9.25.1): + eslint-config-prettier@9.1.0(eslint@9.39.4): dependencies: - eslint: 9.25.1 + eslint: 9.39.4 - eslint-plugin-jest@28.11.0(eslint@9.25.1)(jest@29.7.0(@types/node@22.15.2))(typescript@5.8.3): + eslint-plugin-jest@28.11.0(eslint@9.39.4)(jest@29.7.0(@types/node@24.12.3))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3) - eslint: 9.25.1 + '@typescript-eslint/utils': 8.31.0(eslint@9.39.4)(typescript@5.8.3) + eslint: 9.39.4 optionalDependencies: - jest: 29.7.0(@types/node@22.15.2) + jest: 29.7.0(@types/node@24.12.3) transitivePeerDependencies: - supports-color - typescript @@ -5716,7 +4113,7 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.3.0: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -5727,29 +4124,30 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.25.1: + eslint-visitor-keys@4.2.1: {} + + eslint@9.39.4: dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.0 - '@eslint/config-helpers': 0.2.1 - '@eslint/core': 0.13.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.25.1 - '@eslint/plugin-kit': 0.2.8 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 '@types/estree': 1.0.7 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 + ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.0 escape-string-regexp: 4.0.0 - eslint-scope: 8.3.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -5761,17 +4159,17 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 transitivePeerDependencies: - supports-color - espree@10.3.0: + espree@10.4.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) - eslint-visitor-keys: 4.2.0 + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -5872,6 +4270,11 @@ snapshots: dependencies: is-callable: 1.2.7 + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -5930,6 +4333,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@11.1.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.2.3 + minimatch: 10.2.5 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.2 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -5945,6 +4357,8 @@ snapshots: globals@15.15.0: {} + globals@16.5.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -6175,6 +4589,10 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 @@ -6187,7 +4605,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -6207,16 +4625,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.2): + jest-cli@29.7.0(@types/node@24.12.3): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.2) + create-jest: 29.7.0(@types/node@24.12.3) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.2) + jest-config: 29.7.0(@types/node@24.12.3) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -6226,7 +4644,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.2): + jest-config@29.7.0(@types/node@24.12.3): dependencies: '@babel/core': 7.26.10 '@jest/test-sequencer': 29.7.0 @@ -6251,7 +4669,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.15.2 + '@types/node': 24.12.3 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -6280,7 +4698,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -6290,7 +4708,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.2 + '@types/node': 24.12.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -6329,7 +4747,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -6364,7 +4782,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -6392,7 +4810,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -6438,7 +4856,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -6457,7 +4875,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.2 + '@types/node': 24.12.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -6466,17 +4884,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.15.2 + '@types/node': 24.12.3 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.2): + jest@29.7.0(@types/node@24.12.3): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.2) + jest-cli: 29.7.0(@types/node@24.12.3) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -6490,7 +4908,7 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -6542,6 +4960,8 @@ snapshots: lodash.merge@4.6.2: {} + lru-cache@11.3.6: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -6572,14 +4992,24 @@ snapshots: mimic-fn@2.1.0: {} + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.11 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 + minipass@7.1.3: {} + ms@2.1.3: {} natural-compare@1.4.0: {} @@ -6667,6 +5097,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -6690,6 +5122,11 @@ snapshots: path-parse@1.0.7: {} + path-scurry@2.0.2: + dependencies: + lru-cache: 11.3.6 + minipass: 7.1.3 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -6887,6 +5324,8 @@ snapshots: signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + sisteransi@1.0.5: {} slash@3.0.0: {} @@ -7029,7 +5468,7 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@6.21.0: {} + undici-types@7.16.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} From ed72d975a6d76fc0e4a83829c66e682d91775902 Mon Sep 17 00:00:00 2001 From: Isaac Good Date: Tue, 26 May 2026 02:48:31 -0700 Subject: [PATCH 51/61] Format all `instructions.append.md` to start with an H1 (required but ignored) and H2 (#2844) --- exercises/practice/anagram/.docs/instructions.append.md | 2 ++ .../practice/armstrong-numbers/.docs/instructions.append.md | 4 ++++ exercises/practice/book-store/.docs/instructions.append.md | 4 +++- exercises/practice/clock/.docs/instructions.append.md | 2 ++ .../practice/collatz-conjecture/.docs/instructions.append.md | 2 ++ exercises/practice/linked-list/.docs/instructions.append.md | 2 ++ exercises/practice/list-ops/.docs/instructions.append.md | 2 ++ exercises/practice/meetup/.docs/instructions.append.md | 2 ++ .../practice/nucleotide-count/.docs/instructions.append.md | 2 ++ .../practice/protein-translation/.docs/instructions.append.md | 2 ++ exercises/practice/proverb/.docs/instructions.append.md | 2 ++ .../practice/pythagorean-triplet/.docs/instructions.append.md | 2 ++ exercises/practice/queen-attack/.docs/instructions.append.md | 2 ++ .../practice/resistor-color/.docs/instructions.append.md | 2 ++ .../practice/reverse-string/.docs/instructions.append.md | 4 ++++ exercises/practice/square-root/.docs/instructions.append.md | 2 ++ 16 files changed, 37 insertions(+), 1 deletion(-) diff --git a/exercises/practice/anagram/.docs/instructions.append.md b/exercises/practice/anagram/.docs/instructions.append.md index 8d71a920bd..273ca3cbe5 100644 --- a/exercises/practice/anagram/.docs/instructions.append.md +++ b/exercises/practice/anagram/.docs/instructions.append.md @@ -1,3 +1,5 @@ # Instructions Append +## Implementation + The anagrams can be returned in any order. diff --git a/exercises/practice/armstrong-numbers/.docs/instructions.append.md b/exercises/practice/armstrong-numbers/.docs/instructions.append.md index 2d121967ea..e4b24f9e9b 100644 --- a/exercises/practice/armstrong-numbers/.docs/instructions.append.md +++ b/exercises/practice/armstrong-numbers/.docs/instructions.append.md @@ -1,3 +1,7 @@ +# Instructions append + +## Implementation + ~~~~exercism/note Some of the tests might pass a `BigInt` as input. diff --git a/exercises/practice/book-store/.docs/instructions.append.md b/exercises/practice/book-store/.docs/instructions.append.md index 251c2ed8ca..6ed73ca080 100644 --- a/exercises/practice/book-store/.docs/instructions.append.md +++ b/exercises/practice/book-store/.docs/instructions.append.md @@ -1,4 +1,6 @@ -# Implementation +# Instructions append + +## Implementation Define a function - `cost` - that calculates the cost for a given list of books based on defined discounts. diff --git a/exercises/practice/clock/.docs/instructions.append.md b/exercises/practice/clock/.docs/instructions.append.md index f1b1032660..7bd3896188 100644 --- a/exercises/practice/clock/.docs/instructions.append.md +++ b/exercises/practice/clock/.docs/instructions.append.md @@ -1,3 +1,5 @@ # Instructions append +## Implementation + Using the built-in [Date class](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) and its methods is not allowed. diff --git a/exercises/practice/collatz-conjecture/.docs/instructions.append.md b/exercises/practice/collatz-conjecture/.docs/instructions.append.md index 8896093168..5ab8ae4861 100644 --- a/exercises/practice/collatz-conjecture/.docs/instructions.append.md +++ b/exercises/practice/collatz-conjecture/.docs/instructions.append.md @@ -1,5 +1,7 @@ # Instructions append +## Implementation + If `n` is not a positive integer, stop the program from being executed further and return an error message. In JavaScript, this can be done using the `throw` statement. diff --git a/exercises/practice/linked-list/.docs/instructions.append.md b/exercises/practice/linked-list/.docs/instructions.append.md index 7f8e177881..bc630497ce 100644 --- a/exercises/practice/linked-list/.docs/instructions.append.md +++ b/exercises/practice/linked-list/.docs/instructions.append.md @@ -1,5 +1,7 @@ # Instructions append +## Implementation + Your list must also implement the following interface: - `delete` (delete the first occurrence of a specified value) diff --git a/exercises/practice/list-ops/.docs/instructions.append.md b/exercises/practice/list-ops/.docs/instructions.append.md index 95e3839f64..cf8a27e340 100644 --- a/exercises/practice/list-ops/.docs/instructions.append.md +++ b/exercises/practice/list-ops/.docs/instructions.append.md @@ -1,3 +1,5 @@ # Instructions append +## Implementation + Using core language features to build and deconstruct arrays via destructuring, and using the array literal `[]` are allowed, but no functions from the `Array.prototype` should be used. diff --git a/exercises/practice/meetup/.docs/instructions.append.md b/exercises/practice/meetup/.docs/instructions.append.md index 3d9c34eede..0b22dc5215 100644 --- a/exercises/practice/meetup/.docs/instructions.append.md +++ b/exercises/practice/meetup/.docs/instructions.append.md @@ -1,5 +1,7 @@ # Instructions append +## Implementation + In JavaScript, the Date object month's index ranges from 0 to 11. ```javascript diff --git a/exercises/practice/nucleotide-count/.docs/instructions.append.md b/exercises/practice/nucleotide-count/.docs/instructions.append.md index 9596026a14..b654561c41 100644 --- a/exercises/practice/nucleotide-count/.docs/instructions.append.md +++ b/exercises/practice/nucleotide-count/.docs/instructions.append.md @@ -1,5 +1,7 @@ # Instructions append +## Implementation + The result should be formatted as a string containing 4 numbers separated by spaces. Each number represents the count for A, C, G and T in this order. diff --git a/exercises/practice/protein-translation/.docs/instructions.append.md b/exercises/practice/protein-translation/.docs/instructions.append.md index df09ab5e48..ab5adbc6ae 100644 --- a/exercises/practice/protein-translation/.docs/instructions.append.md +++ b/exercises/practice/protein-translation/.docs/instructions.append.md @@ -1,5 +1,7 @@ # Instructions append +## Implementation + If an invalid character or codon is encountered _during_ translation, it should `throw` an error with the message `Invalid codon`. ```javascript diff --git a/exercises/practice/proverb/.docs/instructions.append.md b/exercises/practice/proverb/.docs/instructions.append.md index d151b6d385..e817dc2b05 100644 --- a/exercises/practice/proverb/.docs/instructions.append.md +++ b/exercises/practice/proverb/.docs/instructions.append.md @@ -1,5 +1,7 @@ # Instructions append +## Implementation + If the final item in the list is an `object` instead of a `string`, it will hold a qualifier that modifies the final line in the proverb. ```javascript diff --git a/exercises/practice/pythagorean-triplet/.docs/instructions.append.md b/exercises/practice/pythagorean-triplet/.docs/instructions.append.md index 9fc66f98fc..15964e237d 100644 --- a/exercises/practice/pythagorean-triplet/.docs/instructions.append.md +++ b/exercises/practice/pythagorean-triplet/.docs/instructions.append.md @@ -1,5 +1,7 @@ # Instructions append +## Implementation + By default, only `sum` is given to the `triplets` function, but it may optionally also receive `minFactor` and/or `maxFactor`. When these are given, make sure _each_ factor of the triplet is at least `minFactor` and at most `maxFactor`. diff --git a/exercises/practice/queen-attack/.docs/instructions.append.md b/exercises/practice/queen-attack/.docs/instructions.append.md index 8a76348ffa..d12fd256c4 100644 --- a/exercises/practice/queen-attack/.docs/instructions.append.md +++ b/exercises/practice/queen-attack/.docs/instructions.append.md @@ -1,5 +1,7 @@ # Instructions append +## Implementation + A queen must be placed on a valid position on the board. Two queens cannot share the same position. diff --git a/exercises/practice/resistor-color/.docs/instructions.append.md b/exercises/practice/resistor-color/.docs/instructions.append.md index edee1445b0..5c748cfb8c 100644 --- a/exercises/practice/resistor-color/.docs/instructions.append.md +++ b/exercises/practice/resistor-color/.docs/instructions.append.md @@ -1,3 +1,5 @@ # Instructions append +## Implementation + Although the color names are capitalised in the description, the function colorCode will always be called with the lowercase equivalent, e.g brown instead of Brown diff --git a/exercises/practice/reverse-string/.docs/instructions.append.md b/exercises/practice/reverse-string/.docs/instructions.append.md index 68688e11fa..0cba088b5e 100644 --- a/exercises/practice/reverse-string/.docs/instructions.append.md +++ b/exercises/practice/reverse-string/.docs/instructions.append.md @@ -1,3 +1,7 @@ +# Instructions append + +## Implementation + ~~~exercism/advanced If you solve this using the CLI, there are test cases that require you to deal with complex characters. diff --git a/exercises/practice/square-root/.docs/instructions.append.md b/exercises/practice/square-root/.docs/instructions.append.md index fd8cfc6824..fe28a11948 100644 --- a/exercises/practice/square-root/.docs/instructions.append.md +++ b/exercises/practice/square-root/.docs/instructions.append.md @@ -1,3 +1,5 @@ # Instructions append +## Implementation + The idea is not to use the built-in javascript functions such as `Math.sqrt(x)`, `x ** 0.5` or `x ** (1/2)`, it's to build your own. From 0ae9ff4282b21f30d18b0f1b767090f219138bb2 Mon Sep 17 00:00:00 2001 From: Cool-Katt Date: Tue, 26 May 2026 13:53:19 +0300 Subject: [PATCH 52/61] corepack pnpm node scripts/sync.mjs (#2841) --- exercises/concept/amusement-park/package.json | 10 +++++----- exercises/concept/annalyns-infiltration/package.json | 10 +++++----- exercises/concept/appointment-time/package.json | 10 +++++----- exercises/concept/bird-watcher/package.json | 10 +++++----- exercises/concept/captains-log/package.json | 10 +++++----- .../concept/coordinate-transformation/package.json | 10 +++++----- exercises/concept/custom-signs/package.json | 10 +++++----- .../concept/elyses-analytic-enchantments/package.json | 10 +++++----- .../elyses-destructured-enchantments/package.json | 10 +++++----- exercises/concept/elyses-enchantments/package.json | 10 +++++----- .../concept/elyses-looping-enchantments/package.json | 10 +++++----- .../elyses-transformative-enchantments/package.json | 10 +++++----- exercises/concept/factory-sensors/package.json | 10 +++++----- exercises/concept/freelancer-rates/package.json | 10 +++++----- exercises/concept/fruit-picker/package.json | 10 +++++----- exercises/concept/high-score-board/package.json | 10 +++++----- exercises/concept/lasagna-master/package.json | 10 +++++----- exercises/concept/lasagna/package.json | 10 +++++----- exercises/concept/lucky-numbers/package.json | 10 +++++----- exercises/concept/mixed-juices/package.json | 10 +++++----- exercises/concept/nullability/package.json | 10 +++++----- exercises/concept/ozans-playlist/package.json | 10 +++++----- exercises/concept/pizza-order/package.json | 10 +++++----- exercises/concept/poetry-club-door-policy/package.json | 10 +++++----- exercises/concept/recycling-robot/package.json | 10 +++++----- exercises/concept/regular-chatbot/package.json | 10 +++++----- exercises/concept/train-driver/package.json | 10 +++++----- exercises/concept/translation-service/package.json | 10 +++++----- exercises/concept/vehicle-purchase/package.json | 10 +++++----- exercises/concept/windowing-system/package.json | 10 +++++----- exercises/practice/accumulate/package.json | 10 +++++----- exercises/practice/acronym/package.json | 10 +++++----- exercises/practice/affine-cipher/package.json | 10 +++++----- exercises/practice/all-your-base/package.json | 10 +++++----- exercises/practice/allergies/package.json | 10 +++++----- exercises/practice/alphametics/package.json | 10 +++++----- exercises/practice/anagram/package.json | 10 +++++----- exercises/practice/armstrong-numbers/package.json | 10 +++++----- exercises/practice/atbash-cipher/package.json | 10 +++++----- exercises/practice/bank-account/package.json | 10 +++++----- exercises/practice/beer-song/package.json | 10 +++++----- exercises/practice/binary-search-tree/package.json | 10 +++++----- exercises/practice/binary-search/package.json | 10 +++++----- exercises/practice/binary/package.json | 10 +++++----- exercises/practice/bob/package.json | 10 +++++----- exercises/practice/book-store/package.json | 10 +++++----- exercises/practice/bottle-song/package.json | 10 +++++----- exercises/practice/bowling/package.json | 10 +++++----- exercises/practice/camicia/package.json | 10 +++++----- exercises/practice/change/package.json | 10 +++++----- exercises/practice/circular-buffer/package.json | 10 +++++----- exercises/practice/clock/package.json | 10 +++++----- exercises/practice/collatz-conjecture/package.json | 10 +++++----- exercises/practice/complex-numbers/package.json | 10 +++++----- exercises/practice/connect/package.json | 10 +++++----- exercises/practice/crypto-square/package.json | 10 +++++----- exercises/practice/custom-set/package.json | 10 +++++----- exercises/practice/darts/package.json | 10 +++++----- exercises/practice/diamond/package.json | 10 +++++----- exercises/practice/difference-of-squares/package.json | 10 +++++----- exercises/practice/diffie-hellman/package.json | 10 +++++----- exercises/practice/dnd-character/package.json | 10 +++++----- exercises/practice/dominoes/package.json | 10 +++++----- exercises/practice/eliuds-eggs/package.json | 10 +++++----- exercises/practice/etl/package.json | 10 +++++----- exercises/practice/flatten-array/package.json | 10 +++++----- exercises/practice/flower-field/package.json | 10 +++++----- exercises/practice/food-chain/package.json | 10 +++++----- exercises/practice/forth/package.json | 10 +++++----- exercises/practice/game-of-life/package.json | 10 +++++----- exercises/practice/gigasecond/package.json | 10 +++++----- exercises/practice/go-counting/package.json | 10 +++++----- exercises/practice/grade-school/package.json | 10 +++++----- exercises/practice/grains/package.json | 10 +++++----- exercises/practice/grep/package.json | 10 +++++----- exercises/practice/hamming/package.json | 10 +++++----- exercises/practice/hello-world/package.json | 10 +++++----- exercises/practice/hexadecimal/package.json | 10 +++++----- exercises/practice/high-scores/package.json | 10 +++++----- exercises/practice/house/package.json | 10 +++++----- exercises/practice/isbn-verifier/package.json | 10 +++++----- exercises/practice/isogram/package.json | 10 +++++----- exercises/practice/killer-sudoku-helper/package.json | 10 +++++----- exercises/practice/kindergarten-garden/package.json | 10 +++++----- exercises/practice/knapsack/package.json | 10 +++++----- exercises/practice/largest-series-product/package.json | 10 +++++----- exercises/practice/leap/package.json | 10 +++++----- exercises/practice/ledger/package.json | 10 +++++----- exercises/practice/lens-person/package.json | 10 +++++----- exercises/practice/line-up/package.json | 10 +++++----- exercises/practice/linked-list/package.json | 10 +++++----- exercises/practice/list-ops/package.json | 10 +++++----- exercises/practice/luhn/package.json | 10 +++++----- exercises/practice/markdown/package.json | 10 +++++----- exercises/practice/matching-brackets/package.json | 10 +++++----- exercises/practice/matrix/package.json | 10 +++++----- exercises/practice/meetup/package.json | 10 +++++----- exercises/practice/micro-blog/package.json | 10 +++++----- exercises/practice/minesweeper/package.json | 10 +++++----- exercises/practice/nth-prime/package.json | 10 +++++----- exercises/practice/nucleotide-count/package.json | 10 +++++----- exercises/practice/ocr-numbers/package.json | 10 +++++----- exercises/practice/octal/package.json | 10 +++++----- exercises/practice/palindrome-products/package.json | 10 +++++----- exercises/practice/pangram/package.json | 10 +++++----- .../practice/parallel-letter-frequency/package.json | 10 +++++----- exercises/practice/pascals-triangle/package.json | 10 +++++----- exercises/practice/perfect-numbers/package.json | 10 +++++----- exercises/practice/phone-number/package.json | 10 +++++----- exercises/practice/pig-latin/package.json | 10 +++++----- exercises/practice/point-mutations/package.json | 10 +++++----- exercises/practice/poker/package.json | 10 +++++----- exercises/practice/prime-factors/package.json | 10 +++++----- exercises/practice/prism/package.json | 10 +++++----- exercises/practice/promises/package.json | 10 +++++----- exercises/practice/protein-translation/package.json | 10 +++++----- exercises/practice/proverb/package.json | 10 +++++----- exercises/practice/pythagorean-triplet/package.json | 10 +++++----- exercises/practice/queen-attack/package.json | 10 +++++----- exercises/practice/rail-fence-cipher/package.json | 10 +++++----- exercises/practice/raindrops/package.json | 10 +++++----- exercises/practice/rational-numbers/package.json | 10 +++++----- exercises/practice/react/package.json | 10 +++++----- exercises/practice/rectangles/package.json | 10 +++++----- exercises/practice/relative-distance/package.json | 10 +++++----- exercises/practice/resistor-color-duo/package.json | 10 +++++----- exercises/practice/resistor-color-trio/package.json | 10 +++++----- exercises/practice/resistor-color/package.json | 10 +++++----- exercises/practice/rest-api/package.json | 10 +++++----- exercises/practice/reverse-string/package.json | 10 +++++----- exercises/practice/rna-transcription/package.json | 10 +++++----- exercises/practice/robot-name/package.json | 10 +++++----- exercises/practice/robot-simulator/package.json | 10 +++++----- exercises/practice/roman-numerals/package.json | 10 +++++----- exercises/practice/rotational-cipher/package.json | 10 +++++----- exercises/practice/run-length-encoding/package.json | 10 +++++----- exercises/practice/saddle-points/package.json | 10 +++++----- exercises/practice/satellite/package.json | 10 +++++----- exercises/practice/say/package.json | 10 +++++----- exercises/practice/scale-generator/package.json | 10 +++++----- exercises/practice/scrabble-score/package.json | 10 +++++----- exercises/practice/secret-handshake/package.json | 10 +++++----- exercises/practice/series/package.json | 10 +++++----- exercises/practice/sieve/package.json | 10 +++++----- exercises/practice/simple-cipher/package.json | 10 +++++----- exercises/practice/simple-linked-list/package.json | 10 +++++----- exercises/practice/space-age/package.json | 10 +++++----- exercises/practice/spiral-matrix/package.json | 10 +++++----- exercises/practice/split-second-stopwatch/package.json | 10 +++++----- exercises/practice/square-root/package.json | 10 +++++----- exercises/practice/state-of-tic-tac-toe/package.json | 10 +++++----- exercises/practice/strain/package.json | 10 +++++----- exercises/practice/sublist/package.json | 10 +++++----- exercises/practice/sum-of-multiples/package.json | 10 +++++----- exercises/practice/tournament/package.json | 10 +++++----- exercises/practice/transpose/package.json | 10 +++++----- exercises/practice/triangle/package.json | 10 +++++----- exercises/practice/trinary/package.json | 10 +++++----- exercises/practice/twelve-days/package.json | 10 +++++----- exercises/practice/two-bucket/package.json | 10 +++++----- exercises/practice/two-fer/package.json | 10 +++++----- .../practice/variable-length-quantity/package.json | 10 +++++----- exercises/practice/word-count/package.json | 10 +++++----- exercises/practice/word-search/package.json | 10 +++++----- exercises/practice/wordy/package.json | 10 +++++----- exercises/practice/yacht/package.json | 10 +++++----- exercises/practice/zebra-puzzle/package.json | 10 +++++----- exercises/practice/zipper/package.json | 10 +++++----- 168 files changed, 840 insertions(+), 840 deletions(-) diff --git a/exercises/concept/amusement-park/package.json b/exercises/concept/amusement-park/package.json index e579429881..b517c579f6 100644 --- a/exercises/concept/amusement-park/package.json +++ b/exercises/concept/amusement-park/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/annalyns-infiltration/package.json b/exercises/concept/annalyns-infiltration/package.json index 7c145a56d7..48637dbfb5 100644 --- a/exercises/concept/annalyns-infiltration/package.json +++ b/exercises/concept/annalyns-infiltration/package.json @@ -15,16 +15,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/appointment-time/package.json b/exercises/concept/appointment-time/package.json index 4774be2131..65e47ebe13 100644 --- a/exercises/concept/appointment-time/package.json +++ b/exercises/concept/appointment-time/package.json @@ -16,16 +16,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/bird-watcher/package.json b/exercises/concept/bird-watcher/package.json index 2325591588..300e231da1 100644 --- a/exercises/concept/bird-watcher/package.json +++ b/exercises/concept/bird-watcher/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/captains-log/package.json b/exercises/concept/captains-log/package.json index ca51da6aaf..8c46cfe06c 100644 --- a/exercises/concept/captains-log/package.json +++ b/exercises/concept/captains-log/package.json @@ -16,16 +16,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/coordinate-transformation/package.json b/exercises/concept/coordinate-transformation/package.json index 61cb3c5c69..1fd8cc00f6 100644 --- a/exercises/concept/coordinate-transformation/package.json +++ b/exercises/concept/coordinate-transformation/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/custom-signs/package.json b/exercises/concept/custom-signs/package.json index 5da8244182..8da71efeed 100644 --- a/exercises/concept/custom-signs/package.json +++ b/exercises/concept/custom-signs/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/elyses-analytic-enchantments/package.json b/exercises/concept/elyses-analytic-enchantments/package.json index 5d8bae6a78..f440358e92 100644 --- a/exercises/concept/elyses-analytic-enchantments/package.json +++ b/exercises/concept/elyses-analytic-enchantments/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/elyses-destructured-enchantments/package.json b/exercises/concept/elyses-destructured-enchantments/package.json index 692c9f17a9..d0bb86a683 100644 --- a/exercises/concept/elyses-destructured-enchantments/package.json +++ b/exercises/concept/elyses-destructured-enchantments/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/elyses-enchantments/package.json b/exercises/concept/elyses-enchantments/package.json index f7108cd080..b3cb93a328 100644 --- a/exercises/concept/elyses-enchantments/package.json +++ b/exercises/concept/elyses-enchantments/package.json @@ -15,16 +15,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/elyses-looping-enchantments/package.json b/exercises/concept/elyses-looping-enchantments/package.json index ee14b3a6ff..6dab8650b0 100644 --- a/exercises/concept/elyses-looping-enchantments/package.json +++ b/exercises/concept/elyses-looping-enchantments/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/elyses-transformative-enchantments/package.json b/exercises/concept/elyses-transformative-enchantments/package.json index 4a19b22fda..f866b089f7 100644 --- a/exercises/concept/elyses-transformative-enchantments/package.json +++ b/exercises/concept/elyses-transformative-enchantments/package.json @@ -16,16 +16,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/factory-sensors/package.json b/exercises/concept/factory-sensors/package.json index f8d305b5bb..b7915d0967 100644 --- a/exercises/concept/factory-sensors/package.json +++ b/exercises/concept/factory-sensors/package.json @@ -11,16 +11,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/freelancer-rates/package.json b/exercises/concept/freelancer-rates/package.json index 2ecfb98abb..f506e2f30a 100644 --- a/exercises/concept/freelancer-rates/package.json +++ b/exercises/concept/freelancer-rates/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/fruit-picker/package.json b/exercises/concept/fruit-picker/package.json index b72027dc8a..09145fcdb8 100644 --- a/exercises/concept/fruit-picker/package.json +++ b/exercises/concept/fruit-picker/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/high-score-board/package.json b/exercises/concept/high-score-board/package.json index f73cc263fa..de406babdd 100644 --- a/exercises/concept/high-score-board/package.json +++ b/exercises/concept/high-score-board/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/lasagna-master/package.json b/exercises/concept/lasagna-master/package.json index 3557cba201..ff12600343 100644 --- a/exercises/concept/lasagna-master/package.json +++ b/exercises/concept/lasagna-master/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/lasagna/package.json b/exercises/concept/lasagna/package.json index 1e4e80c0e4..0448e795bf 100644 --- a/exercises/concept/lasagna/package.json +++ b/exercises/concept/lasagna/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/lucky-numbers/package.json b/exercises/concept/lucky-numbers/package.json index ebc04afeb2..d69ed42637 100644 --- a/exercises/concept/lucky-numbers/package.json +++ b/exercises/concept/lucky-numbers/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/mixed-juices/package.json b/exercises/concept/mixed-juices/package.json index 4964356673..b25b726247 100644 --- a/exercises/concept/mixed-juices/package.json +++ b/exercises/concept/mixed-juices/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/nullability/package.json b/exercises/concept/nullability/package.json index 6454d18f4e..fddaed4c1a 100644 --- a/exercises/concept/nullability/package.json +++ b/exercises/concept/nullability/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/ozans-playlist/package.json b/exercises/concept/ozans-playlist/package.json index b8094fb361..eda60e6394 100644 --- a/exercises/concept/ozans-playlist/package.json +++ b/exercises/concept/ozans-playlist/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/pizza-order/package.json b/exercises/concept/pizza-order/package.json index 481599c8b0..c2d3ad2f06 100644 --- a/exercises/concept/pizza-order/package.json +++ b/exercises/concept/pizza-order/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/poetry-club-door-policy/package.json b/exercises/concept/poetry-club-door-policy/package.json index 41f1e67b0b..8502a5ecf7 100644 --- a/exercises/concept/poetry-club-door-policy/package.json +++ b/exercises/concept/poetry-club-door-policy/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/recycling-robot/package.json b/exercises/concept/recycling-robot/package.json index 59199e8cb2..415c126f30 100644 --- a/exercises/concept/recycling-robot/package.json +++ b/exercises/concept/recycling-robot/package.json @@ -16,16 +16,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/regular-chatbot/package.json b/exercises/concept/regular-chatbot/package.json index c01c435a37..95cbfe6eba 100644 --- a/exercises/concept/regular-chatbot/package.json +++ b/exercises/concept/regular-chatbot/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/train-driver/package.json b/exercises/concept/train-driver/package.json index c4088315a6..259806cea8 100644 --- a/exercises/concept/train-driver/package.json +++ b/exercises/concept/train-driver/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/translation-service/package.json b/exercises/concept/translation-service/package.json index 7dc0988070..f77fa82a3a 100644 --- a/exercises/concept/translation-service/package.json +++ b/exercises/concept/translation-service/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/vehicle-purchase/package.json b/exercises/concept/vehicle-purchase/package.json index f73a35dc09..37f50442d3 100644 --- a/exercises/concept/vehicle-purchase/package.json +++ b/exercises/concept/vehicle-purchase/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/concept/windowing-system/package.json b/exercises/concept/windowing-system/package.json index 1c4a8062bf..4ae5775d4c 100644 --- a/exercises/concept/windowing-system/package.json +++ b/exercises/concept/windowing-system/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/accumulate/package.json b/exercises/practice/accumulate/package.json index 0119f1ff92..577a2b30c9 100644 --- a/exercises/practice/accumulate/package.json +++ b/exercises/practice/accumulate/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/acronym/package.json b/exercises/practice/acronym/package.json index 9ca625f03d..3d6b89ed1f 100644 --- a/exercises/practice/acronym/package.json +++ b/exercises/practice/acronym/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/affine-cipher/package.json b/exercises/practice/affine-cipher/package.json index 0727a62f4d..5114750b75 100644 --- a/exercises/practice/affine-cipher/package.json +++ b/exercises/practice/affine-cipher/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/all-your-base/package.json b/exercises/practice/all-your-base/package.json index bafa6313b5..77a49c3c95 100644 --- a/exercises/practice/all-your-base/package.json +++ b/exercises/practice/all-your-base/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/allergies/package.json b/exercises/practice/allergies/package.json index 0e19adc624..6847f03122 100644 --- a/exercises/practice/allergies/package.json +++ b/exercises/practice/allergies/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/alphametics/package.json b/exercises/practice/alphametics/package.json index 1e61a50e9c..cf3cf1e54a 100644 --- a/exercises/practice/alphametics/package.json +++ b/exercises/practice/alphametics/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/anagram/package.json b/exercises/practice/anagram/package.json index 254e0d3bbf..ae36a8c88f 100644 --- a/exercises/practice/anagram/package.json +++ b/exercises/practice/anagram/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/armstrong-numbers/package.json b/exercises/practice/armstrong-numbers/package.json index 7c52be865d..a4fa2a3024 100644 --- a/exercises/practice/armstrong-numbers/package.json +++ b/exercises/practice/armstrong-numbers/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/atbash-cipher/package.json b/exercises/practice/atbash-cipher/package.json index 9245cce6a1..185dcd9021 100644 --- a/exercises/practice/atbash-cipher/package.json +++ b/exercises/practice/atbash-cipher/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/bank-account/package.json b/exercises/practice/bank-account/package.json index cbb952491a..36967fdcfe 100644 --- a/exercises/practice/bank-account/package.json +++ b/exercises/practice/bank-account/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/beer-song/package.json b/exercises/practice/beer-song/package.json index 7f8315c4ef..b60e4c6e54 100644 --- a/exercises/practice/beer-song/package.json +++ b/exercises/practice/beer-song/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/binary-search-tree/package.json b/exercises/practice/binary-search-tree/package.json index 50115ba0c4..cf756b91c4 100644 --- a/exercises/practice/binary-search-tree/package.json +++ b/exercises/practice/binary-search-tree/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/binary-search/package.json b/exercises/practice/binary-search/package.json index 119e43caa6..eadee75896 100644 --- a/exercises/practice/binary-search/package.json +++ b/exercises/practice/binary-search/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/binary/package.json b/exercises/practice/binary/package.json index e3f14d37b7..904cd2ab7f 100644 --- a/exercises/practice/binary/package.json +++ b/exercises/practice/binary/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/bob/package.json b/exercises/practice/bob/package.json index 4b9793a3dc..b6f54db62e 100644 --- a/exercises/practice/bob/package.json +++ b/exercises/practice/bob/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/book-store/package.json b/exercises/practice/book-store/package.json index d81104e063..c50901f931 100644 --- a/exercises/practice/book-store/package.json +++ b/exercises/practice/book-store/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/bottle-song/package.json b/exercises/practice/bottle-song/package.json index 911e0e0341..daf9c133b8 100644 --- a/exercises/practice/bottle-song/package.json +++ b/exercises/practice/bottle-song/package.json @@ -17,16 +17,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/bowling/package.json b/exercises/practice/bowling/package.json index ea76c21245..1f28813564 100644 --- a/exercises/practice/bowling/package.json +++ b/exercises/practice/bowling/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/camicia/package.json b/exercises/practice/camicia/package.json index 68fe60c323..222958404b 100644 --- a/exercises/practice/camicia/package.json +++ b/exercises/practice/camicia/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/change/package.json b/exercises/practice/change/package.json index 2d0645bac0..f44f934373 100644 --- a/exercises/practice/change/package.json +++ b/exercises/practice/change/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/circular-buffer/package.json b/exercises/practice/circular-buffer/package.json index 3665fab161..3f6e0fb6d2 100644 --- a/exercises/practice/circular-buffer/package.json +++ b/exercises/practice/circular-buffer/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/clock/package.json b/exercises/practice/clock/package.json index 64f0efe669..9cf9a4e5a6 100644 --- a/exercises/practice/clock/package.json +++ b/exercises/practice/clock/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/collatz-conjecture/package.json b/exercises/practice/collatz-conjecture/package.json index 907442194d..b37840619a 100644 --- a/exercises/practice/collatz-conjecture/package.json +++ b/exercises/practice/collatz-conjecture/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/complex-numbers/package.json b/exercises/practice/complex-numbers/package.json index 0eeff89616..48eb104a84 100644 --- a/exercises/practice/complex-numbers/package.json +++ b/exercises/practice/complex-numbers/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/connect/package.json b/exercises/practice/connect/package.json index 945e4032ea..fe4c1aac0e 100644 --- a/exercises/practice/connect/package.json +++ b/exercises/practice/connect/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/crypto-square/package.json b/exercises/practice/crypto-square/package.json index 3953569072..bddefcd094 100644 --- a/exercises/practice/crypto-square/package.json +++ b/exercises/practice/crypto-square/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/custom-set/package.json b/exercises/practice/custom-set/package.json index 6b9b1006dd..9be0ef9451 100644 --- a/exercises/practice/custom-set/package.json +++ b/exercises/practice/custom-set/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/darts/package.json b/exercises/practice/darts/package.json index d1a435f5de..e77ae7fde5 100644 --- a/exercises/practice/darts/package.json +++ b/exercises/practice/darts/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/diamond/package.json b/exercises/practice/diamond/package.json index 12e2cf8a8d..6c633866bb 100644 --- a/exercises/practice/diamond/package.json +++ b/exercises/practice/diamond/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/difference-of-squares/package.json b/exercises/practice/difference-of-squares/package.json index 53e2d8f1f3..98107171a8 100644 --- a/exercises/practice/difference-of-squares/package.json +++ b/exercises/practice/difference-of-squares/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/diffie-hellman/package.json b/exercises/practice/diffie-hellman/package.json index 44f5ddaea5..c0145d5d6e 100644 --- a/exercises/practice/diffie-hellman/package.json +++ b/exercises/practice/diffie-hellman/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/dnd-character/package.json b/exercises/practice/dnd-character/package.json index da165aa850..935fcd7d6b 100644 --- a/exercises/practice/dnd-character/package.json +++ b/exercises/practice/dnd-character/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/dominoes/package.json b/exercises/practice/dominoes/package.json index 9d00f2c7be..2ac87682b9 100644 --- a/exercises/practice/dominoes/package.json +++ b/exercises/practice/dominoes/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/eliuds-eggs/package.json b/exercises/practice/eliuds-eggs/package.json index 86d033f52b..38ac57ded5 100644 --- a/exercises/practice/eliuds-eggs/package.json +++ b/exercises/practice/eliuds-eggs/package.json @@ -17,16 +17,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/etl/package.json b/exercises/practice/etl/package.json index 5a1cdf88b6..38f6e49bab 100644 --- a/exercises/practice/etl/package.json +++ b/exercises/practice/etl/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/flatten-array/package.json b/exercises/practice/flatten-array/package.json index db728287bb..8c81bd736a 100644 --- a/exercises/practice/flatten-array/package.json +++ b/exercises/practice/flatten-array/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/flower-field/package.json b/exercises/practice/flower-field/package.json index fba0c73e0f..1edb782d9a 100644 --- a/exercises/practice/flower-field/package.json +++ b/exercises/practice/flower-field/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/food-chain/package.json b/exercises/practice/food-chain/package.json index 9acd7bf30b..a642e669f7 100644 --- a/exercises/practice/food-chain/package.json +++ b/exercises/practice/food-chain/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/forth/package.json b/exercises/practice/forth/package.json index eb098b1753..90d9f43de8 100644 --- a/exercises/practice/forth/package.json +++ b/exercises/practice/forth/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/game-of-life/package.json b/exercises/practice/game-of-life/package.json index d3aa259c2c..4c8883f30f 100644 --- a/exercises/practice/game-of-life/package.json +++ b/exercises/practice/game-of-life/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/gigasecond/package.json b/exercises/practice/gigasecond/package.json index a8cd4672f5..8b00031717 100644 --- a/exercises/practice/gigasecond/package.json +++ b/exercises/practice/gigasecond/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/go-counting/package.json b/exercises/practice/go-counting/package.json index e08f11c62c..de9fd848a1 100644 --- a/exercises/practice/go-counting/package.json +++ b/exercises/practice/go-counting/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/grade-school/package.json b/exercises/practice/grade-school/package.json index 38c78ff95c..e60b0e9eae 100644 --- a/exercises/practice/grade-school/package.json +++ b/exercises/practice/grade-school/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/grains/package.json b/exercises/practice/grains/package.json index 0815ed8dd8..80b290e231 100644 --- a/exercises/practice/grains/package.json +++ b/exercises/practice/grains/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/grep/package.json b/exercises/practice/grep/package.json index d36f6e3ff8..a225b49636 100644 --- a/exercises/practice/grep/package.json +++ b/exercises/practice/grep/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/hamming/package.json b/exercises/practice/hamming/package.json index 7e4db1430e..3e4cfde677 100644 --- a/exercises/practice/hamming/package.json +++ b/exercises/practice/hamming/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/hello-world/package.json b/exercises/practice/hello-world/package.json index a9df27e55b..33bd5692df 100644 --- a/exercises/practice/hello-world/package.json +++ b/exercises/practice/hello-world/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/hexadecimal/package.json b/exercises/practice/hexadecimal/package.json index fac4ba86c4..8f10473e06 100644 --- a/exercises/practice/hexadecimal/package.json +++ b/exercises/practice/hexadecimal/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/high-scores/package.json b/exercises/practice/high-scores/package.json index a6ac13673d..63c94b2520 100644 --- a/exercises/practice/high-scores/package.json +++ b/exercises/practice/high-scores/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/house/package.json b/exercises/practice/house/package.json index ec12813a26..b13deafef0 100644 --- a/exercises/practice/house/package.json +++ b/exercises/practice/house/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/isbn-verifier/package.json b/exercises/practice/isbn-verifier/package.json index e7bf24707b..e0b1f872cb 100644 --- a/exercises/practice/isbn-verifier/package.json +++ b/exercises/practice/isbn-verifier/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/isogram/package.json b/exercises/practice/isogram/package.json index 6d826ffcc9..ec6c32ac5e 100644 --- a/exercises/practice/isogram/package.json +++ b/exercises/practice/isogram/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/killer-sudoku-helper/package.json b/exercises/practice/killer-sudoku-helper/package.json index 4903feae2f..5ea23b25b4 100644 --- a/exercises/practice/killer-sudoku-helper/package.json +++ b/exercises/practice/killer-sudoku-helper/package.json @@ -17,16 +17,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/kindergarten-garden/package.json b/exercises/practice/kindergarten-garden/package.json index 50fcc5f072..bfef1a2260 100644 --- a/exercises/practice/kindergarten-garden/package.json +++ b/exercises/practice/kindergarten-garden/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/knapsack/package.json b/exercises/practice/knapsack/package.json index bcd3605e59..a12eb14776 100644 --- a/exercises/practice/knapsack/package.json +++ b/exercises/practice/knapsack/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/largest-series-product/package.json b/exercises/practice/largest-series-product/package.json index fbf6bc0c62..8d23881036 100644 --- a/exercises/practice/largest-series-product/package.json +++ b/exercises/practice/largest-series-product/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/leap/package.json b/exercises/practice/leap/package.json index 61ae1fcc53..7721c19f81 100644 --- a/exercises/practice/leap/package.json +++ b/exercises/practice/leap/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/ledger/package.json b/exercises/practice/ledger/package.json index 2151bb99dd..eb2a129151 100644 --- a/exercises/practice/ledger/package.json +++ b/exercises/practice/ledger/package.json @@ -17,16 +17,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/lens-person/package.json b/exercises/practice/lens-person/package.json index 476fbc2202..95247a2e58 100644 --- a/exercises/practice/lens-person/package.json +++ b/exercises/practice/lens-person/package.json @@ -18,16 +18,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/line-up/package.json b/exercises/practice/line-up/package.json index 2d55c3710b..920ac745fb 100644 --- a/exercises/practice/line-up/package.json +++ b/exercises/practice/line-up/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/linked-list/package.json b/exercises/practice/linked-list/package.json index 35db126e36..f05f37530b 100644 --- a/exercises/practice/linked-list/package.json +++ b/exercises/practice/linked-list/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/list-ops/package.json b/exercises/practice/list-ops/package.json index 7ac4c1c676..aa31a29a1d 100644 --- a/exercises/practice/list-ops/package.json +++ b/exercises/practice/list-ops/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/luhn/package.json b/exercises/practice/luhn/package.json index cdf5b4fc35..3a453eb7e0 100644 --- a/exercises/practice/luhn/package.json +++ b/exercises/practice/luhn/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/markdown/package.json b/exercises/practice/markdown/package.json index d7727509f0..1578986b6e 100644 --- a/exercises/practice/markdown/package.json +++ b/exercises/practice/markdown/package.json @@ -17,16 +17,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/matching-brackets/package.json b/exercises/practice/matching-brackets/package.json index 3c44be37d7..cf95ec80e7 100644 --- a/exercises/practice/matching-brackets/package.json +++ b/exercises/practice/matching-brackets/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/matrix/package.json b/exercises/practice/matrix/package.json index 5c26393964..49de252da9 100644 --- a/exercises/practice/matrix/package.json +++ b/exercises/practice/matrix/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/meetup/package.json b/exercises/practice/meetup/package.json index 9aaaca1de8..af3e599786 100644 --- a/exercises/practice/meetup/package.json +++ b/exercises/practice/meetup/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/micro-blog/package.json b/exercises/practice/micro-blog/package.json index 3620e46e04..3c8e8d2144 100644 --- a/exercises/practice/micro-blog/package.json +++ b/exercises/practice/micro-blog/package.json @@ -17,16 +17,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/minesweeper/package.json b/exercises/practice/minesweeper/package.json index a1d5a3a468..1640cab4ad 100644 --- a/exercises/practice/minesweeper/package.json +++ b/exercises/practice/minesweeper/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/nth-prime/package.json b/exercises/practice/nth-prime/package.json index c1ca698fa6..96ddbf75c0 100644 --- a/exercises/practice/nth-prime/package.json +++ b/exercises/practice/nth-prime/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/nucleotide-count/package.json b/exercises/practice/nucleotide-count/package.json index 4a8d397402..4f08bb4225 100644 --- a/exercises/practice/nucleotide-count/package.json +++ b/exercises/practice/nucleotide-count/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/ocr-numbers/package.json b/exercises/practice/ocr-numbers/package.json index 65748cb3fa..4d2a0b3a25 100644 --- a/exercises/practice/ocr-numbers/package.json +++ b/exercises/practice/ocr-numbers/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/octal/package.json b/exercises/practice/octal/package.json index a1537680d0..ab18d58f75 100644 --- a/exercises/practice/octal/package.json +++ b/exercises/practice/octal/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/palindrome-products/package.json b/exercises/practice/palindrome-products/package.json index 5362d0bbd7..ed33065cb1 100644 --- a/exercises/practice/palindrome-products/package.json +++ b/exercises/practice/palindrome-products/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/pangram/package.json b/exercises/practice/pangram/package.json index d3a4d66671..19920ca8cc 100644 --- a/exercises/practice/pangram/package.json +++ b/exercises/practice/pangram/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/parallel-letter-frequency/package.json b/exercises/practice/parallel-letter-frequency/package.json index d1574227a1..58e531e52a 100644 --- a/exercises/practice/parallel-letter-frequency/package.json +++ b/exercises/practice/parallel-letter-frequency/package.json @@ -17,16 +17,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/pascals-triangle/package.json b/exercises/practice/pascals-triangle/package.json index 5162af97fb..3d7117d26a 100644 --- a/exercises/practice/pascals-triangle/package.json +++ b/exercises/practice/pascals-triangle/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/perfect-numbers/package.json b/exercises/practice/perfect-numbers/package.json index 8a892e5658..ed4a891344 100644 --- a/exercises/practice/perfect-numbers/package.json +++ b/exercises/practice/perfect-numbers/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/phone-number/package.json b/exercises/practice/phone-number/package.json index 8d36e60647..109b9d0da2 100644 --- a/exercises/practice/phone-number/package.json +++ b/exercises/practice/phone-number/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/pig-latin/package.json b/exercises/practice/pig-latin/package.json index 4ee61e9b37..3256787abe 100644 --- a/exercises/practice/pig-latin/package.json +++ b/exercises/practice/pig-latin/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/point-mutations/package.json b/exercises/practice/point-mutations/package.json index 2287bfba09..9b184a6116 100644 --- a/exercises/practice/point-mutations/package.json +++ b/exercises/practice/point-mutations/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/poker/package.json b/exercises/practice/poker/package.json index 89fac0d68f..6e3370d844 100644 --- a/exercises/practice/poker/package.json +++ b/exercises/practice/poker/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/prime-factors/package.json b/exercises/practice/prime-factors/package.json index 427bbee485..4469ef02a1 100644 --- a/exercises/practice/prime-factors/package.json +++ b/exercises/practice/prime-factors/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/prism/package.json b/exercises/practice/prism/package.json index 7750c52c42..7d40dd6974 100644 --- a/exercises/practice/prism/package.json +++ b/exercises/practice/prism/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/promises/package.json b/exercises/practice/promises/package.json index a7ef213af3..3921fd3d3b 100644 --- a/exercises/practice/promises/package.json +++ b/exercises/practice/promises/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/protein-translation/package.json b/exercises/practice/protein-translation/package.json index aa0ed1f52b..fd0bacffe6 100644 --- a/exercises/practice/protein-translation/package.json +++ b/exercises/practice/protein-translation/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/proverb/package.json b/exercises/practice/proverb/package.json index 08deade0c4..33a67f690b 100644 --- a/exercises/practice/proverb/package.json +++ b/exercises/practice/proverb/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/pythagorean-triplet/package.json b/exercises/practice/pythagorean-triplet/package.json index 0681b2ad13..01c0385ea8 100644 --- a/exercises/practice/pythagorean-triplet/package.json +++ b/exercises/practice/pythagorean-triplet/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/queen-attack/package.json b/exercises/practice/queen-attack/package.json index b67cc4b0c2..848a4b8da6 100644 --- a/exercises/practice/queen-attack/package.json +++ b/exercises/practice/queen-attack/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/rail-fence-cipher/package.json b/exercises/practice/rail-fence-cipher/package.json index aca100ebdc..d63a0bbf2a 100644 --- a/exercises/practice/rail-fence-cipher/package.json +++ b/exercises/practice/rail-fence-cipher/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/raindrops/package.json b/exercises/practice/raindrops/package.json index da8d1f71ab..542c243007 100644 --- a/exercises/practice/raindrops/package.json +++ b/exercises/practice/raindrops/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/rational-numbers/package.json b/exercises/practice/rational-numbers/package.json index 3fe3a09e3b..45cff13913 100644 --- a/exercises/practice/rational-numbers/package.json +++ b/exercises/practice/rational-numbers/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/react/package.json b/exercises/practice/react/package.json index a9f8764757..15d0107544 100644 --- a/exercises/practice/react/package.json +++ b/exercises/practice/react/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/rectangles/package.json b/exercises/practice/rectangles/package.json index 4c3b011185..0c8e79c3ce 100644 --- a/exercises/practice/rectangles/package.json +++ b/exercises/practice/rectangles/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/relative-distance/package.json b/exercises/practice/relative-distance/package.json index c3f4377292..e7fc45f4c7 100644 --- a/exercises/practice/relative-distance/package.json +++ b/exercises/practice/relative-distance/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/resistor-color-duo/package.json b/exercises/practice/resistor-color-duo/package.json index 051b9dc69c..6c68b73b9b 100644 --- a/exercises/practice/resistor-color-duo/package.json +++ b/exercises/practice/resistor-color-duo/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/resistor-color-trio/package.json b/exercises/practice/resistor-color-trio/package.json index 42c0dc8d69..71d1b5dba0 100644 --- a/exercises/practice/resistor-color-trio/package.json +++ b/exercises/practice/resistor-color-trio/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/resistor-color/package.json b/exercises/practice/resistor-color/package.json index fe9cb3426d..703e2f9bbb 100644 --- a/exercises/practice/resistor-color/package.json +++ b/exercises/practice/resistor-color/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/rest-api/package.json b/exercises/practice/rest-api/package.json index bf6cbee782..2d34849088 100644 --- a/exercises/practice/rest-api/package.json +++ b/exercises/practice/rest-api/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/reverse-string/package.json b/exercises/practice/reverse-string/package.json index e7c20ee14b..9aa5bbeee5 100644 --- a/exercises/practice/reverse-string/package.json +++ b/exercises/practice/reverse-string/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/rna-transcription/package.json b/exercises/practice/rna-transcription/package.json index efdca557c9..6e4ab4c0bc 100644 --- a/exercises/practice/rna-transcription/package.json +++ b/exercises/practice/rna-transcription/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/robot-name/package.json b/exercises/practice/robot-name/package.json index 98e79dbf3b..05207fff31 100644 --- a/exercises/practice/robot-name/package.json +++ b/exercises/practice/robot-name/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/robot-simulator/package.json b/exercises/practice/robot-simulator/package.json index 6136ef3a81..83f59aac36 100644 --- a/exercises/practice/robot-simulator/package.json +++ b/exercises/practice/robot-simulator/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/roman-numerals/package.json b/exercises/practice/roman-numerals/package.json index eb1dcf3b41..bbbd4a4d75 100644 --- a/exercises/practice/roman-numerals/package.json +++ b/exercises/practice/roman-numerals/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/rotational-cipher/package.json b/exercises/practice/rotational-cipher/package.json index b7514805a0..15a7706047 100644 --- a/exercises/practice/rotational-cipher/package.json +++ b/exercises/practice/rotational-cipher/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/run-length-encoding/package.json b/exercises/practice/run-length-encoding/package.json index a567ed1f30..429a9d8bf8 100644 --- a/exercises/practice/run-length-encoding/package.json +++ b/exercises/practice/run-length-encoding/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/saddle-points/package.json b/exercises/practice/saddle-points/package.json index 0f6baa6282..2a93fc431b 100644 --- a/exercises/practice/saddle-points/package.json +++ b/exercises/practice/saddle-points/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/satellite/package.json b/exercises/practice/satellite/package.json index 1b16f58f12..61750b38a0 100644 --- a/exercises/practice/satellite/package.json +++ b/exercises/practice/satellite/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/say/package.json b/exercises/practice/say/package.json index 69b265eb3b..36882e9b85 100644 --- a/exercises/practice/say/package.json +++ b/exercises/practice/say/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/scale-generator/package.json b/exercises/practice/scale-generator/package.json index f10e93bc1c..77053c7c56 100644 --- a/exercises/practice/scale-generator/package.json +++ b/exercises/practice/scale-generator/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/scrabble-score/package.json b/exercises/practice/scrabble-score/package.json index 37734b3ae7..a9e9651659 100644 --- a/exercises/practice/scrabble-score/package.json +++ b/exercises/practice/scrabble-score/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/secret-handshake/package.json b/exercises/practice/secret-handshake/package.json index 504bfda83d..2c6852d7c8 100644 --- a/exercises/practice/secret-handshake/package.json +++ b/exercises/practice/secret-handshake/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/series/package.json b/exercises/practice/series/package.json index 25e815a3d7..7bc3222e66 100644 --- a/exercises/practice/series/package.json +++ b/exercises/practice/series/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/sieve/package.json b/exercises/practice/sieve/package.json index 94ffd00d00..df770212fd 100644 --- a/exercises/practice/sieve/package.json +++ b/exercises/practice/sieve/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/simple-cipher/package.json b/exercises/practice/simple-cipher/package.json index e74157aa78..af905f555d 100644 --- a/exercises/practice/simple-cipher/package.json +++ b/exercises/practice/simple-cipher/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/simple-linked-list/package.json b/exercises/practice/simple-linked-list/package.json index 646ce6b5f8..bb5298f324 100644 --- a/exercises/practice/simple-linked-list/package.json +++ b/exercises/practice/simple-linked-list/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/space-age/package.json b/exercises/practice/space-age/package.json index ebbf1e53f8..c4ae89383f 100644 --- a/exercises/practice/space-age/package.json +++ b/exercises/practice/space-age/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/spiral-matrix/package.json b/exercises/practice/spiral-matrix/package.json index b4c539458c..23155764dd 100644 --- a/exercises/practice/spiral-matrix/package.json +++ b/exercises/practice/spiral-matrix/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/split-second-stopwatch/package.json b/exercises/practice/split-second-stopwatch/package.json index 93c216d206..6b93d3e65a 100644 --- a/exercises/practice/split-second-stopwatch/package.json +++ b/exercises/practice/split-second-stopwatch/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/square-root/package.json b/exercises/practice/square-root/package.json index c9c4002bac..0ffbeb08a3 100644 --- a/exercises/practice/square-root/package.json +++ b/exercises/practice/square-root/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/state-of-tic-tac-toe/package.json b/exercises/practice/state-of-tic-tac-toe/package.json index 45a451d88b..ad7d51ad1d 100644 --- a/exercises/practice/state-of-tic-tac-toe/package.json +++ b/exercises/practice/state-of-tic-tac-toe/package.json @@ -17,16 +17,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/strain/package.json b/exercises/practice/strain/package.json index 5f75c3a2d5..b73c952dcc 100644 --- a/exercises/practice/strain/package.json +++ b/exercises/practice/strain/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/sublist/package.json b/exercises/practice/sublist/package.json index 09dc85353d..0c62eb8fa8 100644 --- a/exercises/practice/sublist/package.json +++ b/exercises/practice/sublist/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/sum-of-multiples/package.json b/exercises/practice/sum-of-multiples/package.json index a410ee7c4d..cf9b9e68af 100644 --- a/exercises/practice/sum-of-multiples/package.json +++ b/exercises/practice/sum-of-multiples/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/tournament/package.json b/exercises/practice/tournament/package.json index 73b28d7ccd..61472cfe04 100644 --- a/exercises/practice/tournament/package.json +++ b/exercises/practice/tournament/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/transpose/package.json b/exercises/practice/transpose/package.json index 6281aeb85a..7ed47dc66d 100644 --- a/exercises/practice/transpose/package.json +++ b/exercises/practice/transpose/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/triangle/package.json b/exercises/practice/triangle/package.json index 184f7679a9..1328920b5c 100644 --- a/exercises/practice/triangle/package.json +++ b/exercises/practice/triangle/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/trinary/package.json b/exercises/practice/trinary/package.json index c71227f917..3532e03ab7 100644 --- a/exercises/practice/trinary/package.json +++ b/exercises/practice/trinary/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/twelve-days/package.json b/exercises/practice/twelve-days/package.json index 01e070f835..6cae1ea499 100644 --- a/exercises/practice/twelve-days/package.json +++ b/exercises/practice/twelve-days/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/two-bucket/package.json b/exercises/practice/two-bucket/package.json index 37fe9017e8..2fe90104da 100644 --- a/exercises/practice/two-bucket/package.json +++ b/exercises/practice/two-bucket/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/two-fer/package.json b/exercises/practice/two-fer/package.json index 5c656f595d..61346d6945 100644 --- a/exercises/practice/two-fer/package.json +++ b/exercises/practice/two-fer/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/variable-length-quantity/package.json b/exercises/practice/variable-length-quantity/package.json index c9ff5f75d9..0d6d10b112 100644 --- a/exercises/practice/variable-length-quantity/package.json +++ b/exercises/practice/variable-length-quantity/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/word-count/package.json b/exercises/practice/word-count/package.json index e5df84718a..dda11f8940 100644 --- a/exercises/practice/word-count/package.json +++ b/exercises/practice/word-count/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/word-search/package.json b/exercises/practice/word-search/package.json index 2ad4671f78..2019605445 100644 --- a/exercises/practice/word-search/package.json +++ b/exercises/practice/word-search/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/wordy/package.json b/exercises/practice/wordy/package.json index 8d991ff332..66c8db5bab 100644 --- a/exercises/practice/wordy/package.json +++ b/exercises/practice/wordy/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/yacht/package.json b/exercises/practice/yacht/package.json index 849347c62a..031f8242ee 100644 --- a/exercises/practice/yacht/package.json +++ b/exercises/practice/yacht/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/zebra-puzzle/package.json b/exercises/practice/zebra-puzzle/package.json index 503a57148d..d0d81b846a 100644 --- a/exercises/practice/zebra-puzzle/package.json +++ b/exercises/practice/zebra-puzzle/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { diff --git a/exercises/practice/zipper/package.json b/exercises/practice/zipper/package.json index 3cea55c687..1c6a75810e 100644 --- a/exercises/practice/zipper/package.json +++ b/exercises/practice/zipper/package.json @@ -12,16 +12,16 @@ "devDependencies": { "@exercism/babel-preset-javascript": "^0.5.1", "@exercism/eslint-config-javascript": "^0.8.1", - "@jest/globals": "^29.7.0", + "@jest/globals": "^30.3.0", "@types/node": "^24.3.0", "@types/shelljs": "^0.8.17", - "babel-jest": "^29.7.0", - "core-js": "~3.42.0", - "diff": "^8.0.2", + "babel-jest": "^30.3.0", + "core-js": "~3.46.0", + "diff": "^8.0.3", "eslint": "^9.28.0", "expect": "^29.7.0", "globals": "^16.3.0", - "jest": "^29.7.0" + "jest": "^30.2.0" }, "dependencies": {}, "scripts": { From c9005fa1ca273f5e745c140401ae67559717083d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 21:01:00 +0530 Subject: [PATCH 53/61] Bump actions/checkout from 6.0.2 to 6.0.3 (#2845) Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/codeql.yml | 2 +- .github/workflows/pr.ci.js.yml | 4 ++-- .github/workflows/verify-code-formatting.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 73a5158e26..0b572c1613 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm @@ -37,7 +37,7 @@ jobs: node-version: [22.x] steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c4188e83df..d5b22faf94 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index ac808a1576..39381f62fd 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} @@ -48,7 +48,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} diff --git a/.github/workflows/verify-code-formatting.yml b/.github/workflows/verify-code-formatting.yml index 269101550d..99c5b307e1 100644 --- a/.github/workflows/verify-code-formatting.yml +++ b/.github/workflows/verify-code-formatting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: 'Checkout code' - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - name: 'Verify formatting of all files' run: ./bin/check-formatting.sh From 971f01d9afa678b4378b85e99ef4dfae9836f68b Mon Sep 17 00:00:00 2001 From: Obinna Obi-Akwari <111562983+A-O-Emmanuel@users.noreply.github.com> Date: Fri, 12 Jun 2026 02:25:06 +0100 Subject: [PATCH 54/61] add error-handling exercise (#2732) * add error-handling exercise * [CI] Format code * add github username and update proof.ci.js and error-handling.js * Edit introduction and update proof.ci.js, error-handling.js, and error-handling.spec.js * Update exercises/practice/error-handling/error-handling.js Co-authored-by: Derk-Jan Karrenbeld * edit introduction.md proof.ci.js and error-handling.js * fix test passing by default * add handling for empty string * remove generic line * edit instructions.md, add more tests * Edit error-handling.spec.js to include test for specific errors and test for generic errors and test for error messages * Update exercises/practice/error-handling/.docs/introduction.md Co-authored-by: Cool-Katt * Update exercises/practice/error-handling/.docs/introduction.md Co-authored-by: Cool-Katt * Update exercises/practice/error-handling/error-handling.spec.js Co-authored-by: Cool-Katt * edit test file and change difficulty level to 4 which is medium * [CI] Format code * Update introduction.md --------- Co-authored-by: github-actions[bot] Co-authored-by: Derk-Jan Karrenbeld Co-authored-by: Cool-Katt --- config.json | 8 +++ .../error-handling/.docs/instructions.md | 7 ++ .../error-handling/.docs/introduction.md | 26 +++++++ exercises/practice/error-handling/.gitignore | 5 ++ .../practice/error-handling/.meta/config.json | 17 +++++ .../practice/error-handling/.meta/proof.ci.js | 26 +++++++ exercises/practice/error-handling/.npmrc | 1 + exercises/practice/error-handling/LICENSE | 21 ++++++ .../practice/error-handling/babel.config.js | 4 ++ .../practice/error-handling/error-handling.js | 8 +++ .../error-handling/error-handling.spec.js | 72 +++++++++++++++++++ .../practice/error-handling/eslint.config.mjs | 45 ++++++++++++ .../practice/error-handling/jest.config.js | 22 ++++++ .../practice/error-handling/package.json | 38 ++++++++++ 14 files changed, 300 insertions(+) create mode 100644 exercises/practice/error-handling/.docs/instructions.md create mode 100644 exercises/practice/error-handling/.docs/introduction.md create mode 100644 exercises/practice/error-handling/.gitignore create mode 100644 exercises/practice/error-handling/.meta/config.json create mode 100644 exercises/practice/error-handling/.meta/proof.ci.js create mode 100644 exercises/practice/error-handling/.npmrc create mode 100644 exercises/practice/error-handling/LICENSE create mode 100644 exercises/practice/error-handling/babel.config.js create mode 100644 exercises/practice/error-handling/error-handling.js create mode 100644 exercises/practice/error-handling/error-handling.spec.js create mode 100644 exercises/practice/error-handling/eslint.config.mjs create mode 100644 exercises/practice/error-handling/jest.config.js create mode 100644 exercises/practice/error-handling/package.json diff --git a/config.json b/config.json index 0ac62ffcd5..6fcb8932ad 100644 --- a/config.json +++ b/config.json @@ -2770,6 +2770,14 @@ "practices": [], "prerequisites": [], "difficulty": 2 + }, + { + "slug": "error-handling", + "name": "Error Handling", + "uuid": "de1c75f2-2461-4347-b5ca-b3cfaafe4d79", + "practices": [], + "prerequisites": [], + "difficulty": 4 } ] }, diff --git a/exercises/practice/error-handling/.docs/instructions.md b/exercises/practice/error-handling/.docs/instructions.md new file mode 100644 index 0000000000..705ff5be11 --- /dev/null +++ b/exercises/practice/error-handling/.docs/instructions.md @@ -0,0 +1,7 @@ +# Instructions + +Implement various kinds of error handling and resource management. + +An important point of programming is how to handle errors and close resources even if errors occur. + +This exercise requires you to handle various errors. diff --git a/exercises/practice/error-handling/.docs/introduction.md b/exercises/practice/error-handling/.docs/introduction.md new file mode 100644 index 0000000000..eb6b220e45 --- /dev/null +++ b/exercises/practice/error-handling/.docs/introduction.md @@ -0,0 +1,26 @@ +# Error Handling + +In this exercise, you will implement a function called `processString` that processes a given input string with proper error handling. + +You will learn how to: + +- Check input types and throw errors for invalid inputs. +- Throw errors for specific cases (e.g., empty strings). +- Return the uppercase version of the string if it is valid. +- Handle and catch errors using a try..catch block + + +Implement the processString function using a `try…catch` block. + +Inside the `try` block: +- If the input is not a string, throw a `TypeError`. +- If the input is an empty string, return `null`. +- If input length is greater than 100, or less than 10, throw a `RangeError` +- If input contains a mix of letters and numbers, throw a `SyntaxError`. +- Otherwise, return the input in `uppercase`. + +*Don't forget to attach appropriate error messages then you throw! An informative and well structured error message can save you hours of debugging.* + +Inside the `catch` block: +- log the error's message using `console.log` +- `throw` the `error` so it can be tested for its type. diff --git a/exercises/practice/error-handling/.gitignore b/exercises/practice/error-handling/.gitignore new file mode 100644 index 0000000000..0c88ff6ec3 --- /dev/null +++ b/exercises/practice/error-handling/.gitignore @@ -0,0 +1,5 @@ +/node_modules +/bin/configlet +/bin/configlet.exe +/package-lock.json +/yarn.lock diff --git a/exercises/practice/error-handling/.meta/config.json b/exercises/practice/error-handling/.meta/config.json new file mode 100644 index 0000000000..d657caee5e --- /dev/null +++ b/exercises/practice/error-handling/.meta/config.json @@ -0,0 +1,17 @@ +{ + "authors": [ + "A-O-Emmanuel" + ], + "files": { + "solution": [ + "error-handling.js" + ], + "test": [ + "error-handling.spec.js" + ], + "example": [ + ".meta/proof.ci.js" + ] + }, + "blurb": "Implement various kinds of error handling and resource management." +} diff --git a/exercises/practice/error-handling/.meta/proof.ci.js b/exercises/practice/error-handling/.meta/proof.ci.js new file mode 100644 index 0000000000..f020a402af --- /dev/null +++ b/exercises/practice/error-handling/.meta/proof.ci.js @@ -0,0 +1,26 @@ +export const processString = (input) => { + try { + if (typeof input !== 'string') { + throw new TypeError('Input must be a string'); + } + if (input === '') { + return null; + } + if (input.length > 100) { + throw new RangeError('Input is too long'); + } + if (input.length < 10) { + throw new RangeError('Input is too short'); + } + if (/[a-zA-Z]/.test(input) && /\d/.test(input)) { + throw new SyntaxError( + 'Input cannot contain a mix of letters and numbers', + ); + } + + return input.toUpperCase(); + } catch (error) { + console.log(error.message); + throw error; + } +}; diff --git a/exercises/practice/error-handling/.npmrc b/exercises/practice/error-handling/.npmrc new file mode 100644 index 0000000000..d26df800bb --- /dev/null +++ b/exercises/practice/error-handling/.npmrc @@ -0,0 +1 @@ +audit=false diff --git a/exercises/practice/error-handling/LICENSE b/exercises/practice/error-handling/LICENSE new file mode 100644 index 0000000000..90e73be03b --- /dev/null +++ b/exercises/practice/error-handling/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Exercism + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/exercises/practice/error-handling/babel.config.js b/exercises/practice/error-handling/babel.config.js new file mode 100644 index 0000000000..a638497df1 --- /dev/null +++ b/exercises/practice/error-handling/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: [['@exercism/babel-preset-javascript', { corejs: '3.40' }]], + plugins: [], +}; diff --git a/exercises/practice/error-handling/error-handling.js b/exercises/practice/error-handling/error-handling.js new file mode 100644 index 0000000000..42665c2b23 --- /dev/null +++ b/exercises/practice/error-handling/error-handling.js @@ -0,0 +1,8 @@ +// +// This is only a SKELETON file for the 'Error handling' exercise. It's been provided as a +// convenience to get you started writing code faster. +// + +export const processString = (input) => { + throw new Error('Remove this line and implement the function'); +}; diff --git a/exercises/practice/error-handling/error-handling.spec.js b/exercises/practice/error-handling/error-handling.spec.js new file mode 100644 index 0000000000..c83c69e87d --- /dev/null +++ b/exercises/practice/error-handling/error-handling.spec.js @@ -0,0 +1,72 @@ +import { describe, expect, test, xtest } from '@jest/globals'; +import { processString } from './error-handling'; + +describe('Error Handling', () => { + test('never throws a generic Error for any invalid input', () => { + const invalidInputs = [ + 42, // TypeError + 'short', // RangeError (too short) + 'a'.repeat(101), // RangeError (too long) + '12345test6789text', // SyntaxError (mixed) + ]; + + for (const input of invalidInputs) { + let error; + + try { + processString(input); + } catch (err) { + error = err; + } + + expect(error).toBeInstanceOf(Error); + expect(error.constructor).not.toBe(Error); + expect(error.message).toEqual(expect.stringMatching(/.+/)); + } + }); + + xtest('throws TypeError if input is not a string', () => { + expect(() => processString(42)).toThrow( + expect.objectContaining({ + name: 'TypeError', + message: expect.stringMatching(/.+/), + }), + ); + }); + + xtest('throws error if input is too short', () => { + expect(() => processString('short')).toThrow( + expect.objectContaining({ + name: 'RangeError', + message: expect.stringMatching(/.+/), + }), + ); + }); + + xtest('throws error if input is too long', () => { + const longString = 'a'.repeat(101); + expect(() => processString(longString)).toThrow( + expect.objectContaining({ + name: 'RangeError', + message: expect.stringMatching(/.+/), + }), + ); + }); + + xtest('throws error if input contains a mix of letters and numbers', () => { + expect(() => processString('12345test6789text')).toThrow( + expect.objectContaining({ + name: 'SyntaxError', + message: expect.stringMatching(/.+/), + }), + ); + }); + + xtest('returns null if string is empty', () => { + expect(processString('')).toBeNull(); + }); + + xtest('returns uppercase string if input is valid', () => { + expect(processString('hellotherefriend')).toBe('HELLOTHEREFRIEND'); + }); +}); diff --git a/exercises/practice/error-handling/eslint.config.mjs b/exercises/practice/error-handling/eslint.config.mjs new file mode 100644 index 0000000000..ca517111ed --- /dev/null +++ b/exercises/practice/error-handling/eslint.config.mjs @@ -0,0 +1,45 @@ +// @ts-check + +import config from '@exercism/eslint-config-javascript'; +import maintainersConfig from '@exercism/eslint-config-javascript/maintainers.mjs'; + +import globals from 'globals'; + +export default [ + ...config, + ...maintainersConfig, + { + files: maintainersConfig[1].files, + rules: { + 'jest/expect-expect': ['warn', { assertFunctionNames: ['expect*'] }], + }, + }, + { + files: ['scripts/**/*.mjs'], + languageOptions: { + globals: { + ...globals.node, + }, + }, + }, + // <> + { + ignores: [ + // # Protected or generated + '/.appends/**/*', + '/.github/**/*', + '/.vscode/**/*', + + // # Binaries + '/bin/*', + + // # Configuration + '/config', + '/babel.config.js', + + // # Typings + '/exercises/**/global.d.ts', + '/exercises/**/env.d.ts', + ], + }, +]; diff --git a/exercises/practice/error-handling/jest.config.js b/exercises/practice/error-handling/jest.config.js new file mode 100644 index 0000000000..ec8e908127 --- /dev/null +++ b/exercises/practice/error-handling/jest.config.js @@ -0,0 +1,22 @@ +module.exports = { + verbose: true, + projects: [''], + testMatch: [ + '**/__tests__/**/*.[jt]s?(x)', + '**/test/**/*.[jt]s?(x)', + '**/?(*.)+(spec|test).[jt]s?(x)', + ], + testPathIgnorePatterns: [ + '/(?:production_)?node_modules/', + '.d.ts$', + '/test/fixtures', + '/test/helpers', + '__mocks__', + ], + transform: { + '^.+\\.[jt]sx?$': 'babel-jest', + }, + moduleNameMapper: { + '^(\\.\\/.+)\\.js$': '$1', + }, +}; diff --git a/exercises/practice/error-handling/package.json b/exercises/practice/error-handling/package.json new file mode 100644 index 0000000000..c2631ea755 --- /dev/null +++ b/exercises/practice/error-handling/package.json @@ -0,0 +1,38 @@ +{ + "name": "@exercism/javascript-practice-error-handling", + "description": "Exercism practice exercise on error-handling", + "author": "Katrina Owen", + "contributors": [ + "Derk-Jan Karrenbeld (https://derk-jan.com)", + "Tejas Bubane (https://tejasbubane.github.io/)" + ], + "private": true, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/exercism/javascript", + "directory": "exercises/practice/error-handling" + }, + "devDependencies": { + "@exercism/babel-preset-javascript": "^0.5.1", + "@exercism/eslint-config-javascript": "^0.8.1", + "@jest/globals": "^29.7.0", + "@types/node": "^24.3.0", + "@types/shelljs": "^0.8.17", + "babel-jest": "^29.7.0", + "core-js": "~3.42.0", + "diff": "^8.0.2", + "eslint": "^9.28.0", + "expect": "^29.7.0", + "globals": "^16.3.0", + "jest": "^29.7.0" + }, + "dependencies": {}, + "scripts": { + "lint": "corepack pnpm eslint .", + "test": "corepack pnpm jest", + "watch": "corepack pnpm jest --watch", + "format": "corepack pnpm prettier -w ." + }, + "packageManager": "pnpm@9.15.2" +} From d8cabd2cddcc2b20f0beb4e1d2d31ff946a93ccd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 12:39:04 +0530 Subject: [PATCH 55/61] Bump actions/checkout from 6.0.3 to 7.0.0 (#2849) Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/codeql.yml | 2 +- .github/workflows/pr.ci.js.yml | 4 ++-- .github/workflows/verify-code-formatting.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 0b572c1613..bf00e9e20a 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm @@ -37,7 +37,7 @@ jobs: node-version: [22.x] steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d5b22faf94..40f5ce3818 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 39381f62fd..9025050b68 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} @@ -48,7 +48,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} diff --git a/.github/workflows/verify-code-formatting.yml b/.github/workflows/verify-code-formatting.yml index 99c5b307e1..83038b2b23 100644 --- a/.github/workflows/verify-code-formatting.yml +++ b/.github/workflows/verify-code-formatting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: 'Checkout code' - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - name: 'Verify formatting of all files' run: ./bin/check-formatting.sh From 295540983b6323edcfd457b3163ad6c63608f2da Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Jul 2026 04:10:00 +0200 Subject: [PATCH 56/61] =?UTF-8?q?=F0=9F=A4=96=20Auto-sync=20docs,=20metada?= =?UTF-8?q?ta,=20and=20filepaths=20(#2843)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- exercises/practice/anagram/.meta/config.json | 2 +- exercises/practice/error-handling/.docs/instructions.md | 1 + exercises/practice/grep/.docs/introduction.md | 5 +++++ exercises/practice/grep/.meta/config.json | 2 +- exercises/practice/isogram/.meta/config.json | 2 +- exercises/practice/pangram/.meta/config.json | 2 +- exercises/practice/sublist/.meta/config.json | 2 +- 7 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 exercises/practice/grep/.docs/introduction.md diff --git a/exercises/practice/anagram/.meta/config.json b/exercises/practice/anagram/.meta/config.json index 42cb3ee2a3..132d0a755a 100644 --- a/exercises/practice/anagram/.meta/config.json +++ b/exercises/practice/anagram/.meta/config.json @@ -27,7 +27,7 @@ ".meta/proof.ci.js" ] }, - "blurb": "Given a word and a list of possible anagrams, select the correct sublist.", + "blurb": "Find the words that use the same letters as another word.", "source": "Inspired by the Extreme Startup game", "source_url": "https://github.com/rchatley/extreme_startup", "custom": { diff --git a/exercises/practice/error-handling/.docs/instructions.md b/exercises/practice/error-handling/.docs/instructions.md index 705ff5be11..25dd4d2928 100644 --- a/exercises/practice/error-handling/.docs/instructions.md +++ b/exercises/practice/error-handling/.docs/instructions.md @@ -5,3 +5,4 @@ Implement various kinds of error handling and resource management. An important point of programming is how to handle errors and close resources even if errors occur. This exercise requires you to handle various errors. +Because error handling is rather programming language specific you'll have to refer to the tests for your track to see what's exactly required. diff --git a/exercises/practice/grep/.docs/introduction.md b/exercises/practice/grep/.docs/introduction.md new file mode 100644 index 0000000000..4041290465 --- /dev/null +++ b/exercises/practice/grep/.docs/introduction.md @@ -0,0 +1,5 @@ +# Introduction + +You have taken a job at a local library helping organize their collection of old books. +The student patrons are often hunting for half-remembered quotes to cite in their term papers. +Rather than manually read every book from cover to cover, you decide to build a small tool to scan them, looking for these partial quotes. diff --git a/exercises/practice/grep/.meta/config.json b/exercises/practice/grep/.meta/config.json index 4e6e96b3bf..01667c85ab 100644 --- a/exercises/practice/grep/.meta/config.json +++ b/exercises/practice/grep/.meta/config.json @@ -17,7 +17,7 @@ ".meta/proof.ci.js" ] }, - "blurb": "Search a file for lines matching a regular expression pattern. Return the line number and contents of each matching line.", + "blurb": "Search a file for lines matching a regular expression pattern.", "source": "Conversation with Nate Foster.", "source_url": "https://www.cs.cornell.edu/courses/cs3110/2014sp/hw/0/ps0.pdf", "custom": { diff --git a/exercises/practice/isogram/.meta/config.json b/exercises/practice/isogram/.meta/config.json index 486f11ad0b..4294d83e25 100644 --- a/exercises/practice/isogram/.meta/config.json +++ b/exercises/practice/isogram/.meta/config.json @@ -22,7 +22,7 @@ ".meta/proof.ci.js" ] }, - "blurb": "Determine if a word or phrase is an isogram.", + "blurb": "Determine whether a phrase is an isogram, a word with no repeated letters.", "source": "Wikipedia", "source_url": "https://en.wikipedia.org/wiki/Isogram", "custom": { diff --git a/exercises/practice/pangram/.meta/config.json b/exercises/practice/pangram/.meta/config.json index 13c4d2e850..cd92723bb7 100644 --- a/exercises/practice/pangram/.meta/config.json +++ b/exercises/practice/pangram/.meta/config.json @@ -24,7 +24,7 @@ ".meta/proof.ci.js" ] }, - "blurb": "Determine if a sentence is a pangram.", + "blurb": "Determine whether a phrase uses every letter in the Latin alphabet.", "source": "Wikipedia", "source_url": "https://en.wikipedia.org/wiki/Pangram", "custom": { diff --git a/exercises/practice/sublist/.meta/config.json b/exercises/practice/sublist/.meta/config.json index 502e8e0c84..3cc4445b5f 100644 --- a/exercises/practice/sublist/.meta/config.json +++ b/exercises/practice/sublist/.meta/config.json @@ -22,7 +22,7 @@ ".meta/proof.ci.js" ] }, - "blurb": "Write a function to determine if a list is a sublist of another list.", + "blurb": "Determine if a list is a sublist of another list.", "custom": { "version.tests.compatibility": "jest-27", "flag.tests.task-per-describe": false, From 1550e0505778c3535d9ff83946326347de5fd885 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Aug 2026 10:39:19 +0530 Subject: [PATCH 57/61] Bump actions/setup-node from 6.4.0 to 7.0.0 (#2856) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.4.0 to 7.0.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e...820762786026740c76f36085b0efc47a31fe5020) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/action-format.yml | 2 +- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/pr.ci.js.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index df002f03e0..8026e38ebb 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with: node-version: 22.x cache: 'pnpm' diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index bf00e9e20a..c8e8b9d557 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -18,7 +18,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with: node-version: 22.x cache: 'pnpm' @@ -42,7 +42,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 9025050b68..4700646c82 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -28,7 +28,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js LTS (22.x) - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with: node-version: 22.x cache: 'pnpm' @@ -65,7 +65,7 @@ jobs: run: corepack enable pnpm - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with: node-version: ${{ matrix.node-version }} cache: 'pnpm' From 812581349d0e34b3ecfa6cb79d872515649023e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Aug 2026 10:39:53 +0530 Subject: [PATCH 58/61] Bump actions/checkout from 7.0.0 to 7.0.1 (#2855) Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.js.yml | 4 ++-- .github/workflows/codeql.yml | 2 +- .github/workflows/pr.ci.js.yml | 4 ++-- .github/workflows/verify-code-formatting.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index c8e8b9d557..12b4dbcd1a 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm @@ -37,7 +37,7 @@ jobs: node-version: [22.x] steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Enable corepack to fix https://github.com/actions/setup-node/pull/901 run: corepack enable pnpm diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 40f5ce3818..dc1065526a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr.ci.js.yml b/.github/workflows/pr.ci.js.yml index 4700646c82..c15da4725f 100644 --- a/.github/workflows/pr.ci.js.yml +++ b/.github/workflows/pr.ci.js.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} @@ -48,7 +48,7 @@ jobs: steps: - name: Checkout PR - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }} diff --git a/.github/workflows/verify-code-formatting.yml b/.github/workflows/verify-code-formatting.yml index 83038b2b23..3e4471371b 100644 --- a/.github/workflows/verify-code-formatting.yml +++ b/.github/workflows/verify-code-formatting.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: 'Checkout code' - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: 'Verify formatting of all files' run: ./bin/check-formatting.sh From 37e79274ff2af911b80056bbf9eca63b3382a73d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Aug 2026 10:41:01 +0530 Subject: [PATCH 59/61] Bump github/codeql-action from 4 to 4.37.3 (#2854) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4 to 4.37.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v4...v4.37.3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.37.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index dc1065526a..de107554de 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -33,7 +33,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v4 + uses: github/codeql-action/init@v4.37.3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -44,7 +44,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v4 + uses: github/codeql-action/autobuild@v4.37.3 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -58,4 +58,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 + uses: github/codeql-action/analyze@v4.37.3 From 0907d03895bb7ae6ab1f5ecb308d32c18f907180 Mon Sep 17 00:00:00 2001 From: resu-xuniL <149326570+resu-xuniL@users.noreply.github.com> Date: Mon, 24 Aug 2026 09:06:16 +0200 Subject: [PATCH 60/61] Fix small typo in `introduction.md` & `about.md` (#2858) [no important files changed] --- concepts/type-checking/about.md | 2 +- concepts/type-checking/introduction.md | 2 +- exercises/concept/recycling-robot/.docs/introduction.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/concepts/type-checking/about.md b/concepts/type-checking/about.md index d855cc9dda..0afed179a3 100644 --- a/concepts/type-checking/about.md +++ b/concepts/type-checking/about.md @@ -74,7 +74,7 @@ The `Array` class has a method called `Array.isArray()` that checks if its argum While `instanceof Array` will not work with an array created in a different realm such as an `iframe` in a webpage, `Array.isArray()` will. -This is because the Array class has a different constructor in each realm, and each `iframe` has its own ream, meaning that the function in the prototype chain will be different, causing `instanceof Array` to fail. +This is because the Array class has a different constructor in each realm, and each `iframe` has its own realm, meaning that the function in the prototype chain will be different, causing `instanceof Array` to fail. `Array.isArray()` is capable of ignoring this, and should always be used when possible. It can also survive false positives where an object isn't actually an `Array`, and merely has `Array` in its prototype chain. diff --git a/concepts/type-checking/introduction.md b/concepts/type-checking/introduction.md index d855cc9dda..0afed179a3 100644 --- a/concepts/type-checking/introduction.md +++ b/concepts/type-checking/introduction.md @@ -74,7 +74,7 @@ The `Array` class has a method called `Array.isArray()` that checks if its argum While `instanceof Array` will not work with an array created in a different realm such as an `iframe` in a webpage, `Array.isArray()` will. -This is because the Array class has a different constructor in each realm, and each `iframe` has its own ream, meaning that the function in the prototype chain will be different, causing `instanceof Array` to fail. +This is because the Array class has a different constructor in each realm, and each `iframe` has its own realm, meaning that the function in the prototype chain will be different, causing `instanceof Array` to fail. `Array.isArray()` is capable of ignoring this, and should always be used when possible. It can also survive false positives where an object isn't actually an `Array`, and merely has `Array` in its prototype chain. diff --git a/exercises/concept/recycling-robot/.docs/introduction.md b/exercises/concept/recycling-robot/.docs/introduction.md index 21f826324b..8628305814 100644 --- a/exercises/concept/recycling-robot/.docs/introduction.md +++ b/exercises/concept/recycling-robot/.docs/introduction.md @@ -74,7 +74,7 @@ The `Array` class has a method called `Array.isArray()` that checks if its argum While `instanceof Array` will not work with an array created in a different realm such as an `iframe` in a webpage, `Array.isArray()` will. -This is because the Array class has a different constructor in each realm, and each `iframe` has its own ream, meaning that the function in the prototype chain will be different, causing `instanceof Array` to fail. +This is because the Array class has a different constructor in each realm, and each `iframe` has its own realm, meaning that the function in the prototype chain will be different, causing `instanceof Array` to fail. `Array.isArray()` is capable of ignoring this, and should always be used when possible. It can also survive false positives where an object isn't actually an `Array`, and merely has `Array` in its prototype chain. From b4166c4c1c8f8ae972f32d62a1ccea358a85308c Mon Sep 17 00:00:00 2001 From: resu-xuniL <149326570+resu-xuniL@users.noreply.github.com> Date: Mon, 24 Aug 2026 12:08:18 +0200 Subject: [PATCH 61/61] Update `Collatz-conjecture` error wording (#2859) --- .../practice/collatz-conjecture/.docs/instructions.append.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/practice/collatz-conjecture/.docs/instructions.append.md b/exercises/practice/collatz-conjecture/.docs/instructions.append.md index 5ab8ae4861..df87531ce4 100644 --- a/exercises/practice/collatz-conjecture/.docs/instructions.append.md +++ b/exercises/practice/collatz-conjecture/.docs/instructions.append.md @@ -7,5 +7,5 @@ If `n` is not a positive integer, stop the program from being executed further a In JavaScript, this can be done using the `throw` statement. ```javascript -throw new Error('Only positive numbers are allowed'); +throw new Error('Only positive integers are allowed'); ```