import { ValidationOptions } from "../ValidationOptions"; import { buildMessage, ValidateBy } from "../common/ValidateBy"; export const MAX = "max"; /** * Checks if the first number is less than or equal to the second. */ export function max(num: unknown, max: number): boolean { return typeof num === "number" && typeof max === "number" && num <= max; } /** * Checks if the first number is less than or equal to the second. */ export function Max(maxValue: number, validationOptions?: ValidationOptions): PropertyDecorator { return ValidateBy( { name: MAX, constraints: [maxValue], validator: { validate: (value, args): boolean => max(value, args.constraints[0]), defaultMessage: buildMessage( (eachPrefix) => eachPrefix + "$property must not be greater than $constraint1", validationOptions ) } }, validationOptions ); }