matterbridge 3.2.6-dev-20250906-34345e5 → 3.2.6

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 (279) hide show
  1. package/CHANGELOG.md +2 -1
  2. package/dist/cli.d.ts +26 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +91 -2
  5. package/dist/cli.js.map +1 -0
  6. package/dist/cliEmitter.d.ts +34 -0
  7. package/dist/cliEmitter.d.ts.map +1 -0
  8. package/dist/cliEmitter.js +30 -0
  9. package/dist/cliEmitter.js.map +1 -0
  10. package/dist/clusters/export.d.ts +2 -0
  11. package/dist/clusters/export.d.ts.map +1 -0
  12. package/dist/clusters/export.js +2 -0
  13. package/dist/clusters/export.js.map +1 -0
  14. package/dist/defaultConfigSchema.d.ts +28 -0
  15. package/dist/defaultConfigSchema.d.ts.map +1 -0
  16. package/dist/defaultConfigSchema.js +24 -0
  17. package/dist/defaultConfigSchema.js.map +1 -0
  18. package/dist/deviceManager.d.ts +112 -0
  19. package/dist/deviceManager.d.ts.map +1 -0
  20. package/dist/deviceManager.js +94 -1
  21. package/dist/deviceManager.js.map +1 -0
  22. package/dist/devices/airConditioner.d.ts +98 -0
  23. package/dist/devices/airConditioner.d.ts.map +1 -0
  24. package/dist/devices/airConditioner.js +57 -0
  25. package/dist/devices/airConditioner.js.map +1 -0
  26. package/dist/devices/batteryStorage.d.ts +48 -0
  27. package/dist/devices/batteryStorage.d.ts.map +1 -0
  28. package/dist/devices/batteryStorage.js +48 -1
  29. package/dist/devices/batteryStorage.js.map +1 -0
  30. package/dist/devices/cooktop.d.ts +60 -0
  31. package/dist/devices/cooktop.d.ts.map +1 -0
  32. package/dist/devices/cooktop.js +55 -0
  33. package/dist/devices/cooktop.js.map +1 -0
  34. package/dist/devices/dishwasher.d.ts +71 -0
  35. package/dist/devices/dishwasher.d.ts.map +1 -0
  36. package/dist/devices/dishwasher.js +57 -0
  37. package/dist/devices/dishwasher.js.map +1 -0
  38. package/dist/devices/evse.d.ts +75 -0
  39. package/dist/devices/evse.d.ts.map +1 -0
  40. package/dist/devices/evse.js +74 -10
  41. package/dist/devices/evse.js.map +1 -0
  42. package/dist/devices/export.d.ts +17 -0
  43. package/dist/devices/export.d.ts.map +1 -0
  44. package/dist/devices/export.js +5 -0
  45. package/dist/devices/export.js.map +1 -0
  46. package/dist/devices/extractorHood.d.ts +46 -0
  47. package/dist/devices/extractorHood.d.ts.map +1 -0
  48. package/dist/devices/extractorHood.js +42 -0
  49. package/dist/devices/extractorHood.js.map +1 -0
  50. package/dist/devices/heatPump.d.ts +47 -0
  51. package/dist/devices/heatPump.d.ts.map +1 -0
  52. package/dist/devices/heatPump.js +50 -2
  53. package/dist/devices/heatPump.js.map +1 -0
  54. package/dist/devices/laundryDryer.d.ts +67 -0
  55. package/dist/devices/laundryDryer.d.ts.map +1 -0
  56. package/dist/devices/laundryDryer.js +62 -3
  57. package/dist/devices/laundryDryer.js.map +1 -0
  58. package/dist/devices/laundryWasher.d.ts +81 -0
  59. package/dist/devices/laundryWasher.d.ts.map +1 -0
  60. package/dist/devices/laundryWasher.js +70 -4
  61. package/dist/devices/laundryWasher.js.map +1 -0
  62. package/dist/devices/microwaveOven.d.ts +168 -0
  63. package/dist/devices/microwaveOven.d.ts.map +1 -0
  64. package/dist/devices/microwaveOven.js +88 -5
  65. package/dist/devices/microwaveOven.js.map +1 -0
  66. package/dist/devices/oven.d.ts +105 -0
  67. package/dist/devices/oven.d.ts.map +1 -0
  68. package/dist/devices/oven.js +85 -0
  69. package/dist/devices/oven.js.map +1 -0
  70. package/dist/devices/refrigerator.d.ts +118 -0
  71. package/dist/devices/refrigerator.d.ts.map +1 -0
  72. package/dist/devices/refrigerator.js +102 -0
  73. package/dist/devices/refrigerator.js.map +1 -0
  74. package/dist/devices/roboticVacuumCleaner.d.ts +112 -0
  75. package/dist/devices/roboticVacuumCleaner.d.ts.map +1 -0
  76. package/dist/devices/roboticVacuumCleaner.js +100 -9
  77. package/dist/devices/roboticVacuumCleaner.js.map +1 -0
  78. package/dist/devices/solarPower.d.ts +40 -0
  79. package/dist/devices/solarPower.d.ts.map +1 -0
  80. package/dist/devices/solarPower.js +38 -0
  81. package/dist/devices/solarPower.js.map +1 -0
  82. package/dist/devices/speaker.d.ts +83 -0
  83. package/dist/devices/speaker.d.ts.map +1 -0
  84. package/dist/devices/speaker.js +80 -0
  85. package/dist/devices/speaker.js.map +1 -0
  86. package/dist/devices/temperatureControl.d.ts +166 -0
  87. package/dist/devices/temperatureControl.d.ts.map +1 -0
  88. package/dist/devices/temperatureControl.js +25 -3
  89. package/dist/devices/temperatureControl.js.map +1 -0
  90. package/dist/devices/waterHeater.d.ts +111 -0
  91. package/dist/devices/waterHeater.d.ts.map +1 -0
  92. package/dist/devices/waterHeater.js +82 -2
  93. package/dist/devices/waterHeater.js.map +1 -0
  94. package/dist/dgram/coap.d.ts +205 -0
  95. package/dist/dgram/coap.d.ts.map +1 -0
  96. package/dist/dgram/coap.js +126 -13
  97. package/dist/dgram/coap.js.map +1 -0
  98. package/dist/dgram/dgram.d.ts +141 -0
  99. package/dist/dgram/dgram.d.ts.map +1 -0
  100. package/dist/dgram/dgram.js +114 -2
  101. package/dist/dgram/dgram.js.map +1 -0
  102. package/dist/dgram/mb_coap.d.ts +24 -0
  103. package/dist/dgram/mb_coap.d.ts.map +1 -0
  104. package/dist/dgram/mb_coap.js +41 -3
  105. package/dist/dgram/mb_coap.js.map +1 -0
  106. package/dist/dgram/mb_mdns.d.ts +24 -0
  107. package/dist/dgram/mb_mdns.d.ts.map +1 -0
  108. package/dist/dgram/mb_mdns.js +80 -15
  109. package/dist/dgram/mb_mdns.js.map +1 -0
  110. package/dist/dgram/mdns.d.ts +290 -0
  111. package/dist/dgram/mdns.d.ts.map +1 -0
  112. package/dist/dgram/mdns.js +299 -137
  113. package/dist/dgram/mdns.js.map +1 -0
  114. package/dist/dgram/multicast.d.ts +67 -0
  115. package/dist/dgram/multicast.d.ts.map +1 -0
  116. package/dist/dgram/multicast.js +62 -1
  117. package/dist/dgram/multicast.js.map +1 -0
  118. package/dist/dgram/unicast.d.ts +56 -0
  119. package/dist/dgram/unicast.d.ts.map +1 -0
  120. package/dist/dgram/unicast.js +54 -0
  121. package/dist/dgram/unicast.js.map +1 -0
  122. package/dist/frontend.d.ts +313 -0
  123. package/dist/frontend.d.ts.map +1 -0
  124. package/dist/frontend.js +450 -24
  125. package/dist/frontend.js.map +1 -0
  126. package/dist/globalMatterbridge.d.ts +59 -0
  127. package/dist/globalMatterbridge.d.ts.map +1 -0
  128. package/dist/globalMatterbridge.js +47 -0
  129. package/dist/globalMatterbridge.js.map +1 -0
  130. package/dist/helpers.d.ts +48 -0
  131. package/dist/helpers.d.ts.map +1 -0
  132. package/dist/helpers.js +53 -0
  133. package/dist/helpers.js.map +1 -0
  134. package/dist/index.d.ts +33 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +30 -1
  137. package/dist/index.js.map +1 -0
  138. package/dist/jest-utils/jestHelpers.d.ts +103 -0
  139. package/dist/jest-utils/jestHelpers.d.ts.map +1 -0
  140. package/dist/jest-utils/jestHelpers.js +124 -2
  141. package/dist/jest-utils/jestHelpers.js.map +1 -0
  142. package/dist/logger/export.d.ts +2 -0
  143. package/dist/logger/export.d.ts.map +1 -0
  144. package/dist/logger/export.js +1 -0
  145. package/dist/logger/export.js.map +1 -0
  146. package/dist/matter/behaviors.d.ts +2 -0
  147. package/dist/matter/behaviors.d.ts.map +1 -0
  148. package/dist/matter/behaviors.js +2 -0
  149. package/dist/matter/behaviors.js.map +1 -0
  150. package/dist/matter/clusters.d.ts +2 -0
  151. package/dist/matter/clusters.d.ts.map +1 -0
  152. package/dist/matter/clusters.js +2 -0
  153. package/dist/matter/clusters.js.map +1 -0
  154. package/dist/matter/devices.d.ts +2 -0
  155. package/dist/matter/devices.d.ts.map +1 -0
  156. package/dist/matter/devices.js +2 -0
  157. package/dist/matter/devices.js.map +1 -0
  158. package/dist/matter/endpoints.d.ts +2 -0
  159. package/dist/matter/endpoints.d.ts.map +1 -0
  160. package/dist/matter/endpoints.js +2 -0
  161. package/dist/matter/endpoints.js.map +1 -0
  162. package/dist/matter/export.d.ts +5 -0
  163. package/dist/matter/export.d.ts.map +1 -0
  164. package/dist/matter/export.js +3 -0
  165. package/dist/matter/export.js.map +1 -0
  166. package/dist/matter/types.d.ts +3 -0
  167. package/dist/matter/types.d.ts.map +1 -0
  168. package/dist/matter/types.js +3 -0
  169. package/dist/matter/types.js.map +1 -0
  170. package/dist/matterbridge.d.ts +457 -0
  171. package/dist/matterbridge.d.ts.map +1 -0
  172. package/dist/matterbridge.js +780 -49
  173. package/dist/matterbridge.js.map +1 -0
  174. package/dist/matterbridgeAccessoryPlatform.d.ts +42 -0
  175. package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
  176. package/dist/matterbridgeAccessoryPlatform.js +36 -0
  177. package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
  178. package/dist/matterbridgeBehaviors.d.ts +1351 -0
  179. package/dist/matterbridgeBehaviors.d.ts.map +1 -0
  180. package/dist/matterbridgeBehaviors.js +65 -5
  181. package/dist/matterbridgeBehaviors.js.map +1 -0
  182. package/dist/matterbridgeDeviceTypes.d.ts +761 -0
  183. package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
  184. package/dist/matterbridgeDeviceTypes.js +630 -17
  185. package/dist/matterbridgeDeviceTypes.js.map +1 -0
  186. package/dist/matterbridgeDynamicPlatform.d.ts +42 -0
  187. package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
  188. package/dist/matterbridgeDynamicPlatform.js +36 -0
  189. package/dist/matterbridgeDynamicPlatform.js.map +1 -0
  190. package/dist/matterbridgeEndpoint.d.ts +1438 -0
  191. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  192. package/dist/matterbridgeEndpoint.js +1301 -54
  193. package/dist/matterbridgeEndpoint.js.map +1 -0
  194. package/dist/matterbridgeEndpointHelpers.d.ts +407 -0
  195. package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
  196. package/dist/matterbridgeEndpointHelpers.js +345 -12
  197. package/dist/matterbridgeEndpointHelpers.js.map +1 -0
  198. package/dist/matterbridgePlatform.d.ts +379 -0
  199. package/dist/matterbridgePlatform.d.ts.map +1 -0
  200. package/dist/matterbridgePlatform.js +304 -0
  201. package/dist/matterbridgePlatform.js.map +1 -0
  202. package/dist/matterbridgeTypes.d.ts +198 -0
  203. package/dist/matterbridgeTypes.d.ts.map +1 -0
  204. package/dist/matterbridgeTypes.js +25 -0
  205. package/dist/matterbridgeTypes.js.map +1 -0
  206. package/dist/pluginManager.d.ts +270 -0
  207. package/dist/pluginManager.d.ts.map +1 -0
  208. package/dist/pluginManager.js +249 -3
  209. package/dist/pluginManager.js.map +1 -0
  210. package/dist/shelly.d.ts +174 -0
  211. package/dist/shelly.d.ts.map +1 -0
  212. package/dist/shelly.js +168 -7
  213. package/dist/shelly.js.map +1 -0
  214. package/dist/storage/export.d.ts +2 -0
  215. package/dist/storage/export.d.ts.map +1 -0
  216. package/dist/storage/export.js +1 -0
  217. package/dist/storage/export.js.map +1 -0
  218. package/dist/update.d.ts +75 -0
  219. package/dist/update.d.ts.map +1 -0
  220. package/dist/update.js +69 -0
  221. package/dist/update.js.map +1 -0
  222. package/dist/utils/colorUtils.d.ts +99 -0
  223. package/dist/utils/colorUtils.d.ts.map +1 -0
  224. package/dist/utils/colorUtils.js +97 -2
  225. package/dist/utils/colorUtils.js.map +1 -0
  226. package/dist/utils/commandLine.d.ts +59 -0
  227. package/dist/utils/commandLine.d.ts.map +1 -0
  228. package/dist/utils/commandLine.js +54 -0
  229. package/dist/utils/commandLine.js.map +1 -0
  230. package/dist/utils/copyDirectory.d.ts +33 -0
  231. package/dist/utils/copyDirectory.d.ts.map +1 -0
  232. package/dist/utils/copyDirectory.js +38 -1
  233. package/dist/utils/copyDirectory.js.map +1 -0
  234. package/dist/utils/createDirectory.d.ts +34 -0
  235. package/dist/utils/createDirectory.d.ts.map +1 -0
  236. package/dist/utils/createDirectory.js +33 -0
  237. package/dist/utils/createDirectory.js.map +1 -0
  238. package/dist/utils/createZip.d.ts +39 -0
  239. package/dist/utils/createZip.d.ts.map +1 -0
  240. package/dist/utils/createZip.js +47 -2
  241. package/dist/utils/createZip.js.map +1 -0
  242. package/dist/utils/deepCopy.d.ts +32 -0
  243. package/dist/utils/deepCopy.d.ts.map +1 -0
  244. package/dist/utils/deepCopy.js +39 -0
  245. package/dist/utils/deepCopy.js.map +1 -0
  246. package/dist/utils/deepEqual.d.ts +54 -0
  247. package/dist/utils/deepEqual.d.ts.map +1 -0
  248. package/dist/utils/deepEqual.js +72 -1
  249. package/dist/utils/deepEqual.js.map +1 -0
  250. package/dist/utils/error.d.ts +44 -0
  251. package/dist/utils/error.d.ts.map +1 -0
  252. package/dist/utils/error.js +41 -0
  253. package/dist/utils/error.js.map +1 -0
  254. package/dist/utils/export.d.ts +13 -0
  255. package/dist/utils/export.d.ts.map +1 -0
  256. package/dist/utils/export.js +1 -0
  257. package/dist/utils/export.js.map +1 -0
  258. package/dist/utils/hex.d.ts +89 -0
  259. package/dist/utils/hex.d.ts.map +1 -0
  260. package/dist/utils/hex.js +124 -0
  261. package/dist/utils/hex.js.map +1 -0
  262. package/dist/utils/isvalid.d.ts +103 -0
  263. package/dist/utils/isvalid.d.ts.map +1 -0
  264. package/dist/utils/isvalid.js +101 -0
  265. package/dist/utils/isvalid.js.map +1 -0
  266. package/dist/utils/network.d.ts +84 -0
  267. package/dist/utils/network.d.ts.map +1 -0
  268. package/dist/utils/network.js +91 -5
  269. package/dist/utils/network.js.map +1 -0
  270. package/dist/utils/spawn.d.ts +33 -0
  271. package/dist/utils/spawn.d.ts.map +1 -0
  272. package/dist/utils/spawn.js +40 -0
  273. package/dist/utils/spawn.js.map +1 -0
  274. package/dist/utils/wait.d.ts +54 -0
  275. package/dist/utils/wait.d.ts.map +1 -0
  276. package/dist/utils/wait.js +60 -8
  277. package/dist/utils/wait.js.map +1 -0
  278. package/npm-shrinkwrap.json +2 -2
  279. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAA6B,MAAM,kBAAkB,CAAC;AAEzE,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,eAAe;AACf,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,qCAA6B,EAAE,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,8BAAgB,CAAC,2BAAc,EAAE,CAAC,CAAC;AAEnK;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACnD,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;IAClC,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,GAAG,CAAC,KAAK,CAAC,kDAAkD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAChH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * @description This file contains the Jest helpers.
3
+ * @file src/jest/helpers.test.ts
4
+ * @author Luca Liguori
5
+ * @created 2025-09-03
6
+ * @version 1.0.1
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2025, 2026, 2027 Luca Liguori.
10
+ *
11
+ * Licensed under the Apache License, Version 2.0 (the "License");
12
+ * you may not use this file except in compliance with the License.
13
+ * You may obtain a copy of the License at
14
+ *
15
+ * http://www.apache.org/licenses/LICENSE-2.0
16
+ *
17
+ * Unless required by applicable law or agreed to in writing, software
18
+ * distributed under the License is distributed on an "AS IS" BASIS,
19
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ * See the License for the specific language governing permissions and
21
+ * limitations under the License.
22
+ */
23
+ import { Endpoint, Environment, ServerNode } from '@matter/main';
24
+ import { AggregatorEndpoint } from '@matter/main/endpoints';
25
+ /**
26
+ * Advance the Node.js event loop deterministically to allow chained asynchronous work (Promises scheduled in
27
+ * microtasks and follow‑up macrotasks) to complete inside tests without adding arbitrary long timeouts.
28
+ *
29
+ * NOTE: This does not guarantee OS level network IO completion—only JavaScript task queue progression inside the
30
+ * current process.
31
+ *
32
+ * @param {number} ticks Number of macrotask (setImmediate) turns to yield (default 3).
33
+ * @param {number} microTurns Number of microtask drains (Promise.resolve chains) after macrotask yielding (default 10).
34
+ * @param {number} pause Final timer delay in ms; set 0 to disable (default 100ms).
35
+ * @returns {Promise<void>} Resolves after the requested event loop advancement has completed.
36
+ */
37
+ export declare function flushAsync(ticks?: number, microTurns?: number, pause?: number): Promise<void>;
38
+ /**
39
+ * Flush (await) the lazy endpoint number persistence mechanism used by matter.js.
40
+ *
41
+ * Background:
42
+ * assignNumber() batches persistence (store.saveNumber + updating __nextNumber__) via an internal promise (#numbersPersisted).
43
+ * Calling endpointStores.close() waits for the current batch only. If new endpoints were added in the same macrotask
44
+ * cycle additional micro/macro turns might be needed to ensure the batch started. We defensively yield macrotasks
45
+ * (setImmediate) and then await close() multiple rounds.
46
+ *
47
+ * @param {ServerNode} targetServer The server whose endpoint numbering persistence should be flushed.
48
+ * @param {number} rounds Number of macrotask + close cycles to run (2 is usually sufficient; 1 often works).
49
+ * @returns {Promise<void>} Resolves when pending number persistence batches have completed.
50
+ */
51
+ export declare function flushAllEndpointNumberPersistence(targetServer: ServerNode, rounds?: number): Promise<void>;
52
+ /**
53
+ * Assert that every endpoint attached to the server has an assigned and (batch-)persisted endpoint number.
54
+ *
55
+ * This waits for any outstanding number persistence batch (endpointStores.close()), then traverses the endpoint
56
+ * graph and asserts:
57
+ * - Root endpoint: number is 0 (allowing undefined to coerce to 0 via nullish coalescing check).
58
+ * - All other endpoints: number > 0.
59
+ *
60
+ * @param {ServerNode} targetServer The server whose endpoint numbers are verified.
61
+ * @returns {Promise<void>} Resolves when assertions complete.
62
+ */
63
+ export declare function assertAllEndpointNumbersPersisted(targetServer: ServerNode): Promise<number>;
64
+ /**
65
+ * Create a Matterbridge Environment for testing.
66
+ * It will remove any existing home directory.
67
+ *
68
+ * @param {string} homeDir Home directory for the environment.
69
+ * @returns {Environment} The created environment.
70
+ */
71
+ export declare function createTestEnvironment(homeDir: string): Environment;
72
+ /**
73
+ * Start a Matterbridge ServerNode for testing.
74
+ *
75
+ * @param {string} name Name of the server (used for logging and product description).
76
+ * @param {number} port TCP port to listen on.
77
+ * @returns {Promise<[ServerNode<ServerNode.RootEndpoint>, Endpoint<AggregatorEndpoint>]>} Resolves to an array containing the created ServerNode and its AggregatorNode.
78
+ */
79
+ export declare function startServerNode(name: string, port: number): Promise<[ServerNode<ServerNode.RootEndpoint>, Endpoint<AggregatorEndpoint>]>;
80
+ /**
81
+ * Stop a Matterbridge ServerNode.
82
+ *
83
+ * @param {ServerNode<ServerNode.RootEndpoint>} server The server to stop.
84
+ * @returns {Promise<void>} Resolves when the server has stopped.
85
+ */
86
+ export declare function stopServerNode(server: ServerNode<ServerNode.RootEndpoint>): Promise<void>;
87
+ /**
88
+ * Add a device (endpoint) to a server or aggregator.
89
+ *
90
+ * @param {ServerNode<ServerNode.RootEndpoint> | Endpoint<AggregatorEndpoint>} owner The server or aggregator to add the device to.
91
+ * @param {Endpoint} device The device to add.
92
+ * @returns {Promise<void>} Resolves when the device has been added and is ready.
93
+ */
94
+ export declare function addDevice(owner: ServerNode<ServerNode.RootEndpoint> | Endpoint<AggregatorEndpoint>, device: Endpoint): Promise<boolean>;
95
+ /**
96
+ * Add a device (endpoint) to a server or aggregator.
97
+ *
98
+ * @param {ServerNode<ServerNode.RootEndpoint> | Endpoint<AggregatorEndpoint>} owner The server or aggregator to add the device to.
99
+ * @param {Endpoint} device The device to add.
100
+ * @returns {Promise<void>} Resolves when the device has been added and is ready.
101
+ */
102
+ export declare function deleteDevice(owner: ServerNode<ServerNode.RootEndpoint> | Endpoint<AggregatorEndpoint>, device: Endpoint): Promise<boolean>;
103
+ //# sourceMappingURL=jestHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jestHelpers.d.ts","sourceRoot":"","sources":["../../src/jest-utils/jestHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,EAAgB,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAkG,MAAM,cAAc,CAAC;AAC/K,OAAO,EAAE,kBAAkB,EAAgB,MAAM,wBAAwB,CAAC;AAS1E;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAAC,KAAK,GAAE,MAAU,EAAE,UAAU,GAAE,MAAW,EAAE,KAAK,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/G;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iCAAiC,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnH;AAsBD;;;;;;;;;;GAUG;AACH,wBAAsB,iCAAiC,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAcjG;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAgBlE;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAoE9I;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB/F;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAwB7I;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBhJ"}
@@ -1,8 +1,48 @@
1
+ /**
2
+ * @description This file contains the Jest helpers.
3
+ * @file src/jest/helpers.test.ts
4
+ * @author Luca Liguori
5
+ * @created 2025-09-03
6
+ * @version 1.0.1
7
+ * @license Apache-2.0
8
+ *
9
+ * Copyright 2025, 2026, 2027 Luca Liguori.
10
+ *
11
+ * Licensed under the Apache License, Version 2.0 (the "License");
12
+ * you may not use this file except in compliance with the License.
13
+ * You may obtain a copy of the License at
14
+ *
15
+ * http://www.apache.org/licenses/LICENSE-2.0
16
+ *
17
+ * Unless required by applicable law or agreed to in writing, software
18
+ * distributed under the License is distributed on an "AS IS" BASIS,
19
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ * See the License for the specific language governing permissions and
21
+ * limitations under the License.
22
+ */
1
23
  import { rmSync } from 'node:fs';
2
24
  import { inspect } from 'node:util';
25
+ // Matterbridge imports
3
26
  import { DeviceTypeId, Endpoint, Environment, ServerNode, ServerNodeStore, VendorId, LogFormat as MatterLogFormat, LogLevel as MatterLogLevel, Lifecycle } from '@matter/main';
4
27
  import { AggregatorEndpoint, RootEndpoint } from '@matter/main/endpoints';
5
28
  import { MdnsService } from '@matter/main/protocol';
29
+ // Plugins imports
30
+ /*
31
+ import { DeviceTypeId, Endpoint, Environment, MdnsService, ServerNode, ServerNodeStore, VendorId, LogFormat as MatterLogFormat, LogLevel as MatterLogLevel } from 'matterbridge/matter';
32
+ import { RootEndpoint, AggregatorEndpoint } from 'matterbridge/matter/endpoints';
33
+ */
34
+ /**
35
+ * Advance the Node.js event loop deterministically to allow chained asynchronous work (Promises scheduled in
36
+ * microtasks and follow‑up macrotasks) to complete inside tests without adding arbitrary long timeouts.
37
+ *
38
+ * NOTE: This does not guarantee OS level network IO completion—only JavaScript task queue progression inside the
39
+ * current process.
40
+ *
41
+ * @param {number} ticks Number of macrotask (setImmediate) turns to yield (default 3).
42
+ * @param {number} microTurns Number of microtask drains (Promise.resolve chains) after macrotask yielding (default 10).
43
+ * @param {number} pause Final timer delay in ms; set 0 to disable (default 100ms).
44
+ * @returns {Promise<void>} Resolves after the requested event loop advancement has completed.
45
+ */
6
46
  export async function flushAsync(ticks = 3, microTurns = 10, pause = 100) {
7
47
  for (let i = 0; i < ticks; i++)
8
48
  await new Promise((resolve) => setImmediate(resolve));
@@ -11,6 +51,19 @@ export async function flushAsync(ticks = 3, microTurns = 10, pause = 100) {
11
51
  if (pause)
12
52
  await new Promise((resolve) => setTimeout(resolve, pause));
13
53
  }
54
+ /**
55
+ * Flush (await) the lazy endpoint number persistence mechanism used by matter.js.
56
+ *
57
+ * Background:
58
+ * assignNumber() batches persistence (store.saveNumber + updating __nextNumber__) via an internal promise (#numbersPersisted).
59
+ * Calling endpointStores.close() waits for the current batch only. If new endpoints were added in the same macrotask
60
+ * cycle additional micro/macro turns might be needed to ensure the batch started. We defensively yield macrotasks
61
+ * (setImmediate) and then await close() multiple rounds.
62
+ *
63
+ * @param {ServerNode} targetServer The server whose endpoint numbering persistence should be flushed.
64
+ * @param {number} rounds Number of macrotask + close cycles to run (2 is usually sufficient; 1 often works).
65
+ * @returns {Promise<void>} Resolves when pending number persistence batches have completed.
66
+ */
14
67
  export async function flushAllEndpointNumberPersistence(targetServer, rounds = 2) {
15
68
  const nodeStore = targetServer.env.get(ServerNodeStore);
16
69
  for (let i = 0; i < rounds; i++) {
@@ -18,6 +71,12 @@ export async function flushAllEndpointNumberPersistence(targetServer, rounds = 2
18
71
  await nodeStore.endpointStores.close();
19
72
  }
20
73
  }
74
+ /**
75
+ * Collect all endpoints in the server endpoint tree (root -> descendants).
76
+ *
77
+ * @param {Endpoint} root Root endpoint (typically the ServerNode root endpoint cast as Endpoint).
78
+ * @returns {Endpoint[]} Flat array including the root and every descendant once.
79
+ */
21
80
  function collectAllEndpoints(root) {
22
81
  const list = [];
23
82
  const walk = (ep) => {
@@ -31,14 +90,26 @@ function collectAllEndpoints(root) {
31
90
  walk(root);
32
91
  return list;
33
92
  }
93
+ /**
94
+ * Assert that every endpoint attached to the server has an assigned and (batch-)persisted endpoint number.
95
+ *
96
+ * This waits for any outstanding number persistence batch (endpointStores.close()), then traverses the endpoint
97
+ * graph and asserts:
98
+ * - Root endpoint: number is 0 (allowing undefined to coerce to 0 via nullish coalescing check).
99
+ * - All other endpoints: number > 0.
100
+ *
101
+ * @param {ServerNode} targetServer The server whose endpoint numbers are verified.
102
+ * @returns {Promise<void>} Resolves when assertions complete.
103
+ */
34
104
  export async function assertAllEndpointNumbersPersisted(targetServer) {
35
105
  const nodeStore = targetServer.env.get(ServerNodeStore);
106
+ // Ensure any pending persistence finished (flush any in-flight batch promise)
36
107
  await nodeStore.endpointStores.close();
37
108
  const all = collectAllEndpoints(targetServer);
38
109
  for (const ep of all) {
39
110
  const store = nodeStore.storeForEndpoint(ep);
40
111
  if (ep.maybeNumber === 0) {
41
- expect(store.number ?? 0).toBe(0);
112
+ expect(store.number ?? 0).toBe(0); // root
42
113
  }
43
114
  else {
44
115
  expect(store.number).toBeGreaterThan(0);
@@ -46,11 +117,20 @@ export async function assertAllEndpointNumbersPersisted(targetServer) {
46
117
  }
47
118
  return all.length;
48
119
  }
120
+ /**
121
+ * Create a Matterbridge Environment for testing.
122
+ * It will remove any existing home directory.
123
+ *
124
+ * @param {string} homeDir Home directory for the environment.
125
+ * @returns {Environment} The created environment.
126
+ */
49
127
  export function createTestEnvironment(homeDir) {
50
128
  expect(homeDir).toBeDefined();
51
129
  expect(typeof homeDir).toBe('string');
52
- expect(homeDir.length).toBeGreaterThan(5);
130
+ expect(homeDir.length).toBeGreaterThan(5); // avoid accidental deletion of short paths like "/" or "C:\"
131
+ // Cleanup any existing home directory
53
132
  rmSync(homeDir, { recursive: true, force: true });
133
+ // Setup the matter environment
54
134
  const environment = Environment.default;
55
135
  environment.vars.set('log.level', MatterLogLevel.DEBUG);
56
136
  environment.vars.set('log.format', MatterLogFormat.ANSI);
@@ -59,7 +139,15 @@ export function createTestEnvironment(homeDir) {
59
139
  environment.vars.set('runtime.exitcode', false);
60
140
  return environment;
61
141
  }
142
+ /**
143
+ * Start a Matterbridge ServerNode for testing.
144
+ *
145
+ * @param {string} name Name of the server (used for logging and product description).
146
+ * @param {number} port TCP port to listen on.
147
+ * @returns {Promise<[ServerNode<ServerNode.RootEndpoint>, Endpoint<AggregatorEndpoint>]>} Resolves to an array containing the created ServerNode and its AggregatorNode.
148
+ */
62
149
  export async function startServerNode(name, port) {
150
+ // Create the server node
63
151
  const server = await ServerNode.create({
64
152
  id: name + 'ServerNode',
65
153
  productDescription: {
@@ -68,6 +156,7 @@ export async function startServerNode(name, port) {
68
156
  vendorId: VendorId(0xfff1),
69
157
  productId: 0x8000,
70
158
  },
159
+ // Provide defaults for the BasicInformation cluster on the Root endpoint
71
160
  basicInformation: {
72
161
  vendorId: VendorId(0xfff1),
73
162
  vendorName: 'Matterbridge',
@@ -84,21 +173,26 @@ export async function startServerNode(name, port) {
84
173
  });
85
174
  expect(server).toBeDefined();
86
175
  expect(server.lifecycle.isReady).toBeTruthy();
176
+ // Create the aggregator node
87
177
  const aggregator = new Endpoint(AggregatorEndpoint, {
88
178
  id: name + 'AggregatorNode',
89
179
  });
90
180
  expect(aggregator).toBeDefined();
181
+ // Add the aggregator to the server
91
182
  await server.add(aggregator);
92
183
  expect(server.parts.has(aggregator.id)).toBeTruthy();
93
184
  expect(server.parts.has(aggregator)).toBeTruthy();
94
185
  expect(aggregator.lifecycle.isReady).toBeTruthy();
186
+ // Run the server
95
187
  expect(server.lifecycle.isOnline).toBeFalsy();
188
+ // Wait for the server to be online
96
189
  await new Promise((resolve) => {
97
190
  server.lifecycle.online.on(async () => {
98
191
  resolve();
99
192
  });
100
193
  server.start();
101
194
  });
195
+ // Check if the server is online
102
196
  expect(server.lifecycle.isReady).toBeTruthy();
103
197
  expect(server.lifecycle.isOnline).toBeTruthy();
104
198
  expect(server.lifecycle.isCommissioned).toBeFalsy();
@@ -112,18 +206,36 @@ export async function startServerNode(name, port) {
112
206
  expect(aggregator.lifecycle.hasNumber).toBeTruthy();
113
207
  return [server, aggregator];
114
208
  }
209
+ /**
210
+ * Stop a Matterbridge ServerNode.
211
+ *
212
+ * @param {ServerNode<ServerNode.RootEndpoint>} server The server to stop.
213
+ * @returns {Promise<void>} Resolves when the server has stopped.
214
+ */
115
215
  export async function stopServerNode(server) {
216
+ // Flush any pending endpoint number persistence
116
217
  await flushAllEndpointNumberPersistence(server);
218
+ // Ensure all endpoint numbers are persisted
117
219
  await assertAllEndpointNumbersPersisted(server);
220
+ // Stop the server
118
221
  expect(server).toBeDefined();
119
222
  expect(server.lifecycle.isReady).toBeTruthy();
120
223
  expect(server.lifecycle.isOnline).toBeTruthy();
121
224
  await server.close();
122
225
  expect(server.lifecycle.isReady).toBeTruthy();
123
226
  expect(server.lifecycle.isOnline).toBeFalsy();
227
+ // stop the mDNS service
124
228
  await server.env.get(MdnsService)[Symbol.asyncDispose]();
229
+ // Ensure the queue is empty and pause 100ms
125
230
  await flushAsync();
126
231
  }
232
+ /**
233
+ * Add a device (endpoint) to a server or aggregator.
234
+ *
235
+ * @param {ServerNode<ServerNode.RootEndpoint> | Endpoint<AggregatorEndpoint>} owner The server or aggregator to add the device to.
236
+ * @param {Endpoint} device The device to add.
237
+ * @returns {Promise<void>} Resolves when the device has been added and is ready.
238
+ */
127
239
  export async function addDevice(owner, device) {
128
240
  expect(owner).toBeDefined();
129
241
  expect(device).toBeDefined();
@@ -136,6 +248,7 @@ export async function addDevice(owner, device) {
136
248
  catch (error) {
137
249
  const errorMessage = error instanceof Error ? error.message : error;
138
250
  const errorInspect = inspect(error, { depth: 10 });
251
+ // eslint-disable-next-line no-console
139
252
  console.error(`Error adding device ${device.maybeId}.${device.maybeNumber}: ${errorMessage}\nstack: ${errorInspect}`);
140
253
  return false;
141
254
  }
@@ -148,6 +261,13 @@ export async function addDevice(owner, device) {
148
261
  expect(device.construction.status).toBe(Lifecycle.Status.Active);
149
262
  return true;
150
263
  }
264
+ /**
265
+ * Add a device (endpoint) to a server or aggregator.
266
+ *
267
+ * @param {ServerNode<ServerNode.RootEndpoint> | Endpoint<AggregatorEndpoint>} owner The server or aggregator to add the device to.
268
+ * @param {Endpoint} device The device to add.
269
+ * @returns {Promise<void>} Resolves when the device has been added and is ready.
270
+ */
151
271
  export async function deleteDevice(owner, device) {
152
272
  expect(owner).toBeDefined();
153
273
  expect(device).toBeDefined();
@@ -160,6 +280,7 @@ export async function deleteDevice(owner, device) {
160
280
  catch (error) {
161
281
  const errorMessage = error instanceof Error ? error.message : error;
162
282
  const errorInspect = inspect(error, { depth: 10 });
283
+ // eslint-disable-next-line no-console
163
284
  console.error(`Error deleting device ${device.maybeId}.${device.maybeNumber}: ${errorMessage}\nstack: ${errorInspect}`);
164
285
  return false;
165
286
  }
@@ -172,3 +293,4 @@ export async function deleteDevice(owner, device) {
172
293
  expect(device.construction.status).toBe(Lifecycle.Status.Destroyed);
173
294
  return true;
174
295
  }
296
+ //# sourceMappingURL=jestHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jestHelpers.js","sourceRoot":"","sources":["../../src/jest-utils/jestHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from 'node-ansi-logger';
2
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/logger/export.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -1 +1,2 @@
1
1
  export * from 'node-ansi-logger';
2
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/logger/export.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@matter/node/behaviors';
2
+ //# sourceMappingURL=behaviors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behaviors.d.ts","sourceRoot":"","sources":["../../src/matter/behaviors.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC"}
@@ -1 +1,3 @@
1
+ // @matter
1
2
  export * from '@matter/node/behaviors';
3
+ //# sourceMappingURL=behaviors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behaviors.js","sourceRoot":"","sources":["../../src/matter/behaviors.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@matter/types/clusters';
2
+ //# sourceMappingURL=clusters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusters.d.ts","sourceRoot":"","sources":["../../src/matter/clusters.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC"}
@@ -1 +1,3 @@
1
+ // @matter
1
2
  export * from '@matter/types/clusters';
3
+ //# sourceMappingURL=clusters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusters.js","sourceRoot":"","sources":["../../src/matter/clusters.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@matter/node/devices';
2
+ //# sourceMappingURL=devices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../src/matter/devices.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC"}
@@ -1 +1,3 @@
1
+ // @matter
1
2
  export * from '@matter/node/devices';
3
+ //# sourceMappingURL=devices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/matter/devices.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AggregatorEndpoint, ElectricalSensorEndpoint, PowerSourceEndpoint, BridgedNodeEndpoint, RootEndpoint, DeviceEnergyManagementEndpoint, OtaProviderEndpoint, OtaRequestorEndpoint } from '@matter/node/endpoints';
2
+ //# sourceMappingURL=endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/matter/endpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,YAAY,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1 +1,3 @@
1
+ // @matter
1
2
  export { AggregatorEndpoint, ElectricalSensorEndpoint, PowerSourceEndpoint, BridgedNodeEndpoint, RootEndpoint, DeviceEnergyManagementEndpoint, OtaProviderEndpoint, OtaRequestorEndpoint } from '@matter/node/endpoints';
3
+ //# sourceMappingURL=endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/matter/endpoints.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,YAAY,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from '@matter/main';
2
+ export { SemanticNamespace, ClosureTag, CompassDirectionTag, CompassLocationTag, DirectionTag, ElectricalMeasurementTag, LaundryTag, LevelTag, LocationTag, NumberTag, PositionTag, PowerSourceTag, RefrigeratorTag, RoomAirConditionerTag, SwitchesTag, } from '@matter/main';
3
+ export { AttributeElement, ClusterElement, ClusterModel, CommandElement, EventElement, FieldElement } from '@matter/main/model';
4
+ export { MdnsService, Val } from '@matter/main/protocol';
5
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/matter/export.ts"],"names":[],"mappings":"AAEA,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,4 +1,7 @@
1
+ /* eslint-disable import/export */
2
+ // @matter
1
3
  export * from '@matter/main';
2
4
  export { SemanticNamespace, ClosureTag, CompassDirectionTag, CompassLocationTag, DirectionTag, ElectricalMeasurementTag, LaundryTag, LevelTag, LocationTag, NumberTag, PositionTag, PowerSourceTag, RefrigeratorTag, RoomAirConditionerTag, SwitchesTag, } from '@matter/main';
3
5
  export { AttributeElement, ClusterElement, ClusterModel, CommandElement, EventElement, FieldElement } from '@matter/main/model';
4
6
  export { MdnsService, Val } from '@matter/main/protocol';
7
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/matter/export.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,UAAU;AACV,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChI,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from '@matter/types';
2
+ export { Semtag, ClusterRegistry } from '@matter/types';
3
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/matter/types.ts"],"names":[],"mappings":"AAEA,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -1,2 +1,5 @@
1
+ /* eslint-disable import/export */
2
+ // @matter
1
3
  export * from '@matter/types';
2
4
  export { ClusterRegistry } from '@matter/types';
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/matter/types.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,UAAU;AACV,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAU,eAAe,EAAE,MAAM,eAAe,CAAC"}