@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,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…`);
@@ -11,6 +11,8 @@ import { assertExistingDirectory, commonOptions } from "./shared/cli_helpers.js"
11
11
  import { fetchWithRetry } from "./shared/util.js";
12
12
  import { buildReunionsByBucket } from "../utils/reunion_parsing.js";
13
13
  import { buildSenatDossierIndex, buildDoslegReunionIndex } from "../utils/reunion_odj_building.js";
14
+ import { loadPreviousManifest, saveManifest, detectChanges } from "../utils/manifest.js";
15
+ import { deleteReunionFiles } from "../utils/reunion_deletion.js";
14
16
  const optionsDefinitions = [
15
17
  ...commonOptions,
16
18
  {
@@ -52,11 +54,9 @@ async function retrieveAgendas(options, sessions) {
52
54
  for (const session of sessions) {
53
55
  const originalAgendaSessionDir = path.join(originalAgendaDir, `${session}`);
54
56
  fs.ensureDirSync(originalAgendaSessionDir);
55
- fs.emptyDirSync(originalAgendaSessionDir);
56
57
  const transformedAgendaSessionDir = path.join(transformedAgendaDir, `${session}`);
57
58
  if (options["parseAgenda"]) {
58
59
  fs.ensureDirSync(transformedAgendaSessionDir);
59
- fs.emptyDirSync(transformedAgendaSessionDir);
60
60
  }
61
61
  const fifteenDaysFromNow = new Date();
62
62
  // Don't download agendas more than 15 days in the future.
@@ -68,7 +68,8 @@ async function retrieveAgendas(options, sessions) {
68
68
  try {
69
69
  await downloadAgenda(agendaName, agendaPath);
70
70
  if (options["parseAgenda"]) {
71
- await parseAgenda(transformedAgendaSessionDir, agendaFileName, agendaPath, dossierIndex, doslegReunionIndex);
71
+ const createdUids = await parseAgenda(transformedAgendaSessionDir, agendaFileName, agendaPath, dossierIndex, doslegReunionIndex);
72
+ await processManifestAndDeletions(transformedAgendaSessionDir, agendaFileName, session, createdUids);
72
73
  }
73
74
  }
74
75
  catch (error) {
@@ -109,21 +110,54 @@ async function parseAgenda(transformedAgendaSessionDir, agendaFileName, agendaPa
109
110
  console.log(`Parsing Agenda ${agendaPath}…`);
110
111
  const parsedAgendaEvents = await parseAgendaFromFile(agendaPath);
111
112
  if (!parsedAgendaEvents?.length)
112
- return;
113
+ return [];
113
114
  const flatPath = path.join(transformedAgendaSessionDir, `${agendaFileName}.json`);
114
115
  fs.writeJSONSync(flatPath, parsedAgendaEvents, { spaces: 2 });
115
116
  const byBucket = buildReunionsByBucket(parsedAgendaEvents, dossierBySenatUrl, doslegReunionIndex);
117
+ // Collecter tous les UIDs créés
118
+ const createdUids = [];
116
119
  // SP
117
120
  if (byBucket.IDS.length > 0) {
118
121
  writeGroupsAsFiles(transformedAgendaSessionDir, byBucket.IDS);
122
+ createdUids.push(...byBucket.IDS.map((r) => r.uid));
119
123
  }
120
124
  // NON-SP
121
125
  for (const suffix of ["IDC", "IDM", "IDO", "IDI"]) {
122
126
  const groups = byBucket[suffix];
123
127
  if (groups.length > 0) {
124
128
  writeGroupsAsFiles(transformedAgendaSessionDir, groups);
129
+ createdUids.push(...groups.map((r) => r.uid));
130
+ }
131
+ }
132
+ return createdUids;
133
+ }
134
+ async function processManifestAndDeletions(transformedAgendaSessionDir, agendaFileName, session, currentUids) {
135
+ const date = agendaFileName;
136
+ const previousManifest = loadPreviousManifest(transformedAgendaSessionDir, date);
137
+ if (previousManifest) {
138
+ const changes = detectChanges(previousManifest.reunionUids, currentUids);
139
+ if (changes.new.length > 0) {
140
+ console.log(` [${date}] ${changes.new.length} nouvelle(s) réunion(s)`);
125
141
  }
142
+ if (changes.deleted.length > 0) {
143
+ console.log(` [${date}] ${changes.deleted.length} réunion(s) supprimée(s) détectée(s)`);
144
+ const deleted = deleteReunionFiles(transformedAgendaSessionDir, changes.deleted);
145
+ console.log(` [${date}] ${deleted} fichier(s) supprimé(s)`);
146
+ }
147
+ if (changes.kept.length > 0 && !options["silent"]) {
148
+ console.log(` [${date}] ${changes.kept.length} réunion(s) conservée(s)`);
149
+ }
150
+ }
151
+ else if (!options["silent"]) {
152
+ console.log(` [${date}] Premier téléchargement (${currentUids.length} réunions)`);
126
153
  }
154
+ const newManifest = {
155
+ date,
156
+ timestamp: DateTime.now().toISO() ?? "",
157
+ reunionUids: currentUids,
158
+ session,
159
+ };
160
+ saveManifest(transformedAgendaSessionDir, newManifest);
127
161
  }
128
162
  async function main() {
129
163
  const dataDir = assertExistingDirectory(options["dataDir"], "data directory");
@@ -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;
@@ -0,0 +1,104 @@
1
+ export interface FonctionRow {
2
+ date_debut: string | null;
3
+ date_fin: string | null;
4
+ libelle: string | null;
5
+ }
6
+ export interface MandatSenateurRow {
7
+ code_circonscription: string | null;
8
+ date_debut: string | null;
9
+ date_fin: string | null;
10
+ etat: string | null;
11
+ etat_debut: string | null;
12
+ etat_fin: string | null;
13
+ }
14
+ export interface MandatOrganismeRow {
15
+ code_organisme: string;
16
+ date_debut: string | null;
17
+ date_fin: string | null;
18
+ etat: string | null;
19
+ fonctions: FonctionRow[];
20
+ libelle: string | null;
21
+ type_code_organisme: string | null;
22
+ type_organisme: string | null;
23
+ }
24
+ export interface AdressePointContactRow {
25
+ bureau_distributeur: string | null;
26
+ code_cedex: string | null;
27
+ code_postal: string | null;
28
+ commune: string | null;
29
+ complement: string | null;
30
+ complement2: string | null;
31
+ libelle_cedex: string | null;
32
+ nom_voie: string | null;
33
+ numero_voie: string | null;
34
+ }
35
+ export interface TelephonePointContactRow {
36
+ numero: string | null;
37
+ type: string;
38
+ }
39
+ export interface PointContactRow {
40
+ adresses: AdressePointContactRow[];
41
+ id: string;
42
+ libelle: string | null;
43
+ telephones: TelephonePointContactRow[];
44
+ type: string;
45
+ }
46
+ export interface UrlRow {
47
+ code_url: string;
48
+ url: string;
49
+ }
50
+ export interface SenateurResult {
51
+ PCS_INSEE: string | null;
52
+ PCS_INSEE_24: string | null;
53
+ PCS_INSEE_42: string | null;
54
+ PCS_INSEE_8: string | null;
55
+ circonscription: string | null;
56
+ code_circonscription: string | null;
57
+ code_commission_permanente: string | null;
58
+ code_groupe_politique: string | null;
59
+ commission_permanente: string | null;
60
+ commissions: MandatOrganismeRow[];
61
+ courrier_electronique: string | null;
62
+ date_deces: string | null;
63
+ date_naissance: string | null;
64
+ delegations: MandatOrganismeRow[];
65
+ description_profession: string | null;
66
+ etat: string;
67
+ fonction_bureau_senat: string | null;
68
+ fonctions_bureau: FonctionRow[];
69
+ groupe_politique: string | null;
70
+ groupes: MandatOrganismeRow[];
71
+ mandats_senateur: MandatSenateurRow[];
72
+ matricule: string;
73
+ nom_usuel: string | null;
74
+ points_contact: PointContactRow[];
75
+ prenom_usuel: string;
76
+ qualite: string;
77
+ siege: string | null;
78
+ url_hatvp: string | null;
79
+ urls: UrlRow[];
80
+ }
81
+ export interface CirconscriptionResult {
82
+ article: string | null;
83
+ code: string;
84
+ date_debut: string | null;
85
+ date_fin: string | null;
86
+ etat: string | null;
87
+ identifiant: string;
88
+ libelle_departement: string;
89
+ libelle_region: string;
90
+ nombre_senateurs: string | null;
91
+ url: string | null;
92
+ }
93
+ export interface OrganismeResult {
94
+ code: string;
95
+ date_debut: string | null;
96
+ date_fin: string | null;
97
+ etat: string | null;
98
+ libelle: string | null;
99
+ libelle_court: string | null;
100
+ libelle_long: string | null;
101
+ type_code: string;
102
+ type_libelle: string | null;
103
+ url: string | null;
104
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -112,7 +112,6 @@ export async function* findAllAmendements(fromSession) {
112
112
  sql `(${eb.ref("cab.entid")} is not null)`.as("auteur_est_gouvernement"),
113
113
  // Sous-requête scalaire: numéro de scrutin
114
114
  eb
115
- .withSchema("senat")
116
115
  .selectFrom("dosleg_amescr as amescr")
117
116
  .leftJoin("dosleg_scr as scr", (join) => join.onRef("amescr.scrnum", "=", "scr.scrnum").onRef("amescr.sesann", "=", "scr.sesann"))
118
117
  .leftJoin("dosleg_date_seance as date_seance", "date_seance.code", "scr.code")
@@ -124,7 +123,6 @@ export async function* findAllAmendements(fromSession) {
124
123
  .as("scrutin_num"),
125
124
  // Sous-requête pour les auteurs
126
125
  jsonArrayFrom(eb
127
- .withSchema("senat")
128
126
  .selectFrom("ameli_amdsen as amdsen")
129
127
  .leftJoin("ameli_sen_ameli as sen_ameli", "sen_ameli.entid", "amdsen.senid")
130
128
  .leftJoin("ameli_grppol_ameli as grppol_ameli2", "grppol_ameli2.entid", "amdsen.grpid")
@@ -218,7 +218,7 @@ p.has-alinea {
218
218
  else if (child.nodeType === 1) {
219
219
  const element = child;
220
220
  const tagName = element.tagName.toLowerCase();
221
- let htmlElement = null;
221
+ let htmlElement;
222
222
  switch (tagName) {
223
223
  case "article": {
224
224
  htmlElement = htmlDoc.createElement("div");
@@ -13,7 +13,6 @@ export async function* findAll() {
13
13
  "debats.debsyn as etat_synchronisation",
14
14
  // Sections principales (PJL)
15
15
  jsonArrayFrom(eb
16
- .withSchema("senat")
17
16
  .selectFrom("debats_secdis as secdis")
18
17
  .leftJoin("debats_typsec as typsec", "typsec.typseccod", "secdis.typseccod")
19
18
  .select((eb2) => [
@@ -26,7 +25,6 @@ export async function* findAll() {
26
25
  "secdis.lecassidt as lecture_id",
27
26
  // Interventions de la section
28
27
  jsonArrayFrom(eb2
29
- .withSchema("senat")
30
28
  .selectFrom("debats_intpjl as intpjl")
31
29
  .leftJoin("dosleg_auteur as auteur", "auteur.autcod", "intpjl.autcod")
32
30
  .select([
@@ -49,7 +47,6 @@ export async function* findAll() {
49
47
  .orderBy("secdis.secdisordid", "asc")).as("sections"),
50
48
  // Sections diverses
51
49
  jsonArrayFrom(eb
52
- .withSchema("senat")
53
50
  .selectFrom("debats_secdivers as secdivers")
54
51
  .leftJoin("debats_typsec as typsec", "typsec.typseccod", "secdivers.typseccod")
55
52
  .select((eb2) => [
@@ -59,7 +56,6 @@ export async function* findAll() {
59
56
  "typsec.typseccat as categorie",
60
57
  // Interventions diverses
61
58
  jsonArrayFrom(eb2
62
- .withSchema("senat")
63
59
  .selectFrom("debats_intdivers as intdivers")
64
60
  .leftJoin("dosleg_auteur as auteur", "auteur.autcod", "intdivers.autcod")
65
61
  .select([
@@ -81,7 +77,6 @@ export async function* findAll() {
81
77
  .whereRef("secdivers.datsea", "=", "debats.datsea")).as("sections_divers"),
82
78
  // Lectures
83
79
  jsonArrayFrom(eb
84
- .withSchema("senat")
85
80
  .selectFrom("debats_lecassdeb as lecassdeb")
86
81
  .select(["lecassdeb.lecassidt as id"])
87
82
  .whereRef("lecassdeb.datsea", "=", "debats.datsea")).as("lectures"),
@@ -36,7 +36,6 @@ export async function* findAllTextes() {
36
36
  sql `${eb.ref("texte.sesann")}::int`.as("session"),
37
37
  // Auteurs
38
38
  jsonArrayFrom(eb
39
- .withSchema("senat")
40
39
  .selectFrom("dosleg_auteur as auteur")
41
40
  .leftJoin("dosleg_ecr as ecr", "ecr.autcod", "auteur.autcod")
42
41
  .leftJoin("dosleg_rolsig as rolsig", "rolsig.signataire", "ecr.signataire")
@@ -95,7 +94,6 @@ export async function* findAllRapports() {
95
94
  sql `${eb.ref("rap.sesann")}::int`.as("session"),
96
95
  // Auteurs
97
96
  jsonArrayFrom(eb
98
- .withSchema("senat")
99
97
  .selectFrom("dosleg_auteur as auteur")
100
98
  .leftJoin("dosleg_ecr as ecr", "ecr.autcod", "auteur.autcod")
101
99
  .leftJoin("dosleg_rolsig as rolsig", "rolsig.signataire", "ecr.signataire")
@@ -111,7 +109,6 @@ export async function* findAllRapports() {
111
109
  .whereRef("ecr.rapcod", "=", "rap.rapcod")).as("auteurs"),
112
110
  // Documents annexes
113
111
  jsonArrayFrom(eb
114
- .withSchema("senat")
115
112
  .selectFrom("dosleg_docatt as docatt")
116
113
  .leftJoin("dosleg_typatt as typatt", "typatt.typattcod", "docatt.typattcod")
117
114
  .select(["docatt.docatturl as url", "typatt.typattlib as type_document"])