UNPKG

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
'use strict'; 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; });