Web Worker — Bun.Worker Wrapper #17

Closed
opened 2026-06-17 14:01:50 +00:00 by Artur · 1 comment
Owner

Goal

Implement Worker in the global scope so that new Worker(url) works.

What to Build

  1. src/workers/worker.ts — WorkerShim class wrapping Bun.Worker
  2. Register globalThis.Worker in createIsolatedContext
  3. WorkerShim.postMessage() / onmessage / terminate() / onerror

Key Insight

Bun has native Bun.Worker — we just wrap it:

  • new Worker(url)new Bun.Worker(url)
  • postMessage(msg) delegates
  • onmessage setter wraps Bun.Worker's message event
  • terminate() kills the worker

Tests (110%)

  • Worker is defined in global scope
  • new Worker(url) creates worker
  • onmessage receives messages from worker
  • postMessage sends messages to worker
  • terminate() kills worker
  • error event fires on error
  • multiple workers are independent
  • Worker works inside isolated context
  • Worker has no DOM
## Goal Implement `Worker` in the global scope so that `new Worker(url)` works. ## What to Build 1. `src/workers/worker.ts` — WorkerShim class wrapping `Bun.Worker` 2. Register `globalThis.Worker` in createIsolatedContext 3. `WorkerShim.postMessage()` / `onmessage` / `terminate()` / `onerror` ## Key Insight Bun has native `Bun.Worker` — we just wrap it: - `new Worker(url)` → `new Bun.Worker(url)` - `postMessage(msg)` delegates - `onmessage` setter wraps Bun.Worker's message event - `terminate()` kills the worker ## Tests (110%) - Worker is defined in global scope - new Worker(url) creates worker - onmessage receives messages from worker - postMessage sends messages to worker - terminate() kills worker - error event fires on error - multiple workers are independent - Worker works inside isolated context - Worker has no DOM
Author
Owner

Web Worker — Bun.Worker Wrapper. Implementiert in src/workers/. Tests: worker.test.ts.

Web Worker — Bun.Worker Wrapper. ✅ Implementiert in src/workers/. Tests: worker.test.ts.
Artur closed this issue 2026-06-18 06:28:04 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
glow-all/true-headless-browser#17
No description provided.