@tricoteuses/assemblee 1.0.0-next.2 → 1.0.2
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/README.md +2 -0
- package/lib/api.js +23 -7
- package/lib/api.mjs +41 -0
- package/lib/bugs/acteur-00010/plugin.test.js +139 -33
- package/lib/bugs/acteur-00010/plugin.test.mjs +33 -0
- package/lib/bugs/acteur-00010.js +166 -24
- package/lib/bugs/acteur-00010.mjs +31 -0
- package/lib/bugs/agenda-00002/plugin.test.js +178 -52
- package/lib/bugs/agenda-00002/plugin.test.mjs +52 -0
- package/lib/bugs/agenda-00002.js +507 -143
- package/lib/bugs/agenda-00002.mjs +197 -0
- package/lib/bugs/agenda-00008/plugin.test.js +143 -31
- package/lib/bugs/agenda-00008/plugin.test.mjs +31 -0
- package/lib/bugs/agenda-00008.js +180 -25
- package/lib/bugs/agenda-00008.mjs +30 -0
- package/lib/bugs/agenda-00011/plugin.test.js +371 -156
- package/lib/bugs/agenda-00011/plugin.test.mjs +156 -0
- package/lib/bugs/agenda-00011.js +416 -117
- package/lib/bugs/agenda-00011.mjs +150 -0
- package/lib/bugs.js +591 -54
- package/lib/bugs.mjs +93 -0
- package/lib/cleaners/actes_legislatifs.js +149 -61
- package/lib/cleaners/actes_legislatifs.mjs +311 -0
- package/lib/cleaners/acteurs.js +255 -123
- package/lib/cleaners/acteurs.mjs +211 -0
- package/lib/cleaners/amendements.js +242 -117
- package/lib/cleaners/amendements.mjs +292 -0
- package/lib/cleaners/documents.js +147 -62
- package/lib/cleaners/documents.mjs +162 -0
- package/lib/cleaners/dossiers_legislatifs.js +132 -45
- package/lib/cleaners/dossiers_legislatifs.mjs +123 -0
- package/lib/cleaners/index.js +64 -8
- package/lib/cleaners/index.mjs +8 -0
- package/lib/cleaners/organes.js +54 -21
- package/lib/cleaners/organes.mjs +64 -0
- package/lib/cleaners/reunions.js +237 -127
- package/lib/cleaners/reunions.mjs +318 -0
- package/lib/cleaners/scrutins.js +261 -99
- package/lib/cleaners/scrutins.mjs +254 -0
- package/lib/cleaners/xml.js +81 -16
- package/lib/cleaners/xml.mjs +42 -0
- package/lib/datasets.js +284 -153
- package/lib/datasets.mjs +596 -0
- package/lib/dates.js +93 -34
- package/lib/dates.mjs +98 -0
- package/lib/dossiers_legislatifs.js +107 -33
- package/lib/dossiers_legislatifs.mjs +215 -0
- package/lib/file_systems.js +203 -35
- package/lib/file_systems.mjs +64 -0
- package/lib/git.js +139 -41
- package/lib/git.mjs +114 -0
- package/lib/index.js +310 -16
- package/lib/index.mjs +16 -0
- package/lib/inserters.js +355 -131
- package/lib/inserters.mjs +413 -0
- package/lib/loaders.js +900 -440
- package/lib/loaders.mjs +678 -0
- package/lib/organes.js +15 -5
- package/lib/organes.mjs +18 -0
- package/lib/parsers/documents.js +241 -89
- package/lib/parsers/documents.mjs +433 -0
- package/lib/parsers/index.js +36 -3
- package/lib/parsers/index.mjs +3 -0
- package/lib/parsers/recherche_amendements.js +616 -173
- package/lib/parsers/recherche_amendements.mjs +189 -0
- package/lib/raw_types/acteurs_et_organes.d.ts +36 -148
- package/lib/raw_types/acteurs_et_organes.js +228 -506
- package/lib/raw_types/acteurs_et_organes.mjs +1240 -0
- package/lib/raw_types/agendas.js +165 -75
- package/lib/raw_types/agendas.mjs +944 -0
- package/lib/raw_types/amendements.js +165 -77
- package/lib/raw_types/amendements.mjs +1040 -0
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -43
- package/lib/raw_types/dossiers_legislatifs.js +181 -143
- package/lib/raw_types/dossiers_legislatifs.mjs +1792 -0
- package/lib/raw_types/scrutins.js +144 -61
- package/lib/raw_types/scrutins.mjs +645 -0
- package/lib/scripts/bugs_helper.js +657 -155
- package/lib/scripts/bugs_helper.mjs +286 -0
- package/lib/scripts/clean_data.js +380 -145
- package/lib/scripts/clean_data.mjs +190 -0
- package/lib/scripts/clean_reorganized_data.js +627 -331
- package/lib/scripts/clean_reorganized_data.mjs +520 -0
- package/lib/scripts/diff_amendements.js +159 -73
- package/lib/scripts/diff_amendements.mjs +234 -0
- package/lib/scripts/document_dossiers_legislatifs.js +570 -288
- package/lib/scripts/document_dossiers_legislatifs.mjs +494 -0
- package/lib/scripts/get_today_reunions.js +37 -20
- package/lib/scripts/get_today_reunions.mjs +41 -0
- package/lib/scripts/merge_scrutins.js +121 -39
- package/lib/scripts/merge_scrutins.mjs +69 -0
- package/lib/scripts/parse_textes_lois.js +179 -125
- package/lib/scripts/parse_textes_lois.mjs +215 -0
- package/lib/scripts/raw_types_from_amendements.js +276 -77
- package/lib/scripts/raw_types_from_amendements.mjs +118 -0
- package/lib/scripts/reorganize_data.js +867 -446
- package/lib/scripts/reorganize_data.mjs +712 -0
- package/lib/scripts/retrieve_deputes_photos.js +378 -157
- package/lib/scripts/retrieve_deputes_photos.mjs +230 -0
- package/lib/scripts/retrieve_documents.js +648 -172
- package/lib/scripts/retrieve_documents.mjs +292 -0
- package/lib/scripts/retrieve_open_data.js +286 -85
- package/lib/scripts/retrieve_open_data.mjs +125 -0
- package/lib/scripts/retrieve_pending_amendments.js +302 -69
- package/lib/scripts/retrieve_pending_amendments.mjs +130 -0
- package/lib/scripts/retrieve_senateurs_photos.js +374 -198
- package/lib/scripts/retrieve_senateurs_photos.mjs +277 -0
- package/lib/scripts/retrieve_textes_lois.js +343 -89
- package/lib/scripts/retrieve_textes_lois.mjs +168 -0
- package/lib/scripts/test_load.js +30 -11
- package/lib/scripts/test_load.mjs +26 -0
- package/lib/scripts/test_load_big_files.js +30 -11
- package/lib/scripts/test_load_big_files.mjs +26 -0
- package/lib/scripts/validate_json.js +370 -120
- package/lib/scripts/validate_json.mjs +216 -0
- package/lib/shared_types/codes_actes.js +50 -15
- package/lib/shared_types/codes_actes.mjs +228 -0
- package/lib/strings.js +16 -3
- package/lib/strings.mjs +7 -0
- package/lib/types/acteurs_et_organes.js +156 -71
- package/lib/types/acteurs_et_organes.mjs +918 -0
- package/lib/types/agendas.js +154 -67
- package/lib/types/agendas.mjs +623 -0
- package/lib/types/amendements.js +166 -77
- package/lib/types/amendements.mjs +885 -0
- package/lib/types/dossiers_legislatifs.d.ts +1 -42
- package/lib/types/dossiers_legislatifs.js +182 -143
- package/lib/types/dossiers_legislatifs.mjs +1120 -0
- package/lib/types/legislatures.js +12 -3
- package/lib/types/legislatures.mjs +9 -0
- package/lib/types/scrutins.js +144 -61
- package/lib/types/scrutins.mjs +528 -0
- package/lib/urls.js +44 -25
- package/lib/urls.mjs +201 -0
- package/package.json +33 -12
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
import { cleanBooleanAttribute, cleanXmlArtefacts } from "./xml.mjs";
|
|
3
|
+
|
|
4
|
+
function cleanDecompteNominatif(decompteNominatif) {
|
|
5
|
+
cleanXmlArtefacts(decompteNominatif);
|
|
6
|
+
let nonVotants = decompteNominatif.nonVotants;
|
|
7
|
+
|
|
8
|
+
if (nonVotants !== undefined) {
|
|
9
|
+
if (typeof nonVotants === "string") {
|
|
10
|
+
assert.strictEqual(nonVotants, "0");
|
|
11
|
+
nonVotants = [];
|
|
12
|
+
} else if (!Array.isArray(nonVotants)) {
|
|
13
|
+
assert(nonVotants);
|
|
14
|
+
nonVotants = [nonVotants];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const nonVotantsArray = nonVotants;
|
|
18
|
+
nonVotants = [];
|
|
19
|
+
|
|
20
|
+
for (let nonVotant of nonVotantsArray) {
|
|
21
|
+
if (nonVotant === null) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
nonVotant = nonVotant.votant;
|
|
26
|
+
|
|
27
|
+
if (Array.isArray(nonVotant)) {
|
|
28
|
+
nonVotants.push(...nonVotant);
|
|
29
|
+
} else {
|
|
30
|
+
assert(nonVotant);
|
|
31
|
+
nonVotants.push(nonVotant);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (nonVotants.length === 0) {
|
|
36
|
+
delete decompteNominatif.nonVotants;
|
|
37
|
+
} else {
|
|
38
|
+
decompteNominatif.nonVotants = nonVotants;
|
|
39
|
+
|
|
40
|
+
for (const votant of nonVotants) {
|
|
41
|
+
cleanVotant(votant);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
let pour = decompteNominatif.pour;
|
|
47
|
+
|
|
48
|
+
if (pour === undefined) {
|
|
49
|
+
pour = decompteNominatif.pours;
|
|
50
|
+
} else {
|
|
51
|
+
assert.strictEqual(decompteNominatif.pours, undefined);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (pour !== undefined) {
|
|
55
|
+
pour = pour.votant;
|
|
56
|
+
|
|
57
|
+
if (!Array.isArray(pour)) {
|
|
58
|
+
assert(pour);
|
|
59
|
+
pour = [pour];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (pour.length === 0) {
|
|
63
|
+
delete decompteNominatif.pour;
|
|
64
|
+
} else {
|
|
65
|
+
decompteNominatif.pour = pour;
|
|
66
|
+
|
|
67
|
+
for (const votant of pour) {
|
|
68
|
+
cleanVotant(votant);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
delete decompteNominatif.pours;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
let contre = decompteNominatif.contre;
|
|
76
|
+
|
|
77
|
+
if (contre === undefined) {
|
|
78
|
+
contre = decompteNominatif.contres;
|
|
79
|
+
} else {
|
|
80
|
+
assert.strictEqual(decompteNominatif.contres, undefined);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (contre !== undefined) {
|
|
84
|
+
contre = contre.votant;
|
|
85
|
+
|
|
86
|
+
if (!Array.isArray(contre)) {
|
|
87
|
+
assert(contre);
|
|
88
|
+
contre = [contre];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (contre.length === 0) {
|
|
92
|
+
delete decompteNominatif.contre;
|
|
93
|
+
} else {
|
|
94
|
+
decompteNominatif.contre = contre;
|
|
95
|
+
|
|
96
|
+
for (const votant of contre) {
|
|
97
|
+
cleanVotant(votant);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
delete decompteNominatif.contres;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
let abstentions = decompteNominatif.abstentions;
|
|
105
|
+
|
|
106
|
+
if (abstentions !== undefined) {
|
|
107
|
+
if (!Array.isArray(abstentions)) {
|
|
108
|
+
abstentions = [abstentions];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const abstentionsArray = abstentions;
|
|
112
|
+
abstentions = [];
|
|
113
|
+
|
|
114
|
+
for (let absentionsItem of abstentionsArray) {
|
|
115
|
+
if (absentionsItem === null) {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
absentionsItem = absentionsItem.votant;
|
|
120
|
+
|
|
121
|
+
if (Array.isArray(absentionsItem)) {
|
|
122
|
+
abstentions.push(...absentionsItem);
|
|
123
|
+
} else {
|
|
124
|
+
assert(absentionsItem);
|
|
125
|
+
abstentions.push(absentionsItem);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (abstentions.length === 0) {
|
|
130
|
+
delete decompteNominatif.abstentions;
|
|
131
|
+
} else {
|
|
132
|
+
decompteNominatif.abstentions = abstentions;
|
|
133
|
+
|
|
134
|
+
for (const votant of abstentions) {
|
|
135
|
+
cleanVotant(votant);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
let nonVotantsVolontaires = decompteNominatif.nonVotantsVolontaires;
|
|
141
|
+
|
|
142
|
+
if (nonVotantsVolontaires !== undefined) {
|
|
143
|
+
if (!Array.isArray(nonVotantsVolontaires)) {
|
|
144
|
+
nonVotantsVolontaires = [nonVotantsVolontaires];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const nonVotantsVolontairesArray = nonVotantsVolontaires;
|
|
148
|
+
nonVotantsVolontaires = [];
|
|
149
|
+
|
|
150
|
+
for (let absentionsItem of nonVotantsVolontairesArray) {
|
|
151
|
+
if (absentionsItem === null) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
absentionsItem = absentionsItem.votant;
|
|
156
|
+
|
|
157
|
+
if (Array.isArray(absentionsItem)) {
|
|
158
|
+
nonVotantsVolontaires.push(...absentionsItem);
|
|
159
|
+
} else {
|
|
160
|
+
assert(absentionsItem);
|
|
161
|
+
nonVotantsVolontaires.push(absentionsItem);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
if (nonVotantsVolontaires.length === 0) {
|
|
166
|
+
delete decompteNominatif.nonVotantsVolontaires;
|
|
167
|
+
} else {
|
|
168
|
+
decompteNominatif.nonVotantsVolontaires = nonVotantsVolontaires;
|
|
169
|
+
|
|
170
|
+
for (const votant of nonVotantsVolontaires) {
|
|
171
|
+
cleanVotant(votant);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export function cleanScrutin(scrutin) {
|
|
178
|
+
cleanXmlArtefacts(scrutin);
|
|
179
|
+
const demandeur = scrutin.demandeur;
|
|
180
|
+
assert(demandeur);
|
|
181
|
+
{
|
|
182
|
+
cleanXmlArtefacts(demandeur);
|
|
183
|
+
assert.strictEqual(demandeur.referenceLegislative, undefined);
|
|
184
|
+
}
|
|
185
|
+
const objet = scrutin.objet;
|
|
186
|
+
assert(objet);
|
|
187
|
+
{
|
|
188
|
+
cleanXmlArtefacts(objet);
|
|
189
|
+
assert.strictEqual(objet.referenceLegislative, undefined);
|
|
190
|
+
}
|
|
191
|
+
let ventilationVotes = scrutin.ventilationVotes;
|
|
192
|
+
assert(ventilationVotes);
|
|
193
|
+
{
|
|
194
|
+
ventilationVotes = ventilationVotes.organe;
|
|
195
|
+
assert(ventilationVotes);
|
|
196
|
+
let groupes = ventilationVotes.groupes;
|
|
197
|
+
assert(groupes);
|
|
198
|
+
{
|
|
199
|
+
groupes = groupes.groupe;
|
|
200
|
+
assert(Array.isArray(groupes));
|
|
201
|
+
|
|
202
|
+
for (const groupe of groupes) {
|
|
203
|
+
const vote = groupe.vote;
|
|
204
|
+
assert(vote);
|
|
205
|
+
{
|
|
206
|
+
const decompteVoix = vote.decompteVoix;
|
|
207
|
+
assert(decompteVoix);
|
|
208
|
+
{
|
|
209
|
+
if (decompteVoix.abstention !== undefined) {
|
|
210
|
+
assert.strictEqual(decompteVoix.abstentions, undefined);
|
|
211
|
+
decompteVoix.abstentions = decompteVoix.abstention;
|
|
212
|
+
delete decompteVoix.abstention;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
if (decompteVoix.nonVotant !== undefined) {
|
|
216
|
+
assert.strictEqual(decompteVoix.nonVotants, undefined);
|
|
217
|
+
decompteVoix.nonVotants = decompteVoix.nonVotant;
|
|
218
|
+
delete decompteVoix.nonVotant;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const decompteNominatif = vote.decompteNominatif;
|
|
222
|
+
assert(decompteNominatif);
|
|
223
|
+
cleanDecompteNominatif(decompteNominatif);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
ventilationVotes.groupes = groupes;
|
|
228
|
+
}
|
|
229
|
+
scrutin.ventilationVotes = ventilationVotes;
|
|
230
|
+
}
|
|
231
|
+
const miseAuPoint = scrutin.miseAuPoint;
|
|
232
|
+
|
|
233
|
+
if (miseAuPoint !== undefined) {
|
|
234
|
+
cleanDecompteNominatif(miseAuPoint);
|
|
235
|
+
let dysfonctionnement = miseAuPoint.dysfonctionnement;
|
|
236
|
+
|
|
237
|
+
if (dysfonctionnement !== undefined) {
|
|
238
|
+
cleanDecompteNominatif(dysfonctionnement);
|
|
239
|
+
|
|
240
|
+
if (Object.values(dysfonctionnement).filter(value => value !== undefined).length === 0) {
|
|
241
|
+
delete miseAuPoint.dysfonctionnement;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
if (Object.values(miseAuPoint).filter(value => value !== undefined).length === 0) {
|
|
246
|
+
delete scrutin.miseAuPoint;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
function cleanVotant(votant) {
|
|
252
|
+
cleanBooleanAttribute(votant, "parDelegation");
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjbGVhbkJvb2xlYW5BdHRyaWJ1dGUiLCJjbGVhblhtbEFydGVmYWN0cyIsImNsZWFuRGVjb21wdGVOb21pbmF0aWYiLCJkZWNvbXB0ZU5vbWluYXRpZiIsIm5vblZvdGFudHMiLCJ1bmRlZmluZWQiLCJzdHJpY3RFcXVhbCIsIkFycmF5IiwiaXNBcnJheSIsIm5vblZvdGFudHNBcnJheSIsIm5vblZvdGFudCIsInZvdGFudCIsInB1c2giLCJsZW5ndGgiLCJjbGVhblZvdGFudCIsInBvdXIiLCJwb3VycyIsImNvbnRyZSIsImNvbnRyZXMiLCJhYnN0ZW50aW9ucyIsImFic3RlbnRpb25zQXJyYXkiLCJhYnNlbnRpb25zSXRlbSIsIm5vblZvdGFudHNWb2xvbnRhaXJlcyIsIm5vblZvdGFudHNWb2xvbnRhaXJlc0FycmF5IiwiY2xlYW5TY3J1dGluIiwic2NydXRpbiIsImRlbWFuZGV1ciIsInJlZmVyZW5jZUxlZ2lzbGF0aXZlIiwib2JqZXQiLCJ2ZW50aWxhdGlvblZvdGVzIiwib3JnYW5lIiwiZ3JvdXBlcyIsImdyb3VwZSIsInZvdGUiLCJkZWNvbXB0ZVZvaXgiLCJhYnN0ZW50aW9uIiwibWlzZUF1UG9pbnQiLCJkeXNmb25jdGlvbm5lbWVudCIsIk9iamVjdCIsInZhbHVlcyIsImZpbHRlciIsInZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsZWFuZXJzL3NjcnV0aW5zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5cbmltcG9ydCB7IGNsZWFuQm9vbGVhbkF0dHJpYnV0ZSwgY2xlYW5YbWxBcnRlZmFjdHMgfSBmcm9tIFwiLi94bWxcIlxuXG5mdW5jdGlvbiBjbGVhbkRlY29tcHRlTm9taW5hdGlmKGRlY29tcHRlTm9taW5hdGlmOiBhbnkpIHtcbiAgY2xlYW5YbWxBcnRlZmFjdHMoZGVjb21wdGVOb21pbmF0aWYpXG5cbiAgbGV0IG5vblZvdGFudHMgPSBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzXG4gIGlmIChub25Wb3RhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG5vblZvdGFudHMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChub25Wb3RhbnRzLCBcIjBcIilcbiAgICAgIG5vblZvdGFudHMgPSBbXVxuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobm9uVm90YW50cykpIHtcbiAgICAgIGFzc2VydChub25Wb3RhbnRzKVxuICAgICAgbm9uVm90YW50cyA9IFtub25Wb3RhbnRzXVxuICAgIH1cbiAgICBjb25zdCBub25Wb3RhbnRzQXJyYXkgPSBub25Wb3RhbnRzXG4gICAgbm9uVm90YW50cyA9IFtdXG4gICAgZm9yIChsZXQgbm9uVm90YW50IG9mIG5vblZvdGFudHNBcnJheSkge1xuICAgICAgaWYgKG5vblZvdGFudCA9PT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgbm9uVm90YW50ID0gbm9uVm90YW50LnZvdGFudFxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9uVm90YW50KSkge1xuICAgICAgICBub25Wb3RhbnRzLnB1c2goLi4ubm9uVm90YW50KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXNzZXJ0KG5vblZvdGFudClcbiAgICAgICAgbm9uVm90YW50cy5wdXNoKG5vblZvdGFudClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5vblZvdGFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBkZWxldGUgZGVjb21wdGVOb21pbmF0aWYubm9uVm90YW50c1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzID0gbm9uVm90YW50c1xuICAgICAgZm9yIChjb25zdCB2b3RhbnQgb2Ygbm9uVm90YW50cykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHBvdXIgPSBkZWNvbXB0ZU5vbWluYXRpZi5wb3VyXG4gIGlmIChwb3VyID09PSB1bmRlZmluZWQpIHtcbiAgICBwb3VyID0gZGVjb21wdGVOb21pbmF0aWYucG91cnNcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGVjb21wdGVOb21pbmF0aWYucG91cnMsIHVuZGVmaW5lZClcbiAgfVxuICBpZiAocG91ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcG91ciA9IHBvdXIudm90YW50XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBvdXIpKSB7XG4gICAgICBhc3NlcnQocG91cilcbiAgICAgIHBvdXIgPSBbcG91cl1cbiAgICB9XG4gICAgaWYgKHBvdXIubGVuZ3RoID09PSAwKSB7XG4gICAgICBkZWxldGUgZGVjb21wdGVOb21pbmF0aWYucG91clxuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5wb3VyID0gcG91clxuICAgICAgZm9yIChjb25zdCB2b3RhbnQgb2YgcG91cikge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5wb3Vyc1xuICB9XG5cbiAgbGV0IGNvbnRyZSA9IGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZVxuICBpZiAoY29udHJlID09PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmUgPSBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmVzXG4gIH0gZWxzZSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZXMsIHVuZGVmaW5lZClcbiAgfVxuICBpZiAoY29udHJlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmUgPSBjb250cmUudm90YW50XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRyZSkpIHtcbiAgICAgIGFzc2VydChjb250cmUpXG4gICAgICBjb250cmUgPSBbY29udHJlXVxuICAgIH1cbiAgICBpZiAoY29udHJlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZGVsZXRlIGRlY29tcHRlTm9taW5hdGlmLmNvbnRyZVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmUgPSBjb250cmVcbiAgICAgIGZvciAoY29uc3Qgdm90YW50IG9mIGNvbnRyZSkge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5jb250cmVzXG4gIH1cblxuICBsZXQgYWJzdGVudGlvbnMgPSBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9uc1xuICBpZiAoYWJzdGVudGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhYnN0ZW50aW9ucykpIHtcbiAgICAgIGFic3RlbnRpb25zID0gW2Fic3RlbnRpb25zXVxuICAgIH1cbiAgICBjb25zdCBhYnN0ZW50aW9uc0FycmF5ID0gYWJzdGVudGlvbnNcbiAgICBhYnN0ZW50aW9ucyA9IFtdXG4gICAgZm9yIChsZXQgYWJzZW50aW9uc0l0ZW0gb2YgYWJzdGVudGlvbnNBcnJheSkge1xuICAgICAgaWYgKGFic2VudGlvbnNJdGVtID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBhYnNlbnRpb25zSXRlbSA9IGFic2VudGlvbnNJdGVtLnZvdGFudFxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWJzZW50aW9uc0l0ZW0pKSB7XG4gICAgICAgIGFic3RlbnRpb25zLnB1c2goLi4uYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWJzZW50aW9uc0l0ZW0pXG4gICAgICAgIGFic3RlbnRpb25zLnB1c2goYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhYnN0ZW50aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIGRlbGV0ZSBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9uc1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5hYnN0ZW50aW9ucyA9IGFic3RlbnRpb25zXG4gICAgICBmb3IgKGNvbnN0IHZvdGFudCBvZiBhYnN0ZW50aW9ucykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IG5vblZvdGFudHNWb2xvbnRhaXJlcyA9IGRlY29tcHRlTm9taW5hdGlmLm5vblZvdGFudHNWb2xvbnRhaXJlc1xuICBpZiAobm9uVm90YW50c1ZvbG9udGFpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobm9uVm90YW50c1ZvbG9udGFpcmVzKSkge1xuICAgICAgbm9uVm90YW50c1ZvbG9udGFpcmVzID0gW25vblZvdGFudHNWb2xvbnRhaXJlc11cbiAgICB9XG4gICAgY29uc3Qgbm9uVm90YW50c1ZvbG9udGFpcmVzQXJyYXkgPSBub25Wb3RhbnRzVm9sb250YWlyZXNcbiAgICBub25Wb3RhbnRzVm9sb250YWlyZXMgPSBbXVxuICAgIGZvciAobGV0IGFic2VudGlvbnNJdGVtIG9mIG5vblZvdGFudHNWb2xvbnRhaXJlc0FycmF5KSB7XG4gICAgICBpZiAoYWJzZW50aW9uc0l0ZW0gPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGFic2VudGlvbnNJdGVtID0gYWJzZW50aW9uc0l0ZW0udm90YW50XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhYnNlbnRpb25zSXRlbSkpIHtcbiAgICAgICAgbm9uVm90YW50c1ZvbG9udGFpcmVzLnB1c2goLi4uYWJzZW50aW9uc0l0ZW0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoYWJzZW50aW9uc0l0ZW0pXG4gICAgICAgIG5vblZvdGFudHNWb2xvbnRhaXJlcy5wdXNoKGFic2VudGlvbnNJdGVtKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9uVm90YW50c1ZvbG9udGFpcmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgZGVsZXRlIGRlY29tcHRlTm9taW5hdGlmLm5vblZvdGFudHNWb2xvbnRhaXJlc1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvbXB0ZU5vbWluYXRpZi5ub25Wb3RhbnRzVm9sb250YWlyZXMgPSBub25Wb3RhbnRzVm9sb250YWlyZXNcbiAgICAgIGZvciAoY29uc3Qgdm90YW50IG9mIG5vblZvdGFudHNWb2xvbnRhaXJlcykge1xuICAgICAgICBjbGVhblZvdGFudCh2b3RhbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblNjcnV0aW4oc2NydXRpbjogYW55KTogdm9pZCB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKHNjcnV0aW4pXG5cbiAgY29uc3QgZGVtYW5kZXVyID0gc2NydXRpbi5kZW1hbmRldXJcbiAgYXNzZXJ0KGRlbWFuZGV1cilcbiAge1xuICAgIGNsZWFuWG1sQXJ0ZWZhY3RzKGRlbWFuZGV1cilcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZW1hbmRldXIucmVmZXJlbmNlTGVnaXNsYXRpdmUsIHVuZGVmaW5lZClcbiAgfVxuXG4gIGNvbnN0IG9iamV0ID0gc2NydXRpbi5vYmpldFxuICBhc3NlcnQob2JqZXQpXG4gIHtcbiAgICBjbGVhblhtbEFydGVmYWN0cyhvYmpldClcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChvYmpldC5yZWZlcmVuY2VMZWdpc2xhdGl2ZSwgdW5kZWZpbmVkKVxuICB9XG5cbiAgbGV0IHZlbnRpbGF0aW9uVm90ZXMgPSBzY3J1dGluLnZlbnRpbGF0aW9uVm90ZXNcbiAgYXNzZXJ0KHZlbnRpbGF0aW9uVm90ZXMpXG4gIHtcbiAgICB2ZW50aWxhdGlvblZvdGVzID0gdmVudGlsYXRpb25Wb3Rlcy5vcmdhbmVcbiAgICBhc3NlcnQodmVudGlsYXRpb25Wb3RlcylcblxuICAgIGxldCBncm91cGVzID0gdmVudGlsYXRpb25Wb3Rlcy5ncm91cGVzXG4gICAgYXNzZXJ0KGdyb3VwZXMpXG4gICAge1xuICAgICAgZ3JvdXBlcyA9IGdyb3VwZXMuZ3JvdXBlXG4gICAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShncm91cGVzKSlcbiAgICAgIGZvciAoY29uc3QgZ3JvdXBlIG9mIGdyb3VwZXMpIHtcbiAgICAgICAgY29uc3Qgdm90ZSA9IGdyb3VwZS52b3RlXG4gICAgICAgIGFzc2VydCh2b3RlKVxuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgZGVjb21wdGVWb2l4ID0gdm90ZS5kZWNvbXB0ZVZvaXhcbiAgICAgICAgICBhc3NlcnQoZGVjb21wdGVWb2l4KVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlmIChkZWNvbXB0ZVZvaXguYWJzdGVudGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkZWNvbXB0ZVZvaXguYWJzdGVudGlvbnMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgZGVjb21wdGVWb2l4LmFic3RlbnRpb25zID0gZGVjb21wdGVWb2l4LmFic3RlbnRpb25cbiAgICAgICAgICAgICAgZGVsZXRlIGRlY29tcHRlVm9peC5hYnN0ZW50aW9uXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkZWNvbXB0ZVZvaXgubm9uVm90YW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRlY29tcHRlVm9peC5ub25Wb3RhbnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIGRlY29tcHRlVm9peC5ub25Wb3RhbnRzID0gZGVjb21wdGVWb2l4Lm5vblZvdGFudFxuICAgICAgICAgICAgICBkZWxldGUgZGVjb21wdGVWb2l4Lm5vblZvdGFudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRlY29tcHRlTm9taW5hdGlmID0gdm90ZS5kZWNvbXB0ZU5vbWluYXRpZlxuICAgICAgICAgIGFzc2VydChkZWNvbXB0ZU5vbWluYXRpZilcbiAgICAgICAgICBjbGVhbkRlY29tcHRlTm9taW5hdGlmKGRlY29tcHRlTm9taW5hdGlmKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2ZW50aWxhdGlvblZvdGVzLmdyb3VwZXMgPSBncm91cGVzXG4gICAgfVxuXG4gICAgc2NydXRpbi52ZW50aWxhdGlvblZvdGVzID0gdmVudGlsYXRpb25Wb3Rlc1xuICB9XG5cbiAgY29uc3QgbWlzZUF1UG9pbnQgPSBzY3J1dGluLm1pc2VBdVBvaW50XG4gIGlmIChtaXNlQXVQb2ludCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5EZWNvbXB0ZU5vbWluYXRpZihtaXNlQXVQb2ludClcblxuICAgIGxldCBkeXNmb25jdGlvbm5lbWVudCA9IG1pc2VBdVBvaW50LmR5c2ZvbmN0aW9ubmVtZW50XG4gICAgaWYgKGR5c2ZvbmN0aW9ubmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFuRGVjb21wdGVOb21pbmF0aWYoZHlzZm9uY3Rpb25uZW1lbnQpXG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdC52YWx1ZXMoZHlzZm9uY3Rpb25uZW1lbnQpLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgLmxlbmd0aCA9PT0gMFxuICAgICAgKSB7XG4gICAgICAgIGRlbGV0ZSBtaXNlQXVQb2ludC5keXNmb25jdGlvbm5lbWVudFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIE9iamVjdC52YWx1ZXMobWlzZUF1UG9pbnQpLmZpbHRlcigodmFsdWUpID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIGRlbGV0ZSBzY3J1dGluLm1pc2VBdVBvaW50XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuVm90YW50KHZvdGFudDogYW55KSB7XG4gIGNsZWFuQm9vbGVhbkF0dHJpYnV0ZSh2b3RhbnQs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
|
package/lib/cleaners/xml.js
CHANGED
|
@@ -1,42 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.symbol.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.symbol.description.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/es.object.to-string.js");
|
|
8
|
+
|
|
9
|
+
require("core-js/modules/es.symbol.iterator.js");
|
|
10
|
+
|
|
11
|
+
require("core-js/modules/es.array.iterator.js");
|
|
12
|
+
|
|
13
|
+
require("core-js/modules/es.string.iterator.js");
|
|
14
|
+
|
|
15
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
16
|
+
|
|
17
|
+
require("core-js/modules/es.array.slice.js");
|
|
18
|
+
|
|
19
|
+
require("core-js/modules/es.function.name.js");
|
|
20
|
+
|
|
21
|
+
require("core-js/modules/es.array.from.js");
|
|
22
|
+
|
|
23
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
24
|
+
|
|
25
|
+
require("core-js/modules/es.object.define-property.js");
|
|
26
|
+
|
|
27
|
+
Object.defineProperty(exports, "__esModule", {
|
|
28
|
+
value: true
|
|
29
|
+
});
|
|
30
|
+
exports.cleanBooleanAttribute = cleanBooleanAttribute;
|
|
31
|
+
exports.cleanXmlArtefacts = cleanXmlArtefacts;
|
|
32
|
+
|
|
33
|
+
require("core-js/modules/es.array.concat.js");
|
|
34
|
+
|
|
35
|
+
require("core-js/modules/es.object.entries.js");
|
|
36
|
+
|
|
37
|
+
require("core-js/modules/es.array.is-array.js");
|
|
38
|
+
|
|
39
|
+
require("core-js/modules/es.object.keys.js");
|
|
40
|
+
|
|
41
|
+
var _assert = _interopRequireDefault(require("assert"));
|
|
42
|
+
|
|
43
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
44
|
+
|
|
45
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
46
|
+
|
|
47
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
48
|
+
|
|
49
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
50
|
+
|
|
51
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
52
|
+
|
|
53
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
54
|
+
|
|
55
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
56
|
+
|
|
57
|
+
var booleanByString = {
|
|
58
|
+
"false": false,
|
|
59
|
+
"true": true
|
|
5
60
|
};
|
|
6
|
-
|
|
7
|
-
|
|
61
|
+
|
|
62
|
+
function cleanBooleanAttribute(o, key) {
|
|
63
|
+
var stringValue = o[key];
|
|
8
64
|
|
|
9
65
|
if (stringValue === undefined || stringValue === null) {
|
|
10
66
|
return undefined;
|
|
11
67
|
}
|
|
12
68
|
|
|
13
|
-
|
|
14
|
-
|
|
69
|
+
var booleanValue = booleanByString[stringValue];
|
|
70
|
+
|
|
71
|
+
_assert["default"].notStrictEqual(booleanValue, undefined, "Invalid boolean value: ".concat(key, " = ").concat(stringValue));
|
|
72
|
+
|
|
15
73
|
o[key] = booleanValue;
|
|
16
74
|
return booleanValue;
|
|
17
75
|
} /// Remove XML fields that have no use in JSON.
|
|
18
76
|
|
|
19
|
-
|
|
77
|
+
|
|
78
|
+
function cleanXmlArtefacts(o) {
|
|
20
79
|
// Remove namespaces.
|
|
21
|
-
|
|
80
|
+
var xmlns = o["@xmlns"];
|
|
22
81
|
|
|
23
82
|
if (xmlns !== undefined) {
|
|
24
|
-
|
|
83
|
+
_assert["default"].strictEqual(xmlns, "http://schemas.assemblee-nationale.fr/referentiel");
|
|
84
|
+
|
|
25
85
|
delete o["@xmlns"];
|
|
26
86
|
}
|
|
27
87
|
|
|
28
|
-
|
|
88
|
+
var xmlnsXsi = o["@xmlns:xsi"];
|
|
29
89
|
|
|
30
90
|
if (xmlnsXsi !== undefined) {
|
|
31
|
-
|
|
91
|
+
_assert["default"].strictEqual(xmlnsXsi, "http://www.w3.org/2001/XMLSchema-instance");
|
|
92
|
+
|
|
32
93
|
delete o["@xmlns:xsi"];
|
|
33
94
|
} // Remove null or empty items.
|
|
34
95
|
|
|
35
96
|
|
|
36
|
-
for (
|
|
97
|
+
for (var _i = 0, _Object$entries = Object.entries(o); _i < _Object$entries.length; _i++) {
|
|
98
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
99
|
+
_key = _Object$entries$_i[0],
|
|
100
|
+
value = _Object$entries$_i[1];
|
|
101
|
+
|
|
37
102
|
if (value === null || value !== undefined && (value["@xsi:nil"] === "true" || Array.isArray(value) && value.length === 0 || value.constructor === Object && Object.keys(value).length === 0)) {
|
|
38
|
-
delete o[
|
|
103
|
+
delete o[_key];
|
|
39
104
|
}
|
|
40
105
|
}
|
|
41
106
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib29sZWFuQnlTdHJpbmciLCJjbGVhbkJvb2xlYW5BdHRyaWJ1dGUiLCJvIiwia2V5Iiwic3RyaW5nVmFsdWUiLCJ1bmRlZmluZWQiLCJib29sZWFuVmFsdWUiLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsImNsZWFuWG1sQXJ0ZWZhY3RzIiwieG1sbnMiLCJzdHJpY3RFcXVhbCIsInhtbG5zWHNpIiwiT2JqZWN0IiwiZW50cmllcyIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiY29uc3RydWN0b3IiLCJrZXlzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsZWFuZXJzL3htbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuXG5jb25zdCBib29sZWFuQnlTdHJpbmc6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICBmYWxzZTogZmFsc2UsXG4gIHRydWU6IHRydWUsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoXG4gIG86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIGtleTogc3RyaW5nLFxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN0cmluZ1ZhbHVlID0gb1trZXldXG4gIGlmIChzdHJpbmdWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHN0cmluZ1ZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGNvbnN0IGJvb2xlYW5WYWx1ZSA9IGJvb2xlYW5CeVN0cmluZ1tzdHJpbmdWYWx1ZV1cbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIGJvb2xlYW5WYWx1ZSxcbiAgICB1bmRlZmluZWQsXG4gICAgYEludmFsaWQgYm9vbGVhbiB2YWx1ZTogJHtrZXl9ID0gJHtzdHJpbmdWYWx1ZX1gLFxuICApXG4gIG9ba2V5XSA9IGJvb2xlYW5WYWx1ZVxuICByZXR1cm4gYm9vbGVhblZhbHVlXG59XG5cbi8vLyBSZW1vdmUgWE1MIGZpZWxkcyB0aGF0IGhhdmUgbm8gdXNlIGluIEpTT04uXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5YbWxBcnRlZmFjdHMobzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHZvaWQge1xuICAvLyBSZW1vdmUgbmFtZXNwYWNlcy5cblxuICBjb25zdCB4bWxucyA9IG9bXCJAeG1sbnNcIl1cbiAgaWYgKHhtbG5zICE9PSB1bmRlZmluZWQpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB4bWxucyxcbiAgICAgIFwiaHR0cDovL3NjaGVtYXMuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9yZWZlcmVudGllbFwiLFxuICAgIClcbiAgICBkZWxldGUgb1tcIkB4bWxuc1wiXVxuICB9XG5cbiAgY29uc3QgeG1sbnNYc2kgPSBvW1wiQHhtbG5zOnhzaVwiXVxuICBpZiAoeG1sbnNYc2kgIT09IHVuZGVmaW5lZCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh4bWxuc1hzaSwgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiKVxuICAgIGRlbGV0ZSBvW1wiQHhtbG5zOnhzaVwiXVxuICB9XG5cbiAgLy8gUmVtb3ZlIG51bGwgb3IgZW1wdHkgaXRlbXMuXG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobykpIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKHZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKHZhbHVlW1wiQHhzaTpuaWxcIl0gPT09IFwidHJ1ZVwiIHx8XG4gICAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgICAodmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSkpXG4gICAgKSB7XG4gICAgICBkZWxldGUgb1trZXldXG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGVBQTJDLEdBQUc7RUFDbEQsU0FBTyxLQUQyQztFQUVsRCxRQUFNO0FBRjRDLENBQXBEOztBQUtPLFNBQVNDLHFCQUFULENBQ0xDLENBREssRUFFTEMsR0FGSyxFQUdnQjtFQUNyQixJQUFNQyxXQUFXLEdBQUdGLENBQUMsQ0FBQ0MsR0FBRCxDQUFyQjs7RUFDQSxJQUFJQyxXQUFXLEtBQUtDLFNBQWhCLElBQTZCRCxXQUFXLEtBQUssSUFBakQsRUFBdUQ7SUFDckQsT0FBT0MsU0FBUDtFQUNEOztFQUNELElBQU1DLFlBQVksR0FBR04sZUFBZSxDQUFDSSxXQUFELENBQXBDOztFQUNBRyxrQkFBQSxDQUFPQyxjQUFQLENBQ0VGLFlBREYsRUFFRUQsU0FGRixtQ0FHNEJGLEdBSDVCLGdCQUdxQ0MsV0FIckM7O0VBS0FGLENBQUMsQ0FBQ0MsR0FBRCxDQUFELEdBQVNHLFlBQVQ7RUFDQSxPQUFPQSxZQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxTQUFTRyxpQkFBVCxDQUEyQlAsQ0FBM0IsRUFBNEQ7RUFDakU7RUFFQSxJQUFNUSxLQUFLLEdBQUdSLENBQUMsQ0FBQyxRQUFELENBQWY7O0VBQ0EsSUFBSVEsS0FBSyxLQUFLTCxTQUFkLEVBQXlCO0lBQ3ZCRSxrQkFBQSxDQUFPSSxXQUFQLENBQ0VELEtBREYsRUFFRSxtREFGRjs7SUFJQSxPQUFPUixDQUFDLENBQUMsUUFBRCxDQUFSO0VBQ0Q7O0VBRUQsSUFBTVUsUUFBUSxHQUFHVixDQUFDLENBQUMsWUFBRCxDQUFsQjs7RUFDQSxJQUFJVSxRQUFRLEtBQUtQLFNBQWpCLEVBQTRCO0lBQzFCRSxrQkFBQSxDQUFPSSxXQUFQLENBQW1CQyxRQUFuQixFQUE2QiwyQ0FBN0I7O0lBQ0EsT0FBT1YsQ0FBQyxDQUFDLFlBQUQsQ0FBUjtFQUNELENBaEJnRSxDQWtCakU7OztFQUVBLG1DQUEyQlcsTUFBTSxDQUFDQyxPQUFQLENBQWVaLENBQWYsQ0FBM0IscUNBQThDO0lBQXpDO0lBQUEsSUFBT0MsSUFBUDtJQUFBLElBQVlZLEtBQVo7O0lBQ0gsSUFDRUEsS0FBSyxLQUFLLElBQVYsSUFDQ0EsS0FBSyxLQUFLVixTQUFWLEtBQ0VVLEtBQUssQ0FBQyxVQUFELENBQUwsS0FBc0IsTUFBdEIsSUFDRUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLEtBQWQsS0FBd0JBLEtBQUssQ0FBQ0csTUFBTixLQUFpQixDQUQzQyxJQUVFSCxLQUFLLENBQUNJLFdBQU4sS0FBc0JOLE1BQXRCLElBQWdDQSxNQUFNLENBQUNPLElBQVAsQ0FBWUwsS0FBWixFQUFtQkcsTUFBbkIsS0FBOEIsQ0FIbEUsQ0FGSCxFQU1FO01BQ0EsT0FBT2hCLENBQUMsQ0FBQ0MsSUFBRCxDQUFSO0lBQ0Q7RUFDRjtBQUNGIn0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
const booleanByString = {
|
|
3
|
+
false: false,
|
|
4
|
+
true: true
|
|
5
|
+
};
|
|
6
|
+
export function cleanBooleanAttribute(o, key) {
|
|
7
|
+
const stringValue = o[key];
|
|
8
|
+
|
|
9
|
+
if (stringValue === undefined || stringValue === null) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const booleanValue = booleanByString[stringValue];
|
|
14
|
+
assert.notStrictEqual(booleanValue, undefined, `Invalid boolean value: ${key} = ${stringValue}`);
|
|
15
|
+
o[key] = booleanValue;
|
|
16
|
+
return booleanValue;
|
|
17
|
+
} /// Remove XML fields that have no use in JSON.
|
|
18
|
+
|
|
19
|
+
export function cleanXmlArtefacts(o) {
|
|
20
|
+
// Remove namespaces.
|
|
21
|
+
const xmlns = o["@xmlns"];
|
|
22
|
+
|
|
23
|
+
if (xmlns !== undefined) {
|
|
24
|
+
assert.strictEqual(xmlns, "http://schemas.assemblee-nationale.fr/referentiel");
|
|
25
|
+
delete o["@xmlns"];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const xmlnsXsi = o["@xmlns:xsi"];
|
|
29
|
+
|
|
30
|
+
if (xmlnsXsi !== undefined) {
|
|
31
|
+
assert.strictEqual(xmlnsXsi, "http://www.w3.org/2001/XMLSchema-instance");
|
|
32
|
+
delete o["@xmlns:xsi"];
|
|
33
|
+
} // Remove null or empty items.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
for (const [key, value] of Object.entries(o)) {
|
|
37
|
+
if (value === null || value !== undefined && (value["@xsi:nil"] === "true" || Array.isArray(value) && value.length === 0 || value.constructor === Object && Object.keys(value).length === 0)) {
|
|
38
|
+
delete o[key];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJib29sZWFuQnlTdHJpbmciLCJmYWxzZSIsInRydWUiLCJjbGVhbkJvb2xlYW5BdHRyaWJ1dGUiLCJvIiwia2V5Iiwic3RyaW5nVmFsdWUiLCJ1bmRlZmluZWQiLCJib29sZWFuVmFsdWUiLCJub3RTdHJpY3RFcXVhbCIsImNsZWFuWG1sQXJ0ZWZhY3RzIiwieG1sbnMiLCJzdHJpY3RFcXVhbCIsInhtbG5zWHNpIiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiY29uc3RydWN0b3IiLCJrZXlzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsZWFuZXJzL3htbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuXG5jb25zdCBib29sZWFuQnlTdHJpbmc6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICBmYWxzZTogZmFsc2UsXG4gIHRydWU6IHRydWUsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoXG4gIG86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIGtleTogc3RyaW5nLFxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN0cmluZ1ZhbHVlID0gb1trZXldXG4gIGlmIChzdHJpbmdWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHN0cmluZ1ZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGNvbnN0IGJvb2xlYW5WYWx1ZSA9IGJvb2xlYW5CeVN0cmluZ1tzdHJpbmdWYWx1ZV1cbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIGJvb2xlYW5WYWx1ZSxcbiAgICB1bmRlZmluZWQsXG4gICAgYEludmFsaWQgYm9vbGVhbiB2YWx1ZTogJHtrZXl9ID0gJHtzdHJpbmdWYWx1ZX1gLFxuICApXG4gIG9ba2V5XSA9IGJvb2xlYW5WYWx1ZVxuICByZXR1cm4gYm9vbGVhblZhbHVlXG59XG5cbi8vLyBSZW1vdmUgWE1MIGZpZWxkcyB0aGF0IGhhdmUgbm8gdXNlIGluIEpTT04uXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5YbWxBcnRlZmFjdHMobzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHZvaWQge1xuICAvLyBSZW1vdmUgbmFtZXNwYWNlcy5cblxuICBjb25zdCB4bWxucyA9IG9bXCJAeG1sbnNcIl1cbiAgaWYgKHhtbG5zICE9PSB1bmRlZmluZWQpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB4bWxucyxcbiAgICAgIFwiaHR0cDovL3NjaGVtYXMuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9yZWZlcmVudGllbFwiLFxuICAgIClcbiAgICBkZWxldGUgb1tcIkB4bWxuc1wiXVxuICB9XG5cbiAgY29uc3QgeG1sbnNYc2kgPSBvW1wiQHhtbG5zOnhzaVwiXVxuICBpZiAoeG1sbnNYc2kgIT09IHVuZGVmaW5lZCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh4bWxuc1hzaSwgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiKVxuICAgIGRlbGV0ZSBvW1wiQHhtbG5zOnhzaVwiXVxuICB9XG5cbiAgLy8gUmVtb3ZlIG51bGwgb3IgZW1wdHkgaXRlbXMuXG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobykpIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKHZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKHZhbHVlW1wiQHhzaTpuaWxcIl0gPT09IFwidHJ1ZVwiIHx8XG4gICAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgICAodmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSkpXG4gICAgKSB7XG4gICAgICBkZWxldGUgb1trZXldXG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQVAsTUFBbUIsUUFBbkI7QUFFQSxNQUFNQyxlQUEyQyxHQUFHO0VBQ2xEQyxLQUFLLEVBQUUsS0FEMkM7RUFFbERDLElBQUksRUFBRTtBQUY0QyxDQUFwRDtBQUtBLE9BQU8sU0FBU0MscUJBQVQsQ0FDTEMsQ0FESyxFQUVMQyxHQUZLLEVBR2dCO0VBQ3JCLE1BQU1DLFdBQVcsR0FBR0YsQ0FBQyxDQUFDQyxHQUFELENBQXJCOztFQUNBLElBQUlDLFdBQVcsS0FBS0MsU0FBaEIsSUFBNkJELFdBQVcsS0FBSyxJQUFqRCxFQUF1RDtJQUNyRCxPQUFPQyxTQUFQO0VBQ0Q7O0VBQ0QsTUFBTUMsWUFBWSxHQUFHUixlQUFlLENBQUNNLFdBQUQsQ0FBcEM7RUFDQVAsTUFBTSxDQUFDVSxjQUFQLENBQ0VELFlBREYsRUFFRUQsU0FGRixFQUdHLDBCQUF5QkYsR0FBSSxNQUFLQyxXQUFZLEVBSGpEO0VBS0FGLENBQUMsQ0FBQ0MsR0FBRCxDQUFELEdBQVNHLFlBQVQ7RUFDQSxPQUFPQSxZQUFQO0FBQ0QsQyxDQUVEOztBQUNBLE9BQU8sU0FBU0UsaUJBQVQsQ0FBMkJOLENBQTNCLEVBQTREO0VBQ2pFO0VBRUEsTUFBTU8sS0FBSyxHQUFHUCxDQUFDLENBQUMsUUFBRCxDQUFmOztFQUNBLElBQUlPLEtBQUssS0FBS0osU0FBZCxFQUF5QjtJQUN2QlIsTUFBTSxDQUFDYSxXQUFQLENBQ0VELEtBREYsRUFFRSxtREFGRjtJQUlBLE9BQU9QLENBQUMsQ0FBQyxRQUFELENBQVI7RUFDRDs7RUFFRCxNQUFNUyxRQUFRLEdBQUdULENBQUMsQ0FBQyxZQUFELENBQWxCOztFQUNBLElBQUlTLFFBQVEsS0FBS04sU0FBakIsRUFBNEI7SUFDMUJSLE1BQU0sQ0FBQ2EsV0FBUCxDQUFtQkMsUUFBbkIsRUFBNkIsMkNBQTdCO0lBQ0EsT0FBT1QsQ0FBQyxDQUFDLFlBQUQsQ0FBUjtFQUNELENBaEJnRSxDQWtCakU7OztFQUVBLEtBQUssTUFBTSxDQUFDQyxHQUFELEVBQU1TLEtBQU4sQ0FBWCxJQUEyQkMsTUFBTSxDQUFDQyxPQUFQLENBQWVaLENBQWYsQ0FBM0IsRUFBOEM7SUFDNUMsSUFDRVUsS0FBSyxLQUFLLElBQVYsSUFDQ0EsS0FBSyxLQUFLUCxTQUFWLEtBQ0VPLEtBQUssQ0FBQyxVQUFELENBQUwsS0FBc0IsTUFBdEIsSUFDRUcsS0FBSyxDQUFDQyxPQUFOLENBQWNKLEtBQWQsS0FBd0JBLEtBQUssQ0FBQ0ssTUFBTixLQUFpQixDQUQzQyxJQUVFTCxLQUFLLENBQUNNLFdBQU4sS0FBc0JMLE1BQXRCLElBQWdDQSxNQUFNLENBQUNNLElBQVAsQ0FBWVAsS0FBWixFQUFtQkssTUFBbkIsS0FBOEIsQ0FIbEUsQ0FGSCxFQU1FO01BQ0EsT0FBT2YsQ0FBQyxDQUFDQyxHQUFELENBQVI7SUFDRDtFQUNGO0FBQ0YifQ==
|