import { writable, type Writable } from "svelte/store"; import { browser } from "$app/environment"; export const persistentStore = (key: string, initial: T): Writable => { const store = writable(initial); if (browser) import("localforage").then(async (localforage) => { let hydrated = false; let pendingValue = initial; store.subscribe((value) => { pendingValue = value; if (hydrated) localforage.default.setItem(key, value); }); const value = await localforage.default.getItem(key); if (value !== null) store.set(value); hydrated = true; await localforage.default.setItem(key, pendingValue); }); return store; };