UNPKG

redux-devtools

Version:
87 lines (70 loc) 9.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = persistState; var _mapValues = _interopRequireDefault(require("lodash/mapValues")); var _identity = _interopRequireDefault(require("lodash/identity")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function persistState(sessionId) { var deserializeState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _identity["default"]; var deserializeAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _identity["default"]; if (!sessionId) { return function (next) { return function () { return next.apply(void 0, arguments); }; }; } function deserialize(state) { return _objectSpread(_objectSpread({}, state), {}, { actionsById: (0, _mapValues["default"])(state.actionsById, function (liftedAction) { return _objectSpread(_objectSpread({}, liftedAction), {}, { action: deserializeAction(liftedAction.action) }); }), committedState: deserializeState(state.committedState), computedStates: state.computedStates.map(function (computedState) { return _objectSpread(_objectSpread({}, computedState), {}, { state: deserializeState(computedState.state) }); }) }); } return function (next) { return function (reducer, initialState) { var key = "redux-dev-session-".concat(sessionId); var finalInitialState; try { var json = localStorage.getItem(key); if (json) { finalInitialState = deserialize(JSON.parse(json)) || initialState; next(reducer, initialState); } } catch (e) { console.warn('Could not read debug session from localStorage:', e); // eslint-disable-line no-console try { localStorage.removeItem(key); } finally { finalInitialState = undefined; } } var store = next(reducer, finalInitialState); return _objectSpread(_objectSpread({}, store), {}, { dispatch: function dispatch(action) { store.dispatch(action); try { localStorage.setItem(key, JSON.stringify(store.getState())); } catch (e) { console.warn('Could not write debug session to localStorage:', e); // eslint-disable-line no-console } return action; } }); }; }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wZXJzaXN0U3RhdGUudHMiXSwibmFtZXMiOlsicGVyc2lzdFN0YXRlIiwic2Vzc2lvbklkIiwiZGVzZXJpYWxpemVTdGF0ZSIsImlkZW50aXR5IiwiZGVzZXJpYWxpemVBY3Rpb24iLCJuZXh0IiwiZGVzZXJpYWxpemUiLCJzdGF0ZSIsImFjdGlvbnNCeUlkIiwibGlmdGVkQWN0aW9uIiwiYWN0aW9uIiwiY29tbWl0dGVkU3RhdGUiLCJjb21wdXRlZFN0YXRlcyIsIm1hcCIsImNvbXB1dGVkU3RhdGUiLCJyZWR1Y2VyIiwiaW5pdGlhbFN0YXRlIiwia2V5IiwiZmluYWxJbml0aWFsU3RhdGUiLCJqc29uIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIkpTT04iLCJwYXJzZSIsImUiLCJjb25zb2xlIiwid2FybiIsInJlbW92ZUl0ZW0iLCJ1bmRlZmluZWQiLCJzdG9yZSIsImRpc3BhdGNoIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImdldFN0YXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFJZSxTQUFTQSxZQUFULENBS2JDLFNBTGEsRUFRRTtBQUFBLE1BRmZDLGdCQUVlLHVFQUZxQkMsb0JBRXJCO0FBQUEsTUFEZkMsaUJBQ2UsdUVBRHVCRCxvQkFDdkI7O0FBQ2YsTUFBSSxDQUFDRixTQUFMLEVBQWdCO0FBQ2QsV0FBTyxVQUFDSSxJQUFEO0FBQUEsYUFBVTtBQUFBLGVBQWFBLElBQUksTUFBSixtQkFBYjtBQUFBLE9BQVY7QUFBQSxLQUFQO0FBQ0Q7O0FBRUQsV0FBU0MsV0FBVCxDQUNFQyxLQURGLEVBRW1DO0FBQ2pDLDJDQUNLQSxLQURMO0FBRUVDLE1BQUFBLFdBQVcsRUFBRSwyQkFBVUQsS0FBSyxDQUFDQyxXQUFoQixFQUE2QixVQUFDQyxZQUFEO0FBQUEsK0NBQ3JDQSxZQURxQztBQUV4Q0MsVUFBQUEsTUFBTSxFQUFFTixpQkFBaUIsQ0FBQ0ssWUFBWSxDQUFDQyxNQUFkO0FBRmU7QUFBQSxPQUE3QixDQUZmO0FBTUVDLE1BQUFBLGNBQWMsRUFBRVQsZ0JBQWdCLENBQUNLLEtBQUssQ0FBQ0ksY0FBUCxDQU5sQztBQU9FQyxNQUFBQSxjQUFjLEVBQUVMLEtBQUssQ0FBQ0ssY0FBTixDQUFxQkMsR0FBckIsQ0FBeUIsVUFBQ0MsYUFBRDtBQUFBLCtDQUNwQ0EsYUFEb0M7QUFFdkNQLFVBQUFBLEtBQUssRUFBRUwsZ0JBQWdCLENBQUNZLGFBQWEsQ0FBQ1AsS0FBZjtBQUZnQjtBQUFBLE9BQXpCO0FBUGxCO0FBWUQ7O0FBRUQsU0FBTyxVQUFDRixJQUFEO0FBQUEsV0FBVSxVQUNmVSxPQURlLEVBRWZDLFlBRmUsRUFHWjtBQUNILFVBQU1DLEdBQUcsK0JBQXdCaEIsU0FBeEIsQ0FBVDtBQUVBLFVBQUlpQixpQkFBSjs7QUFDQSxVQUFJO0FBQ0YsWUFBTUMsSUFBSSxHQUFHQyxZQUFZLENBQUNDLE9BQWIsQ0FBcUJKLEdBQXJCLENBQWI7O0FBQ0EsWUFBSUUsSUFBSixFQUFVO0FBQ1JELFVBQUFBLGlCQUFpQixHQUFHWixXQUFXLENBQUNnQixJQUFJLENBQUNDLEtBQUwsQ0FBV0osSUFBWCxDQUFELENBQVgsSUFBaUNILFlBQXJEO0FBQ0FYLFVBQUFBLElBQUksQ0FBQ1UsT0FBRCxFQUFVQyxZQUFWLENBQUo7QUFDRDtBQUNGLE9BTkQsQ0FNRSxPQUFPUSxDQUFQLEVBQVU7QUFDVkMsUUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsaURBQWIsRUFBZ0VGLENBQWhFLEVBRFUsQ0FDMEQ7O0FBQ3BFLFlBQUk7QUFDRkosVUFBQUEsWUFBWSxDQUFDTyxVQUFiLENBQXdCVixHQUF4QjtBQUNELFNBRkQsU0FFVTtBQUNSQyxVQUFBQSxpQkFBaUIsR0FBR1UsU0FBcEI7QUFDRDtBQUNGOztBQUVELFVBQU1DLEtBQUssR0FBR3hCLElBQUksQ0FDaEJVLE9BRGdCLEVBRWhCRyxpQkFGZ0IsQ0FBbEI7QUFLQSw2Q0FDS1csS0FETDtBQUVFQyxRQUFBQSxRQUZGLG9CQUV3QnBCLE1BRnhCLEVBRW1DO0FBQy9CbUIsVUFBQUEsS0FBSyxDQUFDQyxRQUFOLENBQWVwQixNQUFmOztBQUVBLGNBQUk7QUFDRlUsWUFBQUEsWUFBWSxDQUFDVyxPQUFiLENBQXFCZCxHQUFyQixFQUEwQkssSUFBSSxDQUFDVSxTQUFMLENBQWVILEtBQUssQ0FBQ0ksUUFBTixFQUFmLENBQTFCO0FBQ0QsV0FGRCxDQUVFLE9BQU9ULENBQVAsRUFBVTtBQUNWQyxZQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSxnREFBYixFQUErREYsQ0FBL0QsRUFEVSxDQUN5RDtBQUNwRTs7QUFFRCxpQkFBT2QsTUFBUDtBQUNEO0FBWkg7QUFjRCxLQXpDTTtBQUFBLEdBQVA7QUEwQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWFwVmFsdWVzIGZyb20gJ2xvZGFzaC9tYXBWYWx1ZXMnO1xuaW1wb3J0IGlkZW50aXR5IGZyb20gJ2xvZGFzaC9pZGVudGl0eSc7XG5pbXBvcnQgeyBBY3Rpb24sIFByZWxvYWRlZFN0YXRlLCBSZWR1Y2VyLCBTdG9yZUVuaGFuY2VyIH0gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHsgTGlmdGVkU3RhdGUgfSBmcm9tICdyZWR1eC1kZXZ0b29scy1pbnN0cnVtZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGVyc2lzdFN0YXRlPFxuICBTLFxuICBBIGV4dGVuZHMgQWN0aW9uPHVua25vd24+LFxuICBNb25pdG9yU3RhdGVcbj4oXG4gIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwsXG4gIGRlc2VyaWFsaXplU3RhdGU6IChzdGF0ZTogUykgPT4gUyA9IGlkZW50aXR5LFxuICBkZXNlcmlhbGl6ZUFjdGlvbjogKGFjdGlvbjogQSkgPT4gQSA9IGlkZW50aXR5XG4pOiBTdG9yZUVuaGFuY2VyIHtcbiAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gKG5leHQpID0+ICguLi5hcmdzKSA9PiBuZXh0KC4uLmFyZ3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzZXJpYWxpemUoXG4gICAgc3RhdGU6IExpZnRlZFN0YXRlPFMsIEEsIE1vbml0b3JTdGF0ZT5cbiAgKTogTGlmdGVkU3RhdGU8UywgQSwgTW9uaXRvclN0YXRlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYWN0aW9uc0J5SWQ6IG1hcFZhbHVlcyhzdGF0ZS5hY3Rpb25zQnlJZCwgKGxpZnRlZEFjdGlvbikgPT4gKHtcbiAgICAgICAgLi4ubGlmdGVkQWN0aW9uLFxuICAgICAgICBhY3Rpb246IGRlc2VyaWFsaXplQWN0aW9uKGxpZnRlZEFjdGlvbi5hY3Rpb24pLFxuICAgICAgfSkpLFxuICAgICAgY29tbWl0dGVkU3RhdGU6IGRlc2VyaWFsaXplU3RhdGUoc3RhdGUuY29tbWl0dGVkU3RhdGUpLFxuICAgICAgY29tcHV0ZWRTdGF0ZXM6IHN0YXRlLmNvbXB1dGVkU3RhdGVzLm1hcCgoY29tcHV0ZWRTdGF0ZSkgPT4gKHtcbiAgICAgICAgLi4uY29tcHV0ZWRTdGF0ZSxcbiAgICAgICAgc3RhdGU6IGRlc2VyaWFsaXplU3RhdGUoY29tcHV0ZWRTdGF0ZS5zdGF0ZSksXG4gICAgICB9KSksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiAobmV4dCkgPT4gPFMsIEEgZXh0ZW5kcyBBY3Rpb248dW5rbm93bj4+KFxuICAgIHJlZHVjZXI6IFJlZHVjZXI8UywgQT4sXG4gICAgaW5pdGlhbFN0YXRlPzogUHJlbG9hZGVkU3RhdGU8Uz5cbiAgKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gYHJlZHV4LWRldi1zZXNzaW9uLSR7c2Vzc2lvbklkfWA7XG5cbiAgICBsZXQgZmluYWxJbml0aWFsU3RhdGU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGpzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgaWYgKGpzb24pIHtcbiAgICAgICAgZmluYWxJbml0aWFsU3RhdGUgPSBkZXNlcmlhbGl6ZShKU09OLnBhcnNlKGpzb24pKSB8fCBpbml0aWFsU3RhdGU7XG4gICAgICAgIG5leHQocmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0NvdWxkIG5vdCByZWFkIGRlYnVnIHNlc3Npb24gZnJvbSBsb2NhbFN0b3JhZ2U6JywgZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgdHJ5IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZpbmFsSW5pdGlhbFN0YXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN0b3JlID0gbmV4dChcbiAgICAgIHJlZHVjZXIsXG4gICAgICBmaW5hbEluaXRpYWxTdGF0ZSBhcyBQcmVsb2FkZWRTdGF0ZTxTPiB8IHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBkaXNwYXRjaDxUIGV4dGVuZHMgQT4oYWN0aW9uOiBUKSB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKGFjdGlvbik7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHN0b3JlLmdldFN0YXRlKCkpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybignQ291bGQgbm90IHdyaXRlIGRlYnVnIHNlc3Npb24gdG8gbG9jYWxTdG9yYWdlOicsIGUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgICB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=