@matter/protocol 0.16.0-alpha.0-20251203-aaf94bca8 → 0.16.0-alpha.0-20251207-37e501b18

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 (570) hide show
  1. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  2. package/dist/cjs/action/client/ClientInteraction.js +82 -34
  3. package/dist/cjs/action/client/ClientInteraction.js.map +2 -2
  4. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts +10 -5
  5. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts.map +1 -1
  6. package/dist/cjs/action/client/subscription/ClientSubscription.js +21 -1
  7. package/dist/cjs/action/client/subscription/ClientSubscription.js.map +2 -2
  8. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -3
  9. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  10. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts +4 -2
  11. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
  12. package/dist/cjs/action/client/subscription/ClientSubscriptions.js +68 -8
  13. package/dist/cjs/action/client/subscription/ClientSubscriptions.js.map +1 -1
  14. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +0 -1
  15. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  16. package/dist/cjs/action/client/subscription/PeerSubscription.js +1 -2
  17. package/dist/cjs/action/client/subscription/PeerSubscription.js.map +1 -1
  18. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +0 -2
  19. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  20. package/dist/cjs/action/client/subscription/SustainedSubscription.js +2 -4
  21. package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +1 -1
  22. package/dist/cjs/action/request/Invoke.js +2 -2
  23. package/dist/cjs/action/request/Invoke.js.map +1 -1
  24. package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -1
  25. package/dist/cjs/action/server/AttributeReadResponse.js +78 -25
  26. package/dist/cjs/action/server/AttributeReadResponse.js.map +1 -1
  27. package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
  28. package/dist/cjs/action/server/AttributeWriteResponse.js +70 -17
  29. package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
  30. package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
  31. package/dist/cjs/action/server/CommandInvokeResponse.js +83 -30
  32. package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
  33. package/dist/cjs/action/server/DataResponse.d.ts +1 -0
  34. package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
  35. package/dist/cjs/action/server/DataResponse.js +3 -0
  36. package/dist/cjs/action/server/DataResponse.js.map +1 -1
  37. package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
  38. package/dist/cjs/action/server/ServerInteraction.js +4 -4
  39. package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
  40. package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
  41. package/dist/cjs/advertisement/Advertisement.js +66 -14
  42. package/dist/cjs/advertisement/Advertisement.js.map +1 -1
  43. package/dist/cjs/advertisement/Advertiser.d.ts +4 -1
  44. package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -1
  45. package/dist/cjs/advertisement/Advertiser.js +63 -2
  46. package/dist/cjs/advertisement/Advertiser.js.map +1 -1
  47. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +6 -1
  48. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  49. package/dist/cjs/advertisement/ble/BleAdvertiser.js +1 -1
  50. package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
  51. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
  52. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  53. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +1 -1
  54. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  55. package/dist/cjs/certificate/kinds/definitions/asn.js +1 -1
  56. package/dist/cjs/certificate/kinds/definitions/asn.js.map +1 -1
  57. package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -1
  58. package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
  59. package/dist/cjs/cluster/client/AttributeClient.js +2 -2
  60. package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
  61. package/dist/cjs/codec/MessageCodec.d.ts +8 -1
  62. package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
  63. package/dist/cjs/codec/MessageCodec.js +38 -28
  64. package/dist/cjs/codec/MessageCodec.js.map +2 -2
  65. package/dist/cjs/common/FailsafeContext.d.ts +8 -9
  66. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  67. package/dist/cjs/common/FailsafeContext.js +27 -33
  68. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  69. package/dist/cjs/common/FailsafeTimer.d.ts +4 -3
  70. package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
  71. package/dist/cjs/common/FailsafeTimer.js +4 -4
  72. package/dist/cjs/common/FailsafeTimer.js.map +1 -1
  73. package/dist/cjs/common/Mark.d.ts +17 -0
  74. package/dist/cjs/common/Mark.d.ts.map +1 -0
  75. package/dist/cjs/{peer/OperationalPeer.js → common/Mark.js} +19 -3
  76. package/dist/cjs/common/Mark.js.map +6 -0
  77. package/dist/cjs/common/index.d.ts +1 -0
  78. package/dist/cjs/common/index.d.ts.map +1 -1
  79. package/dist/cjs/common/index.js +1 -0
  80. package/dist/cjs/common/index.js.map +1 -1
  81. package/dist/cjs/fabric/Fabric.d.ts +16 -8
  82. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  83. package/dist/cjs/fabric/Fabric.js +35 -18
  84. package/dist/cjs/fabric/Fabric.js.map +1 -1
  85. package/dist/cjs/fabric/FabricAuthority.d.ts +2 -2
  86. package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
  87. package/dist/cjs/fabric/FabricAuthority.js +3 -3
  88. package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
  89. package/dist/cjs/fabric/FabricManager.d.ts +10 -14
  90. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  91. package/dist/cjs/fabric/FabricManager.js +44 -40
  92. package/dist/cjs/fabric/FabricManager.js.map +2 -2
  93. package/dist/cjs/index.d.ts +1 -1
  94. package/dist/cjs/index.d.ts.map +1 -1
  95. package/dist/cjs/index.js +1 -1
  96. package/dist/cjs/index.js.map +1 -1
  97. package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
  98. package/dist/cjs/interaction/InteractionClient.d.ts +2 -2
  99. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  100. package/dist/cjs/interaction/InteractionClient.js +39 -22
  101. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  102. package/dist/cjs/interaction/InteractionMessenger.d.ts +2 -2
  103. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  104. package/dist/cjs/interaction/InteractionMessenger.js +35 -27
  105. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  106. package/dist/cjs/interaction/Subscription.d.ts +16 -37
  107. package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
  108. package/dist/cjs/interaction/Subscription.js +15 -68
  109. package/dist/cjs/interaction/Subscription.js.map +2 -2
  110. package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
  111. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  112. package/dist/cjs/interaction/SubscriptionClient.js +2 -2
  113. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  114. package/dist/cjs/mdns/MdnsClient.d.ts +10 -10
  115. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
  116. package/dist/cjs/mdns/MdnsClient.js +165 -80
  117. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  118. package/dist/cjs/mdns/MdnsServer.d.ts +2 -2
  119. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
  120. package/dist/cjs/mdns/MdnsServer.js +173 -94
  121. package/dist/cjs/mdns/MdnsServer.js.map +2 -2
  122. package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
  123. package/dist/cjs/mdns/MdnsService.js +3 -2
  124. package/dist/cjs/mdns/MdnsService.js.map +1 -1
  125. package/dist/cjs/mdns/MdnsSocket.d.ts +3 -2
  126. package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -1
  127. package/dist/cjs/mdns/MdnsSocket.js +2 -1
  128. package/dist/cjs/mdns/MdnsSocket.js.map +1 -1
  129. package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
  130. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  131. package/dist/cjs/peer/ControllerCommissioner.js +26 -28
  132. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  133. package/dist/cjs/peer/ControllerDiscovery.d.ts +1 -1
  134. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
  135. package/dist/cjs/peer/ControllerDiscovery.js +3 -3
  136. package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
  137. package/dist/cjs/peer/Peer.d.ts +57 -0
  138. package/dist/cjs/peer/Peer.d.ts.map +1 -0
  139. package/dist/cjs/peer/Peer.js +182 -0
  140. package/dist/cjs/peer/Peer.js.map +6 -0
  141. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
  142. package/dist/cjs/peer/PeerAddress.js +5 -2
  143. package/dist/cjs/peer/PeerAddress.js.map +1 -1
  144. package/dist/cjs/peer/PeerAddressStore.d.ts +3 -3
  145. package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
  146. package/{src/peer/OperationalPeer.ts → dist/cjs/peer/PeerDescriptor.d.ts} +14 -12
  147. package/dist/cjs/peer/PeerDescriptor.d.ts.map +1 -0
  148. package/dist/cjs/peer/PeerDescriptor.js +71 -0
  149. package/dist/cjs/peer/PeerDescriptor.js.map +6 -0
  150. package/dist/cjs/peer/PeerSet.d.ts +23 -26
  151. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  152. package/dist/cjs/peer/PeerSet.js +173 -173
  153. package/dist/cjs/peer/PeerSet.js.map +2 -2
  154. package/dist/cjs/peer/index.d.ts +1 -1
  155. package/dist/cjs/peer/index.d.ts.map +1 -1
  156. package/dist/cjs/peer/index.js +1 -1
  157. package/dist/cjs/peer/index.js.map +1 -1
  158. package/dist/cjs/protocol/DeviceAdvertiser.js +4 -4
  159. package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
  160. package/dist/cjs/protocol/ExchangeManager.d.ts +6 -9
  161. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  162. package/dist/cjs/protocol/ExchangeManager.js +306 -246
  163. package/dist/cjs/protocol/ExchangeManager.js.map +2 -2
  164. package/dist/cjs/protocol/ExchangeProvider.d.ts +9 -11
  165. package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
  166. package/dist/cjs/protocol/ExchangeProvider.js +79 -32
  167. package/dist/cjs/protocol/ExchangeProvider.js.map +2 -2
  168. package/dist/cjs/protocol/MessageChannel.d.ts +6 -7
  169. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  170. package/dist/cjs/protocol/MessageChannel.js +14 -16
  171. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  172. package/dist/cjs/protocol/MessageCounter.d.ts +4 -4
  173. package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -1
  174. package/dist/cjs/protocol/MessageCounter.js +7 -7
  175. package/dist/cjs/protocol/MessageCounter.js.map +1 -1
  176. package/dist/cjs/protocol/MessageExchange.d.ts +31 -20
  177. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  178. package/dist/cjs/protocol/MessageExchange.js +316 -231
  179. package/dist/cjs/protocol/MessageExchange.js.map +2 -2
  180. package/dist/cjs/protocol/ProtocolMocks.d.ts +100 -0
  181. package/dist/cjs/protocol/ProtocolMocks.d.ts.map +1 -0
  182. package/dist/cjs/protocol/ProtocolMocks.js +237 -0
  183. package/dist/cjs/protocol/ProtocolMocks.js.map +6 -0
  184. package/dist/cjs/protocol/errors.d.ts +35 -0
  185. package/dist/cjs/protocol/errors.d.ts.map +1 -0
  186. package/dist/cjs/protocol/errors.js +50 -0
  187. package/dist/cjs/protocol/errors.js.map +6 -0
  188. package/dist/cjs/protocol/index.d.ts +2 -1
  189. package/dist/cjs/protocol/index.d.ts.map +1 -1
  190. package/dist/cjs/protocol/index.js +2 -1
  191. package/dist/cjs/protocol/index.js.map +1 -1
  192. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -0
  193. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  194. package/dist/cjs/securechannel/SecureChannelMessenger.js +3 -0
  195. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  196. package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -2
  197. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  198. package/dist/cjs/session/GroupSession.d.ts +21 -10
  199. package/dist/cjs/session/GroupSession.d.ts.map +1 -1
  200. package/dist/cjs/session/GroupSession.js +37 -12
  201. package/dist/cjs/session/GroupSession.js.map +1 -1
  202. package/dist/cjs/session/NodeSession.d.ts +56 -50
  203. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  204. package/dist/cjs/session/NodeSession.js +95 -103
  205. package/dist/cjs/session/NodeSession.js.map +1 -1
  206. package/dist/cjs/session/SecureSession.d.ts +4 -4
  207. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  208. package/dist/cjs/session/SecureSession.js +1 -1
  209. package/dist/cjs/session/SecureSession.js.map +1 -1
  210. package/dist/cjs/session/Session.d.ts +82 -66
  211. package/dist/cjs/session/Session.d.ts.map +1 -1
  212. package/dist/cjs/session/Session.js +218 -45
  213. package/dist/cjs/session/Session.js.map +1 -1
  214. package/dist/cjs/session/SessionManager.d.ts +33 -36
  215. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  216. package/dist/cjs/session/SessionManager.js +112 -150
  217. package/dist/cjs/session/SessionManager.js.map +1 -1
  218. package/dist/cjs/session/SessionParameters.d.ts +87 -0
  219. package/dist/cjs/session/SessionParameters.d.ts.map +1 -0
  220. package/dist/cjs/session/SessionParameters.js +81 -0
  221. package/dist/cjs/session/SessionParameters.js.map +6 -0
  222. package/dist/{esm/session/InsecureSession.d.ts → cjs/session/UnsecuredSession.d.ts} +18 -16
  223. package/dist/cjs/session/UnsecuredSession.d.ts.map +1 -0
  224. package/dist/cjs/session/{InsecureSession.js → UnsecuredSession.js} +21 -21
  225. package/dist/cjs/session/UnsecuredSession.js.map +6 -0
  226. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  227. package/dist/cjs/session/case/CaseClient.js +6 -4
  228. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  229. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  230. package/dist/cjs/session/case/CaseServer.js +14 -10
  231. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  232. package/dist/cjs/session/index.d.ts +2 -1
  233. package/dist/cjs/session/index.d.ts.map +1 -1
  234. package/dist/cjs/session/index.js +2 -1
  235. package/dist/cjs/session/index.js.map +1 -1
  236. package/dist/cjs/session/pase/PaseClient.d.ts +3 -3
  237. package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
  238. package/dist/cjs/session/pase/PaseClient.js +5 -3
  239. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  240. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  241. package/dist/cjs/session/pase/PaseServer.js +13 -13
  242. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  243. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  244. package/dist/esm/action/client/ClientInteraction.js +82 -34
  245. package/dist/esm/action/client/ClientInteraction.js.map +2 -2
  246. package/dist/esm/action/client/subscription/ClientSubscription.d.ts +10 -5
  247. package/dist/esm/action/client/subscription/ClientSubscription.d.ts.map +1 -1
  248. package/dist/esm/action/client/subscription/ClientSubscription.js +22 -2
  249. package/dist/esm/action/client/subscription/ClientSubscription.js.map +2 -2
  250. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -3
  251. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  252. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts +4 -2
  253. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
  254. package/dist/esm/action/client/subscription/ClientSubscriptions.js +68 -8
  255. package/dist/esm/action/client/subscription/ClientSubscriptions.js.map +1 -1
  256. package/dist/esm/action/client/subscription/PeerSubscription.d.ts +0 -1
  257. package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  258. package/dist/esm/action/client/subscription/PeerSubscription.js +1 -2
  259. package/dist/esm/action/client/subscription/PeerSubscription.js.map +1 -1
  260. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +0 -2
  261. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  262. package/dist/esm/action/client/subscription/SustainedSubscription.js +2 -4
  263. package/dist/esm/action/client/subscription/SustainedSubscription.js.map +1 -1
  264. package/dist/esm/action/request/Invoke.js +2 -2
  265. package/dist/esm/action/request/Invoke.js.map +1 -1
  266. package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -1
  267. package/dist/esm/action/server/AttributeReadResponse.js +78 -25
  268. package/dist/esm/action/server/AttributeReadResponse.js.map +1 -1
  269. package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
  270. package/dist/esm/action/server/AttributeWriteResponse.js +70 -17
  271. package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
  272. package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
  273. package/dist/esm/action/server/CommandInvokeResponse.js +83 -30
  274. package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
  275. package/dist/esm/action/server/DataResponse.d.ts +1 -0
  276. package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
  277. package/dist/esm/action/server/DataResponse.js +3 -0
  278. package/dist/esm/action/server/DataResponse.js.map +1 -1
  279. package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
  280. package/dist/esm/action/server/ServerInteraction.js +4 -4
  281. package/dist/esm/action/server/ServerInteraction.js.map +1 -1
  282. package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
  283. package/dist/esm/advertisement/Advertisement.js +66 -14
  284. package/dist/esm/advertisement/Advertisement.js.map +1 -1
  285. package/dist/esm/advertisement/Advertiser.d.ts +4 -1
  286. package/dist/esm/advertisement/Advertiser.d.ts.map +1 -1
  287. package/dist/esm/advertisement/Advertiser.js +63 -2
  288. package/dist/esm/advertisement/Advertiser.js.map +1 -1
  289. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +6 -1
  290. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  291. package/dist/esm/advertisement/ble/BleAdvertiser.js +1 -1
  292. package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
  293. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
  294. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  295. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +1 -1
  296. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  297. package/dist/esm/certificate/kinds/definitions/asn.js +2 -2
  298. package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
  299. package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -1
  300. package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
  301. package/dist/esm/cluster/client/AttributeClient.js +1 -1
  302. package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
  303. package/dist/esm/codec/MessageCodec.d.ts +8 -1
  304. package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
  305. package/dist/esm/codec/MessageCodec.js +39 -28
  306. package/dist/esm/codec/MessageCodec.js.map +2 -2
  307. package/dist/esm/common/FailsafeContext.d.ts +8 -9
  308. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  309. package/dist/esm/common/FailsafeContext.js +27 -33
  310. package/dist/esm/common/FailsafeContext.js.map +1 -1
  311. package/dist/esm/common/FailsafeTimer.d.ts +4 -3
  312. package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
  313. package/dist/esm/common/FailsafeTimer.js +4 -4
  314. package/dist/esm/common/FailsafeTimer.js.map +1 -1
  315. package/dist/esm/common/Mark.d.ts +17 -0
  316. package/dist/esm/common/Mark.d.ts.map +1 -0
  317. package/dist/esm/common/Mark.js +18 -0
  318. package/dist/esm/common/Mark.js.map +6 -0
  319. package/dist/esm/common/index.d.ts +1 -0
  320. package/dist/esm/common/index.d.ts.map +1 -1
  321. package/dist/esm/common/index.js +1 -0
  322. package/dist/esm/common/index.js.map +1 -1
  323. package/dist/esm/fabric/Fabric.d.ts +16 -8
  324. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  325. package/dist/esm/fabric/Fabric.js +36 -18
  326. package/dist/esm/fabric/Fabric.js.map +1 -1
  327. package/dist/esm/fabric/FabricAuthority.d.ts +2 -2
  328. package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
  329. package/dist/esm/fabric/FabricAuthority.js +5 -5
  330. package/dist/esm/fabric/FabricAuthority.js.map +1 -1
  331. package/dist/esm/fabric/FabricManager.d.ts +10 -14
  332. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  333. package/dist/esm/fabric/FabricManager.js +45 -40
  334. package/dist/esm/fabric/FabricManager.js.map +2 -2
  335. package/dist/esm/index.d.ts +1 -1
  336. package/dist/esm/index.d.ts.map +1 -1
  337. package/dist/esm/index.js +1 -1
  338. package/dist/esm/index.js.map +1 -1
  339. package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
  340. package/dist/esm/interaction/InteractionClient.d.ts +2 -2
  341. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  342. package/dist/esm/interaction/InteractionClient.js +39 -22
  343. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  344. package/dist/esm/interaction/InteractionMessenger.d.ts +2 -2
  345. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  346. package/dist/esm/interaction/InteractionMessenger.js +33 -28
  347. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  348. package/dist/esm/interaction/Subscription.d.ts +16 -37
  349. package/dist/esm/interaction/Subscription.d.ts.map +1 -1
  350. package/dist/esm/interaction/Subscription.js +16 -69
  351. package/dist/esm/interaction/Subscription.js.map +2 -2
  352. package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
  353. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  354. package/dist/esm/interaction/SubscriptionClient.js +2 -2
  355. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  356. package/dist/esm/mdns/MdnsClient.d.ts +10 -10
  357. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
  358. package/dist/esm/mdns/MdnsClient.js +166 -80
  359. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  360. package/dist/esm/mdns/MdnsServer.d.ts +2 -2
  361. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
  362. package/dist/esm/mdns/MdnsServer.js +176 -94
  363. package/dist/esm/mdns/MdnsServer.js.map +2 -2
  364. package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
  365. package/dist/esm/mdns/MdnsService.js +3 -2
  366. package/dist/esm/mdns/MdnsService.js.map +1 -1
  367. package/dist/esm/mdns/MdnsSocket.d.ts +3 -2
  368. package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -1
  369. package/dist/esm/mdns/MdnsSocket.js +2 -1
  370. package/dist/esm/mdns/MdnsSocket.js.map +1 -1
  371. package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
  372. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  373. package/dist/esm/peer/ControllerCommissioner.js +26 -28
  374. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  375. package/dist/esm/peer/ControllerDiscovery.d.ts +1 -1
  376. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
  377. package/dist/esm/peer/ControllerDiscovery.js +1 -1
  378. package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
  379. package/dist/esm/peer/Peer.d.ts +57 -0
  380. package/dist/esm/peer/Peer.d.ts.map +1 -0
  381. package/dist/esm/peer/Peer.js +162 -0
  382. package/dist/esm/peer/Peer.js.map +6 -0
  383. package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
  384. package/dist/esm/peer/PeerAddress.js +5 -2
  385. package/dist/esm/peer/PeerAddress.js.map +1 -1
  386. package/dist/esm/peer/PeerAddressStore.d.ts +3 -3
  387. package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
  388. package/dist/{cjs/peer/OperationalPeer.d.ts → esm/peer/PeerDescriptor.d.ts} +14 -7
  389. package/dist/esm/peer/PeerDescriptor.d.ts.map +1 -0
  390. package/dist/esm/peer/PeerDescriptor.js +51 -0
  391. package/dist/esm/peer/PeerDescriptor.js.map +6 -0
  392. package/dist/esm/peer/PeerSet.d.ts +23 -26
  393. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  394. package/dist/esm/peer/PeerSet.js +173 -175
  395. package/dist/esm/peer/PeerSet.js.map +2 -2
  396. package/dist/esm/peer/index.d.ts +1 -1
  397. package/dist/esm/peer/index.d.ts.map +1 -1
  398. package/dist/esm/peer/index.js +1 -1
  399. package/dist/esm/protocol/DeviceAdvertiser.js +4 -4
  400. package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
  401. package/dist/esm/protocol/ExchangeManager.d.ts +6 -9
  402. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  403. package/dist/esm/protocol/ExchangeManager.js +308 -251
  404. package/dist/esm/protocol/ExchangeManager.js.map +2 -2
  405. package/dist/esm/protocol/ExchangeProvider.d.ts +9 -11
  406. package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
  407. package/dist/esm/protocol/ExchangeProvider.js +81 -37
  408. package/dist/esm/protocol/ExchangeProvider.js.map +2 -2
  409. package/dist/esm/protocol/MessageChannel.d.ts +6 -7
  410. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  411. package/dist/esm/protocol/MessageChannel.js +22 -18
  412. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  413. package/dist/esm/protocol/MessageCounter.d.ts +4 -4
  414. package/dist/esm/protocol/MessageCounter.d.ts.map +1 -1
  415. package/dist/esm/protocol/MessageCounter.js +7 -7
  416. package/dist/esm/protocol/MessageCounter.js.map +1 -1
  417. package/dist/esm/protocol/MessageExchange.d.ts +31 -20
  418. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  419. package/dist/esm/protocol/MessageExchange.js +318 -238
  420. package/dist/esm/protocol/MessageExchange.js.map +2 -2
  421. package/dist/esm/protocol/ProtocolMocks.d.ts +100 -0
  422. package/dist/esm/protocol/ProtocolMocks.d.ts.map +1 -0
  423. package/dist/esm/protocol/ProtocolMocks.js +230 -0
  424. package/dist/esm/protocol/ProtocolMocks.js.map +6 -0
  425. package/dist/esm/protocol/errors.d.ts +35 -0
  426. package/dist/esm/protocol/errors.d.ts.map +1 -0
  427. package/dist/esm/protocol/errors.js +30 -0
  428. package/dist/esm/protocol/errors.js.map +6 -0
  429. package/dist/esm/protocol/index.d.ts +2 -1
  430. package/dist/esm/protocol/index.d.ts.map +1 -1
  431. package/dist/esm/protocol/index.js +2 -1
  432. package/dist/esm/protocol/index.js.map +1 -1
  433. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -0
  434. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  435. package/dist/esm/securechannel/SecureChannelMessenger.js +3 -0
  436. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  437. package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
  438. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  439. package/dist/esm/session/GroupSession.d.ts +21 -10
  440. package/dist/esm/session/GroupSession.d.ts.map +1 -1
  441. package/dist/esm/session/GroupSession.js +41 -12
  442. package/dist/esm/session/GroupSession.js.map +1 -1
  443. package/dist/esm/session/NodeSession.d.ts +56 -50
  444. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  445. package/dist/esm/session/NodeSession.js +99 -105
  446. package/dist/esm/session/NodeSession.js.map +1 -1
  447. package/dist/esm/session/SecureSession.d.ts +4 -4
  448. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  449. package/dist/esm/session/SecureSession.js +1 -1
  450. package/dist/esm/session/SecureSession.js.map +1 -1
  451. package/dist/esm/session/Session.d.ts +82 -66
  452. package/dist/esm/session/Session.d.ts.map +1 -1
  453. package/dist/esm/session/Session.js +223 -45
  454. package/dist/esm/session/Session.js.map +1 -1
  455. package/dist/esm/session/SessionManager.d.ts +33 -36
  456. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  457. package/dist/esm/session/SessionManager.js +113 -157
  458. package/dist/esm/session/SessionManager.js.map +1 -1
  459. package/dist/esm/session/SessionParameters.d.ts +87 -0
  460. package/dist/esm/session/SessionParameters.d.ts.map +1 -0
  461. package/dist/esm/session/SessionParameters.js +61 -0
  462. package/dist/esm/session/SessionParameters.js.map +6 -0
  463. package/dist/{cjs/session/InsecureSession.d.ts → esm/session/UnsecuredSession.d.ts} +18 -16
  464. package/dist/esm/session/UnsecuredSession.d.ts.map +1 -0
  465. package/dist/esm/session/{InsecureSession.js → UnsecuredSession.js} +18 -18
  466. package/dist/esm/session/UnsecuredSession.js.map +6 -0
  467. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  468. package/dist/esm/session/case/CaseClient.js +5 -3
  469. package/dist/esm/session/case/CaseClient.js.map +1 -1
  470. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  471. package/dist/esm/session/case/CaseServer.js +14 -10
  472. package/dist/esm/session/case/CaseServer.js.map +1 -1
  473. package/dist/esm/session/index.d.ts +2 -1
  474. package/dist/esm/session/index.d.ts.map +1 -1
  475. package/dist/esm/session/index.js +2 -1
  476. package/dist/esm/session/index.js.map +1 -1
  477. package/dist/esm/session/pase/PaseClient.d.ts +3 -3
  478. package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
  479. package/dist/esm/session/pase/PaseClient.js +5 -3
  480. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  481. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  482. package/dist/esm/session/pase/PaseServer.js +13 -13
  483. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  484. package/package.json +6 -6
  485. package/src/action/client/ClientInteraction.ts +47 -13
  486. package/src/action/client/subscription/ClientSubscription.ts +30 -5
  487. package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
  488. package/src/action/client/subscription/ClientSubscriptions.ts +14 -3
  489. package/src/action/client/subscription/PeerSubscription.ts +2 -2
  490. package/src/action/client/subscription/SustainedSubscription.ts +2 -6
  491. package/src/action/request/Invoke.ts +2 -2
  492. package/src/action/server/AttributeReadResponse.ts +2 -0
  493. package/src/action/server/AttributeWriteResponse.ts +2 -0
  494. package/src/action/server/CommandInvokeResponse.ts +1 -0
  495. package/src/action/server/DataResponse.ts +4 -0
  496. package/src/action/server/ServerInteraction.ts +4 -4
  497. package/src/advertisement/Advertisement.ts +6 -7
  498. package/src/advertisement/Advertiser.ts +12 -1
  499. package/src/advertisement/ble/BleAdvertiser.ts +7 -2
  500. package/src/advertisement/mdns/MdnsAdvertiser.ts +7 -1
  501. package/src/certificate/kinds/definitions/asn.ts +2 -2
  502. package/src/certificate/kinds/definitions/attestation.ts +1 -0
  503. package/src/cluster/client/AttributeClient.ts +1 -1
  504. package/src/codec/MessageCodec.ts +39 -32
  505. package/src/common/FailsafeContext.ts +36 -39
  506. package/src/common/FailsafeTimer.ts +7 -6
  507. package/src/common/Mark.ts +17 -0
  508. package/src/common/index.ts +1 -0
  509. package/src/fabric/Fabric.ts +51 -23
  510. package/src/fabric/FabricAuthority.ts +4 -4
  511. package/src/fabric/FabricManager.ts +53 -40
  512. package/src/index.ts +3 -1
  513. package/src/interaction/InteractionClient.ts +40 -23
  514. package/src/interaction/InteractionMessenger.ts +38 -32
  515. package/src/interaction/Subscription.ts +20 -92
  516. package/src/interaction/SubscriptionClient.ts +3 -3
  517. package/src/mdns/MdnsClient.ts +20 -3
  518. package/src/mdns/MdnsServer.ts +13 -1
  519. package/src/mdns/MdnsService.ts +3 -2
  520. package/src/mdns/MdnsSocket.ts +9 -3
  521. package/src/peer/ControllerCommissioner.ts +35 -37
  522. package/src/peer/ControllerDiscovery.ts +1 -1
  523. package/src/peer/Peer.ts +161 -0
  524. package/src/peer/PeerAddress.ts +6 -2
  525. package/src/peer/PeerAddressStore.ts +3 -3
  526. package/src/peer/PeerDescriptor.ts +89 -0
  527. package/src/peer/PeerSet.ts +145 -213
  528. package/src/peer/index.ts +1 -1
  529. package/src/protocol/DeviceAdvertiser.ts +4 -4
  530. package/src/protocol/ExchangeManager.ts +161 -181
  531. package/src/protocol/ExchangeProvider.ts +31 -40
  532. package/src/protocol/MessageChannel.ts +29 -18
  533. package/src/protocol/MessageCounter.ts +8 -8
  534. package/src/protocol/MessageExchange.ts +181 -144
  535. package/src/protocol/ProtocolMocks.ts +302 -0
  536. package/src/protocol/errors.ts +44 -0
  537. package/src/protocol/index.ts +2 -1
  538. package/src/securechannel/SecureChannelMessenger.ts +4 -0
  539. package/src/securechannel/SecureChannelProtocol.ts +2 -2
  540. package/src/session/GroupSession.ts +67 -23
  541. package/src/session/NodeSession.ts +140 -136
  542. package/src/session/SecureSession.ts +6 -5
  543. package/src/session/Session.ts +234 -101
  544. package/src/session/SessionManager.ts +148 -187
  545. package/src/session/SessionParameters.ts +108 -0
  546. package/src/session/{InsecureSession.ts → UnsecuredSession.ts} +28 -26
  547. package/src/session/case/CaseClient.ts +6 -3
  548. package/src/session/case/CaseServer.ts +15 -11
  549. package/src/session/index.ts +2 -1
  550. package/src/session/pase/PaseClient.ts +12 -5
  551. package/src/session/pase/PaseServer.ts +14 -13
  552. package/dist/cjs/peer/OperationalPeer.d.ts.map +0 -1
  553. package/dist/cjs/peer/OperationalPeer.js.map +0 -6
  554. package/dist/cjs/protocol/ChannelManager.d.ts +0 -29
  555. package/dist/cjs/protocol/ChannelManager.d.ts.map +0 -1
  556. package/dist/cjs/protocol/ChannelManager.js +0 -178
  557. package/dist/cjs/protocol/ChannelManager.js.map +0 -6
  558. package/dist/cjs/session/InsecureSession.d.ts.map +0 -1
  559. package/dist/cjs/session/InsecureSession.js.map +0 -6
  560. package/dist/esm/peer/OperationalPeer.d.ts +0 -38
  561. package/dist/esm/peer/OperationalPeer.d.ts.map +0 -1
  562. package/dist/esm/peer/OperationalPeer.js +0 -6
  563. package/dist/esm/peer/OperationalPeer.js.map +0 -6
  564. package/dist/esm/protocol/ChannelManager.d.ts +0 -29
  565. package/dist/esm/protocol/ChannelManager.d.ts.map +0 -1
  566. package/dist/esm/protocol/ChannelManager.js +0 -158
  567. package/dist/esm/protocol/ChannelManager.js.map +0 -6
  568. package/dist/esm/session/InsecureSession.d.ts.map +0 -1
  569. package/dist/esm/session/InsecureSession.js.map +0 -6
  570. package/src/protocol/ChannelManager.ts +0 -180
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import {
8
+ AsyncObservable,
8
9
  Bytes,
9
10
  Construction,
10
11
  Crypto,
@@ -17,6 +18,7 @@ import {
17
18
  MatterFlowError,
18
19
  MaybePromise,
19
20
  Observable,
21
+ Observer,
20
22
  StorageContext,
21
23
  StorageManager,
22
24
  } from "#general";
@@ -30,12 +32,6 @@ const logger = Logger.get("FabricManager");
30
32
  export class FabricNotFoundError extends MatterError {}
31
33
  export class FabricTableFullError extends MatterError {}
32
34
 
33
- export enum FabricAction {
34
- Added,
35
- Removed,
36
- Updated,
37
- }
38
-
39
35
  export class FabricManager {
40
36
  #crypto: Crypto;
41
37
  #nextFabricIndex = 1;
@@ -44,8 +40,10 @@ export class FabricManager {
44
40
  #storage?: StorageContext;
45
41
  #events = {
46
42
  added: Observable<[fabric: Fabric]>(),
47
- updated: Observable<[fabric: Fabric]>(),
48
- deleted: Observable<[fabric: Fabric]>(),
43
+ replaced: Observable<[fabric: Fabric]>(unhandled("replacing")),
44
+ leaving: Observable<[fabric: Fabric]>(unhandled("leaving")),
45
+ deleting: AsyncObservable<[fabric: Fabric]>(unhandled("deleting")),
46
+ deleted: AsyncObservable<[fabric: Fabric]>(unhandled("deleted")),
49
47
  failsafeClosed: Observable<[]>(),
50
48
  };
51
49
  #construction: Construction<FabricManager>;
@@ -111,7 +109,8 @@ export class FabricManager {
111
109
  if (typeof address === "object") {
112
110
  address = address.fabricIndex;
113
111
  }
114
- return this.#fabrics.has(address);
112
+ const fabric = this.maybeForIndex(address);
113
+ return fabric && !fabric.isDeleting;
115
114
  }
116
115
 
117
116
  for(address: FabricIndex | PeerAddress) {
@@ -149,7 +148,7 @@ export class FabricManager {
149
148
 
150
149
  const storeResult = this.#storage.set(
151
150
  "fabrics",
152
- Array.from(this.#fabrics.values()).map(fabric => fabric.config),
151
+ this.fabrics.map(fabric => fabric.config),
153
152
  );
154
153
  if (MaybePromise.is(storeResult)) {
155
154
  return storeResult.then(() => this.#storage!.set("nextFabricIndex", this.#nextFabricIndex));
@@ -179,20 +178,22 @@ export class FabricManager {
179
178
  #addOrUpdateFabricEntry(fabric: Fabric) {
180
179
  const { fabricIndex } = fabric;
181
180
  this.#fabrics.set(fabricIndex, fabric);
182
- fabric.addRemoveCallback(async () => this.removeFabric(fabricIndex));
181
+
182
+ fabric.leaving.on(() => this.events.leaving.emit(fabric));
183
+ fabric.deleting.on(() => this.events.deleting.emit(fabric));
184
+ fabric.deleted.on(() => this.#handleFabricDeleted(fabric));
185
+
183
186
  fabric.persistCallback = (isUpdate = true) => {
184
187
  if (!this.#storage) {
185
188
  if (isUpdate) {
186
- logger.warn(
187
- "Fabric can not be persisted because FabricManager has no storage but it is a fabric update.",
188
- );
189
+ logger.warn(`Fabric ${fabricIndex} cannot persist because FabricManager has no storage`);
189
190
  }
190
191
  return;
191
192
  }
192
193
  const persistResult = this.persistFabrics();
193
194
  return MaybePromise.then(persistResult, () => {
194
195
  if (isUpdate) {
195
- this.#events.updated.emit(fabric); // Assume Fabric got updated when persist callback is called
196
+ this.#events.replaced.emit(fabric); // Assume Fabric got updated when persist callback is called
196
197
  }
197
198
  });
198
199
  };
@@ -201,32 +202,26 @@ export class FabricManager {
201
202
  }
202
203
  }
203
204
 
204
- async removeFabric(fabricIndex: FabricIndex) {
205
+ async #handleFabricDeleted(fabric: Fabric) {
205
206
  await this.#construction;
206
207
 
207
- const fabric = this.#fabrics.get(fabricIndex);
208
- if (fabric === undefined)
209
- throw new FabricNotFoundError(
210
- `Fabric with index ${fabricIndex} cannot be removed because it does not exist.`,
211
- );
212
- this.#fabrics.delete(fabricIndex);
208
+ this.#fabrics.delete(fabric.fabricIndex);
213
209
  if (this.#storage) {
214
210
  await this.persistFabrics();
215
211
  }
216
212
  await fabric.storage?.clearAll();
217
- this.#events.deleted.emit(fabric);
218
213
  }
219
214
 
220
215
  [Symbol.iterator]() {
221
216
  this.#construction.assert();
222
217
 
223
- return this.#fabrics.values();
218
+ return this.fabrics[Symbol.iterator]();
224
219
  }
225
220
 
226
221
  get fabrics() {
227
222
  this.#construction.assert();
228
223
 
229
- return Array.from(this.#fabrics.values());
224
+ return Array.from(this.#fabrics.values()).filter(fabric => !fabric.isDeleting);
230
225
  }
231
226
 
232
227
  get length() {
@@ -247,6 +242,10 @@ export class FabricManager {
247
242
  for (const fabric of this.#fabrics.values()) {
248
243
  const candidateDestinationIds = await fabric.destinationIdsFor(fabric.nodeId, initiatorRandom);
249
244
  if (candidateDestinationIds.some(candidate => Bytes.areEqual(candidate, destinationId))) {
245
+ if (fabric.isDeleting) {
246
+ throw new FabricNotFoundError("Fabric is deleting");
247
+ }
248
+
250
249
  return fabric;
251
250
  }
252
251
  }
@@ -257,7 +256,7 @@ export class FabricManager {
257
256
  findByKeypair(keypair: Key) {
258
257
  this.#construction.assert();
259
258
 
260
- for (const fabric of this.#fabrics.values()) {
259
+ for (const fabric of this.fabrics) {
261
260
  if (fabric.matchesKeyPair(keypair)) {
262
261
  return fabric;
263
262
  }
@@ -265,10 +264,26 @@ export class FabricManager {
265
264
  return undefined;
266
265
  }
267
266
 
268
- findByIndex(index: FabricIndex) {
267
+ maybeForIndex(index: FabricIndex) {
269
268
  this.#construction.assert();
270
269
 
271
- return this.#fabrics.get(index);
270
+ const fabric = this.#fabrics.get(index);
271
+ if (fabric && !fabric.isDeleting) {
272
+ return fabric;
273
+ }
274
+ }
275
+
276
+ forIndex(index: FabricIndex) {
277
+ this.#construction.assert();
278
+
279
+ const fabric = this.#fabrics.get(index);
280
+ if (fabric === undefined) {
281
+ throw new FabricNotFoundError(`Fabric index ${index} does not exist`);
282
+ }
283
+ if (fabric.isDeleting) {
284
+ throw new FabricNotFoundError(`Fabric index ${index} is deleting`);
285
+ }
286
+ return fabric;
272
287
  }
273
288
 
274
289
  forDescriptor(descriptor: { rootPublicKey: Bytes; fabricId: FabricId }) {
@@ -281,14 +296,14 @@ export class FabricManager {
281
296
  );
282
297
  }
283
298
 
284
- async updateFabric(fabric: Fabric) {
299
+ async replaceFabric(fabric: Fabric) {
285
300
  await this.#construction;
286
301
 
287
302
  const { fabricIndex } = fabric;
288
303
  const existingFabric = this.#fabrics.get(fabricIndex);
289
304
  if (existingFabric === undefined) {
290
305
  throw new FabricNotFoundError(
291
- `Fabric with index ${fabricIndex} cannot be updated because it does not exist.`,
306
+ `Fabric with index ${fabricIndex} cannot be replaced because it does not exist.`,
292
307
  );
293
308
  }
294
309
  if (existingFabric === fabric) {
@@ -301,16 +316,14 @@ export class FabricManager {
301
316
  if (this.#storage) {
302
317
  await this.persistFabrics();
303
318
  }
304
- this.#events.updated.emit(fabric);
319
+ this.#events.replaced.emit(fabric);
305
320
  }
321
+ }
306
322
 
307
- async revokeFabric(fabricIndex: FabricIndex) {
308
- await this.#construction;
309
-
310
- const fabric = this.#fabrics.get(fabricIndex);
311
- if (fabric === undefined) {
312
- throw new MatterFlowError(`Fabric with index ${fabricIndex} does not exist to revoke.`);
313
- }
314
- await fabric.remove();
315
- }
323
+ // Log unhandled errors but do not abort deletion. We will still likely end up with inconsistent state but should be
324
+ // less harmful (and more secure) if we allow other observers to proceed
325
+ function unhandled(what: string) {
326
+ return (e: Error, observer: Observer) => {
327
+ logger.error(`Unhandled error in fabric ${what} observer ${observer.name || "(anon)"}`, e);
328
+ };
316
329
  }
package/src/index.ts CHANGED
@@ -4,6 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ // Must import first to avoid ESM load issues
8
+ export * from "./session/index.js";
9
+
7
10
  export * from "./action/index.js";
8
11
  export * from "./advertisement/index.js";
9
12
  export * from "./bdx/index.js";
@@ -21,4 +24,3 @@ export * from "./mdns/index.js";
21
24
  export * from "./peer/index.js";
22
25
  export * from "./protocol/index.js";
23
26
  export * from "./securechannel/index.js";
24
- export * from "./session/index.js";
@@ -6,6 +6,7 @@
6
6
 
7
7
  import { ReadScope } from "#action/client/ReadScope.js";
8
8
  import { AccessControl } from "#clusters/access-control";
9
+ import { Mark } from "#common/Mark.js";
9
10
  import {
10
11
  Diagnostic,
11
12
  Duration,
@@ -27,6 +28,7 @@ import { Specification } from "#model";
27
28
  import { PeerAddress, PeerAddressMap } from "#peer/PeerAddress.js";
28
29
  import { PeerDataStore } from "#peer/PeerAddressStore.js";
29
30
  import { PeerConnectionOptions, PeerSet } from "#peer/PeerSet.js";
31
+ import { SecureSession } from "#session/SecureSession.js";
30
32
  import {
31
33
  ArraySchema,
32
34
  Attribute,
@@ -57,11 +59,11 @@ import {
57
59
  resolveEventName,
58
60
  } from "#types";
59
61
  import { ExchangeProvider, ReconnectableExchangeProvider } from "../protocol/ExchangeProvider.js";
60
- import { MessageChannel } from "../protocol/MessageChannel.js";
61
62
  import { DecodedAttributeReportStatus, DecodedAttributeReportValue } from "./AttributeDataDecoder.js";
62
63
  import { DecodedDataReport } from "./DecodedDataReport.js";
63
64
  import { DecodedEventData, DecodedEventReportStatus, DecodedEventReportValue } from "./EventDataDecoder.js";
64
65
  import { InteractionClientMessenger, ReadRequest } from "./InteractionMessenger.js";
66
+ import { Subscription } from "./Subscription.js";
65
67
  import { RegisteredSubscription, SubscriptionClient } from "./SubscriptionClient.js";
66
68
 
67
69
  const logger = Logger.get("InteractionClient");
@@ -97,7 +99,7 @@ export class InteractionClientProvider {
97
99
  constructor(peers: PeerSet) {
98
100
  this.#peers = peers;
99
101
  this.#peers.deleted.on(peer => this.#onPeerLoss(peer.address));
100
- this.#peers.disconnected.on(address => this.#onPeerLoss(address));
102
+ this.#peers.disconnected.on(peer => this.#onPeerLoss(peer.address));
101
103
  }
102
104
 
103
105
  static [Environmental.create](env: Environment) {
@@ -126,8 +128,8 @@ export class InteractionClientProvider {
126
128
  return this.getInteractionClient(address, options);
127
129
  }
128
130
 
129
- async getInteractionClientForChannel(channel: MessageChannel): Promise<InteractionClient> {
130
- const exchangeProvider = await this.#peers.exchangeProviderFor(channel);
131
+ async interactionClientFor(session: SecureSession): Promise<InteractionClient> {
132
+ const exchangeProvider = await this.#peers.exchangeProviderFor(session);
131
133
 
132
134
  return new InteractionClient(
133
135
  exchangeProvider,
@@ -144,7 +146,7 @@ export class InteractionClientProvider {
144
146
  }
145
147
 
146
148
  const isGroupAddress = PeerAddress.isGroup(address);
147
- const nodeStore = isGroupAddress ? undefined : this.#peers.get(address)?.dataStore;
149
+ const nodeStore = isGroupAddress ? undefined : this.#peers.get(address)?.descriptor.dataStore;
148
150
  await nodeStore?.construction; // Lazy initialize the data if not already done
149
151
 
150
152
  const exchangeProvider = await this.#peers.exchangeProviderFor(address, options);
@@ -554,7 +556,8 @@ export class InteractionClient {
554
556
  ): Promise<DecodedDataReport> {
555
557
  const { attributeRequests, eventRequests, dataVersionFilters, eventFilters, isFabricFiltered } = request;
556
558
  logger.debug(() => [
557
- "Read »",
559
+ "Read",
560
+ Mark.OUTBOUND,
558
561
  messenger.exchange.via,
559
562
  Diagnostic.dict({
560
563
  attributes: attributeRequests?.length
@@ -590,7 +593,8 @@ export class InteractionClient {
590
593
 
591
594
  if (attributeReports.length || eventReports.length || attributeStatus?.length || eventStatus?.length) {
592
595
  logger.debug(() => [
593
- "Read «",
596
+ "Read",
597
+ Mark.INBOUND,
594
598
  messenger.exchange.via,
595
599
  Diagnostic.dict({
596
600
  attributes: attributeReports.length
@@ -611,7 +615,7 @@ export class InteractionClient {
611
615
  }),
612
616
  ]);
613
617
  } else {
614
- logger.debug("Read «", messenger.exchange.via, "empty response");
618
+ logger.debug("Read", Mark.INBOUND, messenger.exchange.via, "empty response");
615
619
  }
616
620
 
617
621
  return response;
@@ -739,7 +743,8 @@ export class InteractionClient {
739
743
  }
740
744
 
741
745
  logger.debug(() => [
742
- "Write »",
746
+ "Write",
747
+ Mark.OUTBOUND,
743
748
  messenger.exchange.via,
744
749
  Diagnostic.dict({
745
750
  attributes: attributes
@@ -818,7 +823,7 @@ export class InteractionClient {
818
823
  if (!keepSubscriptions) {
819
824
  for (const subscriptionId of this.#ownSubscriptionIds) {
820
825
  logger.debug(
821
- `Removing subscription with ID ${subscriptionId} from InteractionClient because new subscription replaces it`,
826
+ `Removing subscription ${Subscription.idStrOf(subscriptionId)} from InteractionClient because new subscription replaces it`,
822
827
  );
823
828
  this.removeSubscription(subscriptionId);
824
829
  }
@@ -848,7 +853,8 @@ export class InteractionClient {
848
853
  maximumPeerResponseTime: Duration;
849
854
  }>(async messenger => {
850
855
  logger.debug(() => [
851
- "Subscribe »",
856
+ "Subscribe",
857
+ Mark.OUTBOUND,
852
858
  messenger.exchange.via,
853
859
  Diagnostic.dict({
854
860
  attributes: resolveAttributeName({ endpointId, clusterId, attributeId }),
@@ -953,7 +959,8 @@ export class InteractionClient {
953
959
  maximumPeerResponseTime: Duration;
954
960
  }>(async messenger => {
955
961
  logger.debug(() => [
956
- "Subscribe »",
962
+ "Subscribe",
963
+ Mark.OUTBOUND,
957
964
  messenger.exchange.via,
958
965
  Diagnostic.dict({
959
966
  events: resolveEventName({ endpointId, clusterId, eventId }),
@@ -1091,7 +1098,7 @@ export class InteractionClient {
1091
1098
  if (!keepSubscriptions) {
1092
1099
  for (const subscriptionId of this.#ownSubscriptionIds) {
1093
1100
  logger.debug(
1094
- `Removing subscription with ID ${subscriptionId} from InteractionClient because new subscription replaces it`,
1101
+ `Removing subscription with ID ${Subscription.idStrOf(subscriptionId)} from InteractionClient because new subscription replaces it`,
1095
1102
  );
1096
1103
  this.removeSubscription(subscriptionId);
1097
1104
  }
@@ -1124,7 +1131,8 @@ export class InteractionClient {
1124
1131
  maximumPeerResponseTime: Duration;
1125
1132
  }>(async messenger => {
1126
1133
  logger.debug(() => [
1127
- "Subscribe »",
1134
+ "Subscribe",
1135
+ Mark.OUTBOUND,
1128
1136
  messenger.exchange.via,
1129
1137
  Diagnostic.dict({
1130
1138
  attributes: attributeRequests.length
@@ -1157,10 +1165,11 @@ export class InteractionClient {
1157
1165
  );
1158
1166
 
1159
1167
  logger.info(
1160
- "Subscription successful «",
1168
+ "Subscription successful",
1169
+ Mark.INBOUND,
1161
1170
  messenger.exchange.via,
1162
1171
  Diagnostic.dict({
1163
- subId: subscribeResponse.subscriptionId,
1172
+ ...Subscription.diagnosticOf(subscribeResponse.subscriptionId),
1164
1173
  maxInterval: Duration.format(Seconds(subscribeResponse.maxInterval)),
1165
1174
  }),
1166
1175
  );
@@ -1187,10 +1196,12 @@ export class InteractionClient {
1187
1196
  const { attributeReports, eventReports } = dataReport;
1188
1197
 
1189
1198
  // We emit events first because events usually happened and lead to a new final attribute value
1190
- if (eventReports !== undefined) {
1199
+ if (eventReports?.length) {
1191
1200
  let maxEventNumber = this.#nodeStore?.maxEventNumber ?? eventReports[0].events[0].eventNumber;
1192
1201
  eventReports.forEach(data => {
1193
- logger.debug(`Event update « ${resolveEventName(data.path)}: ${Diagnostic.json(data.events)}`);
1202
+ logger.debug(
1203
+ `Event update ${Mark.INBOUND} ${resolveEventName(data.path)}: ${Diagnostic.json(data.events)}`,
1204
+ );
1194
1205
  const { events } = data;
1195
1206
 
1196
1207
  maxEventNumber =
@@ -1261,7 +1272,7 @@ export class InteractionClient {
1261
1272
  await this.#nodeStore?.persistAttributes([data], scope);
1262
1273
  }
1263
1274
  logger.debug(
1264
- `Attribute update «${changed ? " (value changed)" : ""}: ${resolveAttributeName({
1275
+ `Attribute update ${Mark.INBOUND}${changed ? " (value changed)" : ""}: ${resolveAttributeName({
1265
1276
  endpointId,
1266
1277
  clusterId,
1267
1278
  attributeId,
@@ -1406,11 +1417,15 @@ export class InteractionClient {
1406
1417
  }
1407
1418
  const response = responseSchema.decodeTlv(commandFields);
1408
1419
  logger.debug(
1409
- `Invoke « ${resolveCommandName({
1420
+ "Invoke",
1421
+ Mark.INBOUND,
1422
+ resolveCommandName({
1410
1423
  endpointId,
1411
1424
  clusterId,
1412
1425
  commandId: requestId,
1413
- })} with ${Diagnostic.json(response)})}`,
1426
+ }),
1427
+ "with",
1428
+ Diagnostic.json(response),
1414
1429
  );
1415
1430
  return response;
1416
1431
  }
@@ -1480,11 +1495,13 @@ export class InteractionClient {
1480
1495
  }, executeQueued);
1481
1496
 
1482
1497
  logger.debug(
1483
- `Invoke successful « ${resolveCommandName({
1498
+ "Invoke successful",
1499
+ Mark.INBOUND,
1500
+ resolveCommandName({
1484
1501
  endpointId,
1485
1502
  clusterId,
1486
1503
  commandId: requestId,
1487
- })}`,
1504
+ }),
1488
1505
  );
1489
1506
  }
1490
1507
 
@@ -5,10 +5,12 @@
5
5
  */
6
6
 
7
7
  import { ReadResult } from "#action/response/ReadResult.js";
8
+ import { Mark } from "#common/Mark.js";
8
9
  import {
9
10
  Bytes,
10
11
  Diagnostic,
11
12
  Duration,
13
+ hex,
12
14
  InternalError,
13
15
  Logger,
14
16
  MatterFlowError,
@@ -19,14 +21,13 @@ import {
19
21
  import { DecodedAttributeReportValue } from "#interaction/AttributeDataDecoder.js";
20
22
  import { DecodedDataReport } from "#interaction/DecodedDataReport.js";
21
23
  import { Specification } from "#model";
22
- import { ChannelNotConnectedError } from "#protocol/MessageChannel.js";
24
+ import { RetransmissionLimitReachedError, SessionClosedError, UnexpectedMessageError } from "#protocol/errors.js";
23
25
  import {
24
26
  AttributeId,
25
27
  ClusterId,
26
28
  EndpointNumber,
27
29
  ReceivedStatusResponseError,
28
30
  Status,
29
- StatusCode,
30
31
  StatusResponseError,
31
32
  TlvAny,
32
33
  TlvAttributeReport,
@@ -48,12 +49,7 @@ import {
48
49
  } from "#types";
49
50
  import { Message, SessionType } from "../codec/MessageCodec.js";
50
51
  import { ExchangeProvider } from "../protocol/ExchangeProvider.js";
51
- import {
52
- ExchangeSendOptions,
53
- MessageExchange,
54
- RetransmissionLimitReachedError,
55
- UnexpectedMessageError,
56
- } from "../protocol/MessageExchange.js";
52
+ import { ExchangeSendOptions, MessageExchange } from "../protocol/MessageExchange.js";
57
53
  import {
58
54
  AttributeReportPayload,
59
55
  BaseDataReport,
@@ -65,6 +61,7 @@ import {
65
61
  encodeEventPayload,
66
62
  EventReportPayload,
67
63
  } from "./AttributeDataEncoder.js";
64
+ import { Subscription } from "./Subscription.js";
68
65
 
69
66
  export enum MessageType {
70
67
  StatusResponse = 0x01,
@@ -123,7 +120,7 @@ class InteractionMessenger {
123
120
  return this.exchange.send(messageType, payload, options);
124
121
  }
125
122
 
126
- sendStatus(status: StatusCode, options?: ExchangeSendOptions) {
123
+ sendStatus(status: Status, options?: ExchangeSendOptions) {
127
124
  return this.send(
128
125
  MessageType.StatusResponse,
129
126
  TlvStatusResponse.encode({ status, interactionModelRevision: Specification.INTERACTION_MODEL_REVISION }),
@@ -131,7 +128,7 @@ class InteractionMessenger {
131
128
  ...options,
132
129
  logContext: {
133
130
  for: options?.logContext?.for ? `I/Status-${options?.logContext?.for}` : undefined,
134
- status: `${StatusCode[status] ?? "unknown"}(${Diagnostic.hex(status)})`,
131
+ status: `${Status[status] ?? "unknown"}(${Diagnostic.hex(status)})`,
135
132
  ...options?.logContext,
136
133
  },
137
134
  },
@@ -202,7 +199,7 @@ class InteractionMessenger {
202
199
 
203
200
  if (messageType !== MessageType.StatusResponse) return;
204
201
  const { status } = TlvStatusResponse.decode(payload);
205
- if (status !== StatusCode.Success)
202
+ if (status !== Status.Success)
206
203
  throw new ReceivedStatusResponseError(
207
204
  `Received error status: ${status}${logHint ? ` (${logHint})` : ""}`,
208
205
  status,
@@ -305,7 +302,7 @@ export class InteractionServerMessenger extends InteractionMessenger {
305
302
  }
306
303
  const timedRequest = TlvTimedRequest.decode(message.payload);
307
304
  recipient.handleTimedRequest(this.exchange, timedRequest, message);
308
- await this.sendStatus(StatusCode.Success, {
305
+ await this.sendStatus(Status.Success, {
309
306
  logContext: { for: "TimedRequest" },
310
307
  });
311
308
  continueExchange = true;
@@ -321,17 +318,28 @@ export class InteractionServerMessenger extends InteractionMessenger {
321
318
  break; // We do not support multiple messages in group sessions
322
319
  }
323
320
  }
324
- } catch (error: any) {
325
- let errorStatusCode = StatusCode.Failure;
321
+ } catch (error) {
322
+ if (error instanceof NoResponseTimeoutError) {
323
+ logger.info(this.exchange.via, error);
324
+ return;
325
+ }
326
+
327
+ let errorStatusCode = Status.Failure;
326
328
  if (error instanceof StatusResponseError) {
327
- logger.info(`Sending status response ${error.code} for interaction error: ${error.message}`);
329
+ logger.info(
330
+ this.exchange.via,
331
+ "Status response",
332
+ Mark.OUTBOUND,
333
+ Diagnostic.strong(`${Status[error.code]}#${error.code}`),
334
+ "due to error:",
335
+ Diagnostic.errorMessage(error),
336
+ );
328
337
  errorStatusCode = error.code;
329
- } else if (error instanceof NoResponseTimeoutError) {
330
- logger.info(error);
331
338
  } else {
332
- logger.warn(error);
339
+ logger.warn(this.exchange.via, error);
333
340
  }
334
- if (!isGroupSession && !(error instanceof NoResponseTimeoutError)) {
341
+
342
+ if (!isGroupSession) {
335
343
  await this.sendStatus(errorStatusCode);
336
344
  }
337
345
  } finally {
@@ -687,7 +695,7 @@ export class InteractionServerMessenger extends InteractionMessenger {
687
695
  }
688
696
 
689
697
  const logContext = {
690
- subId: dataReportToSend.subscriptionId,
698
+ ...Subscription.diagnosticOf(dataReportToSend),
691
699
  interactionFlags: Diagnostic.asFlags({
692
700
  empty: !dataReportToSend.attributeReports?.length && !dataReportToSend.eventReports?.length,
693
701
  suppressResponse: dataReportToSend.suppressResponse,
@@ -920,22 +928,20 @@ export class IncomingInteractionClientMessenger extends InteractionMessenger {
920
928
  for await (const report of this.readDataReports()) {
921
929
  if (expectedSubscriptionIds !== undefined) {
922
930
  if (report.subscriptionId === undefined || !expectedSubscriptionIds.includes(report.subscriptionId)) {
923
- await this.sendStatus(StatusCode.InvalidSubscription, {
931
+ await this.sendStatus(Status.InvalidSubscription, {
924
932
  multipleMessageInteraction: true,
925
- logContext: {
926
- subId: report.subscriptionId,
927
- },
933
+ logContext: Subscription.diagnosticOf(report),
928
934
  });
929
935
  throw new UnexpectedDataError(
930
936
  report.subscriptionId === undefined
931
937
  ? "Invalid Data report without Subscription ID"
932
- : `Invalid Data report with unexpected subscription ID ${report.subscriptionId}`,
938
+ : `Invalid Data report with unexpected subscription ID ${Subscription.idStrOf(report)}`,
933
939
  );
934
940
  }
935
941
  }
936
942
 
937
943
  if (result?.subscriptionId !== undefined && report.subscriptionId !== result.subscriptionId) {
938
- throw new UnexpectedDataError(`Invalid subscription ID ${report.subscriptionId} received`);
944
+ throw new UnexpectedDataError(`Invalid subscription ID ${Subscription.idStrOf(report)} received`);
939
945
  }
940
946
 
941
947
  report.attributeReports = report.attributeReports ?? [];
@@ -987,14 +993,14 @@ export class IncomingInteractionClientMessenger extends InteractionMessenger {
987
993
  yield report;
988
994
 
989
995
  if (report.moreChunkedMessages) {
990
- await this.sendStatus(StatusCode.Success, {
996
+ await this.sendStatus(Status.Success, {
991
997
  multipleMessageInteraction: true,
992
998
  logContext: this.#logContextOf(report),
993
999
  });
994
1000
  } else if (!report.suppressResponse) {
995
1001
  // We received the last message and need to send a final success, but we do not need to wait for it and
996
1002
  // also don't care if it fails
997
- this.sendStatus(StatusCode.Success, {
1003
+ this.sendStatus(Status.Success, {
998
1004
  multipleMessageInteraction: true,
999
1005
  logContext: this.#logContextOf(report),
1000
1006
  }).catch(error => logger.info("Error sending success after final data report chunk", error));
@@ -1008,7 +1014,7 @@ export class IncomingInteractionClientMessenger extends InteractionMessenger {
1008
1014
 
1009
1015
  #logContextOf(report: DataReport) {
1010
1016
  return {
1011
- subId: report.subscriptionId,
1017
+ subId: report.subscriptionId === undefined ? undefined : hex.fixed(report.subscriptionId, 8),
1012
1018
  dataReportFlags: Diagnostic.asFlags({
1013
1019
  empty: !report.attributeReports?.length && !report.eventReports?.length,
1014
1020
  suppressResponse: report.suppressResponse,
@@ -1037,14 +1043,14 @@ export class InteractionClientMessenger extends IncomingInteractionClientMesseng
1037
1043
  override async send(messageType: number, payload: Bytes, options?: ExchangeSendOptions) {
1038
1044
  try {
1039
1045
  if (this.exchange.channel.closed) {
1040
- throw new ChannelNotConnectedError("The exchange channel is closed. Please connect the device first.");
1046
+ throw new SessionClosedError("The exchange channel is closed. Please connect the device first.");
1041
1047
  }
1042
1048
 
1043
1049
  return await this.exchange.send(messageType, payload, options);
1044
1050
  } catch (error) {
1045
1051
  if (
1046
1052
  this.#exchangeProvider.supportsReconnect &&
1047
- (error instanceof RetransmissionLimitReachedError || error instanceof ChannelNotConnectedError) &&
1053
+ (error instanceof RetransmissionLimitReachedError || error instanceof SessionClosedError) &&
1048
1054
  !options?.multipleMessageInteraction
1049
1055
  ) {
1050
1056
  // When retransmission failed (most likely due to a lost connection or invalid session),
@@ -1139,7 +1145,7 @@ export class InteractionClientMessenger extends IncomingInteractionClientMesseng
1139
1145
 
1140
1146
  if (subscribeResponse.subscriptionId !== subscriptionId) {
1141
1147
  throw new MatterFlowError(
1142
- `Received subscription ID ${subscribeResponse.subscriptionId} instead of ${subscriptionId}`,
1148
+ `Received subscription ID ${Subscription.idStrOf(subscribeResponse.subscriptionId)} instead of ${Subscription.idStrOf(subscriptionId)}`,
1143
1149
  );
1144
1150
  }
1145
1151