@tricoteuses/senat 3.1.21 → 3.1.22

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 (388) hide show
  1. package/LICENSE.md +32 -32
  2. package/README.md +326 -326
  3. package/lib/add-js-extensions-v2.js +23 -0
  4. package/lib/add-js-extensions.js +17 -0
  5. package/lib/aggregates.d.ts +52 -0
  6. package/lib/aggregates.js +930 -0
  7. package/lib/aggregates.mjs +713 -0
  8. package/lib/aggregates.ts +833 -0
  9. package/lib/config.d.ts +10 -0
  10. package/lib/config.js +16 -0
  11. package/lib/config.mjs +16 -0
  12. package/lib/config.ts +26 -0
  13. package/lib/databases.d.ts +2 -0
  14. package/lib/databases.js +26 -0
  15. package/lib/databases.mjs +57 -0
  16. package/lib/databases.ts +71 -0
  17. package/lib/datasets.d.ts +34 -0
  18. package/lib/datasets.js +233 -0
  19. package/lib/datasets.mjs +78 -0
  20. package/lib/datasets.ts +118 -0
  21. package/lib/fields.d.ts +10 -0
  22. package/lib/fields.js +68 -0
  23. package/lib/fields.mjs +22 -0
  24. package/lib/fields.ts +29 -0
  25. package/lib/git.d.ts +26 -0
  26. package/lib/git.js +167 -0
  27. package/lib/index.d.ts +13 -0
  28. package/lib/index.js +1 -0
  29. package/lib/index.mjs +7 -0
  30. package/lib/index.ts +64 -0
  31. package/lib/inserters.d.ts +98 -0
  32. package/lib/inserters.js +500 -0
  33. package/lib/inserters.mjs +360 -0
  34. package/lib/inserters.ts +521 -0
  35. package/lib/legislatures.json +38 -0
  36. package/lib/loaders.d.ts +58 -0
  37. package/lib/loaders.js +286 -0
  38. package/lib/loaders.mjs +158 -0
  39. package/lib/loaders.ts +271 -0
  40. package/lib/model/agenda.d.ts +6 -0
  41. package/lib/model/agenda.js +148 -0
  42. package/lib/model/ameli.d.ts +51 -0
  43. package/lib/model/ameli.js +149 -0
  44. package/lib/model/ameli.mjs +84 -0
  45. package/lib/model/ameli.ts +100 -0
  46. package/lib/model/commission.d.ts +18 -0
  47. package/lib/model/commission.js +269 -0
  48. package/lib/model/debats.d.ts +67 -0
  49. package/lib/model/debats.js +95 -0
  50. package/lib/model/debats.mjs +43 -0
  51. package/lib/model/debats.ts +68 -0
  52. package/lib/model/documents.d.ts +12 -0
  53. package/lib/model/documents.js +151 -0
  54. package/lib/model/dosleg.d.ts +7 -0
  55. package/lib/model/dosleg.js +326 -0
  56. package/lib/model/dosleg.mjs +196 -0
  57. package/lib/model/dosleg.ts +240 -0
  58. package/lib/model/index.d.ts +7 -0
  59. package/lib/model/index.js +7 -0
  60. package/lib/model/index.mjs +5 -0
  61. package/lib/model/index.ts +15 -0
  62. package/lib/model/questions.d.ts +45 -0
  63. package/lib/model/questions.js +89 -0
  64. package/lib/model/questions.mjs +71 -0
  65. package/lib/model/questions.ts +93 -0
  66. package/lib/model/scrutins.d.ts +13 -0
  67. package/lib/model/scrutins.js +114 -0
  68. package/lib/model/seance.d.ts +3 -0
  69. package/lib/model/seance.js +267 -0
  70. package/lib/model/sens.d.ts +146 -0
  71. package/lib/model/sens.js +454 -0
  72. package/lib/model/sens.mjs +415 -0
  73. package/lib/model/sens.ts +516 -0
  74. package/lib/model/texte.d.ts +7 -0
  75. package/lib/model/texte.js +256 -0
  76. package/lib/model/texte.mjs +208 -0
  77. package/lib/model/texte.ts +229 -0
  78. package/lib/model/util.d.ts +9 -0
  79. package/lib/model/util.js +38 -0
  80. package/lib/model/util.mjs +19 -0
  81. package/lib/model/util.ts +32 -0
  82. package/lib/parsers/texte.d.ts +7 -0
  83. package/lib/parsers/texte.js +228 -0
  84. package/lib/raw_types/ameli.d.ts +914 -0
  85. package/lib/raw_types/ameli.js +5 -0
  86. package/lib/raw_types/ameli.mjs +163 -0
  87. package/lib/raw_types/debats.d.ts +207 -0
  88. package/lib/raw_types/debats.js +5 -0
  89. package/lib/raw_types/debats.mjs +58 -0
  90. package/lib/raw_types/dosleg.d.ts +1619 -0
  91. package/lib/raw_types/dosleg.js +5 -0
  92. package/lib/raw_types/dosleg.mjs +438 -0
  93. package/lib/raw_types/questions.d.ts +419 -0
  94. package/lib/raw_types/questions.js +5 -0
  95. package/lib/raw_types/questions.mjs +11 -0
  96. package/lib/raw_types/senat.d.ts +11368 -0
  97. package/lib/raw_types/senat.js +5 -0
  98. package/lib/raw_types/sens.d.ts +8248 -0
  99. package/lib/raw_types/sens.js +5 -0
  100. package/lib/raw_types/sens.mjs +508 -0
  101. package/lib/raw_types_kysely/ameli.d.ts +915 -0
  102. package/lib/raw_types_kysely/ameli.js +7 -0
  103. package/lib/raw_types_kysely/ameli.mjs +5 -0
  104. package/lib/raw_types_kysely/ameli.ts +951 -0
  105. package/lib/raw_types_kysely/debats.d.ts +207 -0
  106. package/lib/raw_types_kysely/debats.js +7 -0
  107. package/lib/raw_types_kysely/debats.mjs +5 -0
  108. package/lib/raw_types_kysely/debats.ts +222 -0
  109. package/lib/raw_types_kysely/dosleg.d.ts +3532 -0
  110. package/lib/raw_types_kysely/dosleg.js +7 -0
  111. package/lib/raw_types_kysely/dosleg.mjs +5 -0
  112. package/lib/raw_types_kysely/dosleg.ts +3621 -0
  113. package/lib/raw_types_kysely/questions.d.ts +414 -0
  114. package/lib/raw_types_kysely/questions.js +7 -0
  115. package/lib/raw_types_kysely/questions.mjs +5 -0
  116. package/lib/raw_types_kysely/questions.ts +426 -0
  117. package/lib/raw_types_kysely/sens.d.ts +4394 -0
  118. package/lib/raw_types_kysely/sens.js +7 -0
  119. package/lib/raw_types_kysely/sens.mjs +5 -0
  120. package/lib/raw_types_kysely/sens.ts +4499 -0
  121. package/lib/raw_types_schemats/ameli.d.ts +539 -0
  122. package/lib/raw_types_schemats/ameli.js +2 -0
  123. package/lib/raw_types_schemats/ameli.mjs +2 -0
  124. package/lib/raw_types_schemats/ameli.ts +601 -0
  125. package/lib/raw_types_schemats/debats.d.ts +127 -0
  126. package/lib/raw_types_schemats/debats.js +2 -0
  127. package/lib/raw_types_schemats/debats.mjs +2 -0
  128. package/lib/raw_types_schemats/debats.ts +145 -0
  129. package/lib/raw_types_schemats/dosleg.d.ts +977 -0
  130. package/lib/raw_types_schemats/dosleg.js +2 -0
  131. package/lib/raw_types_schemats/dosleg.mjs +2 -0
  132. package/lib/raw_types_schemats/dosleg.ts +2193 -0
  133. package/lib/raw_types_schemats/questions.d.ts +235 -0
  134. package/lib/raw_types_schemats/questions.js +2 -0
  135. package/lib/raw_types_schemats/questions.mjs +2 -0
  136. package/lib/raw_types_schemats/questions.ts +249 -0
  137. package/lib/raw_types_schemats/sens.d.ts +6915 -0
  138. package/lib/raw_types_schemats/sens.js +2 -0
  139. package/lib/raw_types_schemats/sens.mjs +2 -0
  140. package/lib/raw_types_schemats/sens.ts +2907 -0
  141. package/lib/scripts/convert_data.js +354 -0
  142. package/lib/scripts/convert_data.mjs +181 -0
  143. package/lib/scripts/convert_data.ts +243 -0
  144. package/lib/scripts/data-download.d.ts +1 -0
  145. package/lib/scripts/data-download.js +12 -0
  146. package/lib/scripts/datautil.d.ts +8 -0
  147. package/lib/scripts/datautil.js +34 -0
  148. package/lib/scripts/datautil.mjs +16 -0
  149. package/lib/scripts/datautil.ts +19 -0
  150. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  151. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  152. package/lib/scripts/parse_textes.d.ts +1 -0
  153. package/lib/scripts/parse_textes.js +44 -0
  154. package/lib/scripts/parse_textes.mjs +46 -0
  155. package/lib/scripts/parse_textes.ts +65 -0
  156. package/lib/scripts/retrieve_agenda.d.ts +1 -0
  157. package/lib/scripts/retrieve_agenda.js +132 -0
  158. package/lib/scripts/retrieve_cr_commission.d.ts +1 -0
  159. package/lib/scripts/retrieve_cr_commission.js +364 -0
  160. package/lib/scripts/retrieve_cr_seance.d.ts +6 -0
  161. package/lib/scripts/retrieve_cr_seance.js +347 -0
  162. package/lib/scripts/retrieve_documents.d.ts +3 -0
  163. package/lib/scripts/retrieve_documents.js +219 -0
  164. package/lib/scripts/retrieve_documents.mjs +249 -0
  165. package/lib/scripts/retrieve_documents.ts +298 -0
  166. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  167. package/lib/scripts/retrieve_open_data.js +315 -0
  168. package/lib/scripts/retrieve_open_data.mjs +217 -0
  169. package/lib/scripts/retrieve_open_data.ts +268 -0
  170. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  171. package/lib/scripts/retrieve_senateurs_photos.js +147 -0
  172. package/lib/scripts/retrieve_senateurs_photos.mjs +147 -0
  173. package/lib/scripts/retrieve_senateurs_photos.ts +177 -0
  174. package/lib/scripts/retrieve_videos.d.ts +1 -0
  175. package/lib/scripts/retrieve_videos.js +461 -0
  176. package/lib/scripts/shared/cli_helpers.d.ts +95 -0
  177. package/lib/scripts/shared/cli_helpers.js +91 -0
  178. package/lib/scripts/shared/cli_helpers.ts +36 -0
  179. package/lib/scripts/shared/util.d.ts +4 -0
  180. package/lib/scripts/shared/util.js +35 -0
  181. package/lib/scripts/shared/util.ts +33 -0
  182. package/lib/scripts/test_iter_load.d.ts +1 -0
  183. package/lib/scripts/test_iter_load.js +12 -0
  184. package/lib/src/ameli.d.ts +66 -0
  185. package/lib/src/ameli.js +1 -0
  186. package/lib/src/config.d.ts +43 -0
  187. package/lib/src/config.js +37 -0
  188. package/lib/src/conversion_textes.d.ts +11 -0
  189. package/lib/src/conversion_textes.js +320 -0
  190. package/lib/src/databases.d.ts +3 -0
  191. package/lib/src/databases.js +26 -0
  192. package/lib/src/databases_postgres.d.ts +4 -0
  193. package/lib/src/databases_postgres.js +23 -0
  194. package/lib/src/datasets.d.ts +38 -0
  195. package/lib/src/datasets.js +247 -0
  196. package/lib/src/db_types/ameli.d.ts +1762 -0
  197. package/lib/src/db_types/ameli.js +1074 -0
  198. package/lib/src/db_types/debats.d.ts +380 -0
  199. package/lib/src/db_types/debats.js +266 -0
  200. package/lib/src/db_types/dosleg.d.ts +2954 -0
  201. package/lib/src/db_types/dosleg.js +2005 -0
  202. package/lib/src/db_types/questions.d.ts +699 -0
  203. package/lib/src/db_types/questions.js +493 -0
  204. package/lib/src/db_types/sens.d.ts +7843 -0
  205. package/lib/src/db_types/sens.js +4691 -0
  206. package/lib/src/debats.d.ts +38 -0
  207. package/lib/src/debats.js +1 -0
  208. package/lib/src/dosleg.d.ts +142 -0
  209. package/lib/src/dosleg.js +193 -0
  210. package/lib/src/git.d.ts +27 -0
  211. package/lib/src/git.js +251 -0
  212. package/lib/src/loaders.d.ts +52 -0
  213. package/lib/src/loaders.js +260 -0
  214. package/lib/src/model/agenda.d.ts +6 -0
  215. package/lib/src/model/agenda.js +148 -0
  216. package/lib/src/model/ameli.d.ts +67 -0
  217. package/lib/src/model/ameli.js +150 -0
  218. package/lib/src/model/ameli_postgres.d.ts +67 -0
  219. package/lib/src/model/ameli_postgres.js +150 -0
  220. package/lib/src/model/commission.d.ts +19 -0
  221. package/lib/src/model/commission.js +269 -0
  222. package/lib/src/model/debats.d.ts +39 -0
  223. package/lib/src/model/debats.js +112 -0
  224. package/lib/src/model/documents.d.ts +32 -0
  225. package/lib/src/model/documents.js +182 -0
  226. package/lib/src/model/dosleg.d.ts +144 -0
  227. package/lib/src/model/dosleg.js +468 -0
  228. package/lib/src/model/index.d.ts +7 -0
  229. package/lib/src/model/index.js +7 -0
  230. package/lib/src/model/questions.d.ts +54 -0
  231. package/lib/src/model/questions.js +91 -0
  232. package/lib/src/model/scrutins.d.ts +48 -0
  233. package/lib/src/model/scrutins.js +121 -0
  234. package/lib/src/model/seance.d.ts +3 -0
  235. package/lib/src/model/seance.js +267 -0
  236. package/lib/src/model/sens.d.ts +112 -0
  237. package/lib/src/model/sens.js +385 -0
  238. package/lib/src/model/util.d.ts +1 -0
  239. package/lib/src/model/util.js +15 -0
  240. package/lib/src/other_types/questions.d.ts +2 -0
  241. package/lib/src/other_types/questions.js +1 -0
  242. package/lib/src/questions.d.ts +53 -0
  243. package/lib/src/questions.js +1 -0
  244. package/lib/src/raw_types/ameli.d.ts +1762 -0
  245. package/lib/src/raw_types/ameli.js +1074 -0
  246. package/lib/src/raw_types/debats.d.ts +380 -0
  247. package/lib/src/raw_types/debats.js +266 -0
  248. package/lib/src/raw_types/dosleg.d.ts +2954 -0
  249. package/lib/src/raw_types/dosleg.js +2005 -0
  250. package/lib/src/raw_types/questions.d.ts +699 -0
  251. package/lib/src/raw_types/questions.js +493 -0
  252. package/lib/src/raw_types/senat.d.ts +11372 -0
  253. package/lib/src/raw_types/senat.js +5 -0
  254. package/lib/src/raw_types/sens.d.ts +7843 -0
  255. package/lib/src/raw_types/sens.js +4691 -0
  256. package/lib/src/raw_types_schemats/ameli.d.ts +541 -0
  257. package/lib/src/raw_types_schemats/ameli.js +2 -0
  258. package/lib/src/raw_types_schemats/debats.d.ts +127 -0
  259. package/lib/src/raw_types_schemats/debats.js +2 -0
  260. package/lib/src/raw_types_schemats/dosleg.d.ts +977 -0
  261. package/lib/src/raw_types_schemats/dosleg.js +2 -0
  262. package/lib/src/raw_types_schemats/questions.d.ts +237 -0
  263. package/lib/src/raw_types_schemats/questions.js +2 -0
  264. package/lib/src/raw_types_schemats/sens.d.ts +2709 -0
  265. package/lib/src/raw_types_schemats/sens.js +2 -0
  266. package/lib/src/rich_types/agenda.d.ts +45 -0
  267. package/lib/src/rich_types/agenda.js +1 -0
  268. package/lib/src/rich_types/compte_rendu.d.ts +83 -0
  269. package/lib/src/rich_types/compte_rendu.js +1 -0
  270. package/lib/src/rich_types/dosleg.js +0 -7
  271. package/lib/src/rich_types/sessions.d.ts +6 -0
  272. package/lib/src/rich_types/sessions.js +19 -0
  273. package/lib/src/rich_types/texte.d.ts +72 -0
  274. package/lib/src/rich_types/texte.js +15 -0
  275. package/lib/src/scripts/convert_data.js +4 -5
  276. package/lib/src/scripts/retrieve_cr_commission.js +1 -1
  277. package/lib/src/scripts/retrieve_open_data.js +39 -0
  278. package/lib/src/scripts/retrieve_videos.js +1 -2
  279. package/lib/src/scripts/shared/incremental_import_sql.js +859 -859
  280. package/lib/src/scripts/shared/schema_version.js +84 -84
  281. package/lib/src/scripts/shared/staging_metadata_sql.js +214 -214
  282. package/lib/src/scripts/test_iter_load.d.ts +1 -0
  283. package/lib/src/scripts/test_iter_load.js +12 -0
  284. package/lib/src/scripts/validate_prefixed_tables.js +12 -12
  285. package/lib/src/sens.d.ts +104 -0
  286. package/lib/src/sens.js +1 -0
  287. package/lib/src/server/ameli.js +11 -13
  288. package/lib/src/server/conversion_textes.js +107 -107
  289. package/lib/src/server/debats.js +10 -15
  290. package/lib/src/server/documents.js +22 -25
  291. package/lib/src/server/dosleg.js +33 -44
  292. package/lib/src/server/questions.js +10 -11
  293. package/lib/src/server/scrutins.js +3 -7
  294. package/lib/src/server/sens.js +19 -36
  295. package/lib/src/types/agenda.d.ts +45 -0
  296. package/lib/src/types/agenda.js +1 -0
  297. package/lib/src/types/ameli.d.ts +1762 -0
  298. package/lib/src/types/ameli.js +1074 -0
  299. package/lib/src/types/compte_rendu.d.ts +83 -0
  300. package/lib/src/types/compte_rendu.js +1 -0
  301. package/lib/src/types/debats.d.ts +380 -0
  302. package/lib/src/types/debats.js +266 -0
  303. package/lib/src/types/dosleg.d.ts +2954 -0
  304. package/lib/src/types/dosleg.js +2005 -0
  305. package/lib/src/types/questions.d.ts +699 -0
  306. package/lib/src/types/questions.js +493 -0
  307. package/lib/src/types/sens.d.ts +7843 -0
  308. package/lib/src/types/sens.js +4691 -0
  309. package/lib/src/types/sessions.d.ts +6 -0
  310. package/lib/src/types/sessions.js +19 -0
  311. package/lib/src/types/texte.d.ts +72 -0
  312. package/lib/src/types/texte.js +15 -0
  313. package/lib/src/validators/config.d.ts +9 -0
  314. package/lib/src/validators/config.js +10 -0
  315. package/lib/src/videos/match.js +4 -4
  316. package/lib/strings.d.ts +1 -0
  317. package/lib/strings.js +18 -0
  318. package/lib/strings.mjs +18 -0
  319. package/lib/strings.ts +26 -0
  320. package/lib/tsconfig.tsbuildinfo +1 -0
  321. package/lib/types/agenda.d.ts +44 -0
  322. package/lib/types/agenda.js +1 -0
  323. package/lib/types/ameli.d.ts +5 -0
  324. package/lib/types/ameli.js +1 -0
  325. package/lib/types/ameli.mjs +13 -0
  326. package/lib/types/ameli.ts +21 -0
  327. package/lib/types/compte_rendu.d.ts +83 -0
  328. package/lib/types/compte_rendu.js +1 -0
  329. package/lib/types/debats.d.ts +2 -0
  330. package/lib/types/debats.js +1 -0
  331. package/lib/types/debats.mjs +2 -0
  332. package/lib/types/debats.ts +6 -0
  333. package/lib/types/dosleg.d.ts +70 -0
  334. package/lib/types/dosleg.js +1 -0
  335. package/lib/types/dosleg.mjs +151 -0
  336. package/lib/types/dosleg.ts +284 -0
  337. package/lib/types/questions.d.ts +2 -0
  338. package/lib/types/questions.js +1 -0
  339. package/lib/types/questions.mjs +1 -0
  340. package/lib/types/questions.ts +3 -0
  341. package/lib/types/sens.d.ts +10 -0
  342. package/lib/types/sens.js +1 -0
  343. package/lib/types/sens.mjs +1 -0
  344. package/lib/types/sens.ts +12 -0
  345. package/lib/types/sessions.d.ts +5 -0
  346. package/lib/types/sessions.js +84 -0
  347. package/lib/types/sessions.mjs +43 -0
  348. package/lib/types/sessions.ts +42 -0
  349. package/lib/types/texte.d.ts +74 -0
  350. package/lib/types/texte.js +16 -0
  351. package/lib/types/texte.mjs +16 -0
  352. package/lib/types/texte.ts +76 -0
  353. package/lib/typings/windows-1252.d.js +2 -0
  354. package/lib/typings/windows-1252.d.mjs +2 -0
  355. package/lib/typings/windows-1252.d.ts +11 -0
  356. package/lib/utils/cr_spliting.d.ts +28 -0
  357. package/lib/utils/cr_spliting.js +265 -0
  358. package/lib/utils/date.d.ts +10 -0
  359. package/lib/utils/date.js +100 -0
  360. package/lib/utils/nvs-timecode.d.ts +7 -0
  361. package/lib/utils/nvs-timecode.js +79 -0
  362. package/lib/utils/reunion_grouping.d.ts +9 -0
  363. package/lib/utils/reunion_grouping.js +361 -0
  364. package/lib/utils/reunion_odj_building.d.ts +5 -0
  365. package/lib/utils/reunion_odj_building.js +154 -0
  366. package/lib/utils/reunion_parsing.d.ts +23 -0
  367. package/lib/utils/reunion_parsing.js +209 -0
  368. package/lib/utils/scoring.d.ts +14 -0
  369. package/lib/utils/scoring.js +147 -0
  370. package/lib/utils/string_cleaning.d.ts +7 -0
  371. package/lib/utils/string_cleaning.js +57 -0
  372. package/lib/validators/config.d.ts +9 -0
  373. package/lib/validators/config.js +10 -0
  374. package/lib/validators/config.mjs +54 -0
  375. package/lib/validators/config.ts +79 -0
  376. package/lib/validators/senat.d.ts +0 -0
  377. package/lib/validators/senat.js +28 -0
  378. package/lib/validators/senat.mjs +24 -0
  379. package/lib/validators/senat.ts +26 -0
  380. package/package.json +119 -117
  381. package/lib/src/other_types/collaborateurs.d.ts +0 -5
  382. package/lib/src/parsers/collaborateurs.d.ts +0 -44
  383. package/lib/src/parsers/collaborateurs.js +0 -157
  384. package/lib/src/scripts/retrieve_collaborateurs.js +0 -166
  385. package/lib/tests/collaborateurs.test.js +0 -115
  386. /package/lib/{src/other_types/collaborateurs.js → add-js-extensions-v2.d.ts} +0 -0
  387. /package/lib/{src/scripts/retrieve_collaborateurs.d.ts → add-js-extensions.d.ts} +0 -0
  388. /package/lib/{tests/collaborateurs.test.d.ts → scripts/convert_data.d.ts} +0 -0
@@ -0,0 +1,95 @@
1
+ export declare const categoriesOption: {
2
+ alias: string;
3
+ defaultValue: string[];
4
+ help: string;
5
+ multiple: boolean;
6
+ name: string;
7
+ type: StringConstructor;
8
+ };
9
+ export declare const dataDirDefaultOption: {
10
+ defaultOption: boolean;
11
+ help: string;
12
+ name: string;
13
+ type: StringConstructor;
14
+ };
15
+ export declare const fromSessionOption: {
16
+ defaultValue: number;
17
+ help: string;
18
+ name: string;
19
+ type: NumberConstructor;
20
+ };
21
+ export declare const silentOption: {
22
+ alias: string;
23
+ help: string;
24
+ name: string;
25
+ type: BooleanConstructor;
26
+ };
27
+ export declare const verboseOption: {
28
+ alias: string;
29
+ help: string;
30
+ name: string;
31
+ type: BooleanConstructor;
32
+ };
33
+ export declare const onlyRecentOption: {
34
+ help: string;
35
+ name: string;
36
+ type: NumberConstructor;
37
+ };
38
+ export declare const keepDirOption: {
39
+ help: string;
40
+ name: string;
41
+ type: BooleanConstructor;
42
+ };
43
+ export declare const cloneOption: {
44
+ alias: string;
45
+ help: string;
46
+ name: string;
47
+ type: StringConstructor;
48
+ };
49
+ export declare const commitOption: {
50
+ help: string;
51
+ name: string;
52
+ type: BooleanConstructor;
53
+ };
54
+ export declare const remoteOption: {
55
+ alias: string;
56
+ help: string;
57
+ multiple: boolean;
58
+ name: string;
59
+ type: StringConstructor;
60
+ };
61
+ export declare const pullOption: {
62
+ alias: string;
63
+ help: string;
64
+ name: string;
65
+ type: BooleanConstructor;
66
+ };
67
+ export declare const fetchDocumentsOption: {
68
+ help: string;
69
+ name: string;
70
+ type: BooleanConstructor;
71
+ };
72
+ export declare const parseDocumentsOption: {
73
+ help: string;
74
+ name: string;
75
+ type: BooleanConstructor;
76
+ };
77
+ export declare const commonOptions: ({
78
+ defaultOption: boolean;
79
+ help: string;
80
+ name: string;
81
+ type: StringConstructor;
82
+ } | {
83
+ help: string;
84
+ name: string;
85
+ type: NumberConstructor;
86
+ } | {
87
+ help: string;
88
+ name: string;
89
+ type: BooleanConstructor;
90
+ } | {
91
+ alias: string;
92
+ help: string;
93
+ name: string;
94
+ type: StringConstructor;
95
+ })[];
@@ -0,0 +1,91 @@
1
+ export const categoriesOption = {
2
+ alias: "k",
3
+ defaultValue: ["All"],
4
+ help: "categories of datasets to reorganize; default All",
5
+ multiple: true,
6
+ name: "categories",
7
+ type: String,
8
+ };
9
+ export const dataDirDefaultOption = {
10
+ defaultOption: true,
11
+ help: "directory containing Sénat open data files",
12
+ name: "dataDir",
13
+ type: String,
14
+ };
15
+ export const fromSessionOption = {
16
+ defaultValue: 2022,
17
+ help: "session year to retrieve data from; default 2022",
18
+ name: "fromSession",
19
+ type: Number,
20
+ };
21
+ export const silentOption = {
22
+ alias: "s",
23
+ help: "don't log anything",
24
+ name: "silent",
25
+ type: Boolean,
26
+ };
27
+ export const verboseOption = {
28
+ alias: "v",
29
+ help: "verbose logs",
30
+ name: "verbose",
31
+ type: Boolean,
32
+ };
33
+ export const onlyRecentOption = {
34
+ help: "retrieve only documents created within the last N days (that are not already downloaded)",
35
+ name: "only-recent",
36
+ type: Number,
37
+ };
38
+ export const keepDirOption = {
39
+ help: "keep directories when cleaning data",
40
+ name: "keepDir",
41
+ type: Boolean,
42
+ };
43
+ export const cloneOption = {
44
+ alias: "C",
45
+ help: "clone repositories from given group (or organization) git URL",
46
+ name: "clone",
47
+ type: String,
48
+ };
49
+ export const commitOption = {
50
+ help: "commit clean files",
51
+ name: "commit",
52
+ type: Boolean,
53
+ };
54
+ export const remoteOption = {
55
+ alias: "r",
56
+ help: "push commit to given remote",
57
+ multiple: true,
58
+ name: "remote",
59
+ type: String,
60
+ };
61
+ export const pullOption = {
62
+ alias: "p",
63
+ help: "pull repositories before proceeding",
64
+ name: "pull",
65
+ type: Boolean,
66
+ };
67
+ export const fetchDocumentsOption = {
68
+ help: "download documents",
69
+ name: "fetchDocuments",
70
+ type: Boolean,
71
+ };
72
+ export const parseDocumentsOption = {
73
+ help: "parse documents",
74
+ name: "parseDocuments",
75
+ type: Boolean,
76
+ };
77
+ export const commonOptions = [
78
+ categoriesOption,
79
+ dataDirDefaultOption,
80
+ fromSessionOption,
81
+ silentOption,
82
+ verboseOption,
83
+ onlyRecentOption,
84
+ keepDirOption,
85
+ cloneOption,
86
+ commitOption,
87
+ remoteOption,
88
+ pullOption,
89
+ fetchDocumentsOption,
90
+ parseDocumentsOption,
91
+ ];
@@ -0,0 +1,36 @@
1
+ export const categoriesOption = {
2
+ alias: "k",
3
+ defaultValue: ["All"],
4
+ help: "categories of datasets to reorganize",
5
+ multiple: true,
6
+ name: "categories",
7
+ type: String,
8
+ }
9
+
10
+ export const dataDirDefaultOption = {
11
+ defaultOption: true,
12
+ help: "directory containing Sénat open data files",
13
+ name: "dataDir",
14
+ type: String,
15
+ }
16
+
17
+ export const silentOption = {
18
+ alias: "s",
19
+ help: "don't log anything",
20
+ name: "silent",
21
+ type: Boolean,
22
+ }
23
+
24
+ export const verboseOption = {
25
+ alias: "v",
26
+ help: "verbose logs",
27
+ name: "verbose",
28
+ type: Boolean,
29
+ }
30
+
31
+ export const commonOptions = [
32
+ categoriesOption,
33
+ dataDirDefaultOption,
34
+ silentOption,
35
+ verboseOption,
36
+ ]
@@ -0,0 +1,4 @@
1
+ export declare function isOptionEmptyOrHasValue(option: string, value: string): boolean;
2
+ export declare function ensureAndClearDirSync(dir: string): void;
3
+ export declare function ensureAndClearDir(path: string): void;
4
+ export declare function fetchWithRetry(url: string, retries?: number, backoff?: number): Promise<Response>;
@@ -0,0 +1,35 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ export function isOptionEmptyOrHasValue(option, value) {
4
+ return !option || option.length === 0 || option.includes(value);
5
+ }
6
+ export function ensureAndClearDirSync(dir) {
7
+ fs.ensureDirSync(dir);
8
+ for (const name of fs.readdirSync(dir)) {
9
+ fs.rmSync(path.join(dir, name), { recursive: true, force: true });
10
+ }
11
+ }
12
+ export function ensureAndClearDir(path) {
13
+ if (!fs.existsSync(path)) {
14
+ fs.mkdirSync(path, { recursive: true });
15
+ }
16
+ else {
17
+ fs.emptyDirSync(path);
18
+ }
19
+ }
20
+ export async function fetchWithRetry(url, retries = 3, backoff = 300) {
21
+ for (let attempt = 0; attempt < retries; attempt++) {
22
+ try {
23
+ return await fetch(url);
24
+ }
25
+ catch (error) {
26
+ if (attempt === retries - 1) {
27
+ throw error;
28
+ }
29
+ console.warn(`Fetch attempt ${attempt + 1} for ${url} failed. Retrying in ${backoff}ms…`);
30
+ await new Promise((resolve) => setTimeout(resolve, backoff));
31
+ backoff *= 2;
32
+ }
33
+ }
34
+ throw new Error(`Failed to fetch ${url} after ${retries} attempts`);
35
+ }
@@ -0,0 +1,33 @@
1
+ import fs from "fs-extra"
2
+
3
+ export function isOptionEmptyOrHasValue (option: string, value: string) {
4
+ return !option || option.length === 0 || option.includes(value)
5
+ }
6
+
7
+ export function ensureAndClearDir (path: string) {
8
+ if (!fs.existsSync(path)) {
9
+ fs.mkdirSync(path, { recursive: true })
10
+ } else {
11
+ fs.emptyDirSync(path)
12
+ }
13
+ }
14
+
15
+ export async function fetchWithRetry (
16
+ url: string,
17
+ retries: number = 3,
18
+ backoff: number = 300,
19
+ ): Promise<Response> {
20
+ for (let attempt = 0; attempt < retries; attempt++) {
21
+ try {
22
+ return await fetch(url)
23
+ } catch (error) {
24
+ if (attempt === retries - 1) {
25
+ throw error
26
+ }
27
+ console.warn(`Fetch attempt ${attempt + 1} for ${url} failed. Retrying in ${backoff}ms…`)
28
+ await new Promise((resolve) => setTimeout(resolve, backoff))
29
+ backoff *= 2
30
+ }
31
+ }
32
+ throw new Error(`Failed to fetch ${url} after ${retries} attempts`)
33
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import { iterLoadSenatRapports } from "../loaders";
2
+ import commandLineArgs from "command-line-args";
3
+ import { dataDirDefaultOption } from "./shared/cli_helpers";
4
+ const optionsDefinitions = [dataDirDefaultOption];
5
+ const options = commandLineArgs(optionsDefinitions);
6
+ const session = 2024;
7
+ const sinceCommit = undefined;
8
+ for (const { item: rapport } of iterLoadSenatRapports(options["dataDir"], session, {
9
+ sinceCommit: sinceCommit,
10
+ })) {
11
+ console.log(rapport);
12
+ }
@@ -0,0 +1,66 @@
1
+ export interface AmendementAuteurRow {
2
+ group_politique_code: string | null;
3
+ groupe_politique_id: number | null;
4
+ groupe_politique_libelle: string | null;
5
+ groupe_politique_libelle_court: string | null;
6
+ homonyme: string | null;
7
+ matricule: string | null;
8
+ nom: string | null;
9
+ prenom: string | null;
10
+ qualite: string | null;
11
+ rang: string | null;
12
+ }
13
+ export interface AmendementResult {
14
+ accepte_gouvernement: string | null;
15
+ alinea: number | null;
16
+ auteur_est_gouvernement: boolean;
17
+ au_nom_de_commission: string | null;
18
+ au_nom_de_groupe_politique: string | null;
19
+ auteurs: AmendementAuteurRow[];
20
+ avis_commission: string | null;
21
+ avis_gouvernement: string | null;
22
+ code_commission: string | null;
23
+ date_depot: string | null;
24
+ discussion_commune_id: number | null;
25
+ dispositif: string | null;
26
+ etat: string;
27
+ etat_texte: string | null;
28
+ etat_texte_libelle: string | null;
29
+ id: number;
30
+ identique_id: number | null;
31
+ intitule_texte: string | null;
32
+ lecture: string | null;
33
+ motion_libelle: string | null;
34
+ nature: string;
35
+ nature_texte: string | null;
36
+ nature_texte_libelle: string | null;
37
+ numero: string;
38
+ numero_absolu: string | null;
39
+ numero_adoption_texte: string | null;
40
+ numero_texte: string | null;
41
+ objet: string | null;
42
+ observations: string | null;
43
+ observations_additionnelles: string | null;
44
+ ordre: number | null;
45
+ parent_id: number | null;
46
+ revision: string | null;
47
+ session: string;
48
+ session_libelle: string;
49
+ signet_dossier_legislatif: string | null;
50
+ sort: string | null;
51
+ scrutin_num: string | null;
52
+ subdivision_commission_id: number | null;
53
+ subdivision_dupliquee: string | null;
54
+ subdivision_libelle: string | null;
55
+ subdivision_libelle_court: string | null;
56
+ subdivision_mere_id: number | null;
57
+ subdivision_position_discussion: number | null;
58
+ subdivision_position_texte: number | null;
59
+ subdivision_signet: string | null;
60
+ subdivision_type: string | null;
61
+ texte_id: number | null;
62
+ type_rectification: string | null;
63
+ type_session: string | null;
64
+ type_texte: string | null;
65
+ url: string;
66
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,43 @@
1
+ import "dotenv/config";
2
+ import { z } from "zod";
3
+ export declare const dbSchema: z.ZodObject<{
4
+ host: z.ZodString;
5
+ name: z.ZodString;
6
+ password: z.ZodString;
7
+ port: z.ZodCoercedNumber<unknown>;
8
+ user: z.ZodString;
9
+ }, z.core.$strip>;
10
+ export type DbConfig = z.infer<typeof dbSchema>;
11
+ export declare const configSchema: z.ZodObject<{
12
+ db: z.ZodObject<{
13
+ host: z.ZodString;
14
+ name: z.ZodString;
15
+ password: z.ZodString;
16
+ port: z.ZodCoercedNumber<unknown>;
17
+ user: z.ZodString;
18
+ }, z.core.$strip>;
19
+ stagingDb: z.ZodObject<{
20
+ host: z.ZodString;
21
+ name: z.ZodString;
22
+ password: z.ZodString;
23
+ port: z.ZodCoercedNumber<unknown>;
24
+ user: z.ZodString;
25
+ }, z.core.$strip>;
26
+ }, z.core.$strip>;
27
+ declare const _default: {
28
+ db: {
29
+ host: string;
30
+ name: string;
31
+ password: string;
32
+ port: number;
33
+ user: string;
34
+ };
35
+ stagingDb: {
36
+ host: string;
37
+ name: string;
38
+ password: string;
39
+ port: number;
40
+ user: string;
41
+ };
42
+ };
43
+ export default _default;
@@ -0,0 +1,37 @@
1
+ import "dotenv/config";
2
+ import { z } from "zod";
3
+ export const dbSchema = z.object({
4
+ host: z.string().trim().min(1, "Must not be empty"),
5
+ name: z.string().trim().min(1, "Must not be empty"),
6
+ password: z.string().trim().min(1, "Must not be empty"),
7
+ port: z.coerce.number().int().min(0).max(65535),
8
+ user: z.string().trim().min(1, "Must not be empty"),
9
+ });
10
+ export const configSchema = z.object({
11
+ db: dbSchema,
12
+ stagingDb: dbSchema,
13
+ });
14
+ const config = {
15
+ db: {
16
+ host: process.env["DB_HOST"] || "localhost",
17
+ name: process.env["DB_NAME"] || "senat",
18
+ password: process.env["DB_PASSWORD"] || "opendata",
19
+ port: process.env["DB_PORT"] || 5432,
20
+ user: process.env["DB_USER"] || "opendata",
21
+ },
22
+ stagingDb: {
23
+ host: process.env["STAGING_DB_HOST"] || process.env["DB_HOST"] || "localhost",
24
+ name: process.env["STAGING_DB_NAME"] || "senat_staging",
25
+ password: process.env["STAGING_DB_PASSWORD"] || process.env["DB_PASSWORD"] || "opendata",
26
+ port: process.env["STAGING_DB_PORT"] || process.env["DB_PORT"] || 5432,
27
+ user: process.env["STAGING_DB_USER"] || process.env["DB_USER"] || "opendata",
28
+ },
29
+ };
30
+ const result = configSchema.safeParse(config);
31
+ if (!result.success) {
32
+ const issues = JSON.stringify(result.error.issues, null, 2);
33
+ const serializedConfig = JSON.stringify(config, null, 2);
34
+ console.error(`Error in configuration:\n${serializedConfig}\nError:\n${issues}`);
35
+ process.exit(-1);
36
+ }
37
+ export default result.data;
@@ -0,0 +1,11 @@
1
+ export interface SenatMetadata {
2
+ number: string | null;
3
+ session: string | null;
4
+ date: string | null;
5
+ type: string | null;
6
+ authors: string | null;
7
+ title: string | null;
8
+ commission: string | null;
9
+ }
10
+ export declare function extractMetadata(xmlDoc: Document): SenatMetadata;
11
+ export declare function convertSenatXmlToHtml(texteXml: string, outputFilePath: string): Promise<void>;