UNPKG

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