UNPKG

@stainless-code/persist

Version:

Hydration-aware persistence for any reactive store — zero-dep persistSource core; codecs, backends, cross-tab transport, source + framework hydration adapters ship as opt-in recipes

28 lines (27 loc) • 885 B
import { o as createStorage } from "../persist-core-B5VikEft.mjs"; import { fromJSON, toJSON } from "seroval"; //#region src/adapters/codecs/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 };