homebridge 2.0.0-beta.44 → 2.0.0-beta.46

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 (321) hide show
  1. package/dist/api.d.ts +3 -365
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +13 -85
  4. package/dist/api.js.map +1 -1
  5. package/dist/bridgeService.d.ts +0 -25
  6. package/dist/bridgeService.d.ts.map +1 -1
  7. package/dist/bridgeService.js +32 -85
  8. package/dist/bridgeService.js.map +1 -1
  9. package/dist/childBridgeFork.d.ts +12 -15
  10. package/dist/childBridgeFork.d.ts.map +1 -1
  11. package/dist/childBridgeFork.js +152 -83
  12. package/dist/childBridgeFork.js.map +1 -1
  13. package/dist/childBridgeService.d.ts +21 -105
  14. package/dist/childBridgeService.d.ts.map +1 -1
  15. package/dist/childBridgeService.js +57 -134
  16. package/dist/childBridgeService.js.map +1 -1
  17. package/dist/cli.js +0 -2
  18. package/dist/cli.js.map +1 -1
  19. package/dist/externalPortService.d.ts +0 -21
  20. package/dist/externalPortService.d.ts.map +1 -1
  21. package/dist/externalPortService.js +0 -28
  22. package/dist/externalPortService.js.map +1 -1
  23. package/dist/index.d.ts +0 -112
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +0 -44
  26. package/dist/index.js.map +1 -1
  27. package/dist/ipcService.d.ts +23 -15
  28. package/dist/ipcService.d.ts.map +1 -1
  29. package/dist/ipcService.js +6 -12
  30. package/dist/ipcService.js.map +1 -1
  31. package/dist/logger.d.ts +0 -46
  32. package/dist/logger.d.ts.map +1 -1
  33. package/dist/logger.js +13 -57
  34. package/dist/logger.js.map +1 -1
  35. package/dist/matter/BaseMatterManager.d.ts +19 -0
  36. package/dist/matter/BaseMatterManager.d.ts.map +1 -0
  37. package/dist/matter/BaseMatterManager.js +170 -0
  38. package/dist/matter/BaseMatterManager.js.map +1 -0
  39. package/dist/matter/ChildBridgeMatterManager.d.ts +7 -69
  40. package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -1
  41. package/dist/matter/ChildBridgeMatterManager.js +51 -234
  42. package/dist/matter/ChildBridgeMatterManager.js.map +1 -1
  43. package/dist/matter/ClusterCommandMapper.d.ts +5 -0
  44. package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
  45. package/dist/matter/ClusterCommandMapper.js +203 -0
  46. package/dist/matter/ClusterCommandMapper.js.map +1 -0
  47. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +0 -27
  48. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -1
  49. package/dist/matter/ExternalMatterAccessoryPublisher.js +3 -28
  50. package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -1
  51. package/dist/matter/MatterAPIImpl.d.ts +0 -68
  52. package/dist/matter/MatterAPIImpl.d.ts.map +1 -1
  53. package/dist/matter/MatterAPIImpl.js +7 -107
  54. package/dist/matter/MatterAPIImpl.js.map +1 -1
  55. package/dist/matter/MatterBridgeManager.d.ts +9 -60
  56. package/dist/matter/MatterBridgeManager.d.ts.map +1 -1
  57. package/dist/matter/MatterBridgeManager.js +140 -216
  58. package/dist/matter/MatterBridgeManager.js.map +1 -1
  59. package/dist/matter/MatterConfigCollector.d.ts +1 -20
  60. package/dist/matter/MatterConfigCollector.d.ts.map +1 -1
  61. package/dist/matter/MatterConfigCollector.js +15 -28
  62. package/dist/matter/MatterConfigCollector.js.map +1 -1
  63. package/dist/matter/accessoryCache.d.ts +0 -48
  64. package/dist/matter/accessoryCache.d.ts.map +1 -1
  65. package/dist/matter/accessoryCache.js +1 -60
  66. package/dist/matter/accessoryCache.js.map +1 -1
  67. package/dist/matter/behaviors/AirQualityBehavior.d.ts +0 -42
  68. package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -1
  69. package/dist/matter/behaviors/AirQualityBehavior.js +0 -44
  70. package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -1
  71. package/dist/matter/behaviors/BehaviorRegistry.d.ts +4 -42
  72. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -1
  73. package/dist/matter/behaviors/BehaviorRegistry.js +12 -42
  74. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -1
  75. package/dist/matter/behaviors/ColorControlBehavior.d.ts +0 -49
  76. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -1
  77. package/dist/matter/behaviors/ColorControlBehavior.js +0 -90
  78. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -1
  79. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +0 -91
  80. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -1
  81. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +0 -96
  82. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -1
  83. package/dist/matter/behaviors/DoorLockBehavior.d.ts +0 -11
  84. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -1
  85. package/dist/matter/behaviors/DoorLockBehavior.js +0 -25
  86. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -1
  87. package/dist/matter/behaviors/FanControlBehavior.d.ts +0 -11
  88. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -1
  89. package/dist/matter/behaviors/FanControlBehavior.js +0 -25
  90. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -1
  91. package/dist/matter/behaviors/IdentifyBehavior.d.ts +0 -11
  92. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -1
  93. package/dist/matter/behaviors/IdentifyBehavior.js +0 -17
  94. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -1
  95. package/dist/matter/behaviors/LevelControlBehavior.d.ts +0 -20
  96. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -1
  97. package/dist/matter/behaviors/LevelControlBehavior.js +0 -52
  98. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -1
  99. package/dist/matter/behaviors/OnOffBehavior.d.ts +0 -17
  100. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -1
  101. package/dist/matter/behaviors/OnOffBehavior.js +0 -38
  102. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -1
  103. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +0 -11
  104. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -1
  105. package/dist/matter/behaviors/RvcCleanModeBehavior.js +0 -17
  106. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -1
  107. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +0 -11
  108. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -1
  109. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +0 -29
  110. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -1
  111. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +0 -11
  112. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -1
  113. package/dist/matter/behaviors/RvcRunModeBehavior.js +0 -17
  114. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -1
  115. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +0 -11
  116. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -1
  117. package/dist/matter/behaviors/ServiceAreaBehavior.js +0 -23
  118. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -1
  119. package/dist/matter/behaviors/ThermostatBehavior.d.ts +0 -11
  120. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -1
  121. package/dist/matter/behaviors/ThermostatBehavior.js +0 -39
  122. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -1
  123. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +0 -17
  124. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -1
  125. package/dist/matter/behaviors/WindowCoveringBehavior.js +0 -56
  126. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -1
  127. package/dist/matter/behaviors/index.d.ts +0 -5
  128. package/dist/matter/behaviors/index.d.ts.map +1 -1
  129. package/dist/matter/behaviors/index.js +0 -5
  130. package/dist/matter/behaviors/index.js.map +1 -1
  131. package/dist/matter/configValidator.d.ts +0 -55
  132. package/dist/matter/configValidator.d.ts.map +1 -1
  133. package/dist/matter/configValidator.js +1 -68
  134. package/dist/matter/configValidator.js.map +1 -1
  135. package/dist/matter/errorHandler.d.ts +0 -22
  136. package/dist/matter/errorHandler.d.ts.map +1 -1
  137. package/dist/matter/errorHandler.js +0 -32
  138. package/dist/matter/errorHandler.js.map +1 -1
  139. package/dist/matter/errors.d.ts +0 -132
  140. package/dist/matter/errors.d.ts.map +1 -1
  141. package/dist/matter/errors.js +0 -132
  142. package/dist/matter/errors.js.map +1 -1
  143. package/dist/matter/index.d.ts +0 -30
  144. package/dist/matter/index.d.ts.map +1 -1
  145. package/dist/matter/index.js +0 -13
  146. package/dist/matter/index.js.map +1 -1
  147. package/dist/matter/logFormatter.d.ts +0 -17
  148. package/dist/matter/logFormatter.d.ts.map +1 -1
  149. package/dist/matter/logFormatter.js +5 -63
  150. package/dist/matter/logFormatter.js.map +1 -1
  151. package/dist/matter/server.d.ts +12 -236
  152. package/dist/matter/server.d.ts.map +1 -1
  153. package/dist/matter/server.js +177 -488
  154. package/dist/matter/server.js.map +1 -1
  155. package/dist/matter/serverHelpers.d.ts +0 -56
  156. package/dist/matter/serverHelpers.d.ts.map +1 -1
  157. package/dist/matter/serverHelpers.js +1 -66
  158. package/dist/matter/serverHelpers.js.map +1 -1
  159. package/dist/matter/sharedTypes.d.ts +0 -83
  160. package/dist/matter/sharedTypes.d.ts.map +1 -1
  161. package/dist/matter/sharedTypes.js +0 -26
  162. package/dist/matter/sharedTypes.js.map +1 -1
  163. package/dist/matter/storage.d.ts +0 -90
  164. package/dist/matter/storage.d.ts.map +1 -1
  165. package/dist/matter/storage.js +2 -130
  166. package/dist/matter/storage.js.map +1 -1
  167. package/dist/matter/typeHelpers.d.ts +0 -30
  168. package/dist/matter/typeHelpers.d.ts.map +1 -1
  169. package/dist/matter/typeHelpers.js +0 -24
  170. package/dist/matter/typeHelpers.js.map +1 -1
  171. package/dist/matter/types.d.ts +0 -273
  172. package/dist/matter/types.d.ts.map +1 -1
  173. package/dist/matter/types.js +0 -83
  174. package/dist/matter/types.js.map +1 -1
  175. package/dist/platformAccessory.d.ts +0 -15
  176. package/dist/platformAccessory.d.ts.map +1 -1
  177. package/dist/platformAccessory.js +6 -32
  178. package/dist/platformAccessory.js.map +1 -1
  179. package/dist/plugin.d.ts +0 -3
  180. package/dist/plugin.d.ts.map +1 -1
  181. package/dist/plugin.js +6 -29
  182. package/dist/plugin.js.map +1 -1
  183. package/dist/pluginManager.d.ts +0 -22
  184. package/dist/pluginManager.d.ts.map +1 -1
  185. package/dist/pluginManager.js +18 -41
  186. package/dist/pluginManager.js.map +1 -1
  187. package/dist/server.d.ts +9 -29
  188. package/dist/server.d.ts.map +1 -1
  189. package/dist/server.js +308 -157
  190. package/dist/server.js.map +1 -1
  191. package/dist/user.d.ts +0 -3
  192. package/dist/user.d.ts.map +1 -1
  193. package/dist/user.js +2 -5
  194. package/dist/user.js.map +1 -1
  195. package/dist/util/mac.js +0 -1
  196. package/dist/util/mac.js.map +1 -1
  197. package/package.json +4 -4
  198. package/dist/api.spec.d.ts +0 -2
  199. package/dist/api.spec.d.ts.map +0 -1
  200. package/dist/api.spec.js +0 -413
  201. package/dist/api.spec.js.map +0 -1
  202. package/dist/logger.spec.d.ts +0 -2
  203. package/dist/logger.spec.d.ts.map +0 -1
  204. package/dist/logger.spec.js +0 -95
  205. package/dist/logger.spec.js.map +0 -1
  206. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +0 -2
  207. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +0 -1
  208. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +0 -293
  209. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +0 -1
  210. package/dist/matter/accessoryCache.spec.d.ts +0 -2
  211. package/dist/matter/accessoryCache.spec.d.ts.map +0 -1
  212. package/dist/matter/accessoryCache.spec.js +0 -452
  213. package/dist/matter/accessoryCache.spec.js.map +0 -1
  214. package/dist/matter/behaviors/AirQualityBehavior.spec.d.ts +0 -5
  215. package/dist/matter/behaviors/AirQualityBehavior.spec.d.ts.map +0 -1
  216. package/dist/matter/behaviors/AirQualityBehavior.spec.js +0 -46
  217. package/dist/matter/behaviors/AirQualityBehavior.spec.js.map +0 -1
  218. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +0 -2
  219. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +0 -1
  220. package/dist/matter/behaviors/BehaviorRegistry.spec.js +0 -307
  221. package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +0 -1
  222. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +0 -2
  223. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +0 -1
  224. package/dist/matter/behaviors/ColorControlBehavior.spec.js +0 -29
  225. package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +0 -1
  226. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.d.ts +0 -5
  227. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.d.ts.map +0 -1
  228. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.js +0 -95
  229. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.spec.js.map +0 -1
  230. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +0 -2
  231. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +0 -1
  232. package/dist/matter/behaviors/DoorLockBehavior.spec.js +0 -120
  233. package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +0 -1
  234. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +0 -2
  235. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +0 -1
  236. package/dist/matter/behaviors/FanControlBehavior.spec.js +0 -23
  237. package/dist/matter/behaviors/FanControlBehavior.spec.js.map +0 -1
  238. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +0 -2
  239. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +0 -1
  240. package/dist/matter/behaviors/IdentifyBehavior.spec.js +0 -64
  241. package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +0 -1
  242. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +0 -2
  243. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +0 -1
  244. package/dist/matter/behaviors/LevelControlBehavior.spec.js +0 -145
  245. package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +0 -1
  246. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +0 -2
  247. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +0 -1
  248. package/dist/matter/behaviors/OnOffBehavior.spec.js +0 -128
  249. package/dist/matter/behaviors/OnOffBehavior.spec.js.map +0 -1
  250. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +0 -2
  251. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +0 -1
  252. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +0 -57
  253. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +0 -1
  254. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +0 -2
  255. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +0 -1
  256. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +0 -55
  257. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +0 -1
  258. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +0 -2
  259. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +0 -1
  260. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +0 -57
  261. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +0 -1
  262. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +0 -2
  263. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +0 -1
  264. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +0 -53
  265. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +0 -1
  266. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +0 -2
  267. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +0 -1
  268. package/dist/matter/behaviors/ThermostatBehavior.spec.js +0 -23
  269. package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +0 -1
  270. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +0 -2
  271. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +0 -1
  272. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +0 -27
  273. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +0 -1
  274. package/dist/matter/configValidator.spec.d.ts +0 -2
  275. package/dist/matter/configValidator.spec.d.ts.map +0 -1
  276. package/dist/matter/configValidator.spec.js +0 -390
  277. package/dist/matter/configValidator.spec.js.map +0 -1
  278. package/dist/matter/errorHandler.spec.d.ts +0 -2
  279. package/dist/matter/errorHandler.spec.d.ts.map +0 -1
  280. package/dist/matter/errorHandler.spec.js +0 -159
  281. package/dist/matter/errorHandler.spec.js.map +0 -1
  282. package/dist/matter/logFormatter.spec.d.ts +0 -2
  283. package/dist/matter/logFormatter.spec.d.ts.map +0 -1
  284. package/dist/matter/logFormatter.spec.js +0 -252
  285. package/dist/matter/logFormatter.spec.js.map +0 -1
  286. package/dist/matter/serverHelpers.spec.d.ts +0 -2
  287. package/dist/matter/serverHelpers.spec.d.ts.map +0 -1
  288. package/dist/matter/serverHelpers.spec.js +0 -527
  289. package/dist/matter/serverHelpers.spec.js.map +0 -1
  290. package/dist/matter/storage.spec.d.ts +0 -2
  291. package/dist/matter/storage.spec.d.ts.map +0 -1
  292. package/dist/matter/storage.spec.js +0 -570
  293. package/dist/matter/storage.spec.js.map +0 -1
  294. package/dist/matter/typeHelpers.spec.d.ts +0 -2
  295. package/dist/matter/typeHelpers.spec.d.ts.map +0 -1
  296. package/dist/matter/typeHelpers.spec.js +0 -127
  297. package/dist/matter/typeHelpers.spec.js.map +0 -1
  298. package/dist/platformAccessory.spec.d.ts +0 -2
  299. package/dist/platformAccessory.spec.d.ts.map +0 -1
  300. package/dist/platformAccessory.spec.js +0 -126
  301. package/dist/platformAccessory.spec.js.map +0 -1
  302. package/dist/pluginManager.spec.d.ts +0 -2
  303. package/dist/pluginManager.spec.d.ts.map +0 -1
  304. package/dist/pluginManager.spec.js +0 -43
  305. package/dist/pluginManager.spec.js.map +0 -1
  306. package/dist/server.spec.d.ts +0 -2
  307. package/dist/server.spec.d.ts.map +0 -1
  308. package/dist/server.spec.js +0 -57
  309. package/dist/server.spec.js.map +0 -1
  310. package/dist/user.spec.d.ts +0 -2
  311. package/dist/user.spec.d.ts.map +0 -1
  312. package/dist/user.spec.js +0 -31
  313. package/dist/user.spec.js.map +0 -1
  314. package/dist/util/mac.spec.d.ts +0 -2
  315. package/dist/util/mac.spec.d.ts.map +0 -1
  316. package/dist/util/mac.spec.js +0 -36
  317. package/dist/util/mac.spec.js.map +0 -1
  318. package/dist/version.spec.d.ts +0 -2
  319. package/dist/version.spec.d.ts.map +0 -1
  320. package/dist/version.spec.js +0 -20
  321. package/dist/version.spec.js.map +0 -1
@@ -8,51 +8,24 @@ import type { Plugin } from './plugin.js';
8
8
  import type { HomebridgeOptions } from './server.js';
9
9
  import { PluginType } from './api.js';
10
10
  export declare const enum ChildProcessMessageEventType {
11
- /**
12
- * Sent from the child process when it is ready to accept config
13
- */
14
11
  READY = "ready",
15
- /**
16
- * Sent to the child process with a ChildProcessLoadEventData payload
17
- */
18
12
  LOAD = "load",
19
- /**
20
- * Sent from the child process once it has loaded the plugin
21
- */
22
13
  LOADED = "loaded",
23
- /**
24
- * Sent to the child process telling it to start
25
- */
26
14
  START = "start",
27
- /**
28
- * Sent from the child process when the bridge is online
29
- */
30
15
  ONLINE = "online",
31
- /**
32
- * Sent from the child when it wants to request port allocation for an external accessory
33
- */
34
16
  PORT_REQUEST = "portRequest",
35
- /**
36
- * Sent from the parent with the port allocation response
37
- */
38
17
  PORT_ALLOCATED = "portAllocated",
39
- /**
40
- * Sent from the child to update its current status
41
- */
42
- STATUS_UPDATE = "status"
18
+ STATUS_UPDATE = "status",
19
+ START_MATTER_MONITORING = "startMatterMonitoring",
20
+ STOP_MATTER_MONITORING = "stopMatterMonitoring",
21
+ GET_MATTER_ACCESSORIES = "getMatterAccessories",
22
+ GET_MATTER_ACCESSORY_INFO = "getMatterAccessoryInfo",
23
+ MATTER_ACCESSORY_CONTROL = "matterAccessoryControl",
24
+ MATTER_EVENT = "matterEvent"
43
25
  }
44
26
  export declare const enum ChildBridgeStatus {
45
- /**
46
- * When the child bridge is loading, or restarting
47
- */
48
27
  PENDING = "pending",
49
- /**
50
- * The child bridge is online and has published it's accessory
51
- */
52
28
  OK = "ok",
53
- /**
54
- * The bridge is shutting down, or the process ended unexpectedly
55
- */
56
29
  DOWN = "down"
57
30
  }
58
31
  export interface ChildProcessMessageEvent<T> {
@@ -90,15 +63,6 @@ export interface ChildBridgePairedStatusEventData {
90
63
  deviceCount: number;
91
64
  };
92
65
  }
93
- /**
94
- * Child bridge metadata
95
- *
96
- * Contains all metadata for a child bridge, including HAP properties
97
- * like paired status, setupUri, and pin.
98
- *
99
- * When Matter is enabled (_bridge.matter is configured), this interface
100
- * also includes Matter commissioning information for unified status reporting.
101
- */
102
66
  export interface ChildMetadata {
103
67
  status: ChildBridgeStatus;
104
68
  paired?: boolean | null;
@@ -119,10 +83,6 @@ export interface ChildMetadata {
119
83
  matterCommissioned?: boolean;
120
84
  matterDeviceCount?: number;
121
85
  }
122
- /**
123
- * Manages the child processes of platforms/accessories being exposed as separate forked bridges.
124
- * A child bridge runs a single platform or accessory.
125
- */
126
86
  export declare class ChildBridgeService {
127
87
  type: PluginType;
128
88
  identifier: string;
@@ -147,83 +107,39 @@ export declare class ChildBridgeService {
147
107
  private displayName?;
148
108
  private restartCount;
149
109
  private readonly maxRestarts;
110
+ lastMatterAccessoriesResponse?: {
111
+ accessories: any[];
112
+ bridgeUsername: string;
113
+ };
150
114
  constructor(type: PluginType, identifier: string, plugin: Plugin, bridgeConfig: BridgeConfiguration, homebridgeConfig: HomebridgeConfig, homebridgeOptions: HomebridgeOptions, api: HomebridgeAPI, ipcService: IpcService, externalPortService: ExternalPortService);
151
- /**
152
- * Start the child bridge service
153
- */
154
115
  start(): void;
155
- /**
156
- * Add a config block to a child bridge.
157
- * Platform child bridges can only contain one config block.
158
- * @param config
159
- */
160
116
  addConfig(config: PlatformConfig | AccessoryConfig): void;
117
+ startMatterMonitoring(): void;
118
+ stopMatterMonitoring(): void;
119
+ getMatterAccessories(): void;
120
+ getMatterAccessoryInfo(uuid: string): void;
121
+ controlMatterAccessory(data: {
122
+ uuid: string;
123
+ cluster: string;
124
+ attributes: Record<string, unknown>;
125
+ partId?: string;
126
+ }): void;
161
127
  private get bridgeStatus();
162
128
  private set bridgeStatus(value);
163
- /**
164
- * Start the child bridge process
165
- */
166
129
  private startChildProcess;
167
- /**
168
- * Called when the child bridge process exits, if Homebridge is not shutting down, it will restart the process
169
- * @param code
170
- * @param signal
171
- */
172
130
  private handleProcessClose;
173
- /**
174
- * Helper function to send a message to the child process
175
- * @param type
176
- * @param data
177
- */
178
131
  private sendMessage;
179
- /**
180
- * Some plugins may make use of the homebridge process flags
181
- * These will be passed through to the forked process
182
- */
183
132
  private setProcessFlags;
184
- /**
185
- * Set environment variables for the child process
186
- */
187
133
  private setProcessEnv;
188
- /**
189
- * Tell the child process to load the given plugin
190
- */
191
134
  private loadPlugin;
192
- /**
193
- * Tell the child bridge to start broadcasting
194
- */
195
135
  private startBridge;
196
- /**
197
- * Handle external port requests from child
198
- */
199
136
  private handlePortRequest;
200
- /**
201
- * Send sigterm to the child bridge
202
- */
203
137
  private teardown;
204
- /**
205
- * Trigger sending child bridge metadata to the process parent via IPC
206
- */
207
138
  private sendStatusUpdate;
208
- /**
209
- * Restarts the child bridge process
210
- */
211
139
  restartChildBridge(): void;
212
- /**
213
- * Stops the child bridge, not starting it again
214
- */
215
140
  stopChildBridge(): void;
216
- /**
217
- * Starts the child bridge, only if it was manually stopped and is no longer running
218
- */
219
141
  startChildBridge(): void;
220
- /**
221
- * Read the config.json file from disk and refresh the plugin config block for just this plugin
222
- */
223
142
  refreshConfig(): Promise<void>;
224
- /**
225
- * Returns metadata about this child bridge
226
- */
227
143
  getMetadata(): ChildMetadata;
228
144
  }
229
145
  //# sourceMappingURL=childBridgeService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"childBridgeService.d.ts","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"childBridgeService.d.ts","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"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"}
@@ -7,62 +7,29 @@ import { Logger } from './logger.js';
7
7
  import { User } from './user.js';
8
8
  const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = dirname(__filename);
10
- // eslint-disable-next-line no-restricted-syntax
11
10
  export var ChildProcessMessageEventType;
12
11
  (function (ChildProcessMessageEventType) {
13
- /**
14
- * Sent from the child process when it is ready to accept config
15
- */
16
12
  ChildProcessMessageEventType["READY"] = "ready";
17
- /**
18
- * Sent to the child process with a ChildProcessLoadEventData payload
19
- */
20
13
  ChildProcessMessageEventType["LOAD"] = "load";
21
- /**
22
- * Sent from the child process once it has loaded the plugin
23
- */
24
14
  ChildProcessMessageEventType["LOADED"] = "loaded";
25
- /**
26
- * Sent to the child process telling it to start
27
- */
28
15
  ChildProcessMessageEventType["START"] = "start";
29
- /**
30
- * Sent from the child process when the bridge is online
31
- */
32
16
  ChildProcessMessageEventType["ONLINE"] = "online";
33
- /**
34
- * Sent from the child when it wants to request port allocation for an external accessory
35
- */
36
17
  ChildProcessMessageEventType["PORT_REQUEST"] = "portRequest";
37
- /**
38
- * Sent from the parent with the port allocation response
39
- */
40
18
  ChildProcessMessageEventType["PORT_ALLOCATED"] = "portAllocated";
41
- /**
42
- * Sent from the child to update its current status
43
- */
44
19
  ChildProcessMessageEventType["STATUS_UPDATE"] = "status";
20
+ ChildProcessMessageEventType["START_MATTER_MONITORING"] = "startMatterMonitoring";
21
+ ChildProcessMessageEventType["STOP_MATTER_MONITORING"] = "stopMatterMonitoring";
22
+ ChildProcessMessageEventType["GET_MATTER_ACCESSORIES"] = "getMatterAccessories";
23
+ ChildProcessMessageEventType["GET_MATTER_ACCESSORY_INFO"] = "getMatterAccessoryInfo";
24
+ ChildProcessMessageEventType["MATTER_ACCESSORY_CONTROL"] = "matterAccessoryControl";
25
+ ChildProcessMessageEventType["MATTER_EVENT"] = "matterEvent";
45
26
  })(ChildProcessMessageEventType || (ChildProcessMessageEventType = {}));
46
- // eslint-disable-next-line no-restricted-syntax
47
27
  export var ChildBridgeStatus;
48
28
  (function (ChildBridgeStatus) {
49
- /**
50
- * When the child bridge is loading, or restarting
51
- */
52
29
  ChildBridgeStatus["PENDING"] = "pending";
53
- /**
54
- * The child bridge is online and has published it's accessory
55
- */
56
30
  ChildBridgeStatus["OK"] = "ok";
57
- /**
58
- * The bridge is shutting down, or the process ended unexpectedly
59
- */
60
31
  ChildBridgeStatus["DOWN"] = "down";
61
32
  })(ChildBridgeStatus || (ChildBridgeStatus = {}));
62
- /**
63
- * Manages the child processes of platforms/accessories being exposed as separate forked bridges.
64
- * A child bridge runs a single platform or accessory.
65
- */
66
33
  export class ChildBridgeService {
67
34
  type;
68
35
  identifier;
@@ -77,7 +44,7 @@ export class ChildBridgeService {
77
44
  args = [];
78
45
  processEnv = {};
79
46
  shuttingDown = false;
80
- lastBridgeStatus = "pending" /* ChildBridgeStatus.PENDING */;
47
+ lastBridgeStatus = "pending";
81
48
  pairedStatus = null;
82
49
  manuallyStopped = false;
83
50
  setupUri = null;
@@ -87,6 +54,7 @@ export class ChildBridgeService {
87
54
  displayName;
88
55
  restartCount = 0;
89
56
  maxRestarts = 4;
57
+ lastMatterAccessoriesResponse;
90
58
  constructor(type, identifier, plugin, bridgeConfig, homebridgeConfig, homebridgeOptions, api, ipcService, externalPortService) {
91
59
  this.type = type;
92
60
  this.identifier = identifier;
@@ -102,34 +70,38 @@ export class ChildBridgeService {
102
70
  this.shuttingDown = true;
103
71
  this.teardown();
104
72
  });
105
- // make sure we don't hit the max listeners limit
106
73
  this.api.setMaxListeners(this.api.getMaxListeners() + 1);
107
74
  }
108
- /**
109
- * Start the child bridge service
110
- */
111
75
  start() {
112
76
  this.setProcessFlags();
113
77
  this.setProcessEnv();
114
78
  this.startChildProcess();
115
- // set display name
116
79
  if (this.pluginConfig.length > 1 || this.pluginConfig.length === 0) {
117
80
  this.displayName = this.plugin.getPluginIdentifier();
118
81
  }
119
82
  else {
120
83
  this.displayName = this.pluginConfig[0]?.name || this.plugin.getPluginIdentifier();
121
84
  }
122
- // re-configured log with display name
123
85
  this.log = Logger.withPrefix(this.displayName);
124
86
  }
125
- /**
126
- * Add a config block to a child bridge.
127
- * Platform child bridges can only contain one config block.
128
- * @param config
129
- */
130
87
  addConfig(config) {
131
88
  this.pluginConfig.push(config);
132
89
  }
90
+ startMatterMonitoring() {
91
+ this.sendMessage("startMatterMonitoring");
92
+ }
93
+ stopMatterMonitoring() {
94
+ this.sendMessage("stopMatterMonitoring");
95
+ }
96
+ getMatterAccessories() {
97
+ this.sendMessage("getMatterAccessories");
98
+ }
99
+ getMatterAccessoryInfo(uuid) {
100
+ this.sendMessage("getMatterAccessoryInfo", { uuid });
101
+ }
102
+ controlMatterAccessory(data) {
103
+ this.sendMessage("matterAccessoryControl", data);
104
+ }
133
105
  get bridgeStatus() {
134
106
  return this.lastBridgeStatus;
135
107
  }
@@ -137,11 +109,8 @@ export class ChildBridgeService {
137
109
  this.lastBridgeStatus = value;
138
110
  this.sendStatusUpdate();
139
111
  }
140
- /**
141
- * Start the child bridge process
142
- */
143
112
  startChildProcess() {
144
- this.bridgeStatus = "pending" /* ChildBridgeStatus.PENDING */;
113
+ this.bridgeStatus = "pending";
145
114
  this.child = fork(resolve(__dirname, 'childBridgeFork.js'), this.args, this.processEnv);
146
115
  this.child.stdout?.on('data', (data) => {
147
116
  process.stdout.write(data);
@@ -150,24 +119,23 @@ export class ChildBridgeService {
150
119
  process.stderr.write(data);
151
120
  });
152
121
  this.child.on('error', (e) => {
153
- this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
122
+ this.bridgeStatus = "down";
154
123
  this.log.error('Child bridge process error', e);
155
124
  });
156
125
  this.child.once('close', (code, signal) => {
157
126
  this.handleProcessClose(code, signal);
158
127
  });
159
- // handle incoming ipc messages from the child process
160
128
  this.child.on('message', (message) => {
161
129
  if (typeof message !== 'object' || !message.id) {
162
130
  return;
163
131
  }
164
132
  switch (message.id) {
165
- case "ready" /* ChildProcessMessageEventType.READY */: {
133
+ case "ready": {
166
134
  this.log(`Child bridge starting${this.child?.pid ? ` (pid ${this.child.pid})` : ''}...`);
167
135
  this.loadPlugin();
168
136
  break;
169
137
  }
170
- case "loaded" /* ChildProcessMessageEventType.LOADED */: {
138
+ case "loaded": {
171
139
  const version = message.data.version;
172
140
  if (this.pluginConfig.length > 1) {
173
141
  this.log.success(`Child bridge started successfully with ${this.pluginConfig.length} accessories (plugin v${version}).`);
@@ -178,21 +146,18 @@ export class ChildBridgeService {
178
146
  this.startBridge();
179
147
  break;
180
148
  }
181
- case "online" /* ChildProcessMessageEventType.ONLINE */: {
182
- this.bridgeStatus = "ok" /* ChildBridgeStatus.OK */;
149
+ case "online": {
150
+ this.bridgeStatus = "ok";
183
151
  break;
184
152
  }
185
- case "portRequest" /* ChildProcessMessageEventType.PORT_REQUEST */: {
153
+ case "portRequest": {
186
154
  this.handlePortRequest(message.data);
187
155
  break;
188
156
  }
189
- case "status" /* ChildProcessMessageEventType.STATUS_UPDATE */: {
190
- // Handle unified status update with HAP and Matter info
157
+ case "status": {
191
158
  const statusData = message.data;
192
- // Update HAP status
193
159
  this.pairedStatus = statusData.paired;
194
160
  this.setupUri = statusData.setupUri;
195
- // Update Matter commissioning info if included
196
161
  if (statusData.matter) {
197
162
  this.matterCommissioningInfo = {
198
163
  qrCode: statusData.matter.qrCode,
@@ -202,18 +167,22 @@ export class ChildBridgeService {
202
167
  deviceCount: statusData.matter.deviceCount,
203
168
  };
204
169
  }
205
- // Send unified status update
206
170
  this.sendStatusUpdate();
207
171
  break;
208
172
  }
173
+ case "matterEvent": {
174
+ const matterEvent = message.data;
175
+ if (matterEvent.type === 'accessoriesData') {
176
+ this.lastMatterAccessoriesResponse = matterEvent.data;
177
+ }
178
+ else {
179
+ this.ipcService.sendMessage("matterEvent", matterEvent);
180
+ }
181
+ break;
182
+ }
209
183
  }
210
184
  });
211
185
  }
212
- /**
213
- * Called when the child bridge process exits, if Homebridge is not shutting down, it will restart the process
214
- * @param code
215
- * @param signal
216
- */
217
186
  handleProcessClose(code, signal) {
218
187
  const isLikelyPluginCrash = code === 1 && signal === null;
219
188
  this.log.warn(`Child bridge ended (code ${code}, signal ${signal}).${isLikelyPluginCrash
@@ -222,9 +191,9 @@ export class ChildBridgeService {
222
191
  : ''}`);
223
192
  if (isLikelyPluginCrash) {
224
193
  if (this.restartCount < this.maxRestarts) {
225
- this.bridgeStatus = "pending" /* ChildBridgeStatus.PENDING */;
194
+ this.bridgeStatus = "pending";
226
195
  this.restartCount += 1;
227
- const delay = this.restartCount * 10; // first attempt after 10 seconds, second after 20 seconds, etc.
196
+ const delay = this.restartCount * 10;
228
197
  this.log(`Child bridge will automatically restart in ${delay} seconds (restart attempt ${this.restartCount} of ${this.maxRestarts}).`);
229
198
  setTimeout(() => {
230
199
  if (!this.shuttingDown) {
@@ -233,23 +202,18 @@ export class ChildBridgeService {
233
202
  }, delay * 1000);
234
203
  }
235
204
  else {
236
- this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
205
+ this.bridgeStatus = "down";
237
206
  this.manuallyStopped = true;
238
207
  this.log.error(`Child bridge will no longer restart after failing ${this.maxRestarts + 1} times, you will need to manually start this child bridge from the Homebridge UI.`);
239
208
  }
240
209
  return;
241
210
  }
242
211
  if (!this.shuttingDown) {
243
- this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
212
+ this.bridgeStatus = "down";
244
213
  this.restartCount = 0;
245
214
  this.startChildProcess();
246
215
  }
247
216
  }
248
- /**
249
- * Helper function to send a message to the child process
250
- * @param type
251
- * @param data
252
- */
253
217
  sendMessage(type, data) {
254
218
  if (this.child && this.child.connected) {
255
219
  this.child.send({
@@ -258,10 +222,6 @@ export class ChildBridgeService {
258
222
  });
259
223
  }
260
224
  }
261
- /**
262
- * Some plugins may make use of the homebridge process flags
263
- * These will be passed through to the forked process
264
- */
265
225
  setProcessFlags() {
266
226
  if (this.bridgeConfig.debugModeEnabled) {
267
227
  this.args.push('-D');
@@ -285,9 +245,6 @@ export class ChildBridgeService {
285
245
  this.args.push('-P', this.homebridgeOptions.customPluginPath);
286
246
  }
287
247
  }
288
- /**
289
- * Set environment variables for the child process
290
- */
291
248
  setProcessEnv() {
292
249
  this.processEnv = {
293
250
  env: {
@@ -298,9 +255,6 @@ export class ChildBridgeService {
298
255
  silent: true,
299
256
  };
300
257
  }
301
- /**
302
- * Tell the child process to load the given plugin
303
- */
304
258
  loadPlugin() {
305
259
  const bridgeConfig = {
306
260
  name: this.bridgeConfig.name || this.displayName || this.plugin.getPluginIdentifier(),
@@ -320,13 +274,11 @@ export class ChildBridgeService {
320
274
  cachedAccessoriesDir: User.cachedAccessoryPath(),
321
275
  cachedAccessoriesItemName: `cachedAccessories.${this.bridgeConfig.username.replace(/:/g, '').toUpperCase()}`,
322
276
  };
323
- // shallow copy the homebridge options to the bridge options object
324
277
  Object.assign(bridgeOptions, this.homebridgeOptions);
325
- // Override with child bridge specific settings
326
278
  if (this.bridgeConfig.debugModeEnabled !== undefined) {
327
279
  bridgeOptions.debugModeEnabled = this.bridgeConfig.debugModeEnabled;
328
280
  }
329
- this.sendMessage("load" /* ChildProcessMessageEventType.LOAD */, {
281
+ this.sendMessage("load", {
330
282
  type: this.type,
331
283
  identifier: this.identifier,
332
284
  pluginPath: this.plugin.getPluginPath(),
@@ -336,54 +288,37 @@ export class ChildBridgeService {
336
288
  homebridgeConfig: {
337
289
  bridge: this.homebridgeConfig.bridge,
338
290
  ports: this.homebridgeConfig.ports,
339
- disabledPlugins: [], // not used by child bridges
340
- accessories: [], // not used by child bridges
341
- platforms: [], // not used by child bridges
291
+ disabledPlugins: [],
292
+ accessories: [],
293
+ platforms: [],
342
294
  },
343
295
  });
344
296
  }
345
- /**
346
- * Tell the child bridge to start broadcasting
347
- */
348
297
  startBridge() {
349
- this.sendMessage("start" /* ChildProcessMessageEventType.START */);
298
+ this.sendMessage("start");
350
299
  }
351
- /**
352
- * Handle external port requests from child
353
- */
354
300
  async handlePortRequest(request) {
355
301
  let port;
356
302
  if (request.portType === 'matter') {
357
- // Request from Matter port pool
358
303
  port = await this.externalPortService.requestMatterPort(request.username);
359
304
  }
360
305
  else {
361
- // Request from HAP port pool (default)
362
306
  port = await this.externalPortService.requestPort(request.username);
363
307
  }
364
- this.sendMessage("portAllocated" /* ChildProcessMessageEventType.PORT_ALLOCATED */, {
308
+ this.sendMessage("portAllocated", {
365
309
  username: request.username,
366
310
  port,
367
311
  });
368
312
  }
369
- /**
370
- * Send sigterm to the child bridge
371
- */
372
313
  teardown() {
373
314
  if (this.child && this.child.connected) {
374
- this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
315
+ this.bridgeStatus = "down";
375
316
  this.child.kill('SIGTERM');
376
317
  }
377
318
  }
378
- /**
379
- * Trigger sending child bridge metadata to the process parent via IPC
380
- */
381
319
  sendStatusUpdate() {
382
- this.ipcService.sendMessage("childBridgeStatusUpdate" /* IpcOutgoingEvent.CHILD_BRIDGE_STATUS_UPDATE */, this.getMetadata());
320
+ this.ipcService.sendMessage("childBridgeStatusUpdate", this.getMetadata());
383
321
  }
384
- /**
385
- * Restarts the child bridge process
386
- */
387
322
  restartChildBridge() {
388
323
  if (this.manuallyStopped) {
389
324
  this.restartCount = 0;
@@ -395,16 +330,13 @@ export class ChildBridgeService {
395
330
  this.teardown();
396
331
  }
397
332
  }
398
- /**
399
- * Stops the child bridge, not starting it again
400
- */
401
333
  stopChildBridge() {
402
334
  if (!this.shuttingDown) {
403
335
  this.log.warn('Child bridge stopping, will not restart.');
404
336
  this.shuttingDown = true;
405
337
  this.manuallyStopped = true;
406
338
  this.restartCount = 0;
407
- this.bridgeStatus = "down" /* ChildBridgeStatus.DOWN */;
339
+ this.bridgeStatus = "down";
408
340
  this.child?.removeAllListeners('close');
409
341
  this.teardown();
410
342
  }
@@ -412,11 +344,8 @@ export class ChildBridgeService {
412
344
  this.log.warn('Child bridge already shutting down or stopped.');
413
345
  }
414
346
  }
415
- /**
416
- * Starts the child bridge, only if it was manually stopped and is no longer running
417
- */
418
347
  startChildBridge() {
419
- if (this.manuallyStopped && this.bridgeStatus === "down" /* ChildBridgeStatus.DOWN */ && (!this.child || !this.child.connected)) {
348
+ if (this.manuallyStopped && this.bridgeStatus === "down" && (!this.child || !this.child.connected)) {
420
349
  this.refreshConfig();
421
350
  this.startChildProcess();
422
351
  this.shuttingDown = false;
@@ -426,13 +355,10 @@ export class ChildBridgeService {
426
355
  this.log.warn('Child bridge cannot be started, it is still running or was not manually stopped.');
427
356
  }
428
357
  }
429
- /**
430
- * Read the config.json file from disk and refresh the plugin config block for just this plugin
431
- */
432
358
  async refreshConfig() {
433
359
  try {
434
360
  const homebridgeConfig = await fs.readJson(User.configPath());
435
- if (this.type === "platform" /* PluginType.PLATFORM */) {
361
+ if (this.type === "platform") {
436
362
  const config = homebridgeConfig.platforms?.filter(x => x.platform === this.identifier && x._bridge?.username === this.bridgeConfig.username);
437
363
  if (config.length) {
438
364
  this.pluginConfig = config;
@@ -442,7 +368,7 @@ export class ChildBridgeService {
442
368
  this.log.warn('Platform config could not be found, using existing config.');
443
369
  }
444
370
  }
445
- else if (this.type === "accessory" /* PluginType.ACCESSORY */) {
371
+ else if (this.type === "accessory") {
446
372
  const config = homebridgeConfig.accessories?.filter(x => x.accessory === this.identifier && x._bridge?.username === this.bridgeConfig.username);
447
373
  if (config.length) {
448
374
  this.pluginConfig = config;
@@ -457,9 +383,6 @@ export class ChildBridgeService {
457
383
  this.log.error('Failed to refresh plugin config:', error.message);
458
384
  }
459
385
  }
460
- /**
461
- * Returns metadata about this child bridge
462
- */
463
386
  getMetadata() {
464
387
  return {
465
388
  status: this.bridgeStatus,