homebridge 2.0.0-beta.5 → 2.0.0-beta.51

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 +137 -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 +362 -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 +20 -0
  41. package/dist/matter/BaseMatterManager.d.ts.map +1 -0
  42. package/dist/matter/BaseMatterManager.js +183 -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 +443 -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 +40 -0
  61. package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
  62. package/dist/matter/MatterBridgeManager.js +340 -0
  63. package/dist/matter/MatterBridgeManager.js.map +1 -0
  64. package/dist/matter/MatterConfigCollector.d.ts +7 -0
  65. package/dist/matter/MatterConfigCollector.d.ts.map +1 -0
  66. package/dist/matter/MatterConfigCollector.js +65 -0
  67. package/dist/matter/MatterConfigCollector.js.map +1 -0
  68. package/dist/matter/accessoryCache.d.ts +57 -0
  69. package/dist/matter/accessoryCache.d.ts.map +1 -0
  70. package/dist/matter/accessoryCache.js +155 -0
  71. package/dist/matter/accessoryCache.js.map +1 -0
  72. package/dist/matter/behaviors/AirQualityBehavior.d.ts +8 -0
  73. package/dist/matter/behaviors/AirQualityBehavior.d.ts.map +1 -0
  74. package/dist/matter/behaviors/AirQualityBehavior.js +11 -0
  75. package/dist/matter/behaviors/AirQualityBehavior.js.map +1 -0
  76. package/dist/matter/behaviors/BehaviorRegistry.d.ts +27 -0
  77. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
  78. package/dist/matter/behaviors/BehaviorRegistry.js +110 -0
  79. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
  80. package/dist/matter/behaviors/ColorControlBehavior.d.ts +12 -0
  81. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
  82. package/dist/matter/behaviors/ColorControlBehavior.js +139 -0
  83. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
  84. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts +32 -0
  85. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.d.ts.map +1 -0
  86. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js +51 -0
  87. package/dist/matter/behaviors/ConcentrationMeasurementBehavior.js.map +1 -0
  88. package/dist/matter/behaviors/DoorLockBehavior.d.ts +7 -0
  89. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
  90. package/dist/matter/behaviors/DoorLockBehavior.js +48 -0
  91. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
  92. package/dist/matter/behaviors/FanControlBehavior.d.ts +7 -0
  93. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
  94. package/dist/matter/behaviors/FanControlBehavior.js +57 -0
  95. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
  96. package/dist/matter/behaviors/IdentifyBehavior.d.ts +7 -0
  97. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
  98. package/dist/matter/behaviors/IdentifyBehavior.js +25 -0
  99. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
  100. package/dist/matter/behaviors/LevelControlBehavior.d.ts +11 -0
  101. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
  102. package/dist/matter/behaviors/LevelControlBehavior.js +100 -0
  103. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
  104. package/dist/matter/behaviors/OnOffBehavior.d.ts +8 -0
  105. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
  106. package/dist/matter/behaviors/OnOffBehavior.js +60 -0
  107. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
  108. package/dist/matter/behaviors/RegistryManager.d.ts +15 -0
  109. package/dist/matter/behaviors/RegistryManager.d.ts.map +1 -0
  110. package/dist/matter/behaviors/RegistryManager.js +31 -0
  111. package/dist/matter/behaviors/RegistryManager.js.map +1 -0
  112. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +14 -0
  113. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
  114. package/dist/matter/behaviors/RvcCleanModeBehavior.js +29 -0
  115. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
  116. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +10 -0
  117. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
  118. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +81 -0
  119. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
  120. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +14 -0
  121. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
  122. package/dist/matter/behaviors/RvcRunModeBehavior.js +29 -0
  123. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
  124. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +9 -0
  125. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
  126. package/dist/matter/behaviors/ServiceAreaBehavior.js +62 -0
  127. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
  128. package/dist/matter/behaviors/ThermostatBehavior.d.ts +9 -0
  129. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
  130. package/dist/matter/behaviors/ThermostatBehavior.js +92 -0
  131. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
  132. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +12 -0
  133. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
  134. package/dist/matter/behaviors/WindowCoveringBehavior.js +108 -0
  135. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
  136. package/dist/matter/behaviors/index.d.ts +18 -0
  137. package/dist/matter/behaviors/index.d.ts.map +1 -0
  138. package/dist/matter/behaviors/index.js +17 -0
  139. package/dist/matter/behaviors/index.js.map +1 -0
  140. package/dist/matter/clusterTypes.d.ts +178 -0
  141. package/dist/matter/clusterTypes.d.ts.map +1 -0
  142. package/dist/matter/clusterTypes.js +2 -0
  143. package/dist/matter/clusterTypes.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 +565 -0
  189. package/dist/matter/types.d.ts.map +1 -0
  190. package/dist/matter/types.js +132 -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 +732 -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,362 @@
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 { ChildBridgeMatterManager } from './matter/index.js';
8
+ import { PluginManager } from './pluginManager.js';
9
+ import { User } from './user.js';
10
+ import 'source-map-support/register.js';
11
+ process.title = 'homebridge: child bridge';
12
+ const matterLogger = Logger.withPrefix('Matter/ChildManager');
13
+ export class ChildBridgeFork {
14
+ bridgeService;
15
+ api;
16
+ pluginManager;
17
+ externalPortService;
18
+ matterManager;
19
+ type;
20
+ plugin;
21
+ identifier;
22
+ pluginConfig;
23
+ bridgeConfig;
24
+ bridgeOptions;
25
+ portRequestCallback = new Map();
26
+ constructor() {
27
+ this.sendMessage("ready");
28
+ }
29
+ sendMessage(type, data) {
30
+ if (process.send) {
31
+ process.send({
32
+ id: type,
33
+ data,
34
+ });
35
+ }
36
+ }
37
+ async loadPlugin(data) {
38
+ this.type = data.type;
39
+ this.identifier = data.identifier;
40
+ this.pluginConfig = data.pluginConfig;
41
+ this.bridgeConfig = data.bridgeConfig;
42
+ this.bridgeOptions = data.bridgeOptions;
43
+ for (const config of this.pluginConfig) {
44
+ delete config._bridge;
45
+ }
46
+ if (this.bridgeOptions.noLogTimestamps) {
47
+ Logger.setTimestampEnabled(false);
48
+ }
49
+ if (this.bridgeOptions.debugModeEnabled) {
50
+ Logger.setDebugEnabled(true);
51
+ }
52
+ if (this.bridgeOptions.forceColourLogging) {
53
+ Logger.forceColor();
54
+ }
55
+ if (this.bridgeOptions.customStoragePath) {
56
+ User.setStoragePath(this.bridgeOptions.customStoragePath);
57
+ }
58
+ HAPStorage.setCustomStoragePath(User.persistPath());
59
+ this.api = new HomebridgeAPI();
60
+ this.pluginManager = new PluginManager(this.api);
61
+ this.externalPortService = new ChildBridgeExternalPortService(this);
62
+ this.plugin = this.pluginManager.loadPlugin(data.pluginPath);
63
+ await this.plugin.load();
64
+ await this.pluginManager.initializePlugin(this.plugin, data.identifier);
65
+ process.title = `homebridge: ${this.plugin.getPluginIdentifier()}`;
66
+ this.sendMessage("loaded", {
67
+ version: this.plugin.version,
68
+ });
69
+ }
70
+ async startBridge() {
71
+ this.matterManager = new ChildBridgeMatterManager(this.bridgeConfig, this.bridgeOptions, this.api, this.externalPortService, this.pluginManager);
72
+ this.api._setMatterManager(this.matterManager);
73
+ await this.matterManager.initialize(() => {
74
+ this.sendPairedStatusEvent();
75
+ });
76
+ this.bridgeService = new BridgeService(this.api, this.pluginManager, this.externalPortService, this.bridgeOptions, this.bridgeConfig);
77
+ this.bridgeService.bridge.on("advertised", () => {
78
+ this.sendPairedStatusEvent();
79
+ });
80
+ this.bridgeService.bridge.on("paired", () => {
81
+ this.sendPairedStatusEvent();
82
+ });
83
+ this.bridgeService.bridge.on("unpaired", () => {
84
+ this.sendPairedStatusEvent();
85
+ });
86
+ await this.bridgeService.loadCachedPlatformAccessoriesFromDisk();
87
+ for (const config of this.pluginConfig) {
88
+ if (this.type === "platform") {
89
+ const plugin = this.pluginManager.getPluginForPlatform(this.identifier);
90
+ const displayName = config.name || plugin.getPluginIdentifier();
91
+ const logger = Logger.withPrefix(displayName);
92
+ const constructor = plugin.getPlatformConstructor(this.identifier);
93
+ const platform = new constructor(logger, config, this.api);
94
+ if (HomebridgeAPI.isDynamicPlatformPlugin(platform)) {
95
+ plugin.assignDynamicPlatform(this.identifier, platform);
96
+ }
97
+ else if (HomebridgeAPI.isStaticPlatformPlugin(platform)) {
98
+ await this.bridgeService.loadPlatformAccessories(plugin, platform, this.identifier, logger);
99
+ }
100
+ else {
101
+ }
102
+ }
103
+ else if (this.type === "accessory") {
104
+ const plugin = this.pluginManager.getPluginForAccessory(this.identifier);
105
+ const displayName = config.name;
106
+ if (!displayName) {
107
+ Logger.internal.warn('Could not load accessory %s as it is missing the required \'name\' property!', this.identifier);
108
+ return;
109
+ }
110
+ const logger = Logger.withPrefix(displayName);
111
+ const constructor = plugin.getAccessoryConstructor(this.identifier);
112
+ const accessoryInstance = new constructor(logger, config, this.api);
113
+ const accessory = this.bridgeService.createHAPAccessory(plugin, accessoryInstance, displayName, this.identifier, config.uuid_base);
114
+ if (accessory) {
115
+ this.bridgeService.bridge.addBridgedAccessory(accessory);
116
+ }
117
+ else {
118
+ logger('Accessory %s returned empty set of services. Won\'t adding it to the bridge!', this.identifier);
119
+ }
120
+ }
121
+ }
122
+ this.bridgeService.restoreCachedPlatformAccessories();
123
+ this.matterManager.restoreCachedAccessories(this.bridgeOptions.keepOrphanedCachedAccessories ?? false);
124
+ this.bridgeService.publishBridge();
125
+ this.api.signalFinished();
126
+ this.sendPairedStatusEvent();
127
+ this.sendMessage("online");
128
+ }
129
+ async requestExternalPort(username) {
130
+ return new Promise((resolve) => {
131
+ const requestTimeout = setTimeout(() => {
132
+ Logger.internal.warn('Parent process did not respond to port allocation request within 5 seconds - assigning random port.');
133
+ resolve(undefined);
134
+ }, 5000);
135
+ const callback = (port) => {
136
+ clearTimeout(requestTimeout);
137
+ resolve(port);
138
+ this.portRequestCallback.delete(username);
139
+ };
140
+ this.portRequestCallback.set(username, callback);
141
+ this.sendMessage("portRequest", { username });
142
+ });
143
+ }
144
+ async requestMatterPort(uniqueId) {
145
+ return new Promise((resolve) => {
146
+ const requestTimeout = setTimeout(() => {
147
+ matterLogger.warn('Parent process did not respond to Matter port allocation request within 5 seconds - assigning random port.');
148
+ resolve(undefined);
149
+ }, 5000);
150
+ const mac = uniqueId;
151
+ const callback = (port) => {
152
+ clearTimeout(requestTimeout);
153
+ resolve(port);
154
+ this.portRequestCallback.delete(mac);
155
+ };
156
+ this.portRequestCallback.set(mac, callback);
157
+ this.sendMessage("portRequest", {
158
+ username: mac,
159
+ portType: 'matter',
160
+ });
161
+ });
162
+ }
163
+ handleExternalResponse(data) {
164
+ const callback = this.portRequestCallback.get(data.username);
165
+ if (callback) {
166
+ callback(data.port);
167
+ }
168
+ }
169
+ sendPairedStatusEvent() {
170
+ const matterInfo = this.matterManager.getMatterStatusInfo();
171
+ if (matterInfo) {
172
+ matterLogger.debug('Including Matter info in unified status update');
173
+ }
174
+ this.sendMessage("status", {
175
+ paired: this.bridgeService?.bridge?._accessoryInfo?.paired() ?? null,
176
+ setupUri: this.bridgeService?.bridge?.setupURI() ?? null,
177
+ ...(matterInfo && { matter: matterInfo }),
178
+ });
179
+ }
180
+ handleStartMatterMonitoring() {
181
+ if (this.matterManager?.isMatterEnabled()) {
182
+ matterLogger.debug(`Starting Matter monitoring in child bridge ${this.bridgeConfig.username}`);
183
+ this.matterManager.enableStateMonitoring();
184
+ }
185
+ }
186
+ handleStopMatterMonitoring() {
187
+ if (this.matterManager?.isMatterEnabled()) {
188
+ matterLogger.debug(`Stopping Matter monitoring in child bridge ${this.bridgeConfig.username}`);
189
+ this.matterManager.disableStateMonitoring();
190
+ }
191
+ }
192
+ handleGetMatterAccessories() {
193
+ try {
194
+ if (!this.bridgeConfig) {
195
+ Logger.internal.debug('Bridge not fully initialized yet, skipping');
196
+ return;
197
+ }
198
+ if (!this.matterManager?.isMatterEnabled()) {
199
+ const event = {
200
+ type: 'accessoriesData',
201
+ data: {
202
+ bridgeUsername: this.bridgeConfig.username,
203
+ accessories: [],
204
+ },
205
+ };
206
+ this.sendMessage("matterEvent", event);
207
+ return;
208
+ }
209
+ matterLogger.debug(`Collecting Matter accessories for child bridge ${this.bridgeConfig.username}`);
210
+ const accessories = this.matterManager.collectAllAccessories();
211
+ matterLogger.debug(`Child bridge ${this.bridgeConfig.username} collected ${accessories.length} accessory(ies)`);
212
+ const event = {
213
+ type: 'accessoriesData',
214
+ data: {
215
+ bridgeUsername: this.bridgeConfig.username,
216
+ accessories,
217
+ },
218
+ };
219
+ this.sendMessage("matterEvent", event);
220
+ }
221
+ catch (error) {
222
+ matterLogger.error('Failed to get Matter accessories:', error);
223
+ const event = {
224
+ type: 'accessoriesData',
225
+ data: {
226
+ bridgeUsername: this.bridgeConfig?.username,
227
+ error: error instanceof Error ? error.message : 'Unknown error',
228
+ },
229
+ };
230
+ this.sendMessage("matterEvent", event);
231
+ }
232
+ }
233
+ handleGetMatterAccessoryInfo(data) {
234
+ try {
235
+ if (!this.matterManager?.isMatterEnabled()) {
236
+ return;
237
+ }
238
+ const accessoryInfo = this.matterManager.getAccessoryInfo(data.uuid);
239
+ if (accessoryInfo) {
240
+ const event = {
241
+ type: 'accessoryInfoData',
242
+ data: accessoryInfo,
243
+ };
244
+ this.sendMessage("matterEvent", event);
245
+ }
246
+ }
247
+ catch (error) {
248
+ matterLogger.error('Failed to get Matter accessory info:', error);
249
+ const event = {
250
+ type: 'accessoryInfoData',
251
+ data: {
252
+ error: error instanceof Error ? error.message : 'Unknown error',
253
+ },
254
+ };
255
+ this.sendMessage("matterEvent", event);
256
+ }
257
+ }
258
+ handleMatterAccessoryControl(data) {
259
+ if (!this.matterManager?.isMatterEnabled()) {
260
+ matterLogger.debug(`Ignoring Matter control for ${data.uuid} - Matter not enabled on child bridge ${this.bridgeConfig.username}`);
261
+ return;
262
+ }
263
+ matterLogger.debug(`Matter control request for child bridge ${this.bridgeConfig.username}: uuid=${data.uuid}, cluster=${data.cluster}, part=${data.partId || 'main'}`);
264
+ this.matterManager.handleTriggerCommand(data.uuid, data.cluster, data.attributes, data.partId)
265
+ .then(() => {
266
+ matterLogger.debug(`Successfully controlled accessory ${data.uuid} on child bridge ${this.bridgeConfig.username}`);
267
+ const controlResponse = {
268
+ type: 'accessoryControlResponse',
269
+ data: {
270
+ success: true,
271
+ uuid: data.uuid,
272
+ },
273
+ };
274
+ this.sendMessage("matterEvent", controlResponse);
275
+ })
276
+ .catch((error) => {
277
+ if (error.message.includes('not found on this bridge')) {
278
+ matterLogger.debug(`Accessory ${data.uuid} not on child bridge ${this.bridgeConfig.username}, ignoring`);
279
+ return;
280
+ }
281
+ matterLogger.error(`Failed to control ${data.uuid} on child bridge ${this.bridgeConfig.username}: ${error.message}`);
282
+ const event = {
283
+ type: 'accessoryControlResponse',
284
+ data: {
285
+ success: false,
286
+ error: error instanceof Error ? error.message : 'Unknown error',
287
+ uuid: data.uuid,
288
+ },
289
+ };
290
+ this.sendMessage("matterEvent", event);
291
+ });
292
+ }
293
+ shutdown() {
294
+ this.bridgeService.teardown();
295
+ this.matterManager.teardown().catch((error) => {
296
+ matterLogger.error('Error tearing down Matter manager:', error);
297
+ });
298
+ }
299
+ }
300
+ const childPluginFork = new ChildBridgeFork();
301
+ process.on('message', (message) => {
302
+ if (typeof message !== 'object' || !message.id) {
303
+ return;
304
+ }
305
+ switch (message.id) {
306
+ case "load": {
307
+ childPluginFork.loadPlugin(message.data);
308
+ break;
309
+ }
310
+ case "start": {
311
+ childPluginFork.startBridge();
312
+ break;
313
+ }
314
+ case "portAllocated": {
315
+ childPluginFork.handleExternalResponse(message.data);
316
+ break;
317
+ }
318
+ case "startMatterMonitoring": {
319
+ childPluginFork.handleStartMatterMonitoring();
320
+ break;
321
+ }
322
+ case "stopMatterMonitoring": {
323
+ childPluginFork.handleStopMatterMonitoring();
324
+ break;
325
+ }
326
+ case "getMatterAccessories": {
327
+ childPluginFork.handleGetMatterAccessories();
328
+ break;
329
+ }
330
+ case "getMatterAccessoryInfo": {
331
+ childPluginFork.handleGetMatterAccessoryInfo(message.data);
332
+ break;
333
+ }
334
+ case "matterAccessoryControl": {
335
+ childPluginFork.handleMatterAccessoryControl(message.data);
336
+ break;
337
+ }
338
+ }
339
+ });
340
+ let shuttingDown = false;
341
+ function signalHandler(signal, signalNum) {
342
+ if (shuttingDown) {
343
+ return;
344
+ }
345
+ shuttingDown = true;
346
+ Logger.internal.info('Got %s, shutting down child bridge process...', signal);
347
+ try {
348
+ childPluginFork.shutdown();
349
+ }
350
+ catch (error) {
351
+ }
352
+ setTimeout(() => process.exit(128 + signalNum), 5000);
353
+ }
354
+ process.on('SIGINT', signalHandler.bind(undefined, 'SIGINT', 2));
355
+ process.on('SIGTERM', signalHandler.bind(undefined, 'SIGTERM', 15));
356
+ setInterval(() => {
357
+ if (!process.connected) {
358
+ Logger.internal.info('Parent process not connected, terminating process...');
359
+ process.exit(1);
360
+ }
361
+ }, 5000);
362
+ //# sourceMappingURL=childBridgeFork.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childBridgeFork.js","sourceRoot":"","sources":["../src/childBridgeFork.ts"],"names":[],"mappings":"AAsBA,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,OAAO,EAAuB,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5D,OAAO,EAAE,aAAa,EAAc,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,gCAAgC,CAAA;AAMvC,OAAO,CAAC,KAAK,GAAG,0BAA0B,CAAA;AAE1C,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;AAE7D,MAAM,OAAO,eAAe;IAClB,aAAa,CAAgB;IAC7B,GAAG,CAAgB;IACnB,aAAa,CAAgB;IAC7B,mBAAmB,CAAiC;IAGpD,aAAa,CAA2B;IAExC,IAAI,CAAa;IACjB,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,YAAY,CAA0C;IACtD,YAAY,CAAsB;IAClC,aAAa,CAAgB;IAE7B,mBAAmB,GAAwD,IAAI,GAAG,EAAE,CAAA;IAE5F;QAEE,IAAI,CAAC,WAAW,SAAoC,CAAA;IACtD,CAAC;IAED,WAAW,CAAc,IAAkC,EAAE,IAAQ;QACnE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,IAAI;gBACR,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAA+B;QAE9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QAGvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,OAAO,CAAA;QACvB,CAAC;QAGD,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YACvC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;YACxC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;YAC1C,MAAM,CAAC,UAAU,EAAE,CAAA;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QAC3D,CAAC;QAGD,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAGnD,IAAI,CAAC,GAAG,GAAG,IAAI,aAAa,EAAE,CAAA;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChD,IAAI,CAAC,mBAAmB,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,CAAA;QAGnE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5D,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACxB,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAGvE,OAAO,CAAC,KAAK,GAAG,eAAe,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAA;QAElE,IAAI,CAAC,WAAW,WAAyE;YACvF,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC7B,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QAEf,IAAI,CAAC,aAAa,GAAG,IAAI,wBAAwB,CAC/C,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,aAAa,CACnB,CAAA;QAGD,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAI9C,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE;YACvC,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC9B,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CACpC,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,CAClB,CAAA;QAGD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,eAAiC,GAAG,EAAE;YAChE,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC9B,CAAC,CAAC,CAAA;QAGF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,WAA6B,GAAG,EAAE;YAC5D,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC9B,CAAC,CAAC,CAAA;QAGF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,aAA+B,GAAG,EAAE;YAC9D,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC9B,CAAC,CAAC,CAAA;QAGF,MAAM,IAAI,CAAC,aAAa,CAAC,qCAAqC,EAAE,CAAA;QAEhE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,eAAwB,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACvE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAA;gBAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;gBAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAClE,MAAM,QAAQ,GAAmB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAwB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBAE5F,IAAI,aAAa,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpD,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;gBACzD,CAAC;qBAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1D,MAAM,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;gBAC7F,CAAC;qBAAM,CAAC;gBAGR,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,gBAAyB,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACxE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAA;gBAE/B,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,8EAA8E,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;oBACrH,OAAM;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;gBAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnE,MAAM,iBAAiB,GAAoB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAyB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBAGvG,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;gBAElI,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAA;gBAC1D,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,8EAA8E,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;gBACzG,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,CAAC,aAAa,CAAC,gCAAgC,EAAE,CAAA;QAGrD,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,6BAA6B,IAAI,KAAK,CAAC,CAAA;QAEtG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAA;QAClC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAA;QAIzB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAG5B,IAAI,CAAC,WAAW,UAAqC,CAAA;IACvD,CAAC;IAMM,KAAK,CAAC,mBAAmB,CAAC,QAAoB;QACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAA;gBAC3H,OAAO,CAAC,SAAS,CAAC,CAAA;YACpB,CAAC,EAAE,IAAI,CAAC,CAAA;YAGR,MAAM,QAAQ,GAAG,CAAC,IAAwB,EAAE,EAAE;gBAC5C,YAAY,CAAC,cAAc,CAAC,CAAA;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAA;gBACb,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC3C,CAAC,CAAA;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAGhD,IAAI,CAAC,WAAW,gBAA8E,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7G,CAAC,CAAC,CAAA;IACJ,CAAC;IAMM,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBACrC,YAAY,CAAC,IAAI,CAAC,4GAA4G,CAAC,CAAA;gBAC/H,OAAO,CAAC,SAAS,CAAC,CAAA;YACpB,CAAC,EAAE,IAAI,CAAC,CAAA;YAGR,MAAM,GAAG,GAAG,QAAsB,CAAA;YAGlC,MAAM,QAAQ,GAAG,CAAC,IAAwB,EAAE,EAAE;gBAC5C,YAAY,CAAC,cAAc,CAAC,CAAA;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAA;gBACb,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACtC,CAAC,CAAA;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YAG3C,IAAI,CAAC,WAAW,gBAA8E;gBAC5F,QAAQ,EAAE,GAAG;gBACb,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAMM,sBAAsB,CAAC,IAAwC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAKM,qBAAqB;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAA;QAC3D,IAAI,UAAU,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACtE,CAAC;QAED,IAAI,CAAC,WAAW,WAA+E;YAC7F,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,IAAI;YACpE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI;YAExD,GAAG,CAAC,UAAU,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SAC1C,CAAC,CAAA;IACJ,CAAC;IAKD,2BAA2B;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC;YAC1C,YAAY,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC9F,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAA;QAC5C,CAAC;IACH,CAAC;IAKD,0BAA0B;QACxB,IAAI,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC;YAC1C,YAAY,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC9F,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAA;QAC7C,CAAC;IACH,CAAC;IAKD,0BAA0B;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAA;gBACnE,OAAM;YACR,CAAC;YAGD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC;gBAE3C,MAAM,KAAK,GAAgB;oBACzB,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE;wBACJ,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;wBAC1C,WAAW,EAAE,EAAE;qBAChB;iBACF,CAAA;gBACD,IAAI,CAAC,WAAW,gBAA4C,KAAK,CAAC,CAAA;gBAClE,OAAM;YACR,CAAC;YAED,YAAY,CAAC,KAAK,CAAC,kDAAkD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAElG,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAA;YAC9D,YAAY,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,YAAY,CAAC,QAAQ,cAAc,WAAW,CAAC,MAAM,iBAAiB,CAAC,CAAA;YAE/G,MAAM,KAAK,GAAgB;gBACzB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE;oBACJ,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;oBAC1C,WAAW;iBACZ;aACF,CAAA;YACD,IAAI,CAAC,WAAW,gBAA4C,KAAK,CAAC,CAAA;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;YAC9D,MAAM,KAAK,GAAgB;gBACzB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE;oBACJ,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ;oBAC3C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE;aACF,CAAA;YACD,IAAI,CAAC,WAAW,gBAA4C,KAAK,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAKD,4BAA4B,CAAC,IAAsB;QACjD,IAAI,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC;gBAE3C,OAAM;YACR,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEpE,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAgB;oBACzB,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,aAAa;iBACpB,CAAA;gBACD,IAAI,CAAC,WAAW,gBAA4C,KAAK,CAAC,CAAA;YACpE,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAA;YACjE,MAAM,KAAK,GAAgB;gBACzB,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE;oBACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAChE;aACF,CAAA;YACD,IAAI,CAAC,WAAW,gBAA4C,KAAK,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAKD,4BAA4B,CAAC,IAK5B;QAEC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC;YAE3C,YAAY,CAAC,KAAK,CAAC,+BAA+B,IAAI,CAAC,IAAI,yCAAyC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YACjI,OAAM;QACR,CAAC;QAED,YAAY,CAAC,KAAK,CAAC,2CAA2C,IAAI,CAAC,YAAY,CAAC,QAAQ,UAAU,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAA;QAEtK,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;aAC3F,IAAI,CAAC,GAAG,EAAE;YACT,YAAY,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,oBAAoB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAA;YAKlH,MAAM,eAAe,GAAgB;gBACnC,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB;aACF,CAAA;YACD,IAAI,CAAC,WAAW,gBAA4C,eAAe,CAAC,CAAA;QAC9E,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAEf,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBACvD,YAAY,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,wBAAwB,IAAI,CAAC,YAAY,CAAC,QAAQ,YAAY,CAAC,CAAA;gBACxG,OAAM;YACR,CAAC;YACD,YAAY,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,IAAI,oBAAoB,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACpH,MAAM,KAAK,GAAgB;gBACzB,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE;oBACJ,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;oBAC/D,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB;aACF,CAAA;YACD,IAAI,CAAC,WAAW,gBAA4C,KAAK,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;IACN,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAA;QAG7B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACrD,YAAY,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAKD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AAK7C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAA0C,EAAE,EAAE;IACnE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAC/C,OAAM;IACR,CAAC;IAED,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC;QACnB,WAAsC,CAAC,CAAC,CAAC;YACvC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,IAAiC,CAAC,CAAA;YACrE,MAAK;QACP,CAAC;QACD,YAAuC,CAAC,CAAC,CAAC;YACxC,eAAe,CAAC,WAAW,EAAE,CAAA;YAC7B,MAAK;QACP,CAAC;QACD,oBAAgD,CAAC,CAAC,CAAC;YACjD,eAAe,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAA0C,CAAC,CAAA;YAC1F,MAAK;QACP,CAAC;QACD,4BAAyD,CAAC,CAAC,CAAC;YAC1D,eAAe,CAAC,2BAA2B,EAAE,CAAA;YAC7C,MAAK;QACP,CAAC;QACD,2BAAwD,CAAC,CAAC,CAAC;YACzD,eAAe,CAAC,0BAA0B,EAAE,CAAA;YAC5C,MAAK;QACP,CAAC;QACD,2BAAwD,CAAC,CAAC,CAAC;YACzD,eAAe,CAAC,0BAA0B,EAAE,CAAA;YAC5C,MAAK;QACP,CAAC;QACD,6BAA2D,CAAC,CAAC,CAAC;YAC5D,eAAe,CAAC,4BAA4B,CAAC,OAAO,CAAC,IAAwB,CAAC,CAAA;YAC9E,MAAK;QACP,CAAC;QACD,6BAA0D,CAAC,CAAC,CAAC;YAC3D,eAAe,CAAC,4BAA4B,CAAC,OAAO,CAAC,IAKpD,CAAC,CAAA;YACF,MAAK;QACP,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAA;AAKF,IAAI,YAAY,GAAG,KAAK,CAAA;AACxB,SAAS,aAAa,CAAC,MAAsB,EAAE,SAAiB;IAC9D,IAAI,YAAY,EAAE,CAAC;QACjB,OAAM;IACR,CAAC;IACD,YAAY,GAAG,IAAI,CAAA;IAEnB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,+CAA+C,EAAE,MAAM,CAAC,CAAA;IAE7E,IAAI,CAAC;QACH,eAAe,CAAC,QAAQ,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;IAEtB,CAAC;IAED,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;AACvD,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;AAChE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;AAKnE,WAAW,CAAC,GAAG,EAAE;IACf,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,EAAE,IAAI,CAAC,CAAA"}
@@ -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":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAA;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AASpD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AASrC,0BAAkB,4BAA4B;IAI5C,KAAK,UAAU;IAKf,IAAI,SAAS;IAKb,MAAM,WAAW;IAKjB,KAAK,UAAU;IAKf,MAAM,WAAW;IAKjB,YAAY,gBAAgB;IAK5B,cAAc,kBAAkB;IAKhC,aAAa,WAAW;IAKxB,uBAAuB,0BAA0B;IAKjD,sBAAsB,yBAAyB;IAK/C,sBAAsB,yBAAyB;IAK/C,yBAAyB,2BAA2B;IAKpD,wBAAwB,2BAA2B;IAOnD,YAAY,gBAAgB;CAC7B;AAGD,0BAAkB,iBAAiB;IAIjC,OAAO,YAAY;IAKnB,EAAE,OAAO;IAKT,IAAI,SAAS;CACd;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,EAAE,EAAE,4BAA4B,CAAA;IAChC,IAAI,CAAC,EAAE,CAAC,CAAA;CACT;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,UAAU,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC,CAAA;IACrD,YAAY,EAAE,mBAAmB,CAAA;IACjC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,UAAU,CAAA;IACpB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;CAC5B;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,OAAO,CAAA;QACrB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAA;CACF;AAWD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAMD,qBAAa,kBAAkB;IA8BpB,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,MAAM;IACzB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,mBAAmB;IArC7B,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,gBAAgB,CAA+C;IACvE,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,uBAAuB,CAAC,CAM/B;IAED,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAC,CAAQ;IAC5B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAI;IAGzB,6BAA6B,CAAC,EAAE;QAAE,WAAW,EAAE,GAAG,EAAE,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAA;IAG9E,0BAA0B,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAA;gBAG1F,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,mBAAmB,EACjC,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB;IAe3C,KAAK,IAAI,IAAI;IAqBb,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI;IAOzD,qBAAqB,IAAI,IAAI;IAO7B,oBAAoB,IAAI,IAAI;IAO5B,oBAAoB,IAAI,IAAI;IAO5B,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO1C,sBAAsB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAIlI,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,YAAY,QAGvB;IAKD,OAAO,CAAC,iBAAiB;IAwGzB,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,UAAU;IAiDlB,OAAO,CAAC,WAAW;YAOL,iBAAiB;IAoB/B,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,gBAAgB;IAOjB,kBAAkB,IAAI,IAAI;IAc1B,eAAe,IAAI,IAAI;IAiBvB,gBAAgB,IAAI,IAAI;IAclB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BpC,WAAW,IAAI,aAAa;CAsBpC"}