@dxos/async 0.8.4-main.84f28bd → 0.8.4-main.c1de068

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 (58) hide show
  1. package/dist/lib/browser/index.mjs +119 -140
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +119 -140
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/callback.d.ts +2 -1
  8. package/dist/types/src/callback.d.ts.map +1 -1
  9. package/dist/types/src/chain.d.ts +1 -1
  10. package/dist/types/src/chain.d.ts.map +1 -1
  11. package/dist/types/src/cleanup.d.ts +1 -1
  12. package/dist/types/src/cleanup.d.ts.map +1 -1
  13. package/dist/types/src/debounce.d.ts +16 -2
  14. package/dist/types/src/debounce.d.ts.map +1 -1
  15. package/dist/types/src/index.d.ts +0 -5
  16. package/dist/types/src/index.d.ts.map +1 -1
  17. package/dist/types/src/testing.d.ts +13 -0
  18. package/dist/types/src/testing.d.ts.map +1 -1
  19. package/dist/types/src/timeout.d.ts +1 -1
  20. package/dist/types/src/timeout.d.ts.map +1 -1
  21. package/dist/types/src/trigger.d.ts +11 -0
  22. package/dist/types/src/trigger.d.ts.map +1 -1
  23. package/dist/types/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +7 -7
  25. package/src/callback.ts +3 -3
  26. package/src/chain.ts +1 -1
  27. package/src/cleanup.ts +3 -3
  28. package/src/debounce.test.ts +69 -12
  29. package/src/debounce.ts +32 -11
  30. package/src/event-emitter.test.ts +1 -1
  31. package/src/index.ts +0 -5
  32. package/src/observable-value.test.ts +1 -1
  33. package/src/testing.test.ts +41 -1
  34. package/src/testing.ts +53 -0
  35. package/src/timeout.ts +23 -22
  36. package/src/trigger.ts +58 -1
  37. package/src/update-scheduler.ts +1 -1
  38. package/dist/types/src/latch.d.ts +0 -11
  39. package/dist/types/src/latch.d.ts.map +0 -1
  40. package/dist/types/src/sink.d.ts +0 -6
  41. package/dist/types/src/sink.d.ts.map +0 -1
  42. package/dist/types/src/throttle.d.ts +0 -2
  43. package/dist/types/src/throttle.d.ts.map +0 -1
  44. package/dist/types/src/throttle.test.d.ts +0 -2
  45. package/dist/types/src/throttle.test.d.ts.map +0 -1
  46. package/dist/types/src/types.d.ts +0 -2
  47. package/dist/types/src/types.d.ts.map +0 -1
  48. package/dist/types/src/until.d.ts +0 -14
  49. package/dist/types/src/until.d.ts.map +0 -1
  50. package/dist/types/src/until.test.d.ts +0 -2
  51. package/dist/types/src/until.test.d.ts.map +0 -1
  52. package/src/latch.ts +0 -60
  53. package/src/sink.ts +0 -26
  54. package/src/throttle.test.ts +0 -65
  55. package/src/throttle.ts +0 -14
  56. package/src/types.ts +0 -5
  57. package/src/until.test.ts +0 -47
  58. package/src/until.ts +0 -58
@@ -1,5 +1,5 @@
1
1
  // src/callback.ts
2
- var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
2
+ var promiseFromCallback = (run) => new Promise((resolve, reject) => {
3
3
  run((error, value) => {
4
4
  if (error) {
5
5
  reject(error);
@@ -10,9 +10,9 @@ var createPromiseFromCallback = (run) => new Promise((resolve, reject) => {
10
10
  });
11
11
 
12
12
  // src/chain.ts
13
- var asyncChain = (chain) => async (elements) => {
13
+ var chain = (chain2) => async (elements) => {
14
14
  let result = await elements;
15
- for (const part of chain) {
15
+ for (const part of chain2) {
16
16
  result = await Promise.all(result.map(async (element) => await part(element)));
17
17
  }
18
18
  return result;
@@ -33,10 +33,10 @@ var interval = (cb, ms) => {
33
33
  const t = setInterval(cb, ms);
34
34
  return () => clearInterval(t);
35
35
  };
36
- function addEventListener(target, type, listener, options) {
36
+ var addEventListener = (target, type, listener, options) => {
37
37
  target.addEventListener(type, listener, options);
38
38
  return () => target.removeEventListener(type, listener, options);
39
- }
39
+ };
40
40
  var SubscriptionList = class {
41
41
  constructor() {
42
42
  this._cleanups = [];
@@ -64,29 +64,27 @@ var SubscriptionSet = class {
64
64
  }
65
65
  };
66
66
 
67
- // src/throttle.ts
68
- var throttle = (cb, wait = 100) => {
67
+ // src/debounce.ts
68
+ var debounce = (cb, delay = 100) => {
69
+ let t;
70
+ return (...args) => {
71
+ clearTimeout(t);
72
+ t = setTimeout(() => cb(...args), delay);
73
+ };
74
+ };
75
+ var throttle = (cb, delay = 100) => {
69
76
  let lastCall = 0;
70
77
  return (...args) => {
71
78
  const now = Date.now();
72
- if (now - lastCall >= wait) {
79
+ if (now - lastCall >= delay) {
73
80
  cb(...args);
74
81
  lastCall = now;
75
82
  }
76
83
  };
77
84
  };
78
-
79
- // src/debounce.ts
80
- var debounce = (cb, wait = 100) => {
81
- let t;
82
- return (...args) => {
83
- clearTimeout(t);
84
- t = setTimeout(() => cb(...args), wait);
85
- };
86
- };
87
- var debounceAndThrottle = (cb, wait = 100) => {
88
- const debounced = debounce(cb, wait);
89
- const throttled = throttle(cb, wait);
85
+ var debounceAndThrottle = (cb, delay = 100) => {
86
+ const debounced = debounce(cb, delay);
87
+ const throttled = throttle(cb, delay);
90
88
  return (...args) => {
91
89
  debounced(...args);
92
90
  throttled(...args);
@@ -124,6 +122,23 @@ var sleep = (ms) => {
124
122
  sleeper();
125
123
  });
126
124
  };
125
+ var sleepWithContext = (ctx, ms) => {
126
+ const error = new ContextDisposedError();
127
+ return new Promise((resolve, reject) => {
128
+ if (ctx.disposed) {
129
+ reject(error);
130
+ return;
131
+ }
132
+ const timeout2 = setTimeout(() => {
133
+ clearDispose();
134
+ resolve();
135
+ }, ms);
136
+ const clearDispose = ctx.onDispose(() => {
137
+ clearTimeout(timeout2);
138
+ reject(error);
139
+ });
140
+ });
141
+ };
127
142
  var asyncReturn = () => sleep(0);
128
143
  var asyncTimeout = async (promise, timeout2, err) => {
129
144
  let timeoutId;
@@ -134,7 +149,7 @@ var asyncTimeout = async (promise, timeout2, err) => {
134
149
  }, timeout2);
135
150
  unrefTimeout(timeoutId);
136
151
  });
137
- const conditionTimeout = typeof promise === "function" ? createPromiseFromCallback(promise) : promise;
152
+ const conditionTimeout = typeof promise === "function" ? promiseFromCallback(promise) : promise;
138
153
  return await Promise.race([
139
154
  conditionTimeout,
140
155
  timeoutPromise
@@ -147,23 +162,6 @@ var unrefTimeout = (timeoutId) => {
147
162
  timeoutId.unref();
148
163
  }
149
164
  };
150
- var sleepWithContext = (ctx, ms) => {
151
- const error = new ContextDisposedError();
152
- return new Promise((resolve, reject) => {
153
- if (ctx.disposed) {
154
- reject(error);
155
- return;
156
- }
157
- const timeout2 = setTimeout(() => {
158
- clearDispose();
159
- resolve();
160
- }, ms);
161
- const clearDispose = ctx.onDispose(() => {
162
- clearTimeout(timeout2);
163
- reject(error);
164
- });
165
- });
166
- };
167
165
 
168
166
  // src/event-emitter.ts
169
167
  var onEvent = (eventEmitter, eventName, callback) => {
@@ -516,56 +514,6 @@ var weakListeners = () => {
516
514
  };
517
515
  };
518
516
 
519
- // src/latch.ts
520
- import { invariant } from "@dxos/invariant";
521
- var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/latch.ts";
522
- var latch = ({ count = 1, timeout: timeout2 } = {}) => {
523
- invariant(count >= 0, void 0, {
524
- F: __dxlog_file2,
525
- L: 19,
526
- S: void 0,
527
- A: [
528
- "count >= 0",
529
- ""
530
- ]
531
- });
532
- let t;
533
- let doResolve;
534
- let doReject;
535
- const promise = new Promise((resolve, reject) => {
536
- doResolve = (value) => {
537
- clearTimeout(t);
538
- resolve(value);
539
- };
540
- doReject = (err) => {
541
- clearTimeout(t);
542
- reject(err);
543
- };
544
- });
545
- if (count === 0) {
546
- setTimeout(() => {
547
- doResolve(0);
548
- });
549
- } else {
550
- if (timeout2) {
551
- t = setTimeout(() => {
552
- doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
553
- }, timeout2);
554
- }
555
- }
556
- let i = 0;
557
- return [
558
- async () => await promise,
559
- () => {
560
- if (++i === count) {
561
- doResolve(i);
562
- }
563
- return i;
564
- },
565
- (err) => doReject(err)
566
- ];
567
- };
568
-
569
517
  // src/mutex.ts
570
518
  import "@dxos/util";
571
519
  import { warnAfterTimeout } from "@dxos/debug";
@@ -663,6 +611,8 @@ import Observable from "zen-observable";
663
611
  import PushStream from "zen-push";
664
612
 
665
613
  // src/trigger.ts
614
+ import { invariant } from "@dxos/invariant";
615
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/common/async/src/trigger.ts";
666
616
  var trigger = (timeout2) => {
667
617
  let callback;
668
618
  const promise = new Promise((resolve, reject) => {
@@ -749,6 +699,52 @@ var Trigger = class {
749
699
  return this;
750
700
  }
751
701
  };
702
+ var latch = ({ count = 1, timeout: timeout2 } = {}) => {
703
+ invariant(count >= 0, void 0, {
704
+ F: __dxlog_file2,
705
+ L: 139,
706
+ S: void 0,
707
+ A: [
708
+ "count >= 0",
709
+ ""
710
+ ]
711
+ });
712
+ let t;
713
+ let doResolve;
714
+ let doReject;
715
+ const promise = new Promise((resolve, reject) => {
716
+ doResolve = (value) => {
717
+ clearTimeout(t);
718
+ resolve(value);
719
+ };
720
+ doReject = (err) => {
721
+ clearTimeout(t);
722
+ reject(err);
723
+ };
724
+ });
725
+ if (count === 0) {
726
+ setTimeout(() => {
727
+ doResolve(0);
728
+ });
729
+ } else {
730
+ if (timeout2) {
731
+ t = setTimeout(() => {
732
+ doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
733
+ }, timeout2);
734
+ }
735
+ }
736
+ let i = 0;
737
+ return [
738
+ async () => await promise,
739
+ () => {
740
+ if (++i === count) {
741
+ doResolve(i);
742
+ }
743
+ return i;
744
+ },
745
+ (err) => doReject(err)
746
+ ];
747
+ };
752
748
 
753
749
  // src/observable.ts
754
750
  var MulticastObservable = class _MulticastObservable extends Observable {
@@ -1293,20 +1289,6 @@ var makePushIterable = () => {
1293
1289
  };
1294
1290
  };
1295
1291
 
1296
- // src/sink.ts
1297
- var sink = (emitter, event, count = 1) => {
1298
- const [getPromise, resolve] = trigger();
1299
- let counter = 0;
1300
- const listener = () => {
1301
- if (++counter === count) {
1302
- emitter.off(event, listener);
1303
- resolve();
1304
- }
1305
- };
1306
- emitter.on(event, listener);
1307
- return getPromise();
1308
- };
1309
-
1310
1292
  // src/stream-to-array.ts
1311
1293
  var streamToArray = (stream) => {
1312
1294
  let deferred;
@@ -1410,6 +1392,39 @@ var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2
1410
1392
  timeout: timeout2
1411
1393
  });
1412
1394
  };
1395
+ var until = (cb, timeout2) => {
1396
+ return new Promise((resolve, reject) => {
1397
+ const t = timeout2 && setTimeout(() => {
1398
+ reject(new Error(`Timeout after ${t}ms`));
1399
+ }, timeout2);
1400
+ setTimeout(async () => {
1401
+ try {
1402
+ await cb((value) => {
1403
+ t && clearTimeout(t);
1404
+ resolve(value);
1405
+ }, (error) => {
1406
+ t && clearTimeout(t);
1407
+ reject(error);
1408
+ });
1409
+ } catch (err) {
1410
+ reject(err);
1411
+ }
1412
+ });
1413
+ });
1414
+ };
1415
+ var untilPromise = (cb) => cb();
1416
+ var untilError = (cb) => {
1417
+ return new Promise((resolve, reject) => {
1418
+ setTimeout(async () => {
1419
+ try {
1420
+ await cb();
1421
+ reject(new Error("No error was thrown."));
1422
+ } catch (err) {
1423
+ resolve(err);
1424
+ }
1425
+ });
1426
+ });
1427
+ };
1413
1428
 
1414
1429
  // src/timer.ts
1415
1430
  var Timer = class {
@@ -1459,41 +1474,6 @@ var Timer = class {
1459
1474
  }
1460
1475
  };
1461
1476
 
1462
- // src/until.ts
1463
- var until = (cb, timeout2) => {
1464
- return new Promise((resolve, reject) => {
1465
- const t = timeout2 && setTimeout(() => {
1466
- reject(new Error(`Timeout after ${t}ms`));
1467
- }, timeout2);
1468
- setTimeout(async () => {
1469
- try {
1470
- await cb((value) => {
1471
- t && clearTimeout(t);
1472
- resolve(value);
1473
- }, (error) => {
1474
- t && clearTimeout(t);
1475
- reject(error);
1476
- });
1477
- } catch (err) {
1478
- reject(err);
1479
- }
1480
- });
1481
- });
1482
- };
1483
- var untilPromise = (cb) => cb();
1484
- var untilError = (cb) => {
1485
- return new Promise((resolve, reject) => {
1486
- setTimeout(async () => {
1487
- try {
1488
- await cb();
1489
- reject(new Error("No error was thrown."));
1490
- } catch (err) {
1491
- resolve(err);
1492
- }
1493
- });
1494
- });
1495
- };
1496
-
1497
1477
  // src/update-scheduler.ts
1498
1478
  var TIME_PERIOD = 1e3;
1499
1479
  var UpdateScheduler = class {
@@ -1586,11 +1566,10 @@ export {
1586
1566
  UpdateScheduler,
1587
1567
  addEventListener,
1588
1568
  addListener,
1589
- asyncChain,
1590
1569
  asyncReturn,
1591
1570
  asyncTimeout,
1571
+ chain,
1592
1572
  combine,
1593
- createPromiseFromCallback,
1594
1573
  debounce,
1595
1574
  debounceAndThrottle,
1596
1575
  dumpLeaks,
@@ -1599,13 +1578,13 @@ export {
1599
1578
  makePushIterable,
1600
1579
  observableError,
1601
1580
  onEvent,
1581
+ promiseFromCallback,
1602
1582
  runInContext,
1603
1583
  runInContextAsync,
1604
1584
  scheduleExponentialBackoffTaskInterval,
1605
1585
  scheduleMicroTask,
1606
1586
  scheduleTask,
1607
1587
  scheduleTaskInterval,
1608
- sink,
1609
1588
  sleep,
1610
1589
  sleepWithContext,
1611
1590
  streamToArray,