UNPKG

@stainless-code/persist

Version:

Hydration-aware persistence middleware for reactive stores (storage × codec seams, TanStack Store adapters, React hydration hook)

28 lines (27 loc) 876 B
import { r as createStorage } from "./persist-core-BApUcOkB.mjs"; import { fromJSON, toJSON } from "seroval"; //#region src/persist-seroval.ts /** * Seroval codec — round-trips `Set` / `Map` / `Date`. The `toJSON` / * `fromJSON` envelope keeps the payload JSON-serializable. */ const serovalCodec = () => ({ encode: (value) => JSON.stringify(toJSON(value)), decode: (raw) => fromJSON(JSON.parse(raw)) }); /** * Build a seroval-encoded `PersistStorage` (round-trips `Set`/`Map`/`Date`). * * @example * ```ts * // any string-keyed Storage works: localStorage, sessionStorage, custom * const storage = createSerovalStorage<Prefs>(() => localStorage, { * clearCorruptOnFailure: true, * }); * ``` */ function createSerovalStorage(getStorage, options) { return createStorage(getStorage, serovalCodec(), options); } //#endregion export { createSerovalStorage, serovalCodec };