Validator
Mis en place dans la version 2.3.0
Introduction
Un validateur permet de valider les données passées à un setter en ajoutant des rÚgles dans la configuration OIP.
La fonction validator est également exposée au front, permettant d'intégrer des tests de validation simplement.
Certains types de validateurs sont intégrés dans l'OIP : vérification du code postal, de l'adresse email, de l'écriture en majuscule ou en minuscule uniquement, du numéro de téléphone; il est également possible de réaliser une validation personnalisée en lui passant une regex.
Voici un exemple de validation pour un code postal :
import { Validator } from '@fasstech/oip-core/entities/helpers';
const monValidateur = Validator({ type: 'postal' });
console.log(monValidateur.validate(33500)); // trueTypage
RÚgles associés à l'export
// cf package : @fasstech/oip-core/entities/helpers
interface DeclareValidatorBase {
readonly options: DeclareValidatorOptions;
readonly errorMessage: string;
validate<T>(value: T): boolean;
};
type DeclareValidatorType =
/**
* Format mail
*/
'mail' |
/**
* Code postal sur 5 chiffres
*/
'postal' |
/**
* Téléphone local
* 06......89
*/
'localPhone' |
/**
* Téléphone international
* +33 8 68 32 32 32
*/
'internationalPhone' |
/**
* En minuscule
*/
'lowerCase' |
/**
* En majuscule
*/
'upperCase' |
/**
* Une fonction qui renvoie le résultat en fonction de la valeur rentrée
*/
((value: string) => boolean) |
/**
* Une regex qui match avec votre valeur
*/
RegExp;
type DeclareValidator = (options: {
/**
* Taille exacte
*/
exactLength?: number;
/**
* Supérieur ou égal
*/
minLength?: number;
/**
* Inférieur ou égal
*/
maxLength?: number;
type?: DeclareValidatorType | DeclareValidatorType[];
}) => DeclareValidatorBase;
type DeclareValidatorOptions = Parameters<DeclareValidator>[0];
export const Validator: DeclareValidator;Exemple
Longeur de chaine de caractĂšres ou de tableau
Les chaĂźnes et tableaux peuvent ĂȘtre validĂ©s avec des tailles dĂ©finies.
import { Validator } from '@fasstech/oip-core/entities/helpers';
const monValidateur = Validator({ exactLength: 5 });
console.log(monValidateur.validate('33500')); // true
console.log(monValidateur.validate('3350')); // false
console.log(monValidateur.errorMessage); // Votre message d'erreur associé à la derniÚre erreur.
const monSecondValidateur = Validator({ minLength: 3 });
console.log(monSecondValidateur.validate([0, 1, 2])); // true
console.log(monSecondValidateur.validate([0, 1])); // false
console.log(monSecondValidateur.errorMessage); // Votre message d'erreur associé à la derniÚre erreur.Type natif, expression angulaire et fonction personalisée
Vous pouvez valider vos données avec des expressions, comme dans l'exemple suivant :
import { Validator } from '@fasstech/oip-core/entities/helpers';
const validateur1 = Validator({ type: 'mail' });
console.log(validateur1.validate('[email protected]')); // true
console.log(validateur1.validate('contact@fasst')); // false
const validateur2 = Validator({ type: /^[0-9]{3}$/ });
console.log(validateur2.validate(356)); // true
console.log(validateur2.validate('35')); // false
const validateur3 = Validator({ type: value => value === 'context' });
console.log(validateur3.validate('context')); // true
console.log(validateur3.validate('no context')); // false
// vous pouvez mĂȘme mettre un tableau de type
const validateur4 = Validator({
type: [
value => value === 'context',
/^con/,
/text$/
]
});
console.log(validateur4.validate('context')); // trueConfiguration OIP
Dans votre fichier de configuration de l'OIP, vous pouvez ajouter la propriété nativeValidator.
Cela vous permettra de mettre des validateurs sur le propriétés natives de l'OIP.
import { Validator } from '@fasstech/oip-core/entities/helpers';
export default {
Address: {
zipCode: Validator({ type: 'postal' }),
},
company: {
name: Validator({ minLength: 8, type: [/^cont/, /ext$/, 'lowerCase'] }),
},
};