@matter/protocol 0.15.1 → 0.15.2-alpha.0-20250704-2715344f0

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 (349) hide show
  1. package/dist/cjs/action/Val.d.ts +4 -0
  2. package/dist/cjs/action/Val.d.ts.map +1 -1
  3. package/dist/cjs/action/Val.js.map +1 -1
  4. package/dist/cjs/action/client/ClientInteraction.d.ts +10 -8
  5. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  6. package/dist/cjs/action/client/ClientInteraction.js +152 -80
  7. package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
  8. package/dist/cjs/action/client/ClientSubscription.d.ts +17 -0
  9. package/dist/cjs/action/client/ClientSubscription.d.ts.map +1 -0
  10. package/dist/cjs/action/client/ClientSubscription.js +22 -0
  11. package/dist/cjs/action/client/ClientSubscription.js.map +6 -0
  12. package/dist/cjs/action/client/ClientSubscriptionHandler.d.ts +20 -0
  13. package/dist/cjs/action/client/ClientSubscriptionHandler.d.ts.map +1 -0
  14. package/dist/cjs/action/client/ClientSubscriptionHandler.js +117 -0
  15. package/dist/cjs/action/client/ClientSubscriptionHandler.js.map +6 -0
  16. package/dist/cjs/action/client/ClientSubscriptions.d.ts +45 -0
  17. package/dist/cjs/action/client/ClientSubscriptions.d.ts.map +1 -0
  18. package/dist/cjs/action/client/ClientSubscriptions.js +141 -0
  19. package/dist/cjs/action/client/ClientSubscriptions.js.map +6 -0
  20. package/dist/cjs/action/client/InputChunk.d.ts +12 -0
  21. package/dist/cjs/action/client/InputChunk.d.ts.map +1 -0
  22. package/dist/cjs/action/client/InputChunk.js +89 -0
  23. package/dist/cjs/action/client/InputChunk.js.map +6 -0
  24. package/dist/cjs/action/client/ReadScope.d.ts +26 -0
  25. package/dist/cjs/action/client/ReadScope.d.ts.map +1 -0
  26. package/dist/cjs/action/client/ReadScope.js +87 -0
  27. package/dist/cjs/action/client/ReadScope.js.map +6 -0
  28. package/dist/cjs/action/client/index.d.ts +5 -0
  29. package/dist/cjs/action/client/index.d.ts.map +1 -1
  30. package/dist/cjs/action/client/index.js +5 -0
  31. package/dist/cjs/action/client/index.js.map +1 -1
  32. package/dist/cjs/action/request/Invoke.d.ts.map +1 -1
  33. package/dist/cjs/action/request/Invoke.js +8 -2
  34. package/dist/cjs/action/request/Invoke.js.map +1 -1
  35. package/dist/cjs/action/request/Read.d.ts +0 -4
  36. package/dist/cjs/action/request/Read.d.ts.map +1 -1
  37. package/dist/cjs/action/request/Read.js.map +1 -1
  38. package/dist/cjs/action/request/Subscribe.d.ts +14 -1
  39. package/dist/cjs/action/request/Subscribe.d.ts.map +1 -1
  40. package/dist/cjs/action/request/Subscribe.js +2 -2
  41. package/dist/cjs/action/request/Subscribe.js.map +1 -1
  42. package/dist/cjs/action/response/SubscribeResult.d.ts +3 -5
  43. package/dist/cjs/action/response/SubscribeResult.d.ts.map +1 -1
  44. package/dist/cjs/action/server/AttributeReadResponse.d.ts +1 -1
  45. package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -1
  46. package/dist/cjs/action/server/AttributeSubscriptionResponse.d.ts +1 -1
  47. package/dist/cjs/action/server/AttributeSubscriptionResponse.d.ts.map +1 -1
  48. package/dist/cjs/action/server/AttributeSubscriptionResponse.js.map +1 -1
  49. package/dist/cjs/action/server/CommandInvokeResponse.d.ts +2 -1
  50. package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
  51. package/dist/cjs/action/server/CommandInvokeResponse.js +3 -3
  52. package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
  53. package/dist/cjs/action/server/EventReadResponse.d.ts +1 -1
  54. package/dist/cjs/action/server/EventReadResponse.d.ts.map +1 -1
  55. package/dist/cjs/codec/MessageCodec.d.ts +1 -1
  56. package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
  57. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  58. package/dist/cjs/common/FailsafeContext.js +0 -1
  59. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  60. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  61. package/dist/cjs/fabric/Fabric.js +13 -10
  62. package/dist/cjs/fabric/Fabric.js.map +1 -1
  63. package/dist/cjs/fabric/FabricAuthority.d.ts +6 -1
  64. package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
  65. package/dist/cjs/fabric/FabricAuthority.js +16 -0
  66. package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
  67. package/dist/cjs/groups/FabricGroups.d.ts +1 -1
  68. package/dist/cjs/groups/FabricGroups.d.ts.map +1 -1
  69. package/dist/cjs/groups/Groups.d.ts +2 -2
  70. package/dist/cjs/groups/Groups.d.ts.map +1 -1
  71. package/dist/cjs/groups/Groups.js +2 -2
  72. package/dist/cjs/groups/Groups.js.map +1 -1
  73. package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
  74. package/dist/cjs/interaction/FabricAccessControl.d.ts +1 -1
  75. package/dist/cjs/interaction/FabricAccessControl.d.ts.map +1 -1
  76. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  77. package/dist/cjs/interaction/InteractionClient.js +8 -4
  78. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  79. package/dist/cjs/interaction/InteractionMessenger.d.ts +21 -17
  80. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  81. package/dist/cjs/interaction/InteractionMessenger.js +20 -12
  82. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  83. package/dist/cjs/mdns/MdnsScanner.d.ts +5 -6
  84. package/dist/cjs/mdns/MdnsScanner.d.ts.map +1 -1
  85. package/dist/cjs/mdns/MdnsScanner.js.map +1 -1
  86. package/dist/cjs/peer/ControllerCommissioner.js +4 -4
  87. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  88. package/dist/cjs/peer/ControllerCommissioningFlow.js +2 -2
  89. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  90. package/dist/cjs/peer/OperationalPeer.d.ts +1 -1
  91. package/dist/cjs/peer/OperationalPeer.d.ts.map +1 -1
  92. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
  93. package/dist/cjs/peer/PeerAddress.js +1 -1
  94. package/dist/cjs/peer/PeerAddress.js.map +1 -1
  95. package/dist/cjs/peer/PeerAddressStore.d.ts +1 -1
  96. package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
  97. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  98. package/dist/cjs/peer/PeerSet.js +5 -5
  99. package/dist/cjs/peer/PeerSet.js.map +1 -1
  100. package/dist/cjs/protocol/ChannelManager.d.ts +1 -3
  101. package/dist/cjs/protocol/ChannelManager.d.ts.map +1 -1
  102. package/dist/cjs/protocol/ChannelManager.js +3 -6
  103. package/dist/cjs/protocol/ChannelManager.js.map +1 -1
  104. package/dist/cjs/protocol/DeviceCommissioner.d.ts +3 -2
  105. package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
  106. package/dist/cjs/protocol/DeviceCommissioner.js +6 -8
  107. package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
  108. package/dist/cjs/protocol/ExchangeManager.d.ts +1 -3
  109. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  110. package/dist/cjs/protocol/ExchangeManager.js +7 -9
  111. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  112. package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
  113. package/dist/cjs/protocol/ExchangeProvider.js +7 -8
  114. package/dist/cjs/protocol/ExchangeProvider.js.map +1 -1
  115. package/dist/cjs/protocol/MessageChannel.d.ts +17 -4
  116. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  117. package/dist/cjs/protocol/MessageChannel.js +15 -6
  118. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  119. package/dist/cjs/protocol/MessageExchange.d.ts +0 -6
  120. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  121. package/dist/cjs/protocol/MessageExchange.js +5 -9
  122. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  123. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +3 -0
  124. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  125. package/dist/cjs/securechannel/SecureChannelMessenger.js +4 -0
  126. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  127. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts +0 -1
  128. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts.map +1 -1
  129. package/dist/cjs/securechannel/SecureChannelProtocol.js +0 -3
  130. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  131. package/dist/cjs/session/GroupSession.d.ts +1 -1
  132. package/dist/cjs/session/GroupSession.d.ts.map +1 -1
  133. package/dist/cjs/session/GroupSession.js +6 -6
  134. package/dist/cjs/session/GroupSession.js.map +1 -1
  135. package/dist/cjs/session/InsecureSession.d.ts +2 -1
  136. package/dist/cjs/session/InsecureSession.d.ts.map +1 -1
  137. package/dist/cjs/session/InsecureSession.js +5 -4
  138. package/dist/cjs/session/InsecureSession.js.map +1 -1
  139. package/dist/cjs/session/NodeSession.d.ts +5 -3
  140. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  141. package/dist/cjs/session/NodeSession.js +4 -2
  142. package/dist/cjs/session/NodeSession.js.map +1 -1
  143. package/dist/cjs/session/SessionManager.d.ts +2 -3
  144. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  145. package/dist/cjs/session/SessionManager.js +1 -3
  146. package/dist/cjs/session/SessionManager.js.map +1 -1
  147. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  148. package/dist/cjs/session/case/CaseClient.js +6 -5
  149. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  150. package/dist/cjs/session/case/CaseServer.js +2 -2
  151. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  152. package/dist/cjs/session/pase/PaseMessages.js +2 -2
  153. package/dist/cjs/session/pase/PaseMessages.js.map +1 -1
  154. package/dist/esm/action/Val.d.ts +4 -0
  155. package/dist/esm/action/Val.d.ts.map +1 -1
  156. package/dist/esm/action/Val.js.map +1 -1
  157. package/dist/esm/action/client/ClientInteraction.d.ts +10 -8
  158. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  159. package/dist/esm/action/client/ClientInteraction.js +154 -82
  160. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  161. package/dist/esm/action/client/ClientSubscription.d.ts +17 -0
  162. package/dist/esm/action/client/ClientSubscription.d.ts.map +1 -0
  163. package/dist/esm/action/client/ClientSubscription.js +6 -0
  164. package/dist/esm/action/client/ClientSubscription.js.map +6 -0
  165. package/dist/esm/action/client/ClientSubscriptionHandler.d.ts +20 -0
  166. package/dist/esm/action/client/ClientSubscriptionHandler.d.ts.map +1 -0
  167. package/dist/esm/action/client/ClientSubscriptionHandler.js +97 -0
  168. package/dist/esm/action/client/ClientSubscriptionHandler.js.map +6 -0
  169. package/dist/esm/action/client/ClientSubscriptions.d.ts +45 -0
  170. package/dist/esm/action/client/ClientSubscriptions.d.ts.map +1 -0
  171. package/dist/esm/action/client/ClientSubscriptions.js +129 -0
  172. package/dist/esm/action/client/ClientSubscriptions.js.map +6 -0
  173. package/dist/esm/action/client/InputChunk.d.ts +12 -0
  174. package/dist/esm/action/client/InputChunk.d.ts.map +1 -0
  175. package/dist/esm/action/client/InputChunk.js +69 -0
  176. package/dist/esm/action/client/InputChunk.js.map +6 -0
  177. package/dist/esm/action/client/ReadScope.d.ts +26 -0
  178. package/dist/esm/action/client/ReadScope.d.ts.map +1 -0
  179. package/dist/esm/action/client/ReadScope.js +67 -0
  180. package/dist/esm/action/client/ReadScope.js.map +6 -0
  181. package/dist/esm/action/client/index.d.ts +5 -0
  182. package/dist/esm/action/client/index.d.ts.map +1 -1
  183. package/dist/esm/action/client/index.js +5 -0
  184. package/dist/esm/action/client/index.js.map +1 -1
  185. package/dist/esm/action/request/Invoke.d.ts.map +1 -1
  186. package/dist/esm/action/request/Invoke.js +8 -2
  187. package/dist/esm/action/request/Invoke.js.map +1 -1
  188. package/dist/esm/action/request/Read.d.ts +0 -4
  189. package/dist/esm/action/request/Read.d.ts.map +1 -1
  190. package/dist/esm/action/request/Read.js.map +1 -1
  191. package/dist/esm/action/request/Subscribe.d.ts +14 -1
  192. package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
  193. package/dist/esm/action/request/Subscribe.js +2 -2
  194. package/dist/esm/action/request/Subscribe.js.map +1 -1
  195. package/dist/esm/action/response/SubscribeResult.d.ts +3 -5
  196. package/dist/esm/action/response/SubscribeResult.d.ts.map +1 -1
  197. package/dist/esm/action/server/AttributeReadResponse.d.ts +1 -1
  198. package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -1
  199. package/dist/esm/action/server/AttributeSubscriptionResponse.d.ts +1 -1
  200. package/dist/esm/action/server/AttributeSubscriptionResponse.d.ts.map +1 -1
  201. package/dist/esm/action/server/AttributeSubscriptionResponse.js.map +1 -1
  202. package/dist/esm/action/server/CommandInvokeResponse.d.ts +2 -1
  203. package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
  204. package/dist/esm/action/server/CommandInvokeResponse.js +1 -1
  205. package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
  206. package/dist/esm/action/server/EventReadResponse.d.ts +1 -1
  207. package/dist/esm/action/server/EventReadResponse.d.ts.map +1 -1
  208. package/dist/esm/codec/MessageCodec.d.ts +1 -1
  209. package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
  210. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  211. package/dist/esm/common/FailsafeContext.js +0 -1
  212. package/dist/esm/common/FailsafeContext.js.map +1 -1
  213. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  214. package/dist/esm/fabric/Fabric.js +4 -1
  215. package/dist/esm/fabric/Fabric.js.map +1 -1
  216. package/dist/esm/fabric/FabricAuthority.d.ts +6 -1
  217. package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
  218. package/dist/esm/fabric/FabricAuthority.js +25 -1
  219. package/dist/esm/fabric/FabricAuthority.js.map +1 -1
  220. package/dist/esm/groups/FabricGroups.d.ts +1 -1
  221. package/dist/esm/groups/FabricGroups.d.ts.map +1 -1
  222. package/dist/esm/groups/Groups.d.ts +2 -2
  223. package/dist/esm/groups/Groups.d.ts.map +1 -1
  224. package/dist/esm/groups/Groups.js +1 -1
  225. package/dist/esm/groups/Groups.js.map +1 -1
  226. package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
  227. package/dist/esm/interaction/FabricAccessControl.d.ts +1 -1
  228. package/dist/esm/interaction/FabricAccessControl.d.ts.map +1 -1
  229. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  230. package/dist/esm/interaction/InteractionClient.js +8 -4
  231. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  232. package/dist/esm/interaction/InteractionMessenger.d.ts +21 -17
  233. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  234. package/dist/esm/interaction/InteractionMessenger.js +19 -11
  235. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  236. package/dist/esm/mdns/MdnsScanner.d.ts +5 -6
  237. package/dist/esm/mdns/MdnsScanner.d.ts.map +1 -1
  238. package/dist/esm/mdns/MdnsScanner.js.map +1 -1
  239. package/dist/esm/peer/ControllerCommissioner.js +2 -2
  240. package/dist/esm/peer/ControllerCommissioningFlow.js +1 -1
  241. package/dist/esm/peer/OperationalPeer.d.ts +1 -1
  242. package/dist/esm/peer/OperationalPeer.d.ts.map +1 -1
  243. package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
  244. package/dist/esm/peer/PeerAddress.js +2 -2
  245. package/dist/esm/peer/PeerAddress.js.map +1 -1
  246. package/dist/esm/peer/PeerAddressStore.d.ts +1 -1
  247. package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
  248. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  249. package/dist/esm/peer/PeerSet.js +4 -4
  250. package/dist/esm/peer/PeerSet.js.map +1 -1
  251. package/dist/esm/protocol/ChannelManager.d.ts +1 -3
  252. package/dist/esm/protocol/ChannelManager.d.ts.map +1 -1
  253. package/dist/esm/protocol/ChannelManager.js +3 -6
  254. package/dist/esm/protocol/ChannelManager.js.map +1 -1
  255. package/dist/esm/protocol/DeviceCommissioner.d.ts +3 -2
  256. package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
  257. package/dist/esm/protocol/DeviceCommissioner.js +4 -6
  258. package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
  259. package/dist/esm/protocol/ExchangeManager.d.ts +1 -3
  260. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  261. package/dist/esm/protocol/ExchangeManager.js +8 -7
  262. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  263. package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
  264. package/dist/esm/protocol/ExchangeProvider.js +4 -2
  265. package/dist/esm/protocol/ExchangeProvider.js.map +1 -1
  266. package/dist/esm/protocol/MessageChannel.d.ts +17 -4
  267. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  268. package/dist/esm/protocol/MessageChannel.js +12 -3
  269. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  270. package/dist/esm/protocol/MessageExchange.d.ts +0 -6
  271. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  272. package/dist/esm/protocol/MessageExchange.js +7 -7
  273. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  274. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +3 -0
  275. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  276. package/dist/esm/securechannel/SecureChannelMessenger.js +4 -0
  277. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  278. package/dist/esm/securechannel/SecureChannelProtocol.d.ts +0 -1
  279. package/dist/esm/securechannel/SecureChannelProtocol.d.ts.map +1 -1
  280. package/dist/esm/securechannel/SecureChannelProtocol.js +0 -3
  281. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  282. package/dist/esm/session/GroupSession.d.ts +1 -1
  283. package/dist/esm/session/GroupSession.d.ts.map +1 -1
  284. package/dist/esm/session/GroupSession.js +1 -1
  285. package/dist/esm/session/InsecureSession.d.ts +2 -1
  286. package/dist/esm/session/InsecureSession.d.ts.map +1 -1
  287. package/dist/esm/session/InsecureSession.js +3 -2
  288. package/dist/esm/session/InsecureSession.js.map +1 -1
  289. package/dist/esm/session/NodeSession.d.ts +5 -3
  290. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  291. package/dist/esm/session/NodeSession.js +12 -2
  292. package/dist/esm/session/NodeSession.js.map +1 -1
  293. package/dist/esm/session/SessionManager.d.ts +2 -3
  294. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  295. package/dist/esm/session/SessionManager.js +1 -3
  296. package/dist/esm/session/SessionManager.js.map +1 -1
  297. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  298. package/dist/esm/session/case/CaseClient.js +3 -2
  299. package/dist/esm/session/case/CaseClient.js.map +1 -1
  300. package/dist/esm/session/case/CaseServer.js +1 -1
  301. package/dist/esm/session/pase/PaseMessages.js +1 -1
  302. package/package.json +6 -6
  303. package/src/action/Val.ts +5 -0
  304. package/src/action/client/ClientInteraction.ts +178 -90
  305. package/src/action/client/ClientSubscription.ts +18 -0
  306. package/src/action/client/ClientSubscriptionHandler.ts +137 -0
  307. package/src/action/client/ClientSubscriptions.ts +172 -0
  308. package/src/action/client/InputChunk.ts +79 -0
  309. package/src/action/client/ReadScope.ts +107 -0
  310. package/src/action/client/index.ts +5 -0
  311. package/src/action/request/Invoke.ts +11 -2
  312. package/src/action/request/Read.ts +0 -5
  313. package/src/action/request/Subscribe.ts +17 -3
  314. package/src/action/response/SubscribeResult.ts +3 -4
  315. package/src/action/server/AttributeReadResponse.ts +1 -1
  316. package/src/action/server/AttributeSubscriptionResponse.ts +2 -1
  317. package/src/action/server/CommandInvokeResponse.ts +4 -2
  318. package/src/action/server/EventReadResponse.ts +2 -2
  319. package/src/codec/MessageCodec.ts +1 -1
  320. package/src/common/FailsafeContext.ts +0 -1
  321. package/src/fabric/Fabric.ts +4 -1
  322. package/src/fabric/FabricAuthority.ts +29 -1
  323. package/src/groups/FabricGroups.ts +1 -1
  324. package/src/groups/Groups.ts +3 -2
  325. package/src/interaction/FabricAccessControl.ts +1 -1
  326. package/src/interaction/InteractionClient.ts +8 -4
  327. package/src/interaction/InteractionMessenger.ts +20 -13
  328. package/src/mdns/MdnsScanner.ts +5 -6
  329. package/src/peer/ControllerCommissioner.ts +2 -2
  330. package/src/peer/ControllerCommissioningFlow.ts +1 -1
  331. package/src/peer/OperationalPeer.ts +1 -1
  332. package/src/peer/PeerAddress.ts +2 -2
  333. package/src/peer/PeerAddressStore.ts +1 -1
  334. package/src/peer/PeerSet.ts +6 -4
  335. package/src/protocol/ChannelManager.ts +2 -4
  336. package/src/protocol/DeviceCommissioner.ts +4 -8
  337. package/src/protocol/ExchangeManager.ts +9 -7
  338. package/src/protocol/ExchangeProvider.ts +7 -3
  339. package/src/protocol/MessageChannel.ts +19 -4
  340. package/src/protocol/MessageExchange.ts +8 -12
  341. package/src/securechannel/SecureChannelMessenger.ts +4 -0
  342. package/src/securechannel/SecureChannelProtocol.ts +0 -4
  343. package/src/session/GroupSession.ts +1 -1
  344. package/src/session/InsecureSession.ts +3 -1
  345. package/src/session/NodeSession.ts +14 -4
  346. package/src/session/SessionManager.ts +1 -3
  347. package/src/session/case/CaseClient.ts +3 -2
  348. package/src/session/case/CaseServer.ts +1 -1
  349. package/src/session/pase/PaseMessages.ts +1 -1
@@ -62,6 +62,10 @@ export declare namespace Val {
62
62
  * Refresh any internal cache from the referenced container.
63
63
  */
64
64
  refresh(): void;
65
+ /**
66
+ * The key used for storage of attributes and struct properties.
67
+ */
68
+ primaryKey: "id" | "name";
65
69
  /**
66
70
  * The managed value that owns the reference.
67
71
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Val.d.ts","sourceRoot":"","sources":["../../../src/action/Val.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;AAE1B,yBAAiB,GAAG,CAAC;IACjB;;OAEG;IACH,KAAY,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjD;;OAEG;IACH,KAAY,IAAI,GAAG,GAAG,EAAE,CAAC;IAEzB;;OAEG;IACH,KAAY,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,UAAiB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;QAC1C;;WAEG;QACH,KAAK,EAAE,CAAC,CAAC;QAET;;WAEG;QACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErB;;WAEG;QACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAE1B;;WAEG;QACH,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;QAEjC;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;QAE7C;;;;;;;WAOG;QACH,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;QAElC;;WAEG;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB;;WAEG;QACH,KAAK,CAAC,EAAE,CAAC,CAAC;QAEV;;WAEG;QACH,SAAS,CAAC,EAAE,GAAG,CAAC;QAEhB;;WAEG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC;KACtB;IAEM,MAAM,UAAU,eAAuB,CAAC;IAE/C;;;OAGG;IACH,UAAiB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAE,SAAQ,MAAM;QACrG;;;;;;WAMG;QACH,CAAC,UAAU,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1F;CACJ"}
1
+ {"version":3,"file":"Val.d.ts","sourceRoot":"","sources":["../../../src/action/Val.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;AAE1B,yBAAiB,GAAG,CAAC;IACjB;;OAEG;IACH,KAAY,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjD;;OAEG;IACH,KAAY,IAAI,GAAG,GAAG,EAAE,CAAC;IAEzB;;OAEG;IACH,KAAY,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,UAAiB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;QAC1C;;WAEG;QACH,KAAK,EAAE,CAAC,CAAC;QAET;;WAEG;QACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErB;;WAEG;QACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAE1B;;WAEG;QACH,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;QAEjC;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;QAE7C;;;;;;;WAOG;QACH,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;QAElC;;WAEG;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB;;WAEG;QACH,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;QAE1B;;WAEG;QACH,KAAK,CAAC,EAAE,CAAC,CAAC;QAEV;;WAEG;QACH,SAAS,CAAC,EAAE,GAAG,CAAC;QAEhB;;WAEG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC;KACtB;IAEM,MAAM,UAAU,eAAuB,CAAC;IAE/C;;;OAGG;IACH,UAAiB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAE,SAAQ,MAAM;QACrG;;;;;;WAMG;QACH,CAAC,UAAU,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1F;CACJ"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/action/Val.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,IAAU;AAAA,CAAV,CAAUA,SAAV;AAiFI,EAAMA,KAAA,aAAa,OAAO,YAAY;AAAA,GAjFhC;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,IAAU;AAAA,CAAV,CAAUA,SAAV;AAsFI,EAAMA,KAAA,aAAa,OAAO,YAAY;AAAA,GAtFhC;",
5
5
  "names": ["Val"]
6
6
  }
@@ -13,25 +13,27 @@ import { ReadResult } from "#action/response/ReadResult.js";
13
13
  import { SubscribeResult } from "#action/response/SubscribeResult.js";
14
14
  import { WriteResult } from "#action/response/WriteResult.js";
15
15
  import { Environment, Environmental, PromiseQueue } from "#general";
16
- import { SubscriptionClient } from "#interaction/SubscriptionClient.js";
17
16
  import { ExchangeProvider } from "#protocol/ExchangeProvider.js";
18
- export interface ClientInteractableContext {
17
+ import { ClientSubscriptions } from "./ClientSubscriptions.js";
18
+ export interface ClientInteractionContext {
19
19
  exchanges: ExchangeProvider;
20
- subscriptions: SubscriptionClient;
20
+ subscriptions: ClientSubscriptions;
21
21
  queue: PromiseQueue;
22
22
  }
23
+ export declare const DEFAULT_MIN_INTERVAL_FLOOR_SECONDS = 1;
23
24
  /**
24
- * This is a WIP and currently largely a stub.
25
+ * Client-side implementation of the Matter protocol.
25
26
  */
26
27
  export declare class ClientInteraction<SessionT extends InteractionSession = InteractionSession> implements Interactable<SessionT> {
27
28
  #private;
28
- constructor(context: ClientInteractableContext);
29
- get subscriptions(): SubscriptionClient;
29
+ constructor(context: ClientInteractionContext);
30
+ close(): Promise<void>;
31
+ get subscriptions(): ClientSubscriptions;
30
32
  get queue(): PromiseQueue | undefined;
31
33
  static [Environmental.create](env: Environment): ClientInteraction<InteractionSession>;
32
- read(_request: Read, _session?: SessionT): ReadResult;
34
+ read(request: Read, _session?: SessionT): ReadResult;
33
35
  write<T extends Write>(request: T, _session?: SessionT): WriteResult<T>;
34
36
  invoke(request: Invoke, _session?: SessionT): InvokeResult;
35
- subscribe(_request: Subscribe, _session?: SessionT): SubscribeResult;
37
+ subscribe(request: Subscribe, _session?: SessionT): SubscribeResult;
36
38
  }
37
39
  //# sourceMappingURL=ClientInteraction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAuB,YAAY,EAAE,MAAM,UAAU,CAAC;AAEzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,WAAW,yBAAyB;IACtC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,kBAAkB,CAAC;IAClC,KAAK,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CACnF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAMrB,OAAO,EAAE,yBAAyB;IAM9C,IAAI,aAAa,uBAEhB;IAED,IAAI,KAAK,6BAER;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAU9C,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU;IAK/C,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IA6BtE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY;IAuDjE,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;CAIvE"}
1
+ {"version":3,"file":"ClientInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAY,WAAW,EAAE,aAAa,EAAuB,YAAY,EAAE,MAAM,UAAU,CAAC;AAGnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,MAAM,WAAW,wBAAwB;IACrC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,kCAAkC,IAAI,CAAC;AAEpD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CACnF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAQrB,OAAO,EAAE,wBAAwB;IAMvC,KAAK;IAQX,IAAI,aAAa,wBAEhB;IAED,IAAI,KAAK,6BAER;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAUvC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU;IAerD,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IAoCtE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY;IA8D3D,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;CAgD5E"}
@@ -18,28 +18,40 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var ClientInteraction_exports = {};
20
20
  __export(ClientInteraction_exports, {
21
- ClientInteraction: () => ClientInteraction
21
+ ClientInteraction: () => ClientInteraction,
22
+ DEFAULT_MIN_INTERVAL_FLOOR_SECONDS: () => DEFAULT_MIN_INTERVAL_FLOOR_SECONDS
22
23
  });
23
24
  module.exports = __toCommonJS(ClientInteraction_exports);
24
25
  var import_general = require("#general");
25
26
  var import_InteractionMessenger = require("#interaction/InteractionMessenger.js");
26
- var import_SubscriptionClient = require("#interaction/SubscriptionClient.js");
27
27
  var import_InteractionQueue = require("#peer/InteractionQueue.js");
28
28
  var import_ExchangeProvider = require("#protocol/ExchangeProvider.js");
29
+ var import_types = require("#types");
30
+ var import_ClientSubscriptions = require("./ClientSubscriptions.js");
31
+ var import_InputChunk = require("./InputChunk.js");
29
32
  /**
30
33
  * @license
31
34
  * Copyright 2022-2025 Matter.js Authors
32
35
  * SPDX-License-Identifier: Apache-2.0
33
36
  */
37
+ const DEFAULT_MIN_INTERVAL_FLOOR_SECONDS = 1;
34
38
  class ClientInteraction {
35
39
  #exchanges;
36
40
  #subscriptions;
37
41
  #queue;
42
+ #interactions = new import_general.BasicSet();
43
+ #closed = false;
38
44
  constructor(context) {
39
45
  this.#exchanges = context.exchanges;
40
46
  this.#subscriptions = context.subscriptions;
41
47
  this.#queue = context.queue;
42
48
  }
49
+ async close() {
50
+ this.#closed = true;
51
+ while (this.#interactions.size) {
52
+ await this.#interactions.deleted;
53
+ }
54
+ }
43
55
  get subscriptions() {
44
56
  return this.#subscriptions;
45
57
  }
@@ -49,97 +61,157 @@ class ClientInteraction {
49
61
  static [import_general.Environmental.create](env) {
50
62
  const instance = new ClientInteraction({
51
63
  exchanges: env.get(import_ExchangeProvider.ExchangeProvider),
52
- subscriptions: env.get(import_SubscriptionClient.SubscriptionClient),
64
+ subscriptions: env.get(import_ClientSubscriptions.ClientSubscriptions),
53
65
  queue: env.get(import_InteractionQueue.InteractionQueue)
54
66
  });
55
67
  env.set(ClientInteraction, instance);
56
68
  return instance;
57
69
  }
58
- read(_request, _session) {
59
- throw new import_general.NotImplementedError();
70
+ async *read(request, _session) {
71
+ try {
72
+ this.#begin(request);
73
+ const messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
74
+ await messenger.sendReadRequest(request);
75
+ for await (const report of messenger.readDataReports()) {
76
+ yield (0, import_InputChunk.InputChunk)(report);
77
+ }
78
+ } finally {
79
+ this.#end(request);
80
+ }
60
81
  }
61
82
  async write(request, _session) {
62
- const messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
63
- const response = await messenger.sendWriteCommand(request);
64
- if (request.suppressResponse) {
65
- return void 0;
66
- }
67
- if (!response || !response.writeResponses?.length) {
68
- return new Array();
69
- } else {
70
- return response.writeResponses.map(
71
- ({
72
- path: { nodeId, endpointId, clusterId, attributeId, listIndex },
73
- status: { status, clusterStatus }
74
- }) => ({
75
- kind: "attr-status",
76
- path: {
77
- nodeId,
78
- endpointId,
79
- clusterId,
80
- attributeId,
81
- listIndex
82
- },
83
- status,
84
- clusterStatus
85
- })
86
- );
83
+ let messenger;
84
+ try {
85
+ this.#begin(request);
86
+ messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
87
+ const response = await messenger.sendWriteCommand(request);
88
+ if (request.suppressResponse) {
89
+ return void 0;
90
+ }
91
+ if (!response || !response.writeResponses?.length) {
92
+ return new Array();
93
+ } else {
94
+ return response.writeResponses.map(
95
+ ({
96
+ path: { nodeId, endpointId, clusterId, attributeId, listIndex },
97
+ status: { status, clusterStatus }
98
+ }) => ({
99
+ kind: "attr-status",
100
+ path: {
101
+ nodeId,
102
+ endpointId,
103
+ clusterId,
104
+ attributeId,
105
+ listIndex
106
+ },
107
+ status,
108
+ clusterStatus
109
+ })
110
+ );
111
+ }
112
+ } finally {
113
+ await messenger?.close();
114
+ this.#end(request);
87
115
  }
88
116
  }
89
117
  async *invoke(request, _session) {
90
- const messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
91
- const result = await messenger.sendInvokeCommand(request);
92
- if (!request.suppressResponse) {
93
- if (result && result.invokeResponses?.length) {
94
- const chunk = result.invokeResponses.map((response) => {
95
- if (response.command !== void 0) {
96
- const {
97
- commandPath: { endpointId, clusterId, commandId },
98
- commandRef,
99
- commandFields
100
- } = response.command;
101
- const res = {
102
- kind: "cmd-response",
103
- path: {
104
- endpointId,
105
- clusterId,
106
- commandId
107
- },
108
- commandRef,
109
- data: commandFields
110
- // TODO add decoding
111
- };
112
- return res;
113
- } else if (response.status !== void 0) {
114
- const {
115
- commandPath: { endpointId, clusterId, commandId },
116
- commandRef,
117
- status: { status, clusterStatus }
118
- } = response.status;
119
- const res = {
120
- kind: "cmd-status",
121
- path: {
122
- endpointId,
123
- clusterId,
124
- commandId
125
- },
126
- commandRef,
127
- status,
128
- clusterStatus
129
- };
130
- return res;
131
- } else {
132
- return void 0;
133
- }
134
- }).filter((r) => r !== void 0);
135
- yield chunk;
136
- } else {
137
- yield [];
118
+ let messenger;
119
+ try {
120
+ this.#begin(request);
121
+ messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
122
+ const result = await messenger.sendInvokeCommand(request);
123
+ if (!request.suppressResponse) {
124
+ if (result && result.invokeResponses?.length) {
125
+ const chunk = result.invokeResponses.map((response) => {
126
+ if (response.command !== void 0) {
127
+ const {
128
+ commandPath: { endpointId, clusterId, commandId },
129
+ commandRef,
130
+ commandFields
131
+ } = response.command;
132
+ const res = {
133
+ kind: "cmd-response",
134
+ path: {
135
+ endpointId,
136
+ clusterId,
137
+ commandId
138
+ },
139
+ commandRef,
140
+ data: commandFields
141
+ // TODO add decoding
142
+ };
143
+ return res;
144
+ } else if (response.status !== void 0) {
145
+ const {
146
+ commandPath: { endpointId, clusterId, commandId },
147
+ commandRef,
148
+ status: { status, clusterStatus }
149
+ } = response.status;
150
+ const res = {
151
+ kind: "cmd-status",
152
+ path: {
153
+ endpointId,
154
+ clusterId,
155
+ commandId
156
+ },
157
+ commandRef,
158
+ status,
159
+ clusterStatus
160
+ };
161
+ return res;
162
+ } else {
163
+ return void 0;
164
+ }
165
+ }).filter((r) => r !== void 0);
166
+ yield chunk;
167
+ } else {
168
+ yield [];
169
+ }
138
170
  }
171
+ } finally {
172
+ await messenger?.close();
173
+ this.#end(request);
139
174
  }
140
175
  }
141
- subscribe(_request, _session) {
142
- throw new import_general.NotImplementedError();
176
+ async subscribe(request, _session) {
177
+ let messenger;
178
+ try {
179
+ this.#begin(request);
180
+ messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
181
+ await messenger.sendSubscribeRequest({
182
+ ...request,
183
+ minIntervalFloorSeconds: DEFAULT_MIN_INTERVAL_FLOOR_SECONDS,
184
+ maxIntervalCeilingSeconds: DEFAULT_MIN_INTERVAL_FLOOR_SECONDS
185
+ });
186
+ await this.#handleSubscriptionResponse(request, readChunks(messenger));
187
+ const responseMessage = await messenger.nextMessage(import_InteractionMessenger.MessageType.SubscribeResponse);
188
+ const response = import_types.TlvSubscribeResponse.decode(responseMessage.payload);
189
+ return this.#subscriptions.add(request, response);
190
+ } finally {
191
+ await messenger?.close();
192
+ this.#end(request);
193
+ }
194
+ }
195
+ async #handleSubscriptionResponse(request, result) {
196
+ if (request.updated) {
197
+ await request.updated(result);
198
+ } else {
199
+ for await (const _chunk of result) ;
200
+ }
201
+ }
202
+ #begin(request) {
203
+ if (this.#closed) {
204
+ throw new import_general.ImplementationError("Client interaction unavailable after close");
205
+ }
206
+ this.#interactions.add(request);
207
+ }
208
+ #end(request) {
209
+ this.#interactions.delete(request);
210
+ }
211
+ }
212
+ async function* readChunks(messenger) {
213
+ for await (const report of messenger.readDataReports()) {
214
+ yield (0, import_InputChunk.InputChunk)(report);
143
215
  }
144
216
  }
145
217
  //# sourceMappingURL=ClientInteraction.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/action/client/ClientInteraction.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Subscribe } from "#action/request/Subscribe.js";
7
+ import { ActiveSubscription } from "#action/response/SubscribeResult.js";
8
+ /**
9
+ * The client view of an established Matter subscription.
10
+ */
11
+ export interface ClientSubscription extends ActiveSubscription {
12
+ request: Subscribe;
13
+ timeoutAtMs?: number;
14
+ isClosed: boolean;
15
+ isReading: boolean;
16
+ }
17
+ //# sourceMappingURL=ClientSubscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientSubscription.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscription.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC1D,OAAO,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var ClientSubscription_exports = {};
16
+ module.exports = __toCommonJS(ClientSubscription_exports);
17
+ /**
18
+ * @license
19
+ * Copyright 2022-2025 Matter.js Authors
20
+ * SPDX-License-Identifier: Apache-2.0
21
+ */
22
+ //# sourceMappingURL=ClientSubscription.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/action/client/ClientSubscription.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MessageExchange } from "#protocol/MessageExchange.js";
7
+ import { ProtocolHandler } from "#protocol/ProtocolHandler.js";
8
+ import { ClientSubscriptions } from "./ClientSubscriptions.js";
9
+ /**
10
+ * A protocol handler that informs {@link ClientSubscriptions} of new exchanges.
11
+ */
12
+ export declare class ClientSubscriptionHandler implements ProtocolHandler {
13
+ #private;
14
+ id: number;
15
+ requiresSecureSession: boolean;
16
+ constructor(subscriptions: ClientSubscriptions);
17
+ onNewExchange(exchange: MessageExchange): Promise<void>;
18
+ close(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=ClientSubscriptionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientSubscriptionHandler.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscriptionHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D;;GAEG;AACH,qBAAa,yBAA0B,YAAW,eAAe;;IAC7D,EAAE,SAA2B;IAC7B,qBAAqB,UAAQ;gBAIjB,aAAa,EAAE,mBAAmB;IAIxC,aAAa,CAAC,QAAQ,EAAE,eAAe;IAuDvC,KAAK;CACd"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ClientSubscriptionHandler_exports = {};
20
+ __export(ClientSubscriptionHandler_exports, {
21
+ ClientSubscriptionHandler: () => ClientSubscriptionHandler
22
+ });
23
+ module.exports = __toCommonJS(ClientSubscriptionHandler_exports);
24
+ var import_DecodedDataReport = require("#interaction/DecodedDataReport.js");
25
+ var import_InteractionMessenger = require("#interaction/InteractionMessenger.js");
26
+ var import_types = require("#types");
27
+ var import_general = require("@matter/general");
28
+ var import_InputChunk = require("./InputChunk.js");
29
+ /**
30
+ * @license
31
+ * Copyright 2022-2025 Matter.js Authors
32
+ * SPDX-License-Identifier: Apache-2.0
33
+ */
34
+ const logger = import_general.Logger.get("ClientSubscriptionHandler");
35
+ class ClientSubscriptionHandler {
36
+ id = import_types.INTERACTION_PROTOCOL_ID;
37
+ requiresSecureSession = true;
38
+ #subscriptions;
39
+ constructor(subscriptions) {
40
+ this.#subscriptions = subscriptions;
41
+ }
42
+ async onNewExchange(exchange) {
43
+ const messenger = new import_InteractionMessenger.IncomingInteractionClientMessenger(exchange);
44
+ const reports = messenger.readDataReports();
45
+ const initialIteration = await reports.next();
46
+ if (initialIteration.done) {
47
+ throw new import_general.InternalError("Exchange initiated with no initial message");
48
+ }
49
+ const initialReport = initialIteration.value;
50
+ const { subscriptionId } = initialReport;
51
+ if (subscriptionId === void 0) {
52
+ logger.debug("Ignoring unsolicited data report with no subscription ID");
53
+ await sendInvalid(messenger, void 0);
54
+ return;
55
+ }
56
+ const subscription = this.#subscriptions.get(subscriptionId);
57
+ if (subscription === void 0) {
58
+ logger.debug("Ignoring data report for unknown subscription ID", import_general.Diagnostic.strong(subscriptionId));
59
+ await sendInvalid(messenger, subscriptionId);
60
+ return;
61
+ }
62
+ if (!initialReport.attributeReports?.length && !initialReport.eventReports?.length) {
63
+ subscription.timeoutAtMs = void 0;
64
+ this.#subscriptions.resetTimer();
65
+ await exchange.close();
66
+ return;
67
+ }
68
+ try {
69
+ subscription.isReading = true;
70
+ if (subscription.request.updated) {
71
+ await subscription.request.updated(processReports(initialReport, reports, messenger));
72
+ } else {
73
+ for await (const _chunk of reports) ;
74
+ }
75
+ } finally {
76
+ subscription.isReading = false;
77
+ subscription.timeoutAtMs = void 0;
78
+ this.#subscriptions.resetTimer();
79
+ await exchange.close();
80
+ }
81
+ }
82
+ async close() {
83
+ }
84
+ }
85
+ async function sendInvalid(messenger, subscriptionId) {
86
+ await messenger.sendStatus(import_types.Status.InvalidSubscription, {
87
+ multipleMessageInteraction: true,
88
+ logContext: {
89
+ subId: subscriptionId
90
+ }
91
+ });
92
+ await messenger.close();
93
+ }
94
+ async function* processReports(initialReport, otherReports, messenger) {
95
+ yield (0, import_InputChunk.InputChunk)(initialReport);
96
+ const { subscriptionId } = initialReport;
97
+ for await (const report of otherReports) {
98
+ const decoded = (0, import_DecodedDataReport.DecodedDataReport)(report);
99
+ if (decoded.subscriptionId === void 0) {
100
+ logger.debug(
101
+ "Ignoring data report for incorrect subscription id",
102
+ import_general.Diagnostic.strong(decoded.subscriptionId)
103
+ );
104
+ await sendInvalid(messenger, decoded.subscriptionId);
105
+ }
106
+ if (decoded.subscriptionId !== subscriptionId) {
107
+ logger.debug(
108
+ "Ignoring data report for incorrect subscription id",
109
+ import_general.Diagnostic.strong(decoded.subscriptionId)
110
+ );
111
+ await sendInvalid(messenger, decoded.subscriptionId);
112
+ continue;
113
+ }
114
+ yield (0, import_InputChunk.InputChunk)(report);
115
+ }
116
+ }
117
+ //# sourceMappingURL=ClientSubscriptionHandler.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/action/client/ClientSubscriptionHandler.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,+BAAkC;AAClC,kCAAmD;AAInD,mBAA4D;AAC5D,qBAAkD;AAElD,wBAA2B;AAf3B;AAAA;AAAA;AAAA;AAAA;AAiBA,MAAM,SAAS,sBAAO,IAAI,2BAA2B;AAK9C,MAAM,0BAAqD;AAAA,EAC9D,KAAK;AAAA,EACL,wBAAwB;AAAA,EAExB;AAAA,EAEA,YAAY,eAAoC;AAC5C,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAEA,MAAM,cAAc,UAA2B;AAC3C,UAAM,YAAY,IAAI,+DAAmC,QAAQ;AAEjE,UAAM,UAAU,UAAU,gBAAgB;AAE1C,UAAM,mBAAmB,MAAM,QAAQ,KAAK;AAC5C,QAAI,iBAAiB,MAAM;AACvB,YAAM,IAAI,6BAAc,4CAA4C;AAAA,IACxE;AACA,UAAM,gBAAgB,iBAAiB;AAGvC,UAAM,EAAE,eAAe,IAAI;AAC3B,QAAI,mBAAmB,QAAW;AAC9B,aAAO,MAAM,0DAA0D;AACvE,YAAM,YAAY,WAAW,MAAS;AACtC;AAAA,IACJ;AAGA,UAAM,eAAe,KAAK,eAAe,IAAI,cAAc;AAC3D,QAAI,iBAAiB,QAAW;AAC5B,aAAO,MAAM,oDAAoD,0BAAW,OAAO,cAAc,CAAC;AAClG,YAAM,YAAY,WAAW,cAAc;AAC3C;AAAA,IACJ;AAGA,QAAI,CAAC,cAAc,kBAAkB,UAAU,CAAC,cAAc,cAAc,QAAQ;AAChF,mBAAa,cAAc;AAC3B,WAAK,eAAe,WAAW;AAC/B,YAAM,SAAS,MAAM;AACrB;AAAA,IACJ;AAGA,QAAI;AACA,mBAAa,YAAY;AAEzB,UAAI,aAAa,QAAQ,SAAS;AAC9B,cAAM,aAAa,QAAQ,QAAQ,eAAe,eAAe,SAAS,SAAS,CAAC;AAAA,MACxF,OAAO;AAIH,yBAAiB,UAAU,QAAQ;AAAA,MACvC;AAAA,IACJ,UAAE;AACE,mBAAa,YAAY;AACzB,mBAAa,cAAc;AAC3B,WAAK,eAAe,WAAW;AAC/B,YAAM,SAAS,MAAM;AAAA,IACzB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ;AAAA,EAAC;AACnB;AAEA,eAAe,YAAY,WAA+C,gBAAiC;AACvG,QAAM,UAAU,WAAW,oBAAO,qBAAqB;AAAA,IACnD,4BAA4B;AAAA,IAC5B,YAAY;AAAA,MACR,OAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM;AAC1B;AAOA,gBAAgB,eACZ,eACA,cACA,WACU;AACV,YAAM,8BAAW,aAAa;AAE9B,QAAM,EAAE,eAAe,IAAI;AAE3B,mBAAiB,UAAU,cAAc;AACrC,UAAM,cAAU,4CAAkB,MAAM;AAExC,QAAI,QAAQ,mBAAmB,QAAW;AACtC,aAAO;AAAA,QACH;AAAA,QACA,0BAAW,OAAO,QAAQ,cAAc;AAAA,MAC5C;AACA,YAAM,YAAY,WAAW,QAAQ,cAAc;AAAA,IACvD;AAEA,QAAI,QAAQ,mBAAmB,gBAAgB;AAC3C,aAAO;AAAA,QACH;AAAA,QACA,0BAAW,OAAO,QAAQ,cAAc;AAAA,MAC5C;AACA,YAAM,YAAY,WAAW,QAAQ,cAAc;AACnD;AAAA,IACJ;AAEA,cAAM,8BAAW,MAAM;AAAA,EAC3B;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Subscribe } from "#action/request/Subscribe.js";
7
+ import { ReadResult } from "#action/response/ReadResult.js";
8
+ import { ActiveSubscription } from "#action/response/SubscribeResult.js";
9
+ import { Environment, Environmental } from "#general";
10
+ import { SubscriptionId } from "#interaction/Subscription.js";
11
+ import { SubscribeResponse } from "#types";
12
+ import { ClientSubscription } from "./ClientSubscription.js";
13
+ /**
14
+ * A managed set of {@link ClientSubscription} instances.
15
+ */
16
+ export declare class ClientSubscriptions {
17
+ #private;
18
+ static [Environmental.create](env: Environment): ClientSubscriptions;
19
+ /**
20
+ * Register an active subscription.
21
+ */
22
+ add(request: Subscribe, response: SubscribeResponse): ActiveSubscription;
23
+ /**
24
+ * Retrieve a subscription by ID.
25
+ */
26
+ get(id: SubscriptionId): ClientSubscription | undefined;
27
+ /**
28
+ * Iterate over active subscriptions.
29
+ */
30
+ [Symbol.iterator](): SetIterator<ClientSubscription>;
31
+ /**
32
+ * Terminate all subscriptions.
33
+ */
34
+ close(): Promise<void>;
35
+ /**
36
+ * Restart the timeout timer for the current set of active subscriptions.
37
+ */
38
+ resetTimer(): void;
39
+ }
40
+ export declare namespace ClientSubscriptions {
41
+ interface Listener {
42
+ (reports: AsyncIterable<ReadResult.Chunk>): Promise<void>;
43
+ }
44
+ }
45
+ //# sourceMappingURL=ClientSubscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientSubscriptions.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscriptions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAIH,WAAW,EACX,aAAa,EAKhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D;;GAEG;AACH,qBAAa,mBAAmB;;IAK5B,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB;IAgBxE;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,cAAc;IAItB;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB;;OAEG;IACG,KAAK;IAUX;;OAEG;IACH,UAAU;CAwEb;AAMD,yBAAiB,mBAAmB,CAAC;IACjC,UAAiB,QAAQ;QACrB,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D;CACJ"}