mirror of
https://github.com/pmndrs/zustand.git
synced 2025-12-08 19:45:52 +00:00
fix(persist): fix async migrate on persist middleware (#2877)
* fix(perist): add support for async migrate on persist middleware * feat(vitest): rename vitest.config.ts to vitest.config.mts * fix: fix minor issues * fix: fix minor issues * feat: minor changes * feat: revert vitest changes --------- Co-authored-by: Daishi Kato <dai-shi@users.noreply.github.com>
This commit is contained in:
parent
af7ff21190
commit
9bae06922a
@ -258,13 +258,14 @@ const persistImpl: PersistImpl = (config, baseOptions) => (set, get, api) => {
|
||||
deserializedStorageValue.version !== options.version
|
||||
) {
|
||||
if (options.migrate) {
|
||||
return [
|
||||
true,
|
||||
options.migrate(
|
||||
deserializedStorageValue.state,
|
||||
deserializedStorageValue.version,
|
||||
),
|
||||
] as const
|
||||
const migration = options.migrate(
|
||||
deserializedStorageValue.state,
|
||||
deserializedStorageValue.version,
|
||||
)
|
||||
if (migration instanceof Promise) {
|
||||
return migration.then((result) => [true, result] as const)
|
||||
}
|
||||
return [true, migration] as const
|
||||
}
|
||||
console.error(
|
||||
`State loaded from storage couldn't be migrated since no migrate function was provided`,
|
||||
|
||||
@ -193,10 +193,10 @@ describe('persist middleware with async configuration', () => {
|
||||
})
|
||||
})
|
||||
|
||||
it('can migrate persisted state', async () => {
|
||||
it('can async migrate persisted state', async () => {
|
||||
const setItemSpy = vi.fn()
|
||||
const onRehydrateStorageSpy = vi.fn()
|
||||
const migrateSpy = vi.fn(() => ({ count: 99 }))
|
||||
const migrateSpy = vi.fn(() => Promise.resolve({ count: 99 }))
|
||||
|
||||
const storage = {
|
||||
getItem: async () =>
|
||||
|
||||
@ -131,7 +131,7 @@ describe('persist middleware with sync configuration', () => {
|
||||
expect(onRehydrateStorageSpy2).toBeCalledWith({ count: 42 }, undefined)
|
||||
})
|
||||
|
||||
it('can migrate persisted state', () => {
|
||||
it('can non-async migrate persisted state', () => {
|
||||
const setItemSpy = vi.fn()
|
||||
const onRehydrateStorageSpy = vi.fn()
|
||||
const migrateSpy = vi.fn(() => ({ count: 99 }))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user