diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 84661f7..e6de114 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,3 +41,5 @@ jobs: - name: Test run: pnpm test + env: + TEVM_RPC_URLS_OPTIMISM: ${{ secrets.TEVM_RPC_URLS_OPTIMISM }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 529a2fd..10c873f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,6 +37,20 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Lint + run: pnpm lint + + - name: Typecheck + run: pnpm typecheck + + - name: Build + run: pnpm build + + - name: Test + run: pnpm test + env: + TEVM_RPC_URLS_OPTIMISM: ${{ secrets.TEVM_RPC_URLS_OPTIMISM }} + - name: Create release PR or publish uses: changesets/action@v1 with: diff --git a/biome.json b/biome.json index cd8acc3..9f0071c 100644 --- a/biome.json +++ b/biome.json @@ -87,7 +87,7 @@ "linter": { "enabled": true, "rules": { - "recommended": true, + "preset": "recommended", "style": { "useImportType": "off", "noNonNullAssertion": "off" diff --git a/docs/package.json b/docs/package.json index a724fd6..e40bfc2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -14,7 +14,7 @@ "react-dom": "^19.2.0", "viem": "^2.49.3", "vite": "^8.0.0", - "vocs": "2.7.0", + "vocs": "2.7.2", "waku": "^1.0.0-beta.6" }, "devDependencies": { diff --git a/package.json b/package.json index 8cacbf3..79d8b14 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "format": "biome format . --write", "format:check": "biome format .", "lint": "biome check .", - "release": "pnpm build && changeset publish", + "release": "changeset publish", "release:version": "changeset version && pnpm install --lockfile-only", "test": "pnpm -r --if-present run test", "typecheck": "pnpm -r --if-present run typecheck", diff --git a/packages/test-matchers/package.json b/packages/test-matchers/package.json index 32b6883..997ad91 100644 --- a/packages/test-matchers/package.json +++ b/packages/test-matchers/package.json @@ -81,7 +81,7 @@ "tevm": "^1.0.0-rc.151" }, "peerDependencies": { - "tevm": ">=1.0.0", + "tevm": "^1.0.0-rc.151", "viem": "^2.49.3" }, "publishConfig": { diff --git a/packages/test-node/package.json b/packages/test-node/package.json index 10f0e1e..877b608 100644 --- a/packages/test-node/package.json +++ b/packages/test-node/package.json @@ -79,7 +79,7 @@ "tevm": "^1.0.0-rc.151" }, "peerDependencies": { - "tevm": ">=1.0.0", + "tevm": "^1.0.0-rc.151", "viem": "^2.49.3" }, "publishConfig": { diff --git a/packages/test-node/src/test/constants.ts b/packages/test-node/src/test/constants.ts index 6b79ae4..e265a2a 100644 --- a/packages/test-node/src/test/constants.ts +++ b/packages/test-node/src/test/constants.ts @@ -1,7 +1,14 @@ -import { type Common, mainnet } from '@tevm/common' +import { type Common, createCommon, createMockKzg, mainnet } from '@tevm/common' import { numberToHex } from 'viem' -export const chain: Common = mainnet +// The cached mainnet fork block contains EIP-4844 transactions, so initialization +// must receive a KZG implementation rather than relying on an unhandled promise. +export const chain: Common = createCommon({ + ...mainnet, + customCrypto: { + kzg: createMockKzg(), + }, +}) export const BLOCK_NUMBER = numberToHex(22780450n) export const BLOCK_HASH = '0x509357d3abe2ee3e6dbbeaefc00aece314ab411aaed0f2ba709488a23f73a5ae' export const TRANSACTION_HASH = '0x70827b0ec6185ef929c6f217bb98042552b414ecc85647990509b7c2c6161e26' diff --git a/packages/test-node/src/test/vitest.setup.ts b/packages/test-node/src/test/vitest.setup.ts index aaf9f7d..956c2ce 100644 --- a/packages/test-node/src/test/vitest.setup.ts +++ b/packages/test-node/src/test/vitest.setup.ts @@ -1,4 +1,4 @@ -import { vi } from 'vitest' +import { beforeAll, vi } from 'vitest' import { createTestSnapshotClient } from '../createTestSnapshotClient.js' import type { TestSnapshotClient } from '../types.js' import { BLOCK_NUMBER, chain } from './constants.js' @@ -45,3 +45,8 @@ export const client: TestSnapshotClient = createTestSnapshotClient({ }, common: chain, }) + +beforeAll(async () => { + // Surface fork initialization failures instead of letting them race test shutdown. + await client.tevmReady() +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38d239b..a336597 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,8 +54,8 @@ importers: specifier: ^8.0.0 version: 8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) vocs: - specifier: 2.7.0 - version: 2.7.0(@types/react@19.2.17)(@vue/compiler-sfc@3.5.40)(axios@1.18.1)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(rolldown@1.1.5)(rollup@4.62.3)(typescript@6.0.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))(waku@1.0.0-beta.8(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)) + specifier: 2.7.2 + version: 2.7.2(@types/react@19.2.17)(@vue/compiler-sfc@3.5.40)(axios@1.18.1)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(rolldown@1.1.5)(rollup@4.62.3)(typescript@6.0.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))(waku@1.0.0-beta.8(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)) waku: specifier: ^1.0.0-beta.6 version: 1.0.0-beta.8(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) @@ -5173,8 +5173,8 @@ packages: jsdom: optional: true - vocs@2.7.0: - resolution: {integrity: sha512-SZvExPIaowjDosBh1b46joJYoxJh35YklHZivScknFMLjxQ9JNEc6s432fmm83HkmVrT7h+cDJo2W9/Tn319GA==} + vocs@2.7.2: + resolution: {integrity: sha512-Sppu2STAa37Aon2rR/oXAktzW8dTlPcvxNPdfb0PMGL1FRaJlXfYe1EgFLfQzqtorwWk98iCtedtRmuI9IzhZg==} hasBin: true peerDependencies: '@vocs/twoslash-rust': ^0.1.0 @@ -6134,7 +6134,7 @@ snapshots: '@floating-ui/vue@1.1.9(vue@3.5.40(typescript@6.0.3))': dependencies: '@floating-ui/dom': 1.8.0 - '@floating-ui/utils': 0.2.10 + '@floating-ui/utils': 0.2.12 vue-demi: 0.14.10(vue@3.5.40(typescript@6.0.3)) transitivePeerDependencies: - '@vue/composition-api' @@ -12115,7 +12115,7 @@ snapshots: transitivePeerDependencies: - msw - vocs@2.7.0(@types/react@19.2.17)(@vue/compiler-sfc@3.5.40)(axios@1.18.1)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(rolldown@1.1.5)(rollup@4.62.3)(typescript@6.0.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))(waku@1.0.0-beta.8(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)): + vocs@2.7.2(@types/react@19.2.17)(@vue/compiler-sfc@3.5.40)(axios@1.18.1)(esbuild@0.28.1)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(rolldown@1.1.5)(rollup@4.62.3)(typescript@6.0.3)(vite@8.1.5(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))(waku@1.0.0-beta.8(@types/node@25.9.5)(esbuild@0.28.1)(jiti@2.7.0)(react-dom@19.2.8(react@19.2.8))(react-server-dom-webpack@19.2.8(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)))(react@19.2.8)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))(webpack@5.109.2(esbuild@0.28.1)(postcss@8.5.24)): dependencies: '@base-ui/react': 1.6.0(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@codesandbox/sandpack-react': 2.20.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)