@tricoteuses/assemblee 1.10.5 → 2.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.
Files changed (400) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-CN7bRFdP.js +259 -0
  3. package/lib/amendements-CN7bRFdP.js.map +1 -0
  4. package/lib/amendements-Cg1lyCBp.js +735 -0
  5. package/lib/amendements-Cg1lyCBp.js.map +1 -0
  6. package/lib/api.d.ts +1 -0
  7. package/lib/api.d.ts.map +1 -0
  8. package/lib/cleaners/actes_legislatifs.d.ts +1 -0
  9. package/lib/cleaners/actes_legislatifs.d.ts.map +1 -0
  10. package/lib/cleaners/acteurs.d.ts +1 -0
  11. package/lib/cleaners/acteurs.d.ts.map +1 -0
  12. package/lib/cleaners/amendements.d.ts +1 -0
  13. package/lib/cleaners/amendements.d.ts.map +1 -0
  14. package/lib/cleaners/debats.d.ts +1 -0
  15. package/lib/cleaners/debats.d.ts.map +1 -0
  16. package/lib/cleaners/documents.d.ts +1 -0
  17. package/lib/cleaners/documents.d.ts.map +1 -0
  18. package/lib/cleaners/dossiers_legislatifs.d.ts +1 -0
  19. package/lib/cleaners/dossiers_legislatifs.d.ts.map +1 -0
  20. package/lib/cleaners/index.d.ts +10 -9
  21. package/lib/cleaners/index.d.ts.map +1 -0
  22. package/lib/cleaners/organes.d.ts +1 -0
  23. package/lib/cleaners/organes.d.ts.map +1 -0
  24. package/lib/cleaners/questions.d.ts +1 -0
  25. package/lib/cleaners/questions.d.ts.map +1 -0
  26. package/lib/cleaners/reunions.d.ts +1 -0
  27. package/lib/cleaners/reunions.d.ts.map +1 -0
  28. package/lib/cleaners/scrutins.d.ts +1 -0
  29. package/lib/cleaners/scrutins.d.ts.map +1 -0
  30. package/lib/cleaners/xml.d.ts +1 -0
  31. package/lib/cleaners/xml.d.ts.map +1 -0
  32. package/lib/cleaners.js +1138 -0
  33. package/lib/cleaners.js.map +1 -0
  34. package/lib/datasets.d.ts +4 -3
  35. package/lib/datasets.d.ts.map +1 -0
  36. package/lib/dates.d.ts +1 -0
  37. package/lib/dates.d.ts.map +1 -0
  38. package/lib/debats-BwZYgzXe.js +3978 -0
  39. package/lib/debats-BwZYgzXe.js.map +1 -0
  40. package/lib/dossiers_legislatifs.d.ts +3 -2
  41. package/lib/dossiers_legislatifs.d.ts.map +1 -0
  42. package/lib/file_systems.d.ts +1 -0
  43. package/lib/file_systems.d.ts.map +1 -0
  44. package/lib/git.d.ts +1 -0
  45. package/lib/git.d.ts.map +1 -0
  46. package/lib/index.d.ts +18 -22
  47. package/lib/index.d.ts.map +1 -0
  48. package/lib/index.js +1916 -285
  49. package/lib/index.js.map +1 -0
  50. package/lib/inserters.d.ts +6 -5
  51. package/lib/inserters.d.ts.map +1 -0
  52. package/lib/loaders.d.ts +13 -12
  53. package/lib/loaders.d.ts.map +1 -0
  54. package/lib/loaders.js +812 -1516
  55. package/lib/loaders.js.map +1 -0
  56. package/lib/logger.d.ts +1 -0
  57. package/lib/logger.d.ts.map +1 -0
  58. package/lib/organes.d.ts +2 -1
  59. package/lib/organes.d.ts.map +1 -0
  60. package/lib/parse-CzW8NHW5.js +2850 -0
  61. package/lib/parse-CzW8NHW5.js.map +1 -0
  62. package/lib/parsers/index.d.ts +3 -3
  63. package/lib/parsers/index.d.ts.map +1 -0
  64. package/lib/parsers/plf.d.ts +2 -0
  65. package/lib/parsers/plf.d.ts.map +1 -0
  66. package/lib/parsers/recherche_amendements.d.ts +3 -2
  67. package/lib/parsers/recherche_amendements.d.ts.map +1 -0
  68. package/lib/parsers/textes_lois.d.ts +2 -23
  69. package/lib/parsers/textes_lois.d.ts.map +1 -0
  70. package/lib/parsers.js +393 -0
  71. package/lib/parsers.js.map +1 -0
  72. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  73. package/lib/raw_types/acteurs_et_organes.d.ts.map +1 -0
  74. package/lib/raw_types/agendas.d.ts +1 -0
  75. package/lib/raw_types/agendas.d.ts.map +1 -0
  76. package/lib/raw_types/amendements.d.ts +1 -0
  77. package/lib/raw_types/amendements.d.ts.map +1 -0
  78. package/lib/raw_types/debats.d.ts +3 -2
  79. package/lib/raw_types/debats.d.ts.map +1 -0
  80. package/lib/raw_types/dossiers_legislatifs.d.ts +2 -1
  81. package/lib/raw_types/dossiers_legislatifs.d.ts.map +1 -0
  82. package/lib/raw_types/questions.d.ts +1 -0
  83. package/lib/raw_types/questions.d.ts.map +1 -0
  84. package/lib/raw_types/scrutins.d.ts +1 -0
  85. package/lib/raw_types/scrutins.d.ts.map +1 -0
  86. package/lib/schemas/acteurs_et_organes.d.json +982 -0
  87. package/lib/schemas/acteurs_et_organes.json +1166 -0
  88. package/lib/schemas/agendas.d.json +1561 -0
  89. package/lib/schemas/agendas.json +1745 -0
  90. package/lib/schemas/amendements.d.json +1901 -0
  91. package/lib/schemas/amendements.json +2085 -0
  92. package/lib/schemas/debats.d.json +623 -0
  93. package/lib/schemas/debats.json +842 -0
  94. package/lib/schemas/dossiers_legislatifs.d.json +3690 -0
  95. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  96. package/lib/schemas/legislatures.d.json +17 -0
  97. package/lib/schemas/legislatures.json +17 -0
  98. package/lib/schemas/questions.d.json +520 -0
  99. package/lib/schemas/questions.json +704 -0
  100. package/lib/schemas/scrutins.d.json +517 -0
  101. package/lib/schemas/scrutins.json +701 -0
  102. package/lib/scripts/add_links_to_documents.d.ts +2 -0
  103. package/lib/scripts/add_links_to_documents.d.ts.map +1 -0
  104. package/lib/scripts/clean_reorganized_data.d.ts +1 -0
  105. package/lib/scripts/clean_reorganized_data.d.ts.map +1 -0
  106. package/lib/scripts/copy-schemas.d.ts +2 -0
  107. package/lib/scripts/copy-schemas.d.ts.map +1 -0
  108. package/lib/scripts/diff_amendements.d.ts +1 -0
  109. package/lib/scripts/diff_amendements.d.ts.map +1 -0
  110. package/lib/scripts/document_dossiers_legislatifs.d.ts +1 -0
  111. package/lib/scripts/document_dossiers_legislatifs.d.ts.map +1 -0
  112. package/lib/scripts/generate-json-schemas.d.ts +2 -0
  113. package/lib/scripts/generate-json-schemas.d.ts.map +1 -0
  114. package/lib/scripts/get_today_reunions.d.ts +1 -0
  115. package/lib/scripts/get_today_reunions.d.ts.map +1 -0
  116. package/lib/scripts/merge_scrutins.d.ts +1 -0
  117. package/lib/scripts/merge_scrutins.d.ts.map +1 -0
  118. package/lib/scripts/process_open_dataset.d.ts +1 -0
  119. package/lib/scripts/process_open_dataset.d.ts.map +1 -0
  120. package/lib/scripts/raw_types_from_amendements.d.ts +1 -0
  121. package/lib/scripts/raw_types_from_amendements.d.ts.map +1 -0
  122. package/lib/scripts/reorganize_data.d.ts +1 -0
  123. package/lib/scripts/reorganize_data.d.ts.map +1 -0
  124. package/lib/scripts/retrieve_deputes_photos.d.ts +2 -1
  125. package/lib/scripts/retrieve_deputes_photos.d.ts.map +1 -0
  126. package/lib/scripts/retrieve_documents.d.ts +1 -0
  127. package/lib/scripts/retrieve_documents.d.ts.map +1 -0
  128. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  129. package/lib/scripts/retrieve_open_data.d.ts.map +1 -0
  130. package/lib/scripts/retrieve_pending_amendments.d.ts +1 -0
  131. package/lib/scripts/retrieve_pending_amendments.d.ts.map +1 -0
  132. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  133. package/lib/scripts/retrieve_senateurs_photos.d.ts.map +1 -0
  134. package/lib/scripts/shared/cli_helpers.d.ts +1 -0
  135. package/lib/scripts/shared/cli_helpers.d.ts.map +1 -0
  136. package/lib/scripts/test_iter_load.d.ts +1 -0
  137. package/lib/scripts/test_iter_load.d.ts.map +1 -0
  138. package/lib/scripts/test_load.d.ts +1 -0
  139. package/lib/scripts/test_load.d.ts.map +1 -0
  140. package/lib/scripts/test_load_big_files.d.ts +1 -0
  141. package/lib/scripts/test_load_big_files.d.ts.map +1 -0
  142. package/lib/scripts/validate_json.d.ts +1 -0
  143. package/lib/scripts/validate_json.d.ts.map +1 -0
  144. package/lib/shared_types/codes_actes.d.ts +1 -0
  145. package/lib/shared_types/codes_actes.d.ts.map +1 -0
  146. package/lib/strings.d.ts +1 -0
  147. package/lib/strings.d.ts.map +1 -0
  148. package/lib/types/acteurs_et_organes.d.ts +341 -0
  149. package/lib/types/acteurs_et_organes.d.ts.map +1 -0
  150. package/lib/types/agendas.d.ts +237 -10
  151. package/lib/types/agendas.d.ts.map +1 -0
  152. package/lib/types/amendements.d.ts +277 -1
  153. package/lib/types/amendements.d.ts.map +1 -0
  154. package/lib/types/debats.d.ts +53 -2
  155. package/lib/types/debats.d.ts.map +1 -0
  156. package/lib/types/dossiers_legislatifs.d.ts +404 -9
  157. package/lib/types/dossiers_legislatifs.d.ts.map +1 -0
  158. package/lib/types/legislatures.d.ts +1 -0
  159. package/lib/types/legislatures.d.ts.map +1 -0
  160. package/lib/types/questions.d.ts +100 -2
  161. package/lib/types/questions.d.ts.map +1 -0
  162. package/lib/types/scrutins.d.ts +102 -0
  163. package/lib/types/scrutins.d.ts.map +1 -0
  164. package/lib/urls.d.ts +3 -2
  165. package/lib/urls.d.ts.map +1 -0
  166. package/package.json +31 -95
  167. package/lib/api.js +0 -52
  168. package/lib/api.mjs +0 -45
  169. package/lib/bugs/acteur-00010/plugin.test.d.ts +0 -1
  170. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  171. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  172. package/lib/bugs/acteur-00010.d.ts +0 -7
  173. package/lib/bugs/acteur-00010.js +0 -116
  174. package/lib/bugs/acteur-00010.mjs +0 -26
  175. package/lib/bugs/agenda-00002/plugin.test.d.ts +0 -1
  176. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  177. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  178. package/lib/bugs/agenda-00002.d.ts +0 -15
  179. package/lib/bugs/agenda-00002.js +0 -406
  180. package/lib/bugs/agenda-00002.mjs +0 -172
  181. package/lib/bugs/agenda-00008/plugin.test.d.ts +0 -1
  182. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  183. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  184. package/lib/bugs/agenda-00008.d.ts +0 -7
  185. package/lib/bugs/agenda-00008.js +0 -123
  186. package/lib/bugs/agenda-00008.mjs +0 -26
  187. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  188. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  189. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  190. package/lib/bugs/agenda-00011.d.ts +0 -16
  191. package/lib/bugs/agenda-00011.js +0 -333
  192. package/lib/bugs/agenda-00011.mjs +0 -125
  193. package/lib/bugs.d.ts +0 -21
  194. package/lib/bugs.js +0 -452
  195. package/lib/bugs.mjs +0 -70
  196. package/lib/cleaners/actes_legislatifs.js +0 -315
  197. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  198. package/lib/cleaners/acteurs.js +0 -265
  199. package/lib/cleaners/acteurs.mjs +0 -180
  200. package/lib/cleaners/amendements.js +0 -294
  201. package/lib/cleaners/amendements.mjs +0 -227
  202. package/lib/cleaners/debats.js +0 -12
  203. package/lib/cleaners/debats.mjs +0 -5
  204. package/lib/cleaners/documents.js +0 -205
  205. package/lib/cleaners/documents.mjs +0 -133
  206. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  207. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  208. package/lib/cleaners/index.js +0 -70
  209. package/lib/cleaners/index.mjs +0 -10
  210. package/lib/cleaners/organes.js +0 -65
  211. package/lib/cleaners/organes.mjs +0 -48
  212. package/lib/cleaners/questions.js +0 -12
  213. package/lib/cleaners/questions.mjs +0 -5
  214. package/lib/cleaners/reunions.js +0 -312
  215. package/lib/cleaners/reunions.mjs +0 -255
  216. package/lib/cleaners/scrutins.js +0 -340
  217. package/lib/cleaners/scrutins.mjs +0 -221
  218. package/lib/cleaners/xml.js +0 -74
  219. package/lib/cleaners/xml.mjs +0 -59
  220. package/lib/datasets.js +0 -837
  221. package/lib/datasets.mjs +0 -755
  222. package/lib/dates.js +0 -124
  223. package/lib/dates.mjs +0 -100
  224. package/lib/dossiers_legislatifs.js +0 -346
  225. package/lib/dossiers_legislatifs.mjs +0 -208
  226. package/lib/file_systems.js +0 -162
  227. package/lib/file_systems.mjs +0 -62
  228. package/lib/git.js +0 -223
  229. package/lib/git.mjs +0 -151
  230. package/lib/index.mjs +0 -17
  231. package/lib/inserters.js +0 -521
  232. package/lib/inserters.mjs +0 -337
  233. package/lib/loaders.mjs +0 -886
  234. package/lib/logger.js +0 -35
  235. package/lib/logger.mjs +0 -26
  236. package/lib/organes.js +0 -22
  237. package/lib/organes.mjs +0 -15
  238. package/lib/parsers/documents.d.ts +0 -62
  239. package/lib/parsers/documents.js +0 -453
  240. package/lib/parsers/documents.mjs +0 -370
  241. package/lib/parsers/index.js +0 -40
  242. package/lib/parsers/index.mjs +0 -4
  243. package/lib/parsers/recherche_amendements.js +0 -403
  244. package/lib/parsers/recherche_amendements.mjs +0 -167
  245. package/lib/parsers/textes_lois.js +0 -307
  246. package/lib/parsers/textes_lois.mjs +0 -264
  247. package/lib/raw_types/acteurs_et_organes.js +0 -1215
  248. package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
  249. package/lib/raw_types/agendas.js +0 -777
  250. package/lib/raw_types/agendas.mjs +0 -724
  251. package/lib/raw_types/amendements.js +0 -1052
  252. package/lib/raw_types/amendements.mjs +0 -993
  253. package/lib/raw_types/debats.js +0 -630
  254. package/lib/raw_types/debats.mjs +0 -573
  255. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  256. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  257. package/lib/raw_types/questions.js +0 -469
  258. package/lib/raw_types/questions.mjs +0 -416
  259. package/lib/raw_types/scrutins.js +0 -651
  260. package/lib/raw_types/scrutins.mjs +0 -598
  261. package/lib/schemas/acteur/Acteur.json +0 -56
  262. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  263. package/lib/schemas/acteur/AdressePostale.json +0 -75
  264. package/lib/schemas/acteur/Civ.json +0 -14
  265. package/lib/schemas/acteur/Collaborateur.json +0 -29
  266. package/lib/schemas/acteur/EtatCivil.json +0 -51
  267. package/lib/schemas/acteur/Ident.json +0 -40
  268. package/lib/schemas/acteur/Lieu.json +0 -66
  269. package/lib/schemas/acteur/Mandat.json +0 -192
  270. package/lib/schemas/acteur/Profession.json +0 -46
  271. package/lib/schemas/agenda/Agenda.json +0 -318
  272. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  273. package/lib/schemas/agenda/PointOdj.json +0 -82
  274. package/lib/schemas/amendement/Amendement.json +0 -246
  275. package/lib/schemas/amendement/Diff.json +0 -25
  276. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  277. package/lib/schemas/amendement/Identifiant.json +0 -62
  278. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  279. package/lib/schemas/amendement/Representation.json +0 -67
  280. package/lib/schemas/amendement/Total.json +0 -26
  281. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  282. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  283. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  284. package/lib/schemas/converted_from_type/debats.json +0 -682
  285. package/lib/schemas/converted_from_type/deputes.json +0 -26
  286. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  287. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  288. package/lib/schemas/converted_from_type/questions.json +0 -328
  289. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  290. package/lib/schemas/debat/Contenu.json +0 -75
  291. package/lib/schemas/debat/Debat.json +0 -40
  292. package/lib/schemas/debat/Metadonnees.json +0 -75
  293. package/lib/schemas/debat/Orateur.json +0 -60
  294. package/lib/schemas/debat/Point.json +0 -169
  295. package/lib/schemas/debat/Sommaire.json +0 -71
  296. package/lib/schemas/debat/SommaireElement.json +0 -108
  297. package/lib/schemas/debat/Texte.json +0 -34
  298. package/lib/schemas/document/CodeLibelle.json +0 -25
  299. package/lib/schemas/document/Document.json +0 -385
  300. package/lib/schemas/document/Indexation.json +0 -38
  301. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  302. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  303. package/lib/schemas/dossier/Agenda.json +0 -23
  304. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  305. package/lib/schemas/dossier/Decision.json +0 -25
  306. package/lib/schemas/dossier/Dossier.json +0 -124
  307. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  308. package/lib/schemas/dossier/EtudePlf.json +0 -105
  309. package/lib/schemas/dossier/Europe.json +0 -42
  310. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  311. package/lib/schemas/dossier/InfoJO.json +0 -23
  312. package/lib/schemas/dossier/Initiateur.json +0 -36
  313. package/lib/schemas/dossier/Motion.json +0 -27
  314. package/lib/schemas/dossier/Promulgation.json +0 -62
  315. package/lib/schemas/dossier/Rapporteur.json +0 -36
  316. package/lib/schemas/dossier/Texte.json +0 -47
  317. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  318. package/lib/schemas/organe/Organe.json +0 -136
  319. package/lib/schemas/organe/ViMoDe.json +0 -28
  320. package/lib/schemas/question/Auteur.json +0 -58
  321. package/lib/schemas/question/Cloture.json +0 -28
  322. package/lib/schemas/question/InfoJO.json +0 -40
  323. package/lib/schemas/question/MinAttribElement.json +0 -30
  324. package/lib/schemas/question/Question.json +0 -172
  325. package/lib/schemas/question/Renouvellement.json +0 -17
  326. package/lib/schemas/question/Signalement.json +0 -21
  327. package/lib/schemas/question/Texte.json +0 -24
  328. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  329. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  330. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  331. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  332. package/lib/schemas/scrutin/Scrutin.json +0 -187
  333. package/lib/schemas/scrutin/Votant.json +0 -37
  334. package/lib/scripts/bugs_helper.d.ts +0 -13
  335. package/lib/scripts/bugs_helper.js +0 -595
  336. package/lib/scripts/bugs_helper.mjs +0 -251
  337. package/lib/scripts/clean_reorganized_data.js +0 -613
  338. package/lib/scripts/clean_reorganized_data.mjs +0 -276
  339. package/lib/scripts/diff_amendements.js +0 -249
  340. package/lib/scripts/diff_amendements.mjs +0 -202
  341. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  342. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  343. package/lib/scripts/get_today_reunions.js +0 -37
  344. package/lib/scripts/get_today_reunions.mjs +0 -31
  345. package/lib/scripts/merge_scrutins.js +0 -97
  346. package/lib/scripts/merge_scrutins.mjs +0 -47
  347. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  348. package/lib/scripts/parse_textes_lois.js +0 -171
  349. package/lib/scripts/parse_textes_lois.mjs +0 -140
  350. package/lib/scripts/process_open_dataset.js +0 -301
  351. package/lib/scripts/process_open_dataset.mjs +0 -134
  352. package/lib/scripts/raw_types_from_amendements.js +0 -135
  353. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  354. package/lib/scripts/reorganize_data.js +0 -805
  355. package/lib/scripts/reorganize_data.mjs +0 -517
  356. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  357. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  358. package/lib/scripts/retrieve_documents.js +0 -547
  359. package/lib/scripts/retrieve_documents.mjs +0 -242
  360. package/lib/scripts/retrieve_open_data.js +0 -107
  361. package/lib/scripts/retrieve_open_data.mjs +0 -26
  362. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  363. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  364. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  365. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  366. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  367. package/lib/scripts/retrieve_textes_lois.js +0 -240
  368. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  369. package/lib/scripts/shared/cli_helpers.js +0 -89
  370. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  371. package/lib/scripts/test_iter_load.js +0 -155
  372. package/lib/scripts/test_iter_load.mjs +0 -72
  373. package/lib/scripts/test_load.js +0 -26
  374. package/lib/scripts/test_load.mjs +0 -16
  375. package/lib/scripts/test_load_big_files.js +0 -26
  376. package/lib/scripts/test_load_big_files.mjs +0 -16
  377. package/lib/scripts/validate_json.js +0 -353
  378. package/lib/scripts/validate_json.mjs +0 -184
  379. package/lib/shared_types/codes_actes.js +0 -231
  380. package/lib/shared_types/codes_actes.mjs +0 -224
  381. package/lib/strings.js +0 -16
  382. package/lib/strings.mjs +0 -7
  383. package/lib/types/acteurs_et_organes.js +0 -965
  384. package/lib/types/acteurs_et_organes.mjs +0 -906
  385. package/lib/types/agendas.js +0 -628
  386. package/lib/types/agendas.mjs +0 -575
  387. package/lib/types/amendements.js +0 -899
  388. package/lib/types/amendements.mjs +0 -842
  389. package/lib/types/debats.js +0 -619
  390. package/lib/types/debats.mjs +0 -562
  391. package/lib/types/dossiers_legislatifs.js +0 -1188
  392. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  393. package/lib/types/legislatures.js +0 -17
  394. package/lib/types/legislatures.mjs +0 -10
  395. package/lib/types/questions.js +0 -454
  396. package/lib/types/questions.mjs +0 -401
  397. package/lib/types/scrutins.js +0 -556
  398. package/lib/types/scrutins.mjs +0 -503
  399. package/lib/urls.js +0 -325
  400. package/lib/urls.mjs +0 -258
@@ -1,242 +0,0 @@
1
- import assert from "assert";
2
- import commandLineArgs from "command-line-args";
3
- import { createHash } from "crypto";
4
- import { differenceInDays } from "date-fns";
5
- import fs from "fs-extra";
6
- import path from "path";
7
- import { walkDocumentAndDivisions } from "../dossiers_legislatifs.mjs";
8
- import * as git from "../git.mjs";
9
- import { iterLoadAssembleeDocuments, pathFromDocumentUid } from "../loaders.mjs";
10
- import { parseTexte } from "../parsers/index.mjs";
11
- import { DocumentUrlFormat, iterDocumentOrDivisionUrls } from "../urls.mjs";
12
- import { commitOption, dataDirDefaultOption, legislatureOption, pullOption, remoteOption, silentOption, verboseOption, documentFormatOption } from "./shared/cli_helpers.mjs";
13
- function parseArgs(argv) {
14
- const optionsDefinitions = [commitOption, legislatureOption, remoteOption, silentOption, verboseOption, dataDirDefaultOption, pullOption, {
15
- alias: "f",
16
- help: "retrieve all documents, even already retrieved ones",
17
- name: "full",
18
- type: Boolean
19
- }, {
20
- alias: "n",
21
- help: "try to also retrieve documents that were previously not found",
22
- name: "not-found",
23
- type: Boolean
24
- }, documentFormatOption, {
25
- alias: "T",
26
- help: "type of documents to retrieve (for example: PION)",
27
- multiple: true,
28
- name: "document-type",
29
- type: String
30
- }];
31
- const options = commandLineArgs(optionsDefinitions, {
32
- argv: argv
33
- });
34
- return options;
35
- }
36
- const today = new Date();
37
- async function fetchWithRetry(url, retries = 3, backoff = 300) {
38
- for (let attempt = 0; attempt < retries; attempt++) {
39
- try {
40
- return await fetch(url);
41
- } catch (error) {
42
- if (attempt === retries - 1) {
43
- throw error;
44
- }
45
- console.warn(`Fetch attempt ${attempt + 1} for ${url} failed. Retrying in ${backoff}ms...`);
46
- await new Promise(resolve => setTimeout(resolve, backoff));
47
- backoff *= 2;
48
- }
49
- }
50
- throw new Error(`Failed to fetch ${url} after ${retries} attempts`);
51
- }
52
- export async function downloadAndParse(document, documentsDir, options) {
53
- if (document.uid.substring(4, 6) === "SN") {
54
- return;
55
- }
56
- if (["RAPP", "RINF"].includes(document.uid.substring(0, 4))) {
57
- return;
58
- }
59
- if (options.legislature?.toString() !== document.legislature) {
60
- return;
61
- }
62
- if (options.fetchDocuments) {
63
- const dataDir = options.dataDir;
64
- const documentsFilesDir = path.join(dataDir, "Documents");
65
- const documentDir = pathFromDocumentUid(`${documentsDir}/documents`, document.uid);
66
- const documentFileDir = pathFromDocumentUid(documentsFilesDir, document.uid);
67
- fs.ensureDirSync(documentsFilesDir);
68
- await processDocumentOrDivision(document, documentsFilesDir, options);
69
- if (options.parseDocuments) {
70
- const documentPath = `${documentDir}.json`;
71
- const htmlPath = path.join(documentFileDir, `dyn-opendata.html`);
72
- if (fs.existsSync(htmlPath)) {
73
- const html = fs.readFileSync(htmlPath, {
74
- encoding: "utf-8"
75
- });
76
- try {
77
- const parsedDocument = parseTexte("https://www.assemblee-nationale.fr", html);
78
- if (parsedDocument && fs.existsSync(documentPath)) {
79
- const json = fs.readFileSync(documentPath, {
80
- encoding: "utf-8"
81
- });
82
- const documentJson = JSON.parse(json);
83
- documentJson.subdivisions = parsedDocument?.subdivisions;
84
- fs.writeFileSync(documentPath, JSON.stringify(documentJson, null, 2));
85
- }
86
- } catch (e) {
87
- console.log(`Unable to parse document ${document.uid}`);
88
- return;
89
- }
90
- }
91
- }
92
- }
93
- }
94
- async function retrieveDocuments(options) {
95
- assert(!options.commit || !options.uid, 'Options "commit" & "uid" are incompatible');
96
- const dataDir = options.dataDir;
97
- const documentsDir = path.join(dataDir, "Documents");
98
- if (options.pull) {
99
- git.resetAndPull(documentsDir);
100
- }
101
- fs.ensureDirSync(documentsDir);
102
- if (options.full && !options.uid) {
103
- for (const filename of fs.readdirSync(documentsDir)) {
104
- if (filename[0] === ".") {
105
- continue;
106
- }
107
- fs.removeSync(path.join(documentsDir, filename));
108
- }
109
- }
110
- const firstUid = options.uid;
111
- let skip = Boolean(firstUid);
112
- for (const {
113
- document
114
- } of iterLoadAssembleeDocuments(dataDir, options.legislature)) {
115
- for (const documentOrDivision of walkDocumentAndDivisions(document)) {
116
- // Ignore documents from Sénat.
117
- if (documentOrDivision.uid.substring(4, 6) === "SN") {
118
- continue;
119
- }
120
- if (skip) {
121
- if (documentOrDivision.uid === firstUid) {
122
- skip = false;
123
- } else {
124
- continue;
125
- }
126
- }
127
- await processDocumentOrDivision(documentOrDivision, documentsDir, options);
128
- }
129
- }
130
- if (options.commit) {
131
- return git.commitAndPush(documentsDir, "Nouvelle moisson", options.remote);
132
- }
133
- return 0;
134
- }
135
- async function processDocumentOrDivision(documentOrDivision, documentsDir, options) {
136
- const documentDir = pathFromDocumentUid(documentsDir, documentOrDivision.uid);
137
- fs.ensureDirSync(documentDir);
138
- const filenameBySha256 = {};
139
- const indexPath = path.join(documentDir, "index.json");
140
- const index = fs.pathExistsSync(indexPath) ? fs.readJsonSync(indexPath) : {};
141
- for (const {
142
- format,
143
- type,
144
- url
145
- } of iterDocumentOrDivisionUrls(documentOrDivision)) {
146
- const filename = `${type}.${format === DocumentUrlFormat.Pdf ? "pdf" : "html"}`;
147
-
148
- // Filter by file extension if option is passed
149
- const fileExtension = url.split(".").pop();
150
- if (options.format && fileExtension && options.format !== fileExtension) {
151
- continue;
152
- }
153
- if (options.legislature && options.legislature.toString() !== documentOrDivision.legislature) {
154
- continue;
155
- }
156
-
157
- // Filter by document type if option is passed
158
- const documentType = documentOrDivision.classification?.type?.code;
159
- if (options["document-type"] !== undefined && !options["document-type"].includes(documentType)) {
160
- continue;
161
- }
162
- let formatFilesInfos = index[format] ?? (index[format] = []);
163
- let fileInfos = formatFilesInfos.find(file => file.url === url) ?? {};
164
- if (!formatFilesInfos.includes(fileInfos)) {
165
- formatFilesInfos.push(fileInfos);
166
- }
167
- fileInfos.url = url;
168
- if (fileInfos.status === 200 && !options.full) {
169
- filenameBySha256[fileInfos.sha256] = filename;
170
- continue;
171
- }
172
- if (fileInfos.status === 404 && !options["not-found"] && differenceInDays(today, documentOrDivision.cycleDeVie.chrono.dateCreation ?? documentOrDivision.cycleDeVie.chrono.dateDepot) > 10) {
173
- continue;
174
- }
175
- if (!options.silent) {
176
- console.log(`Retrieving document or division ${documentOrDivision.uid} at ${url}…`);
177
- }
178
- const response = await fetchWithRetry(url);
179
- const filePath = path.join(documentDir, filename);
180
- if (response.ok) {
181
- const arrayBuffer = await response.arrayBuffer();
182
- const buffer = Buffer.from(arrayBuffer);
183
- if (format === DocumentUrlFormat.Pdf && !buffer.subarray(0, 4).toString().startsWith("%PDF")) {
184
- // Instead of a PDF, the received data may be an HTML page with a message like
185
- // "Document non encore publié".
186
- if (!options.silent) {
187
- console.warn(` PDF "${url}" not found.`);
188
- }
189
- fs.removeSync(filePath);
190
- delete fileInfos.filename;
191
- delete fileInfos.sha256;
192
- fileInfos.status = 404;
193
- } else {
194
- const sha256 = createHash("sha256").update(buffer).digest("hex");
195
- const existingFilename = filenameBySha256[sha256];
196
- if (existingFilename === undefined) {
197
- fs.writeFileSync(filePath, buffer, {
198
- encoding: "utf8"
199
- });
200
- fileInfos.filename = filename;
201
- filenameBySha256[sha256] = filename;
202
- } else {
203
- fileInfos.filename = existingFilename;
204
- }
205
- fileInfos.sha256 = sha256;
206
- fileInfos.status = response.status;
207
- }
208
- } else {
209
- if (response.status === 404) {
210
- if (!options.silent) {
211
- console.warn(` Page "${url}" not found.`);
212
- }
213
- } else {
214
- console.error(` Error:\n${JSON.stringify({
215
- code: response.status,
216
- message: response.statusText
217
- }, null, 2)}`);
218
- }
219
- fs.removeSync(filePath);
220
- delete fileInfos.filename;
221
- delete fileInfos.sha256;
222
- fileInfos.status = response.status;
223
- }
224
- }
225
- fs.writeJsonSync(indexPath, index, {
226
- encoding: "utf-8",
227
- spaces: 2
228
- });
229
- }
230
- function main(argv) {
231
- const options = parseArgs(argv);
232
- return retrieveDocuments(options);
233
- }
234
-
235
- /* istanbul ignore if */
236
- if (process.argv[1].endsWith("retrieve_documents.ts")) {
237
- main(process.argv).then(exitCode => process.exit(exitCode)).catch(error => {
238
- console.log(error);
239
- process.exit(1);
240
- });
241
- }
242
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjb21tYW5kTGluZUFyZ3MiLCJjcmVhdGVIYXNoIiwiZGlmZmVyZW5jZUluRGF5cyIsImZzIiwicGF0aCIsIndhbGtEb2N1bWVudEFuZERpdmlzaW9ucyIsImdpdCIsIml0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzIiwicGF0aEZyb21Eb2N1bWVudFVpZCIsInBhcnNlVGV4dGUiLCJEb2N1bWVudFVybEZvcm1hdCIsIml0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzIiwiY29tbWl0T3B0aW9uIiwiZGF0YURpckRlZmF1bHRPcHRpb24iLCJsZWdpc2xhdHVyZU9wdGlvbiIsInB1bGxPcHRpb24iLCJyZW1vdGVPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJ2ZXJib3NlT3B0aW9uIiwiZG9jdW1lbnRGb3JtYXRPcHRpb24iLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwibXVsdGlwbGUiLCJTdHJpbmciLCJvcHRpb25zIiwidG9kYXkiLCJEYXRlIiwiZmV0Y2hXaXRoUmV0cnkiLCJ1cmwiLCJyZXRyaWVzIiwiYmFja29mZiIsImF0dGVtcHQiLCJmZXRjaCIsImVycm9yIiwiY29uc29sZSIsIndhcm4iLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJFcnJvciIsImRvd25sb2FkQW5kUGFyc2UiLCJkb2N1bWVudCIsImRvY3VtZW50c0RpciIsInVpZCIsInN1YnN0cmluZyIsImluY2x1ZGVzIiwibGVnaXNsYXR1cmUiLCJ0b1N0cmluZyIsImZldGNoRG9jdW1lbnRzIiwiZGF0YURpciIsImRvY3VtZW50c0ZpbGVzRGlyIiwiam9pbiIsImRvY3VtZW50RGlyIiwiZG9jdW1lbnRGaWxlRGlyIiwiZW5zdXJlRGlyU3luYyIsInByb2Nlc3NEb2N1bWVudE9yRGl2aXNpb24iLCJwYXJzZURvY3VtZW50cyIsImRvY3VtZW50UGF0aCIsImh0bWxQYXRoIiwiZXhpc3RzU3luYyIsImh0bWwiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInBhcnNlZERvY3VtZW50IiwianNvbiIsImRvY3VtZW50SnNvbiIsIkpTT04iLCJwYXJzZSIsInN1YmRpdmlzaW9ucyIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJlIiwibG9nIiwicmV0cmlldmVEb2N1bWVudHMiLCJjb21taXQiLCJwdWxsIiwicmVzZXRBbmRQdWxsIiwiZnVsbCIsImZpbGVuYW1lIiwicmVhZGRpclN5bmMiLCJyZW1vdmVTeW5jIiwiZmlyc3RVaWQiLCJza2lwIiwiZG9jdW1lbnRPckRpdmlzaW9uIiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsImZpbGVuYW1lQnlTaGEyNTYiLCJpbmRleFBhdGgiLCJpbmRleCIsInBhdGhFeGlzdHNTeW5jIiwicmVhZEpzb25TeW5jIiwiZm9ybWF0IiwiUGRmIiwiZmlsZUV4dGVuc2lvbiIsInNwbGl0IiwicG9wIiwiZG9jdW1lbnRUeXBlIiwiY2xhc3NpZmljYXRpb24iLCJjb2RlIiwidW5kZWZpbmVkIiwiZm9ybWF0RmlsZXNJbmZvcyIsImZpbGVJbmZvcyIsImZpbmQiLCJmaWxlIiwicHVzaCIsInN0YXR1cyIsInNoYTI1NiIsImN5Y2xlRGVWaWUiLCJjaHJvbm8iLCJkYXRlQ3JlYXRpb24iLCJkYXRlRGVwb3QiLCJzaWxlbnQiLCJyZXNwb25zZSIsImZpbGVQYXRoIiwib2siLCJhcnJheUJ1ZmZlciIsImJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJzdWJhcnJheSIsInN0YXJ0c1dpdGgiLCJ1cGRhdGUiLCJkaWdlc3QiLCJleGlzdGluZ0ZpbGVuYW1lIiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJ3cml0ZUpzb25TeW5jIiwic3BhY2VzIiwibWFpbiIsInByb2Nlc3MiLCJlbmRzV2l0aCIsInRoZW4iLCJleGl0Q29kZSIsImV4aXQiLCJjYXRjaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX2RvY3VtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJjcnlwdG9cIlxuaW1wb3J0IHsgZGlmZmVyZW5jZUluRGF5cyB9IGZyb20gXCJkYXRlLWZuc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHtcbiAgRG9jdW1lbnRGaWxlSW5mb3MsXG4gIERvY3VtZW50RmlsZXNJbmRleCxcbiAgd2Fsa0RvY3VtZW50QW5kRGl2aXNpb25zLFxufSBmcm9tIFwiLi4vZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHsgaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMsIHBhdGhGcm9tRG9jdW1lbnRVaWQgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBwYXJzZVRleHRlIH0gZnJvbSBcIi4uL3BhcnNlcnNcIlxuaW1wb3J0IHsgRG9jdW1lbnRVcmxGb3JtYXQsIGl0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzIH0gZnJvbSBcIi4uL3VybHNcIlxuaW1wb3J0IHtcbiAgY29tbWl0T3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHB1bGxPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkb2N1bWVudEZvcm1hdE9wdGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIGNvbW1pdE9wdGlvbixcbiAgICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgICByZW1vdGVPcHRpb24sXG4gICAgc2lsZW50T3B0aW9uLFxuICAgIHZlcmJvc2VPcHRpb24sXG4gICAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gICAgcHVsbE9wdGlvbixcbiAgICB7XG4gICAgICBhbGlhczogXCJmXCIsXG4gICAgICBoZWxwOiBcInJldHJpZXZlIGFsbCBkb2N1bWVudHMsIGV2ZW4gYWxyZWFkeSByZXRyaWV2ZWQgb25lc1wiLFxuICAgICAgbmFtZTogXCJmdWxsXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiblwiLFxuICAgICAgaGVscDogXCJ0cnkgdG8gYWxzbyByZXRyaWV2ZSBkb2N1bWVudHMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgbm90IGZvdW5kXCIsXG4gICAgICBuYW1lOiBcIm5vdC1mb3VuZFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGRvY3VtZW50Rm9ybWF0T3B0aW9uLFxuICAgIHtcbiAgICAgIGFsaWFzOiBcIlRcIixcbiAgICAgIGhlbHA6IFwidHlwZSBvZiBkb2N1bWVudHMgdG8gcmV0cmlldmUgKGZvciBleGFtcGxlOiBQSU9OKVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImRvY3VtZW50LXR5cGVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpXG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoV2l0aFJldHJ5KFxuICB1cmw6IHN0cmluZyxcbiAgcmV0cmllczogbnVtYmVyID0gMyxcbiAgYmFja29mZjogbnVtYmVyID0gMzAwLFxuKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IHJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZmV0Y2godXJsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoYXR0ZW1wdCA9PT0gcmV0cmllcyAtIDEpIHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEZldGNoIGF0dGVtcHQgJHthdHRlbXB0ICsgMX0gZm9yICR7dXJsfSBmYWlsZWQuIFJldHJ5aW5nIGluICR7YmFja29mZn1tcy4uLmAsXG4gICAgICApXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBiYWNrb2ZmKSlcbiAgICAgIGJhY2tvZmYgKj0gMlxuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCAke3VybH0gYWZ0ZXIgJHtyZXRyaWVzfSBhdHRlbXB0c2ApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3dubG9hZEFuZFBhcnNlKFxuICBkb2N1bWVudDogYW55LFxuICBkb2N1bWVudHNEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChkb2N1bWVudC51aWQuc3Vic3RyaW5nKDQsIDYpID09PSBcIlNOXCIpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChbXCJSQVBQXCIsIFwiUklORlwiXS5pbmNsdWRlcyhkb2N1bWVudC51aWQuc3Vic3RyaW5nKDAsIDQpKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKG9wdGlvbnMubGVnaXNsYXR1cmU/LnRvU3RyaW5nKCkgIT09IGRvY3VtZW50LmxlZ2lzbGF0dXJlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAob3B0aW9ucy5mZXRjaERvY3VtZW50cykge1xuICAgIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgICBjb25zdCBkb2N1bWVudHNGaWxlc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBcIkRvY3VtZW50c1wiKVxuICAgIGNvbnN0IGRvY3VtZW50RGlyID0gcGF0aEZyb21Eb2N1bWVudFVpZChcbiAgICAgIGAke2RvY3VtZW50c0Rpcn0vZG9jdW1lbnRzYCxcbiAgICAgIGRvY3VtZW50LnVpZCxcbiAgICApXG4gICAgY29uc3QgZG9jdW1lbnRGaWxlRGlyID0gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNGaWxlc0RpciwgZG9jdW1lbnQudWlkKVxuXG4gICAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudHNGaWxlc0RpcilcbiAgICBhd2FpdCBwcm9jZXNzRG9jdW1lbnRPckRpdmlzaW9uKGRvY3VtZW50LCBkb2N1bWVudHNGaWxlc0Rpciwgb3B0aW9ucylcblxuICAgIGlmIChvcHRpb25zLnBhcnNlRG9jdW1lbnRzKSB7XG4gICAgICBjb25zdCBkb2N1bWVudFBhdGggPSBgJHtkb2N1bWVudERpcn0uanNvbmBcbiAgICAgIGNvbnN0IGh0bWxQYXRoID0gcGF0aC5qb2luKGRvY3VtZW50RmlsZURpciwgYGR5bi1vcGVuZGF0YS5odG1sYClcblxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoaHRtbFBhdGgpKSB7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBmcy5yZWFkRmlsZVN5bmMoaHRtbFBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBhcnNlZERvY3VtZW50ID0gcGFyc2VUZXh0ZShcbiAgICAgICAgICAgIFwiaHR0cHM6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mclwiLFxuICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKHBhcnNlZERvY3VtZW50ICYmIGZzLmV4aXN0c1N5bmMoZG9jdW1lbnRQYXRoKSkge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudFBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uID0gSlNPTi5wYXJzZShqc29uKVxuICAgICAgICAgICAgZG9jdW1lbnRKc29uLnN1YmRpdmlzaW9ucyA9IHBhcnNlZERvY3VtZW50Py5zdWJkaXZpc2lvbnNcbiAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgIGRvY3VtZW50UGF0aCxcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnRKc29uLCBudWxsLCAyKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgVW5hYmxlIHRvIHBhcnNlIGRvY3VtZW50ICR7ZG9jdW1lbnQudWlkfWApXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVEb2N1bWVudHMob3B0aW9uczogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgYXNzZXJ0KFxuICAgICFvcHRpb25zLmNvbW1pdCB8fCAhb3B0aW9ucy51aWQsXG4gICAgJ09wdGlvbnMgXCJjb21taXRcIiAmIFwidWlkXCIgYXJlIGluY29tcGF0aWJsZScsXG4gIClcblxuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IGRvY3VtZW50c0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBcIkRvY3VtZW50c1wiKVxuICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgZ2l0LnJlc2V0QW5kUHVsbChkb2N1bWVudHNEaXIpXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudHNEaXIpXG5cbiAgaWYgKG9wdGlvbnMuZnVsbCAmJiAhb3B0aW9ucy51aWQpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRvY3VtZW50c0RpcikpIHtcbiAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRvY3VtZW50c0RpciwgZmlsZW5hbWUpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZpcnN0VWlkID0gb3B0aW9ucy51aWRcbiAgbGV0IHNraXAgPSBCb29sZWFuKGZpcnN0VWlkKVxuICBmb3IgKGNvbnN0IHsgZG9jdW1lbnQgfSBvZiBpdGVyTG9hZEFzc2VtYmxlZURvY3VtZW50cyhcbiAgICBkYXRhRGlyLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gICkpIHtcbiAgICBmb3IgKGNvbnN0IGRvY3VtZW50T3JEaXZpc2lvbiBvZiB3YWxrRG9jdW1lbnRBbmREaXZpc2lvbnMoZG9jdW1lbnQpKSB7XG4gICAgICAvLyBJZ25vcmUgZG9jdW1lbnRzIGZyb20gU8OpbmF0LlxuICAgICAgaWYgKGRvY3VtZW50T3JEaXZpc2lvbi51aWQuc3Vic3RyaW5nKDQsIDYpID09PSBcIlNOXCIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNraXApIHtcbiAgICAgICAgaWYgKGRvY3VtZW50T3JEaXZpc2lvbi51aWQgPT09IGZpcnN0VWlkKSB7XG4gICAgICAgICAgc2tpcCA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBwcm9jZXNzRG9jdW1lbnRPckRpdmlzaW9uKGRvY3VtZW50T3JEaXZpc2lvbiwgZG9jdW1lbnRzRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIHJldHVybiBnaXQuY29tbWl0QW5kUHVzaChkb2N1bWVudHNEaXIsIFwiTm91dmVsbGUgbW9pc3NvblwiLCBvcHRpb25zLnJlbW90ZSlcbiAgfVxuICByZXR1cm4gMFxufVxuXG5hc3luYyBmdW5jdGlvbiBwcm9jZXNzRG9jdW1lbnRPckRpdmlzaW9uKFxuICBkb2N1bWVudE9yRGl2aXNpb246IGFueSxcbiAgZG9jdW1lbnRzRGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBkb2N1bWVudERpciA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudE9yRGl2aXNpb24udWlkKVxuICBmcy5lbnN1cmVEaXJTeW5jKGRvY3VtZW50RGlyKVxuXG4gIGNvbnN0IGZpbGVuYW1lQnlTaGEyNTY6IHsgW2RpZ2VzdDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fVxuICBjb25zdCBpbmRleFBhdGggPSBwYXRoLmpvaW4oZG9jdW1lbnREaXIsIFwiaW5kZXguanNvblwiKVxuICBjb25zdCBpbmRleCA9IChcbiAgICBmcy5wYXRoRXhpc3RzU3luYyhpbmRleFBhdGgpID8gZnMucmVhZEpzb25TeW5jKGluZGV4UGF0aCkgOiB7fVxuICApIGFzIERvY3VtZW50RmlsZXNJbmRleFxuXG4gIGZvciAoY29uc3QgeyBmb3JtYXQsIHR5cGUsIHVybCB9IG9mIGl0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzKFxuICAgIGRvY3VtZW50T3JEaXZpc2lvbixcbiAgKSkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gYCR7dHlwZX0uJHtmb3JtYXQgPT09IERvY3VtZW50VXJsRm9ybWF0LlBkZiA/IFwicGRmXCIgOiBcImh0bWxcIn1gXG5cbiAgICAvLyBGaWx0ZXIgYnkgZmlsZSBleHRlbnNpb24gaWYgb3B0aW9uIGlzIHBhc3NlZFxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSB1cmwuc3BsaXQoXCIuXCIpLnBvcCgpXG4gICAgaWYgKG9wdGlvbnMuZm9ybWF0ICYmIGZpbGVFeHRlbnNpb24gJiYgb3B0aW9ucy5mb3JtYXQgIT09IGZpbGVFeHRlbnNpb24pIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5sZWdpc2xhdHVyZSAmJlxuICAgICAgb3B0aW9ucy5sZWdpc2xhdHVyZS50b1N0cmluZygpICE9PSBkb2N1bWVudE9yRGl2aXNpb24ubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIGJ5IGRvY3VtZW50IHR5cGUgaWYgb3B0aW9uIGlzIHBhc3NlZFxuICAgIGNvbnN0IGRvY3VtZW50VHlwZSA9IGRvY3VtZW50T3JEaXZpc2lvbi5jbGFzc2lmaWNhdGlvbj8udHlwZT8uY29kZVxuICAgIGlmIChcbiAgICAgIG9wdGlvbnNbXCJkb2N1bWVudC10eXBlXCJdICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICFvcHRpb25zW1wiZG9jdW1lbnQtdHlwZVwiXS5pbmNsdWRlcyhkb2N1bWVudFR5cGUpXG4gICAgKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGxldCBmb3JtYXRGaWxlc0luZm9zID0gaW5kZXhbZm9ybWF0XSA/PyAoaW5kZXhbZm9ybWF0XSA9IFtdKVxuICAgIGxldCBmaWxlSW5mb3MgPVxuICAgICAgZm9ybWF0RmlsZXNJbmZvcy5maW5kKChmaWxlKSA9PiBmaWxlLnVybCA9PT0gdXJsKSA/P1xuICAgICAgKHt9IGFzIERvY3VtZW50RmlsZUluZm9zKVxuICAgIGlmICghZm9ybWF0RmlsZXNJbmZvcy5pbmNsdWRlcyhmaWxlSW5mb3MpKSB7XG4gICAgICBmb3JtYXRGaWxlc0luZm9zLnB1c2goZmlsZUluZm9zKVxuICAgIH1cbiAgICBmaWxlSW5mb3MudXJsID0gdXJsXG5cbiAgICBpZiAoZmlsZUluZm9zLnN0YXR1cyA9PT0gMjAwICYmICFvcHRpb25zLmZ1bGwpIHtcbiAgICAgIGZpbGVuYW1lQnlTaGEyNTZbZmlsZUluZm9zLnNoYTI1NiBhcyBzdHJpbmddID0gZmlsZW5hbWVcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGZpbGVJbmZvcy5zdGF0dXMgPT09IDQwNCAmJlxuICAgICAgIW9wdGlvbnNbXCJub3QtZm91bmRcIl0gJiZcbiAgICAgIGRpZmZlcmVuY2VJbkRheXMoXG4gICAgICAgIHRvZGF5LFxuICAgICAgICBkb2N1bWVudE9yRGl2aXNpb24uY3ljbGVEZVZpZS5jaHJvbm8uZGF0ZUNyZWF0aW9uID8/XG4gICAgICAgICAgKGRvY3VtZW50T3JEaXZpc2lvbi5jeWNsZURlVmllLmNocm9uby5kYXRlRGVwb3QgYXMgRGF0ZSB8IHN0cmluZyksXG4gICAgICApID4gMTBcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZXRyaWV2aW5nIGRvY3VtZW50IG9yIGRpdmlzaW9uICR7ZG9jdW1lbnRPckRpdmlzaW9uLnVpZH0gYXQgJHt1cmx94oCmYCxcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoV2l0aFJldHJ5KHVybClcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihkb2N1bWVudERpciwgZmlsZW5hbWUpXG5cbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKVxuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20oYXJyYXlCdWZmZXIpXG4gICAgICBpZiAoXG4gICAgICAgIGZvcm1hdCA9PT0gRG9jdW1lbnRVcmxGb3JtYXQuUGRmICYmXG4gICAgICAgICFidWZmZXIuc3ViYXJyYXkoMCwgNCkudG9TdHJpbmcoKS5zdGFydHNXaXRoKFwiJVBERlwiKVxuICAgICAgKSB7XG4gICAgICAgIC8vIEluc3RlYWQgb2YgYSBQREYsIHRoZSByZWNlaXZlZCBkYXRhIG1heSBiZSBhbiBIVE1MIHBhZ2Ugd2l0aCBhIG1lc3NhZ2UgbGlrZVxuICAgICAgICAvLyBcIkRvY3VtZW50IG5vbiBlbmNvcmUgcHVibGnDqVwiLlxuICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGAgIFBERiBcIiR7dXJsfVwiIG5vdCBmb3VuZC5gKVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMoZmlsZVBhdGgpXG4gICAgICAgIGRlbGV0ZSBmaWxlSW5mb3MuZmlsZW5hbWVcbiAgICAgICAgZGVsZXRlIGZpbGVJbmZvcy5zaGEyNTZcbiAgICAgICAgZmlsZUluZm9zLnN0YXR1cyA9IDQwNFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2hhMjU2ID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoXCJoZXhcIilcbiAgICAgICAgY29uc3QgZXhpc3RpbmdGaWxlbmFtZSA9IGZpbGVuYW1lQnlTaGEyNTZbc2hhMjU2XVxuICAgICAgICBpZiAoZXhpc3RpbmdGaWxlbmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgYnVmZmVyLCB7XG4gICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBmaWxlSW5mb3MuZmlsZW5hbWUgPSBmaWxlbmFtZVxuICAgICAgICAgIGZpbGVuYW1lQnlTaGEyNTZbc2hhMjU2XSA9IGZpbGVuYW1lXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlsZUluZm9zLmZpbGVuYW1lID0gZXhpc3RpbmdGaWxlbmFtZVxuICAgICAgICB9XG4gICAgICAgIGZpbGVJbmZvcy5zaGEyNTYgPSBzaGEyNTZcbiAgICAgICAgZmlsZUluZm9zLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgICBQYWdlIFwiJHt1cmx9XCIgbm90IGZvdW5kLmApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYCAgRXJyb3I6XFxuJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHsgY29kZTogcmVzcG9uc2Uuc3RhdHVzLCBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0IH0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgMixcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGZzLnJlbW92ZVN5bmMoZmlsZVBhdGgpXG4gICAgICBkZWxldGUgZmlsZUluZm9zLmZpbGVuYW1lXG4gICAgICBkZWxldGUgZmlsZUluZm9zLnNoYTI1NlxuICAgICAgZmlsZUluZm9zLnN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c1xuICAgIH1cbiAgfVxuXG4gIGZzLndyaXRlSnNvblN5bmMoaW5kZXhQYXRoLCBpbmRleCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiLCBzcGFjZXM6IDIgfSlcbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIHJldHVybiByZXRyaWV2ZURvY3VtZW50cyhvcHRpb25zKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZXRyaWV2ZV9kb2N1bWVudHMudHNcIikpIHtcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKGV4aXRDb2RlKSA9PiBwcm9jZXNzLmV4aXQoZXhpdENvZGUpKVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEs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
@@ -1,107 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- require("core-js/modules/es.symbol.js");
5
- require("core-js/modules/es.symbol.description.js");
6
- require("core-js/modules/es.symbol.async-iterator.js");
7
- require("core-js/modules/es.symbol.iterator.js");
8
- require("core-js/modules/es.symbol.to-string-tag.js");
9
- require("core-js/modules/es.array.for-each.js");
10
- require("core-js/modules/es.array.from.js");
11
- require("core-js/modules/es.array.is-array.js");
12
- require("core-js/modules/es.array.iterator.js");
13
- require("core-js/modules/es.array.reverse.js");
14
- require("core-js/modules/es.array.slice.js");
15
- require("core-js/modules/es.date.to-string.js");
16
- require("core-js/modules/es.function.name.js");
17
- require("core-js/modules/es.json.to-string-tag.js");
18
- require("core-js/modules/es.math.to-string-tag.js");
19
- require("core-js/modules/es.object.create.js");
20
- require("core-js/modules/es.object.define-property.js");
21
- require("core-js/modules/es.object.get-prototype-of.js");
22
- require("core-js/modules/es.object.set-prototype-of.js");
23
- require("core-js/modules/es.regexp.exec.js");
24
- require("core-js/modules/es.regexp.to-string.js");
25
- require("core-js/modules/es.string.iterator.js");
26
- require("core-js/modules/web.dom-collections.for-each.js");
27
- require("core-js/modules/web.dom-collections.iterator.js");
28
- require("core-js/modules/es.array.concat.js");
29
- require("core-js/modules/es.array.filter.js");
30
- require("core-js/modules/es.object.to-string.js");
31
- require("core-js/modules/es.promise.js");
32
- var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
33
- var _datasets = require("../datasets");
34
- var _legislatures = require("../types/legislatures");
35
- var _cli_helpers = require("./shared/cli_helpers");
36
- var _process_open_dataset = require("./process_open_dataset");
37
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
38
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
39
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
40
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
41
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
42
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
43
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
44
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
45
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
46
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
47
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
48
- var optionsDefinitions = [_cli_helpers.categoriesOption, _cli_helpers.legislatureOption, _cli_helpers.silentOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.fetchOption, _cli_helpers.fetchDocumentsOption, _cli_helpers.parseDocumentsOption, _cli_helpers.documentFormatOption];
49
- var options = (0, _commandLineArgs["default"])(optionsDefinitions);
50
- function retrieveOpenData(_x) {
51
- return _retrieveOpenData.apply(this, arguments);
52
- }
53
- function _retrieveOpenData() {
54
- _retrieveOpenData = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(dataDir) {
55
- var enabledDatasets, chosenDatasets, _iterator, _step, dataset;
56
- return _regeneratorRuntime().wrap(function _callee$(_context) {
57
- while (1) switch (_context.prev = _context.next) {
58
- case 0:
59
- enabledDatasets = (0, _datasets.getEnabledDatasets)(options.categories);
60
- chosenDatasets = [].concat(_toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes ? _datasets.datasets.acteursEtOrganes : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Agendas ? _datasets.datasets.agendas : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Amendements ? _datasets.datasets.amendements : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs ? _datasets.datasets.dossiersLegislatifs : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Scrutins ? _datasets.datasets.scrutins : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.Questions ? _datasets.datasets.questions : []), _toConsumableArray(enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances ? _datasets.datasets.comptesRendusSeances : []));
61
- if (options.legislature !== 0 && options.legislature !== undefined) {
62
- chosenDatasets = chosenDatasets.filter(function (dataset) {
63
- return dataset.legislature === _legislatures.Legislature.All || options.legislature === dataset.legislature;
64
- });
65
- }
66
- _iterator = _createForOfIteratorHelper(chosenDatasets);
67
- _context.prev = 4;
68
- _iterator.s();
69
- case 6:
70
- if ((_step = _iterator.n()).done) {
71
- _context.next = 12;
72
- break;
73
- }
74
- dataset = _step.value;
75
- _context.next = 10;
76
- return (0, _process_open_dataset.processDataset)({
77
- dataDir: dataDir,
78
- dataset: dataset,
79
- options: options
80
- });
81
- case 10:
82
- _context.next = 6;
83
- break;
84
- case 12:
85
- _context.next = 17;
86
- break;
87
- case 14:
88
- _context.prev = 14;
89
- _context.t0 = _context["catch"](4);
90
- _iterator.e(_context.t0);
91
- case 17:
92
- _context.prev = 17;
93
- _iterator.f();
94
- return _context.finish(17);
95
- case 20:
96
- case "end":
97
- return _context.stop();
98
- }
99
- }, _callee, null, [[4, 14, 17, 20]]);
100
- }));
101
- return _retrieveOpenData.apply(this, arguments);
102
- }
103
- retrieveOpenData(options.dataDir)["catch"](function (error) {
104
- console.log(error);
105
- process.exit(1);
106
- });
107
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGF0YXNldHMiLCJfbGVnaXNsYXR1cmVzIiwiX2NsaV9oZWxwZXJzIiwiX3Byb2Nlc3Nfb3Blbl9kYXRhc2V0IiwiZSIsIl9fZXNNb2R1bGUiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwidCIsInIiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJTeW1ib2wiLCJhIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwiZnJvbSIsInRlc3QiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJjYXRlZ29yaWVzT3B0aW9uIiwibGVnaXNsYXR1cmVPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsImZldGNoT3B0aW9uIiwiZmV0Y2hEb2N1bWVudHNPcHRpb24iLCJwYXJzZURvY3VtZW50c09wdGlvbiIsImRvY3VtZW50Rm9ybWF0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsInJldHJpZXZlT3BlbkRhdGEiLCJfeCIsIl9yZXRyaWV2ZU9wZW5EYXRhIiwiX2NhbGxlZSIsImRhdGFEaXIiLCJlbmFibGVkRGF0YXNldHMiLCJjaG9zZW5EYXRhc2V0cyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZGF0YXNldCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwiY29uY2F0IiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiU2NydXRpbnMiLCJzY3J1dGlucyIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJsZWdpc2xhdHVyZSIsInVuZGVmaW5lZCIsImZpbHRlciIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwicHJvY2Vzc0RhdGFzZXQiLCJ0MCIsImVycm9yIiwiY29uc29sZSIsImxvZyIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfb3Blbl9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCB7XG4gIERhdGFzZXQsXG4gIGRhdGFzZXRzLFxuICBFbmFibGVkRGF0YXNldHMsXG4gIGdldEVuYWJsZWREYXRhc2V0cyxcbn0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4uL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5pbXBvcnQge1xuICBjYXRlZ29yaWVzT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgZmV0Y2hPcHRpb24sXG4gIGZldGNoRG9jdW1lbnRzT3B0aW9uLFxuICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICBwYXJzZURvY3VtZW50c09wdGlvbixcbiAgZG9jdW1lbnRGb3JtYXRPcHRpb24sXG59IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5pbXBvcnQgeyBwcm9jZXNzRGF0YXNldCB9IGZyb20gXCIuL3Byb2Nlc3Nfb3Blbl9kYXRhc2V0XCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICBjYXRlZ29yaWVzT3B0aW9uLFxuICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgZmV0Y2hPcHRpb24sXG4gIGZldGNoRG9jdW1lbnRzT3B0aW9uLFxuICBwYXJzZURvY3VtZW50c09wdGlvbixcbiAgZG9jdW1lbnRGb3JtYXRPcHRpb24sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVPcGVuRGF0YShkYXRhRGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gZ2V0RW5hYmxlZERhdGFzZXRzKG9wdGlvbnMuY2F0ZWdvcmllcylcblxuICBsZXQgY2hvc2VuRGF0YXNldHMgPSBbXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzXG4gICAgICA/IGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXNcbiAgICAgIDogW10pLFxuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcyA/IGRhdGFzZXRzLmFnZW5kYXMgOiBbXSksXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50c1xuICAgICAgPyBkYXRhc2V0cy5hbWVuZGVtZW50c1xuICAgICAgOiBbXSksXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzXG4gICAgICA/IGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnNcbiAgICAgIDogW10pLFxuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMgPyBkYXRhc2V0cy5zY3J1dGlucyA6IFtdKSxcbiAgICAuLi4oZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucyA/IGRhdGFzZXRzLnF1ZXN0aW9ucyA6IFtdKSxcbiAgICAuLi4oZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzXG4gICAgICA/IGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzXG4gICAgICA6IFtdKSxcbiAgXVxuXG4gIGlmIChvcHRpb25zLmxlZ2lzbGF0dXJlICE9PSAwICYmIG9wdGlvbnMubGVnaXNsYXR1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNob3NlbkRhdGFzZXRzID0gY2hvc2VuRGF0YXNldHMuZmlsdGVyKFxuICAgICAgKGRhdGFzZXQ6IERhdGFzZXQpID0+XG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCB8fFxuICAgICAgICBvcHRpb25zLmxlZ2lzbGF0dXJlID09PSBkYXRhc2V0LmxlZ2lzbGF0dXJlLFxuICAgIClcbiAgfVxuXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cykge1xuICAgIGF3YWl0IHByb2Nlc3NEYXRhc2V0KHsgZGF0YURpciwgZGF0YXNldCwgb3B0aW9ucyB9KVxuICB9XG59XG5cbnJldHJpZXZlT3BlbkRhdGEob3B0aW9ucy5kYXRhRGlyKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgY29uc29sZS5sb2coZXJyb3IpXG4gIHByb2Nlc3MuZXhpdCgxKVxufSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGdCQUFBLEdBQUFDLHNC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
@@ -1,26 +0,0 @@
1
- import commandLineArgs from "command-line-args";
2
- import { datasets, EnabledDatasets, getEnabledDatasets } from "../datasets.mjs";
3
- import { Legislature } from "../types/legislatures.mjs";
4
- import { categoriesOption, dataDirDefaultOption, fetchOption, fetchDocumentsOption, legislatureOption, silentOption, parseDocumentsOption, documentFormatOption } from "./shared/cli_helpers.mjs";
5
- import { processDataset } from "./process_open_dataset.mjs";
6
- const optionsDefinitions = [categoriesOption, legislatureOption, silentOption, dataDirDefaultOption, fetchOption, fetchDocumentsOption, parseDocumentsOption, documentFormatOption];
7
- const options = commandLineArgs(optionsDefinitions);
8
- async function retrieveOpenData(dataDir) {
9
- const enabledDatasets = getEnabledDatasets(options.categories);
10
- let chosenDatasets = [...(enabledDatasets & EnabledDatasets.ActeursEtOrganes ? datasets.acteursEtOrganes : []), ...(enabledDatasets & EnabledDatasets.Agendas ? datasets.agendas : []), ...(enabledDatasets & EnabledDatasets.Amendements ? datasets.amendements : []), ...(enabledDatasets & EnabledDatasets.DossiersLegislatifs ? datasets.dossiersLegislatifs : []), ...(enabledDatasets & EnabledDatasets.Scrutins ? datasets.scrutins : []), ...(enabledDatasets & EnabledDatasets.Questions ? datasets.questions : []), ...(enabledDatasets & EnabledDatasets.ComptesRendusSeances ? datasets.comptesRendusSeances : [])];
11
- if (options.legislature !== 0 && options.legislature !== undefined) {
12
- chosenDatasets = chosenDatasets.filter(dataset => dataset.legislature === Legislature.All || options.legislature === dataset.legislature);
13
- }
14
- for (const dataset of chosenDatasets) {
15
- await processDataset({
16
- dataDir,
17
- dataset,
18
- options
19
- });
20
- }
21
- }
22
- retrieveOpenData(options.dataDir).catch(error => {
23
- console.log(error);
24
- process.exit(1);
25
- });
26
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0cyIsIkVuYWJsZWREYXRhc2V0cyIsImdldEVuYWJsZWREYXRhc2V0cyIsIkxlZ2lzbGF0dXJlIiwiY2F0ZWdvcmllc09wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwiZmV0Y2hPcHRpb24iLCJmZXRjaERvY3VtZW50c09wdGlvbiIsImxlZ2lzbGF0dXJlT3B0aW9uIiwic2lsZW50T3B0aW9uIiwicGFyc2VEb2N1bWVudHNPcHRpb24iLCJkb2N1bWVudEZvcm1hdE9wdGlvbiIsInByb2Nlc3NEYXRhc2V0Iiwib3B0aW9uc0RlZmluaXRpb25zIiwib3B0aW9ucyIsInJldHJpZXZlT3BlbkRhdGEiLCJkYXRhRGlyIiwiZW5hYmxlZERhdGFzZXRzIiwiY2F0ZWdvcmllcyIsImNob3NlbkRhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImFjdGV1cnNFdE9yZ2FuZXMiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJRdWVzdGlvbnMiLCJxdWVzdGlvbnMiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwibGVnaXNsYXR1cmUiLCJ1bmRlZmluZWQiLCJmaWx0ZXIiLCJkYXRhc2V0IiwiQWxsIiwiY2F0Y2giLCJlcnJvciIsImNvbnNvbGUiLCJsb2ciLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX29wZW5fZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQge1xuICBEYXRhc2V0LFxuICBkYXRhc2V0cyxcbiAgRW5hYmxlZERhdGFzZXRzLFxuICBnZXRFbmFibGVkRGF0YXNldHMsXG59IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHtcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gIGZldGNoT3B0aW9uLFxuICBmZXRjaERvY3VtZW50c09wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbiAgcGFyc2VEb2N1bWVudHNPcHRpb24sXG4gIGRvY3VtZW50Rm9ybWF0T3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuaW1wb3J0IHsgcHJvY2Vzc0RhdGFzZXQgfSBmcm9tIFwiLi9wcm9jZXNzX29wZW5fZGF0YXNldFwiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbiAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gIGZldGNoT3B0aW9uLFxuICBmZXRjaERvY3VtZW50c09wdGlvbixcbiAgcGFyc2VEb2N1bWVudHNPcHRpb24sXG4gIGRvY3VtZW50Rm9ybWF0T3B0aW9uLFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlT3BlbkRhdGEoZGF0YURpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IGdldEVuYWJsZWREYXRhc2V0cyhvcHRpb25zLmNhdGVnb3JpZXMpXG5cbiAgbGV0IGNob3NlbkRhdGFzZXRzID0gW1xuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lc1xuICAgICAgPyBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzXG4gICAgICA6IFtdKSxcbiAgICAuLi4oZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMgPyBkYXRhc2V0cy5hZ2VuZGFzIDogW10pLFxuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHNcbiAgICAgID8gZGF0YXNldHMuYW1lbmRlbWVudHNcbiAgICAgIDogW10pLFxuICAgIC4uLihlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmc1xuICAgICAgPyBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzXG4gICAgICA6IFtdKSxcbiAgICAuLi4oZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zID8gZGF0YXNldHMuc2NydXRpbnMgOiBbXSksXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5RdWVzdGlvbnMgPyBkYXRhc2V0cy5xdWVzdGlvbnMgOiBbXSksXG4gICAgLi4uKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlc1xuICAgICAgPyBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlc1xuICAgICAgOiBbXSksXG4gIF1cblxuICBpZiAob3B0aW9ucy5sZWdpc2xhdHVyZSAhPT0gMCAmJiBvcHRpb25zLmxlZ2lzbGF0dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjaG9zZW5EYXRhc2V0cyA9IGNob3NlbkRhdGFzZXRzLmZpbHRlcihcbiAgICAgIChkYXRhc2V0OiBEYXRhc2V0KSA9PlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgfHxcbiAgICAgICAgb3B0aW9ucy5sZWdpc2xhdHVyZSA9PT0gZGF0YXNldC5sZWdpc2xhdHVyZSxcbiAgICApXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMpIHtcbiAgICBhd2FpdCBwcm9jZXNzRGF0YXNldCh7IGRhdGFEaXIsIGRhdGFzZXQsIG9wdGlvbnMgfSlcbiAgfVxufVxuXG5yZXRyaWV2ZU9wZW5EYXRhKG9wdGlvbnMuZGF0YURpcikuY2F0Y2goKGVycm9yKSA9PiB7XG4gIGNvbnNvbGUubG9nKGVycm9yKVxuICBwcm9jZXNzLmV4aXQoMSlcbn0pXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGVBQWUsTUFBTSxtQkFBbUI7QUFBQSxTQUc3Q0MsUUFBUSxFQUNSQyxlQUFlLEVBQ2ZDLGtCQUFrQjtBQUFBLFNBRVhDLFdBQVc7QUFBQSxTQUVsQkMsZ0JBQWdCLEVBQ2hCQyxvQkFBb0IsRUFDcEJDLFdBQVcsRUFDWEMsb0JBQW9CLEVBQ3BCQyxpQkFBaUIsRUFDakJDLFlBQVksRUFDWkMsb0JBQW9CLEVBQ3BCQyxvQkFBb0I7QUFBQSxTQUViQyxjQUFjO0FBRXZCLE1BQU1DLGtCQUFrQixHQUFHLENBQ3pCVCxnQkFBZ0IsRUFDaEJJLGlCQUFpQixFQUNqQkMsWUFBWSxFQUNaSixvQkFBb0IsRUFDcEJDLFdBQVcsRUFDWEMsb0JBQW9CLEVBQ3BCRyxvQkFBb0IsRUFDcEJDLG9CQUFvQixDQUNyQjtBQUNELE1BQU1HLE9BQU8sR0FBR2YsZUFBZSxDQUFDYyxrQkFBa0IsQ0FBQztBQUVuRCxlQUFlRSxnQkFBZ0JBLENBQUNDLE9BQWUsRUFBaUI7RUFDOUQsTUFBTUMsZUFBZSxHQUFHZixrQkFBa0IsQ0FBQ1ksT0FBTyxDQUFDSSxVQUFVLENBQUM7RUFFOUQsSUFBSUMsY0FBYyxHQUFHLENBQ25CLElBQUlGLGVBQWUsR0FBR2hCLGVBQWUsQ0FBQ21CLGdCQUFnQixHQUNsRHBCLFFBQVEsQ0FBQ3FCLGdCQUFnQixHQUN6QixFQUFFLENBQUMsRUFDUCxJQUFJSixlQUFlLEdBQUdoQixlQUFlLENBQUNxQixPQUFPLEdBQUd0QixRQUFRLENBQUN1QixPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQ3RFLElBQUlOLGVBQWUsR0FBR2hCLGVBQWUsQ0FBQ3VCLFdBQVcsR0FDN0N4QixRQUFRLENBQUN5QixXQUFXLEdBQ3BCLEVBQUUsQ0FBQyxFQUNQLElBQUlSLGVBQWUsR0FBR2hCLGVBQWUsQ0FBQ3lCLG1CQUFtQixHQUNyRDFCLFFBQVEsQ0FBQzJCLG1CQUFtQixHQUM1QixFQUFFLENBQUMsRUFDUCxJQUFJVixlQUFlLEdBQUdoQixlQUFlLENBQUMyQixRQUFRLEdBQUc1QixRQUFRLENBQUM2QixRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQ3hFLElBQUlaLGVBQWUsR0FBR2hCLGVBQWUsQ0FBQzZCLFNBQVMsR0FBRzlCLFFBQVEsQ0FBQytCLFNBQVMsR0FBRyxFQUFFLENBQUMsRUFDMUUsSUFBSWQsZUFBZSxHQUFHaEIsZUFBZSxDQUFDK0Isb0JBQW9CLEdBQ3REaEMsUUFBUSxDQUFDaUMsb0JBQW9CLEdBQzdCLEVBQUUsQ0FBQyxDQUNSO0VBRUQsSUFBSW5CLE9BQU8sQ0FBQ29CLFdBQVcsS0FBSyxDQUFDLElBQUlwQixPQUFPLENBQUNvQixXQUFXLEtBQUtDLFNBQVMsRUFBRTtJQUNsRWhCLGNBQWMsR0FBR0EsY0FBYyxDQUFDaUIsTUFBTSxDQUNuQ0MsT0FBZ0IsSUFDZkEsT0FBTyxDQUFDSCxXQUFXLEtBQUsvQixXQUFXLENBQUNtQyxHQUFHLElBQ3ZDeEIsT0FBTyxDQUFDb0IsV0FBVyxLQUFLRyxPQUFPLENBQUNILFdBQ3BDLENBQUM7RUFDSDtFQUVBLEtBQUssTUFBTUcsT0FBTyxJQUFJbEIsY0FBYyxFQUFFO0lBQ3BDLE1BQU1QLGNBQWMsQ0FBQztNQUFFSSxPQUFPO01BQUVxQixPQUFPO01BQUV2QjtJQUFRLENBQUMsQ0FBQztFQUNyRDtBQUNGO0FBRUFDLGdCQUFnQixDQUFDRCxPQUFPLENBQUNFLE9BQU8sQ0FBQyxDQUFDdUIsS0FBSyxDQUFFQyxLQUFLLElBQUs7RUFDakRDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDRixLQUFLLENBQUM7RUFDbEJHLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=