in packages/recoil/core/Recoil_Graph.js [96:136]
function saveDependencyMapToStore(
dependencyMap: DependencyMap,
store: Store,
version: StateID,
): void {
const storeState = store.getState();
if (
!(
version === storeState.currentTree.version ||
version === storeState.nextTree?.version ||
version === storeState.previousTree?.version
)
) {
recoverableViolation(
'Tried to save dependencies to a discarded tree',
'recoil',
);
}
// Merge the dependencies discovered into the store's dependency map
// for the version that was read:
const graph = store.getGraph(version);
mergeDependencyMapIntoGraph(dependencyMap, graph);
// If this version is not the latest version, also write these dependencies
// into later versions if they don't already have their own:
if (version === storeState.previousTree?.version) {
const currentGraph = store.getGraph(storeState.currentTree.version);
mergeDependencyMapIntoGraph(dependencyMap, currentGraph, graph);
}
if (
version === storeState.previousTree?.version ||
version === storeState.currentTree.version
) {
const nextVersion = storeState.nextTree?.version;
if (nextVersion !== undefined) {
const nextGraph = store.getGraph(nextVersion);
mergeDependencyMapIntoGraph(dependencyMap, nextGraph, graph);
}
}
}