@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service-container.js","sourceRoot":"","sources":["../../../src/di/service-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature Registry
|
|
3
|
-
*
|
|
4
|
-
* Implements a plugin/registry pattern for features.
|
|
5
|
-
* Allows features to be registered, discovered, and instantiated dynamically.
|
|
6
|
-
*/
|
|
7
|
-
import { PlatformAccessory } from 'homebridge';
|
|
8
|
-
import { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
|
|
9
|
-
import { BaseFeature } from './base-feature';
|
|
10
|
-
/**
|
|
11
|
-
* Feature metadata for registration
|
|
12
|
-
*/
|
|
13
|
-
export interface FeatureMetadata {
|
|
14
|
-
id: string;
|
|
15
|
-
name: string;
|
|
16
|
-
description: string;
|
|
17
|
-
category: 'mode' | 'sensor' | 'control' | 'other';
|
|
18
|
-
requiresCapability?: string;
|
|
19
|
-
configKey?: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Feature constructor with metadata
|
|
23
|
-
*/
|
|
24
|
-
export interface FeaturePlugin {
|
|
25
|
-
metadata: FeatureMetadata;
|
|
26
|
-
factory: FeatureFactory;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Feature factory function
|
|
30
|
-
*/
|
|
31
|
-
export type FeatureFactory = (platform: DaikinCloudPlatform, accessory: PlatformAccessory<DaikinCloudAccessoryContext>, managementPointId: string) => BaseFeature;
|
|
32
|
-
/**
|
|
33
|
-
* Registry for managing feature plugins
|
|
34
|
-
*/
|
|
35
|
-
export declare class FeatureRegistry {
|
|
36
|
-
private static instance;
|
|
37
|
-
private readonly features;
|
|
38
|
-
private constructor();
|
|
39
|
-
/**
|
|
40
|
-
* Get the singleton instance
|
|
41
|
-
*/
|
|
42
|
-
static getInstance(): FeatureRegistry;
|
|
43
|
-
/**
|
|
44
|
-
* Register a feature plugin
|
|
45
|
-
*/
|
|
46
|
-
register(plugin: FeaturePlugin): void;
|
|
47
|
-
/**
|
|
48
|
-
* Register multiple feature plugins
|
|
49
|
-
*/
|
|
50
|
-
registerBatch(plugins: FeaturePlugin[]): void;
|
|
51
|
-
/**
|
|
52
|
-
* Unregister a feature plugin
|
|
53
|
-
*/
|
|
54
|
-
unregister(id: string): boolean;
|
|
55
|
-
/**
|
|
56
|
-
* Get a registered feature plugin
|
|
57
|
-
*/
|
|
58
|
-
get(id: string): FeaturePlugin | undefined;
|
|
59
|
-
/**
|
|
60
|
-
* Get all registered feature plugins
|
|
61
|
-
*/
|
|
62
|
-
getAll(): FeaturePlugin[];
|
|
63
|
-
/**
|
|
64
|
-
* Get features by category
|
|
65
|
-
*/
|
|
66
|
-
getByCategory(category: FeatureMetadata['category']): FeaturePlugin[];
|
|
67
|
-
/**
|
|
68
|
-
* Get feature IDs
|
|
69
|
-
*/
|
|
70
|
-
getIds(): string[];
|
|
71
|
-
/**
|
|
72
|
-
* Check if a feature is registered
|
|
73
|
-
*/
|
|
74
|
-
has(id: string): boolean;
|
|
75
|
-
/**
|
|
76
|
-
* Get the count of registered features
|
|
77
|
-
*/
|
|
78
|
-
count(): number;
|
|
79
|
-
/**
|
|
80
|
-
* Clear all registered features (useful for testing)
|
|
81
|
-
*/
|
|
82
|
-
clear(): void;
|
|
83
|
-
/**
|
|
84
|
-
* Create feature instances for an accessory
|
|
85
|
-
*/
|
|
86
|
-
createFeatures(platform: DaikinCloudPlatform, accessory: PlatformAccessory<DaikinCloudAccessoryContext>, managementPointId: string, filter?: (plugin: FeaturePlugin) => boolean): BaseFeature[];
|
|
87
|
-
/**
|
|
88
|
-
* Create a feature filter based on config
|
|
89
|
-
*/
|
|
90
|
-
static createConfigFilter(config: Record<string, unknown>): (plugin: FeaturePlugin) => boolean;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Helper function to create a feature plugin
|
|
94
|
-
*/
|
|
95
|
-
export declare function createFeaturePlugin(metadata: FeatureMetadata, FeatureClass: new (platform: DaikinCloudPlatform, accessory: PlatformAccessory<DaikinCloudAccessoryContext>, managementPointId: string) => BaseFeature): FeaturePlugin;
|
|
96
|
-
/**
|
|
97
|
-
* Decorator for registering features
|
|
98
|
-
*/
|
|
99
|
-
export declare function RegisterFeature(metadata: FeatureMetadata): <T extends new (...args: any[]) => BaseFeature>(constructor: T) => T;
|
|
100
|
-
//# sourceMappingURL=feature-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-registry.d.ts","sourceRoot":"","sources":["../../../src/features/feature-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAC,2BAA2B,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CACzB,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,iBAAiB,EAAE,MAAM,KACxB,WAAW,CAAC;AAEjB;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAE7D,OAAO;IAIP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAOrC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI;IAM7C;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI1C;;OAEG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,aAAa,EAAE;IAIrE;;OAEG;IACH,MAAM,IAAI,MAAM,EAAE;IAIlB;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,cAAc,CACV,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,iBAAiB,EAAE,MAAM,EACzB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,GAC5C,WAAW,EAAE;IAQhB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO;CAmBjG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,KACV,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,iBAAiB,EAAE,MAAM,KACxB,WAAW,GACjB,aAAa,CAMf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,4BACZ,GAAG,EAAE,KAAK,WAAW,uBAOjE"}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Feature Registry
|
|
4
|
-
*
|
|
5
|
-
* Implements a plugin/registry pattern for features.
|
|
6
|
-
* Allows features to be registered, discovered, and instantiated dynamically.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.RegisterFeature = exports.createFeaturePlugin = exports.FeatureRegistry = void 0;
|
|
10
|
-
/**
|
|
11
|
-
* Registry for managing feature plugins
|
|
12
|
-
*/
|
|
13
|
-
class FeatureRegistry {
|
|
14
|
-
static instance;
|
|
15
|
-
features = new Map();
|
|
16
|
-
constructor() {
|
|
17
|
-
// Private constructor for singleton
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Get the singleton instance
|
|
21
|
-
*/
|
|
22
|
-
static getInstance() {
|
|
23
|
-
if (!FeatureRegistry.instance) {
|
|
24
|
-
FeatureRegistry.instance = new FeatureRegistry();
|
|
25
|
-
}
|
|
26
|
-
return FeatureRegistry.instance;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Register a feature plugin
|
|
30
|
-
*/
|
|
31
|
-
register(plugin) {
|
|
32
|
-
if (this.features.has(plugin.metadata.id)) {
|
|
33
|
-
throw new Error(`Feature with id '${plugin.metadata.id}' is already registered`);
|
|
34
|
-
}
|
|
35
|
-
this.features.set(plugin.metadata.id, plugin);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Register multiple feature plugins
|
|
39
|
-
*/
|
|
40
|
-
registerBatch(plugins) {
|
|
41
|
-
for (const plugin of plugins) {
|
|
42
|
-
this.register(plugin);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Unregister a feature plugin
|
|
47
|
-
*/
|
|
48
|
-
unregister(id) {
|
|
49
|
-
return this.features.delete(id);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get a registered feature plugin
|
|
53
|
-
*/
|
|
54
|
-
get(id) {
|
|
55
|
-
return this.features.get(id);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Get all registered feature plugins
|
|
59
|
-
*/
|
|
60
|
-
getAll() {
|
|
61
|
-
return Array.from(this.features.values());
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Get features by category
|
|
65
|
-
*/
|
|
66
|
-
getByCategory(category) {
|
|
67
|
-
return this.getAll().filter(f => f.metadata.category === category);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get feature IDs
|
|
71
|
-
*/
|
|
72
|
-
getIds() {
|
|
73
|
-
return Array.from(this.features.keys());
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Check if a feature is registered
|
|
77
|
-
*/
|
|
78
|
-
has(id) {
|
|
79
|
-
return this.features.has(id);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Get the count of registered features
|
|
83
|
-
*/
|
|
84
|
-
count() {
|
|
85
|
-
return this.features.size;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Clear all registered features (useful for testing)
|
|
89
|
-
*/
|
|
90
|
-
clear() {
|
|
91
|
-
this.features.clear();
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Create feature instances for an accessory
|
|
95
|
-
*/
|
|
96
|
-
createFeatures(platform, accessory, managementPointId, filter) {
|
|
97
|
-
const plugins = filter ? this.getAll().filter(filter) : this.getAll();
|
|
98
|
-
return plugins.map(plugin => plugin.factory(platform, accessory, managementPointId));
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Create a feature filter based on config
|
|
102
|
-
*/
|
|
103
|
-
static createConfigFilter(config) {
|
|
104
|
-
return (plugin) => {
|
|
105
|
-
// If no config key specified, always include
|
|
106
|
-
if (!plugin.metadata.configKey) {
|
|
107
|
-
return true;
|
|
108
|
-
}
|
|
109
|
-
// Check if feature is enabled in config
|
|
110
|
-
const configValue = config[plugin.metadata.configKey];
|
|
111
|
-
// If config key exists and is false, exclude
|
|
112
|
-
if (configValue === false) {
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
// Otherwise include
|
|
116
|
-
return true;
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.FeatureRegistry = FeatureRegistry;
|
|
121
|
-
/**
|
|
122
|
-
* Helper function to create a feature plugin
|
|
123
|
-
*/
|
|
124
|
-
function createFeaturePlugin(metadata, FeatureClass) {
|
|
125
|
-
return {
|
|
126
|
-
metadata,
|
|
127
|
-
factory: (platform, accessory, managementPointId) => new FeatureClass(platform, accessory, managementPointId),
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
exports.createFeaturePlugin = createFeaturePlugin;
|
|
131
|
-
/**
|
|
132
|
-
* Decorator for registering features
|
|
133
|
-
*/
|
|
134
|
-
function RegisterFeature(metadata) {
|
|
135
|
-
return function (constructor) {
|
|
136
|
-
const registry = FeatureRegistry.getInstance();
|
|
137
|
-
registry.register(createFeaturePlugin(metadata, constructor));
|
|
138
|
-
return constructor;
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
exports.RegisterFeature = RegisterFeature;
|
|
142
|
-
//# sourceMappingURL=feature-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-registry.js","sourceRoot":"","sources":["../../../src/features/feature-registry.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAmCH;;GAEG;AACH,MAAa,eAAe;IAChB,MAAM,CAAC,QAAQ,CAAkB;IACxB,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE7D;QACI,oCAAoC;IACxC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW;QACd,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;YAC3B,eAAe,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;SACpD;QACD,OAAO,eAAe,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAqB;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,CAAC;SACpF;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAwB;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACzB;IACL,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAAU;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAAqC;QAC/C,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,MAAM;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAAU;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,cAAc,CACV,QAA6B,EAC7B,SAAyD,EACzD,iBAAyB,EACzB,MAA2C;QAE3C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEtE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACxB,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CACzD,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAA+B;QACrD,OAAO,CAAC,MAAqB,EAAE,EAAE;YAC7B,6CAA6C;YAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE;gBAC5B,OAAO,IAAI,CAAC;aACf;YAED,wCAAwC;YACxC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEtD,6CAA6C;YAC7C,IAAI,WAAW,KAAK,KAAK,EAAE;gBACvB,OAAO,KAAK,CAAC;aAChB;YAED,oBAAoB;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;IACN,CAAC;CACJ;AAnID,0CAmIC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAC/B,QAAyB,EACzB,YAIgB;IAEhB,OAAO;QACH,QAAQ;QACR,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAChD,IAAI,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC;KAC/D,CAAC;AACN,CAAC;AAbD,kDAaC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,QAAyB;IACrD,OAAO,UAAyD,WAAc;QAC1E,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAC/C,QAAQ,CAAC,QAAQ,CACb,mBAAmB,CAAC,QAAQ,EAAE,WAAkB,CAAC,CACpD,CAAC;QACF,OAAO,WAAW,CAAC;IACvB,CAAC,CAAC;AACN,CAAC;AARD,0CAQC"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Service Factory
|
|
3
|
-
*
|
|
4
|
-
* Centralizes service instantiation with dependency injection support.
|
|
5
|
-
* Provides a clean way to create services with proper dependencies.
|
|
6
|
-
*/
|
|
7
|
-
import { PlatformAccessory } from 'homebridge';
|
|
8
|
-
import { DaikinCloudAccessoryContext, DaikinCloudPlatform } from '../platform';
|
|
9
|
-
import { ClimateControlService } from './climate-control.service';
|
|
10
|
-
import { HotWaterTankService } from './hot-water-tank.service';
|
|
11
|
-
export type ServiceType = 'climateControl' | 'domesticHotWaterTank';
|
|
12
|
-
export interface ServiceConfig {
|
|
13
|
-
type: ServiceType;
|
|
14
|
-
embeddedId: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Factory for creating platform services
|
|
18
|
-
*/
|
|
19
|
-
export declare class ServiceFactory {
|
|
20
|
-
private readonly platform;
|
|
21
|
-
constructor(platform: DaikinCloudPlatform);
|
|
22
|
-
/**
|
|
23
|
-
* Create a climate control service
|
|
24
|
-
*/
|
|
25
|
-
createClimateControlService(accessory: PlatformAccessory<DaikinCloudAccessoryContext>, embeddedId: string): ClimateControlService;
|
|
26
|
-
/**
|
|
27
|
-
* Create a hot water tank service
|
|
28
|
-
*/
|
|
29
|
-
createHotWaterTankService(accessory: PlatformAccessory<DaikinCloudAccessoryContext>, embeddedId: string): HotWaterTankService;
|
|
30
|
-
/**
|
|
31
|
-
* Create a service by type
|
|
32
|
-
*/
|
|
33
|
-
createService(type: ServiceType, accessory: PlatformAccessory<DaikinCloudAccessoryContext>, embeddedId: string): ClimateControlService | HotWaterTankService | null;
|
|
34
|
-
/**
|
|
35
|
-
* Create multiple services from configs
|
|
36
|
-
*/
|
|
37
|
-
createServices(accessory: PlatformAccessory<DaikinCloudAccessoryContext>, configs: ServiceConfig[]): Array<ClimateControlService | HotWaterTankService>;
|
|
38
|
-
/**
|
|
39
|
-
* Create services from management points
|
|
40
|
-
*/
|
|
41
|
-
createServicesFromManagementPoints(accessory: PlatformAccessory<DaikinCloudAccessoryContext>): {
|
|
42
|
-
climateControl?: ClimateControlService;
|
|
43
|
-
hotWaterTank?: HotWaterTankService;
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=service-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service-factory.d.ts","sourceRoot":"","sources":["../../../src/services/service-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAC,2BAA2B,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,cAAc;IACX,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,mBAAmB;IAE1D;;OAEG;IACH,2BAA2B,CACvB,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,UAAU,EAAE,MAAM,GACnB,qBAAqB;IAIxB;;OAEG;IACH,yBAAyB,CACrB,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,UAAU,EAAE,MAAM,GACnB,mBAAmB;IAItB;;OAEG;IACH,aAAa,CACT,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,UAAU,EAAE,MAAM,GACnB,qBAAqB,GAAG,mBAAmB,GAAG,IAAI;IAYrD;;OAEG;IACH,cAAc,CACV,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,EACzD,OAAO,EAAE,aAAa,EAAE,GACzB,KAAK,CAAC,qBAAqB,GAAG,mBAAmB,CAAC;IAMrD;;OAEG;IACH,kCAAkC,CAC9B,SAAS,EAAE,iBAAiB,CAAC,2BAA2B,CAAC,GAC1D;QACC,cAAc,CAAC,EAAE,qBAAqB,CAAC;QACvC,YAAY,CAAC,EAAE,mBAAmB,CAAC;KACtC;CAkBJ"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Service Factory
|
|
4
|
-
*
|
|
5
|
-
* Centralizes service instantiation with dependency injection support.
|
|
6
|
-
* Provides a clean way to create services with proper dependencies.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.ServiceFactory = void 0;
|
|
10
|
-
const climate_control_service_1 = require("./climate-control.service");
|
|
11
|
-
const hot_water_tank_service_1 = require("./hot-water-tank.service");
|
|
12
|
-
/**
|
|
13
|
-
* Factory for creating platform services
|
|
14
|
-
*/
|
|
15
|
-
class ServiceFactory {
|
|
16
|
-
platform;
|
|
17
|
-
constructor(platform) {
|
|
18
|
-
this.platform = platform;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Create a climate control service
|
|
22
|
-
*/
|
|
23
|
-
createClimateControlService(accessory, embeddedId) {
|
|
24
|
-
return new climate_control_service_1.ClimateControlService(this.platform, accessory, embeddedId);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Create a hot water tank service
|
|
28
|
-
*/
|
|
29
|
-
createHotWaterTankService(accessory, embeddedId) {
|
|
30
|
-
return new hot_water_tank_service_1.HotWaterTankService(this.platform, accessory, embeddedId);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Create a service by type
|
|
34
|
-
*/
|
|
35
|
-
createService(type, accessory, embeddedId) {
|
|
36
|
-
switch (type) {
|
|
37
|
-
case 'climateControl':
|
|
38
|
-
return this.createClimateControlService(accessory, embeddedId);
|
|
39
|
-
case 'domesticHotWaterTank':
|
|
40
|
-
return this.createHotWaterTankService(accessory, embeddedId);
|
|
41
|
-
default:
|
|
42
|
-
this.platform.log.warn(`[ServiceFactory] Unknown service type: ${type}`);
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Create multiple services from configs
|
|
48
|
-
*/
|
|
49
|
-
createServices(accessory, configs) {
|
|
50
|
-
return configs
|
|
51
|
-
.map(config => this.createService(config.type, accessory, config.embeddedId))
|
|
52
|
-
.filter((service) => service !== null);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Create services from management points
|
|
56
|
-
*/
|
|
57
|
-
createServicesFromManagementPoints(accessory) {
|
|
58
|
-
const result = {};
|
|
59
|
-
const managementPoints = accessory.context.device.desc.managementPoints || [];
|
|
60
|
-
for (const mp of managementPoints) {
|
|
61
|
-
if (mp.managementPointType === 'climateControl') {
|
|
62
|
-
result.climateControl = this.createClimateControlService(accessory, mp.embeddedId);
|
|
63
|
-
}
|
|
64
|
-
else if (mp.managementPointType === 'domesticHotWaterTank') {
|
|
65
|
-
result.hotWaterTank = this.createHotWaterTankService(accessory, mp.embeddedId);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return result;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.ServiceFactory = ServiceFactory;
|
|
72
|
-
//# sourceMappingURL=service-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service-factory.js","sourceRoot":"","sources":["../../../src/services/service-factory.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,uEAAgE;AAChE,qEAA6D;AAS7D;;GAEG;AACH,MAAa,cAAc;IACM;IAA7B,YAA6B,QAA6B;QAA7B,aAAQ,GAAR,QAAQ,CAAqB;IAAG,CAAC;IAE9D;;OAEG;IACH,2BAA2B,CACvB,SAAyD,EACzD,UAAkB;QAElB,OAAO,IAAI,+CAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,yBAAyB,CACrB,SAAyD,EACzD,UAAkB;QAElB,OAAO,IAAI,4CAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,aAAa,CACT,IAAiB,EACjB,SAAyD,EACzD,UAAkB;QAElB,QAAQ,IAAI,EAAE;YACV,KAAK,gBAAgB;gBACjB,OAAO,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACnE,KAAK,sBAAsB;gBACvB,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACjE;gBACI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;gBACzE,OAAO,IAAI,CAAC;SACnB;IACL,CAAC;IAED;;OAEG;IACH,cAAc,CACV,SAAyD,EACzD,OAAwB;QAExB,OAAO,OAAO;aACT,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;aAC5E,MAAM,CAAC,CAAC,OAAO,EAA0D,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IACvG,CAAC;IAED;;OAEG;IACH,kCAAkC,CAC9B,SAAyD;QAKzD,MAAM,MAAM,GAGR,EAAE,CAAC;QAEP,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAE9E,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE;YAC/B,IAAI,EAAE,CAAC,mBAAmB,KAAK,gBAAgB,EAAE;gBAC7C,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;aACtF;iBAAM,IAAI,EAAE,CAAC,mBAAmB,KAAK,sBAAsB,EAAE;gBAC1D,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;aAClF;SACJ;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAhFD,wCAgFC"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error Handler Service
|
|
3
|
-
*
|
|
4
|
-
* Provides centralized error handling, logging, and recovery strategies.
|
|
5
|
-
*/
|
|
6
|
-
import { Logger } from 'homebridge';
|
|
7
|
-
export declare enum ErrorSeverity {
|
|
8
|
-
INFO = "INFO",
|
|
9
|
-
WARNING = "WARNING",
|
|
10
|
-
ERROR = "ERROR",
|
|
11
|
-
FATAL = "FATAL"
|
|
12
|
-
}
|
|
13
|
-
export declare enum ErrorCategory {
|
|
14
|
-
AUTHENTICATION = "AUTHENTICATION",
|
|
15
|
-
NETWORK = "NETWORK",
|
|
16
|
-
RATE_LIMIT = "RATE_LIMIT",
|
|
17
|
-
VALIDATION = "VALIDATION",
|
|
18
|
-
API = "API",
|
|
19
|
-
DEVICE = "DEVICE",
|
|
20
|
-
WEBSOCKET = "WEBSOCKET",
|
|
21
|
-
CONFIGURATION = "CONFIGURATION",
|
|
22
|
-
UNKNOWN = "UNKNOWN"
|
|
23
|
-
}
|
|
24
|
-
export interface ErrorContext {
|
|
25
|
-
category: ErrorCategory;
|
|
26
|
-
severity: ErrorSeverity;
|
|
27
|
-
operation?: string;
|
|
28
|
-
deviceId?: string;
|
|
29
|
-
retryable?: boolean;
|
|
30
|
-
metadata?: Record<string, unknown>;
|
|
31
|
-
}
|
|
32
|
-
export interface HandledError {
|
|
33
|
-
message: string;
|
|
34
|
-
originalError: Error;
|
|
35
|
-
context: ErrorContext;
|
|
36
|
-
timestamp: Date;
|
|
37
|
-
stack?: string;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Unified Error Handler
|
|
41
|
-
*/
|
|
42
|
-
export declare class ErrorHandler {
|
|
43
|
-
private readonly logger;
|
|
44
|
-
private readonly contextPrefix;
|
|
45
|
-
private errorHistory;
|
|
46
|
-
private readonly maxHistorySize;
|
|
47
|
-
constructor(logger: Logger, contextPrefix?: string);
|
|
48
|
-
/**
|
|
49
|
-
* Handle an error with context
|
|
50
|
-
*/
|
|
51
|
-
handle(error: Error, context?: Partial<ErrorContext>): HandledError;
|
|
52
|
-
/**
|
|
53
|
-
* Handle an error and return a user-friendly message
|
|
54
|
-
*/
|
|
55
|
-
handleWithMessage(error: Error, context?: Partial<ErrorContext>): string;
|
|
56
|
-
/**
|
|
57
|
-
* Determine if an error is retryable
|
|
58
|
-
*/
|
|
59
|
-
isRetryable(error: Error): boolean;
|
|
60
|
-
/**
|
|
61
|
-
* Categorize an error
|
|
62
|
-
*/
|
|
63
|
-
categorize(error: Error): ErrorCategory;
|
|
64
|
-
/**
|
|
65
|
-
* Determine error severity
|
|
66
|
-
*/
|
|
67
|
-
determineSeverity(error: Error, category: ErrorCategory): ErrorSeverity;
|
|
68
|
-
/**
|
|
69
|
-
* Get recent errors
|
|
70
|
-
*/
|
|
71
|
-
getRecentErrors(limit?: number): HandledError[];
|
|
72
|
-
/**
|
|
73
|
-
* Get errors by category
|
|
74
|
-
*/
|
|
75
|
-
getErrorsByCategory(category: ErrorCategory): HandledError[];
|
|
76
|
-
/**
|
|
77
|
-
* Clear error history
|
|
78
|
-
*/
|
|
79
|
-
clearHistory(): void;
|
|
80
|
-
/**
|
|
81
|
-
* Create a handled error object
|
|
82
|
-
*/
|
|
83
|
-
private createHandledError;
|
|
84
|
-
/**
|
|
85
|
-
* Log an error with appropriate level
|
|
86
|
-
*/
|
|
87
|
-
private logError;
|
|
88
|
-
/**
|
|
89
|
-
* Record error in history
|
|
90
|
-
*/
|
|
91
|
-
private recordError;
|
|
92
|
-
/**
|
|
93
|
-
* Get user-friendly error message
|
|
94
|
-
*/
|
|
95
|
-
private getUserMessage;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Create a scoped error handler
|
|
99
|
-
*/
|
|
100
|
-
export declare function createErrorHandler(logger: Logger, context: string): ErrorHandler;
|
|
101
|
-
//# sourceMappingURL=error-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAElC,oBAAY,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAClB;AAED,oBAAY,aAAa;IACrB,cAAc,mBAAmB;IACjC,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;CACtB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,KAAK,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,YAAY;IAKjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IALlC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;gBAGjB,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAW;IAG/C;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY;IAOvE;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,MAAM;IAK5E;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IA+BlC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa;IA4CvC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,aAAa;IA8BvE;;OAEG;IACH,eAAe,CAAC,KAAK,SAAK,GAAG,YAAY,EAAE;IAI3C;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,EAAE;IAI5D;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAyBhB;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,cAAc;CAsBzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAEhF"}
|