@fbltd/async 1.0.1 → 1.0.5
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/bin/core/dependency-stream.js +12 -12
- package/dist/bin/core/utils.js +1 -1
- package/dist/bin/react/src/use-stream.js +1 -1
- package/dist/bin/utils/delay.js +12 -0
- package/dist/bin/utils/get-promise.js +2 -2
- package/dist/types/core/dependency-stream.d.ts +3 -3
- package/dist/types/utils/delay.d.ts +1 -0
- package/dist/types/utils/get-promise.d.ts +1 -1
- package/package.json +5 -3
|
@@ -4,7 +4,7 @@ exports.DependencyStream = void 0;
|
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
5
|
class DependencyStream {
|
|
6
6
|
_value;
|
|
7
|
-
|
|
7
|
+
promiseConf;
|
|
8
8
|
abortPromise = (0, utils_1.getPromise)();
|
|
9
9
|
constructor(_value) {
|
|
10
10
|
this._value = _value;
|
|
@@ -13,12 +13,12 @@ class DependencyStream {
|
|
|
13
13
|
if (v === this._value)
|
|
14
14
|
return;
|
|
15
15
|
this._value = v;
|
|
16
|
-
this.
|
|
16
|
+
this.promiseConf && this.promiseConf.resolve(v);
|
|
17
17
|
}
|
|
18
|
-
set
|
|
18
|
+
set value(v) {
|
|
19
19
|
this._set(v);
|
|
20
|
-
}
|
|
21
|
-
get() {
|
|
20
|
+
}
|
|
21
|
+
get value() {
|
|
22
22
|
return this._value;
|
|
23
23
|
}
|
|
24
24
|
[Symbol.asyncIterator]() {
|
|
@@ -26,22 +26,22 @@ class DependencyStream {
|
|
|
26
26
|
const selfDispose = (0, utils_1.getPromise)();
|
|
27
27
|
return {
|
|
28
28
|
owner: this,
|
|
29
|
-
dispose: () => selfDispose.resolve(
|
|
29
|
+
dispose: () => selfDispose.resolve(),
|
|
30
30
|
next: async () => {
|
|
31
|
-
if (!this.
|
|
32
|
-
this.
|
|
31
|
+
if (!this.promiseConf) {
|
|
32
|
+
this.promiseConf = (0, utils_1.getPromise)();
|
|
33
33
|
this._set(this._value);
|
|
34
34
|
}
|
|
35
35
|
await Promise.race([
|
|
36
36
|
totalDispose.promise,
|
|
37
37
|
selfDispose.promise,
|
|
38
|
-
this.
|
|
38
|
+
this.promiseConf.promise,
|
|
39
39
|
]);
|
|
40
|
-
this.
|
|
40
|
+
this.promiseConf = undefined;
|
|
41
41
|
if (totalDispose.isFulfilled || selfDispose.isFulfilled) {
|
|
42
42
|
return { done: true };
|
|
43
43
|
}
|
|
44
|
-
const value = this.
|
|
44
|
+
const value = this.value;
|
|
45
45
|
return {
|
|
46
46
|
done: false,
|
|
47
47
|
get value() {
|
|
@@ -52,7 +52,7 @@ class DependencyStream {
|
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
54
|
dispose() {
|
|
55
|
-
this.abortPromise.resolve(
|
|
55
|
+
this.abortPromise.resolve();
|
|
56
56
|
this.abortPromise = (0, utils_1.getPromise)();
|
|
57
57
|
}
|
|
58
58
|
}
|
package/dist/bin/core/utils.js
CHANGED
|
@@ -23,7 +23,7 @@ class StreamController {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
function useStream(...streams) {
|
|
26
|
-
const [value, setValue] = (0, react_1.useState)(streams.map(s => s.
|
|
26
|
+
const [value, setValue] = (0, react_1.useState)(streams.map(s => s.value));
|
|
27
27
|
const [obj] = (0, react_1.useState)(() => ({ controller: new StreamController(...streams) }));
|
|
28
28
|
obj.controller.setValue = setValue;
|
|
29
29
|
(0, react_1.useEffect)(() => {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.delay = delay;
|
|
4
|
+
const get_promise_1 = require("./get-promise");
|
|
5
|
+
function delay(ms) {
|
|
6
|
+
ms = Math.max(ms, 0);
|
|
7
|
+
const { promise, resolve } = (0, get_promise_1.getPromise)();
|
|
8
|
+
setTimeout(() => {
|
|
9
|
+
resolve();
|
|
10
|
+
}, ms);
|
|
11
|
+
return promise;
|
|
12
|
+
}
|
|
@@ -7,11 +7,11 @@ function getPromise() {
|
|
|
7
7
|
let isPending = true;
|
|
8
8
|
let isFulfilled = false;
|
|
9
9
|
const promise = new Promise((res, rej) => {
|
|
10
|
-
resolve = (value) => {
|
|
10
|
+
resolve = ((value) => {
|
|
11
11
|
res(value);
|
|
12
12
|
isPending = false;
|
|
13
13
|
isFulfilled = true;
|
|
14
|
-
};
|
|
14
|
+
});
|
|
15
15
|
reject = (error) => {
|
|
16
16
|
rej(error);
|
|
17
17
|
isPending = false;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export declare class DependencyStream<T = any> {
|
|
2
2
|
private _value;
|
|
3
|
-
private
|
|
3
|
+
private promiseConf;
|
|
4
4
|
private abortPromise;
|
|
5
5
|
constructor(_value: T);
|
|
6
6
|
private _set;
|
|
7
|
-
set
|
|
8
|
-
get(): T;
|
|
7
|
+
set value(v: T);
|
|
8
|
+
get value(): T;
|
|
9
9
|
[Symbol.asyncIterator](this: DependencyStream<T>): {
|
|
10
10
|
owner: DependencyStream<T>;
|
|
11
11
|
dispose: () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function delay(ms: number): Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fbltd/async",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "R&D async tools",
|
|
5
5
|
"exports": {
|
|
6
6
|
"require": "./dist/bin/index.js",
|
|
@@ -19,8 +19,10 @@
|
|
|
19
19
|
"clearAll": "npm run clearDist && npm run clearModules",
|
|
20
20
|
"build": "cd src/react && npm run build && cd ../../ && npm run clearAll && npm i && mkdir dist && tsc",
|
|
21
21
|
"test": "jest --config=./__tests__/jest.config.js",
|
|
22
|
-
"
|
|
23
|
-
"
|
|
22
|
+
"postVersionCommit": "git commit -m='post version commit' || true",
|
|
23
|
+
"postVersionPush": "git push || true",
|
|
24
|
+
"patch": "npm version patch && npm run postVersionCommit && npm run postVersionPush",
|
|
25
|
+
"deploy": "npm run build && npm run test && npm run patch && npm publish && npm run clearDist"
|
|
24
26
|
},
|
|
25
27
|
"author": "",
|
|
26
28
|
"license": "ISC",
|