| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import {DataType} from '../data-type.js';
- import {ServiceContainer} from '@e22m4u/js-service';
- import {DataValidationError} from '../errors/index.js';
- import {EmptyValuesService} from '@e22m4u/js-empty-values';
- /**
- * Required value validator.
- *
- * @param {*} value
- * @param {object} schema
- * @param {object|undefined} options
- * @param {ServiceContainer} container
- */
- export function requiredValueValidator(value, schema, options, container) {
- // если значение не является обязательным,
- // то проверка пропускается
- if (schema.required !== true) {
- return;
- }
- // если значение не является пустым,
- // то проверка успешно завершается
- const emptyValues = container.get(EmptyValuesService);
- const dataType = schema.type || DataType.ANY;
- if (!emptyValues.isEmptyOf(dataType, value)) {
- return;
- }
- // если значение является пустым,
- // то выбрасывается ошибка
- const sourcePath = options && options.sourcePath;
- if (sourcePath) {
- throw new DataValidationError(
- 'Value of %v is required, but %v was given.',
- sourcePath,
- value,
- );
- } else {
- throw new DataValidationError(
- 'Value is required, but %v was given.',
- value,
- );
- }
- }
|