@tricoteuses/senat 3.1.20 → 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 (363) hide show
  1. package/lib/add-js-extensions-v2.d.ts +1 -0
  2. package/lib/add-js-extensions-v2.js +23 -0
  3. package/lib/add-js-extensions.d.ts +1 -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.d.ts +1 -0
  142. package/lib/scripts/convert_data.js +354 -0
  143. package/lib/scripts/convert_data.mjs +181 -0
  144. package/lib/scripts/convert_data.ts +243 -0
  145. package/lib/scripts/data-download.d.ts +1 -0
  146. package/lib/scripts/data-download.js +12 -0
  147. package/lib/scripts/datautil.d.ts +8 -0
  148. package/lib/scripts/datautil.js +34 -0
  149. package/lib/scripts/datautil.mjs +16 -0
  150. package/lib/scripts/datautil.ts +19 -0
  151. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  152. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  153. package/lib/scripts/parse_textes.d.ts +1 -0
  154. package/lib/scripts/parse_textes.js +44 -0
  155. package/lib/scripts/parse_textes.mjs +46 -0
  156. package/lib/scripts/parse_textes.ts +65 -0
  157. package/lib/scripts/retrieve_agenda.d.ts +1 -0
  158. package/lib/scripts/retrieve_agenda.js +132 -0
  159. package/lib/scripts/retrieve_cr_commission.d.ts +1 -0
  160. package/lib/scripts/retrieve_cr_commission.js +364 -0
  161. package/lib/scripts/retrieve_cr_seance.d.ts +6 -0
  162. package/lib/scripts/retrieve_cr_seance.js +347 -0
  163. package/lib/scripts/retrieve_documents.d.ts +3 -0
  164. package/lib/scripts/retrieve_documents.js +219 -0
  165. package/lib/scripts/retrieve_documents.mjs +249 -0
  166. package/lib/scripts/retrieve_documents.ts +298 -0
  167. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  168. package/lib/scripts/retrieve_open_data.js +315 -0
  169. package/lib/scripts/retrieve_open_data.mjs +217 -0
  170. package/lib/scripts/retrieve_open_data.ts +268 -0
  171. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  172. package/lib/scripts/retrieve_senateurs_photos.js +147 -0
  173. package/lib/scripts/retrieve_senateurs_photos.mjs +147 -0
  174. package/lib/scripts/retrieve_senateurs_photos.ts +177 -0
  175. package/lib/scripts/retrieve_videos.d.ts +1 -0
  176. package/lib/scripts/retrieve_videos.js +461 -0
  177. package/lib/scripts/shared/cli_helpers.d.ts +95 -0
  178. package/lib/scripts/shared/cli_helpers.js +91 -0
  179. package/lib/scripts/shared/cli_helpers.ts +36 -0
  180. package/lib/scripts/shared/util.d.ts +4 -0
  181. package/lib/scripts/shared/util.js +35 -0
  182. package/lib/scripts/shared/util.ts +33 -0
  183. package/lib/scripts/test_iter_load.d.ts +1 -0
  184. package/lib/scripts/test_iter_load.js +12 -0
  185. package/lib/src/ameli.d.ts +66 -0
  186. package/lib/src/ameli.js +1 -0
  187. package/lib/src/config.d.ts +22 -0
  188. package/lib/src/config.js +17 -7
  189. package/lib/src/conversion_textes.js +5 -1
  190. package/lib/src/databases.d.ts +2 -1
  191. package/lib/src/databases_postgres.d.ts +4 -0
  192. package/lib/src/databases_postgres.js +23 -0
  193. package/lib/src/datasets.d.ts +4 -0
  194. package/lib/src/datasets.js +16 -2
  195. package/lib/src/db_types/ameli.d.ts +1762 -0
  196. package/lib/src/db_types/ameli.js +1074 -0
  197. package/lib/src/db_types/debats.d.ts +380 -0
  198. package/lib/src/db_types/debats.js +266 -0
  199. package/lib/src/db_types/dosleg.d.ts +2954 -0
  200. package/lib/src/db_types/dosleg.js +2005 -0
  201. package/lib/src/db_types/questions.d.ts +699 -0
  202. package/lib/src/db_types/questions.js +493 -0
  203. package/lib/src/db_types/sens.d.ts +7843 -0
  204. package/lib/src/db_types/sens.js +4691 -0
  205. package/lib/src/debats.d.ts +38 -0
  206. package/lib/src/debats.js +1 -0
  207. package/lib/src/dosleg.d.ts +142 -0
  208. package/lib/src/dosleg.js +193 -0
  209. package/lib/src/git.d.ts +1 -0
  210. package/lib/src/git.js +45 -11
  211. package/lib/src/loaders.d.ts +12 -12
  212. package/lib/src/loaders.js +14 -8
  213. package/lib/src/model/agenda.d.ts +1 -1
  214. package/lib/src/model/agenda.js +3 -3
  215. package/lib/src/model/ameli.d.ts +64 -52
  216. package/lib/src/model/ameli.js +147 -145
  217. package/lib/src/model/ameli_postgres.d.ts +67 -0
  218. package/lib/src/model/ameli_postgres.js +150 -0
  219. package/lib/src/model/commission.d.ts +5 -4
  220. package/lib/src/model/commission.js +6 -6
  221. package/lib/src/model/debats.d.ts +38 -66
  222. package/lib/src/model/debats.js +110 -93
  223. package/lib/src/model/documents.d.ts +32 -12
  224. package/lib/src/model/documents.js +171 -130
  225. package/lib/src/model/dosleg.d.ts +142 -5
  226. package/lib/src/model/dosleg.js +298 -156
  227. package/lib/src/model/index.d.ts +7 -7
  228. package/lib/src/model/index.js +7 -7
  229. package/lib/src/model/questions.d.ts +54 -45
  230. package/lib/src/model/questions.js +89 -87
  231. package/lib/src/model/scrutins.d.ts +48 -13
  232. package/lib/src/model/scrutins.js +118 -111
  233. package/lib/src/model/seance.d.ts +1 -1
  234. package/lib/src/model/seance.js +7 -7
  235. package/lib/src/model/sens.d.ts +109 -179
  236. package/lib/src/model/sens.js +384 -484
  237. package/lib/src/model/util.d.ts +0 -8
  238. package/lib/src/model/util.js +0 -23
  239. package/lib/src/other_types/manifest.d.ts +11 -0
  240. package/lib/src/other_types/manifest.js +1 -0
  241. package/lib/src/other_types/questions.d.ts +2 -0
  242. package/lib/src/other_types/questions.js +1 -0
  243. package/lib/src/questions.d.ts +53 -0
  244. package/lib/src/questions.js +1 -0
  245. package/lib/src/raw_types/ameli.d.ts +1651 -803
  246. package/lib/src/raw_types/ameli.js +1074 -5
  247. package/lib/src/raw_types/debats.d.ts +353 -180
  248. package/lib/src/raw_types/debats.js +266 -5
  249. package/lib/src/raw_types/dosleg.d.ts +2862 -1527
  250. package/lib/src/raw_types/dosleg.js +2005 -5
  251. package/lib/src/raw_types/questions.d.ts +671 -395
  252. package/lib/src/raw_types/questions.js +493 -5
  253. package/lib/src/raw_types/sens.d.ts +7743 -8148
  254. package/lib/src/raw_types/sens.js +4691 -5
  255. package/lib/src/raw_types_schemats/ameli.d.ts +4 -2
  256. package/lib/src/raw_types_schemats/debats.d.ts +2 -2
  257. package/lib/src/raw_types_schemats/dosleg.d.ts +2 -2
  258. package/lib/src/raw_types_schemats/questions.d.ts +2 -2
  259. package/lib/src/raw_types_schemats/sens.d.ts +10 -4216
  260. package/lib/src/rich_types/agenda.d.ts +45 -0
  261. package/lib/src/rich_types/agenda.js +1 -0
  262. package/lib/src/rich_types/compte_rendu.d.ts +83 -0
  263. package/lib/src/rich_types/compte_rendu.js +1 -0
  264. package/lib/src/rich_types/dosleg.js +0 -7
  265. package/lib/src/rich_types/sessions.d.ts +6 -0
  266. package/lib/src/rich_types/sessions.js +19 -0
  267. package/lib/src/rich_types/texte.d.ts +72 -0
  268. package/lib/src/rich_types/texte.js +15 -0
  269. package/lib/src/scripts/convert_data.js +4 -5
  270. package/lib/src/scripts/retrieve_agenda.js +38 -4
  271. package/lib/src/scripts/retrieve_cr_commission.js +1 -1
  272. package/lib/src/scripts/retrieve_open_data.js +39 -0
  273. package/lib/src/scripts/retrieve_videos.js +1 -2
  274. package/lib/src/sens.d.ts +104 -0
  275. package/lib/src/sens.js +1 -0
  276. package/lib/src/server/ameli.js +0 -2
  277. package/lib/src/server/conversion_textes.js +1 -1
  278. package/lib/src/server/debats.js +0 -5
  279. package/lib/src/server/documents.js +0 -3
  280. package/lib/src/server/dosleg.js +0 -11
  281. package/lib/src/server/questions.js +0 -1
  282. package/lib/src/server/scrutins.js +0 -4
  283. package/lib/src/server/sens.js +0 -17
  284. package/lib/src/types/ameli.d.ts +1761 -4
  285. package/lib/src/types/ameli.js +1074 -1
  286. package/lib/src/types/debats.d.ts +380 -2
  287. package/lib/src/types/debats.js +266 -1
  288. package/lib/src/types/dosleg.d.ts +2953 -69
  289. package/lib/src/types/dosleg.js +2005 -1
  290. package/lib/src/types/questions.d.ts +699 -2
  291. package/lib/src/types/questions.js +493 -1
  292. package/lib/src/types/sens.d.ts +7842 -9
  293. package/lib/src/types/sens.js +4691 -1
  294. package/lib/src/types/texte.d.ts +2 -2
  295. package/lib/src/utils/manifest.d.ts +6 -0
  296. package/lib/src/utils/manifest.js +37 -0
  297. package/lib/src/utils/reunion_deletion.d.ts +2 -0
  298. package/lib/src/utils/reunion_deletion.js +27 -0
  299. package/lib/strings.d.ts +1 -0
  300. package/lib/strings.js +18 -0
  301. package/lib/strings.mjs +18 -0
  302. package/lib/strings.ts +26 -0
  303. package/lib/tsconfig.tsbuildinfo +1 -0
  304. package/lib/types/agenda.d.ts +44 -0
  305. package/lib/types/agenda.js +1 -0
  306. package/lib/types/ameli.d.ts +5 -0
  307. package/lib/types/ameli.js +1 -0
  308. package/lib/types/ameli.mjs +13 -0
  309. package/lib/types/ameli.ts +21 -0
  310. package/lib/types/compte_rendu.d.ts +83 -0
  311. package/lib/types/compte_rendu.js +1 -0
  312. package/lib/types/debats.d.ts +2 -0
  313. package/lib/types/debats.js +1 -0
  314. package/lib/types/debats.mjs +2 -0
  315. package/lib/types/debats.ts +6 -0
  316. package/lib/types/dosleg.d.ts +70 -0
  317. package/lib/types/dosleg.js +1 -0
  318. package/lib/types/dosleg.mjs +151 -0
  319. package/lib/types/dosleg.ts +284 -0
  320. package/lib/types/questions.d.ts +2 -0
  321. package/lib/types/questions.js +1 -0
  322. package/lib/types/questions.mjs +1 -0
  323. package/lib/types/questions.ts +3 -0
  324. package/lib/types/sens.d.ts +10 -0
  325. package/lib/types/sens.js +1 -0
  326. package/lib/types/sens.mjs +1 -0
  327. package/lib/types/sens.ts +12 -0
  328. package/lib/types/sessions.d.ts +5 -0
  329. package/lib/types/sessions.js +84 -0
  330. package/lib/types/sessions.mjs +43 -0
  331. package/lib/types/sessions.ts +42 -0
  332. package/lib/types/texte.d.ts +74 -0
  333. package/lib/types/texte.js +16 -0
  334. package/lib/types/texte.mjs +16 -0
  335. package/lib/types/texte.ts +76 -0
  336. package/lib/typings/windows-1252.d.js +2 -0
  337. package/lib/typings/windows-1252.d.mjs +2 -0
  338. package/lib/typings/windows-1252.d.ts +11 -0
  339. package/lib/utils/cr_spliting.d.ts +28 -0
  340. package/lib/utils/cr_spliting.js +265 -0
  341. package/lib/utils/date.d.ts +10 -0
  342. package/lib/utils/date.js +100 -0
  343. package/lib/utils/nvs-timecode.d.ts +7 -0
  344. package/lib/utils/nvs-timecode.js +79 -0
  345. package/lib/utils/reunion_grouping.d.ts +9 -0
  346. package/lib/utils/reunion_grouping.js +361 -0
  347. package/lib/utils/reunion_odj_building.d.ts +5 -0
  348. package/lib/utils/reunion_odj_building.js +154 -0
  349. package/lib/utils/reunion_parsing.d.ts +23 -0
  350. package/lib/utils/reunion_parsing.js +209 -0
  351. package/lib/utils/scoring.d.ts +14 -0
  352. package/lib/utils/scoring.js +147 -0
  353. package/lib/utils/string_cleaning.d.ts +7 -0
  354. package/lib/utils/string_cleaning.js +57 -0
  355. package/lib/validators/config.d.ts +9 -0
  356. package/lib/validators/config.js +10 -0
  357. package/lib/validators/config.mjs +54 -0
  358. package/lib/validators/config.ts +79 -0
  359. package/lib/validators/senat.d.ts +0 -0
  360. package/lib/validators/senat.js +28 -0
  361. package/lib/validators/senat.mjs +24 -0
  362. package/lib/validators/senat.ts +26 -0
  363. package/package.json +30 -28
@@ -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 {};
@@ -1,5 +1,13 @@
1
1
  import "dotenv/config";
2
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>;
3
11
  export declare const configSchema: z.ZodObject<{
4
12
  db: z.ZodObject<{
5
13
  host: z.ZodString;
@@ -8,6 +16,13 @@ export declare const configSchema: z.ZodObject<{
8
16
  port: z.ZodCoercedNumber<unknown>;
9
17
  user: z.ZodString;
10
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>;
11
26
  }, z.core.$strip>;
12
27
  declare const _default: {
13
28
  db: {
@@ -17,5 +32,12 @@ declare const _default: {
17
32
  port: number;
18
33
  user: string;
19
34
  };
35
+ stagingDb: {
36
+ host: string;
37
+ name: string;
38
+ password: string;
39
+ port: number;
40
+ user: string;
41
+ };
20
42
  };
21
43
  export default _default;
package/lib/src/config.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "dotenv/config";
2
2
  import { z } from "zod";
3
- const dbSchema = z.object({
3
+ export const dbSchema = z.object({
4
4
  host: z.string().trim().min(1, "Must not be empty"),
5
5
  name: z.string().trim().min(1, "Must not be empty"),
6
6
  password: z.string().trim().min(1, "Must not be empty"),
@@ -9,19 +9,29 @@ const dbSchema = z.object({
9
9
  });
10
10
  export const configSchema = z.object({
11
11
  db: dbSchema,
12
+ stagingDb: dbSchema,
12
13
  });
13
14
  const config = {
14
15
  db: {
15
- host: process.env["TRICOTEUSES_SENAT_DB_HOST"] || "localhost",
16
- name: process.env["TRICOTEUSES_SENAT_DB_NAME"] || "postgres",
17
- password: process.env["TRICOTEUSES_SENAT_DB_PASSWORD"] || "opendata",
18
- port: process.env["TRICOTEUSES_SENAT_DB_PORT"] || 5432,
19
- user: process.env["TRICOTEUSES_SENAT_DB_USER"] || "opendata",
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",
20
28
  },
21
29
  };
22
30
  const result = configSchema.safeParse(config);
23
31
  if (!result.success) {
24
- console.error(`Error in configuration:\n${JSON.stringify(config, null, 2)}\nError:\n${JSON.stringify(result.error.issues, null, 2)}`);
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}`);
25
35
  process.exit(-1);
26
36
  }
27
37
  export default result.data;
@@ -186,7 +186,11 @@ p.has-alinea {
186
186
  <div class="header-type">${metadata.type || ""}</div>
187
187
  <div class="header-authors">${metadata.authors || ""}</div>
188
188
  ${metadata.commission
189
- ? `<div class="header-commission">Envoyée à la ${metadata.commission.toLowerCase()}, sous réserve de la constitution éventuelle d'une commission spéciale dans les conditions prévues par le Règlement.</div>`
189
+ ? [
190
+ `<div class="header-commission">Envoyée à la ${metadata.commission.toLowerCase()},`,
191
+ "sous réserve de la constitution éventuelle d'une commission spéciale dans les conditions prévues",
192
+ "par le Règlement.</div>",
193
+ ].join(" ")
190
194
  : ""}
191
195
  </div>
192
196
  <h1>${metadata.title || ""}</h1>
@@ -1,2 +1,3 @@
1
1
  import { Kysely } from "kysely";
2
- export declare const dbSenat: Kysely<any>;
2
+ import type { LooseKyselyDatabase } from "./typings/kysely-loose";
3
+ export declare const dbSenat: Kysely<LooseKyselyDatabase>;
@@ -0,0 +1,4 @@
1
+ import postgres from "postgres";
2
+ export type SqlValue = postgres.ParameterOrJSON<never>;
3
+ export declare const sql: postgres.Sql<{}>;
4
+ export declare function streamUnsafeQuery<T>(query: string, params?: readonly unknown[], batchSize?: number): AsyncGenerator<T, void, unknown>;
@@ -0,0 +1,23 @@
1
+ import postgres from "postgres";
2
+ import config from "./config.js";
3
+ export const sql = postgres({
4
+ database: config.db.name,
5
+ host: config.db.host,
6
+ password: config.db.password,
7
+ port: config.db.port,
8
+ transform: {
9
+ undefined: null,
10
+ },
11
+ user: config.db.user,
12
+ });
13
+ function toSqlValue(value) {
14
+ return value;
15
+ }
16
+ export async function* streamUnsafeQuery(query, params = [], batchSize = 100) {
17
+ const values = params.map(toSqlValue);
18
+ for await (const rows of sql.unsafe(query, values).cursor(batchSize)) {
19
+ for (const row of rows) {
20
+ yield row;
21
+ }
22
+ }
23
+ }
@@ -10,6 +10,10 @@ export interface Dataset {
10
10
  columns: string[];
11
11
  }>;
12
12
  };
13
+ mergeKeys?: {
14
+ [table: string]: string[];
15
+ };
16
+ rowMultisetMergeTables?: string[];
13
17
  }
14
18
  export interface Datasets {
15
19
  ameli: Dataset;
@@ -167,6 +167,12 @@ export const datasets = {
167
167
  { name: "idx_senmat", columns: ["senmat"] },
168
168
  ],
169
169
  },
170
+ mergeKeys: {
171
+ corscr: ["sesann", "scrnum", "corscrord"],
172
+ docsea: ["evtseacle", "docseaord"],
173
+ gen: ["gencod"],
174
+ },
175
+ rowMultisetMergeTables: ["amescr"],
170
176
  },
171
177
  questions: {
172
178
  database: "questions",
@@ -183,6 +189,7 @@ export const datasets = {
183
189
  sortquestion: [{ name: "idx_sorquecod", columns: ["sorquecod"] }],
184
190
  etatquestion: [{ name: "idx_etaquecod", columns: ["etaquecod"] }],
185
191
  },
192
+ rowMultisetMergeTables: ["tam_reponses"],
186
193
  },
187
194
  sens: {
188
195
  database: "sens",
@@ -213,12 +220,19 @@ export const datasets = {
213
220
  { name: "idx_typmancod", columns: ["typmancod"] },
214
221
  ],
215
222
  },
223
+ mergeKeys: {
224
+ activite: ["actid"],
225
+ },
216
226
  },
217
227
  };
228
+ function getEnabledDatasetByName(datasetName) {
229
+ const enabledDataset = EnabledDatasets[datasetName];
230
+ return typeof enabledDataset === "number" ? enabledDataset : undefined;
231
+ }
218
232
  export function getEnabledDatasets(categories) {
219
- categories.map((datasetName) => assert.notStrictEqual(EnabledDatasets[datasetName], undefined, `Unknown name of dataset: ${datasetName}`));
233
+ categories.map((datasetName) => assert.notStrictEqual(getEnabledDatasetByName(datasetName), undefined, `Unknown name of dataset: ${datasetName}`));
220
234
  return categories.reduce((enabledDatasets, datasetName) => {
221
- const enabledDataset = EnabledDatasets[datasetName];
235
+ const enabledDataset = getEnabledDatasetByName(datasetName);
222
236
  return enabledDatasets | (enabledDataset || EnabledDatasets.None);
223
237
  }, EnabledDatasets.None);
224
238
  }