diff --git a/.github/actions/test-native-abi/action.yml b/.github/actions/test-native-abi/action.yml new file mode 100644 index 00000000..5cd8bf34 --- /dev/null +++ b/.github/actions/test-native-abi/action.yml @@ -0,0 +1,27 @@ +name: Test Native ABI +description: > + Set up the given Node.js major and run the core package's integ tests + in-band, without rebuilding, to catch native addon ABI mismatches and + V8-version-specific natives-syntax behavior. The flags mirror what the + runner passes in a real benchmark process; they cannot go through + NODE_OPTIONS (--allow-natives-syntax is rejected there), so jest runs + in-band under a flagged node instead of forking workers. + +inputs: + node-version: + description: Node.js major version to test under + required: true + +runs: + using: composite + steps: + - uses: actions/setup-node@v6 + with: + node-version: ${{ inputs.node-version }} + - shell: bash + working-directory: packages/core + run: > + node --interpreted-frames-native-stack --allow-natives-syntax + "$(node -p 'require.resolve("jest/bin/jest")')" + -c jest.config.integ.js --runInBand + tests/index.integ.test.ts tests/optimization.integ.test.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd4b91d8..1ab37856 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,11 +30,6 @@ jobs: native-abi: runs-on: "ubuntu-latest" name: Native addon ABI compatibility - env: - # The flags the runner passes in a real benchmark process. They cannot go - # through NODE_OPTIONS (--allow-natives-syntax is rejected there), so jest - # runs in-band under a flagged node instead of forking workers. - NODE_OPTS: "--interpreted-frames-native-stack --allow-natives-syntax" steps: - uses: "actions/checkout@v4" with: @@ -51,21 +46,20 @@ jobs: key-suffix: native-abi - run: pnpm install --frozen-lockfile --prefer-offline # Build one prebuild set, then load it without rebuilding under each - # runtime via the jest integ test. The other jobs compile the addon - # with the Node version that loads it, so they cannot detect an ABI - # mismatch. + # runtime via the composite action below. The other jobs compile the + # addon with the Node version that loads it, so they cannot detect an + # ABI mismatch or a V8-version-specific natives-syntax failure. - run: pnpm turbo run build --filter=@codspeed/core - - uses: actions/setup-node@v6 + - uses: ./.github/actions/test-native-abi with: node-version: "22" - - run: node ${{ env.NODE_OPTS }} "$(node -p 'require.resolve("jest/bin/jest")')" -c jest.config.integ.js --runInBand tests/index.integ.test.ts - working-directory: packages/core - - uses: actions/setup-node@v6 + - uses: ./.github/actions/test-native-abi with: node-version: "24" - - run: node ${{ env.NODE_OPTS }} "$(node -p 'require.resolve("jest/bin/jest")')" -c jest.config.integ.js --runInBand tests/index.integ.test.ts - working-directory: packages/core + - uses: ./.github/actions/test-native-abi + with: + node-version: "26" list-examples: runs-on: "ubuntu-latest" @@ -89,7 +83,7 @@ jobs: needs: list-examples strategy: matrix: - node-version: ["22", "24"] + node-version: ["22", "24", "26"] example: ${{ fromJson(needs.list-examples.outputs.examples) }} fail-fast: false steps: diff --git a/.nvmrc b/.nvmrc index 60ade1ae..60bb1e60 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -24.19.0 +26.8.1 diff --git a/package.json b/package.json index 6127133b..0969bace 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-typescript": "^11.1.5", "@types/jest": "^29.5.0", - "@types/node": "^24.10.1", + "@types/node": "^26.3.0", "@typescript-eslint/eslint-plugin": "^8.57.0", "@typescript-eslint/parser": "^8.57.0", "esbuild": "^0.17.16", diff --git a/packages/core/src/nodeVersion.ts b/packages/core/src/nodeVersion.ts index eedfabf1..87eea768 100644 --- a/packages/core/src/nodeVersion.ts +++ b/packages/core/src/nodeVersion.ts @@ -3,7 +3,7 @@ * single Node-API binary and loads on any major, so this only gates the * warning about measurement stability. */ -export const SUPPORTED_NODE_MAJORS = [22, 24]; +export const SUPPORTED_NODE_MAJORS = [22, 24, 26]; export function getUnsupportedNodeVersionWarning( version: string, diff --git a/packages/core/src/optimization.ts b/packages/core/src/optimization.ts index f39d36fc..e606e10f 100644 --- a/packages/core/src/optimization.ts +++ b/packages/core/src/optimization.ts @@ -1,6 +1,13 @@ +// %OptimizeFunctionOnNextCall aborts the process on V8 >= 14.6 unless the function +// was marked with %PrepareFunctionForOptimization first. +// +// Both calls must stay inline: `fn` is only referenced inside an eval string, so a +// helper taking it as a parameter looks unused and bundlers drop the argument. + export const optimizeFunction = async (fn: CallableFunction) => { // Source: https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#optimization-killers // a total of 7 calls seems to be the sweet spot + eval("%PrepareFunctionForOptimization(fn)"); await fn(); await fn(); await fn(); @@ -14,6 +21,7 @@ export const optimizeFunction = async (fn: CallableFunction) => { export const optimizeFunctionSync = (fn: CallableFunction) => { // Source: https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#optimization-killers // a total of 7 calls seems to be the sweet spot + eval("%PrepareFunctionForOptimization(fn)"); fn(); fn(); fn(); diff --git a/packages/core/tests/nodeVersion.integ.test.ts b/packages/core/tests/nodeVersion.integ.test.ts index ced9c352..56be79c1 100644 --- a/packages/core/tests/nodeVersion.integ.test.ts +++ b/packages/core/tests/nodeVersion.integ.test.ts @@ -7,15 +7,18 @@ const { getUnsupportedNodeVersionWarning, warnCi } = require("..") as { }; describe("getUnsupportedNodeVersionWarning", () => { - it.each(["22.22.2", "24.19.0"])("should not warn on Node %s", (version) => { - expect(getUnsupportedNodeVersionWarning(version)).toBeNull(); - }); + it.each(["22.22.2", "24.19.0", "26.8.1"])( + "should not warn on Node %s", + (version) => { + expect(getUnsupportedNodeVersionWarning(version)).toBeNull(); + }, + ); - it.each(["20.5.1", "23.11.0", "26.0.0"])( + it.each(["20.5.1", "23.11.0", "27.0.0"])( "should warn on Node %s", (version) => { expect(getUnsupportedNodeVersionWarning(version)).toBe( - `[CodSpeed] Node.js v${version} is not supported: CodSpeed is tested on Node.js 22, 24. Support for other versions is experimental and measurements may be unstable.`, + `[CodSpeed] Node.js v${version} is not supported: CodSpeed is tested on Node.js 22, 24, 26. Support for other versions is experimental and measurements may be unstable.`, ); }, ); diff --git a/packages/core/tests/optimization.integ.test.ts b/packages/core/tests/optimization.integ.test.ts new file mode 100644 index 00000000..e6437210 --- /dev/null +++ b/packages/core/tests/optimization.integ.test.ts @@ -0,0 +1,43 @@ +import { execFileSync } from "child_process"; +import path from "path"; + +// A function optimized without being marked for manual optimization first aborts +// the process on V8 >= 14.6, which no in-process assertion can observe. The helpers +// are exercised through the built package so the bundled natives calls are covered. +const runWithNatives = (snippet: string): string => + execFileSync(process.execPath, ["--allow-natives-syntax", "-e", snippet], { + encoding: "utf8", + }); + +const corePath = JSON.stringify(path.join(__dirname, "..")); + +// %GetOptimizationStatus's bitmask layout shifts between V8 versions, so a +// specific bit isn't safe to assert on. Comparing the status before and after +// the optimize call instead proves TurboFan recompiled the function, without +// depending on what any bit means. +describe("optimization helpers", () => { + it("should optimize a sync function without aborting", () => { + const stdout = runWithNatives( + `const target = () => 1; + const before = %GetOptimizationStatus(target); + require(${corePath}).optimizeFunctionSync(target); + console.log("done", before, %GetOptimizationStatus(target));`, + ); + const [, before, after] = stdout.match(/done (\d+) (\d+)/) ?? []; + expect(stdout).toContain("done"); + expect(after).not.toEqual(before); + }); + + it("should optimize an async function without aborting", () => { + const stdout = runWithNatives( + `const target = async () => 1; + const before = %GetOptimizationStatus(target); + require(${corePath}) + .optimizeFunction(target) + .then(() => console.log("done", before, %GetOptimizationStatus(target)));`, + ); + const [, before, after] = stdout.match(/done (\d+) (\d+)/) ?? []; + expect(stdout).toContain("done"); + expect(after).not.toEqual(before); + }); +}); diff --git a/packages/vitest-plugin/src/__tests__/index.test.ts b/packages/vitest-plugin/src/__tests__/index.test.ts index 63ce93cc..3aae6e2b 100644 --- a/packages/vitest-plugin/src/__tests__/index.test.ts +++ b/packages/vitest-plugin/src/__tests__/index.test.ts @@ -1,5 +1,5 @@ -import { fromPartial } from "@total-typescript/shoehorn"; import { getV8Flags } from "@codspeed/core"; +import { fromPartial } from "@total-typescript/shoehorn"; import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; import codspeedPlugin from "../index"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6e150dd..3e43f6b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: ^29.5.0 version: 29.5.0 '@types/node': - specifier: ^24.10.1 - version: 24.13.3 + specifier: ^26.3.0 + version: 26.4.1 '@typescript-eslint/eslint-plugin': specifier: ^8.57.0 version: 8.60.0(@typescript-eslint/parser@8.60.0(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) @@ -61,10 +61,10 @@ importers: version: 7.0.4 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + version: 29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) jest-config: specifier: ^29.5.0 - version: 29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + version: 29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) lerna: specifier: ^8.2.4 version: 8.2.4(encoding@0.1.13) @@ -85,7 +85,7 @@ importers: version: 6.1.0(esbuild@0.17.16)(rollup@4.48.1) ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.21.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.21.4))(esbuild@0.17.16)(jest@29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.1.0(@babel/core@7.21.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.21.4))(esbuild@0.17.16)(jest@29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)))(typescript@5.8.3) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -193,7 +193,7 @@ importers: version: 5.1.3 vitest: specifier: ^4.0.18 - version: 4.0.18(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + version: 4.0.18(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) examples/with-typescript-simple-cjs: devDependencies: @@ -253,7 +253,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + version: 3.2.4(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) packages/benchmark.js-plugin: dependencies: @@ -278,7 +278,7 @@ importers: version: 2.1.4 jest-mock-extended: specifier: ^3.0.4 - version: 3.0.4(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)))(typescript@5.8.3) + version: 3.0.4(jest@29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)))(typescript@5.8.3) packages/core: dependencies: @@ -331,7 +331,7 @@ importers: version: 1.60.0 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + version: 3.2.4(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) packages/tinybench-plugin: dependencies: @@ -347,7 +347,7 @@ importers: version: 4.23.12 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + version: 3.2.4(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) packages/vitest-plugin: dependencies: @@ -366,10 +366,10 @@ importers: version: 2.9.0 vite: specifier: ^8.0.0 - version: 8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0) + version: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: ^4.1.11 - version: 4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)) + version: 4.1.11(@types/node@26.4.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)) packages: @@ -2515,8 +2515,8 @@ packages: '@types/minimist@1.2.2': resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - '@types/node@24.13.3': - resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} + '@types/node@26.4.1': + resolution: {integrity: sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==} '@types/normalize-package-data@2.4.1': resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -4052,13 +4052,13 @@ packages: git-raw-commits@2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} - deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead. + deprecated: Deprecated and no longer maintained. Use @conventional-changelog/git-client instead. hasBin: true git-raw-commits@3.0.0: resolution: {integrity: sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==} engines: {node: '>=14'} - deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead. + deprecated: Deprecated and no longer maintained. Use @conventional-changelog/git-client instead. hasBin: true git-remote-origin-url@2.0.0: @@ -4068,7 +4068,7 @@ packages: git-semver-tags@5.0.1: resolution: {integrity: sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==} engines: {node: '>=14'} - deprecated: This package is no longer maintained. For the JavaScript API, please use @conventional-changelog/git-client instead. + deprecated: Deprecated and no longer maintained. Use @conventional-changelog/git-client instead. hasBin: true git-up@7.0.0: @@ -6599,8 +6599,8 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undici-types@7.18.2: - resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} @@ -8095,15 +8095,15 @@ snapshots: '@commitlint/execute-rule': 17.4.0 '@commitlint/resolve-extends': 17.4.4 '@commitlint/types': 17.4.4 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 cosmiconfig: 8.1.3 - cosmiconfig-typescript-loader: 4.3.0(@types/node@24.13.3)(cosmiconfig@8.1.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3))(typescript@5.8.3) + cosmiconfig-typescript-loader: 4.3.0(@types/node@26.4.1)(cosmiconfig@8.1.3)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3))(typescript@5.8.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@types/node@24.13.3)(typescript@5.8.3) + ts-node: 10.9.1(@types/node@26.4.1)(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - '@swc/core' @@ -8463,7 +8463,7 @@ snapshots: '@jest/console@29.5.0': dependencies: '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -8472,27 +8472,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.5.0(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3))': + '@jest/core@29.5.0(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3))': dependencies: '@jest/console': 29.5.0 '@jest/reporters': 29.5.0 '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest-config: 29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -8512,21 +8512,21 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3))': + '@jest/core@29.7.0(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3))': 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 - '@types/node': 24.13.3 + '@types/node': 26.4.1 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@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8551,14 +8551,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-mock: 29.5.0 '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-mock: 29.7.0 '@jest/expect-utils@29.5.0': @@ -8587,7 +8587,7 @@ snapshots: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -8596,7 +8596,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -8627,7 +8627,7 @@ snapshots: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -8656,7 +8656,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.29 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -8770,7 +8770,7 @@ snapshots: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 24.13.3 + '@types/node': 26.4.1 '@types/yargs': 17.0.24 chalk: 4.1.2 @@ -8779,7 +8779,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.13.3 + '@types/node': 26.4.1 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -9518,11 +9518,11 @@ snapshots: '@types/graceful-fs@4.1.6': dependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 '@types/istanbul-lib-coverage@2.0.4': {} @@ -9559,9 +9559,9 @@ snapshots: '@types/minimist@1.2.2': {} - '@types/node@24.13.3': + '@types/node@26.4.1': dependencies: - undici-types: 7.18.2 + undici-types: 8.3.0 '@types/normalize-package-data@2.4.1': {} @@ -9776,29 +9776,29 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0))': + '@vitest/mocker@3.2.4(vite@7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + vite: 7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) - '@vitest/mocker@4.0.18(vite@7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0))': + '@vitest/mocker@4.0.18(vite@7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + vite: 7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) - '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0))': + '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.11 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0) + vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -10566,11 +10566,11 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@4.3.0(@types/node@24.13.3)(cosmiconfig@8.1.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3))(typescript@5.8.3): + cosmiconfig-typescript-loader@4.3.0(@types/node@26.4.1)(cosmiconfig@8.1.3)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3))(typescript@5.8.3): dependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 cosmiconfig: 8.1.3 - ts-node: 10.9.1(@types/node@24.13.3)(typescript@5.8.3) + ts-node: 10.9.1(@types/node@26.4.1)(typescript@5.8.3) typescript: 5.8.3 cosmiconfig@8.1.3: @@ -10589,13 +10589,13 @@ snapshots: optionalDependencies: typescript: 5.8.3 - create-jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.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@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -11954,7 +11954,7 @@ snapshots: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -11979,7 +11979,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -11999,16 +11999,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)): + jest-cli@29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)): dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + '@jest/core': 29.5.0(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest-config: 29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -12018,16 +12018,16 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -12037,7 +12037,7 @@ snapshots: - supports-color - ts-node - jest-config@29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)): + jest-config@29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)): dependencies: '@babel/core': 7.21.4 '@jest/test-sequencer': 29.5.0 @@ -12062,12 +12062,12 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.13.3 - ts-node: 10.9.1(@types/node@24.13.3)(typescript@5.8.3) + '@types/node': 26.4.1 + ts-node: 10.9.1(@types/node@26.4.1)(typescript@5.8.3) transitivePeerDependencies: - supports-color - jest-config@29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)): dependencies: '@babel/core': 7.28.0 '@jest/test-sequencer': 29.7.0 @@ -12092,8 +12092,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.13.3 - ts-node: 10.9.1(@types/node@24.13.3)(typescript@5.8.3) + '@types/node': 26.4.1 + ts-node: 10.9.1(@types/node@26.4.1)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -12141,7 +12141,7 @@ snapshots: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -12150,7 +12150,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -12162,7 +12162,7 @@ snapshots: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.6 - '@types/node': 24.13.3 + '@types/node': 26.4.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -12178,7 +12178,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 24.13.3 + '@types/node': 26.4.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -12238,22 +12238,22 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock-extended@3.0.4(jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)))(typescript@5.8.3): + jest-mock-extended@3.0.4(jest@29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)))(typescript@5.8.3): dependencies: - jest: 29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest: 29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) ts-essentials: 7.0.3(typescript@5.8.3) typescript: 5.8.3 jest-mock@29.5.0: dependencies: '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-util: 29.5.0 jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): @@ -12313,7 +12313,7 @@ snapshots: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -12339,7 +12339,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -12367,7 +12367,7 @@ snapshots: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -12394,7 +12394,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -12468,7 +12468,7 @@ snapshots: jest-util@29.5.0: dependencies: '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -12477,7 +12477,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12505,7 +12505,7 @@ snapshots: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 24.13.3 + '@types/node': 26.4.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -12516,7 +12516,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -12525,35 +12525,35 @@ snapshots: jest-worker@29.5.0: dependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)): + jest@29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)): dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + '@jest/core': 29.5.0(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest-cli: 29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - supports-color - ts-node - jest@29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)): + jest@29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -14368,11 +14368,11 @@ snapshots: dependencies: typescript: 5.8.3 - ts-jest@29.1.0(@babel/core@7.21.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.21.4))(esbuild@0.17.16)(jest@29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.1.0(@babel/core@7.21.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.21.4))(esbuild@0.17.16)(jest@29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@24.13.3)(ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3)) + jest: 29.5.0(@types/node@26.4.1)(ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3)) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -14386,14 +14386,14 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.21.4) esbuild: 0.17.16 - ts-node@10.9.1(@types/node@24.13.3)(typescript@5.8.3): + ts-node@10.9.1(@types/node@26.4.1)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 24.13.3 + '@types/node': 26.4.1 acorn: 8.10.0 acorn-walk: 8.3.2 arg: 4.1.3 @@ -14509,7 +14509,7 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@7.18.2: {} + undici-types@8.3.0: {} unicode-canonical-property-names-ecmascript@2.0.0: {} @@ -14604,13 +14604,13 @@ snapshots: validate-npm-package-name@5.0.1: {} - vite-node@3.2.4(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0): + vite-node@3.2.4(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + vite: 7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -14625,7 +14625,7 @@ snapshots: - tsx - yaml - vite@7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0): + vite@7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -14634,13 +14634,13 @@ snapshots: rollup: 4.48.1 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 fsevents: 2.3.3 lightningcss: 1.33.0 tsx: 4.23.12 yaml: 2.9.0 - vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0): + vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -14648,17 +14648,17 @@ snapshots: rolldown: 1.2.6 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 esbuild: 0.28.2 fsevents: 2.3.3 tsx: 4.23.12 yaml: 2.9.0 - vitest@3.2.4(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0): + vitest@3.2.4(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0)) + '@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -14676,11 +14676,11 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) - vite-node: 3.2.4(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + vite: 7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 transitivePeerDependencies: - jiti - less @@ -14695,10 +14695,10 @@ snapshots: - tsx - yaml - vitest@4.0.18(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0): + vitest@4.0.18(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0)) + '@vitest/mocker': 4.0.18(vite@7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -14715,10 +14715,10 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.3(@types/node@24.13.3)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) + vite: 7.1.3(@types/node@26.4.1)(lightningcss@1.33.0)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 transitivePeerDependencies: - jiti - less @@ -14732,10 +14732,10 @@ snapshots: - tsx - yaml - vitest@4.1.11(@types/node@24.13.3)(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)): + vitest@4.1.11(@types/node@26.4.1)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.11 '@vitest/runner': 4.1.11 '@vitest/snapshot': 4.1.11 @@ -14752,10 +14752,10 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 - vite: 8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0) + vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.13.3 + '@types/node': 26.4.1 transitivePeerDependencies: - msw