getStoredState.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { KEY_PREFIX } from './constants';
  2. export default function getStoredState(config) {
  3. var transforms = config.transforms || [];
  4. var storageKey = "".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);
  5. var storage = config.storage;
  6. var debug = config.debug;
  7. var deserialize;
  8. if (config.deserialize === false) {
  9. deserialize = function deserialize(x) {
  10. return x;
  11. };
  12. } else if (typeof config.deserialize === 'function') {
  13. deserialize = config.deserialize;
  14. } else {
  15. deserialize = defaultDeserialize;
  16. }
  17. return storage.getItem(storageKey).then(function (serialized) {
  18. if (!serialized) return undefined;else {
  19. try {
  20. var state = {};
  21. var rawState = deserialize(serialized);
  22. Object.keys(rawState).forEach(function (key) {
  23. state[key] = transforms.reduceRight(function (subState, transformer) {
  24. return transformer.out(subState, key, rawState);
  25. }, deserialize(rawState[key]));
  26. });
  27. return state;
  28. } catch (err) {
  29. if (process.env.NODE_ENV !== 'production' && debug) console.log("redux-persist/getStoredState: Error restoring data ".concat(serialized), err);
  30. throw err;
  31. }
  32. }
  33. });
  34. }
  35. function defaultDeserialize(serial) {
  36. return JSON.parse(serial);
  37. }