@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
27 lines (26 loc) • 877 B
JavaScript
import { l as persistSource } from "../persist-core-B5VikEft.mjs";
//#region src/adapters/sources/zustand.ts
/**
* Persist a zustand store. zustand's `getState`/`setState`/`subscribe` map
* directly to `PersistableSource`.
*
* @example
* ```ts
* import { create } from "zustand";
* import { createJSONStorage } from "@stainless-code/persist";
* import { persistStore } from "@stainless-code/persist/sources/zustand";
* const store = create(() => ({ count: 0 }));
* const persist = persistStore(store, { name: "count", storage: createJSONStorage(() => localStorage) });
* ```
*/
function persistStore(store, options) {
return persistSource({
getState: () => store.getState(),
setState: (updater) => store.setState(updater),
subscribe: (listener) => {
return { unsubscribe: store.subscribe(() => listener()) };
}
}, options);
}
//#endregion
export { persistStore };