homebridge 2.0.0-beta.35 → 2.0.0-beta.37

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 (280) hide show
  1. package/dist/api.d.ts +74 -32
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +48 -46
  4. package/dist/api.js.map +1 -1
  5. package/dist/api.spec.d.ts +2 -0
  6. package/dist/api.spec.d.ts.map +1 -0
  7. package/dist/api.spec.js +413 -0
  8. package/dist/api.spec.js.map +1 -0
  9. package/dist/childBridgeFork.d.ts +1 -18
  10. package/dist/childBridgeFork.d.ts.map +1 -1
  11. package/dist/childBridgeFork.js +21 -258
  12. package/dist/childBridgeFork.js.map +1 -1
  13. package/dist/index.d.ts +10 -10
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/logger.spec.d.ts +2 -0
  18. package/dist/logger.spec.d.ts.map +1 -0
  19. package/dist/logger.spec.js +95 -0
  20. package/dist/logger.spec.js.map +1 -0
  21. package/dist/matter/ChildBridgeMatterManager.d.ts +96 -0
  22. package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
  23. package/dist/matter/ChildBridgeMatterManager.js +397 -0
  24. package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
  25. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +48 -0
  26. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
  27. package/dist/matter/ExternalMatterAccessoryPublisher.js +73 -0
  28. package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
  29. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +2 -0
  30. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +1 -0
  31. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +293 -0
  32. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +1 -0
  33. package/dist/matter/{matterServer.d.ts → MatterAPIImpl.d.ts} +203 -367
  34. package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
  35. package/dist/matter/MatterAPIImpl.js +305 -0
  36. package/dist/matter/MatterAPIImpl.js.map +1 -0
  37. package/dist/matter/MatterBridgeManager.d.ts +91 -0
  38. package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
  39. package/dist/matter/MatterBridgeManager.js +426 -0
  40. package/dist/matter/MatterBridgeManager.js.map +1 -0
  41. package/dist/matter/MatterConfigCollector.d.ts +26 -0
  42. package/dist/matter/MatterConfigCollector.d.ts.map +1 -0
  43. package/dist/matter/MatterConfigCollector.js +78 -0
  44. package/dist/matter/MatterConfigCollector.js.map +1 -0
  45. package/dist/matter/{matterAccessoryCache.d.ts → accessoryCache.d.ts} +12 -3
  46. package/dist/matter/accessoryCache.d.ts.map +1 -0
  47. package/dist/matter/{matterAccessoryCache.js → accessoryCache.js} +32 -10
  48. package/dist/matter/accessoryCache.js.map +1 -0
  49. package/dist/matter/accessoryCache.spec.d.ts +2 -0
  50. package/dist/matter/accessoryCache.spec.d.ts.map +1 -0
  51. package/dist/matter/accessoryCache.spec.js +452 -0
  52. package/dist/matter/accessoryCache.spec.js.map +1 -0
  53. package/dist/matter/behaviors/BehaviorRegistry.d.ts +65 -0
  54. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
  55. package/dist/matter/behaviors/BehaviorRegistry.js +139 -0
  56. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
  57. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +2 -0
  58. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +1 -0
  59. package/dist/matter/behaviors/BehaviorRegistry.spec.js +307 -0
  60. package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +1 -0
  61. package/dist/matter/behaviors/ColorControlBehavior.d.ts +64 -0
  62. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
  63. package/dist/matter/behaviors/ColorControlBehavior.js +160 -0
  64. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
  65. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +2 -0
  66. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +1 -0
  67. package/dist/matter/behaviors/ColorControlBehavior.spec.js +29 -0
  68. package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +1 -0
  69. package/dist/matter/behaviors/DoorLockBehavior.d.ts +21 -0
  70. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
  71. package/dist/matter/behaviors/DoorLockBehavior.js +49 -0
  72. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
  73. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +2 -0
  74. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +1 -0
  75. package/dist/matter/behaviors/DoorLockBehavior.spec.js +108 -0
  76. package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +1 -0
  77. package/dist/matter/behaviors/FanControlBehavior.d.ts +20 -0
  78. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
  79. package/dist/matter/behaviors/FanControlBehavior.js +45 -0
  80. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
  81. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +2 -0
  82. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +1 -0
  83. package/dist/matter/behaviors/FanControlBehavior.spec.js +23 -0
  84. package/dist/matter/behaviors/FanControlBehavior.spec.js.map +1 -0
  85. package/dist/matter/behaviors/IdentifyBehavior.d.ts +21 -0
  86. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
  87. package/dist/matter/behaviors/IdentifyBehavior.js +27 -0
  88. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
  89. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +2 -0
  90. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +1 -0
  91. package/dist/matter/behaviors/IdentifyBehavior.spec.js +64 -0
  92. package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +1 -0
  93. package/dist/matter/behaviors/LevelControlBehavior.d.ts +34 -0
  94. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
  95. package/dist/matter/behaviors/LevelControlBehavior.js +75 -0
  96. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
  97. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +2 -0
  98. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +1 -0
  99. package/dist/matter/behaviors/LevelControlBehavior.spec.js +140 -0
  100. package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +1 -0
  101. package/dist/matter/behaviors/OnOffBehavior.d.ts +28 -0
  102. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
  103. package/dist/matter/behaviors/OnOffBehavior.js +63 -0
  104. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
  105. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +2 -0
  106. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +1 -0
  107. package/dist/matter/behaviors/OnOffBehavior.spec.js +116 -0
  108. package/dist/matter/behaviors/OnOffBehavior.spec.js.map +1 -0
  109. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +19 -0
  110. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
  111. package/dist/matter/behaviors/RvcCleanModeBehavior.js +27 -0
  112. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
  113. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +2 -0
  114. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +1 -0
  115. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +56 -0
  116. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +1 -0
  117. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +23 -0
  118. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
  119. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +49 -0
  120. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
  121. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +2 -0
  122. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +1 -0
  123. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +55 -0
  124. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +1 -0
  125. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +19 -0
  126. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
  127. package/dist/matter/behaviors/RvcRunModeBehavior.js +27 -0
  128. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
  129. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +2 -0
  130. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +1 -0
  131. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +56 -0
  132. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +1 -0
  133. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +22 -0
  134. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
  135. package/dist/matter/behaviors/ServiceAreaBehavior.js +35 -0
  136. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
  137. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +2 -0
  138. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +1 -0
  139. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +52 -0
  140. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +1 -0
  141. package/dist/matter/behaviors/ThermostatBehavior.d.ts +23 -0
  142. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
  143. package/dist/matter/behaviors/ThermostatBehavior.js +79 -0
  144. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
  145. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +2 -0
  146. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +1 -0
  147. package/dist/matter/behaviors/ThermostatBehavior.spec.js +23 -0
  148. package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +1 -0
  149. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +32 -0
  150. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
  151. package/dist/matter/behaviors/WindowCoveringBehavior.js +106 -0
  152. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
  153. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +2 -0
  154. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +1 -0
  155. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +27 -0
  156. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +1 -0
  157. package/dist/matter/behaviors/index.d.ts +20 -0
  158. package/dist/matter/behaviors/index.d.ts.map +1 -0
  159. package/dist/matter/behaviors/index.js +21 -0
  160. package/dist/matter/behaviors/index.js.map +1 -0
  161. package/dist/matter/{matterConfigValidator.d.ts → configValidator.d.ts} +1 -1
  162. package/dist/matter/configValidator.d.ts.map +1 -0
  163. package/dist/matter/{matterConfigValidator.js → configValidator.js} +1 -1
  164. package/dist/matter/configValidator.js.map +1 -0
  165. package/dist/matter/configValidator.spec.d.ts +2 -0
  166. package/dist/matter/configValidator.spec.d.ts.map +1 -0
  167. package/dist/matter/configValidator.spec.js +390 -0
  168. package/dist/matter/configValidator.spec.js.map +1 -0
  169. package/dist/matter/errorHandler.d.ts +33 -0
  170. package/dist/matter/errorHandler.d.ts.map +1 -0
  171. package/dist/matter/errorHandler.js +113 -0
  172. package/dist/matter/errorHandler.js.map +1 -0
  173. package/dist/matter/errorHandler.spec.d.ts +2 -0
  174. package/dist/matter/errorHandler.spec.d.ts.map +1 -0
  175. package/dist/matter/errorHandler.spec.js +159 -0
  176. package/dist/matter/errorHandler.spec.js.map +1 -0
  177. package/dist/matter/index.d.ts +7 -4
  178. package/dist/matter/index.d.ts.map +1 -1
  179. package/dist/matter/index.js +7 -4
  180. package/dist/matter/index.js.map +1 -1
  181. package/dist/matter/{matterLogFormatter.d.ts → logFormatter.d.ts} +1 -1
  182. package/dist/matter/logFormatter.d.ts.map +1 -0
  183. package/dist/matter/{matterLogFormatter.js → logFormatter.js} +33 -19
  184. package/dist/matter/logFormatter.js.map +1 -0
  185. package/dist/matter/logFormatter.spec.d.ts +2 -0
  186. package/dist/matter/logFormatter.spec.d.ts.map +1 -0
  187. package/dist/matter/logFormatter.spec.js +252 -0
  188. package/dist/matter/logFormatter.spec.js.map +1 -0
  189. package/dist/matter/server.d.ts +343 -0
  190. package/dist/matter/server.d.ts.map +1 -0
  191. package/dist/matter/{matterServer.js → server.js} +549 -365
  192. package/dist/matter/server.js.map +1 -0
  193. package/dist/matter/{matterServerHelpers.d.ts → serverHelpers.d.ts} +2 -2
  194. package/dist/matter/serverHelpers.d.ts.map +1 -0
  195. package/dist/matter/{matterServerHelpers.js → serverHelpers.js} +11 -8
  196. package/dist/matter/serverHelpers.js.map +1 -0
  197. package/dist/matter/serverHelpers.spec.d.ts +2 -0
  198. package/dist/matter/serverHelpers.spec.d.ts.map +1 -0
  199. package/dist/matter/serverHelpers.spec.js +521 -0
  200. package/dist/matter/serverHelpers.spec.js.map +1 -0
  201. package/dist/matter/{matterSharedTypes.d.ts → sharedTypes.d.ts} +4 -10
  202. package/dist/matter/sharedTypes.d.ts.map +1 -0
  203. package/dist/matter/{matterSharedTypes.js → sharedTypes.js} +4 -10
  204. package/dist/matter/sharedTypes.js.map +1 -0
  205. package/dist/matter/{matterStorage.d.ts → storage.d.ts} +9 -2
  206. package/dist/matter/storage.d.ts.map +1 -0
  207. package/dist/matter/{matterStorage.js → storage.js} +14 -5
  208. package/dist/matter/{matterStorage.js.map → storage.js.map} +1 -1
  209. package/dist/matter/storage.spec.d.ts +2 -0
  210. package/dist/matter/storage.spec.d.ts.map +1 -0
  211. package/dist/matter/storage.spec.js +570 -0
  212. package/dist/matter/storage.spec.js.map +1 -0
  213. package/dist/matter/typeHelpers.d.ts +45 -0
  214. package/dist/matter/typeHelpers.d.ts.map +1 -0
  215. package/dist/matter/typeHelpers.js +57 -0
  216. package/dist/matter/typeHelpers.js.map +1 -0
  217. package/dist/matter/typeHelpers.spec.d.ts +2 -0
  218. package/dist/matter/typeHelpers.spec.d.ts.map +1 -0
  219. package/dist/matter/typeHelpers.spec.js +127 -0
  220. package/dist/matter/typeHelpers.spec.js.map +1 -0
  221. package/dist/matter/{matterTypes.d.ts → types.d.ts} +2 -2
  222. package/dist/matter/types.d.ts.map +1 -0
  223. package/dist/matter/{matterTypes.js → types.js} +1 -2
  224. package/dist/matter/types.js.map +1 -0
  225. package/dist/platformAccessory.spec.d.ts +2 -0
  226. package/dist/platformAccessory.spec.d.ts.map +1 -0
  227. package/dist/platformAccessory.spec.js +126 -0
  228. package/dist/platformAccessory.spec.js.map +1 -0
  229. package/dist/pluginManager.spec.d.ts +2 -0
  230. package/dist/pluginManager.spec.d.ts.map +1 -0
  231. package/dist/pluginManager.spec.js +43 -0
  232. package/dist/pluginManager.spec.js.map +1 -0
  233. package/dist/server.d.ts +4 -13
  234. package/dist/server.d.ts.map +1 -1
  235. package/dist/server.js +43 -346
  236. package/dist/server.js.map +1 -1
  237. package/dist/server.spec.d.ts +2 -0
  238. package/dist/server.spec.d.ts.map +1 -0
  239. package/dist/server.spec.js +57 -0
  240. package/dist/server.spec.js.map +1 -0
  241. package/dist/user.spec.d.ts +2 -0
  242. package/dist/user.spec.d.ts.map +1 -0
  243. package/dist/user.spec.js +31 -0
  244. package/dist/user.spec.js.map +1 -0
  245. package/dist/util/mac.spec.d.ts +2 -0
  246. package/dist/util/mac.spec.d.ts.map +1 -0
  247. package/dist/util/mac.spec.js +36 -0
  248. package/dist/util/mac.spec.js.map +1 -0
  249. package/dist/version.spec.d.ts +2 -0
  250. package/dist/version.spec.d.ts.map +1 -0
  251. package/dist/version.spec.js +20 -0
  252. package/dist/version.spec.js.map +1 -0
  253. package/package.json +4 -4
  254. package/dist/matter/matterAccessoryCache.d.ts.map +0 -1
  255. package/dist/matter/matterAccessoryCache.js.map +0 -1
  256. package/dist/matter/matterBehaviors.d.ts +0 -194
  257. package/dist/matter/matterBehaviors.d.ts.map +0 -1
  258. package/dist/matter/matterBehaviors.js +0 -665
  259. package/dist/matter/matterBehaviors.js.map +0 -1
  260. package/dist/matter/matterConfigValidator.d.ts.map +0 -1
  261. package/dist/matter/matterConfigValidator.js.map +0 -1
  262. package/dist/matter/matterErrorHandler.d.ts +0 -106
  263. package/dist/matter/matterErrorHandler.d.ts.map +0 -1
  264. package/dist/matter/matterErrorHandler.js +0 -495
  265. package/dist/matter/matterErrorHandler.js.map +0 -1
  266. package/dist/matter/matterLogFormatter.d.ts.map +0 -1
  267. package/dist/matter/matterLogFormatter.js.map +0 -1
  268. package/dist/matter/matterNetworkMonitor.d.ts +0 -68
  269. package/dist/matter/matterNetworkMonitor.d.ts.map +0 -1
  270. package/dist/matter/matterNetworkMonitor.js +0 -249
  271. package/dist/matter/matterNetworkMonitor.js.map +0 -1
  272. package/dist/matter/matterServer.d.ts.map +0 -1
  273. package/dist/matter/matterServer.js.map +0 -1
  274. package/dist/matter/matterServerHelpers.d.ts.map +0 -1
  275. package/dist/matter/matterServerHelpers.js.map +0 -1
  276. package/dist/matter/matterSharedTypes.d.ts.map +0 -1
  277. package/dist/matter/matterSharedTypes.js.map +0 -1
  278. package/dist/matter/matterStorage.d.ts.map +0 -1
  279. package/dist/matter/matterTypes.d.ts.map +0 -1
  280. package/dist/matter/matterTypes.js.map +0 -1
@@ -0,0 +1,521 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { applyFeaturesToBehavior, applyWindowCoveringFeatures, CLUSTER_IDS, detectBehaviorFeatures, detectServiceAreaFeatures, detectWindowCoveringFeatures, determineColorControlFeaturesFromHandlers, extractColorControlFeatures, extractThermostatFeatures, getBehaviorMap, validateAccessoryRequiredFields, } from './serverHelpers.js';
3
+ import { MatterDeviceError } from './types.js';
4
+ describe('serverHelpers', () => {
5
+ describe('cLUSTER_IDS', () => {
6
+ it('should export cluster ID constants', () => {
7
+ expect(CLUSTER_IDS.COLOR_CONTROL).toBeDefined();
8
+ expect(CLUSTER_IDS.THERMOSTAT).toBeDefined();
9
+ expect(CLUSTER_IDS.WINDOW_COVERING).toBeDefined();
10
+ expect(CLUSTER_IDS.DOOR_LOCK).toBeDefined();
11
+ expect(CLUSTER_IDS.ON_OFF).toBeDefined();
12
+ expect(CLUSTER_IDS.LEVEL_CONTROL).toBeDefined();
13
+ });
14
+ });
15
+ describe('validateAccessoryRequiredFields', () => {
16
+ it('should pass validation for valid accessory', () => {
17
+ const validAccessory = {
18
+ deviceType: { name: 'OnOffLight' },
19
+ uuid: 'test-uuid',
20
+ displayName: 'Test Light',
21
+ serialNumber: 'ABC123',
22
+ manufacturer: 'Homebridge',
23
+ model: 'v1.0',
24
+ clusters: {
25
+ onOff: { onOff: false },
26
+ },
27
+ };
28
+ expect(() => validateAccessoryRequiredFields(validAccessory)).not.toThrow();
29
+ });
30
+ it('should throw error when deviceType is missing', () => {
31
+ const accessory = {
32
+ uuid: 'test-uuid',
33
+ displayName: 'Test Light',
34
+ };
35
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(MatterDeviceError);
36
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/deviceType/);
37
+ });
38
+ it('should throw error when uuid is missing', () => {
39
+ const accessory = {
40
+ deviceType: { name: 'OnOffLight' },
41
+ displayName: 'Test Light',
42
+ };
43
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(MatterDeviceError);
44
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/uuid/);
45
+ });
46
+ it('should throw error when displayName is missing', () => {
47
+ const accessory = {
48
+ deviceType: { name: 'OnOffLight' },
49
+ uuid: 'test-uuid',
50
+ };
51
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(MatterDeviceError);
52
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/displayName/);
53
+ });
54
+ it('should throw error when serialNumber is missing', () => {
55
+ const accessory = {
56
+ deviceType: { name: 'OnOffLight' },
57
+ uuid: 'test-uuid',
58
+ displayName: 'Test Light',
59
+ };
60
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(MatterDeviceError);
61
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/serialNumber/);
62
+ });
63
+ it('should throw error when manufacturer is missing', () => {
64
+ const accessory = {
65
+ deviceType: { name: 'OnOffLight' },
66
+ uuid: 'test-uuid',
67
+ displayName: 'Test Light',
68
+ serialNumber: 'ABC123',
69
+ };
70
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(MatterDeviceError);
71
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/manufacturer/);
72
+ });
73
+ it('should throw error when model is missing', () => {
74
+ const accessory = {
75
+ deviceType: { name: 'OnOffLight' },
76
+ uuid: 'test-uuid',
77
+ displayName: 'Test Light',
78
+ serialNumber: 'ABC123',
79
+ manufacturer: 'Homebridge',
80
+ };
81
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(MatterDeviceError);
82
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/model/);
83
+ });
84
+ it('should throw error when clusters is missing for non-composed devices', () => {
85
+ const accessory = {
86
+ deviceType: { name: 'OnOffLight' },
87
+ uuid: 'test-uuid',
88
+ displayName: 'Test Light',
89
+ serialNumber: 'ABC123',
90
+ manufacturer: 'Homebridge',
91
+ model: 'v1.0',
92
+ };
93
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(MatterDeviceError);
94
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/clusters/);
95
+ });
96
+ it('should allow missing clusters when parts are provided', () => {
97
+ const accessory = {
98
+ deviceType: { name: 'ComposedDevice' },
99
+ uuid: 'test-uuid',
100
+ displayName: 'Test Device',
101
+ serialNumber: 'ABC123',
102
+ manufacturer: 'Homebridge',
103
+ model: 'v1.0',
104
+ parts: [
105
+ {
106
+ id: 'part1',
107
+ deviceType: { name: 'OnOffLight' },
108
+ clusters: { onOff: { onOff: false } },
109
+ },
110
+ ],
111
+ };
112
+ expect(() => validateAccessoryRequiredFields(accessory)).not.toThrow();
113
+ });
114
+ it('should throw error when part is missing id', () => {
115
+ const accessory = {
116
+ deviceType: { name: 'ComposedDevice' },
117
+ uuid: 'test-uuid',
118
+ displayName: 'Test Device',
119
+ serialNumber: 'ABC123',
120
+ manufacturer: 'Homebridge',
121
+ model: 'v1.0',
122
+ parts: [
123
+ {
124
+ deviceType: { name: 'OnOffLight' },
125
+ clusters: { onOff: { onOff: false } },
126
+ },
127
+ ],
128
+ };
129
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/part missing required field 'id'/);
130
+ });
131
+ it('should throw error when part is missing deviceType', () => {
132
+ const accessory = {
133
+ deviceType: { name: 'ComposedDevice' },
134
+ uuid: 'test-uuid',
135
+ displayName: 'Test Device',
136
+ serialNumber: 'ABC123',
137
+ manufacturer: 'Homebridge',
138
+ model: 'v1.0',
139
+ parts: [
140
+ {
141
+ id: 'part1',
142
+ clusters: { onOff: { onOff: false } },
143
+ },
144
+ ],
145
+ };
146
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/part "part1" is missing required field 'deviceType'/);
147
+ });
148
+ it('should throw error when part is missing clusters', () => {
149
+ const accessory = {
150
+ deviceType: { name: 'ComposedDevice' },
151
+ uuid: 'test-uuid',
152
+ displayName: 'Test Device',
153
+ serialNumber: 'ABC123',
154
+ manufacturer: 'Homebridge',
155
+ model: 'v1.0',
156
+ parts: [
157
+ {
158
+ id: 'part1',
159
+ deviceType: { name: 'OnOffLight' },
160
+ },
161
+ ],
162
+ };
163
+ expect(() => validateAccessoryRequiredFields(accessory)).toThrow(/part "part1" is missing or has invalid 'clusters' field/);
164
+ });
165
+ });
166
+ describe('extractColorControlFeatures', () => {
167
+ it('should extract HueSaturation feature', () => {
168
+ const features = extractColorControlFeatures({ hueSaturation: true });
169
+ expect(features).toContain('HueSaturation');
170
+ });
171
+ it('should extract Xy feature', () => {
172
+ const features = extractColorControlFeatures({ xy: true });
173
+ expect(features).toContain('Xy');
174
+ });
175
+ it('should extract ColorTemperature feature', () => {
176
+ const features = extractColorControlFeatures({ colorTemperature: true });
177
+ expect(features).toContain('ColorTemperature');
178
+ });
179
+ it('should extract multiple features', () => {
180
+ const features = extractColorControlFeatures({
181
+ hueSaturation: true,
182
+ xy: true,
183
+ colorTemperature: true,
184
+ });
185
+ expect(features).toEqual(['HueSaturation', 'Xy', 'ColorTemperature']);
186
+ });
187
+ it('should return empty array when no features are enabled', () => {
188
+ const features = extractColorControlFeatures({});
189
+ expect(features).toEqual([]);
190
+ });
191
+ });
192
+ describe('extractThermostatFeatures', () => {
193
+ it('should extract Heating feature', () => {
194
+ const features = extractThermostatFeatures({ heating: true });
195
+ expect(features).toContain('Heating');
196
+ });
197
+ it('should extract Cooling feature', () => {
198
+ const features = extractThermostatFeatures({ cooling: true });
199
+ expect(features).toContain('Cooling');
200
+ });
201
+ it('should extract Occupancy feature', () => {
202
+ const features = extractThermostatFeatures({ occupancy: true });
203
+ expect(features).toContain('Occupancy');
204
+ });
205
+ it('should extract AutoMode feature', () => {
206
+ const features = extractThermostatFeatures({ autoMode: true });
207
+ expect(features).toContain('AutoMode');
208
+ });
209
+ it('should extract multiple features', () => {
210
+ const features = extractThermostatFeatures({
211
+ heating: true,
212
+ cooling: true,
213
+ occupancy: true,
214
+ autoMode: true,
215
+ });
216
+ expect(features).toEqual(['Heating', 'Cooling', 'Occupancy', 'AutoMode']);
217
+ });
218
+ it('should return empty array when no features are enabled', () => {
219
+ const features = extractThermostatFeatures({});
220
+ expect(features).toEqual([]);
221
+ });
222
+ });
223
+ describe('determineColorControlFeaturesFromHandlers', () => {
224
+ it('should detect HueSaturation from handler method', () => {
225
+ const handlers = {
226
+ moveToHueAndSaturationLogic: () => { },
227
+ };
228
+ const features = determineColorControlFeaturesFromHandlers(handlers);
229
+ expect(features).toContain('HueSaturation');
230
+ });
231
+ it('should detect Xy from handler method', () => {
232
+ const handlers = {
233
+ moveToColorLogic: () => { },
234
+ };
235
+ const features = determineColorControlFeaturesFromHandlers(handlers);
236
+ expect(features).toContain('Xy');
237
+ });
238
+ it('should detect ColorTemperature from handler method', () => {
239
+ const handlers = {
240
+ moveToColorTemperatureLogic: () => { },
241
+ };
242
+ const features = determineColorControlFeaturesFromHandlers(handlers);
243
+ expect(features).toContain('ColorTemperature');
244
+ });
245
+ it('should detect multiple features from multiple handlers', () => {
246
+ const handlers = {
247
+ moveToHueAndSaturationLogic: () => { },
248
+ moveToColorLogic: () => { },
249
+ moveToColorTemperatureLogic: () => { },
250
+ };
251
+ const features = determineColorControlFeaturesFromHandlers(handlers);
252
+ expect(features).toEqual(['HueSaturation', 'Xy', 'ColorTemperature']);
253
+ });
254
+ it('should return empty array when no relevant handlers exist', () => {
255
+ const handlers = {
256
+ someOtherHandler: () => { },
257
+ };
258
+ const features = determineColorControlFeaturesFromHandlers(handlers);
259
+ expect(features).toEqual([]);
260
+ });
261
+ });
262
+ describe('detectWindowCoveringFeatures', () => {
263
+ it('should detect Lift capability from target attributes', () => {
264
+ const accessory = {
265
+ displayName: 'Test Blind',
266
+ clusters: {
267
+ windowCovering: {
268
+ targetPositionLiftPercent100ths: 0,
269
+ },
270
+ },
271
+ };
272
+ const features = detectWindowCoveringFeatures(accessory);
273
+ expect(features).toContain('Lift');
274
+ });
275
+ it('should detect Lift capability from current attributes', () => {
276
+ const accessory = {
277
+ displayName: 'Test Blind',
278
+ clusters: {
279
+ windowCovering: {
280
+ currentPositionLiftPercent100ths: 0,
281
+ },
282
+ },
283
+ };
284
+ const features = detectWindowCoveringFeatures(accessory);
285
+ expect(features).toContain('Lift');
286
+ });
287
+ it('should detect PositionAwareLift from configStatus', () => {
288
+ const accessory = {
289
+ displayName: 'Test Blind',
290
+ clusters: {
291
+ windowCovering: {
292
+ targetPositionLiftPercent100ths: 0,
293
+ configStatus: {
294
+ liftPositionAware: true,
295
+ },
296
+ },
297
+ },
298
+ };
299
+ const features = detectWindowCoveringFeatures(accessory);
300
+ expect(features).toContain('Lift');
301
+ expect(features).toContain('PositionAwareLift');
302
+ });
303
+ it('should detect Tilt capability', () => {
304
+ const accessory = {
305
+ displayName: 'Test Blind',
306
+ clusters: {
307
+ windowCovering: {
308
+ targetPositionTiltPercent100ths: 0,
309
+ },
310
+ },
311
+ };
312
+ const features = detectWindowCoveringFeatures(accessory);
313
+ expect(features).toContain('Tilt');
314
+ });
315
+ it('should detect PositionAwareTilt from configStatus', () => {
316
+ const accessory = {
317
+ displayName: 'Test Blind',
318
+ clusters: {
319
+ windowCovering: {
320
+ targetPositionTiltPercent100ths: 0,
321
+ configStatus: {
322
+ tiltPositionAware: true,
323
+ },
324
+ },
325
+ },
326
+ };
327
+ const features = detectWindowCoveringFeatures(accessory);
328
+ expect(features).toContain('Tilt');
329
+ expect(features).toContain('PositionAwareTilt');
330
+ });
331
+ it('should detect both Lift and Tilt features', () => {
332
+ const accessory = {
333
+ displayName: 'Test Blind',
334
+ clusters: {
335
+ windowCovering: {
336
+ targetPositionLiftPercent100ths: 0,
337
+ targetPositionTiltPercent100ths: 0,
338
+ },
339
+ },
340
+ };
341
+ const features = detectWindowCoveringFeatures(accessory);
342
+ expect(features).toContain('Lift');
343
+ expect(features).toContain('Tilt');
344
+ });
345
+ it('should return empty array when no WindowCovering cluster', () => {
346
+ const accessory = {
347
+ displayName: 'Test Device',
348
+ clusters: {},
349
+ };
350
+ const features = detectWindowCoveringFeatures(accessory);
351
+ expect(features).toEqual([]);
352
+ });
353
+ });
354
+ describe('detectServiceAreaFeatures', () => {
355
+ it('should detect Maps feature', () => {
356
+ const cluster = {
357
+ supportedMaps: [],
358
+ };
359
+ const features = detectServiceAreaFeatures(cluster);
360
+ expect(features).toContain('Maps');
361
+ });
362
+ it('should detect ProgressReporting feature', () => {
363
+ const cluster = {
364
+ progress: [],
365
+ };
366
+ const features = detectServiceAreaFeatures(cluster);
367
+ expect(features).toContain('ProgressReporting');
368
+ });
369
+ it('should detect multiple features', () => {
370
+ const cluster = {
371
+ supportedMaps: [],
372
+ progress: [],
373
+ };
374
+ const features = detectServiceAreaFeatures(cluster);
375
+ expect(features).toEqual(['Maps', 'ProgressReporting']);
376
+ });
377
+ it('should return empty array when cluster is undefined', () => {
378
+ const features = detectServiceAreaFeatures(undefined);
379
+ expect(features).toEqual([]);
380
+ });
381
+ it('should return empty array when no features present', () => {
382
+ const cluster = {};
383
+ const features = detectServiceAreaFeatures(cluster);
384
+ expect(features).toEqual([]);
385
+ });
386
+ });
387
+ describe('applyWindowCoveringFeatures', () => {
388
+ it('should return device type when no features detected', () => {
389
+ const mockLogger = {
390
+ warn: () => { },
391
+ };
392
+ const originalConsoleWarn = console.warn;
393
+ console.warn = mockLogger.warn;
394
+ const deviceType = { name: 'WindowCovering' };
395
+ const accessory = { displayName: 'Test Blind' };
396
+ const result = applyWindowCoveringFeatures(deviceType, accessory, []);
397
+ expect(result).toBe(deviceType);
398
+ console.warn = originalConsoleWarn;
399
+ });
400
+ it('should set window covering type to TiltBlindLift when tilt features exist', () => {
401
+ const deviceType = {
402
+ name: 'WindowCovering',
403
+ with: () => deviceType,
404
+ };
405
+ const accessory = {
406
+ displayName: 'Test Blind',
407
+ clusters: {
408
+ windowCovering: {
409
+ type: 0,
410
+ },
411
+ },
412
+ };
413
+ applyWindowCoveringFeatures(deviceType, accessory, ['Lift', 'Tilt']);
414
+ expect(accessory.clusters.windowCovering.type).toBe(8); // TiltBlindLift
415
+ });
416
+ it('should set _skipWindowCoveringBehavior context flag', () => {
417
+ const deviceType = {
418
+ name: 'WindowCovering',
419
+ with: () => deviceType,
420
+ };
421
+ const accessory = {
422
+ displayName: 'Test Blind',
423
+ };
424
+ applyWindowCoveringFeatures(deviceType, accessory, ['Lift']);
425
+ expect(accessory.context).toBeDefined();
426
+ expect(accessory.context._skipWindowCoveringBehavior).toBe(true);
427
+ });
428
+ });
429
+ describe('getBehaviorMap', () => {
430
+ it('should return behavior map with all cluster types', () => {
431
+ const map = getBehaviorMap();
432
+ expect(map.onOff).toBeDefined();
433
+ expect(map.levelControl).toBeDefined();
434
+ expect(map.colorControl).toBeDefined();
435
+ expect(map.windowCovering).toBeDefined();
436
+ expect(map.fanControl).toBeDefined();
437
+ expect(map.doorLock).toBeDefined();
438
+ expect(map.thermostat).toBeDefined();
439
+ expect(map.rvcOperationalState).toBeDefined();
440
+ expect(map.rvcRunMode).toBeDefined();
441
+ expect(map.rvcCleanMode).toBeDefined();
442
+ expect(map.serviceArea).toBeDefined();
443
+ expect(map.identify).toBeDefined();
444
+ });
445
+ });
446
+ describe('applyFeaturesToBehavior', () => {
447
+ it('should return original behavior when features is null', () => {
448
+ const mockBehavior = { id: 'test' };
449
+ const result = applyFeaturesToBehavior(mockBehavior, null, 'TestCluster');
450
+ expect(result).toBe(mockBehavior);
451
+ });
452
+ it('should return original behavior when features is empty', () => {
453
+ const mockBehavior = { id: 'test' };
454
+ const result = applyFeaturesToBehavior(mockBehavior, [], 'TestCluster');
455
+ expect(result).toBe(mockBehavior);
456
+ });
457
+ it('should apply features to behavior when features provided', () => {
458
+ const extendedBehavior = { id: 'extended' };
459
+ const mockBehavior = {
460
+ id: 'test',
461
+ with: () => extendedBehavior,
462
+ };
463
+ const result = applyFeaturesToBehavior(mockBehavior, ['Feature1', 'Feature2'], 'TestCluster');
464
+ expect(result).toBe(extendedBehavior);
465
+ });
466
+ });
467
+ describe('detectBehaviorFeatures', () => {
468
+ it('should return null when device type has no behaviors', () => {
469
+ const deviceType = {};
470
+ const result = detectBehaviorFeatures(deviceType, 'colorControl', () => []);
471
+ expect(result).toBeNull();
472
+ });
473
+ it('should return null when cluster not found in behaviors', () => {
474
+ const deviceType = {
475
+ behaviors: [
476
+ { id: 'otherCluster', cluster: { id: 999 } },
477
+ ],
478
+ };
479
+ const result = detectBehaviorFeatures(deviceType, 'colorControl', () => []);
480
+ expect(result).toBeNull();
481
+ });
482
+ it('should return null when cluster has no supportedFeatures', () => {
483
+ const deviceType = {
484
+ behaviors: [
485
+ { id: 'colorControl', cluster: { id: 768 } },
486
+ ],
487
+ };
488
+ const result = detectBehaviorFeatures(deviceType, 'colorControl', () => []);
489
+ expect(result).toBeNull();
490
+ });
491
+ it('should extract features using provided extractor', () => {
492
+ const deviceType = {
493
+ behaviors: [
494
+ {
495
+ id: 'colorControl',
496
+ cluster: {
497
+ id: 768,
498
+ supportedFeatures: {
499
+ hueSaturation: true,
500
+ xy: true,
501
+ },
502
+ },
503
+ },
504
+ ],
505
+ };
506
+ const extractor = (supportedFeatures) => {
507
+ const features = [];
508
+ if (supportedFeatures.hueSaturation) {
509
+ features.push('HueSaturation');
510
+ }
511
+ if (supportedFeatures.xy) {
512
+ features.push('Xy');
513
+ }
514
+ return features;
515
+ };
516
+ const result = detectBehaviorFeatures(deviceType, 'colorControl', extractor);
517
+ expect(result).toEqual(['HueSaturation', 'Xy']);
518
+ });
519
+ });
520
+ });
521
+ //# sourceMappingURL=serverHelpers.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverHelpers.spec.js","sourceRoot":"","sources":["../../src/matter/serverHelpers.spec.ts"],"names":[],"mappings":"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"}
@@ -8,17 +8,11 @@
8
8
  * Matter bridge status states
9
9
  */
10
10
  export declare enum MatterBridgeStatus {
11
- /**
12
- * When the Matter bridge is loading or restarting
13
- */
11
+ /** When the Matter bridge is loading or restarting */
14
12
  PENDING = "pending",
15
- /**
16
- * The Matter bridge is online and ready for commissioning
17
- */
13
+ /** The Matter bridge is online and ready for commissioning */
18
14
  OK = "ok",
19
- /**
20
- * The bridge is shutting down or stopped
21
- */
15
+ /** The bridge is shutting down or stopped */
22
16
  DOWN = "down"
23
17
  }
24
18
  /**
@@ -167,4 +161,4 @@ export declare enum ChildMatterMessageType {
167
161
  /** Sent to child process to initiate graceful shutdown */
168
162
  SHUTDOWN = "shutdown"
169
163
  }
170
- //# sourceMappingURL=matterSharedTypes.d.ts.map
164
+ //# sourceMappingURL=sharedTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedTypes.d.ts","sourceRoot":"","sources":["../../src/matter/sharedTypes.ts"],"names":[],"mappings":"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"}
@@ -9,17 +9,11 @@
9
9
  */
10
10
  export var MatterBridgeStatus;
11
11
  (function (MatterBridgeStatus) {
12
- /**
13
- * When the Matter bridge is loading or restarting
14
- */
12
+ /** When the Matter bridge is loading or restarting */
15
13
  MatterBridgeStatus["PENDING"] = "pending";
16
- /**
17
- * The Matter bridge is online and ready for commissioning
18
- */
14
+ /** The Matter bridge is online and ready for commissioning */
19
15
  MatterBridgeStatus["OK"] = "ok";
20
- /**
21
- * The bridge is shutting down or stopped
22
- */
16
+ /** The bridge is shutting down or stopped */
23
17
  MatterBridgeStatus["DOWN"] = "down";
24
18
  })(MatterBridgeStatus || (MatterBridgeStatus = {}));
25
19
  /**
@@ -49,4 +43,4 @@ export var ChildMatterMessageType;
49
43
  /** Sent to child process to initiate graceful shutdown */
50
44
  ChildMatterMessageType["SHUTDOWN"] = "shutdown";
51
45
  })(ChildMatterMessageType || (ChildMatterMessageType = {}));
52
- //# sourceMappingURL=matterSharedTypes.js.map
46
+ //# sourceMappingURL=sharedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedTypes.js","sourceRoot":"","sources":["../../src/matter/sharedTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,kBASX;AATD,WAAY,kBAAkB;IAC5B,sDAAsD;IACtD,yCAAmB,CAAA;IAEnB,8DAA8D;IAC9D,+BAAS,CAAA;IAET,6CAA6C;IAC7C,mCAAa,CAAA;AACf,CAAC,EATW,kBAAkB,KAAlB,kBAAkB,QAS7B;AAgKD;;;GAGG;AACH,MAAM,CAAN,IAAY,sBA8BX;AA9BD,WAAY,sBAAsB;IAChC,iEAAiE;IACjE,yCAAe,CAAA;IAEf,sDAAsD;IACtD,uCAAa,CAAA;IAEb,iEAAiE;IACjE,2CAAiB,CAAA;IAEjB,uDAAuD;IACvD,yCAAe,CAAA;IAEf,2EAA2E;IAC3E,2CAAiB,CAAA;IAEjB,2DAA2D;IAC3D,wDAA8B,CAAA;IAE9B,8DAA8D;IAC9D,8DAAoC,CAAA;IAEpC,gFAAgF;IAChF,wDAA8B,CAAA;IAE9B,mDAAmD;IACnD,yCAAe,CAAA;IAEf,0DAA0D;IAC1D,+CAAqB,CAAA;AACvB,CAAC,EA9BW,sBAAsB,KAAtB,sBAAsB,QA8BjC"}
@@ -13,7 +13,14 @@ export declare class HomebridgeMatterStorage {
13
13
  constructor(namespace: string, storagePath: string);
14
14
  /**
15
15
  * Synchronously initialize storage by loading existing data
16
- * This is called in the constructor to ensure storage is ready immediately
16
+ *
17
+ * IMPORTANT: This method uses synchronous file I/O (readFileSync) because
18
+ * Matter.js requires storage to be immediately available upon construction.
19
+ * This is a limitation of the Matter.js Storage API - it doesn't support
20
+ * async initialization.
21
+ *
22
+ * This synchronous read only happens once at startup and is unavoidable
23
+ * without rewriting Matter.js's storage interface.
17
24
  */
18
25
  private initializeSync;
19
26
  /**
@@ -125,4 +132,4 @@ export declare class MatterStorageManager {
125
132
  path: string;
126
133
  }>;
127
134
  }
128
- //# sourceMappingURL=matterStorage.d.ts.map
135
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/matter/storage.ts"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,qBAAa,uBAAuB;IAShC,OAAO,CAAC,SAAS;IARnB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,WAAW,CAA6B;gBAGtC,SAAS,EAAE,MAAM,EACzB,WAAW,EAAE,MAAM;IASrB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IAoCtB;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAMzD;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAC1D,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAkB9D;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ7C;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAsBlC;;OAEG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IA+BlC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IA+BtC;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ7C;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAuBlE;;OAEG;YACW,eAAe;IAsB7B;;OAEG;YACW,OAAO;IAuDrB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAUnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACH,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAOjE;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAGnB,OAAO,CAAC,WAAW;IAF/B,OAAO,CAAC,QAAQ,CAAkD;gBAE9C,WAAW,EAAE,MAAM;IAEvC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB;IAStD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;OAEG;IACH,WAAW,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAG3E"}