All files / utils storage.ts

0% Statements 0/18
0% Branches 0/6
0% Functions 0/5
0% Lines 0/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30                                                           
import type { StorageAccessor } from "@/types/storage";
 
function makeStorageAccessor(getStorage: () => Storage): StorageAccessor {
  return {
    read(key: string): string | null {
      if (typeof window === "undefined") return null;
      try {
        return getStorage().getItem(key);
      } catch {
        return null;
      }
    },
    write(key: string, value: string | null) {
      if (typeof window === "undefined") return;
      try {
        if (value !== null) {
          getStorage().setItem(key, value);
        } else {
          getStorage().removeItem(key);
        }
      } catch {
        // Ignore storage failures.
      }
    },
  };
}
 
export const local = makeStorageAccessor(() => window.localStorage);
export const session = makeStorageAccessor(() => window.sessionStorage);