@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
17 lines (16 loc) • 961 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Contact = exports.isValidTelephone = void 0;
const errors_1 = require("./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;
const isValidTelephone = (telephone) => TELEPHONE_REG_EXP.test(telephone);
exports.isValidTelephone = isValidTelephone;
const isValidContact = (contact) => contact.telephone == null || (0, exports.isValidTelephone)(contact.telephone);
const throwContactError = (contact) => {
if (contact.telephone != null && !(0, exports.isValidTelephone)(contact.telephone)) {
throw new errors_1.TelephoneError(contact.telephone);
}
throw new Error();
};
const Contact = (contact) => isValidContact(contact) ? { ...contact } : throwContactError(contact);
exports.Contact = Contact;