@dxos/async 0.8.1 → 0.8.2-main.10c050d
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 +79 -58
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +82 -58
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +79 -58
- 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 +11 -0
- package/dist/types/src/cleanup.d.ts.map +1 -1
- 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 +5 -0
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/latch.d.ts.map +1 -1
- package/dist/types/src/mutex.d.ts +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 +1 -1
- package/dist/types/src/persistent-lifecycle.d.ts.map +1 -1
- package/dist/types/src/push-iterable.d.ts.map +1 -1
- package/dist/types/src/sink.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.map +1 -1
- package/dist/types/src/test-stream.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +2 -1
- package/dist/types/src/testing.d.ts.map +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/until.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 +7 -7
- package/src/cleanup.ts +32 -4
- package/src/events.ts +21 -13
- package/src/mutex.test.ts +2 -2
- package/src/mutex.ts +1 -1
- package/src/observable-value.ts +2 -2
- package/src/observable.ts +7 -4
- package/src/persistent-lifecycle.test.ts +2 -2
- package/src/persistent-lifecycle.ts +5 -5
- package/src/task-scheduling.ts +3 -3
- package/src/test-stream.ts +2 -2
- package/src/testing.test.ts +7 -1
- package/src/testing.ts +8 -4
- package/src/timeout.ts +1 -0
- package/src/timer.ts +2 -2
- package/src/trigger.ts +3 -3
- package/src/update-scheduler.ts +4 -4
|
@@ -25,6 +25,18 @@ var combine = (...cleanupFns) => {
|
|
|
25
25
|
cleanupFns.forEach((cleanupFn) => cleanupFn());
|
|
26
26
|
};
|
|
27
27
|
};
|
|
28
|
+
var timeout = (cb, ms = 0) => {
|
|
29
|
+
const t = setTimeout(cb, ms);
|
|
30
|
+
return () => clearTimeout(t);
|
|
31
|
+
};
|
|
32
|
+
var interval = (cb, ms) => {
|
|
33
|
+
const t = setInterval(cb, ms);
|
|
34
|
+
return () => clearInterval(t);
|
|
35
|
+
};
|
|
36
|
+
var addEventListener = (el, event, handler, options) => {
|
|
37
|
+
el.addEventListener(event, handler, options);
|
|
38
|
+
return () => el.removeEventListener(event, handler, options);
|
|
39
|
+
};
|
|
28
40
|
var SubscriptionList = class {
|
|
29
41
|
constructor() {
|
|
30
42
|
this._cleanups = [];
|
|
@@ -64,8 +76,8 @@ var debounce = (cb, wait = 100) => {
|
|
|
64
76
|
// packages/common/async/src/errors.ts
|
|
65
77
|
var toError = (err) => err === void 0 || typeof err === "string" ? new Error(err) : err;
|
|
66
78
|
var TimeoutError = class extends Error {
|
|
67
|
-
constructor(
|
|
68
|
-
super(
|
|
79
|
+
constructor(timeout2, label) {
|
|
80
|
+
super(timeout2 ? `Timeout [${timeout2.toLocaleString()}ms]${label === void 0 ? "" : `: ${label}`}` : "Timeout");
|
|
69
81
|
}
|
|
70
82
|
};
|
|
71
83
|
var observableError = (observable, err) => {
|
|
@@ -93,13 +105,13 @@ var sleep = (ms) => {
|
|
|
93
105
|
});
|
|
94
106
|
};
|
|
95
107
|
var asyncReturn = () => sleep(0);
|
|
96
|
-
var asyncTimeout = async (promise,
|
|
108
|
+
var asyncTimeout = async (promise, timeout2, err) => {
|
|
97
109
|
let timeoutId;
|
|
98
|
-
const throwable = err === void 0 || typeof err === "string" ? new TimeoutError(
|
|
110
|
+
const throwable = err === void 0 || typeof err === "string" ? new TimeoutError(timeout2, err) : err;
|
|
99
111
|
const timeoutPromise = new Promise((resolve, reject) => {
|
|
100
112
|
timeoutId = setTimeout(() => {
|
|
101
113
|
reject(throwable);
|
|
102
|
-
},
|
|
114
|
+
}, timeout2);
|
|
103
115
|
unrefTimeout(timeoutId);
|
|
104
116
|
});
|
|
105
117
|
const conditionTimeout = typeof promise === "function" ? createPromiseFromCallback(promise) : promise;
|
|
@@ -122,12 +134,12 @@ var sleepWithContext = (ctx, ms) => {
|
|
|
122
134
|
reject(error);
|
|
123
135
|
return;
|
|
124
136
|
}
|
|
125
|
-
const
|
|
137
|
+
const timeout2 = setTimeout(() => {
|
|
126
138
|
clearDispose();
|
|
127
139
|
resolve();
|
|
128
140
|
}, ms);
|
|
129
141
|
const clearDispose = ctx.onDispose(() => {
|
|
130
|
-
clearTimeout(
|
|
142
|
+
clearTimeout(timeout2);
|
|
131
143
|
reject(error);
|
|
132
144
|
});
|
|
133
145
|
});
|
|
@@ -144,7 +156,7 @@ var addListener = (eventEmitter, eventName, callback) => {
|
|
|
144
156
|
remove: () => off()
|
|
145
157
|
};
|
|
146
158
|
};
|
|
147
|
-
var waitForEvent = (eventEmitter, eventName, test,
|
|
159
|
+
var waitForEvent = (eventEmitter, eventName, test, timeout2, error) => {
|
|
148
160
|
let off;
|
|
149
161
|
const promise = new Promise((resolve) => {
|
|
150
162
|
off = onEvent(eventEmitter, eventName, (...args) => {
|
|
@@ -153,7 +165,7 @@ var waitForEvent = (eventEmitter, eventName, test, timeout, error) => {
|
|
|
153
165
|
}
|
|
154
166
|
});
|
|
155
167
|
});
|
|
156
|
-
return
|
|
168
|
+
return timeout2 ? asyncTimeout(promise, timeout2, error ?? new Error()).finally(off) : promise.finally(off);
|
|
157
169
|
};
|
|
158
170
|
|
|
159
171
|
// packages/common/async/src/events.ts
|
|
@@ -348,14 +360,14 @@ var Event = class _Event {
|
|
|
348
360
|
* the event is emitted after `timeout / 8` ms.
|
|
349
361
|
*/
|
|
350
362
|
// TODO(burdon): Factor out generic function.
|
|
351
|
-
debounce(
|
|
363
|
+
debounce(timeout2 = 0) {
|
|
352
364
|
let firing;
|
|
353
365
|
let lastFired;
|
|
354
366
|
const debouncedEvent = new _Event();
|
|
355
367
|
debouncedEvent.addEffect(() => {
|
|
356
368
|
const unsubscribe = this.on(() => {
|
|
357
369
|
if (!firing) {
|
|
358
|
-
const fireIn = !lastFired || Date.now() - lastFired >
|
|
370
|
+
const fireIn = !lastFired || Date.now() - lastFired > timeout2 ? timeout2 / 8 : timeout2;
|
|
359
371
|
firing = setTimeout(() => {
|
|
360
372
|
lastFired = Date.now();
|
|
361
373
|
firing = void 0;
|
|
@@ -377,6 +389,13 @@ var Event = class _Event {
|
|
|
377
389
|
return this;
|
|
378
390
|
}
|
|
379
391
|
/**
|
|
392
|
+
* Pipe the events into another event.
|
|
393
|
+
* @param event
|
|
394
|
+
*/
|
|
395
|
+
pipeInto(event) {
|
|
396
|
+
return this.on((data) => event.emit(data));
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
380
399
|
* Overridden to not return implementation details.
|
|
381
400
|
*/
|
|
382
401
|
toJSON() {
|
|
@@ -480,7 +499,7 @@ var weakListeners = () => {
|
|
|
480
499
|
// packages/common/async/src/latch.ts
|
|
481
500
|
import { invariant } from "@dxos/invariant";
|
|
482
501
|
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/common/async/src/latch.ts";
|
|
483
|
-
var latch = ({ count = 1, timeout } = {}) => {
|
|
502
|
+
var latch = ({ count = 1, timeout: timeout2 } = {}) => {
|
|
484
503
|
invariant(count >= 0, void 0, {
|
|
485
504
|
F: __dxlog_file2,
|
|
486
505
|
L: 19,
|
|
@@ -508,10 +527,10 @@ var latch = ({ count = 1, timeout } = {}) => {
|
|
|
508
527
|
doResolve(0);
|
|
509
528
|
});
|
|
510
529
|
} else {
|
|
511
|
-
if (
|
|
530
|
+
if (timeout2) {
|
|
512
531
|
t = setTimeout(() => {
|
|
513
|
-
doReject(new Error(`Timed out after ${
|
|
514
|
-
},
|
|
532
|
+
doReject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`));
|
|
533
|
+
}, timeout2);
|
|
515
534
|
}
|
|
516
535
|
}
|
|
517
536
|
let i = 0;
|
|
@@ -624,11 +643,11 @@ import Observable from "zen-observable";
|
|
|
624
643
|
import PushStream from "zen-push";
|
|
625
644
|
|
|
626
645
|
// packages/common/async/src/trigger.ts
|
|
627
|
-
var trigger = (
|
|
646
|
+
var trigger = (timeout2) => {
|
|
628
647
|
let callback;
|
|
629
648
|
const promise = new Promise((resolve, reject) => {
|
|
630
|
-
if (
|
|
631
|
-
setTimeout(() => reject(new Error(`Timed out after ${
|
|
649
|
+
if (timeout2) {
|
|
650
|
+
setTimeout(() => reject(new Error(`Timed out after ${timeout2.toLocaleString()}ms`)), timeout2);
|
|
632
651
|
}
|
|
633
652
|
callback = resolve;
|
|
634
653
|
});
|
|
@@ -639,12 +658,12 @@ var trigger = (timeout) => {
|
|
|
639
658
|
resolver
|
|
640
659
|
];
|
|
641
660
|
};
|
|
642
|
-
var TriggerState
|
|
643
|
-
(function(TriggerState2) {
|
|
661
|
+
var TriggerState = /* @__PURE__ */ function(TriggerState2) {
|
|
644
662
|
TriggerState2["WAITING"] = "WAITING";
|
|
645
663
|
TriggerState2["RESOLVED"] = "RESOLVED";
|
|
646
664
|
TriggerState2["REJECTED"] = "REJECTED";
|
|
647
|
-
|
|
665
|
+
return TriggerState2;
|
|
666
|
+
}({});
|
|
648
667
|
var Trigger = class {
|
|
649
668
|
constructor(_options = {
|
|
650
669
|
autoReset: false
|
|
@@ -659,9 +678,9 @@ var Trigger = class {
|
|
|
659
678
|
/**
|
|
660
679
|
* Wait until wake is called, with optional timeout.
|
|
661
680
|
*/
|
|
662
|
-
async wait({ timeout } = {}) {
|
|
663
|
-
if (
|
|
664
|
-
return asyncTimeout(this._promise,
|
|
681
|
+
async wait({ timeout: timeout2 } = {}) {
|
|
682
|
+
if (timeout2) {
|
|
683
|
+
return asyncTimeout(this._promise, timeout2, new TimeoutError(timeout2));
|
|
665
684
|
} else {
|
|
666
685
|
return this._promise;
|
|
667
686
|
}
|
|
@@ -714,11 +733,7 @@ var Trigger = class {
|
|
|
714
733
|
// packages/common/async/src/observable.ts
|
|
715
734
|
var MulticastObservable = class _MulticastObservable extends Observable {
|
|
716
735
|
constructor(subscriber, _value) {
|
|
717
|
-
super((observer) => this._subscribe(observer))
|
|
718
|
-
this._value = _value;
|
|
719
|
-
this._observers = /* @__PURE__ */ new Set();
|
|
720
|
-
this._completed = new Trigger();
|
|
721
|
-
this._handlers = {
|
|
736
|
+
super((observer) => this._subscribe(observer)), this._value = _value, this._observers = /* @__PURE__ */ new Set(), this._completed = new Trigger(), this._handlers = {
|
|
722
737
|
next: (value) => {
|
|
723
738
|
this._value = value;
|
|
724
739
|
this._observers.forEach((observer) => observer.next?.(value));
|
|
@@ -768,9 +783,9 @@ var MulticastObservable = class _MulticastObservable extends Observable {
|
|
|
768
783
|
*
|
|
769
784
|
* @returns Promise that resolves to the value of the observable at the time of completion.
|
|
770
785
|
*/
|
|
771
|
-
async wait({ timeout } = {}) {
|
|
786
|
+
async wait({ timeout: timeout2 } = {}) {
|
|
772
787
|
await this._completed.wait({
|
|
773
|
-
timeout
|
|
788
|
+
timeout: timeout2
|
|
774
789
|
});
|
|
775
790
|
return this.get();
|
|
776
791
|
}
|
|
@@ -847,9 +862,7 @@ var ObservableProvider = class {
|
|
|
847
862
|
};
|
|
848
863
|
var CancellableObservableProvider = class extends ObservableProvider {
|
|
849
864
|
constructor(_handleCancel) {
|
|
850
|
-
super();
|
|
851
|
-
this._handleCancel = _handleCancel;
|
|
852
|
-
this._cancelled = false;
|
|
865
|
+
super(), this._handleCancel = _handleCancel, this._cancelled = false;
|
|
853
866
|
}
|
|
854
867
|
get cancelled() {
|
|
855
868
|
return this._cancelled;
|
|
@@ -1032,17 +1045,17 @@ var scheduleTask = (ctx, fn, afterMs) => {
|
|
|
1032
1045
|
name: `task (${fn.name || "anonymous"})`,
|
|
1033
1046
|
openStack: new StackTrace2()
|
|
1034
1047
|
}));
|
|
1035
|
-
const
|
|
1048
|
+
const timeout2 = setTimeout(async () => {
|
|
1036
1049
|
clearDispose();
|
|
1037
1050
|
await runInContextAsync(ctx, fn);
|
|
1038
1051
|
clearTracking();
|
|
1039
1052
|
}, afterMs);
|
|
1040
1053
|
const clearDispose = ctx.onDispose(() => {
|
|
1041
1054
|
clearTracking();
|
|
1042
|
-
clearTimeout(
|
|
1055
|
+
clearTimeout(timeout2);
|
|
1043
1056
|
});
|
|
1044
1057
|
};
|
|
1045
|
-
var scheduleTaskInterval = (ctx, task,
|
|
1058
|
+
var scheduleTaskInterval = (ctx, task, interval2) => {
|
|
1046
1059
|
const clearTracking = trackResource(() => ({
|
|
1047
1060
|
name: `repeating task (${task.name || "anonymous"})`,
|
|
1048
1061
|
openStack: new StackTrace2()
|
|
@@ -1053,9 +1066,9 @@ var scheduleTaskInterval = (ctx, task, interval) => {
|
|
|
1053
1066
|
if (ctx.disposed) {
|
|
1054
1067
|
return;
|
|
1055
1068
|
}
|
|
1056
|
-
timeoutId = setTimeout(run,
|
|
1069
|
+
timeoutId = setTimeout(run, interval2);
|
|
1057
1070
|
};
|
|
1058
|
-
timeoutId = setTimeout(run,
|
|
1071
|
+
timeoutId = setTimeout(run, interval2);
|
|
1059
1072
|
ctx.onDispose(() => {
|
|
1060
1073
|
clearTracking();
|
|
1061
1074
|
clearTimeout(timeoutId);
|
|
@@ -1067,16 +1080,16 @@ var scheduleExponentialBackoffTaskInterval = (ctx, task, initialInterval) => {
|
|
|
1067
1080
|
openStack: new StackTrace2()
|
|
1068
1081
|
}));
|
|
1069
1082
|
let timeoutId;
|
|
1070
|
-
let
|
|
1083
|
+
let interval2 = initialInterval;
|
|
1071
1084
|
const repeat = async () => {
|
|
1072
1085
|
await runInContextAsync(ctx, task);
|
|
1073
1086
|
if (ctx.disposed) {
|
|
1074
1087
|
return;
|
|
1075
1088
|
}
|
|
1076
|
-
|
|
1077
|
-
timeoutId = setTimeout(repeat,
|
|
1089
|
+
interval2 *= 2;
|
|
1090
|
+
timeoutId = setTimeout(repeat, interval2);
|
|
1078
1091
|
};
|
|
1079
|
-
timeoutId = setTimeout(repeat,
|
|
1092
|
+
timeoutId = setTimeout(repeat, interval2);
|
|
1080
1093
|
ctx.onDispose(() => {
|
|
1081
1094
|
clearTracking();
|
|
1082
1095
|
clearTimeout(timeoutId);
|
|
@@ -1180,7 +1193,7 @@ var PersistentLifecycle = class extends Resource {
|
|
|
1180
1193
|
/**
|
|
1181
1194
|
* Scheduling restart should be done from outside.
|
|
1182
1195
|
*/
|
|
1183
|
-
scheduleRestart() {
|
|
1196
|
+
async scheduleRestart() {
|
|
1184
1197
|
if (this._lifecycleState !== LifecycleState.OPEN) {
|
|
1185
1198
|
return;
|
|
1186
1199
|
}
|
|
@@ -1324,15 +1337,15 @@ var TestStream = class extends Duplex {
|
|
|
1324
1337
|
this._received = Buffer.alloc(0);
|
|
1325
1338
|
this._onWrite = new Event();
|
|
1326
1339
|
}
|
|
1327
|
-
static async assertConnectivity(stream1, stream2, { timeout = 200 } = {}) {
|
|
1340
|
+
static async assertConnectivity(stream1, stream2, { timeout: timeout2 = 200 } = {}) {
|
|
1328
1341
|
stream1.push("ping");
|
|
1329
1342
|
stream2.push("pong");
|
|
1330
1343
|
await Promise.all([
|
|
1331
1344
|
stream2.assertReceivedAsync("ping", {
|
|
1332
|
-
timeout
|
|
1345
|
+
timeout: timeout2
|
|
1333
1346
|
}),
|
|
1334
1347
|
stream1.assertReceivedAsync("pong", {
|
|
1335
|
-
timeout
|
|
1348
|
+
timeout: timeout2
|
|
1336
1349
|
})
|
|
1337
1350
|
]);
|
|
1338
1351
|
}
|
|
@@ -1346,15 +1359,15 @@ var TestStream = class extends Duplex {
|
|
|
1346
1359
|
}
|
|
1347
1360
|
_read(size) {
|
|
1348
1361
|
}
|
|
1349
|
-
assertReceivedAsync(data, { timeout = 200 } = {}) {
|
|
1362
|
+
assertReceivedAsync(data, { timeout: timeout2 = 200 } = {}) {
|
|
1350
1363
|
const dataBuffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
1351
|
-
return asyncTimeout(this._onWrite.waitForCondition(() => this._received.equals(dataBuffer)),
|
|
1364
|
+
return asyncTimeout(this._onWrite.waitForCondition(() => this._received.equals(dataBuffer)), timeout2);
|
|
1352
1365
|
}
|
|
1353
1366
|
};
|
|
1354
1367
|
|
|
1355
1368
|
// packages/common/async/src/testing.ts
|
|
1356
|
-
var waitForCondition = ({ condition, timeout = 0, interval = 10, error }) => {
|
|
1357
|
-
const stopTime =
|
|
1369
|
+
var waitForCondition = ({ condition, timeout: timeout2 = 0, interval: interval2 = 10, error, breakOnError = false }) => {
|
|
1370
|
+
const stopTime = timeout2 ? Date.now() + timeout2 : 0;
|
|
1358
1371
|
const trigger2 = new Trigger();
|
|
1359
1372
|
const waiter = async () => {
|
|
1360
1373
|
while (!stopTime || Date.now() < stopTime) {
|
|
@@ -1365,12 +1378,17 @@ var waitForCondition = ({ condition, timeout = 0, interval = 10, error }) => {
|
|
|
1365
1378
|
break;
|
|
1366
1379
|
}
|
|
1367
1380
|
} catch (err) {
|
|
1381
|
+
if (breakOnError === true) {
|
|
1382
|
+
trigger2.throw(err);
|
|
1383
|
+
}
|
|
1368
1384
|
}
|
|
1369
|
-
await sleep(
|
|
1385
|
+
await sleep(interval2);
|
|
1370
1386
|
}
|
|
1371
1387
|
};
|
|
1372
1388
|
setTimeout(waiter, 0);
|
|
1373
|
-
return
|
|
1389
|
+
return trigger2.wait({
|
|
1390
|
+
timeout: timeout2
|
|
1391
|
+
});
|
|
1374
1392
|
};
|
|
1375
1393
|
|
|
1376
1394
|
// packages/common/async/src/timer.ts
|
|
@@ -1401,11 +1419,11 @@ var Timer = class {
|
|
|
1401
1419
|
if (this._count >= (options.count ?? 0)) {
|
|
1402
1420
|
stop();
|
|
1403
1421
|
} else {
|
|
1404
|
-
const
|
|
1422
|
+
const interval2 = (options.interval ?? 0) + Math.random() * (options.jitter ?? 0);
|
|
1405
1423
|
this._timer = setTimeout(async () => {
|
|
1406
1424
|
await this._callback(this._count++);
|
|
1407
1425
|
run();
|
|
1408
|
-
},
|
|
1426
|
+
}, interval2);
|
|
1409
1427
|
}
|
|
1410
1428
|
};
|
|
1411
1429
|
this._state.emit(true);
|
|
@@ -1422,11 +1440,11 @@ var Timer = class {
|
|
|
1422
1440
|
};
|
|
1423
1441
|
|
|
1424
1442
|
// packages/common/async/src/until.ts
|
|
1425
|
-
var until = (cb,
|
|
1443
|
+
var until = (cb, timeout2) => {
|
|
1426
1444
|
return new Promise((resolve, reject) => {
|
|
1427
|
-
const t =
|
|
1445
|
+
const t = timeout2 && setTimeout(() => {
|
|
1428
1446
|
reject(new Error(`Timeout after ${t}ms`));
|
|
1429
|
-
},
|
|
1447
|
+
}, timeout2);
|
|
1430
1448
|
setTimeout(async () => {
|
|
1431
1449
|
try {
|
|
1432
1450
|
await cb((value) => {
|
|
@@ -1546,6 +1564,7 @@ export {
|
|
|
1546
1564
|
Trigger,
|
|
1547
1565
|
TriggerState,
|
|
1548
1566
|
UpdateScheduler,
|
|
1567
|
+
addEventListener,
|
|
1549
1568
|
addListener,
|
|
1550
1569
|
asyncChain,
|
|
1551
1570
|
asyncReturn,
|
|
@@ -1554,6 +1573,7 @@ export {
|
|
|
1554
1573
|
createPromiseFromCallback,
|
|
1555
1574
|
debounce,
|
|
1556
1575
|
dumpLeaks,
|
|
1576
|
+
interval,
|
|
1557
1577
|
latch,
|
|
1558
1578
|
makePushIterable,
|
|
1559
1579
|
observableError,
|
|
@@ -1569,6 +1589,7 @@ export {
|
|
|
1569
1589
|
sleepWithContext,
|
|
1570
1590
|
streamToArray,
|
|
1571
1591
|
synchronized,
|
|
1592
|
+
timeout,
|
|
1572
1593
|
toError,
|
|
1573
1594
|
trackLeaks,
|
|
1574
1595
|
trackResource,
|