redux-storage-decorator-engines
Version:
Composing decorator for redux-storage
53 lines (42 loc) • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _promise = require('babel-runtime/core-js/promise');
var _promise2 = _interopRequireDefault(_promise);
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _entries = require('babel-runtime/core-js/object/entries');
var _entries2 = _interopRequireDefault(_entries);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (engines) {
return {
load: function load() {
var state = {};
var loads = engines.map(function (engine) {
return engine.load().then(function (partialState) {
(0, _entries2.default)(partialState || {}).forEach(function (_ref) {
var _ref2 = (0, _slicedToArray3.default)(_ref, 2);
var key = _ref2[0];
var value = _ref2[1];
if (process.env.NODE_ENV !== 'production') {
if (state[key]) {
console.warn( // eslint-disable-line no-console
'[redux-storage-decorator-engines] "' + key + '" state found in more than one storage');
}
}
state[key] = value;
});
});
});
return _promise2.default.all(loads).then(function () {
return state;
});
},
save: function save(state) {
return _promise2.default.all(engines.map(function (engine) {
return engine.save(state);
}));
}
};
};