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.
- package/README.md +18 -1
- package/dist/cjs/index.js +2382 -31
- package/dist/esm/index.js +2333 -17
- package/docs/API.md +39 -4
- package/docs/BROWSER.md +4 -4
- package/docs/EXAMPLES.md +42 -0
- package/docs/MIGRATION.md +30 -1
- package/package.json +17 -18
- package/dist/cjs/client.js +0 -366
- package/dist/cjs/core/connection-state-manager.js +0 -84
- package/dist/cjs/core/heartbeat-manager.js +0 -79
- package/dist/cjs/core/index.js +0 -25
- package/dist/cjs/core/message-queue.js +0 -59
- package/dist/cjs/core/reconnection-manager.js +0 -97
- package/dist/cjs/core/websocket-adapter.js +0 -135
- package/dist/cjs/core/websocket-client.js +0 -388
- package/dist/cjs/managers/index.js +0 -25
- package/dist/cjs/managers/light-manager.js +0 -111
- package/dist/cjs/managers/power-manager.js +0 -90
- package/dist/cjs/managers/roster-manager.js +0 -118
- package/dist/cjs/managers/system-connections-manager.js +0 -28
- package/dist/cjs/managers/throttle-manager.js +0 -233
- package/dist/cjs/managers/turnout-manager.js +0 -111
- package/dist/cjs/mocks/index.js +0 -12
- package/dist/cjs/mocks/mock-data.js +0 -237
- package/dist/cjs/mocks/mock-response-manager.js +0 -290
- package/dist/cjs/types/client-options.js +0 -66
- package/dist/cjs/types/events.js +0 -16
- package/dist/cjs/types/index.js +0 -23
- package/dist/cjs/types/jmri-messages.js +0 -95
- package/dist/cjs/types/throttle.js +0 -19
- package/dist/cjs/utils/exponential-backoff.js +0 -40
- package/dist/cjs/utils/index.js +0 -21
- package/dist/cjs/utils/message-id.js +0 -40
- package/dist/esm/client.js +0 -362
- package/dist/esm/core/connection-state-manager.js +0 -80
- package/dist/esm/core/heartbeat-manager.js +0 -75
- package/dist/esm/core/index.js +0 -9
- package/dist/esm/core/message-queue.js +0 -55
- package/dist/esm/core/reconnection-manager.js +0 -93
- package/dist/esm/core/websocket-adapter.js +0 -98
- package/dist/esm/core/websocket-client.js +0 -384
- package/dist/esm/managers/index.js +0 -9
- package/dist/esm/managers/light-manager.js +0 -107
- package/dist/esm/managers/power-manager.js +0 -86
- package/dist/esm/managers/roster-manager.js +0 -114
- package/dist/esm/managers/system-connections-manager.js +0 -24
- package/dist/esm/managers/throttle-manager.js +0 -229
- package/dist/esm/managers/turnout-manager.js +0 -107
- package/dist/esm/mocks/index.js +0 -6
- package/dist/esm/mocks/mock-data.js +0 -234
- package/dist/esm/mocks/mock-response-manager.js +0 -286
- package/dist/esm/types/client-options.js +0 -62
- package/dist/esm/types/events.js +0 -13
- package/dist/esm/types/index.js +0 -7
- package/dist/esm/types/jmri-messages.js +0 -89
- package/dist/esm/types/throttle.js +0 -15
- package/dist/esm/utils/exponential-backoff.js +0 -36
- package/dist/esm/utils/index.js +0 -5
- 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
|
|
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):
|