@matter/general 0.13.0-alpha.0-20250311-3eb0af5f2 → 0.13.0-alpha.0-20250322-f085fa576

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 (65) hide show
  1. package/dist/cjs/codec/DnsCodec.js +1 -1
  2. package/dist/cjs/codec/DnsCodec.js.map +1 -1
  3. package/dist/cjs/log/Logger.d.ts +11 -6
  4. package/dist/cjs/log/Logger.d.ts.map +1 -1
  5. package/dist/cjs/log/Logger.js +19 -8
  6. package/dist/cjs/log/Logger.js.map +1 -1
  7. package/dist/cjs/time/Time.d.ts +1 -0
  8. package/dist/cjs/time/Time.d.ts.map +1 -1
  9. package/dist/cjs/time/Time.js +3 -0
  10. package/dist/cjs/time/Time.js.map +1 -1
  11. package/dist/cjs/transaction/Participant.d.ts +3 -3
  12. package/dist/cjs/transaction/Participant.d.ts.map +1 -1
  13. package/dist/cjs/transaction/Transaction.d.ts +20 -20
  14. package/dist/cjs/transaction/Tx.js +3 -3
  15. package/dist/cjs/transaction/Tx.js.map +1 -1
  16. package/dist/cjs/util/Construction.js +2 -2
  17. package/dist/cjs/util/Construction.js.map +1 -1
  18. package/dist/cjs/util/DataReadQueue.d.ts +4 -0
  19. package/dist/cjs/util/DataReadQueue.d.ts.map +1 -1
  20. package/dist/cjs/util/DataReadQueue.js +6 -0
  21. package/dist/cjs/util/DataReadQueue.js.map +1 -1
  22. package/dist/cjs/util/FormattedText.js +4 -2
  23. package/dist/cjs/util/FormattedText.js.map +1 -1
  24. package/dist/cjs/util/Observable.d.ts +137 -12
  25. package/dist/cjs/util/Observable.d.ts.map +1 -1
  26. package/dist/cjs/util/Observable.js +297 -35
  27. package/dist/cjs/util/Observable.js.map +2 -2
  28. package/dist/esm/codec/DnsCodec.js +1 -1
  29. package/dist/esm/codec/DnsCodec.js.map +1 -1
  30. package/dist/esm/log/Logger.d.ts +11 -6
  31. package/dist/esm/log/Logger.d.ts.map +1 -1
  32. package/dist/esm/log/Logger.js +19 -8
  33. package/dist/esm/log/Logger.js.map +1 -1
  34. package/dist/esm/time/Time.d.ts +1 -0
  35. package/dist/esm/time/Time.d.ts.map +1 -1
  36. package/dist/esm/time/Time.js +3 -0
  37. package/dist/esm/time/Time.js.map +1 -1
  38. package/dist/esm/transaction/Participant.d.ts +3 -3
  39. package/dist/esm/transaction/Participant.d.ts.map +1 -1
  40. package/dist/esm/transaction/Transaction.d.ts +20 -20
  41. package/dist/esm/transaction/Tx.js +3 -3
  42. package/dist/esm/transaction/Tx.js.map +1 -1
  43. package/dist/esm/util/Construction.js +2 -2
  44. package/dist/esm/util/Construction.js.map +1 -1
  45. package/dist/esm/util/DataReadQueue.d.ts +4 -0
  46. package/dist/esm/util/DataReadQueue.d.ts.map +1 -1
  47. package/dist/esm/util/DataReadQueue.js +6 -0
  48. package/dist/esm/util/DataReadQueue.js.map +1 -1
  49. package/dist/esm/util/FormattedText.js +4 -2
  50. package/dist/esm/util/FormattedText.js.map +1 -1
  51. package/dist/esm/util/Observable.d.ts +137 -12
  52. package/dist/esm/util/Observable.d.ts.map +1 -1
  53. package/dist/esm/util/Observable.js +297 -35
  54. package/dist/esm/util/Observable.js.map +2 -2
  55. package/package.json +2 -2
  56. package/src/codec/DnsCodec.ts +1 -1
  57. package/src/log/Logger.ts +26 -11
  58. package/src/time/Time.ts +4 -0
  59. package/src/transaction/Participant.ts +3 -3
  60. package/src/transaction/Transaction.ts +1 -1
  61. package/src/transaction/Tx.ts +3 -3
  62. package/src/util/Construction.ts +2 -2
  63. package/src/util/DataReadQueue.ts +7 -0
  64. package/src/util/FormattedText.ts +4 -2
  65. package/src/util/Observable.ts +453 -47
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/FormattedText.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,oBAAkD;AARlD;AAAA;AAAA;AAAA;AAAA;AAMA,MAAM,cAAc;AAUb,SAAS,cAAc,MAAc,QAAQ,KAAK;AACrD,QAAM,YAAY,gBAAgB,IAAI;AACtC,SAAO,gBAAgB,WAAW,KAAK;AAC3C;AAEA,IAAK,WAAL,kBAAKA,cAAL;AACI,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,YAAS;AACT,EAAAA,UAAA,gBAAa;AACb,EAAAA,UAAA,gBAAa;AACb,EAAAA,UAAA,gBAAa;AACb,EAAAA,UAAA,gBAAa;AAbZ,SAAAA;AAAA,GAAA;AAgBL,SAAS,WAAW,MAAc,WAAuB;AACrD,WAAS,UAAU,UAAoB;AACnC,UAAM,WAAW,UAAU,QAAQ,QAAQ;AAC3C,QAAI,YAAY,IAAI;AAChB,gBAAU,KAAK,QAAQ;AAAA,IAC3B,OAAO;AACH,gBAAU,SAAS,WAAW;AAAA,IAClC;AAAA,EACJ;AAEA,aAAW,SAAS,OAAO,OAAO,QAAQ,GAAG;AACzC,QAAI,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,KAAK;AACtC,gBAAU,KAAK,CAAC,CAAa;AAC7B;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,kBAAkB,MAAc,UAAoB,OAAe;AACxE,QAAI,CAAC,KAAK,MAAM,IAAI,GAAG;AACnB,aAAO;AAAA,IACX;AAEA,QAAI,UAAU,QAAQ,QAAQ,KAAK,MAAM,KAAK,WAAW,GAAG,KAAK,GAAG,GAAG;AACnE,gBAAU,QAAQ;AAClB,aAAO;AAAA,IACX;AAEA,WAAO;AAAA,EACX;AAEA,MAAI,kBAAkB,UAAU,uBAAiB,GAAG,EAAG;AACvD,MAAI,kBAAkB,aAAa,0BAAqB,GAAG,EAAG;AAC9D,MAAI,kBAAkB,aAAa,0BAAqB,GAAG,EAAG;AAC9D,MAAI,kBAAkB,aAAa,0BAAqB,GAAG,EAAG;AAC9D,MAAI,kBAAkB,aAAa,0BAAqB,GAAG,EAAG;AAE9D,YAAU,SAAS;AACvB;AAOA,SAAS,cAAc,MAAc;AACjC,QAAM,QAAQ,KAAK,MAAM,oBAAoB;AAC7C,MAAI,OAAO;AACP,WAAO,EAAE,QAAQ,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE;AAAA,EAC9C;AACA,SAAO,EAAE,QAAQ,MAAM,MAAM,GAAG;AACpC;AAEA,SAAS,gBAAgB,MAA6B;AAClD,MAAI,QAAQ,IAAI;AACZ,WAAO,EAAE,aAAa,GAAG,SAAS,CAAC,EAAE;AAAA,EACzC;AACA,QAAM,aAAa,KAAK,MAAM,KAAK,EAAE,IAAI,eAAa,UAAU,KAAK,EAAE,QAAQ,QAAQ,GAAG,CAAC;AAC3F,MAAI,CAAC,WAAW,QAAQ;AACpB,WAAO,EAAE,aAAa,GAAG,SAAS,CAAC,EAAE;AAAA,EACzC;AAEA,QAAM,YAAY,MAAgB;AAClC,MAAI,QAAQ;AAEZ,WAAS,eAAe;AACpB,UAAM,QAAQ,UAAU;AACxB,UAAM,YAAY;AAAA,MACd,aAAa;AAAA,MACb,SAAS,CAAC;AAAA,IACd;AAEA,WAAO,QAAQ,WAAW,QAAQ;AAC9B,iBAAW,WAAW,KAAK,GAAG,SAAS;AAGvC,UAAI,UAAU,SAAS,OAAO;AAC1B;AAAA,MACJ;AAGA,UAAI,UAAU,SAAS,OAAO;AAC1B,kBAAU,QAAQ,KAAK,aAAa,CAAC;AACrC,YAAI,UAAU,SAAS,SAAS,SAAS,WAAW,QAAQ;AACxD;AAAA,QACJ;AAAA,MACJ;AAGA,gBAAU,QAAQ,KAAK,WAAW,KAAK,CAAC;AAGxC,UAAI,OAAO;AACP,cAAM,EAAE,OAAO,IAAI,cAAc,WAAW,KAAK,CAAC;AAClD,YAAI,OAAO,SAAS,UAAU,aAAa;AACvC,oBAAU,cAAc,OAAO;AAAA,QACnC;AAAA,MACJ;AAGA;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAEA,SAAO,aAAa;AACxB;AAEA,SAAS,cAAc,OAAe,MAAgB,WAAmB,SAAiB,aAAqB;AAC3G,QAAM,WAAW,MAAM,MAAM,MAAM;AACnC,MAAI,CAAC,UAAU;AACX;AAAA,EACJ;AAIA,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACvC,QAAI,CAAC,SAAS,CAAC,EAAE,SAAS,IAAI,GAAG;AAC7B;AAAA,IACJ;AACA,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,UAAI,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AAC3B,iBAAS,OAAO,GAAG,IAAI,IAAI,GAAG,SAAS,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC;AAChE;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAGA,MAAI;AACJ,MAAI,aAAa;AAEb,iBAAa,GAAG,SAAS,cAAc,GAAG,GAAG;AAAA,EACjD,OAAO;AAEH,iBAAa;AAAA,EACjB;AAGA,QAAM,OAAO,MAAc;AAC3B,MAAI,SAAS;AAGb,MAAI,YAAY;AAChB,MAAI,iBAAiB;AACrB,aAAW,KAAK,UAAU;AACtB,UAAM,gBAAgB,gBAAgB,CAAC;AAGvC,QAAI,UAAU,SAAS,gBAAgB,WAAW;AAC9C,cAAQ;AACR,WAAK,SAAS,SAAS;AACvB,uBAAiB;AAAA,IACrB;AAGA,QAAI,CAAC,KAAK,UAAU,SAAS;AACzB,WAAK,KAAK,GAAG,SAAS,SAAS,GAAG,CAAC;AACnC,gBAAU;AAAA,IACd;AAGA,QAAI,gBAAgB;AAChB,uBAAiB;AACjB,WAAK,KAAK,UAAU;AACpB,gBAAU,WAAW;AAAA,IACzB;AAGA,SAAK,KAAK,CAAC;AACX,cAAU;AAAA,EACd;AAGA,MAAI,KAAK,QAAQ;AACb,YAAQ;AAAA,EACZ;AAEA,WAAS,UAAU;AACf,QAAI,CAAC,WAAW;AACZ,UAAI,KAAK,QAAQ;AACb,aAAK,KAAK,EAAE;AAAA,MAChB;AACA,kBAAY;AAAA,IAChB;AAEA,SAAK,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,EAC3B;AACJ;AAEA,SAAS,gBAAgB,WAA0B,OAAe;AAC9D,QAAM,QAAQ,MAAc;AAE5B,WAAS,YAAYC,YAA0B,SAAiB;AAC5D,eAAW,SAASA,WAAU,SAAS;AACnC,UAAI,OAAO,SAAS,UAAU;AAC1B,sBAAc,OAAO,OAAO,OAAO,SAASA,WAAU,WAAW;AAAA,MACrE,OAAO;AACH,oBAAY,OAAO,UAAU,WAAW;AAAA,MAC5C;AAAA,IACJ;AAAA,EACJ;AAEA,cAAY,WAAW,CAAC;AAExB,SAAO;AACX;AAEA,SAAS,gBAAgB,MAAc;AACnC,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,KAAK,UAAU;AAC/B,YAAQ,KAAK,CAAC,GAAG;AAAA,MACb,KAAK;AAED;AACA,cAAM,OAAO,KAAK,CAAC;AAEnB,YAAK,QAAQ,OAAO,QAAQ,OAAQ,SAAS,OAAO,SAAS,KAAK;AAE9D;AACA;AAAA,QACJ;AAEA,YAAI,SAAS,KAAK;AAEd;AACA,iBAAO,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,KAAK;AAErC;AAAA,UACJ;AACA,iBAAO,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,KAAK;AAErC;AAAA,UACJ;AACA,cAAI,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,KAAK;AAElC;AACA;AAAA,UACJ;AAAA,QACJ;AAEA;AAAA,MAEJ,KAAK;AAED;AACA;AAAA,MAEJ;AACI;AACA;AACA;AAAA,IACR;AAAA,EACJ;AACA,SAAO;AACX;",
4
+ "mappings": "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",
5
5
  "names": ["ListType", "structure"]
6
6
  }
@@ -55,11 +55,36 @@ export interface Observable<T extends any[] = any[], R = void> extends AsyncIter
55
55
  */
56
56
  isObservedBy(observer: Observer<T, R>): boolean;
57
57
  /**
58
- * This flag indicates whether the observable is asynchronous. Any observable that accepts promise returns may
59
- * be asynchronous but this information is not available at runtime unless you specify here, typically via
60
- * {@link AsyncObservable}.
58
+ * Errors throw by observers will interrupt emitters unless an error handler is installed here and the handler does
59
+ * not rethrow.
60
+ *
61
+ * The only exception to this is if {@link handlePromise} is false and an observer is asynchronous. In this case
62
+ * the emitter cannot be made aware of the exception.
63
+ */
64
+ handleError: ObserverErrorHandler;
65
+ /**
66
+ * We allow emitters to be async, but we do not want to overburden either the emitter or the observer with promise
67
+ * tracking if the lifetime of the observer is not relevant to the emitter.
68
+ *
69
+ * To facilitate this we allow observables to be configured in one of three promise handling modes:
70
+ *
71
+ * * If you set handlePromise, isAsync is true; the handler is invoked for any observer promise
72
+ *
73
+ * * If isAsync is true but you do not set handlePromise, any observer promise is returned to the emitter which must
74
+ * handle the promise
75
+ *
76
+ * * If isAsync is false, we log observer promise errors but the promise is otherwise untracked
77
+ *
78
+ * If the promiseHandler returns a promise or is true and the emitter returns a promise, the observable will emit to
79
+ * successive observers only after the promise resolves.
80
+ */
81
+ isAsync: boolean;
82
+ /**
83
+ * A promise handler.
84
+ *
85
+ * If you set {@link isAsync} (either true or false) the promise handler is set by the Observable.
61
86
  */
62
- isAsync?: boolean;
87
+ handlePromise: ObserverPromiseHandler | boolean;
63
88
  /**
64
89
  * Observable supports standard "for await (const value of observable").
65
90
  *
@@ -81,18 +106,22 @@ export declare const observant: unique symbol;
81
106
  * An {@link Observable} that explicitly supports asynchronous observers.
82
107
  */
83
108
  export interface AsyncObservable<T extends any[] = any[], R = void> extends Observable<T, MaybePromise<R>> {
84
- isAsync: true;
85
109
  }
86
110
  export type ObserverErrorHandler = (error: Error, observer: Observer<any[], any>) => void;
111
+ export type ObserverPromiseHandler = (promise: Promise<unknown>, observer: Observer<any[], any>) => unknown;
87
112
  /**
88
113
  * A concrete {@link Observable} implementation.
89
114
  */
90
115
  export declare class BasicObservable<T extends any[] = any[], R = void> implements Observable<T, R> {
91
116
  #private;
92
- constructor(errorHandler?: ObserverErrorHandler, isAsync?: boolean);
117
+ constructor(handleError?: ObserverErrorHandler, asyncConfig?: ObserverPromiseHandler | boolean);
93
118
  [Symbol.dispose](): void;
94
- get isAsync(): boolean | undefined;
95
- set isAsync(isAsync: boolean | undefined);
119
+ set handleError(handleError: ObserverErrorHandler);
120
+ get handleError(): ObserverErrorHandler;
121
+ set isAsync(isAsync: boolean);
122
+ get isAsync(): boolean;
123
+ set handlePromise(handlePromise: ObserverPromiseHandler);
124
+ get handlePromise(): ObserverPromiseHandler;
96
125
  get isObserved(): boolean;
97
126
  isObservedBy(observer: Observer<T, R>): boolean;
98
127
  emit(...payload: T): R | undefined;
@@ -113,8 +142,8 @@ export declare const Observable: {
113
142
  * Create an {@link AsyncObservable} that explicitly supports asynchronous results
114
143
  */
115
144
  export declare const AsyncObservable: {
116
- new <T extends any[], R = void>(errorHandler?: ObserverErrorHandler): AsyncObservable<T, R>;
117
- <T extends any[], R = void>(errorHandler?: ObserverErrorHandler): AsyncObservable<T, R>;
145
+ new <T extends any[], R = void>(handleError?: ObserverErrorHandler): AsyncObservable<T, R>;
146
+ <T extends any[], R = void>(handleError?: ObserverErrorHandler): AsyncObservable<T, R>;
118
147
  };
119
148
  /**
120
149
  * A set of observables. You can bind events using individual observables or the methods emulating a subset Node's
@@ -123,9 +152,13 @@ export declare const AsyncObservable: {
123
152
  * To maintain type safety, implementers define events as observable child properties.
124
153
  */
125
154
  export declare class EventEmitter {
155
+ private events?;
126
156
  emit<This, N extends EventEmitter.NamesOf<This>>(this: This, name: N, ...payload: EventEmitter.PayloadOf<This, N>): void;
127
157
  addListener<This, N extends EventEmitter.NamesOf<This>>(this: This, name: N, handler: EventEmitter.ObserverOf<This, N>): void;
128
158
  removeListener<This, N extends EventEmitter.NamesOf<This>>(this: This, name: N, handler: EventEmitter.ObserverOf<This, N>): void;
159
+ addEvent(name: string, event?: Observable): void;
160
+ getEvent(name: string): Observable<any[], void>;
161
+ hasEvent(name: string, onlyIfInitialized?: boolean): boolean | Observable<any[], void> | undefined;
129
162
  get eventNames(): string[];
130
163
  [Symbol.dispose](): void;
131
164
  }
@@ -151,7 +184,7 @@ export declare namespace EventEmitter {
151
184
  /**
152
185
  * An {@link Observable} that proxies to another {@link Observable}.
153
186
  *
154
- * Emits emitted here instead emit on the target {@link Observable}. Events emitted on the target emit locally via
187
+ * Events emitted here instead emit on the target {@link Observable}. Events emitted on the target emit locally via
155
188
  * a listener installed by the proxy.
156
189
  *
157
190
  * This is useful for managing a subset of {@link Observer}s for an {@link Observable}.
@@ -162,9 +195,9 @@ export declare class ObservableProxy extends BasicObservable {
162
195
  #private;
163
196
  constructor(target: Observable);
164
197
  [Symbol.dispose](): void;
165
- get isAsync(): boolean | undefined;
166
198
  get isObserved(): boolean;
167
199
  emit: (...payload: any) => any | undefined;
200
+ protected get target(): Observable<any[], void>;
168
201
  }
169
202
  /**
170
203
  * A collection of observers managed as a unit. This makes it convenient to deregister multiple observers when an
@@ -201,4 +234,96 @@ export declare namespace ObserverGroup {
201
234
  */
202
235
  type VarArgs<T extends any[]> = T extends [...infer R, infer A] ? [...R, A] : T extends [infer A] ? A : [];
203
236
  }
237
+ /**
238
+ * An {@link Observable} that emits an algorithmically-reduced number of events.
239
+ */
240
+ export declare class QuietObservable<T extends any[] = any[]> extends BasicObservable<T> implements QuietObservable.State<T> {
241
+ #private;
242
+ constructor(config?: QuietObservable.Configuration<T>);
243
+ get config(): QuietObservable.Configuration<T>;
244
+ set config(config: QuietObservable.Configuration<T>);
245
+ get emitAutomatically(): boolean;
246
+ set emitAutomatically(value: boolean);
247
+ get suppressionEnabled(): boolean;
248
+ set suppressionEnabled(value: boolean);
249
+ get minimumEmitIntervalMs(): number;
250
+ set minimumEmitIntervalMs(value: number);
251
+ get source(): Observable<T> | undefined;
252
+ set source(source: Observable<T> | undefined);
253
+ get sink(): Observable<T> | undefined;
254
+ set sink(sink: Observable<T> | undefined);
255
+ get shouldEmit(): QuietObservable.EmitPredicate<T> | undefined;
256
+ set shouldEmit(shouldEmit: QuietObservable.EmitPredicate<T> | undefined);
257
+ get isObserved(): boolean;
258
+ isObservedBy(observer: Observer<T>): boolean;
259
+ emit(...payload: T): void;
260
+ /**
261
+ * Emit immediately, regardless of suppression configuration.
262
+ */
263
+ emitNow(): void;
264
+ /**
265
+ * Emit as soon as allowed by suppression.
266
+ */
267
+ emitSoon(): void;
268
+ [Symbol.dispose](): void;
269
+ }
270
+ export declare namespace QuietObservable {
271
+ interface State<T extends any[] = any[]> {
272
+ /**
273
+ * If true this observable will emit within the suppression constraints. If false it will only emit after calls
274
+ * to {@link emitSoon} or {@link emitNow}.
275
+ */
276
+ emitAutomatically: boolean;
277
+ /**
278
+ * If true then emit rate is constrained. If false emits will occur immediately.
279
+ */
280
+ suppressionEnabled: boolean;
281
+ /**
282
+ * The minimum time between emits in milliseconds.
283
+ */
284
+ minimumEmitIntervalMs: number;
285
+ /**
286
+ * An input observable this observable will automatically observe to produce events.
287
+ */
288
+ source?: Observable<T>;
289
+ /**
290
+ * An output observable this observable will automatically emit to whenever it emits.
291
+ */
292
+ sink?: Observable<T>;
293
+ /**
294
+ * A predicate that determine whether a payload should emit.
295
+ */
296
+ shouldEmit?: EmitPredicate<T>;
297
+ /**
298
+ * Handler for errors returned by observers.
299
+ */
300
+ handleError?: ObserverErrorHandler;
301
+ /**
302
+ * Designates async support (overridden if you supply {@link handlePromise}).
303
+ */
304
+ isAsync?: boolean;
305
+ /**
306
+ * Handler for promises returned by observers.
307
+ */
308
+ handlePromise?: ObserverPromiseHandler;
309
+ }
310
+ /**
311
+ * An emit predicate may emit this value to force immediate emit.
312
+ */
313
+ const now = "now";
314
+ /**
315
+ * The return value of an emit predicate. "true" allows the event to emit as normal, "false" prevents the event
316
+ * from emitting, and {@link now} forces immediate emit regardless of interval configuration.
317
+ */
318
+ type EmitDirective = true | false | typeof now;
319
+ /**
320
+ * A predicate that may filter emits manually.
321
+ */
322
+ interface EmitPredicate<T extends any[] = any[]> {
323
+ (...payload: T): EmitDirective;
324
+ }
325
+ interface Configuration<T extends any[] = any[]> extends Partial<State<T>> {
326
+ }
327
+ const defaults: State;
328
+ }
204
329
  //# sourceMappingURL=Observable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/util/Observable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../src/util/Observable.ts"],"names":[],"mappings":"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"}
@@ -24,9 +24,11 @@ __export(Observable_exports, {
24
24
  Observable: () => Observable,
25
25
  ObservableProxy: () => ObservableProxy,
26
26
  ObserverGroup: () => ObserverGroup,
27
+ QuietObservable: () => QuietObservable,
27
28
  observant: () => observant
28
29
  });
29
30
  module.exports = __toCommonJS(Observable_exports);
31
+ var import_Time = require("#time/Time.js");
30
32
  var import_MatterError = require("../MatterError.js");
31
33
  var import_Logger = require("../log/Logger.js");
32
34
  var import_disposable = require("../polyfills/disposable.js");
@@ -43,26 +45,63 @@ function defaultErrorHandler(error) {
43
45
  throw error;
44
46
  }
45
47
  class BasicObservable {
46
- #errorHandler;
48
+ #handleError;
49
+ #isAsync;
50
+ #handlePromise;
47
51
  #observers;
48
52
  #once;
49
- #isAsync;
50
53
  #joinIteration;
51
54
  #removeIterator;
52
55
  #stopIteration;
53
- constructor(errorHandler, isAsync) {
54
- this.#errorHandler = errorHandler ?? defaultErrorHandler;
55
- this.#isAsync = isAsync;
56
+ constructor(handleError, asyncConfig) {
57
+ this.handleError = handleError ?? defaultErrorHandler;
58
+ if (typeof asyncConfig === "function") {
59
+ this.handlePromise = asyncConfig;
60
+ } else {
61
+ this.isAsync = asyncConfig ?? false;
62
+ }
56
63
  }
57
64
  [Symbol.dispose]() {
58
65
  this.#observers = this.#once = void 0;
59
66
  this.#stopIteration?.();
60
67
  }
61
- get isAsync() {
62
- return this.#isAsync;
68
+ set handleError(handleError) {
69
+ this.#handleError = handleError;
70
+ }
71
+ get handleError() {
72
+ return this.#handleError;
63
73
  }
64
74
  set isAsync(isAsync) {
65
75
  this.#isAsync = isAsync;
76
+ if (isAsync) {
77
+ this.#handlePromise = (promise) => promise;
78
+ } else {
79
+ this.#handlePromise = (promise, observer) => {
80
+ promise.catch((error) => {
81
+ let identity;
82
+ if (observer.name) {
83
+ identity = ` "${observer.name}"`;
84
+ } else {
85
+ identity = "";
86
+ }
87
+ if (this.#handleError === defaultErrorHandler) {
88
+ logger.error(`Unhandled error in async observer${identity}:`, error);
89
+ } else {
90
+ this.#handleError(error, observer);
91
+ }
92
+ });
93
+ };
94
+ }
95
+ }
96
+ get isAsync() {
97
+ return this.#isAsync;
98
+ }
99
+ set handlePromise(handlePromise) {
100
+ this.isAsync = true;
101
+ this.#handlePromise = handlePromise;
102
+ }
103
+ get handlePromise() {
104
+ return this.#handlePromise;
66
105
  }
67
106
  get isObserved() {
68
107
  if (this.#observers) {
@@ -99,7 +138,7 @@ class BasicObservable {
99
138
  try {
100
139
  result = observer(...payload);
101
140
  } catch (e) {
102
- this.#errorHandler((0, import_Error.asError)(e), observer);
141
+ this.#handleError((0, import_Error.asError)(e), observer);
103
142
  }
104
143
  if (this.#once?.has(observer)) {
105
144
  this.#once.delete(observer);
@@ -109,25 +148,18 @@ class BasicObservable {
109
148
  continue;
110
149
  }
111
150
  if (import_Promises.MaybePromise.is(result)) {
112
- if (!this.isAsync) {
113
- let identity;
114
- if (observer.name) {
115
- identity = ` "${observer.name}"`;
116
- } else {
117
- identity = "";
118
- }
119
- result.then(
120
- void 0,
121
- (error) => logger.error(`Unhandled error in async observer${identity}:`, error)
122
- );
151
+ result = this.#handlePromise(Promise.resolve(result), observer);
152
+ if (import_Promises.MaybePromise.is(result)) {
153
+ return result.then((result2) => {
154
+ if (result2 === void 0) {
155
+ return emitNext();
156
+ }
157
+ return result2;
158
+ });
159
+ }
160
+ if (result === void 0) {
123
161
  continue;
124
162
  }
125
- return result.then((result2) => {
126
- if (result2 === void 0) {
127
- return emitNext();
128
- }
129
- return result2;
130
- });
131
163
  }
132
164
  return result;
133
165
  }
@@ -204,12 +236,12 @@ class BasicObservable {
204
236
  };
205
237
  }
206
238
  }
207
- function constructObservable(errorHandler) {
208
- return new BasicObservable(errorHandler);
239
+ function constructObservable(handleError) {
240
+ return new BasicObservable(handleError);
209
241
  }
210
242
  const Observable = constructObservable;
211
- function constructAsyncObservable(errorHandler) {
212
- return new BasicObservable(errorHandler, true);
243
+ function constructAsyncObservable(handleError) {
244
+ return new BasicObservable(handleError, true);
213
245
  }
214
246
  const AsyncObservable = constructAsyncObservable;
215
247
  function event(emitter, name) {
@@ -220,6 +252,8 @@ function event(emitter, name) {
220
252
  return observer;
221
253
  }
222
254
  class EventEmitter {
255
+ // True private screws up TS types
256
+ events;
223
257
  emit(name, ...payload) {
224
258
  event(this, name).emit(...payload);
225
259
  }
@@ -229,13 +263,32 @@ class EventEmitter {
229
263
  removeListener(name, handler) {
230
264
  event(this, name).off(handler);
231
265
  }
266
+ addEvent(name, event2) {
267
+ if (!this.events) {
268
+ this.events = {};
269
+ }
270
+ this.events[name] = event2;
271
+ }
272
+ getEvent(name) {
273
+ if (!this.events || !(name in this.events)) {
274
+ throw new import_MatterError.ImplementationError(`No such event ${name}`);
275
+ }
276
+ return this.events[name] ?? (this.events[name] = Observable());
277
+ }
278
+ hasEvent(name, onlyIfInitialized = false) {
279
+ return this.events && (onlyIfInitialized ? this.events[name] : name in this.events);
280
+ }
232
281
  get eventNames() {
233
- return Object.keys(this).filter((k) => typeof this[k]?.on === "function");
282
+ return this.events ? Object.keys(this.events) : [];
234
283
  }
235
284
  [Symbol.dispose]() {
236
- for (const name of this.eventNames) {
237
- this[name][Symbol.dispose]?.();
285
+ if (!this.events) {
286
+ return;
287
+ }
288
+ for (const event2 of Object.values(this.events)) {
289
+ event2?.[Symbol.dispose]?.();
238
290
  }
291
+ this.events = void 0;
239
292
  }
240
293
  }
241
294
  class ObservableProxy extends BasicObservable {
@@ -256,13 +309,13 @@ class ObservableProxy extends BasicObservable {
256
309
  this.#target.off(this.#emitter);
257
310
  super[Symbol.dispose]();
258
311
  }
259
- get isAsync() {
260
- return this.#target.isAsync;
261
- }
262
312
  get isObserved() {
263
313
  return this.#target.isObserved;
264
314
  }
265
315
  emit;
316
+ get target() {
317
+ return this.#target;
318
+ }
266
319
  }
267
320
  class ObserverGroup {
268
321
  #defaultTarget;
@@ -334,4 +387,213 @@ class ObserverGroup {
334
387
  this.#boundObservers.clear();
335
388
  }
336
389
  }
390
+ class QuietObservable extends BasicObservable {
391
+ #emitAutomatically = QuietObservable.defaults.emitAutomatically;
392
+ #suppressionEnabled = QuietObservable.defaults.suppressionEnabled;
393
+ #minimumEmitIntervalMs = QuietObservable.defaults.minimumEmitIntervalMs;
394
+ #shouldEmit;
395
+ #source;
396
+ #sink;
397
+ #sourceObserver;
398
+ #sinkObserver;
399
+ #deferredPayload;
400
+ #lastEmitAt;
401
+ #emitTimer;
402
+ constructor(config) {
403
+ super();
404
+ if (config) {
405
+ this.config = config;
406
+ }
407
+ }
408
+ get config() {
409
+ return this;
410
+ }
411
+ set config(config) {
412
+ const { suppressionEnabled, minimumEmitIntervalMs, emitAutomatically } = config;
413
+ if (emitAutomatically !== void 0) {
414
+ this.emitAutomatically = emitAutomatically;
415
+ }
416
+ if (suppressionEnabled !== void 0) {
417
+ this.suppressionEnabled = suppressionEnabled;
418
+ }
419
+ if (minimumEmitIntervalMs !== void 0) {
420
+ this.minimumEmitIntervalMs = minimumEmitIntervalMs;
421
+ }
422
+ if ("shouldEmit" in config) {
423
+ this.shouldEmit = config.shouldEmit;
424
+ }
425
+ if ("source" in config) {
426
+ this.source = config.source;
427
+ }
428
+ if ("sink" in config) {
429
+ this.sink = config.sink;
430
+ }
431
+ if ("handleError" in config) {
432
+ this.handleError = config.handleError ?? defaultErrorHandler;
433
+ }
434
+ if ("handlePromise" in config && config.handlePromise) {
435
+ this.handlePromise = config.handlePromise;
436
+ } else {
437
+ this.isAsync = config.isAsync ?? false;
438
+ }
439
+ }
440
+ get emitAutomatically() {
441
+ return this.#emitAutomatically;
442
+ }
443
+ set emitAutomatically(value) {
444
+ this.#emitAutomatically = value;
445
+ if (value) {
446
+ this.emitSoon();
447
+ } else if (this.#emitTimer) {
448
+ this.#stop();
449
+ }
450
+ }
451
+ get suppressionEnabled() {
452
+ return this.#suppressionEnabled;
453
+ }
454
+ set suppressionEnabled(value) {
455
+ this.#suppressionEnabled = value;
456
+ }
457
+ get minimumEmitIntervalMs() {
458
+ return this.#minimumEmitIntervalMs;
459
+ }
460
+ set minimumEmitIntervalMs(value) {
461
+ if (this.#minimumEmitIntervalMs === value) {
462
+ return;
463
+ }
464
+ const needStart = this.#emitTimer !== void 0;
465
+ if (needStart) {
466
+ this.#stop();
467
+ }
468
+ this.#minimumEmitIntervalMs = value;
469
+ if (needStart) {
470
+ this.#start();
471
+ }
472
+ }
473
+ get source() {
474
+ return this.#source;
475
+ }
476
+ set source(source) {
477
+ if (this.#source === source) {
478
+ return;
479
+ }
480
+ if (this.#source && this.#sourceObserver) {
481
+ this.#source.off(this.#sourceObserver);
482
+ } else if (this.#sourceObserver === void 0) {
483
+ this.#sourceObserver = (...payload) => this.emit(...payload);
484
+ }
485
+ this.#source = source;
486
+ if (source) {
487
+ source.on(this.#sourceObserver);
488
+ }
489
+ }
490
+ get sink() {
491
+ return this.#sink;
492
+ }
493
+ set sink(sink) {
494
+ if (this.#sink === sink) {
495
+ return;
496
+ }
497
+ if (this.#sink && this.#sinkObserver) {
498
+ this.off(this.#sinkObserver);
499
+ }
500
+ this.#sink = sink;
501
+ if (sink) {
502
+ this.#sinkObserver = (...payload) => sink.emit(...payload);
503
+ this.#sinkObserver[observant] = false;
504
+ this.on(this.#sinkObserver);
505
+ }
506
+ }
507
+ get shouldEmit() {
508
+ return this.#shouldEmit;
509
+ }
510
+ set shouldEmit(shouldEmit) {
511
+ this.#shouldEmit = shouldEmit;
512
+ if (this.#deferredPayload && shouldEmit?.(...this.#deferredPayload) === false) {
513
+ this.#deferredPayload = void 0;
514
+ this.#stop();
515
+ }
516
+ }
517
+ get isObserved() {
518
+ return super.isObserved || this.#sink?.isObserved || false;
519
+ }
520
+ isObservedBy(observer) {
521
+ return this.#sink?.isObservedBy(observer) || this.isObservedBy(observer) || false;
522
+ }
523
+ emit(...payload) {
524
+ const shouldEmit = this.#shouldEmit?.(...payload);
525
+ if (shouldEmit === false) {
526
+ return;
527
+ }
528
+ const immediate = shouldEmit === "now";
529
+ if (!immediate && !this.#emitAutomatically) {
530
+ this.#deferredPayload = payload;
531
+ return;
532
+ }
533
+ const now = import_Time.Time.nowMs();
534
+ if (immediate || !this.#suppressionEnabled || this.#lastEmitAt === void 0 || this.#lastEmitAt + this.#minimumEmitIntervalMs < now) {
535
+ return this.#emit(payload, now);
536
+ }
537
+ this.#deferredPayload = payload;
538
+ this.#start(now);
539
+ }
540
+ /**
541
+ * Emit immediately, regardless of suppression configuration.
542
+ */
543
+ emitNow() {
544
+ this.#stop();
545
+ if (this.#deferredPayload) {
546
+ this.#emit(this.#deferredPayload);
547
+ this.#deferredPayload = void 0;
548
+ }
549
+ }
550
+ /**
551
+ * Emit as soon as allowed by suppression.
552
+ */
553
+ emitSoon() {
554
+ if (this.#deferredPayload && this.#emitTimer === void 0) {
555
+ this.#start();
556
+ }
557
+ }
558
+ [Symbol.dispose]() {
559
+ this.#stop();
560
+ }
561
+ #emit(payload, now) {
562
+ this.#deferredPayload = void 0;
563
+ this.#lastEmitAt = now ?? import_Time.Time.nowMs();
564
+ this.#stop();
565
+ super.emit(...payload);
566
+ }
567
+ #start(now) {
568
+ if (this.#emitTimer || this.#deferredPayload === void 0) {
569
+ return;
570
+ }
571
+ let timeout;
572
+ if (this.#lastEmitAt === void 0) {
573
+ timeout = 0;
574
+ } else {
575
+ timeout = this.#minimumEmitIntervalMs - ((now ?? import_Time.Time.nowMs()) - this.#lastEmitAt);
576
+ }
577
+ if (timeout <= 0) {
578
+ this.emitNow();
579
+ } else {
580
+ this.#emitTimer = import_Time.Time.getTimer("delayed emit", timeout, this.emitNow.bind(this));
581
+ this.#emitTimer.start();
582
+ }
583
+ }
584
+ #stop() {
585
+ if (this.#emitTimer) {
586
+ this.#emitTimer.stop();
587
+ this.#emitTimer = void 0;
588
+ }
589
+ }
590
+ }
591
+ ((QuietObservable2) => {
592
+ QuietObservable2.now = "now";
593
+ QuietObservable2.defaults = {
594
+ emitAutomatically: true,
595
+ suppressionEnabled: true,
596
+ minimumEmitIntervalMs: 1e3
597
+ };
598
+ })(QuietObservable || (QuietObservable = {}));
337
599
  //# sourceMappingURL=Observable.js.map