homebridge 2.0.0-beta.34 → 2.0.0-beta.36

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 (284) hide show
  1. package/dist/api.d.ts +74 -32
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +48 -46
  4. package/dist/api.js.map +1 -1
  5. package/dist/api.spec.d.ts +2 -0
  6. package/dist/api.spec.d.ts.map +1 -0
  7. package/dist/api.spec.js +413 -0
  8. package/dist/api.spec.js.map +1 -0
  9. package/dist/childBridgeFork.d.ts +1 -18
  10. package/dist/childBridgeFork.d.ts.map +1 -1
  11. package/dist/childBridgeFork.js +21 -258
  12. package/dist/childBridgeFork.js.map +1 -1
  13. package/dist/externalPortService.d.ts +2 -9
  14. package/dist/externalPortService.d.ts.map +1 -1
  15. package/dist/externalPortService.js +20 -40
  16. package/dist/externalPortService.js.map +1 -1
  17. package/dist/index.d.ts +10 -10
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/logger.spec.d.ts +2 -0
  22. package/dist/logger.spec.d.ts.map +1 -0
  23. package/dist/logger.spec.js +95 -0
  24. package/dist/logger.spec.js.map +1 -0
  25. package/dist/matter/ChildBridgeMatterManager.d.ts +96 -0
  26. package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
  27. package/dist/matter/ChildBridgeMatterManager.js +397 -0
  28. package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
  29. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +48 -0
  30. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
  31. package/dist/matter/ExternalMatterAccessoryPublisher.js +73 -0
  32. package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
  33. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +2 -0
  34. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +1 -0
  35. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +293 -0
  36. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +1 -0
  37. package/dist/matter/{matterServer.d.ts → MatterAPIImpl.d.ts} +203 -367
  38. package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
  39. package/dist/matter/MatterAPIImpl.js +305 -0
  40. package/dist/matter/MatterAPIImpl.js.map +1 -0
  41. package/dist/matter/MatterBridgeManager.d.ts +91 -0
  42. package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
  43. package/dist/matter/MatterBridgeManager.js +426 -0
  44. package/dist/matter/MatterBridgeManager.js.map +1 -0
  45. package/dist/matter/MatterConfigCollector.d.ts +26 -0
  46. package/dist/matter/MatterConfigCollector.d.ts.map +1 -0
  47. package/dist/matter/MatterConfigCollector.js +78 -0
  48. package/dist/matter/MatterConfigCollector.js.map +1 -0
  49. package/dist/matter/{matterAccessoryCache.d.ts → accessoryCache.d.ts} +12 -3
  50. package/dist/matter/accessoryCache.d.ts.map +1 -0
  51. package/dist/matter/{matterAccessoryCache.js → accessoryCache.js} +32 -10
  52. package/dist/matter/accessoryCache.js.map +1 -0
  53. package/dist/matter/accessoryCache.spec.d.ts +2 -0
  54. package/dist/matter/accessoryCache.spec.d.ts.map +1 -0
  55. package/dist/matter/accessoryCache.spec.js +452 -0
  56. package/dist/matter/accessoryCache.spec.js.map +1 -0
  57. package/dist/matter/behaviors/BehaviorRegistry.d.ts +65 -0
  58. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
  59. package/dist/matter/behaviors/BehaviorRegistry.js +139 -0
  60. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
  61. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +2 -0
  62. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +1 -0
  63. package/dist/matter/behaviors/BehaviorRegistry.spec.js +307 -0
  64. package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +1 -0
  65. package/dist/matter/behaviors/ColorControlBehavior.d.ts +64 -0
  66. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
  67. package/dist/matter/behaviors/ColorControlBehavior.js +160 -0
  68. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
  69. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +2 -0
  70. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +1 -0
  71. package/dist/matter/behaviors/ColorControlBehavior.spec.js +29 -0
  72. package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +1 -0
  73. package/dist/matter/behaviors/DoorLockBehavior.d.ts +21 -0
  74. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
  75. package/dist/matter/behaviors/DoorLockBehavior.js +49 -0
  76. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
  77. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +2 -0
  78. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +1 -0
  79. package/dist/matter/behaviors/DoorLockBehavior.spec.js +108 -0
  80. package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +1 -0
  81. package/dist/matter/behaviors/FanControlBehavior.d.ts +20 -0
  82. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
  83. package/dist/matter/behaviors/FanControlBehavior.js +45 -0
  84. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
  85. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +2 -0
  86. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +1 -0
  87. package/dist/matter/behaviors/FanControlBehavior.spec.js +23 -0
  88. package/dist/matter/behaviors/FanControlBehavior.spec.js.map +1 -0
  89. package/dist/matter/behaviors/IdentifyBehavior.d.ts +21 -0
  90. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
  91. package/dist/matter/behaviors/IdentifyBehavior.js +27 -0
  92. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
  93. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +2 -0
  94. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +1 -0
  95. package/dist/matter/behaviors/IdentifyBehavior.spec.js +64 -0
  96. package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +1 -0
  97. package/dist/matter/behaviors/LevelControlBehavior.d.ts +34 -0
  98. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
  99. package/dist/matter/behaviors/LevelControlBehavior.js +75 -0
  100. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
  101. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +2 -0
  102. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +1 -0
  103. package/dist/matter/behaviors/LevelControlBehavior.spec.js +140 -0
  104. package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +1 -0
  105. package/dist/matter/behaviors/OnOffBehavior.d.ts +28 -0
  106. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
  107. package/dist/matter/behaviors/OnOffBehavior.js +63 -0
  108. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
  109. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +2 -0
  110. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +1 -0
  111. package/dist/matter/behaviors/OnOffBehavior.spec.js +116 -0
  112. package/dist/matter/behaviors/OnOffBehavior.spec.js.map +1 -0
  113. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +19 -0
  114. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
  115. package/dist/matter/behaviors/RvcCleanModeBehavior.js +27 -0
  116. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
  117. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +2 -0
  118. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +1 -0
  119. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +56 -0
  120. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +1 -0
  121. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +23 -0
  122. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
  123. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +49 -0
  124. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
  125. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +2 -0
  126. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +1 -0
  127. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +55 -0
  128. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +1 -0
  129. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +19 -0
  130. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
  131. package/dist/matter/behaviors/RvcRunModeBehavior.js +27 -0
  132. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
  133. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +2 -0
  134. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +1 -0
  135. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +56 -0
  136. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +1 -0
  137. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +22 -0
  138. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
  139. package/dist/matter/behaviors/ServiceAreaBehavior.js +35 -0
  140. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
  141. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +2 -0
  142. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +1 -0
  143. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +52 -0
  144. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +1 -0
  145. package/dist/matter/behaviors/ThermostatBehavior.d.ts +23 -0
  146. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
  147. package/dist/matter/behaviors/ThermostatBehavior.js +79 -0
  148. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
  149. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +2 -0
  150. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +1 -0
  151. package/dist/matter/behaviors/ThermostatBehavior.spec.js +23 -0
  152. package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +1 -0
  153. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +32 -0
  154. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
  155. package/dist/matter/behaviors/WindowCoveringBehavior.js +106 -0
  156. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
  157. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +2 -0
  158. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +1 -0
  159. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +27 -0
  160. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +1 -0
  161. package/dist/matter/behaviors/index.d.ts +20 -0
  162. package/dist/matter/behaviors/index.d.ts.map +1 -0
  163. package/dist/matter/behaviors/index.js +21 -0
  164. package/dist/matter/behaviors/index.js.map +1 -0
  165. package/dist/matter/{matterConfigValidator.d.ts → configValidator.d.ts} +1 -1
  166. package/dist/matter/configValidator.d.ts.map +1 -0
  167. package/dist/matter/{matterConfigValidator.js → configValidator.js} +1 -1
  168. package/dist/matter/configValidator.js.map +1 -0
  169. package/dist/matter/configValidator.spec.d.ts +2 -0
  170. package/dist/matter/configValidator.spec.d.ts.map +1 -0
  171. package/dist/matter/configValidator.spec.js +390 -0
  172. package/dist/matter/configValidator.spec.js.map +1 -0
  173. package/dist/matter/errorHandler.d.ts +33 -0
  174. package/dist/matter/errorHandler.d.ts.map +1 -0
  175. package/dist/matter/errorHandler.js +113 -0
  176. package/dist/matter/errorHandler.js.map +1 -0
  177. package/dist/matter/errorHandler.spec.d.ts +2 -0
  178. package/dist/matter/errorHandler.spec.d.ts.map +1 -0
  179. package/dist/matter/errorHandler.spec.js +159 -0
  180. package/dist/matter/errorHandler.spec.js.map +1 -0
  181. package/dist/matter/index.d.ts +7 -4
  182. package/dist/matter/index.d.ts.map +1 -1
  183. package/dist/matter/index.js +7 -4
  184. package/dist/matter/index.js.map +1 -1
  185. package/dist/matter/{matterLogFormatter.d.ts → logFormatter.d.ts} +1 -1
  186. package/dist/matter/logFormatter.d.ts.map +1 -0
  187. package/dist/matter/{matterLogFormatter.js → logFormatter.js} +33 -6
  188. package/dist/matter/logFormatter.js.map +1 -0
  189. package/dist/matter/logFormatter.spec.d.ts +2 -0
  190. package/dist/matter/logFormatter.spec.d.ts.map +1 -0
  191. package/dist/matter/logFormatter.spec.js +284 -0
  192. package/dist/matter/logFormatter.spec.js.map +1 -0
  193. package/dist/matter/server.d.ts +350 -0
  194. package/dist/matter/server.d.ts.map +1 -0
  195. package/dist/matter/{matterServer.js → server.js} +533 -352
  196. package/dist/matter/server.js.map +1 -0
  197. package/dist/matter/{matterServerHelpers.d.ts → serverHelpers.d.ts} +2 -2
  198. package/dist/matter/serverHelpers.d.ts.map +1 -0
  199. package/dist/matter/{matterServerHelpers.js → serverHelpers.js} +11 -8
  200. package/dist/matter/serverHelpers.js.map +1 -0
  201. package/dist/matter/serverHelpers.spec.d.ts +2 -0
  202. package/dist/matter/serverHelpers.spec.d.ts.map +1 -0
  203. package/dist/matter/serverHelpers.spec.js +521 -0
  204. package/dist/matter/serverHelpers.spec.js.map +1 -0
  205. package/dist/matter/{matterSharedTypes.d.ts → sharedTypes.d.ts} +4 -10
  206. package/dist/matter/sharedTypes.d.ts.map +1 -0
  207. package/dist/matter/{matterSharedTypes.js → sharedTypes.js} +4 -10
  208. package/dist/matter/sharedTypes.js.map +1 -0
  209. package/dist/matter/{matterStorage.d.ts → storage.d.ts} +9 -2
  210. package/dist/matter/storage.d.ts.map +1 -0
  211. package/dist/matter/{matterStorage.js → storage.js} +14 -5
  212. package/dist/matter/{matterStorage.js.map → storage.js.map} +1 -1
  213. package/dist/matter/storage.spec.d.ts +2 -0
  214. package/dist/matter/storage.spec.d.ts.map +1 -0
  215. package/dist/matter/storage.spec.js +570 -0
  216. package/dist/matter/storage.spec.js.map +1 -0
  217. package/dist/matter/typeHelpers.d.ts +45 -0
  218. package/dist/matter/typeHelpers.d.ts.map +1 -0
  219. package/dist/matter/typeHelpers.js +57 -0
  220. package/dist/matter/typeHelpers.js.map +1 -0
  221. package/dist/matter/typeHelpers.spec.d.ts +2 -0
  222. package/dist/matter/typeHelpers.spec.d.ts.map +1 -0
  223. package/dist/matter/typeHelpers.spec.js +127 -0
  224. package/dist/matter/typeHelpers.spec.js.map +1 -0
  225. package/dist/matter/{matterTypes.d.ts → types.d.ts} +2 -2
  226. package/dist/matter/types.d.ts.map +1 -0
  227. package/dist/matter/{matterTypes.js → types.js} +1 -2
  228. package/dist/matter/types.js.map +1 -0
  229. package/dist/platformAccessory.spec.d.ts +2 -0
  230. package/dist/platformAccessory.spec.d.ts.map +1 -0
  231. package/dist/platformAccessory.spec.js +126 -0
  232. package/dist/platformAccessory.spec.js.map +1 -0
  233. package/dist/pluginManager.spec.d.ts +2 -0
  234. package/dist/pluginManager.spec.d.ts.map +1 -0
  235. package/dist/pluginManager.spec.js +43 -0
  236. package/dist/pluginManager.spec.js.map +1 -0
  237. package/dist/server.d.ts +4 -13
  238. package/dist/server.d.ts.map +1 -1
  239. package/dist/server.js +45 -333
  240. package/dist/server.js.map +1 -1
  241. package/dist/server.spec.d.ts +2 -0
  242. package/dist/server.spec.d.ts.map +1 -0
  243. package/dist/server.spec.js +57 -0
  244. package/dist/server.spec.js.map +1 -0
  245. package/dist/user.spec.d.ts +2 -0
  246. package/dist/user.spec.d.ts.map +1 -0
  247. package/dist/user.spec.js +31 -0
  248. package/dist/user.spec.js.map +1 -0
  249. package/dist/util/mac.spec.d.ts +2 -0
  250. package/dist/util/mac.spec.d.ts.map +1 -0
  251. package/dist/util/mac.spec.js +36 -0
  252. package/dist/util/mac.spec.js.map +1 -0
  253. package/dist/version.spec.d.ts +2 -0
  254. package/dist/version.spec.d.ts.map +1 -0
  255. package/dist/version.spec.js +20 -0
  256. package/dist/version.spec.js.map +1 -0
  257. package/package.json +4 -4
  258. package/dist/matter/matterAccessoryCache.d.ts.map +0 -1
  259. package/dist/matter/matterAccessoryCache.js.map +0 -1
  260. package/dist/matter/matterBehaviors.d.ts +0 -194
  261. package/dist/matter/matterBehaviors.d.ts.map +0 -1
  262. package/dist/matter/matterBehaviors.js +0 -665
  263. package/dist/matter/matterBehaviors.js.map +0 -1
  264. package/dist/matter/matterConfigValidator.d.ts.map +0 -1
  265. package/dist/matter/matterConfigValidator.js.map +0 -1
  266. package/dist/matter/matterErrorHandler.d.ts +0 -106
  267. package/dist/matter/matterErrorHandler.d.ts.map +0 -1
  268. package/dist/matter/matterErrorHandler.js +0 -495
  269. package/dist/matter/matterErrorHandler.js.map +0 -1
  270. package/dist/matter/matterLogFormatter.d.ts.map +0 -1
  271. package/dist/matter/matterLogFormatter.js.map +0 -1
  272. package/dist/matter/matterNetworkMonitor.d.ts +0 -68
  273. package/dist/matter/matterNetworkMonitor.d.ts.map +0 -1
  274. package/dist/matter/matterNetworkMonitor.js +0 -249
  275. package/dist/matter/matterNetworkMonitor.js.map +0 -1
  276. package/dist/matter/matterServer.d.ts.map +0 -1
  277. package/dist/matter/matterServer.js.map +0 -1
  278. package/dist/matter/matterServerHelpers.d.ts.map +0 -1
  279. package/dist/matter/matterServerHelpers.js.map +0 -1
  280. package/dist/matter/matterSharedTypes.d.ts.map +0 -1
  281. package/dist/matter/matterSharedTypes.js.map +0 -1
  282. package/dist/matter/matterStorage.d.ts.map +0 -1
  283. package/dist/matter/matterTypes.d.ts.map +0 -1
  284. package/dist/matter/matterTypes.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChildBridgeMatterManager.js","sourceRoot":"","sources":["../../src/matter/ChildBridgeMatterManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * External Matter Accessory Publisher
3
+ *
4
+ * Shared logic for publishing external Matter accessories on dedicated bridges.
5
+ * Used by both MatterBridgeManager and ChildBridgeMatterManager to avoid code duplication.
6
+ */
7
+ import type { InternalMatterAccessory } from './types.js';
8
+ import { MatterServer } from './server.js';
9
+ /**
10
+ * Configuration context for publishing external Matter accessories
11
+ */
12
+ export interface ExternalAccessoryPublishContext {
13
+ /** Port service for allocating Matter ports */
14
+ portService: {
15
+ requestMatterPort: (uniqueId: string) => Promise<number | null | undefined>;
16
+ };
17
+ /** Network interfaces to bind to (from bridge config) */
18
+ networkInterfaces?: string[];
19
+ /** Whether debug mode is enabled */
20
+ debugModeEnabled?: boolean;
21
+ }
22
+ /**
23
+ * Result of publishing an external Matter accessory
24
+ */
25
+ export interface PublishedExternalAccessory {
26
+ /** The MatterServer instance for this accessory */
27
+ server: MatterServer;
28
+ /** Port the server is running on */
29
+ port: number;
30
+ /** Commissioning information */
31
+ commissioningInfo: {
32
+ qrCode?: string;
33
+ manualPairingCode?: string;
34
+ serialNumber?: string;
35
+ commissioned: boolean;
36
+ };
37
+ }
38
+ /**
39
+ * Publish an external Matter accessory on its own dedicated Matter server.
40
+ * This is required for devices like Robotic Vacuum Cleaners that Apple Home
41
+ * requires to be on their own bridge.
42
+ *
43
+ * @param accessory - The Matter accessory to publish
44
+ * @param context - Configuration context for publishing
45
+ * @returns Published accessory info, or null if publishing failed
46
+ */
47
+ export declare function publishExternalMatterAccessory(accessory: InternalMatterAccessory, context: ExternalAccessoryPublishContext): Promise<PublishedExternalAccessory | null>;
48
+ //# sourceMappingURL=ExternalMatterAccessoryPublisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalMatterAccessoryPublisher.d.ts","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,+CAA+C;IAC/C,WAAW,EAAE;QACX,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;KAC5E,CAAA;IACD,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,mDAAmD;IACnD,MAAM,EAAE,YAAY,CAAA;IACpB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,gCAAgC;IAChC,iBAAiB,EAAE;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,OAAO,CAAA;KACtB,CAAA;CACF;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,uBAAuB,EAClC,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAgE5C"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * External Matter Accessory Publisher
3
+ *
4
+ * Shared logic for publishing external Matter accessories on dedicated bridges.
5
+ * Used by both MatterBridgeManager and ChildBridgeMatterManager to avoid code duplication.
6
+ */
7
+ import { Logger } from '../logger.js';
8
+ import { User } from '../user.js';
9
+ import { generate } from '../util/mac.js';
10
+ import { MatterServer } from './server.js';
11
+ const log = Logger.internal;
12
+ /**
13
+ * Publish an external Matter accessory on its own dedicated Matter server.
14
+ * This is required for devices like Robotic Vacuum Cleaners that Apple Home
15
+ * requires to be on their own bridge.
16
+ *
17
+ * @param accessory - The Matter accessory to publish
18
+ * @param context - Configuration context for publishing
19
+ * @returns Published accessory info, or null if publishing failed
20
+ */
21
+ export async function publishExternalMatterAccessory(accessory, context) {
22
+ // Validate accessory has required fields
23
+ if (!accessory.uuid) {
24
+ log.error('External Matter accessory missing UUID - skipping');
25
+ return null;
26
+ }
27
+ if (!accessory.displayName) {
28
+ log.error(`External Matter accessory ${accessory.uuid} missing displayName - skipping`);
29
+ return null;
30
+ }
31
+ // Generate deterministic MAC address from UUID (same pattern as HAP external accessories)
32
+ const advertiseAddress = generate(accessory.uuid);
33
+ // For Matter, use the MAC without colons as uniqueId
34
+ const uniqueId = advertiseAddress.replace(/:/g, '');
35
+ // Allocate Matter port for the external Matter server
36
+ const port = await context.portService.requestMatterPort(uniqueId);
37
+ if (!port) {
38
+ log.error(`Failed to allocate Matter port for external Matter accessory ${accessory.displayName}`);
39
+ log.error('Please configure matterPorts in config.json or free up ports in the default range (5530-5541)');
40
+ return null;
41
+ }
42
+ log.info(`Allocated port ${port} for external Matter accessory: ${accessory.displayName}`);
43
+ // Create dedicated Matter server for this accessory
44
+ const matterServer = new MatterServer({
45
+ port,
46
+ uniqueId,
47
+ storagePath: User.matterPath(),
48
+ manufacturer: accessory.manufacturer,
49
+ model: accessory.model,
50
+ firmwareRevision: accessory.firmwareRevision,
51
+ serialNumber: accessory.serialNumber || uniqueId, // use uniqueId as fallback serial number
52
+ debugModeEnabled: context.debugModeEnabled,
53
+ externalAccessory: true, // external accessory, added before server runs
54
+ networkInterfaces: context.networkInterfaces,
55
+ });
56
+ // Start the Matter server (but don't run it yet due to externalAccessory mode)
57
+ await matterServer.start();
58
+ // Get plugin identifier from accessory
59
+ const pluginIdentifier = accessory._associatedPlugin || 'unknown';
60
+ // Register the accessory to this dedicated server
61
+ await matterServer.registerPlatformAccessories(pluginIdentifier, 'ExternalMatter', [accessory]);
62
+ // Now run the server with the device already attached (required for external accessories)
63
+ await matterServer.runServer();
64
+ log.info(`✓ External Matter accessory published: ${accessory.displayName} on port ${port}`);
65
+ // Get commissioning info
66
+ const commissioningInfo = matterServer.getCommissioningInfo();
67
+ return {
68
+ server: matterServer,
69
+ port,
70
+ commissioningInfo,
71
+ };
72
+ }
73
+ //# sourceMappingURL=ExternalMatterAccessoryPublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalMatterAccessoryPublisher.js","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAA;AAiC3B;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,SAAkC,EAClC,OAAwC;IAExC,yCAAyC;IACzC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,6BAA6B,SAAS,CAAC,IAAI,iCAAiC,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAEjD,qDAAqD;IACrD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEnD,sDAAsD;IACtD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAClE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,gEAAgE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;QAClG,GAAG,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAA;QAC1G,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,mCAAmC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;IAE1F,oDAAoD;IACpD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;QACpC,IAAI;QACJ,QAAQ;QACR,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE;QAC9B,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;QAC5C,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,QAAQ,EAAE,yCAAyC;QAC3F,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,iBAAiB,EAAE,IAAI,EAAE,+CAA+C;QACxE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAA;IAEF,+EAA+E;IAC/E,MAAM,YAAY,CAAC,KAAK,EAAE,CAAA;IAE1B,uCAAuC;IACvC,MAAM,gBAAgB,GAAG,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAA;IAEjE,kDAAkD;IAClD,MAAM,YAAY,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAE/F,0FAA0F;IAC1F,MAAM,YAAY,CAAC,SAAS,EAAE,CAAA;IAE9B,GAAG,CAAC,IAAI,CAAC,0CAA0C,SAAS,CAAC,WAAW,YAAY,IAAI,EAAE,CAAC,CAAA;IAE3F,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,YAAY,CAAC,oBAAoB,EAAE,CAAA;IAE7D,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,IAAI;QACJ,iBAAiB;KAClB,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ExternalMatterAccessoryPublisher.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalMatterAccessoryPublisher.spec.d.ts","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,293 @@
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import { Logger } from '../logger.js';
3
+ import { User } from '../user.js';
4
+ import * as mac from '../util/mac.js';
5
+ import { publishExternalMatterAccessory } from './ExternalMatterAccessoryPublisher.js';
6
+ import { MatterServer } from './server.js';
7
+ // Mock dependencies
8
+ vi.mock('../logger.js', () => {
9
+ const mockLogger = {
10
+ error: vi.fn(),
11
+ info: vi.fn(),
12
+ warn: vi.fn(),
13
+ debug: vi.fn(),
14
+ log: vi.fn(),
15
+ };
16
+ return {
17
+ Logger: {
18
+ internal: mockLogger,
19
+ withPrefix: vi.fn(() => mockLogger),
20
+ },
21
+ };
22
+ });
23
+ vi.mock('../user.js');
24
+ vi.mock('../util/mac.js');
25
+ vi.mock('./server.js');
26
+ describe('externalMatterAccessoryPublisher', () => {
27
+ let mockAccessory;
28
+ let mockContext;
29
+ let mockPortService;
30
+ let mockMatterServer;
31
+ let logErrorSpy;
32
+ let logInfoSpy;
33
+ beforeEach(() => {
34
+ // Reset all mocks
35
+ vi.clearAllMocks();
36
+ // Get logger spies
37
+ logErrorSpy = vi.mocked(Logger).internal.error;
38
+ logInfoSpy = vi.mocked(Logger).internal.info;
39
+ // Mock User.matterPath()
40
+ vi.mocked(User).matterPath = vi.fn().mockReturnValue('/mock/matter/path');
41
+ // Mock MAC address generation
42
+ vi.mocked(mac.generate).mockReturnValue('AA:BB:CC:DD:EE:FF');
43
+ // Mock MatterServer
44
+ mockMatterServer = {
45
+ start: vi.fn().mockResolvedValue(undefined),
46
+ registerPlatformAccessories: vi.fn().mockResolvedValue(undefined),
47
+ runServer: vi.fn().mockResolvedValue(undefined),
48
+ getCommissioningInfo: vi.fn().mockReturnValue({
49
+ qrCode: 'MT:MOCK-QR-CODE',
50
+ manualPairingCode: '12345678',
51
+ serialNumber: 'MOCK-SERIAL',
52
+ commissioned: false,
53
+ }),
54
+ };
55
+ vi.mocked(MatterServer).mockImplementation(function () {
56
+ return mockMatterServer;
57
+ });
58
+ // Create mock port service
59
+ mockPortService = {
60
+ requestMatterPort: vi.fn().mockResolvedValue(5530),
61
+ };
62
+ // Create mock context
63
+ mockContext = {
64
+ portService: mockPortService,
65
+ networkInterfaces: ['eth0'],
66
+ debugModeEnabled: true,
67
+ };
68
+ // Create mock accessory
69
+ mockAccessory = {
70
+ uuid: 'test-uuid-123',
71
+ displayName: 'Test Vacuum',
72
+ manufacturer: 'Test Mfg',
73
+ model: 'Test Model',
74
+ firmwareRevision: '1.0.0',
75
+ serialNumber: 'SN-123',
76
+ _associatedPlugin: 'homebridge-test-plugin',
77
+ };
78
+ });
79
+ describe('publishExternalMatterAccessory', () => {
80
+ describe('validation', () => {
81
+ it('should return null when accessory has no UUID', async () => {
82
+ const invalidAccessory = { ...mockAccessory, uuid: undefined };
83
+ const result = await publishExternalMatterAccessory(invalidAccessory, mockContext);
84
+ expect(result).toBeNull();
85
+ expect(logErrorSpy).toHaveBeenCalledWith('External Matter accessory missing UUID - skipping');
86
+ });
87
+ it('should return null when accessory has no displayName', async () => {
88
+ const invalidAccessory = { ...mockAccessory, displayName: undefined };
89
+ const result = await publishExternalMatterAccessory(invalidAccessory, mockContext);
90
+ expect(result).toBeNull();
91
+ expect(logErrorSpy).toHaveBeenCalledWith('External Matter accessory test-uuid-123 missing displayName - skipping');
92
+ });
93
+ it('should return null when port allocation fails', async () => {
94
+ mockPortService.requestMatterPort.mockResolvedValue(null);
95
+ const result = await publishExternalMatterAccessory(mockAccessory, mockContext);
96
+ expect(result).toBeNull();
97
+ expect(logErrorSpy).toHaveBeenCalledWith('Failed to allocate Matter port for external Matter accessory Test Vacuum');
98
+ expect(logErrorSpy).toHaveBeenCalledWith('Please configure matterPorts in config.json or free up ports in the default range (5530-5541)');
99
+ });
100
+ it('should return null when port allocation returns undefined', async () => {
101
+ mockPortService.requestMatterPort.mockResolvedValue(undefined);
102
+ const result = await publishExternalMatterAccessory(mockAccessory, mockContext);
103
+ expect(result).toBeNull();
104
+ expect(logErrorSpy).toHaveBeenCalledWith('Failed to allocate Matter port for external Matter accessory Test Vacuum');
105
+ });
106
+ });
107
+ describe('mAC address generation', () => {
108
+ it('should generate deterministic MAC address from UUID', async () => {
109
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
110
+ expect(mac.generate).toHaveBeenCalledWith('test-uuid-123');
111
+ });
112
+ it('should use MAC without colons as uniqueId', async () => {
113
+ vi.mocked(mac.generate).mockReturnValue('11:22:33:44:55:66');
114
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
115
+ expect(mockPortService.requestMatterPort).toHaveBeenCalledWith('112233445566');
116
+ });
117
+ });
118
+ describe('port allocation', () => {
119
+ it('should request Matter port with uniqueId', async () => {
120
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
121
+ expect(mockPortService.requestMatterPort).toHaveBeenCalledWith('AABBCCDDEEFF');
122
+ });
123
+ it('should log port allocation success', async () => {
124
+ mockPortService.requestMatterPort.mockResolvedValue(5535);
125
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
126
+ expect(logInfoSpy).toHaveBeenCalledWith('Allocated port 5535 for external Matter accessory: Test Vacuum');
127
+ });
128
+ });
129
+ describe('matterServer creation', () => {
130
+ it('should create MatterServer with correct configuration', async () => {
131
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
132
+ expect(MatterServer).toHaveBeenCalledWith({
133
+ port: 5530,
134
+ uniqueId: 'AABBCCDDEEFF',
135
+ storagePath: '/mock/matter/path',
136
+ manufacturer: 'Test Mfg',
137
+ model: 'Test Model',
138
+ firmwareRevision: '1.0.0',
139
+ serialNumber: 'SN-123',
140
+ debugModeEnabled: true,
141
+ externalAccessory: true,
142
+ networkInterfaces: ['eth0'],
143
+ });
144
+ });
145
+ it('should use uniqueId as fallback serial number', async () => {
146
+ const accessoryNoSerial = { ...mockAccessory, serialNumber: undefined };
147
+ await publishExternalMatterAccessory(accessoryNoSerial, mockContext);
148
+ expect(MatterServer).toHaveBeenCalledWith(expect.objectContaining({
149
+ serialNumber: 'AABBCCDDEEFF',
150
+ }));
151
+ });
152
+ it('should pass through debugModeEnabled setting', async () => {
153
+ const contextNoDebug = { ...mockContext, debugModeEnabled: false };
154
+ await publishExternalMatterAccessory(mockAccessory, contextNoDebug);
155
+ expect(MatterServer).toHaveBeenCalledWith(expect.objectContaining({
156
+ debugModeEnabled: false,
157
+ }));
158
+ });
159
+ it('should pass through networkInterfaces setting', async () => {
160
+ const contextMultipleInterfaces = {
161
+ ...mockContext,
162
+ networkInterfaces: ['eth0', 'eth1', 'wlan0'],
163
+ };
164
+ await publishExternalMatterAccessory(mockAccessory, contextMultipleInterfaces);
165
+ expect(MatterServer).toHaveBeenCalledWith(expect.objectContaining({
166
+ networkInterfaces: ['eth0', 'eth1', 'wlan0'],
167
+ }));
168
+ });
169
+ it('should handle undefined networkInterfaces', async () => {
170
+ const contextNoInterfaces = { ...mockContext, networkInterfaces: undefined };
171
+ await publishExternalMatterAccessory(mockAccessory, contextNoInterfaces);
172
+ expect(MatterServer).toHaveBeenCalledWith(expect.objectContaining({
173
+ networkInterfaces: undefined,
174
+ }));
175
+ });
176
+ });
177
+ describe('server lifecycle', () => {
178
+ it('should start server before registering accessory', async () => {
179
+ const callOrder = [];
180
+ mockMatterServer.start.mockImplementation(() => {
181
+ callOrder.push('start');
182
+ return Promise.resolve();
183
+ });
184
+ mockMatterServer.registerPlatformAccessories.mockImplementation(() => {
185
+ callOrder.push('register');
186
+ return Promise.resolve();
187
+ });
188
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
189
+ expect(callOrder).toEqual(['start', 'register']);
190
+ });
191
+ it('should register accessory with plugin identifier', async () => {
192
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
193
+ expect(mockMatterServer.registerPlatformAccessories).toHaveBeenCalledWith('homebridge-test-plugin', 'ExternalMatter', [mockAccessory]);
194
+ });
195
+ it('should use "unknown" plugin identifier when not set', async () => {
196
+ const accessoryNoPlugin = { ...mockAccessory, _associatedPlugin: undefined };
197
+ await publishExternalMatterAccessory(accessoryNoPlugin, mockContext);
198
+ expect(mockMatterServer.registerPlatformAccessories).toHaveBeenCalledWith('unknown', 'ExternalMatter', [
199
+ accessoryNoPlugin,
200
+ ]);
201
+ });
202
+ it('should run server after registering accessory', async () => {
203
+ const callOrder = [];
204
+ mockMatterServer.registerPlatformAccessories.mockImplementation(() => {
205
+ callOrder.push('register');
206
+ return Promise.resolve();
207
+ });
208
+ mockMatterServer.runServer.mockImplementation(() => {
209
+ callOrder.push('runServer');
210
+ return Promise.resolve();
211
+ });
212
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
213
+ expect(callOrder).toEqual(['register', 'runServer']);
214
+ });
215
+ it('should call all server lifecycle methods', async () => {
216
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
217
+ expect(mockMatterServer.start).toHaveBeenCalledOnce();
218
+ expect(mockMatterServer.registerPlatformAccessories).toHaveBeenCalledOnce();
219
+ expect(mockMatterServer.runServer).toHaveBeenCalledOnce();
220
+ });
221
+ });
222
+ describe('success path', () => {
223
+ it('should return PublishedExternalAccessory on success', async () => {
224
+ const result = await publishExternalMatterAccessory(mockAccessory, mockContext);
225
+ expect(result).toEqual({
226
+ server: mockMatterServer,
227
+ port: 5530,
228
+ commissioningInfo: {
229
+ qrCode: 'MT:MOCK-QR-CODE',
230
+ manualPairingCode: '12345678',
231
+ serialNumber: 'MOCK-SERIAL',
232
+ commissioned: false,
233
+ },
234
+ });
235
+ });
236
+ it('should log success message', async () => {
237
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
238
+ expect(logInfoSpy).toHaveBeenCalledWith('✓ External Matter accessory published: Test Vacuum on port 5530');
239
+ });
240
+ it('should retrieve commissioning info from server', async () => {
241
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
242
+ expect(mockMatterServer.getCommissioningInfo).toHaveBeenCalledOnce();
243
+ });
244
+ it('should return commissioning info with commissioned status', async () => {
245
+ mockMatterServer.getCommissioningInfo.mockReturnValue({
246
+ qrCode: undefined,
247
+ manualPairingCode: undefined,
248
+ serialNumber: 'SN-123',
249
+ commissioned: true,
250
+ });
251
+ const result = await publishExternalMatterAccessory(mockAccessory, mockContext);
252
+ expect(result?.commissioningInfo).toEqual({
253
+ qrCode: undefined,
254
+ manualPairingCode: undefined,
255
+ serialNumber: 'SN-123',
256
+ commissioned: true,
257
+ });
258
+ });
259
+ });
260
+ describe('edge cases', () => {
261
+ it('should handle empty string UUID', async () => {
262
+ const invalidAccessory = { ...mockAccessory, uuid: '' };
263
+ const result = await publishExternalMatterAccessory(invalidAccessory, mockContext);
264
+ expect(result).toBeNull();
265
+ expect(logErrorSpy).toHaveBeenCalledWith('External Matter accessory missing UUID - skipping');
266
+ });
267
+ it('should handle empty string displayName', async () => {
268
+ const invalidAccessory = { ...mockAccessory, displayName: '' };
269
+ const result = await publishExternalMatterAccessory(invalidAccessory, mockContext);
270
+ expect(result).toBeNull();
271
+ });
272
+ it('should handle MAC address with different format', async () => {
273
+ vi.mocked(mac.generate).mockReturnValue('00:11:22:33:44:55');
274
+ await publishExternalMatterAccessory(mockAccessory, mockContext);
275
+ expect(mockPortService.requestMatterPort).toHaveBeenCalledWith('001122334455');
276
+ });
277
+ it('should handle port allocation returning 0', async () => {
278
+ mockPortService.requestMatterPort.mockResolvedValue(0);
279
+ const result = await publishExternalMatterAccessory(mockAccessory, mockContext);
280
+ expect(result).toBeNull();
281
+ });
282
+ it('should handle very high port numbers', async () => {
283
+ mockPortService.requestMatterPort.mockResolvedValue(65535);
284
+ const result = await publishExternalMatterAccessory(mockAccessory, mockContext);
285
+ expect(result?.port).toBe(65535);
286
+ expect(MatterServer).toHaveBeenCalledWith(expect.objectContaining({
287
+ port: 65535,
288
+ }));
289
+ });
290
+ });
291
+ });
292
+ });
293
+ //# sourceMappingURL=ExternalMatterAccessoryPublisher.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalMatterAccessoryPublisher.spec.js","sourceRoot":"","sources":["../../src/matter/ExternalMatterAccessoryPublisher.spec.ts"],"names":[],"mappings":"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"}