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