'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _actions = require('./actions');
var _constants = require('./constants');
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
function swallow() {}
function warnAboutConfusingFiltering(blacklist, whitelist) {
blacklist.filter(function (item) {
return whitelist.indexOf(item) !== -1;
}).forEach(function (item) {
console.warn( // eslint-disable-line no-console
'[redux-storage] Action ' + item + ' is on BOTH black- and whitelist.' + ' This is most likely a mistake!');
});
}
exports.default = function (engine) {
var actionBlacklist = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
var actionWhitelist = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
// Also don't save if we process our own actions
var blacklistedActions = [].concat(_toConsumableArray(actionBlacklist), [_constants.LOAD, _constants.SAVE]);
if (process.env.NODE_ENV !== 'production') {
warnAboutConfusingFiltering(actionBlacklist, actionWhitelist);
}
return function (_ref) {
var dispatch = _ref.dispatch;
var getState = _ref.getState;
return function (next) {
return function (action) {
var result = next(action);
var isOnBlacklist = blacklistedActions.indexOf(action.type) !== -1;
var isOnWhitelist = actionWhitelist.length === 0 ? true // Don't filter if the whitelist is empty
: actionWhitelist.indexOf(action.type) !== -1;
// Skip blacklisted actions
if (!isOnBlacklist && isOnWhitelist) {
(function () {
var saveState = getState();
var dispatchSave = function dispatchSave() {
return dispatch((0, _actions.save)(saveState));
};
engine.save(saveState).then(dispatchSave)['catch'](swallow);
})();
}
return result;
};
};
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVNaWRkbGV3YXJlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLFNBQVMsT0FBTyxHQUFHLEVBQ2xCOztBQUVELFNBQVMsMkJBQTJCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUN2RCxhQUFTLENBQ0osTUFBTSxDQUFDLFVBQUMsSUFBSTtlQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQUEsQ0FBQyxDQUNoRCxPQUFPLENBQUMsVUFBQyxJQUFJLEVBQUs7QUFDZixlQUFPLENBQUMsSUFBSTtBQUNSLG9DQUEwQixJQUFJLDBFQUNLLENBQ3RDLENBQUM7S0FDTCxDQUFDLENBQUM7Q0FDVjs7a0JBRWMsVUFBQyxNQUFNLEVBQWlEO1FBQS9DLGVBQWUseURBQUcsRUFBRTtRQUFFLGVBQWUseURBQUcsRUFBRTs7O0FBRTlELFFBQU0sa0JBQWtCLGdDQUFPLGVBQWUsZUFsQnpDLElBQUksYUFBRSxJQUFJLEVBa0I0QyxDQUFDOztBQUU1RCxRQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFlBQVksRUFBRTtBQUN2QyxtQ0FBMkIsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7S0FDakU7O0FBRUQsV0FBTyxnQkFBNEI7WUFBekIsUUFBUSxRQUFSLFFBQVE7WUFBRSxRQUFRLFFBQVIsUUFBUTs7QUFDeEIsZUFBTyxVQUFDLElBQUk7bUJBQUssVUFBQyxNQUFNLEVBQUs7QUFDekIsb0JBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7QUFFNUIsb0JBQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDckUsb0JBQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxHQUM1QztBQUFJLGtCQUNKLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7O0FBQUMsQUFHbEQsb0JBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxFQUFFOztBQUNqQyw0QkFBTSxTQUFTLEdBQUcsUUFBUSxFQUFFLENBQUM7QUFDN0IsNEJBQU0sWUFBWSxHQUFHLFNBQWYsWUFBWTttQ0FBUyxRQUFRLENBQUMsYUFyQzNDLElBQUksRUFxQ2tELFNBQVMsQ0FBQyxDQUFDO3lCQUFBLENBQUM7QUFDM0QsOEJBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7O2lCQUM1RDs7QUFFRCx1QkFBTyxNQUFNLENBQUM7YUFDakI7U0FBQSxDQUFDO0tBQ0wsQ0FBQztDQUNMIiwiZmlsZSI6ImNyZWF0ZU1pZGRsZXdhcmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzYXZlIGFzIGFjdGlvblNhdmUgfSBmcm9tICcuL2FjdGlvbnMnO1xuaW1wb3J0IHsgTE9BRCwgU0FWRSB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZnVuY3Rpb24gc3dhbGxvdygpIHtcbn1cblxuZnVuY3Rpb24gd2FybkFib3V0Q29uZnVzaW5nRmlsdGVyaW5nKGJsYWNrbGlzdCwgd2hpdGVsaXN0KSB7XG4gICAgYmxhY2tsaXN0XG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHdoaXRlbGlzdC5pbmRleE9mKGl0ZW0pICE9PSAtMSlcbiAgICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybiggLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgYFtyZWR1eC1zdG9yYWdlXSBBY3Rpb24gJHtpdGVtfSBpcyBvbiBCT1RIIGJsYWNrLSBhbmQgd2hpdGVsaXN0LmBcbiAgICAgICAgICAgICAgICArIGAgVGhpcyBpcyBtb3N0IGxpa2VseSBhIG1pc3Rha2UhYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IChlbmdpbmUsIGFjdGlvbkJsYWNrbGlzdCA9IFtdLCBhY3Rpb25XaGl0ZWxpc3QgPSBbXSkgPT4ge1xuICAgIC8vIEFsc28gZG9uJ3Qgc2F2ZSBpZiB3ZSBwcm9jZXNzIG91ciBvd24gYWN0aW9uc1xuICAgIGNvbnN0IGJsYWNrbGlzdGVkQWN0aW9ucyA9IFsuLi5hY3Rpb25CbGFja2xpc3QsIExPQUQsIFNBVkVdO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybkFib3V0Q29uZnVzaW5nRmlsdGVyaW5nKGFjdGlvbkJsYWNrbGlzdCwgYWN0aW9uV2hpdGVsaXN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHsgZGlzcGF0Y2gsIGdldFN0YXRlIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIChuZXh0KSA9PiAoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXh0KGFjdGlvbik7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzT25CbGFja2xpc3QgPSBibGFja2xpc3RlZEFjdGlvbnMuaW5kZXhPZihhY3Rpb24udHlwZSkgIT09IC0xO1xuICAgICAgICAgICAgY29uc3QgaXNPbldoaXRlbGlzdCA9IGFjdGlvbldoaXRlbGlzdC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICA/IHRydWUgLy8gRG9uJ3QgZmlsdGVyIGlmIHRoZSB3aGl0ZWxpc3QgaXMgZW1wdHlcbiAgICAgICAgICAgICAgICA6IGFjdGlvbldoaXRlbGlzdC5pbmRleE9mKGFjdGlvbi50eXBlKSAhPT0gLTE7XG5cbiAgICAgICAgICAgIC8vIFNraXAgYmxhY2tsaXN0ZWQgYWN0aW9uc1xuICAgICAgICAgICAgaWYgKCFpc09uQmxhY2tsaXN0ICYmIGlzT25XaGl0ZWxpc3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzYXZlU3RhdGUgPSBnZXRTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BhdGNoU2F2ZSA9ICgpID0+IGRpc3BhdGNoKGFjdGlvblNhdmUoc2F2ZVN0YXRlKSk7XG4gICAgICAgICAgICAgICAgZW5naW5lLnNhdmUoc2F2ZVN0YXRlKS50aGVuKGRpc3BhdGNoU2F2ZSkuY2F0Y2goc3dhbGxvdyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgfTtcbn07XG4iXX0=