Validator
La classe Validator
est un outil puissant de validation de données.
Elle offre une structure flexible et extensible pour s'adapter à divers besoins de validation.
Validator
accepte un tableau de règles lors de son instanciation.
Il peut être composé des règles de base disponibles par défaut ou de règles personnalisées renvoyant un type Orion.Validator.RuleResult
.
type RuleResult = {
result: boolean
message?: string
level: 'warning' | 'error'
}
Bon à savoir
La class Validator
est utilisée au coeur du service useValidation
Validation d'une valeur primitive
new Validator([
Validator.rules.hasUppercase(),
Validator.rules.hasMinLength(3, 'too short'),
(val: string) => ({
result: val.includes('test'),
message: '"test" is missing',
level: 'error',
}),
]).validate('super')
/** returns
[
{
"result": false,
"message": "Missing uppercase character",
"level": "error"
},
{
"result": true,
"message": "too short",
"level": "error"
},
{
"result": false,
"message": "\"test\" is missing",
"level": "error"
}
]
*/
Validation d'un objet
const user = {
firstName: 'John',
lastName: undefined as Undef<string>,
email: 'john@',
};
new Validator<typeof user>([
val => Validator.rules.hasMinLength(3)(val.firstName),
val => Validator.rules.required()(val.lastName),
val => Validator.rules.email()(val.email),
val => ({
result: !!val.lastName?.length && val.email.includes(val.lastName),
level: 'warning',
message: `Email doesn't include last name`,
}),
]).validate(user)
/** returns
[
{
"result": true,
"message": "Minimum length of 3 characters required",
"level": "error"
},
{
"result": false,
"message": "Required",
"level": "error"
},
{
"result": false,
"message": "Invalid email",
"level": "error"
},
{
"result": false,
"message": "Email doesn't include last name",
"level": "warning"
}
]
*/