@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.
- package/dist/lib/browser/index.mjs +69 -52
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +69 -52
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/debounce.d.ts +15 -0
- package/dist/types/src/debounce.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/debounce.ts +52 -4
|
@@ -64,29 +64,55 @@ var SubscriptionSet = class {
|
|
|
64
64
|
};
|
|
65
65
|
|
|
66
66
|
// src/debounce.ts
|
|
67
|
-
var
|
|
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),
|
|
87
|
+
t = setTimeout(() => cb(...args), delay2);
|
|
72
88
|
};
|
|
73
89
|
};
|
|
74
|
-
var throttle = (cb,
|
|
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 >=
|
|
94
|
+
if (now - lastCall >= delay2) {
|
|
79
95
|
cb(...args);
|
|
80
96
|
lastCall = now;
|
|
81
97
|
}
|
|
82
98
|
};
|
|
83
99
|
};
|
|
84
|
-
var debounceAndThrottle = (cb,
|
|
85
|
-
|
|
86
|
-
|
|
100
|
+
var debounceAndThrottle = (cb, delay2 = 100) => {
|
|
101
|
+
let timeout2;
|
|
102
|
+
let lastCall = 0;
|
|
87
103
|
return (...args) => {
|
|
88
|
-
|
|
89
|
-
|
|
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
|
|
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
|
|
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
|
|
1532
|
-
if (
|
|
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
|
-
},
|
|
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,
|