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
114 lines (69 loc) • 4.64 kB
JavaScript
'use strict';
exports.__esModule = true;
var _T = require('ramda/src/T');
var _T2 = _interopRequireDefault(_T);
var _prop = require('ramda/src/prop');
var _prop2 = _interopRequireDefault(_prop);
var _defaultTo = require('ramda/src/defaultTo');
var _defaultTo2 = _interopRequireDefault(_defaultTo);
var _call = require('ramda/src/call');
var _call2 = _interopRequireDefault(_call);
var _objOf = require('ramda/src/objOf');
var _objOf2 = _interopRequireDefault(_objOf);
var _always = require('ramda/src/always');
var _always2 = _interopRequireDefault(_always);
var _isNil = require('ramda/src/isNil');
var _isNil2 = _interopRequireDefault(_isNil);
var _ifElse = require('ramda/src/ifElse');
var _ifElse2 = _interopRequireDefault(_ifElse);
var _compose = require('ramda/src/compose');
var _compose2 = _interopRequireDefault(_compose);
var _identity = require('ramda/src/identity');
var _identity2 = _interopRequireDefault(_identity);
var _merge = require('ramda/src/merge');
var _merge2 = _interopRequireDefault(_merge);
var _converge = require('ramda/src/converge');
var _converge2 = _interopRequireDefault(_converge);
var _F = require('ramda/src/F');
var _F2 = _interopRequireDefault(_F);
var _unless = require('ramda/src/unless');
var _unless2 = _interopRequireDefault(_unless);
var _curry = require('ramda/src/curry');
var _curry2 = _interopRequireDefault(_curry);
var _is = require('../util/is');
var _machines = require('../machines');
var _levels = require('../validators/levels');
var _levels2 = _interopRequireDefault(_levels);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = (0, _curry2['default'])(function (logger, getDuckMatchingAction, getState, action) {
if ((0, _is.isAction)(action)) {
try {
var _validatorsByLevel;
var _getDuckMatchingActio = getDuckMatchingAction(action);
var machines = _getDuckMatchingActio.machines;
var _getDuckMatchingActio2 = _getDuckMatchingActio.isPayloadValid;
var isPayloadValid = _getDuckMatchingActio2 === undefined ? _T2['default'] : _getDuckMatchingActio2;
var _getDuckMatchingActio3 = _getDuckMatchingActio.getValidationErrors;
var getValidationErrors = _getDuckMatchingActio3 === undefined ? (0, _always2['default'])(null) : _getDuckMatchingActio3;
var _getDuckMatchingActio4 = _getDuckMatchingActio.pruneInvalidFields;
var pruneInvalidFields = _getDuckMatchingActio4 === undefined ? (0, _always2['default'])(action) : _getDuckMatchingActio4;
var _getDuckMatchingActio5 = _getDuckMatchingActio.stateMachinesPropName;
var stateMachinesPropName = _getDuckMatchingActio5 === undefined ? 'states' : _getDuckMatchingActio5;
var _getDuckMatchingActio6 = _getDuckMatchingActio.validationLevel;
var validationLevel = _getDuckMatchingActio6 === undefined ? _levels2['default'].CANCEL : _getDuckMatchingActio6;
if ((0, _machines.noMachines)(machines)) {
return action;
}
var validatorsByLevel = (_validatorsByLevel = {}, _validatorsByLevel[_levels2['default'].CANCEL] = (0, _unless2['default'])(isPayloadValid, _F2['default']), _validatorsByLevel[_levels2['default'].LOG] = (0, _converge2['default'])(_merge2['default'], [_identity2['default'], (0, _compose2['default'])((0, _ifElse2['default'])(_isNil2['default'], (0, _always2['default'])({}), (0, _objOf2['default'])('validationErrors')), getValidationErrors)]), _validatorsByLevel[_levels2['default'].PRUNE] = pruneInvalidFields, _validatorsByLevel[_levels2['default'].STRICT] = (0, _unless2['default'])((0, _converge2['default'])(_machines.isActionTypeInCurrentState, [getState, _identity2['default'], (0, _always2['default'])({ machines: machines, stateMachinesPropName: stateMachinesPropName })]), _F2['default']), _validatorsByLevel);
/* Get the validator matching the validationLevel setting and run it on the action payload */
var validatedAction = (0, _call2['default'])((0, _compose2['default'])((0, _defaultTo2['default'])(_identity2['default']), (0, _prop2['default'])(validationLevel))(validatorsByLevel), action);
/* either pass the validated action forward through the middleware chain or stop it right here */
if ((0, _is.isAction)(validatedAction)) {
return validatedAction;
}
} catch (error) {
logger.error('Unable to validate action: ' + action.type, error);
}
}
return false;
});