redux-modules
Version:
A library for defining clear, boilerplate free Redux reducers.
40 lines (30 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _set2 = require('lodash/set');
var _set3 = _interopRequireDefault(_set2);
var _has2 = require('lodash/has');
var _has3 = _interopRequireDefault(_has2);
exports.default = createRegisterModule;
var _redux = require('redux');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createRegisterModule(store) {
var combineReducers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _redux.combineReducers;
var registry = Object.create(null);
return function registerModule(modules) {
var unregisteredModules = modules.filter(function (_ref) {
var name = _ref.name;
return !(0, _has3.default)(registry, name);
});
if (unregisteredModules.length === 0) {
return;
}
unregisteredModules.forEach(function (_ref2) {
var name = _ref2.name,
reducer = _ref2.reducer;
return (0, _set3.default)(registry, name, reducer);
});
store.replaceReducer(combineReducers(registry));
};
}