@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,301 +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.reverse.js");
13
- require("core-js/modules/es.array.slice.js");
14
- require("core-js/modules/es.date.to-string.js");
15
- require("core-js/modules/es.function.name.js");
16
- require("core-js/modules/es.json.to-string-tag.js");
17
- require("core-js/modules/es.math.to-string-tag.js");
18
- require("core-js/modules/es.object.create.js");
19
- require("core-js/modules/es.object.define-property.js");
20
- require("core-js/modules/es.object.get-prototype-of.js");
21
- require("core-js/modules/es.object.set-prototype-of.js");
22
- require("core-js/modules/es.regexp.to-string.js");
23
- require("core-js/modules/web.dom-collections.for-each.js");
24
- Object.defineProperty(exports, "__esModule", {
25
- value: true
26
- });
27
- exports.processDataset = processDataset;
28
- require("core-js/modules/es.array.concat.js");
29
- require("core-js/modules/es.array.iterator.js");
30
- require("core-js/modules/es.array.join.js");
31
- require("core-js/modules/es.date.to-json.js");
32
- require("core-js/modules/es.object.keys.js");
33
- require("core-js/modules/es.object.to-string.js");
34
- require("core-js/modules/es.promise.js");
35
- require("core-js/modules/es.regexp.exec.js");
36
- require("core-js/modules/es.string.ends-with.js");
37
- require("core-js/modules/es.string.iterator.js");
38
- require("core-js/modules/es.string.replace.js");
39
- require("core-js/modules/web.dom-collections.iterator.js");
40
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
41
- var _path = _interopRequireDefault(require("path"));
42
- var _stream = _interopRequireDefault(require("stream"));
43
- var _nodeStreamZip = _interopRequireDefault(require("node-stream-zip"));
44
- var _util = _interopRequireDefault(require("util"));
45
- var _file_systems = require("../file_systems");
46
- var _fastXmlParser = require("fast-xml-parser");
47
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
48
- 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; }
49
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
50
- 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."); }
51
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
52
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
53
- 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; } } }; }
54
- 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; } }
55
- 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; }
56
- 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); }
57
- 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); }); }; }
58
- var pipeline = _util["default"].promisify(_stream["default"].pipeline);
59
-
60
- // Function to fetch zip files with retry mechanism
61
- function fetchZipFile(_x, _x2) {
62
- return _fetchZipFile.apply(this, arguments);
63
- }
64
- function _fetchZipFile() {
65
- _fetchZipFile = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(url, zipFilePath) {
66
- var retries,
67
- attempt,
68
- response,
69
- _args = arguments;
70
- return _regeneratorRuntime().wrap(function _callee$(_context) {
71
- while (1) switch (_context.prev = _context.next) {
72
- case 0:
73
- retries = _args.length > 2 && _args[2] !== undefined ? _args[2] : 3;
74
- attempt = 0;
75
- case 2:
76
- if (!(attempt < retries)) {
77
- _context.next = 21;
78
- break;
79
- }
80
- _context.next = 5;
81
- return fetch(url);
82
- case 5:
83
- response = _context.sent;
84
- if (!response.ok) {
85
- _context.next = 12;
86
- break;
87
- }
88
- _context.next = 9;
89
- return pipeline(response.body, _fsExtra["default"].createWriteStream(zipFilePath));
90
- case 9:
91
- return _context.abrupt("return");
92
- case 12:
93
- if (!(attempt < retries - 1)) {
94
- _context.next = 16;
95
- break;
96
- }
97
- console.warn("Retrying fetch for ".concat(url, ": ").concat(response.statusText));
98
- _context.next = 18;
99
- break;
100
- case 16:
101
- console.error("Failed to fetch ".concat(url, " after ").concat(retries, " attempts"));
102
- throw new Error("Fetch failed: ".concat(url));
103
- case 18:
104
- attempt++;
105
- _context.next = 2;
106
- break;
107
- case 21:
108
- case "end":
109
- return _context.stop();
110
- }
111
- }, _callee);
112
- }));
113
- return _fetchZipFile.apply(this, arguments);
114
- }
115
- function extractZip(_x3, _x4) {
116
- return _extractZip.apply(this, arguments);
117
- }
118
- function _extractZip() {
119
- _extractZip = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(zipFilePath, outputDir) {
120
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
121
- while (1) switch (_context2.prev = _context2.next) {
122
- case 0:
123
- return _context2.abrupt("return", new Promise(function (resolve, reject) {
124
- var zip = new _nodeStreamZip["default"]({
125
- file: zipFilePath,
126
- storeEntries: true
127
- });
128
- zip.on("ready", function () {
129
- zip.extract(null, outputDir, function (err) {
130
- zip.close();
131
- if (err) {
132
- reject(err);
133
- } else {
134
- resolve();
135
- }
136
- });
137
- });
138
- }));
139
- case 1:
140
- case "end":
141
- return _context2.stop();
142
- }
143
- }, _callee2);
144
- }));
145
- return _extractZip.apply(this, arguments);
146
- }
147
- function reindentJsonFiles(dataDirOrFilePath) {
148
- if (_fsExtra["default"].statSync(dataDirOrFilePath).isDirectory()) {
149
- var _iterator = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath)),
150
- _step;
151
- try {
152
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
153
- var dataFileSplitPath = _step.value;
154
- var dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
155
- if (dataFilePath.endsWith(".json")) {
156
- var data = JSON.parse(_fsExtra["default"].readFileSync(dataFilePath, {
157
- encoding: "utf-8"
158
- }));
159
- _fsExtra["default"].writeFileSync(dataFilePath, JSON.stringify(data, null, 2));
160
- }
161
- }
162
- } catch (err) {
163
- _iterator.e(err);
164
- } finally {
165
- _iterator.f();
166
- }
167
- } else {
168
- var _data = JSON.parse(_fsExtra["default"].readFileSync(dataDirOrFilePath, {
169
- encoding: "utf-8"
170
- }));
171
- _fsExtra["default"].writeFileSync(dataDirOrFilePath, JSON.stringify(_data, null, 2));
172
- }
173
- }
174
- var xmlParser = new _fastXmlParser.XMLParser({
175
- ignoreDeclaration: true,
176
- ignoreAttributes: false,
177
- ignorePiTags: true,
178
- attributeNamePrefix: "",
179
- textNodeName: "_",
180
- processEntities: false,
181
- trimValues: true,
182
- stopNodes: ["*.texte", "*.intitule"],
183
- parseTagValue: false,
184
- parseAttributeValue: false,
185
- transformTagName: function transformTagName(tagName) {
186
- return tagName === "Para" ? "para" : tagName;
187
- }
188
- });
189
-
190
- /**
191
- * Processes a dataset by fetching, unzipping, and converting files from XML to JSON format.
192
- *
193
- * @param {any} dataset - The dataset object containing metadata and processing instructions.
194
- * @param {string} dataDir - The directory where the dataset files will be stored.
195
- * @param {any} options - Options to control the processing behavior, such as fetching and silent mode.
196
- * @returns {Promise<void>} A promise that resolves when the dataset processing is complete.
197
- */
198
- function processDataset(_x5) {
199
- return _processDataset.apply(this, arguments);
200
- }
201
- function _processDataset() {
202
- _processDataset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(args) {
203
- var dataset, dataDir, options, zipFilePath, dataDirOrFilePath, _iterator2, _step2, _loop;
204
- return _regeneratorRuntime().wrap(function _callee3$(_context4) {
205
- while (1) switch (_context4.prev = _context4.next) {
206
- case 0:
207
- dataset = args.dataset, dataDir = args.dataDir, options = args.options;
208
- zipFilePath = _path["default"].join(dataDir, "".concat(dataset.filename, ".zip"));
209
- dataDirOrFilePath = _path["default"].join(dataDir, dataset.filename);
210
- _fsExtra["default"].removeSync(dataDirOrFilePath);
211
- if (!options.fetch) {
212
- _context4.next = 8;
213
- break;
214
- }
215
- // Fetch & save ZIP file.
216
- if (!options.silent) {
217
- console.log("Loading ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
218
- }
219
- _context4.next = 8;
220
- return fetchZipFile(dataset.url, zipFilePath);
221
- case 8:
222
- if (!options.silent) {
223
- console.log("Unzipping ".concat(dataset.title, ": ").concat(dataset.filename, ".zip"));
224
- }
225
- _context4.next = 11;
226
- return extractZip(zipFilePath, dataDir);
227
- case 11:
228
- if (dataset.repairZip !== undefined) {
229
- if (!options.silent) {
230
- console.log("Repairing ".concat(dataset.title, ": ").concat(dataset.filename));
231
- }
232
- dataset.repairZip(dataset, dataDir);
233
- }
234
-
235
- // Convert xml to JSON.
236
- if (!dataset.filename.endsWith(".xml")) {
237
- _context4.next = 29;
238
- break;
239
- }
240
- _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(dataDirOrFilePath));
241
- _context4.prev = 14;
242
- _loop = /*#__PURE__*/_regeneratorRuntime().mark(function _loop() {
243
- var dataFileSplitPath, dataFilePath;
244
- return _regeneratorRuntime().wrap(function _loop$(_context3) {
245
- while (1) switch (_context3.prev = _context3.next) {
246
- case 0:
247
- dataFileSplitPath = _step2.value;
248
- dataFilePath = _path["default"].join.apply(_path["default"], [dataDirOrFilePath].concat(_toConsumableArray(dataFileSplitPath)));
249
- if (dataFilePath.endsWith(".xml")) {
250
- _fsExtra["default"].readFile(dataFilePath, function (err, data) {
251
- if (err) return console.error(err);
252
- var result = xmlParser.parse(data);
253
- var newDataFilePath = dataFilePath.replace(/\.[^.]+$/, ".json");
254
- _fsExtra["default"].copy(dataFilePath, newDataFilePath, function (err) {
255
- _fsExtra["default"].writeFileSync(newDataFilePath, JSON.stringify(result, null, 2));
256
- if (err) return console.error(err);
257
- });
258
- });
259
- }
260
- case 3:
261
- case "end":
262
- return _context3.stop();
263
- }
264
- }, _loop);
265
- });
266
- _iterator2.s();
267
- case 17:
268
- if ((_step2 = _iterator2.n()).done) {
269
- _context4.next = 21;
270
- break;
271
- }
272
- return _context4.delegateYield(_loop(), "t0", 19);
273
- case 19:
274
- _context4.next = 17;
275
- break;
276
- case 21:
277
- _context4.next = 26;
278
- break;
279
- case 23:
280
- _context4.prev = 23;
281
- _context4.t1 = _context4["catch"](14);
282
- _iterator2.e(_context4.t1);
283
- case 26:
284
- _context4.prev = 26;
285
- _iterator2.f();
286
- return _context4.finish(26);
287
- case 29:
288
- // Reindent JSON file.
289
- if (!options.silent) {
290
- console.log("Reidenting ".concat(dataset.title, ": ").concat(dataset.filename));
291
- }
292
- reindentJsonFiles(dataDirOrFilePath);
293
- case 31:
294
- case "end":
295
- return _context4.stop();
296
- }
297
- }, _callee3, null, [[14, 23, 26, 29]]);
298
- }));
299
- return _processDataset.apply(this, arguments);
300
- }
301
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnNFeHRyYSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BhdGgiLCJfc3RyZWFtIiwiX25vZGVTdHJlYW1aaXAiLCJfdXRpbCIsIl9maWxlX3N5c3RlbXMiLCJfZmFzdFhtbFBhcnNlciIsImUiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwicGlwZWxpbmUiLCJ1dGlsIiwicHJvbWlzaWZ5Iiwic3RyZWFtIiwiZmV0Y2haaXBGaWxlIiwiX3giLCJfeDIiLCJfZmV0Y2haaXBGaWxlIiwiX2NhbGxlZSIsInVybCIsInppcEZpbGVQYXRoIiwicmV0cmllcyIsImF0dGVtcHQiLCJyZXNwb25zZSIsIl9hcmdzIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInVuZGVmaW5lZCIsImZldGNoIiwib2siLCJib2R5IiwiZnMiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0Iiwic3RhdHVzVGV4dCIsImVycm9yIiwiZXh0cmFjdFppcCIsIl94MyIsIl94NCIsIl9leHRyYWN0WmlwIiwiX2NhbGxlZTIiLCJvdXRwdXREaXIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJyZWplY3QiLCJ6aXAiLCJTdHJlYW1aaXAiLCJmaWxlIiwic3RvcmVFbnRyaWVzIiwib24iLCJleHRyYWN0IiwiZXJyIiwiY2xvc2UiLCJyZWluZGVudEpzb25GaWxlcyIsImRhdGFEaXJPckZpbGVQYXRoIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsIl9pdGVyYXRvciIsIndhbGtEaXIiLCJfc3RlcCIsImRhdGFGaWxlU3BsaXRQYXRoIiwiZGF0YUZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJlbmRzV2l0aCIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJ4bWxQYXJzZXIiLCJYTUxQYXJzZXIiLCJpZ25vcmVEZWNsYXJhdGlvbiIsImlnbm9yZUF0dHJpYnV0ZXMiLCJpZ25vcmVQaVRhZ3MiLCJhdHRyaWJ1dGVOYW1lUHJlZml4IiwidGV4dE5vZGVOYW1lIiwicHJvY2Vzc0VudGl0aWVzIiwidHJpbVZhbHVlcyIsInN0b3BOb2RlcyIsInBhcnNlVGFnVmFsdWUiLCJwYXJzZUF0dHJpYnV0ZVZhbHVlIiwidHJhbnNmb3JtVGFnTmFtZSIsInRhZ05hbWUiLCJwcm9jZXNzRGF0YXNldCIsIl94NSIsIl9wcm9jZXNzRGF0YXNldCIsIl9jYWxsZWUzIiwiYXJncyIsImRhdGFzZXQiLCJkYXRhRGlyIiwib3B0aW9ucyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfbG9vcCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0NCIsImZpbGVuYW1lIiwicmVtb3ZlU3luYyIsInNpbGVudCIsImxvZyIsInRpdGxlIiwicmVwYWlyWmlwIiwiX2xvb3AkIiwiX2NvbnRleHQzIiwicmVhZEZpbGUiLCJyZXN1bHQiLCJuZXdEYXRhRmlsZVBhdGgiLCJyZXBsYWNlIiwiY29weSIsInQxIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcHJvY2Vzc19vcGVuX2RhdGFzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuaW1wb3J0IFN0cmVhbVppcCBmcm9tIFwibm9kZS1zdHJlYW0temlwXCJcbmltcG9ydCB1dGlsIGZyb20gXCJ1dGlsXCJcblxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgWE1MUGFyc2VyIH0gZnJvbSBcImZhc3QteG1sLXBhcnNlclwiXG5cbmNvbnN0IHBpcGVsaW5lID0gdXRpbC5wcm9taXNpZnkoc3RyZWFtLnBpcGVsaW5lKVxuXG4vLyBGdW5jdGlvbiB0byBmZXRjaCB6aXAgZmlsZXMgd2l0aCByZXRyeSBtZWNoYW5pc21cbmFzeW5jIGZ1bmN0aW9uIGZldGNoWmlwRmlsZShcbiAgdXJsOiBzdHJpbmcsXG4gIHppcEZpbGVQYXRoOiBzdHJpbmcsXG4gIHJldHJpZXMgPSAzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDwgcmV0cmllczsgYXR0ZW1wdCsrKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpXG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICBhd2FpdCBwaXBlbGluZShcbiAgICAgICAgcmVzcG9uc2UuYm9keSBhcyB1bmtub3duIGFzIE5vZGVKUy5SZWFkYWJsZVN0cmVhbSxcbiAgICAgICAgZnMuY3JlYXRlV3JpdGVTdHJlYW0oemlwRmlsZVBhdGgpLFxuICAgICAgKVxuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIGlmIChhdHRlbXB0IDwgcmV0cmllcyAtIDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgUmV0cnlpbmcgZmV0Y2ggZm9yICR7dXJsfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBmZXRjaCAke3VybH0gYWZ0ZXIgJHtyZXRyaWVzfSBhdHRlbXB0c2ApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZldGNoIGZhaWxlZDogJHt1cmx9YClcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFppcChcbiAgemlwRmlsZVBhdGg6IHN0cmluZyxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB6aXAgPSBuZXcgU3RyZWFtWmlwKHtcbiAgICAgIGZpbGU6IHppcEZpbGVQYXRoLFxuICAgICAgc3RvcmVFbnRyaWVzOiB0cnVlLFxuICAgIH0pXG5cbiAgICB6aXAub24oXCJyZWFkeVwiLCAoKSA9PiB7XG4gICAgICB6aXAuZXh0cmFjdChudWxsISwgb3V0cHV0RGlyLCAoZXJyKSA9PiB7XG4gICAgICAgIHppcC5jbG9zZSgpXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlaW5kZW50SnNvbkZpbGVzKGRhdGFEaXJPckZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGZzLnN0YXRTeW5jKGRhdGFEaXJPckZpbGVQYXRoKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZm9yIChjb25zdCBkYXRhRmlsZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFEaXJPckZpbGVQYXRoKSkge1xuICAgICAgY29uc3QgZGF0YUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXJPckZpbGVQYXRoLCAuLi5kYXRhRmlsZVNwbGl0UGF0aClcbiAgICAgIGlmIChkYXRhRmlsZVBhdGguZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBmcy5yZWFkRmlsZVN5bmMoZGF0YUZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSksXG4gICAgICAgIClcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkYXRhRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhkYXRhRGlyT3JGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pLFxuICAgIClcbiAgICBmcy53cml0ZUZpbGVTeW5jKGRhdGFEaXJPckZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSlcbiAgfVxufVxuXG50eXBlIFByb2Nlc3NEYXRhc2V0QXJndW1lbnRzID0ge1xuICBkYXRhc2V0OiBhbnlcbiAgZGF0YURpcjogc3RyaW5nXG4gIG9wdGlvbnM6IGFueVxufVxuXG5jb25zdCB4bWxQYXJzZXIgPSBuZXcgWE1MUGFyc2VyKHtcbiAgaWdub3JlRGVjbGFyYXRpb246IHRydWUsXG4gIGlnbm9yZUF0dHJpYnV0ZXM6IGZhbHNlLFxuICBpZ25vcmVQaVRhZ3M6IHRydWUsXG4gIGF0dHJpYnV0ZU5hbWVQcmVmaXg6IFwiXCIsXG4gIHRleHROb2RlTmFtZTogXCJfXCIsXG4gIHByb2Nlc3NFbnRpdGllczogZmFsc2UsXG4gIHRyaW1WYWx1ZXM6IHRydWUsXG4gIHN0b3BOb2RlczogW1wiKi50ZXh0ZVwiLCBcIiouaW50aXR1bGVcIl0sXG4gIHBhcnNlVGFnVmFsdWU6IGZhbHNlLFxuICBwYXJzZUF0dHJpYnV0ZVZhbHVlOiBmYWxzZSxcbiAgdHJhbnNmb3JtVGFnTmFtZTogKHRhZ05hbWU6IHN0cmluZykgPT5cbiAgICB0YWdOYW1lID09PSBcIlBhcmFcIiA/IFwicGFyYVwiIDogdGFnTmFtZSxcbn0pXG5cbi8qKlxuICogUHJvY2Vzc2VzIGEgZGF0YXNldCBieSBmZXRjaGluZywgdW56aXBwaW5nLCBhbmQgY29udmVydGluZyBmaWxlcyBmcm9tIFhNTCB0byBKU09OIGZvcm1hdC5cbiAqXG4gKiBAcGFyYW0ge2FueX0gZGF0YXNldCAtIFRoZSBkYXRhc2V0IG9iamVjdCBjb250YWluaW5nIG1ldGFkYXRhIGFuZCBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhRGlyIC0gVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgZGF0YXNldCBmaWxlcyB3aWxsIGJlIHN0b3JlZC5cbiAqIEBwYXJhbSB7YW55fSBvcHRpb25zIC0gT3B0aW9ucyB0byBjb250cm9sIHRoZSBwcm9jZXNzaW5nIGJlaGF2aW9yLCBzdWNoIGFzIGZldGNoaW5nIGFuZCBzaWxlbnQgbW9kZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBkYXRhc2V0IHByb2Nlc3NpbmcgaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRGF0YXNldChcbiAgYXJnczogUHJvY2Vzc0RhdGFzZXRBcmd1bWVudHMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkYXRhc2V0LCBkYXRhRGlyLCBvcHRpb25zIH0gPSBhcmdzXG4gIGNvbnN0IHppcEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIGAke2RhdGFzZXQuZmlsZW5hbWV9LnppcGApXG4gIGNvbnN0IGRhdGFEaXJPckZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gIGZzLnJlbW92ZVN5bmMoZGF0YURpck9yRmlsZVBhdGgpXG5cbiAgaWYgKG9wdGlvbnMuZmV0Y2gpIHtcbiAgICAvLyBGZXRjaCAmIHNhdmUgWklQIGZpbGUuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICAgIH1cbiAgICBhd2FpdCBmZXRjaFppcEZpbGUoZGF0YXNldC51cmwsIHppcEZpbGVQYXRoKVxuICB9XG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgVW56aXBwaW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX0uemlwYClcbiAgfVxuICBhd2FpdCBleHRyYWN0WmlwKHppcEZpbGVQYXRoLCBkYXRhRGlyKVxuXG4gIGlmIChkYXRhc2V0LnJlcGFpclppcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYFJlcGFpcmluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9YClcbiAgICB9XG4gICAgZGF0YXNldC5yZXBhaXJaaXAoZGF0YXNldCwgZGF0YURpcilcbiAgfVxuXG4gIC8vIENvbnZlcnQgeG1sIHRvIEpTT04uXG4gIGlmIChkYXRhc2V0LmZpbGVuYW1lLmVuZHNXaXRoKFwiLnhtbFwiKSkge1xuICAgIGZvciAoY29uc3QgZGF0YUZpbGVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhRGlyT3JGaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRhdGFGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyT3JGaWxlUGF0aCwgLi4uZGF0YUZpbGVTcGxpdFBhdGgpXG4gICAgICBpZiAoZGF0YUZpbGVQYXRoLmVuZHNXaXRoKFwiLnhtbFwiKSkge1xuICAgICAgICBmcy5yZWFkRmlsZShkYXRhRmlsZVBhdGgsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHhtbFBhcnNlci5wYXJzZShkYXRhKVxuICAgICAgICAgIGNvbnN0IG5ld0RhdGFGaWxlUGF0aCA9IGRhdGFGaWxlUGF0aC5yZXBsYWNlKC9cXC5bXi5dKyQvLCBcIi5qc29uXCIpXG4gICAgICAgICAgZnMuY29weShkYXRhRmlsZVBhdGgsIG5ld0RhdGFGaWxlUGF0aCwgKGVycikgPT4ge1xuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhuZXdEYXRhRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpXG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZWluZGVudCBKU09OIGZpbGUuXG4gIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgUmVpZGVudGluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9YClcbiAgfVxuICByZWluZGVudEpzb25GaWxlcyhkYXRhRGlyT3JGaWxlUGF0aClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBTixPQUFBO0FBQTJDLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSxvQkFBQSxr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
@@ -1,134 +0,0 @@
1
- import fs from "fs-extra";
2
- import path from "path";
3
- import stream from "stream";
4
- import StreamZip from "node-stream-zip";
5
- import util from "util";
6
- import { walkDir } from "../file_systems.mjs";
7
- import { XMLParser } from "fast-xml-parser";
8
- const pipeline = util.promisify(stream.pipeline);
9
-
10
- // Function to fetch zip files with retry mechanism
11
- async function fetchZipFile(url, zipFilePath, retries = 3) {
12
- for (let attempt = 0; attempt < retries; attempt++) {
13
- const response = await fetch(url);
14
- if (response.ok) {
15
- await pipeline(response.body, fs.createWriteStream(zipFilePath));
16
- return;
17
- } else if (attempt < retries - 1) {
18
- console.warn(`Retrying fetch for ${url}: ${response.statusText}`);
19
- } else {
20
- console.error(`Failed to fetch ${url} after ${retries} attempts`);
21
- throw new Error(`Fetch failed: ${url}`);
22
- }
23
- }
24
- }
25
- async function extractZip(zipFilePath, outputDir) {
26
- return new Promise((resolve, reject) => {
27
- const zip = new StreamZip({
28
- file: zipFilePath,
29
- storeEntries: true
30
- });
31
- zip.on("ready", () => {
32
- zip.extract(null, outputDir, err => {
33
- zip.close();
34
- if (err) {
35
- reject(err);
36
- } else {
37
- resolve();
38
- }
39
- });
40
- });
41
- });
42
- }
43
- function reindentJsonFiles(dataDirOrFilePath) {
44
- if (fs.statSync(dataDirOrFilePath).isDirectory()) {
45
- for (const dataFileSplitPath of walkDir(dataDirOrFilePath)) {
46
- const dataFilePath = path.join(dataDirOrFilePath, ...dataFileSplitPath);
47
- if (dataFilePath.endsWith(".json")) {
48
- const data = JSON.parse(fs.readFileSync(dataFilePath, {
49
- encoding: "utf-8"
50
- }));
51
- fs.writeFileSync(dataFilePath, JSON.stringify(data, null, 2));
52
- }
53
- }
54
- } else {
55
- const data = JSON.parse(fs.readFileSync(dataDirOrFilePath, {
56
- encoding: "utf-8"
57
- }));
58
- fs.writeFileSync(dataDirOrFilePath, JSON.stringify(data, null, 2));
59
- }
60
- }
61
- const xmlParser = new XMLParser({
62
- ignoreDeclaration: true,
63
- ignoreAttributes: false,
64
- ignorePiTags: true,
65
- attributeNamePrefix: "",
66
- textNodeName: "_",
67
- processEntities: false,
68
- trimValues: true,
69
- stopNodes: ["*.texte", "*.intitule"],
70
- parseTagValue: false,
71
- parseAttributeValue: false,
72
- transformTagName: tagName => tagName === "Para" ? "para" : tagName
73
- });
74
-
75
- /**
76
- * Processes a dataset by fetching, unzipping, and converting files from XML to JSON format.
77
- *
78
- * @param {any} dataset - The dataset object containing metadata and processing instructions.
79
- * @param {string} dataDir - The directory where the dataset files will be stored.
80
- * @param {any} options - Options to control the processing behavior, such as fetching and silent mode.
81
- * @returns {Promise<void>} A promise that resolves when the dataset processing is complete.
82
- */
83
- export async function processDataset(args) {
84
- const {
85
- dataset,
86
- dataDir,
87
- options
88
- } = args;
89
- const zipFilePath = path.join(dataDir, `${dataset.filename}.zip`);
90
- const dataDirOrFilePath = path.join(dataDir, dataset.filename);
91
- fs.removeSync(dataDirOrFilePath);
92
- if (options.fetch) {
93
- // Fetch & save ZIP file.
94
- if (!options.silent) {
95
- console.log(`Loading ${dataset.title}: ${dataset.filename}.zip`);
96
- }
97
- await fetchZipFile(dataset.url, zipFilePath);
98
- }
99
- if (!options.silent) {
100
- console.log(`Unzipping ${dataset.title}: ${dataset.filename}.zip`);
101
- }
102
- await extractZip(zipFilePath, dataDir);
103
- if (dataset.repairZip !== undefined) {
104
- if (!options.silent) {
105
- console.log(`Repairing ${dataset.title}: ${dataset.filename}`);
106
- }
107
- dataset.repairZip(dataset, dataDir);
108
- }
109
-
110
- // Convert xml to JSON.
111
- if (dataset.filename.endsWith(".xml")) {
112
- for (const dataFileSplitPath of walkDir(dataDirOrFilePath)) {
113
- const dataFilePath = path.join(dataDirOrFilePath, ...dataFileSplitPath);
114
- if (dataFilePath.endsWith(".xml")) {
115
- fs.readFile(dataFilePath, function (err, data) {
116
- if (err) return console.error(err);
117
- let result = xmlParser.parse(data);
118
- const newDataFilePath = dataFilePath.replace(/\.[^.]+$/, ".json");
119
- fs.copy(dataFilePath, newDataFilePath, err => {
120
- fs.writeFileSync(newDataFilePath, JSON.stringify(result, null, 2));
121
- if (err) return console.error(err);
122
- });
123
- });
124
- }
125
- }
126
- }
127
-
128
- // Reindent JSON file.
129
- if (!options.silent) {
130
- console.log(`Reidenting ${dataset.title}: ${dataset.filename}`);
131
- }
132
- reindentJsonFiles(dataDirOrFilePath);
133
- }
134
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsInBhdGgiLCJzdHJlYW0iLCJTdHJlYW1aaXAiLCJ1dGlsIiwid2Fsa0RpciIsIlhNTFBhcnNlciIsInBpcGVsaW5lIiwicHJvbWlzaWZ5IiwiZmV0Y2haaXBGaWxlIiwidXJsIiwiemlwRmlsZVBhdGgiLCJyZXRyaWVzIiwiYXR0ZW1wdCIsInJlc3BvbnNlIiwiZmV0Y2giLCJvayIsImJvZHkiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImNvbnNvbGUiLCJ3YXJuIiwic3RhdHVzVGV4dCIsImVycm9yIiwiRXJyb3IiLCJleHRyYWN0WmlwIiwib3V0cHV0RGlyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ6aXAiLCJmaWxlIiwic3RvcmVFbnRyaWVzIiwib24iLCJleHRyYWN0IiwiZXJyIiwiY2xvc2UiLCJyZWluZGVudEpzb25GaWxlcyIsImRhdGFEaXJPckZpbGVQYXRoIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsImRhdGFGaWxlU3BsaXRQYXRoIiwiZGF0YUZpbGVQYXRoIiwiam9pbiIsImVuZHNXaXRoIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsInhtbFBhcnNlciIsImlnbm9yZURlY2xhcmF0aW9uIiwiaWdub3JlQXR0cmlidXRlcyIsImlnbm9yZVBpVGFncyIsImF0dHJpYnV0ZU5hbWVQcmVmaXgiLCJ0ZXh0Tm9kZU5hbWUiLCJwcm9jZXNzRW50aXRpZXMiLCJ0cmltVmFsdWVzIiwic3RvcE5vZGVzIiwicGFyc2VUYWdWYWx1ZSIsInBhcnNlQXR0cmlidXRlVmFsdWUiLCJ0cmFuc2Zvcm1UYWdOYW1lIiwidGFnTmFtZSIsInByb2Nlc3NEYXRhc2V0IiwiYXJncyIsImRhdGFzZXQiLCJkYXRhRGlyIiwib3B0aW9ucyIsImZpbGVuYW1lIiwicmVtb3ZlU3luYyIsInNpbGVudCIsImxvZyIsInRpdGxlIiwicmVwYWlyWmlwIiwidW5kZWZpbmVkIiwicmVhZEZpbGUiLCJyZXN1bHQiLCJuZXdEYXRhRmlsZVBhdGgiLCJyZXBsYWNlIiwiY29weSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Byb2Nlc3Nfb3Blbl9kYXRhc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbmltcG9ydCBTdHJlYW1aaXAgZnJvbSBcIm5vZGUtc3RyZWFtLXppcFwiXG5pbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5cbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gXCJmYXN0LXhtbC1wYXJzZXJcIlxuXG5jb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuLy8gRnVuY3Rpb24gdG8gZmV0Y2ggemlwIGZpbGVzIHdpdGggcmV0cnkgbWVjaGFuaXNtXG5hc3luYyBmdW5jdGlvbiBmZXRjaFppcEZpbGUoXG4gIHVybDogc3RyaW5nLFxuICB6aXBGaWxlUGF0aDogc3RyaW5nLFxuICByZXRyaWVzID0gMyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IHJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgYXdhaXQgcGlwZWxpbmUoXG4gICAgICAgIHJlc3BvbnNlLmJvZHkgYXMgdW5rbm93biBhcyBOb2RlSlMuUmVhZGFibGVTdHJlYW0sXG4gICAgICAgIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHppcEZpbGVQYXRoKSxcbiAgICAgIClcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAoYXR0ZW1wdCA8IHJldHJpZXMgLSAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFJldHJ5aW5nIGZldGNoIGZvciAke3VybH06ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggJHt1cmx9IGFmdGVyICR7cmV0cmllc30gYXR0ZW1wdHNgKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGZXRjaCBmYWlsZWQ6ICR7dXJsfWApXG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RaaXAoXG4gIHppcEZpbGVQYXRoOiBzdHJpbmcsXG4gIG91dHB1dERpcjogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgemlwID0gbmV3IFN0cmVhbVppcCh7XG4gICAgICBmaWxlOiB6aXBGaWxlUGF0aCxcbiAgICAgIHN0b3JlRW50cmllczogdHJ1ZSxcbiAgICB9KVxuXG4gICAgemlwLm9uKFwicmVhZHlcIiwgKCkgPT4ge1xuICAgICAgemlwLmV4dHJhY3QobnVsbCEsIG91dHB1dERpciwgKGVycikgPT4ge1xuICAgICAgICB6aXAuY2xvc2UoKVxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWluZGVudEpzb25GaWxlcyhkYXRhRGlyT3JGaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChmcy5zdGF0U3luYyhkYXRhRGlyT3JGaWxlUGF0aCkuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZvciAoY29uc3QgZGF0YUZpbGVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhRGlyT3JGaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRhdGFGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyT3JGaWxlUGF0aCwgLi4uZGF0YUZpbGVTcGxpdFBhdGgpXG4gICAgICBpZiAoZGF0YUZpbGVQYXRoLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgZnMucmVhZEZpbGVTeW5jKGRhdGFGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pLFxuICAgICAgICApXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZGF0YUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKSlcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMoZGF0YURpck9yRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KSxcbiAgICApXG4gICAgZnMud3JpdGVGaWxlU3luYyhkYXRhRGlyT3JGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMikpXG4gIH1cbn1cblxudHlwZSBQcm9jZXNzRGF0YXNldEFyZ3VtZW50cyA9IHtcbiAgZGF0YXNldDogYW55XG4gIGRhdGFEaXI6IHN0cmluZ1xuICBvcHRpb25zOiBhbnlcbn1cblxuY29uc3QgeG1sUGFyc2VyID0gbmV3IFhNTFBhcnNlcih7XG4gIGlnbm9yZURlY2xhcmF0aW9uOiB0cnVlLFxuICBpZ25vcmVBdHRyaWJ1dGVzOiBmYWxzZSxcbiAgaWdub3JlUGlUYWdzOiB0cnVlLFxuICBhdHRyaWJ1dGVOYW1lUHJlZml4OiBcIlwiLFxuICB0ZXh0Tm9kZU5hbWU6IFwiX1wiLFxuICBwcm9jZXNzRW50aXRpZXM6IGZhbHNlLFxuICB0cmltVmFsdWVzOiB0cnVlLFxuICBzdG9wTm9kZXM6IFtcIioudGV4dGVcIiwgXCIqLmludGl0dWxlXCJdLFxuICBwYXJzZVRhZ1ZhbHVlOiBmYWxzZSxcbiAgcGFyc2VBdHRyaWJ1dGVWYWx1ZTogZmFsc2UsXG4gIHRyYW5zZm9ybVRhZ05hbWU6ICh0YWdOYW1lOiBzdHJpbmcpID0+XG4gICAgdGFnTmFtZSA9PT0gXCJQYXJhXCIgPyBcInBhcmFcIiA6IHRhZ05hbWUsXG59KVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGRhdGFzZXQgYnkgZmV0Y2hpbmcsIHVuemlwcGluZywgYW5kIGNvbnZlcnRpbmcgZmlsZXMgZnJvbSBYTUwgdG8gSlNPTiBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHthbnl9IGRhdGFzZXQgLSBUaGUgZGF0YXNldCBvYmplY3QgY29udGFpbmluZyBtZXRhZGF0YSBhbmQgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YURpciAtIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRhdGFzZXQgZmlsZXMgd2lsbCBiZSBzdG9yZWQuXG4gKiBAcGFyYW0ge2FueX0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gY29udHJvbCB0aGUgcHJvY2Vzc2luZyBiZWhhdmlvciwgc3VjaCBhcyBmZXRjaGluZyBhbmQgc2lsZW50IG1vZGUuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZGF0YXNldCBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0RhdGFzZXQoXG4gIGFyZ3M6IFByb2Nlc3NEYXRhc2V0QXJndW1lbnRzLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZGF0YXNldCwgZGF0YURpciwgb3B0aW9ucyB9ID0gYXJnc1xuICBjb25zdCB6aXBGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBgJHtkYXRhc2V0LmZpbGVuYW1lfS56aXBgKVxuICBjb25zdCBkYXRhRGlyT3JGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICBmcy5yZW1vdmVTeW5jKGRhdGFEaXJPckZpbGVQYXRoKVxuXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgLy8gRmV0Y2ggJiBzYXZlIFpJUCBmaWxlLlxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nICR7ZGF0YXNldC50aXRsZX06ICR7ZGF0YXNldC5maWxlbmFtZX0uemlwYClcbiAgICB9XG4gICAgYXdhaXQgZmV0Y2haaXBGaWxlKGRhdGFzZXQudXJsLCB6aXBGaWxlUGF0aClcbiAgfVxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYFVuemlwcGluZyAke2RhdGFzZXQudGl0bGV9OiAke2RhdGFzZXQuZmlsZW5hbWV9LnppcGApXG4gIH1cbiAgYXdhaXQgZXh0cmFjdFppcCh6aXBGaWxlUGF0aCwgZGF0YURpcilcblxuICBpZiAoZGF0YXNldC5yZXBhaXJaaXAgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBSZXBhaXJpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfWApXG4gICAgfVxuICAgIGRhdGFzZXQucmVwYWlyWmlwKGRhdGFzZXQsIGRhdGFEaXIpXG4gIH1cblxuICAvLyBDb252ZXJ0IHhtbCB0byBKU09OLlxuICBpZiAoZGF0YXNldC5maWxlbmFtZS5lbmRzV2l0aChcIi54bWxcIikpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFGaWxlU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YURpck9yRmlsZVBhdGgpKSB7XG4gICAgICBjb25zdCBkYXRhRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YURpck9yRmlsZVBhdGgsIC4uLmRhdGFGaWxlU3BsaXRQYXRoKVxuICAgICAgaWYgKGRhdGFGaWxlUGF0aC5lbmRzV2l0aChcIi54bWxcIikpIHtcbiAgICAgICAgZnMucmVhZEZpbGUoZGF0YUZpbGVQYXRoLCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgICAgIGxldCByZXN1bHQgPSB4bWxQYXJzZXIucGFyc2UoZGF0YSlcbiAgICAgICAgICBjb25zdCBuZXdEYXRhRmlsZVBhdGggPSBkYXRhRmlsZVBhdGgucmVwbGFjZSgvXFwuW14uXSskLywgXCIuanNvblwiKVxuICAgICAgICAgIGZzLmNvcHkoZGF0YUZpbGVQYXRoLCBuZXdEYXRhRmlsZVBhdGgsIChlcnIpID0+IHtcbiAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMobmV3RGF0YUZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpKVxuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVpbmRlbnQgSlNPTiBmaWxlLlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYFJlaWRlbnRpbmcgJHtkYXRhc2V0LnRpdGxlfTogJHtkYXRhc2V0LmZpbGVuYW1lfWApXG4gIH1cbiAgcmVpbmRlbnRKc29uRmlsZXMoZGF0YURpck9yRmlsZVBhdGgpXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQ3ZCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLFNBQVMsTUFBTSxpQkFBaUI7QUFDdkMsT0FBT0MsSUFBSSxNQUFNLE1BQU07QUFBQSxTQUVkQyxPQUFPO0FBQ2hCLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsTUFBTUMsUUFBUSxHQUFHSCxJQUFJLENBQUNJLFNBQVMsQ0FBQ04sTUFBTSxDQUFDSyxRQUFRLENBQUM7O0FBRWhEO0FBQ0EsZUFBZUUsWUFBWUEsQ0FDekJDLEdBQVcsRUFDWEMsV0FBbUIsRUFDbkJDLE9BQU8sR0FBRyxDQUFDLEVB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