UNPKG

@gouvfr-anct/mednum

Version:

✨ Permet de transformer une source de données vers le schéma des lieux de mediation numerique

39 lines (38 loc) 3.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.processAdresse = exports.complementAdresseIfAny = void 0; const lieux_de_mediation_numerique_1 = require("@gouvfr-anct/lieux-de-mediation-numerique"); const anciennes_communes_1 = require("./anciennes-communes"); const clean_code_postal_1 = require("./clean-code-postal"); const clean_commune_1 = require("./clean-commune"); const clean_operations_1 = require("./clean-operations"); const clean_voie_1 = require("./clean-voie"); const nouvelleCaledonieException = (codePostal) => codePostal.startsWith('98'); const complementAdresseIfAny = (complementAdresse) => complementAdresse == null ? {} : { complement_adresse: complementAdresse.replace(/\s+/g, ' ').trim() }; exports.complementAdresseIfAny = complementAdresseIfAny; const codeInseeIfAny = (code_insee) => (code_insee == null ? {} : { code_insee }); const normalizedCodePostalIfExist = (codePostal, normalizedCodePostaux = []) => normalizedCodePostaux.includes(codePostal) || nouvelleCaledonieException(codePostal) ? codePostal : normalizedCodePostaux[0]; const addressFields = (addressToNormalize, commune, sourceAddress) => ({ ...sourceAddress, code_postal: normalizedCodePostalIfExist(addressToNormalize.code_postal, commune?.codesPostaux) ?? addressToNormalize.code_postal, commune: commune?.nom ?? addressToNormalize.commune, ...codeInseeIfAny(commune?.code), voie: clean_voie_1.CLEAN_VOIE.reduce(clean_operations_1.toCleanField, sourceAddress.voie) }); const communeFrom = (findCommune, addressToNormalize) => findCommune.parNom(addressToNormalize.commune) ?? findCommune.parCodePostal(addressToNormalize.code_postal) ?? findCommune.parNomEtCodePostal(addressToNormalize.commune, addressToNormalize.code_postal) ?? findCommune.parNomEtCodePostalLePlusProcheDuDepartement(addressToNormalize.commune, addressToNormalize.code_postal) ?? (0, anciennes_communes_1.getNewCommune)(addressToNormalize.commune); const buildAddress = (findCommune) => (addressToNormalize, sourceAddress) => (0, lieux_de_mediation_numerique_1.Adresse)(addressFields(addressToNormalize, communeFrom(findCommune, addressToNormalize), sourceAddress)); const normalizeAddress = (findCommune) => (sourceAddress) => buildAddress(findCommune)({ commune: clean_commune_1.CLEAN_COMMUNE.reduce(clean_operations_1.toCleanField, (0, clean_commune_1.communeField)(sourceAddress.voie, sourceAddress.commune)), code_postal: clean_code_postal_1.CLEAN_CODE_POSTAL.reduce(clean_operations_1.toCleanField, (0, clean_code_postal_1.codePostalField)(sourceAddress.voie, sourceAddress.code_postal)) }, sourceAddress); const processAdresse = (findCommune) => (source, matching) => normalizeAddress(findCommune)({ voie: (0, clean_voie_1.voieField)(source, matching.adresse), commune: source[matching.commune.colonne]?.toString(), code_postal: source[matching.code_postal.colonne]?.toString(), ...(0, exports.complementAdresseIfAny)(source[matching.complement_adresse?.colonne ?? '']?.toString()) }); exports.processAdresse = processAdresse;