@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,78 +1,117 @@
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
51
  import { MessageCodec, SessionType } from "#codec/MessageCodec.js";
52
+ import { Mark } from "#common/Mark.js";
7
53
  import {
54
+ BasicMultiplex,
8
55
  Bytes,
9
56
  ConnectionlessTransportSet,
10
57
  Diagnostic,
11
58
  Entropy,
12
59
  Environmental,
60
+ hex,
13
61
  ImplementationError,
14
62
  Logger,
15
- MatterAggregateError,
16
- MatterError,
17
63
  MatterFlowError,
18
64
  ObserverGroup,
19
65
  UdpInterface,
20
66
  UnexpectedDataError
21
67
  } from "#general";
22
- import {
23
- ChannelNotConnectedError,
24
- DEFAULT_EXPECTED_PROCESSING_TIME
25
- } from "#protocol/MessageChannel.js";
68
+ import { DEFAULT_EXPECTED_PROCESSING_TIME } from "#protocol/MessageChannel.js";
26
69
  import { SecureChannelMessenger } from "#securechannel/SecureChannelMessenger.js";
27
- import { UNICAST_UNSECURE_SESSION_ID } from "#session/InsecureSession.js";
28
70
  import { NodeSession } from "#session/NodeSession.js";
71
+ import { Session } from "#session/Session.js";
29
72
  import { SessionManager } from "#session/SessionManager.js";
73
+ import { UNICAST_UNSECURE_SESSION_ID } from "#session/UnsecuredSession.js";
30
74
  import { NodeId, SECURE_CHANNEL_PROTOCOL_ID, SecureMessageType } from "#types";
31
- import { ChannelManager } from "./ChannelManager.js";
32
75
  import { MessageExchange } from "./MessageExchange.js";
33
76
  import { DuplicateMessageError } from "./MessageReceptionState.js";
34
77
  const logger = Logger.get("ExchangeManager");
35
78
  const MAXIMUM_CONCURRENT_OUTGOING_EXCHANGES_PER_SESSION = 30;
36
79
  class ExchangeManager {
80
+ #lifetime;
37
81
  #transports;
38
- #sessionManager;
39
- #channelManager;
82
+ #sessions;
40
83
  #exchangeCounter;
41
84
  #exchanges = /* @__PURE__ */ new Map();
42
85
  #protocols = /* @__PURE__ */ new Map();
43
86
  #listeners = /* @__PURE__ */ new Map();
44
- #closers = /* @__PURE__ */ new Set();
87
+ #workers;
45
88
  #observers = new ObserverGroup(this);
46
- #closing = false;
89
+ #sessionObservers = /* @__PURE__ */ new Map();
90
+ #isClosing = false;
47
91
  constructor(context) {
92
+ this.#lifetime = context.lifetime.join("exchanges");
93
+ this.#workers = new BasicMultiplex();
48
94
  this.#transports = context.netInterface;
49
- this.#sessionManager = context.sessionManager;
50
- this.#channelManager = context.channelManager;
95
+ this.#sessions = context.sessions;
51
96
  this.#exchangeCounter = new ExchangeCounter(context.entropy);
52
97
  for (const netInterface of this.#transports) {
53
- this.#addListener(netInterface);
98
+ this.#addTransport(netInterface);
54
99
  }
55
- this.#observers.on(this.#transports.added, this.#addListener);
56
- this.#observers.on(this.#transports.deleted, this.#deleteListener);
57
- this.#observers.on(this.#sessionManager.sessions.deleted, (session) => {
58
- if (!session.closingAfterExchangeFinished) {
59
- session.closer = this.#closeSession(session);
60
- }
61
- });
100
+ this.#observers.on(this.#transports.added, this.#addTransport);
101
+ this.#observers.on(this.#transports.deleted, this.#deleteTransport);
102
+ this.#observers.on(this.#sessions.sessions.added, this.#addSession);
103
+ this.#observers.on(this.#sessions.sessions.deleted, this.#deleteSession);
62
104
  }
63
105
  static [Environmental.create](env) {
64
106
  const instance = new ExchangeManager({
107
+ lifetime: env,
65
108
  entropy: env.get(Entropy),
66
109
  netInterface: env.get(ConnectionlessTransportSet),
67
- sessionManager: env.get(SessionManager),
68
- channelManager: env.get(ChannelManager)
110
+ sessions: env.get(SessionManager)
69
111
  });
70
112
  env.set(ExchangeManager, instance);
71
113
  return instance;
72
114
  }
73
- get channels() {
74
- return this.#channelManager;
75
- }
76
115
  hasProtocolHandler(protocolId) {
77
116
  return this.#protocols.has(protocolId);
78
117
  }
@@ -86,226 +125,216 @@ class ExchangeManager {
86
125
  this.#protocols.set(protocol.id, protocol);
87
126
  }
88
127
  initiateExchange(address, protocolId) {
89
- return this.initiateExchangeWithChannel(this.#channelManager.getChannel(address), protocolId);
128
+ return this.initiateExchangeForSession(this.#sessions.sessionFor(address), protocolId);
90
129
  }
91
- initiateExchangeWithChannel(channel, protocolId) {
130
+ initiateExchangeForSession(session, protocolId) {
92
131
  const exchangeId = this.#exchangeCounter.getIncrementedCounter();
93
132
  const exchangeIndex = exchangeId | 65536;
94
- const exchange = MessageExchange.initiate(this.#messageExchangeContextFor(channel), exchangeId, protocolId);
133
+ const exchange = MessageExchange.initiate(this.#messageExchangeContextFor(session), exchangeId, protocolId);
95
134
  this.#addExchange(exchangeIndex, exchange);
96
135
  return exchange;
97
136
  }
98
137
  async close() {
99
- this.#closing = true;
100
- for (const protocol of this.#protocols.values()) {
101
- await protocol.close();
102
- }
103
- for (const listeners of this.#listeners.keys()) {
104
- this.#deleteListener(listeners);
105
- }
106
- await MatterAggregateError.allSettled(this.#closers, "Error closing exchanges").catch(
107
- (error) => logger.error(error)
108
- );
109
- await MatterAggregateError.allSettled(
110
- Array.from(this.#exchanges.values()).map((exchange) => exchange.close(true)),
111
- "Error closing exchanges"
112
- ).catch((error) => logger.error(error));
113
- this.#exchanges.clear();
114
- }
115
- async onMessage(channel, messageBytes) {
116
- const packet = MessageCodec.decodePacket(messageBytes);
117
- const bytes = Bytes.of(messageBytes);
118
- const aad = bytes.slice(0, bytes.length - packet.applicationPayload.byteLength);
119
- const messageId = packet.header.messageId;
120
- let isDuplicate;
121
- let session;
122
- let message;
123
- if (packet.header.sessionType === SessionType.Unicast) {
124
- if (packet.header.sessionId === UNICAST_UNSECURE_SESSION_ID) {
125
- if (this.#closing) return;
126
- const initiatorNodeId = packet.header.sourceNodeId ?? NodeId.UNSPECIFIED_NODE_ID;
127
- session = this.#sessionManager.getUnsecureSession(initiatorNodeId) ?? this.#sessionManager.createInsecureSession({
128
- initiatorNodeId
129
- });
130
- } else {
131
- session = this.#sessionManager.getSession(packet.header.sessionId);
138
+ var _stack3 = [];
139
+ try {
140
+ if (this.#isClosing) {
141
+ return;
132
142
  }
133
- if (session === void 0) {
134
- throw new MatterFlowError(
135
- `Cannot find a session for ID ${packet.header.sessionId}${packet.header.sourceNodeId !== void 0 ? ` and source NodeId ${packet.header.sourceNodeId}` : ""}`
136
- );
143
+ const closing = __using(_stack3, this.#lifetime.closing());
144
+ this.#isClosing = true;
145
+ const exchangesClosed = new BasicMultiplex();
146
+ for (const exchange of this.#exchanges.values()) {
147
+ exchangesClosed.add(exchange.close(true));
137
148
  }
138
- message = session.decode(packet, aad);
139
- try {
140
- session.updateMessageCounter(messageId);
141
- isDuplicate = false;
142
- } catch (e) {
143
- DuplicateMessageError.accept(e);
144
- isDuplicate = true;
149
+ {
150
+ var _stack = [];
151
+ try {
152
+ const _closing = __using(_stack, closing.join("exchanges"));
153
+ await exchangesClosed;
154
+ } catch (_) {
155
+ var _error = _, _hasError = true;
156
+ } finally {
157
+ __callDispose(_stack, _error, _hasError);
158
+ }
145
159
  }
146
- } else if (packet.header.sessionType === SessionType.Group) {
147
- if (this.#closing) return;
148
- if (packet.header.sourceNodeId === void 0) {
149
- throw new UnexpectedDataError("Group session message must include a source NodeId");
160
+ for (const listener of this.#listeners.keys()) {
161
+ this.#deleteTransport(listener);
150
162
  }
151
- let key;
152
- ({ session, message, key } = this.#sessionManager.groupSessionFromPacket(packet, aad));
153
- try {
154
- session.updateMessageCounter(messageId, packet.header.sourceNodeId, key);
155
- isDuplicate = false;
156
- } catch (e) {
157
- DuplicateMessageError.accept(e);
158
- isDuplicate = true;
163
+ for (const protocol of this.#protocols.values()) {
164
+ this.#workers.add(protocol.close());
159
165
  }
160
- } else {
161
- throw new MatterFlowError(`Unsupported session type: ${packet.header.sessionType}`);
162
- }
163
- const exchangeIndex = message.payloadHeader.isInitiatorMessage ? message.payloadHeader.exchangeId : message.payloadHeader.exchangeId | 65536;
164
- let exchange = this.#exchanges.get(exchangeIndex);
165
- if (exchange !== void 0 && (exchange.session.id !== session.id || exchange.isInitiator === message.payloadHeader.isInitiatorMessage)) {
166
- exchange = void 0;
167
- }
168
- const isStandaloneAck = SecureMessageType.isStandaloneAck(
169
- message.payloadHeader.protocolId,
170
- message.payloadHeader.messageType
171
- );
172
- const messageDiagnostics = Diagnostic.dict({
173
- message: messageId,
174
- protocol: message.payloadHeader.protocolId,
175
- exId: message.payloadHeader.exchangeId,
176
- via: channel.name
177
- });
178
- if (exchange !== void 0) {
179
- if (exchange.requiresSecureSession !== session.isSecure || exchange.session.id !== packet.header.sessionId || exchange.isClosing && !isStandaloneAck) {
180
- logger.debug(
181
- "Ignore \xAB message because",
182
- exchange.isClosing ? "exchange is closing" : exchange.session.id !== packet.header.sessionId ? `session ID mismatch ${exchange.session.id} vs ${packet.header.sessionId}` : `session security requirements (${exchange.requiresSecureSession}) not fulfilled`,
183
- messageDiagnostics
184
- );
185
- await exchange.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
186
- includeAcknowledgeMessageId: message.packetHeader.messageId,
187
- protocolId: SECURE_CHANNEL_PROTOCOL_ID
188
- });
189
- await exchange.close();
190
- return;
166
+ {
167
+ var _stack2 = [];
168
+ try {
169
+ const _closing = __using(_stack2, closing.join("workers"));
170
+ await this.#workers;
171
+ } catch (_2) {
172
+ var _error2 = _2, _hasError2 = true;
173
+ } finally {
174
+ __callDispose(_stack2, _error2, _hasError2);
175
+ }
191
176
  }
192
- await exchange.onMessageReceived(message, isDuplicate);
193
- } else {
194
- if (this.#closing) return;
195
- if (session.closingAfterExchangeFinished) {
196
- throw new MatterFlowError(
197
- `Session with ID ${packet.header.sessionId} marked for closure, decline new exchange creation.`
198
- );
177
+ this.#exchanges.clear();
178
+ this.#observers.close();
179
+ } catch (_3) {
180
+ var _error3 = _3, _hasError3 = true;
181
+ } finally {
182
+ __callDispose(_stack3, _error3, _hasError3);
183
+ }
184
+ }
185
+ async #onMessage(channel, messageBytes) {
186
+ var _stack = [];
187
+ try {
188
+ const _lifetime = __using(_stack, this.#lifetime.join("receiving from", Diagnostic.strong(channel.name)));
189
+ const packet = MessageCodec.decodePacket(messageBytes);
190
+ const bytes = Bytes.of(messageBytes);
191
+ const aad = bytes.slice(0, bytes.length - packet.applicationPayload.byteLength);
192
+ const messageId = packet.header.messageId;
193
+ let isDuplicate;
194
+ let session;
195
+ let message;
196
+ if (packet.header.sessionType === SessionType.Unicast) {
197
+ if (packet.header.sessionId === UNICAST_UNSECURE_SESSION_ID) {
198
+ if (this.#isClosing) return;
199
+ const initiatorNodeId = packet.header.sourceNodeId ?? NodeId.UNSPECIFIED_NODE_ID;
200
+ session = this.#sessions.getUnsecuredSession(initiatorNodeId) ?? this.#sessions.createUnsecuredSession({
201
+ channel,
202
+ initiatorNodeId
203
+ });
204
+ } else {
205
+ session = this.#sessions.getSession(packet.header.sessionId);
206
+ }
207
+ if (session === void 0) {
208
+ logger.warn(
209
+ `Ignoring message for unknown session ${Session.idStrOf(packet)}${packet.header.sourceNodeId !== void 0 ? ` from node ${hex.fixed(packet.header.sourceNodeId, 16)}` : ""}`
210
+ );
211
+ return;
212
+ }
213
+ message = session.decode(packet, aad);
214
+ try {
215
+ session.updateMessageCounter(messageId);
216
+ isDuplicate = false;
217
+ } catch (e) {
218
+ DuplicateMessageError.accept(e);
219
+ isDuplicate = true;
220
+ }
221
+ } else if (packet.header.sessionType === SessionType.Group) {
222
+ if (this.#isClosing) return;
223
+ if (packet.header.sourceNodeId === void 0) {
224
+ throw new UnexpectedDataError("Group session message must include a source NodeId");
225
+ }
226
+ let key;
227
+ ({ session, message, key } = this.#sessions.groupSessionFromPacket(packet, aad));
228
+ try {
229
+ session.updateMessageCounter(messageId, packet.header.sourceNodeId, key);
230
+ isDuplicate = false;
231
+ } catch (e) {
232
+ DuplicateMessageError.accept(e);
233
+ isDuplicate = true;
234
+ }
235
+ } else {
236
+ throw new MatterFlowError(`Unsupported session type: ${packet.header.sessionType}`);
199
237
  }
200
- const protocolHandler = this.#protocols.get(message.payloadHeader.protocolId);
201
- const handlerSecurityMismatch = protocolHandler?.requiresSecureSession !== void 0 && protocolHandler.requiresSecureSession !== session.isSecure;
202
- if (handlerSecurityMismatch) {
203
- logger.debug(
204
- `Ignore \xAB message because not matching the security requirements (${protocolHandler.requiresSecureSession} vs. ${session.isSecure})`,
205
- messageDiagnostics
206
- );
238
+ const exchangeIndex = message.payloadHeader.isInitiatorMessage ? message.payloadHeader.exchangeId : message.payloadHeader.exchangeId | 65536;
239
+ let exchange = this.#exchanges.get(exchangeIndex);
240
+ if (exchange !== void 0 && (exchange.session.id !== session.id || exchange.isInitiator === message.payloadHeader.isInitiatorMessage)) {
241
+ exchange = void 0;
207
242
  }
208
- if (protocolHandler !== void 0 && message.payloadHeader.isInitiatorMessage && !isDuplicate && !handlerSecurityMismatch) {
209
- if (isStandaloneAck && !message.payloadHeader.requiresAck) {
210
- logger.debug("Ignore \xAB unsolicited standalone ack message", messageDiagnostics);
243
+ const isStandaloneAck = SecureMessageType.isStandaloneAck(
244
+ message.payloadHeader.protocolId,
245
+ message.payloadHeader.messageType
246
+ );
247
+ const messageDiagnostics = Diagnostic.dict({
248
+ message: messageId,
249
+ protocol: message.payloadHeader.protocolId,
250
+ exId: message.payloadHeader.exchangeId,
251
+ via: channel.name
252
+ });
253
+ if (exchange !== void 0) {
254
+ this.#lifetime.details.exchange = exchange.idStr;
255
+ if (exchange.session.id !== packet.header.sessionId || exchange.isClosing && !isStandaloneAck) {
256
+ logger.debug(
257
+ exchange.via,
258
+ "Ignore",
259
+ Mark.INBOUND,
260
+ "message because",
261
+ exchange.isClosing ? "exchange is closing" : `session ID mismatch (header session is ${Session.idStrOf(packet)}`,
262
+ messageDiagnostics
263
+ );
264
+ await exchange.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
265
+ includeAcknowledgeMessageId: message.packetHeader.messageId,
266
+ protocolId: SECURE_CHANNEL_PROTOCOL_ID
267
+ });
268
+ await exchange.close();
211
269
  return;
212
270
  }
213
- const exchange2 = MessageExchange.fromInitialMessage(
214
- this.#messageExchangeContextFor(await this.#channelManager.getOrCreateChannel(channel, session)),
215
- message
216
- );
217
- this.#addExchange(exchangeIndex, exchange2);
218
- await exchange2.onMessageReceived(message);
219
- await protocolHandler.onNewExchange(exchange2, message);
220
- } else if (message.payloadHeader.requiresAck) {
221
- const exchange2 = MessageExchange.fromInitialMessage(
222
- this.#messageExchangeContextFor(await this.#channelManager.getOrCreateChannel(channel, session)),
223
- message
224
- );
225
- this.#addExchange(exchangeIndex, exchange2);
226
- await exchange2.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
227
- includeAcknowledgeMessageId: message.packetHeader.messageId,
228
- protocolId: SECURE_CHANNEL_PROTOCOL_ID
229
- });
230
- await exchange2.close();
231
- logger.debug("Ignore \xAB unsolicited message", messageDiagnostics);
271
+ await exchange.onMessageReceived(message, isDuplicate);
232
272
  } else {
233
- if (protocolHandler === void 0) {
234
- throw new MatterFlowError(`Unsupported protocol ${message.payloadHeader.protocolId}`);
273
+ if (this.#isClosing) return;
274
+ if (session.isClosing) {
275
+ throw new MatterFlowError(
276
+ `Declining new exchange because session ${Session.idStrOf(packet)} is closing`
277
+ );
235
278
  }
236
- if (isDuplicate) {
237
- if (message.packetHeader.destGroupId === void 0) {
238
- logger.debug("Ignore \xAB duplicate message", messageDiagnostics);
239
- }
240
- return;
279
+ const protocolHandler = this.#protocols.get(message.payloadHeader.protocolId);
280
+ const handlerSecurityMismatch = protocolHandler?.requiresSecureSession !== void 0 && protocolHandler.requiresSecureSession !== session.isSecure;
281
+ if (handlerSecurityMismatch) {
282
+ logger.debug(
283
+ "Ignore",
284
+ Mark.INBOUND,
285
+ `message because not matching the security requirements (${protocolHandler.requiresSecureSession} vs. ${session.isSecure})`,
286
+ messageDiagnostics
287
+ );
241
288
  }
242
- if (!isStandaloneAck) {
243
- logger.info("Discard \xAB unexpected message", messageDiagnostics, Diagnostic.json(message));
289
+ if (protocolHandler !== void 0 && message.payloadHeader.isInitiatorMessage && !isDuplicate && !handlerSecurityMismatch) {
290
+ if (isStandaloneAck && !message.payloadHeader.requiresAck) {
291
+ logger.debug("Ignore", Mark.INBOUND, "unsolicited standalone ack message", messageDiagnostics);
292
+ return;
293
+ }
294
+ const exchange2 = MessageExchange.fromInitialMessage(this.#messageExchangeContextFor(session), message);
295
+ this.#lifetime.details.exchange = exchange2.idStr;
296
+ this.#addExchange(exchangeIndex, exchange2);
297
+ await exchange2.onMessageReceived(message);
298
+ await protocolHandler.onNewExchange(exchange2, message);
299
+ } else if (message.payloadHeader.requiresAck) {
300
+ const exchange2 = MessageExchange.fromInitialMessage(this.#messageExchangeContextFor(session), message);
301
+ this.#lifetime.details.exchange = exchange2.idStr;
302
+ this.#addExchange(exchangeIndex, exchange2);
303
+ await exchange2.send(SecureMessageType.StandaloneAck, new Uint8Array(0), {
304
+ includeAcknowledgeMessageId: message.packetHeader.messageId,
305
+ protocolId: SECURE_CHANNEL_PROTOCOL_ID
306
+ });
307
+ await exchange2.close();
308
+ logger.debug("Ignore", Mark.INBOUND, "unsolicited message", messageDiagnostics);
309
+ } else {
310
+ if (protocolHandler === void 0) {
311
+ throw new MatterFlowError(`Unsupported protocol ${message.payloadHeader.protocolId}`);
312
+ }
313
+ if (isDuplicate) {
314
+ if (message.packetHeader.destGroupId === void 0) {
315
+ logger.debug("Ignore", Mark.INBOUND, "duplicate message", messageDiagnostics);
316
+ }
317
+ return;
318
+ }
319
+ if (!isStandaloneAck) {
320
+ logger.info(
321
+ "Discard",
322
+ Mark.INBOUND,
323
+ "unexpected message",
324
+ messageDiagnostics,
325
+ Diagnostic.json(message)
326
+ );
327
+ }
244
328
  }
245
329
  }
330
+ } catch (_) {
331
+ var _error = _, _hasError = true;
332
+ } finally {
333
+ __callDispose(_stack, _error, _hasError);
246
334
  }
247
335
  }
248
336
  async deleteExchange(exchangeIndex) {
249
- const exchange = this.#exchanges.get(exchangeIndex);
250
- if (exchange === void 0) {
251
- logger.info(`Exchange with index ${exchangeIndex} to delete not found or already deleted.`);
252
- return;
253
- }
254
- const { session } = exchange;
255
337
  this.#exchanges.delete(exchangeIndex);
256
- if (NodeSession.is(session) && session.closingAfterExchangeFinished) {
257
- logger.debug(
258
- `Exchange index ${exchangeIndex} on Session ${session.name} is already marked for closure. Close session now.`
259
- );
260
- try {
261
- await this.#closeSession(session);
262
- } catch (error) {
263
- logger.error(`Error closing session ${session.name}. Ignoring.`, error);
264
- }
265
- }
266
- }
267
- async #closeSession(session) {
268
- const sessionId = session.id;
269
- const sessionName = session.name;
270
- const asExchangeSession = session;
271
- if (asExchangeSession.closedByExchange) {
272
- return;
273
- }
274
- asExchangeSession.closedByExchange = true;
275
- for (const [_exchangeIndex, exchange] of this.#exchanges.entries()) {
276
- if (exchange.session.id === sessionId) {
277
- await exchange.destroy();
278
- }
279
- }
280
- if (session.sendCloseMessageWhenClosing) {
281
- let channel;
282
- try {
283
- channel = this.#channelManager.getChannelForSession(session);
284
- } catch (e) {
285
- logger.debug(`Not sending close for session ${sessionName}:`, e);
286
- return;
287
- }
288
- logger.debug(`Channel for session ${sessionName} is ${channel?.name}`);
289
- if (channel !== void 0) {
290
- const exchange = this.initiateExchangeWithChannel(channel, SECURE_CHANNEL_PROTOCOL_ID);
291
- logger.debug(`Initiated exchange ${exchange.id} to close session ${sessionName}`);
292
- try {
293
- const messenger = new SecureChannelMessenger(exchange);
294
- await messenger.sendCloseSession();
295
- await messenger.close();
296
- } catch (error) {
297
- if (error instanceof ChannelNotConnectedError) {
298
- logger.debug("Session already closed because channel is disconnected.");
299
- } else {
300
- logger.error("Error closing session", error);
301
- }
302
- }
303
- await exchange.destroy();
304
- }
305
- }
306
- if (session.closingAfterExchangeFinished) {
307
- await session.destroy(false, false);
308
- }
309
338
  }
310
339
  #addExchange(exchangeIndex, exchange) {
311
340
  exchange.closed.on(() => this.deleteExchange(exchangeIndex));
@@ -324,25 +353,27 @@ class ExchangeManager {
324
353
  }
325
354
  const exchangeToClose = sessionExchanges[0];
326
355
  logger.info(
327
- `Closing oldest exchange ${exchangeToClose.id} for session ${sessionId} because of too many concurrent outgoing exchanges. Ensure to not send that many parallel messages to one peer.`
356
+ exchangeToClose.via,
357
+ `Closing oldest exchange for session because of too many concurrent outgoing exchanges. Ensure to not send that many parallel messages to one peer.`
328
358
  );
329
- exchangeToClose.close().catch((error) => logger.error("Error closing exchange", error));
359
+ logger.debug(exchangeToClose.via, "Closing oldest exchange");
360
+ this.#workers.add(exchangeToClose.close());
330
361
  }
331
- calculateMaximumPeerResponseTimeMsFor(channel, expectedProcessingTime = DEFAULT_EXPECTED_PROCESSING_TIME) {
332
- return channel.calculateMaximumPeerResponseTime(
333
- channel.session.parameters,
334
- this.#sessionManager.sessionParameters,
362
+ calculateMaximumPeerResponseTimeMsFor(session, expectedProcessingTime = DEFAULT_EXPECTED_PROCESSING_TIME) {
363
+ return session.channel.calculateMaximumPeerResponseTime(
364
+ session.parameters,
365
+ this.#sessions.sessionParameters,
335
366
  expectedProcessingTime
336
367
  );
337
368
  }
338
- #messageExchangeContextFor(channel) {
369
+ #messageExchangeContextFor(session) {
339
370
  return {
340
- channel,
341
- localSessionParameters: this.#sessionManager.sessionParameters,
342
- retry: (number) => this.#sessionManager.retry.emit(channel.session, number)
371
+ session,
372
+ localSessionParameters: this.#sessions.sessionParameters,
373
+ retry: (number) => this.#sessions.retry.emit(session, number)
343
374
  };
344
375
  }
345
- #addListener(netInterface) {
376
+ #addTransport(netInterface) {
346
377
  const udpInterface = netInterface instanceof UdpInterface;
347
378
  this.#listeners.set(
348
379
  netInterface,
@@ -353,30 +384,54 @@ class ExchangeManager {
353
384
  );
354
385
  return;
355
386
  }
356
- try {
357
- this.onMessage(socket, data).catch(
358
- (error) => logger.info(
359
- `Error on channel ${socket.name}:`,
360
- error instanceof MatterError ? error.message : error
361
- )
362
- );
363
- } catch (error) {
364
- logger.info(
365
- `Ignoring UDP message on channel ${socket.name} with error`,
366
- error instanceof MatterError ? error.message : error
367
- );
368
- }
387
+ this.#workers.add(this.#onMessage(socket, data));
369
388
  })
370
389
  );
371
390
  }
372
- #deleteListener(netInterface) {
391
+ #deleteTransport(netInterface) {
373
392
  const listener = this.#listeners.get(netInterface);
374
393
  if (listener === void 0) {
375
394
  return;
376
395
  }
377
396
  this.#listeners.delete(netInterface);
378
- const closer = listener.close().catch((e) => logger.error("Error closing network listener", e)).finally(() => this.#closers.delete(closer));
379
- this.#closers.add(closer);
397
+ this.#workers.add(listener.close());
398
+ }
399
+ #addSession(session) {
400
+ if (!(session instanceof NodeSession)) {
401
+ return;
402
+ }
403
+ let observers = this.#sessionObservers.get(session);
404
+ if (!observers) {
405
+ this.#sessionObservers.set(session, observers = new ObserverGroup());
406
+ }
407
+ observers.on(session.gracefulClose, () => this.#sendCloseSession(session));
408
+ }
409
+ #deleteSession(session) {
410
+ const observers = this.#sessionObservers.get(session);
411
+ if (!observers) {
412
+ return;
413
+ }
414
+ observers.close();
415
+ this.#sessionObservers.delete(session);
416
+ }
417
+ async #sendCloseSession(session) {
418
+ var _stack = [];
419
+ try {
420
+ const exchange = __using(_stack, this.initiateExchangeForSession(session, SECURE_CHANNEL_PROTOCOL_ID), true);
421
+ logger.debug(exchange.via, "Closing session");
422
+ try {
423
+ const messenger = new SecureChannelMessenger(exchange);
424
+ await messenger.sendCloseSession();
425
+ await messenger.close();
426
+ } catch (error) {
427
+ logger.error(exchange.via, "Error closing session:", error);
428
+ }
429
+ } catch (_) {
430
+ var _error = _, _hasError = true;
431
+ } finally {
432
+ var _promise = __callDispose(_stack, _error, _hasError);
433
+ _promise && await _promise;
434
+ }
380
435
  }
381
436
  }
382
437
  class ExchangeCounter {