@matter/general 0.16.8-alpha.0-20260123-dff2cae52 → 0.16.8-alpha.0-20260127-65e1b40e2

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 (94) hide show
  1. package/dist/cjs/net/ServerAddress.d.ts.map +1 -1
  2. package/dist/cjs/net/ServerAddress.js +2 -1
  3. package/dist/cjs/net/ServerAddress.js.map +1 -1
  4. package/dist/cjs/net/dns-sd/DnssdName.d.ts +56 -0
  5. package/dist/cjs/net/dns-sd/DnssdName.d.ts.map +1 -0
  6. package/dist/cjs/net/dns-sd/DnssdName.js +193 -0
  7. package/dist/cjs/net/dns-sd/DnssdName.js.map +6 -0
  8. package/dist/cjs/net/dns-sd/DnssdNames.d.ts +77 -0
  9. package/dist/cjs/net/dns-sd/DnssdNames.d.ts.map +1 -0
  10. package/dist/cjs/net/dns-sd/DnssdNames.js +238 -0
  11. package/dist/cjs/net/dns-sd/DnssdNames.js.map +6 -0
  12. package/dist/cjs/net/dns-sd/DnssdSolicitor.d.ts +80 -0
  13. package/dist/cjs/net/dns-sd/DnssdSolicitor.d.ts.map +1 -0
  14. package/dist/cjs/net/dns-sd/DnssdSolicitor.js +212 -0
  15. package/dist/cjs/net/dns-sd/DnssdSolicitor.js.map +6 -0
  16. package/dist/cjs/net/dns-sd/IpService.d.ts +73 -0
  17. package/dist/cjs/net/dns-sd/IpService.d.ts.map +1 -0
  18. package/dist/cjs/net/dns-sd/IpService.js +329 -0
  19. package/dist/cjs/net/dns-sd/IpService.js.map +6 -0
  20. package/dist/cjs/net/dns-sd/IpServiceResolution.d.ts +16 -0
  21. package/dist/cjs/net/dns-sd/IpServiceResolution.d.ts.map +1 -0
  22. package/dist/cjs/net/dns-sd/IpServiceResolution.js +162 -0
  23. package/dist/cjs/net/dns-sd/IpServiceResolution.js.map +6 -0
  24. package/dist/cjs/net/dns-sd/IpServiceStatus.d.ts +58 -0
  25. package/dist/cjs/net/dns-sd/IpServiceStatus.d.ts.map +1 -0
  26. package/dist/cjs/net/dns-sd/IpServiceStatus.js +191 -0
  27. package/dist/cjs/net/dns-sd/IpServiceStatus.js.map +6 -0
  28. package/dist/cjs/net/dns-sd/index.d.ts +6 -0
  29. package/dist/cjs/net/dns-sd/index.d.ts.map +1 -1
  30. package/dist/cjs/net/dns-sd/index.js +6 -0
  31. package/dist/cjs/net/dns-sd/index.js.map +1 -1
  32. package/dist/cjs/net/udp/UdpInterface.js +1 -1
  33. package/dist/cjs/net/udp/UdpInterface.js.map +1 -1
  34. package/dist/cjs/util/AsyncIterator.d.ts +21 -0
  35. package/dist/cjs/util/AsyncIterator.d.ts.map +1 -0
  36. package/dist/cjs/util/AsyncIterator.js +71 -0
  37. package/dist/cjs/util/AsyncIterator.js.map +6 -0
  38. package/dist/cjs/util/index.d.ts +1 -0
  39. package/dist/cjs/util/index.d.ts.map +1 -1
  40. package/dist/cjs/util/index.js +1 -0
  41. package/dist/cjs/util/index.js.map +1 -1
  42. package/dist/esm/net/ServerAddress.d.ts.map +1 -1
  43. package/dist/esm/net/ServerAddress.js +2 -1
  44. package/dist/esm/net/ServerAddress.js.map +1 -1
  45. package/dist/esm/net/dns-sd/DnssdName.d.ts +56 -0
  46. package/dist/esm/net/dns-sd/DnssdName.d.ts.map +1 -0
  47. package/dist/esm/net/dns-sd/DnssdName.js +173 -0
  48. package/dist/esm/net/dns-sd/DnssdName.js.map +6 -0
  49. package/dist/esm/net/dns-sd/DnssdNames.d.ts +77 -0
  50. package/dist/esm/net/dns-sd/DnssdNames.d.ts.map +1 -0
  51. package/dist/esm/net/dns-sd/DnssdNames.js +218 -0
  52. package/dist/esm/net/dns-sd/DnssdNames.js.map +6 -0
  53. package/dist/esm/net/dns-sd/DnssdSolicitor.d.ts +80 -0
  54. package/dist/esm/net/dns-sd/DnssdSolicitor.d.ts.map +1 -0
  55. package/dist/esm/net/dns-sd/DnssdSolicitor.js +192 -0
  56. package/dist/esm/net/dns-sd/DnssdSolicitor.js.map +6 -0
  57. package/dist/esm/net/dns-sd/IpService.d.ts +73 -0
  58. package/dist/esm/net/dns-sd/IpService.d.ts.map +1 -0
  59. package/dist/esm/net/dns-sd/IpService.js +309 -0
  60. package/dist/esm/net/dns-sd/IpService.js.map +6 -0
  61. package/dist/esm/net/dns-sd/IpServiceResolution.d.ts +16 -0
  62. package/dist/esm/net/dns-sd/IpServiceResolution.d.ts.map +1 -0
  63. package/dist/esm/net/dns-sd/IpServiceResolution.js +142 -0
  64. package/dist/esm/net/dns-sd/IpServiceResolution.js.map +6 -0
  65. package/dist/esm/net/dns-sd/IpServiceStatus.d.ts +58 -0
  66. package/dist/esm/net/dns-sd/IpServiceStatus.d.ts.map +1 -0
  67. package/dist/esm/net/dns-sd/IpServiceStatus.js +171 -0
  68. package/dist/esm/net/dns-sd/IpServiceStatus.js.map +6 -0
  69. package/dist/esm/net/dns-sd/index.d.ts +6 -0
  70. package/dist/esm/net/dns-sd/index.d.ts.map +1 -1
  71. package/dist/esm/net/dns-sd/index.js +6 -0
  72. package/dist/esm/net/dns-sd/index.js.map +1 -1
  73. package/dist/esm/net/udp/UdpInterface.js +1 -1
  74. package/dist/esm/net/udp/UdpInterface.js.map +1 -1
  75. package/dist/esm/util/AsyncIterator.d.ts +21 -0
  76. package/dist/esm/util/AsyncIterator.d.ts.map +1 -0
  77. package/dist/esm/util/AsyncIterator.js +51 -0
  78. package/dist/esm/util/AsyncIterator.js.map +6 -0
  79. package/dist/esm/util/index.d.ts +1 -0
  80. package/dist/esm/util/index.d.ts.map +1 -1
  81. package/dist/esm/util/index.js +1 -0
  82. package/dist/esm/util/index.js.map +1 -1
  83. package/package.json +2 -2
  84. package/src/net/ServerAddress.ts +2 -1
  85. package/src/net/dns-sd/DnssdName.ts +252 -0
  86. package/src/net/dns-sd/DnssdNames.ts +208 -0
  87. package/src/net/dns-sd/DnssdSolicitor.ts +231 -0
  88. package/src/net/dns-sd/IpService.ts +346 -0
  89. package/src/net/dns-sd/IpServiceResolution.ts +134 -0
  90. package/src/net/dns-sd/IpServiceStatus.ts +212 -0
  91. package/src/net/dns-sd/index.ts +6 -0
  92. package/src/net/udp/UdpInterface.ts +1 -1
  93. package/src/util/AsyncIterator.ts +70 -0
  94. package/src/util/index.ts +1 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2026 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * Utilities for working with async iterators.
9
+ */
10
+ export namespace AsyncIterator {
11
+ /**
12
+ * Merge multiple async iterators, yielding results as they become available from any iterator.
13
+ *
14
+ * Results are yielded in the order they resolve, not the order of iterators.
15
+ * Errors from individual iterators are collected and thrown as an aggregate error after all iterators complete.
16
+ *
17
+ * @param iterators The async iterables to merge
18
+ * @param errorMessage Optional message for the aggregate error if any iterators fail
19
+ */
20
+ export async function* merge<T>(
21
+ iterators: AsyncIterable<T>[],
22
+ errorMessage = "One or more async iterators failed",
23
+ ): AsyncGenerator<T> {
24
+ const asyncIterators = iterators.map(iter => iter[Symbol.asyncIterator]());
25
+ const pending = new Map<number, Promise<{ index: number; result: IteratorResult<T> }>>();
26
+ const errors: Error[] = [];
27
+
28
+ // Initialize with first .next() call for each iterator
29
+ for (let i = 0; i < asyncIterators.length; i++) {
30
+ pending.set(
31
+ i,
32
+ asyncIterators[i].next().then(
33
+ result => ({ index: i, result }),
34
+ error => {
35
+ // On error, mark as done and collect error
36
+ errors.push(error);
37
+ return { index: i, result: { done: true, value: undefined } as IteratorResult<T> };
38
+ },
39
+ ),
40
+ );
41
+ }
42
+
43
+ while (pending.size > 0) {
44
+ // Race all pending promises
45
+ const { index, result } = await Promise.race(pending.values());
46
+
47
+ if (result.done) {
48
+ pending.delete(index);
49
+ } else {
50
+ yield result.value;
51
+ // Queue next value from this iterator
52
+ pending.set(
53
+ index,
54
+ asyncIterators[index].next().then(
55
+ result => ({ index, result }),
56
+ error => {
57
+ errors.push(error);
58
+ return { index, result: { done: true, value: undefined } as IteratorResult<T> };
59
+ },
60
+ ),
61
+ );
62
+ }
63
+ }
64
+
65
+ // After all iterators complete, throw aggregate error if any occurred
66
+ if (errors.length > 0) {
67
+ throw new AggregateError(errors, errorMessage);
68
+ }
69
+ }
70
+ }
package/src/util/index.ts CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  export * from "./Abort.js";
8
8
  export * from "./Array.js";
9
+ export * from "./AsyncIterator.js";
9
10
  export * from "./Boot.js";
10
11
  export * from "./Bytes.js";
11
12
  export * from "./Cache.js";