@tricoteuses/assemblee 1.10.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-79bwpkvR.js +154 -0
  3. package/lib/amendements-CV3s5a0M.js +667 -0
  4. package/lib/cleaners/index.d.ts +9 -9
  5. package/lib/cleaners.js +564 -0
  6. package/lib/datasets.d.ts +3 -3
  7. package/lib/dossiers_legislatifs.d.ts +2 -2
  8. package/lib/index.d.ts +17 -22
  9. package/lib/index.js +1542 -314
  10. package/lib/inserters.d.ts +5 -5
  11. package/lib/loaders-9mHdTl9L.js +4158 -0
  12. package/lib/loaders.d.ts +12 -12
  13. package/lib/loaders.js +29 -1689
  14. package/lib/organes.d.ts +1 -1
  15. package/lib/parse-Ccs6wcUg.js +2512 -0
  16. package/lib/parsers/index.d.ts +2 -3
  17. package/lib/parsers/plf.d.ts +1 -0
  18. package/lib/parsers/recherche_amendements.d.ts +2 -2
  19. package/lib/parsers/textes_lois.d.ts +1 -23
  20. package/lib/parsers.js +398 -0
  21. package/lib/raw_types/debats.d.ts +2 -2
  22. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -1
  23. package/lib/schemas/acteurs_et_organes.json +1166 -0
  24. package/lib/schemas/agendas.json +1745 -0
  25. package/lib/schemas/amendements.json +2085 -0
  26. package/lib/schemas/debats.json +842 -0
  27. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  28. package/lib/schemas/legislatures.json +17 -0
  29. package/lib/schemas/questions.json +704 -0
  30. package/lib/schemas/scrutins.json +701 -0
  31. package/lib/scripts/retrieve_deputes_photos.d.ts +1 -1
  32. package/lib/types/acteurs_et_organes.d.ts +340 -0
  33. package/lib/types/agendas.d.ts +236 -10
  34. package/lib/types/amendements.d.ts +276 -1
  35. package/lib/types/debats.d.ts +52 -2
  36. package/lib/types/dossiers_legislatifs.d.ts +403 -9
  37. package/lib/types/questions.d.ts +99 -2
  38. package/lib/types/scrutins.d.ts +101 -0
  39. package/lib/urls.d.ts +2 -2
  40. package/package.json +32 -94
  41. package/lib/api.js +0 -52
  42. package/lib/api.mjs +0 -45
  43. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  44. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  45. package/lib/bugs/acteur-00010.d.ts +0 -7
  46. package/lib/bugs/acteur-00010.js +0 -116
  47. package/lib/bugs/acteur-00010.mjs +0 -26
  48. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  49. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  50. package/lib/bugs/agenda-00002.d.ts +0 -15
  51. package/lib/bugs/agenda-00002.js +0 -406
  52. package/lib/bugs/agenda-00002.mjs +0 -172
  53. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  54. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  55. package/lib/bugs/agenda-00008.d.ts +0 -7
  56. package/lib/bugs/agenda-00008.js +0 -123
  57. package/lib/bugs/agenda-00008.mjs +0 -26
  58. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  59. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  60. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  61. package/lib/bugs/agenda-00011.d.ts +0 -16
  62. package/lib/bugs/agenda-00011.js +0 -333
  63. package/lib/bugs/agenda-00011.mjs +0 -125
  64. package/lib/bugs.d.ts +0 -21
  65. package/lib/bugs.js +0 -452
  66. package/lib/bugs.mjs +0 -70
  67. package/lib/cleaners/actes_legislatifs.js +0 -315
  68. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  69. package/lib/cleaners/acteurs.js +0 -265
  70. package/lib/cleaners/acteurs.mjs +0 -180
  71. package/lib/cleaners/amendements.js +0 -294
  72. package/lib/cleaners/amendements.mjs +0 -227
  73. package/lib/cleaners/debats.js +0 -12
  74. package/lib/cleaners/debats.mjs +0 -5
  75. package/lib/cleaners/documents.js +0 -205
  76. package/lib/cleaners/documents.mjs +0 -133
  77. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  78. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  79. package/lib/cleaners/index.js +0 -70
  80. package/lib/cleaners/index.mjs +0 -10
  81. package/lib/cleaners/organes.js +0 -65
  82. package/lib/cleaners/organes.mjs +0 -48
  83. package/lib/cleaners/questions.js +0 -12
  84. package/lib/cleaners/questions.mjs +0 -5
  85. package/lib/cleaners/reunions.js +0 -312
  86. package/lib/cleaners/reunions.mjs +0 -255
  87. package/lib/cleaners/scrutins.js +0 -340
  88. package/lib/cleaners/scrutins.mjs +0 -221
  89. package/lib/cleaners/xml.js +0 -74
  90. package/lib/cleaners/xml.mjs +0 -59
  91. package/lib/datasets.js +0 -837
  92. package/lib/datasets.mjs +0 -755
  93. package/lib/dates.js +0 -124
  94. package/lib/dates.mjs +0 -100
  95. package/lib/dossiers_legislatifs.js +0 -346
  96. package/lib/dossiers_legislatifs.mjs +0 -208
  97. package/lib/file_systems.js +0 -162
  98. package/lib/file_systems.mjs +0 -62
  99. package/lib/git.js +0 -223
  100. package/lib/git.mjs +0 -151
  101. package/lib/index.mjs +0 -17
  102. package/lib/inserters.js +0 -521
  103. package/lib/inserters.mjs +0 -337
  104. package/lib/loaders.mjs +0 -886
  105. package/lib/logger.js +0 -35
  106. package/lib/logger.mjs +0 -26
  107. package/lib/organes.js +0 -22
  108. package/lib/organes.mjs +0 -15
  109. package/lib/parsers/documents.d.ts +0 -62
  110. package/lib/parsers/documents.js +0 -453
  111. package/lib/parsers/documents.mjs +0 -370
  112. package/lib/parsers/index.js +0 -40
  113. package/lib/parsers/index.mjs +0 -4
  114. package/lib/parsers/recherche_amendements.js +0 -403
  115. package/lib/parsers/recherche_amendements.mjs +0 -167
  116. package/lib/parsers/textes_lois.js +0 -307
  117. package/lib/parsers/textes_lois.mjs +0 -264
  118. package/lib/raw_types/acteurs_et_organes.js +0 -1215
  119. package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
  120. package/lib/raw_types/agendas.js +0 -777
  121. package/lib/raw_types/agendas.mjs +0 -724
  122. package/lib/raw_types/amendements.js +0 -1052
  123. package/lib/raw_types/amendements.mjs +0 -993
  124. package/lib/raw_types/debats.js +0 -630
  125. package/lib/raw_types/debats.mjs +0 -573
  126. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  127. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  128. package/lib/raw_types/questions.js +0 -469
  129. package/lib/raw_types/questions.mjs +0 -416
  130. package/lib/raw_types/scrutins.js +0 -651
  131. package/lib/raw_types/scrutins.mjs +0 -598
  132. package/lib/schemas/acteur/Acteur.json +0 -56
  133. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  134. package/lib/schemas/acteur/AdressePostale.json +0 -75
  135. package/lib/schemas/acteur/Civ.json +0 -14
  136. package/lib/schemas/acteur/Collaborateur.json +0 -29
  137. package/lib/schemas/acteur/EtatCivil.json +0 -51
  138. package/lib/schemas/acteur/Ident.json +0 -40
  139. package/lib/schemas/acteur/Lieu.json +0 -66
  140. package/lib/schemas/acteur/Mandat.json +0 -192
  141. package/lib/schemas/acteur/Profession.json +0 -46
  142. package/lib/schemas/agenda/Agenda.json +0 -318
  143. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  144. package/lib/schemas/agenda/PointOdj.json +0 -82
  145. package/lib/schemas/amendement/Amendement.json +0 -246
  146. package/lib/schemas/amendement/Diff.json +0 -25
  147. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  148. package/lib/schemas/amendement/Identifiant.json +0 -62
  149. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  150. package/lib/schemas/amendement/Representation.json +0 -67
  151. package/lib/schemas/amendement/Total.json +0 -26
  152. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  153. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  154. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  155. package/lib/schemas/converted_from_type/debats.json +0 -682
  156. package/lib/schemas/converted_from_type/deputes.json +0 -26
  157. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  158. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  159. package/lib/schemas/converted_from_type/questions.json +0 -328
  160. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  161. package/lib/schemas/debat/Contenu.json +0 -75
  162. package/lib/schemas/debat/Debat.json +0 -40
  163. package/lib/schemas/debat/Metadonnees.json +0 -75
  164. package/lib/schemas/debat/Orateur.json +0 -60
  165. package/lib/schemas/debat/Point.json +0 -169
  166. package/lib/schemas/debat/Sommaire.json +0 -71
  167. package/lib/schemas/debat/SommaireElement.json +0 -108
  168. package/lib/schemas/debat/Texte.json +0 -34
  169. package/lib/schemas/document/CodeLibelle.json +0 -25
  170. package/lib/schemas/document/Document.json +0 -385
  171. package/lib/schemas/document/Indexation.json +0 -38
  172. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  173. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  174. package/lib/schemas/dossier/Agenda.json +0 -23
  175. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  176. package/lib/schemas/dossier/Decision.json +0 -25
  177. package/lib/schemas/dossier/Dossier.json +0 -124
  178. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  179. package/lib/schemas/dossier/EtudePlf.json +0 -105
  180. package/lib/schemas/dossier/Europe.json +0 -42
  181. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  182. package/lib/schemas/dossier/InfoJO.json +0 -23
  183. package/lib/schemas/dossier/Initiateur.json +0 -36
  184. package/lib/schemas/dossier/Motion.json +0 -27
  185. package/lib/schemas/dossier/Promulgation.json +0 -62
  186. package/lib/schemas/dossier/Rapporteur.json +0 -36
  187. package/lib/schemas/dossier/Texte.json +0 -47
  188. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  189. package/lib/schemas/organe/Organe.json +0 -136
  190. package/lib/schemas/organe/ViMoDe.json +0 -28
  191. package/lib/schemas/question/Auteur.json +0 -58
  192. package/lib/schemas/question/Cloture.json +0 -28
  193. package/lib/schemas/question/InfoJO.json +0 -40
  194. package/lib/schemas/question/MinAttribElement.json +0 -30
  195. package/lib/schemas/question/Question.json +0 -172
  196. package/lib/schemas/question/Renouvellement.json +0 -17
  197. package/lib/schemas/question/Signalement.json +0 -21
  198. package/lib/schemas/question/Texte.json +0 -24
  199. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  200. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  201. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  202. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  203. package/lib/schemas/scrutin/Scrutin.json +0 -187
  204. package/lib/schemas/scrutin/Votant.json +0 -37
  205. package/lib/scripts/bugs_helper.d.ts +0 -13
  206. package/lib/scripts/bugs_helper.js +0 -595
  207. package/lib/scripts/bugs_helper.mjs +0 -251
  208. package/lib/scripts/clean_reorganized_data.js +0 -613
  209. package/lib/scripts/clean_reorganized_data.mjs +0 -276
  210. package/lib/scripts/diff_amendements.js +0 -249
  211. package/lib/scripts/diff_amendements.mjs +0 -202
  212. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  213. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  214. package/lib/scripts/get_today_reunions.js +0 -37
  215. package/lib/scripts/get_today_reunions.mjs +0 -31
  216. package/lib/scripts/merge_scrutins.js +0 -97
  217. package/lib/scripts/merge_scrutins.mjs +0 -47
  218. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  219. package/lib/scripts/parse_textes_lois.js +0 -171
  220. package/lib/scripts/parse_textes_lois.mjs +0 -140
  221. package/lib/scripts/process_open_dataset.js +0 -301
  222. package/lib/scripts/process_open_dataset.mjs +0 -134
  223. package/lib/scripts/raw_types_from_amendements.js +0 -135
  224. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  225. package/lib/scripts/reorganize_data.js +0 -805
  226. package/lib/scripts/reorganize_data.mjs +0 -517
  227. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  228. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  229. package/lib/scripts/retrieve_documents.js +0 -547
  230. package/lib/scripts/retrieve_documents.mjs +0 -242
  231. package/lib/scripts/retrieve_open_data.js +0 -107
  232. package/lib/scripts/retrieve_open_data.mjs +0 -26
  233. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  234. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  235. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  236. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  237. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  238. package/lib/scripts/retrieve_textes_lois.js +0 -240
  239. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  240. package/lib/scripts/shared/cli_helpers.js +0 -89
  241. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  242. package/lib/scripts/test_iter_load.js +0 -155
  243. package/lib/scripts/test_iter_load.mjs +0 -72
  244. package/lib/scripts/test_load.js +0 -26
  245. package/lib/scripts/test_load.mjs +0 -16
  246. package/lib/scripts/test_load_big_files.js +0 -26
  247. package/lib/scripts/test_load_big_files.mjs +0 -16
  248. package/lib/scripts/validate_json.js +0 -353
  249. package/lib/scripts/validate_json.mjs +0 -184
  250. package/lib/shared_types/codes_actes.js +0 -231
  251. package/lib/shared_types/codes_actes.mjs +0 -224
  252. package/lib/strings.js +0 -16
  253. package/lib/strings.mjs +0 -7
  254. package/lib/types/acteurs_et_organes.js +0 -965
  255. package/lib/types/acteurs_et_organes.mjs +0 -906
  256. package/lib/types/agendas.js +0 -628
  257. package/lib/types/agendas.mjs +0 -575
  258. package/lib/types/amendements.js +0 -899
  259. package/lib/types/amendements.mjs +0 -842
  260. package/lib/types/debats.js +0 -619
  261. package/lib/types/debats.mjs +0 -562
  262. package/lib/types/dossiers_legislatifs.js +0 -1188
  263. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  264. package/lib/types/legislatures.js +0 -17
  265. package/lib/types/legislatures.mjs +0 -10
  266. package/lib/types/questions.js +0 -454
  267. package/lib/types/questions.mjs +0 -401
  268. package/lib/types/scrutins.js +0 -556
  269. package/lib/types/scrutins.mjs +0 -503
  270. package/lib/urls.js +0 -325
  271. package/lib/urls.mjs +0 -258
  272. /package/lib/{bugs/acteur-00010/plugin.test.d.ts → scripts/add_links_to_documents.d.ts} +0 -0
  273. /package/lib/{bugs/agenda-00002/plugin.test.d.ts → scripts/copy-schemas.d.ts} +0 -0
  274. /package/lib/{bugs/agenda-00008/plugin.test.d.ts → scripts/generate-json-schemas.d.ts} +0 -0
@@ -1,74 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.object.define-property.js");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.cleanBooleanAttribute = cleanBooleanAttribute;
8
- exports.cleanIntegerAttribute = cleanIntegerAttribute;
9
- exports.cleanXmlArtefacts = cleanXmlArtefacts;
10
- require("core-js/modules/es.array.concat.js");
11
- require("core-js/modules/es.array.is-array.js");
12
- require("core-js/modules/es.number.is-nan.js");
13
- require("core-js/modules/es.number.parse-int.js");
14
- require("core-js/modules/es.object.keys.js");
15
- var _nodeAssert = _interopRequireDefault(require("node:assert"));
16
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
- // Move constant to module scope to avoid recreation
18
- var BOOLEAN_MAP = {
19
- "false": false,
20
- "true": true
21
- };
22
- var XML_NAMESPACE = "http://schemas.assemblee-nationale.fr/referentiel";
23
- var XSI_NAMESPACE = "http://www.w3.org/2001/XMLSchema-instance";
24
- function cleanBooleanAttribute(o, key) {
25
- var stringValue = o[key];
26
- if (stringValue === undefined || stringValue === null) {
27
- delete o[key];
28
- return undefined;
29
- }
30
- var booleanValue = BOOLEAN_MAP[stringValue];
31
- _nodeAssert["default"].notStrictEqual(booleanValue, undefined, "Invalid boolean value: ".concat(key, " = ").concat(stringValue));
32
- o[key] = booleanValue;
33
- return booleanValue;
34
- }
35
- function cleanIntegerAttribute(o, key) {
36
- var stringValue = o[key];
37
- if (stringValue === undefined || stringValue === null) {
38
- delete o[key];
39
- return undefined;
40
- }
41
- var integerValue = Number.parseInt(stringValue);
42
- (0, _nodeAssert["default"])(!Number.isNaN(integerValue), "Invalid number value: ".concat(key, " = ").concat(stringValue));
43
- o[key] = integerValue;
44
- return integerValue;
45
- }
46
-
47
- /// Remove XML fields that have no use in JSON.
48
- function cleanXmlArtefacts(o) {
49
- var _o$Xmlns;
50
- // Optimize namespace checks with direct property access
51
- var xmlns = (_o$Xmlns = o["@xmlns"]) !== null && _o$Xmlns !== void 0 ? _o$Xmlns : o["xmlns"];
52
- if (xmlns !== undefined) {
53
- _nodeAssert["default"].strictEqual(xmlns, XML_NAMESPACE);
54
- delete o["@xmlns"];
55
- delete o["xmlns"];
56
- }
57
- if (o["@xmlns:xsi"] === XSI_NAMESPACE) {
58
- delete o["@xmlns:xsi"];
59
- }
60
-
61
- // Optimize empty checks with direct property access
62
- for (var key in o) {
63
- var value = o[key];
64
- if (value === null) {
65
- delete o[key];
66
- continue;
67
- }
68
- if (value === undefined) continue;
69
- if (value["@xsi:nil"] === "true" || Array.isArray(value) && value.length === 0 || !Array.isArray(value) && value.constructor === Object && Object.keys(value).length === 0) {
70
- delete o[key];
71
- }
72
- }
73
- }
74
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUFzc2VydCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJCT09MRUFOX01BUCIsIlhNTF9OQU1FU1BBQ0UiLCJYU0lfTkFNRVNQQUNFIiwiY2xlYW5Cb29sZWFuQXR0cmlidXRlIiwibyIsImtleSIsInN0cmluZ1ZhbHVlIiwidW5kZWZpbmVkIiwiYm9vbGVhblZhbHVlIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJjb25jYXQiLCJjbGVhbkludGVnZXJBdHRyaWJ1dGUiLCJpbnRlZ2VyVmFsdWUiLCJOdW1iZXIiLCJwYXJzZUludCIsImlzTmFOIiwiY2xlYW5YbWxBcnRlZmFjdHMiLCJfbyRYbWxucyIsInhtbG5zIiwic3RyaWN0RXF1YWwiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImNvbnN0cnVjdG9yIiwiT2JqZWN0Iiwia2V5cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVhbmVycy94bWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwibm9kZTphc3NlcnRcIlxuXG4vLyBNb3ZlIGNvbnN0YW50IHRvIG1vZHVsZSBzY29wZSB0byBhdm9pZCByZWNyZWF0aW9uXG5jb25zdCBCT09MRUFOX01BUCA9IHtcbiAgZmFsc2U6IGZhbHNlLFxuICB0cnVlOiB0cnVlLFxufSBhcyBjb25zdFxuXG5jb25zdCBYTUxfTkFNRVNQQUNFID0gXCJodHRwOi8vc2NoZW1hcy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3JlZmVyZW50aWVsXCJcbmNvbnN0IFhTSV9OQU1FU1BBQ0UgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuQm9vbGVhbkF0dHJpYnV0ZShcbiAgbzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAga2V5OiBzdHJpbmcsXG4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3RyaW5nVmFsdWUgPSBvW2tleV1cbiAgaWYgKHN0cmluZ1ZhbHVlID09PSB1bmRlZmluZWQgfHwgc3RyaW5nVmFsdWUgPT09IG51bGwpIHtcbiAgICBkZWxldGUgb1trZXldXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGNvbnN0IGJvb2xlYW5WYWx1ZTogYm9vbGVhbiA9XG4gICAgQk9PTEVBTl9NQVBbc3RyaW5nVmFsdWUgYXMga2V5b2YgdHlwZW9mIEJPT0xFQU5fTUFQXVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgYm9vbGVhblZhbHVlLFxuICAgIHVuZGVmaW5lZCxcbiAgICBgSW52YWxpZCBib29sZWFuIHZhbHVlOiAke2tleX0gPSAke3N0cmluZ1ZhbHVlfWAsXG4gIClcbiAgb1trZXldID0gYm9vbGVhblZhbHVlXG4gIHJldHVybiBib29sZWFuVmFsdWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuSW50ZWdlckF0dHJpYnV0ZShcbiAgbzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAga2V5OiBzdHJpbmcsXG4pOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCBzdHJpbmdWYWx1ZSA9IG9ba2V5XVxuICBpZiAoc3RyaW5nVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBzdHJpbmdWYWx1ZSA9PT0gbnVsbCkge1xuICAgIGRlbGV0ZSBvW2tleV1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgY29uc3QgaW50ZWdlclZhbHVlID0gTnVtYmVyLnBhcnNlSW50KHN0cmluZ1ZhbHVlKVxuICBhc3NlcnQoXG4gICAgIU51bWJlci5pc05hTihpbnRlZ2VyVmFsdWUpLFxuICAgIGBJbnZhbGlkIG51bWJlciB2YWx1ZTogJHtrZXl9ID0gJHtzdHJpbmdWYWx1ZX1gLFxuICApXG4gIG9ba2V5XSA9IGludGVnZXJWYWx1ZVxuICByZXR1cm4gaW50ZWdlclZhbHVlXG59XG5cbi8vLyBSZW1vdmUgWE1MIGZpZWxkcyB0aGF0IGhhdmUgbm8gdXNlIGluIEpTT04uXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5YbWxBcnRlZmFjdHMobzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHZvaWQge1xuICAvLyBPcHRpbWl6ZSBuYW1lc3BhY2UgY2hlY2tzIHdpdGggZGlyZWN0IHByb3BlcnR5IGFjY2Vzc1xuICBjb25zdCB4bWxucyA9IG9bXCJAeG1sbnNcIl0gPz8gb1tcInhtbG5zXCJdXG4gIGlmICh4bWxucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHhtbG5zLCBYTUxfTkFNRVNQQUNFKVxuICAgIGRlbGV0ZSBvW1wiQHhtbG5zXCJdXG4gICAgZGVsZXRlIG9bXCJ4bWxuc1wiXVxuICB9XG5cbiAgaWYgKG9bXCJAeG1sbnM6eHNpXCJdID09PSBYU0lfTkFNRVNQQUNFKSB7XG4gICAgZGVsZXRlIG9bXCJAeG1sbnM6eHNpXCJdXG4gIH1cblxuICAvLyBPcHRpbWl6ZSBlbXB0eSBjaGVja3Mgd2l0aCBkaXJlY3QgcHJvcGVydHkgYWNjZXNzXG4gIGZvciAoY29uc3Qga2V5IGluIG8pIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9ba2V5XVxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgZGVsZXRlIG9ba2V5XVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgY29udGludWVcblxuICAgIGlmIChcbiAgICAgIHZhbHVlW1wiQHhzaTpuaWxcIl0gPT09IFwidHJ1ZVwiIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB8fFxuICAgICAgKCFBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgICB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0ICYmXG4gICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApXG4gICAgKSB7XG4gICAgICBkZWxldGUgb1trZXldXG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQWdDLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFFaEM7QUFDQSxJQUFNRSxXQUFXLEdBQUc7RUFDbEIsU0FBTyxLQUFLO0VBQ1osUUFBTTtBQUNSLENBQVU7QUFFVixJQUFNQyxhQUFhLEdBQUcsbURBQW1EO0FBQ3pFLElBQU1DLGFBQWEsR0FBRywyQ0FBMkM7QUFFMUQsU0FBU0MscUJBQXFCQSxDQUNuQ0MsQ0FBeUIsRUFDekJDLEdBQVcsRUFDVTtFQUNyQixJQUFNQyxXQUFXLEdBQUdGLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO0VBQzFCLElBQUlDLFdBQVcsS0FBS0MsU0FBUyxJQUFJRCxXQUFXLEtBQUssSUFBSSxFQUFFO0lBQ3JELE9BQU9GLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO0lBQ2IsT0FBT0UsU0FBUztFQUNsQjtFQUNBLElBQU1DLFlBQXFCLEdBQ3pCUixXQUFXLENBQUNNLFdBQVcsQ0FBNkI7RUFDdERHLHNCQUFNLENBQUNDLGNBQWMsQ0FDbkJGLFlBQVksRUFDWkQsU0FBUyw0QkFBQUksTUFBQSxDQUNpQk4sR0FBRyxTQUFBTSxNQUFBLENBQU1MLFdBQVcsQ0FDaEQsQ0FBQztFQUNERixDQUFDLENBQUNDLEdBQUcsQ0FBQyxHQUFHRyxZQUFZO0VBQ3JCLE9BQU9BLFlBQVk7QUFDckI7QUFFTyxTQUFTSSxxQkFBcUJBLENBQ25DUixDQUF5QixFQUN6QkMsR0FBVyxFQUNTO0VBQ3BCLElBQU1DLFdBQVcsR0FBR0YsQ0FBQyxDQUFDQyxHQUFHLENBQUM7RUFDMUIsSUFBSUMsV0FBVyxLQUFLQyxTQUFTLElBQUlELFdBQVcsS0FBSyxJQUFJLEVBQUU7SUFDckQsT0FBT0YsQ0FBQyxDQUFDQyxHQUFHLENBQUM7SUFDYixPQUFPRSxTQUFTO0VBQ2xCO0VBQ0EsSUFBTU0sWUFBWSxHQUFHQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ1QsV0FBVyxDQUFDO0VBQ2pELElBQUFHLHNCQUFNLEVBQ0osQ0FBQ0ssTUFBTSxDQUFDRSxLQUFLLENBQUNILFlBQVksQ0FBQywyQkFBQUYsTUFBQSxDQUNGTixHQUFHLFNBQUFNLE1BQUEsQ0FBTUwsV0FBVyxDQUMvQyxDQUFDO0VBQ0RGLENBQUMsQ0FBQ0MsR0FBRyxDQUFDLEdBQUdRLFlBQVk7RUFDckIsT0FBT0EsWUFBWTtBQUNyQjs7QUFFQTtBQUNPLFNBQVNJLGlCQUFpQkEsQ0FBQ2IsQ0FBeUIsRUFBUTtFQUFBLElBQUFjLFFBQUE7RUFDakU7RUFDQSxJQUFNQyxLQUFLLElBQUFELFFBQUEsR0FBR2QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFBYyxRQUFBLGNBQUFBLFFBQUEsR0FBSWQsQ0FBQyxDQUFDLE9BQU8sQ0FBQztFQUN2QyxJQUFJZSxLQUFLLEtBQUtaLFNBQVMsRUFBRTtJQUN2QkUsc0JBQU0sQ0FBQ1csV0FBVyxDQUFDRCxLQUFLLEVBQUVsQixhQUFhLENBQUM7SUFDeEMsT0FBT0csQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNsQixPQUFPQSxDQUFDLENBQUMsT0FBTyxDQUFDO0VBQ25CO0VBRUEsSUFBSUEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLRixhQUFhLEVBQUU7SUFDckMsT0FBT0UsQ0FBQyxDQUFDLFlBQVksQ0FBQztFQUN4Qjs7RUFFQTtFQUNBLEtBQUssSUFBTUMsR0FBRyxJQUFJRCxDQUFDLEVBQUU7SUFDbkIsSUFBTWlCLEtBQUssR0FBR2pCLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO0lBQ3BCLElBQUlnQixLQUFLLEtBQUssSUFBSSxFQUFFO01BQ2xCLE9BQU9qQixDQUFDLENBQUNDLEdBQUcsQ0FBQztNQUNiO0lBQ0Y7SUFFQSxJQUFJZ0IsS0FBSyxLQUFLZCxTQUFTLEVBQUU7SUFFekIsSUFDRWMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLE1BQU0sSUFDM0JDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixLQUFLLENBQUMsSUFBSUEsS0FBSyxDQUFDRyxNQUFNLEtBQUssQ0FBRSxJQUMzQyxDQUFDRixLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsS0FBSyxDQUFDLElBQ3BCQSxLQUFLLENBQUNJLFdBQVcsS0FBS0MsTUFBTSxJQUM1QkEsTUFBTSxDQUFDQyxJQUFJLENBQUNOLEtBQUssQ0FBQyxDQUFDRyxNQUFNLEtBQUssQ0FBRSxFQUNsQztNQUNBLE9BQU9wQixDQUFDLENBQUNDLEdBQUcsQ0FBQztJQUNmO0VBQ0Y7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,59 +0,0 @@
1
- import assert from "node:assert";
2
-
3
- // Move constant to module scope to avoid recreation
4
- const BOOLEAN_MAP = {
5
- false: false,
6
- true: true
7
- };
8
- const XML_NAMESPACE = "http://schemas.assemblee-nationale.fr/referentiel";
9
- const XSI_NAMESPACE = "http://www.w3.org/2001/XMLSchema-instance";
10
- export function cleanBooleanAttribute(o, key) {
11
- const stringValue = o[key];
12
- if (stringValue === undefined || stringValue === null) {
13
- delete o[key];
14
- return undefined;
15
- }
16
- const booleanValue = BOOLEAN_MAP[stringValue];
17
- assert.notStrictEqual(booleanValue, undefined, `Invalid boolean value: ${key} = ${stringValue}`);
18
- o[key] = booleanValue;
19
- return booleanValue;
20
- }
21
- export function cleanIntegerAttribute(o, key) {
22
- const stringValue = o[key];
23
- if (stringValue === undefined || stringValue === null) {
24
- delete o[key];
25
- return undefined;
26
- }
27
- const integerValue = Number.parseInt(stringValue);
28
- assert(!Number.isNaN(integerValue), `Invalid number value: ${key} = ${stringValue}`);
29
- o[key] = integerValue;
30
- return integerValue;
31
- }
32
-
33
- /// Remove XML fields that have no use in JSON.
34
- export function cleanXmlArtefacts(o) {
35
- // Optimize namespace checks with direct property access
36
- const xmlns = o["@xmlns"] ?? o["xmlns"];
37
- if (xmlns !== undefined) {
38
- assert.strictEqual(xmlns, XML_NAMESPACE);
39
- delete o["@xmlns"];
40
- delete o["xmlns"];
41
- }
42
- if (o["@xmlns:xsi"] === XSI_NAMESPACE) {
43
- delete o["@xmlns:xsi"];
44
- }
45
-
46
- // Optimize empty checks with direct property access
47
- for (const key in o) {
48
- const value = o[key];
49
- if (value === null) {
50
- delete o[key];
51
- continue;
52
- }
53
- if (value === undefined) continue;
54
- if (value["@xsi:nil"] === "true" || Array.isArray(value) && value.length === 0 || !Array.isArray(value) && value.constructor === Object && Object.keys(value).length === 0) {
55
- delete o[key];
56
- }
57
- }
58
- }
59
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJCT09MRUFOX01BUCIsImZhbHNlIiwidHJ1ZSIsIlhNTF9OQU1FU1BBQ0UiLCJYU0lfTkFNRVNQQUNFIiwiY2xlYW5Cb29sZWFuQXR0cmlidXRlIiwibyIsImtleSIsInN0cmluZ1ZhbHVlIiwidW5kZWZpbmVkIiwiYm9vbGVhblZhbHVlIiwibm90U3RyaWN0RXF1YWwiLCJjbGVhbkludGVnZXJBdHRyaWJ1dGUiLCJpbnRlZ2VyVmFsdWUiLCJOdW1iZXIiLCJwYXJzZUludCIsImlzTmFOIiwiY2xlYW5YbWxBcnRlZmFjdHMiLCJ4bWxucyIsInN0cmljdEVxdWFsIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJjb25zdHJ1Y3RvciIsIk9iamVjdCIsImtleXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xlYW5lcnMveG1sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0XCJcblxuLy8gTW92ZSBjb25zdGFudCB0byBtb2R1bGUgc2NvcGUgdG8gYXZvaWQgcmVjcmVhdGlvblxuY29uc3QgQk9PTEVBTl9NQVAgPSB7XG4gIGZhbHNlOiBmYWxzZSxcbiAgdHJ1ZTogdHJ1ZSxcbn0gYXMgY29uc3RcblxuY29uc3QgWE1MX05BTUVTUEFDRSA9IFwiaHR0cDovL3NjaGVtYXMuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9yZWZlcmVudGllbFwiXG5jb25zdCBYU0lfTkFNRVNQQUNFID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiXG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkJvb2xlYW5BdHRyaWJ1dGUoXG4gIG86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIGtleTogc3RyaW5nLFxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN0cmluZ1ZhbHVlID0gb1trZXldXG4gIGlmIChzdHJpbmdWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHN0cmluZ1ZhbHVlID09PSBudWxsKSB7XG4gICAgZGVsZXRlIG9ba2V5XVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICBjb25zdCBib29sZWFuVmFsdWU6IGJvb2xlYW4gPVxuICAgIEJPT0xFQU5fTUFQW3N0cmluZ1ZhbHVlIGFzIGtleW9mIHR5cGVvZiBCT09MRUFOX01BUF1cbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIGJvb2xlYW5WYWx1ZSxcbiAgICB1bmRlZmluZWQsXG4gICAgYEludmFsaWQgYm9vbGVhbiB2YWx1ZTogJHtrZXl9ID0gJHtzdHJpbmdWYWx1ZX1gLFxuICApXG4gIG9ba2V5XSA9IGJvb2xlYW5WYWx1ZVxuICByZXR1cm4gYm9vbGVhblZhbHVlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkludGVnZXJBdHRyaWJ1dGUoXG4gIG86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIGtleTogc3RyaW5nLFxuKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3RyaW5nVmFsdWUgPSBvW2tleV1cbiAgaWYgKHN0cmluZ1ZhbHVlID09PSB1bmRlZmluZWQgfHwgc3RyaW5nVmFsdWUgPT09IG51bGwpIHtcbiAgICBkZWxldGUgb1trZXldXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGNvbnN0IGludGVnZXJWYWx1ZSA9IE51bWJlci5wYXJzZUludChzdHJpbmdWYWx1ZSlcbiAgYXNzZXJ0KFxuICAgICFOdW1iZXIuaXNOYU4oaW50ZWdlclZhbHVlKSxcbiAgICBgSW52YWxpZCBudW1iZXIgdmFsdWU6ICR7a2V5fSA9ICR7c3RyaW5nVmFsdWV9YCxcbiAgKVxuICBvW2tleV0gPSBpbnRlZ2VyVmFsdWVcbiAgcmV0dXJuIGludGVnZXJWYWx1ZVxufVxuXG4vLy8gUmVtb3ZlIFhNTCBmaWVsZHMgdGhhdCBoYXZlIG5vIHVzZSBpbiBKU09OLlxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuWG1sQXJ0ZWZhY3RzKG86IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB2b2lkIHtcbiAgLy8gT3B0aW1pemUgbmFtZXNwYWNlIGNoZWNrcyB3aXRoIGRpcmVjdCBwcm9wZXJ0eSBhY2Nlc3NcbiAgY29uc3QgeG1sbnMgPSBvW1wiQHhtbG5zXCJdID8/IG9bXCJ4bWxuc1wiXVxuICBpZiAoeG1sbnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh4bWxucywgWE1MX05BTUVTUEFDRSlcbiAgICBkZWxldGUgb1tcIkB4bWxuc1wiXVxuICAgIGRlbGV0ZSBvW1wieG1sbnNcIl1cbiAgfVxuXG4gIGlmIChvW1wiQHhtbG5zOnhzaVwiXSA9PT0gWFNJX05BTUVTUEFDRSkge1xuICAgIGRlbGV0ZSBvW1wiQHhtbG5zOnhzaVwiXVxuICB9XG5cbiAgLy8gT3B0aW1pemUgZW1wdHkgY2hlY2tzIHdpdGggZGlyZWN0IHByb3BlcnR5IGFjY2Vzc1xuICBmb3IgKGNvbnN0IGtleSBpbiBvKSB7XG4gICAgY29uc3QgdmFsdWUgPSBvW2tleV1cbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGRlbGV0ZSBvW2tleV1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIGNvbnRpbnVlXG5cbiAgICBpZiAoXG4gICAgICB2YWx1ZVtcIkB4c2k6bmlsXCJdID09PSBcInRydWVcIiB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgICAgdmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCAmJlxuICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKVxuICAgICkge1xuICAgICAgZGVsZXRlIG9ba2V5XVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFNLE1BQU0sYUFBYTs7QUFFaEM7QUFDQSxNQUFNQyxXQUFXLEdBQUc7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