@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/callback.ts":{"bytes":1595,"imports":[],"format":"esm"},"src/chain.ts":{"bytes":1619,"imports":[],"format":"esm"},"src/cleanup.ts":{"bytes":6540,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/debounce.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/callback.ts":{"bytes":1595,"imports":[],"format":"esm"},"src/chain.ts":{"bytes":1619,"imports":[],"format":"esm"},"src/cleanup.ts":{"bytes":6540,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/debounce.ts":{"bytes":8209,"imports":[],"format":"esm"},"src/errors.ts":{"bytes":2911,"imports":[],"format":"esm"},"src/timeout.ts":{"bytes":8042,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"src/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"src/event-emitter.ts":{"bytes":4155,"imports":[{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/events.ts":{"bytes":39464,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"src/mutex.ts":{"bytes":12647,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"src/trigger.ts":{"bytes":14052,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/observable.ts":{"bytes":17824,"imports":[{"path":"zen-observable","kind":"import-statement","external":true},{"path":"zen-push","kind":"import-statement","external":true},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"src/observable-value.ts":{"bytes":6436,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/track-leaks.ts":{"bytes":8414,"imports":[{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/task-scheduling.ts":{"bytes":15388,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/track-leaks.ts","kind":"import-statement","original":"./track-leaks"},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"src/persistent-lifecycle.ts":{"bytes":12777,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/mutex.ts","kind":"import-statement","original":"./mutex"},{"path":"src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"},{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/push-iterable.ts":{"bytes":5922,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"src/stream-to-array.ts":{"bytes":4935,"imports":[],"format":"esm"},"src/test-stream.ts":{"bytes":5038,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"src/events.ts","kind":"import-statement","original":"./events"},{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/testing.ts":{"bytes":8388,"imports":[{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"src/timer.ts":{"bytes":5879,"imports":[{"path":"src/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"src/update-scheduler.ts":{"bytes":9706,"imports":[{"path":"src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"}],"format":"esm"},"src/index.ts":{"bytes":2335,"imports":[{"path":"src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"src/chain.ts","kind":"import-statement","original":"./chain"},{"path":"src/cleanup.ts","kind":"import-statement","original":"./cleanup"},{"path":"src/debounce.ts","kind":"import-statement","original":"./debounce"},{"path":"src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"src/event-emitter.ts","kind":"import-statement","original":"./event-emitter"},{"path":"src/events.ts","kind":"import-statement","original":"./events"},{"path":"src/mutex.ts","kind":"import-statement","original":"./mutex"},{"path":"src/observable.ts","kind":"import-statement","original":"./observable"},{"path":"src/observable-value.ts","kind":"import-statement","original":"./observable-value"},{"path":"src/persistent-lifecycle.ts","kind":"import-statement","original":"./persistent-lifecycle"},{"path":"src/push-iterable.ts","kind":"import-statement","original":"./push-iterable"},{"path":"src/stream-to-array.ts","kind":"import-statement","original":"./stream-to-array"},{"path":"src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"},{"path":"src/test-stream.ts","kind":"import-statement","original":"./test-stream"},{"path":"src/testing.ts","kind":"import-statement","original":"./testing"},{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"},{"path":"src/timer.ts","kind":"import-statement","original":"./timer"},{"path":"src/track-leaks.ts","kind":"import-statement","original":"./track-leaks"},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"},{"path":"src/update-scheduler.ts","kind":"import-statement","original":"./update-scheduler"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":100197},"dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"zen-observable","kind":"import-statement","external":true},{"path":"zen-push","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true}],"exports":["CancellableObservableProvider","DeferredTask","Event","MulticastObservable","Mutex","MutexGuard","Observable","ObservableProvider","PersistentLifecycle","PushStream","SubscriptionList","SubscriptionSet","TestStream","TimeoutError","Timer","Trigger","TriggerState","UpdateScheduler","addEventListener","addListener","asyncReturn","asyncTimeout","chain","combine","debounce","debounceAndThrottle","delay","dumpLeaks","interval","latch","makePushIterable","observableError","onEvent","promiseFromCallback","runInContext","runInContextAsync","scheduleExponentialBackoffTaskInterval","scheduleMicroTask","scheduleTask","scheduleTaskInterval","sleep","sleepWithContext","streamToArray","synchronized","throttle","timeout","toError","trackLeaks","trackResource","trigger","unrefTimeout","until","untilError","untilPromise","waitForCondition","waitForEvent"],"entryPoint":"src/index.ts","inputs":{"src/callback.ts":{"bytesInOutput":185},"src/index.ts":{"bytesInOutput":0},"src/chain.ts":{"bytesInOutput":216},"src/cleanup.ts":{"bytesInOutput":1045},"src/debounce.ts":{"bytesInOutput":1032},"src/errors.ts":{"bytesInOutput":476},"src/timeout.ts":{"bytesInOutput":1486},"src/event-emitter.ts":{"bytesInOutput":697},"src/events.ts":{"bytesInOutput":8703},"src/mutex.ts":{"bytesInOutput":2413},"src/observable.ts":{"bytesInOutput":3691},"src/trigger.ts":{"bytesInOutput":3014},"src/observable-value.ts":{"bytesInOutput":951},"src/persistent-lifecycle.ts":{"bytesInOutput":3536},"src/task-scheduling.ts":{"bytesInOutput":3151},"src/track-leaks.ts":{"bytesInOutput":2136},"src/push-iterable.ts":{"bytesInOutput":1389},"src/stream-to-array.ts":{"bytesInOutput":967},"src/test-stream.ts":{"bytesInOutput":915},"src/testing.ts":{"bytesInOutput":1419},"src/timer.ts":{"bytesInOutput":1065},"src/update-scheduler.ts":{"bytesInOutput":1952}},"bytes":41935}}}
|
|
@@ -66,29 +66,55 @@ var SubscriptionSet = class {
|
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
// src/debounce.ts
|
|
69
|
-
var
|
|
69
|
+
var delay = (cb, delay2 = 100) => {
|
|
70
|
+
let pending = false;
|
|
71
|
+
return (...args) => {
|
|
72
|
+
if (pending) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
pending = true;
|
|
76
|
+
setTimeout(() => {
|
|
77
|
+
try {
|
|
78
|
+
cb(...args);
|
|
79
|
+
} finally {
|
|
80
|
+
pending = false;
|
|
81
|
+
}
|
|
82
|
+
}, delay2);
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
var debounce = (cb, delay2 = 100) => {
|
|
70
86
|
let t;
|
|
71
87
|
return (...args) => {
|
|
72
88
|
clearTimeout(t);
|
|
73
|
-
t = setTimeout(() => cb(...args),
|
|
89
|
+
t = setTimeout(() => cb(...args), delay2);
|
|
74
90
|
};
|
|
75
91
|
};
|
|
76
|
-
var throttle = (cb,
|
|
92
|
+
var throttle = (cb, delay2 = 100) => {
|
|
77
93
|
let lastCall = 0;
|
|
78
94
|
return (...args) => {
|
|
79
95
|
const now = Date.now();
|
|
80
|
-
if (now - lastCall >=
|
|
96
|
+
if (now - lastCall >= delay2) {
|
|
81
97
|
cb(...args);
|
|
82
98
|
lastCall = now;
|
|
83
99
|
}
|
|
84
100
|
};
|
|
85
101
|
};
|
|
86
|
-
var debounceAndThrottle = (cb,
|
|
87
|
-
|
|
88
|
-
|
|
102
|
+
var debounceAndThrottle = (cb, delay2 = 100) => {
|
|
103
|
+
let timeout2;
|
|
104
|
+
let lastCall = 0;
|
|
89
105
|
return (...args) => {
|
|
90
|
-
|
|
91
|
-
|
|
106
|
+
const now = Date.now();
|
|
107
|
+
const delta = now - lastCall;
|
|
108
|
+
clearTimeout(timeout2);
|
|
109
|
+
if (delta >= delay2) {
|
|
110
|
+
cb(...args);
|
|
111
|
+
lastCall = now;
|
|
112
|
+
} else {
|
|
113
|
+
timeout2 = setTimeout(() => {
|
|
114
|
+
cb(...args);
|
|
115
|
+
lastCall = Date.now();
|
|
116
|
+
}, delay2 - delta);
|
|
117
|
+
}
|
|
92
118
|
};
|
|
93
119
|
};
|
|
94
120
|
|
|
@@ -453,12 +479,11 @@ var EventListener = class {
|
|
|
453
479
|
once;
|
|
454
480
|
weak;
|
|
455
481
|
callback;
|
|
456
|
-
_clearDispose;
|
|
482
|
+
_clearDispose = void 0;
|
|
457
483
|
constructor(event, listener, ctx, once, weak) {
|
|
458
484
|
this.ctx = ctx;
|
|
459
485
|
this.once = once;
|
|
460
486
|
this.weak = weak;
|
|
461
|
-
this._clearDispose = void 0;
|
|
462
487
|
this._clearDispose = ctx.onDispose(() => {
|
|
463
488
|
event._removeListener(this);
|
|
464
489
|
});
|
|
@@ -631,23 +656,22 @@ var trigger = (timeout2) => {
|
|
|
631
656
|
resolver
|
|
632
657
|
];
|
|
633
658
|
};
|
|
634
|
-
var TriggerState = /* @__PURE__ */ function(TriggerState2) {
|
|
659
|
+
var TriggerState = /* @__PURE__ */ (function(TriggerState2) {
|
|
635
660
|
TriggerState2["WAITING"] = "WAITING";
|
|
636
661
|
TriggerState2["RESOLVED"] = "RESOLVED";
|
|
637
662
|
TriggerState2["REJECTED"] = "REJECTED";
|
|
638
663
|
return TriggerState2;
|
|
639
|
-
}({});
|
|
664
|
+
})({});
|
|
640
665
|
var Trigger = class {
|
|
641
666
|
_options;
|
|
642
667
|
_promise;
|
|
643
668
|
_resolve;
|
|
644
669
|
_reject;
|
|
645
|
-
_state;
|
|
670
|
+
_state = "WAITING";
|
|
646
671
|
constructor(_options = {
|
|
647
672
|
autoReset: false
|
|
648
673
|
}) {
|
|
649
674
|
this._options = _options;
|
|
650
|
-
this._state = "WAITING";
|
|
651
675
|
this.reset();
|
|
652
676
|
}
|
|
653
677
|
get state() {
|
|
@@ -757,23 +781,11 @@ var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
|
757
781
|
// src/observable.ts
|
|
758
782
|
var MulticastObservable = class _MulticastObservable extends Observable {
|
|
759
783
|
_value;
|
|
760
|
-
_observers;
|
|
784
|
+
_observers = /* @__PURE__ */ new Set();
|
|
761
785
|
_observable;
|
|
762
|
-
_completed;
|
|
786
|
+
_completed = new Trigger();
|
|
763
787
|
constructor(subscriber, _value) {
|
|
764
|
-
super((observer) => this._subscribe(observer)), this._value = _value
|
|
765
|
-
next: (value) => {
|
|
766
|
-
this._value = value;
|
|
767
|
-
this._observers.forEach((observer) => observer.next?.(value));
|
|
768
|
-
},
|
|
769
|
-
error: (err) => {
|
|
770
|
-
this._observers.forEach((observer) => observer.error?.(err));
|
|
771
|
-
},
|
|
772
|
-
complete: () => {
|
|
773
|
-
this._completed.wake();
|
|
774
|
-
this._observers.forEach((observer) => observer.complete?.());
|
|
775
|
-
}
|
|
776
|
-
};
|
|
788
|
+
super((observer) => this._subscribe(observer)), this._value = _value;
|
|
777
789
|
this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
|
|
778
790
|
this._observable.subscribe(this._handlers);
|
|
779
791
|
}
|
|
@@ -857,7 +869,19 @@ var MulticastObservable = class _MulticastObservable extends Observable {
|
|
|
857
869
|
this._observers.delete(observer);
|
|
858
870
|
};
|
|
859
871
|
}
|
|
860
|
-
_handlers
|
|
872
|
+
_handlers = {
|
|
873
|
+
next: (value) => {
|
|
874
|
+
this._value = value;
|
|
875
|
+
this._observers.forEach((observer) => observer.next?.(value));
|
|
876
|
+
},
|
|
877
|
+
error: (err) => {
|
|
878
|
+
this._observers.forEach((observer) => observer.error?.(err));
|
|
879
|
+
},
|
|
880
|
+
complete: () => {
|
|
881
|
+
this._completed.wake();
|
|
882
|
+
this._observers.forEach((observer) => observer.complete?.());
|
|
883
|
+
}
|
|
884
|
+
};
|
|
861
885
|
};
|
|
862
886
|
var EMPTY_OBSERVABLE = MulticastObservable.of(null);
|
|
863
887
|
|
|
@@ -890,9 +914,9 @@ var ObservableProvider = class {
|
|
|
890
914
|
};
|
|
891
915
|
var CancellableObservableProvider = class extends ObservableProvider {
|
|
892
916
|
_handleCancel;
|
|
893
|
-
_cancelled;
|
|
917
|
+
_cancelled = false;
|
|
894
918
|
constructor(_handleCancel) {
|
|
895
|
-
super(), this._handleCancel = _handleCancel
|
|
919
|
+
super(), this._handleCancel = _handleCancel;
|
|
896
920
|
}
|
|
897
921
|
get cancelled() {
|
|
898
922
|
return this._cancelled;
|
|
@@ -1004,15 +1028,12 @@ if (enabled) {
|
|
|
1004
1028
|
var DeferredTask = class {
|
|
1005
1029
|
_ctx;
|
|
1006
1030
|
_callback;
|
|
1007
|
-
_scheduled;
|
|
1008
|
-
_currentTask;
|
|
1009
|
-
_nextTask;
|
|
1031
|
+
_scheduled = false;
|
|
1032
|
+
_currentTask = null;
|
|
1033
|
+
_nextTask = new Trigger();
|
|
1010
1034
|
constructor(_ctx, _callback) {
|
|
1011
1035
|
this._ctx = _ctx;
|
|
1012
1036
|
this._callback = _callback;
|
|
1013
|
-
this._scheduled = false;
|
|
1014
|
-
this._currentTask = null;
|
|
1015
|
-
this._nextTask = new Trigger();
|
|
1016
1037
|
}
|
|
1017
1038
|
get scheduled() {
|
|
1018
1039
|
return this._scheduled;
|
|
@@ -1449,13 +1470,11 @@ var untilError = (cb) => {
|
|
|
1449
1470
|
// src/timer.ts
|
|
1450
1471
|
var Timer = class {
|
|
1451
1472
|
_callback;
|
|
1452
|
-
_state;
|
|
1473
|
+
_state = new Event();
|
|
1453
1474
|
_timer;
|
|
1454
|
-
_count;
|
|
1475
|
+
_count = 0;
|
|
1455
1476
|
constructor(_callback) {
|
|
1456
1477
|
this._callback = _callback;
|
|
1457
|
-
this._state = new Event();
|
|
1458
|
-
this._count = 0;
|
|
1459
1478
|
}
|
|
1460
1479
|
get state() {
|
|
1461
1480
|
return this._state;
|
|
@@ -1508,16 +1527,13 @@ var UpdateScheduler = class {
|
|
|
1508
1527
|
* Promise that resolves when the callback is done.
|
|
1509
1528
|
* Never rejects.
|
|
1510
1529
|
*/
|
|
1511
|
-
_promise;
|
|
1512
|
-
_scheduled;
|
|
1513
|
-
_lastUpdateTime;
|
|
1530
|
+
_promise = null;
|
|
1531
|
+
_scheduled = false;
|
|
1532
|
+
_lastUpdateTime = -TIME_PERIOD;
|
|
1514
1533
|
constructor(_ctx, _callback, _params = {}) {
|
|
1515
1534
|
this._ctx = _ctx;
|
|
1516
1535
|
this._callback = _callback;
|
|
1517
1536
|
this._params = _params;
|
|
1518
|
-
this._promise = null;
|
|
1519
|
-
this._scheduled = false;
|
|
1520
|
-
this._lastUpdateTime = -TIME_PERIOD;
|
|
1521
1537
|
_ctx.onDispose(async () => {
|
|
1522
1538
|
await this._promise;
|
|
1523
1539
|
});
|
|
@@ -1530,13 +1546,13 @@ var UpdateScheduler = class {
|
|
|
1530
1546
|
await this._promise;
|
|
1531
1547
|
if (this._params.maxFrequency) {
|
|
1532
1548
|
const now = performance.now();
|
|
1533
|
-
const
|
|
1534
|
-
if (
|
|
1549
|
+
const delay2 = this._lastUpdateTime + TIME_PERIOD / this._params.maxFrequency - now;
|
|
1550
|
+
if (delay2 > 0) {
|
|
1535
1551
|
await new Promise((resolve) => {
|
|
1536
1552
|
const timeoutId = setTimeout(() => {
|
|
1537
1553
|
clearContext();
|
|
1538
1554
|
resolve();
|
|
1539
|
-
},
|
|
1555
|
+
}, delay2);
|
|
1540
1556
|
const clearContext = this._ctx.onDispose(() => {
|
|
1541
1557
|
clearTimeout(timeoutId);
|
|
1542
1558
|
resolve();
|
|
@@ -1606,6 +1622,7 @@ export {
|
|
|
1606
1622
|
combine,
|
|
1607
1623
|
debounce,
|
|
1608
1624
|
debounceAndThrottle,
|
|
1625
|
+
delay,
|
|
1609
1626
|
dumpLeaks,
|
|
1610
1627
|
interval,
|
|
1611
1628
|
latch,
|