UNPKG

dilswer

Version:

Blazingly fast data validation library with TypeScript integration.

47 lines (46 loc) 1.18 kB
// src/validation-algorithms/create-validator.ts import { validatedCircularValues } from "../data-types/types/recursive.mjs"; import { Path } from "./path.mjs"; import { AggregateValidationError, ValidationError } from "./validation-error/validation-error.mjs"; var DEFAULT_ROOT = Path.init("$"); function validator(dataType, options) { if (options == null ? void 0 : options.details) { return (data) => { try { dataType["~validate"](DEFAULT_ROOT, data); return { success: true, value: data }; } catch (e) { if (ValidationError.isValidationError(e) || AggregateValidationError.isAggregateValidationError(e)) { return { success: false, error: e }; } throw e; } finally { validatedCircularValues.clear(); } }; } else { return (value) => { try { return dataType["~matches"](value); } finally { validatedCircularValues.clear(); } }; } } function validateWith(dataType, value) { return validator(dataType, { details: true })(value); } export { validateWith, validator };