@matter/general 0.16.0-alpha.0-20250809-ee8375bcb → 0.16.0-alpha.0-20250810-5c91a95d2

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 (83) hide show
  1. package/dist/cjs/MatterError.d.ts +1 -1
  2. package/dist/cjs/MatterError.d.ts.map +1 -1
  3. package/dist/cjs/MatterError.js +1 -1
  4. package/dist/cjs/MatterError.js.map +1 -1
  5. package/dist/cjs/codec/DnsCodec.d.ts +4 -5
  6. package/dist/cjs/codec/DnsCodec.d.ts.map +1 -1
  7. package/dist/cjs/codec/DnsCodec.js +6 -9
  8. package/dist/cjs/codec/DnsCodec.js.map +1 -1
  9. package/dist/cjs/net/RetrySchedule.d.ts +77 -0
  10. package/dist/cjs/net/RetrySchedule.d.ts.map +1 -0
  11. package/dist/cjs/net/RetrySchedule.js +79 -0
  12. package/dist/cjs/net/RetrySchedule.js.map +6 -0
  13. package/dist/cjs/net/UdpMulticastServer.d.ts +3 -2
  14. package/dist/cjs/net/UdpMulticastServer.d.ts.map +1 -1
  15. package/dist/cjs/net/UdpMulticastServer.js +3 -0
  16. package/dist/cjs/net/UdpMulticastServer.js.map +1 -1
  17. package/dist/cjs/net/index.d.ts +1 -0
  18. package/dist/cjs/net/index.d.ts.map +1 -1
  19. package/dist/cjs/net/index.js +1 -0
  20. package/dist/cjs/net/index.js.map +1 -1
  21. package/dist/cjs/time/Time.js +1 -1
  22. package/dist/cjs/time/Time.js.map +1 -1
  23. package/dist/cjs/util/Cache.d.ts +1 -1
  24. package/dist/cjs/util/Cache.d.ts.map +1 -1
  25. package/dist/cjs/util/Cache.js +3 -3
  26. package/dist/cjs/util/Cache.js.map +1 -1
  27. package/dist/cjs/util/Cancelable.js +1 -1
  28. package/dist/cjs/util/Cancelable.js.map +1 -1
  29. package/dist/cjs/util/Multiplex.d.ts +12 -1
  30. package/dist/cjs/util/Multiplex.d.ts.map +1 -1
  31. package/dist/cjs/util/Multiplex.js +40 -0
  32. package/dist/cjs/util/Multiplex.js.map +1 -1
  33. package/dist/cjs/util/index.d.ts +1 -0
  34. package/dist/cjs/util/index.d.ts.map +1 -1
  35. package/dist/cjs/util/index.js +1 -0
  36. package/dist/cjs/util/index.js.map +1 -1
  37. package/dist/esm/MatterError.d.ts +1 -1
  38. package/dist/esm/MatterError.d.ts.map +1 -1
  39. package/dist/esm/MatterError.js +1 -1
  40. package/dist/esm/MatterError.js.map +1 -1
  41. package/dist/esm/codec/DnsCodec.d.ts +4 -5
  42. package/dist/esm/codec/DnsCodec.d.ts.map +1 -1
  43. package/dist/esm/codec/DnsCodec.js +6 -9
  44. package/dist/esm/codec/DnsCodec.js.map +1 -1
  45. package/dist/esm/net/RetrySchedule.d.ts +77 -0
  46. package/dist/esm/net/RetrySchedule.d.ts.map +1 -0
  47. package/dist/esm/net/RetrySchedule.js +59 -0
  48. package/dist/esm/net/RetrySchedule.js.map +6 -0
  49. package/dist/esm/net/UdpMulticastServer.d.ts +3 -2
  50. package/dist/esm/net/UdpMulticastServer.d.ts.map +1 -1
  51. package/dist/esm/net/UdpMulticastServer.js +3 -0
  52. package/dist/esm/net/UdpMulticastServer.js.map +1 -1
  53. package/dist/esm/net/index.d.ts +1 -0
  54. package/dist/esm/net/index.d.ts.map +1 -1
  55. package/dist/esm/net/index.js +1 -0
  56. package/dist/esm/net/index.js.map +1 -1
  57. package/dist/esm/time/Time.js +1 -1
  58. package/dist/esm/time/Time.js.map +1 -1
  59. package/dist/esm/util/Cache.d.ts +1 -1
  60. package/dist/esm/util/Cache.d.ts.map +1 -1
  61. package/dist/esm/util/Cache.js +3 -3
  62. package/dist/esm/util/Cache.js.map +1 -1
  63. package/dist/esm/util/Cancelable.js +1 -1
  64. package/dist/esm/util/Cancelable.js.map +1 -1
  65. package/dist/esm/util/Multiplex.d.ts +12 -1
  66. package/dist/esm/util/Multiplex.d.ts.map +1 -1
  67. package/dist/esm/util/Multiplex.js +36 -0
  68. package/dist/esm/util/Multiplex.js.map +1 -1
  69. package/dist/esm/util/index.d.ts +1 -0
  70. package/dist/esm/util/index.d.ts.map +1 -1
  71. package/dist/esm/util/index.js +1 -0
  72. package/dist/esm/util/index.js.map +1 -1
  73. package/package.json +2 -2
  74. package/src/MatterError.ts +1 -1
  75. package/src/codec/DnsCodec.ts +3 -20
  76. package/src/net/RetrySchedule.ts +120 -0
  77. package/src/net/UdpMulticastServer.ts +6 -2
  78. package/src/net/index.ts +1 -0
  79. package/src/time/Time.ts +1 -1
  80. package/src/util/Cache.ts +3 -3
  81. package/src/util/Cancelable.ts +1 -1
  82. package/src/util/Multiplex.ts +56 -1
  83. package/src/util/index.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/Cache.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,kBAAkB;AAC3B,SAAS,YAAmB;AAE5B,MAAM,aAAgB;AAAA,EAMlB,YACI,MACiB,cACA,gBACnB;AAFmB;AACA;AAEjB,SAAK,gBAAgB,KAAK;AAAA,MACtB,WAAW,QAAQ,GAAG,IAAI,qBAAqB,CAAC,WAAW,OAAO,IAAI,GAAG,kBAAkB,CAAC;AAAA,MAC5F;AAAA,MACA,MAAM,KAAK,OAAO;AAAA,IACtB,EAAE,MAAM;AACR,SAAK,cAAc,UAAU;AAAA,EACjC;AAAA,EAhBmB,YAAY,oBAAI,IAAY;AAAA,EAC5B,SAAS,oBAAI,IAAe;AAAA,EAC5B,aAAa,oBAAI,IAAoB;AAAA,EACvC;AAAA,EAejB,OAAO;AACH,WAAO,MAAM,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,EAC7C;AAAA,EAEA,MAAc,YAAY,KAAa;AACnC,UAAM,QAAQ,KAAK,OAAO,IAAI,GAAG;AACjC,QAAI,KAAK,mBAAmB,UAAa,UAAU,QAAW;AAC1D,YAAM,KAAK,eAAe,KAAK,KAAK;AAAA,IACxC;AACA,SAAK,OAAO,OAAO,GAAG;AACtB,SAAK,WAAW,OAAO,GAAG;AAAA,EAC9B;AAAA,EAEA,MAAM,QAAQ;AACV,eAAW,OAAO,KAAK,OAAO,KAAK,GAAG;AAClC,YAAM,KAAK,YAAY,GAAG;AAAA,IAC9B;AACA,SAAK,OAAO,MAAM;AAClB,SAAK,WAAW,MAAM;AAAA,EAC1B;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK,MAAM;AACjB,SAAK,UAAU,MAAM;AACrB,SAAK,cAAc,KAAK;AAAA,EAC5B;AAAA,EAEA,MAAc,SAAS;AACnB,UAAM,MAAM,KAAK,MAAM;AACvB,eAAW,CAAC,KAAK,SAAS,KAAK,KAAK,WAAW,QAAQ,GAAG;AACtD,UAAI,MAAM,YAAY,KAAK,aAAc;AACzC,YAAM,KAAK,YAAY,GAAG;AAAA,IAC9B;AAAA,EACJ;AACJ;AAEO,MAAM,cAAiB,aAAgB;AAAA,EAC1C,YACI,MACiB,WACjB,cACA,gBACF;AACE,UAAM,MAAM,cAAc,cAAc;AAJvB;AAAA,EAKrB;AAAA,EAEA,OAAO,QAAe;AAClB,UAAM,MAAM,OAAO,KAAK,GAAG;AAC3B,QAAI,QAAQ,KAAK,OAAO,IAAI,GAAG;AAC/B,QAAI,UAAU,QAAW;AACrB,cAAQ,KAAK,UAAU,GAAG,MAAM;AAChC,WAAK,OAAO,IAAI,KAAK,KAAK;AAC1B,WAAK,UAAU,IAAI,GAAG;AAAA,IAC1B;AACA,SAAK,WAAW,IAAI,KAAK,KAAK,MAAM,CAAC;AACrC,WAAO;AAAA,EACX;AACJ;AAEO,MAAM,mBAAsB,aAAgB;AAAA,EAC/C,YACI,MACiB,WACjB,cACA,gBACF;AACE,UAAM,MAAM,cAAc,cAAc;AAJvB;AAAA,EAKrB;AAAA,EAEA,MAAM,OAAO,QAAe;AACxB,UAAM,MAAM,OAAO,KAAK,GAAG;AAC3B,QAAI,QAAQ,KAAK,OAAO,IAAI,GAAG;AAC/B,QAAI,UAAU,QAAW;AACrB,cAAQ,MAAM,KAAK,UAAU,GAAG,MAAM;AACtC,WAAK,OAAO,IAAI,KAAK,KAAK;AAC1B,WAAK,UAAU,IAAI,GAAG;AAAA,IAC1B;AACA,SAAK,WAAW,IAAI,KAAK,KAAK,MAAM,CAAC;AACrC,WAAO;AAAA,EACX;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,kBAAkB;AAC3B,SAAS,YAAmB;AAE5B,MAAM,aAAgB;AAAA,EAMlB,YACI,MACiB,cACA,gBACnB;AAFmB;AACA;AAEjB,SAAK,gBAAgB,KAAK;AAAA,MACtB,WAAW,QAAQ,GAAG,IAAI,qBAAqB,CAAC,WAAW,OAAO,IAAI,GAAG,kBAAkB,CAAC;AAAA,MAC5F;AAAA,MACA,MAAM,KAAK,OAAO;AAAA,IACtB,EAAE,MAAM;AACR,SAAK,cAAc,UAAU;AAAA,EACjC;AAAA,EAhBmB,YAAY,oBAAI,IAAY;AAAA,EAC5B,SAAS,oBAAI,IAAe;AAAA,EAC5B,aAAa,oBAAI,IAAoB;AAAA,EACvC;AAAA,EAejB,OAAO;AACH,WAAO,MAAM,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,EAC7C;AAAA,EAEA,MAAM,OAAO,KAAa;AACtB,UAAM,QAAQ,KAAK,OAAO,IAAI,GAAG;AACjC,QAAI,KAAK,mBAAmB,UAAa,UAAU,QAAW;AAC1D,YAAM,KAAK,eAAe,KAAK,KAAK;AAAA,IACxC;AACA,SAAK,OAAO,OAAO,GAAG;AACtB,SAAK,WAAW,OAAO,GAAG;AAAA,EAC9B;AAAA,EAEA,MAAM,QAAQ;AACV,eAAW,OAAO,KAAK,OAAO,KAAK,GAAG;AAClC,YAAM,KAAK,OAAO,GAAG;AAAA,IACzB;AACA,SAAK,OAAO,MAAM;AAClB,SAAK,WAAW,MAAM;AAAA,EAC1B;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK,MAAM;AACjB,SAAK,UAAU,MAAM;AACrB,SAAK,cAAc,KAAK;AAAA,EAC5B;AAAA,EAEA,MAAc,SAAS;AACnB,UAAM,MAAM,KAAK,MAAM;AACvB,eAAW,CAAC,KAAK,SAAS,KAAK,KAAK,WAAW,QAAQ,GAAG;AACtD,UAAI,MAAM,YAAY,KAAK,aAAc;AACzC,YAAM,KAAK,OAAO,GAAG;AAAA,IACzB;AAAA,EACJ;AACJ;AAEO,MAAM,cAAiB,aAAgB;AAAA,EAC1C,YACI,MACiB,WACjB,cACA,gBACF;AACE,UAAM,MAAM,cAAc,cAAc;AAJvB;AAAA,EAKrB;AAAA,EAEA,OAAO,QAAe;AAClB,UAAM,MAAM,OAAO,KAAK,GAAG;AAC3B,QAAI,QAAQ,KAAK,OAAO,IAAI,GAAG;AAC/B,QAAI,UAAU,QAAW;AACrB,cAAQ,KAAK,UAAU,GAAG,MAAM;AAChC,WAAK,OAAO,IAAI,KAAK,KAAK;AAC1B,WAAK,UAAU,IAAI,GAAG;AAAA,IAC1B;AACA,SAAK,WAAW,IAAI,KAAK,KAAK,MAAM,CAAC;AACrC,WAAO;AAAA,EACX;AACJ;AAEO,MAAM,mBAAsB,aAAgB;AAAA,EAC/C,YACI,MACiB,WACjB,cACA,gBACF;AACE,UAAM,MAAM,cAAc,cAAc;AAJvB;AAAA,EAKrB;AAAA,EAEA,MAAM,OAAO,QAAe;AACxB,UAAM,MAAM,OAAO,KAAK,GAAG;AAC3B,QAAI,QAAQ,KAAK,OAAO,IAAI,GAAG;AAC/B,QAAI,UAAU,QAAW;AACrB,cAAQ,MAAM,KAAK,UAAU,GAAG,MAAM;AACtC,WAAK,OAAO,IAAI,KAAK,KAAK;AAC1B,WAAK,UAAU,IAAI,GAAG;AAAA,IAC1B;AACA,SAAK,WAAW,IAAI,KAAK,KAAK,MAAM,CAAC;AACrC,WAAO;AAAA,EACX;AACJ;",
5
5
  "names": []
6
6
  }
@@ -78,7 +78,7 @@ class CancelablePromise {
78
78
  return result;
79
79
  }
80
80
  catch(onrejected) {
81
- return this.then(onrejected);
81
+ return this.then(void 0, onrejected);
82
82
  }
83
83
  finally(onfinally) {
84
84
  const handler = (result) => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/Cancelable.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["cancelable"]
6
6
  }
@@ -3,12 +3,23 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { MaybePromise } from "./Promises.js";
6
7
  /**
7
8
  * A "multiplex" tracks an extensible set of promises.
8
9
  */
9
10
  export interface Multiplex {
10
- add(worker: Promise<unknown>): void;
11
+ add(worker: Promise<unknown>, description?: string): void;
11
12
  close(): Promise<void>;
12
13
  [Symbol.asyncDispose](): Promise<void>;
13
14
  }
15
+ /**
16
+ * A basic multiplex that tracks all promises given to it.
17
+ */
18
+ export declare class BasicMultiplex implements PromiseLike<void> {
19
+ #private;
20
+ add(worker: MaybePromise<unknown>, description?: string): void;
21
+ close(): Promise<void>;
22
+ then<TResult1 = void, TResult2 = never>(onfulfilled?: ((value: void) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): PromiseLike<TResult1 | TResult2>;
23
+ [Symbol.asyncDispose]: () => Promise<void>;
24
+ }
14
25
  //# sourceMappingURL=Multiplex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Multiplex.d.ts","sourceRoot":"","sources":["../../../src/util/Multiplex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C"}
1
+ {"version":3,"file":"Multiplex.d.ts","sourceRoot":"","sources":["../../../src/util/Multiplex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAOD;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW,CAAC,IAAI,CAAC;;IAGpD,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM;IAqBjD,KAAK;IAMX,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAClC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EACxE,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GACxE,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAInC,CAAC,MAAM,CAAC,YAAY,CAAC,sBAAyB;CACjD"}
@@ -3,4 +3,40 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { Logger } from "#log/Logger.js";
7
+ import { MatterAggregateError } from "#MatterError.js";
8
+ import { MaybePromise } from "./Promises.js";
9
+ import { BasicSet } from "./Set.js";
10
+ const logger = Logger.get("Multiplex");
11
+ class BasicMultiplex {
12
+ #workers = new BasicSet();
13
+ add(worker, description) {
14
+ if (!MaybePromise.is(worker)) {
15
+ return;
16
+ }
17
+ const entry = {
18
+ done: Promise.resolve(worker).catch((e) => {
19
+ let message = "Unhandled error";
20
+ if (description) {
21
+ message = `${message} in ${description}`;
22
+ }
23
+ logger.error(message, e);
24
+ }).finally(() => this.#workers.delete(entry)),
25
+ description
26
+ };
27
+ this.#workers.add(entry);
28
+ }
29
+ async close() {
30
+ while (this.#workers.size) {
31
+ await MatterAggregateError.allSettled([...this.#workers].map((entry) => entry.done));
32
+ }
33
+ }
34
+ then(onfulfilled, onrejected) {
35
+ return this.close().then(onfulfilled, onrejected);
36
+ }
37
+ [Symbol.asyncDispose] = this.close.bind(this);
38
+ }
39
+ export {
40
+ BasicMultiplex
41
+ };
6
42
  //# sourceMappingURL=Multiplex.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/Multiplex.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AAEzB,MAAM,SAAS,OAAO,IAAI,WAAW;AAmB9B,MAAM,eAA4C;AAAA,EACrD,WAAW,IAAI,SAAsB;AAAA,EAErC,IAAI,QAA+B,aAAsB;AACrD,QAAI,CAAC,aAAa,GAAG,MAAM,GAAG;AAC1B;AAAA,IACJ;AAEA,UAAM,QAAQ;AAAA,MACV,MAAM,QAAQ,QAAQ,MAAM,EACvB,MAAM,OAAK;AACR,YAAI,UAAU;AACd,YAAI,aAAa;AACb,oBAAU,GAAG,OAAO,OAAO,WAAW;AAAA,QAC1C;AACA,eAAO,MAAM,SAAS,CAAC;AAAA,MAC3B,CAAC,EACA,QAAQ,MAAM,KAAK,SAAS,OAAO,KAAK,CAAC;AAAA,MAC9C;AAAA,IACJ;AAEA,SAAK,SAAS,IAAI,KAAK;AAAA,EAC3B;AAAA,EAEA,MAAM,QAAQ;AACV,WAAO,KAAK,SAAS,MAAM;AACvB,YAAM,qBAAqB,WAAW,CAAC,GAAG,KAAK,QAAQ,EAAE,IAAI,WAAS,MAAM,IAAI,CAAC;AAAA,IACrF;AAAA,EACJ;AAAA,EAEA,KACI,aACA,YACgC;AAChC,WAAO,KAAK,MAAM,EAAE,KAAK,aAAa,UAAU;AAAA,EACpD;AAAA,EAEA,CAAC,OAAO,YAAY,IAAI,KAAK,MAAM,KAAK,IAAI;AAChD;",
5
5
  "names": []
6
6
  }
@@ -20,6 +20,7 @@ export * from "./GeneratedClass.js";
20
20
  export * from "./Ip.js";
21
21
  export * from "./Lifecycle.js";
22
22
  export * from "./Map.js";
23
+ export * from "./Multiplex.js";
23
24
  export * from "./Mutex.js";
24
25
  export * from "./NamedHandler.js";
25
26
  export * from "./Number.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -20,6 +20,7 @@ export * from "./GeneratedClass.js";
20
20
  export * from "./Ip.js";
21
21
  export * from "./Lifecycle.js";
22
22
  export * from "./Map.js";
23
+ export * from "./Multiplex.js";
23
24
  export * from "./Mutex.js";
24
25
  export * from "./NamedHandler.js";
25
26
  export * from "./Number.js";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/index.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
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-20250809-ee8375bcb",
3
+ "version": "0.16.0-alpha.0-20250810-5c91a95d2",
4
4
  "description": "Non-Matter support for Matter.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -36,7 +36,7 @@
36
36
  "@noble/curves": "^1.9.5"
37
37
  },
38
38
  "devDependencies": {
39
- "@matter/testing": "0.16.0-alpha.0-20250809-ee8375bcb"
39
+ "@matter/testing": "0.16.0-alpha.0-20250810-5c91a95d2"
40
40
  },
41
41
  "files": [
42
42
  "dist/**/*",
@@ -310,7 +310,7 @@ export class CanceledError extends MatterError {
310
310
  /**
311
311
  * Indicates an asynchronous operation was canceled due to timeout.
312
312
  */
313
- export class TimeoutError extends CanceledError {
313
+ export class TimeoutError extends MatterError {
314
314
  constructor(message = "Operation timed out", options?: ErrorOptions) {
315
315
  super(message, options);
316
316
  }
@@ -16,20 +16,13 @@ import { ipv4BytesToString, ipv4ToBytes, ipv6BytesToString, ipv6ToBytes, isIPv4,
16
16
  */
17
17
  export const MAX_MDNS_MESSAGE_SIZE = 1232; // 1280bytes (IPv6 packet size) - 8bytes (UDP header) - 40bytes (IPv6 IP header, IPv4 is only 20bytes)
18
18
 
19
- export const PtrRecord = (
20
- name: string,
21
- ptr: string,
22
- forInstance?: string,
23
- ttl = 120,
24
- flushCache = false,
25
- ): DnsRecord<string> => ({
19
+ export const PtrRecord = (name: string, ptr: string, ttl = 120, flushCache = false): DnsRecord<string> => ({
26
20
  name,
27
21
  value: ptr,
28
22
  ttl,
29
23
  recordType: DnsRecordType.PTR,
30
24
  recordClass: DnsRecordClass.IN,
31
25
  flushCache,
32
- forInstance,
33
26
  });
34
27
  export const ARecord = (name: string, ip: string, ttl = 120, flushCache = false): DnsRecord<string> => ({
35
28
  name,
@@ -47,25 +40,17 @@ export const AAAARecord = (name: string, ip: string, ttl = 120, flushCache = fal
47
40
  recordClass: DnsRecordClass.IN,
48
41
  flushCache,
49
42
  });
50
- export const TxtRecord = (
51
- name: string,
52
- entries: string[],
53
- forInstance?: string,
54
- ttl = 120,
55
- flushCache = false,
56
- ): DnsRecord<string[]> => ({
43
+ export const TxtRecord = (name: string, entries: string[], ttl = 120, flushCache = false): DnsRecord<string[]> => ({
57
44
  name,
58
45
  value: entries,
59
46
  ttl,
60
47
  recordType: DnsRecordType.TXT,
61
48
  recordClass: DnsRecordClass.IN,
62
49
  flushCache,
63
- forInstance,
64
50
  });
65
51
  export const SrvRecord = (
66
52
  name: string,
67
53
  srv: SrvRecordValue,
68
- forInstance?: string,
69
54
  ttl = 120,
70
55
  flushCache = false,
71
56
  ): DnsRecord<SrvRecordValue> => ({
@@ -75,7 +60,6 @@ export const SrvRecord = (
75
60
  recordType: DnsRecordType.SRV,
76
61
  recordClass: DnsRecordClass.IN,
77
62
  flushCache,
78
- forInstance,
79
63
  });
80
64
 
81
65
  export type SrvRecordValue = {
@@ -92,14 +76,13 @@ export type DnsQuery = {
92
76
  uniCastResponse?: boolean;
93
77
  };
94
78
 
95
- export type DnsRecord<T> = {
79
+ export type DnsRecord<T = unknown> = {
96
80
  name: string;
97
81
  recordType: DnsRecordType;
98
82
  recordClass: DnsRecordClass;
99
83
  flushCache?: boolean;
100
84
  ttl: number;
101
85
  value: T;
102
- forInstance?: string;
103
86
  };
104
87
 
105
88
  export type DnsMessage = {
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Crypto } from "#crypto/Crypto.js";
8
+
9
+ /**
10
+ * An iterable of retry values based on a scheduling configuration.
11
+ */
12
+ export class RetrySchedule {
13
+ #crypto: Crypto;
14
+ readonly config: RetrySchedule.Configuration;
15
+
16
+ constructor(crypto: Crypto, config: RetrySchedule.Configuration) {
17
+ this.#crypto = crypto;
18
+ this.config = config;
19
+ }
20
+
21
+ /**
22
+ * Yields intervals.
23
+ *
24
+ * Will yield indefinitely until canceled unless {@link config} specifies a timeout.
25
+ */
26
+ *[Symbol.iterator]() {
27
+ const {
28
+ timeout,
29
+ maximumInterval,
30
+ maximumCount,
31
+ jitterFactor = 0,
32
+ initialInterval = 1000,
33
+ backoffFactor = 2,
34
+ } = this.config;
35
+
36
+ let count = 0;
37
+ let baseInterval = initialInterval;
38
+ let timeSoFar = 0;
39
+
40
+ while ((timeout === undefined || timeSoFar < timeout) && (maximumCount === undefined || maximumCount > count)) {
41
+ count++;
42
+ const maxJitter = jitterFactor * baseInterval;
43
+ const jitter = Math.floor((2 * maxJitter * this.#crypto.randomUint32) / Math.pow(2, 32) - maxJitter);
44
+ let interval = baseInterval + jitter;
45
+
46
+ if (timeout !== undefined && timeSoFar + interval > timeout) {
47
+ interval = timeout - timeSoFar;
48
+ }
49
+ if (maximumInterval !== undefined && interval > maximumInterval) {
50
+ interval = maximumInterval;
51
+ }
52
+
53
+ yield interval;
54
+ timeSoFar += interval;
55
+
56
+ baseInterval *= backoffFactor;
57
+ }
58
+ }
59
+ }
60
+
61
+ export namespace RetrySchedule {
62
+ /**
63
+ * Configuration parameters for retry schedule.
64
+ *
65
+ * All intervals are in milliseconds.
66
+ */
67
+ export interface Configuration {
68
+ /**
69
+ * Overall timeout in seconds.
70
+ *
71
+ * Leave undefined to allow indefinite transmission.
72
+ */
73
+ readonly timeout?: number;
74
+
75
+ /**
76
+ * Maximum number of occurrences (including first).
77
+ *
78
+ * Set to zero to disable transmission completely; leave undefined to allow any number of transmissions.
79
+ */
80
+ readonly maximumCount?: number;
81
+
82
+ /**
83
+ * Interval between first request and final interval.
84
+ *
85
+ * Defaults to 1000 ms.
86
+ */
87
+ readonly initialInterval?: number;
88
+
89
+ /**
90
+ * Multiplier for subsequent retries.
91
+ *
92
+ * Defaults to 2.
93
+ */
94
+ readonly backoffFactor?: number;
95
+
96
+ /**
97
+ * Maximum interval between retries (excluding jitter).
98
+ *
99
+ * Leave undefined for interval to allow interval to grow continuously.
100
+ */
101
+ readonly maximumInterval?: number;
102
+
103
+ /**
104
+ * Multiplier for retry jitter.
105
+ *
106
+ * Leave undefined to disable jitter.
107
+ */
108
+ readonly jitterFactor?: number;
109
+ }
110
+
111
+ /**
112
+ * Create a full configuration with defaults.
113
+ */
114
+ export function Configuration(defaults: Configuration, config?: Configuration) {
115
+ return {
116
+ ...defaults,
117
+ ...config,
118
+ };
119
+ }
120
+ }
@@ -76,15 +76,19 @@ export class UdpMulticastServer {
76
76
  );
77
77
 
78
78
  private constructor(
79
- private readonly network: Network,
79
+ readonly network: Network,
80
80
  private readonly broadcastAddressIpv4: string | undefined,
81
81
  private readonly broadcastAddressIpv6: string,
82
82
  private readonly broadcastPort: number,
83
83
  private readonly serverIpv4: UdpChannel | undefined,
84
84
  private readonly serverIpv6: UdpChannel,
85
- private readonly netInterface: string | undefined,
85
+ readonly netInterface: string | undefined,
86
86
  ) {}
87
87
 
88
+ get supportsIpv4() {
89
+ return this.serverIpv4 !== undefined;
90
+ }
91
+
88
92
  onMessage(listener: (message: Uint8Array, peerAddress: string, netInterface: string) => void) {
89
93
  this.serverIpv4?.onData((netInterface, peerAddress, _port, message) => {
90
94
  if (netInterface === undefined) {
package/src/net/index.ts CHANGED
@@ -8,6 +8,7 @@ export * from "./Channel.js";
8
8
  export * from "./mock/index.js";
9
9
  export * from "./NetInterface.js";
10
10
  export * from "./Network.js";
11
+ export * from "./RetrySchedule.js";
11
12
  export * from "./ServerAddress.js";
12
13
  export * from "./TransportInterface.js";
13
14
  export * from "./UdpChannel.js";
package/src/time/Time.ts CHANGED
@@ -32,7 +32,7 @@ export class Time {
32
32
  static readonly now = (): Date => Time.get().now();
33
33
 
34
34
  nowMs() {
35
- return this.now().getTime();
35
+ return Date.now();
36
36
  }
37
37
  static readonly nowMs = (): number => Time.get().nowMs();
38
38
 
package/src/util/Cache.ts CHANGED
@@ -32,7 +32,7 @@ class GenericCache<T> {
32
32
  return Array.from(this.knownKeys.values());
33
33
  }
34
34
 
35
- private async deleteEntry(key: string) {
35
+ async delete(key: string) {
36
36
  const value = this.values.get(key);
37
37
  if (this.expireCallback !== undefined && value !== undefined) {
38
38
  await this.expireCallback(key, value);
@@ -43,7 +43,7 @@ class GenericCache<T> {
43
43
 
44
44
  async clear() {
45
45
  for (const key of this.values.keys()) {
46
- await this.deleteEntry(key);
46
+ await this.delete(key);
47
47
  }
48
48
  this.values.clear();
49
49
  this.timestamps.clear();
@@ -59,7 +59,7 @@ class GenericCache<T> {
59
59
  const now = Time.nowMs();
60
60
  for (const [key, timestamp] of this.timestamps.entries()) {
61
61
  if (now - timestamp < this.expirationMs) continue;
62
- await this.deleteEntry(key);
62
+ await this.delete(key);
63
63
  }
64
64
  }
65
65
  }
@@ -116,7 +116,7 @@ export class CancelablePromise<T = void> implements Promise<T>, Cancelable {
116
116
  catch<TResult = never>(
117
117
  onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,
118
118
  ): CancelablePromise<T | TResult> {
119
- return this.then(onrejected);
119
+ return this.then(undefined, onrejected);
120
120
  }
121
121
 
122
122
  finally(onfinally?: (() => void) | null): CancelablePromise<T> {
@@ -4,11 +4,66 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { Logger } from "#log/Logger.js";
8
+ import { MatterAggregateError } from "#MatterError.js";
9
+ import { MaybePromise } from "./Promises.js";
10
+ import { BasicSet } from "./Set.js";
11
+
12
+ const logger = Logger.get("Multiplex");
13
+
7
14
  /**
8
15
  * A "multiplex" tracks an extensible set of promises.
9
16
  */
10
17
  export interface Multiplex {
11
- add(worker: Promise<unknown>): void;
18
+ add(worker: Promise<unknown>, description?: string): void;
12
19
  close(): Promise<void>;
13
20
  [Symbol.asyncDispose](): Promise<void>;
14
21
  }
22
+
23
+ interface WorkerEntry {
24
+ done: Promise<unknown>;
25
+ description?: string;
26
+ }
27
+
28
+ /**
29
+ * A basic multiplex that tracks all promises given to it.
30
+ */
31
+ export class BasicMultiplex implements PromiseLike<void> {
32
+ #workers = new BasicSet<WorkerEntry>();
33
+
34
+ add(worker: MaybePromise<unknown>, description?: string) {
35
+ if (!MaybePromise.is(worker)) {
36
+ return;
37
+ }
38
+
39
+ const entry = {
40
+ done: Promise.resolve(worker)
41
+ .catch(e => {
42
+ let message = "Unhandled error";
43
+ if (description) {
44
+ message = `${message} in ${description}`;
45
+ }
46
+ logger.error(message, e);
47
+ })
48
+ .finally(() => this.#workers.delete(entry)),
49
+ description,
50
+ };
51
+
52
+ this.#workers.add(entry);
53
+ }
54
+
55
+ async close() {
56
+ while (this.#workers.size) {
57
+ await MatterAggregateError.allSettled([...this.#workers].map(entry => entry.done));
58
+ }
59
+ }
60
+
61
+ then<TResult1 = void, TResult2 = never>(
62
+ onfulfilled?: ((value: void) => TResult1 | PromiseLike<TResult1>) | null,
63
+ onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,
64
+ ): PromiseLike<TResult1 | TResult2> {
65
+ return this.close().then(onfulfilled, onrejected);
66
+ }
67
+
68
+ [Symbol.asyncDispose] = this.close.bind(this);
69
+ }
package/src/util/index.ts CHANGED
@@ -21,6 +21,7 @@ export * from "./GeneratedClass.js";
21
21
  export * from "./Ip.js";
22
22
  export * from "./Lifecycle.js";
23
23
  export * from "./Map.js";
24
+ export * from "./Multiplex.js";
24
25
  export * from "./Mutex.js";
25
26
  export * from "./NamedHandler.js";
26
27
  export * from "./Number.js";