@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.
Files changed (234) hide show
  1. package/LICENSE +39 -1
  2. package/README.md +5 -3
  3. package/dist/src/accessories/air-conditioning-accessory.d.ts +2 -2
  4. package/dist/src/accessories/air-conditioning-accessory.d.ts.map +1 -1
  5. package/dist/src/accessories/air-conditioning-accessory.js.map +1 -1
  6. package/dist/src/accessories/altherma-accessory.d.ts +2 -2
  7. package/dist/src/accessories/altherma-accessory.d.ts.map +1 -1
  8. package/dist/src/accessories/altherma-accessory.js.map +1 -1
  9. package/dist/src/accessories/base-accessory.d.ts +6 -6
  10. package/dist/src/accessories/base-accessory.d.ts.map +1 -1
  11. package/dist/src/accessories/base-accessory.js +15 -15
  12. package/dist/src/accessories/base-accessory.js.map +1 -1
  13. package/dist/src/api/daikin-api.d.ts +26 -26
  14. package/dist/src/api/daikin-api.d.ts.map +1 -1
  15. package/dist/src/api/daikin-api.js +68 -42
  16. package/dist/src/api/daikin-api.js.map +1 -1
  17. package/dist/src/api/daikin-cloud.repository.d.ts.map +1 -1
  18. package/dist/src/api/daikin-cloud.repository.js +22 -14
  19. package/dist/src/api/daikin-cloud.repository.js.map +1 -1
  20. package/dist/src/api/daikin-controller.d.ts +41 -47
  21. package/dist/src/api/daikin-controller.d.ts.map +1 -1
  22. package/dist/src/api/daikin-controller.js +40 -64
  23. package/dist/src/api/daikin-controller.js.map +1 -1
  24. package/dist/src/api/daikin-device.d.ts +36 -31
  25. package/dist/src/api/daikin-device.d.ts.map +1 -1
  26. package/dist/src/api/daikin-device.js +45 -31
  27. package/dist/src/api/daikin-device.js.map +1 -1
  28. package/dist/src/api/daikin-mobile-oauth.d.ts +20 -20
  29. package/dist/src/api/daikin-mobile-oauth.d.ts.map +1 -1
  30. package/dist/src/api/daikin-mobile-oauth.js +49 -44
  31. package/dist/src/api/daikin-mobile-oauth.js.map +1 -1
  32. package/dist/src/api/daikin-oauth.d.ts +32 -32
  33. package/dist/src/api/daikin-oauth.d.ts.map +1 -1
  34. package/dist/src/api/daikin-oauth.js +64 -56
  35. package/dist/src/api/daikin-oauth.js.map +1 -1
  36. package/dist/src/api/daikin-schemas.d.ts +476 -351
  37. package/dist/src/api/daikin-schemas.d.ts.map +1 -1
  38. package/dist/src/api/daikin-schemas.js +11 -42
  39. package/dist/src/api/daikin-schemas.js.map +1 -1
  40. package/dist/src/api/daikin-types.d.ts +5 -1
  41. package/dist/src/api/daikin-types.d.ts.map +1 -1
  42. package/dist/src/api/daikin-types.js.map +1 -1
  43. package/dist/src/api/daikin-websocket.d.ts +31 -32
  44. package/dist/src/api/daikin-websocket.d.ts.map +1 -1
  45. package/dist/src/api/daikin-websocket.js +55 -35
  46. package/dist/src/api/daikin-websocket.js.map +1 -1
  47. package/dist/src/api/index.d.ts +2 -1
  48. package/dist/src/api/index.d.ts.map +1 -1
  49. package/dist/src/api/index.js +3 -1
  50. package/dist/src/api/index.js.map +1 -1
  51. package/dist/src/api/token-storage.d.ts +21 -0
  52. package/dist/src/api/token-storage.d.ts.map +1 -0
  53. package/dist/src/api/token-storage.js +90 -0
  54. package/dist/src/api/token-storage.js.map +1 -0
  55. package/dist/src/config/config-manager.d.ts +33 -33
  56. package/dist/src/config/config-manager.d.ts.map +1 -1
  57. package/dist/src/config/config-manager.js +33 -33
  58. package/dist/src/config/config-manager.js.map +1 -1
  59. package/dist/src/constants/api.constants.d.ts +4 -0
  60. package/dist/src/constants/api.constants.d.ts.map +1 -1
  61. package/dist/src/constants/api.constants.js +5 -1
  62. package/dist/src/constants/api.constants.js.map +1 -1
  63. package/dist/src/constants/device.constants.d.ts +4 -0
  64. package/dist/src/constants/device.constants.d.ts.map +1 -1
  65. package/dist/src/constants/device.constants.js +5 -1
  66. package/dist/src/constants/device.constants.js.map +1 -1
  67. package/dist/src/device/accessory-factory.d.ts +10 -10
  68. package/dist/src/device/accessory-factory.d.ts.map +1 -1
  69. package/dist/src/device/accessory-factory.js +7 -7
  70. package/dist/src/device/accessory-factory.js.map +1 -1
  71. package/dist/src/device/capability-detector.d.ts +8 -8
  72. package/dist/src/device/capability-detector.d.ts.map +1 -1
  73. package/dist/src/device/capability-detector.js +6 -6
  74. package/dist/src/device/capability-detector.js.map +1 -1
  75. package/dist/src/device/capability-docs.d.ts +1 -9
  76. package/dist/src/device/capability-docs.d.ts.map +1 -1
  77. package/dist/src/device/capability-docs.js +19 -73
  78. package/dist/src/device/capability-docs.js.map +1 -1
  79. package/dist/src/device/profiles/device-profile.d.ts +1 -1
  80. package/dist/src/device/profiles/device-profile.d.ts.map +1 -1
  81. package/dist/src/device/profiles/device-profile.js +4 -4
  82. package/dist/src/device/profiles/device-profile.js.map +1 -1
  83. package/dist/src/features/base-feature.d.ts +2 -2
  84. package/dist/src/features/base-feature.d.ts.map +1 -1
  85. package/dist/src/features/base-feature.js +2 -3
  86. package/dist/src/features/base-feature.js.map +1 -1
  87. package/dist/src/features/feature-manager.d.ts +8 -16
  88. package/dist/src/features/feature-manager.d.ts.map +1 -1
  89. package/dist/src/features/feature-manager.js +5 -17
  90. package/dist/src/features/feature-manager.js.map +1 -1
  91. package/dist/src/features/modes/dry-operation-mode.feature.d.ts +1 -1
  92. package/dist/src/features/modes/dry-operation-mode.feature.d.ts.map +1 -1
  93. package/dist/src/features/modes/dry-operation-mode.feature.js.map +1 -1
  94. package/dist/src/features/modes/econo-mode.feature.d.ts +1 -1
  95. package/dist/src/features/modes/econo-mode.feature.d.ts.map +1 -1
  96. package/dist/src/features/modes/econo-mode.feature.js.map +1 -1
  97. package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts +1 -1
  98. package/dist/src/features/modes/fan-only-operation-mode.feature.d.ts.map +1 -1
  99. package/dist/src/features/modes/fan-only-operation-mode.feature.js.map +1 -1
  100. package/dist/src/features/modes/indoor-silent-mode.feature.d.ts +1 -1
  101. package/dist/src/features/modes/indoor-silent-mode.feature.d.ts.map +1 -1
  102. package/dist/src/features/modes/indoor-silent-mode.feature.js.map +1 -1
  103. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts +1 -1
  104. package/dist/src/features/modes/outdoor-silent-mode.feature.d.ts.map +1 -1
  105. package/dist/src/features/modes/outdoor-silent-mode.feature.js.map +1 -1
  106. package/dist/src/features/modes/powerful-mode.feature.d.ts +1 -1
  107. package/dist/src/features/modes/powerful-mode.feature.d.ts.map +1 -1
  108. package/dist/src/features/modes/powerful-mode.feature.js.map +1 -1
  109. package/dist/src/features/modes/streamer-mode.feature.d.ts +1 -1
  110. package/dist/src/features/modes/streamer-mode.feature.d.ts.map +1 -1
  111. package/dist/src/features/modes/streamer-mode.feature.js.map +1 -1
  112. package/dist/src/index.d.ts +1 -1
  113. package/dist/src/index.d.ts.map +1 -1
  114. package/dist/src/index.js.map +1 -1
  115. package/dist/src/platform.d.ts +11 -8
  116. package/dist/src/platform.d.ts.map +1 -1
  117. package/dist/src/platform.js +64 -15
  118. package/dist/src/platform.js.map +1 -1
  119. package/dist/src/services/climate-control.service.d.ts +8 -2
  120. package/dist/src/services/climate-control.service.d.ts.map +1 -1
  121. package/dist/src/services/climate-control.service.js +59 -58
  122. package/dist/src/services/climate-control.service.js.map +1 -1
  123. package/dist/src/services/hot-water-tank.service.d.ts +6 -2
  124. package/dist/src/services/hot-water-tank.service.d.ts.map +1 -1
  125. package/dist/src/services/hot-water-tank.service.js +33 -31
  126. package/dist/src/services/hot-water-tank.service.js.map +1 -1
  127. package/dist/src/types/daikin-enums.js +12 -12
  128. package/dist/src/types/daikin-enums.js.map +1 -1
  129. package/dist/src/types/device-capabilities.d.ts +1 -1
  130. package/dist/src/types/device-capabilities.d.ts.map +1 -1
  131. package/dist/src/utils/log-context.d.ts +23 -23
  132. package/dist/src/utils/log-context.d.ts.map +1 -1
  133. package/dist/src/utils/log-context.js +28 -28
  134. package/dist/src/utils/log-context.js.map +1 -1
  135. package/dist/src/utils/strings.d.ts.map +1 -1
  136. package/dist/src/utils/strings.js.map +1 -1
  137. package/dist/src/utils/update-mapper.d.ts +16 -16
  138. package/dist/src/utils/update-mapper.d.ts.map +1 -1
  139. package/dist/src/utils/update-mapper.js +14 -14
  140. package/dist/src/utils/update-mapper.js.map +1 -1
  141. package/homebridge-ui/public/index.html +2 -2
  142. package/homebridge-ui/public/script.js +957 -898
  143. package/homebridge-ui/server.js +746 -678
  144. package/package.json +29 -27
  145. package/.claude/settings.json +0 -3
  146. package/.claude/settings.local.json +0 -29
  147. package/CHANGELOG.md +0 -103
  148. package/CLAUDE.md +0 -269
  149. package/config.md +0 -2
  150. package/dist/src/api/daikin-device-tracker.d.ts +0 -97
  151. package/dist/src/api/daikin-device-tracker.d.ts.map +0 -1
  152. package/dist/src/api/daikin-device-tracker.js +0 -136
  153. package/dist/src/api/daikin-device-tracker.js.map +0 -1
  154. package/dist/src/api/http-interceptor.d.ts +0 -99
  155. package/dist/src/api/http-interceptor.d.ts.map +0 -1
  156. package/dist/src/api/http-interceptor.js +0 -177
  157. package/dist/src/api/http-interceptor.js.map +0 -1
  158. package/dist/src/di/service-container.d.ts +0 -92
  159. package/dist/src/di/service-container.d.ts.map +0 -1
  160. package/dist/src/di/service-container.js +0 -156
  161. package/dist/src/di/service-container.js.map +0 -1
  162. package/dist/src/features/feature-registry.d.ts +0 -100
  163. package/dist/src/features/feature-registry.d.ts.map +0 -1
  164. package/dist/src/features/feature-registry.js +0 -142
  165. package/dist/src/features/feature-registry.js.map +0 -1
  166. package/dist/src/services/service-factory.d.ts +0 -46
  167. package/dist/src/services/service-factory.d.ts.map +0 -1
  168. package/dist/src/services/service-factory.js +0 -72
  169. package/dist/src/services/service-factory.js.map +0 -1
  170. package/dist/src/utils/error-handler.d.ts +0 -101
  171. package/dist/src/utils/error-handler.d.ts.map +0 -1
  172. package/dist/src/utils/error-handler.js +0 -251
  173. package/dist/src/utils/error-handler.js.map +0 -1
  174. package/dist/src/utils/retry.d.ts +0 -42
  175. package/dist/src/utils/retry.d.ts.map +0 -1
  176. package/dist/src/utils/retry.js +0 -70
  177. package/dist/src/utils/retry.js.map +0 -1
  178. package/docs/ARCHITECTURE.md +0 -645
  179. package/docs/IMPLEMENTATION_GUIDE.md +0 -899
  180. package/docs/IMPROVEMENTS_SUMMARY.md +0 -415
  181. package/docs/NEXT_STEPS.md +0 -368
  182. package/docs/Screenshot 2024-07-04 at 18.41.28.png +0 -0
  183. package/docs/TROUBLESHOOTING.md +0 -475
  184. package/docs/api-response-for-BRP069A8x.json +0 -520
  185. package/docs/api-response-for-BRP069C4x-2.json +0 -881
  186. package/docs/api-response-for-BRP069C4x.json +0 -916
  187. package/docs/api-response-for-altherma.json +0 -759
  188. package/docs/api-response-for-altherma2.json +0 -2735
  189. package/docs/api-response-with-multiple-devices-incl-heatpump.json +0 -2544
  190. package/docs/cr-insance-altherma-id-0.json +0 -834
  191. package/docs/mock-air-to-air-dx23.json +0 -759
  192. package/docs/mock-air-to-air-dx4.json +0 -1134
  193. package/docs/mock-airpurifier-with-humidifier.json +0 -732
  194. package/docs/mock-airpurifier.json +0 -450
  195. package/docs/mock-altherma-air-to-water-lan.json +0 -845
  196. package/docs/mock-altherma-air-to-water-wlan.json +0 -845
  197. package/docs/mock-d2cnd-gas-boiler.json +0 -649
  198. package/docs/setpointmode-vs-controlmode-vs-setpoints-vs-sensorydata.txt +0 -6
  199. package/images/fan-speed.jpeg +0 -0
  200. package/images/homekit-controls.jpeg +0 -0
  201. package/images/homekit-settings.jpeg +0 -0
  202. package/images/swing-mode.png +0 -0
  203. package/jest.config.ts +0 -13
  204. package/test/fixtures/altherma-crSense-2.ts +0 -834
  205. package/test/fixtures/altherma-fraction.ts +0 -718
  206. package/test/fixtures/altherma-heat-pump-2.ts +0 -479
  207. package/test/fixtures/altherma-heat-pump.ts +0 -757
  208. package/test/fixtures/altherma-miladcerkic-off.ts +0 -524
  209. package/test/fixtures/altherma-miladcerkic.ts +0 -524
  210. package/test/fixtures/altherma-v1ckoeln.ts +0 -644
  211. package/test/fixtures/altherma-with-embedded-id-zero.ts +0 -834
  212. package/test/fixtures/dx23-airco-2.ts +0 -343
  213. package/test/fixtures/dx23-airco.ts +0 -518
  214. package/test/fixtures/dx4-airco.ts +0 -914
  215. package/test/fixtures/unknown-jan.ts +0 -488
  216. package/test/fixtures/unknown-kitchen-guests.ts +0 -488
  217. package/test/helpers/test-isolation.ts +0 -228
  218. package/test/integration/air-conditioning.test.ts +0 -410
  219. package/test/integration/altherma.test.ts +0 -289
  220. package/test/integration/platform.test.ts +0 -118
  221. package/test/mocks/index.ts +0 -27
  222. package/test/test-gigya-auth.js +0 -443
  223. package/test/test-mobile-oauth.js +0 -175
  224. package/test/test-websocket-mobile.js +0 -123
  225. package/test/test-websocket.js +0 -116
  226. package/test/unit/api/__snapshots__/daikinCloud.test.ts.snap +0 -1320
  227. package/test/unit/api/daikin-api.test.ts +0 -384
  228. package/test/unit/api/daikin-oauth.test.ts +0 -214
  229. package/test/unit/api/daikinCloud.test.ts +0 -12
  230. package/test/unit/config/config-manager.test.ts +0 -271
  231. package/test/unit/device/daikin-device.test.ts +0 -79
  232. package/test/unit/services/hot-water-tank.service.test.ts +0 -123
  233. package/test/unit/utils/error-handler.test.ts +0 -274
  234. 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"}