@matter/node 0.16.0-alpha.0-20251006-3fe1e7c57 → 0.16.0-alpha.0-20251013-89bb7099d

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 (573) hide show
  1. package/dist/cjs/behavior/Behavior.d.ts +4 -0
  2. package/dist/cjs/behavior/Behavior.d.ts.map +1 -1
  3. package/dist/cjs/behavior/Behavior.js +7 -1
  4. package/dist/cjs/behavior/Behavior.js.map +1 -1
  5. package/dist/cjs/behavior/Events.js +2 -2
  6. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  7. package/dist/cjs/behavior/internal/BehaviorBacking.js +67 -3
  8. package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
  9. package/dist/cjs/behavior/state/managed/Datasource.d.ts +4 -9
  10. package/dist/cjs/behavior/state/managed/Datasource.d.ts.map +1 -1
  11. package/dist/cjs/behavior/state/managed/Datasource.js +9 -12
  12. package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
  13. package/dist/cjs/behavior/state/managed/NameResolver.d.ts.map +1 -1
  14. package/dist/cjs/behavior/state/managed/NameResolver.js.map +1 -1
  15. package/dist/cjs/behavior/state/managed/values/ValueCaster.d.ts +3 -2
  16. package/dist/cjs/behavior/state/managed/values/ValueCaster.d.ts.map +1 -1
  17. package/dist/cjs/behavior/state/managed/values/ValueCaster.js +16 -3
  18. package/dist/cjs/behavior/state/managed/values/ValueCaster.js.map +1 -1
  19. package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts +12 -5
  20. package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  21. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js +17 -1
  22. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  23. package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
  24. package/dist/cjs/behavior/system/commissioning/CommissioningServer.js +2 -1
  25. package/dist/cjs/behavior/system/commissioning/CommissioningServer.js.map +1 -1
  26. package/dist/cjs/behavior/system/controller/ControllerBehavior.d.ts.map +1 -1
  27. package/dist/cjs/behavior/system/controller/ControllerBehavior.js +0 -4
  28. package/dist/cjs/behavior/system/controller/ControllerBehavior.js.map +1 -1
  29. package/dist/cjs/behavior/system/http/HttpInterface.d.ts +36 -0
  30. package/dist/cjs/behavior/system/http/HttpInterface.d.ts.map +1 -0
  31. package/dist/cjs/behavior/system/http/HttpInterface.js +282 -0
  32. package/dist/cjs/behavior/system/http/HttpInterface.js.map +6 -0
  33. package/dist/cjs/behavior/system/http/HttpServer.d.ts +30 -0
  34. package/dist/cjs/behavior/system/http/HttpServer.d.ts.map +1 -0
  35. package/dist/cjs/behavior/system/http/HttpServer.js +51 -0
  36. package/dist/cjs/behavior/system/http/HttpServer.js.map +6 -0
  37. package/dist/cjs/behavior/system/http/index.d.ts +8 -0
  38. package/dist/cjs/behavior/system/http/index.d.ts.map +1 -0
  39. package/dist/cjs/behavior/system/http/index.js +25 -0
  40. package/dist/cjs/behavior/system/http/index.js.map +6 -0
  41. package/dist/cjs/behavior/system/index/IndexBehavior.d.ts +4 -4
  42. package/dist/cjs/behavior/system/index/IndexBehavior.d.ts.map +1 -1
  43. package/dist/cjs/behavior/system/index/IndexBehavior.js +9 -4
  44. package/dist/cjs/behavior/system/index/IndexBehavior.js.map +1 -1
  45. package/dist/cjs/behavior/system/index.d.ts +4 -0
  46. package/dist/cjs/behavior/system/index.d.ts.map +1 -1
  47. package/dist/cjs/behavior/system/index.js +4 -0
  48. package/dist/cjs/behavior/system/index.js.map +1 -1
  49. package/dist/cjs/behavior/system/mqtt/MqttInterface.d.ts +22 -0
  50. package/dist/cjs/behavior/system/mqtt/MqttInterface.d.ts.map +1 -0
  51. package/dist/cjs/behavior/system/mqtt/MqttInterface.js +351 -0
  52. package/dist/cjs/behavior/system/mqtt/MqttInterface.js.map +6 -0
  53. package/dist/cjs/behavior/system/mqtt/MqttServer.d.ts +36 -0
  54. package/dist/cjs/behavior/system/mqtt/MqttServer.d.ts.map +1 -0
  55. package/dist/cjs/behavior/system/mqtt/MqttServer.js +55 -0
  56. package/dist/cjs/behavior/system/mqtt/MqttServer.js.map +6 -0
  57. package/dist/cjs/behavior/system/mqtt/index.d.ts +8 -0
  58. package/dist/cjs/behavior/system/mqtt/index.d.ts.map +1 -0
  59. package/dist/cjs/behavior/system/mqtt/index.js +25 -0
  60. package/dist/cjs/behavior/system/mqtt/index.js.map +6 -0
  61. package/dist/cjs/behavior/system/network/NetworkClient.d.ts +32 -3
  62. package/dist/cjs/behavior/system/network/NetworkClient.d.ts.map +1 -1
  63. package/dist/cjs/behavior/system/network/NetworkClient.js +100 -18
  64. package/dist/cjs/behavior/system/network/NetworkClient.js.map +1 -1
  65. package/dist/cjs/behavior/system/product-description/ProductDescriptionServer.d.ts +2 -1
  66. package/dist/cjs/behavior/system/product-description/ProductDescriptionServer.d.ts.map +1 -1
  67. package/dist/cjs/behavior/system/product-description/ProductDescriptionServer.js +7 -5
  68. package/dist/cjs/behavior/system/product-description/ProductDescriptionServer.js.map +1 -1
  69. package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts +41 -0
  70. package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts.map +1 -0
  71. package/dist/cjs/behavior/system/remote/RemoteInterface.js +105 -0
  72. package/dist/cjs/behavior/system/remote/RemoteInterface.js.map +6 -0
  73. package/dist/cjs/behavior/system/remote/RemoteServer.d.ts +61 -0
  74. package/dist/cjs/behavior/system/remote/RemoteServer.d.ts.map +1 -0
  75. package/dist/cjs/behavior/system/remote/RemoteServer.js +118 -0
  76. package/dist/cjs/behavior/system/remote/RemoteServer.js.map +6 -0
  77. package/dist/cjs/behavior/system/remote/api/Api.d.ts +36 -0
  78. package/dist/cjs/behavior/system/remote/api/Api.d.ts.map +1 -0
  79. package/dist/cjs/behavior/system/remote/api/Api.js +157 -0
  80. package/dist/cjs/behavior/system/remote/api/Api.js.map +6 -0
  81. package/dist/cjs/behavior/system/remote/api/ApiPath.d.ts +32 -0
  82. package/dist/cjs/behavior/system/remote/api/ApiPath.d.ts.map +1 -0
  83. package/dist/cjs/behavior/system/remote/api/ApiPath.js +101 -0
  84. package/dist/cjs/behavior/system/remote/api/ApiPath.js.map +6 -0
  85. package/dist/cjs/behavior/system/remote/api/ApiResource.d.ts +102 -0
  86. package/dist/cjs/behavior/system/remote/api/ApiResource.d.ts.map +1 -0
  87. package/dist/cjs/behavior/system/remote/api/ApiResource.js +123 -0
  88. package/dist/cjs/behavior/system/remote/api/ApiResource.js.map +6 -0
  89. package/dist/cjs/behavior/system/remote/api/Envelope.d.ts +53 -0
  90. package/dist/cjs/behavior/system/remote/api/Envelope.d.ts.map +1 -0
  91. package/dist/cjs/behavior/system/remote/api/Envelope.js +107 -0
  92. package/dist/cjs/behavior/system/remote/api/Envelope.js.map +6 -0
  93. package/dist/cjs/behavior/system/remote/api/LocalResponse.d.ts +28 -0
  94. package/dist/cjs/behavior/system/remote/api/LocalResponse.d.ts.map +1 -0
  95. package/dist/cjs/behavior/system/remote/api/LocalResponse.js +22 -0
  96. package/dist/cjs/behavior/system/remote/api/LocalResponse.js.map +6 -0
  97. package/dist/cjs/behavior/system/remote/api/RemoteRequest.d.ts +43 -0
  98. package/dist/cjs/behavior/system/remote/api/RemoteRequest.d.ts.map +1 -0
  99. package/dist/cjs/behavior/system/remote/api/RemoteRequest.js +55 -0
  100. package/dist/cjs/behavior/system/remote/api/RemoteRequest.js.map +6 -0
  101. package/dist/cjs/behavior/system/remote/api/RemoteResponse.d.ts +38 -0
  102. package/dist/cjs/behavior/system/remote/api/RemoteResponse.d.ts.map +1 -0
  103. package/dist/cjs/behavior/system/remote/api/RemoteResponse.js +65 -0
  104. package/dist/cjs/behavior/system/remote/api/RemoteResponse.js.map +6 -0
  105. package/dist/cjs/behavior/system/remote/api/index.d.ts +13 -0
  106. package/dist/cjs/behavior/system/remote/api/index.d.ts.map +1 -0
  107. package/dist/cjs/behavior/system/remote/api/index.js +30 -0
  108. package/dist/cjs/behavior/system/remote/api/index.js.map +6 -0
  109. package/dist/cjs/behavior/system/remote/api/resources/BehaviorResource.d.ts +22 -0
  110. package/dist/cjs/behavior/system/remote/api/resources/BehaviorResource.d.ts.map +1 -0
  111. package/dist/cjs/behavior/system/remote/api/resources/BehaviorResource.js +69 -0
  112. package/dist/cjs/behavior/system/remote/api/resources/BehaviorResource.js.map +6 -0
  113. package/dist/cjs/behavior/system/remote/api/resources/ChangesResource.d.ts +25 -0
  114. package/dist/cjs/behavior/system/remote/api/resources/ChangesResource.d.ts.map +1 -0
  115. package/dist/cjs/behavior/system/remote/api/resources/ChangesResource.js +76 -0
  116. package/dist/cjs/behavior/system/remote/api/resources/ChangesResource.js.map +6 -0
  117. package/dist/cjs/behavior/system/remote/api/resources/CommandResource.d.ts +26 -0
  118. package/dist/cjs/behavior/system/remote/api/resources/CommandResource.d.ts.map +1 -0
  119. package/dist/cjs/behavior/system/remote/api/resources/CommandResource.js +83 -0
  120. package/dist/cjs/behavior/system/remote/api/resources/CommandResource.js.map +6 -0
  121. package/dist/cjs/behavior/system/remote/api/resources/EndpointContainerResource.d.ts +22 -0
  122. package/dist/cjs/behavior/system/remote/api/resources/EndpointContainerResource.d.ts.map +1 -0
  123. package/dist/cjs/behavior/system/remote/api/resources/EndpointContainerResource.js +52 -0
  124. package/dist/cjs/behavior/system/remote/api/resources/EndpointContainerResource.js.map +6 -0
  125. package/dist/cjs/behavior/system/remote/api/resources/EndpointResource.d.ts +34 -0
  126. package/dist/cjs/behavior/system/remote/api/resources/EndpointResource.d.ts.map +1 -0
  127. package/dist/cjs/behavior/system/remote/api/resources/EndpointResource.js +78 -0
  128. package/dist/cjs/behavior/system/remote/api/resources/EndpointResource.js.map +6 -0
  129. package/dist/cjs/behavior/system/remote/api/resources/NodeResource.d.ts +20 -0
  130. package/dist/cjs/behavior/system/remote/api/resources/NodeResource.d.ts.map +1 -0
  131. package/dist/cjs/behavior/system/remote/api/resources/NodeResource.js +74 -0
  132. package/dist/cjs/behavior/system/remote/api/resources/NodeResource.js.map +6 -0
  133. package/dist/cjs/behavior/system/remote/api/resources/PropertyResource.d.ts +28 -0
  134. package/dist/cjs/behavior/system/remote/api/resources/PropertyResource.d.ts.map +1 -0
  135. package/dist/cjs/behavior/system/remote/api/resources/PropertyResource.js +123 -0
  136. package/dist/cjs/behavior/system/remote/api/resources/PropertyResource.js.map +6 -0
  137. package/dist/cjs/behavior/system/remote/api/resources/ServerNodeResource.d.ts +22 -0
  138. package/dist/cjs/behavior/system/remote/api/resources/ServerNodeResource.d.ts.map +1 -0
  139. package/dist/cjs/behavior/system/remote/api/resources/ServerNodeResource.js +74 -0
  140. package/dist/cjs/behavior/system/remote/api/resources/ServerNodeResource.js.map +6 -0
  141. package/dist/cjs/behavior/system/remote/api/resources/index.d.ts +13 -0
  142. package/dist/cjs/behavior/system/remote/api/resources/index.d.ts.map +1 -0
  143. package/dist/cjs/behavior/system/remote/api/resources/index.js +30 -0
  144. package/dist/cjs/behavior/system/remote/api/resources/index.js.map +6 -0
  145. package/dist/cjs/behavior/system/remote/index.d.ts +9 -0
  146. package/dist/cjs/behavior/system/remote/index.d.ts.map +1 -0
  147. package/dist/cjs/behavior/system/remote/index.js +26 -0
  148. package/dist/cjs/behavior/system/remote/index.js.map +6 -0
  149. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
  150. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js +1 -2
  151. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  152. package/dist/cjs/behavior/system/websocket/WebSocketInterface.d.ts +16 -0
  153. package/dist/cjs/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -0
  154. package/dist/cjs/behavior/system/websocket/WebSocketInterface.js +171 -0
  155. package/dist/cjs/behavior/system/websocket/WebSocketInterface.js.map +6 -0
  156. package/dist/cjs/behavior/system/websocket/WebSocketServer.d.ts +30 -0
  157. package/dist/cjs/behavior/system/websocket/WebSocketServer.d.ts.map +1 -0
  158. package/dist/cjs/behavior/system/websocket/WebSocketServer.js +51 -0
  159. package/dist/cjs/behavior/system/websocket/WebSocketServer.js.map +6 -0
  160. package/dist/cjs/behavior/system/websocket/index.d.ts +8 -0
  161. package/dist/cjs/behavior/system/websocket/index.d.ts.map +1 -0
  162. package/dist/cjs/behavior/system/websocket/index.js +25 -0
  163. package/dist/cjs/behavior/system/websocket/index.js.map +6 -0
  164. package/dist/cjs/endpoint/Agent.js +1 -1
  165. package/dist/cjs/endpoint/Agent.js.map +1 -1
  166. package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
  167. package/dist/cjs/endpoint/Endpoint.js +6 -4
  168. package/dist/cjs/endpoint/Endpoint.js.map +1 -1
  169. package/dist/cjs/endpoint/properties/Behaviors.d.ts +4 -0
  170. package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
  171. package/dist/cjs/endpoint/properties/Behaviors.js +11 -2
  172. package/dist/cjs/endpoint/properties/Behaviors.js.map +1 -1
  173. package/dist/cjs/endpoint/properties/ClientNodeEndpoints.d.ts +20 -0
  174. package/dist/cjs/endpoint/properties/ClientNodeEndpoints.d.ts.map +1 -0
  175. package/dist/cjs/endpoint/properties/ClientNodeEndpoints.js +56 -0
  176. package/dist/cjs/endpoint/properties/ClientNodeEndpoints.js.map +6 -0
  177. package/dist/cjs/endpoint/properties/EndpointInitializer.d.ts +4 -0
  178. package/dist/cjs/endpoint/properties/EndpointInitializer.d.ts.map +1 -1
  179. package/dist/cjs/endpoint/properties/EndpointInitializer.js +6 -0
  180. package/dist/cjs/endpoint/properties/EndpointInitializer.js.map +1 -1
  181. package/dist/cjs/endpoint/properties/Endpoints.d.ts +1 -0
  182. package/dist/cjs/endpoint/properties/Endpoints.d.ts.map +1 -1
  183. package/dist/cjs/endpoint/properties/Endpoints.js +3 -0
  184. package/dist/cjs/endpoint/properties/Endpoints.js.map +1 -1
  185. package/dist/cjs/endpoint/type/EndpointType.d.ts +2 -0
  186. package/dist/cjs/endpoint/type/EndpointType.d.ts.map +1 -1
  187. package/dist/cjs/endpoint/type/EndpointType.js +5 -0
  188. package/dist/cjs/endpoint/type/EndpointType.js.map +2 -2
  189. package/dist/cjs/node/ClientNode.d.ts +4 -2
  190. package/dist/cjs/node/ClientNode.d.ts.map +1 -1
  191. package/dist/cjs/node/ClientNode.js +6 -2
  192. package/dist/cjs/node/ClientNode.js.map +1 -1
  193. package/dist/cjs/node/Node.js +1 -1
  194. package/dist/cjs/node/NodeLifecycle.d.ts +1 -1
  195. package/dist/cjs/node/NodeLifecycle.d.ts.map +1 -1
  196. package/dist/cjs/node/NodeLifecycle.js +1 -1
  197. package/dist/cjs/node/NodeLifecycle.js.map +1 -1
  198. package/dist/cjs/node/client/ClientEndpointInitializer.d.ts +2 -0
  199. package/dist/cjs/node/client/ClientEndpointInitializer.d.ts.map +1 -1
  200. package/dist/cjs/node/client/ClientEndpointInitializer.js +33 -0
  201. package/dist/cjs/node/client/ClientEndpointInitializer.js.map +1 -1
  202. package/dist/cjs/node/client/ClientEventEmitter.d.ts +3 -3
  203. package/dist/cjs/node/client/ClientEventEmitter.d.ts.map +1 -1
  204. package/dist/cjs/node/client/ClientNodeInteraction.d.ts +1 -0
  205. package/dist/cjs/node/client/ClientNodeInteraction.d.ts.map +1 -1
  206. package/dist/cjs/node/client/ClientNodeInteraction.js +6 -0
  207. package/dist/cjs/node/client/ClientNodeInteraction.js.map +1 -1
  208. package/dist/cjs/node/client/ClientStructure.d.ts +2 -0
  209. package/dist/cjs/node/client/ClientStructure.d.ts.map +1 -1
  210. package/dist/cjs/node/client/ClientStructure.js +18 -5
  211. package/dist/cjs/node/client/ClientStructure.js.map +1 -1
  212. package/dist/cjs/node/client/Peers.d.ts +6 -0
  213. package/dist/cjs/node/client/Peers.d.ts.map +1 -1
  214. package/dist/cjs/node/client/Peers.js +55 -3
  215. package/dist/cjs/node/client/Peers.js.map +2 -2
  216. package/dist/cjs/node/index.d.ts +1 -0
  217. package/dist/cjs/node/index.d.ts.map +1 -1
  218. package/dist/cjs/node/index.js +1 -0
  219. package/dist/cjs/node/index.js.map +1 -1
  220. package/dist/cjs/node/integration/ChangeNotificationService.d.ts +56 -0
  221. package/dist/cjs/node/integration/ChangeNotificationService.d.ts.map +1 -0
  222. package/dist/cjs/node/integration/ChangeNotificationService.js +93 -0
  223. package/dist/cjs/node/integration/ChangeNotificationService.js.map +6 -0
  224. package/dist/cjs/node/{server → integration}/ProtocolService.d.ts +15 -0
  225. package/dist/cjs/node/integration/ProtocolService.d.ts.map +1 -0
  226. package/dist/cjs/node/{server → integration}/ProtocolService.js +26 -51
  227. package/dist/cjs/node/integration/ProtocolService.js.map +6 -0
  228. package/dist/cjs/node/integration/StateStream.d.ts +87 -0
  229. package/dist/cjs/node/integration/StateStream.d.ts.map +1 -0
  230. package/dist/cjs/node/integration/StateStream.js +276 -0
  231. package/dist/cjs/node/integration/StateStream.js.map +6 -0
  232. package/dist/cjs/node/integration/index.d.ts +9 -0
  233. package/dist/cjs/node/integration/index.d.ts.map +1 -0
  234. package/dist/cjs/node/integration/index.js +26 -0
  235. package/dist/cjs/node/integration/index.js.map +6 -0
  236. package/dist/cjs/node/server/OnlineServerInteraction.d.ts +1 -0
  237. package/dist/cjs/node/server/OnlineServerInteraction.d.ts.map +1 -1
  238. package/dist/cjs/node/server/OnlineServerInteraction.js +4 -1
  239. package/dist/cjs/node/server/OnlineServerInteraction.js.map +1 -1
  240. package/dist/cjs/node/server/ServerEnvironment.d.ts.map +1 -1
  241. package/dist/cjs/node/server/ServerEnvironment.js +6 -0
  242. package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
  243. package/dist/cjs/node/server/ServerSubscription.d.ts.map +1 -1
  244. package/dist/cjs/node/server/ServerSubscription.js +2 -2
  245. package/dist/cjs/node/server/index.d.ts +0 -1
  246. package/dist/cjs/node/server/index.d.ts.map +1 -1
  247. package/dist/cjs/node/server/index.js +0 -1
  248. package/dist/cjs/node/server/index.js.map +1 -1
  249. package/dist/cjs/storage/client/ClientNodeStores.d.ts.map +1 -1
  250. package/dist/cjs/storage/client/ClientNodeStores.js.map +1 -1
  251. package/dist/esm/behavior/Behavior.d.ts +4 -0
  252. package/dist/esm/behavior/Behavior.d.ts.map +1 -1
  253. package/dist/esm/behavior/Behavior.js +7 -1
  254. package/dist/esm/behavior/Behavior.js.map +1 -1
  255. package/dist/esm/behavior/Events.js +2 -2
  256. package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  257. package/dist/esm/behavior/internal/BehaviorBacking.js +70 -4
  258. package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
  259. package/dist/esm/behavior/state/managed/Datasource.d.ts +4 -9
  260. package/dist/esm/behavior/state/managed/Datasource.d.ts.map +1 -1
  261. package/dist/esm/behavior/state/managed/Datasource.js +9 -13
  262. package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
  263. package/dist/esm/behavior/state/managed/NameResolver.d.ts.map +1 -1
  264. package/dist/esm/behavior/state/managed/NameResolver.js.map +1 -1
  265. package/dist/esm/behavior/state/managed/values/ValueCaster.d.ts +3 -2
  266. package/dist/esm/behavior/state/managed/values/ValueCaster.d.ts.map +1 -1
  267. package/dist/esm/behavior/state/managed/values/ValueCaster.js +16 -3
  268. package/dist/esm/behavior/state/managed/values/ValueCaster.js.map +1 -1
  269. package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts +12 -5
  270. package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  271. package/dist/esm/behavior/system/commissioning/CommissioningClient.js +19 -1
  272. package/dist/esm/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  273. package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
  274. package/dist/esm/behavior/system/commissioning/CommissioningServer.js +2 -1
  275. package/dist/esm/behavior/system/commissioning/CommissioningServer.js.map +1 -1
  276. package/dist/esm/behavior/system/controller/ControllerBehavior.d.ts.map +1 -1
  277. package/dist/esm/behavior/system/controller/ControllerBehavior.js +0 -5
  278. package/dist/esm/behavior/system/controller/ControllerBehavior.js.map +1 -1
  279. package/dist/esm/behavior/system/http/HttpInterface.d.ts +36 -0
  280. package/dist/esm/behavior/system/http/HttpInterface.d.ts.map +1 -0
  281. package/dist/esm/behavior/system/http/HttpInterface.js +273 -0
  282. package/dist/esm/behavior/system/http/HttpInterface.js.map +6 -0
  283. package/dist/esm/behavior/system/http/HttpServer.d.ts +30 -0
  284. package/dist/esm/behavior/system/http/HttpServer.d.ts.map +1 -0
  285. package/dist/esm/behavior/system/http/HttpServer.js +31 -0
  286. package/dist/esm/behavior/system/http/HttpServer.js.map +6 -0
  287. package/dist/esm/behavior/system/http/index.d.ts +8 -0
  288. package/dist/esm/behavior/system/http/index.d.ts.map +1 -0
  289. package/dist/esm/behavior/system/http/index.js +8 -0
  290. package/dist/esm/behavior/system/http/index.js.map +6 -0
  291. package/dist/esm/behavior/system/index/IndexBehavior.d.ts +4 -4
  292. package/dist/esm/behavior/system/index/IndexBehavior.d.ts.map +1 -1
  293. package/dist/esm/behavior/system/index/IndexBehavior.js +9 -4
  294. package/dist/esm/behavior/system/index/IndexBehavior.js.map +1 -1
  295. package/dist/esm/behavior/system/index.d.ts +4 -0
  296. package/dist/esm/behavior/system/index.d.ts.map +1 -1
  297. package/dist/esm/behavior/system/index.js +4 -0
  298. package/dist/esm/behavior/system/index.js.map +1 -1
  299. package/dist/esm/behavior/system/mqtt/MqttInterface.d.ts +22 -0
  300. package/dist/esm/behavior/system/mqtt/MqttInterface.d.ts.map +1 -0
  301. package/dist/esm/behavior/system/mqtt/MqttInterface.js +341 -0
  302. package/dist/esm/behavior/system/mqtt/MqttInterface.js.map +6 -0
  303. package/dist/esm/behavior/system/mqtt/MqttServer.d.ts +36 -0
  304. package/dist/esm/behavior/system/mqtt/MqttServer.d.ts.map +1 -0
  305. package/dist/esm/behavior/system/mqtt/MqttServer.js +35 -0
  306. package/dist/esm/behavior/system/mqtt/MqttServer.js.map +6 -0
  307. package/dist/esm/behavior/system/mqtt/index.d.ts +8 -0
  308. package/dist/esm/behavior/system/mqtt/index.d.ts.map +1 -0
  309. package/dist/esm/behavior/system/mqtt/index.js +8 -0
  310. package/dist/esm/behavior/system/mqtt/index.js.map +6 -0
  311. package/dist/esm/behavior/system/network/NetworkClient.d.ts +32 -3
  312. package/dist/esm/behavior/system/network/NetworkClient.d.ts.map +1 -1
  313. package/dist/esm/behavior/system/network/NetworkClient.js +101 -19
  314. package/dist/esm/behavior/system/network/NetworkClient.js.map +1 -1
  315. package/dist/esm/behavior/system/product-description/ProductDescriptionServer.d.ts +2 -1
  316. package/dist/esm/behavior/system/product-description/ProductDescriptionServer.d.ts.map +1 -1
  317. package/dist/esm/behavior/system/product-description/ProductDescriptionServer.js +8 -6
  318. package/dist/esm/behavior/system/product-description/ProductDescriptionServer.js.map +1 -1
  319. package/dist/esm/behavior/system/remote/RemoteInterface.d.ts +41 -0
  320. package/dist/esm/behavior/system/remote/RemoteInterface.d.ts.map +1 -0
  321. package/dist/esm/behavior/system/remote/RemoteInterface.js +85 -0
  322. package/dist/esm/behavior/system/remote/RemoteInterface.js.map +6 -0
  323. package/dist/esm/behavior/system/remote/RemoteServer.d.ts +61 -0
  324. package/dist/esm/behavior/system/remote/RemoteServer.d.ts.map +1 -0
  325. package/dist/esm/behavior/system/remote/RemoteServer.js +98 -0
  326. package/dist/esm/behavior/system/remote/RemoteServer.js.map +6 -0
  327. package/dist/esm/behavior/system/remote/api/Api.d.ts +36 -0
  328. package/dist/esm/behavior/system/remote/api/Api.d.ts.map +1 -0
  329. package/dist/esm/behavior/system/remote/api/Api.js +137 -0
  330. package/dist/esm/behavior/system/remote/api/Api.js.map +6 -0
  331. package/dist/esm/behavior/system/remote/api/ApiPath.d.ts +32 -0
  332. package/dist/esm/behavior/system/remote/api/ApiPath.d.ts.map +1 -0
  333. package/dist/esm/behavior/system/remote/api/ApiPath.js +81 -0
  334. package/dist/esm/behavior/system/remote/api/ApiPath.js.map +6 -0
  335. package/dist/esm/behavior/system/remote/api/ApiResource.d.ts +102 -0
  336. package/dist/esm/behavior/system/remote/api/ApiResource.d.ts.map +1 -0
  337. package/dist/esm/behavior/system/remote/api/ApiResource.js +103 -0
  338. package/dist/esm/behavior/system/remote/api/ApiResource.js.map +6 -0
  339. package/dist/esm/behavior/system/remote/api/Envelope.d.ts +53 -0
  340. package/dist/esm/behavior/system/remote/api/Envelope.d.ts.map +1 -0
  341. package/dist/esm/behavior/system/remote/api/Envelope.js +87 -0
  342. package/dist/esm/behavior/system/remote/api/Envelope.js.map +6 -0
  343. package/dist/esm/behavior/system/remote/api/LocalResponse.d.ts +28 -0
  344. package/dist/esm/behavior/system/remote/api/LocalResponse.d.ts.map +1 -0
  345. package/dist/esm/behavior/system/remote/api/LocalResponse.js +6 -0
  346. package/dist/esm/behavior/system/remote/api/LocalResponse.js.map +6 -0
  347. package/dist/esm/behavior/system/remote/api/RemoteRequest.d.ts +43 -0
  348. package/dist/esm/behavior/system/remote/api/RemoteRequest.d.ts.map +1 -0
  349. package/dist/esm/behavior/system/remote/api/RemoteRequest.js +35 -0
  350. package/dist/esm/behavior/system/remote/api/RemoteRequest.js.map +6 -0
  351. package/dist/esm/behavior/system/remote/api/RemoteResponse.d.ts +38 -0
  352. package/dist/esm/behavior/system/remote/api/RemoteResponse.d.ts.map +1 -0
  353. package/dist/esm/behavior/system/remote/api/RemoteResponse.js +45 -0
  354. package/dist/esm/behavior/system/remote/api/RemoteResponse.js.map +6 -0
  355. package/dist/esm/behavior/system/remote/api/index.d.ts +13 -0
  356. package/dist/esm/behavior/system/remote/api/index.d.ts.map +1 -0
  357. package/dist/esm/behavior/system/remote/api/index.js +13 -0
  358. package/dist/esm/behavior/system/remote/api/index.js.map +6 -0
  359. package/dist/esm/behavior/system/remote/api/resources/BehaviorResource.d.ts +22 -0
  360. package/dist/esm/behavior/system/remote/api/resources/BehaviorResource.d.ts.map +1 -0
  361. package/dist/esm/behavior/system/remote/api/resources/BehaviorResource.js +49 -0
  362. package/dist/esm/behavior/system/remote/api/resources/BehaviorResource.js.map +6 -0
  363. package/dist/esm/behavior/system/remote/api/resources/ChangesResource.d.ts +25 -0
  364. package/dist/esm/behavior/system/remote/api/resources/ChangesResource.d.ts.map +1 -0
  365. package/dist/esm/behavior/system/remote/api/resources/ChangesResource.js +56 -0
  366. package/dist/esm/behavior/system/remote/api/resources/ChangesResource.js.map +6 -0
  367. package/dist/esm/behavior/system/remote/api/resources/CommandResource.d.ts +26 -0
  368. package/dist/esm/behavior/system/remote/api/resources/CommandResource.d.ts.map +1 -0
  369. package/dist/esm/behavior/system/remote/api/resources/CommandResource.js +63 -0
  370. package/dist/esm/behavior/system/remote/api/resources/CommandResource.js.map +6 -0
  371. package/dist/esm/behavior/system/remote/api/resources/EndpointContainerResource.d.ts +22 -0
  372. package/dist/esm/behavior/system/remote/api/resources/EndpointContainerResource.d.ts.map +1 -0
  373. package/dist/esm/behavior/system/remote/api/resources/EndpointContainerResource.js +32 -0
  374. package/dist/esm/behavior/system/remote/api/resources/EndpointContainerResource.js.map +6 -0
  375. package/dist/esm/behavior/system/remote/api/resources/EndpointResource.d.ts +34 -0
  376. package/dist/esm/behavior/system/remote/api/resources/EndpointResource.d.ts.map +1 -0
  377. package/dist/esm/behavior/system/remote/api/resources/EndpointResource.js +58 -0
  378. package/dist/esm/behavior/system/remote/api/resources/EndpointResource.js.map +6 -0
  379. package/dist/esm/behavior/system/remote/api/resources/NodeResource.d.ts +20 -0
  380. package/dist/esm/behavior/system/remote/api/resources/NodeResource.d.ts.map +1 -0
  381. package/dist/esm/behavior/system/remote/api/resources/NodeResource.js +54 -0
  382. package/dist/esm/behavior/system/remote/api/resources/NodeResource.js.map +6 -0
  383. package/dist/esm/behavior/system/remote/api/resources/PropertyResource.d.ts +28 -0
  384. package/dist/esm/behavior/system/remote/api/resources/PropertyResource.d.ts.map +1 -0
  385. package/dist/esm/behavior/system/remote/api/resources/PropertyResource.js +103 -0
  386. package/dist/esm/behavior/system/remote/api/resources/PropertyResource.js.map +6 -0
  387. package/dist/esm/behavior/system/remote/api/resources/ServerNodeResource.d.ts +22 -0
  388. package/dist/esm/behavior/system/remote/api/resources/ServerNodeResource.d.ts.map +1 -0
  389. package/dist/esm/behavior/system/remote/api/resources/ServerNodeResource.js +54 -0
  390. package/dist/esm/behavior/system/remote/api/resources/ServerNodeResource.js.map +6 -0
  391. package/dist/esm/behavior/system/remote/api/resources/index.d.ts +13 -0
  392. package/dist/esm/behavior/system/remote/api/resources/index.d.ts.map +1 -0
  393. package/dist/esm/behavior/system/remote/api/resources/index.js +13 -0
  394. package/dist/esm/behavior/system/remote/api/resources/index.js.map +6 -0
  395. package/dist/esm/behavior/system/remote/index.d.ts +9 -0
  396. package/dist/esm/behavior/system/remote/index.d.ts.map +1 -0
  397. package/dist/esm/behavior/system/remote/index.js +9 -0
  398. package/dist/esm/behavior/system/remote/index.js.map +6 -0
  399. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
  400. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js +1 -2
  401. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  402. package/dist/esm/behavior/system/websocket/WebSocketInterface.d.ts +16 -0
  403. package/dist/esm/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -0
  404. package/dist/esm/behavior/system/websocket/WebSocketInterface.js +151 -0
  405. package/dist/esm/behavior/system/websocket/WebSocketInterface.js.map +6 -0
  406. package/dist/esm/behavior/system/websocket/WebSocketServer.d.ts +30 -0
  407. package/dist/esm/behavior/system/websocket/WebSocketServer.d.ts.map +1 -0
  408. package/dist/esm/behavior/system/websocket/WebSocketServer.js +31 -0
  409. package/dist/esm/behavior/system/websocket/WebSocketServer.js.map +6 -0
  410. package/dist/esm/behavior/system/websocket/index.d.ts +8 -0
  411. package/dist/esm/behavior/system/websocket/index.d.ts.map +1 -0
  412. package/dist/esm/behavior/system/websocket/index.js +8 -0
  413. package/dist/esm/behavior/system/websocket/index.js.map +6 -0
  414. package/dist/esm/endpoint/Agent.js +1 -1
  415. package/dist/esm/endpoint/Agent.js.map +1 -1
  416. package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
  417. package/dist/esm/endpoint/Endpoint.js +7 -4
  418. package/dist/esm/endpoint/Endpoint.js.map +1 -1
  419. package/dist/esm/endpoint/properties/Behaviors.d.ts +4 -0
  420. package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
  421. package/dist/esm/endpoint/properties/Behaviors.js +11 -2
  422. package/dist/esm/endpoint/properties/Behaviors.js.map +1 -1
  423. package/dist/esm/endpoint/properties/ClientNodeEndpoints.d.ts +20 -0
  424. package/dist/esm/endpoint/properties/ClientNodeEndpoints.d.ts.map +1 -0
  425. package/dist/esm/endpoint/properties/ClientNodeEndpoints.js +36 -0
  426. package/dist/esm/endpoint/properties/ClientNodeEndpoints.js.map +6 -0
  427. package/dist/esm/endpoint/properties/EndpointInitializer.d.ts +4 -0
  428. package/dist/esm/endpoint/properties/EndpointInitializer.d.ts.map +1 -1
  429. package/dist/esm/endpoint/properties/EndpointInitializer.js +6 -0
  430. package/dist/esm/endpoint/properties/EndpointInitializer.js.map +1 -1
  431. package/dist/esm/endpoint/properties/Endpoints.d.ts +1 -0
  432. package/dist/esm/endpoint/properties/Endpoints.d.ts.map +1 -1
  433. package/dist/esm/endpoint/properties/Endpoints.js +3 -0
  434. package/dist/esm/endpoint/properties/Endpoints.js.map +1 -1
  435. package/dist/esm/endpoint/type/EndpointType.d.ts +2 -0
  436. package/dist/esm/endpoint/type/EndpointType.d.ts.map +1 -1
  437. package/dist/esm/endpoint/type/EndpointType.js +5 -0
  438. package/dist/esm/endpoint/type/EndpointType.js.map +2 -2
  439. package/dist/esm/node/ClientNode.d.ts +4 -2
  440. package/dist/esm/node/ClientNode.d.ts.map +1 -1
  441. package/dist/esm/node/ClientNode.js +6 -2
  442. package/dist/esm/node/ClientNode.js.map +1 -1
  443. package/dist/esm/node/Node.js +1 -1
  444. package/dist/esm/node/NodeLifecycle.d.ts +1 -1
  445. package/dist/esm/node/NodeLifecycle.d.ts.map +1 -1
  446. package/dist/esm/node/NodeLifecycle.js +1 -1
  447. package/dist/esm/node/NodeLifecycle.js.map +1 -1
  448. package/dist/esm/node/client/ClientEndpointInitializer.d.ts +2 -0
  449. package/dist/esm/node/client/ClientEndpointInitializer.d.ts.map +1 -1
  450. package/dist/esm/node/client/ClientEndpointInitializer.js +33 -0
  451. package/dist/esm/node/client/ClientEndpointInitializer.js.map +1 -1
  452. package/dist/esm/node/client/ClientEventEmitter.d.ts +3 -3
  453. package/dist/esm/node/client/ClientEventEmitter.d.ts.map +1 -1
  454. package/dist/esm/node/client/ClientNodeInteraction.d.ts +1 -0
  455. package/dist/esm/node/client/ClientNodeInteraction.d.ts.map +1 -1
  456. package/dist/esm/node/client/ClientNodeInteraction.js +6 -0
  457. package/dist/esm/node/client/ClientNodeInteraction.js.map +1 -1
  458. package/dist/esm/node/client/ClientStructure.d.ts +2 -0
  459. package/dist/esm/node/client/ClientStructure.d.ts.map +1 -1
  460. package/dist/esm/node/client/ClientStructure.js +18 -5
  461. package/dist/esm/node/client/ClientStructure.js.map +1 -1
  462. package/dist/esm/node/client/Peers.d.ts +6 -0
  463. package/dist/esm/node/client/Peers.d.ts.map +1 -1
  464. package/dist/esm/node/client/Peers.js +57 -5
  465. package/dist/esm/node/client/Peers.js.map +1 -1
  466. package/dist/esm/node/index.d.ts +1 -0
  467. package/dist/esm/node/index.d.ts.map +1 -1
  468. package/dist/esm/node/index.js +1 -0
  469. package/dist/esm/node/index.js.map +1 -1
  470. package/dist/esm/node/integration/ChangeNotificationService.d.ts +56 -0
  471. package/dist/esm/node/integration/ChangeNotificationService.d.ts.map +1 -0
  472. package/dist/esm/node/integration/ChangeNotificationService.js +73 -0
  473. package/dist/esm/node/integration/ChangeNotificationService.js.map +6 -0
  474. package/dist/esm/node/{server → integration}/ProtocolService.d.ts +15 -0
  475. package/dist/esm/node/integration/ProtocolService.d.ts.map +1 -0
  476. package/dist/esm/node/{server → integration}/ProtocolService.js +26 -52
  477. package/dist/esm/node/integration/ProtocolService.js.map +6 -0
  478. package/dist/esm/node/integration/StateStream.d.ts +87 -0
  479. package/dist/esm/node/integration/StateStream.d.ts.map +1 -0
  480. package/dist/esm/node/integration/StateStream.js +256 -0
  481. package/dist/esm/node/integration/StateStream.js.map +6 -0
  482. package/dist/esm/node/integration/index.d.ts +9 -0
  483. package/dist/esm/node/integration/index.d.ts.map +1 -0
  484. package/dist/esm/node/integration/index.js +9 -0
  485. package/dist/esm/node/integration/index.js.map +6 -0
  486. package/dist/esm/node/server/OnlineServerInteraction.d.ts +1 -0
  487. package/dist/esm/node/server/OnlineServerInteraction.d.ts.map +1 -1
  488. package/dist/esm/node/server/OnlineServerInteraction.js +4 -1
  489. package/dist/esm/node/server/OnlineServerInteraction.js.map +1 -1
  490. package/dist/esm/node/server/ServerEnvironment.d.ts.map +1 -1
  491. package/dist/esm/node/server/ServerEnvironment.js +7 -1
  492. package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
  493. package/dist/esm/node/server/ServerSubscription.d.ts.map +1 -1
  494. package/dist/esm/node/server/ServerSubscription.js +2 -2
  495. package/dist/esm/node/server/index.d.ts +0 -1
  496. package/dist/esm/node/server/index.d.ts.map +1 -1
  497. package/dist/esm/node/server/index.js +0 -1
  498. package/dist/esm/node/server/index.js.map +1 -1
  499. package/dist/esm/storage/client/ClientNodeStores.d.ts.map +1 -1
  500. package/dist/esm/storage/client/ClientNodeStores.js.map +1 -1
  501. package/package.json +7 -7
  502. package/src/behavior/Behavior.ts +8 -1
  503. package/src/behavior/Events.ts +2 -2
  504. package/src/behavior/internal/BehaviorBacking.ts +82 -2
  505. package/src/behavior/state/managed/Datasource.ts +20 -26
  506. package/src/behavior/state/managed/NameResolver.ts +1 -1
  507. package/src/behavior/state/managed/values/ValueCaster.ts +21 -5
  508. package/src/behavior/system/commissioning/CommissioningClient.ts +34 -6
  509. package/src/behavior/system/commissioning/CommissioningServer.ts +2 -3
  510. package/src/behavior/system/controller/ControllerBehavior.ts +0 -7
  511. package/src/behavior/system/http/HttpInterface.ts +326 -0
  512. package/src/behavior/system/http/HttpServer.ts +32 -0
  513. package/src/behavior/system/http/index.ts +8 -0
  514. package/src/behavior/system/index/IndexBehavior.ts +14 -6
  515. package/src/behavior/system/index.ts +4 -0
  516. package/src/behavior/system/mqtt/MqttInterface.ts +414 -0
  517. package/src/behavior/system/mqtt/MqttServer.ts +38 -0
  518. package/src/behavior/system/mqtt/index.ts +8 -0
  519. package/src/behavior/system/network/NetworkClient.ts +124 -24
  520. package/src/behavior/system/product-description/ProductDescriptionServer.ts +7 -5
  521. package/src/behavior/system/remote/RemoteInterface.ts +119 -0
  522. package/src/behavior/system/remote/RemoteServer.ts +132 -0
  523. package/src/behavior/system/remote/api/Api.ts +179 -0
  524. package/src/behavior/system/remote/api/ApiPath.ts +101 -0
  525. package/src/behavior/system/remote/api/ApiResource.ts +169 -0
  526. package/src/behavior/system/remote/api/Envelope.ts +112 -0
  527. package/src/behavior/system/remote/api/LocalResponse.ts +37 -0
  528. package/src/behavior/system/remote/api/RemoteRequest.ts +88 -0
  529. package/src/behavior/system/remote/api/RemoteResponse.ts +83 -0
  530. package/src/behavior/system/remote/api/index.ts +13 -0
  531. package/src/behavior/system/remote/api/resources/BehaviorResource.ts +66 -0
  532. package/src/behavior/system/remote/api/resources/ChangesResource.ts +75 -0
  533. package/src/behavior/system/remote/api/resources/CommandResource.ts +91 -0
  534. package/src/behavior/system/remote/api/resources/EndpointContainerResource.ts +45 -0
  535. package/src/behavior/system/remote/api/resources/EndpointResource.ts +75 -0
  536. package/src/behavior/system/remote/api/resources/NodeResource.ts +71 -0
  537. package/src/behavior/system/remote/api/resources/PropertyResource.ts +124 -0
  538. package/src/behavior/system/remote/api/resources/ServerNodeResource.ts +63 -0
  539. package/src/behavior/system/remote/api/resources/index.ts +13 -0
  540. package/src/behavior/system/remote/index.ts +9 -0
  541. package/src/behavior/system/subscriptions/SubscriptionsServer.ts +1 -2
  542. package/src/behavior/system/websocket/WebSocketInterface.ts +127 -0
  543. package/src/behavior/system/websocket/WebSocketServer.ts +32 -0
  544. package/src/behavior/system/websocket/index.ts +8 -0
  545. package/src/endpoint/Agent.ts +1 -1
  546. package/src/endpoint/Endpoint.ts +10 -4
  547. package/src/endpoint/properties/Behaviors.ts +15 -2
  548. package/src/endpoint/properties/ClientNodeEndpoints.ts +38 -0
  549. package/src/endpoint/properties/EndpointInitializer.ts +7 -0
  550. package/src/endpoint/properties/Endpoints.ts +4 -0
  551. package/src/endpoint/type/EndpointType.ts +3 -0
  552. package/src/node/ClientNode.ts +7 -2
  553. package/src/node/Node.ts +1 -1
  554. package/src/node/NodeLifecycle.ts +1 -1
  555. package/src/node/client/ClientEndpointInitializer.ts +38 -0
  556. package/src/node/client/ClientEventEmitter.ts +5 -5
  557. package/src/node/client/ClientNodeInteraction.ts +7 -0
  558. package/src/node/client/ClientStructure.ts +23 -5
  559. package/src/node/client/Peers.ts +71 -5
  560. package/src/node/index.ts +1 -0
  561. package/src/node/integration/ChangeNotificationService.ts +122 -0
  562. package/src/node/{server → integration}/ProtocolService.ts +32 -74
  563. package/src/node/integration/StateStream.ts +474 -0
  564. package/src/node/integration/index.ts +9 -0
  565. package/src/node/server/OnlineServerInteraction.ts +5 -1
  566. package/src/node/server/ServerEnvironment.ts +9 -1
  567. package/src/node/server/ServerSubscription.ts +6 -6
  568. package/src/node/server/index.ts +0 -1
  569. package/src/storage/client/ClientNodeStores.ts +4 -0
  570. package/dist/cjs/node/server/ProtocolService.d.ts.map +0 -1
  571. package/dist/cjs/node/server/ProtocolService.js.map +0 -6
  572. package/dist/esm/node/server/ProtocolService.d.ts.map +0 -1
  573. package/dist/esm/node/server/ProtocolService.js.map +0 -6
@@ -0,0 +1,414 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import {
8
+ Abort,
9
+ asJson,
10
+ Base64,
11
+ Bytes,
12
+ decamelize,
13
+ InternalError,
14
+ MqttEndpoint,
15
+ MqttService,
16
+ Mutex,
17
+ NotImplementedError,
18
+ } from "#general";
19
+ import { any, CommandModel, Metatype, Schema } from "#model";
20
+ import { StateStream } from "#node/integration/StateStream.js";
21
+ import { StatusResponse } from "#types";
22
+ import { Api } from "../remote/api/Api.js";
23
+ import { ApiPath } from "../remote/api/ApiPath.js";
24
+ import { Envelope } from "../remote/api/Envelope.js";
25
+ import { LocalResponse } from "../remote/api/LocalResponse.js";
26
+ import type { RemoteRequest } from "../remote/api/RemoteRequest.js";
27
+ import { RemoteResponse } from "../remote/api/RemoteResponse.js";
28
+ import { RemoteInterface } from "../remote/RemoteInterface.js";
29
+
30
+ const LOG_FACILITY = "MQTT";
31
+
32
+ /**
33
+ * MQTT remote interface.
34
+ *
35
+ * Currently publishes a read-only feed. Will address TODOs if there is real-world use.
36
+ *
37
+ * TODO - events
38
+ * TODO - clean out topics from previous runs that are no longer relevant, e.g. deleted endpoint, removed attrs, etc.
39
+ * TODO - TLV serialiation/deserialization
40
+ */
41
+ export class MqttInterface extends RemoteInterface {
42
+ static override protocol = "mqtt";
43
+
44
+ #endpoint?: MqttEndpoint;
45
+ #mutex = new Mutex(this);
46
+ #retainedTopics = new Map<string, Map<number, Set<string>>>();
47
+
48
+ protected override async start() {
49
+ this.#endpoint = await this.env.get(MqttService).connect({
50
+ address: this.address,
51
+ environment: this.node.env,
52
+
53
+ will: {
54
+ topic: this.root.at("status").toString(),
55
+ payload: "offline",
56
+ },
57
+
58
+ onUp: endpoint => {
59
+ if (!this.#endpoint) {
60
+ this.#endpoint = endpoint;
61
+ }
62
+
63
+ return this.#publish({
64
+ topic: this.root.at("status").toString(),
65
+ payload: "online",
66
+ });
67
+ },
68
+ });
69
+
70
+ this.addWorker(this.#listen(), "mqtt listener");
71
+ this.addWorker(this.#feed(), "mqtt feeder");
72
+ }
73
+
74
+ protected override async stop() {
75
+ await this.#mutex.then();
76
+ await this.#mqtt?.close();
77
+ }
78
+
79
+ /**
80
+ * A background process that handles incoming MQTT messages.
81
+ */
82
+ async #listen() {
83
+ await Abort.race(this.abort, this.node.construction);
84
+ if (Abort.is(this.abort)) {
85
+ return;
86
+ }
87
+
88
+ let topic = this.root.toString();
89
+ if (topic !== "") {
90
+ topic += "/#";
91
+ } else {
92
+ topic = "#";
93
+ }
94
+
95
+ for await (const message of this.#mqtt.subscribe(`${topic}`, { noLocal: true, abort: this.abort })) {
96
+ // We publish retained messages so ignore these; if not retained it's a write or invoke
97
+ if (message.retain) {
98
+ continue;
99
+ }
100
+
101
+ // This should always be true but make sure
102
+ const relativeTopic = this.root.subpathFor(new ApiPath(message.topic));
103
+ if (!relativeTopic) {
104
+ continue;
105
+ }
106
+
107
+ await this.#respond(relativeTopic, message);
108
+ }
109
+ }
110
+
111
+ async #respond(topic: ApiPath, message: MqttEndpoint.Message) {
112
+ let response: LocalResponse | undefined;
113
+
114
+ const via = message.correlationData ? Bytes.toHex(message.correlationData) : message.responseTopic;
115
+
116
+ try {
117
+ await this.node.act("MQTT listener", async agent => {
118
+ // Specialized topic "call" is for RPC messaging using RemoteRequest/RemoteResponse
119
+ if (topic.toString() === "call") {
120
+ response = await this.#call(message);
121
+ return;
122
+ }
123
+
124
+ const resource = await Api.resourceFor(agent, topic);
125
+ if (resource === undefined) {
126
+ throw new StatusResponse.NotFoundError(`No resource at subtopic ${topic}`);
127
+ }
128
+
129
+ const schema = resource.schema;
130
+ if (!schema) {
131
+ throw new NotImplementedError();
132
+ }
133
+ const input = payloadToJs(schema, message.payload);
134
+
135
+ if (resource.isInvocable) {
136
+ Api.logRequest(LOG_FACILITY, via, "invoke", topic.toString());
137
+
138
+ let value = await resource.invoke({ js: input });
139
+
140
+ const responseSchema = (schema as CommandModel).responseModel;
141
+ if (responseSchema) {
142
+ value ??= new Envelope({ supervisor: resource.supervisorFor(responseSchema), js: null });
143
+ response = { kind: "value", value };
144
+ }
145
+ } else {
146
+ Api.logRequest(LOG_FACILITY, via, "update", topic.toString());
147
+
148
+ await resource.patch(input ?? { js: null });
149
+ }
150
+ });
151
+ } catch (e) {
152
+ response = Api.errorResponseOf(LOG_FACILITY, via, e);
153
+ }
154
+
155
+ if (!response) {
156
+ response = { kind: "ok" };
157
+ }
158
+
159
+ response.id = via;
160
+ Api.logResponse(LOG_FACILITY, RemoteResponse(response));
161
+
162
+ if (message.responseTopic) {
163
+ await this.#publish({
164
+ topic: message.responseTopic,
165
+ correlationData: message.correlationData,
166
+ payload: asJson(response),
167
+ });
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Specialized handling for "call" topic to support full {@link RemoteRequest}/{@link RemoteResponse} interaction.
173
+ */
174
+ async #call(message: MqttEndpoint.Message) {
175
+ const request = parseJsonPayload(message.payload);
176
+ const response = await Api.execute(LOG_FACILITY, this.node, request, this.abort);
177
+
178
+ // I don't think there's any point in supporting subscriptions when MQTT offers a superior mechanism, so for now
179
+ // just throw if this is attempted
180
+ if (response.kind === "subscription") {
181
+ await response.stream.return?.();
182
+ throw new StatusResponse.InvalidSubscriptionError(
183
+ "Subscription via RPC is not supported, use MQTT instead",
184
+ );
185
+ }
186
+
187
+ return response;
188
+ }
189
+
190
+ /**
191
+ * A background process that continuously updates MQTT topics.
192
+ */
193
+ async #feed() {
194
+ const stream = StateStream(this.node, { abort: this.abort });
195
+
196
+ for await (const change of stream) {
197
+ await this.#mutex.produce(async () => {
198
+ switch (change.kind) {
199
+ case "update":
200
+ await this.#publishUpdate(change);
201
+ break;
202
+
203
+ case "delete":
204
+ await this.#publishDelete(change);
205
+ }
206
+ });
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Publish attribute values for state changes.
212
+ */
213
+ async #publishUpdate({ node, endpoint, behavior, changes }: StateStream.Update) {
214
+ let nodeTopics = this.#retainedTopics.get(node.id);
215
+ if (nodeTopics === undefined) {
216
+ this.#retainedTopics.set(node.id, (nodeTopics = new Map()));
217
+ }
218
+ let endpointTopics = nodeTopics.get(endpoint.number);
219
+ if (endpointTopics === undefined) {
220
+ nodeTopics.set(endpoint.number, (endpointTopics = new Set()));
221
+ }
222
+
223
+ const behaviorRoot = this.#nodeRoot(node.id).at([endpoint.number.toString(), decamelize(behavior.id)]);
224
+ for (const name in changes) {
225
+ const value = changes[name];
226
+ const schema = behavior.schema?.conformant.properties.for(name);
227
+ const payload = jsToPayload(schema ?? any, value);
228
+
229
+ const topic = behaviorRoot.at([name]).toString();
230
+ endpointTopics.add(topic);
231
+
232
+ await this.#publish({
233
+ topic,
234
+ payload,
235
+ retain: true,
236
+ });
237
+ }
238
+ }
239
+
240
+ /**
241
+ * Delete all published topics for an endpoint or node that has disappeared.
242
+ */
243
+ async #publishDelete(change: StateStream.Delete) {
244
+ const nodeTopics = this.#retainedTopics.get(change.node.id);
245
+ if (!nodeTopics) {
246
+ return;
247
+ }
248
+
249
+ const deleteEndpoint = async (endpoint: number) => {
250
+ const topics = nodeTopics.get(endpoint);
251
+ if (!topics) {
252
+ return;
253
+ }
254
+
255
+ for (const topic of topics) {
256
+ await this.#publish({
257
+ topic,
258
+ payload: null,
259
+ retain: true,
260
+ });
261
+ }
262
+
263
+ nodeTopics.delete(endpoint);
264
+ };
265
+
266
+ if (change.endpoint === change.node) {
267
+ for (const number of nodeTopics.keys()) {
268
+ await deleteEndpoint(number);
269
+ }
270
+ this.#retainedTopics.delete(change.node.id);
271
+ } else {
272
+ await deleteEndpoint(change.endpoint.number);
273
+ }
274
+ }
275
+
276
+ /**
277
+ * Obtain the root path for a node.
278
+ *
279
+ * This will either be the root path for the server or a subpath for peers.
280
+ */
281
+ #nodeRoot(id: string) {
282
+ if (id === this.node.id) {
283
+ return this.root;
284
+ }
285
+
286
+ return this.root.at(["peers", id]);
287
+ }
288
+
289
+ /**
290
+ * Safe access to the MQTT endpoint.
291
+ */
292
+ get #mqtt() {
293
+ if (this.#endpoint === undefined) {
294
+ throw new InternalError("MQTT endpoint missing");
295
+ }
296
+ return this.#endpoint;
297
+ }
298
+
299
+ /**
300
+ * Publish a message.
301
+ *
302
+ * Default QOS is 2.
303
+ */
304
+ #publish(message: MqttEndpoint.Message) {
305
+ if (this.abort.aborted) {
306
+ throw new InternalError("MQTT publish after abort");
307
+ }
308
+ if (message.qos === undefined) {
309
+ message.qos = 2;
310
+ }
311
+ return this.#mqtt.publish(message);
312
+ }
313
+ }
314
+
315
+ function payloadToJs(schema: Schema, payload: Bytes | string | null): unknown {
316
+ if (payload === null) {
317
+ return null;
318
+ }
319
+
320
+ const length = typeof payload === "string" ? payload.length : payload.byteLength;
321
+ if (!length) {
322
+ return null;
323
+ }
324
+
325
+ let js;
326
+ switch (schema.effectiveMetatype) {
327
+ case Metatype.any:
328
+ js = payload;
329
+ break;
330
+
331
+ case Metatype.object:
332
+ case Metatype.array:
333
+ case Metatype.bitmap:
334
+ js = parseJsonPayload(payload);
335
+ break;
336
+
337
+ case Metatype.bytes:
338
+ if (typeof payload === "string") {
339
+ try {
340
+ js = Base64.decode(payload);
341
+ } catch (e) {
342
+ if (e instanceof SyntaxError) {
343
+ throw new StatusResponse.InvalidDataTypeError(
344
+ `Value is not binary or a base64 string: ${e.message}`,
345
+ );
346
+ }
347
+ }
348
+ break;
349
+ }
350
+
351
+ js = payload;
352
+ break;
353
+
354
+ default:
355
+ if (Bytes.isBytes(payload)) {
356
+ try {
357
+ payload = Bytes.toString(payload);
358
+ } catch (e) {
359
+ if (e instanceof TypeError) {
360
+ throw new StatusResponse.InvalidDataTypeError(
361
+ `Value is not a valid UTF-8 string: ${e.message}`,
362
+ );
363
+ }
364
+ }
365
+ }
366
+ js = payload;
367
+ break;
368
+ }
369
+
370
+ return js;
371
+ }
372
+
373
+ function jsToPayload(schema: Schema, js: unknown): Bytes | string {
374
+ if (js === undefined || js === null || js === "") {
375
+ return Bytes.empty;
376
+ }
377
+
378
+ switch (schema.effectiveMetatype) {
379
+ case Metatype.object:
380
+ case Metatype.array:
381
+ case Metatype.bitmap:
382
+ // TODO - serialize bitmap as number?
383
+ return asJson(js);
384
+
385
+ case Metatype.bytes:
386
+ if (Bytes.isBytes(js)) {
387
+ return js;
388
+ }
389
+ return Bytes.fromString(js.toString());
390
+
391
+ default:
392
+ if (Bytes.isBytes(js)) {
393
+ return js;
394
+ }
395
+ return js.toString();
396
+ }
397
+ }
398
+
399
+ function parseJsonPayload(payload: MqttEndpoint.Message["payload"]) {
400
+ if (payload === null) {
401
+ throw new StatusResponse.InvalidDataTypeError("Empty payload where JSON expected");
402
+ }
403
+ if (Bytes.isBytes(payload)) {
404
+ payload = Bytes.toString(payload);
405
+ }
406
+ try {
407
+ return JSON.parse(payload);
408
+ } catch (e) {
409
+ if (e instanceof SyntaxError) {
410
+ throw new StatusResponse.InvalidDataTypeError(`Payload is not valid JSON: ${e.message}`);
411
+ }
412
+ throw e;
413
+ }
414
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { RemoteServer } from "../remote/RemoteServer.js";
8
+ import { MqttInterface } from "./MqttInterface.js";
9
+
10
+ /**
11
+ * Allows control of a Matter node via an MQTT broker.
12
+ *
13
+ * The broker must support MQTT version 5.
14
+ */
15
+ export class MqttServer extends RemoteServer {
16
+ static override readonly id = "mqtt";
17
+ static override readonly interfaceType = MqttInterface;
18
+ }
19
+
20
+ export namespace MqttServer {
21
+ export class State extends RemoteServer.State {
22
+ /**
23
+ * The MQTT broker address.
24
+ *
25
+ * Supported protocols:
26
+ *
27
+ * - mqtt
28
+ * - mqtts
29
+ * - mqtt+ws (MQTT over web sockets)
30
+ * - mqtt+wss
31
+ * - mqtt+unix (MQTT over UNIX socket)
32
+ * - mqtts+unix
33
+ *
34
+ * If present, the path portion of the address adds a prefix to the topics registered by the server.
35
+ */
36
+ override address = "mqtt:localhost/matter/{node}";
37
+ }
38
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export * from "./MqttInterface.js";
8
+ export * from "./MqttServer.js";
@@ -4,9 +4,12 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { RemoteDescriptor } from "#behavior/system/commissioning/RemoteDescriptor.js";
8
+ import { ImplementationError, Observable, ServerAddress, ServerAddressUdp } from "#general";
7
9
  import { DatatypeModel, FieldElement } from "#model";
10
+ import type { ClientNode } from "#node/ClientNode.js";
8
11
  import { Node } from "#node/Node.js";
9
- import { DEFAULT_MIN_INTERVAL_FLOOR, Subscribe } from "#protocol";
12
+ import { ClientInteraction, DEFAULT_MIN_INTERVAL_FLOOR, PeerSet, Subscribe } from "#protocol";
10
13
  import { CaseAuthenticatedTag } from "#types";
11
14
  import { ClientNetworkRuntime } from "./ClientNetworkRuntime.js";
12
15
  import { NetworkBehavior } from "./NetworkBehavior.js";
@@ -14,33 +17,97 @@ import { NetworkBehavior } from "./NetworkBehavior.js";
14
17
  export class NetworkClient extends NetworkBehavior {
15
18
  declare internal: NetworkClient.Internal;
16
19
  declare state: NetworkClient.State;
20
+ declare events: NetworkClient.Events;
21
+
22
+ override initialize() {
23
+ this.reactTo(this.events.autoSubscribe$Changed, this.#handleSubscription);
24
+ this.reactTo(this.events.defaultSubscription$Changed, this.#handleChangedDefaultSubscription);
25
+ }
17
26
 
18
27
  override async startup() {
19
- const { startupSubscription, isDisabled } = this.state;
28
+ const peerAddress = this.#node.state.commissioning.peerAddress;
29
+ if (peerAddress !== undefined) {
30
+ const peerSet = this.env.get(PeerSet);
31
+ if (!peerSet.has(peerAddress)) {
32
+ const udpAddresses = this.#node.state.commissioning.addresses?.filter(a => a.type === "udp") ?? [];
33
+ if (udpAddresses.length) {
34
+ const latestUdpAddress = ServerAddress(udpAddresses[udpAddresses.length - 1]) as ServerAddressUdp;
35
+ // Make sure the PeerSet knows about this peer now too
36
+ await peerSet.addKnownPeer(
37
+ peerAddress,
38
+ latestUdpAddress,
39
+ RemoteDescriptor.fromLongForm(this.#node.state.commissioning),
40
+ );
41
+ }
42
+ }
43
+ }
44
+
45
+ await this.#handleSubscription();
46
+ }
20
47
 
21
- if (startupSubscription === null || isDisabled) {
48
+ /**
49
+ * Manually activate the subscription for the node, if not already active. This will fail if the node is disabled.
50
+ *
51
+ * If you want to disable subscription, set the isDisabled state to true or set autoSubscribe to false.
52
+ */
53
+ subscribe() {
54
+ if (this.state.isDisabled) {
55
+ throw new ImplementationError("Cannot subscribe when node is disabled");
56
+ }
57
+ return this.#handleSubscription(true);
58
+ }
59
+
60
+ async #handleChangedDefaultSubscription() {
61
+ if (!this.internal.subscriptionActivated) {
62
+ return;
63
+ }
64
+
65
+ // Restart the subscription with the new parameters
66
+ await this.#handleSubscription(false);
67
+ await this.#handleSubscription(true);
68
+ }
69
+
70
+ async #handleSubscription(desiredState = this.state.autoSubscribe) {
71
+ const { isDisabled } = this.state;
72
+ const subscriptionDesired = desiredState && !isDisabled;
73
+
74
+ if (subscriptionDesired === this.internal.subscriptionActivated) {
22
75
  return;
23
76
  }
24
77
 
25
- // TODO - configure subscription based on physical device properties
26
- const subscribe = Subscribe({
27
- fabricFilter: true,
28
- minIntervalFloor: DEFAULT_MIN_INTERVAL_FLOOR,
29
- maxIntervalCeiling: 0,
30
- attributes: [{}],
31
- events: [{ isUrgent: true }],
32
- ...startupSubscription,
33
- });
34
-
35
- // First, read. This allows us to retrieve attributes that do not support subscription
36
- for await (const _chunk of this.#node.interaction.read(subscribe));
37
-
38
- // Now subscribe for subsequent updates
39
- await this.#node.interaction.subscribe(subscribe);
78
+ if (subscriptionDesired) {
79
+ // TODO - configure subscription min/max timing based on physical device properties
80
+ // TODO run whole process including reconnections in a "mutex" like process
81
+ const subscribe = Subscribe({
82
+ fabricFilter: true,
83
+ minIntervalFloor: DEFAULT_MIN_INTERVAL_FLOOR,
84
+ maxIntervalCeiling: 0,
85
+ attributes: [{}],
86
+ events: [{ isUrgent: true }],
87
+ ...this.state.defaultSubscription,
88
+ });
89
+
90
+ // First, read. This allows us to retrieve attributes that do not support subscription
91
+ for await (const _chunk of this.#node.interaction.read(subscribe));
92
+
93
+ // Now subscribe for subsequent updates
94
+ const { subscriptionId } = await this.#node.interaction.subscribe(subscribe);
95
+
96
+ this.internal.subscriptionActivated = true;
97
+ this.internal.defaultSubscriptionId = subscriptionId;
98
+ } else {
99
+ if (this.internal.defaultSubscriptionId !== undefined) {
100
+ (this.#node.interaction as ClientInteraction).subscriptions
101
+ .get(this.internal.defaultSubscriptionId)
102
+ ?.close();
103
+ this.internal.defaultSubscriptionId = undefined;
104
+ }
105
+ this.internal.subscriptionActivated = false;
106
+ }
40
107
  }
41
108
 
42
109
  get #node() {
43
- return this.env.get(Node);
110
+ return this.env.get(Node) as ClientNode;
44
111
  }
45
112
 
46
113
  /**
@@ -52,16 +119,25 @@ export class NetworkClient extends NetworkBehavior {
52
119
 
53
120
  children: [
54
121
  FieldElement({
55
- name: "startupSubscription",
122
+ name: "defaultSubscription",
56
123
  type: "any",
57
124
  default: { type: "properties", properties: {} },
58
- quality: "XN",
125
+ conformance: "O",
126
+ quality: "N",
59
127
  }),
60
128
 
61
129
  FieldElement({
62
130
  name: "isDisabled",
63
131
  type: "bool",
64
132
  quality: "N",
133
+ default: false,
134
+ }),
135
+
136
+ FieldElement({
137
+ name: "autoSubscribe",
138
+ type: "bool",
139
+ quality: "N",
140
+ default: false,
65
141
  }),
66
142
 
67
143
  FieldElement({
@@ -83,24 +159,43 @@ export class NetworkClient extends NetworkBehavior {
83
159
  export namespace NetworkClient {
84
160
  export class Internal extends NetworkBehavior.Internal {
85
161
  declare runtime?: ClientNetworkRuntime;
162
+
163
+ /**
164
+ * Contains the subscription target state. It will also be true if a subscription is in the process of being
165
+ * established, or we wait for the node to be rediscovered.
166
+ */
167
+ subscriptionActivated = false;
168
+
169
+ /** The ID of the current active default subscription, if any */
170
+ defaultSubscriptionId?: number;
86
171
  }
87
172
 
88
173
  export class State extends NetworkBehavior.State {
89
174
  /**
90
- * A subscription installed when the node is first commissioned and when the service is restarted.
175
+ * This subscription defines the default set of attributes and events to which the node will automatically
176
+ * subscribe when started, if autoSubscribe is true.
91
177
  *
92
178
  * The default subscription is a wildcard for all attributes of the node. You can set to undefined or filter
93
179
  * the fields and values but only values selected by this subscription will update automatically.
94
180
  *
95
181
  * Set to null to disable automatic subscription.
96
182
  */
97
- startupSubscription?: Subscribe | null;
183
+ defaultSubscription?: Subscribe;
98
184
 
99
185
  /**
100
- * If true, the matter.js will not perform network communication with the node.
186
+ * Represents the current operational network state of the node. When true the node is enabled and operational.
187
+ * When false the node is disabled and not operational.
188
+ *
189
+ * This state can be changed at any time to enable or disable the node.
101
190
  */
102
191
  isDisabled = false;
103
192
 
193
+ /**
194
+ * If true, automatically subscribe to the provided default subscription (or all attributes and events) when
195
+ * the node is started. If false, do not automatically subscribe.
196
+ */
197
+ autoSubscribe = false;
198
+
104
199
  /**
105
200
  * Case Authenticated Tags (CATs) to use for operational CASE sessions with this node.
106
201
  *
@@ -110,4 +205,9 @@ export namespace NetworkClient {
110
205
  */
111
206
  caseAuthenticatedTags?: CaseAuthenticatedTag[];
112
207
  }
208
+
209
+ export class Events extends NetworkBehavior.Events {
210
+ autoSubscribe$Changed = new Observable<[value: boolean, oldValue: boolean]>();
211
+ defaultSubscription$Changed = new Observable<[value: Subscribe | undefined, oldValue: Subscribe | undefined]>();
212
+ }
113
213
  }