ultimatedarktower 1.0.0 → 2.1.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 CHANGED
@@ -1,28 +1,45 @@
1
1
  # UltimateDarkTower
2
2
 
3
- A JavaScript/TypeScript library for controlling the Bluetooth-enabled tower from Restoration Games' Return to Dark Tower board game. Control lights, sounds, drum rotation, and track game state through Web Bluetooth.
3
+ [![npm version](https://img.shields.io/npm/v/ultimatedarktower)](https://www.npmjs.com/package/ultimatedarktower)
4
+ [![npm downloads](https://img.shields.io/npm/dm/ultimatedarktower)](https://www.npmjs.com/package/ultimatedarktower)
5
+ [![license](https://img.shields.io/npm/l/ultimatedarktower)](LICENSE)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)](https://www.typescriptlang.org/)
7
+ [![node](https://img.shields.io/node/v/ultimatedarktower)](https://nodejs.org/)
8
+
9
+ A JavaScript/TypeScript library for controlling the Bluetooth-enabled tower from Restoration Games' Return to Dark Tower board game. Control lights, sounds, drum rotation, and track game state via Bluetooth - works in browsers (Web Bluetooth), Node.js, Electron, and React Native.
4
10
 
5
11
  I have spent many hours reverse engineering the Tower's protocol in order to create this library, I look forward to what others will create using this! - Chris
6
12
 
7
13
  ## Table of Contents
8
14
 
9
- - [UltimateDarkTower](#ultimatedarktower)
10
- - [Table of Contents](#table-of-contents)
11
- - [Features](#features)
12
- - [Live Examples](#live-examples)
13
- - [Installation](#installation)
14
- - [Documentation](#documentation)
15
- - [📖 Complete API Reference](#-complete-api-reference)
16
- - [Key Topics Covered:](#key-topics-covered)
17
- - [Development](#development)
18
- - [Building and Testing](#building-and-testing)
19
- - [Project Structure](#project-structure)
20
- - [Browser Support](#browser-support)
21
- - [Known Issues](#known-issues)
22
- - [Community](#community)
15
+ - [UltimateDarkTower](#ultimatedarktower)
16
+ - [Table of Contents](#table-of-contents)
17
+ - [Features](#features)
18
+ - [Live Examples](#live-examples)
19
+ - [Installation](#installation)
20
+ - [Browser / Web Applications](#browser--web-applications)
21
+ - [Node.js Applications](#nodejs-applications)
22
+ - [Quick Start](#quick-start)
23
+ - [Browser (auto-detected)](#browser-auto-detected)
24
+ - [Node.js (auto-detected)](#nodejs-auto-detected)
25
+ - [Explicit Platform Selection](#explicit-platform-selection)
26
+ - [Custom Adapter (React Native, etc.)](#custom-adapter-react-native-etc)
27
+ - [Documentation](#documentation)
28
+ - [📖 Complete API Reference](#-complete-api-reference)
29
+ - [Key Topics Covered:](#key-topics-covered)
30
+ - [Development](#development)
31
+ - [Building and Testing](#building-and-testing)
32
+ - [Project Structure](#project-structure)
33
+ - [Platform Support](#platform-support)
34
+ - [Built-in Support (auto-detected)](#built-in-support-auto-detected)
35
+ - [Custom Adapter Support](#custom-adapter-support)
36
+ - [Browser Support](#browser-support)
37
+ - [Known Issues](#known-issues)
38
+ - [Community](#community)
23
39
 
24
40
  ## Features
25
41
 
42
+ - **Multi-Platform Bluetooth** - Works in browsers (Web Bluetooth), Node.js (`@stoprocent/noble`), Electron, and React Native via custom adapters
26
43
  - **Bluetooth Connection Management** - Reliable connection with automatic monitoring and disconnect detection
27
44
  - **Tower Control** - Complete control over lights, sounds, and drum rotation
28
45
  - **Game State Tracking** - Track glyph positions, broken seals, and skull counts
@@ -30,6 +47,7 @@ I have spent many hours reverse engineering the Tower's protocol in order to cre
30
47
  - **TypeScript Support** - Full TypeScript definitions and type safety
31
48
  - **Comprehensive Logging** - Multi-output logging system for debugging
32
49
  - **Battery Monitoring** - Real-time battery level tracking and low battery warnings
50
+ - **Extensible Adapter Pattern** - Implement `IBluetoothAdapter` for custom platforms
33
51
 
34
52
  ## Live Examples
35
53
 
@@ -43,10 +61,69 @@ _Requires Web Bluetooth support (Chrome, Edge, Samsung Internet). For iOS, use t
43
61
 
44
62
  ## Installation
45
63
 
64
+ ### Browser / Web Applications
65
+
46
66
  ```bash
47
67
  npm install ultimatedarktower
48
68
  ```
49
69
 
70
+ ### Node.js Applications
71
+
72
+ ```bash
73
+ npm install ultimatedarktower @stoprocent/noble
74
+ ```
75
+
76
+ > `@stoprocent/noble` is an optional peer dependency for BLE support in Node.js environments.
77
+ >
78
+ > **Platform requirements:** macOS works out of the box. Linux requires BlueZ (`sudo apt install bluetooth bluez libbluetooth-dev`). Windows requires Windows 10+ with BLE support.
79
+
80
+ ## Quick Start
81
+
82
+ ### Browser (auto-detected)
83
+
84
+ ```typescript
85
+ import UltimateDarkTower from 'ultimatedarktower';
86
+
87
+ const tower = new UltimateDarkTower();
88
+ await tower.connect(); // Opens browser device picker
89
+ await tower.calibrate();
90
+ await tower.playSound(1);
91
+ await tower.cleanup();
92
+ ```
93
+
94
+ ### Node.js (auto-detected)
95
+
96
+ ```typescript
97
+ import UltimateDarkTower from 'ultimatedarktower';
98
+
99
+ const tower = new UltimateDarkTower();
100
+ await tower.connect(); // Scans for device automatically
101
+ await tower.calibrate();
102
+ await tower.playSound(1);
103
+ await tower.cleanup();
104
+ ```
105
+
106
+ ### Explicit Platform Selection
107
+
108
+ ```typescript
109
+ import UltimateDarkTower, { BluetoothPlatform } from 'ultimatedarktower';
110
+
111
+ const tower = new UltimateDarkTower({ platform: BluetoothPlatform.NODE });
112
+ ```
113
+
114
+ ### Custom Adapter (React Native, etc.)
115
+
116
+ ```typescript
117
+ import UltimateDarkTower, { IBluetoothAdapter } from 'ultimatedarktower';
118
+
119
+ class MyCustomAdapter implements IBluetoothAdapter {
120
+ // Implement all IBluetoothAdapter methods
121
+ // See Reference.md for the full interface
122
+ }
123
+
124
+ const tower = new UltimateDarkTower({ adapter: new MyCustomAdapter() });
125
+ ```
126
+
50
127
  ## Documentation
51
128
 
52
129
  ### 📖 [Complete API Reference](Reference.md)
@@ -55,7 +132,9 @@ Comprehensive documentation with TypeScript examples, best practices, and troubl
55
132
 
56
133
  ### Key Topics Covered:
57
134
 
135
+ - **Multi-Platform Setup** - Configuration for Web, Node.js, Electron, and React Native
58
136
  - **Connection Management** - Connecting, disconnecting, and monitoring connection health
137
+ - **Bluetooth Adapters** - Custom adapter interface for extending platform support
59
138
  - **Tower Control** - Detailed coverage of all tower commands (lights, sounds, rotation)
60
139
  - **Glyph System** - Automatic tracking of glyph positions as towers rotate
61
140
  - **Seal Management** - Breaking seals and tracking game state
@@ -94,6 +173,8 @@ npm run watch
94
173
  src/
95
174
  ├── index.ts # Main exports
96
175
  ├── UltimateDarkTower.ts # Main class
176
+ ├── udtBluetoothAdapter.ts # Bluetooth adapter interface & error types
177
+ ├── udtBluetoothAdapterFactory.ts # Platform auto-detection factory
97
178
  ├── udtBleConnection.ts # Bluetooth connection management
98
179
  ├── udtTowerCommands.ts # Tower command implementations
99
180
  ├── udtCommandFactory.ts # Command creation utilities
@@ -102,34 +183,47 @@ src/
102
183
  ├── udtTowerState.ts # Tower state management
103
184
  ├── udtHelpers.ts # Utility helper functions
104
185
  ├── udtLogger.ts # Logging system
105
- └── udtConstants.ts # Constants and type definitions
186
+ ├── udtConstants.ts # Constants and type definitions
187
+ └── adapters/
188
+ ├── WebBluetoothAdapter.ts # Browser Web Bluetooth implementation
189
+ └── NodeBluetoothAdapter.ts # Node.js @stoprocent/noble BLE implementation
106
190
 
107
191
  examples/
108
192
  ├── controller/ # Tower controller web app
109
193
  ├── game/ # Tower game web app
194
+ ├── node/ # Node.js CLI example
110
195
  └── assets/ # Shared assets (images, fonts, etc.)
111
196
  ```
112
197
 
113
- ## Browser Support
198
+ ## Platform Support
114
199
 
115
- Web Bluetooth is required for this library to function.
200
+ ### Built-in Support (auto-detected)
116
201
 
117
- **✅ Supported Browsers:**
202
+ | Platform | Bluetooth Library | Notes |
203
+ | -------------------------------- | ------------------------------------ | ---------------------------------------- |
204
+ | Chrome / Edge / Samsung Internet | Web Bluetooth API | Desktop and Android |
205
+ | Node.js | `@stoprocent/noble` | Requires `npm install @stoprocent/noble` |
206
+ | Electron | Web Bluetooth or `@stoprocent/noble` | Auto-detects renderer vs main process |
118
207
 
119
- - Chrome (desktop and Android)
120
- - Microsoft Edge
121
- - Samsung Internet
208
+ ### Custom Adapter Support
122
209
 
123
- **📱 iOS Support:** Use the [Bluefy app](https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055) when on iPhone or iPads as Chrome/Safari does not have Web Bluetooth support on Apples platform at the moment.
210
+ | Platform | Recommended Library | Notes |
211
+ | -------------------------- | ---------------------- | ----------------------------- |
212
+ | React Native | `react-native-ble-plx` | Implement `IBluetoothAdapter` |
213
+ | iOS (via React Native) | `react-native-ble-plx` | Same as React Native |
214
+ | Android (via React Native) | `react-native-ble-plx` | Same as React Native |
215
+ | Cordova / Capacitor | Platform BLE plugin | Implement `IBluetoothAdapter` |
124
216
 
125
- **❌ Not Supported:** Firefox, Safari ([compatibility details](https://caniuse.com/?search=web%20bluetooth))
217
+ ### Browser Support
126
218
 
127
- ## Known Issues
219
+ **iOS:** Use the [Bluefy app](https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055) as Chrome/Safari does not support Web Bluetooth on Apple platforms.
220
+
221
+ **Not Supported:** Firefox, Safari ([compatibility details](https://caniuse.com/?search=web%20bluetooth))
128
222
 
129
- This library is in **Release Candidate** status. Current limitations:
223
+ ## Known Issues
130
224
 
131
- - **Tower Response Handling** - Not all tower responses are fully processed
132
- common game patterns are planned
225
+ - **Sounds** - Sounds show as command complete which is true even though the sound itself has not completed. This is just the way the tower works. I'll have to add time lengths to each at some point, just don't use the command complete response as a way of thinking the associated sound has finished playing and you can play another sound.
226
+ - **Light Sequences** - Same as sound for lights that play for a duration.
133
227
 
134
228
  > See [Reference.md](Reference.md) for performance best practices and workarounds.
135
229
 
@@ -1,7 +1,19 @@
1
1
  import { type Lights, type TowerSide, type SealIdentifier, type Glyphs } from './udtConstants';
2
2
  import { type TowerState } from './udtTowerState';
3
3
  import { type LogOutput } from './udtLogger';
4
- import { type ConnectionStatus } from './udtBleConnection';
4
+ import { type ConnectionStatus, type DeviceInformation } from './udtBleConnection';
5
+ import { type IBluetoothAdapter } from './udtBluetoothAdapter';
6
+ import { BluetoothPlatform } from './udtBluetoothAdapterFactory';
7
+ /**
8
+ * Configuration options for the UltimateDarkTower class.
9
+ * All options are optional - the library will auto-detect the platform by default.
10
+ */
11
+ export interface UltimateDarkTowerConfig {
12
+ /** Platform to use for Bluetooth communication (auto-detect by default) */
13
+ platform?: BluetoothPlatform;
14
+ /** Custom Bluetooth adapter (for testing or custom platforms like React Native) */
15
+ adapter?: IBluetoothAdapter;
16
+ }
5
17
  /**
6
18
  * Configuration interface for controlling which tower responses should be logged
7
19
  */
@@ -60,7 +72,7 @@ declare class UltimateDarkTower {
60
72
  onSkullDrop: (towerSkullCount: number) => void;
61
73
  onBatteryLevelNotify: (millivolts: number) => void;
62
74
  onTowerStateUpdate: (newState: TowerState, oldState: TowerState, source: string) => void;
63
- constructor();
75
+ constructor(config?: UltimateDarkTowerConfig);
64
76
  /**
65
77
  * Initialize the logger with default console output
66
78
  */
@@ -96,7 +108,6 @@ declare class UltimateDarkTower {
96
108
  get performingCalibration(): boolean;
97
109
  get performingLongCommand(): boolean;
98
110
  get towerSkullDropCount(): number;
99
- get txCharacteristic(): any;
100
111
  get currentBattery(): number;
101
112
  get previousBattery(): number;
102
113
  get currentBatteryPercent(): number;
@@ -370,6 +381,11 @@ declare class UltimateDarkTower {
370
381
  * @returns {Object} Object with connection details
371
382
  */
372
383
  getConnectionStatus(): ConnectionStatus;
384
+ /**
385
+ * Get device information read from the tower's Device Information Service (DIS)
386
+ * @returns {DeviceInformation} Object with manufacturer, model, serial, firmware, etc.
387
+ */
388
+ getDeviceInformation(): DeviceInformation;
373
389
  /**
374
390
  * Clean up resources and disconnect properly
375
391
  * @returns {Promise<void>} Promise that resolves when cleanup is complete
@@ -31,6 +31,7 @@ const udtBleConnection_1 = require("./udtBleConnection");
31
31
  const udtTowerResponse_1 = require("./udtTowerResponse");
32
32
  const udtCommandFactory_1 = require("./udtCommandFactory");
33
33
  const udtTowerCommands_1 = require("./udtTowerCommands");
34
+ const udtBluetoothAdapterFactory_1 = require("./udtBluetoothAdapterFactory");
34
35
  /**
35
36
  * @title UltimateDarkTower
36
37
  * @description
@@ -53,7 +54,7 @@ const udtTowerCommands_1 = require("./udtTowerCommands");
53
54
  * - onTowerStateUpdate: Called whenever the tower state is updated
54
55
  */
55
56
  class UltimateDarkTower {
56
- constructor() {
57
+ constructor(config) {
57
58
  // tower configuration
58
59
  this.retrySendCommandCountRef = { value: 0 };
59
60
  this.retrySendCommandMax = udtConstants_1.DEFAULT_RETRY_SEND_COMMAND_MAX;
@@ -88,7 +89,7 @@ class UltimateDarkTower {
88
89
  // utility
89
90
  this._logDetail = false;
90
91
  this.initializeLogger();
91
- this.initializeComponents();
92
+ this.initializeComponents(config);
92
93
  this.setupTowerResponseCallback();
93
94
  }
94
95
  /**
@@ -101,10 +102,18 @@ class UltimateDarkTower {
101
102
  /**
102
103
  * Initialize all tower components and their dependencies
103
104
  */
104
- initializeComponents() {
105
+ initializeComponents(config) {
106
+ // Resolve the Bluetooth adapter
107
+ let adapter;
108
+ if (config === null || config === void 0 ? void 0 : config.adapter) {
109
+ adapter = config.adapter;
110
+ }
111
+ else if (config === null || config === void 0 ? void 0 : config.platform) {
112
+ adapter = udtBluetoothAdapterFactory_1.BluetoothAdapterFactory.create(config.platform);
113
+ }
105
114
  // Initialize BLE connection with tower event handlers
106
115
  this.towerEventCallbacks = this.createTowerEventCallbacks();
107
- this.bleConnection = new udtBleConnection_1.UdtBleConnection(this.logger, this.towerEventCallbacks);
116
+ this.bleConnection = new udtBleConnection_1.UdtBleConnection(this.logger, this.towerEventCallbacks, adapter);
108
117
  // Initialize response processor
109
118
  this.responseProcessor = new udtTowerResponse_1.TowerResponseProcessor(this.logDetail);
110
119
  // Initialize command factory
@@ -205,7 +214,6 @@ class UltimateDarkTower {
205
214
  get performingCalibration() { return this.bleConnection.performingCalibration; }
206
215
  get performingLongCommand() { return this.bleConnection.performingLongCommand; }
207
216
  get towerSkullDropCount() { return this.bleConnection.towerSkullDropCount; }
208
- get txCharacteristic() { return this.bleConnection.txCharacteristic; }
209
217
  // Getter methods for battery state
210
218
  get currentBattery() { return this.currentBatteryValue; }
211
219
  get previousBattery() { return this.previousBatteryValue; }
@@ -711,6 +719,13 @@ class UltimateDarkTower {
711
719
  getConnectionStatus() {
712
720
  return this.bleConnection.getConnectionStatus();
713
721
  }
722
+ /**
723
+ * Get device information read from the tower's Device Information Service (DIS)
724
+ * @returns {DeviceInformation} Object with manufacturer, model, serial, firmware, etc.
725
+ */
726
+ getDeviceInformation() {
727
+ return this.bleConnection.getDeviceInformation();
728
+ }
714
729
  //#endregion
715
730
  //#region cleanup
716
731
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"UltimateDarkTower.js","sourceRoot":"","sources":["../../src/UltimateDarkTower.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UltimateDarkTower.js","sourceRoot":"","sources":["../../src/UltimateDarkTower.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { type IBluetoothAdapter } from '../udtBluetoothAdapter';
2
+ import { type DeviceInformation } from '../udtBleConnection';
3
+ /**
4
+ * Node.js Bluetooth adapter implementation using @stoprocent/noble.
5
+ * Noble is a singleton EventEmitter - event listeners must be carefully managed to prevent leaks.
6
+ *
7
+ * Install with: npm install @stoprocent/noble
8
+ *
9
+ * Platform requirements:
10
+ * - macOS: Works out of the box (CoreBluetooth via XPC)
11
+ * - Linux: Requires BlueZ (sudo apt install bluetooth bluez libbluetooth-dev)
12
+ * - Windows: Requires Windows 10+ with BLE support
13
+ */
14
+ export declare class NodeBluetoothAdapter implements IBluetoothAdapter {
15
+ private peripheral;
16
+ private txCharacteristic;
17
+ private rxCharacteristic;
18
+ private allCharacteristics;
19
+ private characteristicCallback?;
20
+ private disconnectCallback?;
21
+ private availabilityCallback?;
22
+ private boundStateChangeHandler?;
23
+ private boundDataHandler?;
24
+ private boundDisconnectHandler?;
25
+ private isConnectedFlag;
26
+ /**
27
+ * Waits for Noble's BLE adapter to reach 'poweredOn' state.
28
+ * Uses @stoprocent/noble's built-in waitForPoweredOnAsync().
29
+ */
30
+ private ensureNobleReady;
31
+ connect(deviceName: string, serviceUuids: string[]): Promise<void>;
32
+ disconnect(): Promise<void>;
33
+ isConnected(): boolean;
34
+ isGattConnected(): boolean;
35
+ writeCharacteristic(data: Uint8Array): Promise<void>;
36
+ onCharacteristicValueChanged(callback: (data: Uint8Array) => void): void;
37
+ onDisconnect(callback: () => void): void;
38
+ onBluetoothAvailabilityChanged(callback: (available: boolean) => void): void;
39
+ readDeviceInformation(): Promise<DeviceInformation>;
40
+ cleanup(): Promise<void>;
41
+ /**
42
+ * Scans for a BLE device by name using Noble's event-driven discovery
43
+ */
44
+ private scanForDevice;
45
+ /**
46
+ * Normalizes UUID to Noble's format (lowercase, no dashes)
47
+ */
48
+ private normalizeUuid;
49
+ /**
50
+ * Extracts the short 4-character UUID from a standard 128-bit BLE UUID.
51
+ * Standard BLE UUIDs follow the pattern 0000XXXX-0000-1000-8000-00805f9b34fb
52
+ * where XXXX is the short UUID. Noble uses this short form for standard characteristics.
53
+ */
54
+ private toShortUuid;
55
+ }