UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

64 lines 1.53 kB
import { getTypeName } from '@backland/utils'; import { parseValidationError } from '../applyValidator'; import { createFieldTypeError } from './FieldTypeErrors'; export function arrayFieldParse(config) { var { parser, parserOptions, input, arrayOptions } = config; if (!input || !Array.isArray(input)) { throw createFieldTypeError('unexpectedType', "expected Array, found ".concat(getTypeName(input))); } var { excludeInvalidListItems, customMessage } = parserOptions; var { min, length, max } = arrayOptions; var found = input.length; if (min !== undefined && found < min) { throw createFieldTypeError('minSize', { expected: { min }, found }); } if (max !== undefined && found > max) { throw createFieldTypeError('maxSize', { expected: { max }, found }); } if (length !== undefined && found !== length) { throw createFieldTypeError('sizeMismatch', { expected: { length }, found }); } var values = []; input.forEach((item, key) => { try { var parsed = parser(item, parserOptions); values.push(parsed); } catch (originalError) { if (excludeInvalidListItems) { return; } var error = parseValidationError(item, customMessage, originalError); error.message = "".concat(error.message, " at position ").concat(key); throw error; } }); return values; } //# sourceMappingURL=ArrayFieldParse.js.map