| name | persist-seroval |
| description | Persist Set/Map/Date (and richer graphs) with @stainless-code/persist/codecs/seroval (serovalCodec / createSerovalStorage). Use when JSON.stringify would lose types on string-wire backends. |
| license | MIT |
| metadata | {"type":"composition","library":"@stainless-code/persist","library_version":"0.4.1","framework":"seroval"} |
| requires | ["persist"] |
| sources | ["stainless-code/persist:src/adapters/codecs/seroval.ts"] |
Seroval codec
@stainless-code/persist/codecs/seroval round-trips values JSON cannot (Set/Map/Date) via seroval toJSON/fromJSON on string-wire backends (localStorage, etc.).
Install
bun add @stainless-code/persist seroval
Peer: seroval >=1.0.0 (optional of this subpath).
Minimal wiring
import { createSerovalStorage } from "@stainless-code/persist/codecs/seroval";
const storage = createSerovalStorage<Prefs>(() => localStorage, {
clearCorruptOnFailure: true,
});
Or createStorage(getStorage, serovalCodec(), opts).
Common mistakes
- Using
createJSONStorage for Set/Map/Date — they won't round-trip.
- Layering seroval on default IDB —
persist-idb already uses structured clone / identityCodec.
- Forgetting the
seroval peer.
API surface
serovalCodec<S>() → StorageCodec<S>
createSerovalStorage(getStorage, options?) → PersistStorage | undefined
See also: persist-idb for structured-clone without seroval.