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.
Files changed (45) hide show
  1. package/README.md +2 -0
  2. package/dist/browser/jmri-client.js +1960 -0
  3. package/dist/browser/jmri-client.js.map +7 -0
  4. package/dist/cjs/client.js +2 -6
  5. package/dist/cjs/client.js.map +1 -1
  6. package/dist/cjs/core/connection-state-manager.js +2 -2
  7. package/dist/cjs/core/connection-state-manager.js.map +1 -1
  8. package/dist/cjs/core/heartbeat-manager.js +2 -2
  9. package/dist/cjs/core/heartbeat-manager.js.map +1 -1
  10. package/dist/cjs/core/reconnection-manager.js +2 -9
  11. package/dist/cjs/core/reconnection-manager.js.map +1 -1
  12. package/dist/cjs/core/websocket-adapter.js +46 -10
  13. package/dist/cjs/core/websocket-adapter.js.map +1 -1
  14. package/dist/cjs/core/websocket-client.js +4 -35
  15. package/dist/cjs/core/websocket-client.js.map +1 -1
  16. package/dist/cjs/managers/power-manager.js +2 -2
  17. package/dist/cjs/managers/power-manager.js.map +1 -1
  18. package/dist/cjs/managers/throttle-manager.js +2 -2
  19. package/dist/cjs/managers/throttle-manager.js.map +1 -1
  20. package/dist/esm/client.js +1 -5
  21. package/dist/esm/client.js.map +1 -1
  22. package/dist/esm/core/connection-state-manager.js +1 -1
  23. package/dist/esm/core/connection-state-manager.js.map +1 -1
  24. package/dist/esm/core/heartbeat-manager.js +1 -1
  25. package/dist/esm/core/heartbeat-manager.js.map +1 -1
  26. package/dist/esm/core/reconnection-manager.js +1 -8
  27. package/dist/esm/core/reconnection-manager.js.map +1 -1
  28. package/dist/esm/core/websocket-adapter.js +11 -8
  29. package/dist/esm/core/websocket-adapter.js.map +1 -1
  30. package/dist/esm/core/websocket-client.js +3 -34
  31. package/dist/esm/core/websocket-client.js.map +1 -1
  32. package/dist/esm/managers/power-manager.js +1 -1
  33. package/dist/esm/managers/power-manager.js.map +1 -1
  34. package/dist/esm/managers/throttle-manager.js +1 -1
  35. package/dist/esm/managers/throttle-manager.js.map +1 -1
  36. package/dist/types/client.d.ts +1 -1
  37. package/dist/types/core/connection-state-manager.d.ts +1 -1
  38. package/dist/types/core/heartbeat-manager.d.ts +1 -1
  39. package/dist/types/core/reconnection-manager.d.ts +1 -1
  40. package/dist/types/core/websocket-adapter.d.ts +2 -2
  41. package/dist/types/core/websocket-client.d.ts +1 -1
  42. package/dist/types/managers/power-manager.d.ts +1 -1
  43. package/dist/types/managers/throttle-manager.d.ts +1 -1
  44. package/docs/BROWSER.md +52 -4
  45. package/package.json +11 -4
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Throttle control manager
3
3
  */
4
- import { EventEmitter } from 'events';
4
+ import { EventEmitter } from 'eventemitter3';
5
5
  import { isThrottleFunctionKey, isValidSpeed } from '../types/throttle.js';
6
6
  /**
7
7
  * Manages multiple throttles
@@ -1 +1 @@
1
- {"version":3,"file":"throttle-manager.js","sourceRoot":"","sources":["../../../src/managers/throttle-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"throttle-manager.js","sourceRoot":"","sources":["../../../src/managers/throttle-manager.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Main JMRI client class
3
3
  */
4
- import { EventEmitter } from 'events';
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
  * Connection state management with state machine
3
3
  */
4
- import { EventEmitter } from 'events';
4
+ import { EventEmitter } from 'eventemitter3';
5
5
  import { ConnectionState } from '../types/events.js';
6
6
  /**
7
7
  * Manages connection state with validation
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Heartbeat (ping/pong) management
3
3
  */
4
- import { EventEmitter } from 'events';
4
+ import { EventEmitter } from 'eventemitter3';
5
5
  import { HeartbeatOptions } from '../types/client-options.js';
6
6
  /**
7
7
  * Manages WebSocket heartbeat via ping/pong
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Automatic reconnection management with exponential backoff
3
3
  */
4
- import { EventEmitter } from 'events';
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 'events';
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 'events';
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
  * Power control manager
3
3
  */
4
- import { EventEmitter } from 'events';
4
+ import { EventEmitter } from 'eventemitter3';
5
5
  import { WebSocketClient } from '../core/websocket-client.js';
6
6
  import { PowerState } from '../types/jmri-messages.js';
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Throttle control manager
3
3
  */
4
- import { EventEmitter } from 'events';
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.1.0+ supports both Node.js and browser environments. This guide shows how to use jmri-client in web applications.
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
- import { JmriClient } from 'https://cdn.jsdelivr.net/npm/jmri-client@3.1.0/dist/esm/index.js';
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.12-debug",
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/esm/index.js",
7
+ "browser": "./dist/browser/jmri-client.js",
8
8
  "types": "./dist/types/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
- "browser": "./dist/esm/index.js",
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": [