homebridge 2.0.0-beta.4 → 2.0.0-beta.40

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 (359) hide show
  1. package/README.md +16 -17
  2. package/bin/homebridge.js +22 -0
  3. package/config-sample.json +3 -3
  4. package/dist/api.d.ts +499 -0
  5. package/dist/api.d.ts.map +1 -0
  6. package/dist/api.js +223 -0
  7. package/dist/api.js.map +1 -0
  8. package/dist/api.spec.d.ts +2 -0
  9. package/dist/api.spec.d.ts.map +1 -0
  10. package/dist/api.spec.js +413 -0
  11. package/dist/api.spec.js.map +1 -0
  12. package/{lib → dist}/bridgeService.d.ts +19 -10
  13. package/dist/bridgeService.d.ts.map +1 -0
  14. package/{lib → dist}/bridgeService.js +85 -117
  15. package/dist/bridgeService.js.map +1 -0
  16. package/{lib → dist}/childBridgeFork.d.ts +11 -5
  17. package/dist/childBridgeFork.d.ts.map +1 -0
  18. package/{lib → dist}/childBridgeFork.js +93 -44
  19. package/dist/childBridgeFork.js.map +1 -0
  20. package/{lib → dist}/childBridgeService.d.ts +37 -7
  21. package/dist/childBridgeService.d.ts.map +1 -0
  22. package/{lib → dist}/childBridgeService.js +127 -69
  23. package/dist/childBridgeService.js.map +1 -0
  24. package/dist/cli.d.ts +3 -0
  25. package/dist/cli.d.ts.map +1 -0
  26. package/dist/cli.js +90 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/externalPortService.d.ts +47 -0
  29. package/dist/externalPortService.d.ts.map +1 -0
  30. package/dist/externalPortService.js +105 -0
  31. package/dist/externalPortService.js.map +1 -0
  32. package/dist/index.d.ts +141 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +53 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/ipcService.d.ts +48 -0
  37. package/dist/ipcService.d.ts.map +1 -0
  38. package/{lib → dist}/ipcService.js +12 -14
  39. package/dist/ipcService.js.map +1 -0
  40. package/{lib → dist}/logger.d.ts +12 -6
  41. package/dist/logger.d.ts.map +1 -0
  42. package/{lib → dist}/logger.js +27 -28
  43. package/dist/logger.js.map +1 -0
  44. package/dist/logger.spec.d.ts +2 -0
  45. package/dist/logger.spec.d.ts.map +1 -0
  46. package/dist/logger.spec.js +95 -0
  47. package/dist/logger.spec.js.map +1 -0
  48. package/dist/matter/ChildBridgeMatterManager.d.ts +96 -0
  49. package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
  50. package/dist/matter/ChildBridgeMatterManager.js +399 -0
  51. package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
  52. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +48 -0
  53. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
  54. package/dist/matter/ExternalMatterAccessoryPublisher.js +73 -0
  55. package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
  56. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +2 -0
  57. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +1 -0
  58. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +293 -0
  59. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +1 -0
  60. package/dist/matter/MatterAPIImpl.d.ts +504 -0
  61. package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
  62. package/dist/matter/MatterAPIImpl.js +305 -0
  63. package/dist/matter/MatterAPIImpl.js.map +1 -0
  64. package/dist/matter/MatterBridgeManager.d.ts +87 -0
  65. package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
  66. package/dist/matter/MatterBridgeManager.js +413 -0
  67. package/dist/matter/MatterBridgeManager.js.map +1 -0
  68. package/dist/matter/MatterConfigCollector.d.ts +26 -0
  69. package/dist/matter/MatterConfigCollector.d.ts.map +1 -0
  70. package/dist/matter/MatterConfigCollector.js +78 -0
  71. package/dist/matter/MatterConfigCollector.js.map +1 -0
  72. package/dist/matter/accessoryCache.d.ts +105 -0
  73. package/dist/matter/accessoryCache.d.ts.map +1 -0
  74. package/dist/matter/accessoryCache.js +214 -0
  75. package/dist/matter/accessoryCache.js.map +1 -0
  76. package/dist/matter/accessoryCache.spec.d.ts +2 -0
  77. package/dist/matter/accessoryCache.spec.d.ts.map +1 -0
  78. package/dist/matter/accessoryCache.spec.js +452 -0
  79. package/dist/matter/accessoryCache.spec.js.map +1 -0
  80. package/dist/matter/behaviors/BehaviorRegistry.d.ts +65 -0
  81. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
  82. package/dist/matter/behaviors/BehaviorRegistry.js +139 -0
  83. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
  84. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +2 -0
  85. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +1 -0
  86. package/dist/matter/behaviors/BehaviorRegistry.spec.js +307 -0
  87. package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +1 -0
  88. package/dist/matter/behaviors/ColorControlBehavior.d.ts +63 -0
  89. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
  90. package/dist/matter/behaviors/ColorControlBehavior.js +223 -0
  91. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
  92. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +2 -0
  93. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +1 -0
  94. package/dist/matter/behaviors/ColorControlBehavior.spec.js +29 -0
  95. package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +1 -0
  96. package/dist/matter/behaviors/DoorLockBehavior.d.ts +20 -0
  97. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
  98. package/dist/matter/behaviors/DoorLockBehavior.js +71 -0
  99. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
  100. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +2 -0
  101. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +1 -0
  102. package/dist/matter/behaviors/DoorLockBehavior.spec.js +120 -0
  103. package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +1 -0
  104. package/dist/matter/behaviors/FanControlBehavior.d.ts +20 -0
  105. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
  106. package/dist/matter/behaviors/FanControlBehavior.js +71 -0
  107. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
  108. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +2 -0
  109. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +1 -0
  110. package/dist/matter/behaviors/FanControlBehavior.spec.js +23 -0
  111. package/dist/matter/behaviors/FanControlBehavior.spec.js.map +1 -0
  112. package/dist/matter/behaviors/IdentifyBehavior.d.ts +20 -0
  113. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
  114. package/dist/matter/behaviors/IdentifyBehavior.js +41 -0
  115. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
  116. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +2 -0
  117. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +1 -0
  118. package/dist/matter/behaviors/IdentifyBehavior.spec.js +64 -0
  119. package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +1 -0
  120. package/dist/matter/behaviors/LevelControlBehavior.d.ts +33 -0
  121. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
  122. package/dist/matter/behaviors/LevelControlBehavior.js +138 -0
  123. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
  124. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +2 -0
  125. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +1 -0
  126. package/dist/matter/behaviors/LevelControlBehavior.spec.js +145 -0
  127. package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +1 -0
  128. package/dist/matter/behaviors/OnOffBehavior.d.ts +27 -0
  129. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
  130. package/dist/matter/behaviors/OnOffBehavior.js +95 -0
  131. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
  132. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +2 -0
  133. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +1 -0
  134. package/dist/matter/behaviors/OnOffBehavior.spec.js +128 -0
  135. package/dist/matter/behaviors/OnOffBehavior.spec.js.map +1 -0
  136. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +19 -0
  137. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
  138. package/dist/matter/behaviors/RvcCleanModeBehavior.js +41 -0
  139. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
  140. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +2 -0
  141. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +1 -0
  142. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +57 -0
  143. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +1 -0
  144. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +22 -0
  145. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
  146. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +86 -0
  147. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
  148. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +2 -0
  149. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +1 -0
  150. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +55 -0
  151. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +1 -0
  152. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +19 -0
  153. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
  154. package/dist/matter/behaviors/RvcRunModeBehavior.js +41 -0
  155. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
  156. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +2 -0
  157. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +1 -0
  158. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +57 -0
  159. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +1 -0
  160. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +21 -0
  161. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
  162. package/dist/matter/behaviors/ServiceAreaBehavior.js +61 -0
  163. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
  164. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +2 -0
  165. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +1 -0
  166. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +53 -0
  167. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +1 -0
  168. package/dist/matter/behaviors/ThermostatBehavior.d.ts +22 -0
  169. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
  170. package/dist/matter/behaviors/ThermostatBehavior.js +127 -0
  171. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
  172. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +2 -0
  173. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +1 -0
  174. package/dist/matter/behaviors/ThermostatBehavior.spec.js +23 -0
  175. package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +1 -0
  176. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +31 -0
  177. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
  178. package/dist/matter/behaviors/WindowCoveringBehavior.js +158 -0
  179. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
  180. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +2 -0
  181. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +1 -0
  182. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +27 -0
  183. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +1 -0
  184. package/dist/matter/behaviors/index.d.ts +20 -0
  185. package/dist/matter/behaviors/index.d.ts.map +1 -0
  186. package/dist/matter/behaviors/index.js +21 -0
  187. package/dist/matter/behaviors/index.js.map +1 -0
  188. package/dist/matter/configValidator.d.ts +81 -0
  189. package/dist/matter/configValidator.d.ts.map +1 -0
  190. package/dist/matter/configValidator.js +240 -0
  191. package/dist/matter/configValidator.js.map +1 -0
  192. package/dist/matter/configValidator.spec.d.ts +2 -0
  193. package/dist/matter/configValidator.spec.d.ts.map +1 -0
  194. package/dist/matter/configValidator.spec.js +390 -0
  195. package/dist/matter/configValidator.spec.js.map +1 -0
  196. package/dist/matter/errorHandler.d.ts +33 -0
  197. package/dist/matter/errorHandler.d.ts.map +1 -0
  198. package/dist/matter/errorHandler.js +113 -0
  199. package/dist/matter/errorHandler.js.map +1 -0
  200. package/dist/matter/errorHandler.spec.d.ts +2 -0
  201. package/dist/matter/errorHandler.spec.d.ts.map +1 -0
  202. package/dist/matter/errorHandler.spec.js +159 -0
  203. package/dist/matter/errorHandler.spec.js.map +1 -0
  204. package/dist/matter/errors.d.ts +178 -0
  205. package/dist/matter/errors.d.ts.map +1 -0
  206. package/dist/matter/errors.js +200 -0
  207. package/dist/matter/errors.js.map +1 -0
  208. package/dist/matter/index.d.ts +127 -0
  209. package/dist/matter/index.d.ts.map +1 -0
  210. package/dist/matter/index.js +23 -0
  211. package/dist/matter/index.js.map +1 -0
  212. package/dist/matter/logFormatter.d.ts +19 -0
  213. package/dist/matter/logFormatter.d.ts.map +1 -0
  214. package/dist/matter/logFormatter.js +158 -0
  215. package/dist/matter/logFormatter.js.map +1 -0
  216. package/dist/matter/logFormatter.spec.d.ts +2 -0
  217. package/dist/matter/logFormatter.spec.d.ts.map +1 -0
  218. package/dist/matter/logFormatter.spec.js +252 -0
  219. package/dist/matter/logFormatter.spec.js.map +1 -0
  220. package/dist/matter/server.d.ts +336 -0
  221. package/dist/matter/server.d.ts.map +1 -0
  222. package/dist/matter/server.js +1810 -0
  223. package/dist/matter/server.js.map +1 -0
  224. package/dist/matter/serverHelpers.d.ts +81 -0
  225. package/dist/matter/serverHelpers.d.ts.map +1 -0
  226. package/dist/matter/serverHelpers.js +326 -0
  227. package/dist/matter/serverHelpers.js.map +1 -0
  228. package/dist/matter/serverHelpers.spec.d.ts +2 -0
  229. package/dist/matter/serverHelpers.spec.d.ts.map +1 -0
  230. package/dist/matter/serverHelpers.spec.js +521 -0
  231. package/dist/matter/serverHelpers.spec.js.map +1 -0
  232. package/dist/matter/sharedTypes.d.ts +164 -0
  233. package/dist/matter/sharedTypes.d.ts.map +1 -0
  234. package/dist/matter/sharedTypes.js +46 -0
  235. package/dist/matter/sharedTypes.js.map +1 -0
  236. package/dist/matter/storage.d.ts +135 -0
  237. package/dist/matter/storage.d.ts.map +1 -0
  238. package/dist/matter/storage.js +424 -0
  239. package/dist/matter/storage.js.map +1 -0
  240. package/dist/matter/storage.spec.d.ts +2 -0
  241. package/dist/matter/storage.spec.d.ts.map +1 -0
  242. package/dist/matter/storage.spec.js +570 -0
  243. package/dist/matter/storage.spec.js.map +1 -0
  244. package/dist/matter/typeHelpers.d.ts +45 -0
  245. package/dist/matter/typeHelpers.d.ts.map +1 -0
  246. package/dist/matter/typeHelpers.js +57 -0
  247. package/dist/matter/typeHelpers.js.map +1 -0
  248. package/dist/matter/typeHelpers.spec.d.ts +2 -0
  249. package/dist/matter/typeHelpers.spec.d.ts.map +1 -0
  250. package/dist/matter/typeHelpers.spec.js +127 -0
  251. package/dist/matter/typeHelpers.spec.js.map +1 -0
  252. package/dist/matter/types.d.ts +826 -0
  253. package/dist/matter/types.d.ts.map +1 -0
  254. package/dist/matter/types.js +204 -0
  255. package/dist/matter/types.js.map +1 -0
  256. package/{lib → dist}/platformAccessory.d.ts +8 -6
  257. package/dist/platformAccessory.d.ts.map +1 -0
  258. package/{lib → dist}/platformAccessory.js +19 -16
  259. package/dist/platformAccessory.js.map +1 -0
  260. package/dist/platformAccessory.spec.d.ts +2 -0
  261. package/dist/platformAccessory.spec.d.ts.map +1 -0
  262. package/dist/platformAccessory.spec.js +126 -0
  263. package/dist/platformAccessory.spec.js.map +1 -0
  264. package/{lib → dist}/plugin.d.ts +2 -3
  265. package/dist/plugin.d.ts.map +1 -0
  266. package/{lib → dist}/plugin.js +39 -51
  267. package/dist/plugin.js.map +1 -0
  268. package/{lib → dist}/pluginManager.d.ts +3 -3
  269. package/dist/pluginManager.d.ts.map +1 -0
  270. package/{lib → dist}/pluginManager.js +76 -81
  271. package/dist/pluginManager.js.map +1 -0
  272. package/dist/pluginManager.spec.d.ts +2 -0
  273. package/dist/pluginManager.spec.d.ts.map +1 -0
  274. package/dist/pluginManager.spec.js +43 -0
  275. package/dist/pluginManager.spec.js.map +1 -0
  276. package/{lib → dist}/server.d.ts +14 -1
  277. package/dist/server.d.ts.map +1 -0
  278. package/{lib → dist}/server.js +193 -123
  279. package/dist/server.js.map +1 -0
  280. package/dist/server.spec.d.ts +2 -0
  281. package/dist/server.spec.d.ts.map +1 -0
  282. package/dist/server.spec.js +57 -0
  283. package/dist/server.spec.js.map +1 -0
  284. package/{lib → dist}/storageService.d.ts.map +1 -1
  285. package/dist/storageService.js +41 -0
  286. package/dist/storageService.js.map +1 -0
  287. package/{lib → dist}/user.d.ts +1 -0
  288. package/dist/user.d.ts.map +1 -0
  289. package/dist/user.js +32 -0
  290. package/dist/user.js.map +1 -0
  291. package/dist/user.spec.d.ts +2 -0
  292. package/dist/user.spec.d.ts.map +1 -0
  293. package/dist/user.spec.js +31 -0
  294. package/dist/user.spec.js.map +1 -0
  295. package/{lib → dist}/util/mac.d.ts +1 -0
  296. package/dist/util/mac.d.ts.map +1 -0
  297. package/dist/util/mac.js +14 -0
  298. package/dist/util/mac.js.map +1 -0
  299. package/dist/util/mac.spec.d.ts +2 -0
  300. package/dist/util/mac.spec.d.ts.map +1 -0
  301. package/dist/util/mac.spec.js +36 -0
  302. package/dist/util/mac.spec.js.map +1 -0
  303. package/dist/version.d.ts.map +1 -0
  304. package/dist/version.js +16 -0
  305. package/dist/version.js.map +1 -0
  306. package/dist/version.spec.d.ts +2 -0
  307. package/dist/version.spec.d.ts.map +1 -0
  308. package/dist/version.spec.js +20 -0
  309. package/dist/version.spec.js.map +1 -0
  310. package/package.json +49 -50
  311. package/bin/homebridge +0 -17
  312. package/lib/api.d.ts +0 -210
  313. package/lib/api.d.ts.map +0 -1
  314. package/lib/api.js +0 -155
  315. package/lib/api.js.map +0 -1
  316. package/lib/bridgeService.d.ts.map +0 -1
  317. package/lib/bridgeService.js.map +0 -1
  318. package/lib/childBridgeFork.d.ts.map +0 -1
  319. package/lib/childBridgeFork.js.map +0 -1
  320. package/lib/childBridgeService.d.ts.map +0 -1
  321. package/lib/childBridgeService.js.map +0 -1
  322. package/lib/cli.d.ts +0 -4
  323. package/lib/cli.d.ts.map +0 -1
  324. package/lib/cli.js +0 -111
  325. package/lib/cli.js.map +0 -1
  326. package/lib/externalPortService.d.ts +0 -33
  327. package/lib/externalPortService.d.ts.map +0 -1
  328. package/lib/externalPortService.js +0 -64
  329. package/lib/externalPortService.js.map +0 -1
  330. package/lib/index.d.ts +0 -76
  331. package/lib/index.d.ts.map +0 -1
  332. package/lib/index.js +0 -72
  333. package/lib/index.js.map +0 -1
  334. package/lib/ipcService.d.ts +0 -33
  335. package/lib/ipcService.d.ts.map +0 -1
  336. package/lib/ipcService.js.map +0 -1
  337. package/lib/logger.d.ts.map +0 -1
  338. package/lib/logger.js.map +0 -1
  339. package/lib/platformAccessory.d.ts.map +0 -1
  340. package/lib/platformAccessory.js.map +0 -1
  341. package/lib/plugin.d.ts.map +0 -1
  342. package/lib/plugin.js.map +0 -1
  343. package/lib/pluginManager.d.ts.map +0 -1
  344. package/lib/pluginManager.js.map +0 -1
  345. package/lib/server.d.ts.map +0 -1
  346. package/lib/server.js.map +0 -1
  347. package/lib/storageService.js +0 -70
  348. package/lib/storageService.js.map +0 -1
  349. package/lib/user.d.ts.map +0 -1
  350. package/lib/user.js +0 -36
  351. package/lib/user.js.map +0 -1
  352. package/lib/util/mac.d.ts.map +0 -1
  353. package/lib/util/mac.js +0 -20
  354. package/lib/util/mac.js.map +0 -1
  355. package/lib/version.d.ts.map +0 -1
  356. package/lib/version.js +0 -21
  357. package/lib/version.js.map +0 -1
  358. /package/{lib → dist}/storageService.d.ts +0 -0
  359. /package/{lib → dist}/version.d.ts +0 -0
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Behavior Registry
3
+ *
4
+ * Manages handler registration and accessory state without global mutable state.
5
+ * This replaces the global Maps in matterBehaviors.ts.
6
+ */
7
+ import { Logger } from '../../logger.js';
8
+ const log = Logger.withPrefix('Matter/Behaviors');
9
+ /**
10
+ * Registry for behavior handlers and accessory state
11
+ * Replaces global state with a proper class instance
12
+ */
13
+ export class BehaviorRegistry {
14
+ // Handler storage: endpointId -> clusterName -> commandName -> handler
15
+ handlers = new Map();
16
+ // Part endpoint mapping: endpointId -> { parentUuid, partId }
17
+ partEndpoints = new Map();
18
+ // Reference to accessories map (not owned by registry)
19
+ accessoriesMap;
20
+ constructor(accessoriesMap) {
21
+ this.accessoriesMap = accessoriesMap;
22
+ }
23
+ /**
24
+ * Register a command handler for an endpoint
25
+ */
26
+ registerHandler(endpointId, clusterName, commandName, handler) {
27
+ if (!this.handlers.has(endpointId)) {
28
+ this.handlers.set(endpointId, new Map());
29
+ }
30
+ const endpointHandlers = this.handlers.get(endpointId);
31
+ if (!endpointHandlers.has(clusterName)) {
32
+ endpointHandlers.set(clusterName, new Map());
33
+ }
34
+ const clusterHandlers = endpointHandlers.get(clusterName);
35
+ clusterHandlers.set(commandName, handler);
36
+ log.debug(`Registered handler: ${endpointId}.${clusterName}.${commandName}`);
37
+ }
38
+ /**
39
+ * Get a registered handler
40
+ */
41
+ getHandler(endpointId, clusterName, commandName) {
42
+ return this.handlers.get(endpointId)?.get(clusterName)?.get(commandName);
43
+ }
44
+ /**
45
+ * Execute a handler if it exists
46
+ */
47
+ async executeHandler(endpointId, clusterName, commandName, ...args) {
48
+ const handler = this.getHandler(endpointId, clusterName, commandName);
49
+ if (!handler) {
50
+ return false;
51
+ }
52
+ try {
53
+ await handler(...args);
54
+ return true;
55
+ }
56
+ catch (error) {
57
+ log.error(`Handler error for ${endpointId}.${clusterName}.${commandName}:`, error);
58
+ throw error;
59
+ }
60
+ }
61
+ /**
62
+ * Register a part endpoint mapping
63
+ */
64
+ registerPartEndpoint(endpointId, parentUuid, partId) {
65
+ this.partEndpoints.set(endpointId, { parentUuid, partId });
66
+ log.debug(`Registered part endpoint: ${endpointId} -> ${parentUuid}.${partId}`);
67
+ }
68
+ /**
69
+ * Get part endpoint info
70
+ */
71
+ getPartEndpointInfo(endpointId) {
72
+ return this.partEndpoints.get(endpointId);
73
+ }
74
+ /**
75
+ * Sync cluster state to cache
76
+ * Updates the accessory's cached cluster state when values change
77
+ */
78
+ syncStateToCache(endpointId, clusterName, attributes) {
79
+ // Check if this is a part endpoint
80
+ const partInfo = this.partEndpoints.get(endpointId);
81
+ if (partInfo) {
82
+ // Update part cluster state
83
+ const accessory = this.accessoriesMap.get(partInfo.parentUuid);
84
+ if (!accessory?._parts) {
85
+ return;
86
+ }
87
+ const part = accessory._parts.find(p => p.id === partInfo.partId);
88
+ if (!part?.clusters) {
89
+ return;
90
+ }
91
+ if (!part.clusters[clusterName]) {
92
+ part.clusters[clusterName] = {};
93
+ }
94
+ part.clusters[clusterName] = {
95
+ ...part.clusters[clusterName],
96
+ ...attributes,
97
+ };
98
+ log.debug(`Synced ${clusterName} state to cache for part ${partInfo.partId}:`, attributes);
99
+ }
100
+ else {
101
+ // Update main accessory cluster state
102
+ const accessory = this.accessoriesMap.get(endpointId);
103
+ if (!accessory?.clusters) {
104
+ return;
105
+ }
106
+ if (!accessory.clusters[clusterName]) {
107
+ accessory.clusters[clusterName] = {};
108
+ }
109
+ accessory.clusters[clusterName] = {
110
+ ...accessory.clusters[clusterName],
111
+ ...attributes,
112
+ };
113
+ log.debug(`Synced ${clusterName} state to cache for ${endpointId}:`, attributes);
114
+ }
115
+ }
116
+ /**
117
+ * Clear all handlers (for cleanup)
118
+ */
119
+ clear() {
120
+ this.handlers.clear();
121
+ this.partEndpoints.clear();
122
+ }
123
+ /**
124
+ * Get statistics
125
+ */
126
+ getStats() {
127
+ let handlerCount = 0;
128
+ for (const endpointHandlers of this.handlers.values()) {
129
+ for (const clusterHandlers of endpointHandlers.values()) {
130
+ handlerCount += clusterHandlers.size;
131
+ }
132
+ }
133
+ return {
134
+ handlerCount,
135
+ partCount: this.partEndpoints.size,
136
+ };
137
+ }
138
+ }
139
+ //# sourceMappingURL=BehaviorRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorRegistry.js","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BehaviorRegistry.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorRegistry.spec.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,307 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import { BehaviorRegistry } from './BehaviorRegistry.js';
3
+ describe('behaviorRegistry', () => {
4
+ let registry;
5
+ let accessoriesMap;
6
+ let consoleDebugSpy;
7
+ let consoleErrorSpy;
8
+ beforeEach(() => {
9
+ accessoriesMap = new Map();
10
+ registry = new BehaviorRegistry(accessoriesMap);
11
+ consoleDebugSpy = vi.spyOn(console, 'debug').mockImplementation(() => { });
12
+ consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
13
+ });
14
+ afterEach(() => {
15
+ consoleDebugSpy.mockRestore();
16
+ consoleErrorSpy.mockRestore();
17
+ });
18
+ describe('constructor', () => {
19
+ it('should create a new registry with provided accessories map', () => {
20
+ expect(registry).toBeInstanceOf(BehaviorRegistry);
21
+ });
22
+ it('should initialize with empty state', () => {
23
+ const stats = registry.getStats();
24
+ expect(stats.handlerCount).toBe(0);
25
+ expect(stats.partCount).toBe(0);
26
+ });
27
+ });
28
+ describe('registerHandler', () => {
29
+ it('should register a handler', () => {
30
+ const handler = vi.fn();
31
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler);
32
+ expect(registry.getHandler('endpoint1', 'onOff', 'toggle')).toBe(handler);
33
+ });
34
+ it('should register multiple handlers for same endpoint', () => {
35
+ const handler1 = vi.fn();
36
+ const handler2 = vi.fn();
37
+ registry.registerHandler('endpoint1', 'onOff', 'on', handler1);
38
+ registry.registerHandler('endpoint1', 'onOff', 'off', handler2);
39
+ expect(registry.getHandler('endpoint1', 'onOff', 'on')).toBe(handler1);
40
+ expect(registry.getHandler('endpoint1', 'onOff', 'off')).toBe(handler2);
41
+ });
42
+ it('should register handlers for multiple clusters', () => {
43
+ const handler1 = vi.fn();
44
+ const handler2 = vi.fn();
45
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler1);
46
+ registry.registerHandler('endpoint1', 'levelControl', 'moveToLevel', handler2);
47
+ expect(registry.getHandler('endpoint1', 'onOff', 'toggle')).toBe(handler1);
48
+ expect(registry.getHandler('endpoint1', 'levelControl', 'moveToLevel')).toBe(handler2);
49
+ });
50
+ it('should register handlers for multiple endpoints', () => {
51
+ const handler1 = vi.fn();
52
+ const handler2 = vi.fn();
53
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler1);
54
+ registry.registerHandler('endpoint2', 'onOff', 'toggle', handler2);
55
+ expect(registry.getHandler('endpoint1', 'onOff', 'toggle')).toBe(handler1);
56
+ expect(registry.getHandler('endpoint2', 'onOff', 'toggle')).toBe(handler2);
57
+ });
58
+ it('should overwrite existing handler when registered again', () => {
59
+ const handler1 = vi.fn();
60
+ const handler2 = vi.fn();
61
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler1);
62
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler2);
63
+ expect(registry.getHandler('endpoint1', 'onOff', 'toggle')).toBe(handler2);
64
+ });
65
+ it('should not throw when registering a handler', () => {
66
+ const handler = vi.fn();
67
+ // Should not throw
68
+ expect(() => registry.registerHandler('endpoint1', 'onOff', 'toggle', handler)).not.toThrow();
69
+ });
70
+ });
71
+ describe('getHandler', () => {
72
+ it('should return undefined for non-existent endpoint', () => {
73
+ expect(registry.getHandler('nonexistent', 'onOff', 'toggle')).toBeUndefined();
74
+ });
75
+ it('should return undefined for non-existent cluster', () => {
76
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', vi.fn());
77
+ expect(registry.getHandler('endpoint1', 'nonexistent', 'toggle')).toBeUndefined();
78
+ });
79
+ it('should return undefined for non-existent command', () => {
80
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', vi.fn());
81
+ expect(registry.getHandler('endpoint1', 'onOff', 'nonexistent')).toBeUndefined();
82
+ });
83
+ it('should return registered handler', () => {
84
+ const handler = vi.fn();
85
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler);
86
+ expect(registry.getHandler('endpoint1', 'onOff', 'toggle')).toBe(handler);
87
+ });
88
+ });
89
+ describe('executeHandler', () => {
90
+ it('should execute handler with provided arguments', async () => {
91
+ const handler = vi.fn();
92
+ registry.registerHandler('endpoint1', 'onOff', 'moveToLevel', handler);
93
+ const result = await registry.executeHandler('endpoint1', 'onOff', 'moveToLevel', 100, 200);
94
+ expect(handler).toHaveBeenCalledWith(100, 200);
95
+ expect(result).toBe(true);
96
+ });
97
+ it('should execute async handler', async () => {
98
+ const handler = vi.fn(async () => {
99
+ await new Promise(resolve => setTimeout(resolve, 10));
100
+ });
101
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler);
102
+ const result = await registry.executeHandler('endpoint1', 'onOff', 'toggle');
103
+ expect(handler).toHaveBeenCalled();
104
+ expect(result).toBe(true);
105
+ });
106
+ it('should return false when handler does not exist', async () => {
107
+ const result = await registry.executeHandler('nonexistent', 'onOff', 'toggle');
108
+ expect(result).toBe(false);
109
+ });
110
+ it('should log and rethrow errors from handlers', async () => {
111
+ const error = new Error('Handler failed');
112
+ const handler = vi.fn(() => {
113
+ throw error;
114
+ });
115
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler);
116
+ await expect(registry.executeHandler('endpoint1', 'onOff', 'toggle')).rejects.toThrow('Handler failed');
117
+ // Error should be logged (with timestamps/prefixes added by Logger)
118
+ expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Handler error'));
119
+ });
120
+ it('should handle async handler errors', async () => {
121
+ const error = new Error('Async handler failed');
122
+ const handler = vi.fn(async () => {
123
+ throw error;
124
+ });
125
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', handler);
126
+ await expect(registry.executeHandler('endpoint1', 'onOff', 'toggle')).rejects.toThrow('Async handler failed');
127
+ expect(consoleErrorSpy).toHaveBeenCalled();
128
+ });
129
+ });
130
+ describe('registerPartEndpoint', () => {
131
+ it('should register part endpoint mapping', () => {
132
+ registry.registerPartEndpoint('part-endpoint-1', 'parent-uuid', 'part1');
133
+ expect(registry.getPartEndpointInfo('part-endpoint-1')).toEqual({
134
+ parentUuid: 'parent-uuid',
135
+ partId: 'part1',
136
+ });
137
+ });
138
+ it('should register multiple part endpoints', () => {
139
+ registry.registerPartEndpoint('part-endpoint-1', 'parent-uuid', 'part1');
140
+ registry.registerPartEndpoint('part-endpoint-2', 'parent-uuid', 'part2');
141
+ expect(registry.getPartEndpointInfo('part-endpoint-1')).toEqual({
142
+ parentUuid: 'parent-uuid',
143
+ partId: 'part1',
144
+ });
145
+ expect(registry.getPartEndpointInfo('part-endpoint-2')).toEqual({
146
+ parentUuid: 'parent-uuid',
147
+ partId: 'part2',
148
+ });
149
+ });
150
+ });
151
+ describe('getPartEndpointInfo', () => {
152
+ it('should return undefined for non-existent part endpoint', () => {
153
+ expect(registry.getPartEndpointInfo('nonexistent')).toBeUndefined();
154
+ });
155
+ it('should return part endpoint info', () => {
156
+ registry.registerPartEndpoint('part-endpoint-1', 'parent-uuid', 'part1');
157
+ expect(registry.getPartEndpointInfo('part-endpoint-1')).toEqual({
158
+ parentUuid: 'parent-uuid',
159
+ partId: 'part1',
160
+ });
161
+ });
162
+ });
163
+ describe('syncStateToCache', () => {
164
+ it('should sync state to main accessory cluster', () => {
165
+ const accessory = {
166
+ uuid: 'accessory-uuid',
167
+ displayName: 'Test Accessory',
168
+ clusters: {
169
+ onOff: { onOff: false },
170
+ },
171
+ };
172
+ accessoriesMap.set('accessory-uuid', accessory);
173
+ registry.syncStateToCache('accessory-uuid', 'onOff', { onOff: true });
174
+ expect(accessory.clusters.onOff).toEqual({ onOff: true });
175
+ });
176
+ it('should create cluster if it does not exist on main accessory', () => {
177
+ const accessory = {
178
+ uuid: 'accessory-uuid',
179
+ displayName: 'Test Accessory',
180
+ clusters: {},
181
+ };
182
+ accessoriesMap.set('accessory-uuid', accessory);
183
+ registry.syncStateToCache('accessory-uuid', 'onOff', { onOff: true });
184
+ expect(accessory.clusters.onOff).toEqual({ onOff: true });
185
+ });
186
+ it('should merge attributes with existing cluster state', () => {
187
+ const accessory = {
188
+ uuid: 'accessory-uuid',
189
+ displayName: 'Test Accessory',
190
+ clusters: {
191
+ levelControl: { currentLevel: 100 },
192
+ },
193
+ };
194
+ accessoriesMap.set('accessory-uuid', accessory);
195
+ registry.syncStateToCache('accessory-uuid', 'levelControl', { minLevel: 0, maxLevel: 254 });
196
+ expect(accessory.clusters.levelControl).toEqual({
197
+ currentLevel: 100,
198
+ minLevel: 0,
199
+ maxLevel: 254,
200
+ });
201
+ });
202
+ it('should sync state to part accessory cluster', () => {
203
+ const accessory = {
204
+ uuid: 'parent-uuid',
205
+ displayName: 'Test Device',
206
+ clusters: {},
207
+ _parts: [
208
+ {
209
+ id: 'part1',
210
+ clusters: {
211
+ onOff: { onOff: false },
212
+ },
213
+ },
214
+ ],
215
+ };
216
+ accessoriesMap.set('parent-uuid', accessory);
217
+ registry.registerPartEndpoint('part-endpoint-1', 'parent-uuid', 'part1');
218
+ registry.syncStateToCache('part-endpoint-1', 'onOff', { onOff: true });
219
+ expect(accessory._parts[0].clusters.onOff).toEqual({ onOff: true });
220
+ });
221
+ it('should create cluster if it does not exist on part', () => {
222
+ const accessory = {
223
+ uuid: 'parent-uuid',
224
+ displayName: 'Test Device',
225
+ clusters: {},
226
+ _parts: [
227
+ {
228
+ id: 'part1',
229
+ clusters: {},
230
+ },
231
+ ],
232
+ };
233
+ accessoriesMap.set('parent-uuid', accessory);
234
+ registry.registerPartEndpoint('part-endpoint-1', 'parent-uuid', 'part1');
235
+ registry.syncStateToCache('part-endpoint-1', 'onOff', { onOff: true });
236
+ expect(accessory._parts[0].clusters.onOff).toEqual({ onOff: true });
237
+ });
238
+ it('should handle non-existent accessory gracefully', () => {
239
+ registry.syncStateToCache('nonexistent', 'onOff', { onOff: true });
240
+ // Should not throw, just silently fail
241
+ expect(consoleDebugSpy).not.toHaveBeenCalled();
242
+ });
243
+ it('should handle accessory without clusters gracefully', () => {
244
+ const accessory = {
245
+ uuid: 'accessory-uuid',
246
+ displayName: 'Test Accessory',
247
+ };
248
+ accessoriesMap.set('accessory-uuid', accessory);
249
+ registry.syncStateToCache('accessory-uuid', 'onOff', { onOff: true });
250
+ // Should not throw, just silently fail
251
+ expect(consoleDebugSpy).not.toHaveBeenCalled();
252
+ });
253
+ it('should handle part accessory without _parts gracefully', () => {
254
+ const accessory = {
255
+ uuid: 'parent-uuid',
256
+ displayName: 'Test Device',
257
+ clusters: {},
258
+ };
259
+ accessoriesMap.set('parent-uuid', accessory);
260
+ registry.registerPartEndpoint('part-endpoint-1', 'parent-uuid', 'part1');
261
+ registry.syncStateToCache('part-endpoint-1', 'onOff', { onOff: true });
262
+ // Should not throw, just silently fail
263
+ expect(consoleDebugSpy).not.toHaveBeenCalled();
264
+ });
265
+ });
266
+ describe('clear', () => {
267
+ it('should clear all handlers and part endpoints', () => {
268
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', vi.fn());
269
+ registry.registerPartEndpoint('part-endpoint-1', 'parent-uuid', 'part1');
270
+ registry.clear();
271
+ expect(registry.getHandler('endpoint1', 'onOff', 'toggle')).toBeUndefined();
272
+ expect(registry.getPartEndpointInfo('part-endpoint-1')).toBeUndefined();
273
+ expect(registry.getStats().handlerCount).toBe(0);
274
+ expect(registry.getStats().partCount).toBe(0);
275
+ });
276
+ });
277
+ describe('getStats', () => {
278
+ it('should return zero counts for empty registry', () => {
279
+ const stats = registry.getStats();
280
+ expect(stats.handlerCount).toBe(0);
281
+ expect(stats.partCount).toBe(0);
282
+ });
283
+ it('should count registered handlers', () => {
284
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', vi.fn());
285
+ registry.registerHandler('endpoint1', 'onOff', 'on', vi.fn());
286
+ registry.registerHandler('endpoint1', 'levelControl', 'moveToLevel', vi.fn());
287
+ registry.registerHandler('endpoint2', 'onOff', 'toggle', vi.fn());
288
+ const stats = registry.getStats();
289
+ expect(stats.handlerCount).toBe(4);
290
+ });
291
+ it('should count registered part endpoints', () => {
292
+ registry.registerPartEndpoint('part1', 'parent', 'part1');
293
+ registry.registerPartEndpoint('part2', 'parent', 'part2');
294
+ const stats = registry.getStats();
295
+ expect(stats.partCount).toBe(2);
296
+ });
297
+ it('should count both handlers and part endpoints', () => {
298
+ registry.registerHandler('endpoint1', 'onOff', 'toggle', vi.fn());
299
+ registry.registerHandler('endpoint2', 'levelControl', 'moveToLevel', vi.fn());
300
+ registry.registerPartEndpoint('part1', 'parent', 'part1');
301
+ const stats = registry.getStats();
302
+ expect(stats.handlerCount).toBe(2);
303
+ expect(stats.partCount).toBe(1);
304
+ });
305
+ });
306
+ });
307
+ //# sourceMappingURL=BehaviorRegistry.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorRegistry.spec.js","sourceRoot":"","sources":["../../../src/matter/behaviors/BehaviorRegistry.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * ColorControl Cluster Behavior
3
+ *
4
+ * Handles color control commands for RGB lights and color temperature lights
5
+ */
6
+ import type { ColorControl } from '@matter/main/clusters';
7
+ import type { BehaviorRegistry } from './BehaviorRegistry.js';
8
+ import { ColorControlServer } from '@matter/main/behaviors/color-control';
9
+ /**
10
+ * Custom ColorControl Server that calls plugin handlers
11
+ *
12
+ * ColorControl handles color changes for lights (hue, saturation, XY color, color temperature).
13
+ * Plugin developers can override these *Logic methods to handle color changes in their hardware.
14
+ *
15
+ * Features (Xy, ColorTemperature, HueSaturation) are added by the device type, not this behavior.
16
+ * This ensures each device only gets the features it needs.
17
+ */
18
+ export declare class HomebridgeColorControlServer extends ColorControlServer {
19
+ private static registry;
20
+ /**
21
+ * Set the behavior registry (called once during server initialization)
22
+ */
23
+ static setRegistry(registry: BehaviorRegistry): void;
24
+ /**
25
+ * Called when color temperature is changed
26
+ * @param colorTemperatureMireds - Target color temperature in mireds (micro reciprocal degrees)
27
+ * @param transitionTime - Transition time in seconds (0 = as fast as possible)
28
+ */
29
+ moveToColorTemperatureLogic(colorTemperatureMireds: number, transitionTime: number): Promise<void>;
30
+ /**
31
+ * Called when hue and saturation are changed together
32
+ * @param hue - Target hue value (0-254 for normal hue, 0-65535 for enhanced hue)
33
+ * @param saturation - Target saturation value (0-254)
34
+ * @param transitionTime - Transition time in seconds (0 = as fast as possible)
35
+ */
36
+ moveToHueAndSaturationLogic(hue: number, saturation: number, transitionTime: number): Promise<void>;
37
+ /**
38
+ * Called when XY color coordinates are changed
39
+ * @param targetX - Target X value (0-65535 representing 0.0-1.0 in CIE color space)
40
+ * @param targetY - Target Y value (0-65535 representing 0.0-1.0 in CIE color space)
41
+ * @param transitionTime - Transition time in seconds (0 = as fast as possible)
42
+ */
43
+ moveToColorLogic(targetX: number, targetY: number, transitionTime: number): Promise<void>;
44
+ /**
45
+ * Called when hue is changed individually
46
+ * @param targetHue - Target hue value
47
+ * @param direction - Direction to move (shortest, longest, up, down)
48
+ * @param transitionTime - Transition time in seconds
49
+ * @param isEnhancedHue - Whether this is enhanced hue (16-bit) or normal hue (8-bit)
50
+ */
51
+ moveToHueLogic(targetHue: number, direction: ColorControl.Direction, transitionTime: number, isEnhancedHue?: boolean): Promise<void>;
52
+ /**
53
+ * Called when saturation is changed individually
54
+ * @param targetSaturation - Target saturation value (0-254)
55
+ * @param transitionTime - Transition time in seconds
56
+ */
57
+ moveToSaturationLogic(targetSaturation: number, transitionTime: number): Promise<void>;
58
+ /**
59
+ * Called when all color movement should be stopped
60
+ */
61
+ stopAllColorMovement(): Promise<void>;
62
+ }
63
+ //# sourceMappingURL=ColorControlBehavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorControlBehavior.d.ts","sourceRoot":"","sources":["../../../src/matter/behaviors/ColorControlBehavior.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAKzE;;;;;;;;GAQG;AACH,qBAAa,4BAA6B,SAAQ,kBAAkB;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IAEzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIpD;;;;OAIG;IACY,2BAA2B,CAAC,sBAAsB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCjH;;;;;OAKG;IACY,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuClH;;;;;OAKG;IACY,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCxG;;;;;;OAMG;IACY,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCjJ;;;;OAIG;IACY,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCrG;;OAEG;IACY,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BrD"}