@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 +1 @@
|
|
|
1
|
-
{"inputs":{"src/callback.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/callback.ts":{"bytes":1595,"imports":[],"format":"esm"},"src/chain.ts":{"bytes":1619,"imports":[],"format":"esm"},"src/cleanup.ts":{"bytes":6540,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/debounce.ts":{"bytes":4306,"imports":[],"format":"esm"},"src/errors.ts":{"bytes":2911,"imports":[],"format":"esm"},"src/timeout.ts":{"bytes":8042,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"src/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"src/event-emitter.ts":{"bytes":4155,"imports":[{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/events.ts":{"bytes":39504,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"src/mutex.ts":{"bytes":12647,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"src/trigger.ts":{"bytes":14081,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/observable.ts":{"bytes":17950,"imports":[{"path":"zen-observable","kind":"import-statement","external":true},{"path":"zen-push","kind":"import-statement","external":true},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"src/observable-value.ts":{"bytes":6465,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/track-leaks.ts":{"bytes":8414,"imports":[{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/task-scheduling.ts":{"bytes":15492,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/track-leaks.ts","kind":"import-statement","original":"./track-leaks"},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"src/persistent-lifecycle.ts":{"bytes":12777,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/mutex.ts","kind":"import-statement","original":"./mutex"},{"path":"src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"},{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/push-iterable.ts":{"bytes":5922,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"src/stream-to-array.ts":{"bytes":4935,"imports":[],"format":"esm"},"src/test-stream.ts":{"bytes":5038,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"src/events.ts","kind":"import-statement","original":"./events"},{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/testing.ts":{"bytes":8388,"imports":[{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"}],"format":"esm"},"src/timer.ts":{"bytes":5937,"imports":[{"path":"src/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"src/update-scheduler.ts":{"bytes":9812,"imports":[{"path":"src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"}],"format":"esm"},"src/index.ts":{"bytes":2335,"imports":[{"path":"src/callback.ts","kind":"import-statement","original":"./callback"},{"path":"src/chain.ts","kind":"import-statement","original":"./chain"},{"path":"src/cleanup.ts","kind":"import-statement","original":"./cleanup"},{"path":"src/debounce.ts","kind":"import-statement","original":"./debounce"},{"path":"src/errors.ts","kind":"import-statement","original":"./errors"},{"path":"src/event-emitter.ts","kind":"import-statement","original":"./event-emitter"},{"path":"src/events.ts","kind":"import-statement","original":"./events"},{"path":"src/mutex.ts","kind":"import-statement","original":"./mutex"},{"path":"src/observable.ts","kind":"import-statement","original":"./observable"},{"path":"src/observable-value.ts","kind":"import-statement","original":"./observable-value"},{"path":"src/persistent-lifecycle.ts","kind":"import-statement","original":"./persistent-lifecycle"},{"path":"src/push-iterable.ts","kind":"import-statement","original":"./push-iterable"},{"path":"src/stream-to-array.ts","kind":"import-statement","original":"./stream-to-array"},{"path":"src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"},{"path":"src/test-stream.ts","kind":"import-statement","original":"./test-stream"},{"path":"src/testing.ts","kind":"import-statement","original":"./testing"},{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"},{"path":"src/timer.ts","kind":"import-statement","original":"./timer"},{"path":"src/track-leaks.ts","kind":"import-statement","original":"./track-leaks"},{"path":"src/trigger.ts","kind":"import-statement","original":"./trigger"},{"path":"src/update-scheduler.ts","kind":"import-statement","original":"./update-scheduler"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":98484},"dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"zen-observable","kind":"import-statement","external":true},{"path":"zen-push","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true}],"exports":["CancellableObservableProvider","DeferredTask","Event","MulticastObservable","Mutex","MutexGuard","Observable","ObservableProvider","PersistentLifecycle","PushStream","SubscriptionList","SubscriptionSet","TestStream","TimeoutError","Timer","Trigger","TriggerState","UpdateScheduler","addEventListener","addListener","asyncReturn","asyncTimeout","chain","combine","debounce","debounceAndThrottle","dumpLeaks","interval","latch","makePushIterable","observableError","onEvent","promiseFromCallback","runInContext","runInContextAsync","scheduleExponentialBackoffTaskInterval","scheduleMicroTask","scheduleTask","scheduleTaskInterval","sleep","sleepWithContext","streamToArray","synchronized","throttle","timeout","toError","trackLeaks","trackResource","trigger","unrefTimeout","until","untilError","untilPromise","waitForCondition","waitForEvent"],"entryPoint":"src/index.ts","inputs":{"src/callback.ts":{"bytesInOutput":185},"src/index.ts":{"bytesInOutput":0},"src/chain.ts":{"bytesInOutput":216},"src/cleanup.ts":{"bytesInOutput":1045},"src/debounce.ts":{"bytesInOutput":557},"src/errors.ts":{"bytesInOutput":476},"src/timeout.ts":{"bytesInOutput":1486},"src/event-emitter.ts":{"bytesInOutput":697},"src/events.ts":{"bytesInOutput":8727},"src/mutex.ts":{"bytesInOutput":2413},"src/observable.ts":{"bytesInOutput":3765},"src/trigger.ts":{"bytesInOutput":3029},"src/observable-value.ts":{"bytesInOutput":968},"src/persistent-lifecycle.ts":{"bytesInOutput":3536},"src/task-scheduling.ts":{"bytesInOutput":3215},"src/track-leaks.ts":{"bytesInOutput":2136},"src/push-iterable.ts":{"bytesInOutput":1389},"src/stream-to-array.ts":{"bytesInOutput":967},"src/test-stream.ts":{"bytesInOutput":915},"src/testing.ts":{"bytesInOutput":1419},"src/timer.ts":{"bytesInOutput":1099},"src/update-scheduler.ts":{"bytesInOutput":2015}},"bytes":41742}}}
|
|
@@ -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,6 +449,11 @@ var Event = class _Event {
|
|
|
454
449
|
}
|
|
455
450
|
};
|
|
456
451
|
var EventListener = class {
|
|
452
|
+
ctx;
|
|
453
|
+
once;
|
|
454
|
+
weak;
|
|
455
|
+
callback;
|
|
456
|
+
_clearDispose;
|
|
457
457
|
constructor(event, listener, ctx, once, weak) {
|
|
458
458
|
this.ctx = ctx;
|
|
459
459
|
this.once = once;
|
|
@@ -518,65 +518,13 @@ var weakListeners = () => {
|
|
|
518
518
|
};
|
|
519
519
|
};
|
|
520
520
|
|
|
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
521
|
// src/mutex.ts
|
|
572
522
|
import "@dxos/util";
|
|
573
523
|
import { warnAfterTimeout } from "@dxos/debug";
|
|
574
524
|
var Mutex = class {
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
this._tag = null;
|
|
579
|
-
}
|
|
525
|
+
_queue = Promise.resolve();
|
|
526
|
+
_queueLength = 0;
|
|
527
|
+
_tag = null;
|
|
580
528
|
get tag() {
|
|
581
529
|
return this._tag;
|
|
582
530
|
}
|
|
@@ -622,6 +570,7 @@ var Mutex = class {
|
|
|
622
570
|
}
|
|
623
571
|
};
|
|
624
572
|
var MutexGuard = class {
|
|
573
|
+
_release;
|
|
625
574
|
constructor(_release) {
|
|
626
575
|
this._release = _release;
|
|
627
576
|
}
|
|
@@ -665,6 +614,8 @@ import Observable from "zen-observable";
|
|
|
665
614
|
import PushStream from "zen-push";
|
|
666
615
|
|
|
667
616
|
// src/trigger.ts
|
|
617
|
+
import { invariant } from "@dxos/invariant";
|
|
618
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
|
|
668
619
|
var trigger = (timeout2) => {
|
|
669
620
|
let callback;
|
|
670
621
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -687,6 +638,11 @@ var TriggerState = /* @__PURE__ */ function(TriggerState2) {
|
|
|
687
638
|
return TriggerState2;
|
|
688
639
|
}({});
|
|
689
640
|
var Trigger = class {
|
|
641
|
+
_options;
|
|
642
|
+
_promise;
|
|
643
|
+
_resolve;
|
|
644
|
+
_reject;
|
|
645
|
+
_state;
|
|
690
646
|
constructor(_options = {
|
|
691
647
|
autoReset: false
|
|
692
648
|
}) {
|
|
@@ -751,9 +707,59 @@ var Trigger = class {
|
|
|
751
707
|
return this;
|
|
752
708
|
}
|
|
753
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
|
+
};
|
|
754
756
|
|
|
755
757
|
// src/observable.ts
|
|
756
758
|
var MulticastObservable = class _MulticastObservable extends Observable {
|
|
759
|
+
_value;
|
|
760
|
+
_observers;
|
|
761
|
+
_observable;
|
|
762
|
+
_completed;
|
|
757
763
|
constructor(subscriber, _value) {
|
|
758
764
|
super((observer) => this._subscribe(observer)), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
|
|
759
765
|
next: (value) => {
|
|
@@ -851,18 +857,18 @@ var MulticastObservable = class _MulticastObservable extends Observable {
|
|
|
851
857
|
this._observers.delete(observer);
|
|
852
858
|
};
|
|
853
859
|
}
|
|
860
|
+
_handlers;
|
|
854
861
|
};
|
|
855
862
|
var EMPTY_OBSERVABLE = MulticastObservable.of(null);
|
|
856
863
|
|
|
857
864
|
// src/observable-value.ts
|
|
858
865
|
import { createSetDispatch } from "@dxos/util";
|
|
859
866
|
var ObservableProvider = class {
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
this.
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
}
|
|
867
|
+
_handlers = /* @__PURE__ */ new Set();
|
|
868
|
+
_proxy = createSetDispatch({
|
|
869
|
+
handlers: this._handlers
|
|
870
|
+
});
|
|
871
|
+
_value;
|
|
866
872
|
/**
|
|
867
873
|
* Proxy used to dispatch callbacks to each subscription.
|
|
868
874
|
*/
|
|
@@ -883,6 +889,8 @@ var ObservableProvider = class {
|
|
|
883
889
|
}
|
|
884
890
|
};
|
|
885
891
|
var CancellableObservableProvider = class extends ObservableProvider {
|
|
892
|
+
_handleCancel;
|
|
893
|
+
_cancelled;
|
|
886
894
|
constructor(_handleCancel) {
|
|
887
895
|
super(), this._handleCancel = _handleCancel, this._cancelled = false;
|
|
888
896
|
}
|
|
@@ -994,6 +1002,11 @@ if (enabled) {
|
|
|
994
1002
|
|
|
995
1003
|
// src/task-scheduling.ts
|
|
996
1004
|
var DeferredTask = class {
|
|
1005
|
+
_ctx;
|
|
1006
|
+
_callback;
|
|
1007
|
+
_scheduled;
|
|
1008
|
+
_currentTask;
|
|
1009
|
+
_nextTask;
|
|
997
1010
|
constructor(_ctx, _callback) {
|
|
998
1011
|
this._ctx = _ctx;
|
|
999
1012
|
this._callback = _callback;
|
|
@@ -1129,11 +1142,15 @@ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecyc
|
|
|
1129
1142
|
var INIT_RESTART_DELAY = 100;
|
|
1130
1143
|
var DEFAULT_MAX_RESTART_DELAY = 5e3;
|
|
1131
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;
|
|
1132
1152
|
constructor({ start, stop, onRestart, maxRestartDelay = DEFAULT_MAX_RESTART_DELAY }) {
|
|
1133
1153
|
super();
|
|
1134
|
-
this._currentState = void 0;
|
|
1135
|
-
this._restartTask = void 0;
|
|
1136
|
-
this._restartAfter = 0;
|
|
1137
1154
|
this._start = start;
|
|
1138
1155
|
this._stop = stop;
|
|
1139
1156
|
this._onRestart = onRestart;
|
|
@@ -1295,20 +1312,6 @@ var makePushIterable = () => {
|
|
|
1295
1312
|
};
|
|
1296
1313
|
};
|
|
1297
1314
|
|
|
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
1315
|
// src/stream-to-array.ts
|
|
1313
1316
|
var streamToArray = (stream) => {
|
|
1314
1317
|
let deferred;
|
|
@@ -1354,11 +1357,6 @@ var streamToArray = (stream) => {
|
|
|
1354
1357
|
// src/test-stream.ts
|
|
1355
1358
|
import { Duplex } from "node:stream";
|
|
1356
1359
|
var TestStream = class extends Duplex {
|
|
1357
|
-
constructor() {
|
|
1358
|
-
super(...arguments);
|
|
1359
|
-
this._received = Buffer.alloc(0);
|
|
1360
|
-
this._onWrite = new Event();
|
|
1361
|
-
}
|
|
1362
1360
|
static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
|
|
1363
1361
|
stream1.push("ping");
|
|
1364
1362
|
stream2.push("pong");
|
|
@@ -1371,6 +1369,8 @@ var TestStream = class extends Duplex {
|
|
|
1371
1369
|
})
|
|
1372
1370
|
]);
|
|
1373
1371
|
}
|
|
1372
|
+
_received = Buffer.alloc(0);
|
|
1373
|
+
_onWrite = new Event();
|
|
1374
1374
|
_write(chunk, encoding, callback) {
|
|
1375
1375
|
this._received = Buffer.concat([
|
|
1376
1376
|
this._received,
|
|
@@ -1412,9 +1412,46 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
|
|
|
1412
1412
|
timeout: timeout2
|
|
1413
1413
|
});
|
|
1414
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
|
+
};
|
|
1415
1448
|
|
|
1416
1449
|
// src/timer.ts
|
|
1417
1450
|
var Timer = class {
|
|
1451
|
+
_callback;
|
|
1452
|
+
_state;
|
|
1453
|
+
_timer;
|
|
1454
|
+
_count;
|
|
1418
1455
|
constructor(_callback) {
|
|
1419
1456
|
this._callback = _callback;
|
|
1420
1457
|
this._state = new Event();
|
|
@@ -1461,44 +1498,19 @@ var Timer = class {
|
|
|
1461
1498
|
}
|
|
1462
1499
|
};
|
|
1463
1500
|
|
|
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
1501
|
// src/update-scheduler.ts
|
|
1500
1502
|
var TIME_PERIOD = 1e3;
|
|
1501
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;
|
|
1502
1514
|
constructor(_ctx, _callback, _params = {}) {
|
|
1503
1515
|
this._ctx = _ctx;
|
|
1504
1516
|
this._callback = _callback;
|
|
@@ -1588,11 +1600,10 @@ export {
|
|
|
1588
1600
|
UpdateScheduler,
|
|
1589
1601
|
addEventListener,
|
|
1590
1602
|
addListener,
|
|
1591
|
-
asyncChain,
|
|
1592
1603
|
asyncReturn,
|
|
1593
1604
|
asyncTimeout,
|
|
1605
|
+
chain,
|
|
1594
1606
|
combine,
|
|
1595
|
-
createPromiseFromCallback,
|
|
1596
1607
|
debounce,
|
|
1597
1608
|
debounceAndThrottle,
|
|
1598
1609
|
dumpLeaks,
|
|
@@ -1601,13 +1612,13 @@ export {
|
|
|
1601
1612
|
makePushIterable,
|
|
1602
1613
|
observableError,
|
|
1603
1614
|
onEvent,
|
|
1615
|
+
promiseFromCallback,
|
|
1604
1616
|
runInContext,
|
|
1605
1617
|
runInContextAsync,
|
|
1606
1618
|
scheduleExponentialBackoffTaskInterval,
|
|
1607
1619
|
scheduleMicroTask,
|
|
1608
1620
|
scheduleTask,
|
|
1609
1621
|
scheduleTaskInterval,
|
|
1610
|
-
sink,
|
|
1611
1622
|
sleep,
|
|
1612
1623
|
sleepWithContext,
|
|
1613
1624
|
streamToArray,
|