2.6 KiB
2.6 KiB
Implementation Plan: natsClient_JS
Phases & Timeline
- Phase 1: Core transport (connection lifecycle, subscribe, publish, close).
- Phase 2: request/reply + reply handler + msghandler integration.
- Phase 3: status store + integration tests + CI gates.
Module Breakdown & Tasks
| Task ID | Module | Responsibility | Effort | Dependencies | Validation Tests Satisfied |
|---|---|---|---|---|---|
| IMP-001 | natsClient.js |
getNats — connection + URL resolution |
1d | — | tests/unit/getNats.test.js (SP-001), tests/integration/connect.test.js (WT-001) |
| IMP-002 | natsClient.js |
subscribe — decode + registry |
1d | IMP-001 | tests/unit/subscribe.test.js (SP-002), tests/integration/publish-flow.test.js (WT-003) |
| IMP-003 | natsClient.js |
publish — encode + send |
0.5d | IMP-001 | tests/unit/publish.test.js (SP-003) |
| IMP-004 | natsClient.js |
closeNats — cleanup |
0.5d | IMP-002 | tests/unit/closeNats.test.js (SP-007), tests/integration/close-flow.test.js (NFR-501) |
| IMP-005 | natsClient.js |
request / reply |
1d | IMP-003 | tests/unit/request.test.js (SP-004), tests/unit/reply.test.js (SP-005) |
| IMP-006 | msghandler | sendMsghandlerRequest |
1d | IMP-005 | tests/unit/sendMsghandlerRequest.test.js (SP-006, SP-010/SP-011) |
| IMP-007 | status | connectionStatus store + event wiring |
1d | IMP-001 | tests/unit/connectionStatus.test.js (SP-008), tests/integration/status-store.test.js (NFR-201) |
Performance & Error Guards
| Task ID | Module | Responsibility | Effort | Validation Tests Satisfied |
|---|---|---|---|---|
| IMP-008 | error handling | per-message decode/parse/handle guard | 0.5d | tests/unit/subscribe.test.js:decode_error_does_not_crash (NFR-302) |
| IMP-009 | reconnect | reconnect behavior wired by nats.ws + nc.status() |
0.5d | tests/integration/reconnect.test.js (WT-007, NFR-102) |
Build & Deployment
| Task ID | Module | Responsibility | Effort |
|---|---|---|---|
| IMP-010 | CI | contract + integration gates on every commit/PR | 0.5d |
| IMP-011 | release | publish as a library module (ESM) | 0.5d |
Risk Mitigation
| Risk | Mitigation | Task |
|---|---|---|
| Broker unreachable at startup | getNats throws; consumer retries |
IMP-001 |
| Decode error kills subscription loop | catch per message |
IMP-008 |
| Reconnect never settles | nc.status() + nc.closed() monitoring |
IMP-009 |