@mp-consulting/homebridge-daikin-cloud 1.3.5 → 1.3.7
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/LICENSE +39 -1
- package/README.md +5 -3
- package/dist/src/accessories/air-conditioning-accessory.d.ts +2 -2
- package/dist/src/accessories/air-conditioning-accessory.d.ts.map +1 -1
- package/dist/src/accessories/air-conditioning-accessory.js.map +1 -1
- package/dist/src/accessories/altherma-accessory.d.ts +2 -2
- package/dist/src/accessories/altherma-accessory.d.ts.map +1 -1
- package/dist/src/accessories/altherma-accessory.js.map +1 -1
- package/dist/src/accessories/base-accessory.d.ts +6 -6
- package/dist/src/accessories/base-accessory.d.ts.map +1 -1
- package/dist/src/accessories/base-accessory.js +15 -15
- package/dist/src/accessories/base-accessory.js.map +1 -1
- package/dist/src/api/daikin-api.d.ts +26 -26
- package/dist/src/api/daikin-api.d.ts.map +1 -1
- package/dist/src/api/daikin-api.js +68 -42
- package/dist/src/api/daikin-api.js.map +1 -1
- package/dist/src/api/daikin-cloud.repository.d.ts.map +1 -1
- package/dist/src/api/daikin-cloud.repository.js +22 -14
- package/dist/src/api/daikin-cloud.repository.js.map +1 -1
- package/dist/src/api/daikin-controller.d.ts +41 -47
- package/dist/src/api/daikin-controller.d.ts.map +1 -1
- package/dist/src/api/daikin-controller.js +40 -64
- package/dist/src/api/daikin-controller.js.map +1 -1
- package/dist/src/api/daikin-device.d.ts +36 -31
- package/dist/src/api/daikin-device.d.ts.map +1 -1
- package/dist/src/api/daikin-device.js +45 -31
- package/dist/src/api/daikin-device.js.map +1 -1
- package/dist/src/api/daikin-mobile-oauth.d.ts +20 -20
- package/dist/src/api/daikin-mobile-oauth.d.ts.map +1 -1
- package/dist/src/api/daikin-mobile-oauth.js +49 -44
- package/dist/src/api/daikin-mobile-oauth.js.map +1 -1
- package/dist/src/api/daikin-oauth.d.ts +32 -32
- package/dist/src/api/daikin-oauth.d.ts.map +1 -1
- package/dist/src/api/daikin-oauth.js +64 -56
- package/dist/src/api/daikin-oauth.js.map +1 -1
- package/dist/src/api/daikin-schemas.d.ts +476 -351
- package/dist/src/api/daikin-schemas.d.ts.map +1 -1
- package/dist/src/api/daikin-schemas.js +11 -42
- package/dist/src/api/daikin-schemas.js.map +1 -1
- package/dist/src/api/daikin-types.d.ts +5 -1
- package/dist/src/api/daikin-types.d.ts.map +1 -1
- package/dist/src/api/daikin-types.js.map +1 -1
- package/dist/src/api/daikin-websocket.d.ts +31 -32
- package/dist/src/api/daikin-websocket.d.ts.map +1 -1
- package/dist/src/api/daikin-websocket.js +55 -35
- package/dist/src/api/daikin-websocket.js.map +1 -1
- package/dist/src/api/index.d.ts +2 -1
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js +3 -1
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/token-storage.d.ts +21 -0
- package/dist/src/api/token-storage.d.ts.map +1 -0
- package/dist/src/api/token-storage.js +90 -0
- package/dist/src/api/token-storage.js.map +1 -0
- package/dist/src/config/config-manager.d.ts +33 -33
- package/dist/src/config/config-manager.d.ts.map +1 -1
- package/dist/src/config/config-manager.js +33 -33
- package/dist/src/config/config-manager.js.map +1 -1
- package/dist/src/constants/api.constants.d.ts +4 -0
- package/dist/src/constants/api.constants.d.ts.map +1 -1
- package/dist/src/constants/api.constants.js +5 -1
- package/dist/src/constants/api.constants.js.map +1 -1
- package/dist/src/constants/device.constants.d.ts +4 -0
- package/dist/src/constants/device.constants.d.ts.map +1 -1
- package/dist/src/constants/device.constants.js +5 -1
- package/dist/src/constants/device.constants.js.map +1 -1
- package/dist/src/device/accessory-factory.d.ts +10 -10
- package/dist/src/device/accessory-factory.d.ts.map +1 -1
- package/dist/src/device/accessory-factory.js +7 -7
- package/dist/src/device/accessory-factory.js.map +1 -1
- package/dist/src/device/capability-detector.d.ts +8 -8
- package/dist/src/device/capability-detector.d.ts.map +1 -1
- package/dist/src/device/capability-detector.js +6 -6
- package/dist/src/device/capability-detector.js.map +1 -1
- package/dist/src/device/capability-docs.d.ts +1 -9
- package/dist/src/device/capability-docs.d.ts.map +1 -1
- package/dist/src/device/capability-docs.js +19 -73
- package/dist/src/device/capability-docs.js.map +1 -1
- package/dist/src/device/profiles/device-profile.d.ts +1 -1
- package/dist/src/device/profiles/device-profile.d.ts.map +1 -1
- package/dist/src/device/profiles/device-profile.js +4 -4
- package/dist/src/device/profiles/device-profile.js.map +1 -1
- package/dist/src/features/base-feature.d.ts +2 -2
- package/dist/src/features/base-feature.d.ts.map +1 -1
- package/dist/src/features/base-feature.js +2 -3
- package/dist/src/features/base-feature.js.map +1 -1
- package/dist/src/features/feature-manager.d.ts +8 -16
- package/dist/src/features/feature-manager.d.ts.map +1 -1
- package/dist/src/features/feature-manager.js +5 -17
- package/dist/src/features/feature-manager.js.map +1 -1
- package/dist/src/features/modes/dry-operation-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/dry-operation-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/dry-operation-mode.feature.js.map +1 -1
- package/dist/src/features/modes/econo-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/econo-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/econo-mode.feature.js.map +1 -1
- package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/fan-only-operation-mode.feature.js.map +1 -1
- package/dist/src/features/modes/indoor-silent-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/indoor-silent-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/indoor-silent-mode.feature.js.map +1 -1
- package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/outdoor-silent-mode.feature.js.map +1 -1
- package/dist/src/features/modes/powerful-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/powerful-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/powerful-mode.feature.js.map +1 -1
- package/dist/src/features/modes/streamer-mode.feature.d.ts +1 -1
- package/dist/src/features/modes/streamer-mode.feature.d.ts.map +1 -1
- package/dist/src/features/modes/streamer-mode.feature.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/platform.d.ts +11 -8
- package/dist/src/platform.d.ts.map +1 -1
- package/dist/src/platform.js +64 -15
- package/dist/src/platform.js.map +1 -1
- package/dist/src/services/climate-control.service.d.ts +8 -2
- package/dist/src/services/climate-control.service.d.ts.map +1 -1
- package/dist/src/services/climate-control.service.js +59 -58
- package/dist/src/services/climate-control.service.js.map +1 -1
- package/dist/src/services/hot-water-tank.service.d.ts +6 -2
- package/dist/src/services/hot-water-tank.service.d.ts.map +1 -1
- package/dist/src/services/hot-water-tank.service.js +33 -31
- package/dist/src/services/hot-water-tank.service.js.map +1 -1
- package/dist/src/types/daikin-enums.js +12 -12
- package/dist/src/types/daikin-enums.js.map +1 -1
- package/dist/src/types/device-capabilities.d.ts +1 -1
- package/dist/src/types/device-capabilities.d.ts.map +1 -1
- package/dist/src/utils/log-context.d.ts +23 -23
- package/dist/src/utils/log-context.d.ts.map +1 -1
- package/dist/src/utils/log-context.js +28 -28
- package/dist/src/utils/log-context.js.map +1 -1
- package/dist/src/utils/strings.d.ts.map +1 -1
- package/dist/src/utils/strings.js.map +1 -1
- package/dist/src/utils/update-mapper.d.ts +16 -16
- package/dist/src/utils/update-mapper.d.ts.map +1 -1
- package/dist/src/utils/update-mapper.js +14 -14
- package/dist/src/utils/update-mapper.js.map +1 -1
- package/homebridge-ui/public/index.html +2 -2
- package/homebridge-ui/public/script.js +957 -898
- package/homebridge-ui/server.js +746 -678
- package/package.json +29 -27
- package/.claude/settings.json +0 -3
- package/.claude/settings.local.json +0 -29
- package/CHANGELOG.md +0 -103
- package/CLAUDE.md +0 -269
- package/config.md +0 -2
- package/dist/src/api/daikin-device-tracker.d.ts +0 -97
- package/dist/src/api/daikin-device-tracker.d.ts.map +0 -1
- package/dist/src/api/daikin-device-tracker.js +0 -136
- package/dist/src/api/daikin-device-tracker.js.map +0 -1
- package/dist/src/api/http-interceptor.d.ts +0 -99
- package/dist/src/api/http-interceptor.d.ts.map +0 -1
- package/dist/src/api/http-interceptor.js +0 -177
- package/dist/src/api/http-interceptor.js.map +0 -1
- package/dist/src/di/service-container.d.ts +0 -92
- package/dist/src/di/service-container.d.ts.map +0 -1
- package/dist/src/di/service-container.js +0 -156
- package/dist/src/di/service-container.js.map +0 -1
- package/dist/src/features/feature-registry.d.ts +0 -100
- package/dist/src/features/feature-registry.d.ts.map +0 -1
- package/dist/src/features/feature-registry.js +0 -142
- package/dist/src/features/feature-registry.js.map +0 -1
- package/dist/src/services/service-factory.d.ts +0 -46
- package/dist/src/services/service-factory.d.ts.map +0 -1
- package/dist/src/services/service-factory.js +0 -72
- package/dist/src/services/service-factory.js.map +0 -1
- package/dist/src/utils/error-handler.d.ts +0 -101
- package/dist/src/utils/error-handler.d.ts.map +0 -1
- package/dist/src/utils/error-handler.js +0 -251
- package/dist/src/utils/error-handler.js.map +0 -1
- package/dist/src/utils/retry.d.ts +0 -42
- package/dist/src/utils/retry.d.ts.map +0 -1
- package/dist/src/utils/retry.js +0 -70
- package/dist/src/utils/retry.js.map +0 -1
- package/docs/ARCHITECTURE.md +0 -645
- package/docs/IMPLEMENTATION_GUIDE.md +0 -899
- package/docs/IMPROVEMENTS_SUMMARY.md +0 -415
- package/docs/NEXT_STEPS.md +0 -368
- package/docs/Screenshot 2024-07-04 at 18.41.28.png +0 -0
- package/docs/TROUBLESHOOTING.md +0 -475
- package/docs/api-response-for-BRP069A8x.json +0 -520
- package/docs/api-response-for-BRP069C4x-2.json +0 -881
- package/docs/api-response-for-BRP069C4x.json +0 -916
- package/docs/api-response-for-altherma.json +0 -759
- package/docs/api-response-for-altherma2.json +0 -2735
- package/docs/api-response-with-multiple-devices-incl-heatpump.json +0 -2544
- package/docs/cr-insance-altherma-id-0.json +0 -834
- package/docs/mock-air-to-air-dx23.json +0 -759
- package/docs/mock-air-to-air-dx4.json +0 -1134
- package/docs/mock-airpurifier-with-humidifier.json +0 -732
- package/docs/mock-airpurifier.json +0 -450
- package/docs/mock-altherma-air-to-water-lan.json +0 -845
- package/docs/mock-altherma-air-to-water-wlan.json +0 -845
- package/docs/mock-d2cnd-gas-boiler.json +0 -649
- package/docs/setpointmode-vs-controlmode-vs-setpoints-vs-sensorydata.txt +0 -6
- package/images/fan-speed.jpeg +0 -0
- package/images/homekit-controls.jpeg +0 -0
- package/images/homekit-settings.jpeg +0 -0
- package/images/swing-mode.png +0 -0
- package/jest.config.ts +0 -13
- package/test/fixtures/altherma-crSense-2.ts +0 -834
- package/test/fixtures/altherma-fraction.ts +0 -718
- package/test/fixtures/altherma-heat-pump-2.ts +0 -479
- package/test/fixtures/altherma-heat-pump.ts +0 -757
- package/test/fixtures/altherma-miladcerkic-off.ts +0 -524
- package/test/fixtures/altherma-miladcerkic.ts +0 -524
- package/test/fixtures/altherma-v1ckoeln.ts +0 -644
- package/test/fixtures/altherma-with-embedded-id-zero.ts +0 -834
- package/test/fixtures/dx23-airco-2.ts +0 -343
- package/test/fixtures/dx23-airco.ts +0 -518
- package/test/fixtures/dx4-airco.ts +0 -914
- package/test/fixtures/unknown-jan.ts +0 -488
- package/test/fixtures/unknown-kitchen-guests.ts +0 -488
- package/test/helpers/test-isolation.ts +0 -228
- package/test/integration/air-conditioning.test.ts +0 -410
- package/test/integration/altherma.test.ts +0 -289
- package/test/integration/platform.test.ts +0 -118
- package/test/mocks/index.ts +0 -27
- package/test/test-gigya-auth.js +0 -443
- package/test/test-mobile-oauth.js +0 -175
- package/test/test-websocket-mobile.js +0 -123
- package/test/test-websocket.js +0 -116
- package/test/unit/api/__snapshots__/daikinCloud.test.ts.snap +0 -1320
- package/test/unit/api/daikin-api.test.ts +0 -384
- package/test/unit/api/daikin-oauth.test.ts +0 -214
- package/test/unit/api/daikinCloud.test.ts +0 -12
- package/test/unit/config/config-manager.test.ts +0 -271
- package/test/unit/device/daikin-device.test.ts +0 -79
- package/test/unit/services/hot-water-tank.service.test.ts +0 -123
- package/test/unit/utils/error-handler.test.ts +0 -274
- package/test/unit/utils/log-context.test.ts +0 -271
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Error Handler Service
|
|
4
|
-
*
|
|
5
|
-
* Provides centralized error handling, logging, and recovery strategies.
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.createErrorHandler = exports.ErrorHandler = exports.ErrorCategory = exports.ErrorSeverity = void 0;
|
|
9
|
-
var ErrorSeverity;
|
|
10
|
-
(function (ErrorSeverity) {
|
|
11
|
-
ErrorSeverity["INFO"] = "INFO";
|
|
12
|
-
ErrorSeverity["WARNING"] = "WARNING";
|
|
13
|
-
ErrorSeverity["ERROR"] = "ERROR";
|
|
14
|
-
ErrorSeverity["FATAL"] = "FATAL";
|
|
15
|
-
})(ErrorSeverity = exports.ErrorSeverity || (exports.ErrorSeverity = {}));
|
|
16
|
-
var ErrorCategory;
|
|
17
|
-
(function (ErrorCategory) {
|
|
18
|
-
ErrorCategory["AUTHENTICATION"] = "AUTHENTICATION";
|
|
19
|
-
ErrorCategory["NETWORK"] = "NETWORK";
|
|
20
|
-
ErrorCategory["RATE_LIMIT"] = "RATE_LIMIT";
|
|
21
|
-
ErrorCategory["VALIDATION"] = "VALIDATION";
|
|
22
|
-
ErrorCategory["API"] = "API";
|
|
23
|
-
ErrorCategory["DEVICE"] = "DEVICE";
|
|
24
|
-
ErrorCategory["WEBSOCKET"] = "WEBSOCKET";
|
|
25
|
-
ErrorCategory["CONFIGURATION"] = "CONFIGURATION";
|
|
26
|
-
ErrorCategory["UNKNOWN"] = "UNKNOWN";
|
|
27
|
-
})(ErrorCategory = exports.ErrorCategory || (exports.ErrorCategory = {}));
|
|
28
|
-
/**
|
|
29
|
-
* Unified Error Handler
|
|
30
|
-
*/
|
|
31
|
-
class ErrorHandler {
|
|
32
|
-
logger;
|
|
33
|
-
contextPrefix;
|
|
34
|
-
errorHistory = [];
|
|
35
|
-
maxHistorySize = 100;
|
|
36
|
-
constructor(logger, contextPrefix = '') {
|
|
37
|
-
this.logger = logger;
|
|
38
|
-
this.contextPrefix = contextPrefix;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Handle an error with context
|
|
42
|
-
*/
|
|
43
|
-
handle(error, context = {}) {
|
|
44
|
-
const handledError = this.createHandledError(error, context);
|
|
45
|
-
this.logError(handledError);
|
|
46
|
-
this.recordError(handledError);
|
|
47
|
-
return handledError;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Handle an error and return a user-friendly message
|
|
51
|
-
*/
|
|
52
|
-
handleWithMessage(error, context = {}) {
|
|
53
|
-
const handled = this.handle(error, context);
|
|
54
|
-
return this.getUserMessage(handled);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Determine if an error is retryable
|
|
58
|
-
*/
|
|
59
|
-
isRetryable(error) {
|
|
60
|
-
const errorMessage = error.message.toLowerCase();
|
|
61
|
-
// Network errors that are typically retryable
|
|
62
|
-
if (errorMessage.includes('econnreset') ||
|
|
63
|
-
errorMessage.includes('econnrefused') ||
|
|
64
|
-
errorMessage.includes('etimedout') ||
|
|
65
|
-
errorMessage.includes('socket hang up') ||
|
|
66
|
-
errorMessage.includes('network')) {
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
// Gateway errors
|
|
70
|
-
if (errorMessage.includes('bad gateway') ||
|
|
71
|
-
errorMessage.includes('service unavailable') ||
|
|
72
|
-
errorMessage.includes('gateway timeout')) {
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
// Rate limit (retryable after delay)
|
|
76
|
-
if (errorMessage.includes('rate limit')) {
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
return false;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Categorize an error
|
|
83
|
-
*/
|
|
84
|
-
categorize(error) {
|
|
85
|
-
const message = error.message.toLowerCase();
|
|
86
|
-
if (message.includes('unauthorized') || message.includes('token') || message.includes('auth')) {
|
|
87
|
-
return ErrorCategory.AUTHENTICATION;
|
|
88
|
-
}
|
|
89
|
-
if (message.includes('rate limit')) {
|
|
90
|
-
return ErrorCategory.RATE_LIMIT;
|
|
91
|
-
}
|
|
92
|
-
if (message.includes('econnreset') ||
|
|
93
|
-
message.includes('econnrefused') ||
|
|
94
|
-
message.includes('etimedout') ||
|
|
95
|
-
message.includes('network') ||
|
|
96
|
-
message.includes('socket')) {
|
|
97
|
-
return ErrorCategory.NETWORK;
|
|
98
|
-
}
|
|
99
|
-
if (message.includes('websocket') || message.includes('ws:')) {
|
|
100
|
-
return ErrorCategory.WEBSOCKET;
|
|
101
|
-
}
|
|
102
|
-
if (message.includes('validation') || message.includes('invalid')) {
|
|
103
|
-
return ErrorCategory.VALIDATION;
|
|
104
|
-
}
|
|
105
|
-
if (message.includes('device')) {
|
|
106
|
-
return ErrorCategory.DEVICE;
|
|
107
|
-
}
|
|
108
|
-
if (message.includes('config')) {
|
|
109
|
-
return ErrorCategory.CONFIGURATION;
|
|
110
|
-
}
|
|
111
|
-
if (message.includes('api') || message.includes('status')) {
|
|
112
|
-
return ErrorCategory.API;
|
|
113
|
-
}
|
|
114
|
-
return ErrorCategory.UNKNOWN;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Determine error severity
|
|
118
|
-
*/
|
|
119
|
-
determineSeverity(error, category) {
|
|
120
|
-
// Rate limit is a warning, not an error
|
|
121
|
-
if (category === ErrorCategory.RATE_LIMIT) {
|
|
122
|
-
return ErrorSeverity.WARNING;
|
|
123
|
-
}
|
|
124
|
-
// Authentication errors are fatal
|
|
125
|
-
if (category === ErrorCategory.AUTHENTICATION) {
|
|
126
|
-
return ErrorSeverity.FATAL;
|
|
127
|
-
}
|
|
128
|
-
// Configuration errors are fatal
|
|
129
|
-
if (category === ErrorCategory.CONFIGURATION) {
|
|
130
|
-
return ErrorSeverity.FATAL;
|
|
131
|
-
}
|
|
132
|
-
// Network errors are typically warnings (transient)
|
|
133
|
-
if (category === ErrorCategory.NETWORK) {
|
|
134
|
-
return ErrorSeverity.WARNING;
|
|
135
|
-
}
|
|
136
|
-
// Device errors are typically errors
|
|
137
|
-
if (category === ErrorCategory.DEVICE) {
|
|
138
|
-
return ErrorSeverity.ERROR;
|
|
139
|
-
}
|
|
140
|
-
// Default to error
|
|
141
|
-
return ErrorSeverity.ERROR;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get recent errors
|
|
145
|
-
*/
|
|
146
|
-
getRecentErrors(limit = 10) {
|
|
147
|
-
return this.errorHistory.slice(-limit);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Get errors by category
|
|
151
|
-
*/
|
|
152
|
-
getErrorsByCategory(category) {
|
|
153
|
-
return this.errorHistory.filter(e => e.context.category === category);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Clear error history
|
|
157
|
-
*/
|
|
158
|
-
clearHistory() {
|
|
159
|
-
this.errorHistory = [];
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Create a handled error object
|
|
163
|
-
*/
|
|
164
|
-
createHandledError(error, context) {
|
|
165
|
-
const category = context.category ?? this.categorize(error);
|
|
166
|
-
const severity = context.severity ?? this.determineSeverity(error, category);
|
|
167
|
-
const retryable = context.retryable ?? this.isRetryable(error);
|
|
168
|
-
return {
|
|
169
|
-
message: error.message,
|
|
170
|
-
originalError: error,
|
|
171
|
-
context: {
|
|
172
|
-
category,
|
|
173
|
-
severity,
|
|
174
|
-
retryable,
|
|
175
|
-
...context,
|
|
176
|
-
},
|
|
177
|
-
timestamp: new Date(),
|
|
178
|
-
stack: error.stack,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Log an error with appropriate level
|
|
183
|
-
*/
|
|
184
|
-
logError(error) {
|
|
185
|
-
const prefix = this.contextPrefix ? `[${this.contextPrefix}] ` : '';
|
|
186
|
-
const operation = error.context.operation ? ` (${error.context.operation})` : '';
|
|
187
|
-
const deviceId = error.context.deviceId ? ` [${error.context.deviceId}]` : '';
|
|
188
|
-
const message = `${prefix}${error.context.category}${operation}${deviceId}: ${error.message}`;
|
|
189
|
-
switch (error.context.severity) {
|
|
190
|
-
case ErrorSeverity.FATAL:
|
|
191
|
-
this.logger.error(message);
|
|
192
|
-
if (error.stack) {
|
|
193
|
-
this.logger.error(error.stack);
|
|
194
|
-
}
|
|
195
|
-
break;
|
|
196
|
-
case ErrorSeverity.ERROR:
|
|
197
|
-
this.logger.error(message);
|
|
198
|
-
break;
|
|
199
|
-
case ErrorSeverity.WARNING:
|
|
200
|
-
this.logger.warn(message);
|
|
201
|
-
break;
|
|
202
|
-
case ErrorSeverity.INFO:
|
|
203
|
-
this.logger.info(message);
|
|
204
|
-
break;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Record error in history
|
|
209
|
-
*/
|
|
210
|
-
recordError(error) {
|
|
211
|
-
this.errorHistory.push(error);
|
|
212
|
-
// Trim history if needed
|
|
213
|
-
if (this.errorHistory.length > this.maxHistorySize) {
|
|
214
|
-
this.errorHistory = this.errorHistory.slice(-this.maxHistorySize);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Get user-friendly error message
|
|
219
|
-
*/
|
|
220
|
-
getUserMessage(error) {
|
|
221
|
-
switch (error.context.category) {
|
|
222
|
-
case ErrorCategory.AUTHENTICATION:
|
|
223
|
-
return 'Authentication failed. Please check your credentials and re-authenticate.';
|
|
224
|
-
case ErrorCategory.RATE_LIMIT:
|
|
225
|
-
return 'API rate limit exceeded. Please wait before trying again.';
|
|
226
|
-
case ErrorCategory.NETWORK:
|
|
227
|
-
return 'Network connection issue. Will retry automatically.';
|
|
228
|
-
case ErrorCategory.WEBSOCKET:
|
|
229
|
-
return 'WebSocket connection issue. Will attempt to reconnect.';
|
|
230
|
-
case ErrorCategory.DEVICE:
|
|
231
|
-
return `Device error: ${error.message}`;
|
|
232
|
-
case ErrorCategory.CONFIGURATION:
|
|
233
|
-
return `Configuration error: ${error.message}`;
|
|
234
|
-
case ErrorCategory.VALIDATION:
|
|
235
|
-
return `Validation error: ${error.message}`;
|
|
236
|
-
case ErrorCategory.API:
|
|
237
|
-
return `API error: ${error.message}`;
|
|
238
|
-
default:
|
|
239
|
-
return error.message;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
exports.ErrorHandler = ErrorHandler;
|
|
244
|
-
/**
|
|
245
|
-
* Create a scoped error handler
|
|
246
|
-
*/
|
|
247
|
-
function createErrorHandler(logger, context) {
|
|
248
|
-
return new ErrorHandler(logger, context);
|
|
249
|
-
}
|
|
250
|
-
exports.createErrorHandler = createErrorHandler;
|
|
251
|
-
//# sourceMappingURL=error-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Retry Utility
|
|
3
|
-
*
|
|
4
|
-
* Provides retry logic with exponential backoff for failed operations.
|
|
5
|
-
* Used by services and API calls to handle transient failures gracefully.
|
|
6
|
-
*/
|
|
7
|
-
export interface RetryOptions {
|
|
8
|
-
maxRetries?: number;
|
|
9
|
-
initialDelay?: number;
|
|
10
|
-
maxDelay?: number;
|
|
11
|
-
onRetry?: (attempt: number, error: Error) => void;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Retry a function with exponential backoff
|
|
15
|
-
*
|
|
16
|
-
* @param fn - The async function to retry
|
|
17
|
-
* @param options - Retry configuration options
|
|
18
|
-
* @returns Promise that resolves with the function result or rejects after all retries exhausted
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const result = await retryWithBackoff(
|
|
23
|
-
* async () => await apiClient.fetchData(),
|
|
24
|
-
* {
|
|
25
|
-
* maxRetries: 3,
|
|
26
|
-
* initialDelay: 1000,
|
|
27
|
-
* onRetry: (attempt, error) => {
|
|
28
|
-
* console.log(`Retry attempt ${attempt}: ${error.message}`);
|
|
29
|
-
* },
|
|
30
|
-
* },
|
|
31
|
-
* );
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export declare function retryWithBackoff<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
35
|
-
/**
|
|
36
|
-
* Check if an error is retryable
|
|
37
|
-
*
|
|
38
|
-
* @param error - The error to check
|
|
39
|
-
* @returns True if the error should be retried
|
|
40
|
-
*/
|
|
41
|
-
export declare function isRetryableError(error: any): boolean;
|
|
42
|
-
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACpC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GAC3B,OAAO,CAAC,CAAC,CAAC,CA6BZ;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAcpD"}
|
package/dist/src/utils/retry.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Retry Utility
|
|
4
|
-
*
|
|
5
|
-
* Provides retry logic with exponential backoff for failed operations.
|
|
6
|
-
* Used by services and API calls to handle transient failures gracefully.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.isRetryableError = exports.retryWithBackoff = void 0;
|
|
10
|
-
/**
|
|
11
|
-
* Retry a function with exponential backoff
|
|
12
|
-
*
|
|
13
|
-
* @param fn - The async function to retry
|
|
14
|
-
* @param options - Retry configuration options
|
|
15
|
-
* @returns Promise that resolves with the function result or rejects after all retries exhausted
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const result = await retryWithBackoff(
|
|
20
|
-
* async () => await apiClient.fetchData(),
|
|
21
|
-
* {
|
|
22
|
-
* maxRetries: 3,
|
|
23
|
-
* initialDelay: 1000,
|
|
24
|
-
* onRetry: (attempt, error) => {
|
|
25
|
-
* console.log(`Retry attempt ${attempt}: ${error.message}`);
|
|
26
|
-
* },
|
|
27
|
-
* },
|
|
28
|
-
* );
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
async function retryWithBackoff(fn, options = {}) {
|
|
32
|
-
const { maxRetries = 3, initialDelay = 1000, maxDelay = 10000, onRetry, } = options;
|
|
33
|
-
let lastError;
|
|
34
|
-
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
35
|
-
try {
|
|
36
|
-
return await fn();
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
lastError = error;
|
|
40
|
-
if (attempt < maxRetries) {
|
|
41
|
-
const delay = Math.min(initialDelay * Math.pow(2, attempt), maxDelay);
|
|
42
|
-
onRetry?.(attempt + 1, lastError);
|
|
43
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
throw lastError;
|
|
48
|
-
}
|
|
49
|
-
exports.retryWithBackoff = retryWithBackoff;
|
|
50
|
-
/**
|
|
51
|
-
* Check if an error is retryable
|
|
52
|
-
*
|
|
53
|
-
* @param error - The error to check
|
|
54
|
-
* @returns True if the error should be retried
|
|
55
|
-
*/
|
|
56
|
-
function isRetryableError(error) {
|
|
57
|
-
// Network errors
|
|
58
|
-
if (error.code === 'ECONNREFUSED' || error.code === 'ETIMEDOUT' || error.code === 'ENOTFOUND') {
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
// HTTP status codes that are retryable
|
|
62
|
-
if (error.response?.status) {
|
|
63
|
-
const status = error.response.status;
|
|
64
|
-
// 408 Request Timeout, 429 Too Many Requests, 502-504 Gateway errors
|
|
65
|
-
return status === 408 || status === 429 || (status >= 502 && status <= 504);
|
|
66
|
-
}
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
exports.isRetryableError = isRetryableError;
|
|
70
|
-
//# sourceMappingURL=retry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AASH;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,KAAK,UAAU,gBAAgB,CAClC,EAAoB,EACpB,UAAwB,EAAE;IAE1B,MAAM,EACF,UAAU,GAAG,CAAC,EACd,YAAY,GAAG,IAAI,EACnB,QAAQ,GAAG,KAAK,EAChB,OAAO,GACV,GAAG,OAAO,CAAC;IAEZ,IAAI,SAAgB,CAAC;IAErB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE;QACpD,IAAI;YACA,OAAO,MAAM,EAAE,EAAE,CAAC;SACrB;QAAC,OAAO,KAAK,EAAE;YACZ,SAAS,GAAG,KAAc,CAAC;YAE3B,IAAI,OAAO,GAAG,UAAU,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAClB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACnC,QAAQ,CACX,CAAC;gBAEF,OAAO,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;gBAClC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;aAC5D;SACJ;KACJ;IAED,MAAM,SAAU,CAAC;AACrB,CAAC;AAhCD,4CAgCC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,KAAU;IACvC,iBAAiB;IACjB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;QAC3F,OAAO,IAAI,CAAC;KACf;IAED,uCAAuC;IACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrC,qEAAqE;QACrE,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC;KAC/E;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAdD,4CAcC"}
|