UNPKG

higher-order-reducers

Version:

A library of simple everyday reducer utility functions

34 lines (25 loc) 987 B
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _isPlainObject = require('is-plain-object'); var _isPlainObject2 = _interopRequireDefault(_isPlainObject); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var merge = function merge(reducer) { if (typeof reducer !== 'function') { throw new Error('Argument supplied to `merge` is not a reducer'); } return function (state, action) { if (!(0, _isPlainObject2.default)(state)) { throw new Error('`merge` only works with plain object states'); } var nextState = reducer(state, action); if (!(0, _isPlainObject2.default)(nextState)) { throw new Error('The reducer in `merge` did not return a plain object'); } return (0, _objectAssign2.default)({}, state, nextState); }; }; exports.default = merge;