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,336 @@
1
+ /**
2
+ * Matter.js Server Implementation for Homebridge Plugin API
3
+ *
4
+ * This provides a Matter bridge that plugins can use to register
5
+ * Matter accessories via the Homebridge API.
6
+ */
7
+ import type { SerializedMatterAccessory } from './accessoryCache.js';
8
+ import { EventEmitter } from 'node:events';
9
+ import * as clusters from '@matter/main/clusters';
10
+ import { MatterServerConfig } from './sharedTypes.js';
11
+ import { deviceTypes, MatterAccessory, MatterServerEvents } from './types.js';
12
+ /**
13
+ * Matter Server for Homebridge Plugin API
14
+ * Allows plugins to register Matter accessories explicitly
15
+ */
16
+ export declare class MatterServer extends EventEmitter {
17
+ on: <K extends keyof MatterServerEvents>(event: K, listener: MatterServerEvents[K]) => this;
18
+ emit: <K extends keyof MatterServerEvents>(event: K, ...args: Parameters<MatterServerEvents[K]>) => boolean;
19
+ removeListener: <K extends keyof MatterServerEvents>(event: K, listener: MatterServerEvents[K]) => this;
20
+ removeAllListeners: (event?: keyof MatterServerEvents) => this;
21
+ private readonly config;
22
+ private serverNode;
23
+ private aggregator;
24
+ private accessories;
25
+ private readonly behaviorRegistry;
26
+ private isRunning;
27
+ private readonly MAX_DEVICES;
28
+ private shutdownHandler;
29
+ private static readonly CLUSTER_BEHAVIOR_MAP;
30
+ private passcode;
31
+ private discriminator;
32
+ private readonly vendorId;
33
+ private readonly productId;
34
+ private commissioningInfo;
35
+ private serialNumber?;
36
+ private cleanupHandlers;
37
+ private storageManager;
38
+ private matterStoragePath?;
39
+ private accessoryCache;
40
+ constructor(config: MatterServerConfig);
41
+ /**
42
+ * Validate and sanitize Matter server configuration
43
+ * Throws descriptive errors if configuration is invalid
44
+ */
45
+ private validateAndSanitizeConfig;
46
+ /**
47
+ * Generate a secure random passcode
48
+ * According to Matter spec, passcode must be:
49
+ * - 8 digits (00000001 to 99999998)
50
+ * - Not in the invalid list
51
+ * - Not sequential or repeating patterns
52
+ */
53
+ private generateSecurePasscode;
54
+ /**
55
+ * Validate a passcode according to Matter specifications
56
+ */
57
+ private isValidPasscode;
58
+ /**
59
+ * Generate a random discriminator
60
+ * According to Matter spec, discriminator must be:
61
+ * - 12 bits (0-4095)
62
+ * - Should be random for security
63
+ */
64
+ private generateRandomDiscriminator;
65
+ /**
66
+ * Create ServerNode with automatic recovery from corrupted storage
67
+ *
68
+ * Matter.js can fail to start if fabric data is corrupted (common after
69
+ * hard shutdowns or disk errors). This method implements automatic recovery by:
70
+ *
71
+ * 1. Attempting normal ServerNode creation
72
+ * 2. If it fails with storage errors, identifying and removing corrupted files
73
+ * 3. Retrying ServerNode creation with fresh storage
74
+ *
75
+ * This prevents the need for manual intervention while preserving data
76
+ * safety by only removing storage on confirmed corruption errors.
77
+ *
78
+ * @param nodeOptions - Matter.js ServerNode configuration
79
+ * @param sanitizedId - Filesystem-safe bridge identifier
80
+ * @returns Initialized ServerNode instance
81
+ * @throws Error if recovery fails or error is not storage-related
82
+ */
83
+ private createServerNodeWithRecovery;
84
+ /**
85
+ * Start the Matter server
86
+ */
87
+ start(): Promise<void>;
88
+ /**
89
+ * Run the server after devices have been added (for external accessory mode)
90
+ *
91
+ * This must be called after registerPlatformAccessories() when using externalAccessory mode.
92
+ * In bridge mode, the server starts automatically when accessories are registered.
93
+ *
94
+ * @throws {MatterDeviceError} If server node is not initialized or server is already running
95
+ * @example
96
+ * ```typescript
97
+ * await matterServer.start()
98
+ * await matterServer.registerPlatformAccessories('plugin', 'platform', accessories)
99
+ * await matterServer.runServer() // External accessory mode only
100
+ * ```
101
+ */
102
+ runServer(): Promise<void>;
103
+ /**
104
+ * Set up and validate storage
105
+ */
106
+ private setupStorage;
107
+ /**
108
+ * Load or generate commissioning credentials (passcode and discriminator)
109
+ * These must be persistent across restarts to maintain the same QR code
110
+ */
111
+ private loadOrGenerateCredentials;
112
+ /**
113
+ * Generate and display commissioning information
114
+ */
115
+ private generateCommissioningInfo;
116
+ /**
117
+ * Wait for the server to be ready
118
+ */
119
+ private waitForServerReady;
120
+ /**
121
+ * Set up Matter.js commissioning event listeners
122
+ * Uses native Matter.js events instead of file watching for reliability
123
+ */
124
+ private setupCommissioningEventListeners;
125
+ /**
126
+ * Update commissioning info file when commissioning state changes
127
+ */
128
+ private updateCommissioningFile;
129
+ /**
130
+ * Register Matter platform accessories (Plugin API - matches HAP pattern)
131
+ *
132
+ * Registers Matter accessories from a dynamic platform plugin. Accessories are stored
133
+ * and automatically restored on server restart.
134
+ *
135
+ * @param pluginIdentifier - The plugin identifier (e.g., 'homebridge-example')
136
+ * @param platformName - The platform name from config.json
137
+ * @param accessories - Array of Matter accessories to register
138
+ * @throws {MatterDeviceError} If maximum device limit is reached or accessory is invalid
139
+ * @see {@link MatterAccessory} for accessory structure
140
+ */
141
+ registerPlatformAccessories(pluginIdentifier: string, platformName: string, accessories: MatterAccessory[]): Promise<void>;
142
+ /**
143
+ * Unregister Matter platform accessories (Plugin API - matches HAP pattern)
144
+ */
145
+ unregisterPlatformAccessories(pluginIdentifier: string, platformName: string, accessories: MatterAccessory[]): Promise<void>;
146
+ /**
147
+ * Update Matter platform accessories in the cache
148
+ * Similar to api.updatePlatformAccessories() for HAP accessories
149
+ *
150
+ * This updates the cached accessory information without unregistering and re-registering.
151
+ * Useful when device metadata changes (name, manufacturer, firmware version, etc.)
152
+ */
153
+ updatePlatformAccessories(accessories: MatterAccessory[]): Promise<void>;
154
+ /**
155
+ * Register a single Matter accessory (internal method)
156
+ */
157
+ private registerAccessory;
158
+ /**
159
+ * Restore cached state for an accessory
160
+ */
161
+ private restoreCachedState;
162
+ /**
163
+ * Detect cluster features for an accessory
164
+ * Returns an object containing detected features for various clusters
165
+ */
166
+ private detectClusterFeatures;
167
+ /**
168
+ * Build custom behaviors for an accessory based on handlers
169
+ */
170
+ private buildCustomBehaviors;
171
+ /**
172
+ * Create endpoint options for an accessory
173
+ */
174
+ private createEndpointOptions;
175
+ /**
176
+ * Register command handlers for an accessory
177
+ */
178
+ private registerAccessoryHandlers;
179
+ /**
180
+ * Create and register child endpoints (parts) for an accessory
181
+ */
182
+ private createAccessoryParts;
183
+ /**
184
+ * Finalize accessory registration (store, emit events, save cache)
185
+ */
186
+ private finalizeAccessoryRegistration;
187
+ /**
188
+ * Unregister a Matter accessory (Plugin API)
189
+ */
190
+ unregisterAccessory(uuid: string): Promise<void>;
191
+ /**
192
+ * Update a Matter accessory's state (Plugin API)
193
+ *
194
+ * This method can be called from anywhere, including from within handlers.
195
+ * State updates are automatically deferred to avoid transaction conflicts.
196
+ *
197
+ * @param uuid - The UUID of the accessory
198
+ * @param cluster - The cluster name
199
+ * @param attributes - The attributes to update
200
+ * @param partId - Optional: ID of the part to update (for composed devices)
201
+ */
202
+ updateAccessoryState(uuid: string, cluster: string, attributes: Record<string, unknown>, partId?: string): Promise<void>;
203
+ /**
204
+ * Get a Matter accessory's current state (Plugin API)
205
+ *
206
+ * Returns the current cluster attribute values that are exposed to Matter controllers.
207
+ * This is useful for:
208
+ * - Reading state after plugin restart (when local variables are lost)
209
+ * - Verifying current state before making changes
210
+ * - Multiple parts of code that need to read state
211
+ * - Debugging and logging
212
+ *
213
+ * @param uuid - The UUID of the accessory
214
+ * @param cluster - The cluster name (e.g., 'onOff', 'levelControl')
215
+ * @param partId - Optional: ID of the part to get state from (for composed devices)
216
+ * @returns Current cluster attribute values, or undefined if cluster not found
217
+ */
218
+ getAccessoryState(uuid: string, cluster: string, partId?: string): Record<string, unknown> | undefined;
219
+ /**
220
+ * Get all cached accessories (Internal - for restore process)
221
+ * @internal
222
+ */
223
+ getAllCachedAccessories(): SerializedMatterAccessory[];
224
+ /**
225
+ * Get all registered accessories (Plugin API)
226
+ */
227
+ getAccessories(): MatterAccessory[];
228
+ /**
229
+ * Get a specific accessory by UUID (Plugin API)
230
+ */
231
+ getAccessory(uuid: string): MatterAccessory | undefined;
232
+ /**
233
+ * Stop the Matter server
234
+ */
235
+ stop(): Promise<void>;
236
+ /**
237
+ * Cleanup resources
238
+ */
239
+ private cleanup;
240
+ /**
241
+ * Get fabric information for commissioned controllers
242
+ *
243
+ * Returns information about each paired controller (fabric) including:
244
+ * - fabricIndex: Unique identifier for the fabric
245
+ * - fabricId: 64-bit fabric identifier
246
+ * - nodeId: Node identifier within the fabric
247
+ * - rootVendorId: Vendor ID of the root node
248
+ * - label: Optional human-readable label
249
+ *
250
+ * @returns Array of fabric information objects, or empty array if no fabrics are commissioned
251
+ * @example
252
+ * ```typescript
253
+ * const fabrics = matterServer.getFabricInfo()
254
+ * console.log(`Commissioned to ${fabrics.length} controller(s)`)
255
+ * fabrics.forEach(fabric => {
256
+ * console.log(` Fabric ${fabric.fabricIndex}: ${fabric.label || 'Unnamed'}`)
257
+ * })
258
+ * ```
259
+ */
260
+ getFabricInfo(): Array<{
261
+ fabricIndex: number;
262
+ fabricId: string;
263
+ nodeId: string;
264
+ rootVendorId: number;
265
+ label?: string;
266
+ }>;
267
+ /**
268
+ * Check if the server is commissioned
269
+ */
270
+ isCommissioned(): boolean;
271
+ /**
272
+ * Get the number of commissioned fabrics
273
+ */
274
+ getCommissionedFabricCount(): number;
275
+ /**
276
+ * Get server status information
277
+ */
278
+ getServerInfo(): {
279
+ running: boolean;
280
+ port: number;
281
+ deviceCount: number;
282
+ commissioned: boolean;
283
+ fabricCount: number;
284
+ serialNumber?: string;
285
+ };
286
+ /**
287
+ * Get commissioning information
288
+ */
289
+ getCommissioningInfo(): {
290
+ qrCode?: string;
291
+ manualPairingCode?: string;
292
+ serialNumber?: string;
293
+ passcode?: number;
294
+ discriminator?: number;
295
+ commissioned: boolean;
296
+ };
297
+ /**
298
+ * Get storage statistics
299
+ */
300
+ getStorageStats(): Array<{
301
+ entries: number;
302
+ namespace: string;
303
+ path: string;
304
+ }> | null;
305
+ /**
306
+ * Check if server is running
307
+ */
308
+ isServerRunning(): boolean;
309
+ /**
310
+ * Get Matter device types available for plugin use
311
+ */
312
+ getDeviceTypes(): typeof deviceTypes;
313
+ /**
314
+ * Get Matter clusters available for plugin use
315
+ */
316
+ getClusters(): typeof clusters;
317
+ /**
318
+ * Remove a specific fabric (controller) from the bridge
319
+ * This decommissions a single controller while leaving others intact
320
+ *
321
+ * @param fabricIndex - The fabric index to remove
322
+ * @returns Promise that resolves when the fabric is removed
323
+ */
324
+ removeFabric(fabricIndex: number): Promise<void>;
325
+ /**
326
+ * Check if a specific fabric exists
327
+ */
328
+ hasFabric(fabricIndex: number): boolean;
329
+ /**
330
+ * Notify controllers that the parts list has changed
331
+ * This triggers controllers (like Home app) to re-read the device list
332
+ * and discover new or removed accessories without needing to re-pair
333
+ */
334
+ private notifyPartsListChanged;
335
+ }
336
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/matter/server.ts"],"names":[],"mappings":"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"}