@tricoteuses/assemblee
Version:
Retrieve, clean up & handle French Assemblée nationale's open data
133 lines • 16 kB
JavaScript
import assert from "assert";
import { cleanBooleanAttribute, cleanXmlArtefacts } from "./xml.mjs";
export function cleanDocumentOrDivision(d) {
cleanXmlArtefacts(d);
if (d.metadatas?.dateSuppression !== undefined) {
// Delete document
for (const key of Object.getOwnPropertyNames(d)) {
delete d[key];
}
return;
}
const xsiType = d["@xsi:type"];
if (xsiType !== undefined) {
d.xsiType = xsiType;
delete d["@xsi:type"];
}
const cycleDeVie = d.cycleDeVie;
assert(cycleDeVie);
{
const chrono = cycleDeVie.chrono;
assert(chrono);
cleanXmlArtefacts(chrono);
}
let divisions = d.divisions;
if (divisions !== undefined) {
divisions = divisions.division;
if (!Array.isArray(divisions)) {
assert(divisions);
divisions = [divisions];
}
d.divisions = divisions;
for (const division of divisions) {
cleanDocumentOrDivision(division);
}
}
assert.strictEqual(d.redacteur, undefined);
const classification = d.classification;
assert(classification);
cleanXmlArtefacts(classification);
let auteurs = d.auteurs;
if (auteurs !== undefined) {
auteurs = auteurs.auteur;
if (!Array.isArray(auteurs)) {
assert(auteurs);
auteurs = [auteurs];
}
d.auteurs = auteurs;
for (const auteur of auteurs) {
let organeRef = auteur.organe;
if (organeRef !== undefined) {
auteur.organeRef = organeRef.organeRef;
delete auteur.organe;
}
}
}
const notice = d.notice;
{
cleanBooleanAttribute(notice, "adoptionConforme");
}
let coSignataires = d.coSignataires;
if (coSignataires !== undefined) {
coSignataires = coSignataires.coSignataire;
if (!Array.isArray(coSignataires)) {
assert(coSignataires);
coSignataires = [coSignataires];
}
d.coSignataires = coSignataires;
for (const coSignataire of coSignataires) {
cleanXmlArtefacts(coSignataire);
cleanBooleanAttribute(coSignataire, "edite");
let acteurRef = coSignataire.acteur;
if (acteurRef !== undefined) {
acteurRef = acteurRef.acteurRef;
assert(acteurRef);
delete coSignataire.acteur;
coSignataire.acteurRef = acteurRef;
}
const organe = coSignataire.organe;
if (organe !== undefined) {
cleanBooleanAttribute(organe, "etApparentes");
}
}
}
const depotAmendements = d.depotAmendements;
if (depotAmendements !== undefined) {
cleanXmlArtefacts(depotAmendements);
const amendementsSeance = depotAmendements.amendementsSeance;
{
cleanXmlArtefacts(amendementsSeance);
cleanBooleanAttribute(amendementsSeance, "amendable");
}
let amendementsCommission = depotAmendements.amendementsCommission;
if (amendementsCommission !== undefined) {
amendementsCommission = amendementsCommission.commission;
if (!Array.isArray(amendementsCommission)) {
assert(amendementsCommission);
amendementsCommission = [amendementsCommission];
}
depotAmendements.amendementsCommission = amendementsCommission;
for (const commision of amendementsCommission) {
cleanXmlArtefacts(commision);
cleanBooleanAttribute(commision, "amendable");
assert.strictEqual(commision.dateLimiteDepot, undefined);
}
}
}
const imprimerie = d.imprimerie;
if (imprimerie !== undefined) {
cleanXmlArtefacts(imprimerie);
const dian = imprimerie.DIAN;
if (dian !== undefined) {
delete imprimerie.DIAN;
imprimerie.dian = dian;
}
const isbn = imprimerie.ISBN;
if (isbn !== undefined) {
delete imprimerie.ISBN;
imprimerie.isbn = isbn;
}
assert.strictEqual(imprimerie.ISSN, undefined);
}
cleanBooleanAttribute(d, "rapportPublie");
let organesReferents = d.organesReferents;
if (organesReferents !== undefined) {
organesReferents = organesReferents.organeRef;
if (!Array.isArray(organesReferents)) {
assert(organesReferents);
organesReferents = [organesReferents];
}
d.organesReferents = organesReferents;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjbGVhbkJvb2xlYW5BdHRyaWJ1dGUiLCJjbGVhblhtbEFydGVmYWN0cyIsImNsZWFuRG9jdW1lbnRPckRpdmlzaW9uIiwiZCIsIm1ldGFkYXRhcyIsImRhdGVTdXBwcmVzc2lvbiIsInVuZGVmaW5lZCIsImtleSIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJ4c2lUeXBlIiwiY3ljbGVEZVZpZSIsImNocm9ubyIsImRpdmlzaW9ucyIsImRpdmlzaW9uIiwiQXJyYXkiLCJpc0FycmF5Iiwic3RyaWN0RXF1YWwiLCJyZWRhY3RldXIiLCJjbGFzc2lmaWNhdGlvbiIsImF1dGV1cnMiLCJhdXRldXIiLCJvcmdhbmVSZWYiLCJvcmdhbmUiLCJub3RpY2UiLCJjb1NpZ25hdGFpcmVzIiwiY29TaWduYXRhaXJlIiwiYWN0ZXVyUmVmIiwiYWN0ZXVyIiwiZGVwb3RBbWVuZGVtZW50cyIsImFtZW5kZW1lbnRzU2VhbmNlIiwiYW1lbmRlbWVudHNDb21taXNzaW9uIiwiY29tbWlzc2lvbiIsImNvbW1pc2lvbiIsImRhdGVMaW1pdGVEZXBvdCIsImltcHJpbWVyaWUiLCJkaWFuIiwiRElBTiIsImlzYm4iLCJJU0JOIiwiSVNTTiIsIm9yZ2FuZXNSZWZlcmVudHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xlYW5lcnMvZG9jdW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5cbmltcG9ydCB7IGNsZWFuQm9vbGVhbkF0dHJpYnV0ZSwgY2xlYW5YbWxBcnRlZmFjdHMgfSBmcm9tIFwiLi94bWxcIlxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24oZDogYW55KTogdm9pZCB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGQpXG5cbiAgaWYgKGQubWV0YWRhdGFzPy5kYXRlU3VwcHJlc3Npb24gIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIERlbGV0ZSBkb2N1bWVudFxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGQpKSB7XG4gICAgICBkZWxldGUgZFtrZXldXG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeHNpVHlwZSA9IGRbXCJAeHNpOnR5cGVcIl1cbiAgaWYgKHhzaVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGQueHNpVHlwZSA9IHhzaVR5cGVcbiAgICBkZWxldGUgZFtcIkB4c2k6dHlwZVwiXVxuICB9XG5cbiAgY29uc3QgY3ljbGVEZVZpZSA9IGQuY3ljbGVEZVZpZVxuICBhc3NlcnQoY3ljbGVEZVZpZSlcbiAge1xuICAgIGNvbnN0IGNocm9ubyA9IGN5Y2xlRGVWaWUuY2hyb25vXG4gICAgYXNzZXJ0KGNocm9ubylcbiAgICBjbGVhblhtbEFydGVmYWN0cyhjaHJvbm8pXG4gIH1cblxuICBsZXQgZGl2aXNpb25zID0gZC5kaXZpc2lvbnNcbiAgaWYgKGRpdmlzaW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZGl2aXNpb25zID0gZGl2aXNpb25zLmRpdmlzaW9uXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRpdmlzaW9ucykpIHtcbiAgICAgIGFzc2VydChkaXZpc2lvbnMpXG4gICAgICBkaXZpc2lvbnMgPSBbZGl2aXNpb25zXVxuICAgIH1cbiAgICBkLmRpdmlzaW9ucyA9IGRpdmlzaW9uc1xuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZGl2aXNpb25zKSB7XG4gICAgICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbihkaXZpc2lvbilcbiAgICB9XG4gIH1cblxuICBhc3NlcnQuc3RyaWN0RXF1YWwoZC5yZWRhY3RldXIsIHVuZGVmaW5lZClcblxuICBjb25zdCBjbGFzc2lmaWNhdGlvbiA9IGQuY2xhc3NpZmljYXRpb25cbiAgYXNzZXJ0KGNsYXNzaWZpY2F0aW9uKVxuICBjbGVhblhtbEFydGVmYWN0cyhjbGFzc2lmaWNhdGlvbilcblxuICBsZXQgYXV0ZXVycyA9IGQuYXV0ZXVyc1xuICBpZiAoYXV0ZXVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYXV0ZXVycyA9IGF1dGV1cnMuYXV0ZXVyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGF1dGV1cnMpKSB7XG4gICAgICBhc3NlcnQoYXV0ZXVycylcbiAgICAgIGF1dGV1cnMgPSBbYXV0ZXVyc11cbiAgICB9XG4gICAgZC5hdXRldXJzID0gYXV0ZXVyc1xuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGF1dGV1cnMpIHtcbiAgICAgIGxldCBvcmdhbmVSZWYgPSBhdXRldXIub3JnYW5lXG4gICAgICBpZiAob3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZVJlZiA9IG9yZ2FuZVJlZi5vcmdhbmVSZWZcbiAgICAgICAgZGVsZXRlIGF1dGV1ci5vcmdhbmVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBub3RpY2UgPSBkLm5vdGljZVxuICB7XG4gICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKG5vdGljZSwgXCJhZG9wdGlvbkNvbmZvcm1lXCIpXG4gIH1cblxuICBsZXQgY29TaWduYXRhaXJlcyA9IGQuY29TaWduYXRhaXJlc1xuICBpZiAoY29TaWduYXRhaXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29TaWduYXRhaXJlcyA9IGNvU2lnbmF0YWlyZXMuY29TaWduYXRhaXJlXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvU2lnbmF0YWlyZXMpKSB7XG4gICAgICBhc3NlcnQoY29TaWduYXRhaXJlcylcbiAgICAgIGNvU2lnbmF0YWlyZXMgPSBbY29TaWduYXRhaXJlc11cbiAgICB9XG4gICAgZC5jb1NpZ25hdGFpcmVzID0gY29TaWduYXRhaXJlc1xuICAgIGZvciAoY29uc3QgY29TaWduYXRhaXJlIG9mIGNvU2lnbmF0YWlyZXMpIHtcbiAgICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGNvU2lnbmF0YWlyZSlcblxuICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKGNvU2lnbmF0YWlyZSwgXCJlZGl0ZVwiKVxuXG4gICAgICBsZXQgYWN0ZXVyUmVmID0gY29TaWduYXRhaXJlLmFjdGV1clxuICAgICAgaWYgKGFjdGV1clJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGV1clJlZiA9IGFjdGV1clJlZi5hY3RldXJSZWZcbiAgICAgICAgYXNzZXJ0KGFjdGV1clJlZilcbiAgICAgICAgZGVsZXRlIGNvU2lnbmF0YWlyZS5hY3RldXJcbiAgICAgICAgY29TaWduYXRhaXJlLmFjdGV1clJlZiA9IGFjdGV1clJlZlxuICAgICAgfVxuXG4gICAgICBjb25zdCBvcmdhbmUgPSBjb1NpZ25hdGFpcmUub3JnYW5lXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKG9yZ2FuZSwgXCJldEFwcGFyZW50ZXNcIilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkZXBvdEFtZW5kZW1lbnRzID0gZC5kZXBvdEFtZW5kZW1lbnRzXG4gIGlmIChkZXBvdEFtZW5kZW1lbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhkZXBvdEFtZW5kZW1lbnRzKVxuXG4gICAgY29uc3QgYW1lbmRlbWVudHNTZWFuY2UgPSBkZXBvdEFtZW5kZW1lbnRzLmFtZW5kZW1lbnRzU2VhbmNlXG4gICAge1xuICAgICAgY2xlYW5YbWxBcnRlZmFjdHMoYW1lbmRlbWVudHNTZWFuY2UpXG5cbiAgICAgIGNsZWFuQm9vbGVhbkF0dHJpYnV0ZShhbWVuZGVtZW50c1NlYW5jZSwgXCJhbWVuZGFibGVcIilcbiAgICB9XG5cbiAgICBsZXQgYW1lbmRlbWVudHNDb21taXNzaW9uID0gZGVwb3RBbWVuZGVtZW50cy5hbWVuZGVtZW50c0NvbW1pc3Npb25cbiAgICBpZiAoYW1lbmRlbWVudHNDb21taXNzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFtZW5kZW1lbnRzQ29tbWlzc2lvbiA9IGFtZW5kZW1lbnRzQ29tbWlzc2lvbi5jb21taXNzaW9uXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYW1lbmRlbWVudHNDb21taXNzaW9uKSkge1xuICAgICAgICBhc3NlcnQoYW1lbmRlbWVudHNDb21taXNzaW9uKVxuICAgICAgICBhbWVuZGVtZW50c0NvbW1pc3Npb24gPSBbYW1lbmRlbWVudHNDb21taXNzaW9uXVxuICAgICAgfVxuICAgICAgZGVwb3RBbWVuZGVtZW50cy5hbWVuZGVtZW50c0NvbW1pc3Npb24gPSBhbWVuZGVtZW50c0NvbW1pc3Npb25cbiAgICAgIGZvciAoY29uc3QgY29tbWlzaW9uIG9mIGFtZW5kZW1lbnRzQ29tbWlzc2lvbikge1xuICAgICAgICBjbGVhblhtbEFydGVmYWN0cyhjb21taXNpb24pXG5cbiAgICAgICAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKGNvbW1pc2lvbiwgXCJhbWVuZGFibGVcIilcblxuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoY29tbWlzaW9uLmRhdGVMaW1pdGVEZXBvdCwgdW5kZWZpbmVkKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGltcHJpbWVyaWUgPSBkLmltcHJpbWVyaWVcbiAgaWYgKGltcHJpbWVyaWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGltcHJpbWVyaWUpXG5cbiAgICBjb25zdCBkaWFuID0gaW1wcmltZXJpZS5ESUFOXG4gICAgaWYgKGRpYW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIGltcHJpbWVyaWUuRElBTlxuICAgICAgaW1wcmltZXJpZS5kaWFuID0gZGlhblxuICAgIH1cblxuICAgIGNvbnN0IGlzYm4gPSBpbXByaW1lcmllLklTQk5cbiAgICBpZiAoaXNibiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgaW1wcmltZXJpZS5JU0JOXG4gICAgICBpbXByaW1lcmllLmlzYm4gPSBpc2JuXG4gICAgfVxuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGltcHJpbWVyaWUuSVNTTiwgdW5kZWZpbmVkKVxuICB9XG5cbiAgY2xlYW5Cb29sZWFuQXR0cmlidXRlKGQsIFwicmFwcG9ydFB1YmxpZVwiKVxuXG4gIGxldCBvcmdhbmVzUmVmZXJlbnRzID0gZC5vcmdhbmVzUmVmZXJlbnRzXG4gIGlmIChvcmdhbmVzUmVmZXJlbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBvcmdhbmVzUmVmZXJlbnRzID0gb3JnYW5lc1JlZmVyZW50cy5vcmdhbmVSZWZcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkob3JnYW5lc1JlZmVyZW50cykpIHtcbiAgICAgIGFzc2VydChvcmdhbmVzUmVmZXJlbnRzKVxuICAgICAgb3JnYW5lc1JlZmVyZW50cyA9IFtvcmdhbmVzUmVmZXJlbnRzXVxuICAgIH1cbiAgICBkLm9yZ2FuZXNSZWZlcmVudHMgPSBvcmdhbmVzUmVmZXJlbnRzXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLFFBQVE7QUFBQSxTQUVsQkMscUJBQXFCLEVBQUVDLGlCQUFpQjtBQUVqRCxPQUFPLFNBQVNDLHVCQUF1QkEsQ0FBQ0MsQ0FBTSxFQUFRO0VBQ3BERixpQkFBaUIsQ0FBQ0UsQ0FBQyxDQUFDO0VBRXBCLElBQUlBLENBQUMsQ0FBQ0MsU0FBUyxFQUFFQyxlQUFlLEtBQUtDLFNBQVMsRUFBRTtJQUM5QztJQUNBLEtBQUssTUFBTUMsR0FBRyxJQUFJQyxNQUFNLENBQUNDLG1CQUFtQixDQUFDTixDQUFDLENBQUMsRUFBRTtNQUMvQyxPQUFPQSxDQUFDLENBQUNJLEdBQUcsQ0FBQztJQUNmO0lBQ0E7RUFDRjtFQUVBLE1BQU1HLE9BQU8sR0FBR1AsQ0FBQyxDQUFDLFdBQVcsQ0FBQztFQUM5QixJQUFJTyxPQUFPLEtBQUtKLFNBQVMsRUFBRTtJQUN6QkgsQ0FBQyxDQUFDTyxPQUFPLEdBQUdBLE9BQU87SUFDbkIsT0FBT1AsQ0FBQyxDQUFDLFdBQVcsQ0FBQztFQUN2QjtFQUVBLE1BQU1RLFVBQVUsR0FBR1IsQ0FBQyxDQUFDUSxVQUFVO0VBQy9C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