@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
64 lines • 1.53 kB
JavaScript
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