async-reactivity 2.0.5 → 2.0.6
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/lib/computed.js +4 -0
- package/lib/computed.test.js +16 -0
- package/package.json +1 -1
- package/src/computed.test.ts +19 -0
- package/src/computed.ts +5 -1
- package/types/computed.d.ts +1 -0
- package/types/computed.d.ts.map +1 -1
package/lib/computed.js
CHANGED
|
@@ -118,6 +118,10 @@ export default class Computed extends Tracker {
|
|
|
118
118
|
super.invalidate();
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
+
forceInvalidate() {
|
|
122
|
+
this.invalidate();
|
|
123
|
+
this.state = ComputedState.Invalid;
|
|
124
|
+
}
|
|
121
125
|
validate(dependency) {
|
|
122
126
|
this.dependencies.set(dependency, false);
|
|
123
127
|
}
|
package/lib/computed.test.js
CHANGED
|
@@ -114,6 +114,22 @@ describe('computed', function () {
|
|
|
114
114
|
assert.strictEqual(c.value, 6);
|
|
115
115
|
assert.strictEqual(gate, 1);
|
|
116
116
|
});
|
|
117
|
+
it('compute when forced', function () {
|
|
118
|
+
let gate = 0;
|
|
119
|
+
const a = new Ref(5);
|
|
120
|
+
const b = new Computed((value) => {
|
|
121
|
+
return value(a) % 2;
|
|
122
|
+
});
|
|
123
|
+
const c = new Computed((value) => {
|
|
124
|
+
gate++;
|
|
125
|
+
return value(b) + 5;
|
|
126
|
+
});
|
|
127
|
+
assert.strictEqual(c.value, 6);
|
|
128
|
+
assert.strictEqual(gate, 1);
|
|
129
|
+
c.forceInvalidate();
|
|
130
|
+
assert.strictEqual(c.value, 6);
|
|
131
|
+
assert.strictEqual(gate, 2);
|
|
132
|
+
});
|
|
117
133
|
});
|
|
118
134
|
describe('async computed', function () {
|
|
119
135
|
it('getter', async function () {
|
package/package.json
CHANGED
package/src/computed.test.ts
CHANGED
|
@@ -133,6 +133,25 @@ describe('computed', function () {
|
|
|
133
133
|
assert.strictEqual(c.value, 6);
|
|
134
134
|
assert.strictEqual(gate, 1);
|
|
135
135
|
});
|
|
136
|
+
|
|
137
|
+
it('compute when forced', function () {
|
|
138
|
+
let gate = 0;
|
|
139
|
+
const a = new Ref(5);
|
|
140
|
+
const b = new Computed((value) => {
|
|
141
|
+
return value(a) % 2;
|
|
142
|
+
});
|
|
143
|
+
const c = new Computed((value) => {
|
|
144
|
+
gate++;
|
|
145
|
+
return value(b) + 5;
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
assert.strictEqual(c.value, 6);
|
|
149
|
+
assert.strictEqual(gate, 1);
|
|
150
|
+
|
|
151
|
+
c.forceInvalidate();
|
|
152
|
+
assert.strictEqual(c.value, 6);
|
|
153
|
+
assert.strictEqual(gate, 2);
|
|
154
|
+
});
|
|
136
155
|
});
|
|
137
156
|
|
|
138
157
|
describe('async computed', function () {
|
package/src/computed.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import Dependency from "./dependency.js";
|
|
2
2
|
import Dependent from "./dependent.js";
|
|
3
|
-
import Ref from "./ref.js";
|
|
4
3
|
import Tracker from "./tracker.js";
|
|
5
4
|
|
|
6
5
|
declare type TrackValue = <T>(dependency: Dependency<T>) => T;
|
|
@@ -137,6 +136,11 @@ export default class Computed<T> extends Tracker<T> implements Dependent, Depend
|
|
|
137
136
|
}
|
|
138
137
|
}
|
|
139
138
|
|
|
139
|
+
public forceInvalidate() {
|
|
140
|
+
this.invalidate();
|
|
141
|
+
this.state = ComputedState.Invalid;
|
|
142
|
+
}
|
|
143
|
+
|
|
140
144
|
public validate(dependency: Dependency<any>) {
|
|
141
145
|
this.dependencies.set(dependency, false);
|
|
142
146
|
}
|
package/types/computed.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export default class Computed<T> extends Tracker<T> implements Dependent, Depend
|
|
|
22
22
|
private trackDependency;
|
|
23
23
|
private finalizeComputing;
|
|
24
24
|
invalidate(): void;
|
|
25
|
+
forceInvalidate(): void;
|
|
25
26
|
validate(dependency: Dependency<any>): void;
|
|
26
27
|
private validateDependents;
|
|
27
28
|
dispose(): void;
|
package/types/computed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../src/computed.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,SAAS,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../src/computed.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9D,MAAM,CAAC,OAAO,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,CAAC,CAAC;AAC9D,MAAM,CAAC,OAAO,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;AAWrF,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAE,YAAW,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAAC,CAAI;IAC3B,OAAO,CAAC,qBAAqB,CAAC,CAA0C;IACxE,OAAO,CAAC,yBAAyB,CAAC,CAAgB;gBAEtC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAMlC,OAAO,CAAC,qBAAqB;IAS7B,IAAW,KAAK,IAAI,CAAC,CAMpB;IAED,OAAO,CAAC,OAAO;IA0Cf,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,eAAe,CAAwC;IAE/D,OAAO,CAAC,iBAAiB;IAMlB,UAAU;IAUV,eAAe;IAKf,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC;IAI3C,OAAO,CAAC,kBAAkB;IAMnB,OAAO;CAOjB"}
|