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