@dxos/async 0.8.4-main.72ec0f3 → 0.8.4-main.765dc60934
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/LICENSE +102 -5
- package/dist/lib/browser/index.mjs +99 -84
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +99 -84
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/callback.d.ts.map +1 -1
- package/dist/types/src/chain.d.ts.map +1 -1
- package/dist/types/src/cleanup.d.ts +2 -2
- package/dist/types/src/cleanup.d.ts.map +1 -1
- package/dist/types/src/debounce.d.ts +15 -10
- package/dist/types/src/debounce.d.ts.map +1 -1
- package/dist/types/src/errors.d.ts.map +1 -1
- package/dist/types/src/event-emitter.d.ts.map +1 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/mutex.d.ts.map +1 -1
- package/dist/types/src/observable-value.d.ts.map +1 -1
- package/dist/types/src/observable.d.ts.map +1 -1
- package/dist/types/src/persistent-lifecycle.d.ts +2 -2
- package/dist/types/src/persistent-lifecycle.d.ts.map +1 -1
- package/dist/types/src/stream-to-array.d.ts.map +1 -1
- package/dist/types/src/task-scheduling.d.ts +29 -1
- package/dist/types/src/task-scheduling.d.ts.map +1 -1
- package/dist/types/src/test-stream.d.ts.map +1 -1
- 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/timer.d.ts.map +1 -1
- package/dist/types/src/track-leaks.d.ts.map +1 -1
- package/dist/types/src/trigger.d.ts.map +1 -1
- package/dist/types/src/update-scheduler.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -11
- package/src/cleanup.ts +7 -4
- package/src/debounce.ts +19 -14
- package/src/event-emitter.test.ts +0 -1
- package/src/observable-value.ts +4 -2
- package/src/persistent-lifecycle.ts +10 -2
- package/src/task-scheduling.ts +95 -1
- package/src/timeout.ts +6 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/callback.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/callback.ts":{"bytes":1516,"imports":[],"format":"esm"},"src/chain.ts":{"bytes":1547,"imports":[],"format":"esm"},"src/cleanup.ts":{"bytes":6733,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/debounce.ts":{"bytes":9093,"imports":[],"format":"esm"},"src/errors.ts":{"bytes":2838,"imports":[],"format":"esm"},"src/timeout.ts":{"bytes":7524,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"src/errors.ts","kind":"import-statement","original":"./errors"}],"format":"esm"},"src/event-emitter.ts":{"bytes":4075,"imports":[{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/events.ts":{"bytes":39225,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"src/mutex.ts":{"bytes":12575,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"src/trigger.ts":{"bytes":13827,"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":17747,"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":6361,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/track-leaks.ts":{"bytes":7844,"imports":[{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/task-scheduling.ts":{"bytes":23346,"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":13027,"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":5570,"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":4853,"imports":[],"format":"esm"},"src/test-stream.ts":{"bytes":4960,"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":8314,"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":5803,"imports":[{"path":"src/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"src/update-scheduler.ts":{"bytes":9619,"imports":[{"path":"src/task-scheduling.ts","kind":"import-statement","original":"./task-scheduling"}],"format":"esm"},"src/index.ts":{"bytes":2259,"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":104455},"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":["AsyncTask","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","delay","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":1090},"src/debounce.ts":{"bytesInOutput":1032},"src/errors.ts":{"bytesInOutput":476},"src/timeout.ts":{"bytesInOutput":1479},"src/event-emitter.ts":{"bytesInOutput":697},"src/events.ts":{"bytesInOutput":8516},"src/mutex.ts":{"bytesInOutput":2429},"src/observable.ts":{"bytesInOutput":3691},"src/trigger.ts":{"bytesInOutput":2831},"src/observable-value.ts":{"bytesInOutput":951},"src/persistent-lifecycle.ts":{"bytesInOutput":3164},"src/task-scheduling.ts":{"bytesInOutput":4964},"src/track-leaks.ts":{"bytesInOutput":1691},"src/push-iterable.ts":{"bytesInOutput":1145},"src/stream-to-array.ts":{"bytesInOutput":967},"src/test-stream.ts":{"bytesInOutput":915},"src/testing.ts":{"bytesInOutput":1419},"src/timer.ts":{"bytesInOutput":1065},"src/update-scheduler.ts":{"bytesInOutput":1952}},"bytes":42384}}}
|
|
@@ -24,7 +24,7 @@ var chain = (chain2) => async (elements) => {
|
|
|
24
24
|
import { ComplexMap } from "@dxos/util";
|
|
25
25
|
var combine = (...cleanupFns) => {
|
|
26
26
|
return () => {
|
|
27
|
-
cleanupFns.flat().forEach((cleanupFn) => cleanupFn());
|
|
27
|
+
cleanupFns.flat().filter((f) => typeof f === "function").forEach((cleanupFn) => cleanupFn());
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
30
|
var timeout = (cb, ms = 0) => {
|
|
@@ -41,8 +41,8 @@ var addEventListener = (target, type, listener, options) => {
|
|
|
41
41
|
};
|
|
42
42
|
var SubscriptionList = class {
|
|
43
43
|
_cleanups = [];
|
|
44
|
-
add(cb) {
|
|
45
|
-
this._cleanups.push(cb);
|
|
44
|
+
add(...cb) {
|
|
45
|
+
this._cleanups.push(...cb);
|
|
46
46
|
return this;
|
|
47
47
|
}
|
|
48
48
|
clear() {
|
|
@@ -168,6 +168,9 @@ var sleepWithContext = (ctx, ms) => {
|
|
|
168
168
|
};
|
|
169
169
|
var asyncReturn = () => sleep(0);
|
|
170
170
|
var asyncTimeout = async (promise, timeout2, err) => {
|
|
171
|
+
if (typeof promise === "function") {
|
|
172
|
+
throw new Error("First argument must be a promise.");
|
|
173
|
+
}
|
|
171
174
|
let timeoutId;
|
|
172
175
|
const throwable = err === void 0 || typeof err === "string" ? new TimeoutError(timeout2, err) : err;
|
|
173
176
|
const timeoutPromise = new Promise((resolve, reject) => {
|
|
@@ -176,9 +179,8 @@ var asyncTimeout = async (promise, timeout2, err) => {
|
|
|
176
179
|
}, timeout2);
|
|
177
180
|
unrefTimeout(timeoutId);
|
|
178
181
|
});
|
|
179
|
-
const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
|
|
180
182
|
return await Promise.race([
|
|
181
|
-
|
|
183
|
+
promise,
|
|
182
184
|
timeoutPromise
|
|
183
185
|
]).finally(() => {
|
|
184
186
|
clearTimeout(timeoutId);
|
|
@@ -215,7 +217,6 @@ var waitForEvent = (eventEmitter, eventName, test, timeout2, error) => {
|
|
|
215
217
|
|
|
216
218
|
// src/events.ts
|
|
217
219
|
import { Context } from "@dxos/context";
|
|
218
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
|
|
219
220
|
var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
|
|
220
221
|
var Event = class _Event {
|
|
221
222
|
/**
|
|
@@ -270,10 +271,7 @@ var Event = class _Event {
|
|
|
270
271
|
_ctx,
|
|
271
272
|
_callback
|
|
272
273
|
] : [
|
|
273
|
-
new Context(
|
|
274
|
-
F: __dxlog_file,
|
|
275
|
-
L: 132
|
|
276
|
-
}),
|
|
274
|
+
new Context(),
|
|
277
275
|
_ctx
|
|
278
276
|
];
|
|
279
277
|
const weak = !!options?.weak;
|
|
@@ -303,10 +301,7 @@ var Event = class _Event {
|
|
|
303
301
|
_ctx,
|
|
304
302
|
_callback
|
|
305
303
|
] : [
|
|
306
|
-
new Context(
|
|
307
|
-
F: __dxlog_file,
|
|
308
|
-
L: 169
|
|
309
|
-
}),
|
|
304
|
+
new Context(),
|
|
310
305
|
_ctx
|
|
311
306
|
];
|
|
312
307
|
const listener = new EventListener(this, callback, ctx, true, false);
|
|
@@ -609,7 +604,7 @@ var MutexGuard = class {
|
|
|
609
604
|
this.release();
|
|
610
605
|
}
|
|
611
606
|
};
|
|
612
|
-
var classMutexSymbol = Symbol("class-mutex");
|
|
607
|
+
var classMutexSymbol = /* @__PURE__ */ Symbol("class-mutex");
|
|
613
608
|
var FORCE_DISABLE_WARNING = false;
|
|
614
609
|
var enableWarning = !FORCE_DISABLE_WARNING && globalThis.mochaExecutor;
|
|
615
610
|
var synchronized = (target, propertyName, descriptor) => {
|
|
@@ -640,7 +635,6 @@ import PushStream from "zen-push";
|
|
|
640
635
|
|
|
641
636
|
// src/trigger.ts
|
|
642
637
|
import { invariant } from "@dxos/invariant";
|
|
643
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
|
|
644
638
|
var trigger = (timeout2) => {
|
|
645
639
|
let callback;
|
|
646
640
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -732,15 +726,7 @@ var Trigger = class {
|
|
|
732
726
|
}
|
|
733
727
|
};
|
|
734
728
|
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
735
|
-
invariant(count >= 0
|
|
736
|
-
F: __dxlog_file2,
|
|
737
|
-
L: 139,
|
|
738
|
-
S: void 0,
|
|
739
|
-
A: [
|
|
740
|
-
"count >= 0",
|
|
741
|
-
""
|
|
742
|
-
]
|
|
743
|
-
});
|
|
729
|
+
invariant(count >= 0);
|
|
744
730
|
let t;
|
|
745
731
|
let doResolve;
|
|
746
732
|
let doReject;
|
|
@@ -937,16 +923,15 @@ import { warnAfterTimeout as warnAfterTimeout2 } from "@dxos/debug";
|
|
|
937
923
|
import { log as log2 } from "@dxos/log";
|
|
938
924
|
|
|
939
925
|
// src/task-scheduling.ts
|
|
940
|
-
import { ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
|
|
926
|
+
import { Context as Context2, ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
|
|
941
927
|
import { StackTrace as StackTrace2 } from "@dxos/debug";
|
|
942
928
|
|
|
943
929
|
// src/track-leaks.ts
|
|
944
930
|
import { StackTrace } from "@dxos/debug";
|
|
945
931
|
import { log } from "@dxos/log";
|
|
946
|
-
var __dxlog_file3 = "/__w/dxos/dxos/packages/common/async/src/track-leaks.ts";
|
|
947
932
|
var enabled = typeof process !== "undefined" && !!process.env.DX_TRACK_LEAKS;
|
|
948
933
|
var openResources = /* @__PURE__ */ new Set();
|
|
949
|
-
var handleSymbol = Symbol("checkLeaksHandle");
|
|
934
|
+
var handleSymbol = /* @__PURE__ */ Symbol("checkLeaksHandle");
|
|
950
935
|
var trackResource = (resourceProvider) => {
|
|
951
936
|
if (!enabled) {
|
|
952
937
|
return () => {
|
|
@@ -993,31 +978,11 @@ var dumpLeaks = () => {
|
|
|
993
978
|
if (!enabled) {
|
|
994
979
|
return;
|
|
995
980
|
}
|
|
996
|
-
log.info(`Leaked resources ${openResources.size}
|
|
997
|
-
F: __dxlog_file3,
|
|
998
|
-
L: 82,
|
|
999
|
-
S: void 0,
|
|
1000
|
-
C: (f, a) => f(...a)
|
|
1001
|
-
});
|
|
981
|
+
log.info(`Leaked resources ${openResources.size}:`);
|
|
1002
982
|
for (const resource of openResources) {
|
|
1003
|
-
log.info(`- ${resource.name} at
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
S: void 0,
|
|
1007
|
-
C: (f, a) => f(...a)
|
|
1008
|
-
});
|
|
1009
|
-
log.info(resource.openStack.getStack(1), void 0, {
|
|
1010
|
-
F: __dxlog_file3,
|
|
1011
|
-
L: 85,
|
|
1012
|
-
S: void 0,
|
|
1013
|
-
C: (f, a) => f(...a)
|
|
1014
|
-
});
|
|
1015
|
-
log.info("\n", void 0, {
|
|
1016
|
-
F: __dxlog_file3,
|
|
1017
|
-
L: 86,
|
|
1018
|
-
S: void 0,
|
|
1019
|
-
C: (f, a) => f(...a)
|
|
1020
|
-
});
|
|
983
|
+
log.info(`- ${resource.name} at`);
|
|
984
|
+
log.info(resource.openStack.getStack(1));
|
|
985
|
+
log.info("\n");
|
|
1021
986
|
}
|
|
1022
987
|
};
|
|
1023
988
|
if (enabled) {
|
|
@@ -1074,6 +1039,79 @@ var DeferredTask = class {
|
|
|
1074
1039
|
await this._currentTask;
|
|
1075
1040
|
}
|
|
1076
1041
|
};
|
|
1042
|
+
var AsyncTask = class {
|
|
1043
|
+
#callback;
|
|
1044
|
+
#ctx = void 0;
|
|
1045
|
+
#scheduled = false;
|
|
1046
|
+
#currentTask = null;
|
|
1047
|
+
#nextTask = new Trigger();
|
|
1048
|
+
constructor(callback) {
|
|
1049
|
+
this.#callback = callback;
|
|
1050
|
+
}
|
|
1051
|
+
get scheduled() {
|
|
1052
|
+
return this.#scheduled;
|
|
1053
|
+
}
|
|
1054
|
+
/**
|
|
1055
|
+
* Context of the resource that owns the task.
|
|
1056
|
+
* When the context is disposed, the task is cancelled and cannot be scheduled again.
|
|
1057
|
+
*/
|
|
1058
|
+
open() {
|
|
1059
|
+
this.#ctx = new Context2();
|
|
1060
|
+
}
|
|
1061
|
+
/**
|
|
1062
|
+
* Closes the task and waits for it to finish if it is running.
|
|
1063
|
+
*/
|
|
1064
|
+
async close() {
|
|
1065
|
+
await this.#ctx?.dispose();
|
|
1066
|
+
await this.join();
|
|
1067
|
+
this.#ctx = void 0;
|
|
1068
|
+
}
|
|
1069
|
+
[Symbol.asyncDispose]() {
|
|
1070
|
+
return this.close();
|
|
1071
|
+
}
|
|
1072
|
+
/**
|
|
1073
|
+
* Schedule the task to run asynchronously.
|
|
1074
|
+
*/
|
|
1075
|
+
// TODO(dmaretskyi): Add scheduleAt. Where the earlier time will override the later one.
|
|
1076
|
+
schedule() {
|
|
1077
|
+
if (!this.#ctx || this.#ctx.disposed) {
|
|
1078
|
+
throw new Error("AsyncTask not open");
|
|
1079
|
+
}
|
|
1080
|
+
if (this.#scheduled) {
|
|
1081
|
+
return;
|
|
1082
|
+
}
|
|
1083
|
+
scheduleTask(this.#ctx, async () => {
|
|
1084
|
+
await this.#currentTask;
|
|
1085
|
+
if (!this.#ctx || this.#ctx.disposed) {
|
|
1086
|
+
return;
|
|
1087
|
+
}
|
|
1088
|
+
this.#scheduled = false;
|
|
1089
|
+
const completionTrigger = this.#nextTask;
|
|
1090
|
+
this.#nextTask = new Trigger();
|
|
1091
|
+
this.#currentTask = runInContextAsync(this.#ctx, () => this.#callback()).then(() => {
|
|
1092
|
+
completionTrigger.wake();
|
|
1093
|
+
});
|
|
1094
|
+
});
|
|
1095
|
+
this.#scheduled = true;
|
|
1096
|
+
}
|
|
1097
|
+
/**
|
|
1098
|
+
* Schedule the task to run and wait for it to finish.
|
|
1099
|
+
*/
|
|
1100
|
+
async runBlocking() {
|
|
1101
|
+
if (this.#ctx?.disposed) {
|
|
1102
|
+
throw new ContextDisposedError2();
|
|
1103
|
+
}
|
|
1104
|
+
this.schedule();
|
|
1105
|
+
await this.#nextTask.wait();
|
|
1106
|
+
}
|
|
1107
|
+
/**
|
|
1108
|
+
* Waits for the current task to finish if it is running.
|
|
1109
|
+
* Does not schedule a new task.
|
|
1110
|
+
*/
|
|
1111
|
+
async join() {
|
|
1112
|
+
await this.#currentTask;
|
|
1113
|
+
}
|
|
1114
|
+
};
|
|
1077
1115
|
var runInContext = (ctx, fn) => {
|
|
1078
1116
|
try {
|
|
1079
1117
|
fn();
|
|
@@ -1159,7 +1197,6 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
1159
1197
|
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;
|
|
1160
1198
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1161
1199
|
}
|
|
1162
|
-
var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecycle.ts";
|
|
1163
1200
|
var INIT_RESTART_DELAY = 100;
|
|
1164
1201
|
var DEFAULT_MAX_RESTART_DELAY = 5e3;
|
|
1165
1202
|
var PersistentLifecycle = class extends Resource {
|
|
@@ -1185,25 +1222,21 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1185
1222
|
try {
|
|
1186
1223
|
await this._restart();
|
|
1187
1224
|
} catch (err) {
|
|
1225
|
+
if (this._ctx?.disposed) {
|
|
1226
|
+
return;
|
|
1227
|
+
}
|
|
1188
1228
|
log2.warn("Restart failed", {
|
|
1189
1229
|
err
|
|
1190
|
-
}, {
|
|
1191
|
-
F: __dxlog_file4,
|
|
1192
|
-
L: 72,
|
|
1193
|
-
S: this,
|
|
1194
|
-
C: (f, a) => f(...a)
|
|
1195
1230
|
});
|
|
1196
1231
|
this._restartTask?.schedule();
|
|
1197
1232
|
}
|
|
1198
1233
|
});
|
|
1199
1234
|
this._currentState = await this._start().catch((err) => {
|
|
1235
|
+
if (this._ctx?.disposed) {
|
|
1236
|
+
return void 0;
|
|
1237
|
+
}
|
|
1200
1238
|
log2.warn("Start failed", {
|
|
1201
1239
|
err
|
|
1202
|
-
}, {
|
|
1203
|
-
F: __dxlog_file4,
|
|
1204
|
-
L: 78,
|
|
1205
|
-
S: this,
|
|
1206
|
-
C: (f, a) => f(...a)
|
|
1207
1240
|
});
|
|
1208
1241
|
this._restartTask?.schedule();
|
|
1209
1242
|
return void 0;
|
|
@@ -1217,11 +1250,6 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1217
1250
|
async _restart() {
|
|
1218
1251
|
log2(`restarting in ${this._restartAfter}ms`, {
|
|
1219
1252
|
state: this._lifecycleState
|
|
1220
|
-
}, {
|
|
1221
|
-
F: __dxlog_file4,
|
|
1222
|
-
L: 91,
|
|
1223
|
-
S: this,
|
|
1224
|
-
C: (f, a) => f(...a)
|
|
1225
1253
|
});
|
|
1226
1254
|
await this._stopCurrentState();
|
|
1227
1255
|
if (this._lifecycleState !== LifecycleState.OPEN) {
|
|
@@ -1240,12 +1268,7 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1240
1268
|
try {
|
|
1241
1269
|
await this._stop(this._currentState);
|
|
1242
1270
|
} catch (err) {
|
|
1243
|
-
log2.catch(err
|
|
1244
|
-
F: __dxlog_file4,
|
|
1245
|
-
L: 113,
|
|
1246
|
-
S: this,
|
|
1247
|
-
C: (f, a) => f(...a)
|
|
1248
|
-
});
|
|
1271
|
+
log2.catch(err);
|
|
1249
1272
|
}
|
|
1250
1273
|
this._currentState = void 0;
|
|
1251
1274
|
}
|
|
@@ -1269,7 +1292,6 @@ _ts_decorate([
|
|
|
1269
1292
|
|
|
1270
1293
|
// src/push-iterable.ts
|
|
1271
1294
|
import { invariant as invariant2 } from "@dxos/invariant";
|
|
1272
|
-
var __dxlog_file5 = "/__w/dxos/dxos/packages/common/async/src/push-iterable.ts";
|
|
1273
1295
|
var makePushIterable = () => {
|
|
1274
1296
|
const buf = [];
|
|
1275
1297
|
const trigger2 = new Trigger({
|
|
@@ -1283,15 +1305,7 @@ var makePushIterable = () => {
|
|
|
1283
1305
|
await trigger2.wait();
|
|
1284
1306
|
}
|
|
1285
1307
|
const item = buf.shift();
|
|
1286
|
-
invariant2(item
|
|
1287
|
-
F: __dxlog_file5,
|
|
1288
|
-
L: 42,
|
|
1289
|
-
S: this,
|
|
1290
|
-
A: [
|
|
1291
|
-
"item",
|
|
1292
|
-
""
|
|
1293
|
-
]
|
|
1294
|
-
});
|
|
1308
|
+
invariant2(item);
|
|
1295
1309
|
switch (item.kind) {
|
|
1296
1310
|
case "next":
|
|
1297
1311
|
return {
|
|
@@ -1596,6 +1610,7 @@ var UpdateScheduler = class {
|
|
|
1596
1610
|
}
|
|
1597
1611
|
};
|
|
1598
1612
|
export {
|
|
1613
|
+
AsyncTask,
|
|
1599
1614
|
CancellableObservableProvider,
|
|
1600
1615
|
DeferredTask,
|
|
1601
1616
|
Event,
|