redux-persist-transform-filter-immutable
Version:
Filter transformator for redux-persist supporting immutable.js
53 lines (35 loc) • 1.76 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.persistFilter = persistFilter;
var _immutable = require('immutable');
var _reduxPersist = require('redux-persist');
var _lodash = require('lodash.get');
var _lodash2 = _interopRequireDefault(_lodash);
var _lodash3 = require('lodash.set');
var _lodash4 = _interopRequireDefault(_lodash3);
var _lodash5 = require('lodash.isundefined');
var _lodash6 = _interopRequireDefault(_lodash5);
var _lodash7 = require('lodash.isstring');
var _lodash8 = _interopRequireDefault(_lodash7);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (reducerName, inboundPaths, outboundPaths) {
return (0, _reduxPersist.createTransform)(function (inboundState, key) {
return inboundPaths ? persistFilter(inboundState, inboundPaths) : inboundState;
}, function (outboundState, key) {
return outboundPaths ? persistFilter(outboundState, outboundPaths) : outboundState;
}, { whitelist: [reducerName] });
};
function persistFilter(state) {
var paths = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var iterable = _immutable.Iterable.isIterable(state);
var subset = iterable ? (0, _immutable.Map)({}) : {};
((0, _lodash8.default)(paths) ? [paths] : paths).forEach(function (path) {
var value = iterable ? state[(0, _lodash8.default)(path) ? 'get' : 'getIn'](path) : (0, _lodash2.default)(state, path);
if (!(0, _lodash6.default)(value)) {
iterable ? subset = subset[(0, _lodash8.default)(path) ? 'set' : 'setIn'](path, value) : (0, _lodash4.default)(subset, path, value);
}
});
return subset;
}
;