async-reactivity 2.0.22 → 2.0.23
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 +3 -1
- package/lib/computed.test.js +16 -0
- package/package.json +1 -1
- package/src/computed.test.ts +18 -0
- package/src/computed.ts +3 -1
- package/types/computed.d.ts.map +1 -1
package/lib/computed.js
CHANGED
|
@@ -139,7 +139,9 @@ export default class Computed extends Tracker {
|
|
|
139
139
|
}
|
|
140
140
|
forceInvalidate() {
|
|
141
141
|
this.invalidate();
|
|
142
|
-
this.state
|
|
142
|
+
if (this.state !== ComputedState.Computing) {
|
|
143
|
+
this.state = ComputedState.Invalid;
|
|
144
|
+
}
|
|
143
145
|
}
|
|
144
146
|
validate(dependency) {
|
|
145
147
|
this.dependencies.set(dependency, false);
|
package/lib/computed.test.js
CHANGED
|
@@ -130,6 +130,22 @@ describe('computed', function () {
|
|
|
130
130
|
assert.strictEqual(c.value, 6);
|
|
131
131
|
assert.strictEqual(gate, 2);
|
|
132
132
|
});
|
|
133
|
+
it('compute and abort when forced', async function () {
|
|
134
|
+
let gate = 0;
|
|
135
|
+
const b = new Computed(async (_value, _previousValue, abortSignal) => {
|
|
136
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
137
|
+
if (abortSignal.aborted) {
|
|
138
|
+
gate++;
|
|
139
|
+
throw new Error();
|
|
140
|
+
}
|
|
141
|
+
return 5;
|
|
142
|
+
});
|
|
143
|
+
const v = b.value;
|
|
144
|
+
await new Promise(resolve => setTimeout(resolve, 5));
|
|
145
|
+
b.forceInvalidate();
|
|
146
|
+
assert.strictEqual(await v, 5);
|
|
147
|
+
assert.strictEqual(gate, 1);
|
|
148
|
+
});
|
|
133
149
|
it('isEqual', function () {
|
|
134
150
|
const a = new Ref(1);
|
|
135
151
|
const b = new Computed((value) => {
|
package/package.json
CHANGED
package/src/computed.test.ts
CHANGED
|
@@ -153,6 +153,24 @@ describe('computed', function () {
|
|
|
153
153
|
assert.strictEqual(gate, 2);
|
|
154
154
|
});
|
|
155
155
|
|
|
156
|
+
it('compute and abort when forced', async function () {
|
|
157
|
+
let gate = 0;
|
|
158
|
+
const b = new Computed(async (_value, _previousValue, abortSignal) => {
|
|
159
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
160
|
+
if (abortSignal.aborted) {
|
|
161
|
+
gate++;
|
|
162
|
+
throw new Error();
|
|
163
|
+
}
|
|
164
|
+
return 5;
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
const v = b.value;
|
|
168
|
+
await new Promise(resolve => setTimeout(resolve, 5));
|
|
169
|
+
b.forceInvalidate();
|
|
170
|
+
assert.strictEqual(await v, 5);
|
|
171
|
+
assert.strictEqual(gate, 1);
|
|
172
|
+
});
|
|
173
|
+
|
|
156
174
|
it('isEqual', function() {
|
|
157
175
|
const a = new Ref(1);
|
|
158
176
|
const b = new Computed((value) => {
|
package/src/computed.ts
CHANGED
|
@@ -157,7 +157,9 @@ export default class Computed<T> extends Tracker<T> implements Dependent, Depend
|
|
|
157
157
|
|
|
158
158
|
public forceInvalidate() {
|
|
159
159
|
this.invalidate();
|
|
160
|
-
this.state
|
|
160
|
+
if (this.state !== ComputedState.Computing) {
|
|
161
|
+
this.state = ComputedState.Invalid;
|
|
162
|
+
}
|
|
161
163
|
}
|
|
162
164
|
|
|
163
165
|
public validate(dependency: Dependency<any>) {
|
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;AACvC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAIjD,MAAM,CAAC,OAAO,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrE,MAAM,CAAC,OAAO,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,GAAG,SAAS,EAAE,WAAW,EAAE,WAAW,KAAK,CAAC,CAAC;AACtH,MAAM,CAAC,OAAO,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,WAAW,KAAK,EAAE,CAAC;AAW9I,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,EAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,qBAAqB,CAAC,CAA0C;IACxE,OAAO,CAAC,yBAAyB,CAAC,CAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,4BAAoB,EAAE,UAAU,CAAC,EAAE,MAAM;IAepF,OAAO,CAAC,qBAAqB;IAS7B,IAAW,KAAK,IAAI,CAAC,CAMpB;IAED,OAAO,CAAC,OAAO;IA6Cf,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;IAOlB,UAAU;IAUV,eAAe;
|
|
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;AACnC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAIjD,MAAM,CAAC,OAAO,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrE,MAAM,CAAC,OAAO,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,GAAG,SAAS,EAAE,WAAW,EAAE,WAAW,KAAK,CAAC,CAAC;AACtH,MAAM,CAAC,OAAO,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,WAAW,KAAK,EAAE,CAAC;AAW9I,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,EAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,qBAAqB,CAAC,CAA0C;IACxE,OAAO,CAAC,yBAAyB,CAAC,CAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,4BAAoB,EAAE,UAAU,CAAC,EAAE,MAAM;IAepF,OAAO,CAAC,qBAAqB;IAS7B,IAAW,KAAK,IAAI,CAAC,CAMpB;IAED,OAAO,CAAC,OAAO;IA6Cf,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;IAOlB,UAAU;IAUV,eAAe;IAOf,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC;IAI3C,OAAO,CAAC,kBAAkB;IAMnB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,gBAAoB,GAAG,IAAI;IAKxE,KAAK;IAQL,OAAO;CAGjB"}
|