UNPKG

redux-persist-transform-filter-immutable

Version:
53 lines (35 loc) 1.76 kB
'use strict'; 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; }