@gouvfr-anct/lieux-de-mediation-numerique
Version:
📚 Bibliothèque pour la modélisation des lieux de médiation numérique respectant le standard du schéma de données des lieux de médiation numériques
12 lines (11 loc) • 743 B
JavaScript
import { TelephoneError } from './errors';
const TELEPHONE_REG_EXP = /^(?:(?:\+|00)(?:33|262|269|508|590|594|596|681|687|689)[\s.-]{0,3}(?:\(0\)[\s.-]{0,3})?|0)(?:(?:[1-9](?:[\s.-]?\d{2}){4}|\d{2}(?:[\s.-]\d{3}){2})|\d{6}|\s\d{3}(?:\s\d{2}){3})$/u;
export const isValidTelephone = (telephone) => TELEPHONE_REG_EXP.test(telephone);
const isValidContact = (contact) => contact.telephone == null || isValidTelephone(contact.telephone);
const throwContactError = (contact) => {
if (contact.telephone != null && !isValidTelephone(contact.telephone)) {
throw new TelephoneError(contact.telephone);
}
throw new Error();
};
export const Contact = (contact) => isValidContact(contact) ? { ...contact } : throwContactError(contact);