Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

pfchangs / redux-storage   js

Repository URL to install this package:

Version: 1.4.1-ccinternal 

/ build / createMiddleware.js

'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=