@dxos/async 0.8.4-main.84f28bd → 0.8.4-main.a4bbb77

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 (61) hide show
  1. package/dist/lib/browser/index.mjs +397 -251
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +397 -251
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/callback.d.ts +2 -1
  8. package/dist/types/src/callback.d.ts.map +1 -1
  9. package/dist/types/src/chain.d.ts +1 -1
  10. package/dist/types/src/chain.d.ts.map +1 -1
  11. package/dist/types/src/cleanup.d.ts +1 -1
  12. package/dist/types/src/cleanup.d.ts.map +1 -1
  13. package/dist/types/src/debounce.d.ts +16 -2
  14. package/dist/types/src/debounce.d.ts.map +1 -1
  15. package/dist/types/src/index.d.ts +0 -5
  16. package/dist/types/src/index.d.ts.map +1 -1
  17. package/dist/types/src/task-scheduling.d.ts.map +1 -1
  18. package/dist/types/src/testing.d.ts +13 -0
  19. package/dist/types/src/testing.d.ts.map +1 -1
  20. package/dist/types/src/timeout.d.ts +1 -1
  21. package/dist/types/src/timeout.d.ts.map +1 -1
  22. package/dist/types/src/trigger.d.ts +11 -0
  23. package/dist/types/src/trigger.d.ts.map +1 -1
  24. package/dist/types/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +9 -9
  26. package/src/callback.ts +3 -3
  27. package/src/chain.ts +1 -1
  28. package/src/cleanup.ts +3 -3
  29. package/src/debounce.test.ts +69 -12
  30. package/src/debounce.ts +32 -11
  31. package/src/event-emitter.test.ts +2 -1
  32. package/src/index.ts +0 -5
  33. package/src/observable-value.test.ts +1 -1
  34. package/src/persistent-lifecycle.test.ts +1 -1
  35. package/src/task-scheduling.ts +1 -1
  36. package/src/testing.test.ts +41 -1
  37. package/src/testing.ts +53 -0
  38. package/src/timeout.ts +23 -22
  39. package/src/trigger.ts +58 -1
  40. package/src/update-scheduler.ts +1 -1
  41. package/dist/types/src/latch.d.ts +0 -11
  42. package/dist/types/src/latch.d.ts.map +0 -1
  43. package/dist/types/src/sink.d.ts +0 -6
  44. package/dist/types/src/sink.d.ts.map +0 -1
  45. package/dist/types/src/throttle.d.ts +0 -2
  46. package/dist/types/src/throttle.d.ts.map +0 -1
  47. package/dist/types/src/throttle.test.d.ts +0 -2
  48. package/dist/types/src/throttle.test.d.ts.map +0 -1
  49. package/dist/types/src/types.d.ts +0 -2
  50. package/dist/types/src/types.d.ts.map +0 -1
  51. package/dist/types/src/until.d.ts +0 -14
  52. package/dist/types/src/until.d.ts.map +0 -1
  53. package/dist/types/src/until.test.d.ts +0 -2
  54. package/dist/types/src/until.test.d.ts.map +0 -1
  55. package/src/latch.ts +0 -60
  56. package/src/sink.ts +0 -26
  57. package/src/throttle.test.ts +0 -65
  58. package/src/throttle.ts +0 -14
  59. package/src/types.ts +0 -5
  60. package/src/until.test.ts +0 -47
  61. package/src/until.ts +0 -58
@@ -1,5 +1,5 @@
1
1
  // src/callback.ts
2
- var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
2
+ var promiseFromCallback = (run) => new Promise((resolve, reject) => {
3
3
  run((error, value) => {
4
4
  if (error) {
5
5
  reject(error);
@@ -10,9 +10,9 @@ var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
10
10
  });
11
11
 
12
12
  // src/chain.ts
13
- var asyncChain = (chain) => async (elements) => {
13
+ var chain = (chain2) => async (elements) => {
14
14
  let result = await elements;
15
- for (const part of chain) {
15
+ for (const part of chain2) {
16
16
  result = await Promise.all(result.map(async (element) => await part(element)));
17
17
  }
18
18
  return result;
@@ -20,6 +20,19 @@ var asyncChain = (chain) => async (elements) => {
20
20
 
21
21
  // src/cleanup.ts
22
22
  import { ComplexMap } from "@dxos/util";
23
+ function _define_property(obj, key, value) {
24
+ if (key in obj) {
25
+ Object.defineProperty(obj, key, {
26
+ value,
27
+ enumerable: true,
28
+ configurable: true,
29
+ writable: true
30
+ });
31
+ } else {
32
+ obj[key] = value;
33
+ }
34
+ return obj;
35
+ }
23
36
  var combine = (...cleanupFns) => {
24
37
  return () => {
25
38
  cleanupFns.flat().forEach((cleanupFn) => cleanupFn());
@@ -33,14 +46,11 @@ var interval = (cb, ms) => {
33
46
  const t = setInterval(cb, ms);
34
47
  return () => clearInterval(t);
35
48
  };
36
- function addEventListener(target, type, listener, options) {
49
+ var addEventListener = (target, type, listener, options) => {
37
50
  target.addEventListener(type, listener, options);
38
51
  return () => target.removeEventListener(type, listener, options);
39
- }
52
+ };
40
53
  var SubscriptionList = class {
41
- constructor() {
42
- this._cleanups = [];
43
- }
44
54
  add(cb) {
45
55
  this._cleanups.push(cb);
46
56
  return this;
@@ -49,11 +59,11 @@ var SubscriptionList = class {
49
59
  this._cleanups.forEach((cb) => cb());
50
60
  this._cleanups.length = 0;
51
61
  }
62
+ constructor() {
63
+ _define_property(this, "_cleanups", []);
64
+ }
52
65
  };
53
66
  var SubscriptionSet = class {
54
- constructor(keyProjection) {
55
- this._cleanupMap = new ComplexMap(keyProjection);
56
- }
57
67
  set(key, cb) {
58
68
  this._cleanupMap.set(key, cb);
59
69
  return this;
@@ -62,31 +72,33 @@ var SubscriptionSet = class {
62
72
  this._cleanupMap.forEach((cb) => cb());
63
73
  this._cleanupMap.clear();
64
74
  }
75
+ constructor(keyProjection) {
76
+ _define_property(this, "_cleanupMap", void 0);
77
+ this._cleanupMap = new ComplexMap(keyProjection);
78
+ }
65
79
  };
66
80
 
67
- // src/throttle.ts
68
- var throttle = (cb, wait = 100) => {
81
+ // src/debounce.ts
82
+ var debounce = (cb, delay = 100) => {
83
+ let t;
84
+ return (...args) => {
85
+ clearTimeout(t);
86
+ t = setTimeout(() => cb(...args), delay);
87
+ };
88
+ };
89
+ var throttle = (cb, delay = 100) => {
69
90
  let lastCall = 0;
70
91
  return (...args) => {
71
92
  const now = Date.now();
72
- if (now - lastCall >= wait) {
93
+ if (now - lastCall >= delay) {
73
94
  cb(...args);
74
95
  lastCall = now;
75
96
  }
76
97
  };
77
98
  };
78
-
79
- // src/debounce.ts
80
- var debounce = (cb, wait = 100) => {
81
- let t;
82
- return (...args) => {
83
- clearTimeout(t);
84
- t = setTimeout(() => cb(...args), wait);
85
- };
86
- };
87
- var debounceAndThrottle = (cb, wait = 100) => {
88
- const debounced = debounce(cb, wait);
89
- const throttled = throttle(cb, wait);
99
+ var debounceAndThrottle = (cb, delay = 100) => {
100
+ const debounced = debounce(cb, delay);
101
+ const throttled = throttle(cb, delay);
90
102
  return (...args) => {
91
103
  debounced(...args);
92
104
  throttled(...args);
@@ -124,6 +136,23 @@ var sleep = (ms) => {
124
136
  sleeper();
125
137
  });
126
138
  };
139
+ var sleepWithContext = (ctx, ms) => {
140
+ const error = new ContextDisposedError();
141
+ return new Promise((resolve, reject) => {
142
+ if (ctx.disposed) {
143
+ reject(error);
144
+ return;
145
+ }
146
+ const timeout2 = setTimeout(() => {
147
+ clearDispose();
148
+ resolve();
149
+ }, ms);
150
+ const clearDispose = ctx.onDispose(() => {
151
+ clearTimeout(timeout2);
152
+ reject(error);
153
+ });
154
+ });
155
+ };
127
156
  var asyncReturn = () => sleep(0);
128
157
  var asyncTimeout = async (promise, timeout2, err) => {
129
158
  let timeoutId;
@@ -134,7 +163,7 @@ var asyncTimeout = async (promise, timeout2, err) => {
134
163
  }, timeout2);
135
164
  unrefTimeout(timeoutId);
136
165
  });
137
- const conditionTimeout = typeof promise === "function" ? createPromiseFromCallback(promise) : promise;
166
+ const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
138
167
  return await Promise.race([
139
168
  conditionTimeout,
140
169
  timeoutPromise
@@ -147,23 +176,6 @@ var unrefTimeout = (timeoutId) => {
147
176
  timeoutId.unref();
148
177
  }
149
178
  };
150
- var sleepWithContext = (ctx, ms) => {
151
- const error = new ContextDisposedError();
152
- return new Promise((resolve, reject) => {
153
- if (ctx.disposed) {
154
- reject(error);
155
- return;
156
- }
157
- const timeout2 = setTimeout(() => {
158
- clearDispose();
159
- resolve();
160
- }, ms);
161
- const clearDispose = ctx.onDispose(() => {
162
- clearTimeout(timeout2);
163
- reject(error);
164
- });
165
- });
166
- };
167
179
 
168
180
  // src/event-emitter.ts
169
181
  var onEvent = (eventEmitter, eventName, callback) => {
@@ -190,13 +202,22 @@ var waitForEvent = (eventEmitter, eventName, test, timeout2, error) => {
190
202
 
191
203
  // src/events.ts
192
204
  import { Context } from "@dxos/context";
205
+ function _define_property2(obj, key, value) {
206
+ if (key in obj) {
207
+ Object.defineProperty(obj, key, {
208
+ value,
209
+ enumerable: true,
210
+ configurable: true,
211
+ writable: true
212
+ });
213
+ } else {
214
+ obj[key] = value;
215
+ }
216
+ return obj;
217
+ }
193
218
  var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
194
219
  var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
195
220
  var Event = class _Event {
196
- constructor() {
197
- this._listeners = /* @__PURE__ */ new Set();
198
- this._effects = /* @__PURE__ */ new Set();
199
- }
200
221
  /**
201
222
  * Wrap objects that have on/off style event emitters.
202
223
  */
@@ -450,26 +471,12 @@ var Event = class _Event {
450
471
  handle.cleanup = void 0;
451
472
  }
452
473
  }
474
+ constructor() {
475
+ _define_property2(this, "_listeners", /* @__PURE__ */ new Set());
476
+ _define_property2(this, "_effects", /* @__PURE__ */ new Set());
477
+ }
453
478
  };
454
479
  var EventListener = class {
455
- constructor(event, listener, ctx, once, weak) {
456
- this.ctx = ctx;
457
- this.once = once;
458
- this.weak = weak;
459
- this._clearDispose = void 0;
460
- this._clearDispose = ctx.onDispose(() => {
461
- event._removeListener(this);
462
- });
463
- if (weak) {
464
- this.callback = new WeakRef(listener);
465
- weakListeners().registry?.register(listener, {
466
- event: new WeakRef(event),
467
- listener: this
468
- }, this);
469
- } else {
470
- this.callback = listener;
471
- }
472
- }
473
480
  derefCallback() {
474
481
  return this.weak ? this.callback.deref() : this.callback;
475
482
  }
@@ -499,6 +506,29 @@ var EventListener = class {
499
506
  this._clearDispose?.();
500
507
  weakListeners().registry?.unregister(this);
501
508
  }
509
+ constructor(event, listener, ctx, once, weak) {
510
+ _define_property2(this, "ctx", void 0);
511
+ _define_property2(this, "once", void 0);
512
+ _define_property2(this, "weak", void 0);
513
+ _define_property2(this, "callback", void 0);
514
+ _define_property2(this, "_clearDispose", void 0);
515
+ this.ctx = ctx;
516
+ this.once = once;
517
+ this.weak = weak;
518
+ this._clearDispose = void 0;
519
+ this._clearDispose = ctx.onDispose(() => {
520
+ event._removeListener(this);
521
+ });
522
+ if (weak) {
523
+ this.callback = new WeakRef(listener);
524
+ weakListeners().registry?.register(listener, {
525
+ event: new WeakRef(event),
526
+ listener: this
527
+ }, this);
528
+ } else {
529
+ this.callback = listener;
530
+ }
531
+ }
502
532
  };
503
533
  var weakListenersState = null;
504
534
  var FINALIZATION_REGISTRY_SUPPORTED = !!globalThis.FinalizationRegistry;
@@ -508,73 +538,31 @@ var weakListeners = () => {
508
538
  registry: void 0
509
539
  };
510
540
  }
511
- weakListenersState ??= new FinalizationRegistry(({ event, listener }) => {
541
+ weakListenersState ?? (weakListenersState = new FinalizationRegistry(({ event, listener }) => {
512
542
  event.deref()?._removeListener(listener);
513
- });
543
+ }));
514
544
  return {
515
545
  registry: weakListenersState
516
546
  };
517
547
  };
518
548
 
519
- // src/latch.ts
520
- import { invariant } from "@dxos/invariant";
521
- var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/latch.ts";
522
- var latch = ({ count = 1, timeout: timeout2 } = {}) => {
523
- invariant(count >= 0, void 0, {
524
- F: __dxlog_file2,
525
- L: 19,
526
- S: void 0,
527
- A: [
528
- "count >= 0",
529
- ""
530
- ]
531
- });
532
- let t;
533
- let doResolve;
534
- let doReject;
535
- const promise = new Promise((resolve, reject) => {
536
- doResolve = (value) => {
537
- clearTimeout(t);
538
- resolve(value);
539
- };
540
- doReject = (err) => {
541
- clearTimeout(t);
542
- reject(err);
543
- };
544
- });
545
- if (count === 0) {
546
- setTimeout(() => {
547
- doResolve(0);
548
- });
549
- } else {
550
- if (timeout2) {
551
- t = setTimeout(() => {
552
- doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
553
- }, timeout2);
554
- }
555
- }
556
- let i = 0;
557
- return [
558
- async () => await promise,
559
- () => {
560
- if (++i === count) {
561
- doResolve(i);
562
- }
563
- return i;
564
- },
565
- (err) => doReject(err)
566
- ];
567
- };
568
-
569
549
  // src/mutex.ts
570
550
  import "@dxos/util";
571
551
  import { warnAfterTimeout } from "@dxos/debug";
572
- var Mutex = class {
573
- constructor() {
574
- this._queue = Promise.resolve();
575
- this._queueLength = 0;
576
- this._tag = null;
552
+ function _define_property3(obj, key, value) {
553
+ if (key in obj) {
554
+ Object.defineProperty(obj, key, {
555
+ value,
556
+ enumerable: true,
557
+ configurable: true,
558
+ writable: true
559
+ });
560
+ } else {
561
+ obj[key] = value;
577
562
  }
563
+ return obj;
564
+ }
565
+ var Mutex = class {
578
566
  get tag() {
579
567
  return this._tag;
580
568
  }
@@ -618,11 +606,13 @@ var Mutex = class {
618
606
  guard.release();
619
607
  }
620
608
  }
609
+ constructor() {
610
+ _define_property3(this, "_queue", Promise.resolve());
611
+ _define_property3(this, "_queueLength", 0);
612
+ _define_property3(this, "_tag", null);
613
+ }
621
614
  };
622
615
  var MutexGuard = class {
623
- constructor(_release) {
624
- this._release = _release;
625
- }
626
616
  /**
627
617
  * Releases the lock.
628
618
  */
@@ -632,6 +622,10 @@ var MutexGuard = class {
632
622
  [Symbol.dispose]() {
633
623
  this.release();
634
624
  }
625
+ constructor(_release) {
626
+ _define_property3(this, "_release", void 0);
627
+ this._release = _release;
628
+ }
635
629
  };
636
630
  var classMutexSymbol = Symbol("class-mutex");
637
631
  var FORCE_DISABLE_WARNING = false;
@@ -639,7 +633,8 @@ var enableWarning = !FORCE_DISABLE_WARNING && globalThis.mochaExecutor;
639
633
  var synchronized = (target, propertyName, descriptor) => {
640
634
  const method = descriptor.value;
641
635
  descriptor.value = async function synchronizedMethod(...args) {
642
- const mutex = this[classMutexSymbol] ??= new Mutex();
636
+ var _classMutexSymbol;
637
+ const mutex = this[_classMutexSymbol = classMutexSymbol] ?? (this[_classMutexSymbol] = new Mutex());
643
638
  const tag = `${target.constructor.name}.${propertyName}`;
644
639
  let guard;
645
640
  if (!enableWarning) {
@@ -663,6 +658,21 @@ import Observable from "zen-observable";
663
658
  import PushStream from "zen-push";
664
659
 
665
660
  // src/trigger.ts
661
+ import { invariant } from "@dxos/invariant";
662
+ function _define_property4(obj, key, value) {
663
+ if (key in obj) {
664
+ Object.defineProperty(obj, key, {
665
+ value,
666
+ enumerable: true,
667
+ configurable: true,
668
+ writable: true
669
+ });
670
+ } else {
671
+ obj[key] = value;
672
+ }
673
+ return obj;
674
+ }
675
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
666
676
  var trigger = (timeout2) => {
667
677
  let callback;
668
678
  const promise = new Promise((resolve, reject) => {
@@ -678,20 +688,13 @@ var trigger = (timeout2) => {
678
688
  resolver
679
689
  ];
680
690
  };
681
- var TriggerState = /* @__PURE__ */ function(TriggerState2) {
691
+ var TriggerState = /* @__PURE__ */ (function(TriggerState2) {
682
692
  TriggerState2["WAITING"] = "WAITING";
683
693
  TriggerState2["RESOLVED"] = "RESOLVED";
684
694
  TriggerState2["REJECTED"] = "REJECTED";
685
695
  return TriggerState2;
686
- }({});
696
+ })({});
687
697
  var Trigger = class {
688
- constructor(_options = {
689
- autoReset: false
690
- }) {
691
- this._options = _options;
692
- this._state = "WAITING";
693
- this.reset();
694
- }
695
698
  get state() {
696
699
  return this._state;
697
700
  }
@@ -748,27 +751,81 @@ var Trigger = class {
748
751
  }
749
752
  return this;
750
753
  }
754
+ constructor(_options = {
755
+ autoReset: false
756
+ }) {
757
+ _define_property4(this, "_options", void 0);
758
+ _define_property4(this, "_promise", void 0);
759
+ _define_property4(this, "_resolve", void 0);
760
+ _define_property4(this, "_reject", void 0);
761
+ _define_property4(this, "_state", void 0);
762
+ this._options = _options;
763
+ this._state = "WAITING";
764
+ this.reset();
765
+ }
766
+ };
767
+ var latch = ({ count = 1, timeout: timeout2 } = {}) => {
768
+ invariant(count >= 0, void 0, {
769
+ F: __dxlog_file2,
770
+ L: 139,
771
+ S: void 0,
772
+ A: [
773
+ "count >= 0",
774
+ ""
775
+ ]
776
+ });
777
+ let t;
778
+ let doResolve;
779
+ let doReject;
780
+ const promise = new Promise((resolve, reject) => {
781
+ doResolve = (value) => {
782
+ clearTimeout(t);
783
+ resolve(value);
784
+ };
785
+ doReject = (err) => {
786
+ clearTimeout(t);
787
+ reject(err);
788
+ };
789
+ });
790
+ if (count === 0) {
791
+ setTimeout(() => {
792
+ doResolve(0);
793
+ });
794
+ } else {
795
+ if (timeout2) {
796
+ t = setTimeout(() => {
797
+ doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
798
+ }, timeout2);
799
+ }
800
+ }
801
+ let i = 0;
802
+ return [
803
+ async () => await promise,
804
+ () => {
805
+ if (++i === count) {
806
+ doResolve(i);
807
+ }
808
+ return i;
809
+ },
810
+ (err) => doReject(err)
811
+ ];
751
812
  };
752
813
 
753
814
  // src/observable.ts
754
- var MulticastObservable = class _MulticastObservable extends Observable {
755
- constructor(subscriber, _value) {
756
- super((observer) => this._subscribe(observer)), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
757
- next: (value) => {
758
- this._value = value;
759
- this._observers.forEach((observer) => observer.next?.(value));
760
- },
761
- error: (err) => {
762
- this._observers.forEach((observer) => observer.error?.(err));
763
- },
764
- complete: () => {
765
- this._completed.wake();
766
- this._observers.forEach((observer) => observer.complete?.());
767
- }
768
- };
769
- this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
770
- this._observable.subscribe(this._handlers);
815
+ function _define_property5(obj, key, value) {
816
+ if (key in obj) {
817
+ Object.defineProperty(obj, key, {
818
+ value,
819
+ enumerable: true,
820
+ configurable: true,
821
+ writable: true
822
+ });
823
+ } else {
824
+ obj[key] = value;
771
825
  }
826
+ return obj;
827
+ }
828
+ var MulticastObservable = class _MulticastObservable extends Observable {
772
829
  static from(value, initialValue) {
773
830
  if ("emit" in value) {
774
831
  return new _MulticastObservable((observer) => {
@@ -849,18 +906,42 @@ var MulticastObservable = class _MulticastObservable extends Observable {
849
906
  this._observers.delete(observer);
850
907
  };
851
908
  }
909
+ constructor(subscriber, _value) {
910
+ super((observer) => this._subscribe(observer)), _define_property5(this, "_value", void 0), _define_property5(this, "_observers", void 0), _define_property5(this, "_observable", void 0), _define_property5(this, "_completed", void 0), _define_property5(this, "_handlers", void 0), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
911
+ next: (value) => {
912
+ this._value = value;
913
+ this._observers.forEach((observer) => observer.next?.(value));
914
+ },
915
+ error: (err) => {
916
+ this._observers.forEach((observer) => observer.error?.(err));
917
+ },
918
+ complete: () => {
919
+ this._completed.wake();
920
+ this._observers.forEach((observer) => observer.complete?.());
921
+ }
922
+ };
923
+ this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
924
+ this._observable.subscribe(this._handlers);
925
+ }
852
926
  };
853
927
  var EMPTY_OBSERVABLE = MulticastObservable.of(null);
854
928
 
855
929
  // src/observable-value.ts
856
930
  import { createSetDispatch } from "@dxos/util";
857
- var ObservableProvider = class {
858
- constructor() {
859
- this._handlers = /* @__PURE__ */ new Set();
860
- this._proxy = createSetDispatch({
861
- handlers: this._handlers
931
+ function _define_property6(obj, key, value) {
932
+ if (key in obj) {
933
+ Object.defineProperty(obj, key, {
934
+ value,
935
+ enumerable: true,
936
+ configurable: true,
937
+ writable: true
862
938
  });
939
+ } else {
940
+ obj[key] = value;
863
941
  }
942
+ return obj;
943
+ }
944
+ var ObservableProvider = class {
864
945
  /**
865
946
  * Proxy used to dispatch callbacks to each subscription.
866
947
  */
@@ -879,11 +960,15 @@ var ObservableProvider = class {
879
960
  this._handlers.delete(handler);
880
961
  };
881
962
  }
963
+ constructor() {
964
+ _define_property6(this, "_handlers", /* @__PURE__ */ new Set());
965
+ _define_property6(this, "_proxy", createSetDispatch({
966
+ handlers: this._handlers
967
+ }));
968
+ _define_property6(this, "_value", void 0);
969
+ }
882
970
  };
883
971
  var CancellableObservableProvider = class extends ObservableProvider {
884
- constructor(_handleCancel) {
885
- super(), this._handleCancel = _handleCancel, this._cancelled = false;
886
- }
887
972
  get cancelled() {
888
973
  return this._cancelled;
889
974
  }
@@ -895,6 +980,9 @@ var CancellableObservableProvider = class extends ObservableProvider {
895
980
  await this._handleCancel?.();
896
981
  this.callback.onCancelled?.();
897
982
  }
983
+ constructor(_handleCancel) {
984
+ super(), _define_property6(this, "_handleCancel", void 0), _define_property6(this, "_cancelled", void 0), this._handleCancel = _handleCancel, this._cancelled = false;
985
+ }
898
986
  };
899
987
 
900
988
  // src/persistent-lifecycle.ts
@@ -991,14 +1079,20 @@ if (enabled) {
991
1079
  }
992
1080
 
993
1081
  // src/task-scheduling.ts
994
- var DeferredTask = class {
995
- constructor(_ctx, _callback) {
996
- this._ctx = _ctx;
997
- this._callback = _callback;
998
- this._scheduled = false;
999
- this._currentTask = null;
1000
- this._nextTask = new Trigger();
1082
+ function _define_property7(obj, key, value) {
1083
+ if (key in obj) {
1084
+ Object.defineProperty(obj, key, {
1085
+ value,
1086
+ enumerable: true,
1087
+ configurable: true,
1088
+ writable: true
1089
+ });
1090
+ } else {
1091
+ obj[key] = value;
1001
1092
  }
1093
+ return obj;
1094
+ }
1095
+ var DeferredTask = class {
1002
1096
  get scheduled() {
1003
1097
  return this._scheduled;
1004
1098
  }
@@ -1037,6 +1131,18 @@ var DeferredTask = class {
1037
1131
  async join() {
1038
1132
  await this._currentTask;
1039
1133
  }
1134
+ constructor(_ctx, _callback) {
1135
+ _define_property7(this, "_ctx", void 0);
1136
+ _define_property7(this, "_callback", void 0);
1137
+ _define_property7(this, "_scheduled", void 0);
1138
+ _define_property7(this, "_currentTask", void 0);
1139
+ _define_property7(this, "_nextTask", void 0);
1140
+ this._ctx = _ctx;
1141
+ this._callback = _callback;
1142
+ this._scheduled = false;
1143
+ this._currentTask = null;
1144
+ this._nextTask = new Trigger();
1145
+ }
1040
1146
  };
1041
1147
  var runInContext = (ctx, fn) => {
1042
1148
  try {
@@ -1117,6 +1223,19 @@ var scheduleExponentialBackoffTaskInterval = (ctx, task, initialInterval) => {
1117
1223
  };
1118
1224
 
1119
1225
  // src/persistent-lifecycle.ts
1226
+ function _define_property8(obj, key, value) {
1227
+ if (key in obj) {
1228
+ Object.defineProperty(obj, key, {
1229
+ value,
1230
+ enumerable: true,
1231
+ configurable: true,
1232
+ writable: true
1233
+ });
1234
+ } else {
1235
+ obj[key] = value;
1236
+ }
1237
+ return obj;
1238
+ }
1120
1239
  function _ts_decorate(decorators, target, key, desc) {
1121
1240
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1122
1241
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1127,16 +1246,6 @@ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecyc
1127
1246
  var INIT_RESTART_DELAY = 100;
1128
1247
  var DEFAULT_MAX_RESTART_DELAY = 5e3;
1129
1248
  var PersistentLifecycle = class extends Resource {
1130
- constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
1131
- super();
1132
- this._currentState = void 0;
1133
- this._restartTask = void 0;
1134
- this._restartAfter = 0;
1135
- this._start = start;
1136
- this._stop = stop;
1137
- this._onRestart = onRestart;
1138
- this._maxRestartDelay = maxRestartDelay;
1139
- }
1140
1249
  get state() {
1141
1250
  return this._currentState;
1142
1251
  }
@@ -1219,6 +1328,13 @@ var PersistentLifecycle = class extends Resource {
1219
1328
  }
1220
1329
  this._restartTask.schedule();
1221
1330
  }
1331
+ constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
1332
+ super(), _define_property8(this, "_start", void 0), _define_property8(this, "_stop", void 0), _define_property8(this, "_onRestart", void 0), _define_property8(this, "_maxRestartDelay", void 0), _define_property8(this, "_currentState", void 0), _define_property8(this, "_restartTask", void 0), _define_property8(this, "_restartAfter", 0);
1333
+ this._start = start;
1334
+ this._stop = stop;
1335
+ this._onRestart = onRestart;
1336
+ this._maxRestartDelay = maxRestartDelay;
1337
+ }
1222
1338
  };
1223
1339
  _ts_decorate([
1224
1340
  synchronized
@@ -1293,20 +1409,6 @@ var makePushIterable = () => {
1293
1409
  };
1294
1410
  };
1295
1411
 
1296
- // src/sink.ts
1297
- var sink = (emitter, event, count = 1) => {
1298
- const [getPromise, resolve] = trigger();
1299
- let counter = 0;
1300
- const listener = () => {
1301
- if (++counter === count) {
1302
- emitter.off(event, listener);
1303
- resolve();
1304
- }
1305
- };
1306
- emitter.on(event, listener);
1307
- return getPromise();
1308
- };
1309
-
1310
1412
  // src/stream-to-array.ts
1311
1413
  var streamToArray = (stream) => {
1312
1414
  let deferred;
@@ -1351,12 +1453,20 @@ var streamToArray = (stream) => {
1351
1453
 
1352
1454
  // src/test-stream.ts
1353
1455
  import { Duplex } from "@dxos/node-std/stream";
1354
- var TestStream = class extends Duplex {
1355
- constructor() {
1356
- super(...arguments);
1357
- this._received = Buffer.alloc(0);
1358
- this._onWrite = new Event();
1456
+ function _define_property9(obj, key, value) {
1457
+ if (key in obj) {
1458
+ Object.defineProperty(obj, key, {
1459
+ value,
1460
+ enumerable: true,
1461
+ configurable: true,
1462
+ writable: true
1463
+ });
1464
+ } else {
1465
+ obj[key] = value;
1359
1466
  }
1467
+ return obj;
1468
+ }
1469
+ var TestStream = class extends Duplex {
1360
1470
  static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
1361
1471
  stream1.push("ping");
1362
1472
  stream2.push("pong");
@@ -1383,6 +1493,9 @@ var TestStream = class extends Duplex {
1383
1493
  const dataBuffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
1384
1494
  return asyncTimeout(this._onWrite.waitForCondition(() => this._received.equals(dataBuffer)), timeout2);
1385
1495
  }
1496
+ constructor(...args) {
1497
+ super(...args), _define_property9(this, "_received", Buffer.alloc(0)), _define_property9(this, "_onWrite", new Event());
1498
+ }
1386
1499
  };
1387
1500
 
1388
1501
  // src/testing.ts
@@ -1410,14 +1523,55 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
1410
1523
  timeout: timeout2
1411
1524
  });
1412
1525
  };
1526
+ var until = (cb, timeout2) => {
1527
+ return new Promise((resolve, reject) => {
1528
+ const t = timeout2 && setTimeout(() => {
1529
+ reject(new Error(`Timeout after ${t}ms`));
1530
+ }, timeout2);
1531
+ setTimeout(async () => {
1532
+ try {
1533
+ await cb((value) => {
1534
+ t && clearTimeout(t);
1535
+ resolve(value);
1536
+ }, (error) => {
1537
+ t && clearTimeout(t);
1538
+ reject(error);
1539
+ });
1540
+ } catch (err) {
1541
+ reject(err);
1542
+ }
1543
+ });
1544
+ });
1545
+ };
1546
+ var untilPromise = (cb) => cb();
1547
+ var untilError = (cb) => {
1548
+ return new Promise((resolve, reject) => {
1549
+ setTimeout(async () => {
1550
+ try {
1551
+ await cb();
1552
+ reject(new Error("No error was thrown."));
1553
+ } catch (err) {
1554
+ resolve(err);
1555
+ }
1556
+ });
1557
+ });
1558
+ };
1413
1559
 
1414
1560
  // src/timer.ts
1415
- var Timer = class {
1416
- constructor(_callback) {
1417
- this._callback = _callback;
1418
- this._state = new Event();
1419
- this._count = 0;
1561
+ function _define_property10(obj, key, value) {
1562
+ if (key in obj) {
1563
+ Object.defineProperty(obj, key, {
1564
+ value,
1565
+ enumerable: true,
1566
+ configurable: true,
1567
+ writable: true
1568
+ });
1569
+ } else {
1570
+ obj[key] = value;
1420
1571
  }
1572
+ return obj;
1573
+ }
1574
+ var Timer = class {
1421
1575
  get state() {
1422
1576
  return this._state;
1423
1577
  }
@@ -1457,57 +1611,33 @@ var Timer = class {
1457
1611
  this._state.emit(false);
1458
1612
  return this;
1459
1613
  }
1460
- };
1461
-
1462
- // src/until.ts
1463
- var until = (cb, timeout2) => {
1464
- return new Promise((resolve, reject) => {
1465
- const t = timeout2 && setTimeout(() => {
1466
- reject(new Error(`Timeout after ${t}ms`));
1467
- }, timeout2);
1468
- setTimeout(async () => {
1469
- try {
1470
- await cb((value) => {
1471
- t && clearTimeout(t);
1472
- resolve(value);
1473
- }, (error) => {
1474
- t && clearTimeout(t);
1475
- reject(error);
1476
- });
1477
- } catch (err) {
1478
- reject(err);
1479
- }
1480
- });
1481
- });
1482
- };
1483
- var untilPromise = (cb) => cb();
1484
- var untilError = (cb) => {
1485
- return new Promise((resolve, reject) => {
1486
- setTimeout(async () => {
1487
- try {
1488
- await cb();
1489
- reject(new Error("No error was thrown."));
1490
- } catch (err) {
1491
- resolve(err);
1492
- }
1493
- });
1494
- });
1614
+ constructor(_callback) {
1615
+ _define_property10(this, "_callback", void 0);
1616
+ _define_property10(this, "_state", void 0);
1617
+ _define_property10(this, "_timer", void 0);
1618
+ _define_property10(this, "_count", void 0);
1619
+ this._callback = _callback;
1620
+ this._state = new Event();
1621
+ this._count = 0;
1622
+ }
1495
1623
  };
1496
1624
 
1497
1625
  // src/update-scheduler.ts
1498
- var TIME_PERIOD = 1e3;
1499
- var UpdateScheduler = class {
1500
- constructor(_ctx, _callback, _params = {}) {
1501
- this._ctx = _ctx;
1502
- this._callback = _callback;
1503
- this._params = _params;
1504
- this._promise = null;
1505
- this._scheduled = false;
1506
- this._lastUpdateTime = -TIME_PERIOD;
1507
- _ctx.onDispose(async () => {
1508
- await this._promise;
1626
+ function _define_property11(obj, key, value) {
1627
+ if (key in obj) {
1628
+ Object.defineProperty(obj, key, {
1629
+ value,
1630
+ enumerable: true,
1631
+ configurable: true,
1632
+ writable: true
1509
1633
  });
1634
+ } else {
1635
+ obj[key] = value;
1510
1636
  }
1637
+ return obj;
1638
+ }
1639
+ var TIME_PERIOD = 1e3;
1640
+ var UpdateScheduler = class {
1511
1641
  trigger() {
1512
1642
  if (this._scheduled) {
1513
1643
  return;
@@ -1564,6 +1694,23 @@ var UpdateScheduler = class {
1564
1694
  this._promise = this._callback();
1565
1695
  await this._promise;
1566
1696
  }
1697
+ constructor(_ctx, _callback, _params = {}) {
1698
+ _define_property11(this, "_ctx", void 0);
1699
+ _define_property11(this, "_callback", void 0);
1700
+ _define_property11(this, "_params", void 0);
1701
+ _define_property11(this, "_promise", void 0);
1702
+ _define_property11(this, "_scheduled", void 0);
1703
+ _define_property11(this, "_lastUpdateTime", void 0);
1704
+ this._ctx = _ctx;
1705
+ this._callback = _callback;
1706
+ this._params = _params;
1707
+ this._promise = null;
1708
+ this._scheduled = false;
1709
+ this._lastUpdateTime = -TIME_PERIOD;
1710
+ _ctx.onDispose(async () => {
1711
+ await this._promise;
1712
+ });
1713
+ }
1567
1714
  };
1568
1715
  export {
1569
1716
  CancellableObservableProvider,
@@ -1586,11 +1733,10 @@ export {
1586
1733
  UpdateScheduler,
1587
1734
  addEventListener,
1588
1735
  addListener,
1589
- asyncChain,
1590
1736
  asyncReturn,
1591
1737
  asyncTimeout,
1738
+ chain,
1592
1739
  combine,
1593
- createPromiseFromCallback,
1594
1740
  debounce,
1595
1741
  debounceAndThrottle,
1596
1742
  dumpLeaks,
@@ -1599,13 +1745,13 @@ export {
1599
1745
  makePushIterable,
1600
1746
  observableError,
1601
1747
  onEvent,
1748
+ promiseFromCallback,
1602
1749
  runInContext,
1603
1750
  runInContextAsync,
1604
1751
  scheduleExponentialBackoffTaskInterval,
1605
1752
  scheduleMicroTask,
1606
1753
  scheduleTask,
1607
1754
  scheduleTaskInterval,
1608
- sink,
1609
1755
  sleep,
1610
1756
  sleepWithContext,
1611
1757
  streamToArray,