You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1 lines
74 KiB

{"version":3,"file":"redux-persist.js","sources":["../src/constants.js","../src/stateReconciler/autoMergeLevel1.js","../src/createPersistoid.js","../src/getStoredState.js","../src/purgeStoredState.js","../src/persistReducer.js","../node_modules/symbol-observable/es/ponyfill.js","../node_modules/symbol-observable/es/index.js","../node_modules/redux/es/redux.js","../src/stateReconciler/autoMergeLevel2.js","../src/persistCombineReducers.js","../src/persistStore.js","../src/createMigrate.js","../src/createTransform.js"],"sourcesContent":["// @flow\n\nexport const KEY_PREFIX = 'persist:'\nexport const FLUSH = 'persist/FLUSH'\nexport const REHYDRATE = 'persist/REHYDRATE'\nexport const PAUSE = 'persist/PAUSE'\nexport const PERSIST = 'persist/PERSIST'\nexport const PURGE = 'persist/PURGE'\nexport const REGISTER = 'persist/REGISTER'\nexport const DEFAULT_VERSION = -1\n","// @flow\n\n/*\n autoMergeLevel1: \n - merges 1 level of substate\n - skips substate if already modified\n*/\n\nimport type { PersistConfig } from '../types'\n\nexport default function autoMergeLevel1<State: Object>(\n inboundState: State,\n originalState: State,\n reducedState: State,\n { debug }: PersistConfig\n): State {\n let newState = { ...reducedState }\n // only rehydrate if inboundState exists and is an object\n if (inboundState && typeof inboundState === 'object') {\n Object.keys(inboundState).forEach(key => {\n // ignore _persist data\n if (key === '_persist') return\n // if reducer modifies substate, skip auto rehydration\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug)\n console.log(\n 'redux-persist/stateReconciler: sub state for key `%s` modified, skipping.',\n key\n )\n return\n }\n // otherwise hard set the new value\n newState[key] = inboundState[key]\n })\n }\n\n if (\n process.env.NODE_ENV !== 'production' &&\n debug &&\n inboundState &&\n typeof inboundState === 'object'\n )\n console.log(\n `redux-persist/stateReconciler: rehydrated keys '${Object.keys(\n inboundState\n ).join(', ')}'`\n )\n\n return newState\n}\n","// @flow\n\nimport { KEY_PREFIX, REHYDRATE } from './constants'\n\nimport type { Persistoid, PersistConfig, Transform } from './types'\n\ntype IntervalID = any // @TODO remove once flow < 0.63 support is no longer required.\n\nexport default function createPersistoid(config: PersistConfig): Persistoid {\n // defaults\n const blacklist: ?Array<string> = config.blacklist || null\n const whitelist: ?Array<string> = config.whitelist || null\n const transforms = config.transforms || []\n const throttle = config.throttle || 0\n const storageKey = `${\n config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX\n }${config.key}`\n const storage = config.storage\n let serialize\n if (config.serialize === false) {\n serialize = x => x\n } else if (typeof config.serialize === 'function') {\n serialize = config.serialize\n } else {\n serialize = defaultSerialize\n }\n const writeFailHandler = config.writeFailHandler || null\n\n // initialize stateful values\n let lastState = {}\n let stagedState = {}\n let keysToProcess = []\n let timeIterator: ?IntervalID = null\n let writePromise = null\n\n const update = (state: Object) => {\n // add any changed keys to the queue\n Object.keys(state).forEach(key => {\n if (!passWhitelistBlacklist(key)) return // is keyspace ignored? noop\n if (lastState[key] === state[key]) return // value unchanged? noop\n if (keysToProcess.indexOf(key) !== -1) return // is key already queued? noop\n keysToProcess.push(key) // add key to queue\n })\n\n //if any key is missing in the new state which was present in the lastState,\n //add it for processing too\n Object.keys(lastState).forEach(key => {\n if (\n state[key] === undefined &&\n passWhitelistBlacklist(key) &&\n keysToProcess.indexOf(key) === -1 &&\n lastState[key] !== undefined\n ) {\n keysToProcess.push(key)\n }\n })\n\n // start the time iterator if not running (read: throttle)\n if (timeIterator === null) {\n timeIterator = setInterval(processNextKey, throttle)\n }\n\n lastState = state\n }\n\n function processNextKey() {\n if (keysToProcess.length === 0) {\n if (timeIterator) clearInterval(timeIterator)\n timeIterator = null\n return\n }\n\n let key = keysToProcess.shift()\n let endState = transforms.reduce((subState, transformer) => {\n return transformer.in(subState, key, lastState)\n }, lastState[key])\n\n if (endState !== undefined) {\n try {\n stagedState[key] = serialize(endState)\n } catch (err) {\n console.error(\n 'redux-persist/createPersistoid: error serializing state',\n err\n )\n }\n } else {\n //if the endState is undefined, no need to persist the existing serialized content\n delete stagedState[key]\n }\n\n if (keysToProcess.length === 0) {\n writeStagedState()\n }\n }\n\n function writeStagedState() {\n // cleanup any removed keys just before write.\n Object.keys(stagedState).forEach(key => {\n if (lastState[key] === undefined) {\n delete stagedState[key]\n }\n })\n\n writePromise = storage\n .setItem(storageKey, serialize(stagedState))\n .catch(onWriteFail)\n }\n\n function passWhitelistBlacklist(key) {\n if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist')\n return false\n if (blacklist && blacklist.indexOf(key) !== -1) return false\n return true\n }\n\n function onWriteFail(err) {\n // @TODO add fail handlers (typically storage full)\n if (writeFailHandler) writeFailHandler(err)\n if (err && process.env.NODE_ENV !== 'production') {\n console.error('Error storing data', err)\n }\n }\n\n const flush = () => {\n while (keysToProcess.length !== 0) {\n processNextKey()\n }\n return writePromise || Promise.resolve()\n }\n\n // return `persistoid`\n return {\n update,\n flush,\n }\n}\n\n// @NOTE in the future this may be exposed via config\nfunction defaultSerialize(data) {\n return JSON.stringify(data)\n}\n","// @flow\n\nimport type { PersistConfig } from './types'\n\nimport { KEY_PREFIX } from './constants'\n\nexport default function getStoredState(\n config: PersistConfig\n): Promise<Object | void> {\n const transforms = config.transforms || []\n const storageKey = `${\n config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX\n }${config.key}`\n const storage = config.storage\n const debug = config.debug\n let deserialize\n if (config.deserialize === false) {\n deserialize = x => x\n } else if (typeof config.deserialize === 'function') {\n deserialize = config.deserialize\n } else {\n deserialize = defaultDeserialize\n }\n return storage.getItem(storageKey).then(serialized => {\n if (!serialized) return undefined\n else {\n try {\n let state = {}\n let rawState = deserialize(serialized)\n Object.keys(rawState).forEach(key => {\n state[key] = transforms.reduceRight((subState, transformer) => {\n return transformer.out(subState, key, rawState)\n }, deserialize(rawState[key]))\n })\n return state\n } catch (err) {\n if (process.env.NODE_ENV !== 'production' && debug)\n console.log(\n `redux-persist/getStoredState: Error restoring data ${serialized}`,\n err\n )\n throw err\n }\n }\n })\n}\n\nfunction defaultDeserialize(serial) {\n return JSON.parse(serial)\n}\n","// @flow\n\nimport type { PersistConfig } from './types'\n\nimport { KEY_PREFIX } from './constants'\n\nexport default function purgeStoredState(config: PersistConfig) {\n const storage = config.storage\n const storageKey = `${\n config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX\n }${config.key}`\n return storage.removeItem(storageKey, warnIfRemoveError)\n}\n\nfunction warnIfRemoveError(err) {\n if (err && process.env.NODE_ENV !== 'production') {\n console.error(\n 'redux-persist/purgeStoredState: Error purging data stored state',\n err\n )\n }\n}\n","// @flow\nimport {\n FLUSH,\n PAUSE,\n PERSIST,\n PURGE,\n REHYDRATE,\n DEFAULT_VERSION,\n} from './constants'\n\nimport type {\n PersistConfig,\n MigrationManifest,\n PersistState,\n Persistoid,\n} from './types'\n\nimport autoMergeLevel1 from './stateReconciler/autoMergeLevel1'\nimport createPersistoid from './createPersistoid'\nimport defaultGetStoredState from './getStoredState'\nimport purgeStoredState from './purgeStoredState'\n\ntype PersistPartial = { _persist: PersistState }\nconst DEFAULT_TIMEOUT = 5000\n/*\n @TODO add validation / handling for:\n - persisting a reducer which has nested _persist\n - handling actions that fire before reydrate is called\n*/\nexport default function persistReducer<State: Object, Action: Object>(\n config: PersistConfig,\n baseReducer: (State, Action) => State\n): (State, Action) => State & PersistPartial {\n if (process.env.NODE_ENV !== 'production') {\n if (!config) throw new Error('config is required for persistReducer')\n if (!config.key) throw new Error('key is required in persistor config')\n if (!config.storage)\n throw new Error(\n \"redux-persist: config.storage is required. Try using one of the provided storage engines `import storage from 'redux-persist/lib/storage'`\"\n )\n }\n\n const version =\n config.version !== undefined ? config.version : DEFAULT_VERSION\n const debug = config.debug || false\n const stateReconciler =\n config.stateReconciler === undefined\n ? autoMergeLevel1\n : config.stateReconciler\n const getStoredState = config.getStoredState || defaultGetStoredState\n const timeout =\n config.timeout !== undefined ? config.timeout : DEFAULT_TIMEOUT\n let _persistoid = null\n let _purge = false\n let _paused = true\n const conditionalUpdate = state => {\n // update the persistoid only if we are rehydrated and not paused\n state._persist.rehydrated &&\n _persistoid &&\n !_paused &&\n _persistoid.update(state)\n return state\n }\n\n return (state: State, action: Action) => {\n let { _persist, ...rest } = state || {}\n // $FlowIgnore need to update State type\n let restState: State = rest\n\n if (action.type === PERSIST) {\n let _sealed = false\n let _rehydrate = (payload, err) => {\n // dev warning if we are already sealed\n if (process.env.NODE_ENV !== 'production' && _sealed)\n console.error(\n `redux-persist: rehydrate for \"${\n config.key\n }\" called after timeout.`,\n payload,\n err\n )\n\n // only rehydrate if we are not already sealed\n if (!_sealed) {\n action.rehydrate(config.key, payload, err)\n _sealed = true\n }\n }\n timeout &&\n setTimeout(() => {\n !_sealed &&\n _rehydrate(\n undefined,\n new Error(\n `redux-persist: persist timed out for persist key \"${\n config.key\n }\"`\n )\n )\n }, timeout)\n\n // @NOTE PERSIST resumes if paused.\n _paused = false\n\n // @NOTE only ever create persistoid once, ensure we call it at least once, even if _persist has already been set\n if (!_persistoid) _persistoid = createPersistoid(config)\n\n // @NOTE PERSIST can be called multiple times, noop after the first\n if (_persist) {\n // We still need to call the base reducer because there might be nested\n // uses of persistReducer which need to be aware of the PERSIST action\n return {\n ...baseReducer(restState, action),\n _persist,\n };\n }\n\n if (\n typeof action.rehydrate !== 'function' ||\n typeof action.register !== 'function'\n )\n throw new Error(\n 'redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.'\n )\n\n action.register(config.key)\n\n getStoredState(config).then(\n restoredState => {\n const migrate = config.migrate || ((s, v) => Promise.resolve(s))\n migrate(restoredState, version).then(\n migratedState => {\n _rehydrate(migratedState)\n },\n migrateErr => {\n if (process.env.NODE_ENV !== 'production' && migrateErr)\n console.error('redux-persist: migration error', migrateErr)\n _rehydrate(undefined, migrateErr)\n }\n )\n },\n err => {\n _rehydrate(undefined, err)\n }\n )\n\n return {\n ...baseReducer(restState, action),\n _persist: { version, rehydrated: false },\n }\n } else if (action.type === PURGE) {\n _purge = true\n action.result(purgeStoredState(config))\n return {\n ...baseReducer(restState, action),\n _persist,\n }\n } else if (action.type === FLUSH) {\n action.result(_persistoid && _persistoid.flush())\n return {\n ...baseReducer(restState, action),\n _persist,\n }\n } else if (action.type === PAUSE) {\n _paused = true\n } else if (action.type === REHYDRATE) {\n // noop on restState if purging\n if (_purge)\n return {\n ...restState,\n _persist: { ..._persist, rehydrated: true },\n }\n\n // @NOTE if key does not match, will continue to default else below\n if (action.key === config.key) {\n let reducedState = baseReducer(restState, action)\n let inboundState = action.payload\n // only reconcile state if stateReconciler and inboundState are both defined\n let reconciledRest: State =\n stateReconciler !== false && inboundState !== undefined\n ? stateReconciler(inboundState, state, reducedState, config)\n : reducedState\n\n let newState = {\n ...reconciledRest,\n _persist: { ..._persist, rehydrated: true },\n }\n return conditionalUpdate(newState)\n }\n }\n\n // if we have not already handled PERSIST, straight passthrough\n if (!_persist) return baseReducer(state, action)\n\n // run base reducer:\n // is state modified ? return original : return updated\n let newState = baseReducer(restState, action)\n if (newState === restState) return state\n return conditionalUpdate({ ...newState, _persist })\n }\n}\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","// @flow\n\n/*\n autoMergeLevel2: \n - merges 2 level of substate\n - skips substate if already modified\n - this is essentially redux-perist v4 behavior\n*/\n\nimport type { PersistConfig } from '../types'\n\nexport default function autoMergeLevel2<State: Object>(\n inboundState: State,\n originalState: State,\n reducedState: State,\n { debug }: PersistConfig\n): State {\n let newState = { ...reducedState }\n // only rehydrate if inboundState exists and is an object\n if (inboundState && typeof inboundState === 'object') {\n Object.keys(inboundState).forEach(key => {\n // ignore _persist data\n if (key === '_persist') return\n // if reducer modifies substate, skip auto rehydration\n if (originalState[key] !== reducedState[key]) {\n if (process.env.NODE_ENV !== 'production' && debug)\n console.log(\n 'redux-persist/stateReconciler: sub state for key `%s` modified, skipping.',\n key\n )\n return\n }\n if (isPlainEnoughObject(reducedState[key])) {\n // if object is plain enough shallow merge the new values (hence \"Level2\")\n newState[key] = { ...newState[key], ...inboundState[key] }\n return\n }\n // otherwise hard set\n newState[key] = inboundState[key]\n })\n }\n\n if (\n process.env.NODE_ENV !== 'production' &&\n debug &&\n inboundState &&\n typeof inboundState === 'object'\n )\n console.log(\n `redux-persist/stateReconciler: rehydrated keys '${Object.keys(\n inboundState\n ).join(', ')}'`\n )\n\n return newState\n}\n\nfunction isPlainEnoughObject(o) {\n return o !== null && !Array.isArray(o) && typeof o === 'object'\n}\n","// @flow\n\nimport { combineReducers } from 'redux'\nimport persistReducer from './persistReducer'\nimport autoMergeLevel2 from './stateReconciler/autoMergeLevel2'\n\nimport type { PersistConfig } from './types'\n\ntype Reducers = {\n [key: string]: Function,\n}\n\ntype Reducer = (state: Object, action: Object) => Object\n\n// combineReducers + persistReducer with stateReconciler defaulted to autoMergeLevel2\nexport default function persistCombineReducers(\n config: PersistConfig,\n reducers: Reducers\n): Reducer {\n config.stateReconciler =\n config.stateReconciler === undefined\n ? autoMergeLevel2\n : config.stateReconciler\n return persistReducer(config, combineReducers(reducers))\n}\n","// @flow\n\nimport type {\n Persistor,\n PersistConfig,\n PersistorOptions,\n PersistorState,\n MigrationManifest,\n RehydrateAction,\n RehydrateErrorType,\n} from './types'\n\nimport { createStore } from 'redux'\nimport { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from './constants'\n\ntype PendingRehydrate = [Object, RehydrateErrorType, PersistConfig]\ntype Persist = <R>(PersistConfig, MigrationManifest) => R => R\ntype CreatePersistor = Object => void\ntype BoostrappedCb = () => any\n\nconst initialState: PersistorState = {\n registry: [],\n bootstrapped: false,\n}\n\nconst persistorReducer = (state = initialState, action) => {\n switch (action.type) {\n case REGISTER:\n return { ...state, registry: [...state.registry, action.key] }\n case REHYDRATE:\n let firstIndex = state.registry.indexOf(action.key)\n let registry = [...state.registry]\n registry.splice(firstIndex, 1)\n return { ...state, registry, bootstrapped: registry.length === 0 }\n default:\n return state\n }\n}\n\nexport default function persistStore(\n store: Object,\n options?: ?PersistorOptions,\n cb?: BoostrappedCb\n): Persistor {\n // help catch incorrect usage of passing PersistConfig in as PersistorOptions\n if (process.env.NODE_ENV !== 'production') {\n let optionsToTest: Object = options || {}\n let bannedKeys = [\n 'blacklist',\n 'whitelist',\n 'transforms',\n 'storage',\n 'keyPrefix',\n 'migrate',\n ]\n bannedKeys.forEach(k => {\n if (!!optionsToTest[k])\n console.error(\n `redux-persist: invalid option passed to persistStore: \"${k}\". You may be incorrectly passing persistConfig into persistStore, whereas it should be passed into persistReducer.`\n )\n })\n }\n let boostrappedCb = cb || false\n\n let _pStore = createStore(\n persistorReducer,\n initialState,\n options && options.enhancer ? options.enhancer : undefined\n )\n let register = (key: string) => {\n _pStore.dispatch({\n type: REGISTER,\n key,\n })\n }\n\n let rehydrate = (key: string, payload: Object, err: any) => {\n let rehydrateAction = {\n type: REHYDRATE,\n payload,\n err,\n key,\n }\n // dispatch to `store` to rehydrate and `persistor` to track result\n store.dispatch(rehydrateAction)\n _pStore.dispatch(rehydrateAction)\n if (boostrappedCb && persistor.getState().bootstrapped) {\n boostrappedCb()\n boostrappedCb = false\n }\n }\n\n let persistor: Persistor = {\n ..._pStore,\n purge: () => {\n let results = []\n store.dispatch({\n type: PURGE,\n result: purgeResult => {\n results.push(purgeResult)\n },\n })\n return Promise.all(results)\n },\n flush: () => {\n let results = []\n store.dispatch({\n type: FLUSH,\n result: flushResult => {\n results.push(flushResult)\n },\n })\n return Promise.all(results)\n },\n pause: () => {\n store.dispatch({\n type: PAUSE,\n })\n },\n persist: () => {\n store.dispatch({ type: PERSIST, register, rehydrate })\n },\n }\n\n if (!(options && options.manualPersist)){\n persistor.persist()\n }\n\n return persistor\n}\n","// @flow\n\nimport { DEFAULT_VERSION } from './constants'\n\nimport type { PersistedState, MigrationManifest } from './types'\n\nexport default function createMigrate(\n migrations: MigrationManifest,\n config?: { debug: boolean }\n) {\n let { debug } = config || {}\n return function(\n state: PersistedState,\n currentVersion: number\n ): Promise<PersistedState> {\n if (!state) {\n if (process.env.NODE_ENV !== 'production' && debug)\n console.log('redux-persist: no inbound state, skipping migration')\n return Promise.resolve(undefined)\n }\n\n let inboundVersion: number =\n state._persist && state._persist.version !== undefined\n ? state._persist.version\n : DEFAULT_VERSION\n if (inboundVersion === currentVersion) {\n if (process.env.NODE_ENV !== 'production' && debug)\n console.log('redux-persist: versions match, noop migration')\n return Promise.resolve(state)\n }\n if (inboundVersion > currentVersion) {\n if (process.env.NODE_ENV !== 'production')\n console.error('redux-persist: downgrading version is not supported')\n return Promise.resolve(state)\n }\n\n let migrationKeys = Object.keys(migrations)\n .map(ver => parseInt(ver))\n .filter(key => currentVersion >= key && key > inboundVersion)\n .sort((a, b) => a - b)\n\n if (process.env.NODE_ENV !== 'production' && debug)\n console.log('redux-persist: migrationKeys', migrationKeys)\n try {\n let migratedState = migrationKeys.reduce((state, versionKey) => {\n if (process.env.NODE_ENV !== 'production' && debug)\n console.log(\n 'redux-persist: running migration for versionKey',\n versionKey\n )\n return migrations[versionKey](state)\n }, state)\n return Promise.resolve(migratedState)\n } catch (err) {\n return Promise.reject(err)\n }\n }\n}\n","// @flow\n\ntype TransformConfig = {\n whitelist?: Array<string>,\n blacklist?: Array<string>,\n}\n\nexport default function createTransform(\n // @NOTE inbound: transform state coming from redux on its way to being serialized and stored\n inbound: ?Function,\n // @NOTE outbound: transform state coming from storage, on its way to be rehydrated into redux\n outbound: ?Function,\n config: TransformConfig = {}\n) {\n let whitelist = config.whitelist || null\n let blacklist = config.blacklist || null\n\n function whitelistBlacklistCheck(key) {\n if (whitelist && whitelist.indexOf(key) === -1) return true\n if (blacklist && blacklist.indexOf(key) !== -1) return true\n return false\n }\n\n return {\n in: (state: Object, key: string, fullState: Object) =>\n !whitelistBlacklistCheck(key) && inbound\n ? inbound(state, key, fullState)\n : state,\n out: (state: Object, key: string, fullState: Object) =>\n !whitelistBlacklistCheck(key) && outbound\n ? outbound(state, key, fullState)\n : state,\n }\n}\n"],"names":["KEY_PREFIX","FLUSH","REHYDRATE","PAUSE","PERSIST","PURGE","REGISTER","DEFAULT_VERSION","autoMergeLevel1","inboundState","originalState","reducedState","debug","newState","Object","keys","forEach","key","process","console","log","join","createPersistoid","config","blacklist","whitelist","transforms","throttle","storageKey","keyPrefix","undefined","storage","serialize","x","defaultSerialize","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","update","state","passWhitelistBlacklist","indexOf","push","setInterval","processNextKey","length","clearInterval","shift","endState","reduce","subState","transformer","in","err","error","writeStagedState","setItem","catch","onWriteFail","flush","Promise","resolve","data","JSON","stringify","getStoredState","deserialize","defaultDeserialize","getItem","then","serialized","rawState","reduceRight","out","serial","parse","purgeStoredState","removeItem","warnIfRemoveError","DEFAULT_TIMEOUT","persistReducer","baseReducer","Error","version","stateReconciler","defaultGetStoredState","timeout","_persistoid","_purge","_paused","conditionalUpdate","_persist","rehydrated","action","rest","restState","type","_sealed","_rehydrate","payload","rehydrate","setTimeout","register","restoredState","migrate","s","v","migratedState","migrateErr","result","reconciledRest","ponyfill","$$observable","autoMergeLevel2","isPlainEnoughObject","o","Array","isArray","persistCombineReducers","reducers","combineReducers","initialState","registry","bootstrapped","persistorReducer","firstIndex","splice","persistStore","store","options","cb","optionsToTest","bannedKeys","k","boostrappedCb","_pStore","createStore","enhancer","dispatch","rehydrateAction","persistor","getState","purge","results","purgeResult","all","flushResult","pause","persist","manualPersist","createMigrate","migrations","currentVersion","inboundVersion","migrationKeys","map","ver","parseInt","filter","sort","a","b","versionKey","reject","createTransform","inbound","outbound","whitelistBlacklistCheck","fullState"],"mappings":"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"}