Files
pubsub/tasks/014-review-worker-adapter.md

57 lines
2.3 KiB
Markdown

---
id: review-worker-adapter
name: Review Worker adapter implementation
status: completed
depends_on: [worker-adapter-tests]
scope: narrow
risk: low
impact: phase
level: review
---
## Description
Review checkpoint after Worker adapter implementation. Verify:
- Build, type-check, and full test suite pass
- Worker adapter matches architecture spec
- Test strategy for Workers is sound (actual workers or reliable mocks)
- Package exports, tsup config, and barrel re-exports are correct and consistent
## Acceptance Criteria
- [ ] `npm run build` passes cleanly
- [ ] `npm run lint` passes
- [ ] `npm test` passes with all tests (core + Redis + WebSocket + Worker)
- [ ] Worker adapter API matches architecture spec
- [ ] Sub-path exports are correctly configured
## References
- docs/architecture/event-targets/worker.md
## Notes
### Review Report
**Build / Lint / Tests**: All pass. 242 tests across 8 files. Build produces correct d.ts for all 5 entry points (index, redis, ws-client, ws-server, worker).
**Worker Adapter API**: Matches architecture spec.
- `createWorkerHostEventTarget(worker: Worker)` — host side, uses `worker.postMessage`/`worker.onmessage`
- `createWorkerThreadEventTarget()` — thread side, uses `globalThis.postMessage`/`globalThis.onmessage`
- Both follow the same `Map<string, Set<EventListener>>` pattern as other adapters
- `__`-prefixed event types are silently ignored (consistent with WS adapters)
**Exports**: Correct.
- `tsup.config.ts` has `event-target-worker.ts` entry
- `package.json` has `./event-target-worker` sub-path export
- `src/index.ts` re-exports both factory functions
**Test Strategy**: Mock-based (not actual Worker threads). Uses mock `Worker` and `globalThis` objects. 42 tests covering host send/receive, thread send/receive, topic scoping, envelope round-trip, bidirectional communication, error handling.
**Observation**: The thread side sets `globalThis.onmessage` directly, which overwrites any existing handler. This is noted in the architecture doc and acceptable — the adapter takes ownership of the message channel.
**Verdict**: PASS
## Summary
Worker adapter review passed. 242 tests, build, lint all clean. API matches architecture spec. Web Worker only per R&D decision. Mock-based test strategy is sound (42 tests).