UNPKG

@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

31 lines (30 loc) • 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Adresse = exports.isValidAddress = void 0; const errors_1 = require("./errors"); const CODE_POSTAL_REG_EXP = /^\d{5}$/u; const CODE_INSEE_REG_EXP = /^(?:[013-9]\d|2[AB1-9])(?:0?\d{3}|-\d-\d{2}-\d{3})$/u; const COMMUNE_REG_EXP = /^[A-Za-z\dÀ-ÖØ-öø-ÿœ-ŸŒ\-'’\s]+$/u; const VOIE_REG_EXP = /^[0-9A-Za-z\dÀ-ÖØ-öø-ÿœ-ŸŒ\-,()°.&:+–|;'’/\s]+$/u; const isValidCodePostal = (codePostal) => CODE_POSTAL_REG_EXP.test(codePostal); const isValidCodeInsee = (codeInsee) => CODE_INSEE_REG_EXP.test(codeInsee); const isValidCommune = (commune) => COMMUNE_REG_EXP.test(commune); const isValidVoie = (voie) => voie.length > 0 && VOIE_REG_EXP.test(voie); const isValidAddress = (adresse) => isValidVoie(adresse.voie) && isValidCodePostal(adresse.code_postal) && (adresse.code_insee == null || isValidCodeInsee(adresse.code_insee)) && isValidCommune(adresse.commune); exports.isValidAddress = isValidAddress; const throwAdresseError = (adresse) => { if (!isValidVoie(adresse.voie)) throw new errors_1.VoieError(adresse.voie); if (!isValidCodePostal(adresse.code_postal)) throw new errors_1.CodePostalError(adresse.code_postal); if (adresse.code_insee != null && !isValidCodeInsee(adresse.code_insee)) throw new errors_1.CodeInseeError(adresse.code_insee); if (!isValidCommune(adresse.commune)) throw new errors_1.CommuneError(adresse.commune); throw new Error(); }; const Adresse = (adresse) => (0, exports.isValidAddress)(adresse) ? { ...adresse } : throwAdresseError(adresse); exports.Adresse = Adresse;