UNPKG

redux-persist

Version:

persist and rehydrate redux stores

45 lines (38 loc) 1.72 kB
'use strict'; exports.__esModule = true; exports.default = createMigrate; var _constants = require('./constants'); function createMigrate(migrations, config) { var _ref = config || {}, debug = _ref.debug; return function (state, currentVersion) { if (!state) { if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist: no inbound state, skipping migration'); return Promise.resolve(undefined); } var inboundVersion = state._persist && state._persist.version !== undefined ? state._persist.version : _constants.DEFAULT_VERSION; if (inboundVersion === currentVersion) { if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist: versions match, noop migration'); return Promise.resolve(state); } if (inboundVersion > currentVersion) { if (process.env.NODE_ENV !== 'production') console.error('redux-persist: downgrading version is not supported'); return Promise.resolve(state); } var migrationKeys = Object.keys(migrations).map(function (ver) { return parseInt(ver); }).filter(function (key) { return currentVersion >= key && key > inboundVersion; }).sort(); if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist: migrationKeys', migrationKeys); try { var migratedState = migrationKeys.reduce(function (state, versionKey) { if (process.env.NODE_ENV !== 'production' && debug) console.log('redux-persist: running migration for versionKey', versionKey); return migrations[versionKey](state); }, state); return Promise.resolve(migratedState); } catch (err) { return Promise.reject(err); } }; }