attadux
Version:
Implementation of the redux-modular-ducks, forked from the extensible-duck implementation and extended to include spected validators, state machines, helpers, web workers, effect handling, action multipliers, action enhancers, action throttling/debouncing
44 lines (34 loc) • 1.5 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;
});