Объект результата в Vest представляет собой центральную структуру данных, формируемую после выполнения набора правил валидации. Он агрегирует информацию о состоянии проверки, деталях каждого теста, ошибках, предупреждениях и контексте выполнения. Вся модель работы библиотеки строится вокруг детерминированного формирования этого объекта, что позволяет использовать его как единый источник истины о состоянии валидируемых данных.
Базовый объект результата содержит несколько ключевых уровней информации:
Типовая форма может быть представлена следующим образом:
{
valid: false,
errors: [],
warnings: [],
testResults: [],
fieldResults: {
username: {
valid: false,
errors: ["required", "minLength"],
warnings: [],
tests: [...]
}
}
}
Каждое из этих полей формируется на основе декларативно описанных правил и их последовательного выполнения.
Поле valid является агрегированным индикатором состояния
всей схемы валидации. Оно вычисляется на основании результатов всех
тестов:
true означает отсутствие ошибок во всех
проверкахfalse означает наличие хотя бы одной ошибки
уровня ошибки (error severity)Важно, что предупреждения не влияют на итоговое значение валидности. Это позволяет разделять критические и некритические нарушения правил.
Поле errors представляет собой глобальный список всех
ошибок, обнаруженных при выполнении тестов. В зависимости от
конфигурации оно может быть:
Пример агрегированного списка:
errors: [
{ field: "email", rule: "required" },
{ field: "password", rule: "minLength" }
]
Локализованная форма:
errors: {
email: ["required"],
password: ["minLength"]
}
Выбор структуры зависит от режима использования библиотеки и предпочтений интеграции с UI-слоем.
Поле warnings повторяет концепцию ошибок, но относится к
нефатальным отклонениям. Эти данные используются для:
Предупреждения не влияют на valid, но полностью
сохраняются в объекте результата, что позволяет использовать их
независимо от основного потока логики.
Одним из ключевых элементов структуры является
fieldResults. Это нормализованное представление состояния
каждого поля формы или объекта данных.
Каждое поле содержит:
valid — локальная валидностьerrors — список нарушенных правилwarnings — список предупрежденийtests — результат каждого выполненного тестаПример:
fieldResults: {
email: {
valid: false,
errors: ["format", "required"],
warnings: ["weakDomain"],
tests: [
{ name: "required", pass: false },
{ name: "format", pass: false },
{ name: "weakDomain", pass: true }
]
}
}
Такая структура позволяет точно определить, какое правило и на каком этапе привело к итоговому состоянию поля.
Поле testResults содержит полную историю выполнения всех
проверок без группировки по полям. Это низкоуровневое представление,
используемое для:
Каждый элемент массива обычно включает:
Пример:
testResults: [
{
field: "email",
test: "format",
pass: false,
message: "Invalid email format"
}
]
Объект результата формируется по иерархическому принципу:
testResultsfieldResultserrors и
warningsvalidТакой подход обеспечивает согласованность данных на всех уровнях абстракции и исключает расхождения между агрегированным и детализированным состоянием.
Структура результата в Vest подчиняется ряду строгих правил:
fieldResults и глобальными
списками ошибокОсобое значение имеет неизменяемость: объект результата рассматривается как снимок состояния, а не как динамическая структура.
Нормализация внутри объекта результата позволяет эффективно работать с ним в интерфейсных слоях:
Структура fieldResults особенно важна для
UI-ориентированных сценариев, где требуется мгновенный доступ к
состоянию конкретного поля без обхода всего дерева проверок.
В случаях, когда проверяемый объект имеет вложенную структуру, результат также может принимать иерархический вид. Поля могут содержать подструктуры:
fieldResults: {
user: {
email: {
valid: false,
errors: ["required"]
}
}
}
Такая модель позволяет работать с глубоко вложенными схемами без потери точности диагностики.
Каждый элемент fieldResults всегда может быть
восстановлен из testResults. Это обеспечивает:
При этом testResults выступает первичным источником, а
остальные структуры являются производными.
Объект результата в Vest является связующим звеном между декларативными правилами валидации и прикладной логикой приложения. Он отделяет описание проверок от их интерпретации, предоставляя унифицированный формат, пригодный для:
Строгая структура и предсказуемость формирования делают его устойчивым к изменению количества правил, сложности схем и глубины вложенности данных.