valdres 1.0.0-beta.15 → 1.0.0-beta.16
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/index.js +21 -4
- package/dist/types/types/StoreData.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -749,7 +749,7 @@ var evaluateSelector = (selector, data, initializedAtomsSet, circularDependencyS
|
|
|
749
749
|
const prevCtx = latestEvalContext.get(selector);
|
|
750
750
|
if (prevCtx)
|
|
751
751
|
prevCtx.revoked = true;
|
|
752
|
-
const evalCtx = { revoked: false };
|
|
752
|
+
const evalCtx = { revoked: false, preserveSignalOnRevoke: false };
|
|
753
753
|
latestEvalContext.set(selector, evalCtx);
|
|
754
754
|
if (circularDependencySet.has(selector)) {
|
|
755
755
|
throw new SelectorCircularDependencyError;
|
|
@@ -774,7 +774,9 @@ var evaluateSelector = (selector, data, initializedAtomsSet, circularDependencyS
|
|
|
774
774
|
if (!controller) {
|
|
775
775
|
controller = new AbortController;
|
|
776
776
|
if (myEvalCtx.revoked) {
|
|
777
|
-
|
|
777
|
+
if (!myEvalCtx.preserveSignalOnRevoke) {
|
|
778
|
+
controller.abort();
|
|
779
|
+
}
|
|
778
780
|
} else {
|
|
779
781
|
data.abortControllers.set(selector, controller);
|
|
780
782
|
}
|
|
@@ -878,7 +880,10 @@ var handleSelectorResult = (value, selector, data) => {
|
|
|
878
880
|
if (value instanceof SuspendAndWaitForResolveError) {
|
|
879
881
|
data.abortControllers.delete(selector);
|
|
880
882
|
const promise = value.promise;
|
|
883
|
+
const evaluationContext = data.latestEvalContext.get(selector);
|
|
881
884
|
promise.then(() => {
|
|
885
|
+
if (!evaluationContext || evaluationContext.revoked || data.latestEvalContext.get(selector) !== evaluationContext)
|
|
886
|
+
return;
|
|
882
887
|
if (!data.stateDependencies.has(selector))
|
|
883
888
|
return;
|
|
884
889
|
if (data.values.has(selector) && data.values.get(selector) !== promise)
|
|
@@ -896,7 +901,12 @@ var handleSelectorResult = (value, selector, data) => {
|
|
|
896
901
|
});
|
|
897
902
|
return promise;
|
|
898
903
|
} else if (isPromiseLike(value)) {
|
|
904
|
+
const evaluationContext = data.latestEvalContext.get(selector);
|
|
899
905
|
value.then((resolved) => {
|
|
906
|
+
if (!evaluationContext || evaluationContext.revoked || data.latestEvalContext.get(selector) !== evaluationContext) {
|
|
907
|
+
pendingAsyncDeps.delete(value);
|
|
908
|
+
return;
|
|
909
|
+
}
|
|
900
910
|
if (!data.stateDependencies.has(selector)) {
|
|
901
911
|
pendingAsyncDeps.delete(value);
|
|
902
912
|
return;
|
|
@@ -2131,6 +2141,13 @@ var cleanupOrphanedDeps = (state, data) => {
|
|
|
2131
2141
|
const dependents = data.stateDependents.get(current);
|
|
2132
2142
|
const deps = data.stateDependencies.get(current);
|
|
2133
2143
|
if (deps) {
|
|
2144
|
+
const selector = current;
|
|
2145
|
+
const evaluationContext = data.latestEvalContext.get(selector);
|
|
2146
|
+
if (evaluationContext) {
|
|
2147
|
+
evaluationContext.preserveSignalOnRevoke = true;
|
|
2148
|
+
evaluationContext.revoked = true;
|
|
2149
|
+
}
|
|
2150
|
+
data.latestEvalContext.delete(selector);
|
|
2134
2151
|
for (const dep of deps) {
|
|
2135
2152
|
data.stateDependents.get(dep)?.delete(current);
|
|
2136
2153
|
}
|
|
@@ -4220,9 +4237,9 @@ var isFamilySelector = (state) => isFamilyState(state) && isSelector(state);
|
|
|
4220
4237
|
// src/index.ts
|
|
4221
4238
|
var slot = valdresGlobal();
|
|
4222
4239
|
if (slot.version) {
|
|
4223
|
-
throw new Error(`Error! An instance of valdres is already loaded. Loaded: ${slot.version}. Attempted to load: ${"1.0.0-beta.
|
|
4240
|
+
throw new Error(`Error! An instance of valdres is already loaded. Loaded: ${slot.version}. Attempted to load: ${"1.0.0-beta.16"}`);
|
|
4224
4241
|
} else {
|
|
4225
|
-
slot.version = "1.0.0-beta.
|
|
4242
|
+
slot.version = "1.0.0-beta.16";
|
|
4226
4243
|
}
|
|
4227
4244
|
export {
|
|
4228
4245
|
store,
|
|
@@ -120,6 +120,7 @@ export type StoreData = {
|
|
|
120
120
|
* registration from store1's in-flight async eval. */
|
|
121
121
|
latestEvalContext: WeakMap<Selector, {
|
|
122
122
|
revoked: boolean;
|
|
123
|
+
preserveSignalOnRevoke: boolean;
|
|
123
124
|
}>;
|
|
124
125
|
/** Per-atom timestamp of the last value write, used for lazy
|
|
125
126
|
* maxAge revalidation when the atom is unmounted (no active timer
|
package/package.json
CHANGED