UNPKG

@tricoteuses/assemblee

Version:

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

1,240 lines 169 kB
import Se from "node:assert"; import l from "fs-extra"; import r from "node:path"; import { createHash as tn } from "node:crypto"; import "glob"; import { C as xe } from "./amendements-40Z7OJLT.js"; import "./index-COAP8XeF.js"; import sn from "command-line-args"; import { differenceInDays as on } from "date-fns"; import { execSync as Ne } from "node:child_process"; import "deep-equal"; import "front-matter"; import "js-yaml"; import "node-html-parser"; var Fe = /* @__PURE__ */ ((e) => (e.Api = "API", e.Assemblee = "ASSEMBLEE", e.Bureau = "BUREAU", e.Circonscription = "CIRCONSCRIPTION", e.Cjr = "CJR", e.Cmp = "CMP", e.Cnpe = "CNPE", e.Cnps = "CNPS", e.Comnl = "COMNL", e.Comper = "COMPER", e.Comsenat = "COMSENAT", e.Comspsenat = "COMSPSENAT", e.Confpt = "CONFPT", e.Constitu = "CONSTITU", e.Deleg = "DELEG", e.Delegbureau = "DELEGBUREAU", e.Delegsenat = "DELEGSENAT", e.Ga = "GA", e.Ge = "GE", e.Gevi = "GEVI", e.Gouvernement = "GOUVERNEMENT", e.Gp = "GP", e.Groupesenat = "GROUPESENAT", e.Hcj = "HCJ", e.Ministere = "MINISTERE", e.Miseval = "MISEVAL", e.Misgrtr = "MISGRTR", e.Misinfo = "MISINFO", e.Misinfocom = "MISINFOCOM", e.Misinfopre = "MISINFOPRE", e.Offpar = "OFFPAR", e.Orgaint = "ORGAINT", e.Orgextparl = "ORGEXTPARL", e.Parpol = "PARPOL", e.Presrep = "PRESREP", e.Senat = "SENAT", e))(Fe || {}); function ps(e) { return e.charAt(0).toUpperCase() + e.slice(1); } function ee(e) { return e.charAt(0).toLowerCase() + e.slice(1); } var rn = /* @__PURE__ */ ((e) => (e.Failure = "FAILURE", e.Success = "SUCCESS", e))(rn || {}), an = /* @__PURE__ */ ((e) => (e.Failure = "FAILURE", e.InProgress = "IN_PROGRESS", e.Success = "SUCCESS", e))(an || {}); function cs(e) { if (e.actesLegislatifs !== void 0) { for (const n of He(e.actesLegislatifs)) if (n.codeActe.match(/^AN.*-COM-FOND-SAISIE$/) !== null && n.organeRef !== void 0 && n.organeRef !== "PO211494") return n.organeRef; } } function ne(e) { switch (e) { case "Accord": case "adopté": case "adopté, dans les conditions prévues à l'article 45, alinéa 3, de la Constitution": case "adoptée": case "adopté sans modification": case "adoptée sans modification": case "Conforme": case "considérée comme définitive en application de l'article 151-7 du Règlement": case "considérée comme définitive en application de l'article 151-9 du Règlement": case "Motion adopté(e)": return "SUCCESS"; case "Désaccord": case "Motion rejeté(e)": case "rejeté": case "rejetée": return "FAILURE"; case "adopté avec modifications": case "adoptée avec modifications": case "De droit (article 61 alinéa 1 de la Constitution)": case "modifié": case "modifiée": case "Motion de censure 49-2": case "Partiellement conforme": return "IN_PROGRESS"; case "Soixante députés au moins": case "Soixante sénateurs au moins": return Fe.Constitu; default: return "IN_PROGRESS"; } } function un(e, n) { const t = n[n.length - 1]; let s = null; switch (t.xsiType) { case "Adoption_Europe_Type": return s = t.statutAdoption.libelle, { currentStatus: ne(s), label: ee(s) }; case "ConclusionEtapeCC_Type": return s = t.statutConclusion.libelle, { currentStatus: ne(s), label: ee(s) }; case "Decision_Type": { s = t.statutConclusion.libelle; let m = ne(s), v; switch (e.procedureParlementaire.code) { case "PROCEDURE_PARLEMENTAIRE_2": ["rejeté", "rejetée"].includes(s) && e.actesLegislatifs !== void 0 && e.actesLegislatifs.length === 1 && (v = "FAILURE"); break; case "PROCEDURE_PARLEMENTAIRE_8": // Résolution case "PROCEDURE_PARLEMENTAIRE_22": m === "SUCCESS" ? v = "SUCCESS" : m === "FAILURE" && (v = "FAILURE"); break; } return { currentStatus: m, finalStatus: v, label: ee(s) }; } case "DecisionMotionCensure_Type": return s = t.decision.libelle, { currentStatus: ne(s), finalStatus: ( // Not sure for other cases => To improve. // Engagement de la responsabilité gouvernementale e.procedureParlementaire.code === "PROCEDURE_PARLEMENTAIRE_13" && s === "Motion rejeté(e)" ? "FAILURE" : "SUCCESS" ), // TODO: Not sure of this `true` value label: ee(s) }; case "DecisionRecevabiliteBureau_Type": return s = t.decision.libelle, { currentStatus: ne(s), label: ee(s) }; case "DeclarationGouvernement_Type": return s = t.typeDeclaration.libelle, { currentStatus: ne(s), label: ee(s) }; case "DepotMotionCensure_Type": return s = t.typeMotionCensure.libelle, { currentStatus: ne(s), label: ee(s) }; case "DepotRapport_Type": return [ "DossierCommissionEnquete_Type", "DossierMissionControle_Type", "DossierMissionInformation_Type" ].includes(e.xsiType) ? { currentStatus: n[0].organe.codeType, finalStatus: "SUCCESS", label: "rapport déposé" } : null; case "MotionProcedure_Type": return s = t.typeMotion.libelle, { currentStatus: ne(s), label: ee(s) }; case "Promulgation_Type": return { currentStatus: "SUCCESS", finalStatus: "SUCCESS", label: "promulgué" }; case "RetraitInitiative_Type": return { currentStatus: "FAILURE", finalStatus: "FAILURE", label: "retiré" }; case "SaisineConseilConstit_Type": return s = t.casSaisine.libelle, { currentStatus: ne(s), label: ee(s) }; default: return null; } } function Ze(e, n, t) { if (t !== void 0) for (const s of [...t].reverse()) { const m = s.actesLegislatifs ? Ze(e, [...n, s], s.actesLegislatifs) : un(e, [...n, s]); if (m !== null) return m; } return null; } function ms(e) { const n = Ze(e, [], e.actesLegislatifs); return n !== null ? n : { currentStatus: "IN_PROGRESS", label: "en cours" }; } function* He(e) { for (const n of e) yield n, n.actesLegislatifs !== void 0 && (yield* He(n.actesLegislatifs)); } function* Ke(e) { yield e; for (const n of e.divisions ?? []) yield* Ke(n); } var y = /* @__PURE__ */ ((e) => (e[e.Quatorze = 14] = "Quatorze", e[e.Quinze = 15] = "Quinze", e[e.Seize = 16] = "Seize", e[e.DixSept = 17] = "DixSept", e[e.DixHuit = 18] = "DixHuit", e[e.All = 0] = "All", e))(y || {}), G = /* @__PURE__ */ ((e) => (e[e.None = 0] = "None", e[e.ActeursEtOrganes = 1] = "ActeursEtOrganes", e[e.Agendas = 2] = "Agendas", e[e.Amendements = 4] = "Amendements", e[e.DossiersLegislatifs = 8] = "DossiersLegislatifs", e[e.Photos = 16] = "Photos", e[e.Scrutins = 32] = "Scrutins", e[e.Questions = 64] = "Questions", e[e.ComptesRendusSeances = 128] = "ComptesRendusSeances", e[e.All = 255] = "All", e))(G || {}); function J(e, n) { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.existsSync(r.join(n, "json")) ? l.moveSync(r.join(n, "json"), t) : l.mkdirSync(t); } const B = { acteursEtOrganes: [ { // AMO10 (XVII) // // Contient les députés actifs // * avec tous les mandats en cours // * y compris avec leur parti politique (typeOrgane: "PARPOL") // * mais sans les mandats achevés (y compris dans cette législature) // // Organes : // * Contient seulement les organes correspondants aux mandats en cours // * avec le xsiType de l'organe // * avec des commissions sénatoriales (permanentes et spéciales) en cours // * avec des délégations sénatoriales en cours // * avec des groupes sénatoriaux en cours // * avec des ministères en cours // * avec les Présidences de la République (y compris Sarkozy) // * avec le Conseil constitutionnel // // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO20 // (qui est lui même un sous-ensemble de l'AMO30). // Il n'apporte donc absolument rien par rapport à AMO20 ou l'AMO30. filename: "AMO10_deputes_actifs_mandats_actifs_organes_XVII.json", ignoreForWeb: !0, legislature: y.DixSept, repairZip: J, structure: 1, title: "Députés actifs et organes de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes.json.zip" }, { // AMO10 (XVI) // // Contient les députés actifs // * avec tous les mandats en cours // * y compris avec leur parti politique (typeOrgane: "PARPOL") // * mais sans les mandats achevés (y compris dans cette législature) // // Organes : // * Contient seulement les organes correspondants aux mandats en cours // * avec le xsiType de l'organe // * avec des commissions sénatoriales (permanentes et spéciales) en cours // * avec des délégations sénatoriales en cours // * avec des groupes sénatoriaux en cours // * avec des ministères en cours // * avec les Présidences de la République (y compris Sarkozy) // * avec le Conseil constitutionnel // // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO20 // (qui est lui même un sous-ensemble de l'AMO30). // Il n'apporte donc absolument rien par rapport à AMO20 ou l'AMO30. filename: "AMO10_deputes_actifs_mandats_actifs_organes_XVI.json", ignoreForWeb: !0, legislature: y.Seize, repairZip: J, structure: 1, title: "Députés actifs et organes de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes.json.zip" }, { // AMO10 (XV) // // Contient les députés actifs // * avec tous les mandats en cours // * y compris avec leur parti politique (typeOrgane: "PARPOL") // * mais sans les mandats achevés (y compris dans cette législature) // // Organes : // * Contient seulement les organes correspondants aux mandats en cours // * avec le xsiType de l'organe // * avec des commissions sénatoriales (permanentes et spéciales) en cours // * avec des délégations sénatoriales en cours // * avec des groupes sénatoriaux en cours // * avec des ministères en cours // * avec les Présidences de la République (y compris Sarkozy) // * avec le Conseil constitutionnel // // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO20 // (qui est lui même un sous-ensemble de l'AMO30). // Il n'apporte donc absolument rien par rapport à AMO20 ou l'AMO30. filename: "AMO10_deputes_actifs_mandats_actifs_organes_XV.json", ignoreForWeb: !0, legislature: y.Quinze, repairZip: J, structure: 1, title: "Députés actifs et organes de la XVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes_XV.json.zip" }, { // AMO20 (XVII) // // Contient les députés de la législature, actifs ou non (invalidés, etc), les sénateurs actuels // Pour les députés : // * avec tous leurs mandats de la législature // * y compris les mandats achevés // * y compris leurs partis politiques (typeOrgane: "PARPOL") // * mais sans les mandats des législatures précédentes (qui sont dans AMO40) // // Contient tous les organes référencés par les mandats // * avec le xsiType de l'organe // * avec des commissions sénatoriales (permanentes et spéciales) en cours // * avec des délégations sénatoriales en cours // * avec des groupes sénatoriaux en cours // * avec des ministères en cours // * avec les Présidences de la République (y compris Sarkozy) // * avec le Conseil constitutionnel // // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO30. // Il n'apporte donc absolument rien par rapport à l'AMO30. filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XVII.json", ignoreForWeb: !0, legislature: y.DixSept, repairZip: J, structure: 1, title: "Acteurs et organes de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/amo/deputes_senateurs_ministres_legislature/AMO20_dep_sen_min_tous_mandats_et_organes.json.zip" }, { // AMO20 (XVI) // // Contient les députés de la législature, actifs ou non (invalidés, etc), les sénateurs actuels // Pour les députés : // * avec tous leurs mandats de la législature // * y compris les mandats achevés // * y compris leurs partis politiques (typeOrgane: "PARPOL") // * mais sans les mandats des législatures précédentes (qui sont dans AMO40) // // Contient tous les organes référencés par les mandats // * avec le xsiType de l'organe // * avec des commissions sénatoriales (permanentes et spéciales) en cours // * avec des délégations sénatoriales en cours // * avec des groupes sénatoriaux en cours // * avec des ministères en cours // * avec les Présidences de la République (y compris Sarkozy) // * avec le Conseil constitutionnel // // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO30. // Il n'apporte donc absolument rien par rapport à l'AMO30. filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XVI.json", ignoreForWeb: !0, legislature: y.Seize, repairZip: J, structure: 1, title: "Acteurs et organes de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/amo/deputes_senateurs_ministres_legislature/AMO20_dep_sen_min_tous_mandats_et_organes.json.zip" }, { // AMO20 (XV) // // Contient les députés de la législature, actifs ou non (invalidés, etc), les sénateurs actuels // Pour les députés : // * avec tous leurs mandats de la législature // * y compris les mandats achevés // * y compris leurs partis politiques (typeOrgane: "PARPOL") // * mais sans les mandats des législatures précédentes (qui sont dans AMO40) // // Contient tous les organes référencés par les mandats // * avec le xsiType de l'organe // * avec des commissions sénatoriales (permanentes et spéciales) en cours // * avec des délégations sénatoriales en cours // * avec des groupes sénatoriaux en cours // * avec des ministères en cours // * avec les Présidences de la République (y compris Sarkozy) // * avec le Conseil constitutionnel // // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO30. // Il n'apporte donc absolument rien par rapport à l'AMO30. filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XV.json", ignoreForWeb: !0, legislature: y.Quinze, repairZip: J, structure: 1, title: "Acteurs et organes de la XVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_senateurs_ministres_legislature/AMO20_dep_sen_min_tous_mandats_et_organes_XV.json.zip" }, { // AMO20 (XIV) // // Comme AMO20 (XV) mais pour la XIVème législature // Tous les acteurs sauf un (PA429892) sont présents en plus à jour dans AMO30. // Cet acteur PA429892 (ancienne Sénatrice) n'est présent dans aucun des autres // fichiers AMO. // Tous les organes sont présents en plus complets dans AMO30. // // Ce fichier est donc à un détail prêt (PA429892) un sous-ensemble d'AMO30. // Il n'apporte donc quasiment rien par rapport à l'AMO30. filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XIV.json", ignoreForWeb: !0, legislature: y.Quatorze, structure: 0, title: "Acteurs et organes de la XIVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/14/amo/deputes_senateurs_ministres_legislatures_XIV/AMO20_dep_sen_min_tous_mandats_et_organes_XIV.json.zip" }, { // AMO30 (XVII) // // Ce fichier contient tous les acteurs et organes. // C'est un sur-ensemble des fichiers AMO20. filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json", legislature: y.All, repairZip: J, structure: 1, title: "Historique de tous les acteurs et organes depuis la XIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/amo/tous_acteurs_mandats_organes_xi_legislature/AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json.zip" }, // { // // AMO30 (XVI) // // // // Ce fichier contient tous les acteurs et organes. // // C'est un sur-ensemble des fichiers AMO20. // filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json", // legislature: Legislature.All, // repairZip: repairForJsonSubdirectory, // structure: DatasetStructure.SegmentedFiles, // title: // "Historique de tous les acteurs et organes depuis la XIème législature", // url: "https://data.assemblee-nationale.fr/static/openData/repository/16/amo/tous_acteurs_mandats_organes_xi_legislature/AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json.zip", // }, // { // // AMO30 (XV) // // // // Ce fichier contient tous les acteurs et organes. // // C'est un sur-ensemble des fichiers AMO20. // filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json", // legislature: Legislature.All, // repairZip: (dataset: Dataset, dataDir: string) => { // const targetDir = path.join(dataDir, dataset.filename) // if (fs.existsSync(targetDir)) { // fs.removeSync(targetDir) // } // fs.moveSync(path.join(dataDir, "json"), targetDir) // }, // structure: DatasetStructure.SegmentedFiles, // title: // "Historique de tous les acteurs et organes depuis la XIème législature", // url: "https://data.assemblee-nationale.fr/static/openData/repository/15/amo/tous_acteurs_mandats_organes_xi_legislature/AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json.zip", // }, { // AMO40 (XVII) // // Contient les députés actifs (les mêmes qu'AMO20) // * avec presque tous leurs mandats // * y compris les mandats achevés et ceux des législatures précédentes // * y compris leurs partis politiques précédents // * mais sans leur parti politique actuel (typeOrgane: "PARPOL") // // Contient beaucoup d'organes référencés, y compris ceux des législatures // précédentes // * mais il manque le xsiType des organes // * ne contient pas les organes sénatoriaux // * ne contient pas les ministères // * ne contient pas la Présidence de la République // * ne contient pas le Conseil constitutionnel // // Pour les acteurs, ce dépôt est un sous-ensemble strict de AMO30 : // Il a moins d'acteurs et il sont moins complets. // // Pour les organes : // Quand l'organe est aussi présent dans AMO30, il vaut mieux prendre celui // d'AMO30, car il contient le xsiType (c'est la seule différence semble-t-i). // Sinon, il faut le prendre seulement si on est intéressé par les législatures // précédentes. filename: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XVII.json", ignoreForWeb: !0, legislature: y.DixSept, repairZip: (e, n) => { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.mkdirSync(t), l.pathExistsSync(r.join(n, "acteur")) && l.moveSync( r.join(n, "acteur"), r.join(t, "acteur") ), l.moveSync( r.join(n, "organe"), r.join(t, "organe") ); }, structure: 1, title: "Députés actifs et organes de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/amo/deputes_actifs_mandats_actifs_organes_divises/AMO40_deputes_actifs_mandats_actifs_organes_divises.json.zip" }, { // AMO40 (XVI) // // Contient les députés actifs (les mêmes qu'AMO20) // * avec presque tous leurs mandats // * y compris les mandats achevés et ceux des législatures précédentes // * y compris leurs partis politiques précédents // * mais sans leur parti politique actuel (typeOrgane: "PARPOL") // // Contient beaucoup d'organes référencés, y compris ceux des législatures // précédentes // * mais il manque le xsiType des organes // * ne contient pas les organes sénatoriaux // * ne contient pas les ministères // * ne contient pas la Présidence de la République // * ne contient pas le Conseil constitutionnel // // Pour les acteurs, ce dépôt est un sous-ensemble strict de AMO30 : // Il a moins d'acteurs et il sont moins complets. // // Pour les organes : // Quand l'organe est aussi présent dans AMO30, il vaut mieux prendre celui // d'AMO30, car il contient le xsiType (c'est la seule différence semble-t-i). // Sinon, il faut le prendre seulement si on est intéressé par les législatures // précédentes. filename: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XVI.json", ignoreForWeb: !0, legislature: y.Seize, repairZip: (e, n) => { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.mkdirSync(t), l.pathExistsSync(r.join(n, "acteur")) && l.moveSync( r.join(n, "acteur"), r.join(t, "acteur") ), l.moveSync( r.join(n, "organe"), r.join(t, "organe") ); }, structure: 1, title: "Députés actifs et organes de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/amo/deputes_actifs_mandats_actifs_organes_divises/AMO40_deputes_actifs_mandats_actifs_organes_divises.json.zip" }, { // AMO40 (XV) // // Contient les députés actifs (les mêmes qu'AMO20) // * avec presque tous leurs mandats // * y compris les mandats achevés et ceux des législatures précédentes // * y compris leurs partis politiques précédents // * mais sans leur parti politique actuel (typeOrgane: "PARPOL") // // Contient beaucoup d'organes référencés, y compris ceux des législatures // précédentes // * mais il manque le xsiType des organes // * ne contient pas les organes sénatoriaux // * ne contient pas les ministères // * ne contient pas la Présidence de la République // * ne contient pas le Conseil constitutionnel // // Pour les acteurs, ce dépôt est un sous-ensemble strict de AMO30 : // Il a moins d'acteurs et il sont moins complets. // // Pour les organes : // Quand l'organe est aussi présent dans AMO30, il vaut mieux prendre celui // d'AMO30, car il contient le xsiType (c'est la seule différence semble-t-i). // Sinon, il faut le prendre seulement si on est intéressé par les législatures // précédentes. filename: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XV.json", ignoreForWeb: !0, legislature: y.Quinze, repairZip: (e, n) => { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.mkdirSync(t), l.moveSync( r.join(n, "acteur"), r.join(t, "acteur") ), l.moveSync( r.join(n, "organe"), r.join(t, "organe") ); }, structure: 1, title: "Députés actifs et organes de la XVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_actifs_mandats_actifs_organes_divises/AMO40_deputes_actifs_mandats_actifs_organes_divises_XV.json.zip" }, { // AMO50 (XVII) // // Attention, ce fichier n'est pas mis à jour régulièrement ! // // Pour les acteurs : // * c'est un sous ensemble obsolète d'AMO30 // * il manque les xsiType aux mandats // // Pour les organes : // * c'est un sous ensemble obsolète d'AMO30 // * il manque les xsiType // // Ce fichier n'apporte donc absolument rien par rapport à l'AMO30, // dont il est un sous ensemble obsolète. filename: "AMO50_acteurs_mandats_organes_divises_XVII.json", ignoreForWeb: !0, legislature: y.DixSept, repairZip: (e, n) => { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.mkdirSync(t), l.moveSync( r.join(n, "mandat"), r.join(t, "mandat") ), l.moveSync( r.join(n, "acteur"), r.join(t, "acteur") ), l.moveSync( r.join(n, "organe"), r.join(t, "organe") ); }, structure: 1, title: "Acteurs, mandats et organes de la XVIIème législature (fichiers séparés, y compris mandats)", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/amo/acteurs_mandats_organes_divises/AMO50_acteurs_mandats_organes_divises.json.zip" }, { // AMO50 (XVI) // // Attention, ce fichier n'est pas mis à jour régulièrement ! // // Pour les acteurs : // * c'est un sous ensemble obsolète d'AMO30 // * il manque les xsiType aux mandats // // Pour les organes : // * c'est un sous ensemble obsolète d'AMO30 // * il manque les xsiType // // Ce fichier n'apporte donc absolument rien par rapport à l'AMO30, // dont il est un sous ensemble obsolète. filename: "AMO50_acteurs_mandats_organes_divises_XVI.json", ignoreForWeb: !0, legislature: y.Seize, repairZip: (e, n) => { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.mkdirSync(t), l.moveSync( r.join(n, "mandat"), r.join(t, "mandat") ), l.moveSync( r.join(n, "acteur"), r.join(t, "acteur") ), l.moveSync( r.join(n, "organe"), r.join(t, "organe") ); }, structure: 1, title: "Acteurs, mandats et organes de la XVIème législature (fichiers séparés, y compris mandats)", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/amo/acteurs_mandats_organes_divises/AMO50_acteurs_mandats_organes_divises.json.zip" }, { // AMO50 (XV) // // Attention, ce fichier n'est pas mis à jour régulièrement ! // // Pour les acteurs : // * c'est un sous ensemble obsolète d'AMO30 // * il manque les xsiType aux mandats // // Pour les organes : // * c'est un sous ensemble obsolète d'AMO30 // * il manque les xsiType // // Ce fichier n'apporte donc absolument rien par rapport à l'AMO30, // dont il est un sous ensemble obsolète. filename: "AMO50_acteurs_mandats_organes_divises_XV.json", ignoreForWeb: !0, legislature: y.Quinze, repairZip: (e, n) => { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.mkdirSync(t), l.moveSync( r.join(n, "mandat"), r.join(t, "mandat") ), l.moveSync( r.join(n, "acteur"), r.join(t, "acteur") ), l.moveSync( r.join(n, "organe"), r.join(t, "organe") ); }, structure: 1, title: "Acteurs, mandats et organes de la XVème législature (fichiers séparés, y compris mandats)", url: "https://data.assemblee-nationale.fr/static/openData/repository/15/amo/acteurs_mandats_organes_divises/AMO50_acteurs_mandats_organes_divises_XV.json.zip" } ], agendas: [ { filename: "Agenda_XVII.json", legislature: y.DixSept, repairZip: J, structure: 1, title: "Agenda de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/vp/reunions/Agenda.json.zip" }, { filename: "Agenda_XVI.json", legislature: y.Seize, repairZip: J, structure: 1, title: "Agenda de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/vp/reunions/Agenda.json.zip" }, { filename: "Agenda_XV.json", legislature: y.Quinze, repairZip: J, structure: 1, title: "Agenda de la XVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/15/vp/reunions/Agenda_XV.json.zip" }, { filename: "Agenda_XIV.json", legislature: y.Quatorze, structure: 0, title: "Agenda de la XIVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/14/vp/reunions/Agenda_XIV.json.zip" } ], amendements: [ { filename: "Amendements_XVII.json", legislature: y.DixSept, repairZip: J, structure: 1, title: "Amendements de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/loi/amendements_div_legis/Amendements.json.zip" }, { filename: "Amendements_XVI.json", legislature: y.Seize, repairZip: J, structure: 1, title: "Amendements de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/loi/amendements_div_legis/Amendements.json.zip" }, { filename: "Amendements_XV.json", legislature: y.Quinze, repairZip: J, structure: 1, title: "Amendements de la XVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/15/loi/amendements_legis/Amendements_XV.json.zip" } // { // filename: "Amendements_XIV.json", // ignoreForWeb: true, // legislature: Legislature.Quatorze, // structure: DatasetStructure.SingleFile, // title: "Amendements de la XIVème législature", // url: // "https://data.assemblee-nationale.fr/static/openData/repository/14/loi/amendements_legis_XIV/Amendements_XIV.json.zip", // }, ], dossiersLegislatifs: [ { filename: "Dossiers_Legislatifs_XVII.json", legislature: y.DixSept, repairZip: J, structure: 1, title: "Dossiers législatifs de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/loi/dossiers_legislatifs/Dossiers_Legislatifs.json.zip" }, { filename: "Dossiers_Legislatifs_XVI.json", legislature: y.Seize, repairZip: J, structure: 1, title: "Dossiers législatifs de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/loi/dossiers_legislatifs/Dossiers_Legislatifs.json.zip" }, { filename: "Dossiers_Legislatifs_XV.json", legislature: y.Quinze, repairZip: J, structure: 1, title: "Dossiers législatifs de la XVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/15/loi/dossiers_legislatifs/Dossiers_Legislatifs_XV.json.zip" }, { filename: "Dossiers_Legislatifs_XIV.json", legislature: y.Quatorze, structure: 0, title: "Dossiers législatifs de la XIVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/14/loi/dossiers_legislatifs/Dossiers_Legislatifs_XIV.json.zip" } ], scrutins: [ { filename: "Scrutins_XVII.json", legislature: y.DixSept, repairZip: J, structure: 1, title: "Scrutins de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/loi/scrutins/Scrutins.json.zip" }, { filename: "Scrutins_XVI.json", legislature: y.Seize, repairZip: J, structure: 1, title: "Scrutins de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/loi/scrutins/Scrutins.json.zip" }, { filename: "Scrutins_XV.json", legislature: y.Quinze, repairZip: J, structure: 1, title: "Scrutins de la XVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/15/loi/scrutins/Scrutins_XV.json.zip" }, { filename: "Scrutins_XIV.json", legislature: y.Quatorze, structure: 0, title: "Scrutins de la XIVème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/14/loi/scrutins/Scrutins_XIV.json.zip" } ], questions: [ { filename: "Questions_ecrites_XVII.json", legislature: y.DixSept, repairZip: J, structure: 1, title: "Questions écrites de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_ecrites/Questions_ecrites.json.zip" }, { filename: "Questions_ecrites_XVI.json", legislature: y.Seize, repairZip: J, structure: 1, title: "Questions écrites de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_ecrites/Questions_ecrites.json.zip" }, { filename: "Questions_gouvernement_XVII.json", legislature: y.DixSept, repairZip: J, structure: 1, title: "Questions au gouvernement de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_gouvernement/Questions_gouvernement.json.zip" }, { filename: "Questions_gouvernement_XVI.json", legislature: y.Seize, repairZip: J, structure: 1, title: "Questions au gouvernement de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_gouvernement/Questions_gouvernement.json.zip" }, { filename: "Questions_orales_XVII.json", legislature: y.DixSept, repairZip: J, structure: 1, title: "Questions orales sans débats de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_orales_sans_debat/Questions_orales_sans_debat.json.zip" }, { filename: "Questions_orales_XVI.json", legislature: y.Seize, repairZip: J, structure: 1, title: "Questions orales sans débats de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_orales_sans_debat/Questions_orales_sans_debat.json.zip" } ], comptesRendusSeances: [ { filename: "Comptes_Rendus_Seances_XVII.xml", legislature: y.DixSept, repairZip: (e, n) => { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.moveSync(r.join(n, "xml"), t); }, structure: 1, title: "Comptes rendus des séances publiques de la XVIIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/17/vp/syceronbrut/syseron.xml.zip" }, { filename: "Comptes_Rendus_Seances_XVI.xml", legislature: y.Seize, repairZip: (e, n) => { const t = r.join(n, e.filename); l.existsSync(t) && l.removeSync(t), l.moveSync(r.join(n, "xml"), t); }, structure: 1, title: "Comptes rendus des séances publiques de la XVIème législature", url: "https://data.assemblee-nationale.fr/static/openData/repository/16/vp/syceronbrut/syseron.xml.zip" } ] }; function* k(e, n = []) { const t = r.join(e, ...n); if (l.existsSync(t)) for (const s of l.readdirSync(t)) { if (s[0] === ".") continue; const m = r.join(t, s), v = [...n, s]; l.statSync(m).isDirectory() ? yield* k(e, v) : yield v; } } var ln = /* @__PURE__ */ ((e) => (e.M = "M.", e.Mme = "Mme", e))(ln || {}), pn = /* @__PURE__ */ ((e) => (e.MandatAvecSuppleantType = "MandatAvecSuppleant_Type", e.MandatMissionType = "MandatMission_Type", e.MandatParlementaireType = "MandatParlementaire_type", e.MandatSimpleType = "MandatSimple_Type", e))(pn || {}), cn = /* @__PURE__ */ ((e) => (e.CollectivitésDOutreMerEtNouvelleCalédonie = "Collectivités d'outre-mer et Nouvelle-Calédonie", e.Dom = "Dom", e.FrançaisÉtablisHorsDeFrance = "Français établis hors de France", e.Métropolitain = "Métropolitain", e))(cn || {}), mn = /* @__PURE__ */ ((e) => (e.AgriculteursExploitants = "Agriculteurs exploitants", e.ArtisansCommerçantsChefsDEntreprises = "Artisans, commerçants, chefs d'entreprises", e.ArtisansCommerçantsEtChefsDEntrepriseAncien = "Artisans, commerçants et chefs d'entreprise", e.AutresPersonnesSansActivitéProfessionnelle = "Autres personnes sans activité professionnelle", e.CadresEtProfessionsIntellectuellesSupérieures = "Cadres et professions intellectuelles supérieures", e.Employés = "Employés", e.Ouvriers = "Ouvriers", e.ProfessionsIntermédiaires = "Professions intermédiaires", e.ProfessionsIntermédiairesAncien = "Professions Intermédiaires", e.Retraités = "Retraités", e.SansProfessionDéclarée = "Sans profession déclarée", e))(mn || {}), dn = /* @__PURE__ */ ((e) => (e.GroupePolitiqueType = "GroupePolitique_type", e.OrganeCirconscriptionType = "OrganeCirconscription_type", e.OrganeExterneType = "OrganeExterne_Type", e.OrganeExtraParlementaireType = "OrganeExtraParlementaire_type", e.OrganeParlementaireInternational = "OrganeParlementaireInternational", e.OrganeParlementaireType = "OrganeParlementaire_Type", e))(dn || {}), fn = /* @__PURE__ */ ((e) => (e.H = "H", e.M = "M", e.O = "O", e.T = "T", e))(fn || {}), jn = /* @__PURE__ */ ((e) => (e.Majoritaire = "Majoritaire", e.Minoritaire = "Minoritaire", e.Opposition = "Opposition", e))(jn || {}), yn = /* @__PURE__ */ ((e) => (e.AssembléeConsultativeProvisoire = "Assemblée consultative provisoire", e.AssembléesNationalesConstituantes = "Assemblées nationales constituantes", e.The3ÈmeRépublique = "3ème République", e.The4ÈmeRépublique = "4ème République", e.The5ÈmeRépublique = "5ème République", e))(yn || {}); let Oe = class { static toActeursEtOrganes(n) { return Ie(JSON.parse(n), _("ActeursEtOrganes")); } static acteursEtOrganesToJson(n) { return JSON.stringify(Ce(n, _("ActeursEtOrganes")), null, 2); } static toActeur(n) { return Ie(JSON.parse(n), _("Acteur")); } static acteurToJson(n) { return JSON.stringify(Ce(n, _("Acteur")), null, 2); } static toOrgane(n) { return Ie(JSON.parse(n), _("Organe")); } static organeToJson(n) { return JSON.stringify(Ce(n, _("Organe")), null, 2); } }; function re(e, n, t = "") { throw Error( t ? `Invalid value for key "${t}". Expected type ${JSON.stringify( e )} but got ${JSON.stringify(n)}` : `Invalid value ${JSON.stringify(n)} for type ${JSON.stringify(e)}` ); } function Sn(e) { if (e.jsonToJS === void 0) { const n = {}; e.props.forEach((t) => n[t.json] = { key: t.js, typ: t.typ }), e.jsonToJS = n; } return e.jsonToJS; } function An(e) { if (e.jsToJSON === void 0) { const n = {}; e.props.forEach((t) => n[t.js] = { key: t.json, typ: t.typ }), e.jsToJSON = n; } return e.jsToJSON; } function ce(e, n, t, s = "") { function m(o, i) { return typeof o == typeof i ? i : re(o, i, s); } function v(o, i) { const u = o.length; for (let S = 0; S < u; S++) { const p = o[S]; try { return ce(i, p, t); } catch { } } return re(o, i); } function D(o, i) { return o.indexOf(i) !== -1 ? i : re(o, i); } function O(o, i) { return Array.isArray(i) ? i.map((u) => ce(u, o, t)) : re("array", i); } function I(o) { if (o === null) return null; const i = new Date(o); return isNaN(i.valueOf()) ? re("Date", o) : i; } function C(o, i, u) { if (u === null || typeof u != "object" || Array.isArray(u)) return re("object", u); const S = {}; return Object.getOwnPropertyNames(o).forEach((p) => { const E = o[p], h = Object.prototype.hasOwnProperty.call(u, p) ? u[p] : void 0; S[E.key] = ce(h, E.typ, t, E.key); }), Object.getOwnPropertyNames(u).forEach((p) => { Object.prototype.hasOwnProperty.call(o, p) || (S[p] = ce(u[p], i, t, p)); }), S; } if (n === "any") return e; if (n === null) return e === null ? e : re(n, e); for (; typeof n == "object" && n.ref !== void 0; ) n = vn[n.ref]; return Array.isArray(n) ? D(n, e) : typeof n == "object" ? n.hasOwnProperty("unionMembers") ? v(n.unionMembers, e) : n.hasOwnProperty("arrayItems") ? O(n.arrayItems, e) : n.hasOwnProperty("props") ? C(t(n), n.additional, e) : re(n, e) : n === Date && typeof e != "number" ? I(e) : m(n, e); } function Ie(e, n) { return ce(e, n, Sn); } function Ce(e, n) { return ce(e, n, An); } function ae(e) { return { arrayItems: e }; } function f(...e) { return { unionMembers: e }; } function L(e, n) { return { props: e, additional: n }; } function _(e) { return { ref: e }; } const vn = { ActeursEtOrganes: L( [ { json: "organes", js: "organes", typ: ae(_("Organe")) }, { json: "acteurs", js: "acteurs", typ: ae(_("Acteur")) } ], !1 ), Acteur: L( [ { json: "schemaVersion", js: "schemaVersion", typ: f(void 0, "") }, { json: "uid", js: "uid", typ: "" }, { json: "etatCivil", js: "etatCivil", typ: _("EtatCivil") }, { json: "profession", js: "profession", typ: f(void 0, _("Profession")) }, { json: "uriHatvp", js: "uriHatvp", typ: f(void 0, "") }, { json: "adresses", js: "adresses", typ: f(void 0, ae(f(_("AdresseElectronique"), _("AdressePostale")))) }, { json: "mandats", js: "mandats", typ: f(void 0, ae(_("Mandat"))) }, { json: "photo", js: "photo", typ: f(void 0, _("Photo")) }, { json: "deports", js: "deports", typ: f(void 0, ae(_("Deport"))) } ], !1 ), AdresseElectronique: L( [ { json: "xsiType", js: "xsiType", typ: "" }, { json: "uid", js: "uid", typ: "" }, { json: "type", js: "type", typ: "" }, { json: "typeLibelle", js: "typeLibelle", typ: "" }, { json: "poids", js: "poids", typ: f(void 0, "") }, { json: "adresseDeRattachement", js: "adresseDeRattachement", typ: f(void 0, "") }, { json: "valElec", js: "valElec", typ: f(void 0, "") } ], !1 ), AdressePostale: L( [ { json: "xsiType", js: "xsiType", typ: "" }, { json: "uid", js: "uid", typ: "" }, { json: "type", js: "type", typ: "" }, { json: "typeLibelle", js: "typeLibelle", typ: "" }, { json: "poids", js: "poids", typ: f(void 0, "") }, { json: "intitule", js: "intitule", typ: f(void 0, "") }, { json: "numeroRue", js: "numeroRue", typ: f(void 0, "") }, { json: "nomRue", js: "nomRue", typ: f(void 0, "") }, { json: "complementAdresse", js: "complementAdresse", typ: f(void 0, "") }, { json: "codePostal", js: "codePostal", typ: f(void 0, "") }, { json: "ville", js: "ville", typ: f(void 0, "") } ], !1 ), EtatCivil: L( [ { json: "ident", js: "ident", typ: _("Ident") }, { json: "infoNaissance", js: "infoNaissance", typ: _("InfoNaissance") }, { json: "dateDeces", js: "dateDeces", typ: f(void 0, Date) } ], !1 ), Ident: L( [ { json: "civ", js: "civ", typ: _("Civ") }, { json: "prenom", js: "prenom", typ: "" }, { json: "nom", js: "nom", typ: "" }, { json: "alpha", js: "alpha", typ: "" }, { json: "trigramme", js: "trigramme", typ: f(void 0, "") } ], !1 ), InfoNaissance: L( [ { json: "dateNais", js: "dateNais", typ: f(void 0, Date) }, { json: "villeNais", js: "villeNais", typ: f(void 0, "") }, { json: "depNais", js: "depNais", typ: f(void 0, "") }, { json: "paysNais", js: "paysNais", typ: f(void 0, "") } ], !1 ), Mandat: L( [ { json: "xsiType", js: "xsiType", typ: f(void 0, _("TypeMandat")) }, { json: "uid", js: "uid", typ: "" }, { json: "acteurRef", js: "acteurRef", typ: "" }, { json: "legislature", js: "legislature", typ: f(void 0, "") }, { json: "typeOrgane", js: "typeOrgane", typ: _("CodeTypeOrgane") }, { json: "dateDebut", js: "dateDebut", typ: Date }, { json: "datePublication", js: "datePublication", typ: f(void 0, Date) }, { json: "dateFin", js: "dateFin", typ: f(void 0, Date) }, { json: "preseance", js: "preseance", typ: f(void 0, "") }, { json: "nominPrincipale", js: "nominPrincipale", typ: "" }, { json: "infosQualite", js: "infosQualite", typ: _("InfosQualite") }, { json: "organesRefs", js: "organesRefs", typ: ae("") }, { json: "suppleant", js: "suppleant", typ: f(void 0, _("Suppleant")) }, { json: "election", js: "election", typ: f(void 0, _("Election")) }, { json: "mandature", js: "mandature", typ: f(void 0, _("Mandature")) }, { json: "collaborateurs", js: "collaborateurs", typ: f(void 0, ae(_("Collaborateur"))) }, { json: "libelle", js: "libelle", typ: f(void 0, "") }, { json: "missionSuivanteRef", js: "missionSuivanteRef", typ: f(void 0, "") }, { json: "missionPrecedenteRef", js: "missionPrecedenteRef", typ: f(void 0, "") } ], !1 ), Collaborateur: L( [ { json: "qualite", js: "qualite", typ: f(void 0, _("Civ")) }, { json: "prenom", js: "prenom", typ: "" }, { json: "nom", js: "nom", typ: "" } ], !1 ), Election: L( [ { json: "lieu", js: "lieu", typ: _("Lieu") }, { json: "causeMandat", js: "causeMandat", typ: f(void 0, "") }, { json: "refCirconscription", js: "refCirconscription", typ: f(void 0, "") } ], !1 ), Lieu: L( [ { json: "region", js: "region", typ: f(void 0, "") }, { json: "regionType", js: "regionType", typ: f(void 0, _("RegionType")) }, { json: "departement", js: "departement", typ: f(void 0, "") }, { json: "numDepartement", js: "numDepartement", typ: f(void 0, "") }, { json: "numCirco", js: "numCirco", typ: f(void 0, "") } ], !1 ), InfosQualite: L( [ { json: "codeQualite", js: "codeQualite", typ: f(void 0, "") }, { json: "libQualite", js: "libQualite", typ: "" }, { json: "libQualiteSex", js: "libQualiteSex", typ: f(void 0, "") } ], !1 ), Mandature: L( [ { json: "datePriseFonction", js: "datePriseFonction", typ: f(void 0, Date) }, { json: "causeFin", js: "causeFin", typ: f(void 0, "") }, { json: "premiereElection", js: "premiereElection", typ: f(void 0, "") }, { json: "placeHemicycle", js: "placeHemicycle", typ: f(void 0, "") }, { json: "mandatRemplaceRef", js: "mandatRemplaceRef", typ: f(void 0, "") }, { json: "matriculeVote", js: "matriculeVote", typ: f(void 0, "") } ], !1 ), Suppleant: L( [ { json: "dateDebut", js: "dateDebut", typ: Date }, { json: "dateFin", js: "dateFin", typ: f(void 0, Date) }, { json: "suppleantRef", js: "suppleantRef", typ: "" } ], !1 ), Profession: L( [ { json: "libelleCourant", js: "libelleCourant", typ: f(void 0, "") }, { json: "socProcInsee", js: "socProcInsee", typ: _("SocProcInsee") } ], !1 ), SocProcInsee: L( [ { json: "catSocPro", js: "catSocPro", typ: f(void 0, "") }, { json: "famSocPro", js: "famSocPro", typ: f(void 0, _("FamSocPro")) } ], !1 ), Deport: L( [ { json: "uid", js: "uid", typ: "" }, { json: "chronotag", js: "chronotag", typ: "" }, { json: "legislature", js: "legislature", typ: "" }, { json: "refActeur", js: "refActeur", typ: "" }, { json: "dateCreation", js: "dateCreation", typ: Date }, { json: "datePublication", js: "datePublication", typ: Date }, { json: "portee", js: "portee", typ: _("CodeEtLibelle") }, { json: "lecture", js: "lecture", typ: _("CodeEtLibelle") }, { json: "instance", js: "instance", typ: _("CodeEtLibelle") }, { json: "cible", js: "cible", typ: _("Cible") }, { json: "explication", js: "explication", typ: f(void 0, "") } ], !1 ), Cible: L( [ { json: "type", js: "type", typ: _("CodeEtLibelle") }, { json: "referenceTextuelle", js: "referenceTextuelle", typ: "" } ], !1 ), CodeEtLibelle: L( [ { json: "code", js: "code", typ: "" }, { json: "libelle", js: "libelle", typ: "" } ], !1 ), Organe: L( [ { json: "schemaVersion", js: "schemaVersion", typ: f(void 0, "") }, { json: "xsiType", js: "xsiType", typ: f(void 0, _("TypeOrgane")) }, { json: "uid", js: "uid", typ: "" }, { json: "codeType", js: "codeType", typ: _("CodeTypeOrgane") }, { json: "libelle", js: "libelle", typ: "" }, { json: "libelleEdition", js: "libelleEdition", typ: f(void 0, "") }, { json: "libelleAbrege", js: "libelleAbrege", t