@dxos/async 0.8.4-main.fd6878d → 0.8.4-main.fffef41

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.
@@ -64,29 +64,55 @@ var SubscriptionSet = class {
64
64
  };
65
65
 
66
66
  // src/debounce.ts
67
- var debounce = (cb, delay = 100) => {
67
+ var delay = (cb, delay2 = 100) => {
68
+ let pending = false;
69
+ return (...args) => {
70
+ if (pending) {
71
+ return;
72
+ }
73
+ pending = true;
74
+ setTimeout(() => {
75
+ try {
76
+ cb(...args);
77
+ } finally {
78
+ pending = false;
79
+ }
80
+ }, delay2);
81
+ };
82
+ };
83
+ var debounce = (cb, delay2 = 100) => {
68
84
  let t;
69
85
  return (...args) => {
70
86
  clearTimeout(t);
71
- t = setTimeout(() => cb(...args), delay);
87
+ t = setTimeout(() => cb(...args), delay2);
72
88
  };
73
89
  };
74
- var throttle = (cb, delay = 100) => {
90
+ var throttle = (cb, delay2 = 100) => {
75
91
  let lastCall = 0;
76
92
  return (...args) => {
77
93
  const now = Date.now();
78
- if (now - lastCall >= delay) {
94
+ if (now - lastCall >= delay2) {
79
95
  cb(...args);
80
96
  lastCall = now;
81
97
  }
82
98
  };
83
99
  };
84
- var debounceAndThrottle = (cb, delay = 100) => {
85
- const debounced = debounce(cb, delay);
86
- const throttled = throttle(cb, delay);
100
+ var debounceAndThrottle = (cb, delay2 = 100) => {
101
+ let timeout2;
102
+ let lastCall = 0;
87
103
  return (...args) => {
88
- debounced(...args);
89
- throttled(...args);
104
+ const now = Date.now();
105
+ const delta = now - lastCall;
106
+ clearTimeout(timeout2);
107
+ if (delta >= delay2) {
108
+ cb(...args);
109
+ lastCall = now;
110
+ } else {
111
+ timeout2 = setTimeout(() => {
112
+ cb(...args);
113
+ lastCall = Date.now();
114
+ }, delay2 - delta);
115
+ }
90
116
  };
91
117
  };
92
118
 
@@ -451,12 +477,11 @@ var EventListener = class {
451
477
  once;
452
478
  weak;
453
479
  callback;
454
- _clearDispose;
480
+ _clearDispose = void 0;
455
481
  constructor(event, listener, ctx, once, weak) {
456
482
  this.ctx = ctx;
457
483
  this.once = once;
458
484
  this.weak = weak;
459
- this._clearDispose = void 0;
460
485
  this._clearDispose = ctx.onDispose(() => {
461
486
  event._removeListener(this);
462
487
  });
@@ -629,23 +654,22 @@ var trigger = (timeout2) => {
629
654
  resolver
630
655
  ];
631
656
  };
632
- var TriggerState = /* @__PURE__ */ function(TriggerState2) {
657
+ var TriggerState = /* @__PURE__ */ (function(TriggerState2) {
633
658
  TriggerState2["WAITING"] = "WAITING";
634
659
  TriggerState2["RESOLVED"] = "RESOLVED";
635
660
  TriggerState2["REJECTED"] = "REJECTED";
636
661
  return TriggerState2;
637
- }({});
662
+ })({});
638
663
  var Trigger = class {
639
664
  _options;
640
665
  _promise;
641
666
  _resolve;
642
667
  _reject;
643
- _state;
668
+ _state = "WAITING";
644
669
  constructor(_options = {
645
670
  autoReset: false
646
671
  }) {
647
672
  this._options = _options;
648
- this._state = "WAITING";
649
673
  this.reset();
650
674
  }
651
675
  get state() {
@@ -755,23 +779,11 @@ var latch = ({ count = 1, timeout: timeout2 } = {}) => {
755
779
  // src/observable.ts
756
780
  var MulticastObservable = class _MulticastObservable extends Observable {
757
781
  _value;
758
- _observers;
782
+ _observers = /* @__PURE__ */ new Set();
759
783
  _observable;
760
- _completed;
784
+ _completed = new Trigger();
761
785
  constructor(subscriber, _value) {
762
- super((observer) => this._subscribe(observer)), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
763
- next: (value) => {
764
- this._value = value;
765
- this._observers.forEach((observer) => observer.next?.(value));
766
- },
767
- error: (err) => {
768
- this._observers.forEach((observer) => observer.error?.(err));
769
- },
770
- complete: () => {
771
- this._completed.wake();
772
- this._observers.forEach((observer) => observer.complete?.());
773
- }
774
- };
786
+ super((observer) => this._subscribe(observer)), this._value = _value;
775
787
  this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
776
788
  this._observable.subscribe(this._handlers);
777
789
  }
@@ -855,7 +867,19 @@ var MulticastObservable = class _MulticastObservable extends Observable {
855
867
  this._observers.delete(observer);
856
868
  };
857
869
  }
858
- _handlers;
870
+ _handlers = {
871
+ next: (value) => {
872
+ this._value = value;
873
+ this._observers.forEach((observer) => observer.next?.(value));
874
+ },
875
+ error: (err) => {
876
+ this._observers.forEach((observer) => observer.error?.(err));
877
+ },
878
+ complete: () => {
879
+ this._completed.wake();
880
+ this._observers.forEach((observer) => observer.complete?.());
881
+ }
882
+ };
859
883
  };
860
884
  var EMPTY_OBSERVABLE = MulticastObservable.of(null);
861
885
 
@@ -888,9 +912,9 @@ var ObservableProvider = class {
888
912
  };
889
913
  var CancellableObservableProvider = class extends ObservableProvider {
890
914
  _handleCancel;
891
- _cancelled;
915
+ _cancelled = false;
892
916
  constructor(_handleCancel) {
893
- super(), this._handleCancel = _handleCancel, this._cancelled = false;
917
+ super(), this._handleCancel = _handleCancel;
894
918
  }
895
919
  get cancelled() {
896
920
  return this._cancelled;
@@ -1002,15 +1026,12 @@ if (enabled) {
1002
1026
  var DeferredTask = class {
1003
1027
  _ctx;
1004
1028
  _callback;
1005
- _scheduled;
1006
- _currentTask;
1007
- _nextTask;
1029
+ _scheduled = false;
1030
+ _currentTask = null;
1031
+ _nextTask = new Trigger();
1008
1032
  constructor(_ctx, _callback) {
1009
1033
  this._ctx = _ctx;
1010
1034
  this._callback = _callback;
1011
- this._scheduled = false;
1012
- this._currentTask = null;
1013
- this._nextTask = new Trigger();
1014
1035
  }
1015
1036
  get scheduled() {
1016
1037
  return this._scheduled;
@@ -1447,13 +1468,11 @@ var untilError = (cb) => {
1447
1468
  // src/timer.ts
1448
1469
  var Timer = class {
1449
1470
  _callback;
1450
- _state;
1471
+ _state = new Event();
1451
1472
  _timer;
1452
- _count;
1473
+ _count = 0;
1453
1474
  constructor(_callback) {
1454
1475
  this._callback = _callback;
1455
- this._state = new Event();
1456
- this._count = 0;
1457
1476
  }
1458
1477
  get state() {
1459
1478
  return this._state;
@@ -1506,16 +1525,13 @@ var UpdateScheduler = class {
1506
1525
  * Promise that resolves when the callback is done.
1507
1526
  * Never rejects.
1508
1527
  */
1509
- _promise;
1510
- _scheduled;
1511
- _lastUpdateTime;
1528
+ _promise = null;
1529
+ _scheduled = false;
1530
+ _lastUpdateTime = -TIME_PERIOD;
1512
1531
  constructor(_ctx, _callback, _params = {}) {
1513
1532
  this._ctx = _ctx;
1514
1533
  this._callback = _callback;
1515
1534
  this._params = _params;
1516
- this._promise = null;
1517
- this._scheduled = false;
1518
- this._lastUpdateTime = -TIME_PERIOD;
1519
1535
  _ctx.onDispose(async () => {
1520
1536
  await this._promise;
1521
1537
  });
@@ -1528,13 +1544,13 @@ var UpdateScheduler = class {
1528
1544
  await this._promise;
1529
1545
  if (this._params.maxFrequency) {
1530
1546
  const now = performance.now();
1531
- const delay = this._lastUpdateTime + TIME_PERIOD / this._params.maxFrequency - now;
1532
- if (delay > 0) {
1547
+ const delay2 = this._lastUpdateTime + TIME_PERIOD / this._params.maxFrequency - now;
1548
+ if (delay2 > 0) {
1533
1549
  await new Promise((resolve) => {
1534
1550
  const timeoutId = setTimeout(() => {
1535
1551
  clearContext();
1536
1552
  resolve();
1537
- }, delay);
1553
+ }, delay2);
1538
1554
  const clearContext = this._ctx.onDispose(() => {
1539
1555
  clearTimeout(timeoutId);
1540
1556
  resolve();
@@ -1604,6 +1620,7 @@ export {
1604
1620
  combine,
1605
1621
  debounce,
1606
1622
  debounceAndThrottle,
1623
+ delay,
1607
1624
  dumpLeaks,
1608
1625
  interval,
1609
1626
  latch,