@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,2 @@
1
+ /* tslint:disable */
2
+ export {};
@@ -0,0 +1,45 @@
1
+ export interface AgendaEvent {
2
+ id: string;
3
+ type: string | null;
4
+ date: string;
5
+ startTime: string | null;
6
+ endTime: string | null;
7
+ timeOriginal: string | null;
8
+ titre: string;
9
+ organe: string | null;
10
+ objet: string | null;
11
+ lieu: string | null;
12
+ captationVideo: boolean;
13
+ urlDossierSenat: string | null;
14
+ quantieme: string | null;
15
+ }
16
+ export type TimeSlot = "MATIN" | "APRES-MIDI" | "SOIR" | "UNKNOWN";
17
+ export interface Reunion {
18
+ uid: string;
19
+ chambre: "SN";
20
+ date: string;
21
+ startTime: string | null;
22
+ endTime: string | null;
23
+ captationVideo: boolean;
24
+ titre: string;
25
+ type: string;
26
+ organe?: string;
27
+ objet?: string;
28
+ lieu?: string;
29
+ events: AgendaEvent[];
30
+ compteRenduRefUid?: string;
31
+ transcriptionRef?: string;
32
+ urlVideo?: string;
33
+ urlPageVideo?: string;
34
+ timecodeDebutVideo?: number;
35
+ timecodeFinVideo?: number;
36
+ odj?: ReunionOdj;
37
+ }
38
+ export interface ReunionOdjPoint {
39
+ objet: string | null;
40
+ dossierLegislatifRef: string | null;
41
+ codeEtape: string | null;
42
+ }
43
+ export interface ReunionOdj {
44
+ pointsOdj: ReunionOdjPoint[];
45
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,83 @@
1
+ export interface CompteRendu {
2
+ uid: string;
3
+ seanceRef: string;
4
+ sessionRef: string;
5
+ metadonnees: Metadonnees;
6
+ contenu: Contenu;
7
+ }
8
+ export interface Metadonnees {
9
+ dateSeance: string;
10
+ dateSeanceJour: string;
11
+ numSeanceJour: string;
12
+ numSeance: string;
13
+ typeAssemblee: "AN" | "SN";
14
+ legislature: string;
15
+ session: string;
16
+ nomFichierJo: string;
17
+ validite: string;
18
+ etat: string;
19
+ diffusion: string;
20
+ version: string;
21
+ environnement: string;
22
+ heureGeneration: Date;
23
+ sommaire?: Sommaire;
24
+ }
25
+ export interface Contenu {
26
+ quantiemes: Quantiemes;
27
+ ouvertureSeance?: Point[] | Point;
28
+ point: Point[] | Point;
29
+ finSeance?: FinSeance;
30
+ paragraphe?: Point[];
31
+ }
32
+ export interface FinSeance {
33
+ point: Point;
34
+ }
35
+ export interface Quantiemes {
36
+ journee: string;
37
+ session: string;
38
+ }
39
+ export interface Point {
40
+ ordre_absolu_seance: string;
41
+ code_grammaire: string;
42
+ roledebat?: string;
43
+ orateurs?: {
44
+ orateur: {
45
+ nom: string;
46
+ id: string;
47
+ qualite: string;
48
+ };
49
+ };
50
+ texte: {
51
+ _: string;
52
+ };
53
+ code_style?: string;
54
+ }
55
+ export interface Texte {
56
+ _?: string;
57
+ id_syceron?: string;
58
+ stime?: string;
59
+ sup?: string;
60
+ lienAdt?: Texte[] | Texte;
61
+ }
62
+ export interface Sommaire {
63
+ presidentSeance: Texte;
64
+ sommaire1: SommaireElement[] | SommaireElement;
65
+ sommaire3?: SommaireElement[] | SommaireElement;
66
+ sommaire2?: SommaireElement[] | SommaireElement;
67
+ para?: Texte[] | Texte;
68
+ }
69
+ export interface SommaireElement {
70
+ valeur_pts_odj: string | undefined;
71
+ titreStruct: TitreStruct;
72
+ para?: Array<Texte | string> | Texte;
73
+ sommaire2?: SommaireElement[] | SommaireElement;
74
+ sommaire3?: SommaireElement[] | SommaireElement;
75
+ presidentSeance?: Texte[] | Texte;
76
+ type_debat?: string;
77
+ }
78
+ export interface TitreStruct {
79
+ id_syceron: string;
80
+ intitule?: string;
81
+ sousIntitule?: string;
82
+ type_debat?: string;
83
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -39,13 +39,6 @@ function getDateSortValue(value) {
39
39
  function compareByDate(left, right) {
40
40
  return getDateSortValue(left.date) - getDateSortValue(right.date);
41
41
  }
42
- function getCommissionCodeActe(phasePrefix, rapportType) {
43
- const normalizedType = (rapportType || "").toLowerCase();
44
- if (normalizedType.includes("avis") || normalizedType.includes("information")) {
45
- return `${phasePrefix}-COM-AVIS`;
46
- }
47
- return `${phasePrefix}-COM-FOND`;
48
- }
49
42
  function getPhasePrefix(lecture, assemblee, codeNatureDossier) {
50
43
  if (assemblee !== "Sénat")
51
44
  return null;
@@ -0,0 +1,6 @@
1
+ export declare const UNDEFINED_SESSION = 0;
2
+ export declare const sessionOptions: readonly [1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026];
3
+ export declare const sessionOptionsOrAll: readonly [0, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026];
4
+ export type Session = (typeof sessionOptions)[number];
5
+ export type SessionOrAll = (typeof sessionOptionsOrAll)[number];
6
+ export declare function getSessionsFromStart(startSession: SessionOrAll): (1958 | 1959 | 1960 | 1961 | 1962 | 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1969 | 1970 | 1971 | 1972 | 1973 | 1974 | 1975 | 1976 | 1977 | 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 1986 | 1987 | 1988 | 1989 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026)[];
@@ -0,0 +1,19 @@
1
+ export const UNDEFINED_SESSION = 0;
2
+ export const sessionOptions = [
3
+ 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976,
4
+ 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
5
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
6
+ 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026,
7
+ // TO COMPLETE EVERY YEAR :)
8
+ ];
9
+ export const sessionOptionsOrAll = [UNDEFINED_SESSION, ...sessionOptions];
10
+ export function getSessionsFromStart(startSession) {
11
+ if (startSession === UNDEFINED_SESSION) {
12
+ return Array.from(sessionOptions);
13
+ }
14
+ const sessionIndex = sessionOptions.findIndex((session) => startSession === session);
15
+ if (sessionIndex >= 0) {
16
+ return sessionOptions.slice(sessionIndex);
17
+ }
18
+ return [];
19
+ }
@@ -0,0 +1,72 @@
1
+ import { DocumentResult } from "../documents.js";
2
+ export declare enum DivisionType {
3
+ tome = 1,
4
+ part = 2,
5
+ book = 3,
6
+ title = 4,
7
+ subtitle = 5,
8
+ chapter = 6,
9
+ section = 7,
10
+ subsection = 8,
11
+ paragraph = 9,
12
+ article = 10,
13
+ alinea = 11,
14
+ division = 12
15
+ }
16
+ export type DivisionTag = keyof typeof DivisionType;
17
+ export interface DocumentMetadata {
18
+ name: string;
19
+ session: number | null | undefined;
20
+ date?: string | null;
21
+ url_expose_des_motifs?: URL;
22
+ url_xml?: URL;
23
+ url_html: URL;
24
+ url_pdf: URL;
25
+ }
26
+ export interface FlatTexte extends Partial<DocumentResult> {
27
+ titre: string | null;
28
+ titre_court: string | null;
29
+ url_dossier_senat: string | null;
30
+ url_dossier_assemblee: string | null;
31
+ date_presentation: Date | null;
32
+ date_depot: Date | null;
33
+ date_publication_xml: Date | null;
34
+ version: Version | null;
35
+ divisions: Division[];
36
+ expose_motifs?: ExposeDesMotifs | null;
37
+ }
38
+ export type Version = "RECT" | "RECT_BIS" | "RECT_TER" | "RECT_QUATER" | "RECT_QUINQUIES";
39
+ export interface Step {
40
+ eId: string;
41
+ date: Date | null;
42
+ type: string | null;
43
+ session: string | null;
44
+ numero: string | null;
45
+ version: Version | null;
46
+ outcome: string | null;
47
+ }
48
+ export interface Division {
49
+ index: number;
50
+ eId: string;
51
+ tag: DivisionTag;
52
+ level: number;
53
+ headings: DivisionContent[];
54
+ }
55
+ export interface Article extends Division {
56
+ alineas: Alinea[];
57
+ }
58
+ export interface DivisionContent {
59
+ text: string | null;
60
+ html?: string | null;
61
+ }
62
+ export interface Alinea extends DivisionContent {
63
+ eId: string;
64
+ heading: DivisionContent;
65
+ pastille: string | null;
66
+ text_avec_liens?: string | null;
67
+ html_avec_liens?: string | null;
68
+ }
69
+ export interface ExposeDesMotifs {
70
+ text: string | null;
71
+ html: string | null;
72
+ }
@@ -0,0 +1,15 @@
1
+ export var DivisionType;
2
+ (function (DivisionType) {
3
+ DivisionType[DivisionType["tome"] = 1] = "tome";
4
+ DivisionType[DivisionType["part"] = 2] = "part";
5
+ DivisionType[DivisionType["book"] = 3] = "book";
6
+ DivisionType[DivisionType["title"] = 4] = "title";
7
+ DivisionType[DivisionType["subtitle"] = 5] = "subtitle";
8
+ DivisionType[DivisionType["chapter"] = 6] = "chapter";
9
+ DivisionType[DivisionType["section"] = 7] = "section";
10
+ DivisionType[DivisionType["subsection"] = 8] = "subsection";
11
+ DivisionType[DivisionType["paragraph"] = 9] = "paragraph";
12
+ DivisionType[DivisionType["article"] = 10] = "article";
13
+ DivisionType[DivisionType["alinea"] = 11] = "alinea";
14
+ DivisionType[DivisionType["division"] = 12] = "division";
15
+ })(DivisionType || (DivisionType = {}));
@@ -154,12 +154,11 @@ async function convertDatasetDosLeg(dataDir, options) {
154
154
  if (options["verbose"]) {
155
155
  console.log(`Converting ${dossier["signet"]} file…`);
156
156
  }
157
- let dossierReorganizedDir = path.join(dossiersReorganizedDir, String(UNDEFINED_SESSION));
158
157
  const session = getSessionFromSignet(dossier["signet"]) || UNDEFINED_SESSION;
159
158
  if (options["fromSession"] && session < options["fromSession"]) {
160
159
  continue;
161
160
  }
162
- dossierReorganizedDir = path.join(dossiersReorganizedDir, String(session));
161
+ const dossierReorganizedDir = path.join(dossiersReorganizedDir, String(session));
163
162
  const actesBrutsNormalises = buildActesLegislatifs(dossier);
164
163
  const dossierWithActes = {
165
164
  ...dossier,
@@ -184,9 +183,8 @@ async function convertDatasetScrutins(dataDir, options) {
184
183
  if (options["verbose"]) {
185
184
  console.log(`Converting ${scrutin["numero"]} file…`);
186
185
  }
187
- let scrutinReorganizedDir = path.join(scrutinsReorganizedDir, String(UNDEFINED_SESSION));
188
186
  const session = scrutin["session"] || UNDEFINED_SESSION;
189
- scrutinReorganizedDir = path.join(scrutinsReorganizedDir, String(session));
187
+ const scrutinReorganizedDir = path.join(scrutinsReorganizedDir, String(session));
190
188
  const scrutinFileName = `${scrutin["numero"]}.json`;
191
189
  await fs.outputJSON(path.join(scrutinReorganizedDir, scrutinFileName), scrutin, {
192
190
  spaces: 2,
@@ -339,7 +337,8 @@ async function convertDatasetSens(dataDir, options) {
339
337
  for await (const organisme of findAllOrganismes()) {
340
338
  const sanitizedCode = organisme.code.trim().replace(/\s+/g, "-");
341
339
  if (sanitizedCode !== organisme.code) {
342
- console.warn(`Warning: code "${organisme.code}" contains leading/trailing or multiple consecutive whitespace characters. It has been sanitized to "${sanitizedCode}". Please check the original code for potential issues.`);
340
+ console.warn(`Warning: code "${organisme.code}" contains leading/trailing or multiple consecutive whitespace characters. ` +
341
+ `It has been sanitized to "${sanitizedCode}". Please check the original code for potential issues.`);
343
342
  }
344
343
  if (options["verbose"]) {
345
344
  console.log(`Converting ${sanitizedCode} file…`);
@@ -263,7 +263,7 @@ async function retrieveCommissionCRs(options = {}) {
263
263
  for (const f of htmlFiles) {
264
264
  const htmlPath = path.join(commissionDir, f);
265
265
  let meta;
266
- let raw = "";
266
+ let raw;
267
267
  try {
268
268
  raw = await fs.readFile(htmlPath, "utf8");
269
269
  meta = parseCommissionMetadataFromHtml(raw, f);
@@ -185,10 +185,49 @@ function runPsqlQuery(command, dataDir, options, connection, stopOnError = true)
185
185
  stdio: ["ignore", "pipe", "pipe"],
186
186
  });
187
187
  }
188
+ function sourceSchemaNames(dataset) {
189
+ if (dataset.database === "sens") {
190
+ return ["sens", "senat"];
191
+ }
192
+ return [dataset.database];
193
+ }
194
+ function inspectSourceDump(dataset, dataDir) {
195
+ const sqlFilePath = path.join(dataDir, `${dataset.database}.sql`);
196
+ if (!fs.existsSync(sqlFilePath)) {
197
+ return {
198
+ copyStatements: 0,
199
+ createTableStatements: 0,
200
+ fileSizeBytes: null,
201
+ schemaQualifiedTableStatements: 0,
202
+ sqlFilePath,
203
+ };
204
+ }
205
+ const sqlContent = fs.readFileSync(sqlFilePath, { encoding: "utf8" });
206
+ const schemaPattern = sourceSchemaNames(dataset)
207
+ .map((schemaName) => schemaName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))
208
+ .join("|");
209
+ return {
210
+ copyStatements: (sqlContent.match(/^COPY\s+/gim) ?? []).length,
211
+ createTableStatements: (sqlContent.match(/^CREATE\s+TABLE\s+/gim) ?? []).length,
212
+ fileSizeBytes: fs.statSync(sqlFilePath).size,
213
+ schemaQualifiedTableStatements: (sqlContent.match(new RegExp(`\\b(?:${schemaPattern})\\.`, "g")) ?? []).length,
214
+ sqlFilePath,
215
+ };
216
+ }
188
217
  function ensureStagingSchemaHasTables(dataset, dataDir, options, connection) {
189
218
  const stagingSchema = stagingSchemaName(dataset.database);
190
219
  const tableCount = Number.parseInt(runPsqlQuery(`SELECT count(*) FROM pg_tables WHERE schemaname = '${escapeSqlLiteral(stagingSchema)}'`, dataDir, options, connection).trim(), 10);
220
+ if (tableCount === 0) {
221
+ const dumpInspection = inspectSourceDump(dataset, dataDir);
222
+ const fileSizeLabel = dumpInspection.fileSizeBytes === null ? "missing" : `${dumpInspection.fileSizeBytes} bytes`;
223
+ console.error(`Source dump diagnostics for ${dataset.database}: file=${dumpInspection.sqlFilePath}, ` +
224
+ `size=${fileSizeLabel}, create_table=${dumpInspection.createTableStatements}, ` +
225
+ `copy=${dumpInspection.copyStatements}, ` +
226
+ `schema_refs=${dumpInspection.schemaQualifiedTableStatements}`);
227
+ }
191
228
  assert(tableCount > 0, `Staging schema ${stagingSchema} is empty after importing ${dataset.database}. ` +
229
+ "Source dump may be empty or malformed. " +
230
+ `Check /home/gitlab-runner/senat-data/${dataset.database}.sql and the upstream archive before retrying. ` +
192
231
  `Aborting incremental merge to protect ${senatSchemaName}.`);
193
232
  }
194
233
  function ensureStagingDatabase(dataDir, options, runtime) {
@@ -106,7 +106,6 @@ async function processGroupedReunion(agenda, session, dataDir, lastByVideo) {
106
106
  return;
107
107
  const ctx = await computeContext(agenda, session, dataDir);
108
108
  const skipDownload = shouldSkipDownload(agenda, ctx.baseDir);
109
- let match = null;
110
109
  let best = null;
111
110
  let secondBest = null;
112
111
  // 2) Match + download artifacts (only if not skipped)
@@ -117,7 +116,7 @@ async function processGroupedReunion(agenda, session, dataDir, lastByVideo) {
117
116
  console.log(`[warn] ${agenda.uid} No candidate found for this reunion. Probably VOD not published yet.`);
118
117
  return;
119
118
  }
120
- match = await matchAgendaToVideo({ agenda, agendaTs: ctx.agendaTs, candidates, options });
119
+ const match = await matchAgendaToVideo({ agenda, agendaTs: ctx.agendaTs, candidates, options });
121
120
  if (!match) {
122
121
  console.log(`[miss] ${agenda.uid} No match found for this reunion`);
123
122
  return;