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