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