Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
a9bba14
sync(common-v8): port 7e0d6897 custom DisposableStack polyfills
miccy Mar 4, 2026
d5bf588
sync(common-v8): port d6e35b1a simplify tsc build scripts
miccy Mar 4, 2026
6e763a9
chore(build): remove rimraf dependency and use bun cleanup helper
miccy Mar 4, 2026
ec55e3c
test(common): add optional bun tree-shaking compatibility lane
miccy Mar 4, 2026
4137994
chore(deps): remove redundant root webpack dependencies
miccy Mar 4, 2026
5885672
test(common): replace webpack tree-shaking lane with bun build
miccy Mar 4, 2026
c6b8f7c
chore(build): clean dist in package builds and dedupe tree-shaking sc…
miccy Mar 4, 2026
34f4da1
chore: Update various dependencies including turbo, svelte, @tauri-ap…
miccy Mar 4, 2026
ffa0c1b
fix(typecheck): resolve Node global typings across common and relay
miccy Mar 4, 2026
1f1364d
fix(verify): stabilize runtime tests and coverage execution
miccy Mar 4, 2026
239bb3c
chore: Update `bplist-parser` to version 0.3.2 and add `simple-plist/…
miccy Mar 4, 2026
dafcc1d
fix(common): tighten symbol install guard in polyfills
miccy Mar 4, 2026
a9b0aa0
fix(review): address CR findings and harden build/audit
miccy Mar 5, 2026
26323ab
chore: Update dependencies across Angular, Electron, Expo, and Tansta…
miccy Mar 5, 2026
2f1c98b
Update packages/common/test/_globalSetup.ts
miccy Mar 5, 2026
4741a79
fix(test): repair global websocket setup helper
miccy Mar 5, 2026
71a3b35
test(coverage): add web lane and targeted source tests
miccy Mar 5, 2026
7969c79
test(web): extend sqlite and dbworker init coverage
miccy Mar 5, 2026
6f0205b
test(coverage): tighten web lane file thresholds
miccy Mar 5, 2026
02d795d
test(web): cover worker fallback and stabilize initPromise path
miccy Mar 5, 2026
9519c93
fix(review): apply relevant CR hardening updates
miccy Mar 5, 2026
2a07ee0
fix(ci): resolve PR64 review findings and disposable stack race
miccy Mar 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ on:
- tanstack
- react-native
- expo
- web

permissions:
contents: read
Expand Down
60 changes: 60 additions & 0 deletions .github/workflows/ws-browser-nightly.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: WebSocket Browser Nightly

on:
schedule:
- cron: "17 3 * * *"
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ws-browser-nightly-${{ github.ref }}
cancel-in-progress: false

env:
FORCE_COLOR: 3
EVOLU_BROWSER_WS_TESTS: "1"
VITE_EVOLU_BROWSER_WS_TESTS: "1"

jobs:
ws-browser:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Setup Node.js
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: 24

- name: Setup Bun
uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1
with:
bun-version: "1.3.10"

- name: Install dependencies
run: bun install

- name: Install Playwright browsers
run: bun x playwright install --with-deps

- name: Run browser WebSocket tests
run: |
set -o pipefail
bunx vitest run --project browser packages/common/test/WebSocket.test.ts --reporter=verbose 2>&1 | tee ws-browser-nightly.log
- name: Upload browser WebSocket logs
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: ws-browser-nightly-log
path: ws-browser-nightly.log

- name: Upload browser WebSocket screenshots
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: ws-browser-nightly-screenshots
path: packages/common/test/__screenshots__
if-no-files-found: ignore
4 changes: 2 additions & 2 deletions apps/relay/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"type": "module",
"scripts": {
"dev": "bun --watch src/index.ts",
"build": "rimraf dist && tsc",
"build": "bun ../../scripts/rm.mts dist && tsc --build tsconfig.json",
"start": "node dist/src/index.js",
"clean": "rimraf .turbo node_modules dist data/evolu-relay.db"
"clean": "bun ../../scripts/rm.mts .turbo node_modules dist data/evolu-relay.db"
},
"files": [
"dist",
Expand Down
4 changes: 3 additions & 1 deletion apps/relay/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
{
"extends": "../../packages/tsconfig/universal-esm.json",
"compilerOptions": {
"outDir": "dist"
"outDir": "dist",
"types": ["node"],
"typeRoots": ["./node_modules/@types", "../../node_modules/@types"]
},
"include": ["src"],
"exclude": ["node_modules"]
Expand Down
366 changes: 170 additions & 196 deletions bun.lock

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions examples/angular-vite-pwa/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
"generate-pwa-assets": "pwa-assets-generator"
},
"dependencies": {
"@angular/core": "^21.1.5",
"@angular/platform-browser": "^21.1.5",
"@angular/core": "^21.2.1",
"@angular/platform-browser": "^21.2.1",
"@evolu/common": "workspace:*",
"@evolu/web": "workspace:*"
},
"devDependencies": {
"@analogjs/vite-plugin-angular": "^2.3.1",
"@angular/build": "^21.1.5",
"@angular/compiler-cli": "^21.1.5",
"@angular/build": "^21.2.1",
"@angular/compiler-cli": "^21.2.1",
"@tailwindcss/vite": "^4.2.1",
"@vite-pwa/assets-generator": "^1.0.2",
"tailwindcss": "^4.2.1",
Expand Down
4 changes: 2 additions & 2 deletions examples/react-electron/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"scripts": {
"dev": "bunx vite",
"_build": "tsc && bunx vite build && bunx electron-builder",
"clean": "rimraf node_modules .turbo dist-electron",
"clean": "bun ../../scripts/rm.mts node_modules .turbo dist-electron",
"preview": "vite preview"
},
"dependencies": {
Expand All @@ -20,7 +20,7 @@
"@types/react": "~19.2.14",
"@types/react-dom": "~19.2.3",
"@vitejs/plugin-react": "^5.1.4",
"electron": "40.6.1",
"electron": "40.7.0",
"electron-builder": "^26.8.1",
"typescript": "^5.9.3",
"vite": "^7.3.1",
Expand Down
8 changes: 4 additions & 4 deletions examples/react-expo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"_dev": "expo start --web",
"android": "expo run:android --no-build-cache",
"android:go": "expo start --android",
"clean": "rimraf .expo android ios node_modules",
"clean": "bun ../../scripts/rm.mts .expo android ios node_modules",
"ios": "expo run:ios",
"ios:go": "expo start --ios",
"lint": "expo lint",
Expand All @@ -26,19 +26,19 @@
"@expo/vector-icons": "^15.1.1",
"abort-signal-polyfill": "^1.0.0",
"babel-plugin-module-resolver": "^5.0.2",
"expo": "^55.0.4",
"expo": "^55.0.5",
"expo-constants": "^55.0.7",
"expo-font": "^55.0.4",
"expo-linking": "^55.0.7",
"expo-router": "^55.0.3",
"expo-router": "^55.0.4",
"expo-secure-store": "~55.0.8",
"expo-splash-screen": "~55.0.10",
"expo-sqlite": "~55.0.10",
"react": "19.2.4",
"react-dom": "19.2.4",
"react-native": "0.84.1",
"react-native-nitro-modules": "0.34.1",
"react-native-quick-crypto": "^1.0.14",
"react-native-quick-crypto": "^1.0.16",
"react-native-safe-area-context": "^5.6.2",
"react-native-screens": "^4.24.0",
"react-native-svg": "15.15.3",
Expand Down
2 changes: 1 addition & 1 deletion examples/react-nextjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"scripts": {
"_start": "next start",
"build": "next build --webpack",
"clean": "rimraf .turbo .next node_modules",
"clean": "bun ../../scripts/rm.mts .turbo .next node_modules",
"dev": "next dev --webpack"
},
"dependencies": {
Expand Down
2 changes: 1 addition & 1 deletion examples/react-vite-pwa/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"type": "module",
"scripts": {
"build": "tsc && vite build",
"clean": "rimraf node_modules dist .vite .turbo dev-dist",
"clean": "bun ../../scripts/rm.mts node_modules dist .vite .turbo dev-dist",
"dev": "vite",
"generate-pwa-assets": "pwa-assets-generator",
"preview": "vite preview"
Expand Down
4 changes: 2 additions & 2 deletions examples/svelte-vite-pwa/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"scripts": {
"build": "vite build",
"check": "svelte-check --tsconfig ./tsconfig.json && tsc -p tsconfig.node.json",
"clean": "rimraf node_modules .turbo dist",
"clean": "bun ../../scripts/rm.mts node_modules .turbo dist",
"dev": "vite",
"preview": "vite preview"
},
Expand All @@ -16,7 +16,7 @@
"@evolu/web": "workspace:*",
"@sveltejs/vite-plugin-svelte": "^6.2.4",
"@tsconfig/svelte": "^5.0.8",
"svelte": "^5.53.3",
"svelte": "^5.53.7",
"svelte-check": "^4.4.3",
"tslib": "^2.8.1",
"typescript": "^5.9.3",
Expand Down
2 changes: 1 addition & 1 deletion examples/tanstack-start/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
},
"dependencies": {
"@evolu/tanstack-start": "workspace:*",
"@tanstack/react-router": "^1.0.0",
"@tanstack/react-router": "^1.166.2",
"react": "19.2.4",
"react-dom": "19.2.4"
},
Expand Down
4 changes: 2 additions & 2 deletions examples/tauri/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"preview": "vite preview",
"tauri:dev": "bunx tauri dev",
"tauri:build": "bunx tauri build",
"clean": "rimraf dist src-tauri/target"
"clean": "bun ../../scripts/rm.mts dist src-tauri/target"
},
"dependencies": {
"@evolu/tauri": "workspace:*",
Expand All @@ -18,7 +18,7 @@
"react-dom": "19.2.4"
},
"devDependencies": {
"@tauri-apps/cli": "^2.8.4",
"@tauri-apps/cli": "^2.10.1",
"@types/react": "~19.2.14",
"@types/react-dom": "~19.2.3",
"@vitejs/plugin-react": "^5.1.4",
Expand Down
2 changes: 1 addition & 1 deletion examples/vue-vite-pwa/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"type": "module",
"scripts": {
"build": "vue-tsc -b && vite build",
"clean": "rimraf node_modules dist .vite .turbo dev-dist",
"clean": "bun ../../scripts/rm.mts node_modules dist .vite .turbo dev-dist",
"dev": "vite",
"generate-pwa-assets": "pwa-assets-generator",
"preview": "vite preview"
Expand Down
22 changes: 13 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"scripts": {
"dev": "turbo --filter @evolu/relay dev",
"relay": "turbo --filter @evolu/relay dev",
"build": "turbo --filter @evolu/* build",
"build": "bun run clean:ts && turbo --filter @evolu/* build",
"build:web": "bun run build:docs && turbo --filter web build",
"build:docs": "bun run docs:generate:api",
"typecheck": "tsc --build tsconfig.typecheck.json",
Expand All @@ -24,14 +24,15 @@
"test:docs": "bunx vitest run scripts/typedoc-plugin-evolu.test.mts",
"test:tree-shaking:compat": "EVOLU_TREE_SHAKING_COMPAT=1 bunx vitest run packages/common/test/TreeShaking.test.ts",
"test:coverage": "bun run test:coverage:vitest && bun run test:coverage:bun && bun run coverage:merge:bun",
"test:coverage:vitest": "bun run test:preflight && bunx vitest run --coverage",
"test:coverage:vitest": "bun run test:preflight && bunx vitest run --coverage --config vitest.coverage.config.mts",
"test:coverage:bun": "bun test ./packages/bun/test --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage/bun",
"test:coverage:astro": "bun run test:preflight && bunx vitest run --project astro --coverage --coverage.all=true --coverage.include='packages/astro/src/**/*.{ts,tsx}' --coverage.exclude='**/*.d.ts' --coverage.reporter=text --coverage.reporter=json-summary --coverage.reportsDirectory=coverage/lane-astro",
"test:coverage:tanstack": "bun run test:preflight && bunx vitest run --project tanstack-start --coverage --coverage.all=true --coverage.include='packages/tanstack-start/src/**/*.{ts,tsx}' --coverage.exclude='**/*.d.ts' --coverage.reporter=text --coverage.reporter=json-summary --coverage.reportsDirectory=coverage/lane-tanstack",
"test:coverage:react-native": "bun run test:preflight && bunx vitest run --project react-native --coverage --coverage.all=true --coverage.include='packages/react-native/src/**/*.{ts,tsx}' --coverage.exclude='**/*.d.ts' --coverage.reporter=text --coverage.reporter=json-summary --coverage.reportsDirectory=coverage/lane-react-native",
"test:coverage:expo": "bun run test:preflight && bunx vitest run --project react-native --coverage --coverage.all=true --coverage.include='packages/react-native/src/**/*.{ts,tsx}' --coverage.exclude='**/*.d.ts' --coverage.reporter=text --coverage.reporter=json-summary --coverage.reportsDirectory=coverage/lane-expo",
"test:coverage:react-web": "bun run test:preflight && bunx vitest run --project react-web --coverage --coverage.all=true --coverage.include='packages/react-web/src/**/*.{ts,tsx}' --coverage.exclude='**/*.d.ts' --coverage.reporter=text --coverage.reporter=json-summary --coverage.reportsDirectory=coverage/lane-react-web",
"test:coverage:tauri": "bun run test:preflight && bunx vitest run --project tauri --coverage --coverage.all=true --coverage.include='packages/tauri/src/**/*.{ts,tsx}' --coverage.exclude='**/*.d.ts' --coverage.reporter=text --coverage.reporter=json-summary --coverage.reportsDirectory=coverage/lane-tauri",
"test:coverage:web": "bun run test:preflight && bunx vitest run --project @evolu/web --coverage --coverage.all=true --coverage.include='packages/web/src/**/*.{ts,tsx}' --coverage.exclude='**/*.d.ts' --coverage.reporter=text --coverage.reporter=json-summary --coverage.reportsDirectory=coverage/lane-web",
"coverage:merge:bun": "bun ./scripts/coverage-merge-bun.mts --vitest coverage/coverage-summary.json --bun coverage/bun/lcov.info --out coverage/coverage-summary.json",
"coverage:gate:p0": "bun ./scripts/coverage-file-gate.mts --coverage coverage/coverage-summary.json --thresholds '{\"packages/common/src/local-first/Sync.ts\":{\"statements\":90,\"branches\":90},\"packages/common/src/local-first/Db.ts\":{\"statements\":90,\"branches\":90},\"packages/common/src/local-first/Worker.ts\":{\"statements\":90,\"branches\":90},\"packages/web/src/local-first/DbWorker.ts\":{\"statements\":90,\"branches\":90}}'",
"coverage:gate:p1": "bun ./scripts/coverage-file-gate.mts --coverage coverage/coverage-summary.json --thresholds '{\"packages/common/src/local-first/Sync.ts\":{\"statements\":90,\"branches\":90},\"packages/common/src/local-first/Db.ts\":{\"statements\":90,\"branches\":90},\"packages/common/src/local-first/Worker.ts\":{\"statements\":90,\"branches\":90},\"packages/web/src/local-first/DbWorker.ts\":{\"statements\":90,\"branches\":90},\"packages/common/src/local-first/LocalAuth.ts\":{\"statements\":75,\"branches\":60},\"packages/web/src/local-first/LocalAuth.ts\":{\"statements\":75,\"branches\":60},\"packages/nodejs/src/Worker.ts\":{\"statements\":90,\"branches\":85},\"packages/nodejs/src/Sqlite.ts\":{\"statements\":90,\"branches\":85}}'",
Expand All @@ -41,12 +42,14 @@
"coverage:gate:expo": "bun ./scripts/coverage-file-gate.mts --coverage coverage/lane-expo/coverage-summary.json --thresholds '{\"packages/react-native/src/createExpoDeps.ts\":{\"statements\":100,\"branches\":100,\"functions\":100,\"lines\":100},\"packages/react-native/src/sqlite-drivers/createExpoSqliteDriver.ts\":{\"statements\":100,\"branches\":100,\"functions\":100,\"lines\":100},\"packages/react-native/src/exports/expo-sqlite.ts\":{\"statements\":100,\"branches\":100,\"functions\":100,\"lines\":100},\"packages/react-native/src/exports/expo-op-sqlite.ts\":{\"statements\":100,\"branches\":100,\"functions\":100,\"lines\":100}}'",
"coverage:gate:react-web": "bun ./scripts/coverage-file-gate.mts --coverage coverage/lane-react-web/coverage-summary.json --thresholds '{\"packages/react-web/src/local-first/Evolu.ts\":{\"statements\":80,\"branches\":70,\"functions\":80,\"lines\":80}}'",
"coverage:gate:tauri": "bun ./scripts/coverage-file-gate.mts --coverage coverage/lane-tauri/coverage-summary.json --thresholds '{\"packages/tauri/src/index.ts\":{\"statements\":90,\"branches\":80,\"functions\":100,\"lines\":100}}'",
"coverage:gate:web": "bun ./scripts/coverage-file-gate.mts --coverage coverage/lane-web/coverage-summary.json --thresholds '{\"packages/web/src/Sqlite.ts\":{\"statements\":95,\"branches\":90},\"packages/web/src/Task.ts\":{\"statements\":98,\"branches\":95},\"packages/web/src/Worker.ts\":{\"statements\":98,\"branches\":95},\"packages/web/src/local-first/DbWorker.ts\":{\"statements\":98,\"branches\":90},\"packages/web/src/local-first/LocalAuth.ts\":{\"statements\":99,\"branches\":90}}'",
"coverage:lane:astro": "bun run test:coverage:astro && bun run coverage:gate:astro",
"coverage:lane:tanstack": "bun run test:coverage:tanstack && bun run coverage:gate:tanstack",
"coverage:lane:react-native": "bun run test:coverage:react-native && bun run coverage:gate:react-native",
"coverage:lane:expo": "bun run test:coverage:expo && bun run coverage:gate:expo",
"coverage:lane:react-web": "bun run test:coverage:react-web && bun run coverage:gate:react-web",
"coverage:lane:tauri": "bun run test:coverage:tauri && bun run coverage:gate:tauri",
"coverage:lane:web": "bun run test:coverage:web && bun run coverage:gate:web",
"coverage:lane:active": "bun run coverage:lane:${EVOLU_ACTIVE_COVERAGE_LANE:-astro}",
"test:watch": "bunx vitest",
"start": "turbo start",
Expand All @@ -57,7 +60,8 @@
"sync:guard:common-v8:strict": "bun ./scripts/sync-guard-common-v8.mts --strict",
"verify:fast": "bun run build && bun run test && bun run lint && bun run lint-monorepo",
"verify": "bun run typecheck && bun run format && bun run build && bun run test && bun run test:coverage && bun run lint && bun run lint-monorepo",
"clean": "turbo clean && rimraf node_modules bun.lock .turbo out coverage",
"clean:ts": "tsc --build --clean tsconfig.typecheck.json",
"clean": "turbo clean && bun ./scripts/rm.mts node_modules .turbo out coverage",
"version": "changeset version",
"release": "bun run build && changeset publish",
"ios": "cd examples/react-expo && bun ios",
Expand All @@ -75,20 +79,20 @@
"devDependencies": {
"@biomejs/biome": "^2.4.5",
"@changesets/cli": "^2.29.8",
"@types/webpack": "^5.28.5",
"@vitest/browser": "^4.0.18",
"@vitest/browser-playwright": "^4.0.18",
"@vitest/coverage-istanbul": "^4.0.18",
"@vitest/coverage-v8": "^4.0.18",
"rimraf": "^6.1.3",
"turbo": "^2.8.11",
"turbo": "^2.8.13",
"typedoc": "^0.28.17",
"typedoc-plugin-markdown": "^4.10.0",
"typescript": "^5.9.3",
"vitest": "^4.0.18",
"webpack": "^5.105.2"
"vitest": "^4.0.18"
},
"overrides": {
"serialize-javascript": "^7.0.3"
"serialize-javascript": "^7.0.3",
"svgo": "^4.0.1",
"tar": "^7.5.10"
},
"engines": {
"node": ">=24.0.0"
Expand Down
4 changes: 2 additions & 2 deletions packages/astro/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
"README.md"
],
"scripts": {
"build": "rimraf dist && tsc --build tsconfig.build.json",
"build": "bun ../../scripts/rm.mts dist && tsc --build tsconfig.build.json",
"test": "bunx vitest run",
"clean": "rimraf .turbo node_modules dist"
"clean": "bun ../../scripts/rm.mts .turbo node_modules dist"
},
"devDependencies": {
"@evolu/common": "workspace:*",
Expand Down
4 changes: 2 additions & 2 deletions packages/bun/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
"src/**"
],
"scripts": {
"build": "rimraf dist && tsc --build",
"build": "bun ../../scripts/rm.mts dist && tsc --build",
"test": "bun test ./test",
"test:coverage": "bun test ./test --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage",
"clean": "rimraf .turbo node_modules dist"
"clean": "bun ../../scripts/rm.mts .turbo node_modules dist"
},
"devDependencies": {
"@evolu/common": "workspace:*",
Expand Down
6 changes: 2 additions & 4 deletions packages/common/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,15 @@
"README.md"
],
"scripts": {
"build": "rimraf dist && tsc --build tsconfig.build.json",
"build": "bun ../../scripts/rm.mts dist && tsc --build tsconfig.build.json",
"prepack": "bun run build",
"clean": "rimraf .turbo node_modules dist coverage test/tmp test/__screenshots__",
"clean": "bun ../../scripts/rm.mts .turbo node_modules dist coverage test/tmp test/__screenshots__",
"bench": "vitest bench --config ../../vitest.config.mts --passWithNoTests"
},
"dependencies": {
"@noble/ciphers": "^2.1.1",
"@noble/hashes": "^2.0.1",
"@scure/bip39": "^2.0.1",
"disposablestack": "^1.1.7",
"kysely": "^0.28.11",
"msgpackr": "^1.11.8",
"zod": "^4.3.6"
Expand All @@ -76,7 +75,6 @@
"fast-check": "^4.5.3",
"playwright": "^1.58.2",
"typescript": "^5.9.3",
"webpack": "^5.105.2",
"ws": "^8.19.0"
}
}
15 changes: 13 additions & 2 deletions packages/common/src/Buffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,19 @@ export class BufferError extends Error {
constructor(message: string) {
super(message);
this.name = this.constructor.name;

Error.captureStackTrace(this, this.constructor);
(
Error as ErrorConstructor & {
captureStackTrace?: (
targetObject: object,
constructorOpt?: abstract new (...args: Array<unknown>) => unknown,
) => void;
}
).captureStackTrace?.(
this,
this.constructor as abstract new (
...args: Array<unknown>
) => unknown,
);
}
}

Expand Down
Loading
Loading