UNPKG

@tricoteuses/assemblee

Version:

Retrieve, clean up & handle French Assemblée nationale's open data

133 lines 16 kB
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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