From d88d2e380b68e2556b599edc112aa8924995e221 Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Fri, 10 Jul 2026 11:24:11 +0500 Subject: [PATCH 1/2] chore: replace ts-node with tsx for running TypeScript Motivation: - ts-node was pinned to a pre-release (^11.0.0-beta.1) and depended on the deprecated Node `--loader` hook plus an RC TypeScript, making it fragile to maintain on Node 24 (engines ^24.13.0). - tsx is actively maintained, esbuild-based (faster startup, transpile-only by default), integrates via the current `--import` hook, and is the runner recommended in the official Node.js TypeScript docs. - Simplifies config: removes the `ts-node` blocks from tsconfig and the deprecated `--loader ts-node/esm` invocations. Changes: - devDependency ts-node@^11 -> tsx@^4.23.0 - `pnpm exec ts-node X.ts` -> `pnpm exec tsx X.ts` (check-readme in 15 pkgs) - `node --loader[=]ts-node/esm X.ts` -> `node --import tsx X.ts` (download-spec-tests, cli docs:build + test:sim:*, benchmark:files, run_e2e_env.sh, params e2e tests) - test-utils runWith option "ts-node" -> "tsx" - drop `ts-node` blocks from tsconfig.json / tsconfig.e2e.json - shebangs: check_readme.ts -> tsx; compiled bin downloadTestsCli.ts -> node - update usage comments referencing node_modules/.bin/ts-node Co-Authored-By: Claude Opus 4.8 (1M context) --- package.json | 4 +- packages/api/package.json | 2 +- packages/beacon-node/package.json | 4 +- .../test/scripts/blsPubkeyBytesFrequency.ts | 2 +- packages/cli/docsgen/index.ts | 2 +- packages/cli/package.json | 12 +- packages/config/package.json | 2 +- packages/db/package.json | 2 +- packages/era/package.json | 2 +- packages/fork-choice/package.json | 2 +- packages/logger/package.json | 2 +- packages/params/package.json | 2 +- .../params/test/e2e/overridePreset.test.ts | 6 +- packages/params/test/e2e/setPreset.test.ts | 6 +- packages/reqresp/package.json | 2 +- packages/spec-test-util/package.json | 2 +- .../spec-test-util/src/downloadTestsCli.ts | 2 +- packages/state-transition/package.json | 2 +- .../test/perf/analyzeEpochs.ts | 2 +- packages/test-utils/package.json | 2 +- packages/test-utils/src/cli.ts | 16 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- packages/validator/package.json | 4 +- pnpm-lock.yaml | 480 ++++++++++++------ scripts/check_readme.ts | 2 +- scripts/run_e2e_env.sh | 2 +- tsconfig.e2e.json | 3 - tsconfig.json | 9 +- 29 files changed, 377 insertions(+), 205 deletions(-) diff --git a/package.json b/package.json index a807b5adc9e8..162d5b4efc16 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "download-spec-tests": "pnpm -r download-spec-tests", "test:spec": "vitest run --project spec-minimal --project spec-mainnet", "benchmark": "pnpm benchmark:files 'packages/*/test/perf/**/*.test.ts'", - "benchmark:files": "NODE_OPTIONS='--max-old-space-size=8192 --loader=ts-node/esm' benchmark --config .benchrc.yaml --defaultBranch unstable", + "benchmark:files": "NODE_OPTIONS='--max-old-space-size=8192 --import tsx' benchmark --config .benchrc.yaml --defaultBranch unstable", "release:create-rc": "node scripts/release/create_rc.mjs", "release:tag-rc": "node scripts/release/tag_rc.mjs", "release:tag-stable": "node scripts/release/tag_stable.mjs", @@ -65,7 +65,7 @@ "prettier": "^3.2.5", "pretty-format": "^29.7.0", "semver": "^7.7.3", - "ts-node": "^11.0.0-beta.1", + "tsx": "^4.23.0", "typescript": "^6.0.1-rc", "vite": "^6.0.11", "vite-plugin-node-polyfills": "^0.24.0", diff --git a/packages/api/package.json b/packages/api/package.json index 0e866026a548..123408be41f2 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -71,7 +71,7 @@ "lint:fix": "pnpm run lint --write", "test": "pnpm test:unit", "test:unit": "vitest run --project unit --project unit-minimal", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "dependencies": { "@chainsafe/persistent-merkle-tree": "^1.2.5", diff --git a/packages/beacon-node/package.json b/packages/beacon-node/package.json index ff5cf52f6ebb..f584a3837c51 100644 --- a/packages/beacon-node/package.json +++ b/packages/beacon-node/package.json @@ -99,13 +99,13 @@ "test:e2e": "vitest run --project e2e --project e2e-mainnet", "test:sim": "vitest run test/sim/**/*.test.ts", "test:sim:blobs": "vitest run test/sim/4844-interop.test.ts", - "download-spec-tests": "node --loader=ts-node/esm test/spec/downloadTests.ts", + "download-spec-tests": "node --import tsx test/spec/downloadTests.ts", "test:spec:bls": "vitest run --project spec-minimal test/spec/bls/", "test:spec:general": "vitest run --project spec-minimal test/spec/general/", "test:spec:minimal": "vitest run --project spec-minimal test/spec/presets/", "test:spec:mainnet": "vitest run --project spec-mainnet test/spec/presets/", "test:spec": "pnpm test:spec:bls && pnpm test:spec:general && pnpm test:spec:minimal && pnpm test:spec:mainnet", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "dependencies": { "@chainsafe/as-sha256": "^1.2.0", diff --git a/packages/beacon-node/test/scripts/blsPubkeyBytesFrequency.ts b/packages/beacon-node/test/scripts/blsPubkeyBytesFrequency.ts index aaf882a86bff..f8c687b956b3 100644 --- a/packages/beacon-node/test/scripts/blsPubkeyBytesFrequency.ts +++ b/packages/beacon-node/test/scripts/blsPubkeyBytesFrequency.ts @@ -9,7 +9,7 @@ import {newZeroedArray} from "@lodestar/state-transition"; // // # How to use // ``` -// INFURA_ETH2_URL=https://someurl ../../node_modules/.bin/ts-node test/scripts/blsPubkeyBytesFrequency.ts collisions +// INFURA_ETH2_URL=https://someurl ../../node_modules/.bin/tsx test/scripts/blsPubkeyBytesFrequency.ts collisions // ``` // Available commands: // - `frequency` diff --git a/packages/cli/docsgen/index.ts b/packages/cli/docsgen/index.ts index a7adb68a0ed9..c359e3c3e21c 100644 --- a/packages/cli/docsgen/index.ts +++ b/packages/cli/docsgen/index.ts @@ -8,7 +8,7 @@ import {renderCommandPage} from "./markdown.js"; // Outputs a markdown format ready to be consumed // // Usage: -// ts-node packages/cli/docsgen +// tsx packages/cli/docsgen // // After generation the resulting .md files, they are written to the path expected // by the docusaurus index and other existing paths in the documentation diff --git a/packages/cli/package.json b/packages/cli/package.json index 137b0a00fdb7..218155ce717b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -34,17 +34,17 @@ "write-git-data": "node lib/util/gitData/writeGitData.js", "check-build": "node -e \"(async function() { await import('./lib/index.js') })()\" lodestar --help", "check-types": "tsgo", - "docs:build": "node --loader ts-node/esm ./docsgen/index.ts", + "docs:build": "node --import tsx ./docsgen/index.ts", "lint": "biome check src/ test/", "lint:fix": "pnpm run lint --write", "test:unit": "vitest run --project unit --project unit-minimal", "test:e2e": "vitest run --project e2e --project e2e-mainnet", - "test:sim:multifork": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/multiFork.test.ts", - "test:sim:mixedclient": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/mixedClient.test.ts", - "test:sim:endpoints": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/endpoints.test.ts", - "test:sim:backup_eth_provider": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/backupEthProvider.test.ts", + "test:sim:multifork": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --import tsx test/sim/multiFork.test.ts", + "test:sim:mixedclient": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --import tsx test/sim/mixedClient.test.ts", + "test:sim:endpoints": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --import tsx test/sim/endpoints.test.ts", + "test:sim:backup_eth_provider": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --import tsx test/sim/backupEthProvider.test.ts", "test": "pnpm test:unit && pnpm test:e2e", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "repository": { "type": "git", diff --git a/packages/config/package.json b/packages/config/package.json index c5e558a15de0..6944daa26265 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -52,7 +52,7 @@ "lint:fix": "pnpm run lint --write", "test": "pnpm test:unit", "test:unit": "pnpm vitest run --project unit --project unit-minimal", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "repository": { "type": "git", diff --git a/packages/db/package.json b/packages/db/package.json index f2105e95c402..d8e990230afa 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -40,7 +40,7 @@ "test": "pnpm test:unit", "test:unit": "vitest run --project unit --project unit-minimal", "test:e2e": "vitest run --project e2e", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "dependencies": { "@chainsafe/ssz": "^1.4.0", diff --git a/packages/era/package.json b/packages/era/package.json index 71dcebbefaad..31a9ba878d93 100644 --- a/packages/era/package.json +++ b/packages/era/package.json @@ -36,7 +36,7 @@ "lint:fix": "pnpm run lint --write", "test": "pnpm test:unit", "test:unit": "vitest run --project unit --project unit-minimal", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "dependencies": { "@chainsafe/blst": "^2.2.0", diff --git a/packages/fork-choice/package.json b/packages/fork-choice/package.json index 9c2fc447d7d4..1409a04a3230 100644 --- a/packages/fork-choice/package.json +++ b/packages/fork-choice/package.json @@ -36,7 +36,7 @@ "lint:fix": "pnpm run lint --write", "test": "pnpm test:unit", "test:unit": "vitest run --project unit --project unit-minimal", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "dependencies": { "@chainsafe/ssz": "^1.4.0", diff --git a/packages/logger/package.json b/packages/logger/package.json index af75e5773c17..d1450baf4ca0 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -63,7 +63,7 @@ "test:unit": "vitest run --project unit --project unit-minimal", "test:browsers": "vitest run --project browser", "test:e2e": "vitest run --project e2e --project e2e-mainnet", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "types": "lib/index.d.ts", "dependencies": { diff --git a/packages/params/package.json b/packages/params/package.json index 1eb4d92fd6e0..a349a94886b0 100644 --- a/packages/params/package.json +++ b/packages/params/package.json @@ -54,7 +54,7 @@ "test:unit": "vitest run --project unit --project unit-minimal", "test:browsers": "vitest run --project browser", "test:e2e": "vitest run --project e2e --project e2e-mainnet", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "repository": { "type": "git", diff --git a/packages/params/test/e2e/overridePreset.test.ts b/packages/params/test/e2e/overridePreset.test.ts index aa609b5e8f75..10e1c55be482 100644 --- a/packages/params/test/e2e/overridePreset.test.ts +++ b/packages/params/test/e2e/overridePreset.test.ts @@ -16,18 +16,18 @@ const exec = util.promisify(child.exec); const __dirname = path.dirname(fileURLToPath(import.meta.url)); describe("Override preset", () => { - // Allow time for ts-node to compile Typescript source + // Allow time for tsx to compile Typescript source vi.setConfig({testTimeout: 30_000}); it("Should correctly override preset", async () => { // `LODESTAR_PRESET` must not be set to properly test preset override if (process.env.LODESTAR_PRESET) delete process.env.LODESTAR_PRESET; - await exec(`node --loader ts-node/esm ${path.join(__dirname, scriptNames.ok)}`); + await exec(`node --import tsx ${path.join(__dirname, scriptNames.ok)}`); }); it("Should throw trying to override preset in the wrong order", async () => { - await expect(exec(`node --loader ts-node/esm ${path.join(__dirname, scriptNames.error)}`)).rejects.toThrow( + await expect(exec(`node --import tsx ${path.join(__dirname, scriptNames.error)}`)).rejects.toThrow( "Lodestar preset is already frozen" ); }); diff --git a/packages/params/test/e2e/setPreset.test.ts b/packages/params/test/e2e/setPreset.test.ts index d75cf9861869..3b8ddd182e1a 100644 --- a/packages/params/test/e2e/setPreset.test.ts +++ b/packages/params/test/e2e/setPreset.test.ts @@ -16,18 +16,18 @@ const exec = util.promisify(child.exec); const __dirname = path.dirname(fileURLToPath(import.meta.url)); describe("setPreset", () => { - // Allow time for ts-node to compile Typescript source + // Allow time for tsx to compile Typescript source vi.setConfig({testTimeout: 30_000}); it("Should correctly set preset", async () => { // `LODESTAR_PRESET` must not be set to properly test setting preset if (process.env.LODESTAR_PRESET) delete process.env.LODESTAR_PRESET; - await exec(`node --loader ts-node/esm ${path.join(__dirname, scriptNames.ok)}`); + await exec(`node --import tsx ${path.join(__dirname, scriptNames.ok)}`); }); it("Should throw trying to set preset in the wrong order", async () => { - await expect(exec(`node --loader ts-node/esm ${path.join(__dirname, scriptNames.error)}`)).rejects.toThrow( + await expect(exec(`node --import tsx ${path.join(__dirname, scriptNames.error)}`)).rejects.toThrow( "Lodestar preset is already frozen" ); }); diff --git a/packages/reqresp/package.json b/packages/reqresp/package.json index 7ab1bcae0a22..19aa2c4c2dac 100644 --- a/packages/reqresp/package.json +++ b/packages/reqresp/package.json @@ -41,7 +41,7 @@ "lint:fix": "pnpm run lint --write", "test": "pnpm test:unit", "test:unit": "vitest run --project unit --project unit-minimal", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "dependencies": { "@chainsafe/fast-crc32c": "^4.2.0", diff --git a/packages/spec-test-util/package.json b/packages/spec-test-util/package.json index bab0446f3da4..13a26ce73e82 100644 --- a/packages/spec-test-util/package.json +++ b/packages/spec-test-util/package.json @@ -46,7 +46,7 @@ "test": "pnpm test:unit && pnpm test:e2e", "test:unit": "vitest run --project unit --project unit-minimal", "test:e2e": "vitest run --project e2e --project e2e-mainnet", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "repository": { "type": "git", diff --git a/packages/spec-test-util/src/downloadTestsCli.ts b/packages/spec-test-util/src/downloadTestsCli.ts index 92957d9e60e6..4d1acabe0f1f 100755 --- a/packages/spec-test-util/src/downloadTestsCli.ts +++ b/packages/spec-test-util/src/downloadTestsCli.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env node import {downloadTests} from "./downloadTests.js"; diff --git a/packages/state-transition/package.json b/packages/state-transition/package.json index 1b3a7cbebd3c..dd869927359c 100644 --- a/packages/state-transition/package.json +++ b/packages/state-transition/package.json @@ -61,7 +61,7 @@ "lint:fix": "pnpm run lint --write", "test": "pnpm test:unit", "test:unit": "vitest run --project unit --project unit-minimal", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "types": "lib/index.d.ts", "dependencies": { diff --git a/packages/state-transition/test/perf/analyzeEpochs.ts b/packages/state-transition/test/perf/analyzeEpochs.ts index 5aed6c010ce9..06a3308794f6 100644 --- a/packages/state-transition/test/perf/analyzeEpochs.ts +++ b/packages/state-transition/test/perf/analyzeEpochs.ts @@ -20,7 +20,7 @@ import {csvAppend, readCsv} from "./csv.js"; // To run do: // // ``` -// NETWORK=mainnet node_modules/.bin/ts-node packages/state-transition/test/perf/analyzeEpochs.ts +// NETWORK=mainnet node_modules/.bin/tsx packages/state-transition/test/perf/analyzeEpochs.ts // ``` // // Example of output CSV diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index aa9ffcf7257a..5772b03f8c8b 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -37,7 +37,7 @@ "lint": "biome check src/", "lint:fix": "pnpm run lint --write", "test:unit": "echo 'No unit tests for @lodestar/test-utils'", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "repository": { "type": "git", diff --git a/packages/test-utils/src/cli.ts b/packages/test-utils/src/cli.ts index bdc87df96ac2..964cf8b55180 100644 --- a/packages/test-utils/src/cli.ts +++ b/packages/test-utils/src/cli.ts @@ -59,14 +59,14 @@ export async function runCliCommand( export function execCliCommand( command: string, args: string[], - opts?: ExecChildProcessOptions & {runWith?: "node" | "ts-node"} + opts?: ExecChildProcessOptions & {runWith?: "node" | "tsx"} ): Promise { const commandPrefixed = nodeJsBinaryPath; const argsPrefixed = - opts?.runWith === "ts-node" - ? // node --loader ts-node/esm cli.ts - ["--loader", "ts-node/esm", repoRootPath(command), ...args] + opts?.runWith === "tsx" + ? // node --import tsx cli.ts + ["--import", "tsx", repoRootPath(command), ...args] : // node cli.js [repoRootPath(command), ...args]; @@ -84,14 +84,14 @@ export function execCliCommand( export async function spawnCliCommand( command: string, args: string[], - opts?: SpawnChildProcessOptions & {runWith?: "node" | "ts-node"} + opts?: SpawnChildProcessOptions & {runWith?: "node" | "tsx"} ): Promise { const commandPrefixed = nodeJsBinaryPath; const argsPrefixed = - opts?.runWith === "ts-node" - ? // node --loader ts-node/esm cli.ts - ["--loader", "ts-node/esm", repoRootPath(command), ...args] + opts?.runWith === "tsx" + ? // node --import tsx cli.ts + ["--import", "tsx", repoRootPath(command), ...args] : // node cli.js [repoRootPath(command), ...args]; diff --git a/packages/types/package.json b/packages/types/package.json index 490484c1ef0c..2c34471cb951 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -77,7 +77,7 @@ "test": "pnpm test:unit", "test:unit": "vitest run --project unit --project unit-minimal", "test:browsers": "vitest run --project browser", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "types": "lib/index.d.ts", "dependencies": { diff --git a/packages/utils/package.json b/packages/utils/package.json index 4645d985ba2b..577aba0fc3a9 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -42,7 +42,7 @@ "lint:fix": "pnpm run lint --write", "test:unit": "vitest run --project unit --project unit-minimal", "test:browsers": "vitest run --project browser", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "types": "lib/index.d.ts", "dependencies": { diff --git a/packages/validator/package.json b/packages/validator/package.json index 62a2e111805c..a4ddf4b8fcbc 100644 --- a/packages/validator/package.json +++ b/packages/validator/package.json @@ -34,8 +34,8 @@ "test": "pnpm test:unit && pnpm test:e2e", "test:spec": "vitest run --project spec-minimal", "test:e2e": "vitest run --project e2e --project e2e-mainnet", - "download-spec-tests": "node --loader=ts-node/esm test/spec/downloadTests.ts", - "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts" + "download-spec-tests": "node --import tsx test/spec/downloadTests.ts", + "check-readme": "pnpm exec tsx ../../scripts/check_readme.ts" }, "repository": { "type": "git", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63d03e4e5d60..2bd02366acbe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,13 +74,13 @@ importers: version: 7.0.0-dev.20260303.1 '@vitest/browser': specifier: 'catalog:' - version: 4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7) + version: 4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7) '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.0.7(playwright@1.60.0)(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7) + version: 4.0.7(playwright@1.60.0)(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.0.7(@vitest/browser@4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7))(vitest@4.0.7) + version: 4.0.7(@vitest/browser@4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7))(vitest@4.0.7) axios: specifier: ^1.13.2 version: 1.13.3 @@ -111,24 +111,24 @@ importers: semver: specifier: ^7.7.3 version: 7.7.3 - ts-node: - specifier: ^11.0.0-beta.1 - version: 11.0.0-beta.1(@swc/core@1.14.0)(@swc/wasm@1.14.0)(@types/node@24.10.1)(typescript@6.0.1-rc) + tsx: + specifier: ^4.23.0 + version: 4.23.0 typescript: specifier: ^6.0.1-rc version: 6.0.1-rc vite: specifier: ^6.0.11 - version: 6.1.6(@types/node@24.10.1)(yaml@2.8.2) + version: 6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2) vite-plugin-node-polyfills: specifier: ^0.24.0 - version: 0.24.0(rollup@4.52.5)(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2)) + version: 0.24.0(rollup@4.52.5)(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2)) vite-plugin-top-level-await: specifier: ^1.6.0 - version: 1.6.0(rollup@4.52.5)(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2)) + version: 1.6.0(rollup@4.52.5)(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2)) vitest: specifier: 'catalog:' - version: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + version: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) vitest-when: specifier: ^0.9.0 version: 0.9.0(@vitest/expect@4.0.7)(vitest@4.0.7) @@ -719,7 +719,7 @@ importers: version: 0.7.0 vitest: specifier: 'catalog:' - version: 4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + version: 4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) packages/state-transition: dependencies: @@ -783,7 +783,7 @@ importers: version: 0.2.7 vitest: specifier: 'catalog:' - version: 4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + version: 4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) devDependencies: '@types/tmp': specifier: ^0.2.3 @@ -1432,10 +1432,6 @@ packages: resolution: {integrity: sha512-T6ibygoZ4O5x1bhyr65SnMtU7pSpWWUIxIWcN6PDSZny1PwnlX2Jx42F3sogrLsy7MIQ7zHkwA0Pf4kybpxAVA==} engines: {node: '>= 10'} - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@dabh/diagnostics@2.0.2': resolution: {integrity: sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==} @@ -1458,150 +1454,306 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.24.2': resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.24.2': resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.24.2': resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.24.2': resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.24.2': resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.24.2': resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.24.2': resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.24.2': resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.24.2': resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.24.2': resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.24.2': resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.24.2': resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.24.2': resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.24.2': resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.24.2': resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.24.2': resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.24.2': resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.24.2': resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.24.2': resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.24.2': resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.24.2': resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@ethereumjs/rlp@10.1.1': resolution: {integrity: sha512-jbnWTEwcpoY+gE0r+wxfDG9zgiu54DcTcwnc9sX3DsqKR4l5K7x2V8mQL3Et6hURa4DuT9g7z6ukwpBLFchszg==} engines: {node: '>=20'} @@ -1805,9 +1957,6 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@leafac/node@0.0.1': resolution: {integrity: sha512-rHj9ZZQYNJt9UGhELr+rBjg4PqVdkKSvfauYMYavwO8yTnTqSBuV0rM+SfLDA1PHVwTaWCo/IDpqmOCMXTf9/Q==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -2710,18 +2859,6 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@tsconfig/node14@1.0.1': - resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} - - '@tsconfig/node16@1.0.2': - resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} - - '@tsconfig/node18@18.2.6': - resolution: {integrity: sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==} - - '@tsconfig/node20@20.1.9': - resolution: {integrity: sha512-IjlTv1RsvnPtUcjTqtVsZExKVq+KQx4g5pCP5tI7rAs6Xesl2qFwSz/tPDBC4JajkL/MlezBu3gPUwqRHl+RIg==} - '@tufjs/canonical-json@2.0.0': resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -2949,15 +3086,6 @@ packages: abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} @@ -3043,9 +3171,6 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16} deprecated: This package is no longer supported. - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -3563,10 +3688,6 @@ packages: resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} engines: {node: '>=12.20'} - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - diffie-hellman@5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} @@ -3660,6 +3781,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -4553,9 +4679,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - make-fetch-happen@10.1.8: resolution: {integrity: sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -5753,20 +5876,6 @@ packages: triple-beam@1.3.0: resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} - ts-node@11.0.0-beta.1: - resolution: {integrity: sha512-WMSROP+1pU22Q/Tm40mjfRg130yD8i0g6ROST04ZpocfH8sl1zD75ON4XQMcBEVViXMVemJBH0alflE7xePdRA==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.3.85' - '@swc/wasm': '>=1.3.85' - '@types/node': '*' - typescript: '>=4.4' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - ts-poet@4.15.0: resolution: {integrity: sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==} @@ -5779,6 +5888,11 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@4.23.0: + resolution: {integrity: sha512-eUdUIaCr963q2h5u3+QwvYp0+eqPvn+egeqZUm0hwERCqqx1E3kK5ehbGCvqSE5MQAULr67ww0cA3jKc3YkM1w==} + engines: {node: '>=18.0.0'} + hasBin: true + tty-browserify@0.0.1: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} @@ -5942,9 +6056,6 @@ packages: deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -6905,10 +7016,6 @@ snapshots: '@crate-crypto/node-eth-kzg-win32-arm64-msvc': 0.9.1 '@crate-crypto/node-eth-kzg-win32-x64-msvc': 0.9.1 - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - '@dabh/diagnostics@2.0.2': dependencies: colorspace: 1.1.2 @@ -6939,78 +7046,156 @@ snapshots: '@esbuild/aix-ppc64@0.24.2': optional: true + '@esbuild/aix-ppc64@0.28.1': + optional: true + '@esbuild/android-arm64@0.24.2': optional: true + '@esbuild/android-arm64@0.28.1': + optional: true + '@esbuild/android-arm@0.24.2': optional: true + '@esbuild/android-arm@0.28.1': + optional: true + '@esbuild/android-x64@0.24.2': optional: true + '@esbuild/android-x64@0.28.1': + optional: true + '@esbuild/darwin-arm64@0.24.2': optional: true + '@esbuild/darwin-arm64@0.28.1': + optional: true + '@esbuild/darwin-x64@0.24.2': optional: true + '@esbuild/darwin-x64@0.28.1': + optional: true + '@esbuild/freebsd-arm64@0.24.2': optional: true + '@esbuild/freebsd-arm64@0.28.1': + optional: true + '@esbuild/freebsd-x64@0.24.2': optional: true + '@esbuild/freebsd-x64@0.28.1': + optional: true + '@esbuild/linux-arm64@0.24.2': optional: true + '@esbuild/linux-arm64@0.28.1': + optional: true + '@esbuild/linux-arm@0.24.2': optional: true + '@esbuild/linux-arm@0.28.1': + optional: true + '@esbuild/linux-ia32@0.24.2': optional: true + '@esbuild/linux-ia32@0.28.1': + optional: true + '@esbuild/linux-loong64@0.24.2': optional: true + '@esbuild/linux-loong64@0.28.1': + optional: true + '@esbuild/linux-mips64el@0.24.2': optional: true + '@esbuild/linux-mips64el@0.28.1': + optional: true + '@esbuild/linux-ppc64@0.24.2': optional: true + '@esbuild/linux-ppc64@0.28.1': + optional: true + '@esbuild/linux-riscv64@0.24.2': optional: true + '@esbuild/linux-riscv64@0.28.1': + optional: true + '@esbuild/linux-s390x@0.24.2': optional: true + '@esbuild/linux-s390x@0.28.1': + optional: true + '@esbuild/linux-x64@0.24.2': optional: true + '@esbuild/linux-x64@0.28.1': + optional: true + '@esbuild/netbsd-arm64@0.24.2': optional: true + '@esbuild/netbsd-arm64@0.28.1': + optional: true + '@esbuild/netbsd-x64@0.24.2': optional: true + '@esbuild/netbsd-x64@0.28.1': + optional: true + '@esbuild/openbsd-arm64@0.24.2': optional: true + '@esbuild/openbsd-arm64@0.28.1': + optional: true + '@esbuild/openbsd-x64@0.24.2': optional: true + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + '@esbuild/sunos-x64@0.24.2': optional: true + '@esbuild/sunos-x64@0.28.1': + optional: true + '@esbuild/win32-arm64@0.24.2': optional: true + '@esbuild/win32-arm64@0.28.1': + optional: true + '@esbuild/win32-ia32@0.24.2': optional: true + '@esbuild/win32-ia32@0.28.1': + optional: true + '@esbuild/win32-x64@0.24.2': optional: true + '@esbuild/win32-x64@0.28.1': + optional: true + '@ethereumjs/rlp@10.1.1': {} '@ethereumjs/rlp@4.0.1': {} @@ -7298,11 +7483,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.5.5 - '@leafac/node@0.0.1': {} '@leichtgewicht/ip-codec@2.0.5': {} @@ -8462,14 +8642,6 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@tsconfig/node14@1.0.1': {} - - '@tsconfig/node16@1.0.2': {} - - '@tsconfig/node18@18.2.6': {} - - '@tsconfig/node20@20.1.9': {} - '@tufjs/canonical-json@2.0.0': {} '@tufjs/models@4.0.0': @@ -8604,26 +8776,26 @@ snapshots: '@vekexasia/bigint-buffer2@1.1.1': {} - '@vitest/browser-playwright@4.0.7(playwright@1.60.0)(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7)': + '@vitest/browser-playwright@4.0.7(playwright@1.60.0)(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7)': dependencies: - '@vitest/browser': 4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7) - '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2)) + '@vitest/browser': 4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7) + '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2)) playwright: 1.60.0 tinyrainbow: 3.0.3 - vitest: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + vitest: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser-playwright@4.0.7(playwright@1.61.0)(vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2))(vitest@4.0.7)': + '@vitest/browser-playwright@4.0.7(playwright@1.61.0)(vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7)': dependencies: - '@vitest/browser': 4.0.7(vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2))(vitest@4.0.7) - '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2)) + '@vitest/browser': 4.0.7(vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7) + '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2)) playwright: 1.61.0 tinyrainbow: 3.0.3 - vitest: 4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + vitest: 4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) transitivePeerDependencies: - bufferutil - msw @@ -8631,16 +8803,16 @@ snapshots: - vite optional: true - '@vitest/browser@4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7)': + '@vitest/browser@4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7)': dependencies: - '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2)) + '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2)) '@vitest/utils': 4.0.7 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + vitest: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -8648,16 +8820,16 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.0.7(vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2))(vitest@4.0.7)': + '@vitest/browser@4.0.7(vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7)': dependencies: - '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2)) '@vitest/utils': 4.0.7 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + vitest: 4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -8666,7 +8838,7 @@ snapshots: - vite optional: true - '@vitest/coverage-v8@4.0.7(@vitest/browser@4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7))(vitest@4.0.7)': + '@vitest/coverage-v8@4.0.7(@vitest/browser@4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7))(vitest@4.0.7)': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.7 @@ -8679,9 +8851,9 @@ snapshots: magicast: 0.3.5 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + vitest: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) optionalDependencies: - '@vitest/browser': 4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7) + '@vitest/browser': 4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7) transitivePeerDependencies: - supports-color @@ -8694,21 +8866,21 @@ snapshots: chai: 6.2.0 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))': + '@vitest/mocker@4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.7 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.1.6(@types/node@24.10.1)(yaml@2.8.2) + vite: 6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2) - '@vitest/mocker@4.0.7(vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.7(vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.7 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.1.6(@types/node@25.4.0)(yaml@2.8.2) + vite: 6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2) '@vitest/pretty-format@2.1.8': dependencies: @@ -8778,10 +8950,6 @@ snapshots: abstract-logging@2.0.1: {} - acorn-walk@8.2.0: {} - - acorn@8.14.0: {} - aes-js@4.0.0-beta.5: {} agent-base@6.0.2: @@ -8881,8 +9049,6 @@ snapshots: delegates: 1.0.0 readable-stream: 3.6.2 - arg@4.1.3: {} - argparse@2.0.1: {} array-ify@1.0.0: {} @@ -9492,8 +9658,6 @@ snapshots: detect-indent@7.0.2: {} - diff@4.0.2: {} - diffie-hellman@5.0.3: dependencies: bn.js: 4.12.0 @@ -9609,6 +9773,35 @@ snapshots: '@esbuild/win32-ia32': 0.24.2 '@esbuild/win32-x64': 0.24.2 + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + escalade@3.1.1: {} escape-html@1.0.3: {} @@ -10608,8 +10801,6 @@ snapshots: dependencies: semver: 7.7.4 - make-error@1.3.6: {} - make-fetch-happen@10.1.8: dependencies: agentkeepalive: 4.2.1 @@ -11867,25 +12058,6 @@ snapshots: triple-beam@1.3.0: {} - ts-node@11.0.0-beta.1(@swc/core@1.14.0)(@swc/wasm@1.14.0)(@types/node@24.10.1)(typescript@6.0.1-rc): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node14': 1.0.1 - '@tsconfig/node16': 1.0.2 - '@tsconfig/node18': 18.2.6 - '@tsconfig/node20': 20.1.9 - '@types/node': 24.10.1 - acorn: 8.14.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 6.0.1-rc - v8-compile-cache-lib: 3.0.1 - optionalDependencies: - '@swc/core': 1.14.0 - '@swc/wasm': 1.14.0 - ts-poet@4.15.0: dependencies: lodash: 4.17.21 @@ -11897,6 +12069,12 @@ snapshots: tslib@2.8.1: {} + tsx@4.23.0: + dependencies: + esbuild: 0.28.1 + optionalDependencies: + fsevents: 2.3.3 + tty-browserify@0.0.1: {} tuf-js@4.0.0: @@ -12035,8 +12213,6 @@ snapshots: uuid@9.0.1: {} - v8-compile-cache-lib@3.0.1: {} - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.1.1 @@ -12044,26 +12220,26 @@ snapshots: validate-npm-package-name@7.0.0: {} - vite-plugin-node-polyfills@0.24.0(rollup@4.52.5)(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2)): + vite-plugin-node-polyfills@0.24.0(rollup@4.52.5)(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.52.5) node-stdlib-browser: 1.2.0 - vite: 6.1.6(@types/node@24.10.1)(yaml@2.8.2) + vite: 6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2) transitivePeerDependencies: - rollup - vite-plugin-top-level-await@1.6.0(rollup@4.52.5)(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2)): + vite-plugin-top-level-await@1.6.0(rollup@4.52.5)(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@4.52.5) '@swc/core': 1.14.0 '@swc/wasm': 1.14.0 uuid: 10.0.0 - vite: 6.1.6(@types/node@24.10.1)(yaml@2.8.2) + vite: 6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2) transitivePeerDependencies: - '@swc/helpers' - rollup - vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2): + vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2): dependencies: esbuild: 0.24.2 postcss: 8.5.6 @@ -12071,9 +12247,10 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 fsevents: 2.3.3 + tsx: 4.23.0 yaml: 2.8.2 - vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2): + vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2): dependencies: esbuild: 0.24.2 postcss: 8.5.6 @@ -12081,19 +12258,20 @@ snapshots: optionalDependencies: '@types/node': 25.4.0 fsevents: 2.3.3 + tsx: 4.23.0 yaml: 2.8.2 vitest-when@0.9.0(@vitest/expect@4.0.7)(vitest@4.0.7): dependencies: pretty-format: 30.2.0 - vitest: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2) + vitest: 4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2) optionalDependencies: '@vitest/expect': 4.0.7 - vitest@4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2): + vitest@4.0.7(@types/node@24.10.1)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.7 - '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2)) + '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.7 '@vitest/runner': 4.0.7 '@vitest/snapshot': 4.0.7 @@ -12110,11 +12288,11 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 6.1.6(@types/node@24.10.1)(yaml@2.8.2) + vite: 6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.1 - '@vitest/browser-playwright': 4.0.7(playwright@1.60.0)(vite@6.1.6(@types/node@24.10.1)(yaml@2.8.2))(vitest@4.0.7) + '@vitest/browser-playwright': 4.0.7(playwright@1.60.0)(vite@6.1.6(@types/node@24.10.1)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7) transitivePeerDependencies: - jiti - less @@ -12129,10 +12307,10 @@ snapshots: - tsx - yaml - vitest@4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(yaml@2.8.2): + vitest@4.0.7(@types/node@25.4.0)(@vitest/browser-playwright@4.0.7)(tsx@4.23.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.7 - '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.7(vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.7 '@vitest/runner': 4.0.7 '@vitest/snapshot': 4.0.7 @@ -12149,11 +12327,11 @@ snapshots: tinyexec: 0.3.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 6.1.6(@types/node@25.4.0)(yaml@2.8.2) + vite: 6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.4.0 - '@vitest/browser-playwright': 4.0.7(playwright@1.61.0)(vite@6.1.6(@types/node@25.4.0)(yaml@2.8.2))(vitest@4.0.7) + '@vitest/browser-playwright': 4.0.7(playwright@1.61.0)(vite@6.1.6(@types/node@25.4.0)(tsx@4.23.0)(yaml@2.8.2))(vitest@4.0.7) transitivePeerDependencies: - jiti - less diff --git a/scripts/check_readme.ts b/scripts/check_readme.ts index 035907e114bf..23b5a1f9717d 100644 --- a/scripts/check_readme.ts +++ b/scripts/check_readme.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env tsx import fs from "node:fs"; import path from "node:path"; diff --git a/scripts/run_e2e_env.sh b/scripts/run_e2e_env.sh index b6742302aec5..b0a3ad976085 100755 --- a/scripts/run_e2e_env.sh +++ b/scripts/run_e2e_env.sh @@ -6,7 +6,7 @@ function start_app() { mkdir -p test-logs/e2e-test-env export LODESTAR_PRESET=minimal export DOTENV_CONFIG_PATH="$DIR/../.env.test" - nohup node -r dotenv/config --loader ts-node/esm packages/cli/test/scripts/e2e_test_env.ts > test-logs/e2e-test-env/simulation.out 2>&1 & + nohup node -r dotenv/config --import tsx packages/cli/test/scripts/e2e_test_env.ts > test-logs/e2e-test-env/simulation.out 2>&1 & echo $! > test-logs/e2e-test-env/simulation.pid echo "Wait for the node to be ready" npx wait-port -t 120000 0.0.0.0:5001 diff --git a/tsconfig.e2e.json b/tsconfig.e2e.json index 71983027398f..910e6721d754 100644 --- a/tsconfig.e2e.json +++ b/tsconfig.e2e.json @@ -24,8 +24,5 @@ "declarationMap": true, "incremental": true, "preserveWatchOutput": true - }, - "ts-node": { - "transpileOnly": true } } diff --git a/tsconfig.json b/tsconfig.json index b7328aca571e..96df7754a543 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,14 +7,11 @@ "noEmit": true, // To be used in the test fixtures "resolveJsonModule": true, - // We want to speed up the CI run for all tests, which require us to use the - // `transpileOnly` mode for the `ts-node`. This change requires to treat types for each module - // independently, which is done by setting the `isolatedModules` flag to `true`. + // We want to speed up the CI run for all tests, which require us to transpile + // each `.ts` file independently (e.g. via `tsx`). This requires treating types + // for each module independently, which is done by setting `isolatedModules` to `true`. "isolatedModules": true, // Detect unused imports, variables, and functions "noUnusedLocals": true - }, - "ts-node": { - "transpileOnly": true } } From cc417cf94055de72d9d87b1ffe740c117dcebc9b Mon Sep 17 00:00:00 2001 From: Nazar Hussain Date: Fri, 10 Jul 2026 11:38:47 +0500 Subject: [PATCH 2/2] fix: use execFile in params e2e tests to satisfy CodeQL The ts-node -> tsx swap re-anchored two CodeQL alerts on these lines: "Shell command built from environment values" (child.exec with an interpolated __dirname path). Replace child.exec with child.execFile passing args as an array, so no shell is spawned and the path is never string-interpolated. Also robust to checkout paths containing spaces. The rejection assertion still holds: promisified execFile appends stderr to the rejected error message. Verified all 4 params e2e tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) --- packages/params/test/e2e/overridePreset.test.ts | 6 +++--- packages/params/test/e2e/setPreset.test.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/params/test/e2e/overridePreset.test.ts b/packages/params/test/e2e/overridePreset.test.ts index 10e1c55be482..a6ea31e9453c 100644 --- a/packages/params/test/e2e/overridePreset.test.ts +++ b/packages/params/test/e2e/overridePreset.test.ts @@ -9,7 +9,7 @@ const scriptNames = { error: "overridePresetError.ts", }; -const exec = util.promisify(child.exec); +const execFile = util.promisify(child.execFile); // Global variable __dirname no longer available in ES6 modules. // Solutions: https://stackoverflow.com/questions/46745014/alternative-for-dirname-in-node-js-when-using-es6-modules @@ -23,11 +23,11 @@ describe("Override preset", () => { // `LODESTAR_PRESET` must not be set to properly test preset override if (process.env.LODESTAR_PRESET) delete process.env.LODESTAR_PRESET; - await exec(`node --import tsx ${path.join(__dirname, scriptNames.ok)}`); + await execFile("node", ["--import", "tsx", path.join(__dirname, scriptNames.ok)]); }); it("Should throw trying to override preset in the wrong order", async () => { - await expect(exec(`node --import tsx ${path.join(__dirname, scriptNames.error)}`)).rejects.toThrow( + await expect(execFile("node", ["--import", "tsx", path.join(__dirname, scriptNames.error)])).rejects.toThrow( "Lodestar preset is already frozen" ); }); diff --git a/packages/params/test/e2e/setPreset.test.ts b/packages/params/test/e2e/setPreset.test.ts index 3b8ddd182e1a..68df25ff0508 100644 --- a/packages/params/test/e2e/setPreset.test.ts +++ b/packages/params/test/e2e/setPreset.test.ts @@ -9,7 +9,7 @@ const scriptNames = { error: "setPresetError.ts", }; -const exec = util.promisify(child.exec); +const execFile = util.promisify(child.execFile); // Global variable __dirname no longer available in ES6 modules. // Solutions: https://stackoverflow.com/questions/46745014/alternative-for-dirname-in-node-js-when-using-es6-modules @@ -23,11 +23,11 @@ describe("setPreset", () => { // `LODESTAR_PRESET` must not be set to properly test setting preset if (process.env.LODESTAR_PRESET) delete process.env.LODESTAR_PRESET; - await exec(`node --import tsx ${path.join(__dirname, scriptNames.ok)}`); + await execFile("node", ["--import", "tsx", path.join(__dirname, scriptNames.ok)]); }); it("Should throw trying to set preset in the wrong order", async () => { - await expect(exec(`node --import tsx ${path.join(__dirname, scriptNames.error)}`)).rejects.toThrow( + await expect(execFile("node", ["--import", "tsx", path.join(__dirname, scriptNames.error)])).rejects.toThrow( "Lodestar preset is already frozen" ); });