@matter/general 0.16.1 → 0.16.2-alpha.0-20260114-d3127faee

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 (98) hide show
  1. package/dist/cjs/net/ServerAddress.d.ts +52 -14
  2. package/dist/cjs/net/ServerAddress.d.ts.map +1 -1
  3. package/dist/cjs/net/ServerAddress.js +41 -6
  4. package/dist/cjs/net/ServerAddress.js.map +2 -2
  5. package/dist/cjs/net/ServerAddressSet.d.ts +65 -0
  6. package/dist/cjs/net/ServerAddressSet.d.ts.map +1 -0
  7. package/dist/cjs/net/ServerAddressSet.js +144 -0
  8. package/dist/cjs/net/ServerAddressSet.js.map +6 -0
  9. package/dist/cjs/net/dns-sd/MdnsSocket.d.ts +40 -0
  10. package/dist/cjs/net/dns-sd/MdnsSocket.d.ts.map +1 -0
  11. package/dist/cjs/net/dns-sd/MdnsSocket.js +164 -0
  12. package/dist/cjs/net/dns-sd/MdnsSocket.js.map +6 -0
  13. package/dist/cjs/net/dns-sd/index.d.ts +7 -0
  14. package/dist/cjs/net/dns-sd/index.d.ts.map +1 -0
  15. package/dist/cjs/net/dns-sd/index.js +24 -0
  16. package/dist/cjs/net/dns-sd/index.js.map +6 -0
  17. package/dist/cjs/net/index.d.ts +2 -0
  18. package/dist/cjs/net/index.d.ts.map +1 -1
  19. package/dist/cjs/net/index.js +2 -0
  20. package/dist/cjs/net/index.js.map +1 -1
  21. package/dist/cjs/util/Abort.d.ts +9 -0
  22. package/dist/cjs/util/Abort.d.ts.map +1 -1
  23. package/dist/cjs/util/Abort.js +20 -0
  24. package/dist/cjs/util/Abort.js.map +1 -1
  25. package/dist/cjs/util/Heap.d.ts +84 -0
  26. package/dist/cjs/util/Heap.d.ts.map +1 -0
  27. package/dist/cjs/util/Heap.js +286 -0
  28. package/dist/cjs/util/Heap.js.map +6 -0
  29. package/dist/cjs/util/Observable.d.ts +29 -6
  30. package/dist/cjs/util/Observable.d.ts.map +1 -1
  31. package/dist/cjs/util/Observable.js +40 -6
  32. package/dist/cjs/util/Observable.js.map +1 -1
  33. package/dist/cjs/util/Promises.d.ts +3 -0
  34. package/dist/cjs/util/Promises.d.ts.map +1 -1
  35. package/dist/cjs/util/Promises.js +33 -3
  36. package/dist/cjs/util/Promises.js.map +2 -2
  37. package/dist/cjs/util/Set.d.ts.map +1 -1
  38. package/dist/cjs/util/Set.js +14 -8
  39. package/dist/cjs/util/Set.js.map +1 -1
  40. package/dist/cjs/util/index.d.ts +1 -0
  41. package/dist/cjs/util/index.d.ts.map +1 -1
  42. package/dist/cjs/util/index.js +1 -0
  43. package/dist/cjs/util/index.js.map +1 -1
  44. package/dist/esm/net/ServerAddress.d.ts +52 -14
  45. package/dist/esm/net/ServerAddress.d.ts.map +1 -1
  46. package/dist/esm/net/ServerAddress.js +41 -6
  47. package/dist/esm/net/ServerAddress.js.map +2 -2
  48. package/dist/esm/net/ServerAddressSet.d.ts +65 -0
  49. package/dist/esm/net/ServerAddressSet.d.ts.map +1 -0
  50. package/dist/esm/net/ServerAddressSet.js +124 -0
  51. package/dist/esm/net/ServerAddressSet.js.map +6 -0
  52. package/dist/esm/net/dns-sd/MdnsSocket.d.ts +40 -0
  53. package/dist/esm/net/dns-sd/MdnsSocket.d.ts.map +1 -0
  54. package/dist/esm/net/dns-sd/MdnsSocket.js +149 -0
  55. package/dist/esm/net/dns-sd/MdnsSocket.js.map +6 -0
  56. package/dist/esm/net/dns-sd/index.d.ts +7 -0
  57. package/dist/esm/net/dns-sd/index.d.ts.map +1 -0
  58. package/dist/esm/net/dns-sd/index.js +7 -0
  59. package/dist/esm/net/dns-sd/index.js.map +6 -0
  60. package/dist/esm/net/index.d.ts +2 -0
  61. package/dist/esm/net/index.d.ts.map +1 -1
  62. package/dist/esm/net/index.js +2 -0
  63. package/dist/esm/net/index.js.map +1 -1
  64. package/dist/esm/util/Abort.d.ts +9 -0
  65. package/dist/esm/util/Abort.d.ts.map +1 -1
  66. package/dist/esm/util/Abort.js +20 -0
  67. package/dist/esm/util/Abort.js.map +1 -1
  68. package/dist/esm/util/Heap.d.ts +84 -0
  69. package/dist/esm/util/Heap.d.ts.map +1 -0
  70. package/dist/esm/util/Heap.js +266 -0
  71. package/dist/esm/util/Heap.js.map +6 -0
  72. package/dist/esm/util/Observable.d.ts +29 -6
  73. package/dist/esm/util/Observable.d.ts.map +1 -1
  74. package/dist/esm/util/Observable.js +40 -6
  75. package/dist/esm/util/Observable.js.map +1 -1
  76. package/dist/esm/util/Promises.d.ts +3 -0
  77. package/dist/esm/util/Promises.d.ts.map +1 -1
  78. package/dist/esm/util/Promises.js +33 -3
  79. package/dist/esm/util/Promises.js.map +2 -2
  80. package/dist/esm/util/Set.d.ts.map +1 -1
  81. package/dist/esm/util/Set.js +14 -8
  82. package/dist/esm/util/Set.js.map +1 -1
  83. package/dist/esm/util/index.d.ts +1 -0
  84. package/dist/esm/util/index.d.ts.map +1 -1
  85. package/dist/esm/util/index.js +1 -0
  86. package/dist/esm/util/index.js.map +1 -1
  87. package/package.json +2 -2
  88. package/src/net/ServerAddress.ts +93 -19
  89. package/src/net/ServerAddressSet.ts +225 -0
  90. package/src/net/dns-sd/MdnsSocket.ts +203 -0
  91. package/src/net/dns-sd/index.ts +7 -0
  92. package/src/net/index.ts +2 -0
  93. package/src/util/Abort.ts +25 -0
  94. package/src/util/Heap.ts +332 -0
  95. package/src/util/Observable.ts +74 -10
  96. package/src/util/Promises.ts +61 -4
  97. package/src/util/Set.ts +15 -8
  98. package/src/util/index.ts +1 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/net/dns-sd/index.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,2BAAc,4BANd;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -6,11 +6,13 @@
6
6
  export * from "./AppAddress.js";
7
7
  export * from "./Channel.js";
8
8
  export * from "./ConnectionlessTransport.js";
9
+ export * from "./dns-sd/index.js";
9
10
  export * from "./http/index.js";
10
11
  export * from "./mock/index.js";
11
12
  export * from "./mqtt/index.js";
12
13
  export * from "./Network.js";
13
14
  export * from "./RetrySchedule.js";
14
15
  export * from "./ServerAddress.js";
16
+ export * from "./ServerAddressSet.js";
15
17
  export * from "./udp/index.js";
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/net/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/net/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC"}
@@ -18,12 +18,14 @@ module.exports = __toCommonJS(net_exports);
18
18
  __reExport(net_exports, require("./AppAddress.js"), module.exports);
19
19
  __reExport(net_exports, require("./Channel.js"), module.exports);
20
20
  __reExport(net_exports, require("./ConnectionlessTransport.js"), module.exports);
21
+ __reExport(net_exports, require("./dns-sd/index.js"), module.exports);
21
22
  __reExport(net_exports, require("./http/index.js"), module.exports);
22
23
  __reExport(net_exports, require("./mock/index.js"), module.exports);
23
24
  __reExport(net_exports, require("./mqtt/index.js"), module.exports);
24
25
  __reExport(net_exports, require("./Network.js"), module.exports);
25
26
  __reExport(net_exports, require("./RetrySchedule.js"), module.exports);
26
27
  __reExport(net_exports, require("./ServerAddress.js"), module.exports);
28
+ __reExport(net_exports, require("./ServerAddressSet.js"), module.exports);
27
29
  __reExport(net_exports, require("./udp/index.js"), module.exports);
28
30
  /**
29
31
  * @license
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/net/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,4BANd;AAOA,wBAAc,yBAPd;AAQA,wBAAc,yCARd;AASA,wBAAc,4BATd;AAUA,wBAAc,4BAVd;AAWA,wBAAc,4BAXd;AAYA,wBAAc,yBAZd;AAaA,wBAAc,+BAbd;AAcA,wBAAc,+BAdd;AAeA,wBAAc,2BAfd;AAAA;AAAA;AAAA;AAAA;AAAA;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,4BANd;AAOA,wBAAc,yBAPd;AAQA,wBAAc,yCARd;AASA,wBAAc,8BATd;AAUA,wBAAc,4BAVd;AAWA,wBAAc,4BAXd;AAYA,wBAAc,4BAZd;AAaA,wBAAc,yBAbd;AAcA,wBAAc,+BAdd;AAeA,wBAAc,+BAfd;AAgBA,wBAAc,kCAhBd;AAiBA,wBAAc,2BAjBd;AAAA;AAAA;AAAA;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -28,6 +28,10 @@ export declare class Abort extends Callable<[reason?: Error]> implements AbortCo
28
28
  * If aborted returns undefined.
29
29
  */
30
30
  race<T>(...promises: Array<T | PromiseLike<T>>): Promise<Awaited<T> | void>;
31
+ /**
32
+ * Race with throw on abort.
33
+ */
34
+ attempt<T>(...promises: Array<T | PromiseLike<T>>): Promise<T>;
31
35
  /**
32
36
  * Free resources.
33
37
  *
@@ -36,6 +40,7 @@ export declare class Abort extends Callable<[reason?: Error]> implements AbortCo
36
40
  */
37
41
  close(): void;
38
42
  [Symbol.dispose](): void;
43
+ if(condition?: unknown, reason?: Error): void;
39
44
  get aborted(): boolean;
40
45
  set onabort(onabort: ((this: AbortSignal, ev: Event) => any) | null);
41
46
  get onabort(): ((this: AbortSignal, ev: Event) => any) | null;
@@ -91,6 +96,10 @@ export declare namespace Abort {
91
96
  * abort reason.
92
97
  */
93
98
  function race<T>(signal: Signal | undefined, ...promises: Array<T | PromiseLike<T>>): Promise<Awaited<T> | void>;
99
+ /**
100
+ * Race with throw on abort.
101
+ */
102
+ function attempt<T>(signal: Signal | undefined, ...promises: Array<T | PromiseLike<T>>): Promise<T>;
94
103
  /**
95
104
  * Perform abortable sleep.
96
105
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Abort.d.ts","sourceRoot":"","sources":["../../../src/util/Abort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Abort.d.ts","sourceRoot":"","sources":["../../../src/util/Abort.ts"],"names":[],"mappings":"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"}
@@ -87,6 +87,12 @@ class Abort extends import_Function.Callable {
87
87
  async race(...promises) {
88
88
  return Abort.race(this, ...promises);
89
89
  }
90
+ /**
91
+ * Race with throw on abort.
92
+ */
93
+ async attempt(...promises) {
94
+ return Abort.attempt(this, ...promises);
95
+ }
90
96
  /**
91
97
  * Free resources.
92
98
  *
@@ -104,6 +110,11 @@ class Abort extends import_Function.Callable {
104
110
  [Symbol.dispose]() {
105
111
  this.close();
106
112
  }
113
+ if(condition, reason) {
114
+ if (condition) {
115
+ this.abort(reason);
116
+ }
117
+ }
107
118
  get aborted() {
108
119
  return this.signal.aborted;
109
120
  }
@@ -166,6 +177,15 @@ class Abort extends import_Function.Callable {
166
177
  return import_Promises.SafePromise.race(promises);
167
178
  }
168
179
  Abort2.race = race;
180
+ async function attempt(signal, ...promises) {
181
+ if (signal && "signal" in signal) {
182
+ signal = signal.signal;
183
+ }
184
+ const result = await race(signal, ...promises);
185
+ signal?.throwIfAborted();
186
+ return result;
187
+ }
188
+ Abort2.attempt = attempt;
169
189
  function sleep(description, abort, duration) {
170
190
  let timer;
171
191
  const rested = new Promise((resolve) => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/Abort.ts"],
4
- "mappings": "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",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAA2C;AAE3C,kBAA4B;AAC5B,mBAAwB;AACxB,sBAAyB;AACzB,sBAA4B;AAX5B;AAAA;AAAA;AAAA;AAAA;AAyBO,MAAM,cAAc,yBAAuF;AAAA;AAAA,EAE9G;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EAEA,YAAY,EAAE,OAAO,SAAS,QAAQ,IAAmB,CAAC,GAAG;AACzD,UAAM,MAAM,KAAK,MAAM,CAAC;AAExB,SAAK,cAAc,IAAI,gBAAgB;AAEvC,UAAM,OAAO,CAAC,WAAiB;AAC3B,WAAK,MAAM,MAAM;AAAA,IACrB;AACA,WAAO,eAAe,MAAM,OAAO,eAAe,IAAI,CAAC;AAEvD,QAAI,SAAS,CAAC,MAAM,QAAQ,KAAK,GAAG;AAChC,cAAQ,CAAC,KAAK;AAAA,IAClB;AAEA,QAAI,OAAO,QAAQ;AACf,YAAM,aAAa,MAAM,IAAI,CAAAA,WAAU,YAAYA,SAAQA,OAAM,SAASA,MAAM;AAChF,WAAK,cAAc;AAEnB,WAAK,YAAY,CAAC,WAAgB,KAAK,MAAM,MAAM;AACnD,iBAAW,aAAa,YAAY;AAChC,kBAAU,iBAAiB,SAAS,KAAK,SAAS;AAAA,MACtD;AAAA,IACJ;AAEA,QAAI,SAAS;AACT,WAAK,WAAW,iBAAK,iBAAiB,mBAAmB,SAAS,MAAM;AACpE,YAAI,KAAK,SAAS;AACd;AAAA,QACJ;AAEA,aAAK,MAAM,IAAI,gCAAa,CAAC;AAAA,MACjC,CAAC;AAED,WAAK,SAAS,MAAM;AAAA,IACxB;AAEA,QAAI,SAAS;AACT,WAAK,iBAAiB,SAAS,MAAM,QAAQ,KAAK,MAAM,CAAC;AAAA,IAC7D;AAAA,EACJ;AAAA,EAEA,MAAM,QAAc;AAChB,SAAK,YAAY,MAAM,UAAU,IAAI,gCAAa,CAAC;AAAA,EACvD;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK,YAAY;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,QAAW,UAAiE;AAC9E,WAAO,MAAM,KAAK,MAAM,GAAG,QAAQ;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAc,UAAqC;AACrD,WAAO,MAAM,QAAQ,MAAM,GAAG,QAAQ;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAQ;AACJ,SAAK,UAAU,KAAK;AACpB,QAAI,KAAK,aAAa,KAAK,aAAa;AACpC,iBAAW,aAAa,KAAK,aAAa;AACtC,kBAAU,oBAAoB,SAAS,KAAK,SAAS;AAAA,MACzD;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,CAAC,OAAO,OAAO,IAAI;AACf,SAAK,MAAM;AAAA,EACf;AAAA,EAEA,GAAG,WAAqB,QAAgB;AACpC,QAAI,WAAW;AACX,WAAK,MAAM,MAAM;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEA,IAAI,QAAQ,SAAyD;AACjE,SAAK,OAAO,UAAU;AAAA,EAC1B;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEA,IAAI,SAAS;AACT,eAAO,sBAAQ,KAAK,OAAO,MAAM;AAAA,EACrC;AAAA,EAEA,iBAAiB;AACb,SAAK,OAAO,eAAe;AAAA,EAC/B;AAAA,EAEA,KACI,aACA,YACgC;AAChC,QAAI,CAAC,KAAK,UAAU;AAChB,WAAK,WAAW,IAAI,QAAQ,aAAY,KAAK,WAAW,OAAQ;AAChE,WAAK,iBAAiB,SAAS,MAAM,KAAK,aAAU,sBAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,IAC7E;AACA,WAAO,KAAK,SAAS,KAAK,aAAa,UAAU;AAAA,EACrD;AAAA,EAYA,iBAAiB,MAAW,UAAe,SAAe;AACtD,SAAK,OAAO,iBAAiB,MAAM,UAAU,OAAO;AAAA,EACxD;AAAA,EAYA,oBAAoB,MAAW,UAAe,SAAe;AACzD,SAAK,OAAO,iBAAiB,MAAM,UAAU,OAAO;AAAA,EACxD;AAAA,EAEA,cAAc,OAAc;AACxB,WAAO,KAAK,OAAO,cAAc,KAAK;AAAA,EAC1C;AACJ;AAAA,CAKO,CAAUC,WAAV;AAoCI,WAAS,GAAG,QAA4B;AAC3C,QAAI,CAAC,QAAQ;AACT;AAAA,IACJ;AAEA,QAAI,YAAY,QAAQ;AACpB,eAAS,OAAO;AAAA,IACpB;AAEA,WAAO,OAAO;AAAA,EAClB;AAVO,EAAAA,OAAS;AAkBT,WAAS,KACZ,WACG,UACuB;AAC1B,QAAI,QAAQ;AACR,UAAI,YAAY,QAAQ;AACpB,iBAAS,OAAO;AAAA,MACpB;AAEA,UAAI;AACJ,YAAM,UAAU,IAAI,QAAc,aAAW;AACzC,cAAM,UAAU,MAAM,QAAQ;AAC9B,QAAC,OAAuB,iBAAiB,SAAS,OAAO;AACzD,cAAM,MAAO,OAAuB,oBAAoB,SAAS,OAAO;AAAA,MAC5E,CAAC;AAED,aAAO,4BAAY,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,QAAQ,GAAI;AAAA,IAChE;AAEA,QAAI,SAAS,WAAW,GAAG;AACvB,aAAO,QAAQ,QAAQ,SAAS,CAAC,CAAC;AAAA,IACtC;AAEA,WAAO,4BAAY,KAAK,QAAQ;AAAA,EACpC;AAxBO,EAAAA,OAAS;AA6BhB,iBAAsB,QAAW,WAA+B,UAAqC;AACjG,QAAI,UAAU,YAAY,QAAQ;AAC9B,eAAS,OAAO;AAAA,IACpB;AACA,UAAM,SAAS,MAAM,KAAK,QAAQ,GAAG,QAAQ;AAC7C,YAAQ,eAAe;AACvB,WAAO;AAAA,EACX;AAPA,EAAAA,OAAsB;AAYf,WAAS,MAAM,aAAqB,OAA2B,UAAoB;AACtF,QAAI;AACJ,UAAM,SAAS,IAAI,QAAc,aAAW;AACxC,cAAQ,iBAAK,SAAS,aAAa,UAAU,MAAM,QAAQ,CAAC;AAAA,IAChE,CAAC;AACD,WAAO,KAAK,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAK,KAAK,KAAK,CAAC;AAAA,EAC7D;AANO,EAAAA,OAAS;AAgBT,WAAS,QAAQ,QAA4B,SAA2B;AAC3E,WAAO,IAAIA,OAAM,EAAE,OAAO,QAAQ,QAAQ,CAAC;AAAA,EAC/C;AAFO,EAAAA,OAAS;AAOT,WAAS,OAAO,SAAiC;AACpD,WAAO,IAAIA,OAAM,EAAE,OAAO,CAAC,GAAI,QAAQ,OAAO,YAAU,MAAM,CAAc,EAAE,CAAC;AAAA,EACnF;AAFO,EAAAA,OAAS;AAOT,WAAS,WAAW,QAAsC;AAC7D,QAAI,CAAC,QAAQ;AACT,aAAO,MAAM;AAAA,MAAC;AAAA,IAClB;AAEA,QAAI,WAAW,UAAU,OAAO,OAAO,UAAU,UAAU;AACvD,eAAS,OAAO;AAAA,IACpB;AACA,QAAI,CAAC,QAAQ;AACT,aAAO,MAAM;AAAA,MAAC;AAAA,IAClB;AAEA,QAAI,YAAY,QAAQ;AACpB,eAAS,OAAO;AAAA,IACpB;AACA,QAAI,CAAC,QAAQ;AACT,aAAO,MAAM;AAAA,MAAC;AAAA,IAClB;AAEA,WAAQ,OAAuB,eAAe,KAAK,MAAM;AAAA,EAC7D;AApBO,EAAAA,OAAS;AAAA,GA7HH;",
5
5
  "names": ["abort", "Abort"]
6
6
  }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2026 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Abort } from "./Abort.js";
7
+ import { Observable } from "./Observable.js";
8
+ /**
9
+ * A heap, useful as a priority queue.
10
+ *
11
+ * Features:
12
+ *
13
+ * * Configurable as min-heap or max-heap using comparator
14
+ *
15
+ * * O(1) lookup of first item
16
+ *
17
+ * * O(log(n)) enqueue and dequeue
18
+ *
19
+ * * O(1) deletion of arbitrary position, but will add expense of maintaining index of positions
20
+ *
21
+ * * {@link added}, {@link deleted} and {@link firstChanged} events
22
+ */
23
+ export declare class Heap<T> {
24
+ #private;
25
+ /**
26
+ * Create new heap.
27
+ *
28
+ * @param comparator performs ordering of items in the heap
29
+ * @param normalizer optionally converts items to normal form on insert
30
+ */
31
+ constructor(comparator: (a: T, b: T) => number, normalizer?: (entry: T) => T);
32
+ /**
33
+ * Return lowest-ranked item.
34
+ */
35
+ shift(): T | undefined;
36
+ /**
37
+ * The lowest-ranked item.
38
+ */
39
+ get first(): T | undefined;
40
+ /**
41
+ * The queue length.
42
+ */
43
+ get size(): number;
44
+ /**
45
+ * Is the heap empty?
46
+ */
47
+ get isEmpty(): boolean;
48
+ /**
49
+ * Emits when the head of the queue changes.
50
+ */
51
+ get firstChanged(): Observable<[T | undefined], void>;
52
+ /**
53
+ * Emits when an item is added to the heap.
54
+ */
55
+ get added(): Observable<[T], void>;
56
+ /**
57
+ * Emits when an item is deleted.
58
+ */
59
+ get deleted(): Observable<[T], void>;
60
+ /**
61
+ * Add an item.
62
+ */
63
+ add(...items: T[]): void;
64
+ /**
65
+ * Delete an item.
66
+ *
67
+ * The first delete is O(n); subsequent deletes are O(1) but insertions and deletions will have additional cost
68
+ * associated.
69
+ */
70
+ delete(item: T): boolean;
71
+ /**
72
+ * Remove all entries.
73
+ */
74
+ clear(): void;
75
+ /**
76
+ * Stream the first value from the heap until aborted.
77
+ */
78
+ stream(abort?: Abort.Signal): AsyncGenerator<Awaited<NonNullable<T>>, void, unknown>;
79
+ /**
80
+ * Perform internal validation of queue order.
81
+ */
82
+ validate(): void;
83
+ }
84
+ //# sourceMappingURL=Heap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heap.d.ts","sourceRoot":"","sources":["../../../src/util/Heap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,qBAAa,IAAI,CAAC,CAAC;;IAYf;;;;;OAKG;gBACS,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;IAK5E;;OAEG;IACH,KAAK;IAWL;;OAEG;IACH,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAEzB;IAED;;OAEG;IACH,IAAI,IAAI,WAEP;IAED;;OAEG;IACH,IAAI,OAAO,YAEV;IAED;;OAEG;IACH,IAAI,YAAY,sCAKf;IAED;;OAEG;IACH,IAAI,KAAK,0BAKR;IAED;;OAEG;IACH,IAAI,OAAO,0BAKV;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;IAajB;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,CAAC;IAyBd;;OAEG;IACH,KAAK;IAIL;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM;IAkClC;;OAEG;IACH,QAAQ;CA4HX"}
@@ -0,0 +1,286 @@
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 Heap_exports = {};
20
+ __export(Heap_exports, {
21
+ Heap: () => Heap
22
+ });
23
+ module.exports = __toCommonJS(Heap_exports);
24
+ var import_MatterError = require("#MatterError.js");
25
+ var import_Abort = require("./Abort.js");
26
+ var import_Observable = require("./Observable.js");
27
+ /**
28
+ * @license
29
+ * Copyright 2022-2026 Matter.js Authors
30
+ * SPDX-License-Identifier: Apache-2.0
31
+ */
32
+ class Heap {
33
+ // We encode the heap as an array for efficiency. See #leftChildOf and #rightChildOf for how to navigate the tree
34
+ // when encoded this way
35
+ #buffer = Array();
36
+ #compare;
37
+ #normalize;
38
+ #firstChanged;
39
+ #deleted;
40
+ #added;
41
+ #positions;
42
+ /**
43
+ * Create new heap.
44
+ *
45
+ * @param comparator performs ordering of items in the heap
46
+ * @param normalizer optionally converts items to normal form on insert
47
+ */
48
+ constructor(comparator, normalizer) {
49
+ this.#compare = comparator;
50
+ this.#normalize = normalizer;
51
+ }
52
+ /**
53
+ * Return lowest-ranked item.
54
+ */
55
+ shift() {
56
+ if (!this.#buffer?.length) {
57
+ return void 0;
58
+ }
59
+ const result = this.first;
60
+ this.#deleteAt(0);
61
+ return result;
62
+ }
63
+ /**
64
+ * The lowest-ranked item.
65
+ */
66
+ get first() {
67
+ return this.#buffer?.[0];
68
+ }
69
+ /**
70
+ * The queue length.
71
+ */
72
+ get size() {
73
+ return this.#buffer.length;
74
+ }
75
+ /**
76
+ * Is the heap empty?
77
+ */
78
+ get isEmpty() {
79
+ return !!this.#buffer.length;
80
+ }
81
+ /**
82
+ * Emits when the head of the queue changes.
83
+ */
84
+ get firstChanged() {
85
+ if (!this.#firstChanged) {
86
+ this.#firstChanged = new import_Observable.Observable();
87
+ }
88
+ return this.#firstChanged;
89
+ }
90
+ /**
91
+ * Emits when an item is added to the heap.
92
+ */
93
+ get added() {
94
+ if (!this.#added) {
95
+ this.#added = new import_Observable.Observable();
96
+ }
97
+ return this.#added;
98
+ }
99
+ /**
100
+ * Emits when an item is deleted.
101
+ */
102
+ get deleted() {
103
+ if (!this.#deleted) {
104
+ this.#deleted = new import_Observable.Observable();
105
+ }
106
+ return this.#deleted;
107
+ }
108
+ /**
109
+ * Add an item.
110
+ */
111
+ add(...items) {
112
+ for (let item of items) {
113
+ if (this.#normalize) {
114
+ item = this.#normalize(item);
115
+ }
116
+ this.#buffer.push(item);
117
+ this.#bubbleUp(this.#buffer.length - 1);
118
+ this.#added?.emit(item);
119
+ }
120
+ }
121
+ /**
122
+ * Delete an item.
123
+ *
124
+ * The first delete is O(n); subsequent deletes are O(1) but insertions and deletions will have additional cost
125
+ * associated.
126
+ */
127
+ delete(item) {
128
+ if (this.#buffer === void 0) {
129
+ return false;
130
+ }
131
+ if (!this.#positions) {
132
+ this.#positions = /* @__PURE__ */ new Map();
133
+ for (let i = 0; i < this.#buffer.length; i++) {
134
+ this.#positions.set(this.#buffer[i], i);
135
+ }
136
+ }
137
+ if (this.#normalize) {
138
+ item = this.#normalize(item);
139
+ }
140
+ const pos = this.#positions.get(item);
141
+ if (pos === void 0) {
142
+ return false;
143
+ }
144
+ this.#deleteAt(pos);
145
+ return true;
146
+ }
147
+ /**
148
+ * Remove all entries.
149
+ */
150
+ clear() {
151
+ if (this.#buffer.length) this.#buffer.length = 0;
152
+ }
153
+ /**
154
+ * Stream the first value from the heap until aborted.
155
+ */
156
+ async *stream(abort) {
157
+ if (import_Abort.Abort.is(abort)) {
158
+ return;
159
+ }
160
+ while (true) {
161
+ while (this.size) {
162
+ yield this.shift();
163
+ if (import_Abort.Abort.is(abort)) {
164
+ return;
165
+ }
166
+ }
167
+ let resolve;
168
+ const ready = new Promise((r) => resolve = r);
169
+ try {
170
+ this.added.once(resolve);
171
+ await import_Abort.Abort.race(abort, ready);
172
+ if (import_Abort.Abort.is(abort)) {
173
+ return;
174
+ }
175
+ } finally {
176
+ this.added.off(resolve);
177
+ }
178
+ }
179
+ }
180
+ /**
181
+ * Perform internal validation of queue order.
182
+ */
183
+ validate() {
184
+ for (let i = 0; i < this.#buffer.length; i++) {
185
+ const leftChild = this.#leftChildOf(i);
186
+ if (leftChild < this.#buffer.length) {
187
+ if (this.#compare(this.#buffer[i], this.#buffer[leftChild]) > 0) {
188
+ throw new import_MatterError.InternalError(
189
+ `Heap error: buffer #${i} (${this.#buffer[i]}) is greater than left child #${leftChild} (${this.#buffer[leftChild]})`
190
+ );
191
+ }
192
+ const rightChild = this.#rightChildOf(i);
193
+ if (rightChild < this.#buffer.length) {
194
+ if (this.#compare(this.#buffer[i], this.#buffer[rightChild]) > 0) {
195
+ throw new import_MatterError.InternalError(
196
+ `Heap error: buffer #${i} (${this.#buffer[i]}) is greater than right child #${rightChild} (${this.#buffer[rightChild]})`
197
+ );
198
+ }
199
+ if (this.#compare(this.#buffer[leftChild], this.#buffer[rightChild]) > 0) {
200
+ throw new import_MatterError.InternalError(
201
+ `Heap error: buffer #${leftChild} (${this.#buffer[leftChild]}) is greater than right sibling #${rightChild} (${this.#buffer[rightChild]})`
202
+ );
203
+ }
204
+ }
205
+ }
206
+ }
207
+ }
208
+ #deleteAt(index) {
209
+ if (index >= this.#buffer.length) {
210
+ return;
211
+ }
212
+ const item = this.#buffer[index];
213
+ if (this.#buffer.length === 1) {
214
+ this.#buffer.length = 0;
215
+ } else {
216
+ const lastIndex = this.#buffer.length - 1;
217
+ this.#buffer[index] = this.#buffer[lastIndex];
218
+ this.#positions?.set(this.#buffer[index], index);
219
+ this.#buffer.length = lastIndex;
220
+ if (index < this.#buffer.length) {
221
+ if (index) {
222
+ index = this.#bubbleUp(index);
223
+ }
224
+ this.#sinkDown(index);
225
+ }
226
+ }
227
+ this.#positions?.delete(item);
228
+ this.#deleted?.emit(item);
229
+ if (!index) {
230
+ this.#firstChanged?.emit(this.first);
231
+ }
232
+ }
233
+ #sinkDown(index) {
234
+ while (true) {
235
+ let moveTo;
236
+ const leftChild = this.#leftChildOf(index);
237
+ if (leftChild < this.#buffer.length) {
238
+ if (this.#compare(this.#buffer[index], this.#buffer[leftChild]) > 0) {
239
+ moveTo = leftChild;
240
+ }
241
+ const rightChild = this.#rightChildOf(index);
242
+ if (rightChild < this.#buffer.length) {
243
+ if (this.#compare(this.#buffer[moveTo ?? index], this.#buffer[rightChild]) > 0) {
244
+ moveTo = rightChild;
245
+ }
246
+ }
247
+ }
248
+ if (moveTo === void 0) {
249
+ break;
250
+ }
251
+ this.#swap(index, moveTo);
252
+ index = moveTo;
253
+ }
254
+ }
255
+ #bubbleUp(index) {
256
+ while (index) {
257
+ const parent = this.#parentOf(index);
258
+ if (this.#compare(this.#buffer[parent], this.#buffer[index]) <= 0) {
259
+ break;
260
+ }
261
+ this.#swap(index, parent);
262
+ index = parent;
263
+ }
264
+ if (!index) {
265
+ this.#firstChanged?.emit(this.first);
266
+ }
267
+ return index;
268
+ }
269
+ #swap(index1, index2) {
270
+ [this.#buffer[index1], this.#buffer[index2]] = [this.#buffer[index2], this.#buffer[index1]];
271
+ if (this.#positions) {
272
+ this.#positions.set(this.#buffer[index1], index1);
273
+ this.#positions.set(this.#buffer[index2], index2);
274
+ }
275
+ }
276
+ #leftChildOf(index) {
277
+ return 2 * index + 1;
278
+ }
279
+ #rightChildOf(index) {
280
+ return 2 * index + 2;
281
+ }
282
+ #parentOf(index) {
283
+ return Math.floor((index - 1) / 2);
284
+ }
285
+ }
286
+ //# sourceMappingURL=Heap.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/util/Heap.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -41,6 +41,14 @@ export interface Observable<T extends any[] = any[], R = void> extends AsyncIter
41
41
  * Add an observer.
42
42
  */
43
43
  on(observer: Observer<T, R>): void;
44
+ /**
45
+ * Add an observer that may be released via disposal.
46
+ */
47
+ use(observer: Observer<T, R>): Disposable;
48
+ /**
49
+ * Add a "once" observer that may be released via disposal.
50
+ */
51
+ useOnce(observer: Observer<T, R>): Disposable;
44
52
  /**
45
53
  * Remove an observer.
46
54
  */
@@ -120,6 +128,11 @@ export interface Observable<T extends any[] = any[], R = void> extends AsyncIter
120
128
  * result in rejection if awaited.
121
129
  */
122
130
  export interface ObservableValue<T extends [any, ...any[]] = [boolean], R extends MaybePromise<void> = void> extends Observable<T, R>, Promise<T[0]> {
131
+ /**
132
+ * The current value.
133
+ *
134
+ * Setting the value will resolve the promise interface but you must use {@link emit} to also emit an event.
135
+ */
123
136
  value: T[0] | undefined;
124
137
  error?: Error;
125
138
  /**
@@ -130,6 +143,9 @@ export interface ObservableValue<T extends [any, ...any[]] = [boolean], R extend
130
143
  reject(cause: unknown): void;
131
144
  then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T[0]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
132
145
  catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T[0] | TResult>;
146
+ onError(handler: (cause: Error) => void): void;
147
+ offError(handler: (cause: Error) => void): void;
148
+ useError(handler: (cause: Error) => void): Disposable;
133
149
  }
134
150
  /**
135
151
  * An observer may designate itself as "not observant" for the purposes of {@link Observable.isObserved} by returning
@@ -166,6 +182,12 @@ export declare class BasicObservable<T extends any[] = any[], R = void> implemen
166
182
  isObservedBy(observer: Observer<T, R>): boolean;
167
183
  emit(...payload: T): R | undefined;
168
184
  on(observer: Observer<T, R>): void;
185
+ use(observer: Observer<T, R>): {
186
+ [Symbol.dispose]: () => void;
187
+ };
188
+ useOnce(observer: Observer<T, R>): {
189
+ [Symbol.dispose]: () => void;
190
+ };
169
191
  off(observer: Observer<T, R>): void;
170
192
  once(observer: Observer<T, R>): void;
171
193
  then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T[0]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
@@ -190,20 +212,20 @@ export declare const AsyncObservable: {
190
212
  /**
191
213
  * A concrete {@link ObservableValue} implementation.
192
214
  */
193
- export declare class BasicObservableValue<T extends [any, ...any[]] = [boolean]> extends BasicObservable<T, void> implements ObservableValue<T> {
215
+ export declare class BasicObservableValue<T extends [any, ...any[]] = [boolean], R extends MaybePromise<void> = void> extends BasicObservable<T, R> implements ObservableValue<T, R> {
194
216
  #private;
195
217
  constructor(value?: T[0], handleError?: ObserverErrorHandler, asyncConfig?: ObserverPromiseHandler | boolean);
196
- /**
197
- * The current value.
198
- *
199
- * This will resolve the promise interface but you must use {@link emit} to also emit an event..
200
- */
201
218
  get value(): T[0] | undefined;
202
219
  set value(value: T[0] | undefined);
203
220
  get error(): Error | undefined;
204
221
  reject(cause: unknown): void;
205
222
  then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
206
223
  catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
224
+ onError(handler: (cause: Error) => void): void;
225
+ offError(handler: (cause: Error) => void): void;
226
+ useError(handler: (cause: Error) => void): {
227
+ [Symbol.dispose]: () => void;
228
+ };
207
229
  finally(onfinally?: (() => void) | null): Promise<T>;
208
230
  [Symbol.toStringTag]: string;
209
231
  }
@@ -309,6 +331,7 @@ export declare class ObserverGroup {
309
331
  * Remove all observers. The instance can be reused afterward to add new observers.
310
332
  */
311
333
  close(): void;
334
+ [Symbol.dispose](): void;
312
335
  }
313
336
  /**
314
337
  * {@link Observer}s detached from an {@link Observable}.