// @flow import validator from 'validator'; import { ParamRequiredError, ValidationError } from '../../errors'; import { validateColorHex } from '../../../shared/utils/color'; export default function validation() { return function validationMiddleware(ctx: Object, next: Function) { ctx.assertPresent = (value, message) => { if (value === undefined || value === null || value === '') { throw new ParamRequiredError(message); } }; ctx.assertNotEmpty = (value, message) => { if (value === '') { throw new ValidationError(message); } }; ctx.assertEmail = (value, message) => { if (!validator.isEmail(value)) { throw new ValidationError(message); } }; ctx.assertUuid = (value, message) => { if (!validator.isUUID(value)) { throw new ValidationError(message); } }; ctx.assertPositiveInteger = (value, message) => { if (!validator.isInt(value, { min: 0 })) { throw new ValidationError(message); } }; ctx.assertHexColor = (value, message) => { if (!validateColorHex(value)) { throw new ValidationError(message); } }; return next(); }; }