57 lines
2.3 KiB
Markdown
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). |