@dxos/async 0.8.3-staging.0fa589b → 0.8.4-main.28f8d3d
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 +214 -181
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +214 -181
- 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 +19 -1
- package/dist/types/src/debounce.d.ts.map +1 -1
- package/dist/types/src/debounce.test.d.ts +2 -0
- package/dist/types/src/debounce.test.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +0 -4
- 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 +115 -0
- package/src/debounce.ts +40 -4
- package/src/event-emitter.test.ts +2 -1
- package/src/events.test.ts +1 -1
- package/src/index.ts +0 -4
- 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/lib/node/index.cjs +0 -1638
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -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/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/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
|
-
//
|
|
4
|
-
var
|
|
3
|
+
// src/callback.ts
|
|
4
|
+
var promiseFromCallback = (run) => new Promise((resolve, reject) => {
|
|
5
5
|
run((error, value) => {
|
|
6
6
|
if (error) {
|
|
7
7
|
reject(error);
|
|
@@ -11,16 +11,16 @@ var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
|
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
//
|
|
15
|
-
var
|
|
14
|
+
// src/chain.ts
|
|
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;
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
//
|
|
23
|
+
// src/cleanup.ts
|
|
24
24
|
import { ComplexMap } from "@dxos/util";
|
|
25
25
|
var combine = (...cleanupFns) => {
|
|
26
26
|
return () => {
|
|
@@ -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,16 +65,34 @@ var SubscriptionSet = class {
|
|
|
66
65
|
}
|
|
67
66
|
};
|
|
68
67
|
|
|
69
|
-
//
|
|
70
|
-
var debounce = (cb,
|
|
68
|
+
// src/debounce.ts
|
|
69
|
+
var debounce = (cb, delay = 100) => {
|
|
71
70
|
let t;
|
|
72
71
|
return (...args) => {
|
|
73
72
|
clearTimeout(t);
|
|
74
|
-
t = setTimeout(() => cb(...args),
|
|
73
|
+
t = setTimeout(() => cb(...args), delay);
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
var throttle = (cb, delay = 100) => {
|
|
77
|
+
let lastCall = 0;
|
|
78
|
+
return (...args) => {
|
|
79
|
+
const now = Date.now();
|
|
80
|
+
if (now - lastCall >= delay) {
|
|
81
|
+
cb(...args);
|
|
82
|
+
lastCall = now;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
var debounceAndThrottle = (cb, delay = 100) => {
|
|
87
|
+
const debounced = debounce(cb, delay);
|
|
88
|
+
const throttled = throttle(cb, delay);
|
|
89
|
+
return (...args) => {
|
|
90
|
+
debounced(...args);
|
|
91
|
+
throttled(...args);
|
|
75
92
|
};
|
|
76
93
|
};
|
|
77
94
|
|
|
78
|
-
//
|
|
95
|
+
// src/errors.ts
|
|
79
96
|
var toError = (err) => err === void 0 || typeof err === "string" ? new Error(err) : err;
|
|
80
97
|
var TimeoutError = class extends Error {
|
|
81
98
|
constructor(timeout2, label) {
|
|
@@ -90,7 +107,7 @@ var observableError = (observable, err) => {
|
|
|
90
107
|
}
|
|
91
108
|
};
|
|
92
109
|
|
|
93
|
-
//
|
|
110
|
+
// src/timeout.ts
|
|
94
111
|
import { ContextDisposedError } from "@dxos/context";
|
|
95
112
|
var sleep = (ms) => {
|
|
96
113
|
return new Promise((resolve) => {
|
|
@@ -106,6 +123,23 @@ var sleep = (ms) => {
|
|
|
106
123
|
sleeper();
|
|
107
124
|
});
|
|
108
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
|
+
};
|
|
109
143
|
var asyncReturn = () => sleep(0);
|
|
110
144
|
var asyncTimeout = async (promise, timeout2, err) => {
|
|
111
145
|
let timeoutId;
|
|
@@ -116,7 +150,7 @@ var asyncTimeout = async (promise, timeout2, err) => {
|
|
|
116
150
|
}, timeout2);
|
|
117
151
|
unrefTimeout(timeoutId);
|
|
118
152
|
});
|
|
119
|
-
const conditionTimeout = typeof promise === "function" ?
|
|
153
|
+
const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
|
|
120
154
|
return await Promise.race([
|
|
121
155
|
conditionTimeout,
|
|
122
156
|
timeoutPromise
|
|
@@ -129,25 +163,8 @@ var unrefTimeout = (timeoutId) => {
|
|
|
129
163
|
timeoutId.unref();
|
|
130
164
|
}
|
|
131
165
|
};
|
|
132
|
-
var sleepWithContext = (ctx, ms) => {
|
|
133
|
-
const error = new ContextDisposedError();
|
|
134
|
-
return new Promise((resolve, reject) => {
|
|
135
|
-
if (ctx.disposed) {
|
|
136
|
-
reject(error);
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
const timeout2 = setTimeout(() => {
|
|
140
|
-
clearDispose();
|
|
141
|
-
resolve();
|
|
142
|
-
}, ms);
|
|
143
|
-
const clearDispose = ctx.onDispose(() => {
|
|
144
|
-
clearTimeout(timeout2);
|
|
145
|
-
reject(error);
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
};
|
|
149
166
|
|
|
150
|
-
//
|
|
167
|
+
// src/event-emitter.ts
|
|
151
168
|
var onEvent = (eventEmitter, eventName, callback) => {
|
|
152
169
|
eventEmitter.on(eventName, callback);
|
|
153
170
|
return () => eventEmitter.off(eventName, callback);
|
|
@@ -170,15 +187,11 @@ var waitForEvent = (eventEmitter, eventName, test, timeout2, error) => {
|
|
|
170
187
|
return timeout2 ? asyncTimeout(promise, timeout2, error ?? new Error()).finally(off) : promise.finally(off);
|
|
171
188
|
};
|
|
172
189
|
|
|
173
|
-
//
|
|
190
|
+
// src/events.ts
|
|
174
191
|
import { Context } from "@dxos/context";
|
|
175
|
-
var __dxlog_file = "/
|
|
192
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
|
|
176
193
|
var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
|
|
177
194
|
var Event = class _Event {
|
|
178
|
-
constructor() {
|
|
179
|
-
this._listeners = /* @__PURE__ */ new Set();
|
|
180
|
-
this._effects = /* @__PURE__ */ new Set();
|
|
181
|
-
}
|
|
182
195
|
/**
|
|
183
196
|
* Wrap objects that have on/off style event emitters.
|
|
184
197
|
*/
|
|
@@ -191,6 +204,8 @@ var Event = class _Event {
|
|
|
191
204
|
});
|
|
192
205
|
return event;
|
|
193
206
|
}
|
|
207
|
+
_listeners = /* @__PURE__ */ new Set();
|
|
208
|
+
_effects = /* @__PURE__ */ new Set();
|
|
194
209
|
/**
|
|
195
210
|
* Emit an event.
|
|
196
211
|
* In most cases should only be called by the class or entity containing the event.
|
|
@@ -434,6 +449,11 @@ var Event = class _Event {
|
|
|
434
449
|
}
|
|
435
450
|
};
|
|
436
451
|
var EventListener = class {
|
|
452
|
+
ctx;
|
|
453
|
+
once;
|
|
454
|
+
weak;
|
|
455
|
+
callback;
|
|
456
|
+
_clearDispose;
|
|
437
457
|
constructor(event, listener, ctx, once, weak) {
|
|
438
458
|
this.ctx = ctx;
|
|
439
459
|
this.once = once;
|
|
@@ -498,65 +518,13 @@ var weakListeners = () => {
|
|
|
498
518
|
};
|
|
499
519
|
};
|
|
500
520
|
|
|
501
|
-
//
|
|
502
|
-
import { invariant } from "@dxos/invariant";
|
|
503
|
-
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/common/async/src/latch.ts";
|
|
504
|
-
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
505
|
-
invariant(count >= 0, void 0, {
|
|
506
|
-
F: __dxlog_file2,
|
|
507
|
-
L: 19,
|
|
508
|
-
S: void 0,
|
|
509
|
-
A: [
|
|
510
|
-
"count >= 0",
|
|
511
|
-
""
|
|
512
|
-
]
|
|
513
|
-
});
|
|
514
|
-
let t;
|
|
515
|
-
let doResolve;
|
|
516
|
-
let doReject;
|
|
517
|
-
const promise = new Promise((resolve, reject) => {
|
|
518
|
-
doResolve = (value) => {
|
|
519
|
-
clearTimeout(t);
|
|
520
|
-
resolve(value);
|
|
521
|
-
};
|
|
522
|
-
doReject = (err) => {
|
|
523
|
-
clearTimeout(t);
|
|
524
|
-
reject(err);
|
|
525
|
-
};
|
|
526
|
-
});
|
|
527
|
-
if (count === 0) {
|
|
528
|
-
setTimeout(() => {
|
|
529
|
-
doResolve(0);
|
|
530
|
-
});
|
|
531
|
-
} else {
|
|
532
|
-
if (timeout2) {
|
|
533
|
-
t = setTimeout(() => {
|
|
534
|
-
doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
|
|
535
|
-
}, timeout2);
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
let i = 0;
|
|
539
|
-
return [
|
|
540
|
-
async () => await promise,
|
|
541
|
-
() => {
|
|
542
|
-
if (++i === count) {
|
|
543
|
-
doResolve(i);
|
|
544
|
-
}
|
|
545
|
-
return i;
|
|
546
|
-
},
|
|
547
|
-
(err) => doReject(err)
|
|
548
|
-
];
|
|
549
|
-
};
|
|
550
|
-
|
|
551
|
-
// packages/common/async/src/mutex.ts
|
|
521
|
+
// src/mutex.ts
|
|
552
522
|
import "@dxos/util";
|
|
553
523
|
import { warnAfterTimeout } from "@dxos/debug";
|
|
554
524
|
var Mutex = class {
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
this._tag = null;
|
|
559
|
-
}
|
|
525
|
+
_queue = Promise.resolve();
|
|
526
|
+
_queueLength = 0;
|
|
527
|
+
_tag = null;
|
|
560
528
|
get tag() {
|
|
561
529
|
return this._tag;
|
|
562
530
|
}
|
|
@@ -602,6 +570,7 @@ var Mutex = class {
|
|
|
602
570
|
}
|
|
603
571
|
};
|
|
604
572
|
var MutexGuard = class {
|
|
573
|
+
_release;
|
|
605
574
|
constructor(_release) {
|
|
606
575
|
this._release = _release;
|
|
607
576
|
}
|
|
@@ -640,11 +609,13 @@ var synchronized = (target, propertyName, descriptor) => {
|
|
|
640
609
|
});
|
|
641
610
|
};
|
|
642
611
|
|
|
643
|
-
//
|
|
612
|
+
// src/observable.ts
|
|
644
613
|
import Observable from "zen-observable";
|
|
645
614
|
import PushStream from "zen-push";
|
|
646
615
|
|
|
647
|
-
//
|
|
616
|
+
// src/trigger.ts
|
|
617
|
+
import { invariant } from "@dxos/invariant";
|
|
618
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
|
|
648
619
|
var trigger = (timeout2) => {
|
|
649
620
|
let callback;
|
|
650
621
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -667,6 +638,11 @@ var TriggerState = /* @__PURE__ */ function(TriggerState2) {
|
|
|
667
638
|
return TriggerState2;
|
|
668
639
|
}({});
|
|
669
640
|
var Trigger = class {
|
|
641
|
+
_options;
|
|
642
|
+
_promise;
|
|
643
|
+
_resolve;
|
|
644
|
+
_reject;
|
|
645
|
+
_state;
|
|
670
646
|
constructor(_options = {
|
|
671
647
|
autoReset: false
|
|
672
648
|
}) {
|
|
@@ -731,9 +707,59 @@ var Trigger = class {
|
|
|
731
707
|
return this;
|
|
732
708
|
}
|
|
733
709
|
};
|
|
710
|
+
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
711
|
+
invariant(count >= 0, void 0, {
|
|
712
|
+
F: __dxlog_file2,
|
|
713
|
+
L: 139,
|
|
714
|
+
S: void 0,
|
|
715
|
+
A: [
|
|
716
|
+
"count >= 0",
|
|
717
|
+
""
|
|
718
|
+
]
|
|
719
|
+
});
|
|
720
|
+
let t;
|
|
721
|
+
let doResolve;
|
|
722
|
+
let doReject;
|
|
723
|
+
const promise = new Promise((resolve, reject) => {
|
|
724
|
+
doResolve = (value) => {
|
|
725
|
+
clearTimeout(t);
|
|
726
|
+
resolve(value);
|
|
727
|
+
};
|
|
728
|
+
doReject = (err) => {
|
|
729
|
+
clearTimeout(t);
|
|
730
|
+
reject(err);
|
|
731
|
+
};
|
|
732
|
+
});
|
|
733
|
+
if (count === 0) {
|
|
734
|
+
setTimeout(() => {
|
|
735
|
+
doResolve(0);
|
|
736
|
+
});
|
|
737
|
+
} else {
|
|
738
|
+
if (timeout2) {
|
|
739
|
+
t = setTimeout(() => {
|
|
740
|
+
doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
|
|
741
|
+
}, timeout2);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
let i = 0;
|
|
745
|
+
return [
|
|
746
|
+
async () => await promise,
|
|
747
|
+
() => {
|
|
748
|
+
if (++i === count) {
|
|
749
|
+
doResolve(i);
|
|
750
|
+
}
|
|
751
|
+
return i;
|
|
752
|
+
},
|
|
753
|
+
(err) => doReject(err)
|
|
754
|
+
];
|
|
755
|
+
};
|
|
734
756
|
|
|
735
|
-
//
|
|
757
|
+
// src/observable.ts
|
|
736
758
|
var MulticastObservable = class _MulticastObservable extends Observable {
|
|
759
|
+
_value;
|
|
760
|
+
_observers;
|
|
761
|
+
_observable;
|
|
762
|
+
_completed;
|
|
737
763
|
constructor(subscriber, _value) {
|
|
738
764
|
super((observer) => this._subscribe(observer)), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
|
|
739
765
|
next: (value) => {
|
|
@@ -831,18 +857,18 @@ var MulticastObservable = class _MulticastObservable extends Observable {
|
|
|
831
857
|
this._observers.delete(observer);
|
|
832
858
|
};
|
|
833
859
|
}
|
|
860
|
+
_handlers;
|
|
834
861
|
};
|
|
835
862
|
var EMPTY_OBSERVABLE = MulticastObservable.of(null);
|
|
836
863
|
|
|
837
|
-
//
|
|
864
|
+
// src/observable-value.ts
|
|
838
865
|
import { createSetDispatch } from "@dxos/util";
|
|
839
866
|
var ObservableProvider = class {
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
this.
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
}
|
|
867
|
+
_handlers = /* @__PURE__ */ new Set();
|
|
868
|
+
_proxy = createSetDispatch({
|
|
869
|
+
handlers: this._handlers
|
|
870
|
+
});
|
|
871
|
+
_value;
|
|
846
872
|
/**
|
|
847
873
|
* Proxy used to dispatch callbacks to each subscription.
|
|
848
874
|
*/
|
|
@@ -863,6 +889,8 @@ var ObservableProvider = class {
|
|
|
863
889
|
}
|
|
864
890
|
};
|
|
865
891
|
var CancellableObservableProvider = class extends ObservableProvider {
|
|
892
|
+
_handleCancel;
|
|
893
|
+
_cancelled;
|
|
866
894
|
constructor(_handleCancel) {
|
|
867
895
|
super(), this._handleCancel = _handleCancel, this._cancelled = false;
|
|
868
896
|
}
|
|
@@ -879,19 +907,19 @@ var CancellableObservableProvider = class extends ObservableProvider {
|
|
|
879
907
|
}
|
|
880
908
|
};
|
|
881
909
|
|
|
882
|
-
//
|
|
910
|
+
// src/persistent-lifecycle.ts
|
|
883
911
|
import { LifecycleState, Resource, cancelWithContext } from "@dxos/context";
|
|
884
912
|
import { warnAfterTimeout as warnAfterTimeout2 } from "@dxos/debug";
|
|
885
913
|
import { log as log2 } from "@dxos/log";
|
|
886
914
|
|
|
887
|
-
//
|
|
915
|
+
// src/task-scheduling.ts
|
|
888
916
|
import { ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
|
|
889
917
|
import { StackTrace as StackTrace2 } from "@dxos/debug";
|
|
890
918
|
|
|
891
|
-
//
|
|
919
|
+
// src/track-leaks.ts
|
|
892
920
|
import { StackTrace } from "@dxos/debug";
|
|
893
921
|
import { log } from "@dxos/log";
|
|
894
|
-
var __dxlog_file3 = "/
|
|
922
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/common/async/src/track-leaks.ts";
|
|
895
923
|
var enabled = typeof process !== "undefined" && !!process.env.DX_TRACK_LEAKS;
|
|
896
924
|
var openResources = /* @__PURE__ */ new Set();
|
|
897
925
|
var handleSymbol = Symbol("checkLeaksHandle");
|
|
@@ -972,8 +1000,13 @@ if (enabled) {
|
|
|
972
1000
|
global.dxDumpLeaks = dumpLeaks;
|
|
973
1001
|
}
|
|
974
1002
|
|
|
975
|
-
//
|
|
1003
|
+
// src/task-scheduling.ts
|
|
976
1004
|
var DeferredTask = class {
|
|
1005
|
+
_ctx;
|
|
1006
|
+
_callback;
|
|
1007
|
+
_scheduled;
|
|
1008
|
+
_currentTask;
|
|
1009
|
+
_nextTask;
|
|
977
1010
|
constructor(_ctx, _callback) {
|
|
978
1011
|
this._ctx = _ctx;
|
|
979
1012
|
this._callback = _callback;
|
|
@@ -1098,22 +1131,26 @@ var scheduleExponentialBackoffTaskInterval = (ctx, task, initialInterval) => {
|
|
|
1098
1131
|
});
|
|
1099
1132
|
};
|
|
1100
1133
|
|
|
1101
|
-
//
|
|
1134
|
+
// src/persistent-lifecycle.ts
|
|
1102
1135
|
function _ts_decorate(decorators, target, key, desc) {
|
|
1103
1136
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1104
1137
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1105
1138
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1106
1139
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1107
1140
|
}
|
|
1108
|
-
var __dxlog_file4 = "/
|
|
1141
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecycle.ts";
|
|
1109
1142
|
var INIT_RESTART_DELAY = 100;
|
|
1110
1143
|
var DEFAULT_MAX_RESTART_DELAY = 5e3;
|
|
1111
1144
|
var PersistentLifecycle = class extends Resource {
|
|
1145
|
+
_start;
|
|
1146
|
+
_stop;
|
|
1147
|
+
_onRestart;
|
|
1148
|
+
_maxRestartDelay;
|
|
1149
|
+
_currentState = void 0;
|
|
1150
|
+
_restartTask = void 0;
|
|
1151
|
+
_restartAfter = 0;
|
|
1112
1152
|
constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
|
|
1113
1153
|
super();
|
|
1114
|
-
this._currentState = void 0;
|
|
1115
|
-
this._restartTask = void 0;
|
|
1116
|
-
this._restartAfter = 0;
|
|
1117
1154
|
this._start = start;
|
|
1118
1155
|
this._stop = stop;
|
|
1119
1156
|
this._onRestart = onRestart;
|
|
@@ -1209,9 +1246,9 @@ _ts_decorate([
|
|
|
1209
1246
|
synchronized
|
|
1210
1247
|
], PersistentLifecycle.prototype, "scheduleRestart", null);
|
|
1211
1248
|
|
|
1212
|
-
//
|
|
1249
|
+
// src/push-iterable.ts
|
|
1213
1250
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
1214
|
-
var __dxlog_file5 = "/
|
|
1251
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/common/async/src/push-iterable.ts";
|
|
1215
1252
|
var makePushIterable = () => {
|
|
1216
1253
|
const buf = [];
|
|
1217
1254
|
const trigger2 = new Trigger({
|
|
@@ -1275,21 +1312,7 @@ var makePushIterable = () => {
|
|
|
1275
1312
|
};
|
|
1276
1313
|
};
|
|
1277
1314
|
|
|
1278
|
-
//
|
|
1279
|
-
var sink = (emitter, event, count = 1) => {
|
|
1280
|
-
const [getPromise, resolve] = trigger();
|
|
1281
|
-
let counter = 0;
|
|
1282
|
-
const listener = () => {
|
|
1283
|
-
if (++counter === count) {
|
|
1284
|
-
emitter.off(event, listener);
|
|
1285
|
-
resolve();
|
|
1286
|
-
}
|
|
1287
|
-
};
|
|
1288
|
-
emitter.on(event, listener);
|
|
1289
|
-
return getPromise();
|
|
1290
|
-
};
|
|
1291
|
-
|
|
1292
|
-
// packages/common/async/src/stream-to-array.ts
|
|
1315
|
+
// src/stream-to-array.ts
|
|
1293
1316
|
var streamToArray = (stream) => {
|
|
1294
1317
|
let deferred;
|
|
1295
1318
|
if (!stream.readable) {
|
|
@@ -1331,14 +1354,9 @@ var streamToArray = (stream) => {
|
|
|
1331
1354
|
return deferred;
|
|
1332
1355
|
};
|
|
1333
1356
|
|
|
1334
|
-
//
|
|
1357
|
+
// src/test-stream.ts
|
|
1335
1358
|
import { Duplex } from "node:stream";
|
|
1336
1359
|
var TestStream = class extends Duplex {
|
|
1337
|
-
constructor() {
|
|
1338
|
-
super(...arguments);
|
|
1339
|
-
this._received = Buffer.alloc(0);
|
|
1340
|
-
this._onWrite = new Event();
|
|
1341
|
-
}
|
|
1342
1360
|
static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
|
|
1343
1361
|
stream1.push("ping");
|
|
1344
1362
|
stream2.push("pong");
|
|
@@ -1351,6 +1369,8 @@ var TestStream = class extends Duplex {
|
|
|
1351
1369
|
})
|
|
1352
1370
|
]);
|
|
1353
1371
|
}
|
|
1372
|
+
_received = Buffer.alloc(0);
|
|
1373
|
+
_onWrite = new Event();
|
|
1354
1374
|
_write(chunk, encoding, callback) {
|
|
1355
1375
|
this._received = Buffer.concat([
|
|
1356
1376
|
this._received,
|
|
@@ -1367,7 +1387,7 @@ var TestStream = class extends Duplex {
|
|
|
1367
1387
|
}
|
|
1368
1388
|
};
|
|
1369
1389
|
|
|
1370
|
-
//
|
|
1390
|
+
// src/testing.ts
|
|
1371
1391
|
var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2 = 10, error, breakOnError = false }) => {
|
|
1372
1392
|
const stopTime = timeout2 ? Date.now() + timeout2 : 0;
|
|
1373
1393
|
const trigger2 = new Trigger();
|
|
@@ -1392,9 +1412,46 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
|
|
|
1392
1412
|
timeout: timeout2
|
|
1393
1413
|
});
|
|
1394
1414
|
};
|
|
1415
|
+
var until = (cb, timeout2) => {
|
|
1416
|
+
return new Promise((resolve, reject) => {
|
|
1417
|
+
const t = timeout2 && setTimeout(() => {
|
|
1418
|
+
reject(new Error(`Timeout after ${t}ms`));
|
|
1419
|
+
}, timeout2);
|
|
1420
|
+
setTimeout(async () => {
|
|
1421
|
+
try {
|
|
1422
|
+
await cb((value) => {
|
|
1423
|
+
t && clearTimeout(t);
|
|
1424
|
+
resolve(value);
|
|
1425
|
+
}, (error) => {
|
|
1426
|
+
t && clearTimeout(t);
|
|
1427
|
+
reject(error);
|
|
1428
|
+
});
|
|
1429
|
+
} catch (err) {
|
|
1430
|
+
reject(err);
|
|
1431
|
+
}
|
|
1432
|
+
});
|
|
1433
|
+
});
|
|
1434
|
+
};
|
|
1435
|
+
var untilPromise = (cb) => cb();
|
|
1436
|
+
var untilError = (cb) => {
|
|
1437
|
+
return new Promise((resolve, reject) => {
|
|
1438
|
+
setTimeout(async () => {
|
|
1439
|
+
try {
|
|
1440
|
+
await cb();
|
|
1441
|
+
reject(new Error("No error was thrown."));
|
|
1442
|
+
} catch (err) {
|
|
1443
|
+
resolve(err);
|
|
1444
|
+
}
|
|
1445
|
+
});
|
|
1446
|
+
});
|
|
1447
|
+
};
|
|
1395
1448
|
|
|
1396
|
-
//
|
|
1449
|
+
// src/timer.ts
|
|
1397
1450
|
var Timer = class {
|
|
1451
|
+
_callback;
|
|
1452
|
+
_state;
|
|
1453
|
+
_timer;
|
|
1454
|
+
_count;
|
|
1398
1455
|
constructor(_callback) {
|
|
1399
1456
|
this._callback = _callback;
|
|
1400
1457
|
this._state = new Event();
|
|
@@ -1441,44 +1498,19 @@ var Timer = class {
|
|
|
1441
1498
|
}
|
|
1442
1499
|
};
|
|
1443
1500
|
|
|
1444
|
-
//
|
|
1445
|
-
var until = (cb, timeout2) => {
|
|
1446
|
-
return new Promise((resolve, reject) => {
|
|
1447
|
-
const t = timeout2 && setTimeout(() => {
|
|
1448
|
-
reject(new Error(`Timeout after ${t}ms`));
|
|
1449
|
-
}, timeout2);
|
|
1450
|
-
setTimeout(async () => {
|
|
1451
|
-
try {
|
|
1452
|
-
await cb((value) => {
|
|
1453
|
-
t && clearTimeout(t);
|
|
1454
|
-
resolve(value);
|
|
1455
|
-
}, (error) => {
|
|
1456
|
-
t && clearTimeout(t);
|
|
1457
|
-
reject(error);
|
|
1458
|
-
});
|
|
1459
|
-
} catch (err) {
|
|
1460
|
-
reject(err);
|
|
1461
|
-
}
|
|
1462
|
-
});
|
|
1463
|
-
});
|
|
1464
|
-
};
|
|
1465
|
-
var untilPromise = (cb) => cb();
|
|
1466
|
-
var untilError = (cb) => {
|
|
1467
|
-
return new Promise((resolve, reject) => {
|
|
1468
|
-
setTimeout(async () => {
|
|
1469
|
-
try {
|
|
1470
|
-
await cb();
|
|
1471
|
-
reject(new Error("No error was thrown."));
|
|
1472
|
-
} catch (err) {
|
|
1473
|
-
resolve(err);
|
|
1474
|
-
}
|
|
1475
|
-
});
|
|
1476
|
-
});
|
|
1477
|
-
};
|
|
1478
|
-
|
|
1479
|
-
// packages/common/async/src/update-scheduler.ts
|
|
1501
|
+
// src/update-scheduler.ts
|
|
1480
1502
|
var TIME_PERIOD = 1e3;
|
|
1481
1503
|
var UpdateScheduler = class {
|
|
1504
|
+
_ctx;
|
|
1505
|
+
_callback;
|
|
1506
|
+
_params;
|
|
1507
|
+
/**
|
|
1508
|
+
* Promise that resolves when the callback is done.
|
|
1509
|
+
* Never rejects.
|
|
1510
|
+
*/
|
|
1511
|
+
_promise;
|
|
1512
|
+
_scheduled;
|
|
1513
|
+
_lastUpdateTime;
|
|
1482
1514
|
constructor(_ctx, _callback, _params = {}) {
|
|
1483
1515
|
this._ctx = _ctx;
|
|
1484
1516
|
this._callback = _callback;
|
|
@@ -1568,29 +1600,30 @@ export {
|
|
|
1568
1600
|
UpdateScheduler,
|
|
1569
1601
|
addEventListener,
|
|
1570
1602
|
addListener,
|
|
1571
|
-
asyncChain,
|
|
1572
1603
|
asyncReturn,
|
|
1573
1604
|
asyncTimeout,
|
|
1605
|
+
chain,
|
|
1574
1606
|
combine,
|
|
1575
|
-
createPromiseFromCallback,
|
|
1576
1607
|
debounce,
|
|
1608
|
+
debounceAndThrottle,
|
|
1577
1609
|
dumpLeaks,
|
|
1578
1610
|
interval,
|
|
1579
1611
|
latch,
|
|
1580
1612
|
makePushIterable,
|
|
1581
1613
|
observableError,
|
|
1582
1614
|
onEvent,
|
|
1615
|
+
promiseFromCallback,
|
|
1583
1616
|
runInContext,
|
|
1584
1617
|
runInContextAsync,
|
|
1585
1618
|
scheduleExponentialBackoffTaskInterval,
|
|
1586
1619
|
scheduleMicroTask,
|
|
1587
1620
|
scheduleTask,
|
|
1588
1621
|
scheduleTaskInterval,
|
|
1589
|
-
sink,
|
|
1590
1622
|
sleep,
|
|
1591
1623
|
sleepWithContext,
|
|
1592
1624
|
streamToArray,
|
|
1593
1625
|
synchronized,
|
|
1626
|
+
throttle,
|
|
1594
1627
|
timeout,
|
|
1595
1628
|
toError,
|
|
1596
1629
|
trackLeaks,
|