redux-immutable
Version:
redux-immutable is used to create an equivalent function of Redux combineReducers that works with Immutable.js state.
42 lines (28 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _immutable = require('immutable');
var _immutable2 = _interopRequireDefault(_immutable);
var _getStateName = require('./getStateName');
var _getStateName2 = _interopRequireDefault(_getStateName);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (state, reducers, action) {
var reducerNames = Object.keys(reducers);
if (!reducerNames.length) {
return 'Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.';
}
var stateName = (0, _getStateName2.default)(action);
if (_immutable2.default.isImmutable ? !_immutable2.default.isImmutable(state) : !_immutable2.default.Iterable.isIterable(state)) {
return 'The ' + stateName + ' is of unexpected type. Expected argument to be an instance of Immutable.Collection or Immutable.Record with the following properties: "' + reducerNames.join('", "') + '".';
}
var unexpectedStatePropertyNames = state.toSeq().keySeq().toArray().filter(function (name) {
return !reducers.hasOwnProperty(name);
});
if (unexpectedStatePropertyNames.length > 0) {
return 'Unexpected ' + (unexpectedStatePropertyNames.length === 1 ? 'property' : 'properties') + ' "' + unexpectedStatePropertyNames.join('", "') + '" found in ' + stateName + '. Expected to find one of the known reducer property names instead: "' + reducerNames.join('", "') + '". Unexpected properties will be ignored.';
}
return null;
};
module.exports = exports['default'];
//# sourceMappingURL=getUnexpectedInvocationParameterMessage.js.map