@dxos/async 0.8.4-main.fffef41 → 0.8.4-staging.ac66bdf99f

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.
@@ -1 +1 @@
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":8209,"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":39464,"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":14052,"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":17824,"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":6436,"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":15388,"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":5879,"imports":[{"path":"src/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"src/update-scheduler.ts":{"bytes":9706,"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":100197},"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","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":1045},"src/debounce.ts":{"bytesInOutput":1032},"src/errors.ts":{"bytesInOutput":476},"src/timeout.ts":{"bytesInOutput":1486},"src/event-emitter.ts":{"bytesInOutput":697},"src/events.ts":{"bytesInOutput":8703},"src/mutex.ts":{"bytesInOutput":2413},"src/observable.ts":{"bytesInOutput":3691},"src/trigger.ts":{"bytesInOutput":3014},"src/observable-value.ts":{"bytesInOutput":951},"src/persistent-lifecycle.ts":{"bytesInOutput":3536},"src/task-scheduling.ts":{"bytesInOutput":3151},"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":1065},"src/update-scheduler.ts":{"bytesInOutput":1952}},"bytes":41935}}}
1
+ {"inputs":{"src/callback.ts":{"bytes":1595,"imports":[],"format":"esm"},"src/chain.ts":{"bytes":1619,"imports":[],"format":"esm"},"src/cleanup.ts":{"bytes":6807,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/debounce.ts":{"bytes":9168,"imports":[],"format":"esm"},"src/errors.ts":{"bytes":2911,"imports":[],"format":"esm"},"src/timeout.ts":{"bytes":7598,"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":4155,"imports":[{"path":"src/timeout.ts","kind":"import-statement","original":"./timeout"}],"format":"esm"},"src/events.ts":{"bytes":39464,"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":14052,"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":17824,"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":6444,"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":23503,"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":12773,"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":5879,"imports":[{"path":"src/events.ts","kind":"import-statement","original":"./events"}],"format":"esm"},"src/update-scheduler.ts":{"bytes":9706,"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":104247},"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":8703},"src/mutex.ts":{"bytesInOutput":2429},"src/observable.ts":{"bytesInOutput":3691},"src/trigger.ts":{"bytesInOutput":3014},"src/observable-value.ts":{"bytesInOutput":951},"src/persistent-lifecycle.ts":{"bytesInOutput":3536},"src/task-scheduling.ts":{"bytesInOutput":5099},"src/track-leaks.ts":{"bytesInOutput":2152},"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":1065},"src/update-scheduler.ts":{"bytesInOutput":1952}},"bytes":43966}}}
@@ -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
- conditionTimeout,
183
+ promise,
182
184
  timeoutPromise
183
185
  ]).finally(() => {
184
186
  clearTimeout(timeoutId);
@@ -609,7 +611,7 @@ var MutexGuard = class {
609
611
  this.release();
610
612
  }
611
613
  };
612
- var classMutexSymbol = Symbol("class-mutex");
614
+ var classMutexSymbol = /* @__PURE__ */ Symbol("class-mutex");
613
615
  var FORCE_DISABLE_WARNING = false;
614
616
  var enableWarning = !FORCE_DISABLE_WARNING && globalThis.mochaExecutor;
615
617
  var synchronized = (target, propertyName, descriptor) => {
@@ -937,7 +939,7 @@ import { warnAfterTimeout as warnAfterTimeout2 } from "@dxos/debug";
937
939
  import { log as log2 } from "@dxos/log";
938
940
 
939
941
  // src/task-scheduling.ts
940
- import { ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
942
+ import { Context as Context2, ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
941
943
  import { StackTrace as StackTrace2 } from "@dxos/debug";
942
944
 
943
945
  // src/track-leaks.ts
@@ -946,7 +948,7 @@ import { log } from "@dxos/log";
946
948
  var __dxlog_file3 = "/__w/dxos/dxos/packages/common/async/src/track-leaks.ts";
947
949
  var enabled = typeof process !== "undefined" && !!process.env.DX_TRACK_LEAKS;
948
950
  var openResources = /* @__PURE__ */ new Set();
949
- var handleSymbol = Symbol("checkLeaksHandle");
951
+ var handleSymbol = /* @__PURE__ */ Symbol("checkLeaksHandle");
950
952
  var trackResource = (resourceProvider) => {
951
953
  if (!enabled) {
952
954
  return () => {
@@ -1025,6 +1027,7 @@ if (enabled) {
1025
1027
  }
1026
1028
 
1027
1029
  // src/task-scheduling.ts
1030
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/task-scheduling.ts";
1028
1031
  var DeferredTask = class {
1029
1032
  _ctx;
1030
1033
  _callback;
@@ -1074,6 +1077,82 @@ var DeferredTask = class {
1074
1077
  await this._currentTask;
1075
1078
  }
1076
1079
  };
1080
+ var AsyncTask = class {
1081
+ #callback;
1082
+ #ctx = void 0;
1083
+ #scheduled = false;
1084
+ #currentTask = null;
1085
+ #nextTask = new Trigger();
1086
+ constructor(callback) {
1087
+ this.#callback = callback;
1088
+ }
1089
+ get scheduled() {
1090
+ return this.#scheduled;
1091
+ }
1092
+ /**
1093
+ * Context of the resource that owns the task.
1094
+ * When the context is disposed, the task is cancelled and cannot be scheduled again.
1095
+ */
1096
+ open() {
1097
+ this.#ctx = new Context2(void 0, {
1098
+ F: __dxlog_file4,
1099
+ L: 102
1100
+ });
1101
+ }
1102
+ /**
1103
+ * Closes the task and waits for it to finish if it is running.
1104
+ */
1105
+ async close() {
1106
+ await this.#ctx?.dispose();
1107
+ await this.join();
1108
+ this.#ctx = void 0;
1109
+ }
1110
+ [Symbol.asyncDispose]() {
1111
+ return this.close();
1112
+ }
1113
+ /**
1114
+ * Schedule the task to run asynchronously.
1115
+ */
1116
+ // TODO(dmaretskyi): Add scheduleAt. Where the earlier time will override the later one.
1117
+ schedule() {
1118
+ if (!this.#ctx || this.#ctx.disposed) {
1119
+ throw new Error("AsyncTask not open");
1120
+ }
1121
+ if (this.#scheduled) {
1122
+ return;
1123
+ }
1124
+ scheduleTask(this.#ctx, async () => {
1125
+ await this.#currentTask;
1126
+ if (!this.#ctx || this.#ctx.disposed) {
1127
+ return;
1128
+ }
1129
+ this.#scheduled = false;
1130
+ const completionTrigger = this.#nextTask;
1131
+ this.#nextTask = new Trigger();
1132
+ this.#currentTask = runInContextAsync(this.#ctx, () => this.#callback()).then(() => {
1133
+ completionTrigger.wake();
1134
+ });
1135
+ });
1136
+ this.#scheduled = true;
1137
+ }
1138
+ /**
1139
+ * Schedule the task to run and wait for it to finish.
1140
+ */
1141
+ async runBlocking() {
1142
+ if (this.#ctx?.disposed) {
1143
+ throw new ContextDisposedError2();
1144
+ }
1145
+ this.schedule();
1146
+ await this.#nextTask.wait();
1147
+ }
1148
+ /**
1149
+ * Waits for the current task to finish if it is running.
1150
+ * Does not schedule a new task.
1151
+ */
1152
+ async join() {
1153
+ await this.#currentTask;
1154
+ }
1155
+ };
1077
1156
  var runInContext = (ctx, fn) => {
1078
1157
  try {
1079
1158
  fn();
@@ -1159,7 +1238,7 @@ function _ts_decorate(decorators, target, key, desc) {
1159
1238
  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
1239
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1161
1240
  }
1162
- var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecycle.ts";
1241
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecycle.ts";
1163
1242
  var INIT_RESTART_DELAY = 100;
1164
1243
  var DEFAULT_MAX_RESTART_DELAY = 5e3;
1165
1244
  var PersistentLifecycle = class extends Resource {
@@ -1188,7 +1267,7 @@ var PersistentLifecycle = class extends Resource {
1188
1267
  log2.warn("Restart failed", {
1189
1268
  err
1190
1269
  }, {
1191
- F: __dxlog_file4,
1270
+ F: __dxlog_file5,
1192
1271
  L: 72,
1193
1272
  S: this,
1194
1273
  C: (f, a) => f(...a)
@@ -1200,7 +1279,7 @@ var PersistentLifecycle = class extends Resource {
1200
1279
  log2.warn("Start failed", {
1201
1280
  err
1202
1281
  }, {
1203
- F: __dxlog_file4,
1282
+ F: __dxlog_file5,
1204
1283
  L: 78,
1205
1284
  S: this,
1206
1285
  C: (f, a) => f(...a)
@@ -1218,7 +1297,7 @@ var PersistentLifecycle = class extends Resource {
1218
1297
  log2(`restarting in ${this._restartAfter}ms`, {
1219
1298
  state: this._lifecycleState
1220
1299
  }, {
1221
- F: __dxlog_file4,
1300
+ F: __dxlog_file5,
1222
1301
  L: 91,
1223
1302
  S: this,
1224
1303
  C: (f, a) => f(...a)
@@ -1241,7 +1320,7 @@ var PersistentLifecycle = class extends Resource {
1241
1320
  await this._stop(this._currentState);
1242
1321
  } catch (err) {
1243
1322
  log2.catch(err, void 0, {
1244
- F: __dxlog_file4,
1323
+ F: __dxlog_file5,
1245
1324
  L: 113,
1246
1325
  S: this,
1247
1326
  C: (f, a) => f(...a)
@@ -1269,7 +1348,7 @@ _ts_decorate([
1269
1348
 
1270
1349
  // src/push-iterable.ts
1271
1350
  import { invariant as invariant2 } from "@dxos/invariant";
1272
- var __dxlog_file5 = "/__w/dxos/dxos/packages/common/async/src/push-iterable.ts";
1351
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/common/async/src/push-iterable.ts";
1273
1352
  var makePushIterable = () => {
1274
1353
  const buf = [];
1275
1354
  const trigger2 = new Trigger({
@@ -1284,7 +1363,7 @@ var makePushIterable = () => {
1284
1363
  }
1285
1364
  const item = buf.shift();
1286
1365
  invariant2(item, void 0, {
1287
- F: __dxlog_file5,
1366
+ F: __dxlog_file6,
1288
1367
  L: 42,
1289
1368
  S: this,
1290
1369
  A: [
@@ -1596,6 +1675,7 @@ var UpdateScheduler = class {
1596
1675
  }
1597
1676
  };
1598
1677
  export {
1678
+ AsyncTask,
1599
1679
  CancellableObservableProvider,
1600
1680
  DeferredTask,
1601
1681
  Event,