UNPKG

valia

Version:

A runtime data validator in TypeScript with advanced type inference, built-in validation functions, and seamless integration for server and client environments.

30 lines (28 loc) 969 B
import type { NumberSetableCriteria } from "./types"; import type { FormatTemplate } from "../types"; import { isArray, isPlainObject } from "../../../testers"; export const NumberFormat: FormatTemplate<NumberSetableCriteria> = { defaultCriteria: {}, checking(queue, path, criteria, value) { if (typeof value !== "number") { return ("TYPE_NOT_NUMBER"); } else if (criteria.min !== undefined && value < criteria.min) { return ("VALUE_SUPERIOR_MIN"); } else if (criteria.max !== undefined && value > criteria.max) { return ("VALUE_SUPERIOR_MAX"); } else if (criteria.enum !== undefined) { if (isPlainObject(criteria.enum) && !Object.values(criteria.enum).includes(value)) { return ("VALUE_NOT_IN_ENUM"); } else if (isArray(criteria.enum) && !criteria.enum.includes(value)) { return ("VALUE_NOT_IN_ENUM"); } } else if (criteria.custom && !criteria.custom(value)) { return ("TEST_CUSTOM_FAILED"); } return (null); } }