@gouvfr-anct/mednum
Version:
✨ Permet de transformer une source de données vers le schéma des lieux de mediation numerique
19 lines (18 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.processItinerances = void 0;
const lieux_de_mediation_numerique_1 = require("@gouvfr-anct/lieux-de-mediation-numerique");
const isAllowedTerm = (choice, sourceValue) => choice.sauf?.every((forbidden) => !sourceValue.includes(forbidden)) ?? true;
const isTermFound = (sourceValue, choice) => (found, term) => found || (sourceValue.includes(term.toLowerCase()) && isAllowedTerm(choice, sourceValue));
const containsOneOfTheTerms = (choice, sourceValue = '') => choice.termes == null ? sourceValue !== '' : choice.termes.reduce(isTermFound(sourceValue.toLowerCase(), choice), false);
const appendItinerance = (itinerances, itinerance) => [
...itinerances,
...(itinerance == null ? [] : [itinerance])
];
const itinerancesForTerms = (choice, source) => (itinerances, colonne) => containsOneOfTheTerms(choice, source[colonne]?.toString()) ? appendItinerance(itinerances, choice.cible) : itinerances;
const isDefaultChoice = (choice) => choice.colonnes == null && choice.termes == null;
const appendItinerances = (source) => (itinerances, choice) => isDefaultChoice(choice)
? appendItinerance(itinerances, choice.cible)
: [...itinerances, ...(choice.colonnes ?? []).reduce(itinerancesForTerms(choice, source), [])];
const processItinerances = (source, matching) => (0, lieux_de_mediation_numerique_1.Itinerances)(Array.from(new Set(matching.itinerance?.reduce(appendItinerances(source), []))));
exports.processItinerances = processItinerances;