@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.
- package/dist/lib/browser/index.mjs +193 -192
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +193 -192
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/callback.d.ts +2 -1
- package/dist/types/src/callback.d.ts.map +1 -1
- package/dist/types/src/chain.d.ts +1 -1
- package/dist/types/src/chain.d.ts.map +1 -1
- package/dist/types/src/cleanup.d.ts +1 -1
- package/dist/types/src/cleanup.d.ts.map +1 -1
- package/dist/types/src/debounce.d.ts +16 -2
- package/dist/types/src/debounce.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -5
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/task-scheduling.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +13 -0
- package/dist/types/src/testing.d.ts.map +1 -1
- package/dist/types/src/timeout.d.ts +1 -1
- package/dist/types/src/timeout.d.ts.map +1 -1
- package/dist/types/src/trigger.d.ts +11 -0
- package/dist/types/src/trigger.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/callback.ts +3 -3
- package/src/chain.ts +1 -1
- package/src/cleanup.ts +3 -3
- package/src/debounce.test.ts +69 -12
- package/src/debounce.ts +32 -11
- package/src/event-emitter.test.ts +2 -1
- package/src/index.ts +0 -5
- package/src/observable-value.test.ts +1 -1
- package/src/persistent-lifecycle.test.ts +1 -1
- package/src/task-scheduling.ts +1 -1
- package/src/testing.test.ts +41 -1
- package/src/testing.ts +53 -0
- package/src/timeout.ts +23 -22
- package/src/trigger.ts +58 -1
- package/src/update-scheduler.ts +1 -1
- package/dist/types/src/latch.d.ts +0 -11
- package/dist/types/src/latch.d.ts.map +0 -1
- package/dist/types/src/sink.d.ts +0 -6
- package/dist/types/src/sink.d.ts.map +0 -1
- package/dist/types/src/throttle.d.ts +0 -2
- package/dist/types/src/throttle.d.ts.map +0 -1
- package/dist/types/src/throttle.test.d.ts +0 -2
- package/dist/types/src/throttle.test.d.ts.map +0 -1
- package/dist/types/src/types.d.ts +0 -2
- package/dist/types/src/types.d.ts.map +0 -1
- package/dist/types/src/until.d.ts +0 -14
- package/dist/types/src/until.d.ts.map +0 -1
- package/dist/types/src/until.test.d.ts +0 -2
- package/dist/types/src/until.test.d.ts.map +0 -1
- package/src/latch.ts +0 -60
- package/src/sink.ts +0 -26
- package/src/throttle.test.ts +0 -65
- package/src/throttle.ts +0 -14
- package/src/types.ts +0 -5
- package/src/until.test.ts +0 -47
- package/src/until.ts +0 -58
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/callback.ts
|
|
2
|
-
var
|
|
2
|
+
var promiseFromCallback = (run) => new Promise((resolve, reject) => {
|
|
3
3
|
run((error, value) => {
|
|
4
4
|
if (error) {
|
|
5
5
|
reject(error);
|
|
@@ -10,9 +10,9 @@ var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
|
|
|
10
10
|
});
|
|
11
11
|
|
|
12
12
|
// src/chain.ts
|
|
13
|
-
var
|
|
13
|
+
var chain = (chain2) => async (elements) => {
|
|
14
14
|
let result = await elements;
|
|
15
|
-
for (const part of
|
|
15
|
+
for (const part of chain2) {
|
|
16
16
|
result = await Promise.all(result.map(async (element) => await part(element)));
|
|
17
17
|
}
|
|
18
18
|
return result;
|
|
@@ -33,14 +33,12 @@ var interval = (cb, ms) => {
|
|
|
33
33
|
const t = setInterval(cb, ms);
|
|
34
34
|
return () => clearInterval(t);
|
|
35
35
|
};
|
|
36
|
-
|
|
36
|
+
var addEventListener = (target, type, listener, options) => {
|
|
37
37
|
target.addEventListener(type, listener, options);
|
|
38
38
|
return () => target.removeEventListener(type, listener, options);
|
|
39
|
-
}
|
|
39
|
+
};
|
|
40
40
|
var SubscriptionList = class {
|
|
41
|
-
|
|
42
|
-
this._cleanups = [];
|
|
43
|
-
}
|
|
41
|
+
_cleanups = [];
|
|
44
42
|
add(cb) {
|
|
45
43
|
this._cleanups.push(cb);
|
|
46
44
|
return this;
|
|
@@ -51,6 +49,7 @@ var SubscriptionList = class {
|
|
|
51
49
|
}
|
|
52
50
|
};
|
|
53
51
|
var SubscriptionSet = class {
|
|
52
|
+
_cleanupMap;
|
|
54
53
|
constructor(keyProjection) {
|
|
55
54
|
this._cleanupMap = new ComplexMap(keyProjection);
|
|
56
55
|
}
|
|
@@ -64,29 +63,27 @@ var SubscriptionSet = class {
|
|
|
64
63
|
}
|
|
65
64
|
};
|
|
66
65
|
|
|
67
|
-
// src/
|
|
68
|
-
var
|
|
66
|
+
// src/debounce.ts
|
|
67
|
+
var debounce = (cb, delay = 100) => {
|
|
68
|
+
let t;
|
|
69
|
+
return (...args) => {
|
|
70
|
+
clearTimeout(t);
|
|
71
|
+
t = setTimeout(() => cb(...args), delay);
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
var throttle = (cb, delay = 100) => {
|
|
69
75
|
let lastCall = 0;
|
|
70
76
|
return (...args) => {
|
|
71
77
|
const now = Date.now();
|
|
72
|
-
if (now - lastCall >=
|
|
78
|
+
if (now - lastCall >= delay) {
|
|
73
79
|
cb(...args);
|
|
74
80
|
lastCall = now;
|
|
75
81
|
}
|
|
76
82
|
};
|
|
77
83
|
};
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
let t;
|
|
82
|
-
return (...args) => {
|
|
83
|
-
clearTimeout(t);
|
|
84
|
-
t = setTimeout(() => cb(...args), wait);
|
|
85
|
-
};
|
|
86
|
-
};
|
|
87
|
-
var debounceAndThrottle = (cb, wait = 100) => {
|
|
88
|
-
const debounced = debounce(cb, wait);
|
|
89
|
-
const throttled = throttle(cb, wait);
|
|
84
|
+
var debounceAndThrottle = (cb, delay = 100) => {
|
|
85
|
+
const debounced = debounce(cb, delay);
|
|
86
|
+
const throttled = throttle(cb, delay);
|
|
90
87
|
return (...args) => {
|
|
91
88
|
debounced(...args);
|
|
92
89
|
throttled(...args);
|
|
@@ -124,6 +121,23 @@ var sleep = (ms) => {
|
|
|
124
121
|
sleeper();
|
|
125
122
|
});
|
|
126
123
|
};
|
|
124
|
+
var sleepWithContext = (ctx, ms) => {
|
|
125
|
+
const error = new ContextDisposedError();
|
|
126
|
+
return new Promise((resolve, reject) => {
|
|
127
|
+
if (ctx.disposed) {
|
|
128
|
+
reject(error);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const timeout2 = setTimeout(() => {
|
|
132
|
+
clearDispose();
|
|
133
|
+
resolve();
|
|
134
|
+
}, ms);
|
|
135
|
+
const clearDispose = ctx.onDispose(() => {
|
|
136
|
+
clearTimeout(timeout2);
|
|
137
|
+
reject(error);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
};
|
|
127
141
|
var asyncReturn = () => sleep(0);
|
|
128
142
|
var asyncTimeout = async (promise, timeout2, err) => {
|
|
129
143
|
let timeoutId;
|
|
@@ -134,7 +148,7 @@ var asyncTimeout = async (promise, timeout2, err) => {
|
|
|
134
148
|
}, timeout2);
|
|
135
149
|
unrefTimeout(timeoutId);
|
|
136
150
|
});
|
|
137
|
-
const conditionTimeout = typeof promise === "function" ?
|
|
151
|
+
const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
|
|
138
152
|
return await Promise.race([
|
|
139
153
|
conditionTimeout,
|
|
140
154
|
timeoutPromise
|
|
@@ -147,23 +161,6 @@ var unrefTimeout = (timeoutId) => {
|
|
|
147
161
|
timeoutId.unref();
|
|
148
162
|
}
|
|
149
163
|
};
|
|
150
|
-
var sleepWithContext = (ctx, ms) => {
|
|
151
|
-
const error = new ContextDisposedError();
|
|
152
|
-
return new Promise((resolve, reject) => {
|
|
153
|
-
if (ctx.disposed) {
|
|
154
|
-
reject(error);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
const timeout2 = setTimeout(() => {
|
|
158
|
-
clearDispose();
|
|
159
|
-
resolve();
|
|
160
|
-
}, ms);
|
|
161
|
-
const clearDispose = ctx.onDispose(() => {
|
|
162
|
-
clearTimeout(timeout2);
|
|
163
|
-
reject(error);
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
};
|
|
167
164
|
|
|
168
165
|
// src/event-emitter.ts
|
|
169
166
|
var onEvent = (eventEmitter, eventName, callback) => {
|
|
@@ -193,10 +190,6 @@ import { Context } from "@dxos/context";
|
|
|
193
190
|
var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
|
|
194
191
|
var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
|
|
195
192
|
var Event = class _Event {
|
|
196
|
-
constructor() {
|
|
197
|
-
this._listeners = /* @__PURE__ */ new Set();
|
|
198
|
-
this._effects = /* @__PURE__ */ new Set();
|
|
199
|
-
}
|
|
200
193
|
/**
|
|
201
194
|
* Wrap objects that have on/off style event emitters.
|
|
202
195
|
*/
|
|
@@ -209,6 +202,8 @@ var Event = class _Event {
|
|
|
209
202
|
});
|
|
210
203
|
return event;
|
|
211
204
|
}
|
|
205
|
+
_listeners = /* @__PURE__ */ new Set();
|
|
206
|
+
_effects = /* @__PURE__ */ new Set();
|
|
212
207
|
/**
|
|
213
208
|
* Emit an event.
|
|
214
209
|
* In most cases should only be called by the class or entity containing the event.
|
|
@@ -452,11 +447,15 @@ var Event = class _Event {
|
|
|
452
447
|
}
|
|
453
448
|
};
|
|
454
449
|
var EventListener = class {
|
|
450
|
+
ctx;
|
|
451
|
+
once;
|
|
452
|
+
weak;
|
|
453
|
+
callback;
|
|
454
|
+
_clearDispose = void 0;
|
|
455
455
|
constructor(event, listener, ctx, once, weak) {
|
|
456
456
|
this.ctx = ctx;
|
|
457
457
|
this.once = once;
|
|
458
458
|
this.weak = weak;
|
|
459
|
-
this._clearDispose = void 0;
|
|
460
459
|
this._clearDispose = ctx.onDispose(() => {
|
|
461
460
|
event._removeListener(this);
|
|
462
461
|
});
|
|
@@ -516,65 +515,13 @@ var weakListeners = () => {
|
|
|
516
515
|
};
|
|
517
516
|
};
|
|
518
517
|
|
|
519
|
-
// src/latch.ts
|
|
520
|
-
import { invariant } from "@dxos/invariant";
|
|
521
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/latch.ts";
|
|
522
|
-
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
523
|
-
invariant(count >= 0, void 0, {
|
|
524
|
-
F: __dxlog_file2,
|
|
525
|
-
L: 19,
|
|
526
|
-
S: void 0,
|
|
527
|
-
A: [
|
|
528
|
-
"count >= 0",
|
|
529
|
-
""
|
|
530
|
-
]
|
|
531
|
-
});
|
|
532
|
-
let t;
|
|
533
|
-
let doResolve;
|
|
534
|
-
let doReject;
|
|
535
|
-
const promise = new Promise((resolve, reject) => {
|
|
536
|
-
doResolve = (value) => {
|
|
537
|
-
clearTimeout(t);
|
|
538
|
-
resolve(value);
|
|
539
|
-
};
|
|
540
|
-
doReject = (err) => {
|
|
541
|
-
clearTimeout(t);
|
|
542
|
-
reject(err);
|
|
543
|
-
};
|
|
544
|
-
});
|
|
545
|
-
if (count === 0) {
|
|
546
|
-
setTimeout(() => {
|
|
547
|
-
doResolve(0);
|
|
548
|
-
});
|
|
549
|
-
} else {
|
|
550
|
-
if (timeout2) {
|
|
551
|
-
t = setTimeout(() => {
|
|
552
|
-
doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
|
|
553
|
-
}, timeout2);
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
let i = 0;
|
|
557
|
-
return [
|
|
558
|
-
async () => await promise,
|
|
559
|
-
() => {
|
|
560
|
-
if (++i === count) {
|
|
561
|
-
doResolve(i);
|
|
562
|
-
}
|
|
563
|
-
return i;
|
|
564
|
-
},
|
|
565
|
-
(err) => doReject(err)
|
|
566
|
-
];
|
|
567
|
-
};
|
|
568
|
-
|
|
569
518
|
// src/mutex.ts
|
|
570
519
|
import "@dxos/util";
|
|
571
520
|
import { warnAfterTimeout } from "@dxos/debug";
|
|
572
521
|
var Mutex = class {
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
this._tag = null;
|
|
577
|
-
}
|
|
522
|
+
_queue = Promise.resolve();
|
|
523
|
+
_queueLength = 0;
|
|
524
|
+
_tag = null;
|
|
578
525
|
get tag() {
|
|
579
526
|
return this._tag;
|
|
580
527
|
}
|
|
@@ -620,6 +567,7 @@ var Mutex = class {
|
|
|
620
567
|
}
|
|
621
568
|
};
|
|
622
569
|
var MutexGuard = class {
|
|
570
|
+
_release;
|
|
623
571
|
constructor(_release) {
|
|
624
572
|
this._release = _release;
|
|
625
573
|
}
|
|
@@ -663,6 +611,8 @@ import Observable from "zen-observable";
|
|
|
663
611
|
import PushStream from "zen-push";
|
|
664
612
|
|
|
665
613
|
// src/trigger.ts
|
|
614
|
+
import { invariant } from "@dxos/invariant";
|
|
615
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
|
|
666
616
|
var trigger = (timeout2) => {
|
|
667
617
|
let callback;
|
|
668
618
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -678,18 +628,22 @@ var trigger = (timeout2) => {
|
|
|
678
628
|
resolver
|
|
679
629
|
];
|
|
680
630
|
};
|
|
681
|
-
var TriggerState = /* @__PURE__ */ function(TriggerState2) {
|
|
631
|
+
var TriggerState = /* @__PURE__ */ (function(TriggerState2) {
|
|
682
632
|
TriggerState2["WAITING"] = "WAITING";
|
|
683
633
|
TriggerState2["RESOLVED"] = "RESOLVED";
|
|
684
634
|
TriggerState2["REJECTED"] = "REJECTED";
|
|
685
635
|
return TriggerState2;
|
|
686
|
-
}({});
|
|
636
|
+
})({});
|
|
687
637
|
var Trigger = class {
|
|
638
|
+
_options;
|
|
639
|
+
_promise;
|
|
640
|
+
_resolve;
|
|
641
|
+
_reject;
|
|
642
|
+
_state = "WAITING";
|
|
688
643
|
constructor(_options = {
|
|
689
644
|
autoReset: false
|
|
690
645
|
}) {
|
|
691
646
|
this._options = _options;
|
|
692
|
-
this._state = "WAITING";
|
|
693
647
|
this.reset();
|
|
694
648
|
}
|
|
695
649
|
get state() {
|
|
@@ -749,23 +703,61 @@ var Trigger = class {
|
|
|
749
703
|
return this;
|
|
750
704
|
}
|
|
751
705
|
};
|
|
706
|
+
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
707
|
+
invariant(count >= 0, void 0, {
|
|
708
|
+
F: __dxlog_file2,
|
|
709
|
+
L: 139,
|
|
710
|
+
S: void 0,
|
|
711
|
+
A: [
|
|
712
|
+
"count >= 0",
|
|
713
|
+
""
|
|
714
|
+
]
|
|
715
|
+
});
|
|
716
|
+
let t;
|
|
717
|
+
let doResolve;
|
|
718
|
+
let doReject;
|
|
719
|
+
const promise = new Promise((resolve, reject) => {
|
|
720
|
+
doResolve = (value) => {
|
|
721
|
+
clearTimeout(t);
|
|
722
|
+
resolve(value);
|
|
723
|
+
};
|
|
724
|
+
doReject = (err) => {
|
|
725
|
+
clearTimeout(t);
|
|
726
|
+
reject(err);
|
|
727
|
+
};
|
|
728
|
+
});
|
|
729
|
+
if (count === 0) {
|
|
730
|
+
setTimeout(() => {
|
|
731
|
+
doResolve(0);
|
|
732
|
+
});
|
|
733
|
+
} else {
|
|
734
|
+
if (timeout2) {
|
|
735
|
+
t = setTimeout(() => {
|
|
736
|
+
doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
|
|
737
|
+
}, timeout2);
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
let i = 0;
|
|
741
|
+
return [
|
|
742
|
+
async () => await promise,
|
|
743
|
+
() => {
|
|
744
|
+
if (++i === count) {
|
|
745
|
+
doResolve(i);
|
|
746
|
+
}
|
|
747
|
+
return i;
|
|
748
|
+
},
|
|
749
|
+
(err) => doReject(err)
|
|
750
|
+
];
|
|
751
|
+
};
|
|
752
752
|
|
|
753
753
|
// src/observable.ts
|
|
754
754
|
var MulticastObservable = class _MulticastObservable extends Observable {
|
|
755
|
+
_value;
|
|
756
|
+
_observers = /* @__PURE__ */ new Set();
|
|
757
|
+
_observable;
|
|
758
|
+
_completed = new Trigger();
|
|
755
759
|
constructor(subscriber, _value) {
|
|
756
|
-
super((observer) => this._subscribe(observer)), this._value = _value
|
|
757
|
-
next: (value) => {
|
|
758
|
-
this._value = value;
|
|
759
|
-
this._observers.forEach((observer) => observer.next?.(value));
|
|
760
|
-
},
|
|
761
|
-
error: (err) => {
|
|
762
|
-
this._observers.forEach((observer) => observer.error?.(err));
|
|
763
|
-
},
|
|
764
|
-
complete: () => {
|
|
765
|
-
this._completed.wake();
|
|
766
|
-
this._observers.forEach((observer) => observer.complete?.());
|
|
767
|
-
}
|
|
768
|
-
};
|
|
760
|
+
super((observer) => this._subscribe(observer)), this._value = _value;
|
|
769
761
|
this._observable = typeof subscriber === "function" ? new Observable(subscriber) : subscriber;
|
|
770
762
|
this._observable.subscribe(this._handlers);
|
|
771
763
|
}
|
|
@@ -849,18 +841,30 @@ var MulticastObservable = class _MulticastObservable extends Observable {
|
|
|
849
841
|
this._observers.delete(observer);
|
|
850
842
|
};
|
|
851
843
|
}
|
|
844
|
+
_handlers = {
|
|
845
|
+
next: (value) => {
|
|
846
|
+
this._value = value;
|
|
847
|
+
this._observers.forEach((observer) => observer.next?.(value));
|
|
848
|
+
},
|
|
849
|
+
error: (err) => {
|
|
850
|
+
this._observers.forEach((observer) => observer.error?.(err));
|
|
851
|
+
},
|
|
852
|
+
complete: () => {
|
|
853
|
+
this._completed.wake();
|
|
854
|
+
this._observers.forEach((observer) => observer.complete?.());
|
|
855
|
+
}
|
|
856
|
+
};
|
|
852
857
|
};
|
|
853
858
|
var EMPTY_OBSERVABLE = MulticastObservable.of(null);
|
|
854
859
|
|
|
855
860
|
// src/observable-value.ts
|
|
856
861
|
import { createSetDispatch } from "@dxos/util";
|
|
857
862
|
var ObservableProvider = class {
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
this.
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
}
|
|
863
|
+
_handlers = /* @__PURE__ */ new Set();
|
|
864
|
+
_proxy = createSetDispatch({
|
|
865
|
+
handlers: this._handlers
|
|
866
|
+
});
|
|
867
|
+
_value;
|
|
864
868
|
/**
|
|
865
869
|
* Proxy used to dispatch callbacks to each subscription.
|
|
866
870
|
*/
|
|
@@ -881,8 +885,10 @@ var ObservableProvider = class {
|
|
|
881
885
|
}
|
|
882
886
|
};
|
|
883
887
|
var CancellableObservableProvider = class extends ObservableProvider {
|
|
888
|
+
_handleCancel;
|
|
889
|
+
_cancelled = false;
|
|
884
890
|
constructor(_handleCancel) {
|
|
885
|
-
super(), this._handleCancel = _handleCancel
|
|
891
|
+
super(), this._handleCancel = _handleCancel;
|
|
886
892
|
}
|
|
887
893
|
get cancelled() {
|
|
888
894
|
return this._cancelled;
|
|
@@ -992,12 +998,14 @@ if (enabled) {
|
|
|
992
998
|
|
|
993
999
|
// src/task-scheduling.ts
|
|
994
1000
|
var DeferredTask = class {
|
|
1001
|
+
_ctx;
|
|
1002
|
+
_callback;
|
|
1003
|
+
_scheduled = false;
|
|
1004
|
+
_currentTask = null;
|
|
1005
|
+
_nextTask = new Trigger();
|
|
995
1006
|
constructor(_ctx, _callback) {
|
|
996
1007
|
this._ctx = _ctx;
|
|
997
1008
|
this._callback = _callback;
|
|
998
|
-
this._scheduled = false;
|
|
999
|
-
this._currentTask = null;
|
|
1000
|
-
this._nextTask = new Trigger();
|
|
1001
1009
|
}
|
|
1002
1010
|
get scheduled() {
|
|
1003
1011
|
return this._scheduled;
|
|
@@ -1127,11 +1135,15 @@ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecyc
|
|
|
1127
1135
|
var INIT_RESTART_DELAY = 100;
|
|
1128
1136
|
var DEFAULT_MAX_RESTART_DELAY = 5e3;
|
|
1129
1137
|
var PersistentLifecycle = class extends Resource {
|
|
1138
|
+
_start;
|
|
1139
|
+
_stop;
|
|
1140
|
+
_onRestart;
|
|
1141
|
+
_maxRestartDelay;
|
|
1142
|
+
_currentState = void 0;
|
|
1143
|
+
_restartTask = void 0;
|
|
1144
|
+
_restartAfter = 0;
|
|
1130
1145
|
constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
|
|
1131
1146
|
super();
|
|
1132
|
-
this._currentState = void 0;
|
|
1133
|
-
this._restartTask = void 0;
|
|
1134
|
-
this._restartAfter = 0;
|
|
1135
1147
|
this._start = start;
|
|
1136
1148
|
this._stop = stop;
|
|
1137
1149
|
this._onRestart = onRestart;
|
|
@@ -1293,20 +1305,6 @@ var makePushIterable = () => {
|
|
|
1293
1305
|
};
|
|
1294
1306
|
};
|
|
1295
1307
|
|
|
1296
|
-
// src/sink.ts
|
|
1297
|
-
var sink = (emitter, event, count = 1) => {
|
|
1298
|
-
const [getPromise, resolve] = trigger();
|
|
1299
|
-
let counter = 0;
|
|
1300
|
-
const listener = () => {
|
|
1301
|
-
if (++counter === count) {
|
|
1302
|
-
emitter.off(event, listener);
|
|
1303
|
-
resolve();
|
|
1304
|
-
}
|
|
1305
|
-
};
|
|
1306
|
-
emitter.on(event, listener);
|
|
1307
|
-
return getPromise();
|
|
1308
|
-
};
|
|
1309
|
-
|
|
1310
1308
|
// src/stream-to-array.ts
|
|
1311
1309
|
var streamToArray = (stream) => {
|
|
1312
1310
|
let deferred;
|
|
@@ -1352,11 +1350,6 @@ var streamToArray = (stream) => {
|
|
|
1352
1350
|
// src/test-stream.ts
|
|
1353
1351
|
import { Duplex } from "@dxos/node-std/stream";
|
|
1354
1352
|
var TestStream = class extends Duplex {
|
|
1355
|
-
constructor() {
|
|
1356
|
-
super(...arguments);
|
|
1357
|
-
this._received = Buffer.alloc(0);
|
|
1358
|
-
this._onWrite = new Event();
|
|
1359
|
-
}
|
|
1360
1353
|
static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
|
|
1361
1354
|
stream1.push("ping");
|
|
1362
1355
|
stream2.push("pong");
|
|
@@ -1369,6 +1362,8 @@ var TestStream = class extends Duplex {
|
|
|
1369
1362
|
})
|
|
1370
1363
|
]);
|
|
1371
1364
|
}
|
|
1365
|
+
_received = Buffer.alloc(0);
|
|
1366
|
+
_onWrite = new Event();
|
|
1372
1367
|
_write(chunk, encoding, callback) {
|
|
1373
1368
|
this._received = Buffer.concat([
|
|
1374
1369
|
this._received,
|
|
@@ -1410,13 +1405,48 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
|
|
|
1410
1405
|
timeout: timeout2
|
|
1411
1406
|
});
|
|
1412
1407
|
};
|
|
1408
|
+
var until = (cb, timeout2) => {
|
|
1409
|
+
return new Promise((resolve, reject) => {
|
|
1410
|
+
const t = timeout2 && setTimeout(() => {
|
|
1411
|
+
reject(new Error(`Timeout after ${t}ms`));
|
|
1412
|
+
}, timeout2);
|
|
1413
|
+
setTimeout(async () => {
|
|
1414
|
+
try {
|
|
1415
|
+
await cb((value) => {
|
|
1416
|
+
t && clearTimeout(t);
|
|
1417
|
+
resolve(value);
|
|
1418
|
+
}, (error) => {
|
|
1419
|
+
t && clearTimeout(t);
|
|
1420
|
+
reject(error);
|
|
1421
|
+
});
|
|
1422
|
+
} catch (err) {
|
|
1423
|
+
reject(err);
|
|
1424
|
+
}
|
|
1425
|
+
});
|
|
1426
|
+
});
|
|
1427
|
+
};
|
|
1428
|
+
var untilPromise = (cb) => cb();
|
|
1429
|
+
var untilError = (cb) => {
|
|
1430
|
+
return new Promise((resolve, reject) => {
|
|
1431
|
+
setTimeout(async () => {
|
|
1432
|
+
try {
|
|
1433
|
+
await cb();
|
|
1434
|
+
reject(new Error("No error was thrown."));
|
|
1435
|
+
} catch (err) {
|
|
1436
|
+
resolve(err);
|
|
1437
|
+
}
|
|
1438
|
+
});
|
|
1439
|
+
});
|
|
1440
|
+
};
|
|
1413
1441
|
|
|
1414
1442
|
// src/timer.ts
|
|
1415
1443
|
var Timer = class {
|
|
1444
|
+
_callback;
|
|
1445
|
+
_state = new Event();
|
|
1446
|
+
_timer;
|
|
1447
|
+
_count = 0;
|
|
1416
1448
|
constructor(_callback) {
|
|
1417
1449
|
this._callback = _callback;
|
|
1418
|
-
this._state = new Event();
|
|
1419
|
-
this._count = 0;
|
|
1420
1450
|
}
|
|
1421
1451
|
get state() {
|
|
1422
1452
|
return this._state;
|
|
@@ -1459,51 +1489,23 @@ var Timer = class {
|
|
|
1459
1489
|
}
|
|
1460
1490
|
};
|
|
1461
1491
|
|
|
1462
|
-
// src/until.ts
|
|
1463
|
-
var until = (cb, timeout2) => {
|
|
1464
|
-
return new Promise((resolve, reject) => {
|
|
1465
|
-
const t = timeout2 && setTimeout(() => {
|
|
1466
|
-
reject(new Error(`Timeout after ${t}ms`));
|
|
1467
|
-
}, timeout2);
|
|
1468
|
-
setTimeout(async () => {
|
|
1469
|
-
try {
|
|
1470
|
-
await cb((value) => {
|
|
1471
|
-
t && clearTimeout(t);
|
|
1472
|
-
resolve(value);
|
|
1473
|
-
}, (error) => {
|
|
1474
|
-
t && clearTimeout(t);
|
|
1475
|
-
reject(error);
|
|
1476
|
-
});
|
|
1477
|
-
} catch (err) {
|
|
1478
|
-
reject(err);
|
|
1479
|
-
}
|
|
1480
|
-
});
|
|
1481
|
-
});
|
|
1482
|
-
};
|
|
1483
|
-
var untilPromise = (cb) => cb();
|
|
1484
|
-
var untilError = (cb) => {
|
|
1485
|
-
return new Promise((resolve, reject) => {
|
|
1486
|
-
setTimeout(async () => {
|
|
1487
|
-
try {
|
|
1488
|
-
await cb();
|
|
1489
|
-
reject(new Error("No error was thrown."));
|
|
1490
|
-
} catch (err) {
|
|
1491
|
-
resolve(err);
|
|
1492
|
-
}
|
|
1493
|
-
});
|
|
1494
|
-
});
|
|
1495
|
-
};
|
|
1496
|
-
|
|
1497
1492
|
// src/update-scheduler.ts
|
|
1498
1493
|
var TIME_PERIOD = 1e3;
|
|
1499
1494
|
var UpdateScheduler = class {
|
|
1495
|
+
_ctx;
|
|
1496
|
+
_callback;
|
|
1497
|
+
_params;
|
|
1498
|
+
/**
|
|
1499
|
+
* Promise that resolves when the callback is done.
|
|
1500
|
+
* Never rejects.
|
|
1501
|
+
*/
|
|
1502
|
+
_promise = null;
|
|
1503
|
+
_scheduled = false;
|
|
1504
|
+
_lastUpdateTime = -TIME_PERIOD;
|
|
1500
1505
|
constructor(_ctx, _callback, _params = {}) {
|
|
1501
1506
|
this._ctx = _ctx;
|
|
1502
1507
|
this._callback = _callback;
|
|
1503
1508
|
this._params = _params;
|
|
1504
|
-
this._promise = null;
|
|
1505
|
-
this._scheduled = false;
|
|
1506
|
-
this._lastUpdateTime = -TIME_PERIOD;
|
|
1507
1509
|
_ctx.onDispose(async () => {
|
|
1508
1510
|
await this._promise;
|
|
1509
1511
|
});
|
|
@@ -1586,11 +1588,10 @@ export {
|
|
|
1586
1588
|
UpdateScheduler,
|
|
1587
1589
|
addEventListener,
|
|
1588
1590
|
addListener,
|
|
1589
|
-
asyncChain,
|
|
1590
1591
|
asyncReturn,
|
|
1591
1592
|
asyncTimeout,
|
|
1593
|
+
chain,
|
|
1592
1594
|
combine,
|
|
1593
|
-
createPromiseFromCallback,
|
|
1594
1595
|
debounce,
|
|
1595
1596
|
debounceAndThrottle,
|
|
1596
1597
|
dumpLeaks,
|
|
@@ -1599,13 +1600,13 @@ export {
|
|
|
1599
1600
|
makePushIterable,
|
|
1600
1601
|
observableError,
|
|
1601
1602
|
onEvent,
|
|
1603
|
+
promiseFromCallback,
|
|
1602
1604
|
runInContext,
|
|
1603
1605
|
runInContextAsync,
|
|
1604
1606
|
scheduleExponentialBackoffTaskInterval,
|
|
1605
1607
|
scheduleMicroTask,
|
|
1606
1608
|
scheduleTask,
|
|
1607
1609
|
scheduleTaskInterval,
|
|
1608
|
-
sink,
|
|
1609
1610
|
sleep,
|
|
1610
1611
|
sleepWithContext,
|
|
1611
1612
|
streamToArray,
|