AndrewWalsh/react-persist-store

View on GitHub
src/create-namespaced-store.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import store2, { StoreBase } from "store2";

import type { Options } from "./types";

/**
 * Creates a store2 instance
 * @param {string} namespace A string that gets prepended by store2 to keys to avoid collisions
 * @param {Options["storage"]} storage The type of browser storage engine to user
 * @returns A configured store2 instance with a namespace and storage engine
 */
const createNamespacedStore = (
  namespace: string,
  storage: Options["storage"]
) => {
  const namespacedStore = store2.namespace(namespace);
  let baseStore: StoreBase;
  if (storage === "session") {
    baseStore = namespacedStore.session;
  } else if (storage === "local") {
    baseStore = namespacedStore.local;
  } else {
    baseStore = namespacedStore.page;
  }
  return baseStore;
};

export default createNamespacedStore;