@matter/protocol 0.16.0-alpha.0-20250816-d22ad240d → 0.16.0-alpha.0-20250819-0a388db8b

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 (392) hide show
  1. package/dist/cjs/action/Val.d.ts +6 -0
  2. package/dist/cjs/action/Val.d.ts.map +1 -1
  3. package/dist/cjs/action/Val.js.map +1 -1
  4. package/dist/cjs/action/client/ClientInteraction.d.ts +1 -1
  5. package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
  6. package/dist/cjs/action/client/ClientInteraction.js +4 -4
  7. package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
  8. package/dist/cjs/action/client/ClientSubscription.d.ts +2 -1
  9. package/dist/cjs/action/client/ClientSubscription.d.ts.map +1 -1
  10. package/dist/cjs/action/client/ClientSubscriptionHandler.js +2 -2
  11. package/dist/cjs/action/client/ClientSubscriptionHandler.js.map +1 -1
  12. package/dist/cjs/action/client/ClientSubscriptions.d.ts.map +1 -1
  13. package/dist/cjs/action/client/ClientSubscriptions.js +11 -7
  14. package/dist/cjs/action/client/ClientSubscriptions.js.map +1 -1
  15. package/dist/cjs/action/request/Subscribe.d.ts +6 -6
  16. package/dist/cjs/action/request/Subscribe.d.ts.map +1 -1
  17. package/dist/cjs/action/request/Subscribe.js +11 -9
  18. package/dist/cjs/action/request/Subscribe.js.map +1 -1
  19. package/dist/cjs/advertisement/Advertisement.d.ts +3 -3
  20. package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -1
  21. package/dist/cjs/advertisement/Advertisement.js +5 -5
  22. package/dist/cjs/advertisement/Advertisement.js.map +1 -1
  23. package/dist/cjs/advertisement/ble/BleAdvertisement.d.ts.map +1 -1
  24. package/dist/cjs/advertisement/ble/BleAdvertisement.js +7 -6
  25. package/dist/cjs/advertisement/ble/BleAdvertisement.js.map +1 -1
  26. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +11 -10
  27. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  28. package/dist/cjs/advertisement/ble/BleAdvertiser.js +4 -4
  29. package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +1 -1
  30. package/dist/cjs/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -1
  31. package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js +7 -7
  32. package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js.map +1 -1
  33. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +2 -2
  34. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  35. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +4 -4
  36. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  37. package/dist/cjs/ble/Ble.d.ts +2 -2
  38. package/dist/cjs/ble/Ble.d.ts.map +1 -1
  39. package/dist/cjs/ble/Ble.js.map +1 -1
  40. package/dist/cjs/ble/BleConsts.d.ts +4 -4
  41. package/dist/cjs/ble/BleConsts.d.ts.map +1 -1
  42. package/dist/cjs/ble/BleConsts.js +7 -7
  43. package/dist/cjs/ble/BleConsts.js.map +1 -1
  44. package/dist/cjs/ble/BtpSessionHandler.js +2 -2
  45. package/dist/cjs/ble/BtpSessionHandler.js.map +1 -1
  46. package/dist/cjs/certificate/AttestationCertificateManager.js +3 -3
  47. package/dist/cjs/certificate/AttestationCertificateManager.js.map +1 -1
  48. package/dist/cjs/certificate/CertificateAuthority.js +2 -2
  49. package/dist/cjs/certificate/CertificateAuthority.js.map +1 -1
  50. package/dist/cjs/certificate/kinds/OperationalBase.js +2 -2
  51. package/dist/cjs/certificate/kinds/OperationalBase.js.map +1 -1
  52. package/dist/cjs/cluster/client/ClusterClient.js +5 -5
  53. package/dist/cjs/cluster/client/ClusterClient.js.map +1 -1
  54. package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +3 -3
  55. package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -1
  56. package/dist/cjs/cluster/client/EventClient.d.ts +2 -1
  57. package/dist/cjs/cluster/client/EventClient.d.ts.map +1 -1
  58. package/dist/cjs/cluster/client/EventClient.js +3 -3
  59. package/dist/cjs/cluster/client/EventClient.js.map +1 -1
  60. package/dist/cjs/common/FailsafeContext.d.ts +4 -4
  61. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  62. package/dist/cjs/common/FailsafeContext.js +8 -8
  63. package/dist/cjs/common/FailsafeContext.js.map +1 -1
  64. package/dist/cjs/common/FailsafeTimer.d.ts +3 -3
  65. package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -1
  66. package/dist/cjs/common/FailsafeTimer.js +8 -8
  67. package/dist/cjs/common/FailsafeTimer.js.map +1 -1
  68. package/dist/cjs/common/Scanner.d.ts +7 -7
  69. package/dist/cjs/common/Scanner.d.ts.map +1 -1
  70. package/dist/cjs/common/Scanner.js.map +1 -1
  71. package/dist/cjs/events/OccurrenceManager.js +1 -1
  72. package/dist/cjs/events/OccurrenceManager.js.map +1 -1
  73. package/dist/cjs/groups/FabricGroups.d.ts +1 -1
  74. package/dist/cjs/groups/FabricGroups.js +1 -1
  75. package/dist/cjs/groups/Groups.d.ts +1 -1
  76. package/dist/cjs/groups/KeySets.d.ts +3 -3
  77. package/dist/cjs/groups/KeySets.d.ts.map +1 -1
  78. package/dist/cjs/groups/KeySets.js +12 -4
  79. package/dist/cjs/groups/KeySets.js.map +1 -1
  80. package/dist/cjs/interaction/InteractionClient.d.ts +9 -9
  81. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  82. package/dist/cjs/interaction/InteractionClient.js +33 -33
  83. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  84. package/dist/cjs/interaction/InteractionMessenger.d.ts +10 -10
  85. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  86. package/dist/cjs/interaction/InteractionMessenger.js +15 -15
  87. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  88. package/dist/cjs/interaction/Subscription.d.ts +3 -4
  89. package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
  90. package/dist/cjs/interaction/Subscription.js +9 -12
  91. package/dist/cjs/interaction/Subscription.js.map +1 -1
  92. package/dist/cjs/interaction/SubscriptionClient.d.ts +3 -3
  93. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  94. package/dist/cjs/interaction/SubscriptionClient.js +3 -3
  95. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  96. package/dist/cjs/mdns/MdnsClient.d.ts +9 -9
  97. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
  98. package/dist/cjs/mdns/MdnsClient.js +86 -82
  99. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  100. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
  101. package/dist/cjs/mdns/MdnsServer.js +11 -9
  102. package/dist/cjs/mdns/MdnsServer.js.map +1 -1
  103. package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
  104. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  105. package/dist/cjs/peer/ControllerCommissioner.js +7 -7
  106. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  107. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  108. package/dist/cjs/peer/ControllerCommissioningFlow.js +37 -35
  109. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  110. package/dist/cjs/peer/ControllerDiscovery.d.ts +4 -4
  111. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
  112. package/dist/cjs/peer/ControllerDiscovery.js +12 -17
  113. package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
  114. package/dist/cjs/peer/InteractionQueue.d.ts.map +1 -1
  115. package/dist/cjs/peer/InteractionQueue.js +2 -2
  116. package/dist/cjs/peer/InteractionQueue.js.map +1 -1
  117. package/dist/cjs/peer/PeerSet.d.ts +2 -2
  118. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  119. package/dist/cjs/peer/PeerSet.js +25 -25
  120. package/dist/cjs/peer/PeerSet.js.map +1 -1
  121. package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
  122. package/dist/cjs/protocol/DeviceCommissioner.js +1 -1
  123. package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
  124. package/dist/cjs/protocol/ExchangeManager.d.ts +1 -1
  125. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  126. package/dist/cjs/protocol/ExchangeManager.js +2 -5
  127. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  128. package/dist/cjs/protocol/ExchangeProvider.d.ts +4 -4
  129. package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
  130. package/dist/cjs/protocol/ExchangeProvider.js +3 -3
  131. package/dist/cjs/protocol/ExchangeProvider.js.map +1 -1
  132. package/dist/cjs/protocol/MessageChannel.d.ts +5 -5
  133. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  134. package/dist/cjs/protocol/MessageChannel.js +19 -15
  135. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  136. package/dist/cjs/protocol/MessageExchange.d.ts +6 -6
  137. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  138. package/dist/cjs/protocol/MessageExchange.js +35 -33
  139. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  140. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +8 -8
  141. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  142. package/dist/cjs/securechannel/SecureChannelMessenger.js +17 -17
  143. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  144. package/dist/cjs/session/InsecureSession.d.ts +2 -2
  145. package/dist/cjs/session/InsecureSession.d.ts.map +1 -1
  146. package/dist/cjs/session/InsecureSession.js.map +1 -1
  147. package/dist/cjs/session/NodeSession.js +3 -3
  148. package/dist/cjs/session/Session.d.ts +7 -7
  149. package/dist/cjs/session/Session.d.ts.map +1 -1
  150. package/dist/cjs/session/Session.js +19 -19
  151. package/dist/cjs/session/Session.js.map +1 -1
  152. package/dist/cjs/session/SessionIntervals.d.ts +7 -6
  153. package/dist/cjs/session/SessionIntervals.d.ts.map +1 -1
  154. package/dist/cjs/session/SessionIntervals.js +8 -8
  155. package/dist/cjs/session/SessionIntervals.js.map +1 -1
  156. package/dist/cjs/session/SessionManager.d.ts +2 -2
  157. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  158. package/dist/cjs/session/SessionManager.js +6 -6
  159. package/dist/cjs/session/SessionManager.js.map +1 -1
  160. package/dist/cjs/session/case/CaseClient.d.ts +2 -1
  161. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  162. package/dist/cjs/session/case/CaseClient.js +2 -2
  163. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  164. package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -1
  165. package/dist/cjs/session/pase/PaseMessenger.js +4 -7
  166. package/dist/cjs/session/pase/PaseMessenger.js.map +1 -1
  167. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  168. package/dist/cjs/session/pase/PaseServer.js +1 -1
  169. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  170. package/dist/esm/action/Val.d.ts +6 -0
  171. package/dist/esm/action/Val.d.ts.map +1 -1
  172. package/dist/esm/action/Val.js.map +1 -1
  173. package/dist/esm/action/client/ClientInteraction.d.ts +1 -1
  174. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  175. package/dist/esm/action/client/ClientInteraction.js +5 -5
  176. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  177. package/dist/esm/action/client/ClientSubscription.d.ts +2 -1
  178. package/dist/esm/action/client/ClientSubscription.d.ts.map +1 -1
  179. package/dist/esm/action/client/ClientSubscriptionHandler.js +2 -2
  180. package/dist/esm/action/client/ClientSubscriptionHandler.js.map +1 -1
  181. package/dist/esm/action/client/ClientSubscriptions.d.ts.map +1 -1
  182. package/dist/esm/action/client/ClientSubscriptions.js +14 -8
  183. package/dist/esm/action/client/ClientSubscriptions.js.map +1 -1
  184. package/dist/esm/action/request/Subscribe.d.ts +6 -6
  185. package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
  186. package/dist/esm/action/request/Subscribe.js +12 -10
  187. package/dist/esm/action/request/Subscribe.js.map +1 -1
  188. package/dist/esm/advertisement/Advertisement.d.ts +3 -3
  189. package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
  190. package/dist/esm/advertisement/Advertisement.js +16 -7
  191. package/dist/esm/advertisement/Advertisement.js.map +1 -1
  192. package/dist/esm/advertisement/ble/BleAdvertisement.d.ts.map +1 -1
  193. package/dist/esm/advertisement/ble/BleAdvertisement.js +7 -6
  194. package/dist/esm/advertisement/ble/BleAdvertisement.js.map +1 -1
  195. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +11 -10
  196. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  197. package/dist/esm/advertisement/ble/BleAdvertiser.js +6 -6
  198. package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
  199. package/dist/esm/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -1
  200. package/dist/esm/advertisement/mdns/MdnsAdvertisement.js +17 -8
  201. package/dist/esm/advertisement/mdns/MdnsAdvertisement.js.map +1 -1
  202. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +2 -2
  203. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  204. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +14 -6
  205. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  206. package/dist/esm/ble/Ble.d.ts +2 -2
  207. package/dist/esm/ble/Ble.d.ts.map +1 -1
  208. package/dist/esm/ble/Ble.js +5 -1
  209. package/dist/esm/ble/Ble.js.map +1 -1
  210. package/dist/esm/ble/BleConsts.d.ts +4 -4
  211. package/dist/esm/ble/BleConsts.d.ts.map +1 -1
  212. package/dist/esm/ble/BleConsts.js +8 -8
  213. package/dist/esm/ble/BleConsts.js.map +1 -1
  214. package/dist/esm/ble/BtpSessionHandler.js +4 -4
  215. package/dist/esm/ble/BtpSessionHandler.js.map +1 -1
  216. package/dist/esm/certificate/AttestationCertificateManager.js +3 -3
  217. package/dist/esm/certificate/AttestationCertificateManager.js.map +1 -1
  218. package/dist/esm/certificate/CertificateAuthority.js +2 -2
  219. package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
  220. package/dist/esm/certificate/kinds/OperationalBase.js +2 -2
  221. package/dist/esm/certificate/kinds/OperationalBase.js.map +1 -1
  222. package/dist/esm/cluster/client/ClusterClient.js +5 -5
  223. package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
  224. package/dist/esm/cluster/client/ClusterClientTypes.d.ts +3 -3
  225. package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
  226. package/dist/esm/cluster/client/EventClient.d.ts +2 -1
  227. package/dist/esm/cluster/client/EventClient.d.ts.map +1 -1
  228. package/dist/esm/cluster/client/EventClient.js +3 -3
  229. package/dist/esm/cluster/client/EventClient.js.map +1 -1
  230. package/dist/esm/common/FailsafeContext.d.ts +4 -4
  231. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  232. package/dist/esm/common/FailsafeContext.js +9 -8
  233. package/dist/esm/common/FailsafeContext.js.map +1 -1
  234. package/dist/esm/common/FailsafeTimer.d.ts +3 -3
  235. package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
  236. package/dist/esm/common/FailsafeTimer.js +8 -8
  237. package/dist/esm/common/FailsafeTimer.js.map +1 -1
  238. package/dist/esm/common/Scanner.d.ts +7 -7
  239. package/dist/esm/common/Scanner.d.ts.map +1 -1
  240. package/dist/esm/common/Scanner.js +5 -1
  241. package/dist/esm/common/Scanner.js.map +1 -1
  242. package/dist/esm/events/OccurrenceManager.js +1 -1
  243. package/dist/esm/events/OccurrenceManager.js.map +1 -1
  244. package/dist/esm/groups/FabricGroups.d.ts +1 -1
  245. package/dist/esm/groups/FabricGroups.js +1 -1
  246. package/dist/esm/groups/Groups.d.ts +1 -1
  247. package/dist/esm/groups/KeySets.d.ts +3 -3
  248. package/dist/esm/groups/KeySets.d.ts.map +1 -1
  249. package/dist/esm/groups/KeySets.js +13 -5
  250. package/dist/esm/groups/KeySets.js.map +1 -1
  251. package/dist/esm/interaction/InteractionClient.d.ts +9 -9
  252. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  253. package/dist/esm/interaction/InteractionClient.js +34 -33
  254. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  255. package/dist/esm/interaction/InteractionMessenger.d.ts +10 -10
  256. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  257. package/dist/esm/interaction/InteractionMessenger.js +16 -15
  258. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  259. package/dist/esm/interaction/Subscription.d.ts +3 -4
  260. package/dist/esm/interaction/Subscription.d.ts.map +1 -1
  261. package/dist/esm/interaction/Subscription.js +9 -12
  262. package/dist/esm/interaction/Subscription.js.map +1 -1
  263. package/dist/esm/interaction/SubscriptionClient.d.ts +3 -3
  264. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  265. package/dist/esm/interaction/SubscriptionClient.js +4 -4
  266. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  267. package/dist/esm/mdns/MdnsClient.d.ts +9 -9
  268. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
  269. package/dist/esm/mdns/MdnsClient.js +94 -82
  270. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  271. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
  272. package/dist/esm/mdns/MdnsServer.js +14 -9
  273. package/dist/esm/mdns/MdnsServer.js.map +1 -1
  274. package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
  275. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  276. package/dist/esm/peer/ControllerCommissioner.js +11 -8
  277. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  278. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  279. package/dist/esm/peer/ControllerCommissioningFlow.js +44 -35
  280. package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
  281. package/dist/esm/peer/ControllerDiscovery.d.ts +4 -4
  282. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
  283. package/dist/esm/peer/ControllerDiscovery.js +20 -18
  284. package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
  285. package/dist/esm/peer/InteractionQueue.d.ts.map +1 -1
  286. package/dist/esm/peer/InteractionQueue.js +3 -3
  287. package/dist/esm/peer/InteractionQueue.js.map +1 -1
  288. package/dist/esm/peer/PeerSet.d.ts +2 -2
  289. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  290. package/dist/esm/peer/PeerSet.js +29 -26
  291. package/dist/esm/peer/PeerSet.js.map +1 -1
  292. package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
  293. package/dist/esm/protocol/DeviceCommissioner.js +2 -2
  294. package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
  295. package/dist/esm/protocol/ExchangeManager.d.ts +1 -1
  296. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  297. package/dist/esm/protocol/ExchangeManager.js +3 -6
  298. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  299. package/dist/esm/protocol/ExchangeProvider.d.ts +4 -4
  300. package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
  301. package/dist/esm/protocol/ExchangeProvider.js +4 -4
  302. package/dist/esm/protocol/ExchangeProvider.js.map +1 -1
  303. package/dist/esm/protocol/MessageChannel.d.ts +5 -5
  304. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  305. package/dist/esm/protocol/MessageChannel.js +20 -16
  306. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  307. package/dist/esm/protocol/MessageExchange.d.ts +6 -6
  308. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  309. package/dist/esm/protocol/MessageExchange.js +39 -34
  310. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  311. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +8 -8
  312. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  313. package/dist/esm/securechannel/SecureChannelMessenger.js +18 -18
  314. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  315. package/dist/esm/session/InsecureSession.d.ts +2 -2
  316. package/dist/esm/session/InsecureSession.d.ts.map +1 -1
  317. package/dist/esm/session/InsecureSession.js.map +1 -1
  318. package/dist/esm/session/NodeSession.js +3 -3
  319. package/dist/esm/session/Session.d.ts +7 -7
  320. package/dist/esm/session/Session.d.ts.map +1 -1
  321. package/dist/esm/session/Session.js +27 -20
  322. package/dist/esm/session/Session.js.map +1 -1
  323. package/dist/esm/session/SessionIntervals.d.ts +7 -6
  324. package/dist/esm/session/SessionIntervals.d.ts.map +1 -1
  325. package/dist/esm/session/SessionIntervals.js +8 -8
  326. package/dist/esm/session/SessionIntervals.js.map +1 -1
  327. package/dist/esm/session/SessionManager.d.ts +2 -2
  328. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  329. package/dist/esm/session/SessionManager.js +6 -6
  330. package/dist/esm/session/SessionManager.js.map +1 -1
  331. package/dist/esm/session/case/CaseClient.d.ts +2 -1
  332. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  333. package/dist/esm/session/case/CaseClient.js +2 -2
  334. package/dist/esm/session/case/CaseClient.js.map +1 -1
  335. package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -1
  336. package/dist/esm/session/pase/PaseMessenger.js +5 -11
  337. package/dist/esm/session/pase/PaseMessenger.js.map +1 -1
  338. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  339. package/dist/esm/session/pase/PaseServer.js +2 -1
  340. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  341. package/package.json +6 -6
  342. package/src/action/Val.ts +5 -0
  343. package/src/action/client/ClientInteraction.ts +4 -4
  344. package/src/action/client/ClientSubscription.ts +2 -1
  345. package/src/action/client/ClientSubscriptionHandler.ts +2 -2
  346. package/src/action/client/ClientSubscriptions.ts +14 -8
  347. package/src/action/request/Subscribe.ts +17 -15
  348. package/src/advertisement/Advertisement.ts +18 -8
  349. package/src/advertisement/ble/BleAdvertisement.ts +7 -6
  350. package/src/advertisement/ble/BleAdvertiser.ts +11 -11
  351. package/src/advertisement/mdns/MdnsAdvertisement.ts +20 -9
  352. package/src/advertisement/mdns/MdnsAdvertiser.ts +17 -7
  353. package/src/ble/Ble.ts +11 -2
  354. package/src/ble/BleConsts.ts +5 -5
  355. package/src/ble/BtpSessionHandler.ts +4 -4
  356. package/src/certificate/AttestationCertificateManager.ts +3 -3
  357. package/src/certificate/CertificateAuthority.ts +2 -2
  358. package/src/certificate/kinds/OperationalBase.ts +3 -3
  359. package/src/cluster/client/ClusterClient.ts +8 -8
  360. package/src/cluster/client/ClusterClientTypes.ts +3 -3
  361. package/src/cluster/client/EventClient.ts +5 -5
  362. package/src/common/FailsafeContext.ts +11 -13
  363. package/src/common/FailsafeTimer.ts +11 -13
  364. package/src/common/Scanner.ts +16 -7
  365. package/src/events/OccurrenceManager.ts +1 -1
  366. package/src/groups/FabricGroups.ts +1 -1
  367. package/src/groups/KeySets.ts +14 -6
  368. package/src/interaction/InteractionClient.ts +46 -44
  369. package/src/interaction/InteractionMessenger.ts +24 -22
  370. package/src/interaction/Subscription.ts +10 -14
  371. package/src/interaction/SubscriptionClient.ts +6 -6
  372. package/src/mdns/MdnsClient.ts +105 -82
  373. package/src/mdns/MdnsServer.ts +14 -9
  374. package/src/peer/ControllerCommissioner.ts +12 -9
  375. package/src/peer/ControllerCommissioningFlow.ts +48 -39
  376. package/src/peer/ControllerDiscovery.ts +22 -18
  377. package/src/peer/InteractionQueue.ts +3 -3
  378. package/src/peer/PeerSet.ts +34 -28
  379. package/src/protocol/DeviceCommissioner.ts +2 -2
  380. package/src/protocol/ExchangeManager.ts +3 -6
  381. package/src/protocol/ExchangeProvider.ts +6 -6
  382. package/src/protocol/MessageChannel.ts +26 -21
  383. package/src/protocol/MessageExchange.ts +42 -38
  384. package/src/securechannel/SecureChannelMessenger.ts +16 -22
  385. package/src/session/InsecureSession.ts +2 -2
  386. package/src/session/NodeSession.ts +3 -3
  387. package/src/session/Session.ts +31 -21
  388. package/src/session/SessionIntervals.ts +11 -11
  389. package/src/session/SessionManager.ts +10 -9
  390. package/src/session/case/CaseClient.ts +3 -3
  391. package/src/session/pase/PaseMessenger.ts +5 -11
  392. package/src/session/pase/PaseServer.ts +2 -1
@@ -15,10 +15,17 @@ import {
15
15
  Bytes,
16
16
  ChannelType,
17
17
  Diagnostic,
18
+ Duration,
19
+ Instant,
18
20
  Logger,
19
21
  MatterError,
22
+ Millis,
23
+ Minutes,
20
24
  repackErrorAs,
25
+ Seconds,
21
26
  Time,
27
+ Timespan,
28
+ Timestamp,
22
29
  UnexpectedDataError,
23
30
  } from "#general";
24
31
  import {
@@ -178,7 +185,7 @@ export class OperativeConnectionFailedError extends CommissioningError {}
178
185
  /** Error that throws when Commissioning fails but a process can be continued. */
179
186
  class RecoverableCommissioningError extends CommissioningError {}
180
187
 
181
- const DEFAULT_FAILSAFE_TIME_S = 60;
188
+ const DEFAULT_FAILSAFE_TIME = Minutes.one;
182
189
 
183
190
  /**
184
191
  * Class to abstract the Device commission flow in a step wise way as defined in Specs. The specs are not 100%
@@ -195,12 +202,12 @@ export class ControllerCommissioningFlow {
195
202
  protected readonly commissioningSteps = new Array<CommissioningStep>();
196
203
  protected readonly commissioningStepResults = new Map<string, CommissioningStepResult>();
197
204
  readonly #clusterClients = new Map<ClusterId, ClusterClientObj>();
198
- #commissioningStartedTime: number | undefined;
199
- #commissioningExpiryTime: number | undefined;
200
- #currentFailSafeEndTime: number | undefined;
205
+ #commissioningStartedTime: Timestamp | undefined;
206
+ #commissioningExpiryTime: Timestamp | undefined;
207
+ #currentFailSafeEndTime: Timestamp | undefined;
201
208
  protected lastBreadcrumb = 1;
202
209
  protected collectedCommissioningData: CollectedCommissioningData = {};
203
- #defaultFailSafeTimeS = DEFAULT_FAILSAFE_TIME_S;
210
+ #defaultFailSafeTime = DEFAULT_FAILSAFE_TIME;
204
211
 
205
212
  constructor(
206
213
  /** InteractionClient for the initiated PASE session */
@@ -252,7 +259,7 @@ export class ControllerCommissioningFlow {
252
259
  this.#setCommissioningStepResult(step, result);
253
260
 
254
261
  if (this.#currentFailSafeEndTime !== undefined) {
255
- if (this.#commissioningExpiryTime !== undefined && Time.nowMs() > this.#commissioningExpiryTime) {
262
+ if (this.#commissioningExpiryTime !== undefined && Time.nowMs > this.#commissioningExpiryTime) {
256
263
  logger.error(
257
264
  `Commissioning step ${step.stepNumber}.${step.subStepNumber}: ${step.name} succeeded, but commissioning took too long in general!`,
258
265
  );
@@ -262,13 +269,14 @@ export class ControllerCommissioningFlow {
262
269
  `Commissioning time exceeds the maximum timeframe${maxTimeS ? ` of ${maxTimeS}s` : ""}`,
263
270
  );
264
271
  }
272
+
265
273
  /**
266
274
  * Commissioner SHALL re-arm the Fail-safe timer on the Commissionee to the desired commissioning
267
275
  * timeout within 60 seconds of the completion of PASE session establishment, using the ArmFailSafe
268
276
  * command (see Section 11.9.6.2, “ArmFailSafe Command”)
269
277
  */
270
- const timeLeft = Math.floor((this.#currentFailSafeEndTime - Time.nowMs()) / 1000);
271
- if (timeLeft < this.#defaultFailSafeTimeS / 2) {
278
+ const timeLeft = Timespan(Time.nowMs, this.#currentFailSafeEndTime).duration;
279
+ if (timeLeft < this.#defaultFailSafeTime / 2) {
272
280
  logger.info(
273
281
  `After Commissioning step ${step.stepNumber}.${step.subStepNumber}: ${
274
282
  step.name
@@ -595,45 +603,46 @@ export class ControllerCommissioningFlow {
595
603
  * reading BasicCommissioningInfo attribute (see Section 11.10.5.2, “BasicCommissioningInfo
596
604
  * Attribute”) prior to invoking the ArmFailSafe command.
597
605
  */
598
- async #armFailsafe(timeS?: number) {
606
+ async #armFailsafe(time?: Duration) {
599
607
  const client = this.#getClusterClient(GeneralCommissioning.Cluster);
600
608
  if (this.collectedCommissioningData.basicCommissioningInfo === undefined) {
601
609
  const basicCommissioningInfo = await client.getBasicCommissioningInfoAttribute();
602
610
  this.collectedCommissioningData.basicCommissioningInfo = basicCommissioningInfo;
603
- this.#defaultFailSafeTimeS = basicCommissioningInfo.failSafeExpiryLengthSeconds;
604
- this.#commissioningStartedTime = Time.nowMs();
605
- this.#commissioningExpiryTime =
606
- this.#commissioningStartedTime + basicCommissioningInfo.maxCumulativeFailsafeSeconds * 1000;
611
+ this.#defaultFailSafeTime = Seconds(basicCommissioningInfo.failSafeExpiryLengthSeconds);
612
+ this.#commissioningStartedTime = Time.nowMs;
613
+ this.#commissioningExpiryTime = Timestamp(
614
+ this.#commissioningStartedTime + Seconds(basicCommissioningInfo.maxCumulativeFailsafeSeconds),
615
+ );
607
616
  }
608
- const expiryLengthSeconds = timeS ?? this.#defaultFailSafeTimeS;
617
+ const expiryLength = time ?? this.#defaultFailSafeTime;
609
618
  this.#ensureGeneralCommissioningSuccess(
610
619
  "armFailSafe",
611
620
  await client.armFailSafe({
612
621
  breadcrumb: this.lastBreadcrumb,
613
- expiryLengthSeconds,
622
+ expiryLengthSeconds: Seconds.of(expiryLength),
614
623
  }),
615
624
  );
616
- this.#currentFailSafeEndTime = Time.nowMs() + expiryLengthSeconds * 1000;
625
+ this.#currentFailSafeEndTime = Timestamp(Time.nowMs + expiryLength);
617
626
  return {
618
627
  code: CommissioningStepResultCode.Success,
619
628
  breadcrumb: this.lastBreadcrumb,
620
629
  };
621
630
  }
622
631
 
623
- get #failSafeTimeLeftS() {
632
+ get #failSafeTimeLeft() {
624
633
  if (this.#currentFailSafeEndTime === undefined) {
625
- return 0;
634
+ return Instant;
626
635
  }
627
- return Math.max(0, Math.ceil((this.#currentFailSafeEndTime - Time.nowMs()) / 1000));
636
+ return Duration.max(Timespan(Time.nowMs, this.#currentFailSafeEndTime).duration, 0);
628
637
  }
629
638
 
630
- async #ensureFailsafeTimerForS(maxProcessingTime: number) {
631
- const minFailsafeTimeS = this.interactionClient.maximumPeerResponseTimeMs(maxProcessingTime);
639
+ async #ensureFailsafeTimerFor(maxProcessingTime: Duration) {
640
+ const minFailsafeTime = this.interactionClient.maximumPeerResponseTime(maxProcessingTime);
632
641
 
633
- const timeLeft = this.#failSafeTimeLeftS;
634
- if (timeLeft < minFailsafeTimeS) {
635
- logger.debug(`Failsafe timer has only ${timeLeft}s left, re-arming for at least ${minFailsafeTimeS}s`);
636
- await this.#armFailsafe(Math.max(minFailsafeTimeS, this.#defaultFailSafeTimeS));
642
+ const timeLeft = this.#failSafeTimeLeft;
643
+ if (timeLeft < minFailsafeTime) {
644
+ logger.debug(`Failsafe timer has only ${timeLeft}s left, re-arming for at least ${minFailsafeTime}`);
645
+ await this.#armFailsafe(Duration.max(minFailsafeTime, this.#defaultFailSafeTime));
637
646
  } else {
638
647
  logger.debug(`Failsafe timer is already set for at least ${timeLeft}s`);
639
648
  }
@@ -1019,8 +1028,8 @@ export class ControllerCommissioningFlow {
1019
1028
 
1020
1029
  // Only Scan when the device supports concurrent connections
1021
1030
  if (this.collectedCommissioningData.supportsConcurrentConnection !== false) {
1022
- const scanMaxTimeSeconds = await networkCommissioningClusterClient.getScanMaxTimeSecondsAttribute();
1023
- await this.#ensureFailsafeTimerForS(scanMaxTimeSeconds);
1031
+ const scanMaxTime = Seconds(await networkCommissioningClusterClient.getScanMaxTimeSecondsAttribute());
1032
+ await this.#ensureFailsafeTimerFor(scanMaxTime);
1024
1033
 
1025
1034
  const { networkingStatus, wiFiScanResults, debugText } =
1026
1035
  await networkCommissioningClusterClient.scanNetworks(
@@ -1028,7 +1037,7 @@ export class ControllerCommissioningFlow {
1028
1037
  ssid,
1029
1038
  breadcrumb: this.lastBreadcrumb++,
1030
1039
  },
1031
- { expectedProcessingTimeMs: scanMaxTimeSeconds * 1000 },
1040
+ { expectedProcessingTime: scanMaxTime },
1032
1041
  );
1033
1042
  if (networkingStatus !== NetworkCommissioning.NetworkCommissioningStatus.Success) {
1034
1043
  throw new WifiNetworkSetupFailedError(`Commissionee failed to scan for WiFi networks: ${debugText}`);
@@ -1080,15 +1089,15 @@ export class ControllerCommissioningFlow {
1080
1089
  };
1081
1090
  }
1082
1091
 
1083
- const connectMaxTimeSeconds = await networkCommissioningClusterClient.getConnectMaxTimeSecondsAttribute();
1084
- await this.#ensureFailsafeTimerForS(connectMaxTimeSeconds);
1092
+ const connectMaxTime = Seconds(await networkCommissioningClusterClient.getConnectMaxTimeSecondsAttribute());
1093
+ await this.#ensureFailsafeTimerFor(connectMaxTime);
1085
1094
 
1086
1095
  const connectResult = await networkCommissioningClusterClient.connectNetwork(
1087
1096
  {
1088
1097
  networkId: networkId,
1089
1098
  breadcrumb: this.lastBreadcrumb++,
1090
1099
  },
1091
- { expectedProcessingTimeMs: connectMaxTimeSeconds * 1000 },
1100
+ { expectedProcessingTime: connectMaxTime },
1092
1101
  );
1093
1102
 
1094
1103
  if (connectResult.networkingStatus !== NetworkCommissioning.NetworkCommissioningStatus.Success) {
@@ -1164,13 +1173,13 @@ export class ControllerCommissioningFlow {
1164
1173
 
1165
1174
  // Only Scan when the device supports concurrent connections
1166
1175
  if (this.collectedCommissioningData.supportsConcurrentConnection !== false) {
1167
- const scanMaxTimeSeconds = await networkCommissioningClusterClient.getScanMaxTimeSecondsAttribute();
1168
- await this.#ensureFailsafeTimerForS(scanMaxTimeSeconds);
1176
+ const scanMaxTime = Seconds(await networkCommissioningClusterClient.getScanMaxTimeSecondsAttribute());
1177
+ await this.#ensureFailsafeTimerFor(scanMaxTime);
1169
1178
 
1170
1179
  const { networkingStatus, threadScanResults, debugText } =
1171
1180
  await networkCommissioningClusterClient.scanNetworks(
1172
1181
  { breadcrumb: this.lastBreadcrumb++ },
1173
- { expectedProcessingTimeMs: scanMaxTimeSeconds * 1000 },
1182
+ { expectedProcessingTime: scanMaxTime },
1174
1183
  );
1175
1184
  if (networkingStatus !== NetworkCommissioning.NetworkCommissioningStatus.Success) {
1176
1185
  throw new ThreadNetworkSetupFailedError(
@@ -1237,15 +1246,15 @@ export class ControllerCommissioningFlow {
1237
1246
  };
1238
1247
  }
1239
1248
 
1240
- const connectMaxTimeSeconds = await networkCommissioningClusterClient.getConnectMaxTimeSecondsAttribute();
1241
- await this.#ensureFailsafeTimerForS(connectMaxTimeSeconds);
1249
+ const connectMaxTime = Seconds(await networkCommissioningClusterClient.getConnectMaxTimeSecondsAttribute());
1250
+ await this.#ensureFailsafeTimerFor(connectMaxTime);
1242
1251
 
1243
1252
  const connectResult = await networkCommissioningClusterClient.connectNetwork(
1244
1253
  {
1245
1254
  networkId: networkId,
1246
1255
  breadcrumb: this.lastBreadcrumb++,
1247
1256
  },
1248
- { expectedProcessingTimeMs: connectMaxTimeSeconds * 1000 },
1257
+ { expectedProcessingTime: connectMaxTime },
1249
1258
  );
1250
1259
 
1251
1260
  if (connectResult.networkingStatus !== NetworkCommissioning.NetworkCommissioningStatus.Success) {
@@ -1284,9 +1293,9 @@ export class ControllerCommissioningFlow {
1284
1293
  // TODO: Check whats needed for non-concurrent commissioning flows (maybe arm initially longer?)
1285
1294
  const reArmFailsafeInterval = Time.getPeriodicTimer(
1286
1295
  "Re-Arm Failsafe during reconnect",
1287
- (this.#defaultFailSafeTimeS / 2) * 1000,
1296
+ Millis(this.#defaultFailSafeTime / 2),
1288
1297
  () => {
1289
- const now = Time.nowMs();
1298
+ const now = Time.nowMs;
1290
1299
  if (this.#commissioningExpiryTime !== undefined && now < this.#commissioningExpiryTime) {
1291
1300
  logger.error(
1292
1301
  `Re-Arm Failsafe Timer during reconnect with device. Time left: ${Math.round((this.#commissioningExpiryTime - now) / 1000)}s`,
@@ -4,7 +4,16 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { anyPromise, ClassExtends, Diagnostic, Logger, NoResponseTimeoutError, serverAddressToString } from "#general";
7
+ import {
8
+ anyPromise,
9
+ ClassExtends,
10
+ Diagnostic,
11
+ Duration,
12
+ Logger,
13
+ NoResponseTimeoutError,
14
+ Seconds,
15
+ ServerAddress,
16
+ } from "#general";
8
17
  import { CommissionableDeviceDiscoveryFailedError } from "#peer/ControllerCommissioningFlow.js";
9
18
  import { NodeId } from "#types";
10
19
  import {
@@ -38,14 +47,14 @@ export class ControllerDiscovery {
38
47
  static async discoverDeviceAddressesByIdentifier(
39
48
  scanners: Array<Scanner>,
40
49
  identifier: CommissionableDeviceIdentifiers,
41
- timeoutSeconds = 30,
50
+ timeout = Seconds(30),
42
51
  ): Promise<CommissionableDevice[]> {
43
52
  logger.info(`Start Discovering devices using identifier ${Diagnostic.json(identifier)} ...`);
44
53
 
45
54
  const scanResults = scanners.map(async scanner => {
46
55
  const foundDevices = await scanner.findCommissionableDevices(
47
56
  identifier,
48
- timeoutSeconds,
57
+ timeout,
49
58
  scanner.type === "ble", // Force rediscovery for BLE
50
59
  );
51
60
  logger.info(`Found ${foundDevices.length} devices using identifier ${Diagnostic.json(identifier)}`);
@@ -73,7 +82,7 @@ export class ControllerDiscovery {
73
82
 
74
83
  static async discoverCommissionableDevices(
75
84
  scanners: Array<Scanner>,
76
- timeoutSeconds: number,
85
+ timeout: Duration,
77
86
  identifier: CommissionableDeviceIdentifiers = {},
78
87
  discoveredCallback?: (device: CommissionableDevice) => void,
79
88
  ): Promise<CommissionableDevice[]> {
@@ -90,7 +99,7 @@ export class ControllerDiscovery {
90
99
  discoveredCallback?.(device);
91
100
  }
92
101
  },
93
- timeoutSeconds,
102
+ timeout,
94
103
  );
95
104
  }),
96
105
  );
@@ -118,15 +127,10 @@ export class ControllerDiscovery {
118
127
  fabric: Fabric,
119
128
  peerNodeId: NodeId,
120
129
  scanner: MdnsClient,
121
- timeoutSeconds?: number,
130
+ timeout?: Duration,
122
131
  ignoreExistingRecords?: boolean,
123
132
  ): Promise<OperationalDevice> {
124
- const foundDevice = await scanner.findOperationalDevice(
125
- fabric,
126
- peerNodeId,
127
- timeoutSeconds,
128
- ignoreExistingRecords,
129
- );
133
+ const foundDevice = await scanner.findOperationalDevice(fabric, peerNodeId, timeout, ignoreExistingRecords);
130
134
  if (foundDevice === undefined) {
131
135
  throw new DiscoveryError(
132
136
  "The operational device cannot be found on the network. Please make sure it is online.",
@@ -160,7 +164,7 @@ export class ControllerDiscovery {
160
164
  address: AddressTypeFromDevice<DD>,
161
165
  device?: DD,
162
166
  ): Promise<{ result: T; resultAddress: AddressTypeFromDevice<DD>; resultDevice?: DD } | undefined> => {
163
- const serverKey = serverAddressToString(address);
167
+ const serverKey = ServerAddress.urlFor(address);
164
168
 
165
169
  logger.debug(`Try to communicate with ${serverKey} ...`);
166
170
  try {
@@ -177,13 +181,13 @@ export class ControllerDiscovery {
177
181
  const addresses = new Map<string, { address: AddressTypeFromDevice<DD>; device?: DD }>();
178
182
 
179
183
  devices.forEach(device =>
180
- device.addresses.forEach(address => addresses.set(serverAddressToString(address), { address, device })),
184
+ device.addresses.forEach(address => addresses.set(ServerAddress.urlFor(address), { address, device })),
181
185
  );
182
186
  const triedAddresses = new Set<string>();
183
187
 
184
188
  if (lastKnownAddress !== undefined) {
185
- const knownKey = serverAddressToString(lastKnownAddress);
186
- const knownDevice = addresses.has(serverAddressToString(lastKnownAddress))
189
+ const knownKey = ServerAddress.urlFor(lastKnownAddress);
190
+ const knownDevice = addresses.has(ServerAddress.urlFor(lastKnownAddress))
187
191
  ? addresses.get(knownKey)?.device
188
192
  : undefined;
189
193
  addresses.delete(knownKey);
@@ -203,7 +207,7 @@ export class ControllerDiscovery {
203
207
 
204
208
  let triedOne = false;
205
209
  for (const { address, device } of addresses.values()) {
206
- const serverKey = serverAddressToString(address);
210
+ const serverKey = ServerAddress.urlFor(address);
207
211
  if (triedAddresses.has(serverKey)) continue;
208
212
  triedAddresses.add(serverKey);
209
213
 
@@ -224,7 +228,7 @@ export class ControllerDiscovery {
224
228
  if (triedOne) {
225
229
  (await updateDevicesFunc()).forEach(device =>
226
230
  device.addresses.forEach(address =>
227
- addresses.set(serverAddressToString(address), { address, device }),
231
+ addresses.set(ServerAddress.urlFor(address), { address, device }),
228
232
  ),
229
233
  ); // Update list and add new
230
234
  } else {
@@ -4,14 +4,14 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Environment, Environmental, PromiseQueue } from "#general";
7
+ import { Environment, Environmental, Millis, PromiseQueue } from "#general";
8
8
 
9
9
  const CONCURRENT_QUEUED_INTERACTIONS = 4;
10
- const INTERACTION_QUEUE_DELAY_MS = 100;
10
+ const INTERACTION_QUEUE_DELAY = Millis(100);
11
11
 
12
12
  export class InteractionQueue extends PromiseQueue {
13
13
  constructor() {
14
- super(CONCURRENT_QUEUED_INTERACTIONS, INTERACTION_QUEUE_DELAY_MS);
14
+ super(CONCURRENT_QUEUED_INTERACTIONS, INTERACTION_QUEUE_DELAY);
15
15
  }
16
16
 
17
17
  static [Environmental.create](env: Environment) {
@@ -12,6 +12,7 @@ import {
12
12
  ChannelType,
13
13
  Construction,
14
14
  createPromise,
15
+ Duration,
15
16
  Environment,
16
17
  Environmental,
17
18
  ImmutableSet,
@@ -20,11 +21,13 @@ import {
20
21
  isIPv6,
21
22
  Logger,
22
23
  MatterError,
24
+ Minutes,
23
25
  NetInterfaceSet,
24
26
  NoResponseTimeoutError,
25
27
  ObservableSet,
28
+ Seconds,
29
+ ServerAddress,
26
30
  ServerAddressIp,
27
- serverAddressToString,
28
31
  STANDARD_MATTER_PORT,
29
32
  Time,
30
33
  Timer,
@@ -50,8 +53,8 @@ import { PeerAddressStore, PeerDataStore } from "./PeerAddressStore.js";
50
53
 
51
54
  const logger = Logger.get("PeerSet");
52
55
 
53
- const RECONNECTION_POLLING_INTERVAL_MS = 600_000; // 10 minutes
54
- const RETRANSMISSION_DISCOVERY_TIMEOUT_S = 5;
56
+ const RECONNECTION_POLLING_INTERVAL = Minutes(10);
57
+ const RETRANSMISSION_DISCOVERY_TIMEOUT = Seconds(5);
55
58
 
56
59
  /**
57
60
  * Types of discovery that may be performed when connecting operationally.
@@ -78,7 +81,7 @@ export class UnknownNodeError extends MatterError {}
78
81
  */
79
82
  export interface DiscoveryOptions {
80
83
  discoveryType?: NodeDiscoveryType;
81
- timeoutSeconds?: number;
84
+ timeout?: Duration;
82
85
  discoveryData?: DiscoveryData;
83
86
  }
84
87
 
@@ -333,7 +336,10 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
333
336
  await this.#sessions.removeAllSessionsForNode(address);
334
337
  throw new RetransmissionLimitReachedError(`No operational address found for ${PeerAddress(address)}`);
335
338
  }
336
- if ((await this.#reconnectKnownAddress(address, operationalAddress, discoveryData, 2_000)) === undefined) {
339
+ if (
340
+ (await this.#reconnectKnownAddress(address, operationalAddress, discoveryData, Seconds(2))) ===
341
+ undefined
342
+ ) {
337
343
  throw new RetransmissionLimitReachedError(`${PeerAddress(address)} is not reachable.`);
338
344
  }
339
345
  });
@@ -438,10 +444,10 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
438
444
  address = PeerAddress(address);
439
445
  const {
440
446
  discoveryType: requestedDiscoveryType = NodeDiscoveryType.FullDiscovery,
441
- timeoutSeconds,
447
+ timeout,
442
448
  discoveryData = this.#peersByAddress.get(address)?.discoveryData,
443
449
  } = discoveryOptions;
444
- if (timeoutSeconds !== undefined && requestedDiscoveryType !== NodeDiscoveryType.TimedDiscovery) {
450
+ if (timeout !== undefined && requestedDiscoveryType !== NodeDiscoveryType.TimedDiscovery) {
445
451
  throw new ImplementationError("Cannot set timeout without timed discovery.");
446
452
  }
447
453
  if (requestedDiscoveryType === NodeDiscoveryType.RetransmissionDiscovery) {
@@ -480,7 +486,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
480
486
  operationalAddress,
481
487
  discoveryData,
482
488
  // When we use a timeout for discovery also use this for reconnecting to the node
483
- timeoutSeconds ? timeoutSeconds * 1000 : undefined,
489
+ timeout,
484
490
  );
485
491
  if (directReconnection !== undefined) {
486
492
  return directReconnection;
@@ -515,14 +521,14 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
515
521
  const { promise, resolver, rejecter } = createPromise<MessageChannel>();
516
522
 
517
523
  logger.debug(
518
- `Starting reconnection polling for ${serverAddressToString(lastOperationalAddress)} (Interval ${RECONNECTION_POLLING_INTERVAL_MS / 1000}s)`,
524
+ `Starting reconnection polling for ${ServerAddress.urlFor(lastOperationalAddress)} (interval ${Duration.format(RECONNECTION_POLLING_INTERVAL)})`,
519
525
  );
520
526
  reconnectionPollingTimer = Time.getPeriodicTimer(
521
527
  "Controller reconnect",
522
- RECONNECTION_POLLING_INTERVAL_MS,
528
+ RECONNECTION_POLLING_INTERVAL,
523
529
  async () => {
524
530
  try {
525
- logger.debug(`Polling for device at ${serverAddressToString(lastOperationalAddress)} ...`);
531
+ logger.debug(`Polling for device at ${ServerAddress.urlFor(lastOperationalAddress)} ...`);
526
532
  const result = await this.#reconnectKnownAddress(
527
533
  address,
528
534
  lastOperationalAddress,
@@ -565,8 +571,8 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
565
571
  this.#sessions.fabricFor(address),
566
572
  address.nodeId,
567
573
  mdnsScanner,
568
- timeoutSeconds,
569
- timeoutSeconds === undefined,
574
+ timeout,
575
+ timeout === undefined,
570
576
  );
571
577
  const { stopTimerFunc } = this.#runningPeerDiscoveries.get(address) ?? {};
572
578
  stopTimerFunc?.();
@@ -611,21 +617,21 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
611
617
  address: PeerAddress,
612
618
  operationalAddress: ServerAddressIp,
613
619
  discoveryData?: DiscoveryData,
614
- expectedProcessingTimeMs?: number,
620
+ expectedProcessingTime?: Duration,
615
621
  ): Promise<MessageChannel | undefined> {
616
622
  address = PeerAddress(address);
617
623
 
618
624
  const { ip, port } = operationalAddress;
619
- const startTime = Time.nowMs();
625
+ const startTime = Time.nowMs;
620
626
  try {
621
627
  logger.debug(
622
628
  `Resuming connection to ${PeerAddress(address)} at ${ip}:${port}${
623
- expectedProcessingTimeMs !== undefined
624
- ? ` with expected processing time of ${expectedProcessingTimeMs}ms`
629
+ expectedProcessingTime !== undefined
630
+ ? ` with expected processing time of ${Duration.format(expectedProcessingTime)}`
625
631
  : ""
626
632
  }`,
627
633
  );
628
- const channel = await this.#pair(address, operationalAddress, discoveryData, expectedProcessingTimeMs);
634
+ const channel = await this.#pair(address, operationalAddress, discoveryData, expectedProcessingTime);
629
635
  await this.#addOrUpdatePeer(address, operationalAddress);
630
636
  return channel;
631
637
  } catch (error) {
@@ -669,9 +675,9 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
669
675
  address: PeerAddress,
670
676
  operationalServerAddress: ServerAddressIp,
671
677
  discoveryData?: DiscoveryData,
672
- expectedProcessingTimeMs?: number,
678
+ expectedProcessingTime?: Duration,
673
679
  ) {
674
- logger.debug(`Pair with ${address} at ${serverAddressToString(operationalServerAddress)}`);
680
+ logger.debug(`Pair with ${address} at ${ServerAddress.urlFor(operationalServerAddress)}`);
675
681
  const { ip, port } = operationalServerAddress;
676
682
  // Do CASE pairing
677
683
  const isIpv6Address = isIPv6(ip);
@@ -693,9 +699,9 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
693
699
  const unsecureSession = this.#sessions.createInsecureSession({
694
700
  // Use the session parameters from MDNS announcements when available and rest is assumed to be fallbacks
695
701
  sessionParameters: {
696
- idleIntervalMs: discoveryData?.SII ?? sessionParameters?.idleIntervalMs,
697
- activeIntervalMs: discoveryData?.SAI ?? sessionParameters?.activeIntervalMs,
698
- activeThresholdMs: discoveryData?.SAT ?? sessionParameters?.activeThresholdMs,
702
+ idleInterval: discoveryData?.SII ?? sessionParameters?.idleInterval,
703
+ activeInterval: discoveryData?.SAI ?? sessionParameters?.activeInterval,
704
+ activeThreshold: discoveryData?.SAT ?? sessionParameters?.activeThreshold,
699
705
  },
700
706
  isInitiator: true,
701
707
  });
@@ -704,7 +710,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
704
710
  const operationalSecureSession = await this.#doCasePair(
705
711
  new MessageChannel(operationalChannel, unsecureSession),
706
712
  address,
707
- expectedProcessingTimeMs,
713
+ expectedProcessingTime,
708
714
  );
709
715
 
710
716
  const channel = new MessageChannel(operationalChannel, operationalSecureSession);
@@ -723,7 +729,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
723
729
  async #doCasePair(
724
730
  unsecureMessageChannel: MessageChannel,
725
731
  address: PeerAddress,
726
- expectedProcessingTimeMs?: number,
732
+ expectedProcessingTime?: Duration,
727
733
  ): Promise<SecureSession> {
728
734
  const fabric = this.#sessions.fabricFor(address);
729
735
  let exchange: MessageExchange | undefined;
@@ -734,7 +740,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
734
740
  exchange,
735
741
  fabric,
736
742
  address.nodeId,
737
- expectedProcessingTimeMs,
743
+ expectedProcessingTime,
738
744
  );
739
745
 
740
746
  if (!resumed) {
@@ -755,7 +761,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
755
761
  `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...`,
756
762
  );
757
763
  // An endless loop should not happen here, as the resumption record is deleted in the next step
758
- return await this.#doCasePair(unsecureMessageChannel, address, expectedProcessingTimeMs);
764
+ return await this.#doCasePair(unsecureMessageChannel, address, expectedProcessingTime);
759
765
  }
760
766
  }
761
767
  throw error;
@@ -844,7 +850,7 @@ export class PeerSet implements ImmutableSet<OperationalPeer>, ObservableSet<Ope
844
850
  this.#runningPeerDiscoveries.set(address, { type: NodeDiscoveryType.RetransmissionDiscovery });
845
851
  this.#scanners
846
852
  .scannerFor(ChannelType.UDP)
847
- ?.findOperationalDevice(fabric, nodeId, RETRANSMISSION_DISCOVERY_TIMEOUT_S, true)
853
+ ?.findOperationalDevice(fabric, nodeId, RETRANSMISSION_DISCOVERY_TIMEOUT, true)
848
854
  .catch(error => {
849
855
  logger.error(`Failed to discover ${address} after resubmission started.`, error);
850
856
  })
@@ -24,7 +24,7 @@ import {
24
24
  import { SecureChannelProtocol } from "#securechannel/SecureChannelProtocol.js";
25
25
  import { PaseServer } from "#session/pase/PaseServer.js";
26
26
  import { SessionManager } from "#session/SessionManager.js";
27
- import { CommissioningOptions, STANDARD_COMMISSIONING_TIMEOUT_S, StatusCode, StatusResponseError } from "#types";
27
+ import { CommissioningOptions, STANDARD_COMMISSIONING_TIMEOUT, StatusCode, StatusResponseError } from "#types";
28
28
  import type { ControllerCommissioner } from "../peer/ControllerCommissioner.js";
29
29
  import { DeviceAdvertiser } from "./DeviceAdvertiser.js";
30
30
 
@@ -161,7 +161,7 @@ export class DeviceCommissioner {
161
161
 
162
162
  this.#windowStatus = windowStatus;
163
163
  const commissioningConfig = this.#context.commissioningConfig.values;
164
- const advertisementWindowS = commissioningConfig.advertisementWindowS ?? STANDARD_COMMISSIONING_TIMEOUT_S;
164
+ const advertisementWindowS = commissioningConfig.advertisementWindow ?? STANDARD_COMMISSIONING_TIMEOUT;
165
165
 
166
166
  const mode =
167
167
  windowStatus === AdministratorCommissioning.CommissioningWindowStatus.EnhancedWindowOpen
@@ -26,7 +26,7 @@ import {
26
26
  import { PeerAddress } from "#peer/PeerAddress.js";
27
27
  import {
28
28
  ChannelNotConnectedError,
29
- DEFAULT_EXPECTED_PROCESSING_TIME_MS,
29
+ DEFAULT_EXPECTED_PROCESSING_TIME,
30
30
  MessageChannel,
31
31
  } from "#protocol/MessageChannel.js";
32
32
  import { SecureChannelMessenger } from "#securechannel/SecureChannelMessenger.js";
@@ -412,12 +412,9 @@ export class ExchangeManager {
412
412
 
413
413
  calculateMaximumPeerResponseTimeMsFor(
414
414
  channel: MessageChannel,
415
- expectedProcessingTimeMs = DEFAULT_EXPECTED_PROCESSING_TIME_MS,
415
+ expectedProcessingTime = DEFAULT_EXPECTED_PROCESSING_TIME,
416
416
  ) {
417
- return channel.calculateMaximumPeerResponseTimeMs(
418
- this.#sessionManager.sessionParameters,
419
- expectedProcessingTimeMs,
420
- );
417
+ return channel.calculateMaximumPeerResponseTime(this.#sessionManager.sessionParameters, expectedProcessingTime);
421
418
  }
422
419
 
423
420
  #messageExchangeContextFor(channel: MessageChannel): MessageExchangeContext {
@@ -3,13 +3,13 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { ChannelType, Observable } from "#general";
6
+ import { ChannelType, Duration, Observable } from "#general";
7
7
  import { PeerAddress } from "#peer/PeerAddress.js";
8
8
  import { ChannelManager } from "#protocol/ChannelManager.js";
9
9
  import { ExchangeManager } from "#protocol/ExchangeManager.js";
10
10
  import {
11
11
  ChannelNotConnectedError,
12
- DEFAULT_EXPECTED_PROCESSING_TIME_MS,
12
+ DEFAULT_EXPECTED_PROCESSING_TIME,
13
13
  MessageChannel,
14
14
  } from "#protocol/MessageChannel.js";
15
15
  import { MessageExchange } from "#protocol/MessageExchange.js";
@@ -37,7 +37,7 @@ export abstract class ExchangeProvider {
37
37
  this.exchangeManager.addProtocolHandler(handler);
38
38
  }
39
39
 
40
- abstract maximumPeerResponseTimeMs(expectedProcessingTimeMs?: number): number;
40
+ abstract maximumPeerResponseTime(expectedProcessingTime?: Duration): Duration;
41
41
  abstract initiateExchange(): Promise<MessageExchange>;
42
42
  abstract reconnectChannel(): Promise<boolean>;
43
43
  abstract session: Session;
@@ -72,8 +72,8 @@ export class DedicatedChannelExchangeProvider extends ExchangeProvider {
72
72
  return this.#channel.type;
73
73
  }
74
74
 
75
- maximumPeerResponseTimeMs(expectedProcessingTimeMs = DEFAULT_EXPECTED_PROCESSING_TIME_MS) {
76
- return this.exchangeManager.calculateMaximumPeerResponseTimeMsFor(this.#channel, expectedProcessingTimeMs);
75
+ maximumPeerResponseTime(expectedProcessingTime = DEFAULT_EXPECTED_PROCESSING_TIME) {
76
+ return this.exchangeManager.calculateMaximumPeerResponseTimeMsFor(this.#channel, expectedProcessingTime);
77
77
  }
78
78
  }
79
79
 
@@ -136,7 +136,7 @@ export class ReconnectableExchangeProvider extends ExchangeProvider {
136
136
  return this.channelManager.getChannel(this.#address).type;
137
137
  }
138
138
 
139
- maximumPeerResponseTimeMs(expectedProcessingTimeMs = DEFAULT_EXPECTED_PROCESSING_TIME_MS) {
139
+ maximumPeerResponseTime(expectedProcessingTimeMs = DEFAULT_EXPECTED_PROCESSING_TIME) {
140
140
  const channel = this.channelManager.getChannel(this.#address);
141
141
  if (!channel) {
142
142
  throw new ChannelNotConnectedError("Channel not connected");