node-switchbot 4.0.0-beta.0 → 4.0.0-beta.2

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 (157) hide show
  1. package/dist/devices/base.d.ts +59 -5
  2. package/dist/devices/base.d.ts.map +1 -1
  3. package/dist/devices/base.js +280 -28
  4. package/dist/devices/base.js.map +1 -1
  5. package/dist/settings.d.ts +6 -0
  6. package/dist/settings.d.ts.map +1 -1
  7. package/dist/settings.js +6 -0
  8. package/dist/settings.js.map +1 -1
  9. package/dist/switchbot.d.ts +7 -0
  10. package/dist/switchbot.d.ts.map +1 -1
  11. package/dist/switchbot.js +92 -32
  12. package/dist/switchbot.js.map +1 -1
  13. package/dist/types/index.d.ts +12 -0
  14. package/dist/types/index.d.ts.map +1 -1
  15. package/dist/types/index.js.map +1 -1
  16. package/dist/utils/circuit-breaker.d.ts +98 -0
  17. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  18. package/dist/utils/circuit-breaker.js +187 -0
  19. package/dist/utils/circuit-breaker.js.map +1 -0
  20. package/dist/utils/connection-tracker.d.ts +66 -0
  21. package/dist/utils/connection-tracker.d.ts.map +1 -0
  22. package/dist/utils/connection-tracker.js +184 -0
  23. package/dist/utils/connection-tracker.js.map +1 -0
  24. package/dist/utils/fallback-handler.d.ts +68 -0
  25. package/dist/utils/fallback-handler.d.ts.map +1 -0
  26. package/dist/utils/fallback-handler.js +131 -0
  27. package/dist/utils/fallback-handler.js.map +1 -0
  28. package/dist/utils/index.d.ts +4 -0
  29. package/dist/utils/index.d.ts.map +1 -1
  30. package/dist/utils/index.js +5 -0
  31. package/dist/utils/index.js.map +1 -1
  32. package/dist/utils/retry.d.ts +55 -0
  33. package/dist/utils/retry.d.ts.map +1 -0
  34. package/dist/utils/retry.js +95 -0
  35. package/dist/utils/retry.js.map +1 -0
  36. package/docs/assets/hierarchy.js +1 -1
  37. package/docs/assets/search.js +1 -1
  38. package/docs/classes/APIError.html +2 -2
  39. package/docs/classes/APINotAvailableError.html +2 -2
  40. package/docs/classes/BLEConnection.html +9 -9
  41. package/docs/classes/BLENotAvailableError.html +2 -2
  42. package/docs/classes/BLEScanner.html +8 -8
  43. package/docs/classes/CommandFailedError.html +2 -2
  44. package/docs/classes/ConnectionTimeoutError.html +2 -2
  45. package/docs/classes/DeviceManager.html +13 -13
  46. package/docs/classes/DeviceNotFoundError.html +2 -2
  47. package/docs/classes/DiscoveryError.html +2 -2
  48. package/docs/classes/OpenAPIClient.html +24 -24
  49. package/docs/classes/SwitchBot.html +12 -11
  50. package/docs/classes/SwitchBotDevice.html +33 -15
  51. package/docs/classes/SwitchBotError.html +2 -2
  52. package/docs/classes/ValidationError.html +2 -2
  53. package/docs/classes/WoAirPurifier.html +36 -18
  54. package/docs/classes/WoAirPurifierTable.html +36 -18
  55. package/docs/classes/WoBlindTilt.html +38 -20
  56. package/docs/classes/WoBulb.html +37 -19
  57. package/docs/classes/WoCeilingLight.html +37 -19
  58. package/docs/classes/WoContact.html +32 -14
  59. package/docs/classes/WoCurtain.html +36 -18
  60. package/docs/classes/WoHand.html +35 -17
  61. package/docs/classes/WoHub2.html +32 -14
  62. package/docs/classes/WoHub3.html +32 -14
  63. package/docs/classes/WoHumi.html +36 -18
  64. package/docs/classes/WoHumi2.html +36 -18
  65. package/docs/classes/WoIOSensorTH.html +32 -14
  66. package/docs/classes/WoKeypad.html +32 -14
  67. package/docs/classes/WoLeak.html +32 -14
  68. package/docs/classes/WoPlugMiniJP.html +35 -17
  69. package/docs/classes/WoPlugMiniUS.html +35 -17
  70. package/docs/classes/WoPresence.html +32 -14
  71. package/docs/classes/WoRelaySwitch1.html +35 -17
  72. package/docs/classes/WoRelaySwitch1PM.html +35 -17
  73. package/docs/classes/WoRemote.html +32 -14
  74. package/docs/classes/WoSensorTH.html +32 -14
  75. package/docs/classes/WoSensorTHPlus.html +32 -14
  76. package/docs/classes/WoSensorTHPro.html +32 -14
  77. package/docs/classes/WoSensorTHProCO2.html +32 -14
  78. package/docs/classes/WoSmartLock.html +34 -16
  79. package/docs/classes/WoSmartLockPro.html +35 -17
  80. package/docs/classes/WoStrip.html +37 -19
  81. package/docs/enums/LogLevel.html +2 -2
  82. package/docs/enums/SwitchBotBLEModel.html +2 -2
  83. package/docs/enums/SwitchBotBLEModelName.html +2 -2
  84. package/docs/functions/updateBaseURL.html +1 -1
  85. package/docs/hierarchy.html +1 -1
  86. package/docs/interfaces/APICommandRequest.html +2 -2
  87. package/docs/interfaces/APICommandResponse.html +2 -2
  88. package/docs/interfaces/APIDevice.html +2 -2
  89. package/docs/interfaces/APIDeviceStatus.html +2 -2
  90. package/docs/interfaces/APIErrorResponse.html +2 -2
  91. package/docs/interfaces/APIResponse.html +2 -2
  92. package/docs/interfaces/AirPurifierCommands.html +2 -2
  93. package/docs/interfaces/AirPurifierServiceData.html +5 -5
  94. package/docs/interfaces/AirPurifierStatus.html +7 -7
  95. package/docs/interfaces/BLEAdvertisement.html +2 -2
  96. package/docs/interfaces/BLEScanOptions.html +5 -5
  97. package/docs/interfaces/BLEServiceData.html +5 -5
  98. package/docs/interfaces/BlindTiltCommands.html +2 -2
  99. package/docs/interfaces/BlindTiltServiceData.html +5 -5
  100. package/docs/interfaces/BlindTiltStatus.html +6 -6
  101. package/docs/interfaces/BotCommands.html +2 -2
  102. package/docs/interfaces/BotServiceData.html +5 -5
  103. package/docs/interfaces/BotStatus.html +6 -6
  104. package/docs/interfaces/BulbCommands.html +2 -2
  105. package/docs/interfaces/BulbServiceData.html +5 -5
  106. package/docs/interfaces/BulbStatus.html +6 -6
  107. package/docs/interfaces/CeilingLightCommands.html +2 -2
  108. package/docs/interfaces/CeilingLightServiceData.html +5 -5
  109. package/docs/interfaces/CeilingLightStatus.html +6 -6
  110. package/docs/interfaces/CommandResult.html +6 -6
  111. package/docs/interfaces/ContactServiceData.html +5 -5
  112. package/docs/interfaces/ContactStatus.html +6 -6
  113. package/docs/interfaces/CurtainCommands.html +2 -2
  114. package/docs/interfaces/CurtainServiceData.html +5 -5
  115. package/docs/interfaces/CurtainStatus.html +6 -6
  116. package/docs/interfaces/DeviceInfo.html +13 -13
  117. package/docs/interfaces/DeviceListResponse.html +2 -2
  118. package/docs/interfaces/DeviceStatus.html +6 -6
  119. package/docs/interfaces/DiscoveryOptions.html +7 -7
  120. package/docs/interfaces/HubServiceData.html +5 -5
  121. package/docs/interfaces/HubStatus.html +6 -6
  122. package/docs/interfaces/HumidifierCommands.html +2 -2
  123. package/docs/interfaces/HumidifierServiceData.html +6 -6
  124. package/docs/interfaces/HumidifierStatus.html +6 -6
  125. package/docs/interfaces/KeypadStatus.html +6 -6
  126. package/docs/interfaces/LeakServiceData.html +5 -5
  127. package/docs/interfaces/LeakStatus.html +6 -6
  128. package/docs/interfaces/LockCommands.html +2 -2
  129. package/docs/interfaces/LockServiceData.html +6 -6
  130. package/docs/interfaces/LockStatus.html +6 -6
  131. package/docs/interfaces/MeterServiceData.html +5 -5
  132. package/docs/interfaces/MeterStatus.html +6 -6
  133. package/docs/interfaces/MotionServiceData.html +5 -5
  134. package/docs/interfaces/MotionStatus.html +6 -6
  135. package/docs/interfaces/PlugCommands.html +2 -2
  136. package/docs/interfaces/PlugServiceData.html +5 -5
  137. package/docs/interfaces/PlugStatus.html +6 -6
  138. package/docs/interfaces/PresenceServiceData.html +5 -5
  139. package/docs/interfaces/PresenceStatus.html +6 -6
  140. package/docs/interfaces/RelaySwitchCommands.html +2 -2
  141. package/docs/interfaces/RelaySwitchServiceData.html +5 -5
  142. package/docs/interfaces/RelaySwitchStatus.html +6 -6
  143. package/docs/interfaces/RemoteStatus.html +6 -6
  144. package/docs/interfaces/SceneListResponse.html +2 -2
  145. package/docs/interfaces/StripCommands.html +2 -2
  146. package/docs/interfaces/StripServiceData.html +5 -5
  147. package/docs/interfaces/StripStatus.html +6 -6
  148. package/docs/interfaces/SwitchBotConfig.html +21 -9
  149. package/docs/interfaces/WebhookConfig.html +2 -2
  150. package/docs/interfaces/WebhookDetails.html +2 -2
  151. package/docs/interfaces/WebhookQueryResponse.html +2 -2
  152. package/docs/interfaces/WebhookSetupResponse.html +2 -2
  153. package/docs/types/ConnectionType.html +1 -1
  154. package/docs/types/PhysicalDeviceType.html +1 -1
  155. package/docs/types/VirtualDeviceType.html +1 -1
  156. package/docs/variables/urls.html +1 -1
  157. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export declare class SwitchBot extends EventEmitter {
22
22
  private initialize;
23
23
  /**
24
24
  * Discover devices (BLE + OpenAPI)
25
+ * BLE discovery runs first, then API discovery to enable proper device matching
25
26
  */
26
27
  discover(options?: DiscoveryOptions): Promise<SwitchBotDevice[]>;
27
28
  /**
@@ -38,8 +39,14 @@ export declare class SwitchBot extends EventEmitter {
38
39
  private discoverAPI;
39
40
  /**
40
41
  * Handle API device discovery
42
+ * Tries to match with existing BLE devices and combines them into one entry
41
43
  */
42
44
  private handleAPIDiscovery;
45
+ /**
46
+ * Find matching BLE device for an API device
47
+ * Returns a BLE device if a good match is found
48
+ */
49
+ private findMatchingBLEDevice;
43
50
  /**
44
51
  * Create device instance
45
52
  */
@@ -1 +1 @@
1
- {"version":3,"file":"switchbot.d.ts","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAkB,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAiB,UAAU,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAwEjD;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,SAAS,CAAC,CAAe;IACjC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,WAAW,CAAQ;gBAEf,MAAM,GAAE,eAAoB;IAsBxC;;OAEG;IACH,OAAO,CAAC,UAAU;IAgDlB;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAmC1E;;OAEG;YACW,WAAW;IAuBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;YACW,WAAW;IAkBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACH,IAAI,OAAO,IAAI,aAAa,CAE3B;IAED;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,SAAS;IAIvC;;OAEG;IACH,YAAY,IAAI,aAAa,GAAG,SAAS;IAIzC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC;IAItC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAUlC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAc/B"}
1
+ {"version":3,"file":"switchbot.d.ts","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAkB,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAiB,UAAU,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAwEjD;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,SAAS,CAAC,CAAe;IACjC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,WAAW,CAAQ;gBAEf,MAAM,GAAE,eAAoB;IA4BxC;;OAEG;IACH,OAAO,CAAC,UAAU;IAgDlB;;;OAGG;IACG,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkC1E;;OAEG;YACW,WAAW;IAuBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;YACW,WAAW;IAkBzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiD1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAuC7B;;OAEG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,IAAI,OAAO,IAAI,aAAa,CAE3B;IAED;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,SAAS;IAIvC;;OAEG;IACH,YAAY,IAAI,aAAa,GAAG,SAAS;IAIzC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC;IAItC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAUlC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAc/B"}
package/dist/switchbot.js CHANGED
@@ -93,6 +93,12 @@ export class SwitchBot extends EventEmitter {
93
93
  enableFallback: config.enableFallback ?? DEFAULTS.enableFallback,
94
94
  logLevel: config.logLevel ?? DEFAULTS.logLevel,
95
95
  noble: config.noble,
96
+ enableConnectionIntelligence: config.enableConnectionIntelligence ?? true,
97
+ enableCircuitBreaker: config.enableCircuitBreaker ?? true,
98
+ enableRetry: config.enableRetry ?? true,
99
+ maxRetryAttempts: config.maxRetryAttempts ?? 3,
100
+ retryInitialDelayMs: config.retryInitialDelayMs ?? 100,
101
+ retryMaxDelayMs: config.retryMaxDelayMs ?? 5000,
96
102
  };
97
103
  this.logger = new Logger('SwitchBot', this.config.logLevel);
98
104
  this.deviceManager = new DeviceManager(this.config.logLevel);
@@ -143,6 +149,7 @@ export class SwitchBot extends EventEmitter {
143
149
  }
144
150
  /**
145
151
  * Discover devices (BLE + OpenAPI)
152
+ * BLE discovery runs first, then API discovery to enable proper device matching
146
153
  */
147
154
  async discover(options = {}) {
148
155
  if (!this.initialized) {
@@ -150,19 +157,20 @@ export class SwitchBot extends EventEmitter {
150
157
  }
151
158
  const { scanBLE = !!this.bleScanner, fetchAPI = !!this.apiClient, timeout = this.config.scanTimeout, } = options;
152
159
  this.logger.info('Starting device discovery', { scanBLE, fetchAPI });
153
- const discoveries = [];
154
- // BLE discovery
160
+ // BLE discovery first (sequential)
155
161
  if (scanBLE && this.bleScanner) {
156
- discoveries.push(this.discoverBLE(timeout));
162
+ this.logger.info('Step 1: Starting BLE discovery...');
163
+ await this.discoverBLE(timeout);
164
+ this.logger.info('Step 1: BLE discovery complete');
157
165
  }
158
- // API discovery
166
+ // API discovery second (sequential)
159
167
  if (fetchAPI && this.apiClient) {
160
- discoveries.push(this.discoverAPI());
168
+ this.logger.info('Step 2: Starting API discovery...');
169
+ await this.discoverAPI();
170
+ this.logger.info('Step 2: API discovery complete');
161
171
  }
162
- // Wait for all discoveries
163
- await Promise.allSettled(discoveries);
164
172
  const devices = this.deviceManager.list();
165
- this.logger.info(`Discovery complete: ${devices.length} devices found`);
173
+ this.logger.info(`Discovery complete: ${devices.length} unique devices found`);
166
174
  this.emit('discovery-complete', devices);
167
175
  return devices;
168
176
  }
@@ -247,42 +255,86 @@ export class SwitchBot extends EventEmitter {
247
255
  }
248
256
  /**
249
257
  * Handle API device discovery
258
+ * Tries to match with existing BLE devices and combines them into one entry
250
259
  */
251
260
  handleAPIDiscovery(apiDevice) {
252
261
  const { deviceId, deviceName, deviceType, enableCloudService, hubDeviceId, version } = apiDevice;
253
- // Create device info
254
- const info = {
255
- id: deviceId,
256
- name: deviceName,
257
- deviceType,
258
- connectionTypes: ['api'],
259
- activeConnection: undefined,
260
- hubDeviceId,
261
- version,
262
- cloudServiceEnabled: enableCloudService,
263
- };
264
- // Check if device already exists (may have been discovered via BLE)
265
- let device = this.deviceManager.get(info.id);
266
- if (device) {
267
- // Update existing device info
268
- device.updateInfo({
262
+ this.logger.debug(`Processing API device: ${deviceName} (${deviceId}, type: ${deviceType})`);
263
+ // Try to find matching BLE device
264
+ // Strategy: look for BLE devices of the same type that haven't been fully populated yet
265
+ const matchedBLEDevice = this.findMatchingBLEDevice(deviceType, deviceName);
266
+ if (matchedBLEDevice) {
267
+ // Update existing BLE device with API information
268
+ const deviceId_internal = matchedBLEDevice.getId();
269
+ matchedBLEDevice.updateInfo({
269
270
  name: deviceName,
270
- connectionTypes: [...new Set([...device.getInfo().connectionTypes, 'api'])],
271
+ connectionTypes: [...new Set([...matchedBLEDevice.getInfo().connectionTypes, 'api'])],
271
272
  hubDeviceId,
272
273
  version,
273
274
  cloudServiceEnabled: enableCloudService,
274
275
  });
275
- this.logger.debug(`Updated device: ${info.name} (${info.id})`);
276
+ this.logger.info(`Matched API device to existing BLE device: ${deviceName} (${deviceId_internal})`);
277
+ this.emit('device-updated', matchedBLEDevice);
276
278
  }
277
279
  else {
278
- // Create new device
279
- device = this.createDevice(info);
280
- if (device) {
281
- this.deviceManager.add(device);
282
- this.emit('device-discovered', device);
283
- this.logger.info(`Discovered ${info.name} via API (${info.id})`);
280
+ // No matching BLE device found, create new API-only device
281
+ const info = {
282
+ id: deviceId,
283
+ name: deviceName,
284
+ deviceType,
285
+ connectionTypes: ['api'],
286
+ activeConnection: undefined,
287
+ hubDeviceId,
288
+ version,
289
+ cloudServiceEnabled: enableCloudService,
290
+ };
291
+ // Check if device already exists (shouldn't happen but safety check)
292
+ let device = this.deviceManager.get(info.id);
293
+ if (!device) {
294
+ device = this.createDevice(info);
295
+ if (device) {
296
+ this.deviceManager.add(device);
297
+ this.emit('device-discovered', device);
298
+ this.logger.info(`Discovered ${deviceName} via API only (${deviceId})`);
299
+ }
300
+ }
301
+ }
302
+ }
303
+ /**
304
+ * Find matching BLE device for an API device
305
+ * Returns a BLE device if a good match is found
306
+ */
307
+ findMatchingBLEDevice(apiDeviceType, apiDeviceName) {
308
+ // Get all BLE devices
309
+ const bleDevices = this.deviceManager.list().filter((device) => {
310
+ const info = device.getInfo();
311
+ return info.connectionTypes.includes('ble') && !info.connectionTypes.includes('api');
312
+ });
313
+ // Try exact device type match first
314
+ const typeMatches = bleDevices.filter(device => device.getDeviceType() === apiDeviceType);
315
+ if (typeMatches.length === 1) {
316
+ // If only one device of this type, it's likely a match
317
+ this.logger.debug(`Found exact type match for ${apiDeviceType}`);
318
+ return typeMatches[0];
319
+ }
320
+ if (typeMatches.length > 1) {
321
+ // If multiple devices of same type, try to match by name similarity
322
+ const nameMatch = typeMatches.find((device) => {
323
+ const devName = device.getName();
324
+ // Simple name comparison (could be enhanced)
325
+ return devName === apiDeviceName || devName.includes(apiDeviceName) || apiDeviceName.includes(devName);
326
+ });
327
+ if (nameMatch) {
328
+ this.logger.debug(`Found name match for ${apiDeviceName}`);
329
+ return nameMatch;
330
+ }
331
+ // No good name match, return the first one as fallback for single device
332
+ // (better to merge than to duplicate)
333
+ if (typeMatches.length === 1) {
334
+ return typeMatches[0];
284
335
  }
285
336
  }
337
+ return undefined;
286
338
  }
287
339
  /**
288
340
  * Create device instance
@@ -303,6 +355,14 @@ export class SwitchBot extends EventEmitter {
303
355
  bleConnection: this.bleConnection,
304
356
  apiClient: this.apiClient,
305
357
  enableFallback: this.config.enableFallback,
358
+ enableConnectionIntelligence: this.config.enableConnectionIntelligence,
359
+ enableCircuitBreaker: this.config.enableCircuitBreaker,
360
+ enableRetry: this.config.enableRetry,
361
+ retryConfig: {
362
+ maxAttempts: this.config.maxRetryAttempts,
363
+ initialDelayMs: this.config.retryInitialDelayMs,
364
+ maxDelayMs: this.config.retryMaxDelayMs,
365
+ },
306
366
  logLevel: this.config.logLevel,
307
367
  });
308
368
  }
@@ -1 +1 @@
1
- {"version":3,"file":"switchbot.js","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAOzC;;GAEG;AACH,MAAM,cAAc,GAAsC;IACxD,MAAM;IACN,SAAS;IACT,WAAW;IACX,cAAc;IACd,UAAU;IACV,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,YAAY,EAAE,YAAY,EAAE,iBAAiB;IAC7C,MAAM;IACN,OAAO;IACP,cAAc;IACd,WAAW;IACX,MAAM;IACN,OAAO;IACP,aAAa;IACb,kBAAkB;IAClB,MAAM;IACN,MAAM;IACN,MAAM;IACN,cAAc;IACd,gBAAgB;IAChB,QAAQ;IACR,QAAQ;CACT,CAAA;AAED;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,YAAY;IACjC,MAAM,CAA2B;IACjC,MAAM,CAAQ;IACd,UAAU,CAAa;IACvB,aAAa,CAAgB;IAC7B,SAAS,CAAgB;IACzB,aAAa,CAAe;IAC5B,WAAW,GAAG,KAAK,CAAA;IAE3B,YAAY,SAA0B,EAAE;QACtC,KAAK,EAAE,CAAA;QAEP,eAAe;QACf,IAAI,CAAC,MAAM,GAAG;YACZ,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;YAC3C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,SAAS,CAAC;YACpE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW;YACvD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc;YAChE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;YAC9C,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAA;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAE5D,oCAAoC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,0CAA0C;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC;wBAC/B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;wBACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;qBAC/B,CAAC,CAAA;oBAEF,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC;wBACrC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;wBACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;qBAC/B,CAAC,CAAA;oBAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBACrC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAChC,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CACrB,CAAA;gBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;QAChG,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,UAA4B,EAAE;QAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,EACJ,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAC3B,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAC3B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAClC,GAAG,OAAO,CAAA;QAEX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA;QAEpE,MAAM,WAAW,GAAyB,EAAE,CAAA;QAE5C,gBAAgB;QAChB,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC7C,CAAC;QAED,gBAAgB;QAChB,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACtC,CAAC;QAED,2BAA2B;QAC3B,MAAM,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QAErC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAA;QACvE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;QAExC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,OAAe;QACvC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QAC1C,yBAAyB;QACzB,MAAM,OAAO,GAAG,CAAC,aAAkB,EAAE,EAAE;YACrC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACxC,CAAC,CAAA;QAED,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAEvC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;YAEtD,4BAA4B;YAC5B,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QAClE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,aAAkB;QAC3C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,aAAa,CAAA;QACpD,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAA;QAExC,qBAAqB;QACrB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;YAC3C,IAAI,EAAE,UAAU;YAChB,UAAU;YACV,GAAG,EAAE,OAAO;YACZ,eAAe,EAAE,CAAC,KAAK,CAAQ;YAC/B,gBAAgB,EAAE,SAAS;YAC3B,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,IAAI;SACL,CAAA;QAED,oEAAoE;QACpE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE5C,IAAI,MAAM,EAAE,CAAC;YACX,8BAA8B;YAC9B,MAAM,CAAC,UAAU,CAAC;gBAChB,GAAG,EAAE,OAAO;gBACZ,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,KAAuB,CAAC,CAAC,CAAC;gBAC7F,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,IAAI;aACL,CAAC,CAAA;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAEhC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAO,CAAC,CAAA;gBAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAO,CAAC,CAAA;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QAE1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAA;YAElD,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC5C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,SAAc;QACvC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;QAEhG,qBAAqB;QACrB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,UAAU;YAChB,UAAU;YACV,eAAe,EAAE,CAAC,KAAK,CAAQ;YAC/B,gBAAgB,EAAE,SAAS;YAC3B,WAAW;YACX,OAAO;YACP,mBAAmB,EAAE,kBAAkB;SACxC,CAAA;QAED,oEAAoE;QACpE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE5C,IAAI,MAAM,EAAE,CAAC;YACX,8BAA8B;YAC9B,MAAM,CAAC,UAAU,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,KAAuB,CAAC,CAAC,CAAC;gBAC7F,WAAW;gBACX,OAAO;gBACP,mBAAmB,EAAE,kBAAkB;aACxC,CAAC,CAAA;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAEhC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAO,CAAC,CAAA;gBAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAO,CAAC,CAAA;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAAS;QAC5B,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAEnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;YAC3D,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;QAE7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAA;YAC9D,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE;gBAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;gBAC1C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;aAC/B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,SAAS,EAAE,EAAE,KAAK,CAAC,CAAA;YAChE,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAe;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAE3B,+BAA+B;QAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,MAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAA;IAClD,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAE/B,IAAI,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAA;QAC1C,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"switchbot.js","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,18 @@ export interface SwitchBotConfig {
32
32
  logLevel?: LogLevel;
33
33
  /** Noble instance (optional - for custom BLE configuration) */
34
34
  noble?: any;
35
+ /** Enable intelligent connection selection based on success history (default: true) */
36
+ enableConnectionIntelligence?: boolean;
37
+ /** Enable circuit breaker for connection reliability (default: true) */
38
+ enableCircuitBreaker?: boolean;
39
+ /** Enable automatic retry with exponential backoff (default: true) */
40
+ enableRetry?: boolean;
41
+ /** Maximum retry attempts per command (default: 3) */
42
+ maxRetryAttempts?: number;
43
+ /** Initial retry delay in milliseconds (default: 100) */
44
+ retryInitialDelayMs?: number;
45
+ /** Maximum retry delay in milliseconds (default: 5000) */
46
+ retryMaxDelayMs?: number;
35
47
  }
36
48
  /**
37
49
  * Device discovery options
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,GAAG,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,cAAc,CAAA;IACjC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,2BAA2B;IAC3B,cAAc,EAAE,cAAc,CAAA;IAC9B,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,cAAc,EAAE,cAAc,CAAA;IAC9B,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB;AAED,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AA6GD,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAyHD,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Circuit breaker states
3
+ */
4
+ export declare enum CircuitBreakerState {
5
+ CLOSED = "CLOSED",// Normal operation
6
+ OPEN = "OPEN",// Failing, reject requests
7
+ HALF_OPEN = "HALF_OPEN"
8
+ }
9
+ /**
10
+ * Circuit breaker configuration
11
+ */
12
+ export interface CircuitBreakerConfig {
13
+ /** Failure threshold (0-1) to open circuit (default: 0.5) */
14
+ failureThreshold?: number;
15
+ /** Minimum number of requests before checking threshold (default: 5) */
16
+ minRequests?: number;
17
+ /** Time to wait before attempting recovery in milliseconds (default: 30000) */
18
+ resetTimeoutMs?: number;
19
+ /** Maximum number of requests in half-open state (default: 1) */
20
+ maxHalfOpenRequests?: number;
21
+ }
22
+ /**
23
+ * Circuit breaker statistics
24
+ */
25
+ export interface CircuitBreakerStats {
26
+ state: CircuitBreakerState;
27
+ successCount: number;
28
+ failureCount: number;
29
+ successRate: number;
30
+ totalRequests: number;
31
+ lastFailureTime?: Date;
32
+ lastRecoveryTime?: Date;
33
+ }
34
+ /**
35
+ * Circuit breaker for managing connection reliability
36
+ */
37
+ export declare class CircuitBreaker {
38
+ private name;
39
+ private state;
40
+ private successCount;
41
+ private failureCount;
42
+ private halfOpenAttempts;
43
+ private lastFailureTime?;
44
+ private lastRecoveryTime?;
45
+ private resetTimer?;
46
+ private logger;
47
+ private config;
48
+ constructor(name: string, config?: CircuitBreakerConfig, logLevel?: number);
49
+ /**
50
+ * Record a successful operation
51
+ */
52
+ recordSuccess(): void;
53
+ /**
54
+ * Record a failed operation
55
+ */
56
+ recordFailure(): void;
57
+ /**
58
+ * Check if circuit should open based on failure rate
59
+ */
60
+ private shouldOpen;
61
+ /**
62
+ * Transition to CLOSED state (recovered)
63
+ */
64
+ private transitionToClosed;
65
+ /**
66
+ * Transition to OPEN state (failing)
67
+ */
68
+ private transitionToOpen;
69
+ /**
70
+ * Check if the circuit allows operations
71
+ */
72
+ canExecute(): boolean;
73
+ /**
74
+ * Mark that we tried to execute in half-open state
75
+ */
76
+ markHalfOpenAttempt(): void;
77
+ /**
78
+ * Get current state
79
+ */
80
+ getState(): CircuitBreakerState;
81
+ /**
82
+ * Get current failure rate (0-1)
83
+ */
84
+ getFailureRate(): number;
85
+ /**
86
+ * Get statistics
87
+ */
88
+ getStats(): CircuitBreakerStats;
89
+ /**
90
+ * Reset circuit breaker (for testing)
91
+ */
92
+ reset(): void;
93
+ /**
94
+ * Cleanup
95
+ */
96
+ cleanup(): void;
97
+ }
98
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,MAAM,WAAW,CAAE,mBAAmB;IACtC,IAAI,SAAS,CAAE,2BAA2B;IAC1C,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,mBAAmB,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,IAAI,CAAA;IACtB,gBAAgB,CAAC,EAAE,IAAI,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,cAAc;IAYvB,OAAO,CAAC,IAAI;IAXd,OAAO,CAAC,KAAK,CAAkD;IAC/D,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,eAAe,CAAC,CAAM;IAC9B,OAAO,CAAC,gBAAgB,CAAC,CAAM;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAgC;gBAGpC,IAAI,EAAE,MAAM,EACpB,MAAM,GAAE,oBAAyB,EACjC,QAAQ,CAAC,EAAE,MAAM;IAYnB;;OAEG;IACH,aAAa,IAAI,IAAI;IAUrB;;OAEG;IACH,aAAa,IAAI,IAAI;IAmBrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,UAAU,IAAI,OAAO;IAarB;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAM3B;;OAEG;IACH,QAAQ,IAAI,mBAAmB;IAI/B;;OAEG;IACH,cAAc,IAAI,MAAM;IAKxB;;OAEG;IACH,QAAQ,IAAI,mBAAmB;IAc/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAeb;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
@@ -0,0 +1,187 @@
1
+ /* Copyright(C) 2024-2026, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
+ *
3
+ * utils/circuit-breaker.ts: SwitchBot v4.0.0 - Circuit Breaker Pattern
4
+ */
5
+ import { Logger } from './index.js';
6
+ /**
7
+ * Circuit breaker states
8
+ */
9
+ export var CircuitBreakerState;
10
+ (function (CircuitBreakerState) {
11
+ CircuitBreakerState["CLOSED"] = "CLOSED";
12
+ CircuitBreakerState["OPEN"] = "OPEN";
13
+ CircuitBreakerState["HALF_OPEN"] = "HALF_OPEN";
14
+ })(CircuitBreakerState || (CircuitBreakerState = {}));
15
+ /**
16
+ * Circuit breaker for managing connection reliability
17
+ */
18
+ export class CircuitBreaker {
19
+ name;
20
+ state = CircuitBreakerState.CLOSED;
21
+ successCount = 0;
22
+ failureCount = 0;
23
+ halfOpenAttempts = 0;
24
+ lastFailureTime;
25
+ lastRecoveryTime;
26
+ resetTimer;
27
+ logger;
28
+ config;
29
+ constructor(name, config = {}, logLevel) {
30
+ this.name = name;
31
+ this.config = {
32
+ failureThreshold: config.failureThreshold ?? 0.5,
33
+ minRequests: config.minRequests ?? 5,
34
+ resetTimeoutMs: config.resetTimeoutMs ?? 30000,
35
+ maxHalfOpenRequests: config.maxHalfOpenRequests ?? 1,
36
+ };
37
+ this.logger = new Logger(`CircuitBreaker:${name}`, logLevel);
38
+ }
39
+ /**
40
+ * Record a successful operation
41
+ */
42
+ recordSuccess() {
43
+ this.successCount++;
44
+ if (this.state === CircuitBreakerState.HALF_OPEN) {
45
+ // Successful in Half-Open -> recover
46
+ this.logger.info(`${this.name}: circuit recovered (HALF_OPEN -> CLOSED)`);
47
+ this.transitionToClosed();
48
+ }
49
+ }
50
+ /**
51
+ * Record a failed operation
52
+ */
53
+ recordFailure() {
54
+ this.failureCount++;
55
+ this.lastFailureTime = new Date();
56
+ if (this.state === CircuitBreakerState.CLOSED) {
57
+ // Check if we should open the circuit
58
+ if (this.shouldOpen()) {
59
+ this.logger.warn(`${this.name}: circuit opened - failure rate ${this.getFailureRate().toFixed(2)}`);
60
+ this.transitionToOpen();
61
+ }
62
+ }
63
+ else if (this.state === CircuitBreakerState.HALF_OPEN) {
64
+ // Failed during recovery -> reopen
65
+ this.logger.warn(`${this.name}: circuit reopened (HALF_OPEN -> OPEN)`);
66
+ this.transitionToOpen();
67
+ }
68
+ }
69
+ /**
70
+ * Check if circuit should open based on failure rate
71
+ */
72
+ shouldOpen() {
73
+ const totalRequests = this.successCount + this.failureCount;
74
+ if (totalRequests < this.config.minRequests) {
75
+ return false;
76
+ }
77
+ const failureRate = this.failureCount / totalRequests;
78
+ return failureRate >= this.config.failureThreshold;
79
+ }
80
+ /**
81
+ * Transition to CLOSED state (recovered)
82
+ */
83
+ transitionToClosed() {
84
+ this.state = CircuitBreakerState.CLOSED;
85
+ this.successCount = 0;
86
+ this.failureCount = 0;
87
+ this.halfOpenAttempts = 0;
88
+ this.lastRecoveryTime = new Date();
89
+ if (this.resetTimer) {
90
+ clearTimeout(this.resetTimer);
91
+ this.resetTimer = undefined;
92
+ }
93
+ }
94
+ /**
95
+ * Transition to OPEN state (failing)
96
+ */
97
+ transitionToOpen() {
98
+ this.state = CircuitBreakerState.OPEN;
99
+ this.successCount = 0;
100
+ this.failureCount = 0;
101
+ this.halfOpenAttempts = 0;
102
+ // Schedule recovery attempt
103
+ if (this.resetTimer) {
104
+ clearTimeout(this.resetTimer);
105
+ }
106
+ this.resetTimer = setTimeout(() => {
107
+ this.logger.info(`${this.name}: attempting recovery (OPEN -> HALF_OPEN)`);
108
+ this.state = CircuitBreakerState.HALF_OPEN;
109
+ this.halfOpenAttempts = 0;
110
+ }, this.config.resetTimeoutMs);
111
+ }
112
+ /**
113
+ * Check if the circuit allows operations
114
+ */
115
+ canExecute() {
116
+ if (this.state === CircuitBreakerState.CLOSED) {
117
+ return true;
118
+ }
119
+ if (this.state === CircuitBreakerState.HALF_OPEN) {
120
+ return this.halfOpenAttempts < this.config.maxHalfOpenRequests;
121
+ }
122
+ // OPEN state
123
+ return false;
124
+ }
125
+ /**
126
+ * Mark that we tried to execute in half-open state
127
+ */
128
+ markHalfOpenAttempt() {
129
+ if (this.state === CircuitBreakerState.HALF_OPEN) {
130
+ this.halfOpenAttempts++;
131
+ }
132
+ }
133
+ /**
134
+ * Get current state
135
+ */
136
+ getState() {
137
+ return this.state;
138
+ }
139
+ /**
140
+ * Get current failure rate (0-1)
141
+ */
142
+ getFailureRate() {
143
+ const total = this.successCount + this.failureCount;
144
+ return total === 0 ? 0 : this.failureCount / total;
145
+ }
146
+ /**
147
+ * Get statistics
148
+ */
149
+ getStats() {
150
+ const totalRequests = this.successCount + this.failureCount;
151
+ return {
152
+ state: this.state,
153
+ successCount: this.successCount,
154
+ failureCount: this.failureCount,
155
+ successRate: totalRequests === 0 ? 1 : this.successCount / totalRequests,
156
+ totalRequests,
157
+ lastFailureTime: this.lastFailureTime,
158
+ lastRecoveryTime: this.lastRecoveryTime,
159
+ };
160
+ }
161
+ /**
162
+ * Reset circuit breaker (for testing)
163
+ */
164
+ reset() {
165
+ this.logger.debug(`${this.name}: reset`);
166
+ this.state = CircuitBreakerState.CLOSED;
167
+ this.successCount = 0;
168
+ this.failureCount = 0;
169
+ this.halfOpenAttempts = 0;
170
+ this.lastFailureTime = undefined;
171
+ this.lastRecoveryTime = undefined;
172
+ if (this.resetTimer) {
173
+ clearTimeout(this.resetTimer);
174
+ this.resetTimer = undefined;
175
+ }
176
+ }
177
+ /**
178
+ * Cleanup
179
+ */
180
+ cleanup() {
181
+ if (this.resetTimer) {
182
+ clearTimeout(this.resetTimer);
183
+ this.resetTimer = undefined;
184
+ }
185
+ }
186
+ }
187
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"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"}