UNPKG

lux-framework

Version:

Build scalable, Node.js-powered REST APIs with almost no code.

48 lines (39 loc) 978 B
// @flow import isNull from '../../../../../../utils/is-null'; import { ParameterValueError, ResourceMismatchError } from '../../errors'; import type Parameter from '../index'; /** * @private */ function validateOne<V>(param: Parameter, value: V): V { if (!param.required && isNull(value)) { return value; } if (!param.has(value)) { let expected; switch (param.path) { case 'data.type': [expected] = Array.from(param.values()); throw new ResourceMismatchError(param.path, expected, value); default: throw new ParameterValueError(param, value); } } return value; } /** * @private */ export default function validateValue<V>(param: Parameter, value: V): V { if (Array.isArray(value)) { if (param.sanitize) { return value.filter(item => param.has(item)); } for (const item of value) { validateOne(param, item); } } else { validateOne(param, value); } return value; }