homebridge 2.0.0-beta.6 → 2.0.0-beta.61

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 (286) 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 +136 -0
  5. package/dist/api.d.ts.map +1 -0
  6. package/dist/api.js +151 -0
  7. package/dist/api.js.map +1 -0
  8. package/{lib → dist}/bridgeService.d.ts +16 -32
  9. package/dist/bridgeService.d.ts.map +1 -0
  10. package/dist/bridgeService.js +341 -0
  11. package/dist/bridgeService.js.map +1 -0
  12. package/dist/childBridgeFork.d.ts +40 -0
  13. package/dist/childBridgeFork.d.ts.map +1 -0
  14. package/dist/childBridgeFork.js +361 -0
  15. package/dist/childBridgeFork.js.map +1 -0
  16. package/dist/childBridgeService.d.ts +146 -0
  17. package/dist/childBridgeService.d.ts.map +1 -0
  18. package/dist/childBridgeService.js +416 -0
  19. package/dist/childBridgeService.js.map +1 -0
  20. package/dist/cli.d.ts +3 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +88 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/externalPortService.d.ts +26 -0
  25. package/dist/externalPortService.d.ts.map +1 -0
  26. package/dist/externalPortService.js +77 -0
  27. package/dist/externalPortService.js.map +1 -0
  28. package/dist/index.d.ts +29 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +9 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/ipcService.d.ts +58 -0
  33. package/dist/ipcService.d.ts.map +1 -0
  34. package/dist/ipcService.js +43 -0
  35. package/dist/ipcService.js.map +1 -0
  36. package/dist/logger.d.ts +38 -0
  37. package/dist/logger.d.ts.map +1 -0
  38. package/dist/logger.js +102 -0
  39. package/dist/logger.js.map +1 -0
  40. package/dist/matter/BaseMatterManager.d.ts +21 -0
  41. package/dist/matter/BaseMatterManager.d.ts.map +1 -0
  42. package/dist/matter/BaseMatterManager.js +197 -0
  43. package/dist/matter/BaseMatterManager.js.map +1 -0
  44. package/dist/matter/ChildBridgeMatterManager.d.ts +35 -0
  45. package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
  46. package/dist/matter/ChildBridgeMatterManager.js +222 -0
  47. package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
  48. package/dist/matter/ClusterCommandMapper.d.ts +5 -0
  49. package/dist/matter/ClusterCommandMapper.d.ts.map +1 -0
  50. package/dist/matter/ClusterCommandMapper.js +222 -0
  51. package/dist/matter/ClusterCommandMapper.js.map +1 -0
  52. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +22 -0
  53. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
  54. package/dist/matter/ExternalMatterAccessoryPublisher.js +49 -0
  55. package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
  56. package/dist/matter/MatterAPIImpl.d.ts +473 -0
  57. package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
  58. package/dist/matter/MatterAPIImpl.js +210 -0
  59. package/dist/matter/MatterAPIImpl.js.map +1 -0
  60. package/dist/matter/MatterBridgeManager.d.ts +39 -0
  61. package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
  62. package/dist/matter/MatterBridgeManager.js +323 -0
  63. package/dist/matter/MatterBridgeManager.js.map +1 -0
  64. package/dist/matter/accessoryCache.d.ts +57 -0
  65. package/dist/matter/accessoryCache.d.ts.map +1 -0
  66. package/dist/matter/accessoryCache.js +155 -0
  67. package/dist/matter/accessoryCache.js.map +1 -0
  68. package/dist/matter/behaviors/AirQualityBehavior.d.ts +8 -0
  69. package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -0
  70. package/dist/matter/behaviors/AirQualityBehavior.js +11 -0
  71. package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -0
  72. package/dist/matter/behaviors/BehaviorRegistry.d.ts +27 -0
  73. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
  74. package/dist/matter/behaviors/BehaviorRegistry.js +110 -0
  75. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
  76. package/dist/matter/behaviors/ColorControlBehavior.d.ts +12 -0
  77. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
  78. package/dist/matter/behaviors/ColorControlBehavior.js +139 -0
  79. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
  80. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +32 -0
  81. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -0
  82. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +51 -0
  83. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -0
  84. package/dist/matter/behaviors/DoorLockBehavior.d.ts +7 -0
  85. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
  86. package/dist/matter/behaviors/DoorLockBehavior.js +48 -0
  87. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
  88. package/dist/matter/behaviors/FanControlBehavior.d.ts +7 -0
  89. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
  90. package/dist/matter/behaviors/FanControlBehavior.js +57 -0
  91. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
  92. package/dist/matter/behaviors/IdentifyBehavior.d.ts +7 -0
  93. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
  94. package/dist/matter/behaviors/IdentifyBehavior.js +25 -0
  95. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
  96. package/dist/matter/behaviors/LevelControlBehavior.d.ts +11 -0
  97. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
  98. package/dist/matter/behaviors/LevelControlBehavior.js +100 -0
  99. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
  100. package/dist/matter/behaviors/OnOffBehavior.d.ts +8 -0
  101. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
  102. package/dist/matter/behaviors/OnOffBehavior.js +60 -0
  103. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
  104. package/dist/matter/behaviors/RegistryManager.d.ts +15 -0
  105. package/dist/matter/behaviors/RegistryManager.d.ts.map +1 -0
  106. package/dist/matter/behaviors/RegistryManager.js +31 -0
  107. package/dist/matter/behaviors/RegistryManager.js.map +1 -0
  108. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +14 -0
  109. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
  110. package/dist/matter/behaviors/RvcCleanModeBehavior.js +29 -0
  111. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
  112. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +10 -0
  113. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
  114. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +81 -0
  115. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
  116. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +14 -0
  117. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
  118. package/dist/matter/behaviors/RvcRunModeBehavior.js +29 -0
  119. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
  120. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +9 -0
  121. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
  122. package/dist/matter/behaviors/ServiceAreaBehavior.js +62 -0
  123. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
  124. package/dist/matter/behaviors/ThermostatBehavior.d.ts +9 -0
  125. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
  126. package/dist/matter/behaviors/ThermostatBehavior.js +92 -0
  127. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
  128. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +12 -0
  129. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
  130. package/dist/matter/behaviors/WindowCoveringBehavior.js +108 -0
  131. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
  132. package/dist/matter/behaviors/index.d.ts +18 -0
  133. package/dist/matter/behaviors/index.d.ts.map +1 -0
  134. package/dist/matter/behaviors/index.js +17 -0
  135. package/dist/matter/behaviors/index.js.map +1 -0
  136. package/dist/matter/clusterTypes.d.ts +182 -0
  137. package/dist/matter/clusterTypes.d.ts.map +1 -0
  138. package/dist/matter/clusterTypes.js +2 -0
  139. package/dist/matter/clusterTypes.js.map +1 -0
  140. package/dist/matter/config.d.ts +9 -0
  141. package/dist/matter/config.d.ts.map +1 -0
  142. package/dist/matter/config.js +84 -0
  143. package/dist/matter/config.js.map +1 -0
  144. package/dist/matter/configValidator.d.ts +26 -0
  145. package/dist/matter/configValidator.d.ts.map +1 -0
  146. package/dist/matter/configValidator.js +173 -0
  147. package/dist/matter/configValidator.js.map +1 -0
  148. package/dist/matter/errorHandler.d.ts +11 -0
  149. package/dist/matter/errorHandler.d.ts.map +1 -0
  150. package/dist/matter/errorHandler.js +81 -0
  151. package/dist/matter/errorHandler.js.map +1 -0
  152. package/dist/matter/errors.d.ts +46 -0
  153. package/dist/matter/errors.d.ts.map +1 -0
  154. package/dist/matter/errors.js +68 -0
  155. package/dist/matter/errors.js.map +1 -0
  156. package/dist/matter/index.d.ts +97 -0
  157. package/dist/matter/index.d.ts.map +1 -0
  158. package/dist/matter/index.js +10 -0
  159. package/dist/matter/index.js.map +1 -0
  160. package/dist/matter/logFormatter.d.ts +2 -0
  161. package/dist/matter/logFormatter.d.ts.map +1 -0
  162. package/dist/matter/logFormatter.js +100 -0
  163. package/dist/matter/logFormatter.js.map +1 -0
  164. package/dist/matter/managerTypes.d.ts +57 -0
  165. package/dist/matter/managerTypes.d.ts.map +1 -0
  166. package/dist/matter/managerTypes.js +2 -0
  167. package/dist/matter/managerTypes.js.map +1 -0
  168. package/dist/matter/server.d.ts +112 -0
  169. package/dist/matter/server.d.ts.map +1 -0
  170. package/dist/matter/server.js +1508 -0
  171. package/dist/matter/server.js.map +1 -0
  172. package/dist/matter/serverHelpers.d.ts +31 -0
  173. package/dist/matter/serverHelpers.d.ts.map +1 -0
  174. package/dist/matter/serverHelpers.js +273 -0
  175. package/dist/matter/serverHelpers.js.map +1 -0
  176. package/dist/matter/sharedTypes.d.ts +93 -0
  177. package/dist/matter/sharedTypes.d.ts.map +1 -0
  178. package/dist/matter/sharedTypes.js +20 -0
  179. package/dist/matter/sharedTypes.js.map +1 -0
  180. package/dist/matter/storage.d.ts +45 -0
  181. package/dist/matter/storage.d.ts.map +1 -0
  182. package/dist/matter/storage.js +325 -0
  183. package/dist/matter/storage.js.map +1 -0
  184. package/dist/matter/typeHelpers.d.ts +15 -0
  185. package/dist/matter/typeHelpers.d.ts.map +1 -0
  186. package/dist/matter/typeHelpers.js +33 -0
  187. package/dist/matter/typeHelpers.js.map +1 -0
  188. package/dist/matter/types.d.ts +642 -0
  189. package/dist/matter/types.d.ts.map +1 -0
  190. package/dist/matter/types.js +208 -0
  191. package/dist/matter/types.js.map +1 -0
  192. package/dist/matter/utils.d.ts +13 -0
  193. package/dist/matter/utils.d.ts.map +1 -0
  194. package/dist/matter/utils.js +21 -0
  195. package/dist/matter/utils.js.map +1 -0
  196. package/{lib → dist}/platformAccessory.d.ts +8 -21
  197. package/dist/platformAccessory.d.ts.map +1 -0
  198. package/dist/platformAccessory.js +79 -0
  199. package/dist/platformAccessory.js.map +1 -0
  200. package/{lib → dist}/plugin.d.ts +2 -6
  201. package/dist/plugin.d.ts.map +1 -0
  202. package/dist/plugin.js +159 -0
  203. package/dist/plugin.js.map +1 -0
  204. package/{lib → dist}/pluginManager.d.ts +3 -25
  205. package/dist/pluginManager.d.ts.map +1 -0
  206. package/{lib → dist}/pluginManager.js +87 -115
  207. package/dist/pluginManager.js.map +1 -0
  208. package/{lib → dist}/server.d.ts +15 -20
  209. package/dist/server.d.ts.map +1 -0
  210. package/dist/server.js +727 -0
  211. package/dist/server.js.map +1 -0
  212. package/{lib → dist}/storageService.d.ts.map +1 -1
  213. package/dist/storageService.js +41 -0
  214. package/dist/storageService.js.map +1 -0
  215. package/{lib → dist}/user.d.ts +1 -3
  216. package/dist/user.d.ts.map +1 -0
  217. package/dist/user.js +29 -0
  218. package/dist/user.js.map +1 -0
  219. package/{lib → dist}/util/mac.d.ts +1 -0
  220. package/dist/util/mac.d.ts.map +1 -0
  221. package/dist/util/mac.js +13 -0
  222. package/dist/util/mac.js.map +1 -0
  223. package/dist/version.d.ts.map +1 -0
  224. package/dist/version.js +16 -0
  225. package/dist/version.js.map +1 -0
  226. package/package.json +49 -50
  227. package/bin/homebridge +0 -17
  228. package/lib/api.d.ts +0 -210
  229. package/lib/api.d.ts.map +0 -1
  230. package/lib/api.js +0 -155
  231. package/lib/api.js.map +0 -1
  232. package/lib/bridgeService.d.ts.map +0 -1
  233. package/lib/bridgeService.js +0 -426
  234. package/lib/bridgeService.js.map +0 -1
  235. package/lib/childBridgeFork.d.ts +0 -37
  236. package/lib/childBridgeFork.d.ts.map +0 -1
  237. package/lib/childBridgeFork.js +0 -244
  238. package/lib/childBridgeFork.js.map +0 -1
  239. package/lib/childBridgeService.d.ts +0 -199
  240. package/lib/childBridgeService.d.ts.map +0 -1
  241. package/lib/childBridgeService.js +0 -428
  242. package/lib/childBridgeService.js.map +0 -1
  243. package/lib/cli.d.ts +0 -4
  244. package/lib/cli.d.ts.map +0 -1
  245. package/lib/cli.js +0 -111
  246. package/lib/cli.js.map +0 -1
  247. package/lib/externalPortService.d.ts +0 -33
  248. package/lib/externalPortService.d.ts.map +0 -1
  249. package/lib/externalPortService.js +0 -64
  250. package/lib/externalPortService.js.map +0 -1
  251. package/lib/index.d.ts +0 -76
  252. package/lib/index.d.ts.map +0 -1
  253. package/lib/index.js +0 -72
  254. package/lib/index.js.map +0 -1
  255. package/lib/ipcService.d.ts +0 -33
  256. package/lib/ipcService.d.ts.map +0 -1
  257. package/lib/ipcService.js +0 -49
  258. package/lib/ipcService.js.map +0 -1
  259. package/lib/logger.d.ts +0 -78
  260. package/lib/logger.d.ts.map +0 -1
  261. package/lib/logger.js +0 -147
  262. package/lib/logger.js.map +0 -1
  263. package/lib/platformAccessory.d.ts.map +0 -1
  264. package/lib/platformAccessory.js +0 -102
  265. package/lib/platformAccessory.js.map +0 -1
  266. package/lib/plugin.d.ts.map +0 -1
  267. package/lib/plugin.js +0 -194
  268. package/lib/plugin.js.map +0 -1
  269. package/lib/pluginManager.d.ts.map +0 -1
  270. package/lib/pluginManager.js.map +0 -1
  271. package/lib/server.d.ts.map +0 -1
  272. package/lib/server.js +0 -457
  273. package/lib/server.js.map +0 -1
  274. package/lib/storageService.js +0 -70
  275. package/lib/storageService.js.map +0 -1
  276. package/lib/user.d.ts.map +0 -1
  277. package/lib/user.js +0 -36
  278. package/lib/user.js.map +0 -1
  279. package/lib/util/mac.d.ts.map +0 -1
  280. package/lib/util/mac.js +0 -20
  281. package/lib/util/mac.js.map +0 -1
  282. package/lib/version.d.ts.map +0 -1
  283. package/lib/version.js +0 -21
  284. package/lib/version.js.map +0 -1
  285. /package/{lib → dist}/storageService.d.ts +0 -0
  286. /package/{lib → dist}/version.d.ts +0 -0
@@ -0,0 +1,361 @@
1
+ import process from 'node:process';
2
+ import { HAPStorage } from 'hap-nodejs';
3
+ import { HomebridgeAPI } from './api.js';
4
+ import { BridgeService } from './bridgeService.js';
5
+ import { ChildBridgeExternalPortService } from './externalPortService.js';
6
+ import { Logger } from './logger.js';
7
+ import { PluginManager } from './pluginManager.js';
8
+ import { User } from './user.js';
9
+ import 'source-map-support/register.js';
10
+ process.title = 'homebridge: child bridge';
11
+ const matterLogger = Logger.withPrefix('Matter/ChildManager');
12
+ export class ChildBridgeFork {
13
+ bridgeService;
14
+ api;
15
+ pluginManager;
16
+ externalPortService;
17
+ matterManager;
18
+ type;
19
+ plugin;
20
+ identifier;
21
+ pluginConfig;
22
+ bridgeConfig;
23
+ bridgeOptions;
24
+ portRequestCallback = new Map();
25
+ constructor() {
26
+ this.sendMessage("ready");
27
+ }
28
+ sendMessage(type, data) {
29
+ if (process.send) {
30
+ process.send({
31
+ id: type,
32
+ data,
33
+ });
34
+ }
35
+ }
36
+ async loadPlugin(data) {
37
+ this.type = data.type;
38
+ this.identifier = data.identifier;
39
+ this.pluginConfig = data.pluginConfig;
40
+ this.bridgeConfig = data.bridgeConfig;
41
+ this.bridgeOptions = data.bridgeOptions;
42
+ for (const config of this.pluginConfig) {
43
+ delete config._bridge;
44
+ }
45
+ if (this.bridgeOptions.noLogTimestamps) {
46
+ Logger.setTimestampEnabled(false);
47
+ }
48
+ if (this.bridgeOptions.debugModeEnabled) {
49
+ Logger.setDebugEnabled(true);
50
+ }
51
+ if (this.bridgeOptions.forceColourLogging) {
52
+ Logger.forceColor();
53
+ }
54
+ if (this.bridgeOptions.customStoragePath) {
55
+ User.setStoragePath(this.bridgeOptions.customStoragePath);
56
+ }
57
+ HAPStorage.setCustomStoragePath(User.persistPath());
58
+ this.api = new HomebridgeAPI();
59
+ this.pluginManager = new PluginManager(this.api);
60
+ this.externalPortService = new ChildBridgeExternalPortService(this);
61
+ this.plugin = this.pluginManager.loadPlugin(data.pluginPath);
62
+ await this.plugin.load();
63
+ await this.pluginManager.initializePlugin(this.plugin, data.identifier);
64
+ process.title = `homebridge: ${this.plugin.getPluginIdentifier()}`;
65
+ this.sendMessage("loaded", {
66
+ version: this.plugin.version,
67
+ });
68
+ }
69
+ async startBridge() {
70
+ if (this.bridgeConfig.matter) {
71
+ matterLogger.info('Loading Matter support for child bridge...');
72
+ const { ChildBridgeMatterManager } = await import('./matter/index.js');
73
+ this.matterManager = new ChildBridgeMatterManager(this.bridgeConfig, this.bridgeOptions, this.api, this.externalPortService, this.pluginManager);
74
+ this.api._setMatterManager(this.matterManager);
75
+ await this.matterManager.initialize(() => {
76
+ this.sendPairedStatusEvent();
77
+ });
78
+ }
79
+ this.bridgeService = new BridgeService(this.api, this.pluginManager, this.externalPortService, this.bridgeOptions, this.bridgeConfig);
80
+ this.bridgeService.bridge.on("advertised", () => {
81
+ this.sendPairedStatusEvent();
82
+ });
83
+ this.bridgeService.bridge.on("paired", () => {
84
+ this.sendPairedStatusEvent();
85
+ });
86
+ this.bridgeService.bridge.on("unpaired", () => {
87
+ this.sendPairedStatusEvent();
88
+ });
89
+ await this.bridgeService.loadCachedPlatformAccessoriesFromDisk();
90
+ for (const config of this.pluginConfig) {
91
+ if (this.type === "platform") {
92
+ const plugin = this.pluginManager.getPluginForPlatform(this.identifier);
93
+ const displayName = config.name || plugin.getPluginIdentifier();
94
+ const logger = Logger.withPrefix(displayName);
95
+ const constructor = plugin.getPlatformConstructor(this.identifier);
96
+ const platform = new constructor(logger, config, this.api);
97
+ if (HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
98
+ plugin.assignDynamicPlatform(this.identifier, platform);
99
+ }
100
+ else if (HomebridgeAPI.isStaticPlatformPlugin(platform)) {
101
+ await this.bridgeService.loadPlatformAccessories(plugin, platform, this.identifier, logger);
102
+ }
103
+ else {
104
+ }
105
+ }
106
+ else if (this.type === "accessory") {
107
+ const plugin = this.pluginManager.getPluginForAccessory(this.identifier);
108
+ const displayName = config.name;
109
+ if (!displayName) {
110
+ Logger.internal.warn('Could not load accessory %s as it is missing the required \'name\' property!', this.identifier);
111
+ return;
112
+ }
113
+ const logger = Logger.withPrefix(displayName);
114
+ const constructor = plugin.getAccessoryConstructor(this.identifier);
115
+ const accessoryInstance = new constructor(logger, config, this.api);
116
+ const accessory = this.bridgeService.createHAPAccessory(plugin, accessoryInstance, displayName, this.identifier, config.uuid_base);
117
+ if (accessory) {
118
+ this.bridgeService.bridge.addBridgedAccessory(accessory);
119
+ }
120
+ else {
121
+ logger('Accessory %s returned empty set of services. Won\'t adding it to the bridge!', this.identifier);
122
+ }
123
+ }
124
+ }
125
+ this.bridgeService.restoreCachedPlatformAccessories();
126
+ if (this.matterManager) {
127
+ this.matterManager.restoreCachedAccessories(this.bridgeOptions.keepOrphanedCachedAccessories ?? false);
128
+ }
129
+ this.bridgeService.publishBridge();
130
+ this.api.signalFinished();
131
+ this.sendPairedStatusEvent();
132
+ this.sendMessage("online");
133
+ }
134
+ async requestExternalPort(username) {
135
+ return new Promise((resolve) => {
136
+ const requestTimeout = setTimeout(() => {
137
+ Logger.internal.warn('Parent process did not respond to port allocation request within 5 seconds - assigning random port.');
138
+ resolve(undefined);
139
+ }, 5000);
140
+ const callback = (port) => {
141
+ clearTimeout(requestTimeout);
142
+ resolve(port);
143
+ this.portRequestCallback.delete(username);
144
+ };
145
+ this.portRequestCallback.set(username, callback);
146
+ this.sendMessage("portRequest", { username });
147
+ });
148
+ }
149
+ async requestMatterPort(uniqueId) {
150
+ return new Promise((resolve) => {
151
+ const requestTimeout = setTimeout(() => {
152
+ matterLogger.warn('Parent process did not respond to Matter port allocation request within 5 seconds - assigning random port.');
153
+ resolve(undefined);
154
+ }, 5000);
155
+ const mac = uniqueId;
156
+ const callback = (port) => {
157
+ clearTimeout(requestTimeout);
158
+ resolve(port);
159
+ this.portRequestCallback.delete(mac);
160
+ };
161
+ this.portRequestCallback.set(mac, callback);
162
+ this.sendMessage("portRequest", {
163
+ username: mac,
164
+ portType: 'matter',
165
+ });
166
+ });
167
+ }
168
+ handleExternalResponse(data) {
169
+ const callback = this.portRequestCallback.get(data.username);
170
+ if (callback) {
171
+ callback(data.port);
172
+ }
173
+ }
174
+ sendPairedStatusEvent() {
175
+ const matterInfo = this.matterManager?.getMatterStatusInfo();
176
+ this.sendMessage("status", {
177
+ paired: this.bridgeService?.bridge?._accessoryInfo?.paired() ?? null,
178
+ setupUri: this.bridgeService?.bridge?.setupURI() ?? null,
179
+ ...(matterInfo && { matter: matterInfo }),
180
+ });
181
+ }
182
+ handleStartMatterMonitoring() {
183
+ if (this.matterManager?.isMatterEnabled()) {
184
+ this.matterManager.enableStateMonitoring();
185
+ }
186
+ }
187
+ handleStopMatterMonitoring() {
188
+ if (this.matterManager?.isMatterEnabled()) {
189
+ this.matterManager.disableStateMonitoring();
190
+ }
191
+ }
192
+ handleGetMatterAccessories() {
193
+ try {
194
+ if (!this.bridgeConfig) {
195
+ return;
196
+ }
197
+ if (!this.matterManager?.isMatterEnabled()) {
198
+ const event = {
199
+ type: 'accessoriesData',
200
+ data: {
201
+ bridgeUsername: this.bridgeConfig.username,
202
+ accessories: [],
203
+ },
204
+ };
205
+ this.sendMessage("matterEvent", event);
206
+ return;
207
+ }
208
+ const accessories = this.matterManager.collectAllAccessories();
209
+ const event = {
210
+ type: 'accessoriesData',
211
+ data: {
212
+ bridgeUsername: this.bridgeConfig.username,
213
+ accessories,
214
+ },
215
+ };
216
+ this.sendMessage("matterEvent", event);
217
+ }
218
+ catch (error) {
219
+ matterLogger.error('Failed to get Matter accessories:', error);
220
+ const event = {
221
+ type: 'accessoriesData',
222
+ data: {
223
+ bridgeUsername: this.bridgeConfig?.username,
224
+ error: error instanceof Error ? error.message : 'Unknown error',
225
+ },
226
+ };
227
+ this.sendMessage("matterEvent", event);
228
+ }
229
+ }
230
+ handleGetMatterAccessoryInfo(data) {
231
+ try {
232
+ if (!this.matterManager?.isMatterEnabled()) {
233
+ return;
234
+ }
235
+ const accessoryInfo = this.matterManager.getAccessoryInfo(data.uuid);
236
+ if (accessoryInfo) {
237
+ const event = {
238
+ type: 'accessoryInfoData',
239
+ data: accessoryInfo,
240
+ };
241
+ this.sendMessage("matterEvent", event);
242
+ }
243
+ }
244
+ catch (error) {
245
+ matterLogger.error('Failed to get Matter accessory info:', error);
246
+ const event = {
247
+ type: 'accessoryInfoData',
248
+ data: {
249
+ error: error instanceof Error ? error.message : 'Unknown error',
250
+ },
251
+ };
252
+ this.sendMessage("matterEvent", event);
253
+ }
254
+ }
255
+ handleMatterAccessoryControl(data) {
256
+ if (!this.matterManager?.isMatterEnabled()) {
257
+ matterLogger.debug(`Ignoring Matter control for ${data.uuid} - Matter not enabled on child bridge ${this.bridgeConfig.username}`);
258
+ return;
259
+ }
260
+ matterLogger.debug(`Matter control request for child bridge ${this.bridgeConfig.username}: uuid=${data.uuid}, cluster=${data.cluster}, part=${data.partId || 'main'}`);
261
+ this.matterManager.handleTriggerCommand(data.uuid, data.cluster, data.attributes, data.partId)
262
+ .then(() => {
263
+ matterLogger.debug(`Successfully controlled accessory ${data.uuid} on child bridge ${this.bridgeConfig.username}`);
264
+ const controlResponse = {
265
+ type: 'accessoryControlResponse',
266
+ data: {
267
+ success: true,
268
+ uuid: data.uuid,
269
+ },
270
+ };
271
+ this.sendMessage("matterEvent", controlResponse);
272
+ })
273
+ .catch((error) => {
274
+ if (error.message.includes('not found on this bridge')) {
275
+ matterLogger.debug(`Accessory ${data.uuid} not on child bridge ${this.bridgeConfig.username}, ignoring`);
276
+ return;
277
+ }
278
+ matterLogger.error(`Failed to control ${data.uuid} on child bridge ${this.bridgeConfig.username}: ${error.message}`);
279
+ const event = {
280
+ type: 'accessoryControlResponse',
281
+ data: {
282
+ success: false,
283
+ error: error instanceof Error ? error.message : 'Unknown error',
284
+ uuid: data.uuid,
285
+ },
286
+ };
287
+ this.sendMessage("matterEvent", event);
288
+ });
289
+ }
290
+ shutdown() {
291
+ this.bridgeService.teardown();
292
+ if (this.matterManager) {
293
+ this.matterManager.teardown().catch((error) => {
294
+ matterLogger.error('Error tearing down Matter manager:', error);
295
+ });
296
+ }
297
+ }
298
+ }
299
+ const childPluginFork = new ChildBridgeFork();
300
+ process.on('message', (message) => {
301
+ if (typeof message !== 'object' || !message.id) {
302
+ return;
303
+ }
304
+ switch (message.id) {
305
+ case "load": {
306
+ childPluginFork.loadPlugin(message.data);
307
+ break;
308
+ }
309
+ case "start": {
310
+ childPluginFork.startBridge();
311
+ break;
312
+ }
313
+ case "portAllocated": {
314
+ childPluginFork.handleExternalResponse(message.data);
315
+ break;
316
+ }
317
+ case "startMatterMonitoring": {
318
+ childPluginFork.handleStartMatterMonitoring();
319
+ break;
320
+ }
321
+ case "stopMatterMonitoring": {
322
+ childPluginFork.handleStopMatterMonitoring();
323
+ break;
324
+ }
325
+ case "getMatterAccessories": {
326
+ childPluginFork.handleGetMatterAccessories();
327
+ break;
328
+ }
329
+ case "getMatterAccessoryInfo": {
330
+ childPluginFork.handleGetMatterAccessoryInfo(message.data);
331
+ break;
332
+ }
333
+ case "matterAccessoryControl": {
334
+ childPluginFork.handleMatterAccessoryControl(message.data);
335
+ break;
336
+ }
337
+ }
338
+ });
339
+ let shuttingDown = false;
340
+ function signalHandler(signal, signalNum) {
341
+ if (shuttingDown) {
342
+ return;
343
+ }
344
+ shuttingDown = true;
345
+ Logger.internal.info('Got %s, shutting down child bridge process...', signal);
346
+ try {
347
+ childPluginFork.shutdown();
348
+ }
349
+ catch (error) {
350
+ }
351
+ setTimeout(() => process.exit(128 + signalNum), 5000);
352
+ }
353
+ process.on('SIGINT', signalHandler.bind(undefined, 'SIGINT', 2));
354
+ process.on('SIGTERM', signalHandler.bind(undefined, 'SIGTERM', 15));
355
+ setInterval(() => {
356
+ if (!process.connected) {
357
+ Logger.internal.info('Parent process not connected, terminating process...');
358
+ process.exit(1);
359
+ }
360
+ }, 5000);
361
+ //# sourceMappingURL=childBridgeFork.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childBridgeFork.js","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ import type { MacAddress } from 'hap-nodejs';
2
+ import type { HomebridgeAPI } from './api.js';
3
+ import type { AccessoryConfig, BridgeConfiguration, BridgeOptions, HomebridgeConfig, PlatformConfig } from './bridgeService.js';
4
+ import type { ExternalPortService } from './externalPortService.js';
5
+ import type { IpcService } from './ipcService.js';
6
+ import type { MatterConfig } from './matter/index.js';
7
+ import type { Plugin } from './plugin.js';
8
+ import type { HomebridgeOptions } from './server.js';
9
+ import { PluginType } from './api.js';
10
+ export declare const enum ChildProcessMessageEventType {
11
+ READY = "ready",
12
+ LOAD = "load",
13
+ LOADED = "loaded",
14
+ START = "start",
15
+ ONLINE = "online",
16
+ PORT_REQUEST = "portRequest",
17
+ PORT_ALLOCATED = "portAllocated",
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"
25
+ }
26
+ export declare const enum ChildBridgeStatus {
27
+ PENDING = "pending",
28
+ OK = "ok",
29
+ DOWN = "down"
30
+ }
31
+ export interface ChildProcessMessageEvent<T> {
32
+ id: ChildProcessMessageEventType;
33
+ data?: T;
34
+ }
35
+ export interface ChildProcessLoadEventData {
36
+ type: PluginType;
37
+ identifier: string;
38
+ pluginPath: string;
39
+ pluginConfig: Array<PlatformConfig | AccessoryConfig>;
40
+ bridgeConfig: BridgeConfiguration;
41
+ homebridgeConfig: HomebridgeConfig;
42
+ bridgeOptions: BridgeOptions;
43
+ }
44
+ export interface ChildProcessPluginLoadedEventData {
45
+ version: string;
46
+ }
47
+ export interface ChildProcessPortRequestEventData {
48
+ username: MacAddress;
49
+ portType?: 'hap' | 'matter';
50
+ }
51
+ export interface ChildProcessPortAllocatedEventData {
52
+ username: MacAddress;
53
+ port?: number;
54
+ }
55
+ export interface ChildBridgePairedStatusEventData {
56
+ paired: boolean | null;
57
+ setupUri: string | null;
58
+ matter?: {
59
+ qrCode?: string;
60
+ manualPairingCode?: string;
61
+ serialNumber?: string;
62
+ commissioned: boolean;
63
+ deviceCount: number;
64
+ };
65
+ }
66
+ export interface ChildMetadata {
67
+ status: ChildBridgeStatus;
68
+ paired?: boolean | null;
69
+ setupUri?: string | null;
70
+ username: MacAddress;
71
+ port?: number;
72
+ pin: string;
73
+ name: string;
74
+ plugin: string;
75
+ identifier: string;
76
+ manuallyStopped: boolean;
77
+ pid?: number;
78
+ matterConfig?: MatterConfig;
79
+ matterIdentifier?: string;
80
+ matterSetupUri?: string;
81
+ matterPin?: string;
82
+ matterSerialNumber?: string;
83
+ matterCommissioned?: boolean;
84
+ matterDeviceCount?: number;
85
+ }
86
+ export declare class ChildBridgeService {
87
+ type: PluginType;
88
+ identifier: string;
89
+ private plugin;
90
+ private bridgeConfig;
91
+ private homebridgeConfig;
92
+ private homebridgeOptions;
93
+ private api;
94
+ private ipcService;
95
+ private externalPortService;
96
+ private child?;
97
+ private args;
98
+ private processEnv;
99
+ private shuttingDown;
100
+ private lastBridgeStatus;
101
+ private pairedStatus;
102
+ private manuallyStopped;
103
+ private setupUri;
104
+ private matterCommissioningInfo?;
105
+ private pluginConfig;
106
+ private log;
107
+ private displayName?;
108
+ private restartCount;
109
+ private readonly maxRestarts;
110
+ lastMatterAccessoriesResponse?: {
111
+ accessories: any[];
112
+ bridgeUsername: string;
113
+ };
114
+ onExternalBridgeRegistered?: (externalBridgeUsername: string, ownerUsername: string) => void;
115
+ constructor(type: PluginType, identifier: string, plugin: Plugin, bridgeConfig: BridgeConfiguration, homebridgeConfig: HomebridgeConfig, homebridgeOptions: HomebridgeOptions, api: HomebridgeAPI, ipcService: IpcService, externalPortService: ExternalPortService);
116
+ start(): void;
117
+ addConfig(config: PlatformConfig | AccessoryConfig): void;
118
+ startMatterMonitoring(): void;
119
+ stopMatterMonitoring(): void;
120
+ getMatterAccessories(): void;
121
+ getMatterAccessoryInfo(uuid: string): void;
122
+ controlMatterAccessory(data: {
123
+ uuid: string;
124
+ cluster: string;
125
+ attributes: Record<string, unknown>;
126
+ partId?: string;
127
+ }): void;
128
+ private get bridgeStatus();
129
+ private set bridgeStatus(value);
130
+ private startChildProcess;
131
+ private handleProcessClose;
132
+ private sendMessage;
133
+ private setProcessFlags;
134
+ private setProcessEnv;
135
+ private loadPlugin;
136
+ private startBridge;
137
+ private handlePortRequest;
138
+ private teardown;
139
+ private sendStatusUpdate;
140
+ restartChildBridge(): void;
141
+ stopChildBridge(): void;
142
+ startChildBridge(): void;
143
+ refreshConfig(): Promise<void>;
144
+ getMetadata(): ChildMetadata;
145
+ }
146
+ //# sourceMappingURL=childBridgeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childBridgeService.d.ts","sourceRoot":"","sources":["../src/childBridgeService.ts"],"names":[],"mappings":"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"}