@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.
- package/dist/lib/browser/index.mjs +119 -140
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +119 -140
- 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/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 +7 -7
- 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 +1 -1
- package/src/index.ts +0 -5
- package/src/observable-value.test.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,5 +1,5 @@
|
|
|
1
1
|
// src/callback.ts
|
|
2
|
-
var
|
|
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
|
|
13
|
+
var chain = (chain2) => async (elements) => {
|
|
14
14
|
let result = await elements;
|
|
15
|
-
for (const part of
|
|
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
|
-
|
|
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/
|
|
68
|
-
var
|
|
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 >=
|
|
79
|
+
if (now - lastCall >= delay) {
|
|
73
80
|
cb(...args);
|
|
74
81
|
lastCall = now;
|
|
75
82
|
}
|
|
76
83
|
};
|
|
77
84
|
};
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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" ?
|
|
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,
|