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

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 +193 -192
  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 +193 -192
  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;
@@ -35,14 +35,12 @@ var interval = (cb, ms) => {
35
35
  const t = setInterval(cb, ms);
36
36
  return () => clearInterval(t);
37
37
  };
38
- function addEventListener(target, type, listener, options) {
38
+ var addEventListener = (target, type, listener, options) => {
39
39
  target.addEventListener(type, listener, options);
40
40
  return () => target.removeEventListener(type, listener, options);
41
- }
41
+ };
42
42
  var SubscriptionList = class {
43
- constructor() {
44
- this._cleanups = [];
45
- }
43
+ _cleanups = [];
46
44
  add(cb) {
47
45
  this._cleanups.push(cb);
48
46
  return this;
@@ -53,6 +51,7 @@ var SubscriptionList = class {
53
51
  }
54
52
  };
55
53
  var SubscriptionSet = class {
54
+ _cleanupMap;
56
55
  constructor(keyProjection) {
57
56
  this._cleanupMap = new ComplexMap(keyProjection);
58
57
  }
@@ -66,29 +65,27 @@ var SubscriptionSet = class {
66
65
  }
67
66
  };
68
67
 
69
- // src/throttle.ts
70
- var throttle = (cb, wait = 100) => {
68
+ // src/debounce.ts
69
+ var debounce = (cb, delay = 100) => {
70
+ let t;
71
+ return (...args) => {
72
+ clearTimeout(t);
73
+ t = setTimeout(() => cb(...args), delay);
74
+ };
75
+ };
76
+ var throttle = (cb, delay = 100) => {
71
77
  let lastCall = 0;
72
78
  return (...args) => {
73
79
  const now = Date.now();
74
- if (now - lastCall >= wait) {
80
+ if (now - lastCall >= delay) {
75
81
  cb(...args);
76
82
  lastCall = now;
77
83
  }
78
84
  };
79
85
  };
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);
86
+ var debounceAndThrottle = (cb, delay = 100) => {
87
+ const debounced = debounce(cb, delay);
88
+ const throttled = throttle(cb, delay);
92
89
  return (...args) => {
93
90
  debounced(...args);
94
91
  throttled(...args);
@@ -126,6 +123,23 @@ var sleep = (ms) => {
126
123
  sleeper();
127
124
  });
128
125
  };
126
+ var sleepWithContext = (ctx, ms) => {
127
+ const error = new ContextDisposedError();
128
+ return new Promise((resolve, reject) => {
129
+ if (ctx.disposed) {
130
+ reject(error);
131
+ return;
132
+ }
133
+ const timeout2 = setTimeout(() => {
134
+ clearDispose();
135
+ resolve();
136
+ }, ms);
137
+ const clearDispose = ctx.onDispose(() => {
138
+ clearTimeout(timeout2);
139
+ reject(error);
140
+ });
141
+ });
142
+ };
129
143
  var asyncReturn = () => sleep(0);
130
144
  var asyncTimeout = async (promise, timeout2, err) => {
131
145
  let timeoutId;
@@ -136,7 +150,7 @@ var asyncTimeout = async (promise, timeout2, err) => {
136
150
  }, timeout2);
137
151
  unrefTimeout(timeoutId);
138
152
  });
139
- const conditionTimeout = typeof promise === "function" ? createPromiseFromCallback(promise) : promise;
153
+ const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
140
154
  return await Promise.race([
141
155
  conditionTimeout,
142
156
  timeoutPromise
@@ -149,23 +163,6 @@ var unrefTimeout = (timeoutId) => {
149
163
  timeoutId.unref();
150
164
  }
151
165
  };
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
166
 
170
167
  // src/event-emitter.ts
171
168
  var onEvent = (eventEmitter, eventName, callback) => {
@@ -195,10 +192,6 @@ import { Context } from "@dxos/context";
195
192
  var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
196
193
  var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
197
194
  var Event = class _Event {
198
- constructor() {
199
- this._listeners = /* @__PURE__ */ new Set();
200
- this._effects = /* @__PURE__ */ new Set();
201
- }
202
195
  /**
203
196
  * Wrap objects that have on/off style event emitters.
204
197
  */
@@ -211,6 +204,8 @@ var Event = class _Event {
211
204
  });
212
205
  return event;
213
206
  }
207
+ _listeners = /* @__PURE__ */ new Set();
208
+ _effects = /* @__PURE__ */ new Set();
214
209
  /**
215
210
  * Emit an event.
216
211
  * In most cases should only be called by the class or entity containing the event.
@@ -454,11 +449,15 @@ var Event = class _Event {
454
449
  }
455
450
  };
456
451
  var EventListener = class {
452
+ ctx;
453
+ once;
454
+ weak;
455
+ callback;
456
+ _clearDispose = void 0;
457
457
  constructor(event, listener, ctx, once, weak) {
458
458
  this.ctx = ctx;
459
459
  this.once = once;
460
460
  this.weak = weak;
461
- this._clearDispose = void 0;
462
461
  this._clearDispose = ctx.onDispose(() => {
463
462
  event._removeListener(this);
464
463
  });
@@ -518,65 +517,13 @@ var weakListeners = () => {
518
517
  };
519
518
  };
520
519
 
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
520
  // src/mutex.ts
572
521
  import "@dxos/util";
573
522
  import { warnAfterTimeout } from "@dxos/debug";
574
523
  var Mutex = class {
575
- constructor() {
576
- this._queue = Promise.resolve();
577
- this._queueLength = 0;
578
- this._tag = null;
579
- }
524
+ _queue = Promise.resolve();
525
+ _queueLength = 0;
526
+ _tag = null;
580
527
  get tag() {
581
528
  return this._tag;
582
529
  }
@@ -622,6 +569,7 @@ var Mutex = class {
622
569
  }
623
570
  };
624
571
  var MutexGuard = class {
572
+ _release;
625
573
  constructor(_release) {
626
574
  this._release = _release;
627
575
  }
@@ -665,6 +613,8 @@ import Observable from "zen-observable";
665
613
  import PushStream from "zen-push";
666
614
 
667
615
  // src/trigger.ts
616
+ import { invariant } from "@dxos/invariant";
617
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
668
618
  var trigger = (timeout2) => {
669
619
  let callback;
670
620
  const promise = new Promise((resolve, reject) => {
@@ -680,18 +630,22 @@ var trigger = (timeout2) => {
680
630
  resolver
681
631
  ];
682
632
  };
683
- var TriggerState = /* @__PURE__ */ function(TriggerState2) {
633
+ var TriggerState = /* @__PURE__ */ (function(TriggerState2) {
684
634
  TriggerState2["WAITING"] = "WAITING";
685
635
  TriggerState2["RESOLVED"] = "RESOLVED";
686
636
  TriggerState2["REJECTED"] = "REJECTED";
687
637
  return TriggerState2;
688
- }({});
638
+ })({});
689
639
  var Trigger = class {
640
+ _options;
641
+ _promise;
642
+ _resolve;
643
+ _reject;
644
+ _state = "WAITING";
690
645
  constructor(_options = {
691
646
  autoReset: false
692
647
  }) {
693
648
  this._options = _options;
694
- this._state = "WAITING";
695
649
  this.reset();
696
650
  }
697
651
  get state() {
@@ -751,23 +705,61 @@ var Trigger = class {
751
705
  return this;
752
706
  }
753
707
  };
708
+ var latch = ({ count = 1, timeout: timeout2 } = {}) => {
709
+ invariant(count >= 0, void 0, {
710
+ F: __dxlog_file2,
711
+ L: 139,
712
+ S: void 0,
713
+ A: [
714
+ "count >= 0",
715
+ ""
716
+ ]
717
+ });
718
+ let t;
719
+ let doResolve;
720
+ let doReject;
721
+ const promise = new Promise((resolve, reject) => {
722
+ doResolve = (value) => {
723
+ clearTimeout(t);
724
+ resolve(value);
725
+ };
726
+ doReject = (err) => {
727
+ clearTimeout(t);
728
+ reject(err);
729
+ };
730
+ });
731
+ if (count === 0) {
732
+ setTimeout(() => {
733
+ doResolve(0);
734
+ });
735
+ } else {
736
+ if (timeout2) {
737
+ t = setTimeout(() => {
738
+ doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
739
+ }, timeout2);
740
+ }
741
+ }
742
+ let i = 0;
743
+ return [
744
+ async () => await promise,
745
+ () => {
746
+ if (++i === count) {
747
+ doResolve(i);
748
+ }
749
+ return i;
750
+ },
751
+ (err) => doReject(err)
752
+ ];
753
+ };
754
754
 
755
755
  // src/observable.ts
756
756
  var MulticastObservable = class _MulticastObservable extends Observable {
757
+ _value;
758
+ _observers = /* @__PURE__ */ new Set();
759
+ _observable;
760
+ _completed = new Trigger();
757
761
  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
- };
762
+ super((observer) => this._subscribe(observer)), this._value = _value;
771
763
  this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
772
764
  this._observable.subscribe(this._handlers);
773
765
  }
@@ -851,18 +843,30 @@ var MulticastObservable = class _MulticastObservable extends Observable {
851
843
  this._observers.delete(observer);
852
844
  };
853
845
  }
846
+ _handlers = {
847
+ next: (value) => {
848
+ this._value = value;
849
+ this._observers.forEach((observer) => observer.next?.(value));
850
+ },
851
+ error: (err) => {
852
+ this._observers.forEach((observer) => observer.error?.(err));
853
+ },
854
+ complete: () => {
855
+ this._completed.wake();
856
+ this._observers.forEach((observer) => observer.complete?.());
857
+ }
858
+ };
854
859
  };
855
860
  var EMPTY_OBSERVABLE = MulticastObservable.of(null);
856
861
 
857
862
  // src/observable-value.ts
858
863
  import { createSetDispatch } from "@dxos/util";
859
864
  var ObservableProvider = class {
860
- constructor() {
861
- this._handlers = /* @__PURE__ */ new Set();
862
- this._proxy = createSetDispatch({
863
- handlers: this._handlers
864
- });
865
- }
865
+ _handlers = /* @__PURE__ */ new Set();
866
+ _proxy = createSetDispatch({
867
+ handlers: this._handlers
868
+ });
869
+ _value;
866
870
  /**
867
871
  * Proxy used to dispatch callbacks to each subscription.
868
872
  */
@@ -883,8 +887,10 @@ var ObservableProvider = class {
883
887
  }
884
888
  };
885
889
  var CancellableObservableProvider = class extends ObservableProvider {
890
+ _handleCancel;
891
+ _cancelled = false;
886
892
  constructor(_handleCancel) {
887
- super(), this._handleCancel = _handleCancel, this._cancelled = false;
893
+ super(), this._handleCancel = _handleCancel;
888
894
  }
889
895
  get cancelled() {
890
896
  return this._cancelled;
@@ -994,12 +1000,14 @@ if (enabled) {
994
1000
 
995
1001
  // src/task-scheduling.ts
996
1002
  var DeferredTask = class {
1003
+ _ctx;
1004
+ _callback;
1005
+ _scheduled = false;
1006
+ _currentTask = null;
1007
+ _nextTask = new Trigger();
997
1008
  constructor(_ctx, _callback) {
998
1009
  this._ctx = _ctx;
999
1010
  this._callback = _callback;
1000
- this._scheduled = false;
1001
- this._currentTask = null;
1002
- this._nextTask = new Trigger();
1003
1011
  }
1004
1012
  get scheduled() {
1005
1013
  return this._scheduled;
@@ -1129,11 +1137,15 @@ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecyc
1129
1137
  var INIT_RESTART_DELAY = 100;
1130
1138
  var DEFAULT_MAX_RESTART_DELAY = 5e3;
1131
1139
  var PersistentLifecycle = class extends Resource {
1140
+ _start;
1141
+ _stop;
1142
+ _onRestart;
1143
+ _maxRestartDelay;
1144
+ _currentState = void 0;
1145
+ _restartTask = void 0;
1146
+ _restartAfter = 0;
1132
1147
  constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
1133
1148
  super();
1134
- this._currentState = void 0;
1135
- this._restartTask = void 0;
1136
- this._restartAfter = 0;
1137
1149
  this._start = start;
1138
1150
  this._stop = stop;
1139
1151
  this._onRestart = onRestart;
@@ -1295,20 +1307,6 @@ var makePushIterable = () => {
1295
1307
  };
1296
1308
  };
1297
1309
 
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
1310
  // src/stream-to-array.ts
1313
1311
  var streamToArray = (stream) => {
1314
1312
  let deferred;
@@ -1354,11 +1352,6 @@ var streamToArray = (stream) => {
1354
1352
  // src/test-stream.ts
1355
1353
  import { Duplex } from "node:stream";
1356
1354
  var TestStream = class extends Duplex {
1357
- constructor() {
1358
- super(...arguments);
1359
- this._received = Buffer.alloc(0);
1360
- this._onWrite = new Event();
1361
- }
1362
1355
  static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
1363
1356
  stream1.push("ping");
1364
1357
  stream2.push("pong");
@@ -1371,6 +1364,8 @@ var TestStream = class extends Duplex {
1371
1364
  })
1372
1365
  ]);
1373
1366
  }
1367
+ _received = Buffer.alloc(0);
1368
+ _onWrite = new Event();
1374
1369
  _write(chunk, encoding, callback) {
1375
1370
  this._received = Buffer.concat([
1376
1371
  this._received,
@@ -1412,13 +1407,48 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
1412
1407
  timeout: timeout2
1413
1408
  });
1414
1409
  };
1410
+ var until = (cb, timeout2) => {
1411
+ return new Promise((resolve, reject) => {
1412
+ const t = timeout2 && setTimeout(() => {
1413
+ reject(new Error(`Timeout after ${t}ms`));
1414
+ }, timeout2);
1415
+ setTimeout(async () => {
1416
+ try {
1417
+ await cb((value) => {
1418
+ t && clearTimeout(t);
1419
+ resolve(value);
1420
+ }, (error) => {
1421
+ t && clearTimeout(t);
1422
+ reject(error);
1423
+ });
1424
+ } catch (err) {
1425
+ reject(err);
1426
+ }
1427
+ });
1428
+ });
1429
+ };
1430
+ var untilPromise = (cb) => cb();
1431
+ var untilError = (cb) => {
1432
+ return new Promise((resolve, reject) => {
1433
+ setTimeout(async () => {
1434
+ try {
1435
+ await cb();
1436
+ reject(new Error("No error was thrown."));
1437
+ } catch (err) {
1438
+ resolve(err);
1439
+ }
1440
+ });
1441
+ });
1442
+ };
1415
1443
 
1416
1444
  // src/timer.ts
1417
1445
  var Timer = class {
1446
+ _callback;
1447
+ _state = new Event();
1448
+ _timer;
1449
+ _count = 0;
1418
1450
  constructor(_callback) {
1419
1451
  this._callback = _callback;
1420
- this._state = new Event();
1421
- this._count = 0;
1422
1452
  }
1423
1453
  get state() {
1424
1454
  return this._state;
@@ -1461,51 +1491,23 @@ var Timer = class {
1461
1491
  }
1462
1492
  };
1463
1493
 
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
- });
1497
- };
1498
-
1499
1494
  // src/update-scheduler.ts
1500
1495
  var TIME_PERIOD = 1e3;
1501
1496
  var UpdateScheduler = class {
1497
+ _ctx;
1498
+ _callback;
1499
+ _params;
1500
+ /**
1501
+ * Promise that resolves when the callback is done.
1502
+ * Never rejects.
1503
+ */
1504
+ _promise = null;
1505
+ _scheduled = false;
1506
+ _lastUpdateTime = -TIME_PERIOD;
1502
1507
  constructor(_ctx, _callback, _params = {}) {
1503
1508
  this._ctx = _ctx;
1504
1509
  this._callback = _callback;
1505
1510
  this._params = _params;
1506
- this._promise = null;
1507
- this._scheduled = false;
1508
- this._lastUpdateTime = -TIME_PERIOD;
1509
1511
  _ctx.onDispose(async () => {
1510
1512
  await this._promise;
1511
1513
  });
@@ -1588,11 +1590,10 @@ export {
1588
1590
  UpdateScheduler,
1589
1591
  addEventListener,
1590
1592
  addListener,
1591
- asyncChain,
1592
1593
  asyncReturn,
1593
1594
  asyncTimeout,
1595
+ chain,
1594
1596
  combine,
1595
- createPromiseFromCallback,
1596
1597
  debounce,
1597
1598
  debounceAndThrottle,
1598
1599
  dumpLeaks,
@@ -1601,13 +1602,13 @@ export {
1601
1602
  makePushIterable,
1602
1603
  observableError,
1603
1604
  onEvent,
1605
+ promiseFromCallback,
1604
1606
  runInContext,
1605
1607
  runInContextAsync,
1606
1608
  scheduleExponentialBackoffTaskInterval,
1607
1609
  scheduleMicroTask,
1608
1610
  scheduleTask,
1609
1611
  scheduleTaskInterval,
1610
- sink,
1611
1612
  sleep,
1612
1613
  sleepWithContext,
1613
1614
  streamToArray,