node-switchbot 4.0.0-beta.1 → 4.0.0-beta.3

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 (170) hide show
  1. package/BLE.md +63 -0
  2. package/CHANGELOG.md +34 -0
  3. package/README.md +6 -0
  4. package/dist/devices/base.d.ts +59 -5
  5. package/dist/devices/base.d.ts.map +1 -1
  6. package/dist/devices/base.js +280 -28
  7. package/dist/devices/base.js.map +1 -1
  8. package/dist/devices/wo-hand.d.ts +35 -0
  9. package/dist/devices/wo-hand.d.ts.map +1 -1
  10. package/dist/devices/wo-hand.js +87 -0
  11. package/dist/devices/wo-hand.js.map +1 -1
  12. package/dist/settings.d.ts +6 -0
  13. package/dist/settings.d.ts.map +1 -1
  14. package/dist/settings.js +6 -0
  15. package/dist/settings.js.map +1 -1
  16. package/dist/switchbot.d.ts.map +1 -1
  17. package/dist/switchbot.js +14 -0
  18. package/dist/switchbot.js.map +1 -1
  19. package/dist/types/index.d.ts +12 -0
  20. package/dist/types/index.d.ts.map +1 -1
  21. package/dist/types/index.js.map +1 -1
  22. package/dist/utils/bot-ble.d.ts +36 -0
  23. package/dist/utils/bot-ble.d.ts.map +1 -0
  24. package/dist/utils/bot-ble.js +107 -0
  25. package/dist/utils/bot-ble.js.map +1 -0
  26. package/dist/utils/circuit-breaker.d.ts +98 -0
  27. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  28. package/dist/utils/circuit-breaker.js +187 -0
  29. package/dist/utils/circuit-breaker.js.map +1 -0
  30. package/dist/utils/connection-tracker.d.ts +66 -0
  31. package/dist/utils/connection-tracker.d.ts.map +1 -0
  32. package/dist/utils/connection-tracker.js +184 -0
  33. package/dist/utils/connection-tracker.js.map +1 -0
  34. package/dist/utils/fallback-handler.d.ts +68 -0
  35. package/dist/utils/fallback-handler.d.ts.map +1 -0
  36. package/dist/utils/fallback-handler.js +131 -0
  37. package/dist/utils/fallback-handler.js.map +1 -0
  38. package/dist/utils/index.d.ts +5 -0
  39. package/dist/utils/index.d.ts.map +1 -1
  40. package/dist/utils/index.js +7 -0
  41. package/dist/utils/index.js.map +1 -1
  42. package/dist/utils/retry.d.ts +55 -0
  43. package/dist/utils/retry.d.ts.map +1 -0
  44. package/dist/utils/retry.js +95 -0
  45. package/dist/utils/retry.js.map +1 -0
  46. package/docs/assets/hierarchy.js +1 -1
  47. package/docs/assets/search.js +1 -1
  48. package/docs/classes/APIError.html +2 -2
  49. package/docs/classes/APINotAvailableError.html +2 -2
  50. package/docs/classes/BLEConnection.html +9 -9
  51. package/docs/classes/BLENotAvailableError.html +2 -2
  52. package/docs/classes/BLEScanner.html +8 -8
  53. package/docs/classes/CommandFailedError.html +2 -2
  54. package/docs/classes/ConnectionTimeoutError.html +2 -2
  55. package/docs/classes/DeviceManager.html +13 -13
  56. package/docs/classes/DeviceNotFoundError.html +2 -2
  57. package/docs/classes/DiscoveryError.html +2 -2
  58. package/docs/classes/OpenAPIClient.html +24 -24
  59. package/docs/classes/SwitchBot.html +11 -11
  60. package/docs/classes/SwitchBotDevice.html +33 -15
  61. package/docs/classes/SwitchBotError.html +2 -2
  62. package/docs/classes/ValidationError.html +2 -2
  63. package/docs/classes/WoAirPurifier.html +36 -18
  64. package/docs/classes/WoAirPurifierTable.html +36 -18
  65. package/docs/classes/WoBlindTilt.html +38 -20
  66. package/docs/classes/WoBulb.html +37 -19
  67. package/docs/classes/WoCeilingLight.html +37 -19
  68. package/docs/classes/WoContact.html +32 -14
  69. package/docs/classes/WoCurtain.html +36 -18
  70. package/docs/classes/WoHand.html +45 -19
  71. package/docs/classes/WoHub2.html +32 -14
  72. package/docs/classes/WoHub3.html +32 -14
  73. package/docs/classes/WoHumi.html +36 -18
  74. package/docs/classes/WoHumi2.html +36 -18
  75. package/docs/classes/WoIOSensorTH.html +32 -14
  76. package/docs/classes/WoKeypad.html +32 -14
  77. package/docs/classes/WoLeak.html +32 -14
  78. package/docs/classes/WoPlugMiniJP.html +35 -17
  79. package/docs/classes/WoPlugMiniUS.html +35 -17
  80. package/docs/classes/WoPresence.html +32 -14
  81. package/docs/classes/WoRelaySwitch1.html +35 -17
  82. package/docs/classes/WoRelaySwitch1PM.html +35 -17
  83. package/docs/classes/WoRemote.html +32 -14
  84. package/docs/classes/WoSensorTH.html +32 -14
  85. package/docs/classes/WoSensorTHPlus.html +32 -14
  86. package/docs/classes/WoSensorTHPro.html +32 -14
  87. package/docs/classes/WoSensorTHProCO2.html +32 -14
  88. package/docs/classes/WoSmartLock.html +34 -16
  89. package/docs/classes/WoSmartLockPro.html +35 -17
  90. package/docs/classes/WoStrip.html +37 -19
  91. package/docs/enums/LogLevel.html +2 -2
  92. package/docs/enums/SwitchBotBLEModel.html +2 -2
  93. package/docs/enums/SwitchBotBLEModelName.html +2 -2
  94. package/docs/functions/updateBaseURL.html +1 -1
  95. package/docs/hierarchy.html +1 -1
  96. package/docs/index.html +1 -1
  97. package/docs/interfaces/APICommandRequest.html +2 -2
  98. package/docs/interfaces/APICommandResponse.html +2 -2
  99. package/docs/interfaces/APIDevice.html +2 -2
  100. package/docs/interfaces/APIDeviceStatus.html +2 -2
  101. package/docs/interfaces/APIErrorResponse.html +2 -2
  102. package/docs/interfaces/APIResponse.html +2 -2
  103. package/docs/interfaces/AirPurifierCommands.html +2 -2
  104. package/docs/interfaces/AirPurifierServiceData.html +5 -5
  105. package/docs/interfaces/AirPurifierStatus.html +7 -7
  106. package/docs/interfaces/BLEAdvertisement.html +2 -2
  107. package/docs/interfaces/BLEScanOptions.html +5 -5
  108. package/docs/interfaces/BLEServiceData.html +5 -5
  109. package/docs/interfaces/BlindTiltCommands.html +2 -2
  110. package/docs/interfaces/BlindTiltServiceData.html +5 -5
  111. package/docs/interfaces/BlindTiltStatus.html +6 -6
  112. package/docs/interfaces/BotCommands.html +2 -2
  113. package/docs/interfaces/BotServiceData.html +5 -5
  114. package/docs/interfaces/BotStatus.html +6 -6
  115. package/docs/interfaces/BulbCommands.html +2 -2
  116. package/docs/interfaces/BulbServiceData.html +5 -5
  117. package/docs/interfaces/BulbStatus.html +6 -6
  118. package/docs/interfaces/CeilingLightCommands.html +2 -2
  119. package/docs/interfaces/CeilingLightServiceData.html +5 -5
  120. package/docs/interfaces/CeilingLightStatus.html +6 -6
  121. package/docs/interfaces/CommandResult.html +6 -6
  122. package/docs/interfaces/ContactServiceData.html +5 -5
  123. package/docs/interfaces/ContactStatus.html +6 -6
  124. package/docs/interfaces/CurtainCommands.html +2 -2
  125. package/docs/interfaces/CurtainServiceData.html +5 -5
  126. package/docs/interfaces/CurtainStatus.html +6 -6
  127. package/docs/interfaces/DeviceInfo.html +13 -13
  128. package/docs/interfaces/DeviceListResponse.html +2 -2
  129. package/docs/interfaces/DeviceStatus.html +6 -6
  130. package/docs/interfaces/DiscoveryOptions.html +7 -7
  131. package/docs/interfaces/HubServiceData.html +5 -5
  132. package/docs/interfaces/HubStatus.html +6 -6
  133. package/docs/interfaces/HumidifierCommands.html +2 -2
  134. package/docs/interfaces/HumidifierServiceData.html +6 -6
  135. package/docs/interfaces/HumidifierStatus.html +6 -6
  136. package/docs/interfaces/KeypadStatus.html +6 -6
  137. package/docs/interfaces/LeakServiceData.html +5 -5
  138. package/docs/interfaces/LeakStatus.html +6 -6
  139. package/docs/interfaces/LockCommands.html +2 -2
  140. package/docs/interfaces/LockServiceData.html +6 -6
  141. package/docs/interfaces/LockStatus.html +6 -6
  142. package/docs/interfaces/MeterServiceData.html +5 -5
  143. package/docs/interfaces/MeterStatus.html +6 -6
  144. package/docs/interfaces/MotionServiceData.html +5 -5
  145. package/docs/interfaces/MotionStatus.html +6 -6
  146. package/docs/interfaces/PlugCommands.html +2 -2
  147. package/docs/interfaces/PlugServiceData.html +5 -5
  148. package/docs/interfaces/PlugStatus.html +6 -6
  149. package/docs/interfaces/PresenceServiceData.html +5 -5
  150. package/docs/interfaces/PresenceStatus.html +6 -6
  151. package/docs/interfaces/RelaySwitchCommands.html +2 -2
  152. package/docs/interfaces/RelaySwitchServiceData.html +5 -5
  153. package/docs/interfaces/RelaySwitchStatus.html +6 -6
  154. package/docs/interfaces/RemoteStatus.html +6 -6
  155. package/docs/interfaces/SceneListResponse.html +2 -2
  156. package/docs/interfaces/StripCommands.html +2 -2
  157. package/docs/interfaces/StripServiceData.html +5 -5
  158. package/docs/interfaces/StripStatus.html +6 -6
  159. package/docs/interfaces/SwitchBotConfig.html +21 -9
  160. package/docs/interfaces/WebhookConfig.html +2 -2
  161. package/docs/interfaces/WebhookDetails.html +2 -2
  162. package/docs/interfaces/WebhookQueryResponse.html +2 -2
  163. package/docs/interfaces/WebhookSetupResponse.html +2 -2
  164. package/docs/media/BLE.md +63 -0
  165. package/docs/types/ConnectionType.html +1 -1
  166. package/docs/types/PhysicalDeviceType.html +1 -1
  167. package/docs/types/VirtualDeviceType.html +1 -1
  168. package/docs/variables/urls.html +1 -1
  169. package/package.json +2 -2
  170. package/tsconfig.build.json +17 -0
@@ -0,0 +1,131 @@
1
+ /* Copyright(C) 2024-2026, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
+ *
3
+ * utils/fallback-handler.ts: SwitchBot v4.0.0 - Custom Fallback Handlers
4
+ */
5
+ import { Logger } from './index.js';
6
+ /**
7
+ * Manages custom fallback handlers and events
8
+ */
9
+ export class FallbackHandlerManager {
10
+ handlers = new Map();
11
+ logger;
12
+ handlerCounter = 0;
13
+ constructor(logLevel) {
14
+ this.logger = new Logger('FallbackHandlerManager', logLevel);
15
+ }
16
+ /**
17
+ * Register a custom fallback handler
18
+ */
19
+ register(handler, options = {}) {
20
+ const id = options.id || `handler_${++this.handlerCounter}`;
21
+ const priority = options.priority ?? 0;
22
+ this.handlers.set(id, { handler, priority });
23
+ this.logger.debug(`Registered fallback handler: ${id} (priority: ${priority})`);
24
+ return id;
25
+ }
26
+ /**
27
+ * Unregister a fallback handler
28
+ */
29
+ unregister(id) {
30
+ const removed = this.handlers.delete(id);
31
+ if (removed) {
32
+ this.logger.debug(`Unregistered fallback handler: ${id}`);
33
+ }
34
+ return removed;
35
+ }
36
+ /**
37
+ * Emit a fallback event to all registered handlers
38
+ */
39
+ async emit(event) {
40
+ // Sort handlers by priority (descending)
41
+ const sortedHandlers = Array.from(this.handlers.entries())
42
+ .sort((a, b) => b[1].priority - a[1].priority);
43
+ this.logger.debug(`Emitting fallback event to ${sortedHandlers.length} handlers`, {
44
+ device: event.deviceId,
45
+ primary: event.primaryConnection,
46
+ fallback: event.fallbackConnection,
47
+ });
48
+ for (const [id, { handler }] of sortedHandlers) {
49
+ try {
50
+ await Promise.resolve(handler(event));
51
+ }
52
+ catch (error) {
53
+ this.logger.error(`Fallback handler ${id} threw error`, error);
54
+ // Continue with other handlers even if one fails
55
+ }
56
+ }
57
+ }
58
+ /**
59
+ * Clear all handlers
60
+ */
61
+ clear() {
62
+ this.logger.debug(`Clearing ${this.handlers.size} fallback handlers`);
63
+ this.handlers.clear();
64
+ }
65
+ /**
66
+ * Get handler count
67
+ */
68
+ getHandlerCount() {
69
+ return this.handlers.size;
70
+ }
71
+ }
72
+ /**
73
+ * Built-in fallback handler: Log fallback events
74
+ */
75
+ export function createLoggingFallbackHandler(logLevel = 3) {
76
+ const logger = new Logger('FallbackLogger', logLevel);
77
+ return (event) => {
78
+ if (!event.fallbackConnection) {
79
+ logger.error(`Device ${event.deviceId}: ${event.primaryConnection} failed and no fallback available`);
80
+ }
81
+ else {
82
+ logger.warn(`Device ${event.deviceId}: ${event.primaryConnection} failed, falling back to ${event.fallbackConnection}`, {
83
+ reason: event.reason,
84
+ attempts: event.attemptsCount,
85
+ timeMs: event.totalTimeMs,
86
+ });
87
+ }
88
+ };
89
+ }
90
+ /**
91
+ * Built-in fallback handler: Metrics/statistics collection
92
+ */
93
+ export function createMetricsCollectionHandler() {
94
+ const metrics = {
95
+ totalFallbacks: 0,
96
+ fallbacksByDevice: new Map(),
97
+ fallbacksByConnection: new Map(),
98
+ lastFallbackTime: undefined,
99
+ };
100
+ const handler = (event) => {
101
+ metrics.totalFallbacks++;
102
+ metrics.lastFallbackTime = event.timestamp;
103
+ const deviceCount = metrics.fallbacksByDevice.get(event.deviceId) || 0;
104
+ metrics.fallbacksByDevice.set(event.deviceId, deviceCount + 1);
105
+ if (event.fallbackConnection) {
106
+ const connectionKey = `${event.primaryConnection}->${event.fallbackConnection}`;
107
+ const count = metrics.fallbacksByConnection.get(connectionKey) || 0;
108
+ metrics.fallbacksByConnection.set(connectionKey, count + 1);
109
+ }
110
+ };
111
+ handler.getMetrics = () => ({ ...metrics });
112
+ return handler;
113
+ }
114
+ /**
115
+ * Built-in fallback handler: Alert on repeated fallbacks
116
+ */
117
+ export function createAlertHandler(alertThreshold = 3) {
118
+ const fallbackCounts = new Map();
119
+ const logger = new Logger('FallbackAlertHandler');
120
+ return (event) => {
121
+ const count = (fallbackCounts.get(event.deviceId) || 0) + 1;
122
+ fallbackCounts.set(event.deviceId, count);
123
+ if (count === alertThreshold) {
124
+ logger.error(`ALERT: Device ${event.deviceId} has fallen back ${count} times - check connection`);
125
+ }
126
+ if (count > alertThreshold && count % alertThreshold === 0) {
127
+ logger.error(`ALERT: Device ${event.deviceId} has fallen back ${count} times`);
128
+ }
129
+ };
130
+ }
131
+ //# sourceMappingURL=fallback-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback-handler.js","sourceRoot":"","sources":["../../src/utils/fallback-handler.ts"],"names":[],"mappings":"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"}
@@ -94,4 +94,9 @@ export declare function debounce<T extends (...args: any[]) => any>(fn: T, delay
94
94
  * Throttle function
95
95
  */
96
96
  export declare function throttle<T extends (...args: any[]) => any>(fn: T, limitMs: number): (...args: Parameters<T>) => void;
97
+ export { BOT_BLE_ACTIONS, type BotBleAction, buildBotBleCommand, parseBotBleResponse, validateBotPassword, } from './bot-ble.js';
98
+ export { CircuitBreaker, type CircuitBreakerConfig, CircuitBreakerState, type CircuitBreakerStats } from './circuit-breaker.js';
99
+ export { type ConnectionStats, ConnectionTracker } from './connection-tracker.js';
100
+ export { createAlertHandler, createLoggingFallbackHandler, createMetricsCollectionHandler, type FallbackEvent, type FallbackHandler, FallbackHandlerManager, type FallbackHandlerOptions, } from './fallback-handler.js';
101
+ export { type RetryConfig, RetryExecutor, type RetryResult } from './retry.js';
97
102
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -203,4 +203,11 @@ export function throttle(fn, limitMs) {
203
203
  }
204
204
  };
205
205
  }
206
+ // Export Bot BLE password utilities
207
+ export { BOT_BLE_ACTIONS, buildBotBleCommand, parseBotBleResponse, validateBotPassword, } from './bot-ble.js';
208
+ export { CircuitBreaker, CircuitBreakerState } from './circuit-breaker.js';
209
+ export { ConnectionTracker } from './connection-tracker.js';
210
+ export { createAlertHandler, createLoggingFallbackHandler, createMetricsCollectionHandler, FallbackHandlerManager, } from './fallback-handler.js';
211
+ // Export advanced utilities
212
+ export { RetryExecutor } from './retry.js';
206
213
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Retry configuration options
3
+ */
4
+ export interface RetryConfig {
5
+ /** Maximum number of retry attempts (default: 3) */
6
+ maxAttempts?: number;
7
+ /** Initial delay in milliseconds (default: 100) */
8
+ initialDelayMs?: number;
9
+ /** Maximum delay in milliseconds (default: 5000) */
10
+ maxDelayMs?: number;
11
+ /** Exponential backoff multiplier (default: 2) */
12
+ backoffMultiplier?: number;
13
+ /** Jitter factor 0-1 to randomize delays (default: 0.1) */
14
+ jitterFactor?: number;
15
+ }
16
+ /**
17
+ * Retry execution result
18
+ */
19
+ export interface RetryResult<T> {
20
+ /** Whether the operation succeeded */
21
+ success: boolean;
22
+ /** The result (if successful) */
23
+ result?: T;
24
+ /** The error (if failed) */
25
+ error?: Error;
26
+ /** Number of attempts made */
27
+ attemptsCount: number;
28
+ /** Total time spent retrying in milliseconds */
29
+ totalTimeMs: number;
30
+ }
31
+ /**
32
+ * Retry executor with exponential backoff
33
+ */
34
+ export declare class RetryExecutor {
35
+ private logger;
36
+ private config;
37
+ constructor(config?: RetryConfig, logLevel?: number);
38
+ /**
39
+ * Calculate delay for next attempt with exponential backoff
40
+ */
41
+ private calculateDelay;
42
+ /**
43
+ * Execute a function with automatic retries and exponential backoff
44
+ */
45
+ execute<T>(fn: () => Promise<T>, description?: string): Promise<RetryResult<T>>;
46
+ /**
47
+ * Convenience method: execute with retries, throw on final failure
48
+ */
49
+ executeOrThrow<T>(fn: () => Promise<T>, description?: string): Promise<T>;
50
+ }
51
+ /**
52
+ * Convenience function: retry a promise with automatic backoff
53
+ */
54
+ export declare function retry<T>(fn: () => Promise<T>, config?: RetryConfig, logLevel?: number): Promise<T>;
55
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,4BAA4B;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,GAAE,WAAgB,EAAE,QAAQ,CAAC,EAAE,MAAM;IAYvD;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,SAAc,GACxB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAuD1B;;OAEG;IACG,cAAc,CAAC,CAAC,EACpB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,SAAc,GACxB,OAAO,CAAC,CAAC,CAAC;CASd;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,GAAE,WAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAGZ"}
@@ -0,0 +1,95 @@
1
+ /* Copyright(C) 2024-2026, donavanbecker (https://github.com/donavanbecker). All rights reserved.
2
+ *
3
+ * utils/retry.ts: SwitchBot v4.0.0 - Retry Logic with Exponential Backoff
4
+ */
5
+ import { Logger } from './index.js';
6
+ /**
7
+ * Retry executor with exponential backoff
8
+ */
9
+ export class RetryExecutor {
10
+ logger;
11
+ config;
12
+ constructor(config = {}, logLevel) {
13
+ this.config = {
14
+ maxAttempts: config.maxAttempts ?? 3,
15
+ initialDelayMs: config.initialDelayMs ?? 100,
16
+ maxDelayMs: config.maxDelayMs ?? 5000,
17
+ backoffMultiplier: config.backoffMultiplier ?? 2,
18
+ jitterFactor: config.jitterFactor ?? 0.1,
19
+ };
20
+ this.logger = new Logger('RetryExecutor', logLevel);
21
+ }
22
+ /**
23
+ * Calculate delay for next attempt with exponential backoff
24
+ */
25
+ calculateDelay(attemptNumber) {
26
+ const exponentialDelay = this.config.initialDelayMs * this.config.backoffMultiplier ** (attemptNumber - 1);
27
+ const cappedDelay = Math.min(exponentialDelay, this.config.maxDelayMs);
28
+ // Add jitter to prevent thundering herd
29
+ const jitter = cappedDelay * this.config.jitterFactor * (Math.random() * 2 - 1);
30
+ return Math.max(0, cappedDelay + jitter);
31
+ }
32
+ /**
33
+ * Execute a function with automatic retries and exponential backoff
34
+ */
35
+ async execute(fn, description = 'Operation') {
36
+ let lastError;
37
+ let totalTimeMs = 0;
38
+ let attemptNumber = 0;
39
+ for (attemptNumber = 1; attemptNumber <= this.config.maxAttempts; attemptNumber++) {
40
+ try {
41
+ const startTime = Date.now();
42
+ const result = await fn();
43
+ const elapsedMs = Date.now() - startTime;
44
+ totalTimeMs += elapsedMs;
45
+ if (attemptNumber > 1) {
46
+ this.logger.info(`${description} succeeded on attempt ${attemptNumber}/${this.config.maxAttempts}`);
47
+ }
48
+ return {
49
+ success: true,
50
+ result,
51
+ attemptsCount: attemptNumber,
52
+ totalTimeMs,
53
+ };
54
+ }
55
+ catch (error) {
56
+ lastError = error instanceof Error ? error : new Error(String(error));
57
+ const elapsedMs = Date.now() - (Date.now() - totalTimeMs);
58
+ totalTimeMs += elapsedMs;
59
+ if (attemptNumber < this.config.maxAttempts) {
60
+ const delayMs = this.calculateDelay(attemptNumber);
61
+ this.logger.warn(`${description} failed on attempt ${attemptNumber}/${this.config.maxAttempts}, retrying in ${delayMs}ms`, { error: lastError.message });
62
+ // Wait before retrying
63
+ await new Promise(resolve => setTimeout(resolve, delayMs));
64
+ }
65
+ else {
66
+ this.logger.error(`${description} failed after ${attemptNumber} attempts`, { error: lastError.message });
67
+ }
68
+ }
69
+ }
70
+ return {
71
+ success: false,
72
+ error: lastError || new Error('Unknown error'),
73
+ attemptsCount: attemptNumber,
74
+ totalTimeMs,
75
+ };
76
+ }
77
+ /**
78
+ * Convenience method: execute with retries, throw on final failure
79
+ */
80
+ async executeOrThrow(fn, description = 'Operation') {
81
+ const result = await this.execute(fn, description);
82
+ if (result.success) {
83
+ return result.result;
84
+ }
85
+ throw result.error;
86
+ }
87
+ }
88
+ /**
89
+ * Convenience function: retry a promise with automatic backoff
90
+ */
91
+ export async function retry(fn, config = {}, logLevel) {
92
+ const executor = new RetryExecutor(config, logLevel);
93
+ return executor.executeOrThrow(fn);
94
+ }
95
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- window.hierarchyData = "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"
1
+ window.hierarchyData = "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"