@matter/protocol 0.16.0-alpha.0-20251205-dfb1e1556 → 0.16.0-alpha.0-20251209-d6072d23e

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 (586) hide show
  1. package/dist/cjs/action/Val.js +1 -1
  2. package/dist/cjs/action/Val.js.map +1 -1
  3. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  4. package/dist/cjs/action/client/ClientInteraction.js +83 -35
  5. package/dist/cjs/action/client/ClientInteraction.js.map +2 -2
  6. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts +10 -5
  7. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts.map +1 -1
  8. package/dist/cjs/action/client/subscription/ClientSubscription.js +21 -1
  9. package/dist/cjs/action/client/subscription/ClientSubscription.js.map +2 -2
  10. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -3
  11. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  12. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts +4 -2
  13. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
  14. package/dist/cjs/action/client/subscription/ClientSubscriptions.js +68 -8
  15. package/dist/cjs/action/client/subscription/ClientSubscriptions.js.map +1 -1
  16. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +0 -1
  17. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  18. package/dist/cjs/action/client/subscription/PeerSubscription.js +1 -2
  19. package/dist/cjs/action/client/subscription/PeerSubscription.js.map +1 -1
  20. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +0 -2
  21. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  22. package/dist/cjs/action/client/subscription/SustainedSubscription.js +2 -4
  23. package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +1 -1
  24. package/dist/cjs/action/request/Invoke.js +2 -2
  25. package/dist/cjs/action/request/Invoke.js.map +1 -1
  26. package/dist/cjs/action/response/ReadResult.d.ts +1 -1
  27. package/dist/cjs/action/response/ReadResult.d.ts.map +1 -1
  28. package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -1
  29. package/dist/cjs/action/server/AttributeReadResponse.js +78 -25
  30. package/dist/cjs/action/server/AttributeReadResponse.js.map +1 -1
  31. package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
  32. package/dist/cjs/action/server/AttributeWriteResponse.js +70 -17
  33. package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
  34. package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
  35. package/dist/cjs/action/server/CommandInvokeResponse.js +83 -30
  36. package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
  37. package/dist/cjs/action/server/DataResponse.d.ts +1 -0
  38. package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
  39. package/dist/cjs/action/server/DataResponse.js +3 -0
  40. package/dist/cjs/action/server/DataResponse.js.map +1 -1
  41. package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
  42. package/dist/cjs/action/server/ServerInteraction.js +4 -4
  43. package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
  44. package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
  45. package/dist/cjs/advertisement/Advertisement.js +66 -14
  46. package/dist/cjs/advertisement/Advertisement.js.map +1 -1
  47. package/dist/cjs/advertisement/Advertiser.d.ts +4 -1
  48. package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -1
  49. package/dist/cjs/advertisement/Advertiser.js +63 -2
  50. package/dist/cjs/advertisement/Advertiser.js.map +1 -1
  51. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +6 -1
  52. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  53. package/dist/cjs/advertisement/ble/BleAdvertiser.js +1 -1
  54. package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
  55. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
  56. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  57. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +1 -1
  58. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  59. package/dist/cjs/certificate/kinds/Noc.d.ts.map +1 -1
  60. package/dist/cjs/certificate/kinds/Noc.js +8 -6
  61. package/dist/cjs/certificate/kinds/Noc.js.map +1 -1
  62. package/dist/cjs/certificate/kinds/definitions/asn.js +1 -1
  63. package/dist/cjs/certificate/kinds/definitions/asn.js.map +1 -1
  64. package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -1
  65. package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
  66. package/dist/cjs/cluster/client/AttributeClient.js +2 -2
  67. package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
  68. package/dist/cjs/codec/MessageCodec.d.ts +8 -1
  69. package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
  70. package/dist/cjs/codec/MessageCodec.js +38 -28
  71. package/dist/cjs/codec/MessageCodec.js.map +2 -2
  72. package/dist/cjs/common/FailsafeContext.d.ts +8 -9
  73. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  74. package/dist/cjs/common/FailsafeContext.js +27 -33
  75. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  76. package/dist/cjs/common/FailsafeTimer.d.ts +4 -3
  77. package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
  78. package/dist/cjs/common/FailsafeTimer.js +4 -4
  79. package/dist/cjs/common/FailsafeTimer.js.map +1 -1
  80. package/dist/cjs/common/Mark.d.ts +17 -0
  81. package/dist/cjs/common/Mark.d.ts.map +1 -0
  82. package/dist/cjs/{peer/OperationalPeer.js → common/Mark.js} +19 -3
  83. package/dist/cjs/common/Mark.js.map +6 -0
  84. package/dist/cjs/common/index.d.ts +1 -0
  85. package/dist/cjs/common/index.d.ts.map +1 -1
  86. package/dist/cjs/common/index.js +1 -0
  87. package/dist/cjs/common/index.js.map +1 -1
  88. package/dist/cjs/fabric/Fabric.d.ts +16 -8
  89. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  90. package/dist/cjs/fabric/Fabric.js +35 -18
  91. package/dist/cjs/fabric/Fabric.js.map +1 -1
  92. package/dist/cjs/fabric/FabricAuthority.d.ts +2 -2
  93. package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
  94. package/dist/cjs/fabric/FabricAuthority.js +3 -3
  95. package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
  96. package/dist/cjs/fabric/FabricManager.d.ts +10 -14
  97. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  98. package/dist/cjs/fabric/FabricManager.js +44 -40
  99. package/dist/cjs/fabric/FabricManager.js.map +2 -2
  100. package/dist/cjs/index.d.ts +1 -1
  101. package/dist/cjs/index.d.ts.map +1 -1
  102. package/dist/cjs/index.js +1 -1
  103. package/dist/cjs/index.js.map +1 -1
  104. package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
  105. package/dist/cjs/interaction/InteractionClient.d.ts +2 -2
  106. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  107. package/dist/cjs/interaction/InteractionClient.js +39 -22
  108. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  109. package/dist/cjs/interaction/InteractionMessenger.d.ts +2 -2
  110. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  111. package/dist/cjs/interaction/InteractionMessenger.js +35 -27
  112. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  113. package/dist/cjs/interaction/Subscription.d.ts +16 -37
  114. package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
  115. package/dist/cjs/interaction/Subscription.js +15 -68
  116. package/dist/cjs/interaction/Subscription.js.map +2 -2
  117. package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
  118. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  119. package/dist/cjs/interaction/SubscriptionClient.js +2 -2
  120. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  121. package/dist/cjs/mdns/MdnsClient.d.ts +10 -10
  122. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
  123. package/dist/cjs/mdns/MdnsClient.js +165 -80
  124. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  125. package/dist/cjs/mdns/MdnsServer.d.ts +2 -2
  126. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
  127. package/dist/cjs/mdns/MdnsServer.js +173 -94
  128. package/dist/cjs/mdns/MdnsServer.js.map +2 -2
  129. package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
  130. package/dist/cjs/mdns/MdnsService.js +3 -2
  131. package/dist/cjs/mdns/MdnsService.js.map +1 -1
  132. package/dist/cjs/mdns/MdnsSocket.d.ts +3 -2
  133. package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -1
  134. package/dist/cjs/mdns/MdnsSocket.js +2 -1
  135. package/dist/cjs/mdns/MdnsSocket.js.map +1 -1
  136. package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
  137. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  138. package/dist/cjs/peer/ControllerCommissioner.js +26 -28
  139. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  140. package/dist/cjs/peer/ControllerDiscovery.d.ts +1 -1
  141. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
  142. package/dist/cjs/peer/ControllerDiscovery.js +3 -3
  143. package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
  144. package/dist/cjs/peer/Peer.d.ts +57 -0
  145. package/dist/cjs/peer/Peer.d.ts.map +1 -0
  146. package/dist/cjs/peer/Peer.js +182 -0
  147. package/dist/cjs/peer/Peer.js.map +6 -0
  148. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
  149. package/dist/cjs/peer/PeerAddress.js +6 -3
  150. package/dist/cjs/peer/PeerAddress.js.map +1 -1
  151. package/dist/cjs/peer/PeerAddressStore.d.ts +3 -3
  152. package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
  153. package/{src/peer/OperationalPeer.ts → dist/cjs/peer/PeerDescriptor.d.ts} +14 -12
  154. package/dist/cjs/peer/PeerDescriptor.d.ts.map +1 -0
  155. package/dist/cjs/peer/PeerDescriptor.js +71 -0
  156. package/dist/cjs/peer/PeerDescriptor.js.map +6 -0
  157. package/dist/cjs/peer/PeerSet.d.ts +23 -26
  158. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  159. package/dist/cjs/peer/PeerSet.js +173 -173
  160. package/dist/cjs/peer/PeerSet.js.map +2 -2
  161. package/dist/cjs/peer/index.d.ts +1 -1
  162. package/dist/cjs/peer/index.d.ts.map +1 -1
  163. package/dist/cjs/peer/index.js +1 -1
  164. package/dist/cjs/peer/index.js.map +1 -1
  165. package/dist/cjs/protocol/DeviceAdvertiser.js +4 -4
  166. package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
  167. package/dist/cjs/protocol/ExchangeManager.d.ts +6 -9
  168. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  169. package/dist/cjs/protocol/ExchangeManager.js +301 -243
  170. package/dist/cjs/protocol/ExchangeManager.js.map +2 -2
  171. package/dist/cjs/protocol/ExchangeProvider.d.ts +9 -11
  172. package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
  173. package/dist/cjs/protocol/ExchangeProvider.js +79 -32
  174. package/dist/cjs/protocol/ExchangeProvider.js.map +2 -2
  175. package/dist/cjs/protocol/MessageChannel.d.ts +6 -7
  176. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  177. package/dist/cjs/protocol/MessageChannel.js +14 -16
  178. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  179. package/dist/cjs/protocol/MessageCounter.d.ts +4 -4
  180. package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -1
  181. package/dist/cjs/protocol/MessageCounter.js +7 -7
  182. package/dist/cjs/protocol/MessageCounter.js.map +1 -1
  183. package/dist/cjs/protocol/MessageExchange.d.ts +31 -20
  184. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  185. package/dist/cjs/protocol/MessageExchange.js +316 -231
  186. package/dist/cjs/protocol/MessageExchange.js.map +2 -2
  187. package/dist/cjs/protocol/ProtocolMocks.d.ts +100 -0
  188. package/dist/cjs/protocol/ProtocolMocks.d.ts.map +1 -0
  189. package/dist/cjs/protocol/ProtocolMocks.js +237 -0
  190. package/dist/cjs/protocol/ProtocolMocks.js.map +6 -0
  191. package/dist/cjs/protocol/errors.d.ts +35 -0
  192. package/dist/cjs/protocol/errors.d.ts.map +1 -0
  193. package/dist/cjs/protocol/errors.js +50 -0
  194. package/dist/cjs/protocol/errors.js.map +6 -0
  195. package/dist/cjs/protocol/index.d.ts +2 -1
  196. package/dist/cjs/protocol/index.d.ts.map +1 -1
  197. package/dist/cjs/protocol/index.js +2 -1
  198. package/dist/cjs/protocol/index.js.map +1 -1
  199. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -0
  200. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  201. package/dist/cjs/securechannel/SecureChannelMessenger.js +3 -0
  202. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  203. package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -2
  204. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  205. package/dist/cjs/session/GroupSession.d.ts +21 -10
  206. package/dist/cjs/session/GroupSession.d.ts.map +1 -1
  207. package/dist/cjs/session/GroupSession.js +37 -12
  208. package/dist/cjs/session/GroupSession.js.map +1 -1
  209. package/dist/cjs/session/NodeSession.d.ts +56 -50
  210. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  211. package/dist/cjs/session/NodeSession.js +95 -103
  212. package/dist/cjs/session/NodeSession.js.map +1 -1
  213. package/dist/cjs/session/SecureSession.d.ts +4 -4
  214. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  215. package/dist/cjs/session/SecureSession.js +1 -1
  216. package/dist/cjs/session/SecureSession.js.map +1 -1
  217. package/dist/cjs/session/Session.d.ts +82 -66
  218. package/dist/cjs/session/Session.d.ts.map +1 -1
  219. package/dist/cjs/session/Session.js +218 -45
  220. package/dist/cjs/session/Session.js.map +1 -1
  221. package/dist/cjs/session/SessionManager.d.ts +33 -36
  222. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  223. package/dist/cjs/session/SessionManager.js +112 -150
  224. package/dist/cjs/session/SessionManager.js.map +1 -1
  225. package/dist/cjs/session/SessionParameters.d.ts +87 -0
  226. package/dist/cjs/session/SessionParameters.d.ts.map +1 -0
  227. package/dist/cjs/session/SessionParameters.js +81 -0
  228. package/dist/cjs/session/SessionParameters.js.map +6 -0
  229. package/dist/{esm/session/InsecureSession.d.ts → cjs/session/UnsecuredSession.d.ts} +18 -16
  230. package/dist/cjs/session/UnsecuredSession.d.ts.map +1 -0
  231. package/dist/cjs/session/{InsecureSession.js → UnsecuredSession.js} +21 -21
  232. package/dist/cjs/session/UnsecuredSession.js.map +6 -0
  233. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  234. package/dist/cjs/session/case/CaseClient.js +6 -4
  235. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  236. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  237. package/dist/cjs/session/case/CaseServer.js +14 -10
  238. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  239. package/dist/cjs/session/index.d.ts +2 -1
  240. package/dist/cjs/session/index.d.ts.map +1 -1
  241. package/dist/cjs/session/index.js +2 -1
  242. package/dist/cjs/session/index.js.map +1 -1
  243. package/dist/cjs/session/pase/PaseClient.d.ts +3 -3
  244. package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
  245. package/dist/cjs/session/pase/PaseClient.js +5 -3
  246. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  247. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  248. package/dist/cjs/session/pase/PaseServer.js +13 -13
  249. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  250. package/dist/esm/action/Val.js +1 -1
  251. package/dist/esm/action/Val.js.map +1 -1
  252. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  253. package/dist/esm/action/client/ClientInteraction.js +83 -35
  254. package/dist/esm/action/client/ClientInteraction.js.map +2 -2
  255. package/dist/esm/action/client/subscription/ClientSubscription.d.ts +10 -5
  256. package/dist/esm/action/client/subscription/ClientSubscription.d.ts.map +1 -1
  257. package/dist/esm/action/client/subscription/ClientSubscription.js +22 -2
  258. package/dist/esm/action/client/subscription/ClientSubscription.js.map +2 -2
  259. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -3
  260. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  261. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts +4 -2
  262. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
  263. package/dist/esm/action/client/subscription/ClientSubscriptions.js +68 -8
  264. package/dist/esm/action/client/subscription/ClientSubscriptions.js.map +1 -1
  265. package/dist/esm/action/client/subscription/PeerSubscription.d.ts +0 -1
  266. package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  267. package/dist/esm/action/client/subscription/PeerSubscription.js +1 -2
  268. package/dist/esm/action/client/subscription/PeerSubscription.js.map +1 -1
  269. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +0 -2
  270. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  271. package/dist/esm/action/client/subscription/SustainedSubscription.js +2 -4
  272. package/dist/esm/action/client/subscription/SustainedSubscription.js.map +1 -1
  273. package/dist/esm/action/request/Invoke.js +2 -2
  274. package/dist/esm/action/request/Invoke.js.map +1 -1
  275. package/dist/esm/action/response/ReadResult.d.ts +1 -1
  276. package/dist/esm/action/response/ReadResult.d.ts.map +1 -1
  277. package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -1
  278. package/dist/esm/action/server/AttributeReadResponse.js +78 -25
  279. package/dist/esm/action/server/AttributeReadResponse.js.map +1 -1
  280. package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
  281. package/dist/esm/action/server/AttributeWriteResponse.js +70 -17
  282. package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
  283. package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
  284. package/dist/esm/action/server/CommandInvokeResponse.js +83 -30
  285. package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
  286. package/dist/esm/action/server/DataResponse.d.ts +1 -0
  287. package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
  288. package/dist/esm/action/server/DataResponse.js +3 -0
  289. package/dist/esm/action/server/DataResponse.js.map +1 -1
  290. package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
  291. package/dist/esm/action/server/ServerInteraction.js +4 -4
  292. package/dist/esm/action/server/ServerInteraction.js.map +1 -1
  293. package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
  294. package/dist/esm/advertisement/Advertisement.js +66 -14
  295. package/dist/esm/advertisement/Advertisement.js.map +1 -1
  296. package/dist/esm/advertisement/Advertiser.d.ts +4 -1
  297. package/dist/esm/advertisement/Advertiser.d.ts.map +1 -1
  298. package/dist/esm/advertisement/Advertiser.js +63 -2
  299. package/dist/esm/advertisement/Advertiser.js.map +1 -1
  300. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +6 -1
  301. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  302. package/dist/esm/advertisement/ble/BleAdvertiser.js +1 -1
  303. package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
  304. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
  305. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  306. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +1 -1
  307. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  308. package/dist/esm/certificate/kinds/Noc.d.ts.map +1 -1
  309. package/dist/esm/certificate/kinds/Noc.js +8 -6
  310. package/dist/esm/certificate/kinds/Noc.js.map +1 -1
  311. package/dist/esm/certificate/kinds/definitions/asn.js +2 -2
  312. package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
  313. package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -1
  314. package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
  315. package/dist/esm/cluster/client/AttributeClient.js +1 -1
  316. package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
  317. package/dist/esm/codec/MessageCodec.d.ts +8 -1
  318. package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
  319. package/dist/esm/codec/MessageCodec.js +39 -28
  320. package/dist/esm/codec/MessageCodec.js.map +2 -2
  321. package/dist/esm/common/FailsafeContext.d.ts +8 -9
  322. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  323. package/dist/esm/common/FailsafeContext.js +27 -33
  324. package/dist/esm/common/FailsafeContext.js.map +1 -1
  325. package/dist/esm/common/FailsafeTimer.d.ts +4 -3
  326. package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
  327. package/dist/esm/common/FailsafeTimer.js +4 -4
  328. package/dist/esm/common/FailsafeTimer.js.map +1 -1
  329. package/dist/esm/common/Mark.d.ts +17 -0
  330. package/dist/esm/common/Mark.d.ts.map +1 -0
  331. package/dist/esm/common/Mark.js +18 -0
  332. package/dist/esm/common/Mark.js.map +6 -0
  333. package/dist/esm/common/index.d.ts +1 -0
  334. package/dist/esm/common/index.d.ts.map +1 -1
  335. package/dist/esm/common/index.js +1 -0
  336. package/dist/esm/common/index.js.map +1 -1
  337. package/dist/esm/fabric/Fabric.d.ts +16 -8
  338. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  339. package/dist/esm/fabric/Fabric.js +36 -18
  340. package/dist/esm/fabric/Fabric.js.map +1 -1
  341. package/dist/esm/fabric/FabricAuthority.d.ts +2 -2
  342. package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
  343. package/dist/esm/fabric/FabricAuthority.js +5 -5
  344. package/dist/esm/fabric/FabricAuthority.js.map +1 -1
  345. package/dist/esm/fabric/FabricManager.d.ts +10 -14
  346. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  347. package/dist/esm/fabric/FabricManager.js +45 -40
  348. package/dist/esm/fabric/FabricManager.js.map +2 -2
  349. package/dist/esm/index.d.ts +1 -1
  350. package/dist/esm/index.d.ts.map +1 -1
  351. package/dist/esm/index.js +1 -1
  352. package/dist/esm/index.js.map +1 -1
  353. package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
  354. package/dist/esm/interaction/InteractionClient.d.ts +2 -2
  355. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  356. package/dist/esm/interaction/InteractionClient.js +39 -22
  357. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  358. package/dist/esm/interaction/InteractionMessenger.d.ts +2 -2
  359. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  360. package/dist/esm/interaction/InteractionMessenger.js +33 -28
  361. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  362. package/dist/esm/interaction/Subscription.d.ts +16 -37
  363. package/dist/esm/interaction/Subscription.d.ts.map +1 -1
  364. package/dist/esm/interaction/Subscription.js +16 -69
  365. package/dist/esm/interaction/Subscription.js.map +2 -2
  366. package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
  367. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  368. package/dist/esm/interaction/SubscriptionClient.js +2 -2
  369. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  370. package/dist/esm/mdns/MdnsClient.d.ts +10 -10
  371. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
  372. package/dist/esm/mdns/MdnsClient.js +166 -80
  373. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  374. package/dist/esm/mdns/MdnsServer.d.ts +2 -2
  375. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
  376. package/dist/esm/mdns/MdnsServer.js +176 -94
  377. package/dist/esm/mdns/MdnsServer.js.map +2 -2
  378. package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
  379. package/dist/esm/mdns/MdnsService.js +3 -2
  380. package/dist/esm/mdns/MdnsService.js.map +1 -1
  381. package/dist/esm/mdns/MdnsSocket.d.ts +3 -2
  382. package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -1
  383. package/dist/esm/mdns/MdnsSocket.js +2 -1
  384. package/dist/esm/mdns/MdnsSocket.js.map +1 -1
  385. package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
  386. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  387. package/dist/esm/peer/ControllerCommissioner.js +26 -28
  388. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  389. package/dist/esm/peer/ControllerDiscovery.d.ts +1 -1
  390. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
  391. package/dist/esm/peer/ControllerDiscovery.js +1 -1
  392. package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
  393. package/dist/esm/peer/Peer.d.ts +57 -0
  394. package/dist/esm/peer/Peer.d.ts.map +1 -0
  395. package/dist/esm/peer/Peer.js +162 -0
  396. package/dist/esm/peer/Peer.js.map +6 -0
  397. package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
  398. package/dist/esm/peer/PeerAddress.js +6 -3
  399. package/dist/esm/peer/PeerAddress.js.map +1 -1
  400. package/dist/esm/peer/PeerAddressStore.d.ts +3 -3
  401. package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
  402. package/dist/{cjs/peer/OperationalPeer.d.ts → esm/peer/PeerDescriptor.d.ts} +14 -7
  403. package/dist/esm/peer/PeerDescriptor.d.ts.map +1 -0
  404. package/dist/esm/peer/PeerDescriptor.js +51 -0
  405. package/dist/esm/peer/PeerDescriptor.js.map +6 -0
  406. package/dist/esm/peer/PeerSet.d.ts +23 -26
  407. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  408. package/dist/esm/peer/PeerSet.js +173 -175
  409. package/dist/esm/peer/PeerSet.js.map +2 -2
  410. package/dist/esm/peer/index.d.ts +1 -1
  411. package/dist/esm/peer/index.d.ts.map +1 -1
  412. package/dist/esm/peer/index.js +1 -1
  413. package/dist/esm/protocol/DeviceAdvertiser.js +4 -4
  414. package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
  415. package/dist/esm/protocol/ExchangeManager.d.ts +6 -9
  416. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  417. package/dist/esm/protocol/ExchangeManager.js +303 -248
  418. package/dist/esm/protocol/ExchangeManager.js.map +2 -2
  419. package/dist/esm/protocol/ExchangeProvider.d.ts +9 -11
  420. package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
  421. package/dist/esm/protocol/ExchangeProvider.js +81 -37
  422. package/dist/esm/protocol/ExchangeProvider.js.map +2 -2
  423. package/dist/esm/protocol/MessageChannel.d.ts +6 -7
  424. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  425. package/dist/esm/protocol/MessageChannel.js +22 -18
  426. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  427. package/dist/esm/protocol/MessageCounter.d.ts +4 -4
  428. package/dist/esm/protocol/MessageCounter.d.ts.map +1 -1
  429. package/dist/esm/protocol/MessageCounter.js +7 -7
  430. package/dist/esm/protocol/MessageCounter.js.map +1 -1
  431. package/dist/esm/protocol/MessageExchange.d.ts +31 -20
  432. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  433. package/dist/esm/protocol/MessageExchange.js +318 -238
  434. package/dist/esm/protocol/MessageExchange.js.map +2 -2
  435. package/dist/esm/protocol/ProtocolMocks.d.ts +100 -0
  436. package/dist/esm/protocol/ProtocolMocks.d.ts.map +1 -0
  437. package/dist/esm/protocol/ProtocolMocks.js +230 -0
  438. package/dist/esm/protocol/ProtocolMocks.js.map +6 -0
  439. package/dist/esm/protocol/errors.d.ts +35 -0
  440. package/dist/esm/protocol/errors.d.ts.map +1 -0
  441. package/dist/esm/protocol/errors.js +30 -0
  442. package/dist/esm/protocol/errors.js.map +6 -0
  443. package/dist/esm/protocol/index.d.ts +2 -1
  444. package/dist/esm/protocol/index.d.ts.map +1 -1
  445. package/dist/esm/protocol/index.js +2 -1
  446. package/dist/esm/protocol/index.js.map +1 -1
  447. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -0
  448. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  449. package/dist/esm/securechannel/SecureChannelMessenger.js +3 -0
  450. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  451. package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
  452. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  453. package/dist/esm/session/GroupSession.d.ts +21 -10
  454. package/dist/esm/session/GroupSession.d.ts.map +1 -1
  455. package/dist/esm/session/GroupSession.js +41 -12
  456. package/dist/esm/session/GroupSession.js.map +1 -1
  457. package/dist/esm/session/NodeSession.d.ts +56 -50
  458. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  459. package/dist/esm/session/NodeSession.js +99 -105
  460. package/dist/esm/session/NodeSession.js.map +1 -1
  461. package/dist/esm/session/SecureSession.d.ts +4 -4
  462. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  463. package/dist/esm/session/SecureSession.js +1 -1
  464. package/dist/esm/session/SecureSession.js.map +1 -1
  465. package/dist/esm/session/Session.d.ts +82 -66
  466. package/dist/esm/session/Session.d.ts.map +1 -1
  467. package/dist/esm/session/Session.js +223 -45
  468. package/dist/esm/session/Session.js.map +1 -1
  469. package/dist/esm/session/SessionManager.d.ts +33 -36
  470. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  471. package/dist/esm/session/SessionManager.js +113 -157
  472. package/dist/esm/session/SessionManager.js.map +1 -1
  473. package/dist/esm/session/SessionParameters.d.ts +87 -0
  474. package/dist/esm/session/SessionParameters.d.ts.map +1 -0
  475. package/dist/esm/session/SessionParameters.js +61 -0
  476. package/dist/esm/session/SessionParameters.js.map +6 -0
  477. package/dist/{cjs/session/InsecureSession.d.ts → esm/session/UnsecuredSession.d.ts} +18 -16
  478. package/dist/esm/session/UnsecuredSession.d.ts.map +1 -0
  479. package/dist/esm/session/{InsecureSession.js → UnsecuredSession.js} +18 -18
  480. package/dist/esm/session/UnsecuredSession.js.map +6 -0
  481. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  482. package/dist/esm/session/case/CaseClient.js +5 -3
  483. package/dist/esm/session/case/CaseClient.js.map +1 -1
  484. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  485. package/dist/esm/session/case/CaseServer.js +14 -10
  486. package/dist/esm/session/case/CaseServer.js.map +1 -1
  487. package/dist/esm/session/index.d.ts +2 -1
  488. package/dist/esm/session/index.d.ts.map +1 -1
  489. package/dist/esm/session/index.js +2 -1
  490. package/dist/esm/session/index.js.map +1 -1
  491. package/dist/esm/session/pase/PaseClient.d.ts +3 -3
  492. package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
  493. package/dist/esm/session/pase/PaseClient.js +5 -3
  494. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  495. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  496. package/dist/esm/session/pase/PaseServer.js +13 -13
  497. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  498. package/package.json +6 -6
  499. package/src/action/client/ClientInteraction.ts +47 -13
  500. package/src/action/client/subscription/ClientSubscription.ts +30 -5
  501. package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
  502. package/src/action/client/subscription/ClientSubscriptions.ts +14 -3
  503. package/src/action/client/subscription/PeerSubscription.ts +2 -2
  504. package/src/action/client/subscription/SustainedSubscription.ts +2 -6
  505. package/src/action/request/Invoke.ts +2 -2
  506. package/src/action/response/ReadResult.ts +1 -1
  507. package/src/action/server/AttributeReadResponse.ts +2 -0
  508. package/src/action/server/AttributeWriteResponse.ts +2 -0
  509. package/src/action/server/CommandInvokeResponse.ts +1 -0
  510. package/src/action/server/DataResponse.ts +4 -0
  511. package/src/action/server/ServerInteraction.ts +4 -4
  512. package/src/advertisement/Advertisement.ts +6 -7
  513. package/src/advertisement/Advertiser.ts +12 -1
  514. package/src/advertisement/ble/BleAdvertiser.ts +7 -2
  515. package/src/advertisement/mdns/MdnsAdvertiser.ts +7 -1
  516. package/src/certificate/kinds/Noc.ts +12 -7
  517. package/src/certificate/kinds/definitions/asn.ts +2 -2
  518. package/src/certificate/kinds/definitions/attestation.ts +1 -0
  519. package/src/cluster/client/AttributeClient.ts +1 -1
  520. package/src/codec/MessageCodec.ts +39 -32
  521. package/src/common/FailsafeContext.ts +36 -39
  522. package/src/common/FailsafeTimer.ts +7 -6
  523. package/src/common/Mark.ts +17 -0
  524. package/src/common/index.ts +1 -0
  525. package/src/fabric/Fabric.ts +51 -23
  526. package/src/fabric/FabricAuthority.ts +4 -4
  527. package/src/fabric/FabricManager.ts +53 -40
  528. package/src/index.ts +3 -1
  529. package/src/interaction/InteractionClient.ts +40 -23
  530. package/src/interaction/InteractionMessenger.ts +38 -32
  531. package/src/interaction/Subscription.ts +20 -92
  532. package/src/interaction/SubscriptionClient.ts +3 -3
  533. package/src/mdns/MdnsClient.ts +20 -3
  534. package/src/mdns/MdnsServer.ts +13 -1
  535. package/src/mdns/MdnsService.ts +3 -2
  536. package/src/mdns/MdnsSocket.ts +9 -3
  537. package/src/peer/ControllerCommissioner.ts +35 -37
  538. package/src/peer/ControllerDiscovery.ts +1 -1
  539. package/src/peer/Peer.ts +161 -0
  540. package/src/peer/PeerAddress.ts +6 -2
  541. package/src/peer/PeerAddressStore.ts +3 -3
  542. package/src/peer/PeerDescriptor.ts +89 -0
  543. package/src/peer/PeerSet.ts +145 -213
  544. package/src/peer/index.ts +1 -1
  545. package/src/protocol/DeviceAdvertiser.ts +4 -4
  546. package/src/protocol/ExchangeManager.ts +149 -178
  547. package/src/protocol/ExchangeProvider.ts +31 -40
  548. package/src/protocol/MessageChannel.ts +29 -18
  549. package/src/protocol/MessageCounter.ts +8 -8
  550. package/src/protocol/MessageExchange.ts +181 -144
  551. package/src/protocol/ProtocolMocks.ts +302 -0
  552. package/src/protocol/errors.ts +44 -0
  553. package/src/protocol/index.ts +2 -1
  554. package/src/securechannel/SecureChannelMessenger.ts +4 -0
  555. package/src/securechannel/SecureChannelProtocol.ts +2 -2
  556. package/src/session/GroupSession.ts +67 -23
  557. package/src/session/NodeSession.ts +140 -136
  558. package/src/session/SecureSession.ts +6 -5
  559. package/src/session/Session.ts +234 -101
  560. package/src/session/SessionManager.ts +148 -187
  561. package/src/session/SessionParameters.ts +108 -0
  562. package/src/session/{InsecureSession.ts → UnsecuredSession.ts} +28 -26
  563. package/src/session/case/CaseClient.ts +6 -3
  564. package/src/session/case/CaseServer.ts +15 -11
  565. package/src/session/index.ts +2 -1
  566. package/src/session/pase/PaseClient.ts +12 -5
  567. package/src/session/pase/PaseServer.ts +14 -13
  568. package/dist/cjs/peer/OperationalPeer.d.ts.map +0 -1
  569. package/dist/cjs/peer/OperationalPeer.js.map +0 -6
  570. package/dist/cjs/protocol/ChannelManager.d.ts +0 -29
  571. package/dist/cjs/protocol/ChannelManager.d.ts.map +0 -1
  572. package/dist/cjs/protocol/ChannelManager.js +0 -178
  573. package/dist/cjs/protocol/ChannelManager.js.map +0 -6
  574. package/dist/cjs/session/InsecureSession.d.ts.map +0 -1
  575. package/dist/cjs/session/InsecureSession.js.map +0 -6
  576. package/dist/esm/peer/OperationalPeer.d.ts +0 -38
  577. package/dist/esm/peer/OperationalPeer.d.ts.map +0 -1
  578. package/dist/esm/peer/OperationalPeer.js +0 -6
  579. package/dist/esm/peer/OperationalPeer.js.map +0 -6
  580. package/dist/esm/protocol/ChannelManager.d.ts +0 -29
  581. package/dist/esm/protocol/ChannelManager.d.ts.map +0 -1
  582. package/dist/esm/protocol/ChannelManager.js +0 -158
  583. package/dist/esm/protocol/ChannelManager.js.map +0 -6
  584. package/dist/esm/session/InsecureSession.d.ts.map +0 -1
  585. package/dist/esm/session/InsecureSession.js.map +0 -6
  586. package/src/protocol/ChannelManager.ts +0 -180
@@ -1,31 +1,72 @@
1
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
2
+ var __typeError = (msg) => {
3
+ throw TypeError(msg);
4
+ };
5
+ var __using = (stack, value, async) => {
6
+ if (value != null) {
7
+ if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
8
+ var dispose, inner;
9
+ if (async) dispose = value[__knownSymbol("asyncDispose")];
10
+ if (dispose === void 0) {
11
+ dispose = value[__knownSymbol("dispose")];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") __typeError("Object not disposable");
15
+ if (inner) dispose = function() {
16
+ try {
17
+ inner.call(this);
18
+ } catch (e) {
19
+ return Promise.reject(e);
20
+ }
21
+ };
22
+ stack.push([async, dispose, value]);
23
+ } else if (async) {
24
+ stack.push([async]);
25
+ }
26
+ return value;
27
+ };
28
+ var __callDispose = (stack, error, hasError) => {
29
+ var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
30
+ return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
31
+ };
32
+ var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
33
+ var next = (it) => {
34
+ while (it = stack.pop()) {
35
+ try {
36
+ var result = it[1] && it[1].call(it[2]);
37
+ if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
38
+ } catch (e) {
39
+ fail(e);
40
+ }
41
+ }
42
+ if (hasError) throw error;
43
+ };
44
+ return next();
45
+ };
1
46
  /**
2
47
  * @license
3
48
  * Copyright 2022-2025 Matter.js Authors
4
49
  * SPDX-License-Identifier: Apache-2.0
5
50
  */
6
- import { MessageCodec, SessionType } from "#codec/MessageCodec.js";
51
+ import { Message, SessionType } from "#codec/MessageCodec.js";
52
+ import { Mark } from "#common/Mark.js";
7
53
  import {
8
- AsyncObservable,
54
+ AsyncObservableValue,
9
55
  createPromise,
10
56
  CRYPTO_AEAD_MIC_LENGTH_BYTES,
11
57
  DataReadQueue,
12
58
  Diagnostic,
13
59
  Duration,
60
+ hex,
14
61
  Instant,
15
62
  InternalError,
16
63
  Logger,
17
- MatterError,
18
64
  MatterFlowError,
19
65
  Millis,
20
- NoResponseTimeoutError,
21
66
  Time
22
67
  } from "#general";
23
- import {
24
- ChannelNotConnectedError,
25
- DEFAULT_EXPECTED_PROCESSING_TIME,
26
- MRP
27
- } from "#protocol/MessageChannel.js";
28
68
  import { GroupSession } from "#session/GroupSession.js";
69
+ import { Session } from "#session/Session.js";
29
70
  import {
30
71
  GroupId,
31
72
  SECURE_CHANNEL_PROTOCOL_ID,
@@ -33,87 +74,45 @@ import {
33
74
  StatusCode,
34
75
  StatusResponseError
35
76
  } from "#types";
77
+ import { RetransmissionLimitReachedError, SessionClosedError, UnexpectedMessageError } from "./errors.js";
78
+ import { DEFAULT_EXPECTED_PROCESSING_TIME, MRP } from "./MessageChannel.js";
36
79
  const logger = Logger.get("MessageExchange");
37
- class RetransmissionLimitReachedError extends NoResponseTimeoutError {
38
- }
39
- class UnexpectedMessageError extends MatterError {
40
- constructor(message, receivedMessage) {
41
- super(`(${MessageCodec.messageDiagnostics(receivedMessage)}) ${message}`);
42
- this.receivedMessage = receivedMessage;
43
- }
44
- }
45
80
  const MATTER_MESSAGE_OVERHEAD = 26 + 12 + CRYPTO_AEAD_MIC_LENGTH_BYTES;
46
81
  class MessageExchange {
47
- constructor(context, isInitiator, peerSessionId, nodeId, peerNodeId, exchangeId, protocolId, requiresSecureSession) {
48
- this.context = context;
49
- this.isInitiator = isInitiator;
50
- this.requiresSecureSession = requiresSecureSession;
51
- const { channel } = context;
52
- const { session } = channel;
53
- this.#peerSessionId = peerSessionId;
54
- this.#nodeId = nodeId;
55
- this.#peerNodeId = peerNodeId;
56
- this.#exchangeId = exchangeId;
57
- this.#protocolId = protocolId;
58
- const { activeThreshold, activeInterval, idleInterval } = this.session.parameters;
59
- this.#used = !isInitiator;
60
- logger.debug(
61
- "New exchange",
62
- isInitiator ? "\xBB" : "\xAB",
63
- channel.name,
64
- Diagnostic.dict({
65
- protocol: this.#protocolId,
66
- exId: this.#exchangeId,
67
- sess: session.name,
68
- peerSess: this.#peerSessionId,
69
- SAT: Duration.format(activeThreshold),
70
- SAI: Duration.format(activeInterval),
71
- SII: Duration.format(idleInterval),
72
- maxTrans: MRP.MAX_TRANSMISSIONS,
73
- exchangeFlags: Diagnostic.asFlags({
74
- MRP: this.channel.usesMrp,
75
- I: this.isInitiator
76
- })
77
- })
78
- );
79
- }
80
82
  static fromInitialMessage(context, initialMessage) {
81
- const {
82
- channel: { session }
83
- } = context;
84
- return new MessageExchange(
83
+ const { session } = context;
84
+ return new MessageExchange({
85
85
  context,
86
- false,
87
- session.id,
88
- initialMessage.packetHeader.destNodeId,
89
- initialMessage.packetHeader.sourceNodeId,
90
- initialMessage.payloadHeader.exchangeId,
91
- initialMessage.payloadHeader.protocolId,
92
- session.isSecure
93
- );
86
+ isInitiator: false,
87
+ peerSessionId: session.id,
88
+ nodeId: initialMessage.packetHeader.destNodeId,
89
+ peerNodeId: initialMessage.packetHeader.sourceNodeId,
90
+ exchangeId: initialMessage.payloadHeader.exchangeId,
91
+ protocolId: initialMessage.payloadHeader.protocolId
92
+ });
94
93
  }
95
94
  static initiate(context, exchangeId, protocolId) {
96
- const {
97
- channel: { session }
98
- } = context;
99
- return new MessageExchange(
95
+ const { session } = context;
96
+ return new MessageExchange({
100
97
  context,
101
- true,
102
- session.peerSessionId,
103
- session.nodeId,
104
- session.peerNodeId,
98
+ isInitiator: true,
99
+ peerSessionId: session.peerSessionId,
100
+ nodeId: session.nodeId,
101
+ peerNodeId: session.peerNodeId,
105
102
  exchangeId,
106
- protocolId,
107
- session.isSecure
108
- );
103
+ protocolId
104
+ });
109
105
  }
106
+ #context;
107
+ #isInitiator;
110
108
  #messagesQueue = new DataReadQueue();
109
+ #lifetime;
111
110
  #receivedMessageToAck;
112
- #receivedMessageAckTimer = Time.getTimer("Ack receipt timeout", MRP.STANDALONE_ACK_TIMEOUT, () => {
111
+ #receivedMessageAckTimer = Time.getTimer("ack receipt timeout", MRP.STANDALONE_ACK_TIMEOUT, () => {
113
112
  if (this.#receivedMessageToAck !== void 0) {
114
113
  const messageToAck = this.#receivedMessageToAck;
115
114
  this.#receivedMessageToAck = void 0;
116
- this.sendStandaloneAckForMessage(messageToAck).catch(
115
+ this.#sendStandaloneAckForMessage(messageToAck).catch(
117
116
  (error) => logger.error("An error happened when sending a standalone ack", error)
118
117
  );
119
118
  }
@@ -124,7 +123,7 @@ class MessageExchange {
124
123
  #retransmissionTimer;
125
124
  #retransmissionCounter = 0;
126
125
  #closeTimer;
127
- #isClosing = false;
126
+ #isDestroyed = false;
128
127
  #timedInteractionTimer;
129
128
  #used;
130
129
  #peerSessionId;
@@ -132,8 +131,46 @@ class MessageExchange {
132
131
  #peerNodeId;
133
132
  #exchangeId;
134
133
  #protocolId;
135
- #closed = AsyncObservable();
136
- #closing = AsyncObservable();
134
+ #closed = AsyncObservableValue();
135
+ #closing = AsyncObservableValue();
136
+ constructor(config) {
137
+ const { context, isInitiator, peerSessionId, nodeId, peerNodeId, exchangeId, protocolId } = config;
138
+ this.#context = context;
139
+ this.#isInitiator = isInitiator;
140
+ this.#peerSessionId = peerSessionId;
141
+ this.#nodeId = nodeId;
142
+ this.#peerNodeId = peerNodeId;
143
+ this.#exchangeId = exchangeId;
144
+ this.#protocolId = protocolId;
145
+ const { activeThreshold, activeInterval, idleInterval } = this.session.parameters;
146
+ this.#used = !isInitiator;
147
+ const { session } = context;
148
+ logger.debug(
149
+ "New exchange",
150
+ isInitiator ? Mark.OUTBOUND : Mark.INBOUND,
151
+ this.via,
152
+ Diagnostic.dict({
153
+ protocol: this.#protocolId,
154
+ peerSess: Session.idStrOf(this.#peerSessionId),
155
+ SAT: Duration.format(activeThreshold),
156
+ SAI: Duration.format(activeInterval),
157
+ SII: Duration.format(idleInterval),
158
+ maxTrans: MRP.MAX_TRANSMISSIONS,
159
+ exchangeFlags: Diagnostic.asFlags({
160
+ MRP: this.session.usesMrp,
161
+ I: this.isInitiator
162
+ })
163
+ })
164
+ );
165
+ session.addExchange(this);
166
+ this.#lifetime = this.#context.session.join("exchange", Diagnostic.via(hex.word(this.id)));
167
+ }
168
+ get context() {
169
+ return this.#context;
170
+ }
171
+ get isInitiator() {
172
+ return this.#isInitiator;
173
+ }
137
174
  /** Emits when the exchange is actually closed. This happens after all Retries and Communication are done. */
138
175
  get closed() {
139
176
  return this.#closed;
@@ -146,16 +183,19 @@ class MessageExchange {
146
183
  return this.#closing;
147
184
  }
148
185
  get isClosing() {
149
- return this.#isClosing;
186
+ return this.#closing.value;
150
187
  }
151
188
  get id() {
152
189
  return this.#exchangeId;
153
190
  }
154
- get channel() {
155
- return this.context.channel;
191
+ get idStr() {
192
+ return hex.word(this.#exchangeId);
156
193
  }
157
194
  get session() {
158
- return this.channel.session;
195
+ return this.context.session;
196
+ }
197
+ get channel() {
198
+ return this.session.channel;
159
199
  }
160
200
  /**
161
201
  * Max Payload size of the exchange which bases on the maximum payload size of the channel reduced by Matter
@@ -164,20 +204,12 @@ class MessageExchange {
164
204
  get maxPayloadSize() {
165
205
  return this.channel.maxPayloadSize - MATTER_MESSAGE_OVERHEAD;
166
206
  }
167
- async sendStandaloneAckForMessage(message) {
168
- const {
169
- packetHeader: { messageId },
170
- payloadHeader: { requiresAck }
171
- } = message;
172
- if (!requiresAck || !this.channel.usesMrp) return;
173
- await this.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
174
- includeAcknowledgeMessageId: messageId,
175
- protocolId: SECURE_CHANNEL_PROTOCOL_ID
176
- });
207
+ join(...name) {
208
+ return this.#lifetime.join(...name);
177
209
  }
178
210
  async onMessageReceived(message, duplicate = false) {
179
- logger.debug("Message \xAB", MessageCodec.messageDiagnostics(message, { duplicate }));
180
- if (message.payloadHeader.requiresAck && !this.channel.usesMrp) {
211
+ logger.debug("Message", Mark.INBOUND, Message.diagnosticsOf(this, message, { duplicate }));
212
+ if (message.payloadHeader.requiresAck && !this.session.usesMrp) {
181
213
  logger.debug("Ignoring ack-required flag because MRP is not used for this exchange");
182
214
  message.payloadHeader.requiresAck = false;
183
215
  }
@@ -194,13 +226,21 @@ class MessageExchange {
194
226
  this.session.notifyActivity(true);
195
227
  if (duplicate) {
196
228
  if (requiresAck) {
197
- await this.sendStandaloneAckForMessage(message);
229
+ await this.#sendStandaloneAckForMessage(message);
198
230
  }
199
231
  return;
200
232
  }
201
233
  if (messageId === this.#sentMessageToAck?.payloadHeader.ackedMessageId) {
202
- await this.channel.send(this.#sentMessageToAck);
203
- return;
234
+ var _stack = [];
235
+ try {
236
+ const _acking = __using(_stack, this.join("resending ack"));
237
+ await this.channel.send(this.#sentMessageToAck);
238
+ return;
239
+ } catch (_) {
240
+ var _error = _, _hasError = true;
241
+ } finally {
242
+ __callDispose(_stack, _error, _hasError);
243
+ }
204
244
  }
205
245
  const sentMessageIdToAck = this.#sentMessageToAck?.packetHeader.messageId;
206
246
  if (sentMessageIdToAck !== void 0) {
@@ -231,126 +271,144 @@ class MessageExchange {
231
271
  if (requiresAck) {
232
272
  if (this.#receivedMessageToAck !== void 0) {
233
273
  this.#receivedMessageAckTimer.stop();
234
- await this.sendStandaloneAckForMessage(this.#receivedMessageToAck);
274
+ await this.#sendStandaloneAckForMessage(this.#receivedMessageToAck);
235
275
  return;
236
276
  }
237
277
  this.#receivedMessageToAck = message;
238
278
  this.#receivedMessageAckTimer.start();
239
279
  }
240
- await this.#messagesQueue.write(message);
280
+ this.#messagesQueue.write(message);
241
281
  }
242
- async send(messageType, payload, options) {
243
- if (options?.requiresAck && !this.channel.usesMrp) {
244
- options.requiresAck = false;
245
- }
246
- const {
247
- expectAckOnly = false,
248
- disableMrpLogic,
249
- expectedProcessingTime = DEFAULT_EXPECTED_PROCESSING_TIME,
250
- requiresAck,
251
- includeAcknowledgeMessageId,
252
- logContext,
253
- protocolId = this.#protocolId
254
- } = options ?? {};
255
- if (!this.channel.usesMrp && includeAcknowledgeMessageId !== void 0) {
256
- throw new InternalError("Cannot include an acknowledge message ID when MRP is not used");
257
- }
258
- const isStandaloneAck = SecureMessageType.isStandaloneAck(protocolId, messageType);
259
- if (isStandaloneAck) {
260
- if (!this.channel.usesMrp) {
261
- return;
282
+ async send(messageType, payload, options = {}) {
283
+ var _stack2 = [];
284
+ try {
285
+ const {
286
+ expectAckOnly = false,
287
+ disableMrpLogic,
288
+ expectedProcessingTime = DEFAULT_EXPECTED_PROCESSING_TIME,
289
+ includeAcknowledgeMessageId,
290
+ logContext,
291
+ protocolId = this.#protocolId
292
+ } = options;
293
+ if (!this.session.usesMrp && includeAcknowledgeMessageId !== void 0) {
294
+ throw new InternalError("Cannot include an acknowledge message ID when MRP is not used");
262
295
  }
263
- if (requiresAck) {
264
- throw new MatterFlowError("A standalone ack may not require acknowledgement.");
296
+ let { requiresAck } = options;
297
+ if (requiresAck && !(this.session.usesMrp || this.session.isPeerLost)) {
298
+ requiresAck = false;
265
299
  }
266
- }
267
- if (this.#sentMessageToAck !== void 0 && !isStandaloneAck) {
268
- throw new MatterFlowError("The previous message has not been acked yet, cannot send a new message.");
269
- }
270
- this.#used = true;
271
- this.session.notifyActivity(false);
272
- let ackedMessageId = includeAcknowledgeMessageId;
273
- if (ackedMessageId === void 0 && this.channel.usesMrp) {
274
- ackedMessageId = this.#receivedMessageToAck?.packetHeader.messageId;
275
- if (ackedMessageId !== void 0) {
276
- this.#receivedMessageAckTimer.stop();
277
- this.#receivedMessageToAck = void 0;
300
+ const isStandaloneAck = SecureMessageType.isStandaloneAck(protocolId, messageType);
301
+ if (isStandaloneAck) {
302
+ if (!this.session.usesMrp) {
303
+ return;
304
+ }
305
+ if (requiresAck) {
306
+ throw new MatterFlowError("A standalone ack may not require acknowledgement.");
307
+ }
278
308
  }
279
- }
280
- let packetHeader;
281
- if (this.session.type === SessionType.Unicast) {
282
- packetHeader = {
283
- sessionId: this.#peerSessionId,
284
- sessionType: SessionType.Unicast,
285
- messageId: await this.session.getIncrementedMessageCounter(),
286
- destNodeId: this.#peerNodeId,
287
- sourceNodeId: this.#nodeId,
288
- hasPrivacyEnhancements: false,
289
- isControlMessage: false,
290
- hasMessageExtensions: false
291
- };
292
- } else if (this.session.type === SessionType.Group) {
293
- const session = this.session;
294
- if (!GroupSession.is(session)) {
295
- throw new InternalError("Session is not a GroupSession, but session type is Group.");
309
+ if (this.#sentMessageToAck !== void 0 && !isStandaloneAck) {
310
+ throw new MatterFlowError("The previous message has not been acked yet, cannot send a new message.");
311
+ }
312
+ this.#used = true;
313
+ this.session.notifyActivity(false);
314
+ let ackedMessageId = includeAcknowledgeMessageId;
315
+ if (ackedMessageId === void 0 && this.session.usesMrp) {
316
+ ackedMessageId = this.#receivedMessageToAck?.packetHeader.messageId;
317
+ if (ackedMessageId !== void 0) {
318
+ this.#receivedMessageAckTimer.stop();
319
+ this.#receivedMessageToAck = void 0;
320
+ }
296
321
  }
297
- const destGroupId = GroupId.fromNodeId(this.#peerNodeId);
298
- if (destGroupId === 0) {
299
- throw new InternalError(`Invalid GroupId extracted from NodeId ${this.#peerNodeId}`);
322
+ let packetHeader;
323
+ if (this.session.type === SessionType.Unicast) {
324
+ packetHeader = {
325
+ sessionId: this.#peerSessionId,
326
+ sessionType: SessionType.Unicast,
327
+ messageId: await this.session.getIncrementedMessageCounter(),
328
+ destNodeId: this.#peerNodeId,
329
+ sourceNodeId: this.#nodeId,
330
+ hasPrivacyEnhancements: false,
331
+ isControlMessage: false,
332
+ hasMessageExtensions: false
333
+ };
334
+ } else if (this.session.type === SessionType.Group) {
335
+ const session = this.session;
336
+ if (!GroupSession.is(session)) {
337
+ throw new InternalError("Session is not a GroupSession, but session type is Group.");
338
+ }
339
+ const destGroupId = GroupId.fromNodeId(this.#peerNodeId);
340
+ if (destGroupId === 0) {
341
+ throw new InternalError(`Invalid GroupId extracted from NodeId ${this.#peerNodeId}`);
342
+ }
343
+ packetHeader = {
344
+ sessionId: this.#peerSessionId,
345
+ sessionType: SessionType.Group,
346
+ messageId: await session.getIncrementedMessageCounter(),
347
+ destGroupId,
348
+ sourceNodeId: this.#nodeId,
349
+ // We are the source node, so use our NodeId
350
+ hasPrivacyEnhancements: false,
351
+ isControlMessage: false,
352
+ hasMessageExtensions: false
353
+ };
354
+ } else {
355
+ throw new InternalError(`Unknown session type: ${this.session.type}`);
300
356
  }
301
- packetHeader = {
302
- sessionId: this.#peerSessionId,
303
- sessionType: SessionType.Group,
304
- messageId: await session.getIncrementedMessageCounter(),
305
- destGroupId,
306
- sourceNodeId: this.#nodeId,
307
- // We are the source node, so use our NodeId
308
- hasPrivacyEnhancements: false,
309
- isControlMessage: false,
310
- hasMessageExtensions: false
357
+ const message = {
358
+ packetHeader,
359
+ payloadHeader: {
360
+ exchangeId: this.#exchangeId,
361
+ protocolId,
362
+ messageType,
363
+ isInitiatorMessage: this.isInitiator,
364
+ requiresAck: requiresAck ?? (this.session.usesMrp && !isStandaloneAck),
365
+ ackedMessageId,
366
+ hasSecuredExtension: false
367
+ },
368
+ payload
311
369
  };
312
- } else {
313
- throw new InternalError(`Unknown session type: ${this.session.type}`);
314
- }
315
- const message = {
316
- packetHeader,
317
- payloadHeader: {
318
- exchangeId: this.#exchangeId,
319
- protocolId,
320
- messageType,
321
- isInitiatorMessage: this.isInitiator,
322
- requiresAck: requiresAck ?? (this.channel.usesMrp && !isStandaloneAck),
323
- ackedMessageId,
324
- hasSecuredExtension: false
325
- },
326
- payload
327
- };
328
- let ackPromise;
329
- if (this.channel.usesMrp && message.payloadHeader.requiresAck && !disableMrpLogic) {
330
- this.#sentMessageToAck = message;
331
- this.#retransmissionTimer = Time.getTimer(
332
- `Message retransmission ${message.packetHeader.messageId}`,
333
- this.channel.getMrpResubmissionBackOffTime(0),
334
- () => this.#retransmitMessage(message, expectedProcessingTime)
335
- );
336
- const { promise, resolver, rejecter } = createPromise();
337
- ackPromise = promise;
338
- this.#sentMessageAckSuccess = resolver;
339
- this.#sentMessageAckFailure = rejecter;
340
- }
341
- await this.channel.send(message, logContext);
342
- if (ackPromise !== void 0) {
343
- this.#retransmissionCounter = 0;
344
- this.#retransmissionTimer?.start();
345
- const responseMessage = await ackPromise;
346
- this.#sentMessageAckSuccess = void 0;
347
- this.#sentMessageAckFailure = void 0;
348
- const {
349
- payloadHeader: { protocolId: protocolId2, messageType: messageType2 }
350
- } = responseMessage;
351
- if (expectAckOnly && !SecureMessageType.isStandaloneAck(protocolId2, messageType2)) {
352
- throw new UnexpectedMessageError("Expected ack only", responseMessage);
370
+ let ackPromise;
371
+ if (this.session.usesMrp && message.payloadHeader.requiresAck && !disableMrpLogic) {
372
+ this.#sentMessageToAck = message;
373
+ this.#retransmissionTimer = Time.getTimer(
374
+ `retransmitting ${Message.via(this, message)}`,
375
+ this.channel.getMrpResubmissionBackOffTime(0),
376
+ () => this.#retransmitMessage(message, expectedProcessingTime)
377
+ );
378
+ const { promise, resolver, rejecter } = createPromise();
379
+ ackPromise = promise;
380
+ this.#sentMessageAckSuccess = resolver;
381
+ this.#sentMessageAckFailure = rejecter;
382
+ }
383
+ const sending = __using(_stack2, this.join("sending", Diagnostic.strong(Message.via(this, message))));
384
+ await this.channel.send(message, logContext);
385
+ if (ackPromise !== void 0) {
386
+ var _stack = [];
387
+ try {
388
+ this.#retransmissionCounter = 0;
389
+ this.#retransmissionTimer?.start();
390
+ const _waiting = __using(_stack, sending.join("waiting for ack"));
391
+ const responseMessage = await ackPromise;
392
+ this.#sentMessageAckSuccess = void 0;
393
+ this.#sentMessageAckFailure = void 0;
394
+ if (responseMessage) {
395
+ const {
396
+ payloadHeader: { protocolId: protocolId2, messageType: messageType2 }
397
+ } = responseMessage;
398
+ if (expectAckOnly && !SecureMessageType.isStandaloneAck(protocolId2, messageType2)) {
399
+ throw new UnexpectedMessageError("Expected ack only", this.session, responseMessage);
400
+ }
401
+ }
402
+ } catch (_) {
403
+ var _error = _, _hasError = true;
404
+ } finally {
405
+ __callDispose(_stack, _error, _hasError);
406
+ }
353
407
  }
408
+ } catch (_2) {
409
+ var _error2 = _2, _hasError2 = true;
410
+ } finally {
411
+ __callDispose(_stack2, _error2, _hasError2);
354
412
  }
355
413
  }
356
414
  nextMessage(options) {
@@ -368,10 +426,21 @@ class MessageExchange {
368
426
  }
369
427
  return this.#messagesQueue.read(timeout);
370
428
  }
429
+ async #sendStandaloneAckForMessage(message) {
430
+ const {
431
+ packetHeader: { messageId },
432
+ payloadHeader: { requiresAck }
433
+ } = message;
434
+ if (!requiresAck || !this.session.usesMrp) return;
435
+ await this.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
436
+ includeAcknowledgeMessageId: messageId,
437
+ protocolId: SECURE_CHANNEL_PROTOCOL_ID
438
+ });
439
+ }
371
440
  #retransmitMessage(message, expectedProcessingTime) {
372
441
  this.#retransmissionCounter++;
373
- if (this.#isClosing || this.#retransmissionCounter >= MRP.MAX_TRANSMISSIONS) {
374
- if (expectedProcessingTime && !this.#isClosing) {
442
+ if (this.isClosing || this.#retransmissionCounter >= MRP.MAX_TRANSMISSIONS) {
443
+ if (expectedProcessingTime && !this.isClosing) {
375
444
  const finalWaitTime = Millis(
376
445
  this.channel.calculateMaximumPeerResponseTime(
377
446
  this.session.parameters,
@@ -382,10 +451,10 @@ class MessageExchange {
382
451
  if (finalWaitTime > 0) {
383
452
  this.#retransmissionCounter--;
384
453
  logger.debug(
385
- `Message ${message.packetHeader.messageId}: Wait additional ${Duration.format(finalWaitTime)} for processing time and peer resubmissions after all our resubmissions`
454
+ `Message ${Message.via(this, message)}: Wait additional ${Duration.format(finalWaitTime)} for processing time and peer resubmissions after all our resubmissions`
386
455
  );
387
456
  this.#retransmissionTimer = Time.getTimer(
388
- `Message wait time after resubmissions ${message.packetHeader.messageId}`,
457
+ `waiting after resubmissions for ${Message.via(this, message)}`,
389
458
  finalWaitTime,
390
459
  () => this.#retransmitMessage(message)
391
460
  ).start();
@@ -399,7 +468,7 @@ class MessageExchange {
399
468
  this.#sentMessageAckSuccess = void 0;
400
469
  }
401
470
  if (this.#closeTimer !== void 0) {
402
- this.#close().catch((error) => logger.error("An error happened when closing the exchange", error));
471
+ this.#close().catch((error) => logger.error("Error closing exchange", error));
403
472
  }
404
473
  return;
405
474
  }
@@ -407,11 +476,11 @@ class MessageExchange {
407
476
  this.context.retry(this.#retransmissionCounter);
408
477
  const resubmissionBackoffTime = this.channel.getMrpResubmissionBackOffTime(this.#retransmissionCounter);
409
478
  logger.debug(
410
- `Resubmit message ${message.packetHeader.messageId} (retransmission attempt ${this.#retransmissionCounter}, backoff time ${Duration.format(resubmissionBackoffTime)}))`
479
+ `Resubmitting ${Message.via(this, message)} (retransmission attempt ${this.#retransmissionCounter}, backoff time ${Duration.format(resubmissionBackoffTime)}))`
411
480
  );
412
481
  this.channel.send(message).then(() => this.#initializeResubmission(message, resubmissionBackoffTime, expectedProcessingTime)).catch((error) => {
413
- logger.error("An error happened when retransmitting a message", error);
414
- if (error instanceof ChannelNotConnectedError) {
482
+ logger.error(`Error retransmitting ${Message.via(this, message)}:`, error);
483
+ if (error instanceof SessionClosedError) {
415
484
  this.#close().catch((error2) => logger.error("An error happened when closing the exchange", error2));
416
485
  } else {
417
486
  this.#initializeResubmission(message, resubmissionBackoffTime, expectedProcessingTime);
@@ -425,13 +494,20 @@ class MessageExchange {
425
494
  () => this.#retransmitMessage(message, expectedProcessingTimeMs)
426
495
  ).start();
427
496
  }
497
+ [Symbol.asyncDispose]() {
498
+ return this.destroy();
499
+ }
428
500
  async destroy() {
501
+ if (this.#isDestroyed) {
502
+ return;
503
+ }
504
+ this.#isDestroyed = true;
429
505
  if (this.#closeTimer === void 0 && this.#receivedMessageToAck !== void 0) {
430
506
  this.#receivedMessageAckTimer.stop();
431
507
  const messageToAck = this.#receivedMessageToAck;
432
508
  this.#receivedMessageToAck = void 0;
433
509
  try {
434
- await this.sendStandaloneAckForMessage(messageToAck);
510
+ await this.#sendStandaloneAckForMessage(messageToAck);
435
511
  } catch (error) {
436
512
  logger.error("An error happened when closing the exchange", error);
437
513
  }
@@ -447,7 +523,8 @@ class MessageExchange {
447
523
  );
448
524
  }
449
525
  logger.debug(
450
- "Starting timed interaction \xAB",
526
+ "Starting timed interaction",
527
+ Mark.INBOUND,
451
528
  this.channel.name,
452
529
  Diagnostic.dict({ exId: this.#exchangeId, timeout: Duration.format(timeout) })
453
530
  );
@@ -477,7 +554,11 @@ class MessageExchange {
477
554
  hasExpiredTimedInteraction() {
478
555
  return this.#timedInteractionTimer !== void 0 && !this.#timedInteractionTimer.isRunning;
479
556
  }
480
- async close(force = false) {
557
+ async close(force = this.isInitiator) {
558
+ if (this.#isDestroyed) {
559
+ return;
560
+ }
561
+ this.#lifetime.closing();
481
562
  if (this.#closeTimer !== void 0) {
482
563
  if (force) {
483
564
  this.#closeTimer.stop();
@@ -486,22 +567,18 @@ class MessageExchange {
486
567
  return;
487
568
  }
488
569
  if (!this.#used) {
489
- logger.info(`Exchange ${this.session.name} / ${this.#exchangeId} was never used, closing directly`);
570
+ logger.info(this.via, `Exchange never used, closing directly`);
490
571
  return this.#close();
491
572
  }
492
- this.#isClosing = true;
493
- this.#closing.emit();
573
+ await this.#closing.emit(true);
494
574
  if (this.#receivedMessageToAck !== void 0) {
495
575
  this.#receivedMessageAckTimer.stop();
496
576
  const messageToAck = this.#receivedMessageToAck;
497
577
  this.#receivedMessageToAck = void 0;
498
578
  try {
499
- await this.sendStandaloneAckForMessage(messageToAck);
579
+ await this.#sendStandaloneAckForMessage(messageToAck);
500
580
  } catch (error) {
501
- logger.error(
502
- `An error happened when closing the exchange ${this.session.name} / ${this.#exchangeId}`,
503
- error
504
- );
581
+ logger.error(this.via, `Unhandled error closing exchange`, error);
505
582
  }
506
583
  if (force) {
507
584
  return this.#close();
@@ -514,33 +591,36 @@ class MessageExchange {
514
591
  maxResubmissionTime = Millis(maxResubmissionTime + this.channel.getMrpResubmissionBackOffTime(i));
515
592
  }
516
593
  this.#closeTimer = Time.getTimer(
517
- `Message exchange cleanup ${this.session.name} / ${this.#exchangeId}`,
594
+ `Exchange ${this.via} close`,
518
595
  maxResubmissionTime,
519
596
  async () => await this.#close()
520
597
  ).start();
521
598
  }
522
599
  async #close() {
523
- if (!this.#isClosing) {
524
- this.#closing.emit();
600
+ var _stack = [];
601
+ try {
602
+ const _closing = __using(_stack, this.#lifetime.closing());
603
+ this.#retransmissionTimer?.stop();
604
+ this.#sentMessageAckSuccess?.(void 0);
605
+ this.#closeTimer?.stop();
606
+ this.#timedInteractionTimer?.stop();
607
+ this.#messagesQueue.close();
608
+ await this.#closed.emit(true);
609
+ } catch (_) {
610
+ var _error = _, _hasError = true;
611
+ } finally {
612
+ __callDispose(_stack, _error, _hasError);
525
613
  }
526
- this.#isClosing = true;
527
- this.#retransmissionTimer?.stop();
528
- this.#closeTimer?.stop();
529
- this.#timedInteractionTimer?.stop();
530
- this.#messagesQueue.close();
531
- await this.#closed.emit();
532
614
  }
533
615
  get via() {
534
- if (this.session === void 0 || !this.session.isSecure) {
535
- return this.channel.name;
616
+ if (this.session === void 0) {
617
+ return Diagnostic.via(`${Mark.EXCHANGE}${this.idStr}`);
536
618
  }
537
- return Diagnostic.via(`${this.session.peerAddress.toString()}#${this.session.id}`);
619
+ return Diagnostic.via(`${this.session.via}${Mark.EXCHANGE}${this.idStr}`);
538
620
  }
539
621
  }
540
622
  export {
541
623
  MATTER_MESSAGE_OVERHEAD,
542
- MessageExchange,
543
- RetransmissionLimitReachedError,
544
- UnexpectedMessageError
624
+ MessageExchange
545
625
  };
546
626
  //# sourceMappingURL=MessageExchange.js.map