combineReducers.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _immutable = require('immutable');
  6. var _immutable2 = _interopRequireDefault(_immutable);
  7. var _utilities = require('./utilities');
  8. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  9. exports.default = function (reducers) {
  10. var getDefaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _immutable2.default.Map;
  11. var reducerKeys = Object.keys(reducers);
  12. // eslint-disable-next-line space-infix-ops
  13. return function () {
  14. var inputState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getDefaultState();
  15. var action = arguments[1];
  16. // eslint-disable-next-line no-process-env
  17. if (process.env.NODE_ENV !== 'production') {
  18. var warningMessage = (0, _utilities.getUnexpectedInvocationParameterMessage)(inputState, reducers, action);
  19. if (warningMessage) {
  20. // eslint-disable-next-line no-console
  21. console.error(warningMessage);
  22. }
  23. }
  24. return inputState.withMutations(function (temporaryState) {
  25. reducerKeys.forEach(function (reducerName) {
  26. var reducer = reducers[reducerName];
  27. var currentDomainState = temporaryState.get(reducerName);
  28. var nextDomainState = reducer(currentDomainState, action);
  29. (0, _utilities.validateNextState)(nextDomainState, reducerName, action);
  30. temporaryState.set(reducerName, nextDomainState);
  31. });
  32. });
  33. };
  34. };
  35. module.exports = exports['default'];
  36. //# sourceMappingURL=combineReducers.js.map