45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { FormValidatorFn } from './validator.types';
|
|
|
|
export function MinLength(length: number, message?: string): FormValidatorFn {
|
|
return (_: string, value: unknown) => {
|
|
let isValid = true;
|
|
if (value != null && typeof value === 'string' && value.length < length)
|
|
isValid = false;
|
|
return {
|
|
isValid,
|
|
message: message || `Must be at least ${length} characters long`,
|
|
};
|
|
};
|
|
}
|
|
|
|
export function MaxLength(length: number, message?: string): FormValidatorFn {
|
|
return (_: string, value: unknown) => {
|
|
let isValid = true;
|
|
if (value != null && typeof value === 'string' && value.length > length)
|
|
isValid = false;
|
|
return {
|
|
isValid,
|
|
message: message || `Must be less than ${length} characters long`,
|
|
};
|
|
};
|
|
}
|
|
|
|
export function IsRequired(message?: string): FormValidatorFn {
|
|
return (_: string, value: unknown) => {
|
|
return {
|
|
isValid: !!value,
|
|
message: message || `Field is required`,
|
|
};
|
|
};
|
|
}
|
|
|
|
export function IsEmail(message?: string): FormValidatorFn {
|
|
return (_: string, value: unknown) => {
|
|
let isValid = value != null && /\S+@\S+\.\S+/.test(value as string);
|
|
return {
|
|
isValid,
|
|
message: message || `Must be a valid email address`,
|
|
};
|
|
};
|
|
}
|