UNPKG

nedux-logger

Version:

the next redux state management

36 lines (27 loc) 908 B
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const PREFIX = '@nedux-persist'; const persistKeys = (keys, { storage = localStorage, version = '' } = {}) => store => { const getter = async key => JSON.parse((await Promise.resolve(storage.getItem(`${PREFIX}-${version}:${key}`)))); const setter = (key, value) => Promise.resolve(storage.setItem(`${PREFIX}-${version}:${key}`, JSON.stringify(value))); const persistKey = key => { let isHydrated = false; const next = async value => { if (isHydrated) { setter(key, value); } else { isHydrated = true; const persistedValue = await getter(key); persistedValue && store.set(key, persistedValue); } }; store.subscribe(key, next, { withInitialValue: true }); }; keys.forEach(key => persistKey(key)); }; exports.persistKeys = persistKeys;