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

112 lines (69 loc) 4.38 kB
'use strict'; exports.__esModule = true; 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 _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 _always = require('ramda/src/always'); var _always2 = _interopRequireDefault(_always); var _T = require('ramda/src/T'); var _T2 = _interopRequireDefault(_T); 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), machines = _getDuckMatchingActio.machines, _getDuckMatchingActio2 = _getDuckMatchingActio.isPayloadValid, isPayloadValid = _getDuckMatchingActio2 === undefined ? _T2.default : _getDuckMatchingActio2, _getDuckMatchingActio3 = _getDuckMatchingActio.getValidationErrors, getValidationErrors = _getDuckMatchingActio3 === undefined ? (0, _always2.default)(null) : _getDuckMatchingActio3, _getDuckMatchingActio4 = _getDuckMatchingActio.pruneInvalidFields, pruneInvalidFields = _getDuckMatchingActio4 === undefined ? (0, _always2.default)(action) : _getDuckMatchingActio4, _getDuckMatchingActio5 = _getDuckMatchingActio.stateMachinesPropName, stateMachinesPropName = _getDuckMatchingActio5 === undefined ? 'states' : _getDuckMatchingActio5, _getDuckMatchingActio6 = _getDuckMatchingActio.validationLevel, 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; });