jmri-client 4.2.0-beta.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +18 -1
  2. package/dist/cjs/index.js +2382 -31
  3. package/dist/esm/index.js +2333 -17
  4. package/docs/API.md +39 -4
  5. package/docs/BROWSER.md +4 -4
  6. package/docs/EXAMPLES.md +42 -0
  7. package/docs/MIGRATION.md +30 -1
  8. package/package.json +17 -18
  9. package/dist/cjs/client.js +0 -366
  10. package/dist/cjs/core/connection-state-manager.js +0 -84
  11. package/dist/cjs/core/heartbeat-manager.js +0 -79
  12. package/dist/cjs/core/index.js +0 -25
  13. package/dist/cjs/core/message-queue.js +0 -59
  14. package/dist/cjs/core/reconnection-manager.js +0 -97
  15. package/dist/cjs/core/websocket-adapter.js +0 -135
  16. package/dist/cjs/core/websocket-client.js +0 -388
  17. package/dist/cjs/managers/index.js +0 -25
  18. package/dist/cjs/managers/light-manager.js +0 -111
  19. package/dist/cjs/managers/power-manager.js +0 -90
  20. package/dist/cjs/managers/roster-manager.js +0 -118
  21. package/dist/cjs/managers/system-connections-manager.js +0 -28
  22. package/dist/cjs/managers/throttle-manager.js +0 -233
  23. package/dist/cjs/managers/turnout-manager.js +0 -111
  24. package/dist/cjs/mocks/index.js +0 -12
  25. package/dist/cjs/mocks/mock-data.js +0 -237
  26. package/dist/cjs/mocks/mock-response-manager.js +0 -290
  27. package/dist/cjs/types/client-options.js +0 -66
  28. package/dist/cjs/types/events.js +0 -16
  29. package/dist/cjs/types/index.js +0 -23
  30. package/dist/cjs/types/jmri-messages.js +0 -95
  31. package/dist/cjs/types/throttle.js +0 -19
  32. package/dist/cjs/utils/exponential-backoff.js +0 -40
  33. package/dist/cjs/utils/index.js +0 -21
  34. package/dist/cjs/utils/message-id.js +0 -40
  35. package/dist/esm/client.js +0 -362
  36. package/dist/esm/core/connection-state-manager.js +0 -80
  37. package/dist/esm/core/heartbeat-manager.js +0 -75
  38. package/dist/esm/core/index.js +0 -9
  39. package/dist/esm/core/message-queue.js +0 -55
  40. package/dist/esm/core/reconnection-manager.js +0 -93
  41. package/dist/esm/core/websocket-adapter.js +0 -98
  42. package/dist/esm/core/websocket-client.js +0 -384
  43. package/dist/esm/managers/index.js +0 -9
  44. package/dist/esm/managers/light-manager.js +0 -107
  45. package/dist/esm/managers/power-manager.js +0 -86
  46. package/dist/esm/managers/roster-manager.js +0 -114
  47. package/dist/esm/managers/system-connections-manager.js +0 -24
  48. package/dist/esm/managers/throttle-manager.js +0 -229
  49. package/dist/esm/managers/turnout-manager.js +0 -107
  50. package/dist/esm/mocks/index.js +0 -6
  51. package/dist/esm/mocks/mock-data.js +0 -234
  52. package/dist/esm/mocks/mock-response-manager.js +0 -286
  53. package/dist/esm/types/client-options.js +0 -62
  54. package/dist/esm/types/events.js +0 -13
  55. package/dist/esm/types/index.js +0 -7
  56. package/dist/esm/types/jmri-messages.js +0 -89
  57. package/dist/esm/types/throttle.js +0 -15
  58. package/dist/esm/utils/exponential-backoff.js +0 -36
  59. package/dist/esm/utils/index.js +0 -5
  60. package/dist/esm/utils/message-id.js +0 -36
package/README.md CHANGED
@@ -19,6 +19,7 @@ WebSocket client for [JMRI](http://jmri.sourceforge.net/) with real-time updates
19
19
  - ✅ **Heartbeat monitoring** - Automatic ping/pong keepalive
20
20
  - ✅ **TypeScript** - Full type definitions included
21
21
  - ✅ **Dual module support** - ESM and CommonJS
22
+ - ✅ **Multi-connection** - Target specific hardware connections by prefix when multiple are configured
22
23
  - ✅ **Extensible** - Subclass `JmriClient` to add support for additional JMRI object types
23
24
 
24
25
  ## Installation
@@ -27,7 +28,9 @@ WebSocket client for [JMRI](http://jmri.sourceforge.net/) with real-time updates
27
28
  npm install jmri-client
28
29
  ```
29
30
 
30
- **Requirements:** Node.js 18+
31
+ **Requirements:** Node.js 22+ · JMRI 5.0 or later
32
+
33
+ > `getSystemConnections()` and per-connection power/throttle prefix support require JMRI 5.15.7+. All other features work with any JMRI 5.x release.
31
34
 
32
35
  ## Quick Start
33
36
 
@@ -106,6 +109,20 @@ client.on('reconnecting', (attempt, delay) => {
106
109
  });
107
110
  ```
108
111
 
112
+ ### Multi-Connection Support
113
+
114
+ When JMRI has multiple hardware connections configured, use `getSystemConnections()` to discover their prefixes and pass them to power and throttle commands:
115
+
116
+ ```typescript
117
+ const connections = await client.getSystemConnections();
118
+ // [{ name: 'LocoNet', prefix: 'L' }, { name: 'DCC++', prefix: 'D' }]
119
+
120
+ await client.powerOn('L'); // LocoNet only
121
+ const throttle = await client.acquireThrottle({ address: 3, prefix: 'L' });
122
+ ```
123
+
124
+ When no prefix is supplied the command routes to JMRI's default connection manager, which is the correct behaviour for single-connection layouts.
125
+
109
126
  ### Extending JmriClient
110
127
 
111
128
  `JmriClient` exposes its `wsClient` as `protected`, so you can subclass it to add support for JMRI object types not yet built in (e.g., sensors, lights, routes, blocks):