@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,3 +1,48 @@
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
@@ -15,7 +60,6 @@ import {
15
60
  Duration,
16
61
  Environmental,
17
62
  ImplementationError,
18
- isIpNetworkChannel,
19
63
  isIPv6,
20
64
  Logger,
21
65
  MatterError,
@@ -23,21 +67,20 @@ import {
23
67
  NoResponseTimeoutError,
24
68
  Seconds,
25
69
  ServerAddress,
26
- STANDARD_MATTER_PORT,
27
70
  Time
28
71
  } from "#general";
29
72
  import { PeerAddress, PeerAddressMap } from "#peer/PeerAddress.js";
30
- import { ChannelManager } from "#protocol/ChannelManager.js";
73
+ import { RetransmissionLimitReachedError } from "#protocol/errors.js";
31
74
  import { ExchangeManager } from "#protocol/ExchangeManager.js";
32
75
  import { DedicatedChannelExchangeProvider, ReconnectableExchangeProvider } from "#protocol/ExchangeProvider.js";
33
- import { ChannelNotConnectedError, MessageChannel } from "#protocol/MessageChannel.js";
34
- import { RetransmissionLimitReachedError } from "#protocol/MessageExchange.js";
35
76
  import { ChannelStatusResponseError } from "#securechannel/SecureChannelMessenger.js";
36
77
  import { CaseClient } from "#session/case/CaseClient.js";
78
+ import { SecureSession } from "#session/SecureSession.js";
37
79
  import { SessionManager } from "#session/SessionManager.js";
38
- import { GroupId, NodeId, SECURE_CHANNEL_PROTOCOL_ID, SecureChannelStatusCode } from "#types";
80
+ import { NodeId, SECURE_CHANNEL_PROTOCOL_ID, SecureChannelStatusCode } from "#types";
39
81
  import { ControllerDiscovery, DiscoveryError, PairRetransmissionLimitReachedError } from "./ControllerDiscovery.js";
40
82
  import { InteractionQueue } from "./InteractionQueue.js";
83
+ import { Peer } from "./Peer.js";
41
84
  import { PeerAddressStore } from "./PeerAddressStore.js";
42
85
  const logger = Logger.get("PeerSet");
43
86
  const RECONNECTION_POLLING_INTERVAL = Minutes(10);
@@ -52,37 +95,42 @@ var NodeDiscoveryType = /* @__PURE__ */ ((NodeDiscoveryType2) => {
52
95
  class UnknownNodeError extends MatterError {
53
96
  }
54
97
  class PeerSet {
98
+ #lifetime;
55
99
  #sessions;
56
- #channels;
57
100
  #exchanges;
58
101
  #scanners;
59
102
  #transports;
60
103
  #caseClient;
61
104
  #peers = new BasicSet();
62
- #peersByAddress = new PeerAddressMap();
63
- #runningPeerDiscoveries = new PeerAddressMap();
64
- #runningPeerReconnections = new PeerAddressMap();
65
105
  #construction;
66
106
  #store;
67
107
  #interactionQueue = new InteractionQueue();
68
108
  #nodeCachedData = new PeerAddressMap();
69
109
  // Temporarily until we store it in new API
70
110
  #disconnected = AsyncObservable();
111
+ #peerContext;
71
112
  constructor(context) {
72
- const { sessions, channels, exchanges, scanners, transports: netInterfaces, store } = context;
113
+ const { lifetime, sessions, exchanges, scanners, transports: netInterfaces, store } = context;
114
+ this.#lifetime = lifetime.join("peers");
73
115
  this.#sessions = sessions;
74
- this.#channels = channels;
75
116
  this.#exchanges = exchanges;
76
117
  this.#scanners = scanners;
77
118
  this.#transports = netInterfaces;
78
119
  this.#store = store;
79
120
  this.#caseClient = new CaseClient(this.#sessions);
121
+ this.#peerContext = {
122
+ lifetime: this.#lifetime,
123
+ sessions,
124
+ savePeer: (peer) => this.#store.updatePeer(peer.descriptor),
125
+ deletePeer: (peer) => this.#store.deletePeer(peer.address),
126
+ closed: (peer) => this.#peers.delete(peer)
127
+ };
80
128
  this.#peers.added.on((peer) => {
81
- peer.address = PeerAddress(peer.address);
82
- this.#peersByAddress.set(peer.address, peer);
83
- });
84
- this.#peers.deleted.on((peer) => {
85
- this.#peersByAddress.delete(peer.address);
129
+ peer.sessions.deleted.on(() => {
130
+ if (!peer.sessions.size) {
131
+ this.#disconnected.emit(peer);
132
+ }
133
+ });
86
134
  });
87
135
  this.#sessions.retry.on((session, count) => {
88
136
  if (count !== 1) {
@@ -90,14 +138,9 @@ class PeerSet {
90
138
  }
91
139
  this.#handleFirstRetry(session);
92
140
  });
93
- this.#channels.added.on((address, msgChannel) => {
94
- if (isIpNetworkChannel(msgChannel.channel)) {
95
- return this.#addOrUpdatePeer(address, msgChannel.channel.networkAddress);
96
- }
97
- });
98
141
  this.#construction = Construction(this, async () => {
99
- for (const peer of await this.#store.loadPeers()) {
100
- this.#peers.add(peer);
142
+ for (const descriptor of await this.#store.loadPeers()) {
143
+ this.#peers.add(new Peer(descriptor, this.#peerContext));
101
144
  }
102
145
  });
103
146
  }
@@ -113,11 +156,22 @@ class PeerSet {
113
156
  get disconnected() {
114
157
  return this.#disconnected;
115
158
  }
116
- has(item) {
117
- if ("address" in item) {
118
- return this.#peers.has(item);
159
+ /**
160
+ * Unconditional get.
161
+ *
162
+ * Creates the peer if not already present.
163
+ */
164
+ for(address) {
165
+ let peer = this.get(address);
166
+ if (peer) {
167
+ return peer;
119
168
  }
120
- return this.#peersByAddress.has(item);
169
+ peer = new Peer({ address }, this.#peerContext);
170
+ this.#peers.add(peer);
171
+ return peer;
172
+ }
173
+ has(item) {
174
+ return !!this.get(item);
121
175
  }
122
176
  get size() {
123
177
  return this.#peers.size;
@@ -139,8 +193,8 @@ class PeerSet {
139
193
  }
140
194
  static [Environmental.create](env) {
141
195
  const instance = new PeerSet({
196
+ lifetime: env,
142
197
  sessions: env.get(SessionManager),
143
- channels: env.get(ChannelManager),
144
198
  exchanges: env.get(ExchangeManager),
145
199
  scanners: env.get(ScannerSet),
146
200
  transports: env.get(ConnectionlessTransportSet),
@@ -163,29 +217,31 @@ class PeerSet {
163
217
  */
164
218
  async #ensureConnection(address, options) {
165
219
  address = PeerAddress(address);
166
- const isGroupNode = PeerAddress.isGroup(address);
220
+ if (PeerAddress.isGroup(address)) {
221
+ return;
222
+ }
167
223
  const { allowUnknownPeer, operationalAddress } = options;
168
- if (!this.#peersByAddress.has(address) && !allowUnknownPeer && !isGroupNode) {
224
+ if (!this.has(address) && !allowUnknownPeer) {
169
225
  throw new UnknownNodeError(`Cannot connect to unknown device ${PeerAddress(address)}`);
170
226
  }
171
- if (!this.#channels.hasChannel(address)) {
172
- if (isGroupNode) {
173
- await this.#createGroupChannel(address);
174
- return;
175
- }
176
- const { promise: existingReconnectPromise } = this.#runningPeerReconnections.get(address) ?? {};
177
- if (existingReconnectPromise !== void 0) {
178
- return existingReconnectPromise;
179
- }
180
- const { promise, resolver, rejecter } = createPromise();
181
- this.#runningPeerReconnections.set(address, { promise, rejecter });
182
- this.#resume(address, options, operationalAddress).then((channel) => {
183
- this.#runningPeerReconnections.delete(address);
184
- resolver(channel);
185
- }).catch((error) => {
186
- this.#runningPeerReconnections.delete(address);
187
- rejecter(error);
188
- });
227
+ const peer = this.for(address);
228
+ if (this.#sessions.maybeSessionFor(address) || peer.activeDiscovery?.type === 3 /* FullDiscovery */) {
229
+ return;
230
+ }
231
+ const { promise: existingReconnectPromise } = peer.activeReconnection ?? {};
232
+ if (existingReconnectPromise !== void 0) {
233
+ return existingReconnectPromise;
234
+ }
235
+ const { promise, resolver, rejecter } = createPromise();
236
+ peer.activeReconnection = { promise, rejecter };
237
+ this.#resume(address, options, operationalAddress).then((channel) => {
238
+ peer.activeReconnection = void 0;
239
+ resolver(channel);
240
+ }).catch((error) => {
241
+ peer.activeReconnection = void 0;
242
+ rejecter(error);
243
+ });
244
+ if (options.discoveryOptions?.discoveryType !== 3 /* FullDiscovery */) {
189
245
  return promise;
190
246
  }
191
247
  }
@@ -193,49 +249,46 @@ class PeerSet {
193
249
  * Obtain an exchange provider for the designated peer.
194
250
  * TODO enhance PeerConnectionOptions.discoveryOptions.discoveryData with "addresses" for known operational addresses
195
251
  */
196
- async exchangeProviderFor(addressOrChannel, options = {}) {
197
- if (addressOrChannel instanceof MessageChannel) {
198
- return new DedicatedChannelExchangeProvider(this.#exchanges, addressOrChannel);
252
+ async exchangeProviderFor(addressOrSession, options = {}) {
253
+ if (addressOrSession instanceof SecureSession) {
254
+ return new DedicatedChannelExchangeProvider(this.#exchanges, addressOrSession);
199
255
  }
200
- const address = addressOrChannel;
256
+ const address = addressOrSession;
201
257
  if (PeerAddress.isGroup(address)) {
202
- if (!this.#channels.hasChannel(address)) {
203
- await this.#createGroupChannel(address);
204
- }
205
- return new DedicatedChannelExchangeProvider(this.#exchanges, this.#channels.getChannel(address));
258
+ const session = await this.#sessions.groupSessionForAddress(address, this.#transports);
259
+ return new DedicatedChannelExchangeProvider(this.#exchanges, session);
206
260
  }
207
- let initiallyConnected = this.#channels.hasChannel(address);
208
- return new ReconnectableExchangeProvider(this.#exchanges, this.#channels, address, async () => {
261
+ let initiallyConnected = !!this.#sessions.maybeSessionFor(address);
262
+ return new ReconnectableExchangeProvider(this.#exchanges, this.#sessions, address, async () => {
209
263
  const { caseAuthenticatedTags, discoveryOptions } = options;
210
- if (!initiallyConnected && !this.#channels.hasChannel(address)) {
264
+ if (!initiallyConnected && !this.#sessions.maybeSessionFor(address)) {
211
265
  await this.#ensureConnection(address, {
212
266
  discoveryOptions: { discoveryType: 0 /* None */ },
213
267
  caseAuthenticatedTags
214
268
  });
215
269
  initiallyConnected = true;
216
- if (this.#channels.hasChannel(address)) {
270
+ if (this.#sessions.maybeSessionFor(address)) {
217
271
  return;
218
272
  }
219
273
  }
220
- if (!this.#channels.hasChannel(address)) {
221
- throw new RetransmissionLimitReachedError(`Device ${PeerAddress(address)} is currently not reachable.`);
274
+ if (!this.#sessions.maybeSessionFor(address)) {
275
+ throw new RetransmissionLimitReachedError(`Device ${PeerAddress(address)} is unreachable`);
222
276
  }
223
- await this.#channels.removeAllNodeChannels(address);
277
+ await this.#sessions.handlePeerLoss(address);
224
278
  const { discoveryData } = discoveryOptions ?? {
225
- discoveryData: this.#peersByAddress.get(address)?.discoveryData
279
+ discoveryData: this.get(address)?.descriptor.discoveryData
226
280
  };
227
281
  const operationalAddress = this.#knownOperationalAddressFor(address, true);
228
282
  if (operationalAddress === void 0) {
229
283
  logger.info(
230
284
  `Re-discovering device failed (no address found), remove all sessions for ${PeerAddress(address)}`
231
285
  );
232
- await this.#sessions.removeAllSessionsForNode(address);
233
286
  throw new RetransmissionLimitReachedError(`No operational address found for ${PeerAddress(address)}`);
234
287
  }
235
288
  if (await this.#reconnectKnownAddress(address, operationalAddress, discoveryData, {
236
289
  expectedProcessingTime: Seconds(2)
237
290
  }) === void 0) {
238
- throw new RetransmissionLimitReachedError(`${PeerAddress(address)} is not reachable.`);
291
+ throw new RetransmissionLimitReachedError(`${PeerAddress(address)} is not reachable`);
239
292
  }
240
293
  });
241
294
  }
@@ -244,55 +297,23 @@ class PeerSet {
244
297
  */
245
298
  get(peer) {
246
299
  if ("address" in peer) {
247
- return this.#peersByAddress.get(peer.address);
248
- }
249
- return this.#peersByAddress.get(peer);
250
- }
251
- /**
252
- * Terminate any active peer connection.
253
- * Also handles unknown peers
254
- */
255
- async disconnect(peer, sendSessionClose = true) {
256
- let address = this.get(peer)?.address;
257
- if (address === void 0) {
258
- if ("nodeId" in peer && "fabricIndex" in peer) {
259
- address = peer;
260
- } else {
261
- return;
262
- }
263
- }
264
- await this.#sessions.removeAllSessionsForNode(address, sendSessionClose);
265
- await this.#channels.removeAllNodeChannels(address);
266
- await this.#disconnected.emit(address);
267
- }
268
- /**
269
- * Forget a known peer.
270
- */
271
- async delete(peer) {
272
- const actual = this.get(peer);
273
- if (actual === void 0) {
274
- return;
300
+ return this.#peers.get("address", PeerAddress(peer.address));
275
301
  }
276
- const { address } = actual;
277
- logger.info(`Removing ${address}`);
278
- this.#peers.delete(actual);
279
- await this.#store.deletePeer(address);
280
- await this.disconnect(address, false);
281
- await this.#sessions.deleteResumptionRecord(address);
302
+ return this.#peers.get("address", PeerAddress(peer));
282
303
  }
283
304
  async close() {
284
- for (const [address, { stopTimerFunc, mdnsClient: mdnsScanner }] of this.#runningPeerDiscoveries.entries()) {
285
- stopTimerFunc?.();
286
- mdnsScanner?.cancelOperationalDeviceDiscovery(this.#sessions.fabricFor(address), address.nodeId, false);
287
- }
288
- for (const { address } of this.#peers) {
289
- await this.disconnect(address, false);
305
+ var _stack = [];
306
+ try {
307
+ const _closing = __using(_stack, this.#lifetime.closing());
308
+ for (const peer of this.#peers) {
309
+ await peer.close();
310
+ }
311
+ this.#interactionQueue.close();
312
+ } catch (_) {
313
+ var _error = _, _hasError = true;
314
+ } finally {
315
+ __callDispose(_stack, _error, _hasError);
290
316
  }
291
- this.#interactionQueue.close();
292
- this.#runningPeerReconnections.forEach(
293
- ({ rejecter }) => rejecter(new ChannelNotConnectedError("PeerSet closed"))
294
- );
295
- this.#runningPeerReconnections.clear();
296
317
  }
297
318
  /**
298
319
  * Resume a device connection and establish a CASE session that was previously paired with the controller. This
@@ -306,9 +327,9 @@ class PeerSet {
306
327
  try {
307
328
  return await this.#connectOrDiscoverNode(address, operationalAddress, options);
308
329
  } catch (error) {
309
- if ((error instanceof DiscoveryError || error instanceof NoResponseTimeoutError) && this.#peersByAddress.has(address) && tryOperationalAddress === void 0) {
330
+ if ((error instanceof DiscoveryError || error instanceof NoResponseTimeoutError) && this.has(address) && tryOperationalAddress === void 0) {
310
331
  logger.info(`Resume failed, remove all sessions for ${PeerAddress(address)}`);
311
- await this.#sessions.removeAllSessionsForNode(address);
332
+ await this.#sessions.handlePeerLoss(address);
312
333
  }
313
334
  throw error;
314
335
  }
@@ -319,7 +340,7 @@ class PeerSet {
319
340
  discoveryOptions: {
320
341
  discoveryType: requestedDiscoveryType = 3 /* FullDiscovery */,
321
342
  timeout,
322
- discoveryData = this.#peersByAddress.get(address)?.discoveryData
343
+ discoveryData = this.get(address)?.descriptor.discoveryData
323
344
  } = {},
324
345
  caseAuthenticatedTags
325
346
  } = options ?? {};
@@ -333,12 +354,13 @@ class PeerSet {
333
354
  if (!mdnsScanner) {
334
355
  throw new ImplementationError("Cannot discover device without mDNS scanner.");
335
356
  }
336
- const existingDiscoveryDetails = this.#runningPeerDiscoveries.get(address) ?? {
357
+ const peer = this.for(address);
358
+ const existingDiscoveryDetails = peer.activeDiscovery ?? {
337
359
  type: 0 /* None */
338
360
  };
339
361
  if (existingDiscoveryDetails.type !== 0 /* None */ && existingDiscoveryDetails.type < requestedDiscoveryType) {
340
362
  mdnsScanner.cancelOperationalDeviceDiscovery(this.#sessions.fabricFor(address), address.nodeId);
341
- this.#runningPeerDiscoveries.delete(address);
363
+ peer.activeDiscovery = void 0;
342
364
  existingDiscoveryDetails.type = 0 /* None */;
343
365
  }
344
366
  const { type: runningDiscoveryType, promises } = existingDiscoveryDetails;
@@ -395,7 +417,7 @@ class PeerSet {
395
417
  this.#sessions.fabricFor(address),
396
418
  address.nodeId
397
419
  );
398
- this.#runningPeerDiscoveries.delete(address);
420
+ peer.activeDiscovery = void 0;
399
421
  resolver(result);
400
422
  }
401
423
  } catch (error) {
@@ -405,7 +427,7 @@ class PeerSet {
405
427
  this.#sessions.fabricFor(address),
406
428
  address.nodeId
407
429
  );
408
- this.#runningPeerDiscoveries.delete(address);
430
+ peer.activeDiscovery = void 0;
409
431
  rejecter(error);
410
432
  }
411
433
  }
@@ -427,9 +449,9 @@ class PeerSet {
427
449
  timeout,
428
450
  timeout === void 0
429
451
  );
430
- const { stopTimerFunc: stopTimerFunc2 } = this.#runningPeerDiscoveries.get(address) ?? {};
452
+ const { stopTimerFunc: stopTimerFunc2 } = peer.activeDiscovery ?? {};
431
453
  stopTimerFunc2?.();
432
- this.#runningPeerDiscoveries.delete(address);
454
+ peer.activeDiscovery = void 0;
433
455
  const { result } = await ControllerDiscovery.iterateServerAddresses(
434
456
  [scanResult],
435
457
  NoResponseTimeoutError,
@@ -440,25 +462,25 @@ class PeerSet {
440
462
  );
441
463
  return device !== void 0 ? [device] : [];
442
464
  },
443
- async (operationalAddress2, peer) => {
444
- const result2 = await this.#pair(address, operationalAddress2, peer, { caseAuthenticatedTags });
465
+ async (operationalAddress2, peer2) => {
466
+ const result2 = await this.#pair(address, operationalAddress2, peer2, { caseAuthenticatedTags });
445
467
  await this.#addOrUpdatePeer(address, operationalAddress2, {
446
468
  ...discoveryData,
447
- ...peer
469
+ ...peer2
448
470
  });
449
471
  return result2;
450
472
  }
451
473
  );
452
474
  return result;
453
475
  });
454
- this.#runningPeerDiscoveries.set(address, {
476
+ peer.activeDiscovery = {
455
477
  type: requestedDiscoveryType,
456
478
  promises: discoveryPromises,
457
479
  stopTimerFunc,
458
480
  mdnsClient: mdnsScanner
459
- });
481
+ };
460
482
  return await anyPromise(discoveryPromises).finally(() => {
461
- this.#runningPeerDiscoveries.delete(address);
483
+ peer.activeDiscovery = void 0;
462
484
  });
463
485
  }
464
486
  async #reconnectKnownAddress(address, operationalAddress, discoveryData, options) {
@@ -470,40 +492,22 @@ class PeerSet {
470
492
  logger.debug(
471
493
  `Resuming connection to ${PeerAddress(address)} at ${ip}:${port}${expectedProcessingTime !== void 0 ? ` with expected processing time of ${Duration.format(expectedProcessingTime)}` : ""}`
472
494
  );
473
- const channel = await this.#pair(address, operationalAddress, discoveryData, options);
495
+ const session = await this.#pair(address, operationalAddress, discoveryData, options);
474
496
  await this.#addOrUpdatePeer(address, operationalAddress);
475
- return channel;
497
+ return session;
476
498
  } catch (error) {
477
- if (error instanceof NoResponseTimeoutError) {
499
+ if (error instanceof NoResponseTimeoutError || error instanceof ChannelStatusResponseError) {
478
500
  logger.debug(
479
501
  `Failed to resume connection to ${address} connection with ${ip}:${port}, discovering the node now:`,
480
502
  error.message ? error.message : error
481
503
  );
482
- await this.#sessions.removeAllSessionsForNode(address, false, startTime);
504
+ await this.#sessions.handlePeerLoss(address, startTime);
483
505
  return void 0;
484
506
  } else {
485
507
  throw error;
486
508
  }
487
509
  }
488
510
  }
489
- async #createGroupChannel(address) {
490
- const groupId = GroupId.fromNodeId(address.nodeId);
491
- GroupId.assertGroupId(groupId);
492
- const multicastAddress = this.#sessions.fabricFor(address).groups.multicastAddressFor(groupId);
493
- const operationalInterface = this.#transports.interfaceFor(ChannelType.UDP, multicastAddress);
494
- if (operationalInterface === void 0) {
495
- throw new PairRetransmissionLimitReachedError(`IPv6 interface not initialized`);
496
- }
497
- const operationalChannel = await operationalInterface.openChannel({
498
- type: ChannelType.UDP,
499
- ip: multicastAddress,
500
- port: STANDARD_MATTER_PORT
501
- });
502
- const session = this.#sessions.groupSessionForAddress(address);
503
- const channel = new MessageChannel(operationalChannel, session);
504
- await this.#channels.setChannel(address, channel);
505
- return channel;
506
- }
507
511
  /** Pair with an operational device (already commissioned) and establish a CASE session. */
508
512
  async #pair(address, operationalServerAddress, discoveryData, options) {
509
513
  logger.debug(`Pair with ${address} at ${ServerAddress.urlFor(operationalServerAddress)}`);
@@ -517,7 +521,8 @@ class PeerSet {
517
521
  }
518
522
  const operationalChannel = await operationalInterface.openChannel(operationalServerAddress);
519
523
  const { sessionParameters } = this.#sessions.findResumptionRecordByAddress(address) ?? {};
520
- const unsecureSession = this.#sessions.createInsecureSession({
524
+ const unsecuredSession = this.#sessions.createUnsecuredSession({
525
+ channel: operationalChannel,
521
526
  // Use the session parameters from MDNS announcements when available and rest is assumed to be fallbacks
522
527
  sessionParameters: {
523
528
  ...sessionParameters,
@@ -528,26 +533,19 @@ class PeerSet {
528
533
  isInitiator: true
529
534
  });
530
535
  try {
531
- const operationalSecureSession = await this.#doCasePair(
532
- new MessageChannel(operationalChannel, unsecureSession),
533
- address,
534
- options
535
- );
536
- const channel = new MessageChannel(operationalChannel, operationalSecureSession);
537
- await this.#channels.setChannel(address, channel);
538
- return channel;
536
+ return await this.#doCasePair(unsecuredSession, address, options);
539
537
  } catch (error) {
540
538
  NoResponseTimeoutError.accept(error);
541
539
  throw new PairRetransmissionLimitReachedError(error.message);
542
540
  } finally {
543
- await unsecureSession.destroy();
541
+ await unsecuredSession.initiateClose();
544
542
  }
545
543
  }
546
- async #doCasePair(unsecureMessageChannel, address, options) {
544
+ async #doCasePair(paseSession, address, options) {
547
545
  const fabric = this.#sessions.fabricFor(address);
548
546
  let exchange;
549
547
  try {
550
- exchange = this.#exchanges.initiateExchangeWithChannel(unsecureMessageChannel, SECURE_CHANNEL_PROTOCOL_ID);
548
+ exchange = this.#exchanges.initiateExchangeForSession(paseSession, SECURE_CHANNEL_PROTOCOL_ID);
551
549
  const { session, resumed } = await this.#caseClient.pair(exchange, fabric, address.nodeId, options);
552
550
  if (!resumed) {
553
551
  this.#nodeCachedData.delete(address);
@@ -560,7 +558,7 @@ class PeerSet {
560
558
  logger.info(
561
559
  `Case client: Resumption record seems outdated for Fabric ${NodeId.toHexString(fabric.nodeId)} (index ${fabric.fabricIndex}) and PeerNode ${NodeId.toHexString(address.nodeId)}. Retrying pairing without resumption...`
562
560
  );
563
- return await this.#doCasePair(unsecureMessageChannel, address, options);
561
+ return await this.#doCasePair(paseSession, address, options);
564
562
  }
565
563
  }
566
564
  throw error;
@@ -587,22 +585,21 @@ class PeerSet {
587
585
  return discoveredAddresses?.addresses[0];
588
586
  }
589
587
  async #addOrUpdatePeer(address, operationalServerAddress, discoveryData) {
590
- let peer = this.#peersByAddress.get(address);
588
+ let peer = this.get(address);
591
589
  if (peer === void 0) {
592
- peer = { address, dataStore: await this.#store.createNodeStore(address) };
590
+ peer = new Peer({ address, dataStore: await this.#store.createNodeStore(address) }, this.#peerContext);
593
591
  this.#peers.add(peer);
594
592
  }
595
- peer.operationalAddress = operationalServerAddress ?? peer.operationalAddress;
593
+ peer.descriptor.operationalAddress = operationalServerAddress ?? peer.descriptor.operationalAddress;
596
594
  if (discoveryData !== void 0) {
597
- peer.discoveryData = {
598
- ...peer.discoveryData,
595
+ peer.descriptor.discoveryData = {
596
+ ...peer.descriptor.discoveryData,
599
597
  ...discoveryData
600
598
  };
601
599
  }
602
- await this.#store.updatePeer(peer);
603
- if (peer.operationalAddress !== void 0 && this.#runningPeerDiscoveries.has(address)) {
600
+ if (peer.descriptor.operationalAddress !== void 0 && peer.activeDiscovery) {
604
601
  logger.info(`Found ${address} during discovery, cancel discovery.`);
605
- const { mdnsClient: mdnsScanner } = this.#runningPeerDiscoveries.get(address) ?? {};
602
+ const { mdnsClient: mdnsScanner } = peer.activeDiscovery ?? {};
606
603
  mdnsScanner?.cancelOperationalDeviceDiscovery(this.#sessions.fabricFor(address), address.nodeId, true);
607
604
  }
608
605
  }
@@ -610,7 +607,7 @@ class PeerSet {
610
607
  return this.#addOrUpdatePeer(address, operationalServerAddress, discoveryData);
611
608
  }
612
609
  #getLastOperationalAddress(address) {
613
- return this.#peersByAddress.get(address)?.operationalAddress;
610
+ return this.get(address)?.descriptor.operationalAddress;
614
611
  }
615
612
  #handleFirstRetry(session) {
616
613
  if (!session.isSecure || session.fabric === void 0) {
@@ -621,15 +618,16 @@ class PeerSet {
621
618
  return;
622
619
  }
623
620
  const address = fabric.addressOf(nodeId);
624
- if (this.#runningPeerDiscoveries.has(address)) {
621
+ const peer = this.for(address);
622
+ if (peer.activeDiscovery) {
625
623
  return;
626
624
  }
627
- this.#runningPeerDiscoveries.set(address, { type: 1 /* RetransmissionDiscovery */ });
625
+ peer.activeDiscovery = { type: 1 /* RetransmissionDiscovery */ };
628
626
  this.#scanners.scannerFor(ChannelType.UDP)?.findOperationalDevice(fabric, nodeId, RETRANSMISSION_DISCOVERY_TIMEOUT, true).catch((error) => {
629
627
  logger.error(`Failed to discover ${address} after resubmission started.`, error);
630
628
  }).finally(() => {
631
- if (this.#runningPeerDiscoveries.get(address)?.type === 1 /* RetransmissionDiscovery */) {
632
- this.#runningPeerDiscoveries.delete(address);
629
+ if (peer.activeDiscovery?.type === 1 /* RetransmissionDiscovery */) {
630
+ peer.activeDiscovery = void 0;
633
631
  }
634
632
  });
635
633
  }