@dxos/async 0.8.4-main.fbb7a13 → 0.8.4-main.fcc0d83b33

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.
Files changed (38) hide show
  1. package/dist/lib/browser/index.mjs +24 -88
  2. package/dist/lib/browser/index.mjs.map +3 -3
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +24 -88
  5. package/dist/lib/node-esm/index.mjs.map +3 -3
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/callback.d.ts.map +1 -1
  8. package/dist/types/src/chain.d.ts.map +1 -1
  9. package/dist/types/src/cleanup.d.ts +2 -3
  10. package/dist/types/src/cleanup.d.ts.map +1 -1
  11. package/dist/types/src/debounce.d.ts +15 -10
  12. package/dist/types/src/debounce.d.ts.map +1 -1
  13. package/dist/types/src/errors.d.ts.map +1 -1
  14. package/dist/types/src/event-emitter.d.ts.map +1 -1
  15. package/dist/types/src/events.d.ts.map +1 -1
  16. package/dist/types/src/mutex.d.ts.map +1 -1
  17. package/dist/types/src/observable-value.d.ts.map +1 -1
  18. package/dist/types/src/observable.d.ts.map +1 -1
  19. package/dist/types/src/persistent-lifecycle.d.ts.map +1 -1
  20. package/dist/types/src/stream-to-array.d.ts.map +1 -1
  21. package/dist/types/src/task-scheduling.d.ts +2 -2
  22. package/dist/types/src/task-scheduling.d.ts.map +1 -1
  23. package/dist/types/src/test-stream.d.ts.map +1 -1
  24. package/dist/types/src/testing.d.ts.map +1 -1
  25. package/dist/types/src/timeout.d.ts +1 -1
  26. package/dist/types/src/timeout.d.ts.map +1 -1
  27. package/dist/types/src/timer.d.ts.map +1 -1
  28. package/dist/types/src/track-leaks.d.ts.map +1 -1
  29. package/dist/types/src/trigger.d.ts.map +1 -1
  30. package/dist/types/src/update-scheduler.d.ts.map +1 -1
  31. package/dist/types/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +7 -10
  33. package/src/cleanup.ts +7 -5
  34. package/src/debounce.ts +19 -14
  35. package/src/event-emitter.test.ts +0 -1
  36. package/src/observable-value.ts +4 -2
  37. package/src/task-scheduling.ts +6 -5
  38. package/src/timeout.ts +6 -9
@@ -22,7 +22,7 @@ var chain = (chain2) => async (elements) => {
22
22
  import { ComplexMap } from "@dxos/util";
23
23
  var combine = (...cleanupFns) => {
24
24
  return () => {
25
- cleanupFns.flat().forEach((cleanupFn) => cleanupFn());
25
+ cleanupFns.flat().filter((f) => typeof f === "function").forEach((cleanupFn) => cleanupFn());
26
26
  };
27
27
  };
28
28
  var timeout = (cb, ms = 0) => {
@@ -39,8 +39,8 @@ var addEventListener = (target, type, listener, options) => {
39
39
  };
40
40
  var SubscriptionList = class {
41
41
  _cleanups = [];
42
- add(cb) {
43
- this._cleanups.push(cb);
42
+ add(...cb) {
43
+ this._cleanups.push(...cb);
44
44
  return this;
45
45
  }
46
46
  clear() {
@@ -166,6 +166,9 @@ var sleepWithContext = (ctx, ms) => {
166
166
  };
167
167
  var asyncReturn = () => sleep(0);
168
168
  var asyncTimeout = async (promise, timeout2, err) => {
169
+ if (typeof promise === "function") {
170
+ throw new Error("First argument must be a promise.");
171
+ }
169
172
  let timeoutId;
170
173
  const throwable = err === void 0 || typeof err === "string" ? new TimeoutError(timeout2, err) : err;
171
174
  const timeoutPromise = new Promise((resolve, reject) => {
@@ -174,9 +177,8 @@ var asyncTimeout = async (promise, timeout2, err) => {
174
177
  }, timeout2);
175
178
  unrefTimeout(timeoutId);
176
179
  });
177
- const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
178
180
  return await Promise.race([
179
- conditionTimeout,
181
+ promise,
180
182
  timeoutPromise
181
183
  ]).finally(() => {
182
184
  clearTimeout(timeoutId);
@@ -213,7 +215,6 @@ var waitForEvent = (eventEmitter, eventName, test, timeout2, error) => {
213
215
 
214
216
  // src/events.ts
215
217
  import { Context } from "@dxos/context";
216
- var __dxlog_file = "/__w/dxos/dxos/packages/common/async/src/events.ts";
217
218
  var DO_NOT_ERROR_ON_ASYNC_CALLBACK = true;
218
219
  var Event = class _Event {
219
220
  /**
@@ -268,10 +269,7 @@ var Event = class _Event {
268
269
  _ctx,
269
270
  _callback
270
271
  ] : [
271
- new Context(void 0, {
272
- F: __dxlog_file,
273
- L: 132
274
- }),
272
+ new Context(),
275
273
  _ctx
276
274
  ];
277
275
  const weak = !!options?.weak;
@@ -301,10 +299,7 @@ var Event = class _Event {
301
299
  _ctx,
302
300
  _callback
303
301
  ] : [
304
- new Context(void 0, {
305
- F: __dxlog_file,
306
- L: 169
307
- }),
302
+ new Context(),
308
303
  _ctx
309
304
  ];
310
305
  const listener = new EventListener(this, callback, ctx, true, false);
@@ -607,7 +602,7 @@ var MutexGuard = class {
607
602
  this.release();
608
603
  }
609
604
  };
610
- var classMutexSymbol = Symbol("class-mutex");
605
+ var classMutexSymbol = /* @__PURE__ */ Symbol("class-mutex");
611
606
  var FORCE_DISABLE_WARNING = false;
612
607
  var enableWarning = !FORCE_DISABLE_WARNING && globalThis.mochaExecutor;
613
608
  var synchronized = (target, propertyName, descriptor) => {
@@ -638,7 +633,6 @@ import PushStream from "zen-push";
638
633
 
639
634
  // src/trigger.ts
640
635
  import { invariant } from "@dxos/invariant";
641
- var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
642
636
  var trigger = (timeout2) => {
643
637
  let callback;
644
638
  const promise = new Promise((resolve, reject) => {
@@ -730,15 +724,7 @@ var Trigger = class {
730
724
  }
731
725
  };
732
726
  var latch = ({ count = 1, timeout: timeout2 } = {}) => {
733
- invariant(count >= 0, void 0, {
734
- F: __dxlog_file2,
735
- L: 139,
736
- S: void 0,
737
- A: [
738
- "count >= 0",
739
- ""
740
- ]
741
- });
727
+ invariant(count >= 0);
742
728
  let t;
743
729
  let doResolve;
744
730
  let doReject;
@@ -935,16 +921,15 @@ import { warnAfterTimeout as warnAfterTimeout2 } from "@dxos/debug";
935
921
  import { log as log2 } from "@dxos/log";
936
922
 
937
923
  // src/task-scheduling.ts
938
- import { ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
924
+ import { Context as Context2, ContextDisposedError as ContextDisposedError2 } from "@dxos/context";
939
925
  import { StackTrace as StackTrace2 } from "@dxos/debug";
940
926
 
941
927
  // src/track-leaks.ts
942
928
  import { StackTrace } from "@dxos/debug";
943
929
  import { log } from "@dxos/log";
944
- var __dxlog_file3 = "/__w/dxos/dxos/packages/common/async/src/track-leaks.ts";
945
930
  var enabled = typeof process !== "undefined" && !!process.env.DX_TRACK_LEAKS;
946
931
  var openResources = /* @__PURE__ */ new Set();
947
- var handleSymbol = Symbol("checkLeaksHandle");
932
+ var handleSymbol = /* @__PURE__ */ Symbol("checkLeaksHandle");
948
933
  var trackResource = (resourceProvider) => {
949
934
  if (!enabled) {
950
935
  return () => {
@@ -991,31 +976,11 @@ var dumpLeaks = () => {
991
976
  if (!enabled) {
992
977
  return;
993
978
  }
994
- log.info(`Leaked resources ${openResources.size}:`, void 0, {
995
- F: __dxlog_file3,
996
- L: 82,
997
- S: void 0,
998
- C: (f, a) => f(...a)
999
- });
979
+ log.info(`Leaked resources ${openResources.size}:`);
1000
980
  for (const resource of openResources) {
1001
- log.info(`- ${resource.name} at`, void 0, {
1002
- F: __dxlog_file3,
1003
- L: 84,
1004
- S: void 0,
1005
- C: (f, a) => f(...a)
1006
- });
1007
- log.info(resource.openStack.getStack(1), void 0, {
1008
- F: __dxlog_file3,
1009
- L: 85,
1010
- S: void 0,
1011
- C: (f, a) => f(...a)
1012
- });
1013
- log.info("\n", void 0, {
1014
- F: __dxlog_file3,
1015
- L: 86,
1016
- S: void 0,
1017
- C: (f, a) => f(...a)
1018
- });
981
+ log.info(`- ${resource.name} at`);
982
+ log.info(resource.openStack.getStack(1));
983
+ log.info("\n");
1019
984
  }
1020
985
  };
1021
986
  if (enabled) {
@@ -1088,16 +1053,16 @@ var AsyncTask = class {
1088
1053
  * Context of the resource that owns the task.
1089
1054
  * When the context is disposed, the task is cancelled and cannot be scheduled again.
1090
1055
  */
1091
- // TODO(dmaretskyi): We don't really need to pass ctx in here, since close will also signal dispose.
1092
- open(ctx) {
1093
- this.#ctx = ctx;
1056
+ open() {
1057
+ this.#ctx = new Context2();
1094
1058
  }
1095
1059
  /**
1096
1060
  * Closes the task and waits for it to finish if it is running.
1097
1061
  */
1098
1062
  async close() {
1099
- this.#ctx = void 0;
1063
+ await this.#ctx?.dispose();
1100
1064
  await this.join();
1065
+ this.#ctx = void 0;
1101
1066
  }
1102
1067
  [Symbol.asyncDispose]() {
1103
1068
  return this.close();
@@ -1105,6 +1070,7 @@ var AsyncTask = class {
1105
1070
  /**
1106
1071
  * Schedule the task to run asynchronously.
1107
1072
  */
1073
+ // TODO(dmaretskyi): Add scheduleAt. Where the earlier time will override the later one.
1108
1074
  schedule() {
1109
1075
  if (!this.#ctx || this.#ctx.disposed) {
1110
1076
  throw new Error("AsyncTask not open");
@@ -1229,7 +1195,6 @@ function _ts_decorate(decorators, target, key, desc) {
1229
1195
  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;
1230
1196
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1231
1197
  }
1232
- var __dxlog_file4 = "/__w/dxos/dxos/packages/common/async/src/persistent-lifecycle.ts";
1233
1198
  var INIT_RESTART_DELAY = 100;
1234
1199
  var DEFAULT_MAX_RESTART_DELAY = 5e3;
1235
1200
  var PersistentLifecycle = class extends Resource {
@@ -1257,11 +1222,6 @@ var PersistentLifecycle = class extends Resource {
1257
1222
  } catch (err) {
1258
1223
  log2.warn("Restart failed", {
1259
1224
  err
1260
- }, {
1261
- F: __dxlog_file4,
1262
- L: 72,
1263
- S: this,
1264
- C: (f, a) => f(...a)
1265
1225
  });
1266
1226
  this._restartTask?.schedule();
1267
1227
  }
@@ -1269,11 +1229,6 @@ var PersistentLifecycle = class extends Resource {
1269
1229
  this._currentState = await this._start().catch((err) => {
1270
1230
  log2.warn("Start failed", {
1271
1231
  err
1272
- }, {
1273
- F: __dxlog_file4,
1274
- L: 78,
1275
- S: this,
1276
- C: (f, a) => f(...a)
1277
1232
  });
1278
1233
  this._restartTask?.schedule();
1279
1234
  return void 0;
@@ -1287,11 +1242,6 @@ var PersistentLifecycle = class extends Resource {
1287
1242
  async _restart() {
1288
1243
  log2(`restarting in ${this._restartAfter}ms`, {
1289
1244
  state: this._lifecycleState
1290
- }, {
1291
- F: __dxlog_file4,
1292
- L: 91,
1293
- S: this,
1294
- C: (f, a) => f(...a)
1295
1245
  });
1296
1246
  await this._stopCurrentState();
1297
1247
  if (this._lifecycleState !== LifecycleState.OPEN) {
@@ -1310,12 +1260,7 @@ var PersistentLifecycle = class extends Resource {
1310
1260
  try {
1311
1261
  await this._stop(this._currentState);
1312
1262
  } catch (err) {
1313
- log2.catch(err, void 0, {
1314
- F: __dxlog_file4,
1315
- L: 113,
1316
- S: this,
1317
- C: (f, a) => f(...a)
1318
- });
1263
+ log2.catch(err);
1319
1264
  }
1320
1265
  this._currentState = void 0;
1321
1266
  }
@@ -1339,7 +1284,6 @@ _ts_decorate([
1339
1284
 
1340
1285
  // src/push-iterable.ts
1341
1286
  import { invariant as invariant2 } from "@dxos/invariant";
1342
- var __dxlog_file5 = "/__w/dxos/dxos/packages/common/async/src/push-iterable.ts";
1343
1287
  var makePushIterable = () => {
1344
1288
  const buf = [];
1345
1289
  const trigger2 = new Trigger({
@@ -1353,15 +1297,7 @@ var makePushIterable = () => {
1353
1297
  await trigger2.wait();
1354
1298
  }
1355
1299
  const item = buf.shift();
1356
- invariant2(item, void 0, {
1357
- F: __dxlog_file5,
1358
- L: 42,
1359
- S: this,
1360
- A: [
1361
- "item",
1362
- ""
1363
- ]
1364
- });
1300
+ invariant2(item);
1365
1301
  switch (item.kind) {
1366
1302
  case "next":
1367
1303
  return {