@matter/general 0.16.8-alpha.0-20260123-dff2cae52 → 0.16.8-alpha.0-20260125-38e62bc3e

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.
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2026 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Utilities for working with async iterators.
8
+ */
9
+ export declare namespace AsyncIterator {
10
+ /**
11
+ * Merge multiple async iterators, yielding results as they become available from any iterator.
12
+ *
13
+ * Results are yielded in the order they resolve, not the order of iterators.
14
+ * Errors from individual iterators are collected and thrown as an aggregate error after all iterators complete.
15
+ *
16
+ * @param iterators The async iterables to merge
17
+ * @param errorMessage Optional message for the aggregate error if any iterators fail
18
+ */
19
+ function merge<T>(iterators: AsyncIterable<T>[], errorMessage?: string): AsyncGenerator<T>;
20
+ }
21
+ //# sourceMappingURL=AsyncIterator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncIterator.d.ts","sourceRoot":"","sources":["../../../src/util/AsyncIterator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,yBAAiB,aAAa,CAAC;IAC3B;;;;;;;;OAQG;IACH,SAAuB,KAAK,CAAC,CAAC,EAC1B,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAC7B,YAAY,SAAuC,GACpD,cAAc,CAAC,CAAC,CAAC,CA8CnB;CACJ"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var AsyncIterator_exports = {};
20
+ __export(AsyncIterator_exports, {
21
+ AsyncIterator: () => AsyncIterator
22
+ });
23
+ module.exports = __toCommonJS(AsyncIterator_exports);
24
+ /**
25
+ * @license
26
+ * Copyright 2022-2026 Matter.js Authors
27
+ * SPDX-License-Identifier: Apache-2.0
28
+ */
29
+ var AsyncIterator;
30
+ ((AsyncIterator2) => {
31
+ async function* merge(iterators, errorMessage = "One or more async iterators failed") {
32
+ const asyncIterators = iterators.map((iter) => iter[Symbol.asyncIterator]());
33
+ const pending = /* @__PURE__ */ new Map();
34
+ const errors = [];
35
+ for (let i = 0; i < asyncIterators.length; i++) {
36
+ pending.set(
37
+ i,
38
+ asyncIterators[i].next().then(
39
+ (result) => ({ index: i, result }),
40
+ (error) => {
41
+ errors.push(error);
42
+ return { index: i, result: { done: true, value: void 0 } };
43
+ }
44
+ )
45
+ );
46
+ }
47
+ while (pending.size > 0) {
48
+ const { index, result } = await Promise.race(pending.values());
49
+ if (result.done) {
50
+ pending.delete(index);
51
+ } else {
52
+ yield result.value;
53
+ pending.set(
54
+ index,
55
+ asyncIterators[index].next().then(
56
+ (result2) => ({ index, result: result2 }),
57
+ (error) => {
58
+ errors.push(error);
59
+ return { index, result: { done: true, value: void 0 } };
60
+ }
61
+ )
62
+ );
63
+ }
64
+ }
65
+ if (errors.length > 0) {
66
+ throw new AggregateError(errors, errorMessage);
67
+ }
68
+ }
69
+ AsyncIterator2.merge = merge;
70
+ })(AsyncIterator || (AsyncIterator = {}));
71
+ //# sourceMappingURL=AsyncIterator.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util/AsyncIterator.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASO,IAAU;AAAA,CAAV,CAAUA,mBAAV;AAUH,kBAAuB,MACnB,WACA,eAAe,sCACE;AACjB,UAAM,iBAAiB,UAAU,IAAI,UAAQ,KAAK,OAAO,aAAa,EAAE,CAAC;AACzE,UAAM,UAAU,oBAAI,IAAmE;AACvF,UAAM,SAAkB,CAAC;AAGzB,aAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC5C,cAAQ;AAAA,QACJ;AAAA,QACA,eAAe,CAAC,EAAE,KAAK,EAAE;AAAA,UACrB,aAAW,EAAE,OAAO,GAAG,OAAO;AAAA,UAC9B,WAAS;AAEL,mBAAO,KAAK,KAAK;AACjB,mBAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,MAAM,MAAM,OAAO,OAAU,EAAuB;AAAA,UACrF;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO,QAAQ,OAAO,GAAG;AAErB,YAAM,EAAE,OAAO,OAAO,IAAI,MAAM,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAE7D,UAAI,OAAO,MAAM;AACb,gBAAQ,OAAO,KAAK;AAAA,MACxB,OAAO;AACH,cAAM,OAAO;AAEb,gBAAQ;AAAA,UACJ;AAAA,UACA,eAAe,KAAK,EAAE,KAAK,EAAE;AAAA,YACzB,CAAAC,aAAW,EAAE,OAAO,QAAAA,QAAO;AAAA,YAC3B,WAAS;AACL,qBAAO,KAAK,KAAK;AACjB,qBAAO,EAAE,OAAO,QAAQ,EAAE,MAAM,MAAM,OAAO,OAAU,EAAuB;AAAA,YAClF;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAGA,QAAI,OAAO,SAAS,GAAG;AACnB,YAAM,IAAI,eAAe,QAAQ,YAAY;AAAA,IACjD;AAAA,EACJ;AAjDA,EAAAD,eAAuB;AAAA,GAVV;",
5
+ "names": ["AsyncIterator", "result"]
6
+ }
@@ -5,6 +5,7 @@
5
5
  */
6
6
  export * from "./Abort.js";
7
7
  export * from "./Array.js";
8
+ export * from "./AsyncIterator.js";
8
9
  export * from "./Boot.js";
9
10
  export * from "./Bytes.js";
10
11
  export * from "./Cache.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,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,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,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,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,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,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -17,6 +17,7 @@ var util_exports = {};
17
17
  module.exports = __toCommonJS(util_exports);
18
18
  __reExport(util_exports, require("./Abort.js"), module.exports);
19
19
  __reExport(util_exports, require("./Array.js"), module.exports);
20
+ __reExport(util_exports, require("./AsyncIterator.js"), module.exports);
20
21
  __reExport(util_exports, require("./Boot.js"), module.exports);
21
22
  __reExport(util_exports, require("./Bytes.js"), module.exports);
22
23
  __reExport(util_exports, require("./Cache.js"), module.exports);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,yBAAc,uBANd;AAOA,yBAAc,uBAPd;AAQA,yBAAc,sBARd;AASA,yBAAc,uBATd;AAUA,yBAAc,uBAVd;AAWA,yBAAc,4BAXd;AAYA,yBAAc,8BAZd;AAaA,yBAAc,4BAbd;AAcA,yBAAc,+BAdd;AAeA,yBAAc,4BAfd;AAgBA,yBAAc,2BAhBd;AAiBA,yBAAc,0BAjBd;AAkBA,yBAAc,2BAlBd;AAmBA,yBAAc,yBAnBd;AAoBA,yBAAc,uBApBd;AAqBA,yBAAc,+BArBd;AAsBA,yBAAc,0BAtBd;AAuBA,yBAAc,gCAvBd;AAwBA,yBAAc,wBAxBd;AAyBA,yBAAc,sBAzBd;AA0BA,yBAAc,iCA1Bd;AA2BA,yBAAc,oBA3Bd;AA4BA,yBAAc,2BA5Bd;AA6BA,yBAAc,0BA7Bd;AA8BA,yBAAc,qBA9Bd;AA+BA,yBAAc,2BA/Bd;AAgCA,yBAAc,2BAhCd;AAiCA,yBAAc,uBAjCd;AAkCA,yBAAc,8BAlCd;AAmCA,yBAAc,wBAnCd;AAoCA,yBAAc,4BApCd;AAqCA,yBAAc,0BArCd;AAsCA,yBAAc,2BAtCd;AAuCA,yBAAc,2BAvCd;AAwCA,yBAAc,2BAxCd;AAyCA,yBAAc,qBAzCd;AA0CA,yBAAc,2BA1Cd;AA2CA,yBAAc,yBA3Cd;AA4CA,yBAAc,wBA5Cd;AA6CA,yBAAc,sBA7Cd;AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,yBAAc,uBANd;AAOA,yBAAc,uBAPd;AAQA,yBAAc,+BARd;AASA,yBAAc,sBATd;AAUA,yBAAc,uBAVd;AAWA,yBAAc,uBAXd;AAYA,yBAAc,4BAZd;AAaA,yBAAc,8BAbd;AAcA,yBAAc,4BAdd;AAeA,yBAAc,+BAfd;AAgBA,yBAAc,4BAhBd;AAiBA,yBAAc,2BAjBd;AAkBA,yBAAc,0BAlBd;AAmBA,yBAAc,2BAnBd;AAoBA,yBAAc,yBApBd;AAqBA,yBAAc,uBArBd;AAsBA,yBAAc,+BAtBd;AAuBA,yBAAc,0BAvBd;AAwBA,yBAAc,gCAxBd;AAyBA,yBAAc,wBAzBd;AA0BA,yBAAc,sBA1Bd;AA2BA,yBAAc,iCA3Bd;AA4BA,yBAAc,oBA5Bd;AA6BA,yBAAc,2BA7Bd;AA8BA,yBAAc,0BA9Bd;AA+BA,yBAAc,qBA/Bd;AAgCA,yBAAc,2BAhCd;AAiCA,yBAAc,2BAjCd;AAkCA,yBAAc,uBAlCd;AAmCA,yBAAc,8BAnCd;AAoCA,yBAAc,wBApCd;AAqCA,yBAAc,4BArCd;AAsCA,yBAAc,0BAtCd;AAuCA,yBAAc,2BAvCd;AAwCA,yBAAc,2BAxCd;AAyCA,yBAAc,2BAzCd;AA0CA,yBAAc,qBA1Cd;AA2CA,yBAAc,2BA3Cd;AA4CA,yBAAc,yBA5Cd;AA6CA,yBAAc,wBA7Cd;AA8CA,yBAAc,sBA9Cd;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2026 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Utilities for working with async iterators.
8
+ */
9
+ export declare namespace AsyncIterator {
10
+ /**
11
+ * Merge multiple async iterators, yielding results as they become available from any iterator.
12
+ *
13
+ * Results are yielded in the order they resolve, not the order of iterators.
14
+ * Errors from individual iterators are collected and thrown as an aggregate error after all iterators complete.
15
+ *
16
+ * @param iterators The async iterables to merge
17
+ * @param errorMessage Optional message for the aggregate error if any iterators fail
18
+ */
19
+ function merge<T>(iterators: AsyncIterable<T>[], errorMessage?: string): AsyncGenerator<T>;
20
+ }
21
+ //# sourceMappingURL=AsyncIterator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncIterator.d.ts","sourceRoot":"","sources":["../../../src/util/AsyncIterator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,yBAAiB,aAAa,CAAC;IAC3B;;;;;;;;OAQG;IACH,SAAuB,KAAK,CAAC,CAAC,EAC1B,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAC7B,YAAY,SAAuC,GACpD,cAAc,CAAC,CAAC,CAAC,CA8CnB;CACJ"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2026 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ var AsyncIterator;
7
+ ((AsyncIterator2) => {
8
+ async function* merge(iterators, errorMessage = "One or more async iterators failed") {
9
+ const asyncIterators = iterators.map((iter) => iter[Symbol.asyncIterator]());
10
+ const pending = /* @__PURE__ */ new Map();
11
+ const errors = [];
12
+ for (let i = 0; i < asyncIterators.length; i++) {
13
+ pending.set(
14
+ i,
15
+ asyncIterators[i].next().then(
16
+ (result) => ({ index: i, result }),
17
+ (error) => {
18
+ errors.push(error);
19
+ return { index: i, result: { done: true, value: void 0 } };
20
+ }
21
+ )
22
+ );
23
+ }
24
+ while (pending.size > 0) {
25
+ const { index, result } = await Promise.race(pending.values());
26
+ if (result.done) {
27
+ pending.delete(index);
28
+ } else {
29
+ yield result.value;
30
+ pending.set(
31
+ index,
32
+ asyncIterators[index].next().then(
33
+ (result2) => ({ index, result: result2 }),
34
+ (error) => {
35
+ errors.push(error);
36
+ return { index, result: { done: true, value: void 0 } };
37
+ }
38
+ )
39
+ );
40
+ }
41
+ }
42
+ if (errors.length > 0) {
43
+ throw new AggregateError(errors, errorMessage);
44
+ }
45
+ }
46
+ AsyncIterator2.merge = merge;
47
+ })(AsyncIterator || (AsyncIterator = {}));
48
+ export {
49
+ AsyncIterator
50
+ };
51
+ //# sourceMappingURL=AsyncIterator.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util/AsyncIterator.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AASO,IAAU;AAAA,CAAV,CAAUA,mBAAV;AAUH,kBAAuB,MACnB,WACA,eAAe,sCACE;AACjB,UAAM,iBAAiB,UAAU,IAAI,UAAQ,KAAK,OAAO,aAAa,EAAE,CAAC;AACzE,UAAM,UAAU,oBAAI,IAAmE;AACvF,UAAM,SAAkB,CAAC;AAGzB,aAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC5C,cAAQ;AAAA,QACJ;AAAA,QACA,eAAe,CAAC,EAAE,KAAK,EAAE;AAAA,UACrB,aAAW,EAAE,OAAO,GAAG,OAAO;AAAA,UAC9B,WAAS;AAEL,mBAAO,KAAK,KAAK;AACjB,mBAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,MAAM,MAAM,OAAO,OAAU,EAAuB;AAAA,UACrF;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,WAAO,QAAQ,OAAO,GAAG;AAErB,YAAM,EAAE,OAAO,OAAO,IAAI,MAAM,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAE7D,UAAI,OAAO,MAAM;AACb,gBAAQ,OAAO,KAAK;AAAA,MACxB,OAAO;AACH,cAAM,OAAO;AAEb,gBAAQ;AAAA,UACJ;AAAA,UACA,eAAe,KAAK,EAAE,KAAK,EAAE;AAAA,YACzB,CAAAC,aAAW,EAAE,OAAO,QAAAA,QAAO;AAAA,YAC3B,WAAS;AACL,qBAAO,KAAK,KAAK;AACjB,qBAAO,EAAE,OAAO,QAAQ,EAAE,MAAM,MAAM,OAAO,OAAU,EAAuB;AAAA,YAClF;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAGA,QAAI,OAAO,SAAS,GAAG;AACnB,YAAM,IAAI,eAAe,QAAQ,YAAY;AAAA,IACjD;AAAA,EACJ;AAjDA,EAAAD,eAAuB;AAAA,GAVV;",
5
+ "names": ["AsyncIterator", "result"]
6
+ }
@@ -5,6 +5,7 @@
5
5
  */
6
6
  export * from "./Abort.js";
7
7
  export * from "./Array.js";
8
+ export * from "./AsyncIterator.js";
8
9
  export * from "./Boot.js";
9
10
  export * from "./Bytes.js";
10
11
  export * from "./Cache.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,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,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,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,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,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,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  export * from "./Abort.js";
7
7
  export * from "./Array.js";
8
+ export * from "./AsyncIterator.js";
8
9
  export * from "./Boot.js";
9
10
  export * from "./Bytes.js";
10
11
  export * from "./Cache.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;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;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.8-alpha.0-20260123-dff2cae52",
3
+ "version": "0.16.8-alpha.0-20260125-38e62bc3e",
4
4
  "description": "Non-Matter support for Matter.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -36,7 +36,7 @@
36
36
  "@noble/curves": "^2.0.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@matter/testing": "0.16.8-alpha.0-20260123-dff2cae52"
39
+ "@matter/testing": "0.16.8-alpha.0-20260125-38e62bc3e"
40
40
  },
41
41
  "files": [
42
42
  "dist/**/*",
@@ -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";