@dxos/async 0.8.2-main.30e4dbb → 0.8.2-main.4c6cf53
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 +73 -57
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +75 -57
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +73 -57
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/cleanup.d.ts +2 -0
- package/dist/types/src/cleanup.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/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.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/timer.d.ts.map +1 -1
- package/dist/types/src/trigger.d.ts.map +1 -1
- package/dist/types/src/update-scheduler.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/cleanup.ts +14 -4
- package/src/events.ts +21 -13
- package/src/mutex.test.ts +2 -2
- package/src/observable-value.ts +2 -2
- package/src/observable.ts +7 -4
- 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/timer.ts +2 -2
- package/src/trigger.ts +3 -3
- package/src/update-scheduler.ts +4 -4
package/src/testing.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2020 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { sleep } from './timeout';
|
|
6
6
|
import { Trigger } from './trigger';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -19,11 +19,13 @@ export const waitForCondition = <FunctionType extends (...args: any) => any>({
|
|
|
19
19
|
timeout = 0,
|
|
20
20
|
interval = 10,
|
|
21
21
|
error,
|
|
22
|
+
breakOnError = false,
|
|
22
23
|
}: {
|
|
23
24
|
condition: FunctionType;
|
|
24
25
|
timeout?: number;
|
|
25
26
|
interval?: number;
|
|
26
27
|
error?: Error;
|
|
28
|
+
breakOnError?: boolean;
|
|
27
29
|
}) => {
|
|
28
30
|
const stopTime = timeout ? Date.now() + timeout : 0;
|
|
29
31
|
const trigger = new Trigger<ReturnType<FunctionType>>();
|
|
@@ -37,8 +39,10 @@ export const waitForCondition = <FunctionType extends (...args: any) => any>({
|
|
|
37
39
|
trigger.wake(value);
|
|
38
40
|
break;
|
|
39
41
|
}
|
|
40
|
-
} catch (err) {
|
|
41
|
-
|
|
42
|
+
} catch (err: any) {
|
|
43
|
+
if (breakOnError === true) {
|
|
44
|
+
trigger.throw(err);
|
|
45
|
+
}
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
// eslint-disable-next-line no-await-in-loop
|
|
@@ -48,5 +52,5 @@ export const waitForCondition = <FunctionType extends (...args: any) => any>({
|
|
|
48
52
|
|
|
49
53
|
setTimeout(waiter, 0);
|
|
50
54
|
|
|
51
|
-
return
|
|
55
|
+
return trigger.wait({ timeout });
|
|
52
56
|
};
|
package/src/timer.ts
CHANGED
|
@@ -27,7 +27,7 @@ export class Timer {
|
|
|
27
27
|
return !!this._timer;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
start(options: TimerOptions, cb?: () => void) {
|
|
30
|
+
start(options: TimerOptions, cb?: () => void): this {
|
|
31
31
|
if (isNaN(options.count) || isNaN(options.interval)) {
|
|
32
32
|
throw new Error(`Invalid options: ${JSON.stringify(options)}`);
|
|
33
33
|
}
|
|
@@ -61,7 +61,7 @@ export class Timer {
|
|
|
61
61
|
return this;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
stop() {
|
|
64
|
+
stop(): this {
|
|
65
65
|
clearInterval(this._timer);
|
|
66
66
|
this._timer = undefined;
|
|
67
67
|
this._state.emit(false);
|
package/src/trigger.ts
CHANGED
|
@@ -77,7 +77,7 @@ export class Trigger<T = void> {
|
|
|
77
77
|
* Wake blocked callers (if any).
|
|
78
78
|
* NOOP if the trigger is already resolved.
|
|
79
79
|
*/
|
|
80
|
-
wake(value: T) {
|
|
80
|
+
wake(value: T): this {
|
|
81
81
|
if (this._state !== TriggerState.WAITING) {
|
|
82
82
|
return this;
|
|
83
83
|
}
|
|
@@ -93,7 +93,7 @@ export class Trigger<T = void> {
|
|
|
93
93
|
/**
|
|
94
94
|
* Reset promise (new waiters will wait).
|
|
95
95
|
*/
|
|
96
|
-
reset() {
|
|
96
|
+
reset(): this {
|
|
97
97
|
this._state = TriggerState.WAITING;
|
|
98
98
|
this._promise = new Promise<T>((resolve, reject) => {
|
|
99
99
|
this._resolve = resolve;
|
|
@@ -108,7 +108,7 @@ export class Trigger<T = void> {
|
|
|
108
108
|
* Throw error to blocked callers (if any).
|
|
109
109
|
* NOOP if the trigger is already resolved.
|
|
110
110
|
*/
|
|
111
|
-
throw(error: Error) {
|
|
111
|
+
throw(error: Error): this {
|
|
112
112
|
if (this._state !== TriggerState.WAITING) {
|
|
113
113
|
return this;
|
|
114
114
|
}
|
package/src/update-scheduler.ts
CHANGED
|
@@ -38,7 +38,7 @@ export class UpdateScheduler {
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
trigger() {
|
|
41
|
+
trigger(): void {
|
|
42
42
|
if (this._scheduled) {
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
@@ -87,7 +87,7 @@ export class UpdateScheduler {
|
|
|
87
87
|
this._scheduled = true;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
forceTrigger() {
|
|
90
|
+
forceTrigger(): void {
|
|
91
91
|
scheduleMicroTask(this._ctx, async () => {
|
|
92
92
|
this._callback().catch((err) => this._ctx.raise(err));
|
|
93
93
|
});
|
|
@@ -97,14 +97,14 @@ export class UpdateScheduler {
|
|
|
97
97
|
* Waits for the current task to finish if it is running.
|
|
98
98
|
* Does not schedule a new task.
|
|
99
99
|
*/
|
|
100
|
-
async join() {
|
|
100
|
+
async join(): Promise<void> {
|
|
101
101
|
await this._promise;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
/**
|
|
105
105
|
* Force schedule the task to run and wait for it to finish.
|
|
106
106
|
*/
|
|
107
|
-
async runBlocking() {
|
|
107
|
+
async runBlocking(): Promise<void> {
|
|
108
108
|
// The previous task might still be running, so we need to wait for it to finish.
|
|
109
109
|
await this._promise; // Can't be rejected.
|
|
110
110
|
this._promise = this._callback();
|