@dxos/async 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d
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 +177 -166
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +177 -166
- 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,6 +447,11 @@ var Event = class _Event {
|
|
|
452
447
|
}
|
|
453
448
|
};
|
|
454
449
|
var EventListener = class {
|
|
450
|
+
ctx;
|
|
451
|
+
once;
|
|
452
|
+
weak;
|
|
453
|
+
callback;
|
|
454
|
+
_clearDispose;
|
|
455
455
|
constructor(event, listener, ctx, once, weak) {
|
|
456
456
|
this.ctx = ctx;
|
|
457
457
|
this.once = once;
|
|
@@ -516,65 +516,13 @@ var weakListeners = () => {
|
|
|
516
516
|
};
|
|
517
517
|
};
|
|
518
518
|
|
|
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
519
|
// src/mutex.ts
|
|
570
520
|
import "@dxos/util";
|
|
571
521
|
import { warnAfterTimeout } from "@dxos/debug";
|
|
572
522
|
var Mutex = class {
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
this._tag = null;
|
|
577
|
-
}
|
|
523
|
+
_queue = Promise.resolve();
|
|
524
|
+
_queueLength = 0;
|
|
525
|
+
_tag = null;
|
|
578
526
|
get tag() {
|
|
579
527
|
return this._tag;
|
|
580
528
|
}
|
|
@@ -620,6 +568,7 @@ var Mutex = class {
|
|
|
620
568
|
}
|
|
621
569
|
};
|
|
622
570
|
var MutexGuard = class {
|
|
571
|
+
_release;
|
|
623
572
|
constructor(_release) {
|
|
624
573
|
this._release = _release;
|
|
625
574
|
}
|
|
@@ -663,6 +612,8 @@ import Observable from "zen-observable";
|
|
|
663
612
|
import PushStream from "zen-push";
|
|
664
613
|
|
|
665
614
|
// src/trigger.ts
|
|
615
|
+
import { invariant } from "@dxos/invariant";
|
|
616
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
|
|
666
617
|
var trigger = (timeout2) => {
|
|
667
618
|
let callback;
|
|
668
619
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -685,6 +636,11 @@ var TriggerState = /* @__PURE__ */ function(TriggerState2) {
|
|
|
685
636
|
return TriggerState2;
|
|
686
637
|
}({});
|
|
687
638
|
var Trigger = class {
|
|
639
|
+
_options;
|
|
640
|
+
_promise;
|
|
641
|
+
_resolve;
|
|
642
|
+
_reject;
|
|
643
|
+
_state;
|
|
688
644
|
constructor(_options = {
|
|
689
645
|
autoReset: false
|
|
690
646
|
}) {
|
|
@@ -749,9 +705,59 @@ var Trigger = class {
|
|
|
749
705
|
return this;
|
|
750
706
|
}
|
|
751
707
|
};
|
|
708
|
+
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
709
|
+
invariant(count >= 0, void 0, {
|
|
710
|
+
F: __dxlog_file2,
|
|
711
|
+
L: 139,
|
|
712
|
+
S: void 0,
|
|
713
|
+
A: [
|
|
714
|
+
"count >= 0",
|
|
715
|
+
""
|
|
716
|
+
]
|
|
717
|
+
});
|
|
718
|
+
let t;
|
|
719
|
+
let doResolve;
|
|
720
|
+
let doReject;
|
|
721
|
+
const promise = new Promise((resolve, reject) => {
|
|
722
|
+
doResolve = (value) => {
|
|
723
|
+
clearTimeout(t);
|
|
724
|
+
resolve(value);
|
|
725
|
+
};
|
|
726
|
+
doReject = (err) => {
|
|
727
|
+
clearTimeout(t);
|
|
728
|
+
reject(err);
|
|
729
|
+
};
|
|
730
|
+
});
|
|
731
|
+
if (count === 0) {
|
|
732
|
+
setTimeout(() => {
|
|
733
|
+
doResolve(0);
|
|
734
|
+
});
|
|
735
|
+
} else {
|
|
736
|
+
if (timeout2) {
|
|
737
|
+
t = setTimeout(() => {
|
|
738
|
+
doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
|
|
739
|
+
}, timeout2);
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
let i = 0;
|
|
743
|
+
return [
|
|
744
|
+
async () => await promise,
|
|
745
|
+
() => {
|
|
746
|
+
if (++i === count) {
|
|
747
|
+
doResolve(i);
|
|
748
|
+
}
|
|
749
|
+
return i;
|
|
750
|
+
},
|
|
751
|
+
(err) => doReject(err)
|
|
752
|
+
];
|
|
753
|
+
};
|
|
752
754
|
|
|
753
755
|
// src/observable.ts
|
|
754
756
|
var MulticastObservable = class _MulticastObservable extends Observable {
|
|
757
|
+
_value;
|
|
758
|
+
_observers;
|
|
759
|
+
_observable;
|
|
760
|
+
_completed;
|
|
755
761
|
constructor(subscriber, _value) {
|
|
756
762
|
super((observer) => this._subscribe(observer)), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
|
|
757
763
|
next: (value) => {
|
|
@@ -849,18 +855,18 @@ var MulticastObservable = class _MulticastObservable extends Observable {
|
|
|
849
855
|
this._observers.delete(observer);
|
|
850
856
|
};
|
|
851
857
|
}
|
|
858
|
+
_handlers;
|
|
852
859
|
};
|
|
853
860
|
var EMPTY_OBSERVABLE = MulticastObservable.of(null);
|
|
854
861
|
|
|
855
862
|
// src/observable-value.ts
|
|
856
863
|
import { createSetDispatch } from "@dxos/util";
|
|
857
864
|
var ObservableProvider = class {
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
this.
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
}
|
|
865
|
+
_handlers = /* @__PURE__ */ new Set();
|
|
866
|
+
_proxy = createSetDispatch({
|
|
867
|
+
handlers: this._handlers
|
|
868
|
+
});
|
|
869
|
+
_value;
|
|
864
870
|
/**
|
|
865
871
|
* Proxy used to dispatch callbacks to each subscription.
|
|
866
872
|
*/
|
|
@@ -881,6 +887,8 @@ var ObservableProvider = class {
|
|
|
881
887
|
}
|
|
882
888
|
};
|
|
883
889
|
var CancellableObservableProvider = class extends ObservableProvider {
|
|
890
|
+
_handleCancel;
|
|
891
|
+
_cancelled;
|
|
884
892
|
constructor(_handleCancel) {
|
|
885
893
|
super(), this._handleCancel = _handleCancel, this._cancelled = false;
|
|
886
894
|
}
|
|
@@ -992,6 +1000,11 @@ if (enabled) {
|
|
|
992
1000
|
|
|
993
1001
|
// src/task-scheduling.ts
|
|
994
1002
|
var DeferredTask = class {
|
|
1003
|
+
_ctx;
|
|
1004
|
+
_callback;
|
|
1005
|
+
_scheduled;
|
|
1006
|
+
_currentTask;
|
|
1007
|
+
_nextTask;
|
|
995
1008
|
constructor(_ctx, _callback) {
|
|
996
1009
|
this._ctx = _ctx;
|
|
997
1010
|
this._callback = _callback;
|
|
@@ -1127,11 +1140,15 @@ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecyc
|
|
|
1127
1140
|
var INIT_RESTART_DELAY = 100;
|
|
1128
1141
|
var DEFAULT_MAX_RESTART_DELAY = 5e3;
|
|
1129
1142
|
var PersistentLifecycle = class extends Resource {
|
|
1143
|
+
_start;
|
|
1144
|
+
_stop;
|
|
1145
|
+
_onRestart;
|
|
1146
|
+
_maxRestartDelay;
|
|
1147
|
+
_currentState = void 0;
|
|
1148
|
+
_restartTask = void 0;
|
|
1149
|
+
_restartAfter = 0;
|
|
1130
1150
|
constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
|
|
1131
1151
|
super();
|
|
1132
|
-
this._currentState = void 0;
|
|
1133
|
-
this._restartTask = void 0;
|
|
1134
|
-
this._restartAfter = 0;
|
|
1135
1152
|
this._start = start;
|
|
1136
1153
|
this._stop = stop;
|
|
1137
1154
|
this._onRestart = onRestart;
|
|
@@ -1293,20 +1310,6 @@ var makePushIterable = () => {
|
|
|
1293
1310
|
};
|
|
1294
1311
|
};
|
|
1295
1312
|
|
|
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
1313
|
// src/stream-to-array.ts
|
|
1311
1314
|
var streamToArray = (stream) => {
|
|
1312
1315
|
let deferred;
|
|
@@ -1352,11 +1355,6 @@ var streamToArray = (stream) => {
|
|
|
1352
1355
|
// src/test-stream.ts
|
|
1353
1356
|
import { Duplex } from "@dxos/node-std/stream";
|
|
1354
1357
|
var TestStream = class extends Duplex {
|
|
1355
|
-
constructor() {
|
|
1356
|
-
super(...arguments);
|
|
1357
|
-
this._received = Buffer.alloc(0);
|
|
1358
|
-
this._onWrite = new Event();
|
|
1359
|
-
}
|
|
1360
1358
|
static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
|
|
1361
1359
|
stream1.push("ping");
|
|
1362
1360
|
stream2.push("pong");
|
|
@@ -1369,6 +1367,8 @@ var TestStream = class extends Duplex {
|
|
|
1369
1367
|
})
|
|
1370
1368
|
]);
|
|
1371
1369
|
}
|
|
1370
|
+
_received = Buffer.alloc(0);
|
|
1371
|
+
_onWrite = new Event();
|
|
1372
1372
|
_write(chunk, encoding, callback) {
|
|
1373
1373
|
this._received = Buffer.concat([
|
|
1374
1374
|
this._received,
|
|
@@ -1410,9 +1410,46 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
|
|
|
1410
1410
|
timeout: timeout2
|
|
1411
1411
|
});
|
|
1412
1412
|
};
|
|
1413
|
+
var until = (cb, timeout2) => {
|
|
1414
|
+
return new Promise((resolve, reject) => {
|
|
1415
|
+
const t = timeout2 && setTimeout(() => {
|
|
1416
|
+
reject(new Error(`Timeout after ${t}ms`));
|
|
1417
|
+
}, timeout2);
|
|
1418
|
+
setTimeout(async () => {
|
|
1419
|
+
try {
|
|
1420
|
+
await cb((value) => {
|
|
1421
|
+
t && clearTimeout(t);
|
|
1422
|
+
resolve(value);
|
|
1423
|
+
}, (error) => {
|
|
1424
|
+
t && clearTimeout(t);
|
|
1425
|
+
reject(error);
|
|
1426
|
+
});
|
|
1427
|
+
} catch (err) {
|
|
1428
|
+
reject(err);
|
|
1429
|
+
}
|
|
1430
|
+
});
|
|
1431
|
+
});
|
|
1432
|
+
};
|
|
1433
|
+
var untilPromise = (cb) => cb();
|
|
1434
|
+
var untilError = (cb) => {
|
|
1435
|
+
return new Promise((resolve, reject) => {
|
|
1436
|
+
setTimeout(async () => {
|
|
1437
|
+
try {
|
|
1438
|
+
await cb();
|
|
1439
|
+
reject(new Error("No error was thrown."));
|
|
1440
|
+
} catch (err) {
|
|
1441
|
+
resolve(err);
|
|
1442
|
+
}
|
|
1443
|
+
});
|
|
1444
|
+
});
|
|
1445
|
+
};
|
|
1413
1446
|
|
|
1414
1447
|
// src/timer.ts
|
|
1415
1448
|
var Timer = class {
|
|
1449
|
+
_callback;
|
|
1450
|
+
_state;
|
|
1451
|
+
_timer;
|
|
1452
|
+
_count;
|
|
1416
1453
|
constructor(_callback) {
|
|
1417
1454
|
this._callback = _callback;
|
|
1418
1455
|
this._state = new Event();
|
|
@@ -1459,44 +1496,19 @@ var Timer = class {
|
|
|
1459
1496
|
}
|
|
1460
1497
|
};
|
|
1461
1498
|
|
|
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
1499
|
// src/update-scheduler.ts
|
|
1498
1500
|
var TIME_PERIOD = 1e3;
|
|
1499
1501
|
var UpdateScheduler = class {
|
|
1502
|
+
_ctx;
|
|
1503
|
+
_callback;
|
|
1504
|
+
_params;
|
|
1505
|
+
/**
|
|
1506
|
+
* Promise that resolves when the callback is done.
|
|
1507
|
+
* Never rejects.
|
|
1508
|
+
*/
|
|
1509
|
+
_promise;
|
|
1510
|
+
_scheduled;
|
|
1511
|
+
_lastUpdateTime;
|
|
1500
1512
|
constructor(_ctx, _callback, _params = {}) {
|
|
1501
1513
|
this._ctx = _ctx;
|
|
1502
1514
|
this._callback = _callback;
|
|
@@ -1586,11 +1598,10 @@ export {
|
|
|
1586
1598
|
UpdateScheduler,
|
|
1587
1599
|
addEventListener,
|
|
1588
1600
|
addListener,
|
|
1589
|
-
asyncChain,
|
|
1590
1601
|
asyncReturn,
|
|
1591
1602
|
asyncTimeout,
|
|
1603
|
+
chain,
|
|
1592
1604
|
combine,
|
|
1593
|
-
createPromiseFromCallback,
|
|
1594
1605
|
debounce,
|
|
1595
1606
|
debounceAndThrottle,
|
|
1596
1607
|
dumpLeaks,
|
|
@@ -1599,13 +1610,13 @@ export {
|
|
|
1599
1610
|
makePushIterable,
|
|
1600
1611
|
observableError,
|
|
1601
1612
|
onEvent,
|
|
1613
|
+
promiseFromCallback,
|
|
1602
1614
|
runInContext,
|
|
1603
1615
|
runInContextAsync,
|
|
1604
1616
|
scheduleExponentialBackoffTaskInterval,
|
|
1605
1617
|
scheduleMicroTask,
|
|
1606
1618
|
scheduleTask,
|
|
1607
1619
|
scheduleTaskInterval,
|
|
1608
|
-
sink,
|
|
1609
1620
|
sleep,
|
|
1610
1621
|
sleepWithContext,
|
|
1611
1622
|
streamToArray,
|