UNPKG

redux-modules

Version:

A library for defining clear, boilerplate free Redux reducers.

48 lines (38 loc) 1.66 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var registeredModules = {}; var moduleIsRegistered = function moduleIsRegistered(_ref) { var name = _ref.name; return registeredModules.hasOwnProperty(name); }; var reducerShouldBeReplaced = function reducerShouldBeReplaced(modules) { return !modules.some(moduleIsRegistered); }; var collectReducers = function collectReducers(_ref2) { var name = _ref2.name; var reducer = _ref2.reducer; // If reducer is already registered, return if (typeof reducer[name] !== 'undefined') { return registeredModules; } return _extends({}, registeredModules, _defineProperty({}, name, reducer)); }; var recalculateReducers = function recalculateReducers(combineReducers, store) { return function (modules) { if (!reducerShouldBeReplaced(modules)) { return; } // eslint-disable-next-line no-console console.info('Replacing reducers'); for (var i = 0; i < modules.length; ++i) { registeredModules = collectReducers(modules[i]); } var reducer = combineReducers(registeredModules); store.replaceReducer(reducer); }; }; exports.default = recalculateReducers;