UNPKG

@renegade-fi/core

Version:
36 lines (32 loc) 1.31 kB
import type { Config, State } from "../createConfig.js"; import type { BaseStorage } from "../createStorage.js"; import { deserialize } from "./deserialize.js"; export const cookieStorage = { getItem(key) { if (typeof window === "undefined") return null; const value = parseCookie(document.cookie, key); return value ?? null; }, setItem(key, value) { if (typeof window === "undefined") return; // biome-ignore lint/suspicious/noDocumentCookie: from wagmi document.cookie = `${key}=${value}`; }, removeItem(key) { if (typeof window === "undefined") return; // biome-ignore lint/suspicious/noDocumentCookie: from wagmi document.cookie = `${key}=;max-age=-1`; }, } satisfies BaseStorage; export function cookieToInitialState(config: Config, cookie?: string | null) { if (!cookie) return undefined; const key = `${config.storage?.key}.store`; const parsed = parseCookie(cookie, key); if (!parsed) return undefined; return deserialize<{ state: State }>(parsed).state; } export function parseCookie(cookie: string, key: string) { const keyValue = cookie.split("; ").find((x) => x.startsWith(`${key}=`)); if (!keyValue) return undefined; return keyValue.substring(key.length + 1); }