homebridge 2.0.0-alpha.40 → 2.0.0-alpha.41

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 (92) hide show
  1. package/config-sample.json +1 -12
  2. package/dist/api.d.ts +4 -20
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +1 -27
  5. package/dist/api.js.map +1 -1
  6. package/dist/bridgeService.d.ts +12 -15
  7. package/dist/bridgeService.d.ts.map +1 -1
  8. package/dist/bridgeService.js +7 -7
  9. package/dist/bridgeService.js.map +1 -1
  10. package/dist/childBridgeService.d.ts +1 -0
  11. package/dist/childBridgeService.d.ts.map +1 -1
  12. package/dist/childBridgeService.js +1 -0
  13. package/dist/childBridgeService.js.map +1 -1
  14. package/dist/childMatterBridgeFork.d.ts +108 -0
  15. package/dist/childMatterBridgeFork.d.ts.map +1 -0
  16. package/dist/childMatterBridgeFork.js +330 -0
  17. package/dist/childMatterBridgeFork.js.map +1 -0
  18. package/dist/childMatterBridgeService.d.ts +166 -0
  19. package/dist/childMatterBridgeService.d.ts.map +1 -0
  20. package/dist/childMatterBridgeService.js +623 -0
  21. package/dist/childMatterBridgeService.js.map +1 -0
  22. package/dist/index.d.ts +8 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/ipcService.d.ts +19 -3
  27. package/dist/ipcService.d.ts.map +1 -1
  28. package/dist/ipcService.js +13 -0
  29. package/dist/ipcService.js.map +1 -1
  30. package/dist/matter/index.d.ts +13 -0
  31. package/dist/matter/index.d.ts.map +1 -0
  32. package/dist/matter/index.js +12 -0
  33. package/dist/matter/index.js.map +1 -0
  34. package/dist/matter/matterBridge.d.ts +64 -0
  35. package/dist/matter/matterBridge.d.ts.map +1 -0
  36. package/dist/matter/matterBridge.js +154 -0
  37. package/dist/matter/matterBridge.js.map +1 -0
  38. package/dist/matter/matterConfigValidator.d.ts +27 -0
  39. package/dist/matter/matterConfigValidator.d.ts.map +1 -0
  40. package/dist/matter/matterConfigValidator.js +162 -0
  41. package/dist/matter/matterConfigValidator.js.map +1 -0
  42. package/dist/matter/matterDevice.d.ts +107 -0
  43. package/dist/matter/matterDevice.d.ts.map +1 -0
  44. package/dist/matter/matterDevice.js +913 -0
  45. package/dist/matter/matterDevice.js.map +1 -0
  46. package/dist/matter/matterDiagnostics.d.ts +121 -0
  47. package/dist/matter/matterDiagnostics.d.ts.map +1 -0
  48. package/dist/matter/matterDiagnostics.js +323 -0
  49. package/dist/matter/matterDiagnostics.js.map +1 -0
  50. package/dist/matter/matterErrorHandler.d.ts +113 -0
  51. package/dist/matter/matterErrorHandler.d.ts.map +1 -0
  52. package/dist/matter/matterErrorHandler.js +482 -0
  53. package/dist/matter/matterErrorHandler.js.map +1 -0
  54. package/dist/matter/matterNetworkMonitor.d.ts +65 -0
  55. package/dist/matter/matterNetworkMonitor.d.ts.map +1 -0
  56. package/dist/matter/matterNetworkMonitor.js +227 -0
  57. package/dist/matter/matterNetworkMonitor.js.map +1 -0
  58. package/dist/matter/matterServer.d.ts +110 -0
  59. package/dist/matter/matterServer.d.ts.map +1 -0
  60. package/dist/matter/matterServer.js +584 -0
  61. package/dist/matter/matterServer.js.map +1 -0
  62. package/dist/matter/matterSharedTypes.d.ts +167 -0
  63. package/dist/matter/matterSharedTypes.d.ts.map +1 -0
  64. package/dist/matter/matterSharedTypes.js +55 -0
  65. package/dist/matter/matterSharedTypes.js.map +1 -0
  66. package/dist/{matterTypes.d.ts → matter/matterTypes.d.ts} +15 -0
  67. package/dist/matter/matterTypes.d.ts.map +1 -0
  68. package/dist/{matterTypes.js → matter/matterTypes.js} +4 -4
  69. package/dist/matter/matterTypes.js.map +1 -0
  70. package/dist/matter/portAllocator.d.ts +85 -0
  71. package/dist/matter/portAllocator.d.ts.map +1 -0
  72. package/dist/matter/portAllocator.js +296 -0
  73. package/dist/matter/portAllocator.js.map +1 -0
  74. package/dist/server.d.ts +9 -3
  75. package/dist/server.d.ts.map +1 -1
  76. package/dist/server.js +363 -31
  77. package/dist/server.js.map +1 -1
  78. package/package.json +10 -10
  79. package/dist/matterConfigValidator.d.ts +0 -34
  80. package/dist/matterConfigValidator.d.ts.map +0 -1
  81. package/dist/matterConfigValidator.js +0 -249
  82. package/dist/matterConfigValidator.js.map +0 -1
  83. package/dist/matterService.d.ts +0 -168
  84. package/dist/matterService.d.ts.map +0 -1
  85. package/dist/matterService.js +0 -677
  86. package/dist/matterService.js.map +0 -1
  87. package/dist/matterTypes.d.ts.map +0 -1
  88. package/dist/matterTypes.js.map +0 -1
  89. package/dist/util/matter-cli.d.ts +0 -3
  90. package/dist/util/matter-cli.d.ts.map +0 -1
  91. package/dist/util/matter-cli.js +0 -211
  92. package/dist/util/matter-cli.js.map +0 -1
@@ -0,0 +1,482 @@
1
+ /**
2
+ * Matter Error Handler
3
+ *
4
+ * Centralized error handling and recovery for Matter.js integration
5
+ * with circuit breaker pattern and contextual recovery
6
+ */
7
+ import { Logger } from '../logger.js';
8
+ const log = Logger.withPrefix('Matter');
9
+ export var MatterErrorType;
10
+ (function (MatterErrorType) {
11
+ MatterErrorType["INITIALIZATION"] = "INITIALIZATION";
12
+ MatterErrorType["NETWORK"] = "NETWORK";
13
+ MatterErrorType["COMMISSIONING"] = "COMMISSIONING";
14
+ MatterErrorType["DEVICE_SYNC"] = "DEVICE_SYNC";
15
+ MatterErrorType["SERVER"] = "SERVER";
16
+ MatterErrorType["STORAGE"] = "STORAGE";
17
+ MatterErrorType["CONFIGURATION"] = "CONFIGURATION";
18
+ MatterErrorType["UNKNOWN"] = "UNKNOWN";
19
+ })(MatterErrorType || (MatterErrorType = {}));
20
+ /**
21
+ * Circuit breaker states
22
+ */
23
+ var CircuitState;
24
+ (function (CircuitState) {
25
+ CircuitState["CLOSED"] = "CLOSED";
26
+ CircuitState["OPEN"] = "OPEN";
27
+ CircuitState["HALF_OPEN"] = "HALF_OPEN";
28
+ })(CircuitState || (CircuitState = {}));
29
+ /**
30
+ * Circuit breaker for error recovery
31
+ */
32
+ class CircuitBreaker {
33
+ threshold;
34
+ timeout;
35
+ successThreshold;
36
+ state = CircuitState.CLOSED;
37
+ failureCount = 0;
38
+ successCount = 0;
39
+ lastFailureTime = 0;
40
+ nextAttemptTime = 0;
41
+ constructor(threshold = 5, timeout = 60000, // 1 minute
42
+ successThreshold = 3) {
43
+ this.threshold = threshold;
44
+ this.timeout = timeout;
45
+ this.successThreshold = successThreshold;
46
+ }
47
+ /**
48
+ * Check if operation should be allowed
49
+ */
50
+ canAttempt() {
51
+ const now = Date.now();
52
+ switch (this.state) {
53
+ case CircuitState.CLOSED:
54
+ return true;
55
+ case CircuitState.OPEN:
56
+ if (now >= this.nextAttemptTime) {
57
+ this.state = CircuitState.HALF_OPEN;
58
+ return true;
59
+ }
60
+ return false;
61
+ case CircuitState.HALF_OPEN:
62
+ return true;
63
+ default:
64
+ return false;
65
+ }
66
+ }
67
+ /**
68
+ * Record success
69
+ */
70
+ recordSuccess() {
71
+ this.failureCount = 0;
72
+ if (this.state === CircuitState.HALF_OPEN) {
73
+ this.successCount++;
74
+ if (this.successCount >= this.successThreshold) {
75
+ this.state = CircuitState.CLOSED;
76
+ this.successCount = 0;
77
+ }
78
+ }
79
+ }
80
+ /**
81
+ * Record failure
82
+ */
83
+ recordFailure() {
84
+ this.failureCount++;
85
+ this.lastFailureTime = Date.now();
86
+ this.successCount = 0;
87
+ if (this.state === CircuitState.HALF_OPEN) {
88
+ this.state = CircuitState.OPEN;
89
+ this.nextAttemptTime = Date.now() + this.timeout;
90
+ }
91
+ else if (this.failureCount >= this.threshold) {
92
+ this.state = CircuitState.OPEN;
93
+ this.nextAttemptTime = Date.now() + this.timeout;
94
+ }
95
+ }
96
+ /**
97
+ * Get current state
98
+ */
99
+ getState() {
100
+ return this.state;
101
+ }
102
+ /**
103
+ * Reset the circuit breaker
104
+ */
105
+ reset() {
106
+ this.state = CircuitState.CLOSED;
107
+ this.failureCount = 0;
108
+ this.successCount = 0;
109
+ this.lastFailureTime = 0;
110
+ this.nextAttemptTime = 0;
111
+ }
112
+ }
113
+ export class MatterErrorHandler {
114
+ static instance;
115
+ errorCount = new Map();
116
+ lastErrors = new Map();
117
+ recoveryCallbacks = new Map();
118
+ circuitBreakers = new Map();
119
+ recoveryContexts = new Map();
120
+ maxRetries = 3;
121
+ retryDelays = [1000, 5000, 10000]; // Exponential backoff
122
+ MAX_RECOVERY_ATTEMPTS = 5;
123
+ contextualRetryLimits = new Map([
124
+ [MatterErrorType.NETWORK, 5],
125
+ [MatterErrorType.DEVICE_SYNC, 3],
126
+ [MatterErrorType.STORAGE, 2],
127
+ [MatterErrorType.SERVER, 1],
128
+ ]);
129
+ constructor() { }
130
+ static getInstance() {
131
+ if (!MatterErrorHandler.instance) {
132
+ MatterErrorHandler.instance = new MatterErrorHandler();
133
+ }
134
+ return MatterErrorHandler.instance;
135
+ }
136
+ /**
137
+ * Handle a Matter error with context-aware recovery
138
+ */
139
+ async handleError(error, context) {
140
+ const matterError = this.categorizeError(error, context);
141
+ // Log the error with appropriate level
142
+ this.logError(matterError);
143
+ // Track error occurrence
144
+ this.trackError(matterError);
145
+ // Check circuit breaker before attempting recovery
146
+ const circuitBreaker = this.getOrCreateCircuitBreaker(matterError.type);
147
+ if (matterError.recoverable && circuitBreaker.canAttempt()) {
148
+ // Check if we should attempt recovery based on context
149
+ if (this.shouldAttemptRecovery(matterError)) {
150
+ this.attemptContextualRecovery(matterError, circuitBreaker).catch((err) => {
151
+ log.debug(`Recovery attempt failed for ${matterError.type}:`, err);
152
+ circuitBreaker.recordFailure();
153
+ });
154
+ }
155
+ }
156
+ else if (!circuitBreaker.canAttempt()) {
157
+ log.debug(`Circuit breaker OPEN for ${matterError.type}, skipping recovery`);
158
+ }
159
+ }
160
+ /**
161
+ * Categorize error into Matter error types
162
+ */
163
+ categorizeError(error, context) {
164
+ if ('type' in error) {
165
+ return error;
166
+ }
167
+ const matterError = error;
168
+ matterError.timestamp = new Date();
169
+ // Categorize based on error message and context
170
+ if (error.message.includes('EADDRINUSE')) {
171
+ matterError.type = MatterErrorType.NETWORK;
172
+ matterError.code = 'PORT_IN_USE';
173
+ matterError.recoverable = false;
174
+ }
175
+ else if (error.message.includes('ECONNREFUSED') || error.message.includes('ETIMEDOUT')) {
176
+ matterError.type = MatterErrorType.NETWORK;
177
+ matterError.code = 'CONNECTION_FAILED';
178
+ matterError.recoverable = true;
179
+ }
180
+ else if (error.message.includes('commissioning') || error.message.includes('pairing')) {
181
+ matterError.type = MatterErrorType.COMMISSIONING;
182
+ matterError.recoverable = false;
183
+ }
184
+ else if (error.message.includes('storage') || error.message.includes('ENOENT')) {
185
+ matterError.type = MatterErrorType.STORAGE;
186
+ matterError.recoverable = true;
187
+ }
188
+ else if (error.message.includes('config') || error.message.includes('invalid')) {
189
+ matterError.type = MatterErrorType.CONFIGURATION;
190
+ matterError.recoverable = false;
191
+ }
192
+ else if (context?.includes('sync')) {
193
+ matterError.type = MatterErrorType.DEVICE_SYNC;
194
+ matterError.recoverable = true;
195
+ }
196
+ else if (context?.includes('server')) {
197
+ matterError.type = MatterErrorType.SERVER;
198
+ matterError.recoverable = true;
199
+ }
200
+ else if (context?.includes('init')) {
201
+ matterError.type = MatterErrorType.INITIALIZATION;
202
+ matterError.recoverable = true;
203
+ }
204
+ else {
205
+ matterError.type = MatterErrorType.UNKNOWN;
206
+ matterError.recoverable = false;
207
+ }
208
+ return matterError;
209
+ }
210
+ /**
211
+ * Log error with appropriate severity
212
+ */
213
+ logError(error) {
214
+ const errorCount = this.errorCount.get(error.type) || 0;
215
+ switch (error.type) {
216
+ case MatterErrorType.NETWORK:
217
+ if (error.code === 'PORT_IN_USE') {
218
+ log.error('Matter port is already in use. Please configure a different port.');
219
+ }
220
+ else {
221
+ log.warn(`Matter network error: ${error.message}`);
222
+ }
223
+ break;
224
+ case MatterErrorType.COMMISSIONING:
225
+ log.info(`Matter commissioning issue: ${error.message}`);
226
+ break;
227
+ case MatterErrorType.DEVICE_SYNC:
228
+ if (errorCount < 3) {
229
+ log.debug(`Device sync error: ${error.message}`);
230
+ }
231
+ else {
232
+ log.warn(`Repeated device sync errors: ${error.message}`);
233
+ }
234
+ break;
235
+ case MatterErrorType.SERVER:
236
+ log.error(`Matter server error: ${error.message}`);
237
+ break;
238
+ case MatterErrorType.STORAGE:
239
+ log.warn(`Matter storage error: ${error.message}`);
240
+ break;
241
+ case MatterErrorType.CONFIGURATION:
242
+ log.error(`Matter configuration error: ${error.message}`);
243
+ break;
244
+ case MatterErrorType.INITIALIZATION:
245
+ log.error(`Matter initialization error: ${error.message}`);
246
+ break;
247
+ default:
248
+ log.error(`Unknown Matter error: ${error.message}`);
249
+ }
250
+ // Log stack trace for non-recoverable errors
251
+ if (!error.recoverable && error.stack) {
252
+ log.debug('Stack trace:', error.stack);
253
+ }
254
+ }
255
+ /**
256
+ * Track error occurrences with bounds checking
257
+ */
258
+ trackError(error) {
259
+ // Limit total error types tracked to prevent unbounded growth
260
+ const MAX_ERROR_TYPES = 50;
261
+ const MAX_ERRORS_PER_TYPE = 100;
262
+ if (!this.errorCount.has(error.type) && this.errorCount.size >= MAX_ERROR_TYPES) {
263
+ // Remove oldest error type
264
+ const firstKey = this.errorCount.keys().next().value;
265
+ if (firstKey) {
266
+ this.errorCount.delete(firstKey);
267
+ this.lastErrors.delete(firstKey);
268
+ this.recoveryContexts.delete(firstKey);
269
+ this.circuitBreakers.delete(firstKey);
270
+ }
271
+ }
272
+ const count = (this.errorCount.get(error.type) || 0) + 1;
273
+ // Cap error count per type
274
+ this.errorCount.set(error.type, Math.min(count, MAX_ERRORS_PER_TYPE));
275
+ this.lastErrors.set(error.type, error);
276
+ // Auto-cleanup old errors after 1 hour
277
+ setTimeout(() => {
278
+ const currentError = this.lastErrors.get(error.type);
279
+ if (currentError && currentError.timestamp === error.timestamp) {
280
+ this.clearErrors(error.type);
281
+ }
282
+ }, 3600000); // 1 hour
283
+ }
284
+ /**
285
+ * Clear errors for a specific type
286
+ */
287
+ clearErrors(errorType) {
288
+ this.errorCount.delete(errorType);
289
+ this.lastErrors.delete(errorType);
290
+ }
291
+ /**
292
+ * Attempt contextual recovery from error
293
+ */
294
+ async attemptContextualRecovery(error, circuitBreaker) {
295
+ // Get or create recovery context
296
+ let context = this.recoveryContexts.get(error.type);
297
+ if (!context) {
298
+ context = {
299
+ errorType: error.type,
300
+ attemptCount: 0,
301
+ lastAttemptTime: 0,
302
+ backoffMultiplier: 1,
303
+ };
304
+ this.recoveryContexts.set(error.type, context);
305
+ }
306
+ context.attemptCount++;
307
+ context.lastAttemptTime = Date.now();
308
+ const delay = this.getContextualDelay(error.type, context.attemptCount - 1);
309
+ log.info(`Attempting recovery from ${error.type} error (attempt ${context.attemptCount}) in ${delay}ms`);
310
+ // Use global.setTimeout so it can be mocked in tests
311
+ await new Promise(resolve => globalThis.setTimeout(resolve, delay));
312
+ try {
313
+ const callbacks = this.recoveryCallbacks.get(error.type) || [];
314
+ let anySuccess = false;
315
+ for (const callback of callbacks) {
316
+ try {
317
+ await callback();
318
+ anySuccess = true;
319
+ }
320
+ catch (callbackError) {
321
+ log.debug(`Recovery callback failed for ${error.type}:`, callbackError);
322
+ }
323
+ }
324
+ if (anySuccess) {
325
+ circuitBreaker.recordSuccess();
326
+ // Reset context on success
327
+ this.recoveryContexts.delete(error.type);
328
+ this.errorCount.set(error.type, 0);
329
+ log.info(`✅ Recovery successful for ${error.type}`);
330
+ }
331
+ else {
332
+ circuitBreaker.recordFailure();
333
+ // Increase backoff multiplier but don't delete context
334
+ context.backoffMultiplier = Math.min(context.backoffMultiplier * 2, 10);
335
+ // Keep the context so attemptCount persists
336
+ }
337
+ }
338
+ catch (recoveryError) {
339
+ log.error(`Recovery failed for ${error.type}:`, recoveryError);
340
+ circuitBreaker.recordFailure();
341
+ context.backoffMultiplier = Math.min(context.backoffMultiplier * 2, 10);
342
+ // Keep the context so attemptCount persists
343
+ }
344
+ }
345
+ /**
346
+ * Backward compatibility wrapper
347
+ */
348
+ async attemptRecovery(error) {
349
+ const circuitBreaker = this.getOrCreateCircuitBreaker(error.type);
350
+ if (this.shouldAttemptRecovery(error) && circuitBreaker.canAttempt()) {
351
+ await this.attemptContextualRecovery(error, circuitBreaker);
352
+ }
353
+ }
354
+ /**
355
+ * Get or create a circuit breaker for an error type
356
+ */
357
+ getOrCreateCircuitBreaker(type) {
358
+ let breaker = this.circuitBreakers.get(type);
359
+ if (!breaker) {
360
+ breaker = new CircuitBreaker();
361
+ this.circuitBreakers.set(type, breaker);
362
+ }
363
+ return breaker;
364
+ }
365
+ /**
366
+ * Check if we should attempt recovery
367
+ */
368
+ shouldAttemptRecovery(error) {
369
+ // Don't attempt recovery for non-recoverable errors
370
+ if (!error.recoverable) {
371
+ return false;
372
+ }
373
+ // Check if we've exceeded max recovery attempts
374
+ const context = this.recoveryContexts.get(error.type);
375
+ if (context && context.attemptCount >= this.MAX_RECOVERY_ATTEMPTS) {
376
+ return false;
377
+ }
378
+ return true;
379
+ }
380
+ /**
381
+ * Get contextual delay based on error type and attempt count
382
+ */
383
+ getContextualDelay(type, attemptCount) {
384
+ // Base delays by error type
385
+ const baseDelays = {
386
+ [MatterErrorType.NETWORK]: 5000,
387
+ [MatterErrorType.STORAGE]: 1000,
388
+ [MatterErrorType.DEVICE_SYNC]: 2000,
389
+ [MatterErrorType.COMMISSIONING]: 3000,
390
+ [MatterErrorType.CONFIGURATION]: 1000,
391
+ [MatterErrorType.INITIALIZATION]: 2000,
392
+ [MatterErrorType.SERVER]: 1000,
393
+ [MatterErrorType.UNKNOWN]: 2000,
394
+ };
395
+ const baseDelay = baseDelays[type] || 2000;
396
+ // Exponential backoff with jitter
397
+ const backoffDelay = Math.min(baseDelay * 2 ** attemptCount, 30000);
398
+ const jitter = Math.random() * 1000;
399
+ return backoffDelay + jitter;
400
+ }
401
+ /**
402
+ * Register a recovery callback for specific error type
403
+ */
404
+ registerRecoveryCallback(type, callback) {
405
+ const callbacks = this.recoveryCallbacks.get(type) || [];
406
+ callbacks.push(callback);
407
+ this.recoveryCallbacks.set(type, callbacks);
408
+ }
409
+ /**
410
+ * Reset error counts (useful after successful recovery)
411
+ */
412
+ resetErrorCount(type) {
413
+ if (type) {
414
+ this.errorCount.delete(type);
415
+ this.lastErrors.delete(type);
416
+ this.recoveryContexts.delete(type);
417
+ // Reset circuit breaker
418
+ const circuitBreaker = this.circuitBreakers.get(type);
419
+ if (circuitBreaker) {
420
+ circuitBreaker.reset();
421
+ }
422
+ }
423
+ else {
424
+ this.errorCount.clear();
425
+ this.lastErrors.clear();
426
+ this.recoveryContexts.clear();
427
+ // Reset all circuit breakers
428
+ for (const breaker of this.circuitBreakers.values()) {
429
+ breaker.reset();
430
+ }
431
+ }
432
+ }
433
+ /**
434
+ * Get error statistics
435
+ */
436
+ getErrorStats() {
437
+ const stats = new Map();
438
+ for (const [type, count] of this.errorCount) {
439
+ const lastError = this.lastErrors.get(type);
440
+ const circuitBreaker = this.circuitBreakers.get(type);
441
+ const context = this.recoveryContexts.get(type);
442
+ stats.set(type, {
443
+ count,
444
+ lastError,
445
+ circuitState: circuitBreaker?.getState(),
446
+ recoveryAttempts: context?.attemptCount,
447
+ });
448
+ }
449
+ return stats;
450
+ }
451
+ /**
452
+ * Create a wrapped function with error handling
453
+ */
454
+ wrapAsync(fn, context) {
455
+ return (async (...args) => {
456
+ try {
457
+ return await fn(...args);
458
+ }
459
+ catch (error) {
460
+ await this.handleError(error, context);
461
+ throw error;
462
+ }
463
+ });
464
+ }
465
+ /**
466
+ * Create a wrapped function with error suppression
467
+ */
468
+ wrapAsyncSafe(fn, context, defaultValue) {
469
+ return (async (...args) => {
470
+ try {
471
+ return await fn(...args);
472
+ }
473
+ catch (error) {
474
+ await this.handleError(error, context);
475
+ return defaultValue;
476
+ }
477
+ });
478
+ }
479
+ }
480
+ // Export singleton instance
481
+ export const errorHandler = MatterErrorHandler.getInstance();
482
+ //# sourceMappingURL=matterErrorHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matterErrorHandler.js","sourceRoot":"","sources":["../../src/matter/matterErrorHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ export interface NetworkStatus {
2
+ isOnline: boolean;
3
+ interfaces: string[];
4
+ primaryInterface?: string;
5
+ lastCheck: Date;
6
+ consecutiveFailures: number;
7
+ }
8
+ export declare class MatterNetworkMonitor {
9
+ private static instance;
10
+ private status;
11
+ private checkInterval;
12
+ private callbacks;
13
+ private checkIntervalMs;
14
+ private isMonitoring;
15
+ private stabilityCounter;
16
+ private readonly STABILITY_THRESHOLD;
17
+ private constructor();
18
+ static getInstance(): MatterNetworkMonitor;
19
+ /**
20
+ * Start monitoring network connectivity
21
+ */
22
+ startMonitoring(): void;
23
+ /**
24
+ * Stop monitoring
25
+ */
26
+ stopMonitoring(): void;
27
+ /**
28
+ * Check network status
29
+ */
30
+ private checkNetworkStatus;
31
+ /**
32
+ * Get active network interfaces
33
+ */
34
+ private getActiveInterfaces;
35
+ /**
36
+ * Test network connectivity with optimizations
37
+ */
38
+ private testConnectivity;
39
+ /**
40
+ * Handle network recovery
41
+ */
42
+ private handleNetworkRecovery;
43
+ /**
44
+ * Register a callback for network status changes
45
+ */
46
+ onStatusChange(callback: (status: NetworkStatus) => void): void;
47
+ /**
48
+ * Remove a status change callback
49
+ */
50
+ removeStatusChangeCallback(callback: (status: NetworkStatus) => void): void;
51
+ /**
52
+ * Notify all listeners of status change
53
+ */
54
+ private notifyStatusChange;
55
+ /**
56
+ * Get current network status
57
+ */
58
+ getStatus(): NetworkStatus;
59
+ /**
60
+ * Check if network is healthy
61
+ */
62
+ isHealthy(): boolean;
63
+ }
64
+ export declare const networkMonitor: MatterNetworkMonitor;
65
+ //# sourceMappingURL=matterNetworkMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matterNetworkMonitor.d.ts","sourceRoot":"","sources":["../../src/matter/matterNetworkMonitor.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,IAAI,CAAA;IACf,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;IAC7C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAAkD;IACnE,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAI;IAExC,OAAO;IASP,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C;;OAEG;IACH,eAAe,IAAI,IAAI;IA4BvB;;OAEG;IACH,cAAc,IAAI,IAAI;IAStB;;OAEG;YACW,kBAAkB;IAgDhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;YACW,gBAAgB;IA8C9B;;OAEG;YACW,qBAAqB;IAcnC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAI/D;;OAEG;IACH,0BAA0B,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAI3E;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAGD,eAAO,MAAM,cAAc,sBAAqC,CAAA"}