ruddy
Version:
Modularized state-management tools for modern front-end applications. Manage dispatched messages in a clean and predictable way for either small or large scale projects
44 lines (34 loc) • 1.34 kB
JavaScript
;
exports.__esModule = true;
var _unnest = require('ramda/src/unnest');
var _unnest2 = _interopRequireDefault(_unnest);
var _is = require('ramda/src/is');
var _is2 = _interopRequireDefault(_is);
var _curry = require('ramda/src/curry');
var _curry2 = _interopRequireDefault(_curry);
var _is3 = require('../util/is');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = (0, _curry2.default)(function (logger, multipliers, dispatch, action) {
multipliers.filter(function (multiplierMap) {
return multiplierMap[action.type];
}).forEach(function (multiplierMap) {
try {
var fanout = multiplierMap[action.type];
var nextActions = fanout(action);
if ((0, _is2.default)(Array, nextActions)) {
(0, _unnest2.default)(nextActions).filter(function (na) {
return (0, _is3.isAction)(na) && na.type !== action.type;
}).forEach(function (nextAction) {
try {
dispatch(nextAction);
} catch (err) {
logger.error('Unable to dispatch action: "' + nextAction.type + '", multiplied from "' + action.type + '"', err);
}
});
}
} catch (error) {
logger.error('Unable to multiply action: "' + action.type + '"', error);
}
});
return action;
});