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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  2. package/dist/cjs/action/client/ClientInteraction.js +82 -34
  3. package/dist/cjs/action/client/ClientInteraction.js.map +2 -2
  4. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts +10 -5
  5. package/dist/cjs/action/client/subscription/ClientSubscription.d.ts.map +1 -1
  6. package/dist/cjs/action/client/subscription/ClientSubscription.js +21 -1
  7. package/dist/cjs/action/client/subscription/ClientSubscription.js.map +2 -2
  8. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js +2 -3
  9. package/dist/cjs/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  10. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts +4 -2
  11. package/dist/cjs/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
  12. package/dist/cjs/action/client/subscription/ClientSubscriptions.js +68 -8
  13. package/dist/cjs/action/client/subscription/ClientSubscriptions.js.map +1 -1
  14. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts +0 -1
  15. package/dist/cjs/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  16. package/dist/cjs/action/client/subscription/PeerSubscription.js +1 -2
  17. package/dist/cjs/action/client/subscription/PeerSubscription.js.map +1 -1
  18. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts +0 -2
  19. package/dist/cjs/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  20. package/dist/cjs/action/client/subscription/SustainedSubscription.js +2 -4
  21. package/dist/cjs/action/client/subscription/SustainedSubscription.js.map +1 -1
  22. package/dist/cjs/action/request/Invoke.js +2 -2
  23. package/dist/cjs/action/request/Invoke.js.map +1 -1
  24. package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -1
  25. package/dist/cjs/action/server/AttributeReadResponse.js +78 -25
  26. package/dist/cjs/action/server/AttributeReadResponse.js.map +1 -1
  27. package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
  28. package/dist/cjs/action/server/AttributeWriteResponse.js +70 -17
  29. package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
  30. package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
  31. package/dist/cjs/action/server/CommandInvokeResponse.js +83 -30
  32. package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
  33. package/dist/cjs/action/server/DataResponse.d.ts +1 -0
  34. package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
  35. package/dist/cjs/action/server/DataResponse.js +3 -0
  36. package/dist/cjs/action/server/DataResponse.js.map +1 -1
  37. package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
  38. package/dist/cjs/action/server/ServerInteraction.js +4 -4
  39. package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
  40. package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
  41. package/dist/cjs/advertisement/Advertisement.js +66 -14
  42. package/dist/cjs/advertisement/Advertisement.js.map +1 -1
  43. package/dist/cjs/advertisement/Advertiser.d.ts +4 -1
  44. package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -1
  45. package/dist/cjs/advertisement/Advertiser.js +63 -2
  46. package/dist/cjs/advertisement/Advertiser.js.map +1 -1
  47. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +6 -1
  48. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  49. package/dist/cjs/advertisement/ble/BleAdvertiser.js +1 -1
  50. package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
  51. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
  52. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  53. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +1 -1
  54. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  55. package/dist/cjs/certificate/kinds/definitions/asn.js +1 -1
  56. package/dist/cjs/certificate/kinds/definitions/asn.js.map +1 -1
  57. package/dist/cjs/certificate/kinds/definitions/attestation.d.ts.map +1 -1
  58. package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
  59. package/dist/cjs/cluster/client/AttributeClient.js +2 -2
  60. package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
  61. package/dist/cjs/codec/MessageCodec.d.ts +8 -1
  62. package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
  63. package/dist/cjs/codec/MessageCodec.js +38 -28
  64. package/dist/cjs/codec/MessageCodec.js.map +2 -2
  65. package/dist/cjs/common/FailsafeContext.d.ts +8 -9
  66. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  67. package/dist/cjs/common/FailsafeContext.js +27 -33
  68. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  69. package/dist/cjs/common/FailsafeTimer.d.ts +4 -3
  70. package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
  71. package/dist/cjs/common/FailsafeTimer.js +4 -4
  72. package/dist/cjs/common/FailsafeTimer.js.map +1 -1
  73. package/dist/cjs/common/Mark.d.ts +17 -0
  74. package/dist/cjs/common/Mark.d.ts.map +1 -0
  75. package/dist/cjs/{peer/OperationalPeer.js → common/Mark.js} +19 -3
  76. package/dist/cjs/common/Mark.js.map +6 -0
  77. package/dist/cjs/common/index.d.ts +1 -0
  78. package/dist/cjs/common/index.d.ts.map +1 -1
  79. package/dist/cjs/common/index.js +1 -0
  80. package/dist/cjs/common/index.js.map +1 -1
  81. package/dist/cjs/fabric/Fabric.d.ts +16 -8
  82. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  83. package/dist/cjs/fabric/Fabric.js +35 -18
  84. package/dist/cjs/fabric/Fabric.js.map +1 -1
  85. package/dist/cjs/fabric/FabricAuthority.d.ts +2 -2
  86. package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
  87. package/dist/cjs/fabric/FabricAuthority.js +3 -3
  88. package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
  89. package/dist/cjs/fabric/FabricManager.d.ts +10 -14
  90. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  91. package/dist/cjs/fabric/FabricManager.js +44 -40
  92. package/dist/cjs/fabric/FabricManager.js.map +2 -2
  93. package/dist/cjs/index.d.ts +1 -1
  94. package/dist/cjs/index.d.ts.map +1 -1
  95. package/dist/cjs/index.js +1 -1
  96. package/dist/cjs/index.js.map +1 -1
  97. package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
  98. package/dist/cjs/interaction/InteractionClient.d.ts +2 -2
  99. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  100. package/dist/cjs/interaction/InteractionClient.js +39 -22
  101. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  102. package/dist/cjs/interaction/InteractionMessenger.d.ts +2 -2
  103. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  104. package/dist/cjs/interaction/InteractionMessenger.js +35 -27
  105. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  106. package/dist/cjs/interaction/Subscription.d.ts +16 -37
  107. package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
  108. package/dist/cjs/interaction/Subscription.js +15 -68
  109. package/dist/cjs/interaction/Subscription.js.map +2 -2
  110. package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
  111. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  112. package/dist/cjs/interaction/SubscriptionClient.js +2 -2
  113. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  114. package/dist/cjs/mdns/MdnsClient.d.ts +10 -10
  115. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
  116. package/dist/cjs/mdns/MdnsClient.js +165 -80
  117. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  118. package/dist/cjs/mdns/MdnsServer.d.ts +2 -2
  119. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
  120. package/dist/cjs/mdns/MdnsServer.js +173 -94
  121. package/dist/cjs/mdns/MdnsServer.js.map +2 -2
  122. package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
  123. package/dist/cjs/mdns/MdnsService.js +3 -2
  124. package/dist/cjs/mdns/MdnsService.js.map +1 -1
  125. package/dist/cjs/mdns/MdnsSocket.d.ts +3 -2
  126. package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -1
  127. package/dist/cjs/mdns/MdnsSocket.js +2 -1
  128. package/dist/cjs/mdns/MdnsSocket.js.map +1 -1
  129. package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
  130. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  131. package/dist/cjs/peer/ControllerCommissioner.js +26 -28
  132. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  133. package/dist/cjs/peer/ControllerDiscovery.d.ts +1 -1
  134. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
  135. package/dist/cjs/peer/ControllerDiscovery.js +3 -3
  136. package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
  137. package/dist/cjs/peer/Peer.d.ts +57 -0
  138. package/dist/cjs/peer/Peer.d.ts.map +1 -0
  139. package/dist/cjs/peer/Peer.js +182 -0
  140. package/dist/cjs/peer/Peer.js.map +6 -0
  141. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
  142. package/dist/cjs/peer/PeerAddress.js +5 -2
  143. package/dist/cjs/peer/PeerAddress.js.map +1 -1
  144. package/dist/cjs/peer/PeerAddressStore.d.ts +3 -3
  145. package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
  146. package/{src/peer/OperationalPeer.ts → dist/cjs/peer/PeerDescriptor.d.ts} +14 -12
  147. package/dist/cjs/peer/PeerDescriptor.d.ts.map +1 -0
  148. package/dist/cjs/peer/PeerDescriptor.js +71 -0
  149. package/dist/cjs/peer/PeerDescriptor.js.map +6 -0
  150. package/dist/cjs/peer/PeerSet.d.ts +23 -26
  151. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  152. package/dist/cjs/peer/PeerSet.js +173 -173
  153. package/dist/cjs/peer/PeerSet.js.map +2 -2
  154. package/dist/cjs/peer/index.d.ts +1 -1
  155. package/dist/cjs/peer/index.d.ts.map +1 -1
  156. package/dist/cjs/peer/index.js +1 -1
  157. package/dist/cjs/peer/index.js.map +1 -1
  158. package/dist/cjs/protocol/DeviceAdvertiser.js +4 -4
  159. package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
  160. package/dist/cjs/protocol/ExchangeManager.d.ts +6 -9
  161. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  162. package/dist/cjs/protocol/ExchangeManager.js +306 -246
  163. package/dist/cjs/protocol/ExchangeManager.js.map +2 -2
  164. package/dist/cjs/protocol/ExchangeProvider.d.ts +9 -11
  165. package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
  166. package/dist/cjs/protocol/ExchangeProvider.js +79 -32
  167. package/dist/cjs/protocol/ExchangeProvider.js.map +2 -2
  168. package/dist/cjs/protocol/MessageChannel.d.ts +6 -7
  169. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  170. package/dist/cjs/protocol/MessageChannel.js +14 -16
  171. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  172. package/dist/cjs/protocol/MessageCounter.d.ts +4 -4
  173. package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -1
  174. package/dist/cjs/protocol/MessageCounter.js +7 -7
  175. package/dist/cjs/protocol/MessageCounter.js.map +1 -1
  176. package/dist/cjs/protocol/MessageExchange.d.ts +31 -20
  177. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  178. package/dist/cjs/protocol/MessageExchange.js +316 -231
  179. package/dist/cjs/protocol/MessageExchange.js.map +2 -2
  180. package/dist/cjs/protocol/ProtocolMocks.d.ts +100 -0
  181. package/dist/cjs/protocol/ProtocolMocks.d.ts.map +1 -0
  182. package/dist/cjs/protocol/ProtocolMocks.js +237 -0
  183. package/dist/cjs/protocol/ProtocolMocks.js.map +6 -0
  184. package/dist/cjs/protocol/errors.d.ts +35 -0
  185. package/dist/cjs/protocol/errors.d.ts.map +1 -0
  186. package/dist/cjs/protocol/errors.js +50 -0
  187. package/dist/cjs/protocol/errors.js.map +6 -0
  188. package/dist/cjs/protocol/index.d.ts +2 -1
  189. package/dist/cjs/protocol/index.d.ts.map +1 -1
  190. package/dist/cjs/protocol/index.js +2 -1
  191. package/dist/cjs/protocol/index.js.map +1 -1
  192. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +1 -0
  193. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  194. package/dist/cjs/securechannel/SecureChannelMessenger.js +3 -0
  195. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  196. package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -2
  197. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  198. package/dist/cjs/session/GroupSession.d.ts +21 -10
  199. package/dist/cjs/session/GroupSession.d.ts.map +1 -1
  200. package/dist/cjs/session/GroupSession.js +37 -12
  201. package/dist/cjs/session/GroupSession.js.map +1 -1
  202. package/dist/cjs/session/NodeSession.d.ts +56 -50
  203. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  204. package/dist/cjs/session/NodeSession.js +95 -103
  205. package/dist/cjs/session/NodeSession.js.map +1 -1
  206. package/dist/cjs/session/SecureSession.d.ts +4 -4
  207. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  208. package/dist/cjs/session/SecureSession.js +1 -1
  209. package/dist/cjs/session/SecureSession.js.map +1 -1
  210. package/dist/cjs/session/Session.d.ts +82 -66
  211. package/dist/cjs/session/Session.d.ts.map +1 -1
  212. package/dist/cjs/session/Session.js +218 -45
  213. package/dist/cjs/session/Session.js.map +1 -1
  214. package/dist/cjs/session/SessionManager.d.ts +33 -36
  215. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  216. package/dist/cjs/session/SessionManager.js +112 -150
  217. package/dist/cjs/session/SessionManager.js.map +1 -1
  218. package/dist/cjs/session/SessionParameters.d.ts +87 -0
  219. package/dist/cjs/session/SessionParameters.d.ts.map +1 -0
  220. package/dist/cjs/session/SessionParameters.js +81 -0
  221. package/dist/cjs/session/SessionParameters.js.map +6 -0
  222. package/dist/{esm/session/InsecureSession.d.ts → cjs/session/UnsecuredSession.d.ts} +18 -16
  223. package/dist/cjs/session/UnsecuredSession.d.ts.map +1 -0
  224. package/dist/cjs/session/{InsecureSession.js → UnsecuredSession.js} +21 -21
  225. package/dist/cjs/session/UnsecuredSession.js.map +6 -0
  226. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  227. package/dist/cjs/session/case/CaseClient.js +6 -4
  228. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  229. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  230. package/dist/cjs/session/case/CaseServer.js +14 -10
  231. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  232. package/dist/cjs/session/index.d.ts +2 -1
  233. package/dist/cjs/session/index.d.ts.map +1 -1
  234. package/dist/cjs/session/index.js +2 -1
  235. package/dist/cjs/session/index.js.map +1 -1
  236. package/dist/cjs/session/pase/PaseClient.d.ts +3 -3
  237. package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
  238. package/dist/cjs/session/pase/PaseClient.js +5 -3
  239. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  240. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  241. package/dist/cjs/session/pase/PaseServer.js +13 -13
  242. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  243. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  244. package/dist/esm/action/client/ClientInteraction.js +82 -34
  245. package/dist/esm/action/client/ClientInteraction.js.map +2 -2
  246. package/dist/esm/action/client/subscription/ClientSubscription.d.ts +10 -5
  247. package/dist/esm/action/client/subscription/ClientSubscription.d.ts.map +1 -1
  248. package/dist/esm/action/client/subscription/ClientSubscription.js +22 -2
  249. package/dist/esm/action/client/subscription/ClientSubscription.js.map +2 -2
  250. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js +2 -3
  251. package/dist/esm/action/client/subscription/ClientSubscriptionHandler.js.map +1 -1
  252. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts +4 -2
  253. package/dist/esm/action/client/subscription/ClientSubscriptions.d.ts.map +1 -1
  254. package/dist/esm/action/client/subscription/ClientSubscriptions.js +68 -8
  255. package/dist/esm/action/client/subscription/ClientSubscriptions.js.map +1 -1
  256. package/dist/esm/action/client/subscription/PeerSubscription.d.ts +0 -1
  257. package/dist/esm/action/client/subscription/PeerSubscription.d.ts.map +1 -1
  258. package/dist/esm/action/client/subscription/PeerSubscription.js +1 -2
  259. package/dist/esm/action/client/subscription/PeerSubscription.js.map +1 -1
  260. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts +0 -2
  261. package/dist/esm/action/client/subscription/SustainedSubscription.d.ts.map +1 -1
  262. package/dist/esm/action/client/subscription/SustainedSubscription.js +2 -4
  263. package/dist/esm/action/client/subscription/SustainedSubscription.js.map +1 -1
  264. package/dist/esm/action/request/Invoke.js +2 -2
  265. package/dist/esm/action/request/Invoke.js.map +1 -1
  266. package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -1
  267. package/dist/esm/action/server/AttributeReadResponse.js +78 -25
  268. package/dist/esm/action/server/AttributeReadResponse.js.map +1 -1
  269. package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
  270. package/dist/esm/action/server/AttributeWriteResponse.js +70 -17
  271. package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
  272. package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
  273. package/dist/esm/action/server/CommandInvokeResponse.js +83 -30
  274. package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
  275. package/dist/esm/action/server/DataResponse.d.ts +1 -0
  276. package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
  277. package/dist/esm/action/server/DataResponse.js +3 -0
  278. package/dist/esm/action/server/DataResponse.js.map +1 -1
  279. package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
  280. package/dist/esm/action/server/ServerInteraction.js +4 -4
  281. package/dist/esm/action/server/ServerInteraction.js.map +1 -1
  282. package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
  283. package/dist/esm/advertisement/Advertisement.js +66 -14
  284. package/dist/esm/advertisement/Advertisement.js.map +1 -1
  285. package/dist/esm/advertisement/Advertiser.d.ts +4 -1
  286. package/dist/esm/advertisement/Advertiser.d.ts.map +1 -1
  287. package/dist/esm/advertisement/Advertiser.js +63 -2
  288. package/dist/esm/advertisement/Advertiser.js.map +1 -1
  289. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +6 -1
  290. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  291. package/dist/esm/advertisement/ble/BleAdvertiser.js +1 -1
  292. package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
  293. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +5 -1
  294. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  295. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +1 -1
  296. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  297. package/dist/esm/certificate/kinds/definitions/asn.js +2 -2
  298. package/dist/esm/certificate/kinds/definitions/asn.js.map +1 -1
  299. package/dist/esm/certificate/kinds/definitions/attestation.d.ts.map +1 -1
  300. package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
  301. package/dist/esm/cluster/client/AttributeClient.js +1 -1
  302. package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
  303. package/dist/esm/codec/MessageCodec.d.ts +8 -1
  304. package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
  305. package/dist/esm/codec/MessageCodec.js +39 -28
  306. package/dist/esm/codec/MessageCodec.js.map +2 -2
  307. package/dist/esm/common/FailsafeContext.d.ts +8 -9
  308. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  309. package/dist/esm/common/FailsafeContext.js +27 -33
  310. package/dist/esm/common/FailsafeContext.js.map +1 -1
  311. package/dist/esm/common/FailsafeTimer.d.ts +4 -3
  312. package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
  313. package/dist/esm/common/FailsafeTimer.js +4 -4
  314. package/dist/esm/common/FailsafeTimer.js.map +1 -1
  315. package/dist/esm/common/Mark.d.ts +17 -0
  316. package/dist/esm/common/Mark.d.ts.map +1 -0
  317. package/dist/esm/common/Mark.js +18 -0
  318. package/dist/esm/common/Mark.js.map +6 -0
  319. package/dist/esm/common/index.d.ts +1 -0
  320. package/dist/esm/common/index.d.ts.map +1 -1
  321. package/dist/esm/common/index.js +1 -0
  322. package/dist/esm/common/index.js.map +1 -1
  323. package/dist/esm/fabric/Fabric.d.ts +16 -8
  324. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  325. package/dist/esm/fabric/Fabric.js +36 -18
  326. package/dist/esm/fabric/Fabric.js.map +1 -1
  327. package/dist/esm/fabric/FabricAuthority.d.ts +2 -2
  328. package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
  329. package/dist/esm/fabric/FabricAuthority.js +5 -5
  330. package/dist/esm/fabric/FabricAuthority.js.map +1 -1
  331. package/dist/esm/fabric/FabricManager.d.ts +10 -14
  332. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  333. package/dist/esm/fabric/FabricManager.js +45 -40
  334. package/dist/esm/fabric/FabricManager.js.map +2 -2
  335. package/dist/esm/index.d.ts +1 -1
  336. package/dist/esm/index.d.ts.map +1 -1
  337. package/dist/esm/index.js +1 -1
  338. package/dist/esm/index.js.map +1 -1
  339. package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
  340. package/dist/esm/interaction/InteractionClient.d.ts +2 -2
  341. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  342. package/dist/esm/interaction/InteractionClient.js +39 -22
  343. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  344. package/dist/esm/interaction/InteractionMessenger.d.ts +2 -2
  345. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  346. package/dist/esm/interaction/InteractionMessenger.js +33 -28
  347. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  348. package/dist/esm/interaction/Subscription.d.ts +16 -37
  349. package/dist/esm/interaction/Subscription.d.ts.map +1 -1
  350. package/dist/esm/interaction/Subscription.js +16 -69
  351. package/dist/esm/interaction/Subscription.js.map +2 -2
  352. package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
  353. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  354. package/dist/esm/interaction/SubscriptionClient.js +2 -2
  355. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  356. package/dist/esm/mdns/MdnsClient.d.ts +10 -10
  357. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
  358. package/dist/esm/mdns/MdnsClient.js +166 -80
  359. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  360. package/dist/esm/mdns/MdnsServer.d.ts +2 -2
  361. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
  362. package/dist/esm/mdns/MdnsServer.js +176 -94
  363. package/dist/esm/mdns/MdnsServer.js.map +2 -2
  364. package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
  365. package/dist/esm/mdns/MdnsService.js +3 -2
  366. package/dist/esm/mdns/MdnsService.js.map +1 -1
  367. package/dist/esm/mdns/MdnsSocket.d.ts +3 -2
  368. package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -1
  369. package/dist/esm/mdns/MdnsSocket.js +2 -1
  370. package/dist/esm/mdns/MdnsSocket.js.map +1 -1
  371. package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
  372. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  373. package/dist/esm/peer/ControllerCommissioner.js +26 -28
  374. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  375. package/dist/esm/peer/ControllerDiscovery.d.ts +1 -1
  376. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
  377. package/dist/esm/peer/ControllerDiscovery.js +1 -1
  378. package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
  379. package/dist/esm/peer/Peer.d.ts +57 -0
  380. package/dist/esm/peer/Peer.d.ts.map +1 -0
  381. package/dist/esm/peer/Peer.js +162 -0
  382. package/dist/esm/peer/Peer.js.map +6 -0
  383. package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
  384. package/dist/esm/peer/PeerAddress.js +5 -2
  385. package/dist/esm/peer/PeerAddress.js.map +1 -1
  386. package/dist/esm/peer/PeerAddressStore.d.ts +3 -3
  387. package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
  388. package/dist/{cjs/peer/OperationalPeer.d.ts → esm/peer/PeerDescriptor.d.ts} +14 -7
  389. package/dist/esm/peer/PeerDescriptor.d.ts.map +1 -0
  390. package/dist/esm/peer/PeerDescriptor.js +51 -0
  391. package/dist/esm/peer/PeerDescriptor.js.map +6 -0
  392. package/dist/esm/peer/PeerSet.d.ts +23 -26
  393. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  394. package/dist/esm/peer/PeerSet.js +173 -175
  395. package/dist/esm/peer/PeerSet.js.map +2 -2
  396. package/dist/esm/peer/index.d.ts +1 -1
  397. package/dist/esm/peer/index.d.ts.map +1 -1
  398. package/dist/esm/peer/index.js +1 -1
  399. package/dist/esm/protocol/DeviceAdvertiser.js +4 -4
  400. package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
  401. package/dist/esm/protocol/ExchangeManager.d.ts +6 -9
  402. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  403. package/dist/esm/protocol/ExchangeManager.js +308 -251
  404. package/dist/esm/protocol/ExchangeManager.js.map +2 -2
  405. package/dist/esm/protocol/ExchangeProvider.d.ts +9 -11
  406. package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
  407. package/dist/esm/protocol/ExchangeProvider.js +81 -37
  408. package/dist/esm/protocol/ExchangeProvider.js.map +2 -2
  409. package/dist/esm/protocol/MessageChannel.d.ts +6 -7
  410. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  411. package/dist/esm/protocol/MessageChannel.js +22 -18
  412. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  413. package/dist/esm/protocol/MessageCounter.d.ts +4 -4
  414. package/dist/esm/protocol/MessageCounter.d.ts.map +1 -1
  415. package/dist/esm/protocol/MessageCounter.js +7 -7
  416. package/dist/esm/protocol/MessageCounter.js.map +1 -1
  417. package/dist/esm/protocol/MessageExchange.d.ts +31 -20
  418. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  419. package/dist/esm/protocol/MessageExchange.js +318 -238
  420. package/dist/esm/protocol/MessageExchange.js.map +2 -2
  421. package/dist/esm/protocol/ProtocolMocks.d.ts +100 -0
  422. package/dist/esm/protocol/ProtocolMocks.d.ts.map +1 -0
  423. package/dist/esm/protocol/ProtocolMocks.js +230 -0
  424. package/dist/esm/protocol/ProtocolMocks.js.map +6 -0
  425. package/dist/esm/protocol/errors.d.ts +35 -0
  426. package/dist/esm/protocol/errors.d.ts.map +1 -0
  427. package/dist/esm/protocol/errors.js +30 -0
  428. package/dist/esm/protocol/errors.js.map +6 -0
  429. package/dist/esm/protocol/index.d.ts +2 -1
  430. package/dist/esm/protocol/index.d.ts.map +1 -1
  431. package/dist/esm/protocol/index.js +2 -1
  432. package/dist/esm/protocol/index.js.map +1 -1
  433. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +1 -0
  434. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  435. package/dist/esm/securechannel/SecureChannelMessenger.js +3 -0
  436. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  437. package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
  438. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  439. package/dist/esm/session/GroupSession.d.ts +21 -10
  440. package/dist/esm/session/GroupSession.d.ts.map +1 -1
  441. package/dist/esm/session/GroupSession.js +41 -12
  442. package/dist/esm/session/GroupSession.js.map +1 -1
  443. package/dist/esm/session/NodeSession.d.ts +56 -50
  444. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  445. package/dist/esm/session/NodeSession.js +99 -105
  446. package/dist/esm/session/NodeSession.js.map +1 -1
  447. package/dist/esm/session/SecureSession.d.ts +4 -4
  448. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  449. package/dist/esm/session/SecureSession.js +1 -1
  450. package/dist/esm/session/SecureSession.js.map +1 -1
  451. package/dist/esm/session/Session.d.ts +82 -66
  452. package/dist/esm/session/Session.d.ts.map +1 -1
  453. package/dist/esm/session/Session.js +223 -45
  454. package/dist/esm/session/Session.js.map +1 -1
  455. package/dist/esm/session/SessionManager.d.ts +33 -36
  456. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  457. package/dist/esm/session/SessionManager.js +113 -157
  458. package/dist/esm/session/SessionManager.js.map +1 -1
  459. package/dist/esm/session/SessionParameters.d.ts +87 -0
  460. package/dist/esm/session/SessionParameters.d.ts.map +1 -0
  461. package/dist/esm/session/SessionParameters.js +61 -0
  462. package/dist/esm/session/SessionParameters.js.map +6 -0
  463. package/dist/{cjs/session/InsecureSession.d.ts → esm/session/UnsecuredSession.d.ts} +18 -16
  464. package/dist/esm/session/UnsecuredSession.d.ts.map +1 -0
  465. package/dist/esm/session/{InsecureSession.js → UnsecuredSession.js} +18 -18
  466. package/dist/esm/session/UnsecuredSession.js.map +6 -0
  467. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  468. package/dist/esm/session/case/CaseClient.js +5 -3
  469. package/dist/esm/session/case/CaseClient.js.map +1 -1
  470. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  471. package/dist/esm/session/case/CaseServer.js +14 -10
  472. package/dist/esm/session/case/CaseServer.js.map +1 -1
  473. package/dist/esm/session/index.d.ts +2 -1
  474. package/dist/esm/session/index.d.ts.map +1 -1
  475. package/dist/esm/session/index.js +2 -1
  476. package/dist/esm/session/index.js.map +1 -1
  477. package/dist/esm/session/pase/PaseClient.d.ts +3 -3
  478. package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
  479. package/dist/esm/session/pase/PaseClient.js +5 -3
  480. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  481. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  482. package/dist/esm/session/pase/PaseServer.js +13 -13
  483. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  484. package/package.json +6 -6
  485. package/src/action/client/ClientInteraction.ts +47 -13
  486. package/src/action/client/subscription/ClientSubscription.ts +30 -5
  487. package/src/action/client/subscription/ClientSubscriptionHandler.ts +2 -4
  488. package/src/action/client/subscription/ClientSubscriptions.ts +14 -3
  489. package/src/action/client/subscription/PeerSubscription.ts +2 -2
  490. package/src/action/client/subscription/SustainedSubscription.ts +2 -6
  491. package/src/action/request/Invoke.ts +2 -2
  492. package/src/action/server/AttributeReadResponse.ts +2 -0
  493. package/src/action/server/AttributeWriteResponse.ts +2 -0
  494. package/src/action/server/CommandInvokeResponse.ts +1 -0
  495. package/src/action/server/DataResponse.ts +4 -0
  496. package/src/action/server/ServerInteraction.ts +4 -4
  497. package/src/advertisement/Advertisement.ts +6 -7
  498. package/src/advertisement/Advertiser.ts +12 -1
  499. package/src/advertisement/ble/BleAdvertiser.ts +7 -2
  500. package/src/advertisement/mdns/MdnsAdvertiser.ts +7 -1
  501. package/src/certificate/kinds/definitions/asn.ts +2 -2
  502. package/src/certificate/kinds/definitions/attestation.ts +1 -0
  503. package/src/cluster/client/AttributeClient.ts +1 -1
  504. package/src/codec/MessageCodec.ts +39 -32
  505. package/src/common/FailsafeContext.ts +36 -39
  506. package/src/common/FailsafeTimer.ts +7 -6
  507. package/src/common/Mark.ts +17 -0
  508. package/src/common/index.ts +1 -0
  509. package/src/fabric/Fabric.ts +51 -23
  510. package/src/fabric/FabricAuthority.ts +4 -4
  511. package/src/fabric/FabricManager.ts +53 -40
  512. package/src/index.ts +3 -1
  513. package/src/interaction/InteractionClient.ts +40 -23
  514. package/src/interaction/InteractionMessenger.ts +38 -32
  515. package/src/interaction/Subscription.ts +20 -92
  516. package/src/interaction/SubscriptionClient.ts +3 -3
  517. package/src/mdns/MdnsClient.ts +20 -3
  518. package/src/mdns/MdnsServer.ts +13 -1
  519. package/src/mdns/MdnsService.ts +3 -2
  520. package/src/mdns/MdnsSocket.ts +9 -3
  521. package/src/peer/ControllerCommissioner.ts +35 -37
  522. package/src/peer/ControllerDiscovery.ts +1 -1
  523. package/src/peer/Peer.ts +161 -0
  524. package/src/peer/PeerAddress.ts +6 -2
  525. package/src/peer/PeerAddressStore.ts +3 -3
  526. package/src/peer/PeerDescriptor.ts +89 -0
  527. package/src/peer/PeerSet.ts +145 -213
  528. package/src/peer/index.ts +1 -1
  529. package/src/protocol/DeviceAdvertiser.ts +4 -4
  530. package/src/protocol/ExchangeManager.ts +161 -181
  531. package/src/protocol/ExchangeProvider.ts +31 -40
  532. package/src/protocol/MessageChannel.ts +29 -18
  533. package/src/protocol/MessageCounter.ts +8 -8
  534. package/src/protocol/MessageExchange.ts +181 -144
  535. package/src/protocol/ProtocolMocks.ts +302 -0
  536. package/src/protocol/errors.ts +44 -0
  537. package/src/protocol/index.ts +2 -1
  538. package/src/securechannel/SecureChannelMessenger.ts +4 -0
  539. package/src/securechannel/SecureChannelProtocol.ts +2 -2
  540. package/src/session/GroupSession.ts +67 -23
  541. package/src/session/NodeSession.ts +140 -136
  542. package/src/session/SecureSession.ts +6 -5
  543. package/src/session/Session.ts +234 -101
  544. package/src/session/SessionManager.ts +148 -187
  545. package/src/session/SessionParameters.ts +108 -0
  546. package/src/session/{InsecureSession.ts → UnsecuredSession.ts} +28 -26
  547. package/src/session/case/CaseClient.ts +6 -3
  548. package/src/session/case/CaseServer.ts +15 -11
  549. package/src/session/index.ts +2 -1
  550. package/src/session/pase/PaseClient.ts +12 -5
  551. package/src/session/pase/PaseServer.ts +14 -13
  552. package/dist/cjs/peer/OperationalPeer.d.ts.map +0 -1
  553. package/dist/cjs/peer/OperationalPeer.js.map +0 -6
  554. package/dist/cjs/protocol/ChannelManager.d.ts +0 -29
  555. package/dist/cjs/protocol/ChannelManager.d.ts.map +0 -1
  556. package/dist/cjs/protocol/ChannelManager.js +0 -178
  557. package/dist/cjs/protocol/ChannelManager.js.map +0 -6
  558. package/dist/cjs/session/InsecureSession.d.ts.map +0 -1
  559. package/dist/cjs/session/InsecureSession.js.map +0 -6
  560. package/dist/esm/peer/OperationalPeer.d.ts +0 -38
  561. package/dist/esm/peer/OperationalPeer.d.ts.map +0 -1
  562. package/dist/esm/peer/OperationalPeer.js +0 -6
  563. package/dist/esm/peer/OperationalPeer.js.map +0 -6
  564. package/dist/esm/protocol/ChannelManager.d.ts +0 -29
  565. package/dist/esm/protocol/ChannelManager.d.ts.map +0 -1
  566. package/dist/esm/protocol/ChannelManager.js +0 -158
  567. package/dist/esm/protocol/ChannelManager.js.map +0 -6
  568. package/dist/esm/session/InsecureSession.d.ts.map +0 -1
  569. package/dist/esm/session/InsecureSession.js.map +0 -6
  570. package/src/protocol/ChannelManager.ts +0 -180
@@ -5,37 +5,31 @@
5
5
  */
6
6
  import { Subject } from "#action/server/Subject.js";
7
7
  import { MessageCodec, SessionType } from "#codec/MessageCodec.js";
8
+ import { Mark } from "#common/Mark.js";
8
9
  import {
10
+ AsyncObservableValue,
9
11
  BasicSet,
10
12
  Bytes,
11
13
  CRYPTO_SYMMETRIC_KEY_LENGTH,
12
14
  Diagnostic,
13
15
  Duration,
16
+ InternalError,
14
17
  Logger,
15
- MatterError,
16
- MatterFlowError
18
+ MatterFlowError,
19
+ hex
17
20
  } from "#general";
18
21
  import { PeerAddress } from "#peer/PeerAddress.js";
22
+ import { NoAssociatedFabricError } from "#protocol/errors.js";
19
23
  import { MessageCounter } from "#protocol/MessageCounter.js";
20
24
  import { MessageReceptionStateEncryptedWithoutRollover } from "#protocol/MessageReceptionState.js";
21
- import { FabricIndex, NodeId, StatusCode, StatusResponseError } from "#types";
25
+ import { FabricIndex, NodeId } from "#types";
22
26
  import { SecureSession } from "./SecureSession.js";
23
27
  import { Session } from "./Session.js";
24
28
  const logger = Logger.get("SecureSession");
25
29
  const SESSION_KEYS_INFO = Bytes.fromString("SessionKeys");
26
30
  const SESSION_RESUMPTION_KEYS_INFO = Bytes.fromString("SessionResumptionKeys");
27
- class NoChannelError extends MatterError {
28
- }
29
- class NoAssociatedFabricError extends StatusResponseError {
30
- constructor(message) {
31
- super(message, StatusCode.UnsupportedAccess);
32
- }
33
- }
34
31
  class NodeSession extends SecureSession {
35
32
  #crypto;
36
- #subscriptions = new BasicSet();
37
- #closingAfterExchangeFinished = false;
38
- #sendCloseMessageWhenClosing = true;
39
33
  #id;
40
34
  #isInitiator;
41
35
  #fabric;
@@ -45,26 +39,19 @@ class NodeSession extends SecureSession {
45
39
  #encryptKey;
46
40
  #attestationKey;
47
41
  #caseAuthenticatedTags;
48
- #isClosing = false;
49
42
  supportsMRP = true;
50
43
  type = SessionType.Unicast;
51
- static async create(args) {
52
- const {
53
- crypto,
54
- manager,
55
- id,
56
- fabric,
57
- peerNodeId,
58
- peerSessionId,
59
- sharedSecret,
60
- salt,
61
- isInitiator,
62
- isResumption,
63
- peerSessionParameters,
64
- caseAuthenticatedTags
65
- } = args;
44
+ #closedByPeer = AsyncObservableValue();
45
+ #isPeerLost = false;
46
+ // TODO - remove this; subscriptions should be owned by the peer, not the session
47
+ #subscriptions = new BasicSet();
48
+ static async create(config) {
49
+ const { manager, sharedSecret, salt, isResumption, peerSessionParameters, isInitiator } = config;
50
+ if (manager) {
51
+ await manager.construction;
52
+ }
66
53
  const keys = Bytes.of(
67
- await args.crypto.createHkdfKey(
54
+ await config.crypto.createHkdfKey(
68
55
  sharedSecret,
69
56
  salt,
70
57
  isResumption ? SESSION_RESUMPTION_KEYS_INFO : SESSION_KEYS_INFO,
@@ -74,22 +61,15 @@ class NodeSession extends SecureSession {
74
61
  const decryptKey = isInitiator ? keys.slice(16, 32) : keys.slice(0, 16);
75
62
  const encryptKey = isInitiator ? keys.slice(0, 16) : keys.slice(16, 32);
76
63
  const attestationKey = keys.slice(32, 48);
77
- return new NodeSession({
78
- crypto,
79
- manager,
80
- id,
81
- fabric,
82
- peerNodeId,
83
- peerSessionId,
64
+ return new this({
65
+ ...config,
84
66
  decryptKey,
85
67
  encryptKey,
86
68
  attestationKey,
87
- sessionParameters: peerSessionParameters,
88
- isInitiator,
89
- caseAuthenticatedTags
69
+ sessionParameters: peerSessionParameters
90
70
  });
91
71
  }
92
- constructor(args) {
72
+ constructor(config) {
93
73
  const {
94
74
  crypto,
95
75
  manager,
@@ -102,14 +82,16 @@ class NodeSession extends SecureSession {
102
82
  attestationKey,
103
83
  caseAuthenticatedTags,
104
84
  isInitiator
105
- } = args;
85
+ } = config;
106
86
  super({
107
- ...args,
87
+ ...config,
108
88
  setActiveTimestamp: true,
109
89
  // We always set the active timestamp for Secure sessions
110
90
  // Can be changed to a PersistedMessageCounter if we implement session storage
111
- messageCounter: new MessageCounter(crypto, () => {
112
- this.end(true, true).catch((error) => logger.error(`Error while closing session: ${error}`));
91
+ messageCounter: new MessageCounter(crypto, async () => {
92
+ await this.initiateClose(async () => {
93
+ await this.closeSubscriptions(true);
94
+ });
113
95
  }),
114
96
  messageReceptionState: new MessageReceptionStateEncryptedWithoutRollover()
115
97
  });
@@ -127,7 +109,7 @@ class NodeSession extends SecureSession {
127
109
  fabric?.addSession(this);
128
110
  logger.debug(
129
111
  `Created secure ${this.isPase ? "PASE" : "CASE"} session for fabric index ${fabric?.fabricIndex}`,
130
- this.name,
112
+ this.via,
131
113
  this.parameterDiagnostics
132
114
  );
133
115
  }
@@ -149,12 +131,6 @@ class NodeSession extends SecureSession {
149
131
  get caseAuthenticatedTags() {
150
132
  return this.#caseAuthenticatedTags;
151
133
  }
152
- get closingAfterExchangeFinished() {
153
- return this.#closingAfterExchangeFinished;
154
- }
155
- get sendCloseMessageWhenClosing() {
156
- return this.#sendCloseMessageWhenClosing;
157
- }
158
134
  get isPase() {
159
135
  return this.#peerNodeId === NodeId.UNSPECIFIED_NODE_ID;
160
136
  }
@@ -164,21 +140,12 @@ class NodeSession extends SecureSession {
164
140
  get isInitiator() {
165
141
  return this.#isInitiator;
166
142
  }
167
- get isClosing() {
168
- return this.#isClosing;
169
- }
170
143
  subjectFor(_message) {
171
144
  return Subject.Node({
172
145
  id: this.peerNodeId,
173
146
  catSubjects: this.#caseAuthenticatedTags.map((cat) => NodeId.fromCaseAuthenticatedTag(cat))
174
147
  });
175
148
  }
176
- async close(closeAfterExchangeFinished) {
177
- if (closeAfterExchangeFinished === void 0) {
178
- closeAfterExchangeFinished = this.isPeerActive();
179
- }
180
- await this.end(true, closeAfterExchangeFinished);
181
- }
182
149
  decode({ header, applicationPayload, messageExtension }, aad) {
183
150
  if (header.hasMessageExtensions) {
184
151
  logger.info(
@@ -215,17 +182,18 @@ class NodeSession extends SecureSession {
215
182
  get fabric() {
216
183
  return this.#fabric;
217
184
  }
218
- addAssociatedFabric(fabric) {
219
- if (this.#fabric !== void 0) {
220
- throw new MatterFlowError("Session already has an associated Fabric. Cannot change this.");
185
+ set fabric(fabric) {
186
+ if (this.#fabric !== void 0 && this.#fabric !== fabric) {
187
+ throw new InternalError("Cannot change session fabric");
221
188
  }
222
189
  this.#fabric = fabric;
190
+ fabric.addSession(this);
223
191
  }
224
192
  get id() {
225
193
  return this.#id;
226
194
  }
227
- get name() {
228
- return `secure/${this.#id}`;
195
+ get via() {
196
+ return Diagnostic.via(`${this.peerAddress.toString()}${Mark.SESSION}${hex.word(this.id)}`);
229
197
  }
230
198
  get peerSessionId() {
231
199
  return this.#peerSessionId;
@@ -247,48 +215,76 @@ class NodeSession extends SecureSession {
247
215
  }
248
216
  return this.#fabric;
249
217
  }
250
- async clearSubscriptions(flushSubscriptions = false, cancelledByPeer = false) {
218
+ async closeSubscriptions(flush = false) {
251
219
  const subscriptions = [...this.#subscriptions];
252
220
  for (const subscription of subscriptions) {
253
- await subscription.close(flushSubscriptions, cancelledByPeer);
221
+ await subscription.close(flush ? this : void 0);
254
222
  }
255
223
  return subscriptions.length;
256
224
  }
257
- /** Ends a session. Outstanding subscription data will be flushed before the session is destroyed. */
258
- async end(sendClose, closeAfterExchangeFinished = false) {
259
- await this.clearSubscriptions(true);
260
- await this.destroy(sendClose, closeAfterExchangeFinished);
261
- }
262
- async closeByPeer() {
263
- await this.destroy(false, false);
264
- await this.closedByPeer.emit();
265
- }
266
- /** Destroys a session. Outstanding subscription data will be discarded. */
267
- async destroy(sendClose = false, closeAfterExchangeFinished = true, flushSubscriptions = false) {
268
- await this.clearSubscriptions(flushSubscriptions);
269
- this.#fabric?.removeSession(this);
270
- if (!sendClose) {
271
- this.#sendCloseMessageWhenClosing = false;
272
- }
273
- if (closeAfterExchangeFinished) {
274
- logger.info(`Register Session ${this.name} to close when exchange is ended.`);
275
- this.#closingAfterExchangeFinished = true;
276
- } else {
277
- this.#isClosing = true;
278
- logger.info(`End ${this.isPase ? "PASE" : "CASE"} session ${this.name}`);
279
- this.manager?.sessions.delete(this);
280
- if (this.closer) {
281
- try {
282
- await this.closer;
283
- } catch (error) {
284
- NoChannelError.accept(error);
285
- } finally {
286
- await this.destroyed.emit();
287
- }
288
- return;
225
+ get closedByPeer() {
226
+ return this.#closedByPeer;
227
+ }
228
+ async handlePeerClose() {
229
+ this.#isPeerLost = true;
230
+ await this.#closedByPeer.emit(true);
231
+ await this.handlePeerLoss();
232
+ }
233
+ async handlePeerLoss(currentExchange) {
234
+ this.#isPeerLost = true;
235
+ await this.initiateForceClose(currentExchange);
236
+ }
237
+ get isPeerLost() {
238
+ return this.#isPeerLost;
239
+ }
240
+ /**
241
+ * Close the session.
242
+ *
243
+ * If there are open subscriptions they are closed without flushing. To flush, use {@link closeSubscriptions}
244
+ * before invoking.
245
+ *
246
+ * TODO - subscription handling is only relevant for server; needs to move to server-specific component
247
+ *
248
+ * If there are active exchanges the close is deferred until the final exchange closes. To close sooner, use
249
+ * {@link initiateForceClose}.
250
+ *
251
+ * A final exchange will be opened to notify the peer of closure unless the peer is marked as lost.
252
+ */
253
+ async initiateClose(shutdownLogic) {
254
+ await super.initiateClose(async () => {
255
+ await shutdownLogic?.();
256
+ if (this.hasActiveExchanges) {
257
+ logger.debug(this.via, "Session ends when exchanges end");
258
+ this.deferredClose = true;
259
+ }
260
+ });
261
+ }
262
+ async initiateForceClose(currentExchange) {
263
+ this.#isPeerLost = true;
264
+ await super.initiateForceClose(currentExchange);
265
+ }
266
+ addExchange(exchange) {
267
+ super.addExchange(exchange);
268
+ exchange.closed.on(async () => {
269
+ this.exchanges.delete(exchange);
270
+ if (this.deferredClose && !this.exchanges.size) {
271
+ this.deferredClose = false;
272
+ await this.close();
273
+ }
274
+ });
275
+ }
276
+ async close() {
277
+ if (!this.#isPeerLost) {
278
+ try {
279
+ await this.gracefulClose.emit();
280
+ } catch (e) {
281
+ logger.error(`Unhandled error in ${this.via} graceful close handler:`, e);
289
282
  }
290
- await this.destroyed.emit();
291
283
  }
284
+ await this.closeSubscriptions();
285
+ this.#fabric?.deleteSession(this);
286
+ await super.close();
287
+ this.manager?.sessions.delete(this);
292
288
  }
293
289
  /**
294
290
  * The peer node's address.
@@ -309,7 +305,7 @@ class NodeSession extends SecureSession {
309
305
  ((NodeSession2) => {
310
306
  function assert(session, errorText) {
311
307
  if (!is(session)) {
312
- throw new MatterFlowError(errorText ?? "Insecure session in secure context");
308
+ throw new MatterFlowError(errorText ?? "Unsecured session in secure context");
313
309
  }
314
310
  }
315
311
  NodeSession2.assert = assert;
@@ -319,10 +315,10 @@ class NodeSession extends SecureSession {
319
315
  NodeSession2.is = is;
320
316
  function logNew(logger2, operation, session, messenger, fabric, peerNodeId) {
321
317
  logger2.info(
318
+ session.via,
322
319
  `${operation} session with`,
323
320
  Diagnostic.strong(PeerAddress({ fabricIndex: fabric.fabricIndex, nodeId: peerNodeId }).toString()),
324
321
  Diagnostic.dict({
325
- id: session.id,
326
322
  address: messenger.channelName,
327
323
  fabric: `${NodeId.toHexString(fabric.nodeId)} (#${fabric.fabricIndex})`,
328
324
  ...session.parameterDiagnostics
@@ -332,8 +328,6 @@ class NodeSession extends SecureSession {
332
328
  NodeSession2.logNew = logNew;
333
329
  })(NodeSession || (NodeSession = {}));
334
330
  export {
335
- NoAssociatedFabricError,
336
- NoChannelError,
337
331
  NodeSession
338
332
  };
339
333
  //# sourceMappingURL=NodeSession.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/session/NodeSession.ts"],
4
- "mappings": "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",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,eAAe;AACxB,SAAiD,cAAsB,mBAAmB;AAC1F,SAAS,YAAY;AAErB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,SAAS,mBAAmB;AAC5B,SAAS,+BAA+B;AACxC,SAAS,sBAAsB;AAE/B,SAAS,qDAAqD;AAE9D,SAA+B,aAAa,cAAc;AAC1D,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AAGxB,MAAM,SAAS,OAAO,IAAI,eAAe;AAEzC,MAAM,oBAAoB,MAAM,WAAW,aAAa;AACxD,MAAM,+BAA+B,MAAM,WAAW,uBAAuB;AAEtE,MAAM,oBAAoB,cAAc;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACT;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACT;AAAA,EACS,cAAc;AAAA,EACd,OAAO,YAAY;AAAA,EACnB,gBAAgB,qBAAqB;AAAA,EAC9C,cAAc;AAAA;AAAA,EAGL,iBAAiB,IAAI,SAAuB;AAAA,EAErD,aAAa,OAAO,QAAkC;AAClD,UAAM,EAAE,SAAS,cAAc,MAAM,cAAc,uBAAuB,YAAY,IAAI;AAE1F,QAAI,SAAS;AACT,YAAM,QAAQ;AAAA,IAClB;AAEA,UAAM,OAAO,MAAM;AAAA,MACf,MAAM,OAAO,OAAO;AAAA,QAChB;AAAA,QACA;AAAA,QACA,eAAe,+BAA+B;AAAA,QAC9C,8BAA8B;AAAA,MAClC;AAAA,IACJ;AACA,UAAM,aAAa,cAAc,KAAK,MAAM,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,EAAE;AACtE,UAAM,aAAa,cAAc,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK,MAAM,IAAI,EAAE;AACtE,UAAM,iBAAiB,KAAK,MAAM,IAAI,EAAE;AAExC,WAAO,IAAI,KAAK;AAAA,MACZ,GAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,IACvB,CAAC;AAAA,EACL;AAAA,EAEA,YAAY,QAA4B;AACpC,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI;AAEJ,UAAM;AAAA,MACF,GAAG;AAAA,MACH,oBAAoB;AAAA;AAAA;AAAA,MAEpB,gBAAgB,IAAI,eAAe,QAAQ,YAAY;AAGnD,cAAM,KAAK,cAAc,YAAY;AACjC,gBAAM,KAAK,mBAAmB,IAAI;AAAA,QACtC,CAAC;AAAA,MACL,CAAC;AAAA,MACD,uBAAuB,IAAI,8CAA8C;AAAA,IAC7E,CAAC;AAED,SAAK,UAAU;AACf,SAAK,MAAM;AACX,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,SAAK,iBAAiB;AACtB,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,kBAAkB;AACvB,SAAK,yBAAyB,yBAAyB,CAAC;AACxD,SAAK,eAAe;AAEpB,aAAS,SAAS,IAAI,IAAI;AAC1B,YAAQ,WAAW,IAAI;AAEvB,WAAO;AAAA,MACH,kBAAkB,KAAK,SAAS,SAAS,MAAM,6BAA6B,QAAQ,WAAW;AAAA,MAC/F,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,IAAI,uBAAuB;AACvB,WAAO,WAAW;AAAA,MACd;AAAA,QACI,KAAK,SAAS,OAAO,KAAK,YAAY;AAAA,QACtC,KAAK,SAAS,OAAO,KAAK,cAAc;AAAA,QACxC,KAAK,SAAS,OAAO,KAAK,eAAe;AAAA,QACzC,OAAO,KAAK;AAAA,QACZ,OAAO,KAAK;AAAA,QACZ,MAAM,WAAW,IAAI,KAAK,oBAAoB;AAAA,QAC9C,UAAU,KAAK;AAAA,QACf,MAAM,KAAK;AAAA,MACf;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,IAAI,wBAAwB;AACxB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,SAAkB;AAClB,WAAO,KAAK,gBAAgB,OAAO;AAAA,EACvC;AAAA,EAEA,IAAI,gBAAgB;AAChB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,WAAW,UAA6B;AACpC,WAAO,QAAQ,KAAK;AAAA,MAChB,IAAI,KAAK;AAAA,MACT,aAAa,KAAK,uBAAuB,IAAI,SAAO,OAAO,yBAAyB,GAAG,CAAC;AAAA,IAC5F,CAAC;AAAA,EACL;AAAA,EAEA,OAAO,EAAE,QAAQ,oBAAoB,iBAAiB,GAAkB,KAA4B;AAChG,QAAI,OAAO,sBAAsB;AAC7B,aAAO;AAAA,QACH,kDAAkD,mBAAmB,MAAM,MAAM,gBAAgB,IAAI,MAAS;AAAA,MAClH;AAAA,IACJ;AACA,UAAM,QAAQ,QAAQ,cAAc,OAAO,eAAe,OAAO,WAAW,KAAK,WAAW;AAC5F,UAAM,UAAU,aAAa,cAAc;AAAA,MACvC;AAAA,MACA,oBAAoB,KAAK,QAAQ,QAAQ,KAAK,aAAa,oBAAoB,OAAO,GAAG;AAAA,IAC7F,CAAC;AAED,QAAI,QAAQ,cAAc,qBAAqB;AAC3C,aAAO;AAAA,QACH,kDAAkD,QAAQ,oBAAoB,MAAM,MAAM,QAAQ,iBAAiB,IAAI,MAAS;AAAA,MACpI;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,OAAO,SAA0B;AAC7B,YAAQ,aAAa,YAAY,KAAK;AACtC,UAAM,EAAE,QAAQ,mBAAmB,IAAI,aAAa,cAAc,OAAO;AACzE,UAAM,cAAc,aAAa,mBAAmB,QAAQ,YAAY;AACxE,UAAM,gBAAgB,YAAY,CAAC;AACnC,UAAM,gBAAgB,KAAK,SACrB,OAAO,sBACN,KAAK,SAAS,UAAU,OAAO;AACtC,UAAM,QAAQ,QAAQ,cAAc,eAAe,OAAO,WAAW,aAAa;AAClF,WAAO;AAAA,MACH;AAAA,MACA,oBAAoB,KAAK,QAAQ,QAAQ,KAAK,aAAa,oBAAoB,OAAO,WAAW;AAAA,IACrG;AAAA,EACJ;AAAA,EAEA,IAAI,0BAAiC;AACjC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,SAA6B;AAC7B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,OAAO,QAAgB;AACvB,QAAI,KAAK,YAAY,UAAa,KAAK,YAAY,QAAQ;AACvD,YAAM,IAAI,cAAc,8BAA8B;AAAA,IAC1D;AACA,SAAK,UAAU;AACf,WAAO,WAAW,IAAI;AAAA,EAC1B;AAAA,EAEA,IAAI,KAAK;AACL,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,MAAM;AACN,WAAO,WAAW,IAAI,GAAG,KAAK,YAAY,SAAS,CAAC,GAAG,KAAK,OAAO,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE;AAAA,EAC7F;AAAA,EAEA,IAAI,gBAAwB;AACxB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK,SAAS,UAAU,OAAO;AAAA,EAC1C;AAAA,EAEA,IAAI,aAAa;AACb,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,sBAAsB;AACtB,WAAO,KAAK,YAAY;AAAA,EAC5B;AAAA,EAEA,IAAI,mBAA2B;AAC3B,QAAI,KAAK,YAAY,QAAW;AAC5B,YAAM,IAAI;AAAA,QACN,GAAG,KAAK,SAAS,UAAU,EAAE;AAAA,MACjC;AAAA,IACJ;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAe,mBAAmB,QAAQ,OAAO;AAC7C,UAAM,gBAAgB,CAAC,GAAG,KAAK,cAAc;AAC7C,eAAW,gBAAgB,eAAe;AACtC,YAAM,aAAa,MAAM,QAAQ,OAAO,MAAS;AAAA,IACrD;AACA,WAAO,cAAc;AAAA,EACzB;AAAA,EAEA,IAAI,eAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,kBAAkB;AACpB,SAAK,cAAc;AACnB,UAAM,KAAK,cAAc,KAAK,IAAI;AAClC,UAAM,KAAK,eAAe;AAAA,EAC9B;AAAA,EAEA,MAAM,eAAe,iBAAmC;AACpD,SAAK,cAAc;AACnB,UAAM,KAAK,mBAAmB,eAAe;AAAA,EACjD;AAAA,EAEA,IAAI,aAAa;AACb,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAe,cAAc,eAAqC;AAC9D,UAAM,MAAM,cAAc,YAAY;AAClC,YAAM,gBAAgB;AAGtB,UAAI,KAAK,oBAAoB;AACzB,eAAO,MAAM,KAAK,KAAK,iCAAiC;AACxD,aAAK,gBAAgB;AAAA,MACzB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAe,mBAAmB,iBAAmC;AACjE,SAAK,cAAc;AACnB,UAAM,MAAM,mBAAmB,eAAe;AAAA,EAClD;AAAA,EAES,YAAY,UAA2B;AAC5C,UAAM,YAAY,QAAQ;AAC1B,aAAS,OAAO,GAAG,YAAY;AAC3B,WAAK,UAAU,OAAO,QAAQ;AAC9B,UAAI,KAAK,iBAAiB,CAAC,KAAK,UAAU,MAAM;AAC5C,aAAK,gBAAgB;AACrB,cAAM,KAAK,MAAM;AAAA,MACrB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAyB,QAAQ;AAC7B,QAAI,CAAC,KAAK,aAAa;AACnB,UAAI;AACA,cAAM,KAAK,cAAc,KAAK;AAAA,MAClC,SAAS,GAAG;AACR,eAAO,MAAM,sBAAsB,KAAK,GAAG,4BAA4B,CAAC;AAAA,MAC5E;AAAA,IACJ;AAEA,UAAM,KAAK,mBAAmB;AAE9B,SAAK,SAAS,cAAc,IAAI;AAChC,UAAM,MAAM,MAAM;AAElB,SAAK,SAAS,SAAS,OAAO,IAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,cAAc;AACd,WAAO,YAAY;AAAA,MACf,aAAa,KAAK,SAAS,eAAe,YAAY;AAAA,MACtD,QAAQ,KAAK;AAAA,IACjB,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,SAAsB;AACzB,YACK,KAAK,SAAS,eAAe,YAAY,eAAe,QAAQ,eACjE,KAAK,gBAAgB,QAAQ;AAAA,EAErC;AACJ;AAAA,CAEO,CAAUA,iBAAV;AACI,WAAS,OAAO,SAAmB,WAAoD;AAC1F,QAAI,CAAC,GAAG,OAAO,GAAG;AACd,YAAM,IAAI,gBAAgB,aAAa,qCAAqC;AAAA,IAChF;AAAA,EACJ;AAJO,EAAAA,aAAS;AAMT,WAAS,GAAG,SAA2C;AAC1D,WAAO,SAAS,SAAS,YAAY;AAAA,EACzC;AAFO,EAAAA,aAAS;AAIT,WAAS,OACZC,SACA,WACA,SACA,WACA,QACA,YACF;AACE,IAAAA,QAAO;AAAA,MACH,QAAQ;AAAA,MACR,GAAG,SAAS;AAAA,MACZ,WAAW,OAAO,YAAY,EAAE,aAAa,OAAO,aAAa,QAAQ,WAAW,CAAC,EAAE,SAAS,CAAC;AAAA,MACjG,WAAW,KAAK;AAAA,QACZ,SAAS,UAAU;AAAA,QACnB,QAAQ,GAAG,OAAO,YAAY,OAAO,MAAM,CAAC,MAAM,OAAO,WAAW;AAAA,QACpE,GAAG,QAAQ;AAAA,MACf,CAAC;AAAA,IACL;AAAA,EACJ;AAlBO,EAAAD,aAAS;AAAA,GAXH;",
5
5
  "names": ["NodeSession", "logger"]
6
6
  }
@@ -3,10 +3,10 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Subject } from "#action/server/Subject.js";
7
- import { Message } from "#codec/MessageCodec.js";
8
- import { Fabric } from "#fabric/Fabric.js";
9
- import { PeerAddress } from "#peer/PeerAddress.js";
6
+ import type { Subject } from "#action/server/Subject.js";
7
+ import type { Message } from "#codec/MessageCodec.js";
8
+ import type { Fabric } from "#fabric/Fabric.js";
9
+ import type { PeerAddress } from "#peer/PeerAddress.js";
10
10
  import { Session } from "./Session.js";
11
11
  export declare abstract class SecureSession extends Session {
12
12
  readonly isSecure = true;
@@ -1 +1 @@
1
- {"version":3,"file":"SecureSession.d.ts","sourceRoot":"","sources":["../../../src/session/SecureSession.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,8BAAsB,aAAc,SAAQ,OAAO;IAC/C,QAAQ,CAAC,QAAQ,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;CAClD;AAED,yBAAiB,aAAa,CAAC;IAC3B,SAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,aAAa,CAI9F;CACJ"}
1
+ {"version":3,"file":"SecureSession.d.ts","sourceRoot":"","sources":["../../../src/session/SecureSession.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,8BAAsB,aAAc,SAAQ,OAAO;IAC/C,QAAQ,CAAC,QAAQ,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;CAClD;AAED,yBAAiB,aAAa,CAAC;IAC3B,SAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,aAAa,CAI9F;CACJ"}
@@ -11,7 +11,7 @@ class SecureSession extends Session {
11
11
  ((SecureSession2) => {
12
12
  function assert(session, errorText) {
13
13
  if (!session?.isSecure) {
14
- throw new MatterFlowError(errorText ?? "Insecure session in secure context");
14
+ throw new MatterFlowError(errorText ?? "Unsecured session in secure context");
15
15
  }
16
16
  }
17
17
  SecureSession2.assert = assert;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/session/SecureSession.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,uBAAuB;AAEhC,SAAS,eAAe;AAEjB,MAAe,sBAAsB,QAAQ;AAAA,EACvC,WAAW;AAIxB;AAAA,CAEO,CAAUA,mBAAV;AACI,WAAS,OAAO,SAAmB,WAAsD;AAC5F,QAAI,CAAC,SAAS,UAAU;AACpB,YAAM,IAAI,gBAAgB,aAAa,oCAAoC;AAAA,IAC/E;AAAA,EACJ;AAJO,EAAAA,eAAS;AAAA,GADH;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AASA,SAAS,uBAAuB;AAEhC,SAAS,eAAe;AAEjB,MAAe,sBAAsB,QAAQ;AAAA,EACvC,WAAW;AAIxB;AAAA,CAEO,CAAUA,mBAAV;AACI,WAAS,OAAO,SAAmB,WAAsD;AAC5F,QAAI,CAAC,SAAS,UAAU;AACpB,YAAM,IAAI,gBAAgB,aAAa,qCAAqC;AAAA,IAChF;AAAA,EACJ;AAJO,EAAAA,eAAS;AAAA,GADH;",
5
5
  "names": ["SecureSession"]
6
6
  }
@@ -3,57 +3,25 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { SupportedTransportsBitmap } from "#common/SupportedTransportsBitmap.js";
7
- import { AsyncObservable, Bytes, Duration, Timestamp } from "#general";
8
- import { NodeId, TypeFromPartialBitSchema } from "#types";
9
- import { DecodedMessage, DecodedPacket, Message, Packet, SessionType } from "../codec/MessageCodec.js";
10
- import { Fabric } from "../fabric/Fabric.js";
11
- import { MessageCounter } from "../protocol/MessageCounter.js";
12
- import { MessageReceptionState } from "../protocol/MessageReceptionState.js";
13
- import { SessionIntervals } from "./SessionIntervals.js";
14
- import { type SessionManager } from "./SessionManager.js";
15
- /** Fallback value for Data Model Revision when not provided in Session parameters. We use Matter 1.2 as assumption. */
16
- export declare const FALLBACK_DATAMODEL_REVISION = 17;
17
- /** Fallback value for Interaction Model Revision when not provided in Session parameters. We use Matter 1.2 as assumption. */
18
- export declare const FALLBACK_INTERACTIONMODEL_REVISION = 11;
19
- /**
20
- * Fallback value for Specification Version when not provided in Session parameters. We use 0 as assumption which is
21
- * "before 1.3".
22
- */
23
- export declare const FALLBACK_SPECIFICATION_VERSION = 0;
24
- /**
25
- * Fallback value for the maximum number of paths that can be included in a single invoke message when not provided in
26
- * Session parameters.
27
- */
28
- export declare const FALLBACK_MAX_PATHS_PER_INVOKE = 1;
29
- export declare const FALLBACK_MAX_TCP_MESSAGE_SIZE = 64000;
30
- export interface SessionParameters extends SessionIntervals {
31
- /** Version of Data Model for the Session parameters side where it appears. */
32
- dataModelRevision: number;
33
- /** Version of Interaction Model for the Session parameters side where it appears. */
34
- interactionModelRevision: number;
35
- /** Version of Specification for the Session parameters side where it appears. */
36
- specificationVersion: number;
37
- /** The maximum number of elements in the InvokeRequests list that the Node is able to process. */
38
- maxPathsPerInvoke: number;
39
- /** A bitmap of the supported transport protocols in addition to MRP. */
40
- supportedTransports: TypeFromPartialBitSchema<typeof SupportedTransportsBitmap>;
41
- /**
42
- * Maximum size of the message carried over TCP, excluding the framing message length
43
- * field, that the node is capable of receiving from its peer.
44
- * Default: 64000 bytes
45
- */
46
- maxTcpMessageSize?: number;
47
- }
48
- export type SessionParameterOptions = Partial<SessionParameters>;
6
+ import type { SupportedTransportsBitmap } from "#common/SupportedTransportsBitmap.js";
7
+ import { AsyncObservable, Bytes, Channel, Duration, Lifetime, ObservableValue, Timestamp } from "#general";
8
+ import { MessageChannel } from "#protocol/MessageChannel.js";
9
+ import type { MessageExchange } from "#protocol/MessageExchange.js";
10
+ import type { NodeId, TypeFromPartialBitSchema } from "#types";
11
+ import type { DecodedMessage, DecodedPacket, Message, Packet, PacketHeader, SessionType } from "../codec/MessageCodec.js";
12
+ import type { Fabric } from "../fabric/Fabric.js";
13
+ import type { MessageCounter } from "../protocol/MessageCounter.js";
14
+ import type { MessageReceptionState } from "../protocol/MessageReceptionState.js";
15
+ import type { SessionManager } from "./SessionManager.js";
16
+ import { SessionParameters } from "./SessionParameters.js";
49
17
  export declare abstract class Session {
50
18
  #private;
51
- abstract get name(): string;
52
- abstract get closingAfterExchangeFinished(): boolean;
19
+ abstract get via(): string;
53
20
  timestamp: Timestamp;
54
21
  readonly createdAt: Timestamp;
55
22
  activeTimestamp: Timestamp;
56
23
  abstract type: SessionType;
24
+ protected deferredClose: boolean;
57
25
  protected readonly idleInterval: Duration;
58
26
  protected readonly activeInterval: Duration;
59
27
  protected readonly activeThreshold: Duration;
@@ -64,26 +32,26 @@ export declare abstract class Session {
64
32
  protected readonly messageCounter: MessageCounter;
65
33
  protected readonly messageReceptionState?: MessageReceptionState;
66
34
  protected readonly supportedTransports: TypeFromPartialBitSchema<typeof SupportedTransportsBitmap>;
67
- protected readonly maxTcpMessageSize: number;
68
- /**
69
- * If the ExchangeManager performs async work to clean up a session it sets this promise. This is because
70
- * historically we didn't return from destroy() until ExchangeManager was complete. Not sure if this is entirely
71
- * necessary, but it makes sense so this allows us to maintain the old behavior.
72
- */
73
- closer?: Promise<void>;
74
- constructor(args: {
75
- manager?: SessionManager;
76
- messageCounter: MessageCounter;
77
- messageReceptionState?: MessageReceptionState;
78
- sessionParameters?: SessionParameterOptions;
79
- setActiveTimestamp: boolean;
80
- });
81
- get destroyed(): AsyncObservable<[], void>;
82
- get closedByPeer(): AsyncObservable<[], void>;
35
+ protected readonly maxTcpMessageSize?: number;
36
+ constructor(config: Session.Configuration);
37
+ get exchanges(): Set<MessageExchange>;
38
+ addExchange(exchange: MessageExchange): void;
39
+ deleteExchange(exchange: MessageExchange): void;
40
+ get closing(): ObservableValue<[any, ...any[]], void>;
83
41
  notifyActivity(messageReceived: boolean): void;
84
- isPeerActive(): boolean;
42
+ get isPeerActive(): boolean;
85
43
  getIncrementedMessageCounter(): Promise<number>;
86
44
  updateMessageCounter(messageCounter: number, _sourceNodeId?: NodeId, _operationalKey?: Bytes): void;
45
+ /**
46
+ * Emits on graceful close.
47
+ *
48
+ * During normal operation this should trigger a close message to notify the peer of closure.
49
+ */
50
+ get gracefulClose(): AsyncObservable<[], void>;
51
+ /**
52
+ * Once set this flag prevents establishment of new exchanges.
53
+ */
54
+ get isClosing(): boolean;
87
55
  protected static generateNonce(securityFlags: number, messageId: number, nodeId: NodeId): Uint8Array<ArrayBufferLike>;
88
56
  /**
89
57
  * The peer's session parameters.
@@ -98,12 +66,60 @@ export declare abstract class Session {
98
66
  abstract supportsMRP: boolean;
99
67
  abstract decode(packet: DecodedPacket, aad?: Bytes): DecodedMessage;
100
68
  abstract encode(message: Message): Packet;
101
- abstract end(sendClose: boolean): Promise<void>;
102
- abstract destroy(sendClose?: boolean, closeAfterExchangeFinished?: boolean, flushSubscriptions?: boolean): Promise<void>;
69
+ static idStrOf(source: Packet | PacketHeader | number): string;
70
+ /**
71
+ * Close the session.
72
+ *
73
+ * This begins the close process. {@link shutdownLogic} is logic that should run once the session no longer accepts
74
+ * new exchanges. It may set {@link deferredClose} to prevent the close from proceeding until all exchanges are
75
+ * finished. Otherwise, the close will proceed immediately.
76
+ */
77
+ initiateClose(shutdownLogic?: () => Promise<void>): Promise<void>;
78
+ /**
79
+ * Force-close the session.
80
+ *
81
+ * This terminates subscriptions and exchanges without notifying peers. It places the session in a closing state
82
+ * so no further exchanges are accepted.
83
+ *
84
+ * @param except an exchange that should not be forced close; this allows the current exchange to remain open
85
+ */
86
+ initiateForceClose(except?: MessageExchange): Promise<void>;
87
+ get isClosed(): boolean;
88
+ /**
89
+ * The {@link MessageChannel} other components use for session communication.
90
+ */
91
+ get channel(): MessageChannel;
92
+ get usesMrp(): boolean;
93
+ get supportsLargeMessages(): boolean;
94
+ get hasActiveExchanges(): boolean;
95
+ closeSubscriptions(_cancelledByPeer?: boolean): Promise<number>;
96
+ detachChannel(): MessageChannel | undefined;
97
+ protected close(): Promise<void>;
103
98
  protected get manager(): SessionManager | undefined;
104
99
  /**
105
- * @deprecated
100
+ * This is primarily intended for testing.
106
101
  */
107
- get owner(): unknown;
102
+ protected set channel(channel: MessageChannel);
103
+ join(...name: unknown[]): Lifetime;
104
+ /**
105
+ * Invoked by manager when the session is "live".
106
+ *
107
+ * This is separate from construction because we sometimes discard sessions without installing in a manager or
108
+ * closing.
109
+ */
110
+ activate(): Lifetime;
111
+ protected set lifetime(lifetime: Lifetime);
112
+ }
113
+ export declare namespace Session {
114
+ interface CommonConfig {
115
+ manager?: SessionManager;
116
+ channel?: Channel<Bytes>;
117
+ }
118
+ interface Configuration extends CommonConfig {
119
+ messageCounter: MessageCounter;
120
+ messageReceptionState?: MessageReceptionState;
121
+ sessionParameters?: SessionParameters.Config;
122
+ setActiveTimestamp: boolean;
123
+ }
108
124
  }
109
125
  //# sourceMappingURL=Session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../../src/session/Session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../../src/session/Session.ts"],"names":[],"mappings":"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"}