async-reactivity 2.0.17 → 2.0.18

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.
@@ -0,0 +1,22 @@
1
+ import Listener from "./listener.js";
2
+ export default class AsyncListener extends Listener {
3
+ promiseResolve;
4
+ constructor(start, stop) {
5
+ let promiseResolve;
6
+ super(new Promise(resolve => {
7
+ promiseResolve = resolve;
8
+ }), start, stop);
9
+ this.promiseResolve = promiseResolve;
10
+ }
11
+ set value(_value) {
12
+ if (this.promiseResolve) {
13
+ _value.then(this.promiseResolve);
14
+ this.promiseResolve = undefined;
15
+ this._value = _value; // prevent invalidate
16
+ }
17
+ super.value = _value;
18
+ }
19
+ get value() {
20
+ return super.value;
21
+ }
22
+ }
package/lib/index.js CHANGED
@@ -2,4 +2,5 @@ export { default as Computed } from './computed.js';
2
2
  export { default as Ref } from './ref.js';
3
3
  export { default as Watcher } from './watcher.js';
4
4
  export { default as Listener } from './listener.js';
5
+ export { default as AsyncListener } from './asyncListener.js';
5
6
  export { default as defaultIsEqual } from './defaultIsEqual.js';
@@ -0,0 +1,22 @@
1
+ import Listener from "./listener.js";
2
+ export default class AsyncListener extends Listener {
3
+ promiseResolve;
4
+ constructor(start, stop) {
5
+ let promiseResolve;
6
+ super(new Promise(resolve => {
7
+ promiseResolve = resolve;
8
+ }), start, stop);
9
+ this.promiseResolve = promiseResolve;
10
+ }
11
+ set value(_value) {
12
+ if (this.promiseResolve) {
13
+ _value.then(this.promiseResolve);
14
+ this.promiseResolve = undefined;
15
+ this._value = _value; // prevent invalidate
16
+ }
17
+ super.value = _value;
18
+ }
19
+ get value() {
20
+ return super.value;
21
+ }
22
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "async-reactivity",
3
- "version": "2.0.17",
3
+ "version": "2.0.18",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "types/index.d.ts",
@@ -23,8 +23,8 @@
23
23
  "license": "ISC",
24
24
  "devDependencies": {
25
25
  "@types/mocha": "^10.0.8",
26
- "@types/node": "^20.14.15",
26
+ "@types/node": "^22.13.11",
27
27
  "mocha": "^10.7.3",
28
- "typescript": "^5.6.2"
28
+ "typescript": "^5.8.2"
29
29
  }
30
30
  }
@@ -0,0 +1,26 @@
1
+ import Listener from "./listener.js";
2
+
3
+ export default class AsyncListener<T> extends Listener<Promise<T>> {
4
+ private promiseResolve?: (value: T) => void;
5
+
6
+ constructor(start: () => void, stop: () => void) {
7
+ let promiseResolve;
8
+ super(new Promise<T>(resolve => {
9
+ promiseResolve = resolve;
10
+ }), start, stop);
11
+ this.promiseResolve = promiseResolve;
12
+ }
13
+
14
+ public set value(_value: Promise<T>) {
15
+ if (this.promiseResolve) {
16
+ _value.then(this.promiseResolve);
17
+ this.promiseResolve = undefined;
18
+ this._value = _value; // prevent invalidate
19
+ }
20
+ super.value = _value;
21
+ }
22
+
23
+ public get value(): Promise<T> {
24
+ return super.value!;
25
+ }
26
+ }
package/src/index.ts CHANGED
@@ -4,4 +4,5 @@ export { default as Watcher } from './watcher.js';
4
4
  export { default as Dependency } from './dependency.js';
5
5
  export { default as Dependent } from './dependent.js';
6
6
  export { default as Listener } from './listener.js';
7
+ export { default as AsyncListener } from './asyncListener.js';
7
8
  export { default as defaultIsEqual } from './defaultIsEqual.js';
@@ -0,0 +1,8 @@
1
+ import Listener from "./listener.js";
2
+ export default class AsyncListener<T> extends Listener<Promise<T>> {
3
+ private promiseResolve?;
4
+ constructor(start: () => void, stop: () => void);
5
+ set value(_value: Promise<T>);
6
+ get value(): Promise<T>;
7
+ }
8
+ //# sourceMappingURL=asyncListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncListener.d.ts","sourceRoot":"","sources":["../src/asyncListener.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,cAAc,CAAC,CAAqB;gBAEhC,KAAK,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI;IAQ/C,IAAW,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAOlC;IAED,IAAW,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAE7B;CACJ"}
package/types/index.d.ts CHANGED
@@ -4,5 +4,6 @@ export { default as Watcher } from './watcher.js';
4
4
  export { default as Dependency } from './dependency.js';
5
5
  export { default as Dependent } from './dependent.js';
6
6
  export { default as Listener } from './listener.js';
7
+ export { default as AsyncListener } from './asyncListener.js';
7
8
  export { default as defaultIsEqual } from './defaultIsEqual.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import Listener from "./listener.js";
2
+ export default class AsyncListener<T> extends Listener<Promise<T>> {
3
+ private promiseResolve?;
4
+ constructor(start: () => void, stop: () => void);
5
+ set value(_value: Promise<T>);
6
+ get value(): Promise<T>;
7
+ }
8
+ //# sourceMappingURL=syncListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncListener.d.ts","sourceRoot":"","sources":["../src/syncListener.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,cAAc,CAAC,CAAqB;gBAEhC,KAAK,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI;IAQ/C,IAAW,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAOlC;IAED,IAAW,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAE7B;CACJ"}