@matter/protocol 0.16.0-alpha.0-20250817-1b000357c → 0.16.0-alpha.0-20250820-24939dd26

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 (414) 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 +9 -9
  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/fabric/Fabric.d.ts +8 -3
  74. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  75. package/dist/cjs/groups/FabricGroups.d.ts +1 -1
  76. package/dist/cjs/groups/FabricGroups.js +1 -1
  77. package/dist/cjs/groups/Groups.d.ts +1 -1
  78. package/dist/cjs/groups/KeySets.d.ts +3 -3
  79. package/dist/cjs/groups/KeySets.d.ts.map +1 -1
  80. package/dist/cjs/groups/KeySets.js +12 -4
  81. package/dist/cjs/groups/KeySets.js.map +1 -1
  82. package/dist/cjs/interaction/InteractionClient.d.ts +9 -9
  83. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  84. package/dist/cjs/interaction/InteractionClient.js +33 -33
  85. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  86. package/dist/cjs/interaction/InteractionMessenger.d.ts +10 -10
  87. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  88. package/dist/cjs/interaction/InteractionMessenger.js +15 -15
  89. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  90. package/dist/cjs/interaction/Subscription.d.ts +3 -4
  91. package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
  92. package/dist/cjs/interaction/Subscription.js +9 -12
  93. package/dist/cjs/interaction/Subscription.js.map +1 -1
  94. package/dist/cjs/interaction/SubscriptionClient.d.ts +3 -3
  95. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  96. package/dist/cjs/interaction/SubscriptionClient.js +3 -3
  97. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  98. package/dist/cjs/mdns/MdnsClient.d.ts +9 -9
  99. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
  100. package/dist/cjs/mdns/MdnsClient.js +86 -82
  101. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  102. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
  103. package/dist/cjs/mdns/MdnsServer.js +11 -9
  104. package/dist/cjs/mdns/MdnsServer.js.map +1 -1
  105. package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
  106. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  107. package/dist/cjs/peer/ControllerCommissioner.js +7 -7
  108. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  109. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  110. package/dist/cjs/peer/ControllerCommissioningFlow.js +37 -35
  111. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  112. package/dist/cjs/peer/ControllerDiscovery.d.ts +4 -4
  113. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
  114. package/dist/cjs/peer/ControllerDiscovery.js +12 -17
  115. package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
  116. package/dist/cjs/peer/InteractionQueue.d.ts.map +1 -1
  117. package/dist/cjs/peer/InteractionQueue.js +2 -2
  118. package/dist/cjs/peer/InteractionQueue.js.map +1 -1
  119. package/dist/cjs/peer/PeerAddress.d.ts +1 -1
  120. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
  121. package/dist/cjs/peer/PeerAddress.js +3 -0
  122. package/dist/cjs/peer/PeerAddress.js.map +1 -1
  123. package/dist/cjs/peer/PeerSet.d.ts +2 -2
  124. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  125. package/dist/cjs/peer/PeerSet.js +25 -25
  126. package/dist/cjs/peer/PeerSet.js.map +1 -1
  127. package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
  128. package/dist/cjs/protocol/DeviceCommissioner.js +1 -1
  129. package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
  130. package/dist/cjs/protocol/ExchangeManager.d.ts +1 -1
  131. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  132. package/dist/cjs/protocol/ExchangeManager.js +2 -5
  133. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  134. package/dist/cjs/protocol/ExchangeProvider.d.ts +4 -4
  135. package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
  136. package/dist/cjs/protocol/ExchangeProvider.js +3 -3
  137. package/dist/cjs/protocol/ExchangeProvider.js.map +1 -1
  138. package/dist/cjs/protocol/MessageChannel.d.ts +5 -5
  139. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  140. package/dist/cjs/protocol/MessageChannel.js +19 -15
  141. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  142. package/dist/cjs/protocol/MessageExchange.d.ts +6 -6
  143. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  144. package/dist/cjs/protocol/MessageExchange.js +35 -33
  145. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  146. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +9 -9
  147. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  148. package/dist/cjs/securechannel/SecureChannelMessenger.js +18 -18
  149. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
  150. package/dist/cjs/session/NodeSession.d.ts +6 -3
  151. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  152. package/dist/cjs/session/NodeSession.js +5 -5
  153. package/dist/cjs/session/NodeSession.js.map +1 -1
  154. package/dist/cjs/session/Session.d.ts +7 -7
  155. package/dist/cjs/session/Session.d.ts.map +1 -1
  156. package/dist/cjs/session/Session.js +19 -19
  157. package/dist/cjs/session/Session.js.map +1 -1
  158. package/dist/cjs/session/SessionIntervals.d.ts +7 -6
  159. package/dist/cjs/session/SessionIntervals.d.ts.map +1 -1
  160. package/dist/cjs/session/SessionIntervals.js +8 -8
  161. package/dist/cjs/session/SessionIntervals.js.map +1 -1
  162. package/dist/cjs/session/SessionManager.d.ts +2 -2
  163. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  164. package/dist/cjs/session/SessionManager.js +6 -6
  165. package/dist/cjs/session/SessionManager.js.map +1 -1
  166. package/dist/cjs/session/case/CaseClient.d.ts +6 -4
  167. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
  168. package/dist/cjs/session/case/CaseClient.js +19 -13
  169. package/dist/cjs/session/case/CaseClient.js.map +1 -1
  170. package/dist/cjs/session/case/CaseServer.js +4 -4
  171. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  172. package/dist/cjs/session/pase/PaseClient.js +1 -1
  173. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  174. package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -1
  175. package/dist/cjs/session/pase/PaseMessenger.js +4 -7
  176. package/dist/cjs/session/pase/PaseMessenger.js.map +1 -1
  177. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  178. package/dist/cjs/session/pase/PaseServer.js +3 -3
  179. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  180. package/dist/esm/action/Val.d.ts +6 -0
  181. package/dist/esm/action/Val.d.ts.map +1 -1
  182. package/dist/esm/action/Val.js.map +1 -1
  183. package/dist/esm/action/client/ClientInteraction.d.ts +1 -1
  184. package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
  185. package/dist/esm/action/client/ClientInteraction.js +5 -5
  186. package/dist/esm/action/client/ClientInteraction.js.map +1 -1
  187. package/dist/esm/action/client/ClientSubscription.d.ts +2 -1
  188. package/dist/esm/action/client/ClientSubscription.d.ts.map +1 -1
  189. package/dist/esm/action/client/ClientSubscriptionHandler.js +2 -2
  190. package/dist/esm/action/client/ClientSubscriptionHandler.js.map +1 -1
  191. package/dist/esm/action/client/ClientSubscriptions.d.ts.map +1 -1
  192. package/dist/esm/action/client/ClientSubscriptions.js +14 -8
  193. package/dist/esm/action/client/ClientSubscriptions.js.map +1 -1
  194. package/dist/esm/action/request/Subscribe.d.ts +6 -6
  195. package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
  196. package/dist/esm/action/request/Subscribe.js +12 -10
  197. package/dist/esm/action/request/Subscribe.js.map +1 -1
  198. package/dist/esm/advertisement/Advertisement.d.ts +3 -3
  199. package/dist/esm/advertisement/Advertisement.d.ts.map +1 -1
  200. package/dist/esm/advertisement/Advertisement.js +16 -7
  201. package/dist/esm/advertisement/Advertisement.js.map +1 -1
  202. package/dist/esm/advertisement/ble/BleAdvertisement.d.ts.map +1 -1
  203. package/dist/esm/advertisement/ble/BleAdvertisement.js +7 -6
  204. package/dist/esm/advertisement/ble/BleAdvertisement.js.map +1 -1
  205. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +9 -9
  206. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -1
  207. package/dist/esm/advertisement/ble/BleAdvertiser.js +6 -6
  208. package/dist/esm/advertisement/ble/BleAdvertiser.js.map +1 -1
  209. package/dist/esm/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -1
  210. package/dist/esm/advertisement/mdns/MdnsAdvertisement.js +17 -8
  211. package/dist/esm/advertisement/mdns/MdnsAdvertisement.js.map +1 -1
  212. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +2 -2
  213. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -1
  214. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +14 -6
  215. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +1 -1
  216. package/dist/esm/ble/Ble.d.ts +2 -2
  217. package/dist/esm/ble/Ble.d.ts.map +1 -1
  218. package/dist/esm/ble/Ble.js +5 -1
  219. package/dist/esm/ble/Ble.js.map +1 -1
  220. package/dist/esm/ble/BleConsts.d.ts +4 -4
  221. package/dist/esm/ble/BleConsts.d.ts.map +1 -1
  222. package/dist/esm/ble/BleConsts.js +8 -8
  223. package/dist/esm/ble/BleConsts.js.map +1 -1
  224. package/dist/esm/ble/BtpSessionHandler.js +4 -4
  225. package/dist/esm/ble/BtpSessionHandler.js.map +1 -1
  226. package/dist/esm/certificate/AttestationCertificateManager.js +3 -3
  227. package/dist/esm/certificate/AttestationCertificateManager.js.map +1 -1
  228. package/dist/esm/certificate/CertificateAuthority.js +2 -2
  229. package/dist/esm/certificate/CertificateAuthority.js.map +1 -1
  230. package/dist/esm/certificate/kinds/OperationalBase.js +2 -2
  231. package/dist/esm/certificate/kinds/OperationalBase.js.map +1 -1
  232. package/dist/esm/cluster/client/ClusterClient.js +5 -5
  233. package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
  234. package/dist/esm/cluster/client/ClusterClientTypes.d.ts +3 -3
  235. package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
  236. package/dist/esm/cluster/client/EventClient.d.ts +2 -1
  237. package/dist/esm/cluster/client/EventClient.d.ts.map +1 -1
  238. package/dist/esm/cluster/client/EventClient.js +3 -3
  239. package/dist/esm/cluster/client/EventClient.js.map +1 -1
  240. package/dist/esm/common/FailsafeContext.d.ts +4 -4
  241. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  242. package/dist/esm/common/FailsafeContext.js +9 -8
  243. package/dist/esm/common/FailsafeContext.js.map +1 -1
  244. package/dist/esm/common/FailsafeTimer.d.ts +3 -3
  245. package/dist/esm/common/FailsafeTimer.d.ts.map +1 -1
  246. package/dist/esm/common/FailsafeTimer.js +8 -8
  247. package/dist/esm/common/FailsafeTimer.js.map +1 -1
  248. package/dist/esm/common/Scanner.d.ts +7 -7
  249. package/dist/esm/common/Scanner.d.ts.map +1 -1
  250. package/dist/esm/common/Scanner.js +5 -1
  251. package/dist/esm/common/Scanner.js.map +1 -1
  252. package/dist/esm/events/OccurrenceManager.js +1 -1
  253. package/dist/esm/events/OccurrenceManager.js.map +1 -1
  254. package/dist/esm/fabric/Fabric.d.ts +8 -3
  255. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  256. package/dist/esm/groups/FabricGroups.d.ts +1 -1
  257. package/dist/esm/groups/FabricGroups.js +1 -1
  258. package/dist/esm/groups/Groups.d.ts +1 -1
  259. package/dist/esm/groups/KeySets.d.ts +3 -3
  260. package/dist/esm/groups/KeySets.d.ts.map +1 -1
  261. package/dist/esm/groups/KeySets.js +13 -5
  262. package/dist/esm/groups/KeySets.js.map +1 -1
  263. package/dist/esm/interaction/InteractionClient.d.ts +9 -9
  264. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  265. package/dist/esm/interaction/InteractionClient.js +34 -33
  266. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  267. package/dist/esm/interaction/InteractionMessenger.d.ts +10 -10
  268. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  269. package/dist/esm/interaction/InteractionMessenger.js +16 -15
  270. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  271. package/dist/esm/interaction/Subscription.d.ts +3 -4
  272. package/dist/esm/interaction/Subscription.d.ts.map +1 -1
  273. package/dist/esm/interaction/Subscription.js +9 -12
  274. package/dist/esm/interaction/Subscription.js.map +1 -1
  275. package/dist/esm/interaction/SubscriptionClient.d.ts +3 -3
  276. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  277. package/dist/esm/interaction/SubscriptionClient.js +4 -4
  278. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  279. package/dist/esm/mdns/MdnsClient.d.ts +9 -9
  280. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
  281. package/dist/esm/mdns/MdnsClient.js +94 -82
  282. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  283. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
  284. package/dist/esm/mdns/MdnsServer.js +14 -9
  285. package/dist/esm/mdns/MdnsServer.js.map +1 -1
  286. package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
  287. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  288. package/dist/esm/peer/ControllerCommissioner.js +11 -8
  289. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  290. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  291. package/dist/esm/peer/ControllerCommissioningFlow.js +44 -35
  292. package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
  293. package/dist/esm/peer/ControllerDiscovery.d.ts +4 -4
  294. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
  295. package/dist/esm/peer/ControllerDiscovery.js +20 -18
  296. package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
  297. package/dist/esm/peer/InteractionQueue.d.ts.map +1 -1
  298. package/dist/esm/peer/InteractionQueue.js +3 -3
  299. package/dist/esm/peer/InteractionQueue.js.map +1 -1
  300. package/dist/esm/peer/PeerAddress.d.ts +1 -1
  301. package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
  302. package/dist/esm/peer/PeerAddress.js +3 -0
  303. package/dist/esm/peer/PeerAddress.js.map +1 -1
  304. package/dist/esm/peer/PeerSet.d.ts +2 -2
  305. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  306. package/dist/esm/peer/PeerSet.js +29 -26
  307. package/dist/esm/peer/PeerSet.js.map +1 -1
  308. package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
  309. package/dist/esm/protocol/DeviceCommissioner.js +2 -2
  310. package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
  311. package/dist/esm/protocol/ExchangeManager.d.ts +1 -1
  312. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  313. package/dist/esm/protocol/ExchangeManager.js +3 -6
  314. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  315. package/dist/esm/protocol/ExchangeProvider.d.ts +4 -4
  316. package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
  317. package/dist/esm/protocol/ExchangeProvider.js +4 -4
  318. package/dist/esm/protocol/ExchangeProvider.js.map +1 -1
  319. package/dist/esm/protocol/MessageChannel.d.ts +5 -5
  320. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  321. package/dist/esm/protocol/MessageChannel.js +20 -16
  322. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  323. package/dist/esm/protocol/MessageExchange.d.ts +6 -6
  324. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  325. package/dist/esm/protocol/MessageExchange.js +39 -34
  326. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  327. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +9 -9
  328. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
  329. package/dist/esm/securechannel/SecureChannelMessenger.js +19 -19
  330. package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
  331. package/dist/esm/session/NodeSession.d.ts +6 -3
  332. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  333. package/dist/esm/session/NodeSession.js +5 -5
  334. package/dist/esm/session/NodeSession.js.map +1 -1
  335. package/dist/esm/session/Session.d.ts +7 -7
  336. package/dist/esm/session/Session.d.ts.map +1 -1
  337. package/dist/esm/session/Session.js +27 -20
  338. package/dist/esm/session/Session.js.map +1 -1
  339. package/dist/esm/session/SessionIntervals.d.ts +7 -6
  340. package/dist/esm/session/SessionIntervals.d.ts.map +1 -1
  341. package/dist/esm/session/SessionIntervals.js +8 -8
  342. package/dist/esm/session/SessionIntervals.js.map +1 -1
  343. package/dist/esm/session/SessionManager.d.ts +2 -2
  344. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  345. package/dist/esm/session/SessionManager.js +6 -6
  346. package/dist/esm/session/SessionManager.js.map +1 -1
  347. package/dist/esm/session/case/CaseClient.d.ts +6 -4
  348. package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
  349. package/dist/esm/session/case/CaseClient.js +20 -14
  350. package/dist/esm/session/case/CaseClient.js.map +1 -1
  351. package/dist/esm/session/case/CaseServer.js +4 -4
  352. package/dist/esm/session/case/CaseServer.js.map +1 -1
  353. package/dist/esm/session/pase/PaseClient.js +1 -1
  354. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  355. package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -1
  356. package/dist/esm/session/pase/PaseMessenger.js +5 -11
  357. package/dist/esm/session/pase/PaseMessenger.js.map +1 -1
  358. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  359. package/dist/esm/session/pase/PaseServer.js +4 -3
  360. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  361. package/package.json +6 -6
  362. package/src/action/Val.ts +5 -0
  363. package/src/action/client/ClientInteraction.ts +4 -4
  364. package/src/action/client/ClientSubscription.ts +2 -1
  365. package/src/action/client/ClientSubscriptionHandler.ts +2 -2
  366. package/src/action/client/ClientSubscriptions.ts +14 -8
  367. package/src/action/request/Subscribe.ts +17 -15
  368. package/src/advertisement/Advertisement.ts +18 -8
  369. package/src/advertisement/ble/BleAdvertisement.ts +7 -6
  370. package/src/advertisement/ble/BleAdvertiser.ts +10 -10
  371. package/src/advertisement/mdns/MdnsAdvertisement.ts +20 -9
  372. package/src/advertisement/mdns/MdnsAdvertiser.ts +17 -7
  373. package/src/ble/Ble.ts +11 -2
  374. package/src/ble/BleConsts.ts +5 -5
  375. package/src/ble/BtpSessionHandler.ts +4 -4
  376. package/src/certificate/AttestationCertificateManager.ts +3 -3
  377. package/src/certificate/CertificateAuthority.ts +2 -2
  378. package/src/certificate/kinds/OperationalBase.ts +3 -3
  379. package/src/cluster/client/ClusterClient.ts +8 -8
  380. package/src/cluster/client/ClusterClientTypes.ts +3 -3
  381. package/src/cluster/client/EventClient.ts +5 -5
  382. package/src/common/FailsafeContext.ts +11 -13
  383. package/src/common/FailsafeTimer.ts +11 -13
  384. package/src/common/Scanner.ts +16 -7
  385. package/src/events/OccurrenceManager.ts +1 -1
  386. package/src/groups/FabricGroups.ts +1 -1
  387. package/src/groups/KeySets.ts +14 -6
  388. package/src/interaction/InteractionClient.ts +46 -44
  389. package/src/interaction/InteractionMessenger.ts +24 -22
  390. package/src/interaction/Subscription.ts +10 -14
  391. package/src/interaction/SubscriptionClient.ts +6 -6
  392. package/src/mdns/MdnsClient.ts +105 -82
  393. package/src/mdns/MdnsServer.ts +14 -9
  394. package/src/peer/ControllerCommissioner.ts +12 -9
  395. package/src/peer/ControllerCommissioningFlow.ts +48 -39
  396. package/src/peer/ControllerDiscovery.ts +22 -18
  397. package/src/peer/InteractionQueue.ts +3 -3
  398. package/src/peer/PeerAddress.ts +7 -3
  399. package/src/peer/PeerSet.ts +34 -28
  400. package/src/protocol/DeviceCommissioner.ts +2 -2
  401. package/src/protocol/ExchangeManager.ts +3 -6
  402. package/src/protocol/ExchangeProvider.ts +6 -6
  403. package/src/protocol/MessageChannel.ts +26 -21
  404. package/src/protocol/MessageExchange.ts +42 -38
  405. package/src/securechannel/SecureChannelMessenger.ts +17 -23
  406. package/src/session/NodeSession.ts +5 -5
  407. package/src/session/Session.ts +31 -21
  408. package/src/session/SessionIntervals.ts +11 -11
  409. package/src/session/SessionManager.ts +10 -9
  410. package/src/session/case/CaseClient.ts +29 -16
  411. package/src/session/case/CaseServer.ts +4 -4
  412. package/src/session/pase/PaseClient.ts +1 -1
  413. package/src/session/pase/PaseMessenger.ts +5 -11
  414. package/src/session/pase/PaseServer.ts +4 -3
@@ -5,9 +5,9 @@
5
5
  */
6
6
 
7
7
  import { BlePeripheralInterface } from "#ble/Ble.js";
8
- import { Bytes, ImplementationError } from "#general";
8
+ import { Bytes, Duration, ImplementationError, Millis } from "#general";
9
9
  import { DatatypeModel, FieldElement } from "#model";
10
- import { MAXIMUM_COMMISSIONING_TIMEOUT_S } from "#types";
10
+ import { MAXIMUM_COMMISSIONING_TIMEOUT } from "#types";
11
11
  import { Advertisement } from "../Advertisement.js";
12
12
  import { Advertiser } from "../Advertiser.js";
13
13
  import { CommissioningMode } from "../CommissioningMode.js";
@@ -66,38 +66,38 @@ export namespace BleAdvertiser {
66
66
  /**
67
67
  * Advertisement timeout.
68
68
  */
69
- readonly timeout: number;
69
+ readonly timeout: Duration;
70
70
 
71
71
  /**
72
72
  * Transmission interval for first 30 seconds.
73
73
  *
74
74
  * Per core spec 5.4.2.5.3 should be 20-60ms.
75
75
  */
76
- readonly earlyInterval: number;
76
+ readonly earlyInterval: Duration;
77
77
 
78
78
  /**
79
79
  * Transmission interval after first 30 seconds but before 15 minutes.
80
80
  *
81
81
  * Per core spec 5.4.2.5.3 should be 150-1285ms.
82
82
  */
83
- readonly lateInterval: number;
83
+ readonly lateInterval: Duration;
84
84
 
85
85
  /**
86
86
  * Transmission interval after 15 minutes.
87
87
  *
88
88
  * Per core spec 5.4.2.5.3 should be ~1285ms.
89
89
  */
90
- readonly extendedInterval: number;
90
+ readonly extendedInterval: Duration;
91
91
  }
92
92
 
93
93
  export interface Options extends Partial<Configuration> {}
94
94
 
95
95
  export function Configuration(options?: Options) {
96
96
  return {
97
- timeout: MAXIMUM_COMMISSIONING_TIMEOUT_S,
98
- earlyInterval: 20,
99
- lateInterval: 150,
100
- extendedInterval: 1285,
97
+ timeout: MAXIMUM_COMMISSIONING_TIMEOUT,
98
+ earlyInterval: Millis(20),
99
+ lateInterval: Millis(150),
100
+ extendedInterval: Millis(1285),
101
101
  ...options,
102
102
  };
103
103
  }
@@ -8,7 +8,18 @@ import { Advertisement } from "#advertisement/Advertisement.js";
8
8
  import type { Advertiser } from "#advertisement/Advertiser.js";
9
9
  import type { ServiceDescription } from "#advertisement/ServiceDescription.js";
10
10
  import { SupportedTransportsSchema } from "#common/SupportedTransportsBitmap.js";
11
- import { AAAARecord, ARecord, DnsRecord, Logger, NetworkInterfaceDetails, SrvRecord, Time, TxtRecord } from "#general";
11
+ import {
12
+ AAAARecord,
13
+ ARecord,
14
+ DnsRecord,
15
+ Duration,
16
+ Logger,
17
+ NetworkInterfaceDetails,
18
+ SrvRecord,
19
+ Time,
20
+ Timestamp,
21
+ TxtRecord,
22
+ } from "#general";
12
23
  import type { MdnsServer } from "#mdns/MdnsServer.js";
13
24
  import { SessionIntervals } from "#session/SessionIntervals.js";
14
25
  import type { MdnsAdvertiser } from "./MdnsAdvertiser.js";
@@ -29,7 +40,7 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
29
40
  qname: string;
30
41
 
31
42
  #isPrivacyMasked: boolean;
32
- #stopAt?: number;
43
+ #stopAt?: Timestamp;
33
44
 
34
45
  constructor(advertiser: MdnsAdvertiser, qname: string, description: T) {
35
46
  description = {
@@ -51,12 +62,12 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
51
62
  this.#stopAt = undefined;
52
63
  let number = 0;
53
64
  for (const retryInterval of this.advertiser.broadcastScheduleFor(this, event)) {
54
- if (this.#stopAt !== undefined && this.#stopAt <= Time.nowMs()) {
65
+ if (this.#stopAt !== undefined && this.#stopAt <= Time.nowMs) {
55
66
  break;
56
67
  }
57
68
 
58
69
  number++;
59
- logger.debug("Broadcast", this.dict({ number, next: retryInterval }));
70
+ logger.debug("Broadcast", this.dict({ number, next: Duration.format(retryInterval) }));
60
71
  await this.broadcast();
61
72
  await context.sleep("MDNS repeat", retryInterval);
62
73
  }
@@ -78,7 +89,7 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
78
89
  * Broadcast expiration announcement immediately.
79
90
  */
80
91
  async expire() {
81
- logger.info("Unpublishing", this.dict({ time: this.duration }));
92
+ logger.info("Unpublishing", this.dict({ time: Duration.format(this.duration) }));
82
93
  await this.advertiser.server.expireAnnouncements(this.service);
83
94
  }
84
95
 
@@ -94,7 +105,7 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
94
105
  return;
95
106
  }
96
107
 
97
- this.#stopAt = Time.nowMs() + broadcastAfterConnection;
108
+ this.#stopAt = Timestamp(Time.nowMs + broadcastAfterConnection);
98
109
  }
99
110
 
100
111
  override serviceDisconnected() {
@@ -148,9 +159,9 @@ export abstract class MdnsAdvertisement<T extends ServiceDescription = ServiceDe
148
159
 
149
160
  get #txtValues() {
150
161
  const values: Record<string, unknown> = {
151
- SII: this.description.idleIntervalMs /* Session Idle Interval */,
152
- SAI: this.description.activeIntervalMs /* Session Active Interval */,
153
- SAT: this.description.activeThresholdMs /* Session Active Threshold */,
162
+ SII: this.description.idleInterval /* Session Idle Interval */,
163
+ SAI: this.description.activeInterval /* Session Active Interval */,
164
+ SAT: this.description.activeThreshold /* Session Active Threshold */,
154
165
  ...this.txtValues,
155
166
  };
156
167
 
@@ -6,10 +6,20 @@
6
6
 
7
7
  import { Advertiser } from "#advertisement/Advertiser.js";
8
8
  import { ServiceDescription } from "#advertisement/ServiceDescription.js";
9
- import { Bytes, Crypto, ImplementationError, InternalError, RetrySchedule, STANDARD_MATTER_PORT } from "#general";
9
+ import {
10
+ Bytes,
11
+ Crypto,
12
+ Duration,
13
+ ImplementationError,
14
+ Instant,
15
+ InternalError,
16
+ RetrySchedule,
17
+ Seconds,
18
+ STANDARD_MATTER_PORT,
19
+ } from "#general";
10
20
  import type { MdnsServer } from "#mdns/MdnsServer.js";
11
21
  import { DatatypeModel, FieldElement } from "#model";
12
- import { MAXIMUM_COMMISSIONING_TIMEOUT_S } from "#types";
22
+ import { MAXIMUM_COMMISSIONING_TIMEOUT } from "#types";
13
23
  import { CommissionableMdnsAdvertisement } from "./CommissionableMdnsAdvertisement.js";
14
24
  import { CommissionerMdnsAdvertisement } from "./CommissionerMdnsAdvertisement.js";
15
25
  import type { MdnsAdvertisement } from "./MdnsAdvertisement.js";
@@ -188,7 +198,7 @@ export namespace MdnsAdvertiser {
188
198
  * Set to zero to terminate broadcast immediately after connection. If undefined broadcasts will continue until
189
199
  * terminated by {@link timeout} or {@link maximumCount}.
190
200
  */
191
- readonly broadcastAfterConnection?: number;
201
+ readonly broadcastAfterConnection?: Duration;
192
202
  }
193
203
 
194
204
  /**
@@ -196,23 +206,23 @@ export namespace MdnsAdvertiser {
196
206
  */
197
207
  export const DefaultBroadcastSchedule: BroadcastSchedule = {
198
208
  // Mandated by MDNS specification
199
- initialInterval: 1_000,
209
+ initialInterval: Seconds.one,
200
210
 
201
211
  // Maximum commissioning timeout per Matter specification 5.4.2.3.1, although
202
- timeout: MAXIMUM_COMMISSIONING_TIMEOUT_S * 1000,
212
+ timeout: MAXIMUM_COMMISSIONING_TIMEOUT,
203
213
 
204
214
  // Minimum per MDNS specification
205
215
  backoffFactor: 2,
206
216
 
207
217
  // Technically this may result in us emitting more than 8 packets which is the maximum per the MDNS
208
218
  // specification but extra packets will only come every 90 seconds
209
- maximumInterval: 90_000,
219
+ maximumInterval: Seconds(90),
210
220
 
211
221
  // Not in any specification AFAIK but common sense to reduce thundering herd
212
222
  jitterFactor: 0.25,
213
223
 
214
224
  // Generally operational broadcast is unnecessary once an operational connection is established
215
- broadcastAfterConnection: 0,
225
+ broadcastAfterConnection: Instant,
216
226
  };
217
227
 
218
228
  /**
package/src/ble/Ble.ts CHANGED
@@ -4,7 +4,16 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Bytes, Channel, ChannelType, MatterError, NetInterface, NoProviderError, TransportInterface } from "#general";
7
+ import {
8
+ Bytes,
9
+ Channel,
10
+ ChannelType,
11
+ Duration,
12
+ MatterError,
13
+ NetInterface,
14
+ NoProviderError,
15
+ TransportInterface,
16
+ } from "#general";
8
17
  import { Scanner } from "../common/Scanner.js";
9
18
  import { BLE_MAX_MATTER_PAYLOAD_SIZE } from "./BleConsts.js";
10
19
 
@@ -28,7 +37,7 @@ export abstract class Ble {
28
37
  }
29
38
 
30
39
  export interface BlePeripheralInterface extends TransportInterface {
31
- advertise(advertiseData: Bytes, additionalAdvertisementData?: Bytes, intervalMs?: number): Promise<void>;
40
+ advertise(advertiseData: Bytes, additionalAdvertisementData?: Bytes, interval?: Duration): Promise<void>;
32
41
  stopAdvertising(): Promise<void>;
33
42
  }
34
43
 
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { MAX_UDP_MESSAGE_SIZE } from "#general";
7
+ import { MAX_UDP_MESSAGE_SIZE, Millis, Seconds } from "#general";
8
8
 
9
9
  /** @see {@link MatterSpecification.v11.Core} § 4.17.3.2 */
10
10
  export const BLE_MATTER_SERVICE_UUID_SHORT = "fff6";
@@ -22,18 +22,18 @@ export const BTP_MAXIMUM_WINDOW_SIZE = 255; // Server maximum window size
22
22
  * The maximum amount of time after sending a BTP Session Handshake request to wait for a BTP Session Handshake response
23
23
  * before closing the connection.
24
24
  */
25
- export const BTP_CONN_RSP_TIMEOUT_MS = 5_000; // timer starts when receives handshake request & waits for a subscription request on c2
25
+ export const BTP_CONN_RSP_TIMEOUT = Seconds(5); // timer starts when receives handshake request & waits for a subscription request on c2
26
26
 
27
27
  /** The maximum amount of time after receipt of a segment before a stand-alone ACK must be sent. */
28
- export const BTP_ACK_TIMEOUT_MS = 15_000; // timer in ms before ack should be sent for a segment
28
+ export const BTP_ACK_TIMEOUT = Seconds(15); // timer in ms before ack should be sent for a segment
29
29
 
30
- export const BTP_SEND_ACK_TIMEOUT_MS = BTP_ACK_TIMEOUT_MS / 3; // timer starts when we receive a packet and stops when we sends its ack
30
+ export const BTP_SEND_ACK_TIMEOUT = Millis(BTP_ACK_TIMEOUT / 3); // timer starts when we receive a packet and stops when we sends its ack
31
31
 
32
32
  /**
33
33
  * The maximum amount of time no unique data has been sent over a BTP session before the Central Device must close the
34
34
  * BTP session.
35
35
  */
36
- export const BTP_CONN_IDLE_TIMEOUT = 30_000;
36
+ export const BTP_CONN_IDLE_TIMEOUT = Seconds(30);
37
37
 
38
38
  /**
39
39
  * The maximum message size that can be transported in a Matter message via BTP.
@@ -9,10 +9,10 @@ import { BtpCodec } from "../codec/BtpCodec.js";
9
9
  import {
10
10
  BLE_MAXIMUM_BTP_MTU,
11
11
  BLE_MINIMUM_ATT_MTU,
12
- BTP_ACK_TIMEOUT_MS,
12
+ BTP_ACK_TIMEOUT,
13
13
  BTP_CONN_IDLE_TIMEOUT,
14
14
  BTP_MAXIMUM_WINDOW_SIZE,
15
- BTP_SEND_ACK_TIMEOUT_MS,
15
+ BTP_SEND_ACK_TIMEOUT,
16
16
  } from "./BleConsts.js";
17
17
 
18
18
  export class BtpMatterError extends MatterError {}
@@ -29,7 +29,7 @@ export class BtpSessionHandler {
29
29
  private currentIncomingSegmentedPayload: Bytes | undefined;
30
30
  private prevIncomingSequenceNumber = 255; // Incoming Sequence Number received. Set to 255 to start at 0
31
31
  private prevIncomingAckNumber = -1; // Previous ackNumber received
32
- private readonly ackReceiveTimer = Time.getTimer("BTP ack timeout", BTP_ACK_TIMEOUT_MS, () =>
32
+ private readonly ackReceiveTimer = Time.getTimer("BTP ack timeout", BTP_ACK_TIMEOUT, () =>
33
33
  this.btpAckTimeoutTriggered(),
34
34
  );
35
35
 
@@ -37,7 +37,7 @@ export class BtpSessionHandler {
37
37
  private prevAckedSequenceNumber = -1; // Previous (outgoing) Acked Sequence Number
38
38
  private readonly queuedOutgoingMatterMessages = new Array<DataReader<Endian.Little>>();
39
39
  private sendInProgress = false;
40
- private readonly sendAckTimer = Time.getTimer("BTP send timeout", BTP_SEND_ACK_TIMEOUT_MS, () =>
40
+ private readonly sendAckTimer = Time.getTimer("BTP send timeout", BTP_SEND_ACK_TIMEOUT, () =>
41
41
  this.btpSendAckTimeoutTriggered(),
42
42
  );
43
43
  private isActive = true;
@@ -76,7 +76,7 @@ export class AttestationCertificateManager {
76
76
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
77
77
  // @ts-ignore
78
78
  private async generatePAACert(vendorId?: VendorId) {
79
- const now = Time.get().now();
79
+ const now = Time.now;
80
80
  const cert = new Paa({
81
81
  serialNumber: Bytes.fromHex(toHex(this.paaCertId)),
82
82
  signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
@@ -111,7 +111,7 @@ export class AttestationCertificateManager {
111
111
  }
112
112
 
113
113
  private async generatePAICert(vendorId: VendorId, productId?: number) {
114
- const now = Time.get().now();
114
+ const now = Time.now;
115
115
  const cert = new Pai({
116
116
  serialNumber: Bytes.fromHex(toHex(this.#paiCertId)),
117
117
  signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
@@ -146,7 +146,7 @@ export class AttestationCertificateManager {
146
146
  }
147
147
 
148
148
  async generateDaCert(publicKey: Bytes, vendorId: VendorId, productId: number) {
149
- const now = Time.get().now();
149
+ const now = Time.now;
150
150
  const certId = this.#nextCertificateId++;
151
151
  const cert = new Dac({
152
152
  serialNumber: Bytes.fromHex(toHex(certId)),
@@ -117,7 +117,7 @@ export class CertificateAuthority {
117
117
  }
118
118
 
119
119
  async #generateRootCert() {
120
- const now = Time.get().now();
120
+ const now = Time.now;
121
121
  const cert = new Rcac({
122
122
  serialNumber: Bytes.fromHex(toHex(this.#rootCertId)),
123
123
  signatureAlgorithm: 1 /* EcdsaWithSHA256 */,
@@ -148,7 +148,7 @@ export class CertificateAuthority {
148
148
  nodeId: NodeId,
149
149
  caseAuthenticatedTags?: CaseAuthenticatedTag[],
150
150
  ) {
151
- const now = Time.get().now();
151
+ const now = Time.now;
152
152
  const certId = this.#nextCertificateId++;
153
153
  const cert = new Noc({
154
154
  serialNumber: Bytes.fromHex(toHex(certId)),
@@ -62,10 +62,10 @@ export abstract class OperationalBase<CT extends X509Certificate> extends X509Ba
62
62
 
63
63
  // notBefore date should be already reached, notAfter is not checked right now
64
64
  // TODO: implement real checks when we add "Last known Good UTC time"
65
- if (cert.notBefore * 1000 > Time.nowMs()) {
66
- logger.warn(`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs()}`);
65
+ if (cert.notBefore * 1000 > Time.nowMs) {
66
+ logger.warn(`Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs}`);
67
67
  /*throw new CertificateError(
68
- `Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs()}`,
68
+ `Certificate notBefore date is in the future: ${cert.notBefore * 1000} vs ${Time.nowMs}`,
69
69
  );*/
70
70
  }
71
71
  }
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { capitalize, Diagnostic, ImplementationError, Logger, Merge } from "#general";
7
+ import { capitalize, Diagnostic, Duration, ImplementationError, Logger, Merge } from "#general";
8
8
  import {
9
9
  Attribute,
10
10
  AttributeId,
@@ -387,16 +387,16 @@ export function ClusterClient<const T extends ClusterType>(
387
387
  request: RequestT,
388
388
  options: {
389
389
  asTimedRequest?: boolean;
390
- timedRequestTimeoutMs?: number;
391
- expectedProcessingTimeMs?: number;
390
+ timedRequestTimeout?: Duration;
391
+ expectedProcessingTime?: Duration;
392
392
  useExtendedFailSafeMessageResponseTimeout?: boolean;
393
393
  } = {},
394
394
  ) => {
395
395
  const {
396
396
  asTimedRequest,
397
- timedRequestTimeoutMs,
397
+ timedRequestTimeout,
398
398
  useExtendedFailSafeMessageResponseTimeout,
399
- expectedProcessingTimeMs,
399
+ expectedProcessingTime,
400
400
  } = options;
401
401
  if (isGroupAddress) {
402
402
  return interactionClient.invokeWithSuppressedResponse<Command<RequestT, ResponseT, any>>({
@@ -404,7 +404,7 @@ export function ClusterClient<const T extends ClusterType>(
404
404
  command: commandDef[commandName],
405
405
  request,
406
406
  asTimedRequest,
407
- timedRequestTimeoutMs,
407
+ timedRequestTimeout,
408
408
  });
409
409
  }
410
410
  return interactionClient.invoke<Command<RequestT, ResponseT, any>>({
@@ -413,8 +413,8 @@ export function ClusterClient<const T extends ClusterType>(
413
413
  command: commandDef[commandName],
414
414
  request,
415
415
  asTimedRequest,
416
- timedRequestTimeoutMs,
417
- expectedProcessingTimeMs,
416
+ timedRequestTimeout,
417
+ expectedProcessingTime,
418
418
  useExtendedFailSafeMessageResponseTimeout,
419
419
  });
420
420
  };
@@ -3,7 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Merge } from "#general";
6
+ import { Duration, Merge } from "#general";
7
7
  import {
8
8
  Attribute,
9
9
  AttributeId,
@@ -63,13 +63,13 @@ export type SignatureFromCommandSpec<C extends Command<any, any, any>> = (
63
63
  asTimedRequest?: boolean;
64
64
 
65
65
  /** Override the request timeout when the command is sent as times request. Default are 10s. */
66
- timedRequestTimeoutMs?: number;
66
+ timedRequestTimeout?: Duration;
67
67
 
68
68
  /**
69
69
  * Expected processing time on the device side for this command.
70
70
  * useExtendedFailSafeMessageResponseTimeout is ignored if this value is set.
71
71
  */
72
- expectedProcessingTimeMs?: number;
72
+ expectedProcessingTime?: Duration;
73
73
 
74
74
  /**
75
75
  * Use the extended fail-safe message response timeout of 30 seconds. Use this for all commands
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { ImplementationError } from "#general";
7
+ import { Duration, ImplementationError } from "#general";
8
8
  import { ClusterId, EndpointNumber, Event, EventId, EventNumber } from "#types";
9
9
  import { DecodedEventData } from "../../interaction/EventDataDecoder.js";
10
10
  import { InteractionClient } from "../../interaction/InteractionClient.js";
@@ -58,8 +58,8 @@ export class EventClient<T> {
58
58
  }
59
59
 
60
60
  async subscribe(
61
- minIntervalFloorSeconds: number,
62
- maxIntervalCeilingSeconds: number,
61
+ minIntervalFloor: Duration,
62
+ maxIntervalCeiling: Duration,
63
63
  isUrgent = true,
64
64
  minimumEventNumber?: EventNumber,
65
65
  isFabricFiltered?: boolean,
@@ -71,8 +71,8 @@ export class EventClient<T> {
71
71
  endpointId: this.endpointId,
72
72
  clusterId: this.clusterId,
73
73
  event: this.event,
74
- minIntervalFloorSeconds,
75
- maxIntervalCeilingSeconds,
74
+ minIntervalFloor,
75
+ maxIntervalCeiling,
76
76
  isUrgent,
77
77
  minimumEventNumber,
78
78
  isFabricFiltered,
@@ -8,6 +8,7 @@ import {
8
8
  AsyncObservable,
9
9
  Bytes,
10
10
  Construction,
11
+ Duration,
11
12
  Logger,
12
13
  MatterFlowError,
13
14
  UnexpectedDataError,
@@ -46,7 +47,7 @@ export abstract class FailsafeContext {
46
47
  #commissioned = AsyncObservable<[], void>();
47
48
 
48
49
  constructor(options: FailsafeContext.Options) {
49
- const { expiryLengthSeconds, associatedFabric, maxCumulativeFailsafeSeconds } = options;
50
+ const { expiryLength, associatedFabric, maxCumulativeFailsafe } = options;
50
51
 
51
52
  this.#sessions = options.sessions;
52
53
  this.#fabrics = options.fabrics;
@@ -61,21 +62,18 @@ export abstract class FailsafeContext {
61
62
 
62
63
  // If ExpiryLengthSeconds is non-zero and the fail-safe timer was not currently armed, then the fail-safe
63
64
  // timer SHALL be armed for that duration.
64
- this.#failsafe = new FailsafeTimer(
65
- associatedFabric,
66
- expiryLengthSeconds,
67
- maxCumulativeFailsafeSeconds,
68
- () => this.#failSafeExpired(),
65
+ this.#failsafe = new FailsafeTimer(associatedFabric, expiryLength, maxCumulativeFailsafe, () =>
66
+ this.#failSafeExpired(),
69
67
  );
70
- logger.debug(`Arm failSafe timer for ${expiryLengthSeconds}s.`);
68
+ logger.debug(`Arm failSafe timer for ${Duration.format(expiryLength)}`);
71
69
  });
72
70
  }
73
71
 
74
- async extend(fabric: Fabric | undefined, expiryLengthSeconds: number) {
72
+ async extend(fabric: Fabric | undefined, expiryLength: Duration) {
75
73
  await this.#construction;
76
- await this.#failsafe?.reArm(fabric, expiryLengthSeconds);
77
- if (expiryLengthSeconds > 0) {
78
- logger.debug(`Extend failSafe timer for ${expiryLengthSeconds}s.`);
74
+ await this.#failsafe?.reArm(fabric, expiryLength);
75
+ if (expiryLength > 0) {
76
+ logger.debug(`Extend failSafe timer for ${Duration.format(expiryLength)}`);
79
77
  }
80
78
  }
81
79
 
@@ -341,8 +339,8 @@ export namespace FailsafeContext {
341
339
  export interface Options {
342
340
  sessions: SessionManager;
343
341
  fabrics: FabricManager;
344
- expiryLengthSeconds: number;
345
- maxCumulativeFailsafeSeconds: number;
342
+ expiryLength: Duration;
343
+ maxCumulativeFailsafe: Duration;
346
344
  associatedFabric: Fabric | undefined;
347
345
  }
348
346
  }
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Logger, MatterFlowError, Time, Timer } from "#general";
7
+ import { Duration, Logger, MatterFlowError, Time, Timer } from "#general";
8
8
  import { Fabric } from "../fabric/Fabric.js";
9
9
  import type { FailsafeContext } from "./FailsafeContext.js";
10
10
 
@@ -22,16 +22,14 @@ export class FailsafeTimer {
22
22
 
23
23
  constructor(
24
24
  public associatedFabric: Fabric | undefined,
25
- expiryLengthSeconds: number,
26
- maxCumulativeFailsafeSeconds: number,
25
+ expiryLength: Duration,
26
+ maxCumulativeFailsafe: Duration,
27
27
  expiryCallback: () => Promise<void>,
28
28
  ) {
29
29
  this.#expiryCallback = expiryCallback;
30
- this.#failsafeTimer = this.#startFailsafeTimer(expiryLengthSeconds);
31
- this.#maxCumulativeFailsafeTimer = Time.getTimer(
32
- "Max cumulative failsafe",
33
- maxCumulativeFailsafeSeconds * 1000,
34
- () => this.expire(),
30
+ this.#failsafeTimer = this.#startFailsafeTimer(expiryLength);
31
+ this.#maxCumulativeFailsafeTimer = Time.getTimer("Max cumulative failsafe", maxCumulativeFailsafe, () =>
32
+ this.expire(),
35
33
  ).start();
36
34
  }
37
35
 
@@ -45,7 +43,7 @@ export class FailsafeTimer {
45
43
  }
46
44
 
47
45
  /** Handle "Re-Arming" an existing FailSafe context to extend the timer, expire or fail if not allowed. */
48
- async reArm(associatedFabric: Fabric | undefined, expiryLengthSeconds: number) {
46
+ async reArm(associatedFabric: Fabric | undefined, expiry: Duration) {
49
47
  if (!this.#failsafeTimer.isRunning) {
50
48
  throw new MatterFlowError("FailSafe already expired.");
51
49
  }
@@ -58,7 +56,7 @@ export class FailsafeTimer {
58
56
 
59
57
  this.#failsafeTimer.stop();
60
58
 
61
- if (expiryLengthSeconds === 0) {
59
+ if (expiry === 0) {
62
60
  // If ExpiryLengthSeconds is 0 and the fail-safe timer was already armed and the accessing fabric matches
63
61
  // the Fabric currently associated with the fail-safe context, then the fail-safe timer SHALL be
64
62
  // immediately expired (see further below for side-effects of expiration).
@@ -67,7 +65,7 @@ export class FailsafeTimer {
67
65
  // If ExpiryLengthSeconds is non-zero and the fail-safe timer was currently armed, and the accessing Fabric
68
66
  // matches the fail-safe context’s associated Fabric, then the fail-safe timer SHALL be re- armed to expire
69
67
  // in ExpiryLengthSeconds.
70
- this.#failsafeTimer = this.#startFailsafeTimer(expiryLengthSeconds);
68
+ this.#failsafeTimer = this.#startFailsafeTimer(expiry);
71
69
  }
72
70
  }
73
71
 
@@ -83,8 +81,8 @@ export class FailsafeTimer {
83
81
  this.#maxCumulativeFailsafeTimer.stop();
84
82
  }
85
83
 
86
- #startFailsafeTimer(expiryLengthSeconds: number) {
87
- return Time.getTimer("Failsafe expiration", expiryLengthSeconds * 1000, () =>
84
+ #startFailsafeTimer(expiry: Duration) {
85
+ return Time.getTimer("Failsafe expiration", expiry, () =>
88
86
  this.expire().catch(e => logger.error("Error during failsafe expiration", e)),
89
87
  ).start();
90
88
  }
@@ -4,7 +4,16 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { BasicSet, ChannelType, Environment, Environmental, Lifespan, ServerAddress, ServerAddressIp } from "#general";
7
+ import {
8
+ BasicSet,
9
+ ChannelType,
10
+ Duration,
11
+ Environment,
12
+ Environmental,
13
+ Lifespan,
14
+ ServerAddress,
15
+ ServerAddressIp,
16
+ } from "#general";
8
17
  import { DiscoveryCapabilitiesBitmap, NodeId, TypeFromPartialBitSchema, VendorId } from "#types";
9
18
  import { Fabric } from "../fabric/Fabric.js";
10
19
 
@@ -32,13 +41,13 @@ export type DiscoveryData = {
32
41
  PI?: string;
33
42
 
34
43
  /** Sleep Idle Interval */
35
- SII?: number;
44
+ SII?: Duration;
36
45
 
37
46
  /** Sleep Active Interval */
38
- SAI?: number;
47
+ SAI?: Duration;
39
48
 
40
49
  /** Session active threshold */
41
- SAT?: number;
50
+ SAT?: Duration;
42
51
 
43
52
  /** TCP supported */
44
53
  T?: number; // SupportedTransportsBitmap but comes in as number, so converted on usage
@@ -116,7 +125,7 @@ export interface Scanner {
116
125
  findOperationalDevice(
117
126
  fabric: Fabric,
118
127
  nodeId: NodeId,
119
- timeoutSeconds?: number,
128
+ timeout?: Duration,
120
129
  ignoreExistingRecords?: boolean,
121
130
  ): Promise<OperationalDevice | undefined>;
122
131
 
@@ -132,7 +141,7 @@ export interface Scanner {
132
141
  */
133
142
  findCommissionableDevices(
134
143
  identifier: CommissionableDeviceIdentifiers,
135
- timeoutSeconds?: number,
144
+ timeout?: Duration,
136
145
  ignoreExistingRecords?: boolean,
137
146
  ): Promise<CommissionableDevice[]>;
138
147
 
@@ -144,7 +153,7 @@ export interface Scanner {
144
153
  findCommissionableDevicesContinuously(
145
154
  identifier: CommissionableDeviceIdentifiers,
146
155
  callback: (device: CommissionableDevice) => void,
147
- timeoutSeconds?: number,
156
+ timeout?: Duration,
148
157
  cancelSignal?: Promise<void>,
149
158
  ): Promise<CommissionableDevice[]>;
150
159
 
@@ -277,7 +277,7 @@ export class OccurrenceManager {
277
277
 
278
278
  add(occurrence: Occurrence): MaybePromise<NumberedOccurrence> {
279
279
  return MaybePromise.then(this.#store.add(occurrence), entry => {
280
- logger.debug(`Recorded event #${entry.number}: ${Diagnostic.json(occurrence)}`);
280
+ logger.debug(`Recorded event #${entry.number}`, Diagnostic.dict(occurrence));
281
281
  this.#occurrences.push(entry);
282
282
  if (this.#occurrences.length > this.#bufferConfig.maxEventAllowance) {
283
283
  this.#startCull();
@@ -96,7 +96,7 @@ export class FabricGroups {
96
96
 
97
97
  /*
98
98
  TODO for Controller to generate new epochs
99
- addGroupEpoch(groupKeySetId: number, startTimeMs = Time.nowMs()) {
99
+ addGroupEpoch(groupKeySetId: number, startTimeMs = Time.nowMs) {
100
100
  // TODO for Controller to generate new epochs
101
101
  const epochKey = Crypto.getRandomData(CRYPTO_SYMMETRIC_KEY_LENGTH);
102
102
  const operationalEpochKey = Crypto.hkdf(epochKey, this.#fabric.operationalId, GROUP_SECURITY_INFO);