import { browser } from '$app/environment'; import { writable, type Writable } from 'svelte/store'; export function cachedStore>( id: string, callback: (store: Writable) => TMethods ): TMethods & Writable { const store = writable(browser ? JSON.parse(sessionStorage.getItem(id)) : null); if (browser) { store.subscribe((n) => sessionStorage?.setItem(id, JSON.stringify(n ?? ''))); } return { subscribe: store.subscribe, set: store.set, update: store.update, ...callback(store) }; }