@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
JavaScript
;
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;