import { create } from "zustand"; import type { StateCreator } from "zustand"; import { persist } from "zustand/middleware"; import type { PersistOptions } from "zustand/middleware"; export interface PersistConfig { name: string; version?: number; partialize?: PersistOptions>["partialize"]; merge?: PersistOptions>["merge"]; } /** * Factory function to create a Zustand store with persistence middleware * Reduces boilerplate for stores that need automatic data persistence */ export function createPersistentStore( initializer: StateCreator, config: PersistConfig, ) { const persistConfig: PersistOptions> = { name: config.name, ...(config.version !== undefined && { version: config.version }), ...(config.merge && { merge: config.merge }), ...(config.partialize && { partialize: config.partialize }), }; return create()(persist(initializer, persistConfig)); }