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