@matter/general 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 (237) hide show
  1. package/dist/cjs/codec/DnsCodec.d.ts +8 -6
  2. package/dist/cjs/codec/DnsCodec.d.ts.map +1 -1
  3. package/dist/cjs/codec/DnsCodec.js +10 -7
  4. package/dist/cjs/codec/DnsCodec.js.map +1 -1
  5. package/dist/cjs/crypto/Crypto.d.ts +32 -36
  6. package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
  7. package/dist/cjs/environment/Environment.d.ts.map +1 -1
  8. package/dist/cjs/environment/Environment.js +2 -1
  9. package/dist/cjs/environment/Environment.js.map +1 -1
  10. package/dist/cjs/log/Diagnostic.d.ts +4 -6
  11. package/dist/cjs/log/Diagnostic.d.ts.map +1 -1
  12. package/dist/cjs/log/Diagnostic.js +6 -26
  13. package/dist/cjs/log/Diagnostic.js.map +1 -1
  14. package/dist/cjs/log/Logger.js +1 -1
  15. package/dist/cjs/log/Logger.js.map +1 -1
  16. package/dist/cjs/net/RetrySchedule.d.ts +10 -11
  17. package/dist/cjs/net/RetrySchedule.d.ts.map +1 -1
  18. package/dist/cjs/net/RetrySchedule.js +8 -7
  19. package/dist/cjs/net/RetrySchedule.js.map +1 -1
  20. package/dist/cjs/net/ServerAddress.d.ts +15 -4
  21. package/dist/cjs/net/ServerAddress.d.ts.map +1 -1
  22. package/dist/cjs/net/ServerAddress.js +33 -3
  23. package/dist/cjs/net/ServerAddress.js.map +2 -2
  24. package/dist/cjs/net/UdpMulticastServer.d.ts.map +1 -1
  25. package/dist/cjs/net/UdpMulticastServer.js +2 -1
  26. package/dist/cjs/net/UdpMulticastServer.js.map +1 -1
  27. package/dist/cjs/net/mock/MockRouter.d.ts +2 -1
  28. package/dist/cjs/net/mock/MockRouter.d.ts.map +1 -1
  29. package/dist/cjs/net/mock/MockRouter.js.map +1 -1
  30. package/dist/cjs/net/mock/MockUdpChannel.d.ts +2 -1
  31. package/dist/cjs/net/mock/MockUdpChannel.d.ts.map +1 -1
  32. package/dist/cjs/net/mock/MockUdpChannel.js.map +1 -1
  33. package/dist/cjs/net/mock/NetworkSimulator.d.ts +2 -1
  34. package/dist/cjs/net/mock/NetworkSimulator.d.ts.map +1 -1
  35. package/dist/cjs/net/mock/NetworkSimulator.js.map +1 -1
  36. package/dist/cjs/storage/Storage.d.ts +2 -1
  37. package/dist/cjs/storage/Storage.d.ts.map +1 -1
  38. package/dist/cjs/storage/Storage.js.map +1 -1
  39. package/dist/cjs/storage/StorageBackendMemory.d.ts +2 -1
  40. package/dist/cjs/storage/StorageBackendMemory.d.ts.map +1 -1
  41. package/dist/cjs/storage/StorageBackendMemory.js +1 -1
  42. package/dist/cjs/storage/StorageBackendMemory.js.map +1 -1
  43. package/dist/cjs/storage/StorageContext.d.ts +2 -1
  44. package/dist/cjs/storage/StorageContext.d.ts.map +1 -1
  45. package/dist/cjs/storage/StorageContext.js.map +1 -1
  46. package/dist/cjs/storage/StringifyTools.d.ts +2 -1
  47. package/dist/cjs/storage/StringifyTools.d.ts.map +1 -1
  48. package/dist/cjs/storage/StringifyTools.js +3 -0
  49. package/dist/cjs/storage/StringifyTools.js.map +1 -1
  50. package/dist/cjs/time/Duration.d.ts +47 -0
  51. package/dist/cjs/time/Duration.d.ts.map +1 -0
  52. package/dist/cjs/time/Duration.js +145 -0
  53. package/dist/cjs/time/Duration.js.map +6 -0
  54. package/dist/cjs/time/Time.d.ts +21 -19
  55. package/dist/cjs/time/Time.d.ts.map +1 -1
  56. package/dist/cjs/time/Time.js +44 -33
  57. package/dist/cjs/time/Time.js.map +1 -1
  58. package/dist/cjs/time/TimeUnit.d.ts +87 -0
  59. package/dist/cjs/time/TimeUnit.d.ts.map +1 -0
  60. package/dist/cjs/time/TimeUnit.js +88 -0
  61. package/dist/cjs/time/TimeUnit.js.map +6 -0
  62. package/dist/cjs/time/Timespan.d.ts +26 -0
  63. package/dist/cjs/time/Timespan.d.ts.map +1 -0
  64. package/dist/cjs/time/Timespan.js +52 -0
  65. package/dist/cjs/time/Timespan.js.map +6 -0
  66. package/dist/cjs/time/Timestamp.d.ts +47 -0
  67. package/dist/cjs/time/Timestamp.d.ts.map +1 -0
  68. package/dist/cjs/time/Timestamp.js +78 -0
  69. package/dist/cjs/time/Timestamp.js.map +6 -0
  70. package/dist/cjs/time/index.d.ts +4 -0
  71. package/dist/cjs/time/index.d.ts.map +1 -1
  72. package/dist/cjs/time/index.js +4 -0
  73. package/dist/cjs/time/index.js.map +1 -1
  74. package/dist/cjs/transaction/Status.d.ts +1 -1
  75. package/dist/cjs/transaction/Status.d.ts.map +1 -1
  76. package/dist/cjs/transaction/Status.js +2 -1
  77. package/dist/cjs/transaction/Status.js.map +1 -1
  78. package/dist/cjs/transaction/Tx.d.ts.map +1 -1
  79. package/dist/cjs/transaction/Tx.js +10 -8
  80. package/dist/cjs/transaction/Tx.js.map +1 -1
  81. package/dist/cjs/util/Cache.d.ts +5 -4
  82. package/dist/cjs/util/Cache.d.ts.map +1 -1
  83. package/dist/cjs/util/Cache.js +11 -11
  84. package/dist/cjs/util/Cache.js.map +1 -1
  85. package/dist/cjs/util/DataReadQueue.d.ts +2 -1
  86. package/dist/cjs/util/DataReadQueue.d.ts.map +1 -1
  87. package/dist/cjs/util/DataReadQueue.js +9 -3
  88. package/dist/cjs/util/DataReadQueue.js.map +1 -1
  89. package/dist/cjs/util/DeepEqual.d.ts +13 -1
  90. package/dist/cjs/util/DeepEqual.d.ts.map +1 -1
  91. package/dist/cjs/util/DeepEqual.js +24 -5
  92. package/dist/cjs/util/DeepEqual.js.map +2 -2
  93. package/dist/cjs/util/Observable.d.ts +4 -3
  94. package/dist/cjs/util/Observable.d.ts.map +1 -1
  95. package/dist/cjs/util/Observable.js +16 -15
  96. package/dist/cjs/util/Observable.js.map +1 -1
  97. package/dist/cjs/util/PromiseQueue.d.ts +2 -1
  98. package/dist/cjs/util/PromiseQueue.d.ts.map +1 -1
  99. package/dist/cjs/util/PromiseQueue.js +2 -1
  100. package/dist/cjs/util/PromiseQueue.js.map +1 -1
  101. package/dist/cjs/util/Promises.d.ts +3 -2
  102. package/dist/cjs/util/Promises.d.ts.map +1 -1
  103. package/dist/cjs/util/Promises.js +4 -4
  104. package/dist/cjs/util/Promises.js.map +1 -1
  105. package/dist/esm/codec/DnsCodec.d.ts +8 -6
  106. package/dist/esm/codec/DnsCodec.d.ts.map +1 -1
  107. package/dist/esm/codec/DnsCodec.js +10 -7
  108. package/dist/esm/codec/DnsCodec.js.map +1 -1
  109. package/dist/esm/crypto/Crypto.d.ts +32 -36
  110. package/dist/esm/crypto/Crypto.d.ts.map +1 -1
  111. package/dist/esm/environment/Environment.d.ts.map +1 -1
  112. package/dist/esm/environment/Environment.js +2 -1
  113. package/dist/esm/environment/Environment.js.map +1 -1
  114. package/dist/esm/log/Diagnostic.d.ts +4 -6
  115. package/dist/esm/log/Diagnostic.d.ts.map +1 -1
  116. package/dist/esm/log/Diagnostic.js +6 -26
  117. package/dist/esm/log/Diagnostic.js.map +1 -1
  118. package/dist/esm/log/Logger.js +1 -1
  119. package/dist/esm/log/Logger.js.map +1 -1
  120. package/dist/esm/net/RetrySchedule.d.ts +10 -11
  121. package/dist/esm/net/RetrySchedule.d.ts.map +1 -1
  122. package/dist/esm/net/RetrySchedule.js +8 -7
  123. package/dist/esm/net/RetrySchedule.js.map +1 -1
  124. package/dist/esm/net/ServerAddress.d.ts +15 -4
  125. package/dist/esm/net/ServerAddress.d.ts.map +1 -1
  126. package/dist/esm/net/ServerAddress.js +33 -3
  127. package/dist/esm/net/ServerAddress.js.map +2 -2
  128. package/dist/esm/net/UdpMulticastServer.d.ts.map +1 -1
  129. package/dist/esm/net/UdpMulticastServer.js +2 -1
  130. package/dist/esm/net/UdpMulticastServer.js.map +1 -1
  131. package/dist/esm/net/mock/MockRouter.d.ts +2 -1
  132. package/dist/esm/net/mock/MockRouter.d.ts.map +1 -1
  133. package/dist/esm/net/mock/MockRouter.js.map +1 -1
  134. package/dist/esm/net/mock/MockUdpChannel.d.ts +2 -1
  135. package/dist/esm/net/mock/MockUdpChannel.d.ts.map +1 -1
  136. package/dist/esm/net/mock/MockUdpChannel.js.map +1 -1
  137. package/dist/esm/net/mock/NetworkSimulator.d.ts +2 -1
  138. package/dist/esm/net/mock/NetworkSimulator.d.ts.map +1 -1
  139. package/dist/esm/net/mock/NetworkSimulator.js.map +1 -1
  140. package/dist/esm/storage/Storage.d.ts +2 -1
  141. package/dist/esm/storage/Storage.d.ts.map +1 -1
  142. package/dist/esm/storage/Storage.js.map +1 -1
  143. package/dist/esm/storage/StorageBackendMemory.d.ts +2 -1
  144. package/dist/esm/storage/StorageBackendMemory.d.ts.map +1 -1
  145. package/dist/esm/storage/StorageBackendMemory.js +1 -1
  146. package/dist/esm/storage/StorageBackendMemory.js.map +1 -1
  147. package/dist/esm/storage/StorageContext.d.ts +2 -1
  148. package/dist/esm/storage/StorageContext.d.ts.map +1 -1
  149. package/dist/esm/storage/StorageContext.js.map +1 -1
  150. package/dist/esm/storage/StringifyTools.d.ts +2 -1
  151. package/dist/esm/storage/StringifyTools.d.ts.map +1 -1
  152. package/dist/esm/storage/StringifyTools.js +3 -0
  153. package/dist/esm/storage/StringifyTools.js.map +1 -1
  154. package/dist/esm/time/Duration.d.ts +47 -0
  155. package/dist/esm/time/Duration.d.ts.map +1 -0
  156. package/dist/esm/time/Duration.js +125 -0
  157. package/dist/esm/time/Duration.js.map +6 -0
  158. package/dist/esm/time/Time.d.ts +21 -19
  159. package/dist/esm/time/Time.d.ts.map +1 -1
  160. package/dist/esm/time/Time.js +44 -33
  161. package/dist/esm/time/Time.js.map +1 -1
  162. package/dist/esm/time/TimeUnit.d.ts +87 -0
  163. package/dist/esm/time/TimeUnit.d.ts.map +1 -0
  164. package/dist/esm/time/TimeUnit.js +68 -0
  165. package/dist/esm/time/TimeUnit.js.map +6 -0
  166. package/dist/esm/time/Timespan.d.ts +26 -0
  167. package/dist/esm/time/Timespan.d.ts.map +1 -0
  168. package/dist/esm/time/Timespan.js +32 -0
  169. package/dist/esm/time/Timespan.js.map +6 -0
  170. package/dist/esm/time/Timestamp.d.ts +47 -0
  171. package/dist/esm/time/Timestamp.d.ts.map +1 -0
  172. package/dist/esm/time/Timestamp.js +58 -0
  173. package/dist/esm/time/Timestamp.js.map +6 -0
  174. package/dist/esm/time/index.d.ts +4 -0
  175. package/dist/esm/time/index.d.ts.map +1 -1
  176. package/dist/esm/time/index.js +4 -0
  177. package/dist/esm/time/index.js.map +1 -1
  178. package/dist/esm/transaction/Status.d.ts +1 -1
  179. package/dist/esm/transaction/Status.d.ts.map +1 -1
  180. package/dist/esm/transaction/Status.js +2 -1
  181. package/dist/esm/transaction/Status.js.map +1 -1
  182. package/dist/esm/transaction/Tx.d.ts.map +1 -1
  183. package/dist/esm/transaction/Tx.js +10 -8
  184. package/dist/esm/transaction/Tx.js.map +1 -1
  185. package/dist/esm/util/Cache.d.ts +5 -4
  186. package/dist/esm/util/Cache.d.ts.map +1 -1
  187. package/dist/esm/util/Cache.js +11 -11
  188. package/dist/esm/util/Cache.js.map +1 -1
  189. package/dist/esm/util/DataReadQueue.d.ts +2 -1
  190. package/dist/esm/util/DataReadQueue.d.ts.map +1 -1
  191. package/dist/esm/util/DataReadQueue.js +9 -3
  192. package/dist/esm/util/DataReadQueue.js.map +1 -1
  193. package/dist/esm/util/DeepEqual.d.ts +13 -1
  194. package/dist/esm/util/DeepEqual.d.ts.map +1 -1
  195. package/dist/esm/util/DeepEqual.js +24 -5
  196. package/dist/esm/util/DeepEqual.js.map +2 -2
  197. package/dist/esm/util/Observable.d.ts +4 -3
  198. package/dist/esm/util/Observable.d.ts.map +1 -1
  199. package/dist/esm/util/Observable.js +16 -15
  200. package/dist/esm/util/Observable.js.map +1 -1
  201. package/dist/esm/util/PromiseQueue.d.ts +2 -1
  202. package/dist/esm/util/PromiseQueue.d.ts.map +1 -1
  203. package/dist/esm/util/PromiseQueue.js +2 -1
  204. package/dist/esm/util/PromiseQueue.js.map +1 -1
  205. package/dist/esm/util/Promises.d.ts +3 -2
  206. package/dist/esm/util/Promises.d.ts.map +1 -1
  207. package/dist/esm/util/Promises.js +4 -4
  208. package/dist/esm/util/Promises.js.map +1 -1
  209. package/package.json +3 -3
  210. package/src/codec/DnsCodec.ts +27 -8
  211. package/src/environment/Environment.ts +2 -1
  212. package/src/log/Diagnostic.ts +9 -37
  213. package/src/log/Logger.ts +1 -1
  214. package/src/net/RetrySchedule.ts +14 -14
  215. package/src/net/ServerAddress.ts +44 -5
  216. package/src/net/UdpMulticastServer.ts +2 -1
  217. package/src/net/mock/MockRouter.ts +2 -1
  218. package/src/net/mock/MockUdpChannel.ts +2 -1
  219. package/src/net/mock/NetworkSimulator.ts +2 -1
  220. package/src/storage/Storage.ts +2 -5
  221. package/src/storage/StorageBackendMemory.ts +2 -2
  222. package/src/storage/StorageContext.ts +2 -1
  223. package/src/storage/StringifyTools.ts +5 -0
  224. package/src/time/Duration.ts +181 -0
  225. package/src/time/Time.ts +50 -39
  226. package/src/time/TimeUnit.ts +159 -0
  227. package/src/time/Timespan.ts +52 -0
  228. package/src/time/Timestamp.ts +94 -0
  229. package/src/time/index.ts +4 -0
  230. package/src/transaction/Status.ts +2 -1
  231. package/src/transaction/Tx.ts +9 -7
  232. package/src/util/Cache.ts +11 -10
  233. package/src/util/DataReadQueue.ts +9 -3
  234. package/src/util/DeepEqual.ts +38 -13
  235. package/src/util/Observable.ts +19 -17
  236. package/src/util/PromiseQueue.ts +4 -2
  237. package/src/util/Promises.ts +6 -5
@@ -3,12 +3,13 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Duration } from "#time/Duration.js";
6
7
  /**
7
8
  * A queue that processes promises with a given concurrency and delays after each promise if desired.
8
9
  */
9
10
  export declare class PromiseQueue {
10
11
  #private;
11
- constructor(concurrency?: number, delay?: number);
12
+ constructor(concurrency?: number, delay?: Duration);
12
13
  /**
13
14
  * Add a promise to the queue. It returns a promise that can be awaited.
14
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PromiseQueue.d.ts","sourceRoot":"","sources":["../../../src/util/PromiseQueue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,qBAAa,YAAY;;gBAMT,WAAW,SAAI,EAAE,KAAK,SAAI;IAKtC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAsD9C;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAS5B,+CAA+C;IAC/C,IAAI,KAAK,WAER;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"PromiseQueue.d.ts","sourceRoot":"","sources":["../../../src/util/PromiseQueue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAQ7C;;GAEG;AACH,qBAAa,YAAY;;gBAMT,WAAW,SAAI,EAAE,KAAK,WAAU;IAK5C;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAsD9C;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAS5B,+CAA+C;IAC/C,IAAI,KAAK,WAER;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAGhB"}
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Time } from "#time/Time.js";
7
+ import { Instant } from "#time/TimeUnit.js";
7
8
  import { Logger } from "../log/Logger.js";
8
9
  import { createPromise } from "./Promises.js";
9
10
  const logger = Logger.get("PromiseQueue");
@@ -12,7 +13,7 @@ class PromiseQueue {
12
13
  #queue = new Array();
13
14
  #concurrency;
14
15
  #runningCount = 0;
15
- constructor(concurrency = 1, delay = 0) {
16
+ constructor(concurrency = 1, delay = Instant) {
16
17
  this.#concurrency = concurrency;
17
18
  this.#delay = delay;
18
19
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/PromiseQueue.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAE9B,MAAM,SAAS,OAAO,IAAI,cAAc;AAKjC,MAAM,aAAa;AAAA,EACb;AAAA,EACA,SAAS,IAAI,MAAsE;AAAA,EACnF;AAAA,EACT,gBAAgB;AAAA,EAEhB,YAAY,cAAc,GAAG,QAAQ,GAAG;AACpC,SAAK,eAAe;AACpB,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAO,UAAwC;AAC3C,UAAM,EAAE,SAAS,UAAU,SAAS,IAAI,cAAiB;AAEzD,WAAO,MAAM,iCAAiC,KAAK,OAAO,SAAS,CAAC;AACpE,SAAK,OAAO,KAAK;AAAA,MACb,MAAM,MAAM,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ;AAAA,MACpD;AAAA,IACJ,CAAC;AACD,SAAK,KAAK;AACV,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,OAAa;AACT,QAAI,KAAK,iBAAiB,KAAK,gBAAgB,KAAK,OAAO,WAAW,GAAG;AACrE;AAAA,IACJ;AAEA,WAAO;AAAA,MACH;AAAA,MACA,KAAK,OAAO;AAAA,MACZ;AAAA,MACA,KAAK;AAAA,IACT;AACA,UAAM,EAAE,KAAK,IAAI,KAAK,OAAO,MAAM,KAAK,CAAC;AACzC,QAAI,SAAS,QAAW;AACpB,WAAK;AACL,WAAK,EACA,MAAM,WAAS;AACZ,cAAM;AAAA,MACV,CAAC,EACA,QAAQ,MAAM;AACX,eAAO,MAAM,wCAAwC,KAAK,gBAAgB,CAAC;AAC3E,YAAI,KAAK,SAAS,GAAG;AAEjB,eAAK,MAAM,eAAe,KAAK,MAAM,EAChC,KAAK,MAAM,KAAK,SAAS,CAAC,EAC1B,MAAM,WAAS;AACZ,kBAAM;AAAA,UACV,CAAC;AAAA,QACT,OAAO;AACH,eAAK,SAAS;AAAA,QAClB;AAAA,MACJ,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,WAAiB;AACb,SAAK;AACL,SAAK,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AACzB,QAAI,QAAQ;AACR,iBAAW,EAAE,SAAS,KAAK,KAAK,QAAQ;AACpC,iBAAS;AAAA,MACb;AAAA,IACJ;AACA,SAAK,OAAO,SAAS;AAAA,EACzB;AAAA;AAAA,EAGA,IAAI,QAAQ;AACR,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACV,SAAK,MAAM,KAAK;AAAA,EACpB;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY;AACrB,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAE9B,MAAM,SAAS,OAAO,IAAI,cAAc;AAKjC,MAAM,aAAa;AAAA,EACb;AAAA,EACA,SAAS,IAAI,MAAsE;AAAA,EACnF;AAAA,EACT,gBAAgB;AAAA,EAEhB,YAAY,cAAc,GAAG,QAAQ,SAAS;AAC1C,SAAK,eAAe;AACpB,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAO,UAAwC;AAC3C,UAAM,EAAE,SAAS,UAAU,SAAS,IAAI,cAAiB;AAEzD,WAAO,MAAM,iCAAiC,KAAK,OAAO,SAAS,CAAC;AACpE,SAAK,OAAO,KAAK;AAAA,MACb,MAAM,MAAM,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ;AAAA,MACpD;AAAA,IACJ,CAAC;AACD,SAAK,KAAK;AACV,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,OAAa;AACT,QAAI,KAAK,iBAAiB,KAAK,gBAAgB,KAAK,OAAO,WAAW,GAAG;AACrE;AAAA,IACJ;AAEA,WAAO;AAAA,MACH;AAAA,MACA,KAAK,OAAO;AAAA,MACZ;AAAA,MACA,KAAK;AAAA,IACT;AACA,UAAM,EAAE,KAAK,IAAI,KAAK,OAAO,MAAM,KAAK,CAAC;AACzC,QAAI,SAAS,QAAW;AACpB,WAAK;AACL,WAAK,EACA,MAAM,WAAS;AACZ,cAAM;AAAA,MACV,CAAC,EACA,QAAQ,MAAM;AACX,eAAO,MAAM,wCAAwC,KAAK,gBAAgB,CAAC;AAC3E,YAAI,KAAK,SAAS,GAAG;AAEjB,eAAK,MAAM,eAAe,KAAK,MAAM,EAChC,KAAK,MAAM,KAAK,SAAS,CAAC,EAC1B,MAAM,WAAS;AACZ,kBAAM;AAAA,UACV,CAAC;AAAA,QACT,OAAO;AACH,eAAK,SAAS;AAAA,QAClB;AAAA,MACJ,CAAC;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,WAAiB;AACb,SAAK;AACL,SAAK,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AACzB,QAAI,QAAQ;AACR,iBAAW,EAAE,SAAS,KAAK,KAAK,QAAQ;AACpC,iBAAS;AAAA,MACb;AAAA,IACJ;AACA,SAAK,OAAO,SAAS;AAAA,EACzB;AAAA;AAAA,EAGA,IAAI,QAAQ;AACR,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACV,SAAK,MAAM,KAAK;AAAA,EACpB;AACJ;",
5
5
  "names": []
6
6
  }
@@ -5,6 +5,7 @@
5
5
  * Copyright 2022-2025 Matter.js Authors
6
6
  * SPDX-License-Identifier: Apache-2.0
7
7
  */
8
+ import { Duration } from "#time/Duration.js";
8
9
  import { TimeoutError } from "../MatterError.js";
9
10
  /**
10
11
  * Obtain a promise with functions to resolve and reject.
@@ -29,11 +30,11 @@ export declare class PromiseTimeoutError extends TimeoutError {
29
30
  *
30
31
  * By default, rejects with {@link PromiseTimeoutError} on timeout but you can override by supplying {@link cancel}.
31
32
  *
32
- * @param timeoutMs the timeout in milliseconds
33
+ * @param timeout the timeout in milliseconds
33
34
  * @param promise a promise that resolves or rejects when the timed task completes
34
35
  * @param cancel invoked on timeout (default implementation throws {@link PromiseTimeoutError})
35
36
  */
36
- export declare function withTimeout<T>(timeoutMs: number, promise: Promise<T>, cancel?: AbortController | (() => void)): Promise<T>;
37
+ export declare function withTimeout<T>(timeout: Duration, promise: Promise<T>, cancel?: AbortController | (() => void)): Promise<T>;
37
38
  /**
38
39
  * Return type for functions that are optionally asynchronous.
39
40
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Promises.d.ts","sourceRoot":"","sources":["../../../src/util/Promises.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAiB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGhE;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,KAAK;IAChC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CACpC,CAiBA;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAsBvF;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;CAAG;AAExD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,CAAC,EAAE,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC,CAmDZ;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY;IACrB;;OAEG;OACA,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC;IAUtD;;;OAGG;SACE,CAAC,EAAE,EAAE,UAAU,EAAE,oBACR,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,YACzC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,WACxC,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GACnD,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IAsCxB;;OAEG;UACG,CAAC,EAAE,OAAO,oBACF,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,eACtC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;IAKhE;;OAEG;YACK,CAAC,YACK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,cACvC,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAC9C,YAAY,CAAC,CAAC,CAAC;;CA4DrB,CAAC"}
1
+ {"version":3,"file":"Promises.d.ts","sourceRoot":"","sources":["../../../src/util/Promises.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAiB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGhE;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,KAAK;IAChC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CACpC,CAiBA;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAsBvF;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;CAAG;AAExD;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAC/B,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,CAAC,EAAE,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC,CAmDZ;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY;IACrB;;OAEG;OACA,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC;IAUtD;;;OAGG;SACE,CAAC,EAAE,EAAE,UAAU,EAAE,oBACR,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,YACzC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,WACxC,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GACnD,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IAsCxB;;OAEG;UACG,CAAC,EAAE,OAAO,oBACF,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,eACtC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI;IAKhE;;OAEG;YACK,CAAC,YACK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,cACvC,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAC9C,YAAY,CAAC,CAAC,CAAC;;CA4DrB,CAAC"}
@@ -45,7 +45,7 @@ function anyPromise(promises) {
45
45
  }
46
46
  class PromiseTimeoutError extends TimeoutError {
47
47
  }
48
- async function withTimeout(timeoutMs, promise, cancel) {
48
+ async function withTimeout(timeout, promise, cancel) {
49
49
  let cancelFn;
50
50
  if (typeof cancel === "function") {
51
51
  cancelFn = cancel;
@@ -57,8 +57,8 @@ async function withTimeout(timeoutMs, promise, cancel) {
57
57
  };
58
58
  }
59
59
  let cancelTimer;
60
- const timeout = new Promise((resolve, reject) => {
61
- const timer = Time.getTimer("promise-timeout", timeoutMs, () => {
60
+ const timedOut = new Promise((resolve, reject) => {
61
+ const timer = Time.getTimer("promise-timeout", timeout, () => {
62
62
  try {
63
63
  cancelFn();
64
64
  } catch (e) {
@@ -83,7 +83,7 @@ async function withTimeout(timeoutMs, promise, cancel) {
83
83
  throw e;
84
84
  }
85
85
  );
86
- await Promise.all([timeout, producer]);
86
+ await Promise.all([timedOut, producer]);
87
87
  return result;
88
88
  }
89
89
  const MaybePromise = {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/Promises.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/general",
3
- "version": "0.16.0-alpha.0-20250816-d22ad240d",
3
+ "version": "0.16.0-alpha.0-20250819-0a388db8b",
4
4
  "description": "Non-Matter support for Matter.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -33,10 +33,10 @@
33
33
  "embed-examples": "embedme **/README.md"
34
34
  },
35
35
  "dependencies": {
36
- "@noble/curves": "^1.9.5"
36
+ "@noble/curves": "^1.9.7"
37
37
  },
38
38
  "devDependencies": {
39
- "@matter/testing": "0.16.0-alpha.0-20250816-d22ad240d"
39
+ "@matter/testing": "0.16.0-alpha.0-20250819-0a388db8b"
40
40
  },
41
41
  "files": [
42
42
  "dist/**/*",
@@ -4,19 +4,28 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Duration } from "#time/Duration.js";
8
+ import { Seconds } from "#time/TimeUnit.js";
7
9
  import { InternalError, NotImplementedError, UnexpectedDataError } from "../MatterError.js";
8
10
  import { Bytes, Endian } from "../util/Bytes.js";
9
11
  import { DataReader } from "../util/DataReader.js";
10
12
  import { DataWriter } from "../util/DataWriter.js";
11
13
  import { ipv4BytesToString, ipv4ToBytes, ipv6BytesToString, ipv6ToBytes, isIPv4, isIPv6 } from "../util/Ip.js";
12
14
 
15
+ export const DEFAULT_MDNS_TTL = Seconds(120);
16
+
13
17
  /**
14
18
  * The maximum MDNS message size to usually fit into one UDP network MTU packet. Data are split into multiple messages
15
19
  * when needed.
16
20
  */
17
21
  export const MAX_MDNS_MESSAGE_SIZE = 1232; // 1280bytes (IPv6 packet size) - 8bytes (UDP header) - 40bytes (IPv6 IP header, IPv4 is only 20bytes)
18
22
 
19
- export const PtrRecord = (name: string, ptr: string, ttl = 120, flushCache = false): DnsRecord<string> => ({
23
+ export const PtrRecord = (
24
+ name: string,
25
+ ptr: string,
26
+ ttl = DEFAULT_MDNS_TTL,
27
+ flushCache = false,
28
+ ): DnsRecord<string> => ({
20
29
  name,
21
30
  value: ptr,
22
31
  ttl,
@@ -24,7 +33,7 @@ export const PtrRecord = (name: string, ptr: string, ttl = 120, flushCache = fal
24
33
  recordClass: DnsRecordClass.IN,
25
34
  flushCache,
26
35
  });
27
- export const ARecord = (name: string, ip: string, ttl = 120, flushCache = false): DnsRecord<string> => ({
36
+ export const ARecord = (name: string, ip: string, ttl = DEFAULT_MDNS_TTL, flushCache = false): DnsRecord<string> => ({
28
37
  name,
29
38
  value: ip,
30
39
  ttl,
@@ -32,7 +41,12 @@ export const ARecord = (name: string, ip: string, ttl = 120, flushCache = false)
32
41
  recordClass: DnsRecordClass.IN,
33
42
  flushCache,
34
43
  });
35
- export const AAAARecord = (name: string, ip: string, ttl = 120, flushCache = false): DnsRecord<string> => ({
44
+ export const AAAARecord = (
45
+ name: string,
46
+ ip: string,
47
+ ttl = DEFAULT_MDNS_TTL,
48
+ flushCache = false,
49
+ ): DnsRecord<string> => ({
36
50
  name,
37
51
  value: ip,
38
52
  ttl,
@@ -40,7 +54,12 @@ export const AAAARecord = (name: string, ip: string, ttl = 120, flushCache = fal
40
54
  recordClass: DnsRecordClass.IN,
41
55
  flushCache,
42
56
  });
43
- export const TxtRecord = (name: string, entries: string[], ttl = 120, flushCache = false): DnsRecord<string[]> => ({
57
+ export const TxtRecord = (
58
+ name: string,
59
+ entries: string[],
60
+ ttl = DEFAULT_MDNS_TTL,
61
+ flushCache = false,
62
+ ): DnsRecord<string[]> => ({
44
63
  name,
45
64
  value: entries,
46
65
  ttl,
@@ -51,7 +70,7 @@ export const TxtRecord = (name: string, entries: string[], ttl = 120, flushCache
51
70
  export const SrvRecord = (
52
71
  name: string,
53
72
  srv: SrvRecordValue,
54
- ttl = 120,
73
+ ttl = DEFAULT_MDNS_TTL,
55
74
  flushCache = false,
56
75
  ): DnsRecord<SrvRecordValue> => ({
57
76
  name,
@@ -81,7 +100,7 @@ export type DnsRecord<T = unknown> = {
81
100
  recordType: DnsRecordType;
82
101
  recordClass: DnsRecordClass;
83
102
  flushCache?: boolean;
84
- ttl: number;
103
+ ttl: Duration;
85
104
  value: T;
86
105
  };
87
106
 
@@ -168,7 +187,7 @@ export class DnsCodec {
168
187
  const classInt = reader.readUInt16();
169
188
  const flushCache = (classInt & 0x8000) !== 0;
170
189
  const recordClass = classInt & 0x7fff;
171
- const ttl = reader.readUInt32();
190
+ const ttl = Seconds(reader.readUInt32());
172
191
  const valueLength = reader.readUInt16();
173
192
  const valueBytes = reader.readByteArray(valueLength);
174
193
  const value = this.decodeRecordValue(valueBytes, recordType, message);
@@ -298,7 +317,7 @@ export class DnsCodec {
298
317
  writer.writeByteArray(this.encodeQName(name));
299
318
  writer.writeUInt16(recordType);
300
319
  writer.writeUInt16(recordClass | (flushCache ? 0x8000 : 0));
301
- writer.writeUInt32(ttl);
320
+ writer.writeUInt32(Seconds.of(ttl));
302
321
  const encodedValue = this.encodeRecordValue(value, recordType);
303
322
  writer.writeUInt16(encodedValue.byteLength);
304
323
  writer.writeByteArray(encodedValue);
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Instant } from "#time/TimeUnit.js";
7
8
  import { MaybePromise } from "#util/Promises.js";
8
9
  import { DiagnosticSource } from "../log/DiagnosticSource.js";
9
10
  import { Logger } from "../log/Logger.js";
@@ -227,7 +228,7 @@ export class Environment {
227
228
  * Display tasks that supply diagnostics.
228
229
  */
229
230
  diagnose() {
230
- Time.getTimer("Diagnostics", 0, () => {
231
+ Time.getTimer("Diagnostics", Instant, () => {
231
232
  try {
232
233
  logger.notice("Diagnostics follow", DiagnosticSource);
233
234
  } catch (e) {
@@ -4,6 +4,10 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Duration } from "#time/Duration.js";
8
+ import { Time } from "#time/Time.js";
9
+ import { Timestamp } from "#time/Timestamp.js";
10
+ import { Millis } from "#time/TimeUnit.js";
7
11
  import { Bytes } from "#util/Bytes.js";
8
12
  import type { Lifecycle } from "../util/Lifecycle.js";
9
13
  import { LogLevel } from "./LogLevel.js";
@@ -302,56 +306,24 @@ export namespace Diagnostic {
302
306
  }
303
307
 
304
308
  export interface Elapsed {
305
- readonly startedAt: number;
306
- readonly time: number;
309
+ readonly startedAt: Timestamp;
310
+ readonly time: Duration;
307
311
  toString(): string;
308
312
  }
309
313
 
310
- /**
311
- * Convert an interval to text.
312
- */
313
- export function interval(ms: number) {
314
- if (ms < 0) {
315
- return `${(ms * 1000).toPrecision(3)}μs`;
316
- } else if (ms < 1000) {
317
- return `${ms.toPrecision(3)}ms`;
318
- } else if (ms < 60000) {
319
- return `${(ms / 1000).toPrecision(3)}s`;
320
- }
321
-
322
- let days;
323
- if (ms > 86_400_000) {
324
- days = `${Math.floor(ms / 86_400_000)}d `;
325
- ms %= 86_400_000;
326
- } else {
327
- days = "";
328
- }
329
- const hours = Math.floor(ms / 3_600_000)
330
- .toString()
331
- .padStart(2, "0");
332
- ms %= 3_600_000;
333
- const minutes = Math.floor(ms / 60_000)
334
- .toString()
335
- .padStart(2, "0");
336
- ms %= 60_000;
337
- const seconds = Math.floor(ms).toString().padStart(2, "0");
338
-
339
- return `${days}${hours}:${minutes}:${seconds}`;
340
- }
341
-
342
314
  /**
343
315
  * Create a diagnostic that renders as elapsed time since creation.
344
316
  */
345
317
  export function elapsed(): Elapsed {
346
318
  return {
347
- startedAt: performance.now(),
319
+ startedAt: Time.nowUs,
348
320
 
349
321
  get time() {
350
- return performance.now() - this.startedAt;
322
+ return Millis(Time.nowUs - this.startedAt);
351
323
  },
352
324
 
353
325
  toString() {
354
- return interval(this.time);
326
+ return Duration.format(this.time);
355
327
  },
356
328
  };
357
329
  }
package/src/log/Logger.ts CHANGED
@@ -225,7 +225,7 @@ export class Logger {
225
225
  dest.context.run(() =>
226
226
  dest.add(
227
227
  Diagnostic.message({
228
- now: Time.now(),
228
+ now: Time.now,
229
229
  facility: this.#name,
230
230
  level,
231
231
  prefix: nestingPrefix(),
@@ -5,6 +5,8 @@
5
5
  */
6
6
 
7
7
  import { Crypto } from "#crypto/Crypto.js";
8
+ import { Duration } from "#time/Duration.js";
9
+ import { Instant, Millis, Seconds } from "#time/TimeUnit.js";
8
10
 
9
11
  /**
10
12
  * An iterable of retry values based on a scheduling configuration.
@@ -29,31 +31,31 @@ export class RetrySchedule {
29
31
  maximumInterval,
30
32
  maximumCount,
31
33
  jitterFactor = 0,
32
- initialInterval = 1000,
34
+ initialInterval = Seconds.one,
33
35
  backoffFactor = 2,
34
36
  } = this.config;
35
37
 
36
38
  let count = 0;
37
39
  let baseInterval = initialInterval;
38
- let timeSoFar = 0;
40
+ let timeSoFar = Instant;
39
41
 
40
42
  while ((timeout === undefined || timeSoFar < timeout) && (maximumCount === undefined || maximumCount > count)) {
41
43
  count++;
42
44
  const maxJitter = jitterFactor * baseInterval;
43
- const jitter = Math.floor((maxJitter * this.#crypto.randomUint32) / Math.pow(2, 32));
44
- let interval = baseInterval + jitter;
45
+ const jitter = Millis.floor(Millis((maxJitter * this.#crypto.randomUint32) / Math.pow(2, 32)));
46
+ let interval = Millis(baseInterval + jitter);
45
47
 
46
48
  if (timeout !== undefined && timeSoFar + interval > timeout) {
47
- interval = timeout - timeSoFar;
49
+ interval = Millis(timeout - timeSoFar);
48
50
  }
49
51
  if (maximumInterval !== undefined && interval > maximumInterval) {
50
52
  interval = maximumInterval;
51
53
  }
52
54
 
53
55
  yield interval;
54
- timeSoFar += interval;
56
+ timeSoFar = Millis(timeSoFar + interval);
55
57
 
56
- baseInterval *= backoffFactor;
58
+ baseInterval = Millis(baseInterval * backoffFactor);
57
59
  }
58
60
  }
59
61
  }
@@ -61,16 +63,14 @@ export class RetrySchedule {
61
63
  export namespace RetrySchedule {
62
64
  /**
63
65
  * Configuration parameters for retry schedule.
64
- *
65
- * All intervals are in milliseconds.
66
66
  */
67
67
  export interface Configuration {
68
68
  /**
69
- * Overall timeout in seconds.
69
+ * Overall timeout.
70
70
  *
71
71
  * Leave undefined to allow indefinite transmission.
72
72
  */
73
- readonly timeout?: number;
73
+ readonly timeout?: Duration;
74
74
 
75
75
  /**
76
76
  * Maximum number of occurrences (including first).
@@ -82,9 +82,9 @@ export namespace RetrySchedule {
82
82
  /**
83
83
  * Interval between first request and final interval.
84
84
  *
85
- * Defaults to 1000 ms.
85
+ * Defaults to 1s.
86
86
  */
87
- readonly initialInterval?: number;
87
+ readonly initialInterval?: Duration;
88
88
 
89
89
  /**
90
90
  * Multiplier for subsequent retries.
@@ -98,7 +98,7 @@ export namespace RetrySchedule {
98
98
  *
99
99
  * Leave undefined for interval to allow interval to grow continuously.
100
100
  */
101
- readonly maximumInterval?: number;
101
+ readonly maximumInterval?: Duration;
102
102
 
103
103
  /**
104
104
  * Multiplier for retry jitter.
@@ -4,6 +4,11 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Diagnostic } from "#log/Diagnostic.js";
8
+ import { Duration } from "#time/Duration.js";
9
+ import { Timestamp } from "#time/Timestamp.js";
10
+ import { Seconds } from "#time/TimeUnit.js";
11
+
7
12
  export type ServerAddressIp = {
8
13
  type: "udp";
9
14
  ip: string;
@@ -17,14 +22,48 @@ export type ServerAddressBle = {
17
22
 
18
23
  export interface Lifespan {
19
24
  /** Beginning of lifespan (system time in milliseconds) */
20
- discoveredAt: number;
25
+ discoveredAt: Timestamp;
21
26
 
22
- /** Length of lifespan, if known (milliseconds) */
23
- ttl: number;
27
+ /** Length of lifespan, if known (seconds) */
28
+ ttl: Duration;
24
29
  }
25
30
 
26
31
  export type ServerAddress = (ServerAddressIp | ServerAddressBle) & Partial<Lifespan>;
27
32
 
28
- export function serverAddressToString(address: ServerAddress): string {
29
- return address.type === "udp" ? `udp://[${address.ip}]:${address.port}` : `ble://${address.peripheralAddress}`;
33
+ export function ServerAddress(definition: ServerAddress.Definition) {
34
+ return {
35
+ discoveredAt: undefined,
36
+ ...definition,
37
+ ttl: Seconds(definition.ttl),
38
+ } as ServerAddress;
39
+ }
40
+
41
+ export namespace ServerAddress {
42
+ export function urlFor(address: ServerAddress): string {
43
+ return address.type === "udp" ? `udp://[${address.ip}]:${address.port}` : `ble://${address.peripheralAddress}`;
44
+ }
45
+
46
+ export function diagnosticFor(address: ServerAddress) {
47
+ const diagnostic = Array<unknown>();
48
+
49
+ if (address.type === "udp") {
50
+ diagnostic.push("udp://", Diagnostic.strong(address.ip), ":", address.port);
51
+ } else {
52
+ diagnostic.push("ble://", Diagnostic.strong(address.peripheralAddress));
53
+ }
54
+
55
+ if ("ttl" in address && typeof address.ttl === "number") {
56
+ diagnostic.push(" ttl ", Duration.format(address.ttl));
57
+ }
58
+
59
+ return Diagnostic.squash(...diagnostic);
60
+ }
61
+
62
+ export function definitionOf(address: ServerAddress): Definition {
63
+ return address;
64
+ }
65
+
66
+ export interface Definition extends Omit<ServerAddress, "ttl"> {
67
+ ttl?: Duration;
68
+ }
30
69
  }
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import { MatterAggregateError } from "#MatterError.js";
8
+ import { Minutes } from "#time/TimeUnit.js";
8
9
  import { Bytes } from "#util/Bytes.js";
9
10
  import { Logger } from "../log/Logger.js";
10
11
  import { Cache } from "../util/Cache.js";
@@ -72,7 +73,7 @@ export class UdpMulticastServer {
72
73
  private readonly broadcastChannels = new Cache<Promise<UdpChannel>>(
73
74
  "UDP broadcast channel",
74
75
  (netInterface, iPv4) => this.createBroadcastChannel(netInterface, iPv4),
75
- 5 * 60 * 1000 /* 5mn */,
76
+ Minutes(5),
76
77
  async (_netInterface, channel) => (await channel).close(),
77
78
  );
78
79
 
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import { Logger } from "#log/Logger.js";
8
+ import { Bytes } from "#util/Bytes.js";
8
9
 
9
10
  const logger = Logger.get("MockRouter");
10
11
 
@@ -39,7 +40,7 @@ export namespace MockRouter {
39
40
  sourcePort: number;
40
41
  destAddress: string;
41
42
  destPort: number;
42
- payload: BufferSource;
43
+ payload: Bytes;
43
44
  }
44
45
 
45
46
  export interface Route {
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import { ChannelType } from "#net/Channel.js";
8
+ import { Bytes } from "#util/Bytes.js";
8
9
  import { NetworkError } from "../Network.js";
9
10
  import { MAX_UDP_MESSAGE_SIZE, UdpChannel, UdpChannelOptions } from "../UdpChannel.js";
10
11
  import { MockNetwork } from "./MockNetwork.js";
@@ -62,7 +63,7 @@ export class MockUdpChannel implements UdpChannel {
62
63
  };
63
64
  }
64
65
 
65
- async send(host: string, port: number, payload: BufferSource) {
66
+ async send(host: string, port: number, payload: Bytes) {
66
67
  this.#host.simulator.router({
67
68
  kind: "udp",
68
69
  sourceAddress: this.#sendFrom,
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Bytes } from "#util/Bytes.js";
7
8
  import { MockNetwork } from "./MockNetwork.js";
8
9
  import { MockRouter } from "./MockRouter.js";
9
10
 
@@ -20,5 +21,5 @@ export class NetworkSimulator {
20
21
  }
21
22
 
22
23
  export namespace NetworkSimulator {
23
- export type Listener = (netInterface: string, peerAddress: string, peerPort: number, data: BufferSource) => void;
24
+ export type Listener = (netInterface: string, peerAddress: string, peerPort: number, data: Bytes) => void;
24
25
  }
@@ -3,6 +3,7 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Bytes } from "#util/Bytes.js";
6
7
  import { ImplementationError, MatterError } from "../MatterError.js";
7
8
  import { MaybePromise } from "../util/Promises.js";
8
9
  import { SupportedStorageTypes } from "./StringifyTools.js";
@@ -39,11 +40,7 @@ export abstract class Storage {
39
40
  }
40
41
 
41
42
  abstract openBlob(contexts: string[], key: string): MaybePromise<Blob>;
42
- abstract writeBlobFromStream(
43
- contexts: string[],
44
- key: string,
45
- stream: ReadableStream<BufferSource>,
46
- ): MaybePromise<void>;
43
+ abstract writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Bytes>): MaybePromise<void>;
47
44
  }
48
45
 
49
46
  /**
@@ -70,12 +70,12 @@ export class StorageBackendMemory extends Storage implements CloneableStorage {
70
70
  return new Blob([]);
71
71
  }
72
72
  if (!Bytes.isBytes(value)) {
73
- throw new StorageError("Value must be a BufferSource to read as blob stream.");
73
+ throw new StorageError("Value must be Bytes to read as blob stream.");
74
74
  }
75
75
  return new Blob([Bytes.exclusive(value)]);
76
76
  }
77
77
 
78
- async writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<BufferSource>): Promise<void> {
78
+ async writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Bytes>): Promise<void> {
79
79
  this.#assertInitialized();
80
80
  const reader = stream.getReader();
81
81
  const chunks: Uint8Array[] = [];
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import { MatterAggregateError } from "#MatterError.js";
8
+ import { Bytes } from "#util/Bytes.js";
8
9
  import { MaybePromise } from "../util/Promises.js";
9
10
  import { Storage, StorageError } from "./Storage.js";
10
11
  import { SupportedStorageTypes } from "./StringifyTools.js";
@@ -111,7 +112,7 @@ export class StorageContext implements StorageContextFactory {
111
112
  return this.storage.openBlob(this.thisContexts, key);
112
113
  }
113
114
 
114
- writeBlobFromStream(key: string, stream: ReadableStream<BufferSource>) {
115
+ writeBlobFromStream(key: string, stream: ReadableStream<Bytes>) {
115
116
  return this.storage.writeBlobFromStream(this.thisContexts, key, stream);
116
117
  }
117
118
  }