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

64 lines (50 loc) 1.93 kB
'use strict'; exports.__esModule = true; var _ = require('ramda/src/__'); var _2 = _interopRequireDefault(_); var _test = require('ramda/src/test'); var _test2 = _interopRequireDefault(_test); 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 }; } var createDispatchHandler = (0, _curry2.default)(function (dispatch, originalAction, nextAction) { if ((0, _is3.isAction)(nextAction)) { if (nextAction.type !== originalAction.type) { return dispatch(nextAction); } return nextAction; } return originalAction; }); exports.default = (0, _curry2.default)(function (logger, dispatch, enhancers, action) { var handleDispatch = createDispatchHandler(dispatch, action); if ((0, _is2.default)(Array, enhancers)) { var isPatternMatch = (0, _test2.default)(_2.default, action.type); enhancers.forEach(function (_ref) { var pred = _ref[0], en = _ref[1]; if ((0, _is2.default)(RegExp, pred) && isPatternMatch(pred) || (0, _is2.default)(String, pred) && pred === action.type || (0, _is2.default)(Function, pred) && pred(action)) { try { var nextAction = en(action); handleDispatch(nextAction); } catch (error) { logger.error('Unable to enhance action: "' + action.type + '"', error); } } }); } else if ((0, _is3.isPlainObj)(enhancers)) { var enhance = enhancers[action.type]; if ((0, _is2.default)(Function, enhance)) { try { var nextAction = enhance(action); return handleDispatch(nextAction); } catch (error) { logger.error('Unable to enhance action: "' + action.type + '"', error); } } } return action; });