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

47 lines (43 loc) 1.54 kB
import _default4 from 'ramda/src/__'; import _default3 from 'ramda/src/test'; import _default2 from 'ramda/src/is'; import _default from 'ramda/src/curry'; import { isAction, isPlainObj } from '../util/is'; var createDispatchHandler = _default(function (dispatch, originalAction, nextAction) { if (isAction(nextAction)) { if (nextAction.type !== originalAction.type) { return dispatch(nextAction); } return nextAction; } return originalAction; }); export default _default(function (logger, dispatch, enhancers, action) { var handleDispatch = createDispatchHandler(dispatch, action); if (_default2(Array, enhancers)) { var isPatternMatch = _default3(_default4, action.type); enhancers.forEach(function (_ref) { var pred = _ref[0], en = _ref[1]; if (_default2(RegExp, pred) && isPatternMatch(pred) || _default2(String, pred) && pred === action.type || _default2(Function, pred) && pred(action)) { try { var nextAction = en(action); handleDispatch(nextAction); } catch (error) { logger.error('Unable to enhance action: "' + action.type + '"', error); } } }); } else if (isPlainObj(enhancers)) { var enhance = enhancers[action.type]; if (_default2(Function, enhance)) { try { var nextAction = enhance(action); return handleDispatch(nextAction); } catch (error) { logger.error('Unable to enhance action: "' + action.type + '"', error); } } } return action; });