- Document migration approach in ZUSTAND_MIGRATION_STRATEGY.md - Add persistWithMigration utility for future stores - Add version and migrate to authStore, library, ui, cartStore, playerStore
30 lines
710 B
TypeScript
30 lines
710 B
TypeScript
/**
|
|
* Helper to create persist config with version and migrate.
|
|
* Use when adding new persisted stores to ensure future schema changes are handled.
|
|
*
|
|
* @example
|
|
* ```ts
|
|
* persist(
|
|
* (set) => ({ ... }),
|
|
* persistWithMigration('my-storage', 1, (state, version) => state ?? defaultState)
|
|
* )
|
|
* ```
|
|
*/
|
|
export function persistWithMigration<T>(
|
|
name: string,
|
|
version: number,
|
|
migrate: (state: unknown, version: number) => T,
|
|
partialize?: (state: T) => Partial<T>,
|
|
): {
|
|
name: string;
|
|
version: number;
|
|
migrate: (state: unknown, version: number) => T;
|
|
partialize?: (state: T) => Partial<T>;
|
|
} {
|
|
return {
|
|
name,
|
|
version,
|
|
migrate,
|
|
...(partialize && { partialize }),
|
|
};
|
|
}
|