jmri-client 3.1.12-debug → 3.2.1
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 +2 -0
- package/dist/browser/jmri-client.js +1960 -0
- package/dist/browser/jmri-client.js.map +7 -0
- package/dist/cjs/client.js +2 -6
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/core/connection-state-manager.js +2 -2
- package/dist/cjs/core/connection-state-manager.js.map +1 -1
- package/dist/cjs/core/heartbeat-manager.js +2 -2
- package/dist/cjs/core/heartbeat-manager.js.map +1 -1
- package/dist/cjs/core/reconnection-manager.js +2 -9
- package/dist/cjs/core/reconnection-manager.js.map +1 -1
- package/dist/cjs/core/websocket-adapter.js +46 -10
- package/dist/cjs/core/websocket-adapter.js.map +1 -1
- package/dist/cjs/core/websocket-client.js +4 -35
- package/dist/cjs/core/websocket-client.js.map +1 -1
- package/dist/cjs/managers/power-manager.js +2 -2
- package/dist/cjs/managers/power-manager.js.map +1 -1
- package/dist/cjs/managers/throttle-manager.js +2 -2
- package/dist/cjs/managers/throttle-manager.js.map +1 -1
- package/dist/esm/client.js +1 -5
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/core/connection-state-manager.js +1 -1
- package/dist/esm/core/connection-state-manager.js.map +1 -1
- package/dist/esm/core/heartbeat-manager.js +1 -1
- package/dist/esm/core/heartbeat-manager.js.map +1 -1
- package/dist/esm/core/reconnection-manager.js +1 -8
- package/dist/esm/core/reconnection-manager.js.map +1 -1
- package/dist/esm/core/websocket-adapter.js +11 -8
- package/dist/esm/core/websocket-adapter.js.map +1 -1
- package/dist/esm/core/websocket-client.js +3 -34
- package/dist/esm/core/websocket-client.js.map +1 -1
- package/dist/esm/managers/power-manager.js +1 -1
- package/dist/esm/managers/power-manager.js.map +1 -1
- package/dist/esm/managers/throttle-manager.js +1 -1
- package/dist/esm/managers/throttle-manager.js.map +1 -1
- package/dist/types/client.d.ts +1 -1
- package/dist/types/core/connection-state-manager.d.ts +1 -1
- package/dist/types/core/heartbeat-manager.d.ts +1 -1
- package/dist/types/core/reconnection-manager.d.ts +1 -1
- package/dist/types/core/websocket-adapter.d.ts +2 -2
- package/dist/types/core/websocket-client.d.ts +1 -1
- package/dist/types/managers/power-manager.d.ts +1 -1
- package/dist/types/managers/throttle-manager.d.ts +1 -1
- package/docs/BROWSER.md +52 -4
- package/package.json +11 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"throttle-manager.js","sourceRoot":"","sources":["../../../src/managers/throttle-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"throttle-manager.js","sourceRoot":"","sources":["../../../src/managers/throttle-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types/client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Main JMRI client class
|
|
3
3
|
*/
|
|
4
|
-
import { EventEmitter } from '
|
|
4
|
+
import { EventEmitter } from 'eventemitter3';
|
|
5
5
|
import { PartialClientOptions } from './types/client-options.js';
|
|
6
6
|
import { PowerState, RosterEntry } from './types/jmri-messages.js';
|
|
7
7
|
import { ConnectionState } from './types/events.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Automatic reconnection management with exponential backoff
|
|
3
3
|
*/
|
|
4
|
-
import { EventEmitter } from '
|
|
4
|
+
import { EventEmitter } from 'eventemitter3';
|
|
5
5
|
import { ReconnectionOptions } from '../types/client-options.js';
|
|
6
6
|
/**
|
|
7
7
|
* Manages automatic reconnection with exponential backoff
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* WebSocket Adapter
|
|
3
3
|
* Provides a unified interface for WebSocket connections in both Node.js and browser environments
|
|
4
4
|
*/
|
|
5
|
-
import { EventEmitter } from '
|
|
5
|
+
import { EventEmitter } from 'eventemitter3';
|
|
6
6
|
/**
|
|
7
7
|
* WebSocket adapter interface
|
|
8
8
|
*/
|
|
@@ -23,4 +23,4 @@ export declare enum ReadyState {
|
|
|
23
23
|
/**
|
|
24
24
|
* Create a WebSocket adapter for the current environment
|
|
25
25
|
*/
|
|
26
|
-
export declare function createWebSocketAdapter(url: string, protocols?: string | string[]): WebSocketAdapter
|
|
26
|
+
export declare function createWebSocketAdapter(url: string, protocols?: string | string[]): Promise<WebSocketAdapter>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Core WebSocket client for JMRI communication
|
|
3
3
|
*/
|
|
4
|
-
import { EventEmitter } from '
|
|
4
|
+
import { EventEmitter } from 'eventemitter3';
|
|
5
5
|
import { JmriClientOptions } from '../types/client-options.js';
|
|
6
6
|
import { JmriMessage } from '../types/jmri-messages.js';
|
|
7
7
|
import { ConnectionState } from '../types/events.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Throttle control manager
|
|
3
3
|
*/
|
|
4
|
-
import { EventEmitter } from '
|
|
4
|
+
import { EventEmitter } from 'eventemitter3';
|
|
5
5
|
import { WebSocketClient } from '../core/websocket-client.js';
|
|
6
6
|
import { ThrottleAcquireOptions, ThrottleFunctionKey, ThrottleState } from '../types/throttle.js';
|
|
7
7
|
/**
|
package/docs/BROWSER.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Browser Usage Guide
|
|
2
2
|
|
|
3
|
-
jmri-client v3.
|
|
3
|
+
jmri-client v3.2.0+ supports both Node.js and browser environments. This guide shows how to use jmri-client in web applications.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -8,6 +8,21 @@ jmri-client v3.1.0+ supports both Node.js and browser environments. This guide s
|
|
|
8
8
|
npm install jmri-client
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
## Browser Bundle vs ESM Build
|
|
12
|
+
|
|
13
|
+
jmri-client provides two builds for different use cases:
|
|
14
|
+
|
|
15
|
+
- **Browser Bundle** (`dist/browser/jmri-client.js`) - ✅ **Recommended for browsers**
|
|
16
|
+
- All dependencies bundled (including eventemitter3)
|
|
17
|
+
- Ready to use in browsers without additional configuration
|
|
18
|
+
- Works with direct imports, CDN usage, and module bundlers
|
|
19
|
+
|
|
20
|
+
- **ESM Build** (`dist/esm/index.js`) - For Node.js with ESM
|
|
21
|
+
- Requires module resolution for dependencies
|
|
22
|
+
- Used automatically in Node.js environments
|
|
23
|
+
|
|
24
|
+
**Important:** When using jmri-client in browsers, always use the **browser bundle** to ensure proper functionality, especially for reconnection features.
|
|
25
|
+
|
|
11
26
|
## Browser Compatibility
|
|
12
27
|
|
|
13
28
|
jmri-client automatically detects the environment and uses:
|
|
@@ -20,7 +35,7 @@ No configuration or polyfills required!
|
|
|
20
35
|
|
|
21
36
|
### Using a Module Bundler (Recommended)
|
|
22
37
|
|
|
23
|
-
With Webpack, Vite, Rollup, or similar bundlers:
|
|
38
|
+
With Webpack, Vite, Rollup, or similar bundlers, the browser bundle is automatically used via the `browser` field in package.json:
|
|
24
39
|
|
|
25
40
|
```javascript
|
|
26
41
|
import { JmriClient } from 'jmri-client';
|
|
@@ -51,9 +66,37 @@ await client.setThrottleSpeed(throttleId, 0.5); // Half speed
|
|
|
51
66
|
await client.setThrottleFunction(throttleId, 'F0', true); // Headlight on
|
|
52
67
|
```
|
|
53
68
|
|
|
69
|
+
**Note:** Most modern bundlers (Vite, Webpack 5+, etc.) automatically use the browser bundle via the `browser` field in package.json. If your bundler doesn't support this, you may need to add an alias:
|
|
70
|
+
|
|
71
|
+
**Vite:**
|
|
72
|
+
```typescript
|
|
73
|
+
// vite.config.ts
|
|
74
|
+
import { fileURLToPath, URL } from 'node:url'
|
|
75
|
+
|
|
76
|
+
export default defineConfig({
|
|
77
|
+
resolve: {
|
|
78
|
+
alias: {
|
|
79
|
+
'jmri-client': fileURLToPath(new URL('./node_modules/jmri-client/dist/browser/jmri-client.js', import.meta.url))
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Webpack:**
|
|
86
|
+
```javascript
|
|
87
|
+
// webpack.config.js
|
|
88
|
+
module.exports = {
|
|
89
|
+
resolve: {
|
|
90
|
+
alias: {
|
|
91
|
+
'jmri-client': path.resolve(__dirname, 'node_modules/jmri-client/dist/browser/jmri-client.js')
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
54
97
|
### Using a CDN (ES Modules)
|
|
55
98
|
|
|
56
|
-
For quick prototypes without a build step:
|
|
99
|
+
For quick prototypes without a build step, use the browser bundle:
|
|
57
100
|
|
|
58
101
|
```html
|
|
59
102
|
<!DOCTYPE html>
|
|
@@ -68,7 +111,8 @@ For quick prototypes without a build step:
|
|
|
68
111
|
<button id="speed">Set Speed 50%</button>
|
|
69
112
|
|
|
70
113
|
<script type="module">
|
|
71
|
-
|
|
114
|
+
// Use the browser bundle from CDN
|
|
115
|
+
import { JmriClient } from 'https://unpkg.com/jmri-client@3.2.1/dist/browser/jmri-client.js';
|
|
72
116
|
|
|
73
117
|
const client = new JmriClient({
|
|
74
118
|
host: 'localhost',
|
|
@@ -99,6 +143,10 @@ For quick prototypes without a build step:
|
|
|
99
143
|
</html>
|
|
100
144
|
```
|
|
101
145
|
|
|
146
|
+
Alternative CDNs:
|
|
147
|
+
- **unpkg**: `https://unpkg.com/jmri-client@3.2.1/dist/browser/jmri-client.js`
|
|
148
|
+
- **jsDelivr**: `https://cdn.jsdelivr.net/npm/jmri-client@3.2.1/dist/browser/jmri-client.js`
|
|
149
|
+
|
|
102
150
|
## React Example
|
|
103
151
|
|
|
104
152
|
```jsx
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jmri-client",
|
|
3
|
-
"version": "3.1
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "WebSocket client for JMRI with real-time updates and throttle control - works in both Node.js and browsers",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
7
|
-
"browser": "./dist/
|
|
7
|
+
"browser": "./dist/browser/jmri-client.js",
|
|
8
8
|
"types": "./dist/types/index.d.ts",
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
|
-
"browser": "./dist/
|
|
11
|
+
"browser": "./dist/browser/jmri-client.js",
|
|
12
12
|
"import": "./dist/esm/index.js",
|
|
13
13
|
"require": "./dist/cjs/index.js",
|
|
14
14
|
"types": "./dist/types/index.d.ts"
|
|
@@ -16,12 +16,16 @@
|
|
|
16
16
|
},
|
|
17
17
|
"scripts": {
|
|
18
18
|
"prepublish": "npm run build",
|
|
19
|
-
"build": "npm run build:cjs && npm run build:esm && npm run build:types",
|
|
19
|
+
"build": "npm run build:cjs && npm run build:esm && npm run build:types && npm run build:browser",
|
|
20
20
|
"build:cjs": "tsc -p tsconfig.json",
|
|
21
21
|
"build:esm": "tsc -p tsconfig.esm.json",
|
|
22
22
|
"build:types": "tsc -p tsconfig.json --declaration --emitDeclarationOnly --outDir dist/types",
|
|
23
|
+
"build:browser": "node build-browser.mjs",
|
|
23
24
|
"test": "jest --no-cache --coverage",
|
|
24
25
|
"test:browser": "node ./tests/integration/serve-test.mjs",
|
|
26
|
+
"test:reconnect": "node ./tests/integration/forced-reconnect.mjs",
|
|
27
|
+
"test:reconnect:browser": "node ./tests/browser/serve.mjs",
|
|
28
|
+
"test:reconnect:browser:headless": "node ./tests/browser/playwright-reconnect-test.mjs",
|
|
25
29
|
"functional": "node ./tests/functional/interactive-test.mjs",
|
|
26
30
|
"demo:mock": "node ./examples/mock-demo.mjs"
|
|
27
31
|
},
|
|
@@ -57,11 +61,14 @@
|
|
|
57
61
|
"@types/jest": "^29.0.3",
|
|
58
62
|
"@types/node": "^18.19.0",
|
|
59
63
|
"@types/ws": "^8.5.10",
|
|
64
|
+
"esbuild": "^0.27.3",
|
|
60
65
|
"jest": "^29.0.3",
|
|
66
|
+
"playwright": "^1.58.2",
|
|
61
67
|
"ts-jest": "^29.4.6",
|
|
62
68
|
"typescript": "^5.3.3"
|
|
63
69
|
},
|
|
64
70
|
"dependencies": {
|
|
71
|
+
"eventemitter3": "^5.0.4",
|
|
65
72
|
"ws": "^8.16.0"
|
|
66
73
|
},
|
|
67
74
|
"files": [
|