@dxos/async 0.8.4-main.3f58842 → 0.8.4-main.548089c
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 +113 -64
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +113 -64
- 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/src/task-scheduling.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/debounce.ts +52 -4
- package/src/event-emitter.test.ts +1 -0
- package/src/persistent-lifecycle.test.ts +1 -1
- package/src/task-scheduling.ts +1 -1
- package/src/testing.test.ts +1 -1
|
@@ -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}}}
|
|
@@ -40,9 +40,7 @@ var addEventListener = (target, type, listener, options) => {
|
|
|
40
40
|
return () => target.removeEventListener(type, listener, options);
|
|
41
41
|
};
|
|
42
42
|
var SubscriptionList = class {
|
|
43
|
-
|
|
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
|
}
|
|
@@ -67,29 +66,55 @@ var SubscriptionSet = class {
|
|
|
67
66
|
};
|
|
68
67
|
|
|
69
68
|
// src/debounce.ts
|
|
70
|
-
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) => {
|
|
71
86
|
let t;
|
|
72
87
|
return (...args) => {
|
|
73
88
|
clearTimeout(t);
|
|
74
|
-
t = setTimeout(() => cb(...args),
|
|
89
|
+
t = setTimeout(() => cb(...args), delay2);
|
|
75
90
|
};
|
|
76
91
|
};
|
|
77
|
-
var throttle = (cb,
|
|
92
|
+
var throttle = (cb, delay2 = 100) => {
|
|
78
93
|
let lastCall = 0;
|
|
79
94
|
return (...args) => {
|
|
80
95
|
const now = Date.now();
|
|
81
|
-
if (now - lastCall >=
|
|
96
|
+
if (now - lastCall >= delay2) {
|
|
82
97
|
cb(...args);
|
|
83
98
|
lastCall = now;
|
|
84
99
|
}
|
|
85
100
|
};
|
|
86
101
|
};
|
|
87
|
-
var debounceAndThrottle = (cb,
|
|
88
|
-
|
|
89
|
-
|
|
102
|
+
var debounceAndThrottle = (cb, delay2 = 100) => {
|
|
103
|
+
let timeout2;
|
|
104
|
+
let lastCall = 0;
|
|
90
105
|
return (...args) => {
|
|
91
|
-
|
|
92
|
-
|
|
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
|
+
}
|
|
93
118
|
};
|
|
94
119
|
};
|
|
95
120
|
|
|
@@ -193,10 +218,6 @@ import { Context } from "@dxos/context";
|
|
|
193
218
|
var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
|
|
194
219
|
var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
|
|
195
220
|
var Event = class _Event {
|
|
196
|
-
constructor() {
|
|
197
|
-
this._listeners = /* @__PURE__ */ new Set();
|
|
198
|
-
this._effects = /* @__PURE__ */ new Set();
|
|
199
|
-
}
|
|
200
221
|
/**
|
|
201
222
|
* Wrap objects that have on/off style event emitters.
|
|
202
223
|
*/
|
|
@@ -209,6 +230,8 @@ var Event = class _Event {
|
|
|
209
230
|
});
|
|
210
231
|
return event;
|
|
211
232
|
}
|
|
233
|
+
_listeners = /* @__PURE__ */ new Set();
|
|
234
|
+
_effects = /* @__PURE__ */ new Set();
|
|
212
235
|
/**
|
|
213
236
|
* Emit an event.
|
|
214
237
|
* In most cases should only be called by the class or entity containing the event.
|
|
@@ -452,11 +475,15 @@ var Event = class _Event {
|
|
|
452
475
|
}
|
|
453
476
|
};
|
|
454
477
|
var EventListener = class {
|
|
478
|
+
ctx;
|
|
479
|
+
once;
|
|
480
|
+
weak;
|
|
481
|
+
callback;
|
|
482
|
+
_clearDispose = void 0;
|
|
455
483
|
constructor(event, listener, ctx, once, weak) {
|
|
456
484
|
this.ctx = ctx;
|
|
457
485
|
this.once = once;
|
|
458
486
|
this.weak = weak;
|
|
459
|
-
this._clearDispose = void 0;
|
|
460
487
|
this._clearDispose = ctx.onDispose(() => {
|
|
461
488
|
event._removeListener(this);
|
|
462
489
|
});
|
|
@@ -520,11 +547,9 @@ var weakListeners = () => {
|
|
|
520
547
|
import "@dxos/util";
|
|
521
548
|
import { warnAfterTimeout } from "@dxos/debug";
|
|
522
549
|
var Mutex = class {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
this._tag = null;
|
|
527
|
-
}
|
|
550
|
+
_queue = Promise.resolve();
|
|
551
|
+
_queueLength = 0;
|
|
552
|
+
_tag = null;
|
|
528
553
|
get tag() {
|
|
529
554
|
return this._tag;
|
|
530
555
|
}
|
|
@@ -570,6 +595,7 @@ var Mutex = class {
|
|
|
570
595
|
}
|
|
571
596
|
};
|
|
572
597
|
var MutexGuard = class {
|
|
598
|
+
_release;
|
|
573
599
|
constructor(_release) {
|
|
574
600
|
this._release = _release;
|
|
575
601
|
}
|
|
@@ -630,18 +656,22 @@ var trigger = (timeout2) => {
|
|
|
630
656
|
resolver
|
|
631
657
|
];
|
|
632
658
|
};
|
|
633
|
-
var TriggerState = /* @__PURE__ */ function(TriggerState2) {
|
|
659
|
+
var TriggerState = /* @__PURE__ */ (function(TriggerState2) {
|
|
634
660
|
TriggerState2["WAITING"] = "WAITING";
|
|
635
661
|
TriggerState2["RESOLVED"] = "RESOLVED";
|
|
636
662
|
TriggerState2["REJECTED"] = "REJECTED";
|
|
637
663
|
return TriggerState2;
|
|
638
|
-
}({});
|
|
664
|
+
})({});
|
|
639
665
|
var Trigger = class {
|
|
666
|
+
_options;
|
|
667
|
+
_promise;
|
|
668
|
+
_resolve;
|
|
669
|
+
_reject;
|
|
670
|
+
_state = "WAITING";
|
|
640
671
|
constructor(_options = {
|
|
641
672
|
autoReset: false
|
|
642
673
|
}) {
|
|
643
674
|
this._options = _options;
|
|
644
|
-
this._state = "WAITING";
|
|
645
675
|
this.reset();
|
|
646
676
|
}
|
|
647
677
|
get state() {
|
|
@@ -750,20 +780,12 @@ var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
|
750
780
|
|
|
751
781
|
// src/observable.ts
|
|
752
782
|
var MulticastObservable = class _MulticastObservable extends Observable {
|
|
783
|
+
_value;
|
|
784
|
+
_observers = /* @__PURE__ */ new Set();
|
|
785
|
+
_observable;
|
|
786
|
+
_completed = new Trigger();
|
|
753
787
|
constructor(subscriber, _value) {
|
|
754
|
-
super((observer) => this._subscribe(observer)), this._value = _value
|
|
755
|
-
next: (value) => {
|
|
756
|
-
this._value = value;
|
|
757
|
-
this._observers.forEach((observer) => observer.next?.(value));
|
|
758
|
-
},
|
|
759
|
-
error: (err) => {
|
|
760
|
-
this._observers.forEach((observer) => observer.error?.(err));
|
|
761
|
-
},
|
|
762
|
-
complete: () => {
|
|
763
|
-
this._completed.wake();
|
|
764
|
-
this._observers.forEach((observer) => observer.complete?.());
|
|
765
|
-
}
|
|
766
|
-
};
|
|
788
|
+
super((observer) => this._subscribe(observer)), this._value = _value;
|
|
767
789
|
this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
|
|
768
790
|
this._observable.subscribe(this._handlers);
|
|
769
791
|
}
|
|
@@ -847,18 +869,30 @@ var MulticastObservable = class _MulticastObservable extends Observable {
|
|
|
847
869
|
this._observers.delete(observer);
|
|
848
870
|
};
|
|
849
871
|
}
|
|
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
|
+
};
|
|
850
885
|
};
|
|
851
886
|
var EMPTY_OBSERVABLE = MulticastObservable.of(null);
|
|
852
887
|
|
|
853
888
|
// src/observable-value.ts
|
|
854
889
|
import { createSetDispatch } from "@dxos/util";
|
|
855
890
|
var ObservableProvider = class {
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
this.
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
}
|
|
891
|
+
_handlers = /* @__PURE__ */ new Set();
|
|
892
|
+
_proxy = createSetDispatch({
|
|
893
|
+
handlers: this._handlers
|
|
894
|
+
});
|
|
895
|
+
_value;
|
|
862
896
|
/**
|
|
863
897
|
* Proxy used to dispatch callbacks to each subscription.
|
|
864
898
|
*/
|
|
@@ -879,8 +913,10 @@ var ObservableProvider = class {
|
|
|
879
913
|
}
|
|
880
914
|
};
|
|
881
915
|
var CancellableObservableProvider = class extends ObservableProvider {
|
|
916
|
+
_handleCancel;
|
|
917
|
+
_cancelled = false;
|
|
882
918
|
constructor(_handleCancel) {
|
|
883
|
-
super(), this._handleCancel = _handleCancel
|
|
919
|
+
super(), this._handleCancel = _handleCancel;
|
|
884
920
|
}
|
|
885
921
|
get cancelled() {
|
|
886
922
|
return this._cancelled;
|
|
@@ -990,12 +1026,14 @@ if (enabled) {
|
|
|
990
1026
|
|
|
991
1027
|
// src/task-scheduling.ts
|
|
992
1028
|
var DeferredTask = class {
|
|
1029
|
+
_ctx;
|
|
1030
|
+
_callback;
|
|
1031
|
+
_scheduled = false;
|
|
1032
|
+
_currentTask = null;
|
|
1033
|
+
_nextTask = new Trigger();
|
|
993
1034
|
constructor(_ctx, _callback) {
|
|
994
1035
|
this._ctx = _ctx;
|
|
995
1036
|
this._callback = _callback;
|
|
996
|
-
this._scheduled = false;
|
|
997
|
-
this._currentTask = null;
|
|
998
|
-
this._nextTask = new Trigger();
|
|
999
1037
|
}
|
|
1000
1038
|
get scheduled() {
|
|
1001
1039
|
return this._scheduled;
|
|
@@ -1125,11 +1163,15 @@ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecyc
|
|
|
1125
1163
|
var INIT_RESTART_DELAY = 100;
|
|
1126
1164
|
var DEFAULT_MAX_RESTART_DELAY = 5e3;
|
|
1127
1165
|
var PersistentLifecycle = class extends Resource {
|
|
1166
|
+
_start;
|
|
1167
|
+
_stop;
|
|
1168
|
+
_onRestart;
|
|
1169
|
+
_maxRestartDelay;
|
|
1170
|
+
_currentState = void 0;
|
|
1171
|
+
_restartTask = void 0;
|
|
1172
|
+
_restartAfter = 0;
|
|
1128
1173
|
constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
|
|
1129
1174
|
super();
|
|
1130
|
-
this._currentState = void 0;
|
|
1131
|
-
this._restartTask = void 0;
|
|
1132
|
-
this._restartAfter = 0;
|
|
1133
1175
|
this._start = start;
|
|
1134
1176
|
this._stop = stop;
|
|
1135
1177
|
this._onRestart = onRestart;
|
|
@@ -1336,11 +1378,6 @@ var streamToArray = (stream) => {
|
|
|
1336
1378
|
// src/test-stream.ts
|
|
1337
1379
|
import { Duplex } from "node:stream";
|
|
1338
1380
|
var TestStream = class extends Duplex {
|
|
1339
|
-
constructor() {
|
|
1340
|
-
super(...arguments);
|
|
1341
|
-
this._received = Buffer.alloc(0);
|
|
1342
|
-
this._onWrite = new Event();
|
|
1343
|
-
}
|
|
1344
1381
|
static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
|
|
1345
1382
|
stream1.push("ping");
|
|
1346
1383
|
stream2.push("pong");
|
|
@@ -1353,6 +1390,8 @@ var TestStream = class extends Duplex {
|
|
|
1353
1390
|
})
|
|
1354
1391
|
]);
|
|
1355
1392
|
}
|
|
1393
|
+
_received = Buffer.alloc(0);
|
|
1394
|
+
_onWrite = new Event();
|
|
1356
1395
|
_write(chunk, encoding, callback) {
|
|
1357
1396
|
this._received = Buffer.concat([
|
|
1358
1397
|
this._received,
|
|
@@ -1430,10 +1469,12 @@ var untilError = (cb) => {
|
|
|
1430
1469
|
|
|
1431
1470
|
// src/timer.ts
|
|
1432
1471
|
var Timer = class {
|
|
1472
|
+
_callback;
|
|
1473
|
+
_state = new Event();
|
|
1474
|
+
_timer;
|
|
1475
|
+
_count = 0;
|
|
1433
1476
|
constructor(_callback) {
|
|
1434
1477
|
this._callback = _callback;
|
|
1435
|
-
this._state = new Event();
|
|
1436
|
-
this._count = 0;
|
|
1437
1478
|
}
|
|
1438
1479
|
get state() {
|
|
1439
1480
|
return this._state;
|
|
@@ -1479,13 +1520,20 @@ var Timer = class {
|
|
|
1479
1520
|
// src/update-scheduler.ts
|
|
1480
1521
|
var TIME_PERIOD = 1e3;
|
|
1481
1522
|
var UpdateScheduler = class {
|
|
1523
|
+
_ctx;
|
|
1524
|
+
_callback;
|
|
1525
|
+
_params;
|
|
1526
|
+
/**
|
|
1527
|
+
* Promise that resolves when the callback is done.
|
|
1528
|
+
* Never rejects.
|
|
1529
|
+
*/
|
|
1530
|
+
_promise = null;
|
|
1531
|
+
_scheduled = false;
|
|
1532
|
+
_lastUpdateTime = -TIME_PERIOD;
|
|
1482
1533
|
constructor(_ctx, _callback, _params = {}) {
|
|
1483
1534
|
this._ctx = _ctx;
|
|
1484
1535
|
this._callback = _callback;
|
|
1485
1536
|
this._params = _params;
|
|
1486
|
-
this._promise = null;
|
|
1487
|
-
this._scheduled = false;
|
|
1488
|
-
this._lastUpdateTime = -TIME_PERIOD;
|
|
1489
1537
|
_ctx.onDispose(async () => {
|
|
1490
1538
|
await this._promise;
|
|
1491
1539
|
});
|
|
@@ -1498,13 +1546,13 @@ var UpdateScheduler = class {
|
|
|
1498
1546
|
await this._promise;
|
|
1499
1547
|
if (this._params.maxFrequency) {
|
|
1500
1548
|
const now = performance.now();
|
|
1501
|
-
const
|
|
1502
|
-
if (
|
|
1549
|
+
const delay2 = this._lastUpdateTime + TIME_PERIOD / this._params.maxFrequency - now;
|
|
1550
|
+
if (delay2 > 0) {
|
|
1503
1551
|
await new Promise((resolve) => {
|
|
1504
1552
|
const timeoutId = setTimeout(() => {
|
|
1505
1553
|
clearContext();
|
|
1506
1554
|
resolve();
|
|
1507
|
-
},
|
|
1555
|
+
}, delay2);
|
|
1508
1556
|
const clearContext = this._ctx.onDispose(() => {
|
|
1509
1557
|
clearTimeout(timeoutId);
|
|
1510
1558
|
resolve();
|
|
@@ -1574,6 +1622,7 @@ export {
|
|
|
1574
1622
|
combine,
|
|
1575
1623
|
debounce,
|
|
1576
1624
|
debounceAndThrottle,
|
|
1625
|
+
delay,
|
|
1577
1626
|
dumpLeaks,
|
|
1578
1627
|
interval,
|
|
1579
1628
|
latch,
|