@tricoteuses/assemblee 2.5.31 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/LICENSE.md +16 -6
  2. package/README.md +1 -19
  3. package/lib/amendements-CXmsqoof.js +170 -0
  4. package/lib/amendements-CZHXlq07.js +4198 -0
  5. package/lib/cleaners/acteurs.d.ts +2 -1
  6. package/lib/cleaners/amendements.d.ts +2 -1
  7. package/lib/cleaners/debats.d.ts +2 -1
  8. package/lib/cleaners/documents.d.ts +2 -1
  9. package/lib/cleaners/dossiers_legislatifs.d.ts +2 -1
  10. package/lib/cleaners/organes.d.ts +2 -1
  11. package/lib/cleaners/questions.d.ts +2 -1
  12. package/lib/cleaners/reunions.d.ts +2 -1
  13. package/lib/cleaners/scrutins.d.ts +2 -1
  14. package/lib/cleaners/xml.d.ts +5 -5
  15. package/lib/cleaners.js +186 -179
  16. package/lib/datasets.d.ts +5 -7
  17. package/lib/dossiers_legislatifs.d.ts +5 -2
  18. package/lib/file_systems.d.ts +9 -4
  19. package/lib/index.d.ts +24 -19
  20. package/lib/index.js +390 -1234
  21. package/lib/inserters.d.ts +466 -9
  22. package/lib/loaders.d.ts +13 -12
  23. package/lib/loaders.js +1900 -538
  24. package/lib/organes.d.ts +1 -1
  25. package/lib/parsers/compte_rendu.d.ts +2 -1
  26. package/lib/parsers/compte_rendu_commission.d.ts +1 -1
  27. package/lib/parsers/recherche_amendements.d.ts +2 -2
  28. package/lib/parsers/textes_lois.d.ts +1 -1
  29. package/lib/parsers.js +2109 -2075
  30. package/lib/questions-DTO3nK5V.js +2777 -0
  31. package/lib/questions-DXAzvI1T.js +230 -0
  32. package/lib/registries.d.ts +112 -0
  33. package/lib/schemas/clean/acteurs_et_organes.d.ts +2377 -0
  34. package/lib/schemas/clean/agendas.d.ts +830 -0
  35. package/lib/schemas/clean/amendements.d.ts +2305 -0
  36. package/lib/schemas/clean/debats.d.ts +300 -0
  37. package/lib/schemas/clean/dossiers_legislatifs.d.ts +1365 -0
  38. package/lib/schemas/clean/questions.d.ts +625 -0
  39. package/lib/schemas/clean/scrutins.d.ts +1137 -0
  40. package/lib/schemas/enriched/acteurs_et_organes.d.ts +112 -0
  41. package/lib/schemas/enriched/agendas.d.ts +501 -0
  42. package/lib/schemas/enriched/amendements.d.ts +1230 -0
  43. package/lib/schemas/enriched/debats.d.ts +308 -0
  44. package/lib/schemas/enriched/dossiers_legislatifs.d.ts +1131 -0
  45. package/lib/schemas/enriched/questions.d.ts +589 -0
  46. package/lib/schemas/enriched/scrutins.d.ts +1094 -0
  47. package/lib/schemas/raw/acteurs_et_organes.d.ts +5870 -0
  48. package/lib/schemas/raw/agendas.d.ts +1734 -0
  49. package/lib/schemas/raw/amendements.d.ts +4758 -0
  50. package/lib/schemas/raw/debats.d.ts +410 -0
  51. package/lib/schemas/raw/dossiers_legislatifs.d.ts +3252 -0
  52. package/lib/schemas/raw/questions.d.ts +983 -0
  53. package/lib/schemas/raw/scrutins.d.ts +2763 -0
  54. package/lib/scripts/retrieve_deputes_photos.d.ts +58 -4
  55. package/lib/scripts/retrieve_documents.d.ts +100 -12
  56. package/lib/scripts/retrieve_open_data.d.ts +75 -4
  57. package/lib/scripts/retrieve_videos.d.ts +1 -1
  58. package/lib/scripts/shared/cli_helpers.d.ts +103 -77
  59. package/lib/scripts/shared/photos.d.ts +106 -0
  60. package/lib/scripts/shared/utils.d.ts +4 -1
  61. package/lib/urls.d.ts +2 -2
  62. package/package.json +16 -12
  63. package/lib/amendements-40Z7OJLT.js +0 -682
  64. package/lib/amendements-J6Sx61n8.js +0 -154
  65. package/lib/datasets-Cb3wpfRH.js +0 -3580
  66. package/lib/parse-Ccs6wcUg.js +0 -2512
  67. package/lib/raw_types/acteurs_et_organes.d.ts +0 -464
  68. package/lib/raw_types/agendas.d.ts +0 -265
  69. package/lib/raw_types/amendements.d.ts +0 -365
  70. package/lib/raw_types/debats.d.ts +0 -140
  71. package/lib/raw_types/dossiers_legislatifs.d.ts +0 -567
  72. package/lib/raw_types/questions.d.ts +0 -115
  73. package/lib/raw_types/scrutins.d.ts +0 -187
  74. package/lib/schemas/acteurs_et_organes.json +0 -1167
  75. package/lib/schemas/agendas.json +0 -1757
  76. package/lib/schemas/amendements.json +0 -2087
  77. package/lib/schemas/compte_rendu_commission/CompteRenduCommission.json +0 -63
  78. package/lib/schemas/debats.json +0 -847
  79. package/lib/schemas/dossiers_legislatifs.json +0 -3884
  80. package/lib/schemas/legislatures.json +0 -17
  81. package/lib/schemas/questions.json +0 -711
  82. package/lib/schemas/scrutins.json +0 -701
  83. package/lib/scripts/copy-schemas.d.ts +0 -1
  84. package/lib/scripts/generate-json-schemas.d.ts +0 -1
  85. package/lib/shared_types/acteurs_et_organes.d.ts +0 -149
  86. package/lib/shared_types/dossiers_legislatifs.d.ts +0 -222
  87. package/lib/types/acteurs_et_organes.d.ts +0 -598
  88. package/lib/types/agendas.d.ts +0 -442
  89. package/lib/types/amendements.d.ts +0 -615
  90. package/lib/types/debats.d.ts +0 -186
  91. package/lib/types/dossiers_legislatifs.d.ts +0 -826
  92. package/lib/types/questions.d.ts +0 -203
  93. package/lib/types/scrutins.d.ts +0 -254
  94. /package/lib/{types/legislatures.d.ts → legislatures.d.ts} +0 -0
package/lib/loaders.js CHANGED
@@ -1,778 +1,2140 @@
1
- import E from "node:assert";
2
- import g from "fs-extra";
3
- import t from "node:path";
4
- import { a1 as F, a2 as L, L as j, a3 as _, a4 as M, a5 as J, a6 as N, a7 as Q, a8 as T, Y as X, $ as Y, a0 as Z, X as G, Z as H, _ as K } from "./datasets-Cb3wpfRH.js";
1
+ import r from "fs-extra";
2
+ import Z from "node:assert";
3
+ import s from "node:path";
5
4
  import "glob";
6
5
  import "node:fs/promises";
7
- import { getChangedFilesSinceCommit as z } from "./git.js";
8
- import { C as w } from "./amendements-40Z7OJLT.js";
9
- function* C(s, i = []) {
10
- const e = t.join(s, ...i);
11
- if (g.existsSync(e))
12
- for (const o of g.readdirSync(e)) {
6
+ import { getChangedFilesSinceCommit as le } from "./git.js";
7
+ import { z as e } from "zod";
8
+ import { E as R, F as H, G as Y, H as T, I as N, B as te } from "./amendements-CZHXlq07.js";
9
+ import { C as ce, D as ne, F as Ae, j as ue, h as me, e as de, M as ve, b as Ce, P as Ie, R as Ve, O as Fe, a0 as pe, Y as De, aa as Pe, a2 as Xe, _ as Oe, W as we, a8 as qe, a4 as Le, a6 as Re, L as l, ao as ie, ap as E, aq as se, ac as xe, af as $e, ag as Me, ab as Ne, ad as ze, ae as Te } from "./questions-DTO3nK5V.js";
10
+ import { D as Ue } from "./questions-DXAzvI1T.js";
11
+ var h = /* @__PURE__ */ ((t) => (t[t.SingleFile = 0] = "SingleFile", t[t.SegmentedFiles = 1] = "SegmentedFiles", t))(h || {}), V = /* @__PURE__ */ ((t) => (t[t.None = 0] = "None", t[t.ActeursEtOrganes = 1] = "ActeursEtOrganes", t[t.Agendas = 2] = "Agendas", t[t.Amendements = 4] = "Amendements", t[t.DossiersLegislatifs = 8] = "DossiersLegislatifs", t[t.Photos = 16] = "Photos", t[t.Scrutins = 32] = "Scrutins", t[t.Questions = 64] = "Questions", t[t.ComptesRendusSeances = 128] = "ComptesRendusSeances", t[t.ComptesRendusCommissions = 256] = "ComptesRendusCommissions", t[t.All = 511] = "All", t))(V || {});
12
+ function* L(t, n = []) {
13
+ const i = s.join(t, ...n);
14
+ if (r.existsSync(i))
15
+ for (const o of r.readdirSync(i)) {
13
16
  if (o[0] === ".")
14
17
  continue;
15
- const m = t.join(e, o), f = [...i, o];
16
- g.statSync(m).isDirectory() ? yield* C(s, f) : yield f;
18
+ const p = s.join(i, o), f = [...n, o];
19
+ r.statSync(p).isDirectory() ? yield* L(t, f) : yield f;
17
20
  }
18
21
  }
19
- function* B(s, i, e, o, m, { log: f = !1, noValidation: d = !1, sinceCommits: a } = {}) {
20
- const p = /* @__PURE__ */ new Set();
21
- for (const S of e) {
22
- if (S.ignoreForWeb || !ee(i, S))
22
+ const ke = [
23
+ "AdresseMail_Type",
24
+ "AdressePostale_Type",
25
+ "AdresseSiteWeb_Type",
26
+ "AdresseTelephonique_Type"
27
+ ], Je = e.enum(ke), Qe = e.object({
28
+ civ: ce,
29
+ prenom: e.string().meta({ description: "Prénom." }),
30
+ nom: e.string().meta({ description: "Nom." }),
31
+ alpha: e.string().meta({ description: "La signification de ce champ est indéfinie." }),
32
+ trigramme: e.string().optional().meta({ description: "La signification de ce champ est indéfinie." })
33
+ }).meta({ description: "Identité" }), Ee = e.object({
34
+ dateNais: R().meta({ description: "Date de naissance." }),
35
+ villeNais: e.string().optional().meta({ description: "Ville de naissance." }),
36
+ depNais: ne.optional().meta({
37
+ description: "Département de naissance."
38
+ }),
39
+ paysNais: e.string().optional().meta({ description: "Pays de naissance." })
40
+ }), We = e.object({
41
+ ident: Qe,
42
+ infoNaissance: Ee.optional(),
43
+ dateDeces: R().meta({ description: "Date du décès" })
44
+ }).meta({
45
+ title: "État civil",
46
+ description: "L'état civil est la situation de la personne dans la société, résultat d'une procédure écrite d'identification administrative."
47
+ }), Ze = e.object({
48
+ catSocPro: e.string().optional().meta({ description: "Catégorie socio professionelle de l'INSEE." }),
49
+ famSocPro: Ae.optional().meta({
50
+ description: "Famille socio professionelle de l'INSEE."
51
+ })
52
+ }), Be = e.object({
53
+ libelleCourant: e.string().optional().meta({ description: "Profession." }),
54
+ socProcInsee: Ze.optional()
55
+ }).meta({ description: "Profession" }), Ge = e.object({
56
+ xsiType: Je,
57
+ uid: e.string().meta({ description: "Identifiant unique." }),
58
+ type: e.string().meta({
59
+ description: "Détermine l'interprétation des champs **adresseDeRattachement** et **valElec**. Voir aussi le champ **typeLibelle**. Nombre entier."
60
+ }),
61
+ typeLibelle: e.string().meta({ description: "Signification du champ type." }),
62
+ poids: e.string().optional().meta({
63
+ description: "Détermine un ordre entre les valeurs d'un même type (Téléphone, courriel etc.) pour un acteur donné. Les valeurs dont le poids est le plus petit sont les premières. Nombre entier."
64
+ }),
65
+ // AdressePostale_Type specific fields
66
+ intitule: e.string().optional().meta({ description: "Intitulé (par exemple Assemblée nationale)." }),
67
+ numeroRue: e.string().optional().meta({ description: "Numéro de rue." }),
68
+ nomRue: e.string().optional().meta({ description: "Nom de rue." }),
69
+ complementAdresse: e.string().optional().meta({ description: "Complément d'adresse." }),
70
+ codePostal: e.string().optional().meta({ description: "Code Postal." }),
71
+ ville: e.string().optional().meta({ description: "Ville." }),
72
+ // AdresseMail_Type, AdresseSiteWeb_Type, AdresseTelephonique_Type
73
+ adresseDeRattachement: e.string().optional().meta({
74
+ description: "Identifiant unique de {@link AdressePostale | l'addresse postale} associée. Uniquement renseigné pour les types Téléphone et Télécopie."
75
+ }),
76
+ valElec: e.string().optional().meta({
77
+ description: "Numéro de téléphone ou adresse électronique (courriel, site web, identifiant, etc.)"
78
+ })
79
+ }).meta({
80
+ title: "Adresse postale et électronique",
81
+ description: "Les adresses postales, numéros de téléphones et les adresses électroniques de l'acteur."
82
+ }), He = e.object({
83
+ codeQualite: e.string().optional().meta({
84
+ description: "Abrégé de la qualité, unifié entre les {@link CodeTypeOrgane | types d'organes}."
85
+ }),
86
+ libQualite: e.string().meta({ description: "La signification de ce champ est indéfinie." }),
87
+ libQualiteSex: e.string().optional().meta({
88
+ description: "Titre donné en raison du mandat. (par exemple: Sénateur, Vice-Président, Membre, etc.)"
89
+ })
90
+ }), Ye = e.object({
91
+ dateDebut: Y().meta({
92
+ description: "Date de début de la nomination."
93
+ }),
94
+ dateFin: R().meta({
95
+ description: "Date de fin de la fonction."
96
+ }),
97
+ suppleantRef: H().meta({
98
+ description: "Référence au suppléant"
99
+ })
100
+ }).meta({
101
+ description: "Personne physique désignée pour remplacer le mandataire si nécessaire."
102
+ }), Ke = e.object({
103
+ region: me.optional().meta({
104
+ description: "Région de la cirsconscription du député. Uniquement si le type de territoire est Métropolitain ou Dom."
105
+ }),
106
+ regionType: ue.optional(),
107
+ departement: ne.optional().meta({
108
+ description: `Si le type de territoire est Métropolitain ou Dom: {@link https://fr.wikipedia.org/wiki/D%C3%A9partement_fran%C3%A7ais#D%C3%A9nomination_des_d%C3%A9partements | nom du département} de la cirsconscription du député. Si le type de territoire est "Collectivités d'outre-mer et Nouvelle-Calédonie": nom de la collectivité.`
109
+ }),
110
+ numDepartement: e.string().optional().meta({
111
+ description: `{@link https://fr.wikipedia.org/wiki/D%C3%A9partement_fran%C3%A7ais#Codification | Numéro du département} de la cirsconscription du député. Uniquement si le type de territoire n'est pas "Français établis hors de France".`
112
+ }),
113
+ numCirco: e.string().optional().meta({
114
+ description: "Numéro de la {@link https://fr.wikipedia.org/wiki/Circonscriptions_l%C3%A9gislatives_fran%C3%A7aises | circonscription du député}."
115
+ })
116
+ }).meta({ description: "Lieu" }), et = e.object({
117
+ lieu: Ke,
118
+ causeMandat: e.string().optional().meta({
119
+ description: "Élection ou nommination à l'origine du mandat (par exemple: élections générales, remplacement d'un député nommé au Gouvernement, etc.)"
120
+ }),
121
+ refCirconscription: e.string().optional().meta({ description: "La signification de ce champ est indéfinie." })
122
+ }), tt = e.object({
123
+ qualite: ce.optional(),
124
+ prenom: e.string().meta({ description: "Prénom." }),
125
+ nom: e.string().meta({ description: "Nom." })
126
+ }).meta({ description: "Collaborateur" }), nt = e.object({
127
+ datePriseFonction: R().meta({
128
+ description: "Date de la prise de fonction."
129
+ }),
130
+ causeFin: e.string().optional().meta({
131
+ description: "Cause de la fin du mandat (par exemple: Fin de législature, Élection au Sénat, etc.)"
132
+ }),
133
+ premiereElection: e.string().optional().meta({ description: "1 s'il s'agit d'une première élection, 0 sinon" }),
134
+ placeHemicycle: e.string().optional().meta({
135
+ description: "Numéro de la place du député dans {@link https://fr.wikipedia.org/wiki/H%C3%A9micycle | l'hémicycle}"
136
+ }),
137
+ mandatRemplaceRef: e.string().optional().meta({
138
+ description: "Identifiant unique (uid) du mandat remplacé par ce mandat dans le cas d'une suppléance."
139
+ }),
140
+ matriculeVote: e.string().optional()
141
+ }).meta({
142
+ description: "Détails concernant uniquement les {@link https://fr.wikipedia.org/wiki/Mandature | mandats représentatifs}."
143
+ }), it = e.object({
144
+ xsiType: ve.optional(),
145
+ uid: T().meta({ description: "Identifiant unique du mandat" }),
146
+ acteurRef: H().meta({
147
+ description: "Référence à l'acteur"
148
+ }),
149
+ legislature: e.string().optional().meta({
150
+ description: "Numéro de {@link https://fr.wikipedia.org/wiki/Liste_des_l%C3%A9gislatures_fran%C3%A7aises | la législature} sous laquelle a été créé l'organe. Nombre entier."
151
+ }),
152
+ typeOrgane: de,
153
+ dateDebut: Y().meta({
154
+ description: "Date de début de la nomination de l'acteur."
155
+ }),
156
+ datePublication: R().meta({
157
+ description: "Date de publication de la nomination au journal officiel."
158
+ }),
159
+ dateFin: R().meta({
160
+ description: "Date de fin du mandat."
161
+ }),
162
+ preseance: e.string().optional().meta({
163
+ description: "Plus le mandat est important, plus la préséance est proche de 1. Nombre entier."
164
+ }),
165
+ nominPrincipale: e.string().meta({
166
+ description: "1 pour le mandat principal, 0 sinon. Si deux mandats pour un même organe coïncident dans le temps (c'est à dire que les intervalles de temps entre leurs dates de début et de fin ont une intersection), alors le mandat principal est celui dont le champ préséance a la plus petite valeur."
167
+ }),
168
+ infosQualite: He,
169
+ organesRefs: e.array(N()).meta({
170
+ description: "Identifiants uniques (uid) des {@link Organe | organes} au sein desquels le mandat est exercé."
171
+ }),
172
+ libelle: e.string().optional().meta({
173
+ description: "Libellé de la nomination. Uniquement pour les {@link http://www2.assemblee-nationale.fr/deputes/liste/deputes-en-mission | députés en mission auprès du gouvernement}."
174
+ }),
175
+ missionSuivanteRef: e.string().optional().meta({
176
+ description: "Identifiant unique (uid) du mandat suivant. Uniquement pour les {@link http://www2.assemblee-nationale.fr/deputes/liste/deputes-en-mission | députés en mission auprès du gouvernement}."
177
+ }),
178
+ missionPrecedenteRef: e.string().optional().meta({
179
+ description: "Identifiant unique (uid) du mandat précédent. Uniquement pour les {@link http://www2.assemblee-nationale.fr/deputes/liste/deputes-en-mission | députés en mission auprès du gouvernement}."
180
+ }),
181
+ suppleant: Ye.optional().meta({
182
+ description: "Personne physique désignée pour remplacer le mandataire si nécessaire."
183
+ }),
184
+ election: et.optional(),
185
+ mandature: nt.optional().meta({
186
+ description: "Détails concernant uniquement les {@link https://fr.wikipedia.org/wiki/Mandature | mandats représentatifs}."
187
+ }),
188
+ collaborateurs: e.array(tt).optional().meta({
189
+ description: "Liste des collaborateurs attachés au {@link https://fr.wikipedia.org/wiki/Mandat_repr%C3%A9sentatif | mandat représentatif}"
190
+ })
191
+ }).meta({
192
+ title: "Mandat",
193
+ description: `Une personne physique peut être mandataire d'un mandat représentatif ou bien d'un mandat dit simple, comme par exemple être membre d'une commission. Un {@link https://fr.wikipedia.org/wiki/Mandat_repr%C3%A9sentatif | mandat représentatif} est "une forme de mandat politique qui possède la caractéristique d'être général, libre et non révocable".`
194
+ }), st = e.object({
195
+ chemin: e.string(),
196
+ cheminMosaique: e.string(),
197
+ hauteur: e.number(),
198
+ largeur: e.number(),
199
+ xMosaique: e.number(),
200
+ yMosaique: e.number()
201
+ }), ge = e.object({
202
+ schemaVersion: e.string().optional(),
203
+ uid: T().meta({ description: "Identifiant unique de l'acteur" }),
204
+ etatCivil: We,
205
+ profession: Be.optional(),
206
+ uriHatvp: e.string().optional().meta({
207
+ description: "URL de la déclaration d'intérêt de l'acteur sur le site de la Haute Autorité pour la Transparence dans la Vie Publique."
208
+ }),
209
+ adresses: e.array(Ge).optional().meta({
210
+ description: "Les adresses postales, numéros de téléphones et les adresses électroniques de l'acteur."
211
+ }),
212
+ mandats: e.array(it).optional().meta({
213
+ description: "Les mandats ({@link https://fr.wikipedia.org/wiki/Mandat_repr%C3%A9sentatif | représentatifs} ou {@link https://fr.wikipedia.org/wiki/Mandat_imp%C3%A9ratif | impératifs}) passés ou présents."
214
+ }),
215
+ photo: st.optional(),
216
+ deports: e.array(e.lazy(() => fe)).optional()
217
+ }).meta({
218
+ title: "Acteur",
219
+ description: "Personne physique ayant été élue ou nommée dans {@link Organe | un organe}."
220
+ }), ot = e.object({
221
+ dateDebut: R().meta({
222
+ description: "Date de création de l'organe."
223
+ }),
224
+ dateAgrement: R().meta({
225
+ description: "Date de publication de la création de l'organe parlementaire au journal officiel."
226
+ }),
227
+ dateFin: R().meta({
228
+ description: "Date de clôture de l'organe."
229
+ })
230
+ }).meta({
231
+ title: "Début, fin et agrément",
232
+ description: "L'intervalle de temps durant lequel un organe existe."
233
+ }), at = e.object({
234
+ secretaire01: e.string().optional().meta({ description: "Civilité Prénom Nom." }),
235
+ secretaire02: e.string().optional().meta({ description: "Civilité Prénom Nom." })
236
+ }).meta({
237
+ description: "Le rôle du secrétaire administratif est d'assister le président dans tous les aspects du fonctionnement du groupe : à ce titre, il est notamment chargé de l'organisation matérielle des activités du groupe (dont les missions et les réceptions) et établit les comptes rendus de ses réunions. Cette définition {@link http://www2.assemblee-nationale.fr/decouvrir-l-assemblee/role-et-pouvoirs-de-l-assemblee-nationale/les-relations-interparlementaires/les-groupes-d-amitie | du secrétaire administratif d'un groupe d'amitié} se rapproche de celle des autres organes ({@link http://www.assemblee-nationale.fr/connaissance/reglement.pdf | Groupes Parlementaires} Article 20, etc.)"
238
+ }), rt = e.object({
239
+ codeNatureDep: Ce.optional(),
240
+ code: e.string().optional(),
241
+ libelle: ne.optional()
242
+ }), lt = e.object({
243
+ type: ue.optional(),
244
+ libelle: me.optional()
245
+ }), ct = e.object({
246
+ region: lt,
247
+ departement: rt
248
+ }), G = e.lazy(
249
+ () => e.object({
250
+ schemaVersion: e.string().optional(),
251
+ xsiType: Fe.optional(),
252
+ uid: T().meta({ description: "Identifiant unique de l'organe" }),
253
+ codeType: de,
254
+ libelle: e.string().meta({ description: "Nom complet." }),
255
+ libelleEdition: e.string().optional().meta({ description: "Le contenu de ce champ n'est pas défini." }),
256
+ libelleAbrege: e.string().meta({ description: "Nom court." }),
257
+ libelleAbrev: e.string().meta({ description: "Abréviation en majuscule." }),
258
+ viMoDe: ot.optional(),
259
+ organeParentRef: N().optional().meta({
260
+ description: "Identifiant unique (uid) de l'organe parent. Le gouvernement est l'organe parent des ministères, secrétariats d'état et du premier ministre. Une commission permanente (.codeType == COMPER) peut être parente d'une mission d'information (.codeType == MISINFO)"
261
+ }),
262
+ organeParent: G.optional(),
263
+ organePrecedentRef: N().optional(),
264
+ organePrecedent: G.optional(),
265
+ regime: Ve.optional(),
266
+ legislature: e.string().optional().meta({
267
+ description: "Numéro de {@link https://fr.wikipedia.org/wiki/Liste_des_l%C3%A9gislatures_fran%C3%A7aises | la législature} sous laquelle a été créé l'organe. Nombre entier."
268
+ }),
269
+ regimeJuridique: e.string().optional().meta({
270
+ description: "Référence en texte libre au texte législatif et réglementaire qui a créé l'organe. Il est possible de le retrouver en faisant une recherche sur https://www.legifrance.gouv.fr/. Uniquement renseigné pour les organismes extra parlementaires (dont le codeType est égal à ORGEXTPARL)."
271
+ }),
272
+ siteInternet: e.string().optional().meta({ description: "Site internet de l'organe." }),
273
+ nombreReunionsAnnuelles: e.string().optional().meta({ description: "Nombre de réunions annuelles. Nombre entier." }),
274
+ secretariat: at.optional(),
275
+ numero: e.string().optional(),
276
+ lieu: ct.optional(),
277
+ positionPolitique: Ie.optional(),
278
+ preseance: e.string().optional().meta({
279
+ description: "Plus le groupe politique est important, plus la préséance est proche de 1. Nombre entier. Uniquement renseigné pour les groupes politiques (dont le codeType est égal à GP)."
280
+ }),
281
+ couleurAssociee: e.string().optional().meta({
282
+ description: "Couleur suggérée pour l'affichage, sous la forme #rrggbb."
283
+ }),
284
+ listePays: e.array(e.string()).optional().meta({ description: "Le contenu de ce champ n'est pas défini." })
285
+ }).meta({
286
+ title: "Organe",
287
+ description: "Il contribue au fonctionnement de l'Etat (par exemple l'Assemblée nationale ou une Délégation parlementaire)"
288
+ })
289
+ ), B = e.object({
290
+ code: e.string(),
291
+ libelle: e.string()
292
+ }), ut = e.object({
293
+ type: B,
294
+ referenceTextuelle: e.string()
295
+ }), fe = e.object({
296
+ uid: T().meta({ description: "Identifiant unique du déport" }),
297
+ chronotag: e.string(),
298
+ legislature: e.string(),
299
+ refActeur: H().meta({ description: "Référence à l'acteur" }),
300
+ dateCreation: Y(),
301
+ datePublication: R(),
302
+ portee: B,
303
+ lecture: B,
304
+ instance: B,
305
+ cible: ut,
306
+ explication: e.string().optional()
307
+ }), mt = e.object({
308
+ organes: e.array(G),
309
+ acteurs: e.array(ge)
310
+ });
311
+ function dt(t) {
312
+ const n = ge.safeParse(JSON.parse(t));
313
+ if (!n.success)
314
+ throw new Error(K("ActeurClean", n.error));
315
+ return n.data;
316
+ }
317
+ function pt(t) {
318
+ const n = G.safeParse(JSON.parse(t));
319
+ if (!n.success)
320
+ throw new Error(K("OrganeClean", n.error));
321
+ return n.data;
322
+ }
323
+ function gt(t) {
324
+ const n = fe.safeParse(JSON.parse(t));
325
+ if (!n.success)
326
+ throw new Error(K("DeportClean", n.error));
327
+ return n.data;
328
+ }
329
+ function ft(t) {
330
+ const n = mt.safeParse(JSON.parse(t));
331
+ if (!n.success)
332
+ throw new Error(K("ActeursEtOrganesClean", n.error));
333
+ return n.data;
334
+ }
335
+ function _t(t) {
336
+ return JSON.stringify(t, null, 2);
337
+ }
338
+ function ht(t) {
339
+ return JSON.stringify(t, null, 2);
340
+ }
341
+ function jt(t) {
342
+ return JSON.stringify(t, null, 2);
343
+ }
344
+ function St(t) {
345
+ return JSON.stringify(t, null, 2);
346
+ }
347
+ function K(t, n) {
348
+ const i = n.issues.map((o) => ` - ${o.path.join(".")}: ${o.message}`).join(`
349
+ `);
350
+ return `Invalid ${t}:
351
+ ${i}`;
352
+ }
353
+ const W = {
354
+ toActeur: dt,
355
+ acteurToJson: _t,
356
+ toOrgane: pt,
357
+ organeToJson: ht,
358
+ toDeport: gt,
359
+ deportToJson: jt,
360
+ toActeursEtOrganes: ft,
361
+ acteursEtOrganesToJson: St
362
+ }, z = e.lazy(
363
+ () => e.object({
364
+ _: e.string().optional(),
365
+ id_syceron: e.string().optional(),
366
+ stime: e.string().optional(),
367
+ sup: e.string().optional(),
368
+ lienAdt: e.array(z).optional()
369
+ }).meta({ description: "Texte de la séance du débat." })
370
+ ), yt = e.object({
371
+ nom: e.string().optional(),
372
+ id: e.string().optional(),
373
+ qualite: e.string().optional()
374
+ }).meta({ description: "Orateur de la séance du débat." }), bt = e.object({
375
+ orateur: e.array(yt)
376
+ }), $ = e.lazy(
377
+ () => e.object({
378
+ id_preparation: e.string().optional(),
379
+ ordre_absolu_seance: e.string().optional(),
380
+ code_grammaire: e.string().optional(),
381
+ sommaire: e.string().optional(),
382
+ id_syceron: e.string().optional(),
383
+ valeur_ptsodj: e.string().optional(),
384
+ nivpoint: e.string().optional(),
385
+ ordinal_prise: e.string().optional(),
386
+ code_style: e.string().optional(),
387
+ code_parole: e.string().optional(),
388
+ valeur: e.string().optional(),
389
+ orateurs: e.union([bt, e.string()]).optional(),
390
+ texte: e.union([z, e.string()]).optional(),
391
+ paragraphe: e.array($).optional(),
392
+ interExtraction: e.array($).optional(),
393
+ point: e.array($).optional(),
394
+ structure: e.string().optional(),
395
+ id_acteur: e.string().optional(),
396
+ id_mandat: e.string().optional(),
397
+ id_nomination_oe: e.string().optional(),
398
+ id_nomination_op: e.string().optional(),
399
+ orateur: e.string().optional(),
400
+ bibard: e.string().optional(),
401
+ art: e.string().optional(),
402
+ adt: e.string().optional(),
403
+ ssadt: e.string().optional(),
404
+ roledebat: e.string().optional(),
405
+ changementPresidence: e.array($).optional(),
406
+ type_debat: e.string().optional(),
407
+ decision: Ue.optional().meta({
408
+ description: "Décision prise à l'issue du point de débat."
409
+ }),
410
+ ouvertureSeance: $.optional(),
411
+ qualite: e.string().optional(),
412
+ nom_orateur: e.string().optional()
413
+ }).meta({ description: "Point de la séance du débat." })
414
+ ), At = e.object({
415
+ point: $
416
+ }), vt = e.object({
417
+ journee: e.string(),
418
+ session: e.string()
419
+ }), Ct = e.object({
420
+ quantiemes: vt,
421
+ ouvertureSeance: e.array($).optional(),
422
+ point: e.array($),
423
+ finSeance: At.optional(),
424
+ paragraphe: e.array($).optional()
425
+ }).meta({ description: "Contenu de la séance du débat." }), It = e.object({
426
+ id_syceron: e.string(),
427
+ intitule: e.string().optional(),
428
+ sousIntitule: e.string().optional(),
429
+ type_debat: e.string().optional()
430
+ }), Q = e.lazy(
431
+ () => e.object({
432
+ valeur_pts_odj: e.string().optional(),
433
+ titreStruct: It,
434
+ para: e.array(e.union([z, e.string()])).optional(),
435
+ sommaire2: e.array(Q).optional(),
436
+ sommaire3: e.array(Q).optional(),
437
+ presidentSeance: e.array(z).optional(),
438
+ type_debat: e.string().optional()
439
+ }).meta({ description: "Sommaire de la séance du débat." })
440
+ ), Vt = e.object({
441
+ presidentSeance: z.meta({
442
+ description: "Président de la séance."
443
+ }),
444
+ sommaire1: e.array(Q).meta({ description: "Premier niveau de sommaire." }),
445
+ sommaire3: e.array(Q).optional().meta({ description: "Troisième niveau de sommaire." }),
446
+ sommaire2: e.array(Q).optional().meta({ description: "Second niveau de sommaire." }),
447
+ para: e.array(z).optional().meta({ description: "Paragraphe de texte libre dans le sommaire." })
448
+ }).meta({ description: "Sommaire de la séance du débat." }), Ft = e.object({
449
+ dateSeance: e.string(),
450
+ dateSeanceJour: e.string(),
451
+ numSeanceJour: e.string(),
452
+ numSeance: e.string(),
453
+ typeAssemblee: e.string(),
454
+ legislature: e.string(),
455
+ session: e.string(),
456
+ nomFichierJo: e.string(),
457
+ validite: e.string(),
458
+ etat: e.string(),
459
+ diffusion: e.string(),
460
+ version: e.string(),
461
+ environnement: e.string(),
462
+ heureGeneration: e.iso.datetime({ offset: !0 }),
463
+ sommaire: Vt
464
+ }).meta({ description: "Données de la séance du débat." }), _e = e.object({
465
+ schemaVersion: e.string().optional(),
466
+ uid: T().meta({
467
+ description: "Identifiant unique du compte rendu"
468
+ }),
469
+ seanceRef: e.string(),
470
+ sessionRef: e.string(),
471
+ metadonnees: Ft,
472
+ contenu: Ct,
473
+ videoUrl: e.string().optional(),
474
+ videoTimecode: e.number().optional()
475
+ }).meta({
476
+ title: "Débat",
477
+ description: "Compte rendu des débats en séance."
478
+ }), Dt = e.object({
479
+ comptesRendus: e.array(_e)
480
+ });
481
+ function Pt(t) {
482
+ const n = _e.safeParse(JSON.parse(t));
483
+ if (!n.success)
484
+ throw new Error(he("CompteRenduClean", n.error));
485
+ return n.data;
486
+ }
487
+ function Xt(t) {
488
+ const n = Dt.safeParse(JSON.parse(t));
489
+ if (!n.success)
490
+ throw new Error(he("ComptesRendusClean", n.error));
491
+ return n.data;
492
+ }
493
+ function Ot(t) {
494
+ return JSON.stringify(t, null, 2);
495
+ }
496
+ function wt(t) {
497
+ return JSON.stringify(t, null, 2);
498
+ }
499
+ function he(t, n) {
500
+ const i = n.issues.map((o) => ` - ${o.path.join(".")}: ${o.message}`).join(`
501
+ `);
502
+ return `Invalid ${t}:
503
+ ${i}`;
504
+ }
505
+ const oe = {
506
+ toCompteRendu: Pt,
507
+ compteRenduToJson: Ot,
508
+ toComptesRendus: Xt,
509
+ comptesRendusToJson: wt
510
+ }, qt = e.object({
511
+ texte: e.string().optional()
512
+ }), Lt = e.object({
513
+ libelle: e.string()
514
+ }), Rt = e.object({
515
+ code: De,
516
+ libelle: pe
517
+ }), xt = e.object({
518
+ codeTypeVote: Oe,
519
+ libelleTypeVote: Xe,
520
+ typeMajorite: Pe.meta({
521
+ description: "La signification de ce champ n'est pas définie."
522
+ })
523
+ }), je = e.object({
524
+ pour: e.string().meta({ description: "Nombre total de votes pour." }),
525
+ contre: e.string().meta({ description: "Nombre total de votes contre." }),
526
+ abstentions: e.string().optional().meta({ description: "Nombre total d'abstentions." }),
527
+ nonVotants: e.string().optional().meta({ description: "Nombre total de non votants" }),
528
+ nonVotantsVolontaires: e.string().optional().meta({ description: "Nombre total de non votants volontaires." })
529
+ }), $t = e.object({
530
+ nombreVotants: e.string().meta({
531
+ description: "Nombre de votants, c'est à dire de {@link http://www2.assemblee-nationale.fr/decouvrir-l-assemblee/role-et-pouvoirs-de-l-assemblee-nationale/les-fonctions-de-l-assemblee-nationale/les-fonctions-legislatives/les-votes-a-l-assemblee-nationale | sièges occupés dans l'hémicycle}."
532
+ }),
533
+ suffragesExprimes: e.string().meta({ description: "Nombre de suffrages exprimés." }),
534
+ nbrSuffragesRequis: e.string().meta({
535
+ description: "Nombre de suffrages requis, le {@link http://www2.assemblee-nationale.fr/decouvrir-l-assemblee/role-et-pouvoirs-de-l-assemblee-nationale/les-fonctions-de-l-assemblee-nationale/les-fonctions-legislatives/les-votes-a-l-assemblee-nationale | cas échéant}."
536
+ }),
537
+ annonce: pe,
538
+ decompte: je
539
+ }), D = e.object({
540
+ acteurRef: H().meta({ description: "Référence à l'acteur votant" }),
541
+ mandatRef: e.string(),
542
+ parDelegation: e.boolean().optional(),
543
+ numPlace: e.number().optional(),
544
+ causePositionVote: we.optional()
545
+ }), Mt = e.object({
546
+ nonVotants: e.array(D).optional(),
547
+ pour: e.array(D).optional(),
548
+ contre: e.array(D).optional(),
549
+ abstentions: e.array(D).optional()
550
+ }), Nt = e.object({
551
+ positionMajoritaire: qe,
552
+ decompteVoix: je,
553
+ decompteNominatif: Mt
554
+ }), zt = e.object({
555
+ organeRef: N(),
556
+ nombreMembresGroupe: e.string(),
557
+ vote: Nt
558
+ }), Tt = e.object({
559
+ organeRef: N(),
560
+ groupes: e.array(zt)
561
+ }), Ut = e.object({
562
+ nonVotants: e.array(D).optional(),
563
+ pour: e.array(D).optional(),
564
+ contre: e.array(D).optional(),
565
+ abstentions: e.array(D).optional(),
566
+ nonVotantsVolontaires: e.array(D).optional()
567
+ }), kt = e.object({
568
+ nonVotants: e.array(D).optional(),
569
+ pour: e.array(D).optional(),
570
+ contre: e.array(D).optional(),
571
+ abstentions: e.array(D).optional(),
572
+ nonVotantsVolontaires: e.array(D).optional(),
573
+ dysfonctionnement: Ut.optional()
574
+ }), Se = e.object({
575
+ schemaVersion: e.string().optional(),
576
+ uid: T(),
577
+ numero: e.string().meta({
578
+ description: "Numéro unique du vote, relativement à la législature, débutant par 1 et par incrément de 1. On le retrouve aussi à la fin de l'identifiant unique du vote (uid)."
579
+ }),
580
+ organeRef: N().meta({
581
+ description: "L'identifiant unique (uid) de l'{@link Organe | organe} au sein duquel se déroule le vote. Il s'agit toujours de l'Assemblée Nationale mais son uid varie en fonction de la législature."
582
+ }),
583
+ legislature: e.string().meta({
584
+ description: "Numéro de {@link https://fr.wikipedia.org/wiki/Liste_des_l%C3%A9gislatures_fran%C3%A7aises | la législature} sous laquelle a été créé le scrutin. Nombre entier."
585
+ }),
586
+ sessionRef: e.string().meta({ description: "Le contenu de ce champ n'est pas défini." }),
587
+ seanceRef: e.string().meta({
588
+ description: "Identifiant unique (uid) de l'entrée de l'{@link Reunion | agenda} correspondant au moment ou le vote a lieu."
589
+ }),
590
+ dateScrutin: Y().meta({
591
+ description: "Date à laquelle le vote a eu lieu."
592
+ }),
593
+ quantiemeJourSeance: e.string().meta({ description: "Numéro de la séance dans la journée." }),
594
+ typeVote: xt,
595
+ sort: Rt,
596
+ titre: e.string().meta({ description: "Objet du vote." }),
597
+ demandeur: qt,
598
+ objet: Lt,
599
+ modePublicationDesVotes: Re.meta({
600
+ description: "La signification de ce champ n'est pas définie."
601
+ }),
602
+ syntheseVote: $t,
603
+ ventilationVotes: Tt,
604
+ miseAuPoint: kt.optional(),
605
+ lieuVote: Le.optional()
606
+ }), Jt = e.object({
607
+ scrutins: e.array(Se)
608
+ });
609
+ function Qt(t) {
610
+ const n = Se.safeParse(JSON.parse(t));
611
+ if (!n.success)
612
+ throw new Error(ye("ScrutinClean", n.error));
613
+ return n.data;
614
+ }
615
+ function Et(t) {
616
+ const n = Jt.safeParse(JSON.parse(t));
617
+ if (!n.success)
618
+ throw new Error(ye("ScrutinsClean", n.error));
619
+ return n.data;
620
+ }
621
+ function Wt(t) {
622
+ return JSON.stringify(t, null, 2);
623
+ }
624
+ function Zt(t) {
625
+ return JSON.stringify(t, null, 2);
626
+ }
627
+ function ye(t, n) {
628
+ const i = n.issues.map((o) => ` - ${o.path.join(".")}: ${o.message}`).join(`
629
+ `);
630
+ return `Invalid ${t}:
631
+ ${i}`;
632
+ }
633
+ const ae = {
634
+ toScrutin: Qt,
635
+ scrutinToJson: Wt,
636
+ toScrutins: Et,
637
+ scrutinsToJson: Zt
638
+ }, A = {
639
+ acteursEtOrganes: [
640
+ {
641
+ // AMO10 (XVII)
642
+ //
643
+ // Contient les députés actifs
644
+ // * avec tous les mandats en cours
645
+ // * y compris avec leur parti politique (typeOrgane: "PARPOL")
646
+ // * mais sans les mandats achevés (y compris dans cette législature)
647
+ //
648
+ // Organes :
649
+ // * Contient seulement les organes correspondants aux mandats en cours
650
+ // * avec le xsiType de l'organe
651
+ // * avec des commissions sénatoriales (permanentes et spéciales) en cours
652
+ // * avec des délégations sénatoriales en cours
653
+ // * avec des groupes sénatoriaux en cours
654
+ // * avec des ministères en cours
655
+ // * avec les Présidences de la République (y compris Sarkozy)
656
+ // * avec le Conseil constitutionnel
657
+ //
658
+ // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO20
659
+ // (qui est lui même un sous-ensemble de l'AMO30).
660
+ // Il n'apporte donc absolument rien par rapport à AMO20 ou l'AMO30.
661
+ filename: "AMO10_deputes_actifs_mandats_actifs_organes_XVII.json",
662
+ name: "AMO10_deputes_actifs_mandats_actifs_organes_XVII",
663
+ ignoreForWeb: !0,
664
+ legislature: l.DixSept,
665
+ repairZip: y,
666
+ structure: h.SegmentedFiles,
667
+ title: "Députés actifs et organes de la XVIIème législature",
668
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes.json.zip"
669
+ },
670
+ {
671
+ // AMO10 (XVI)
672
+ //
673
+ // Contient les députés actifs
674
+ // * avec tous les mandats en cours
675
+ // * y compris avec leur parti politique (typeOrgane: "PARPOL")
676
+ // * mais sans les mandats achevés (y compris dans cette législature)
677
+ //
678
+ // Organes :
679
+ // * Contient seulement les organes correspondants aux mandats en cours
680
+ // * avec le xsiType de l'organe
681
+ // * avec des commissions sénatoriales (permanentes et spéciales) en cours
682
+ // * avec des délégations sénatoriales en cours
683
+ // * avec des groupes sénatoriaux en cours
684
+ // * avec des ministères en cours
685
+ // * avec les Présidences de la République (y compris Sarkozy)
686
+ // * avec le Conseil constitutionnel
687
+ //
688
+ // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO20
689
+ // (qui est lui même un sous-ensemble de l'AMO30).
690
+ // Il n'apporte donc absolument rien par rapport à AMO20 ou l'AMO30.
691
+ filename: "AMO10_deputes_actifs_mandats_actifs_organes_XVI.json",
692
+ name: "AMO10_deputes_actifs_mandats_actifs_organes_XVI",
693
+ ignoreForWeb: !0,
694
+ legislature: l.Seize,
695
+ repairZip: y,
696
+ structure: h.SegmentedFiles,
697
+ title: "Députés actifs et organes de la XVIème législature",
698
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes.json.zip"
699
+ },
700
+ {
701
+ // AMO10 (XV)
702
+ //
703
+ // Contient les députés actifs
704
+ // * avec tous les mandats en cours
705
+ // * y compris avec leur parti politique (typeOrgane: "PARPOL")
706
+ // * mais sans les mandats achevés (y compris dans cette législature)
707
+ //
708
+ // Organes :
709
+ // * Contient seulement les organes correspondants aux mandats en cours
710
+ // * avec le xsiType de l'organe
711
+ // * avec des commissions sénatoriales (permanentes et spéciales) en cours
712
+ // * avec des délégations sénatoriales en cours
713
+ // * avec des groupes sénatoriaux en cours
714
+ // * avec des ministères en cours
715
+ // * avec les Présidences de la République (y compris Sarkozy)
716
+ // * avec le Conseil constitutionnel
717
+ //
718
+ // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO20
719
+ // (qui est lui même un sous-ensemble de l'AMO30).
720
+ // Il n'apporte donc absolument rien par rapport à AMO20 ou l'AMO30.
721
+ filename: "AMO10_deputes_actifs_mandats_actifs_organes_XV.json",
722
+ name: "AMO10_deputes_actifs_mandats_actifs_organes_XV",
723
+ ignoreForWeb: !0,
724
+ legislature: l.Quinze,
725
+ repairZip: y,
726
+ structure: h.SegmentedFiles,
727
+ title: "Députés actifs et organes de la XVème législature",
728
+ 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"
729
+ },
730
+ {
731
+ // AMO20 (XVII)
732
+ //
733
+ // Contient les députés de la législature, actifs ou non (invalidés, etc), les sénateurs actuels
734
+ // Pour les députés :
735
+ // * avec tous leurs mandats de la législature
736
+ // * y compris les mandats achevés
737
+ // * y compris leurs partis politiques (typeOrgane: "PARPOL")
738
+ // * mais sans les mandats des législatures précédentes (qui sont dans AMO40)
739
+ //
740
+ // Contient tous les organes référencés par les mandats
741
+ // * avec le xsiType de l'organe
742
+ // * avec des commissions sénatoriales (permanentes et spéciales) en cours
743
+ // * avec des délégations sénatoriales en cours
744
+ // * avec des groupes sénatoriaux en cours
745
+ // * avec des ministères en cours
746
+ // * avec les Présidences de la République (y compris Sarkozy)
747
+ // * avec le Conseil constitutionnel
748
+ //
749
+ // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO30.
750
+ // Il n'apporte donc absolument rien par rapport à l'AMO30.
751
+ filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XVII.json",
752
+ name: "AMO20_dep_sen_min_tous_mandats_et_organes_XVII",
753
+ ignoreForWeb: !0,
754
+ legislature: l.DixSept,
755
+ repairZip: y,
756
+ structure: h.SegmentedFiles,
757
+ title: "Acteurs et organes de la XVIIème législature",
758
+ 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"
759
+ },
760
+ {
761
+ // AMO20 (XVI)
762
+ //
763
+ // Contient les députés de la législature, actifs ou non (invalidés, etc), les sénateurs actuels
764
+ // Pour les députés :
765
+ // * avec tous leurs mandats de la législature
766
+ // * y compris les mandats achevés
767
+ // * y compris leurs partis politiques (typeOrgane: "PARPOL")
768
+ // * mais sans les mandats des législatures précédentes (qui sont dans AMO40)
769
+ //
770
+ // Contient tous les organes référencés par les mandats
771
+ // * avec le xsiType de l'organe
772
+ // * avec des commissions sénatoriales (permanentes et spéciales) en cours
773
+ // * avec des délégations sénatoriales en cours
774
+ // * avec des groupes sénatoriaux en cours
775
+ // * avec des ministères en cours
776
+ // * avec les Présidences de la République (y compris Sarkozy)
777
+ // * avec le Conseil constitutionnel
778
+ //
779
+ // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO30.
780
+ // Il n'apporte donc absolument rien par rapport à l'AMO30.
781
+ filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XVI.json",
782
+ name: "AMO20_dep_sen_min_tous_mandats_et_organes_XVI",
783
+ ignoreForWeb: !0,
784
+ legislature: l.Seize,
785
+ repairZip: y,
786
+ structure: h.SegmentedFiles,
787
+ title: "Acteurs et organes de la XVIème législature",
788
+ 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"
789
+ },
790
+ {
791
+ // AMO20 (XV)
792
+ //
793
+ // Contient les députés de la législature, actifs ou non (invalidés, etc), les sénateurs actuels
794
+ // Pour les députés :
795
+ // * avec tous leurs mandats de la législature
796
+ // * y compris les mandats achevés
797
+ // * y compris leurs partis politiques (typeOrgane: "PARPOL")
798
+ // * mais sans les mandats des législatures précédentes (qui sont dans AMO40)
799
+ //
800
+ // Contient tous les organes référencés par les mandats
801
+ // * avec le xsiType de l'organe
802
+ // * avec des commissions sénatoriales (permanentes et spéciales) en cours
803
+ // * avec des délégations sénatoriales en cours
804
+ // * avec des groupes sénatoriaux en cours
805
+ // * avec des ministères en cours
806
+ // * avec les Présidences de la République (y compris Sarkozy)
807
+ // * avec le Conseil constitutionnel
808
+ //
809
+ // Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO30.
810
+ // Il n'apporte donc absolument rien par rapport à l'AMO30.
811
+ filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XV.json",
812
+ name: "AMO20_dep_sen_min_tous_mandats_et_organes_XV",
813
+ ignoreForWeb: !0,
814
+ legislature: l.Quinze,
815
+ repairZip: y,
816
+ structure: h.SegmentedFiles,
817
+ title: "Acteurs et organes de la XVème législature",
818
+ 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"
819
+ },
820
+ {
821
+ // AMO20 (XIV)
822
+ //
823
+ // Comme AMO20 (XV) mais pour la XIVème législature
824
+ // Tous les acteurs sauf un (PA429892) sont présents en plus à jour dans AMO30.
825
+ // Cet acteur PA429892 (ancienne Sénatrice) n'est présent dans aucun des autres
826
+ // fichiers AMO.
827
+ // Tous les organes sont présents en plus complets dans AMO30.
828
+ //
829
+ // Ce fichier est donc à un détail près (PA429892) un sous-ensemble d'AMO30.
830
+ // Il n'apporte donc quasiment rien par rapport à l'AMO30.
831
+ filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XIV.json",
832
+ name: "AMO20_dep_sen_min_tous_mandats_et_organes_XIV",
833
+ ignoreForWeb: !0,
834
+ legislature: l.Quatorze,
835
+ structure: h.SingleFile,
836
+ title: "Acteurs et organes de la XIVème législature",
837
+ 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"
838
+ },
839
+ {
840
+ // AMO30 (XVII)
841
+ //
842
+ // Ce fichier contient tous les acteurs et organes.
843
+ // C'est un sur-ensemble des fichiers AMO20.
844
+ filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json",
845
+ name: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique",
846
+ legislature: l.All,
847
+ repairZip: y,
848
+ structure: h.SegmentedFiles,
849
+ title: "Historique de tous les acteurs et organes depuis la XIème législature",
850
+ 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"
851
+ },
852
+ // {
853
+ // // AMO30 (XVI)
854
+ // //
855
+ // // Ce fichier contient tous les acteurs et organes.
856
+ // // C'est un sur-ensemble des fichiers AMO20.
857
+ // filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json",
858
+ // legislature: Legislature.All,
859
+ // repairZip: repairForJsonSubdirectory,
860
+ // structure: DatasetStructure.SegmentedFiles,
861
+ // title:
862
+ // "Historique de tous les acteurs et organes depuis la XIème législature",
863
+ // 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",
864
+ // },
865
+ // {
866
+ // // AMO30 (XV)
867
+ // //
868
+ // // Ce fichier contient tous les acteurs et organes.
869
+ // // C'est un sur-ensemble des fichiers AMO20.
870
+ // filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json",
871
+ // legislature: Legislature.All,
872
+ // repairZip: (dataset: Dataset, dataDir: string) => {
873
+ // const targetDir = path.join(dataDir, dataset.filename)
874
+ // if (fs.existsSync(targetDir)) {
875
+ // fs.removeSync(targetDir)
876
+ // }
877
+ // fs.moveSync(path.join(dataDir, "json"), targetDir)
878
+ // },
879
+ // structure: DatasetStructure.SegmentedFiles,
880
+ // title:
881
+ // "Historique de tous les acteurs et organes depuis la XIème législature",
882
+ // 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",
883
+ // },
884
+ {
885
+ // AMO40 (XVII)
886
+ //
887
+ // Contient les députés actifs (les mêmes qu'AMO20)
888
+ // * avec presque tous leurs mandats
889
+ // * y compris les mandats achevés et ceux des législatures précédentes
890
+ // * y compris leurs partis politiques précédents
891
+ // * mais sans leur parti politique actuel (typeOrgane: "PARPOL")
892
+ //
893
+ // Contient beaucoup d'organes référencés, y compris ceux des législatures
894
+ // précédentes
895
+ // * mais il manque le xsiType des organes
896
+ // * ne contient pas les organes sénatoriaux
897
+ // * ne contient pas les ministères
898
+ // * ne contient pas la Présidence de la République
899
+ // * ne contient pas le Conseil constitutionnel
900
+ //
901
+ // Pour les acteurs, ce dépôt est un sous-ensemble strict de AMO30 :
902
+ // Il a moins d'acteurs et il sont moins complets.
903
+ //
904
+ // Pour les organes :
905
+ // Quand l'organe est aussi présent dans AMO30, il vaut mieux prendre celui
906
+ // d'AMO30, car il contient le xsiType (c'est la seule différence semble-t-i).
907
+ // Sinon, il faut le prendre seulement si on est intéressé par les législatures
908
+ // précédentes.
909
+ filename: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XVII.json",
910
+ name: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XVII",
911
+ ignoreForWeb: !0,
912
+ legislature: l.DixSept,
913
+ repairZip: async (t, n) => {
914
+ const i = s.join(n, t.filename);
915
+ await r.pathExists(i) && await r.remove(i), await r.mkdir(i), await r.pathExists(
916
+ s.join(n, `${t.filename}.temp`, "acteur")
917
+ ) && await r.move(
918
+ s.join(n, `${t.filename}.temp`, "acteur"),
919
+ s.join(i, "acteur")
920
+ ), await r.move(
921
+ s.join(n, `${t.filename}.temp`, "organe"),
922
+ s.join(i, "organe")
923
+ );
924
+ },
925
+ structure: h.SegmentedFiles,
926
+ title: "Députés actifs et organes de la XVIIème législature",
927
+ 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"
928
+ },
929
+ {
930
+ // AMO40 (XVI)
931
+ //
932
+ // Contient les députés actifs (les mêmes qu'AMO20)
933
+ // * avec presque tous leurs mandats
934
+ // * y compris les mandats achevés et ceux des législatures précédentes
935
+ // * y compris leurs partis politiques précédents
936
+ // * mais sans leur parti politique actuel (typeOrgane: "PARPOL")
937
+ //
938
+ // Contient beaucoup d'organes référencés, y compris ceux des législatures
939
+ // précédentes
940
+ // * mais il manque le xsiType des organes
941
+ // * ne contient pas les organes sénatoriaux
942
+ // * ne contient pas les ministères
943
+ // * ne contient pas la Présidence de la République
944
+ // * ne contient pas le Conseil constitutionnel
945
+ //
946
+ // Pour les acteurs, ce dépôt est un sous-ensemble strict de AMO30 :
947
+ // Il a moins d'acteurs et il sont moins complets.
948
+ //
949
+ // Pour les organes :
950
+ // Quand l'organe est aussi présent dans AMO30, il vaut mieux prendre celui
951
+ // d'AMO30, car il contient le xsiType (c'est la seule différence semble-t-i).
952
+ // Sinon, il faut le prendre seulement si on est intéressé par les législatures
953
+ // précédentes.
954
+ filename: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XVI.json",
955
+ name: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XVI",
956
+ ignoreForWeb: !0,
957
+ legislature: l.Seize,
958
+ repairZip: async (t, n) => {
959
+ const i = s.join(n, t.filename);
960
+ await r.pathExists(i) && await r.remove(i), await r.mkdir(i), await r.pathExists(
961
+ s.join(n, `${t.filename}.temp`, "acteur")
962
+ ) && await r.move(
963
+ s.join(n, `${t.filename}.temp`, "acteur"),
964
+ s.join(i, "acteur")
965
+ ), await r.move(
966
+ s.join(n, `${t.filename}.temp`, "organe"),
967
+ s.join(i, "organe")
968
+ );
969
+ },
970
+ structure: h.SegmentedFiles,
971
+ title: "Députés actifs et organes de la XVIème législature",
972
+ 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"
973
+ },
974
+ {
975
+ // AMO40 (XV)
976
+ //
977
+ // Contient les députés actifs (les mêmes qu'AMO20)
978
+ // * avec presque tous leurs mandats
979
+ // * y compris les mandats achevés et ceux des législatures précédentes
980
+ // * y compris leurs partis politiques précédents
981
+ // * mais sans leur parti politique actuel (typeOrgane: "PARPOL")
982
+ //
983
+ // Contient beaucoup d'organes référencés, y compris ceux des législatures
984
+ // précédentes
985
+ // * mais il manque le xsiType des organes
986
+ // * ne contient pas les organes sénatoriaux
987
+ // * ne contient pas les ministères
988
+ // * ne contient pas la Présidence de la République
989
+ // * ne contient pas le Conseil constitutionnel
990
+ //
991
+ // Pour les acteurs, ce dépôt est un sous-ensemble strict de AMO30 :
992
+ // Il a moins d'acteurs et il sont moins complets.
993
+ //
994
+ // Pour les organes :
995
+ // Quand l'organe est aussi présent dans AMO30, il vaut mieux prendre celui
996
+ // d'AMO30, car il contient le xsiType (c'est la seule différence semble-t-i).
997
+ // Sinon, il faut le prendre seulement si on est intéressé par les législatures
998
+ // précédentes.
999
+ filename: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XV.json",
1000
+ name: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XV",
1001
+ ignoreForWeb: !0,
1002
+ legislature: l.Quinze,
1003
+ repairZip: async (t, n) => {
1004
+ const i = s.join(n, t.filename);
1005
+ await r.pathExists(i) && await r.remove(i), await r.mkdir(i), await r.move(
1006
+ s.join(n, `${t.filename}.temp`, "acteur"),
1007
+ s.join(i, "acteur")
1008
+ ), await r.move(
1009
+ s.join(n, `${t.filename}.temp`, "organe"),
1010
+ s.join(i, "organe")
1011
+ );
1012
+ },
1013
+ structure: h.SegmentedFiles,
1014
+ title: "Députés actifs et organes de la XVème législature",
1015
+ 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"
1016
+ },
1017
+ {
1018
+ // AMO50 (XVII)
1019
+ //
1020
+ // Attention, ce fichier n'est pas mis à jour régulièrement !
1021
+ //
1022
+ // Pour les acteurs :
1023
+ // * c'est un sous ensemble obsolète d'AMO30
1024
+ // * il manque les xsiType aux mandats
1025
+ //
1026
+ // Pour les organes :
1027
+ // * c'est un sous ensemble obsolète d'AMO30
1028
+ // * il manque les xsiType
1029
+ //
1030
+ // Ce fichier n'apporte donc absolument rien par rapport à l'AMO30,
1031
+ // dont il est un sous ensemble obsolète.
1032
+ filename: "AMO50_acteurs_mandats_organes_divises_XVII.json",
1033
+ name: "AMO50_acteurs_mandats_organes_divises_XVII",
1034
+ ignoreForWeb: !0,
1035
+ legislature: l.DixSept,
1036
+ repairZip: async (t, n) => {
1037
+ const i = s.join(n, t.filename);
1038
+ await r.pathExists(i) && await r.remove(i), await r.mkdir(i), await r.move(
1039
+ s.join(n, `${t.filename}.temp`, "mandat"),
1040
+ s.join(i, "mandat")
1041
+ ), await r.move(
1042
+ s.join(n, `${t.filename}.temp`, "acteur"),
1043
+ s.join(i, "acteur")
1044
+ ), await r.move(
1045
+ s.join(n, `${t.filename}.temp`, "organe"),
1046
+ s.join(i, "organe")
1047
+ );
1048
+ },
1049
+ structure: h.SegmentedFiles,
1050
+ title: "Acteurs, mandats et organes de la XVIIème législature (fichiers séparés, y compris mandats)",
1051
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/amo/acteurs_mandats_organes_divises/AMO50_acteurs_mandats_organes_divises.json.zip"
1052
+ },
1053
+ {
1054
+ // AMO50 (XVI)
1055
+ //
1056
+ // Attention, ce fichier n'est pas mis à jour régulièrement !
1057
+ //
1058
+ // Pour les acteurs :
1059
+ // * c'est un sous ensemble obsolète d'AMO30
1060
+ // * il manque les xsiType aux mandats
1061
+ //
1062
+ // Pour les organes :
1063
+ // * c'est un sous ensemble obsolète d'AMO30
1064
+ // * il manque les xsiType
1065
+ //
1066
+ // Ce fichier n'apporte donc absolument rien par rapport à l'AMO30,
1067
+ // dont il est un sous ensemble obsolète.
1068
+ filename: "AMO50_acteurs_mandats_organes_divises_XVI.json",
1069
+ name: "AMO50_acteurs_mandats_organes_divises_XVI",
1070
+ ignoreForWeb: !0,
1071
+ legislature: l.Seize,
1072
+ repairZip: async (t, n) => {
1073
+ const i = s.join(n, t.filename);
1074
+ await r.pathExists(i) && await r.remove(i), await r.mkdir(i), await r.move(
1075
+ s.join(n, `${t.filename}.temp`, "mandat"),
1076
+ s.join(i, "mandat")
1077
+ ), await r.move(
1078
+ s.join(n, `${t.filename}.temp`, "acteur"),
1079
+ s.join(i, "acteur")
1080
+ ), await r.move(
1081
+ s.join(n, `${t.filename}.temp`, "organe"),
1082
+ s.join(i, "organe")
1083
+ );
1084
+ },
1085
+ structure: h.SegmentedFiles,
1086
+ title: "Acteurs, mandats et organes de la XVIème législature (fichiers séparés, y compris mandats)",
1087
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/amo/acteurs_mandats_organes_divises/AMO50_acteurs_mandats_organes_divises.json.zip"
1088
+ },
1089
+ {
1090
+ // AMO50 (XV)
1091
+ //
1092
+ // Attention, ce fichier n'est pas mis à jour régulièrement !
1093
+ //
1094
+ // Pour les acteurs :
1095
+ // * c'est un sous ensemble obsolète d'AMO30
1096
+ // * il manque les xsiType aux mandats
1097
+ //
1098
+ // Pour les organes :
1099
+ // * c'est un sous ensemble obsolète d'AMO30
1100
+ // * il manque les xsiType
1101
+ //
1102
+ // Ce fichier n'apporte donc absolument rien par rapport à l'AMO30,
1103
+ // dont il est un sous ensemble obsolète.
1104
+ filename: "AMO50_acteurs_mandats_organes_divises_XV.json",
1105
+ name: "AMO50_acteurs_mandats_organes_divises_XV",
1106
+ ignoreForWeb: !0,
1107
+ legislature: l.Quinze,
1108
+ repairZip: async (t, n) => {
1109
+ const i = s.join(n, t.filename);
1110
+ await r.pathExists(i) && await r.remove(i), await r.mkdir(i), await r.move(
1111
+ s.join(n, `${t.filename}.temp`, "mandat"),
1112
+ s.join(i, "mandat")
1113
+ ), await r.move(
1114
+ s.join(n, `${t.filename}.temp`, "acteur"),
1115
+ s.join(i, "acteur")
1116
+ ), await r.move(
1117
+ s.join(n, `${t.filename}.temp`, "organe"),
1118
+ s.join(i, "organe")
1119
+ );
1120
+ },
1121
+ structure: h.SegmentedFiles,
1122
+ title: "Acteurs, mandats et organes de la XVème législature (fichiers séparés, y compris mandats)",
1123
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/15/amo/acteurs_mandats_organes_divises/AMO50_acteurs_mandats_organes_divises_XV.json.zip"
1124
+ }
1125
+ ],
1126
+ agendas: [
1127
+ {
1128
+ filename: "Agenda_XVII.json",
1129
+ name: "Agenda_XVII",
1130
+ legislature: l.DixSept,
1131
+ repairZip: y,
1132
+ structure: h.SegmentedFiles,
1133
+ title: "Agenda de la XVIIème législature",
1134
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/vp/reunions/Agenda.json.zip"
1135
+ },
1136
+ {
1137
+ filename: "Agenda_XVI.json",
1138
+ name: "Agenda_XVI",
1139
+ legislature: l.Seize,
1140
+ repairZip: y,
1141
+ structure: h.SegmentedFiles,
1142
+ title: "Agenda de la XVIème législature",
1143
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/vp/reunions/Agenda.json.zip"
1144
+ },
1145
+ {
1146
+ filename: "Agenda_XV.json",
1147
+ name: "Agenda_XV",
1148
+ legislature: l.Quinze,
1149
+ repairZip: y,
1150
+ structure: h.SegmentedFiles,
1151
+ title: "Agenda de la XVème législature",
1152
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/15/vp/reunions/Agenda_XV.json.zip"
1153
+ },
1154
+ {
1155
+ filename: "Agenda_XIV.json",
1156
+ name: "Agenda_XIV",
1157
+ legislature: l.Quatorze,
1158
+ structure: h.SingleFile,
1159
+ title: "Agenda de la XIVème législature",
1160
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/14/vp/reunions/Agenda_XIV.json.zip"
1161
+ }
1162
+ ],
1163
+ amendements: [
1164
+ {
1165
+ filename: "Amendements_XVII.json",
1166
+ name: "Amendements_XVII",
1167
+ legislature: l.DixSept,
1168
+ repairZip: y,
1169
+ structure: h.SegmentedFiles,
1170
+ title: "Amendements de la XVIIème législature",
1171
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/loi/amendements_div_legis/Amendements.json.zip"
1172
+ },
1173
+ {
1174
+ filename: "Amendements_XVI.json",
1175
+ name: "Amendements_XVI",
1176
+ legislature: l.Seize,
1177
+ repairZip: y,
1178
+ structure: h.SegmentedFiles,
1179
+ title: "Amendements de la XVIème législature",
1180
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/loi/amendements_div_legis/Amendements.json.zip"
1181
+ },
1182
+ {
1183
+ filename: "Amendements_XV.json",
1184
+ name: "Amendements_XV",
1185
+ legislature: l.Quinze,
1186
+ repairZip: y,
1187
+ structure: h.SegmentedFiles,
1188
+ title: "Amendements de la XVème législature",
1189
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/15/loi/amendements_legis/Amendements_XV.json.zip"
1190
+ }
1191
+ // {
1192
+ // filename: "Amendements_XIV.json",
1193
+ // ignoreForWeb: true,
1194
+ // legislature: Legislature.Quatorze,
1195
+ // structure: DatasetStructure.SingleFile,
1196
+ // title: "Amendements de la XIVème législature",
1197
+ // url:
1198
+ // "https://data.assemblee-nationale.fr/static/openData/repository/14/loi/amendements_legis_XIV/Amendements_XIV.json.zip",
1199
+ // },
1200
+ ],
1201
+ dossiersLegislatifs: [
1202
+ {
1203
+ filename: "Dossiers_Legislatifs_XVII.json",
1204
+ name: "Dossiers_Legislatifs_XVII",
1205
+ legislature: l.DixSept,
1206
+ repairZip: y,
1207
+ structure: h.SegmentedFiles,
1208
+ title: "Dossiers législatifs de la XVIIème législature",
1209
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/loi/dossiers_legislatifs/Dossiers_Legislatifs.json.zip"
1210
+ },
1211
+ {
1212
+ filename: "Dossiers_Legislatifs_XVI.json",
1213
+ name: "Dossiers_Legislatifs_XVI",
1214
+ legislature: l.Seize,
1215
+ repairZip: y,
1216
+ structure: h.SegmentedFiles,
1217
+ title: "Dossiers législatifs de la XVIème législature",
1218
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/loi/dossiers_legislatifs/Dossiers_Legislatifs.json.zip"
1219
+ },
1220
+ {
1221
+ filename: "Dossiers_Legislatifs_XV.json",
1222
+ name: "Dossiers_Legislatifs_XV",
1223
+ legislature: l.Quinze,
1224
+ repairZip: y,
1225
+ structure: h.SegmentedFiles,
1226
+ title: "Dossiers législatifs de la XVème législature",
1227
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/15/loi/dossiers_legislatifs/Dossiers_Legislatifs_XV.json.zip"
1228
+ },
1229
+ {
1230
+ filename: "Dossiers_Legislatifs_XIV.json",
1231
+ name: "Dossiers_Legislatifs_XIV",
1232
+ legislature: l.Quatorze,
1233
+ structure: h.SingleFile,
1234
+ title: "Dossiers législatifs de la XIVème législature",
1235
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/14/loi/dossiers_legislatifs/Dossiers_Legislatifs_XIV.json.zip"
1236
+ }
1237
+ ],
1238
+ scrutins: [
1239
+ {
1240
+ filename: "Scrutins_XVII.json",
1241
+ name: "Scrutins_XVII",
1242
+ legislature: l.DixSept,
1243
+ repairZip: y,
1244
+ structure: h.SegmentedFiles,
1245
+ title: "Scrutins de la XVIIème législature",
1246
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/loi/scrutins/Scrutins.json.zip"
1247
+ },
1248
+ {
1249
+ filename: "Scrutins_XVI.json",
1250
+ name: "Scrutins_XVI",
1251
+ legislature: l.Seize,
1252
+ repairZip: y,
1253
+ structure: h.SegmentedFiles,
1254
+ title: "Scrutins de la XVIème législature",
1255
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/loi/scrutins/Scrutins.json.zip"
1256
+ },
1257
+ {
1258
+ filename: "Scrutins_XV.json",
1259
+ name: "Scrutins_XV",
1260
+ legislature: l.Quinze,
1261
+ repairZip: y,
1262
+ structure: h.SegmentedFiles,
1263
+ title: "Scrutins de la XVème législature",
1264
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/15/loi/scrutins/Scrutins_XV.json.zip"
1265
+ },
1266
+ {
1267
+ filename: "Scrutins_XIV.json",
1268
+ name: "Scrutins_XIV",
1269
+ legislature: l.Quatorze,
1270
+ structure: h.SingleFile,
1271
+ title: "Scrutins de la XIVème législature",
1272
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/14/loi/scrutins/Scrutins_XIV.json.zip"
1273
+ }
1274
+ ],
1275
+ questions: [
1276
+ {
1277
+ filename: "Questions_ecrites_XVII.json",
1278
+ name: "Questions_ecrites_XVII",
1279
+ legislature: l.DixSept,
1280
+ repairZip: y,
1281
+ structure: h.SegmentedFiles,
1282
+ title: "Questions écrites de la XVIIème législature",
1283
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_ecrites/Questions_ecrites.json.zip"
1284
+ },
1285
+ {
1286
+ filename: "Questions_ecrites_XVI.json",
1287
+ name: "Questions_ecrites_XVI",
1288
+ legislature: l.Seize,
1289
+ repairZip: y,
1290
+ structure: h.SegmentedFiles,
1291
+ title: "Questions écrites de la XVIème législature",
1292
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_ecrites/Questions_ecrites.json.zip"
1293
+ },
1294
+ {
1295
+ filename: "Questions_gouvernement_XVII.json",
1296
+ name: "Questions_gouvernement_XVII",
1297
+ legislature: l.DixSept,
1298
+ repairZip: y,
1299
+ structure: h.SegmentedFiles,
1300
+ title: "Questions au gouvernement de la XVIIème législature",
1301
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_gouvernement/Questions_gouvernement.json.zip"
1302
+ },
1303
+ {
1304
+ filename: "Questions_gouvernement_XVI.json",
1305
+ name: "Questions_gouvernement_XVI",
1306
+ legislature: l.Seize,
1307
+ repairZip: y,
1308
+ structure: h.SegmentedFiles,
1309
+ title: "Questions au gouvernement de la XVIème législature",
1310
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_gouvernement/Questions_gouvernement.json.zip"
1311
+ },
1312
+ {
1313
+ filename: "Questions_orales_XVII.json",
1314
+ name: "Questions_orales_XVII",
1315
+ legislature: l.DixSept,
1316
+ repairZip: y,
1317
+ structure: h.SegmentedFiles,
1318
+ title: "Questions orales sans débats de la XVIIème législature",
1319
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_orales_sans_debat/Questions_orales_sans_debat.json.zip"
1320
+ },
1321
+ {
1322
+ filename: "Questions_orales_XVI.json",
1323
+ name: "Questions_orales_XVI",
1324
+ legislature: l.Seize,
1325
+ repairZip: y,
1326
+ structure: h.SegmentedFiles,
1327
+ title: "Questions orales sans débats de la XVIème législature",
1328
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_orales_sans_debat/Questions_orales_sans_debat.json.zip"
1329
+ }
1330
+ ],
1331
+ comptesRendusSeances: [
1332
+ {
1333
+ filename: "Comptes_Rendus_Seances_XVII.xml",
1334
+ name: "Comptes_Rendus_Seances_XVII",
1335
+ legislature: l.DixSept,
1336
+ repairZip: async (t, n) => {
1337
+ const i = s.join(n, t.filename);
1338
+ await r.pathExists(i) && await r.remove(i), await r.move(
1339
+ s.join(n, `${t.filename}.temp`, "xml"),
1340
+ i
1341
+ );
1342
+ },
1343
+ structure: h.SegmentedFiles,
1344
+ title: "Comptes rendus des séances publiques de la XVIIème législature",
1345
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/17/vp/syceronbrut/syseron.xml.zip"
1346
+ },
1347
+ {
1348
+ filename: "Comptes_Rendus_Seances_XVI.xml",
1349
+ name: "Comptes_Rendus_Seances_XVI",
1350
+ legislature: l.Seize,
1351
+ repairZip: async (t, n) => {
1352
+ const i = s.join(n, t.filename);
1353
+ await r.pathExists(i) && await r.remove(i), await r.move(
1354
+ s.join(n, `${t.filename}.temp`, "xml"),
1355
+ i
1356
+ );
1357
+ },
1358
+ structure: h.SegmentedFiles,
1359
+ title: "Comptes rendus des séances publiques de la XVIème législature",
1360
+ url: "https://data.assemblee-nationale.fr/static/openData/repository/16/vp/syceronbrut/syseron.xml.zip"
1361
+ }
1362
+ ],
1363
+ comptesRendusCommissions: [
1364
+ {
1365
+ filename: "Comptes_Rendus_Commissions_XVII.xml",
1366
+ name: "Comptes_Rendus_Commissions_XVII",
1367
+ legislature: l.DixSept,
1368
+ structure: h.SegmentedFiles,
1369
+ title: "Comptes rendus des commissions de la XVIIème législature"
1370
+ }
1371
+ ]
1372
+ };
1373
+ function* M(t, n, i, o, p, { log: f = !1, noValidation: _ = !1, sinceCommits: m } = {}) {
1374
+ const S = /* @__PURE__ */ new Set();
1375
+ for (const v of i) {
1376
+ if (v.ignoreForWeb || !Bt(n, v))
23
1377
  continue;
24
- const A = t.join(s, `${S.name}_nettoye`), P = a ? a[S.name] : void 0, R = P ? z(A, P, {
1378
+ const C = s.join(t, `${v.name}_nettoye`), I = m ? m[v.name] : void 0, q = I ? le(C, I, {
25
1379
  diffFilter: "AMR"
26
1380
  }) : null;
27
- f && P && (console.log(
28
- `Filtering files changed since commit ${P} in ${A}`
29
- ), console.log(`Found ${R?.size || 0} changed files`));
30
- for (const $ of C(A, m)) {
31
- if (!$[$.length - 1].endsWith(".json"))
1381
+ f && I && (console.log(
1382
+ `Filtering files changed since commit ${I} in ${C}`
1383
+ ), console.log(`Found ${q?.size || 0} changed files`));
1384
+ for (const F of L(C, p)) {
1385
+ if (!F[F.length - 1].endsWith(".json"))
32
1386
  continue;
33
- const D = t.join(A, ...$), b = t.join(...$), U = R?.get(b);
34
- if (R && !U)
1387
+ const P = s.join(C, ...F), X = s.join(...F), O = q?.get(X);
1388
+ if (q != null && O == null)
35
1389
  continue;
36
- f && console.log(`Loading file: ${D}…`);
37
- let n = g.readFileSync(D, { encoding: "utf8" });
38
- const r = d ? JSON.parse(n) : o(n);
39
- p.has(r.uid) || (p.add(r.uid), yield {
40
- datasetLegislature: S.legislature,
41
- filePath: D,
42
- item: r,
43
- ...U && { gitStatus: U }
44
- }, n = null);
1390
+ f && console.log(`Loading file: ${P}…`);
1391
+ let a = r.readFileSync(P, { encoding: "utf8" });
1392
+ const u = _ ? JSON.parse(a) : o(a);
1393
+ S.has(u.uid) || (S.add(u.uid), yield {
1394
+ datasetLegislature: v.legislature,
1395
+ filePath: P,
1396
+ item: u,
1397
+ ...O && { gitStatus: O }
1398
+ }, a = null);
45
1399
  }
46
- if (P) {
47
- const $ = z(
48
- A,
49
- P,
1400
+ if (I) {
1401
+ const F = le(
1402
+ C,
1403
+ I,
50
1404
  {
51
1405
  diffFilter: "D"
52
1406
  }
53
1407
  );
54
- for (const [x, D] of $.entries()) {
55
- const b = t.join(A, x);
56
- f && console.log(`Deleted file: ${b}`);
57
- const n = { uid: t.parse(x).name };
1408
+ for (const [x, P] of F.entries()) {
1409
+ const X = s.join(C, x);
1410
+ f && console.log(`Deleted file: ${X}`);
1411
+ const a = { uid: s.parse(x).name };
58
1412
  yield {
59
- datasetLegislature: S.legislature,
60
- filePath: b,
61
- item: n,
62
- gitStatus: D
1413
+ datasetLegislature: v.legislature,
1414
+ filePath: X,
1415
+ item: a,
1416
+ gitStatus: P
63
1417
  };
64
1418
  }
65
1419
  }
66
1420
  }
67
- p.clear();
1421
+ S.clear();
68
1422
  }
69
- function ee(s, i) {
70
- const e = Array.isArray(s) ? s : s !== void 0 ? [s] : [];
71
- return s === void 0 || e.includes(0) || i.legislature === j.All ? !0 : e.includes(i.legislature);
1423
+ function Bt(t, n) {
1424
+ const i = Array.isArray(t) ? t : t !== void 0 ? [t] : [];
1425
+ return t === void 0 || i.includes(0) || n.legislature === l.All ? !0 : i.includes(n.legislature);
72
1426
  }
73
- function* ue(s, i, e = {}, o) {
1427
+ function* ln(t, n, i = {}, o) {
74
1428
  for (const {
75
- datasetLegislature: m,
1429
+ datasetLegislature: p,
76
1430
  item: f,
77
- filePath: d,
78
- gitStatus: a
79
- } of B(
80
- s,
81
- i,
82
- o ?? F.acteursEtOrganes,
83
- _.toActeur,
1431
+ filePath: _,
1432
+ gitStatus: m
1433
+ } of M(
1434
+ t,
1435
+ n,
1436
+ o ?? A.acteursEtOrganes,
1437
+ W.toActeur,
84
1438
  ["acteurs"],
85
- e
1439
+ i
86
1440
  ))
87
1441
  yield {
88
1442
  acteur: f,
89
- datasetLegislature: m,
90
- filePath: d,
91
- ...a && { gitStatus: a }
1443
+ datasetLegislature: p,
1444
+ filePath: _,
1445
+ ...m && { gitStatus: m }
92
1446
  };
93
1447
  }
94
- function* fe(s, i, e = {}, o) {
1448
+ function* cn(t, n, i = {}, o) {
95
1449
  for (const {
96
- item: m,
1450
+ item: p,
97
1451
  datasetLegislature: f,
98
- filePath: d,
99
- gitStatus: a
100
- } of B(
101
- s,
102
- i,
103
- o ?? F.acteursEtOrganes,
104
- _.toOrgane,
1452
+ filePath: _,
1453
+ gitStatus: m
1454
+ } of M(
1455
+ t,
1456
+ n,
1457
+ o ?? A.acteursEtOrganes,
1458
+ W.toOrgane,
105
1459
  ["organes"],
106
- e
1460
+ i
107
1461
  ))
108
1462
  yield {
109
- organe: m,
1463
+ organe: p,
110
1464
  datasetLegislature: f,
111
- filePath: d,
112
- ...a && { gitStatus: a }
1465
+ filePath: _,
1466
+ ...m && { gitStatus: m }
113
1467
  };
114
1468
  }
115
- function* de(s, i, e = {}, o) {
1469
+ function* un(t, n, i = {}, o) {
116
1470
  for (const {
117
- datasetLegislature: m,
1471
+ datasetLegislature: p,
118
1472
  item: f,
119
- filePath: d,
120
- gitStatus: a
121
- } of B(
122
- s,
123
- i,
124
- o ?? F.amendements,
125
- w.toAmendement,
1473
+ filePath: _,
1474
+ gitStatus: m
1475
+ } of M(
1476
+ t,
1477
+ n,
1478
+ o ?? A.amendements,
1479
+ te.toAmendement,
126
1480
  [],
127
- e
1481
+ i
128
1482
  ))
129
1483
  yield {
130
1484
  amendement: f,
131
- datasetLegislature: m,
132
- filePath: d,
133
- ...a && { gitStatus: a }
1485
+ datasetLegislature: p,
1486
+ filePath: _,
1487
+ ...m && { gitStatus: m }
134
1488
  };
135
1489
  }
136
- function* me(s, i, e = {}, o) {
1490
+ function* mn(t, n, i = {}, o) {
137
1491
  for (const {
138
- item: m,
1492
+ item: p,
139
1493
  datasetLegislature: f,
140
- filePath: d,
141
- gitStatus: a
142
- } of B(
143
- s,
144
- i,
145
- o ?? F.dossiersLegislatifs,
146
- J.toDocument,
1494
+ filePath: _,
1495
+ gitStatus: m
1496
+ } of M(
1497
+ t,
1498
+ n,
1499
+ o ?? A.dossiersLegislatifs,
1500
+ E.toDocument,
147
1501
  ["documents"],
148
- e
1502
+ i
149
1503
  ))
150
1504
  yield {
151
- document: m,
1505
+ document: p,
152
1506
  datasetLegislature: f,
153
- filePath: d,
154
- ...a && { gitStatus: a }
1507
+ filePath: _,
1508
+ ...m && { gitStatus: m }
155
1509
  };
156
1510
  }
157
- function* ge(s, i, e = {}, o) {
1511
+ function* dn(t, n, i = {}, o) {
158
1512
  for (const {
159
- item: m,
1513
+ item: p,
160
1514
  datasetLegislature: f,
161
- filePath: d,
162
- gitStatus: a
163
- } of B(
164
- s,
165
- i,
166
- o ?? F.dossiersLegislatifs,
167
- J.toDossierParlementaire,
1515
+ filePath: _,
1516
+ gitStatus: m
1517
+ } of M(
1518
+ t,
1519
+ n,
1520
+ o ?? A.dossiersLegislatifs,
1521
+ E.toDossierParlementaire,
168
1522
  ["dossiers"],
169
- e
1523
+ i
170
1524
  ))
171
1525
  yield {
172
- dossierParlementaire: m,
1526
+ dossierParlementaire: p,
173
1527
  datasetLegislature: f,
174
- filePath: d,
175
- ...a && { gitStatus: a }
1528
+ filePath: _,
1529
+ ...m && { gitStatus: m }
176
1530
  };
177
1531
  }
178
- function* je(s, i, e = {}, o) {
1532
+ function* pn(t, n, i = {}, o) {
179
1533
  for (const {
180
- item: m,
1534
+ item: p,
181
1535
  datasetLegislature: f,
182
- filePath: d,
183
- gitStatus: a
184
- } of B(
185
- s,
186
- i,
187
- o ?? F.agendas,
188
- M.toReunion,
1536
+ filePath: _,
1537
+ gitStatus: m
1538
+ } of M(
1539
+ t,
1540
+ n,
1541
+ o ?? A.agendas,
1542
+ ie.toReunion,
189
1543
  [],
190
- e
1544
+ i
191
1545
  ))
192
1546
  yield {
193
- reunion: m,
1547
+ reunion: p,
194
1548
  datasetLegislature: f,
195
- filePath: d,
196
- ...a && { gitStatus: a }
1549
+ filePath: _,
1550
+ ...m && { gitStatus: m }
197
1551
  };
198
1552
  }
199
- function* he(s, i, e = {}, o) {
1553
+ function* gn(t, n, i = {}, o) {
200
1554
  for (const {
201
- item: m,
1555
+ item: p,
202
1556
  datasetLegislature: f,
203
- filePath: d,
204
- gitStatus: a
205
- } of B(
206
- s,
207
- i,
208
- o ?? F.scrutins,
209
- N.toScrutin,
1557
+ filePath: _,
1558
+ gitStatus: m
1559
+ } of M(
1560
+ t,
1561
+ n,
1562
+ o ?? A.scrutins,
1563
+ ae.toScrutin,
210
1564
  [],
211
- e
1565
+ i
212
1566
  ))
213
1567
  yield {
214
- scrutin: m,
1568
+ scrutin: p,
215
1569
  datasetLegislature: f,
216
- filePath: d,
217
- ...a && { gitStatus: a }
1570
+ filePath: _,
1571
+ ...m && { gitStatus: m }
218
1572
  };
219
1573
  }
220
- function* pe(s, i, e = {}, o) {
1574
+ function* fn(t, n, i = {}, o) {
221
1575
  for (const {
222
- item: m,
1576
+ item: p,
223
1577
  datasetLegislature: f,
224
- filePath: d,
225
- gitStatus: a
226
- } of B(
227
- s,
228
- i,
229
- o ?? F.questions,
230
- Q.toQuestion,
1578
+ filePath: _,
1579
+ gitStatus: m
1580
+ } of M(
1581
+ t,
1582
+ n,
1583
+ o ?? A.questions,
1584
+ se.toQuestion,
231
1585
  [],
232
- e
1586
+ i
233
1587
  ))
234
1588
  yield {
235
- question: m,
1589
+ question: p,
236
1590
  datasetLegislature: f,
237
- filePath: d,
238
- ...a && { gitStatus: a }
1591
+ filePath: _,
1592
+ ...m && { gitStatus: m }
239
1593
  };
240
1594
  }
241
- function* ye(s, i, e = {}, o) {
1595
+ function* _n(t, n, i = {}, o) {
242
1596
  for (const {
243
- item: m,
1597
+ item: p,
244
1598
  datasetLegislature: f,
245
- filePath: d,
246
- gitStatus: a
247
- } of B(
248
- s,
249
- i,
250
- o ?? F.comptesRendusSeances.concat(F.comptesRendusCommissions),
251
- T.toCompteRendu,
1599
+ filePath: _,
1600
+ gitStatus: m
1601
+ } of M(
1602
+ t,
1603
+ n,
1604
+ o ?? A.comptesRendusSeances.concat(A.comptesRendusCommissions),
1605
+ oe.toCompteRendu,
252
1606
  [],
253
- e
1607
+ i
254
1608
  ))
255
1609
  yield {
256
- compteRendu: m,
1610
+ compteRendu: p,
257
1611
  datasetLegislature: f,
258
- filePath: d,
259
- ...a && { gitStatus: a }
1612
+ filePath: _,
1613
+ ...m && { gitStatus: m }
260
1614
  };
261
1615
  }
262
- function Fe(s, i, e, { log: o = !1 } = {}) {
263
- const m = {}, f = {};
264
- if (i & L.ActeursEtOrganes)
265
- for (const n of F.acteursEtOrganes) {
266
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1616
+ function hn(t, n, i, { log: o = !1 } = {}) {
1617
+ const p = {}, f = {};
1618
+ if (n & V.ActeursEtOrganes)
1619
+ for (const a of A.acteursEtOrganes) {
1620
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
267
1621
  continue;
268
- const r = t.join(
269
- s,
270
- n.filename.replace(/\.json$/, "_nettoye")
1622
+ const u = s.join(
1623
+ t,
1624
+ a.filename.replace(/\.json$/, "_nettoye")
271
1625
  );
272
- for (const l of C(r, ["acteurs"])) {
273
- if (!l[l.length - 1].endsWith(".json"))
1626
+ for (const d of L(u, ["acteurs"])) {
1627
+ if (!d[d.length - 1].endsWith(".json"))
274
1628
  continue;
275
- const c = t.join(r, ...l);
1629
+ const c = s.join(u, ...d);
276
1630
  o && console.log(`Loading file: ${c}…`);
277
- const h = g.readFileSync(c, {
1631
+ const j = r.readFileSync(c, {
278
1632
  encoding: "utf8"
279
- }), u = _.toActeur(h);
280
- m[u.uid] === void 0 && (m[u.uid] = u);
1633
+ }), g = W.toActeur(j);
1634
+ p[g.uid] === void 0 && (p[g.uid] = g);
281
1635
  }
282
- for (const l of C(r, ["organes"])) {
283
- if (!l[l.length - 1].endsWith(".json"))
1636
+ for (const d of L(u, ["organes"])) {
1637
+ if (!d[d.length - 1].endsWith(".json"))
284
1638
  continue;
285
- const c = t.join(r, ...l);
1639
+ const c = s.join(u, ...d);
286
1640
  o && console.log(`Loading file: ${c}…`);
287
- const h = g.readFileSync(c, {
1641
+ const j = r.readFileSync(c, {
288
1642
  encoding: "utf8"
289
- }), u = _.toOrgane(h);
290
- f[u.uid] === void 0 && (f[u.uid] = u);
1643
+ }), g = W.toOrgane(j);
1644
+ f[g.uid] === void 0 && (f[g.uid] = g);
291
1645
  }
292
1646
  }
293
- const d = {}, a = {}, p = {};
294
- if (i & L.Agendas)
295
- for (const n of F.agendas) {
296
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1647
+ const _ = {}, m = {}, S = {};
1648
+ if (n & V.Agendas)
1649
+ for (const a of A.agendas) {
1650
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
297
1651
  continue;
298
- const r = t.join(
299
- s,
300
- n.filename.replace(/\.json$/, "_nettoye")
1652
+ const u = s.join(
1653
+ t,
1654
+ a.filename.replace(/\.json$/, "_nettoye")
301
1655
  );
302
- for (const l of C(r)) {
303
- if (!l[l.length - 1].endsWith(".json"))
1656
+ for (const d of L(u)) {
1657
+ if (!d[d.length - 1].endsWith(".json"))
304
1658
  continue;
305
- const c = t.join(r, ...l);
1659
+ const c = s.join(u, ...d);
306
1660
  o && console.log(`Loading file: ${c}…`);
307
- const h = g.readFileSync(c, {
1661
+ const j = r.readFileSync(c, {
308
1662
  encoding: "utf8"
309
- }), u = M.toReunion(h);
310
- d[u.uid] === void 0 && (d[u.uid] = u);
311
- const v = u.timestampDebut.toISOString().split("T")[0];
312
- let q = a[v];
313
- q === void 0 && (q = a[v] = []), q.push(u);
314
- const O = u.odj;
315
- if (O !== void 0)
316
- for (const W of O.pointsOdj || [])
317
- for (const k of W.dossiersLegislatifsRefs || []) {
318
- let I = p[k];
319
- I === void 0 && (I = p[k] = []), I.push(u);
1663
+ }), g = ie.toReunion(j);
1664
+ _[g.uid] === void 0 && (_[g.uid] = g);
1665
+ const w = g.timestampDebut.toISOString().split("T")[0];
1666
+ let U = m[w];
1667
+ U === void 0 && (U = m[w] = []), U.push(g);
1668
+ const k = g.odj;
1669
+ if (k !== void 0)
1670
+ for (const J of k.pointsOdj || [])
1671
+ for (const re of J.dossiersLegislatifsRefs || []) {
1672
+ let ee = S[re];
1673
+ ee === void 0 && (ee = S[re] = []), ee.push(g);
320
1674
  }
321
1675
  }
322
1676
  }
323
- const S = {};
324
- if (i & L.Amendements)
325
- for (const n of F.amendements) {
326
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1677
+ const v = {};
1678
+ if (n & V.Amendements)
1679
+ for (const a of A.amendements) {
1680
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
327
1681
  continue;
328
- const r = t.join(
329
- s,
330
- n.filename.replace(/\.json$/, "_nettoye")
1682
+ const u = s.join(
1683
+ t,
1684
+ a.filename.replace(/\.json$/, "_nettoye")
331
1685
  );
332
- for (const l of C(r)) {
333
- if (!l[l.length - 1].endsWith(".json"))
1686
+ for (const d of L(u)) {
1687
+ if (!d[d.length - 1].endsWith(".json"))
334
1688
  continue;
335
- const c = t.join(r, ...l);
1689
+ const c = s.join(u, ...d);
336
1690
  o && console.log(`Loading file: ${c}…`);
337
- const h = g.readFileSync(c, {
1691
+ const j = r.readFileSync(c, {
338
1692
  encoding: "utf8"
339
- }), u = w.toAmendement(h);
340
- S[u.uid] === void 0 && (S[u.uid] = u);
1693
+ }), g = te.toAmendement(j);
1694
+ v[g.uid] === void 0 && (v[g.uid] = g);
341
1695
  }
342
1696
  }
343
- const A = {}, P = {}, R = {}, $ = {};
344
- if (i & L.DossiersLegislatifs)
345
- for (const n of F.dossiersLegislatifs) {
346
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1697
+ const C = {}, I = {}, q = {}, F = {};
1698
+ if (n & V.DossiersLegislatifs)
1699
+ for (const a of A.dossiersLegislatifs) {
1700
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
347
1701
  continue;
348
- const r = t.join(
349
- s,
350
- n.filename.replace(/\.json$/, "_nettoye")
1702
+ const u = s.join(
1703
+ t,
1704
+ a.filename.replace(/\.json$/, "_nettoye")
351
1705
  );
352
- for (const l of C(r, ["documents"])) {
353
- if (!l[l.length - 1].endsWith(".json"))
1706
+ for (const d of L(u, ["documents"])) {
1707
+ if (!d[d.length - 1].endsWith(".json"))
354
1708
  continue;
355
- const c = t.join(r, ...l);
1709
+ const c = s.join(u, ...d);
356
1710
  o && console.log(`Loading file: ${c}…`);
357
- const h = g.readFileSync(c, {
1711
+ const j = r.readFileSync(c, {
358
1712
  encoding: "utf8"
359
- }), u = J.toDocument(h);
360
- A[u.uid] === void 0 && (A[u.uid] = u);
1713
+ }), g = E.toDocument(j);
1714
+ C[g.uid] === void 0 && (C[g.uid] = g);
361
1715
  }
362
- for (const l of C(r, ["dossiers"])) {
363
- if (!l[l.length - 1].endsWith(".json"))
1716
+ for (const d of L(u, ["dossiers"])) {
1717
+ if (!d[d.length - 1].endsWith(".json"))
364
1718
  continue;
365
- const c = t.join(r, ...l);
1719
+ const c = s.join(u, ...d);
366
1720
  o && console.log(`Loading file: ${c}…`);
367
- const h = g.readFileSync(c, {
1721
+ const j = r.readFileSync(c, {
368
1722
  encoding: "utf8"
369
- }), u = J.toDossierParlementaire(h), v = u.titreDossier;
370
- v.senatChemin && P[v.senatChemin] === void 0 && (P[v.senatChemin] = u), v.titreChemin && R[v.titreChemin] === void 0 && (R[v.titreChemin] = u), $[u.uid] === void 0 && ($[u.uid] = u);
1723
+ }), g = E.toDossierParlementaire(j), w = g.titreDossier;
1724
+ w.senatChemin && I[w.senatChemin] === void 0 && (I[w.senatChemin] = g), w.titreChemin && q[w.titreChemin] === void 0 && (q[w.titreChemin] = g), F[g.uid] === void 0 && (F[g.uid] = g);
371
1725
  }
372
1726
  }
373
1727
  let x = {};
374
- if (i & L.Photos) {
1728
+ if (n & V.Photos) {
375
1729
  {
376
- const n = t.join(
377
- s,
1730
+ const a = s.join(
1731
+ t,
378
1732
  `photos_deputes_${// TODO: Handle Legislature.All.
379
- e === j.All ? j.DixSept : e}`,
1733
+ i === l.All ? l.DixSept : i}`,
380
1734
  "deputes.json"
381
1735
  );
382
- if (g.existsSync(n)) {
383
- o && console.log(`Loading file: ${n}`);
384
- const r = g.readFileSync(n, { encoding: "utf8" });
385
- Object.assign(x, JSON.parse(r));
386
- } else o && console.log(`Ignoring missing file: ${n}`);
1736
+ if (r.existsSync(a)) {
1737
+ o && console.log(`Loading file: ${a}`);
1738
+ const u = r.readFileSync(a, { encoding: "utf8" });
1739
+ Object.assign(x, JSON.parse(u));
1740
+ } else o && console.log(`Ignoring missing file: ${a}`);
387
1741
  }
388
1742
  {
389
- const n = t.join(
390
- s,
1743
+ const a = s.join(
1744
+ t,
391
1745
  "photos_senateurs",
392
1746
  "senateurs.json"
393
1747
  );
394
- if (g.existsSync(n)) {
395
- o && console.log(`Loading file: ${n}`);
396
- const r = g.readFileSync(n, { encoding: "utf8" });
397
- Object.assign(x, JSON.parse(r));
398
- } else o && console.log(`Ignoring missing file: ${n}`);
1748
+ if (r.existsSync(a)) {
1749
+ o && console.log(`Loading file: ${a}`);
1750
+ const u = r.readFileSync(a, { encoding: "utf8" });
1751
+ Object.assign(x, JSON.parse(u));
1752
+ } else o && console.log(`Ignoring missing file: ${a}`);
399
1753
  }
400
1754
  }
401
- const D = {};
402
- if (i & L.Scrutins)
403
- for (const n of F.scrutins) {
404
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1755
+ const P = {};
1756
+ if (n & V.Scrutins)
1757
+ for (const a of A.scrutins) {
1758
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
405
1759
  continue;
406
- const r = t.join(
407
- s,
408
- n.filename.replace(/\.json$/, "_nettoye")
1760
+ const u = s.join(
1761
+ t,
1762
+ a.filename.replace(/\.json$/, "_nettoye")
409
1763
  );
410
- for (const l of C(r)) {
411
- if (!l[l.length - 1].endsWith(".json"))
1764
+ for (const d of L(u)) {
1765
+ if (!d[d.length - 1].endsWith(".json"))
412
1766
  continue;
413
- const c = t.join(r, ...l);
1767
+ const c = s.join(u, ...d);
414
1768
  o && console.log(`Loading file: ${c}…`);
415
- const h = g.readFileSync(c, {
1769
+ const j = r.readFileSync(c, {
416
1770
  encoding: "utf8"
417
- }), u = N.toScrutin(h);
418
- D[u.uid] === void 0 && (D[u.uid] = u);
1771
+ }), g = ae.toScrutin(j);
1772
+ P[g.uid] === void 0 && (P[g.uid] = g);
419
1773
  }
420
1774
  }
421
- const b = {};
422
- if (i & L.Questions)
423
- for (const n of F.questions) {
424
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1775
+ const X = {};
1776
+ if (n & V.Questions)
1777
+ for (const a of A.questions) {
1778
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
425
1779
  continue;
426
- const r = t.join(
427
- s,
428
- n.filename.replace(/\.json$/, "_nettoye")
1780
+ const u = s.join(
1781
+ t,
1782
+ a.filename.replace(/\.json$/, "_nettoye")
429
1783
  );
430
- for (const l of C(r)) {
431
- if (!l[l.length - 1].endsWith(".json"))
1784
+ for (const d of L(u)) {
1785
+ if (!d[d.length - 1].endsWith(".json"))
432
1786
  continue;
433
- const c = t.join(r, ...l);
1787
+ const c = s.join(u, ...d);
434
1788
  o && console.log(`Loading file: ${c}…`);
435
- const h = g.readFileSync(c, {
1789
+ const j = r.readFileSync(c, {
436
1790
  encoding: "utf8"
437
- }), u = Q.toQuestion(h);
438
- b[u.uid] === void 0 && (b[u.uid] = u);
1791
+ }), g = se.toQuestion(j);
1792
+ X[g.uid] === void 0 && (X[g.uid] = g);
439
1793
  }
440
1794
  }
441
- const U = {};
442
- if (i & L.ComptesRendusSeances)
443
- for (const n of F.comptesRendusSeances) {
444
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1795
+ const O = {};
1796
+ if (n & V.ComptesRendusSeances)
1797
+ for (const a of A.comptesRendusSeances) {
1798
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
445
1799
  continue;
446
- const r = t.join(
447
- s,
448
- n.filename.replace(/\.json$/, "_nettoye")
1800
+ const u = s.join(
1801
+ t,
1802
+ a.filename.replace(/\.json$/, "_nettoye")
449
1803
  );
450
- for (const l of C(r)) {
451
- if (!l[l.length - 1].endsWith(".json"))
1804
+ for (const d of L(u)) {
1805
+ if (!d[d.length - 1].endsWith(".json"))
452
1806
  continue;
453
- const c = t.join(r, ...l);
1807
+ const c = s.join(u, ...d);
454
1808
  o && console.log(`Loading file: ${c}…`);
455
- const h = g.readFileSync(c, {
1809
+ const j = r.readFileSync(c, {
456
1810
  encoding: "utf8"
457
- }), u = T.toCompteRendu(h);
458
- U[u.uid] === void 0 && (U[u.uid] = u);
1811
+ }), g = oe.toCompteRendu(j);
1812
+ O[g.uid] === void 0 && (O[g.uid] = g);
459
1813
  }
460
1814
  }
461
1815
  return {
462
- acteurByUid: m,
463
- amendementByUid: S,
464
- documentByUid: A,
465
- dossierParlementaireBySenatChemin: P,
466
- dossierParlementaireByTitreChemin: R,
467
- dossierParlementaireByUid: $,
1816
+ acteurByUid: p,
1817
+ amendementByUid: v,
1818
+ documentByUid: C,
1819
+ dossierParlementaireBySenatChemin: I,
1820
+ dossierParlementaireByTitreChemin: q,
1821
+ dossierParlementaireByUid: F,
468
1822
  organeByUid: f,
469
1823
  photoByUid: x,
470
- reunionByUid: d,
471
- reunionsByDay: a,
472
- reunionsByDossierUid: p,
473
- scrutinByUid: D,
474
- questionByUid: b,
475
- compteRenduByUid: U
1824
+ reunionByUid: _,
1825
+ reunionsByDay: m,
1826
+ reunionsByDossierUid: S,
1827
+ scrutinByUid: P,
1828
+ questionByUid: X,
1829
+ compteRenduByUid: O
476
1830
  };
477
1831
  }
478
- function Se(s, i, e, { log: o = !1 } = {}) {
479
- const m = {}, f = {};
480
- if (i & L.ActeursEtOrganes)
481
- for (const n of F.acteursEtOrganes) {
482
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1832
+ function jn(t, n, i, { log: o = !1 } = {}) {
1833
+ const p = {}, f = {};
1834
+ if (n & V.ActeursEtOrganes)
1835
+ for (const a of A.acteursEtOrganes) {
1836
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
483
1837
  continue;
484
- const r = t.join(
485
- s,
486
- n.filename.replace(/\.json$/, "_nettoye.json")
1838
+ const u = s.join(
1839
+ t,
1840
+ a.filename.replace(/\.json$/, "_nettoye.json")
487
1841
  );
488
- o && console.log(`Loading file: ${r}`);
489
- const l = g.readFileSync(r, { encoding: "utf8" }), y = _.toActeursEtOrganes(l);
490
- for (const c of y.acteurs)
491
- m[c.uid] === void 0 && (m[c.uid] = c);
492
- for (const c of y.organes)
1842
+ o && console.log(`Loading file: ${u}`);
1843
+ const d = r.readFileSync(u, { encoding: "utf8" }), b = W.toActeursEtOrganes(d);
1844
+ for (const c of b.acteurs)
1845
+ p[c.uid] === void 0 && (p[c.uid] = c);
1846
+ for (const c of b.organes)
493
1847
  f[c.uid] === void 0 && (f[c.uid] = c);
494
1848
  }
495
- const d = {}, a = {}, p = {};
496
- if (i & L.Agendas)
497
- for (const n of F.agendas) {
498
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1849
+ const _ = {}, m = {}, S = {};
1850
+ if (n & V.Agendas)
1851
+ for (const a of A.agendas) {
1852
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
499
1853
  continue;
500
- const r = t.join(
501
- s,
502
- n.filename.replace(/\.json$/, "_nettoye.json")
1854
+ const u = s.join(
1855
+ t,
1856
+ a.filename.replace(/\.json$/, "_nettoye.json")
503
1857
  );
504
- o && console.log(`Loading file: ${r}`);
505
- const l = g.readFileSync(r, { encoding: "utf8" }), y = M.toAgendas(l);
506
- for (const c of y.reunions) {
507
- d[c.uid] === void 0 && (d[c.uid] = c);
508
- const h = c.timestampDebut.toISOString().split("T")[0];
509
- let u = a[h];
510
- u === void 0 && (u = a[h] = []), u.push(c);
511
- const v = c.odj;
512
- if (v !== void 0)
513
- for (const q of v.pointsOdj || [])
514
- for (const O of q.dossiersLegislatifsRefs || []) {
515
- let W = p[O];
516
- W === void 0 && (W = p[O] = []), W.push(c);
1858
+ o && console.log(`Loading file: ${u}`);
1859
+ const d = r.readFileSync(u, { encoding: "utf8" }), b = ie.toAgendas(d);
1860
+ for (const c of b.reunions) {
1861
+ _[c.uid] === void 0 && (_[c.uid] = c);
1862
+ const j = c.timestampDebut.toISOString().split("T")[0];
1863
+ let g = m[j];
1864
+ g === void 0 && (g = m[j] = []), g.push(c);
1865
+ const w = c.odj;
1866
+ if (w !== void 0)
1867
+ for (const U of w.pointsOdj || [])
1868
+ for (const k of U.dossiersLegislatifsRefs || []) {
1869
+ let J = S[k];
1870
+ J === void 0 && (J = S[k] = []), J.push(c);
517
1871
  }
518
1872
  }
519
1873
  }
520
- const S = {};
521
- if (i & L.Amendements)
522
- for (const n of F.amendements) {
523
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1874
+ const v = {};
1875
+ if (n & V.Amendements)
1876
+ for (const a of A.amendements) {
1877
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
524
1878
  continue;
525
- const r = t.join(
526
- s,
527
- n.filename.replace(/\.json$/, "_nettoye.json")
1879
+ const u = s.join(
1880
+ t,
1881
+ a.filename.replace(/\.json$/, "_nettoye.json")
528
1882
  );
529
- o && console.log(`Loading file: ${r}`);
530
- const l = g.readFileSync(r, { encoding: "utf8" }), y = w.toAmendements(l);
531
- for (const c of y.textesLegislatifs)
532
- for (const h of c.amendements)
533
- S[h.uid] === void 0 && (S[h.uid] = h);
1883
+ o && console.log(`Loading file: ${u}`);
1884
+ const d = r.readFileSync(u, { encoding: "utf8" }), b = te.toAmendements(d);
1885
+ for (const c of b.textesLegislatifs)
1886
+ for (const j of c.amendements)
1887
+ v[j.uid] === void 0 && (v[j.uid] = j);
534
1888
  }
535
- const A = {}, P = {}, R = {}, $ = {};
536
- if (i & L.DossiersLegislatifs)
537
- for (const n of F.dossiersLegislatifs) {
538
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1889
+ const C = {}, I = {}, q = {}, F = {};
1890
+ if (n & V.DossiersLegislatifs)
1891
+ for (const a of A.dossiersLegislatifs) {
1892
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
539
1893
  continue;
540
- const r = t.join(
541
- s,
542
- n.filename.replace(/\.json$/, "_nettoye.json")
1894
+ const u = s.join(
1895
+ t,
1896
+ a.filename.replace(/\.json$/, "_nettoye.json")
543
1897
  );
544
- o && console.log(`Loading file: ${r}`);
545
- const l = g.readFileSync(r, { encoding: "utf8" }), y = J.toDossiersLegislatifs(l);
546
- for (const c of y.textesLegislatifs)
547
- A[c.uid] === void 0 && (A[c.uid] = c);
548
- for (const c of y.dossiersParlementaires) {
549
- const h = c.titreDossier;
550
- h.senatChemin && P[h.senatChemin] === void 0 && (P[h.senatChemin] = c), h.titreChemin && R[h.titreChemin] === void 0 && (R[h.titreChemin] = c), $[c.uid] === void 0 && ($[c.uid] = c);
1898
+ o && console.log(`Loading file: ${u}`);
1899
+ const d = r.readFileSync(u, { encoding: "utf8" }), b = E.toDossiersLegislatifs(d);
1900
+ for (const c of b.textesLegislatifs)
1901
+ C[c.uid] === void 0 && (C[c.uid] = c);
1902
+ for (const c of b.dossiersParlementaires) {
1903
+ const j = c.titreDossier;
1904
+ j.senatChemin && I[j.senatChemin] === void 0 && (I[j.senatChemin] = c), j.titreChemin && q[j.titreChemin] === void 0 && (q[j.titreChemin] = c), F[c.uid] === void 0 && (F[c.uid] = c);
551
1905
  }
552
1906
  }
553
1907
  const x = {};
554
- if (i & L.Photos) {
555
- const n = {};
1908
+ if (n & V.Photos) {
1909
+ const a = {};
556
1910
  {
557
- const r = t.join(
558
- s,
1911
+ const u = s.join(
1912
+ t,
559
1913
  `photos_deputes_${// TODO: Handle Legislature.All.
560
- e === j.All ? j.DixSept : e}`,
1914
+ i === l.All ? l.DixSept : i}`,
561
1915
  "deputes.json"
562
1916
  );
563
- if (g.existsSync(r)) {
564
- o && console.log(`Loading file: ${r}`);
565
- const l = g.readFileSync(r, { encoding: "utf8" });
566
- Object.assign(n, JSON.parse(l));
567
- } else o && console.log(`Ignoring missing file: ${r}`);
1917
+ if (r.existsSync(u)) {
1918
+ o && console.log(`Loading file: ${u}`);
1919
+ const d = r.readFileSync(u, { encoding: "utf8" });
1920
+ Object.assign(a, JSON.parse(d));
1921
+ } else o && console.log(`Ignoring missing file: ${u}`);
568
1922
  }
569
1923
  {
570
- const r = t.join(
571
- s,
1924
+ const u = s.join(
1925
+ t,
572
1926
  "photos_senateurs",
573
1927
  "senateurs.json"
574
1928
  );
575
- if (g.existsSync(r)) {
576
- o && console.log(`Loading file: ${r}`);
577
- const l = g.readFileSync(r, { encoding: "utf8" });
578
- Object.assign(n, JSON.parse(l));
579
- } else o && console.log(`Ignoring missing file: ${r}`);
1929
+ if (r.existsSync(u)) {
1930
+ o && console.log(`Loading file: ${u}`);
1931
+ const d = r.readFileSync(u, { encoding: "utf8" });
1932
+ Object.assign(a, JSON.parse(d));
1933
+ } else o && console.log(`Ignoring missing file: ${u}`);
580
1934
  }
581
1935
  }
582
- const D = {};
583
- if (i & L.Scrutins)
584
- for (const n of F.scrutins) {
585
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1936
+ const P = {};
1937
+ if (n & V.Scrutins)
1938
+ for (const a of A.scrutins) {
1939
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
586
1940
  continue;
587
- const r = t.join(
588
- s,
589
- n.filename.replace(/\.json$/, "_nettoye.json")
1941
+ const u = s.join(
1942
+ t,
1943
+ a.filename.replace(/\.json$/, "_nettoye.json")
590
1944
  );
591
- o && console.log(`Loading file: ${r}`);
592
- const l = g.readFileSync(r, { encoding: "utf8" }), y = N.toScrutins(l);
593
- for (const c of y.scrutins)
594
- D[c.uid] === void 0 && (D[c.uid] = c);
1945
+ o && console.log(`Loading file: ${u}`);
1946
+ const d = r.readFileSync(u, { encoding: "utf8" }), b = ae.toScrutins(d);
1947
+ for (const c of b.scrutins)
1948
+ P[c.uid] === void 0 && (P[c.uid] = c);
595
1949
  }
596
- const b = {};
597
- if (i & L.Questions)
598
- for (const n of F.questions) {
599
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1950
+ const X = {};
1951
+ if (n & V.Questions)
1952
+ for (const a of A.questions) {
1953
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
600
1954
  continue;
601
- const r = t.join(
602
- s,
603
- n.filename.replace(/\.json$/, "_nettoye.json")
1955
+ const u = s.join(
1956
+ t,
1957
+ a.filename.replace(/\.json$/, "_nettoye.json")
604
1958
  );
605
- o && console.log(`Loading file: ${r}`);
606
- const l = g.readFileSync(r, { encoding: "utf8" }), y = Q.toQuestions(l);
607
- for (const c of y.questions)
608
- b[c.uid] === void 0 && (b[c.uid] = c);
1959
+ o && console.log(`Loading file: ${u}`);
1960
+ const d = r.readFileSync(u, { encoding: "utf8" }), b = se.toQuestions(d);
1961
+ for (const c of b.questions)
1962
+ X[c.uid] === void 0 && (X[c.uid] = c);
609
1963
  }
610
- const U = {};
611
- if (i & L.ComptesRendusSeances)
612
- for (const n of F.comptesRendusSeances) {
613
- if (n.ignoreForWeb || e !== j.All && n.legislature !== j.All && e !== n.legislature)
1964
+ const O = {};
1965
+ if (n & V.ComptesRendusSeances)
1966
+ for (const a of A.comptesRendusSeances) {
1967
+ if (a.ignoreForWeb || i !== l.All && a.legislature !== l.All && i !== a.legislature)
614
1968
  continue;
615
- const r = t.join(
616
- s,
617
- n.filename.replace(/\.json$/, "_nettoye.json")
1969
+ const u = s.join(
1970
+ t,
1971
+ a.filename.replace(/\.json$/, "_nettoye.json")
618
1972
  );
619
- o && console.log(`Loading file: ${r}`);
620
- const l = g.readFileSync(r, { encoding: "utf8" }), y = T.toComptesRendus(l);
621
- for (const c of y.comptesRendus)
622
- U[c.uid] === void 0 && (U[c.uid] = c);
1973
+ o && console.log(`Loading file: ${u}`);
1974
+ const d = r.readFileSync(u, { encoding: "utf8" }), b = oe.toComptesRendus(d);
1975
+ for (const c of b.comptesRendus)
1976
+ O[c.uid] === void 0 && (O[c.uid] = c);
623
1977
  }
624
1978
  return {
625
- acteurByUid: m,
626
- amendementByUid: S,
627
- documentByUid: A,
628
- dossierParlementaireBySenatChemin: P,
629
- dossierParlementaireByTitreChemin: R,
630
- dossierParlementaireByUid: $,
1979
+ acteurByUid: p,
1980
+ amendementByUid: v,
1981
+ documentByUid: C,
1982
+ dossierParlementaireBySenatChemin: I,
1983
+ dossierParlementaireByTitreChemin: q,
1984
+ dossierParlementaireByUid: F,
631
1985
  organeByUid: f,
632
1986
  photoByUid: x,
633
- reunionByUid: d,
634
- reunionsByDay: a,
635
- reunionsByDossierUid: p,
636
- scrutinByUid: D,
637
- questionByUid: b,
638
- compteRenduByUid: U
1987
+ reunionByUid: _,
1988
+ reunionsByDay: m,
1989
+ reunionsByDossierUid: S,
1990
+ scrutinByUid: P,
1991
+ questionByUid: X,
1992
+ compteRenduByUid: O
639
1993
  };
640
1994
  }
641
- function Ae(s, i, e) {
642
- const o = t.join(s, "Documents"), m = ne(o, i), f = t.join(m, "index.json");
643
- if (!g.pathExistsSync(f))
1995
+ function Sn(t, n, i) {
1996
+ const o = s.join(t, "Documents"), p = Gt(o, n), f = s.join(p, "index.json");
1997
+ if (!r.pathExistsSync(f))
644
1998
  return;
645
- const d = g.readJsonSync(f);
646
- for (const a of e)
647
- for (const { filename: p, url: S } of d[a] ?? [])
648
- if (p !== void 0)
649
- return { format: a, path: t.join(m, p), url: S };
650
- }
651
- function Pe(s, i, { log: e = !1 } = {}) {
652
- const o = t.join(
653
- s,
1999
+ const _ = r.readJsonSync(f);
2000
+ for (const m of i)
2001
+ for (const { filename: S, url: v } of _[m] ?? [])
2002
+ if (S !== void 0)
2003
+ return { format: m, path: s.join(p, S), url: v };
2004
+ }
2005
+ function yn(t, n, { log: i = !1 } = {}) {
2006
+ const o = s.join(
2007
+ t,
654
2008
  `photos_deputes_${// TODO: Handle Legislature.All.
655
- i === j.All ? j.DixSept : i}`,
2009
+ n === l.All ? l.DixSept : n}`,
656
2010
  "deputes.json"
657
2011
  );
658
- e && console.log(`Loading file: ${o}`);
659
- const m = g.readFileSync(o, { encoding: "utf8" });
660
- return JSON.parse(m);
2012
+ i && console.log(`Loading file: ${o}`);
2013
+ const p = r.readFileSync(o, { encoding: "utf8" });
2014
+ return JSON.parse(p);
661
2015
  }
662
- function Le(s, { log: i = !1 } = {}) {
663
- const e = t.join(
664
- s,
2016
+ function bn(t, { log: n = !1 } = {}) {
2017
+ const i = s.join(
2018
+ t,
665
2019
  "photos_senateurs",
666
2020
  "senateurs.json"
667
2021
  );
668
- i && console.log(`Loading file: ${e}`);
669
- const o = g.readFileSync(e, { encoding: "utf8" });
2022
+ n && console.log(`Loading file: ${i}`);
2023
+ const o = r.readFileSync(i, { encoding: "utf8" });
670
2024
  return JSON.parse(o);
671
2025
  }
672
- function ne(s, i) {
673
- const e = i.match(X);
674
- E.notStrictEqual(
675
- e,
2026
+ function Gt(t, n) {
2027
+ const i = n.match(xe);
2028
+ Z.notStrictEqual(
2029
+ i,
676
2030
  null,
677
- `Unexpected structure for document UID: ${i}`
2031
+ `Unexpected structure for document UID: ${n}`
678
2032
  );
679
- const o = e.groups, m = t.join(
680
- s,
2033
+ const o = i.groups, p = s.join(
2034
+ t,
681
2035
  o.documentType ?? o.documentType2
682
- ), f = t.join(m, o.chambre ?? o.chambre2), d = t.join(
2036
+ ), f = s.join(p, o.chambre ?? o.chambre2), _ = s.join(
683
2037
  f,
684
2038
  o.republique ?? o.republique2
685
- ), a = t.join(
686
- d,
2039
+ ), m = s.join(
2040
+ _,
687
2041
  o.legislature ?? o.legislature2
688
- ), p = o.etat;
689
- if (p === void 0)
690
- return g.ensureDirSync(a), t.join(a, i);
691
- const S = t.join(a, p);
692
- let A = "000000" + (o.numero ?? o.numero2);
693
- A = A.substring(A.length - 6);
694
- const P = t.join(S, A.substring(0, 3));
695
- return g.ensureDirSync(P), t.join(P, i);
696
- }
697
- function $e(s, i) {
698
- return V(s, i, H);
699
- }
700
- function De(s, i) {
701
- const e = Y.exec(i);
702
- E.notStrictEqual(
703
- e,
2042
+ ), S = o.etat;
2043
+ if (S === void 0)
2044
+ return r.ensureDirSync(m), s.join(m, n);
2045
+ const v = s.join(m, S);
2046
+ let C = "000000" + (o.numero ?? o.numero2);
2047
+ C = C.substring(C.length - 6);
2048
+ const I = s.join(v, C.substring(0, 3));
2049
+ return r.ensureDirSync(I), s.join(I, n);
2050
+ }
2051
+ function An(t, n) {
2052
+ return be(t, n, ze);
2053
+ }
2054
+ function vn(t, n) {
2055
+ const i = $e.exec(n);
2056
+ Z.notStrictEqual(
2057
+ i,
704
2058
  null,
705
- `Unexpected structure for reunion UID: ${i}`
2059
+ `Unexpected structure for reunion UID: ${n}`
706
2060
  );
707
- const o = t.join(s, e[1]), m = t.join(o, e[2]), f = t.join(m, e[3]), d = t.join(f, e[4]), a = t.join(d, e[5]);
708
- let p = "000000000" + e[6];
709
- p = p.substring(p.length - 9);
710
- const S = t.join(a, p.substring(0, 3)), A = t.join(S, p.substring(3, 3));
711
- return g.ensureDirSync(A), t.join(A, i);
712
- }
713
- function be(s, i) {
714
- const e = Z.exec(i);
715
- E.notStrictEqual(
716
- e,
2061
+ const o = s.join(t, i[1]), p = s.join(o, i[2]), f = s.join(p, i[3]), _ = s.join(f, i[4]), m = s.join(_, i[5]);
2062
+ let S = "000000000" + i[6];
2063
+ S = S.substring(S.length - 9);
2064
+ const v = s.join(m, S.substring(0, 3)), C = s.join(v, S.substring(3, 3));
2065
+ return r.ensureDirSync(C), s.join(C, n);
2066
+ }
2067
+ function Cn(t, n) {
2068
+ const i = Me.exec(n);
2069
+ Z.notStrictEqual(
2070
+ i,
717
2071
  null,
718
- `Unexpected structure for scrutin UID: ${i}`
2072
+ `Unexpected structure for scrutin UID: ${n}`
719
2073
  );
720
- const o = t.join(s, e[1]), m = t.join(o, e[2]), f = t.join(m, e[3]);
721
- let d = "000000" + e[4];
722
- d = d.substring(d.length - 6);
723
- const a = t.join(f, d.substring(0, 3));
724
- return g.ensureDirSync(a), t.join(a, i);
725
- }
726
- function Ue(s, i) {
727
- return V(s, i, K);
728
- }
729
- function ve(s, i) {
730
- const e = G.exec(i);
731
- E.notStrictEqual(
732
- e,
2074
+ const o = s.join(t, i[1]), p = s.join(o, i[2]), f = s.join(p, i[3]);
2075
+ let _ = "000000" + i[4];
2076
+ _ = _.substring(_.length - 6);
2077
+ const m = s.join(f, _.substring(0, 3));
2078
+ return r.ensureDirSync(m), s.join(m, n);
2079
+ }
2080
+ function In(t, n) {
2081
+ return be(t, n, Te);
2082
+ }
2083
+ function Vn(t, n) {
2084
+ const i = Ne.exec(n);
2085
+ Z.notStrictEqual(
2086
+ i,
733
2087
  null,
734
- `Unexpected structure for object with UID: ${i}`
2088
+ `Unexpected structure for object with UID: ${n}`
735
2089
  );
736
- const o = t.join(s, e[2]), m = t.join(o, e[3]), f = t.join(m, e[4]), d = t.join(f, e[5]);
737
- let a = "000000000" + e[7];
738
- a = a.substring(a.length - 9);
739
- const p = t.join(d, a.substring(0, 3)), S = t.join(p, a.substring(3, 3));
740
- return g.ensureDirSync(S), t.join(S, i);
741
- }
742
- function V(s, i, e) {
743
- const o = e.exec(i);
744
- E.notStrictEqual(
2090
+ const o = s.join(t, i[2]), p = s.join(o, i[3]), f = s.join(p, i[4]), _ = s.join(f, i[5]);
2091
+ let m = "000000000" + i[7];
2092
+ m = m.substring(m.length - 9);
2093
+ const S = s.join(_, m.substring(0, 3)), v = s.join(S, m.substring(3, 3));
2094
+ return r.ensureDirSync(v), s.join(v, n);
2095
+ }
2096
+ function be(t, n, i) {
2097
+ const o = i.exec(n);
2098
+ Z.notStrictEqual(
745
2099
  o,
746
2100
  null,
747
- `Unexpected structure for object with UID: ${i}`
2101
+ `Unexpected structure for object with UID: ${n}`
748
2102
  );
749
- const m = t.join(s, o[1]), f = t.join(m, o[2]);
750
- let d = "000000" + o[3];
751
- d = d.substring(d.length - 6);
752
- const a = t.join(f, d.substring(0, 3));
753
- return g.ensureDirSync(a), t.join(a, i);
2103
+ const p = s.join(t, o[1]), f = s.join(p, o[2]);
2104
+ let _ = "000000" + o[3];
2105
+ _ = _.substring(_.length - 6);
2106
+ const m = s.join(f, _.substring(0, 3));
2107
+ return r.ensureDirSync(m), s.join(m, n);
2108
+ }
2109
+ async function y(t, n) {
2110
+ const i = s.join(n, t.filename);
2111
+ await r.pathExists(i) && await r.remove(i), await r.pathExists(s.join(n, `${t.filename}.temp`, "json")) ? await r.move(
2112
+ s.join(n, `${t.filename}.temp`, "json"),
2113
+ i
2114
+ ) : await r.mkdir(i);
754
2115
  }
755
2116
  export {
756
- L as EnabledDatasets,
757
- ue as iterLoadAssembleeActeurs,
758
- de as iterLoadAssembleeAmendements,
759
- ye as iterLoadAssembleeComptesRendus,
760
- me as iterLoadAssembleeDocuments,
761
- ge as iterLoadAssembleeDossiersParlementaires,
762
- fe as iterLoadAssembleeOrganes,
763
- pe as iterLoadAssembleeQuestions,
764
- je as iterLoadAssembleeReunions,
765
- he as iterLoadAssembleeScrutins,
766
- Fe as loadAssembleeData,
767
- Se as loadAssembleeDataFromBigFiles,
768
- Ae as loadAssembleeDocumentFile,
769
- Pe as loadAssembleePhotosDeputes,
770
- Le as loadAssembleePhotosSenateurs,
771
- ve as pathFromCompteRenduUid,
772
- ne as pathFromDocumentUid,
773
- $e as pathFromDossierParlementaireUid,
774
- Ue as pathFromQuestionUid,
775
- De as pathFromReunionUid,
776
- be as pathFromScrutinUid,
777
- C as walkDir
2117
+ V as EnabledDatasets,
2118
+ A as datasets,
2119
+ ln as iterLoadAssembleeActeurs,
2120
+ un as iterLoadAssembleeAmendements,
2121
+ _n as iterLoadAssembleeComptesRendus,
2122
+ mn as iterLoadAssembleeDocuments,
2123
+ dn as iterLoadAssembleeDossiersParlementaires,
2124
+ cn as iterLoadAssembleeOrganes,
2125
+ fn as iterLoadAssembleeQuestions,
2126
+ pn as iterLoadAssembleeReunions,
2127
+ gn as iterLoadAssembleeScrutins,
2128
+ hn as loadAssembleeData,
2129
+ jn as loadAssembleeDataFromBigFiles,
2130
+ Sn as loadAssembleeDocumentFile,
2131
+ yn as loadAssembleePhotosDeputes,
2132
+ bn as loadAssembleePhotosSenateurs,
2133
+ Vn as pathFromCompteRenduUid,
2134
+ Gt as pathFromDocumentUid,
2135
+ An as pathFromDossierParlementaireUid,
2136
+ In as pathFromQuestionUid,
2137
+ vn as pathFromReunionUid,
2138
+ Cn as pathFromScrutinUid,
2139
+ L as walkDir
778
2140
  };