function saveDependencyMapToStore()

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);
    }
  }
}