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

26 lines (25 loc) • 1.17 kB
import { c as PersistOptions, o as PersistApi } from "../persist-core-B649IGlX.mjs"; import { Atom, WritableAtom } from "jotai"; //#region src/adapters/sources/jotai.d.ts /** jotai's Store type — structural to avoid importing internals. */ interface JotaiStore { get: <T>(atom: Atom<T>) => T; set: <T>(atom: WritableAtom<T, [T | ((prev: T) => T)], void>, value: T | ((prev: T) => T)) => void; sub: (atom: Atom<unknown>, listener: () => void) => () => void; } /** * Persist a writable jotai atom via a jotai `Store`. `get`/`set`/`sub` map * to `PersistableSource` for the atom's value. * * @example * ```ts * import { atom, createStore } from "jotai"; * import { persistAtom } from "@stainless-code/persist/sources/jotai"; * const countAtom = atom(0); * const store = createStore(); * const persist = persistAtom(store, countAtom, { name: "count" }); * ``` */ declare function persistAtom<TState, TPersistedState = TState>(store: JotaiStore, atom: WritableAtom<TState, [TState | ((prev: TState) => TState)], void>, options: PersistOptions<TState, TPersistedState>): PersistApi<TState, TPersistedState>; //#endregion export { JotaiStore, persistAtom };