19 tasks covering core testing, Redis hardening, WebSocket client/server adapters, Worker adapter, and final review gates. Iroh adapters are tracked as a deferred placeholder blocked on the @alkdev/iroh fork. Phases: core validation → Redis hardening → review gate → WebSocket adapters → review gate → Worker adapter → review gate → final validation.
2.5 KiB
2.5 KiB
id, name, status, depends_on, scope, risk, impact, level
| id | name | status | depends_on | scope | risk | impact | level | ||
|---|---|---|---|---|---|---|---|---|---|
| worker-adapter-implementation | Implement Worker event target adapter(s) | pending |
|
moderate | medium | component | implementation |
Description
Implement the Worker event target adapter(s) based on the outcome of worker-adapter-rd. The architecture specifies two factory functions:
createWorkerHostEventTarget(worker: Worker): TypedEventTarget<TEvent>— wraps a Worker instance on the main thread sidecreateWorkerThreadEventTarget(): TypedEventTarget<TEvent>— wraps parent message port on the worker thread side
The naming convention: Host is the side that owns the Worker object, Thread is the side that runs inside the worker.
Key requirements from architecture:
- Bidirectional — both sides can publish and subscribe
- Per-worker — each worker gets its own event target on the main thread
- Messages use
EventEnvelopeformat overpostMessage - Structured clone for serialization (but
EventEnvelopeis JSON-serializable for cross-platform) - No native deps — works in any environment with Worker support
createWorkerHostEventTargetwraps aWorkerinstancecreateWorkerThreadEventTargetwrapsself.onmessage/self.postMessage(Web) orparentPort(Node)
The scope depends on worker-adapter-rd outcome. At minimum, implement Web Worker support.
Acceptance Criteria
src/event-target-worker.ts(or split files) existscreateWorkerHostEventTarget(worker)creates event target for main thread sidecreateWorkerThreadEventTarget()creates event target for worker thread sidedispatchEventon host side callsworker.postMessage(event.detail)dispatchEventon thread side callsglobalThis.postMessage(event.detail)(Web) orparentPort.postMessage(event.detail)(Node, if supported)- Receiving on host side:
worker.onmessageparses envelope, createsCustomEventwithtype:id - Receiving on thread side:
globalThis.onmessage(orparentPort.on('message')) parses envelope, createsCustomEvent - Both sides support
addEventListenerandremoveEventListener - No comments in source code (project convention)
- Sub-path export added to
package.jsonandtsup.config.ts - Barrel re-export added to
src/index.ts
References
- docs/architecture/event-targets/worker.md
- src/types.ts
Notes
To be filled by implementation agent
Summary
To be filled on completion