UNPKG

integreat

Version:
33 lines 1.28 kB
import { isObject } from './is.js'; export default function prepareValidator(conditions, mapTransform, mapOptions, defaultErrorStatus = 'badrequest', breakByDefault = false) { if (!Array.isArray(conditions) || conditions.length === 0) { return async () => [[], false]; } const validators = conditions.map(({ condition, failResponse, break: breakOnFail = breakByDefault }) => ({ validate: mapTransform(condition, mapOptions), breakOnFail, failResponse: isObject(failResponse) ? failResponse : { status: defaultErrorStatus, error: typeof failResponse === 'string' ? failResponse : 'Did not satisfy condition', }, })); return async function validate(action) { const failResponses = []; let doBreak = false; for (const { validate, failResponse, breakOnFail } of validators) { const result = await validate(action); if (!result) { failResponses.push(failResponse); if (breakOnFail) { doBreak = true; } } } return [failResponses, doBreak]; }; } //# sourceMappingURL=validation.js.map