@tricoteuses/assemblee 1.10.4 → 2.0.0

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 (275) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-79bwpkvR.js +154 -0
  3. package/lib/amendements-CV3s5a0M.js +667 -0
  4. package/lib/cleaners/index.d.ts +9 -9
  5. package/lib/cleaners.js +564 -0
  6. package/lib/datasets.d.ts +3 -3
  7. package/lib/dossiers_legislatifs.d.ts +2 -2
  8. package/lib/index.d.ts +17 -22
  9. package/lib/index.js +1542 -314
  10. package/lib/inserters.d.ts +5 -5
  11. package/lib/loaders-9mHdTl9L.js +4158 -0
  12. package/lib/loaders.d.ts +12 -12
  13. package/lib/loaders.js +29 -1689
  14. package/lib/organes.d.ts +1 -1
  15. package/lib/parse-Ccs6wcUg.js +2512 -0
  16. package/lib/parsers/index.d.ts +2 -3
  17. package/lib/parsers/plf.d.ts +1 -0
  18. package/lib/parsers/recherche_amendements.d.ts +2 -2
  19. package/lib/parsers/textes_lois.d.ts +1 -23
  20. package/lib/parsers.js +398 -0
  21. package/lib/raw_types/acteurs_et_organes.d.ts +4 -2
  22. package/lib/raw_types/debats.d.ts +2 -2
  23. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -1
  24. package/lib/schemas/acteurs_et_organes.json +1166 -0
  25. package/lib/schemas/agendas.json +1745 -0
  26. package/lib/schemas/amendements.json +2085 -0
  27. package/lib/schemas/debats.json +842 -0
  28. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  29. package/lib/schemas/legislatures.json +17 -0
  30. package/lib/schemas/questions.json +704 -0
  31. package/lib/schemas/scrutins.json +701 -0
  32. package/lib/scripts/retrieve_deputes_photos.d.ts +1 -1
  33. package/lib/types/acteurs_et_organes.d.ts +344 -2
  34. package/lib/types/agendas.d.ts +236 -10
  35. package/lib/types/amendements.d.ts +276 -1
  36. package/lib/types/debats.d.ts +52 -2
  37. package/lib/types/dossiers_legislatifs.d.ts +403 -9
  38. package/lib/types/questions.d.ts +99 -2
  39. package/lib/types/scrutins.d.ts +101 -0
  40. package/lib/urls.d.ts +2 -2
  41. package/package.json +33 -95
  42. package/lib/api.js +0 -52
  43. package/lib/api.mjs +0 -45
  44. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  45. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  46. package/lib/bugs/acteur-00010.d.ts +0 -7
  47. package/lib/bugs/acteur-00010.js +0 -116
  48. package/lib/bugs/acteur-00010.mjs +0 -26
  49. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  50. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  51. package/lib/bugs/agenda-00002.d.ts +0 -15
  52. package/lib/bugs/agenda-00002.js +0 -406
  53. package/lib/bugs/agenda-00002.mjs +0 -172
  54. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  55. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  56. package/lib/bugs/agenda-00008.d.ts +0 -7
  57. package/lib/bugs/agenda-00008.js +0 -123
  58. package/lib/bugs/agenda-00008.mjs +0 -26
  59. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  60. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  61. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  62. package/lib/bugs/agenda-00011.d.ts +0 -16
  63. package/lib/bugs/agenda-00011.js +0 -333
  64. package/lib/bugs/agenda-00011.mjs +0 -125
  65. package/lib/bugs.d.ts +0 -21
  66. package/lib/bugs.js +0 -452
  67. package/lib/bugs.mjs +0 -70
  68. package/lib/cleaners/actes_legislatifs.js +0 -315
  69. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  70. package/lib/cleaners/acteurs.js +0 -265
  71. package/lib/cleaners/acteurs.mjs +0 -180
  72. package/lib/cleaners/amendements.js +0 -294
  73. package/lib/cleaners/amendements.mjs +0 -227
  74. package/lib/cleaners/debats.js +0 -12
  75. package/lib/cleaners/debats.mjs +0 -5
  76. package/lib/cleaners/documents.js +0 -205
  77. package/lib/cleaners/documents.mjs +0 -133
  78. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  79. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  80. package/lib/cleaners/index.js +0 -70
  81. package/lib/cleaners/index.mjs +0 -10
  82. package/lib/cleaners/organes.js +0 -65
  83. package/lib/cleaners/organes.mjs +0 -48
  84. package/lib/cleaners/questions.js +0 -12
  85. package/lib/cleaners/questions.mjs +0 -5
  86. package/lib/cleaners/reunions.js +0 -312
  87. package/lib/cleaners/reunions.mjs +0 -255
  88. package/lib/cleaners/scrutins.js +0 -340
  89. package/lib/cleaners/scrutins.mjs +0 -221
  90. package/lib/cleaners/xml.js +0 -95
  91. package/lib/cleaners/xml.mjs +0 -58
  92. package/lib/datasets.js +0 -837
  93. package/lib/datasets.mjs +0 -755
  94. package/lib/dates.js +0 -124
  95. package/lib/dates.mjs +0 -100
  96. package/lib/dossiers_legislatifs.js +0 -346
  97. package/lib/dossiers_legislatifs.mjs +0 -208
  98. package/lib/file_systems.js +0 -162
  99. package/lib/file_systems.mjs +0 -62
  100. package/lib/git.js +0 -223
  101. package/lib/git.mjs +0 -151
  102. package/lib/index.mjs +0 -17
  103. package/lib/inserters.js +0 -521
  104. package/lib/inserters.mjs +0 -337
  105. package/lib/loaders.mjs +0 -886
  106. package/lib/logger.js +0 -35
  107. package/lib/logger.mjs +0 -26
  108. package/lib/organes.js +0 -22
  109. package/lib/organes.mjs +0 -15
  110. package/lib/parsers/documents.d.ts +0 -62
  111. package/lib/parsers/documents.js +0 -453
  112. package/lib/parsers/documents.mjs +0 -370
  113. package/lib/parsers/index.js +0 -40
  114. package/lib/parsers/index.mjs +0 -4
  115. package/lib/parsers/recherche_amendements.js +0 -403
  116. package/lib/parsers/recherche_amendements.mjs +0 -167
  117. package/lib/parsers/textes_lois.js +0 -307
  118. package/lib/parsers/textes_lois.mjs +0 -264
  119. package/lib/raw_types/acteurs_et_organes.js +0 -1213
  120. package/lib/raw_types/acteurs_et_organes.mjs +0 -1146
  121. package/lib/raw_types/agendas.js +0 -777
  122. package/lib/raw_types/agendas.mjs +0 -724
  123. package/lib/raw_types/amendements.js +0 -1052
  124. package/lib/raw_types/amendements.mjs +0 -993
  125. package/lib/raw_types/debats.js +0 -630
  126. package/lib/raw_types/debats.mjs +0 -573
  127. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  128. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  129. package/lib/raw_types/questions.js +0 -469
  130. package/lib/raw_types/questions.mjs +0 -416
  131. package/lib/raw_types/scrutins.js +0 -651
  132. package/lib/raw_types/scrutins.mjs +0 -598
  133. package/lib/schemas/acteur/Acteur.json +0 -56
  134. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  135. package/lib/schemas/acteur/AdressePostale.json +0 -75
  136. package/lib/schemas/acteur/Civ.json +0 -14
  137. package/lib/schemas/acteur/Collaborateur.json +0 -29
  138. package/lib/schemas/acteur/EtatCivil.json +0 -51
  139. package/lib/schemas/acteur/Ident.json +0 -40
  140. package/lib/schemas/acteur/Lieu.json +0 -66
  141. package/lib/schemas/acteur/Mandat.json +0 -192
  142. package/lib/schemas/acteur/Profession.json +0 -46
  143. package/lib/schemas/agenda/Agenda.json +0 -318
  144. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  145. package/lib/schemas/agenda/PointOdj.json +0 -82
  146. package/lib/schemas/amendement/Amendement.json +0 -246
  147. package/lib/schemas/amendement/Diff.json +0 -25
  148. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  149. package/lib/schemas/amendement/Identifiant.json +0 -62
  150. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  151. package/lib/schemas/amendement/Representation.json +0 -67
  152. package/lib/schemas/amendement/Total.json +0 -26
  153. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  154. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  155. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  156. package/lib/schemas/converted_from_type/debats.json +0 -682
  157. package/lib/schemas/converted_from_type/deputes.json +0 -26
  158. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  159. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  160. package/lib/schemas/converted_from_type/questions.json +0 -328
  161. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  162. package/lib/schemas/debat/Contenu.json +0 -75
  163. package/lib/schemas/debat/Debat.json +0 -40
  164. package/lib/schemas/debat/Metadonnees.json +0 -75
  165. package/lib/schemas/debat/Orateur.json +0 -60
  166. package/lib/schemas/debat/Point.json +0 -169
  167. package/lib/schemas/debat/Sommaire.json +0 -71
  168. package/lib/schemas/debat/SommaireElement.json +0 -108
  169. package/lib/schemas/debat/Texte.json +0 -34
  170. package/lib/schemas/document/CodeLibelle.json +0 -25
  171. package/lib/schemas/document/Document.json +0 -385
  172. package/lib/schemas/document/Indexation.json +0 -38
  173. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  174. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  175. package/lib/schemas/dossier/Agenda.json +0 -23
  176. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  177. package/lib/schemas/dossier/Decision.json +0 -25
  178. package/lib/schemas/dossier/Dossier.json +0 -124
  179. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  180. package/lib/schemas/dossier/EtudePlf.json +0 -105
  181. package/lib/schemas/dossier/Europe.json +0 -42
  182. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  183. package/lib/schemas/dossier/InfoJO.json +0 -23
  184. package/lib/schemas/dossier/Initiateur.json +0 -36
  185. package/lib/schemas/dossier/Motion.json +0 -27
  186. package/lib/schemas/dossier/Promulgation.json +0 -62
  187. package/lib/schemas/dossier/Rapporteur.json +0 -36
  188. package/lib/schemas/dossier/Texte.json +0 -47
  189. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  190. package/lib/schemas/organe/Organe.json +0 -136
  191. package/lib/schemas/organe/ViMoDe.json +0 -28
  192. package/lib/schemas/question/Auteur.json +0 -58
  193. package/lib/schemas/question/Cloture.json +0 -28
  194. package/lib/schemas/question/InfoJO.json +0 -40
  195. package/lib/schemas/question/MinAttribElement.json +0 -30
  196. package/lib/schemas/question/Question.json +0 -172
  197. package/lib/schemas/question/Renouvellement.json +0 -17
  198. package/lib/schemas/question/Signalement.json +0 -21
  199. package/lib/schemas/question/Texte.json +0 -24
  200. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  201. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  202. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  203. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  204. package/lib/schemas/scrutin/Scrutin.json +0 -187
  205. package/lib/schemas/scrutin/Votant.json +0 -37
  206. package/lib/scripts/bugs_helper.d.ts +0 -13
  207. package/lib/scripts/bugs_helper.js +0 -595
  208. package/lib/scripts/bugs_helper.mjs +0 -251
  209. package/lib/scripts/clean_reorganized_data.js +0 -610
  210. package/lib/scripts/clean_reorganized_data.mjs +0 -273
  211. package/lib/scripts/diff_amendements.js +0 -249
  212. package/lib/scripts/diff_amendements.mjs +0 -202
  213. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  214. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  215. package/lib/scripts/get_today_reunions.js +0 -37
  216. package/lib/scripts/get_today_reunions.mjs +0 -31
  217. package/lib/scripts/merge_scrutins.js +0 -97
  218. package/lib/scripts/merge_scrutins.mjs +0 -47
  219. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  220. package/lib/scripts/parse_textes_lois.js +0 -171
  221. package/lib/scripts/parse_textes_lois.mjs +0 -140
  222. package/lib/scripts/process_open_dataset.js +0 -301
  223. package/lib/scripts/process_open_dataset.mjs +0 -134
  224. package/lib/scripts/raw_types_from_amendements.js +0 -135
  225. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  226. package/lib/scripts/reorganize_data.js +0 -805
  227. package/lib/scripts/reorganize_data.mjs +0 -517
  228. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  229. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  230. package/lib/scripts/retrieve_documents.js +0 -547
  231. package/lib/scripts/retrieve_documents.mjs +0 -242
  232. package/lib/scripts/retrieve_open_data.js +0 -107
  233. package/lib/scripts/retrieve_open_data.mjs +0 -26
  234. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  235. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  236. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  237. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  238. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  239. package/lib/scripts/retrieve_textes_lois.js +0 -240
  240. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  241. package/lib/scripts/shared/cli_helpers.js +0 -89
  242. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  243. package/lib/scripts/test_iter_load.js +0 -155
  244. package/lib/scripts/test_iter_load.mjs +0 -72
  245. package/lib/scripts/test_load.js +0 -26
  246. package/lib/scripts/test_load.mjs +0 -16
  247. package/lib/scripts/test_load_big_files.js +0 -26
  248. package/lib/scripts/test_load_big_files.mjs +0 -16
  249. package/lib/scripts/validate_json.js +0 -353
  250. package/lib/scripts/validate_json.mjs +0 -184
  251. package/lib/shared_types/codes_actes.js +0 -231
  252. package/lib/shared_types/codes_actes.mjs +0 -224
  253. package/lib/strings.js +0 -16
  254. package/lib/strings.mjs +0 -7
  255. package/lib/types/acteurs_et_organes.js +0 -963
  256. package/lib/types/acteurs_et_organes.mjs +0 -904
  257. package/lib/types/agendas.js +0 -628
  258. package/lib/types/agendas.mjs +0 -575
  259. package/lib/types/amendements.js +0 -899
  260. package/lib/types/amendements.mjs +0 -842
  261. package/lib/types/debats.js +0 -619
  262. package/lib/types/debats.mjs +0 -562
  263. package/lib/types/dossiers_legislatifs.js +0 -1188
  264. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  265. package/lib/types/legislatures.js +0 -17
  266. package/lib/types/legislatures.mjs +0 -10
  267. package/lib/types/questions.js +0 -454
  268. package/lib/types/questions.mjs +0 -401
  269. package/lib/types/scrutins.js +0 -556
  270. package/lib/types/scrutins.mjs +0 -503
  271. package/lib/urls.js +0 -325
  272. package/lib/urls.mjs +0 -258
  273. /package/lib/{bugs/acteur-00010/plugin.test.d.ts → scripts/add_links_to_documents.d.ts} +0 -0
  274. /package/lib/{bugs/agenda-00002/plugin.test.d.ts → scripts/copy-schemas.d.ts} +0 -0
  275. /package/lib/{bugs/agenda-00008/plugin.test.d.ts → scripts/generate-json-schemas.d.ts} +0 -0
@@ -1,3 +1,2 @@
1
- export { parseTexteLoi, retrieveTexteLoiParsed } from "./documents";
2
- export { parseTexte } from "./textes_lois";
3
- export { iterRechercheAmendements, iterRechercheRawAmendements, } from "./recherche_amendements";
1
+ export { parseTexte } from './textes_lois';
2
+ export { iterRechercheAmendements, iterRechercheRawAmendements, } from './recherche_amendements';
@@ -0,0 +1 @@
1
+ export declare function parseTexte(assembleeUrl: string, page: string): any;
@@ -1,5 +1,5 @@
1
- import { Amendement as RawAmendement } from "../raw_types/amendements";
2
- import { Amendement } from "../types/amendements";
1
+ import { Amendement as RawAmendement } from '../raw_types/amendements';
2
+ import { Amendement } from '../types/amendements';
3
3
  export declare function iterRechercheAmendements(amendementsSearchCacheDir: string, url: string, incremental: boolean, minDateDepot?: string | null, minDateExamen?: string | null, options?: {
4
4
  silent?: boolean;
5
5
  verbose?: boolean;
@@ -1,23 +1 @@
1
- export declare function parseTexte(assembleeUrl: string, page: string): {
2
- error: {
3
- code: number;
4
- message: string;
5
- };
6
- html: string;
7
- page: string;
8
- subdivisions?: undefined;
9
- url?: undefined;
10
- } | {
11
- error: null;
12
- html: string;
13
- page: string;
14
- subdivisions: {
15
- id: string;
16
- type: string;
17
- niveau: number;
18
- niveauRelatif: number;
19
- titres: object[];
20
- alineas: object[];
21
- }[];
22
- url: string;
23
- };
1
+ export declare function parseTexte(assembleeUrl: string, page: string): any;
package/lib/parsers.js ADDED
@@ -0,0 +1,398 @@
1
+ import e from "node:assert";
2
+ import { JSDOM as z } from "jsdom";
3
+ import { t as Q, a as v, p as k, q as J } from "./parse-Ccs6wcUg.js";
4
+ import Z from "deep-equal";
5
+ import q from "fs-extra";
6
+ import K from "front-matter";
7
+ import W from "js-yaml";
8
+ import F from "node:path";
9
+ import { parse as X } from "node-html-parser";
10
+ import { d as G } from "./amendements-79bwpkvR.js";
11
+ import { C as ee } from "./amendements-CV3s5a0M.js";
12
+ function te(i) {
13
+ const t = [
14
+ { regex: /^(RAPPORT_)?ANNEXE(_|$)|^ETAT_/, level: 0, name: "Annexe" },
15
+ { regex: /^TOME_/, level: 1, name: "Tome" },
16
+ {
17
+ regex: /^PARTIE_|^(PREMIERE|SECONDE|DEUXIEME|TROISIEME|QUATRIEME)_PARTIE(_|$)/,
18
+ level: 2,
19
+ name: "Partie"
20
+ },
21
+ { regex: /^LIVRE_/, level: 3, name: "Livre" },
22
+ { regex: /^TITRE_/, level: 4, name: "Titre" },
23
+ { regex: /^SOUSTITRE_/, level: 5, name: "SousTitre" },
24
+ { regex: /^CHAPITRE_/, level: 6, name: "Chapitre" },
25
+ { regex: /^SECTION_/, level: 7, name: "Section" },
26
+ { regex: /^SOUSSECTION_/, level: 8, name: "SousSection" },
27
+ { regex: /^EXPOSE_DES_MOTIFS$/, level: 9, name: "ExposeMotifs" },
28
+ { regex: /^ARTICLES?(?!.*«)/, level: 9, name: "Article" },
29
+ { regex: /^(PROJET|PROPOSITION)_DE_LOI(_|$)/, level: -1, name: "PPL" },
30
+ { regex: /^PROPOSITION_DE_RESOLUTION(_|$)/, level: -1, name: "PR" },
31
+ {
32
+ regex: /^JEUX_OLYMPIQUES_ET_PARALYMPIQUES_DE_2024$/,
33
+ level: -1,
34
+ name: "JO"
35
+ },
36
+ {
37
+ regex: /^TEXTE_DE_LA_COMMISSION_MIXTE_PARITAIRE$/,
38
+ level: -1,
39
+ name: "CMP"
40
+ }
41
+ ];
42
+ for (const { regex: a, level: r, name: m } of t)
43
+ if (a.test(i))
44
+ return [r, m];
45
+ return [null, ""];
46
+ }
47
+ function P(i) {
48
+ return i?.replace(/[\n\t]+/g, "").trim() || "";
49
+ }
50
+ const ne = [
51
+ /^Délibéré en séance publique/,
52
+ /^Fait le/,
53
+ /^La Présidente,$/,
54
+ /^Le Président,$/,
55
+ /^Signé/
56
+ ];
57
+ function ae(i) {
58
+ return ne.some((t) => t.test(i));
59
+ }
60
+ function he(i, t) {
61
+ const a = t.replace(/(<style[\w\W]+style>)/g, ""), { window: r } = new z(a), m = r.document;
62
+ e.strictEqual(m.children.length, 1);
63
+ const d = m.children[0];
64
+ e.strictEqual(d.children.length, 2);
65
+ const u = d.children[1];
66
+ let n = u.children?.[1];
67
+ if (u.children.length < 3 || n.tagName !== "BR")
68
+ return {
69
+ error: null,
70
+ subdivisions: [],
71
+ url: i
72
+ };
73
+ e.strictEqual(u.children[0].tagName, "DIV");
74
+ let o = null, s = !1, f = null, l = "section";
75
+ const c = [], S = [];
76
+ let p = [], g = [];
77
+ try {
78
+ for (; l !== null; )
79
+ switch (l) {
80
+ case "section":
81
+ n.nextElementSibling ? (n = n.nextElementSibling, n.tagName === "DIV" ? (o = n.firstElementChild, o && !n.id.includes("ftn") && (l = "alineaElement")) : e(
82
+ ["BR", "HR", "P"].includes(n.tagName),
83
+ `Unexpected tag name "${n.tagName}" for body child section`
84
+ )) : l = null;
85
+ break;
86
+ case "alineaElement":
87
+ if (!o) {
88
+ l = "nextAlineaElement";
89
+ break;
90
+ }
91
+ switch (o.tagName) {
92
+ case "DIV":
93
+ case "OL":
94
+ case "BR":
95
+ case "SPAN":
96
+ l = "nextAlineaElement";
97
+ break;
98
+ case "H4":
99
+ case "P":
100
+ case "TABLE":
101
+ break;
102
+ default:
103
+ return {
104
+ error: {
105
+ code: -2,
106
+ message: `Unexpected tag name for alinea element: ${o.tagName}`
107
+ }
108
+ };
109
+ }
110
+ const E = P(o.textContent).normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/\(nouveau\)/, "").replace(/\(Pour coordination\)/, "").replace(/\(Supprimés?\)/, "").replace(/ /g, " ").replace(/[\-,.…]/g, "").trim().replace(/ {1,}/g, "_").toUpperCase(), [x, T] = te(E);
111
+ if (!E || x !== null && x < 0) {
112
+ l = "nextAlineaElement";
113
+ break;
114
+ }
115
+ const h = P(o.outerHTML), $ = P(o.textContent);
116
+ if (x === null) {
117
+ if (ae($)) {
118
+ l = "nextAlineaElement";
119
+ break;
120
+ }
121
+ g.length === 0 || s && p.length === 0 ? g.push({ texte: $, html: h }) : p.push({ texte: $, html: h }), s && g.length >= 2 && (s = !1);
122
+ } else {
123
+ for (f = x; c.length > 0 && f < c[c.length - 1]; )
124
+ c.pop();
125
+ (c.length === 0 || f > c[c.length - 1]) && c.push(f), p = [], g = [{ texte: $, html: h }], s = !E.match(/^ARTICLES?_/) && !E.match(/^EXPOSE_DES_MOTIFS$/), S.push({
126
+ id: `D_${E}`,
127
+ type: T,
128
+ niveau: f + 1,
129
+ niveauRelatif: c.length,
130
+ titres: g,
131
+ alineas: p
132
+ });
133
+ }
134
+ l = "nextAlineaElement";
135
+ break;
136
+ case "nextAlineaElement":
137
+ if (!o) {
138
+ l = "section";
139
+ break;
140
+ }
141
+ o = o.nextElementSibling, l = o ? "alineaElement" : "section";
142
+ break;
143
+ default:
144
+ throw new Error(`Unexpected state: ${l}`);
145
+ }
146
+ const w = {
147
+ error: null,
148
+ subdivisions: S,
149
+ url: i
150
+ };
151
+ return p = [], g = [], w;
152
+ } finally {
153
+ r.close();
154
+ }
155
+ }
156
+ function j(i, t) {
157
+ const a = Q(i, t?.in);
158
+ if (isNaN(+a))
159
+ throw new RangeError("Invalid time value");
160
+ const r = t?.format ?? "extended", m = t?.representation ?? "complete";
161
+ let d = "", u = "";
162
+ const n = r === "extended" ? "-" : "", o = r === "extended" ? ":" : "";
163
+ if (m !== "time") {
164
+ const s = v(a.getDate(), 2), f = v(a.getMonth() + 1, 2);
165
+ d = `${v(a.getFullYear(), 4)}${n}${f}${n}${s}`;
166
+ }
167
+ if (m !== "date") {
168
+ const s = a.getTimezoneOffset();
169
+ if (s !== 0) {
170
+ const g = Math.abs(s), w = v(Math.trunc(g / 60), 2), E = v(g % 60, 2);
171
+ u = `${s < 0 ? "+" : "-"}${w}:${E}`;
172
+ } else
173
+ u = "Z";
174
+ const f = v(a.getHours(), 2), l = v(a.getMinutes(), 2), c = v(a.getSeconds(), 2), S = d === "" ? "" : "T", p = [f, l, c].join(o);
175
+ d = `${d}${S}${p}${u}`;
176
+ }
177
+ return d;
178
+ }
179
+ async function* Se(i, t, a, r, m, d = {}) {
180
+ for await (const [
181
+ u,
182
+ n
183
+ ] of le(
184
+ i,
185
+ t,
186
+ a,
187
+ r,
188
+ m,
189
+ d
190
+ ))
191
+ G(n), yield [
192
+ u,
193
+ ee.toAmendement(JSON.stringify(n))
194
+ ];
195
+ }
196
+ async function* le(i, t, a, r, m, d = {}) {
197
+ await q.ensureDir(i), e.strictEqual(
198
+ /[?&]date_depot=/.exec(t),
199
+ null,
200
+ `URL ${t} already contains a deposit date`
201
+ ), e.strictEqual(
202
+ /[?&]order=/.exec(t),
203
+ null,
204
+ `URL ${t} already contains a sort order`
205
+ ), e.strictEqual(
206
+ /[?&]page=/.exec(t),
207
+ null,
208
+ `URL ${t} already contains a page number`
209
+ ), a && e.notStrictEqual(
210
+ /[?&]etat=/.exec(t),
211
+ null,
212
+ `In incremental mode, URL ${t} must contain an "etat" query parameter`
213
+ ), t += (t.includes("?") ? "&" : "?") + "order=date_depot,desc&page=1", r != null && e.notStrictEqual(
214
+ /\d{4}-\d{2}-\d{2}/.exec(r),
215
+ null,
216
+ `Invalid format for minimum date: ${r}`
217
+ );
218
+ let u = 0;
219
+ e: for (; ; ) {
220
+ d.verbose && console.log(`Fetching amendements search page at ${t}…`);
221
+ const n = await fetch(t);
222
+ e(
223
+ n.ok,
224
+ `Retrieval of search page at ${t} failed with error: ${n.status} ${n.statusText}`
225
+ );
226
+ const o = await n.text(), s = X(o);
227
+ if (s.querySelector("div.no-result") !== null)
228
+ break;
229
+ const f = s.querySelector("div.mirror-card-subtitle");
230
+ e.notStrictEqual(f, null);
231
+ const l = parseInt(/\d+/.exec(f.text)[0]), c = s.querySelector(
232
+ "div.amendement-list--results-table"
233
+ );
234
+ e.notStrictEqual(c, null);
235
+ const S = c.querySelector("table");
236
+ e.notStrictEqual(S, null);
237
+ const p = S.querySelector("tfoot > tr");
238
+ e.notStrictEqual(p, null);
239
+ const g = p.querySelectorAll("td, th").map((T) => T.text);
240
+ e(
241
+ Z(g, [
242
+ "",
243
+ "n°",
244
+ "Dossier législatif",
245
+ "Emplacement",
246
+ "Auteur",
247
+ "État",
248
+ "Sort",
249
+ "Date d'examen",
250
+ "Examiné par",
251
+ "Texte visé",
252
+ "Date de dépôt"
253
+ ]),
254
+ `Unexpected columns in ${JSON.stringify(g, null, 2)}`
255
+ );
256
+ const w = S.querySelectorAll("tbody > tr");
257
+ e.notStrictEqual(w.length, 0);
258
+ for (const T of w) {
259
+ if (u++, r != null || m != null) {
260
+ const b = T.querySelectorAll("td");
261
+ if (e.strictEqual(
262
+ b.length,
263
+ 11,
264
+ `Unexpected number of columns in amendment row: ${T.outerHTML}`
265
+ ), r != null) {
266
+ const R = b[10];
267
+ if (j(
268
+ k(R.text, "d MMMM y", /* @__PURE__ */ new Date(), {
269
+ locale: J
270
+ }),
271
+ { representation: "date" }
272
+ ) < r)
273
+ break e;
274
+ }
275
+ if (m != null) {
276
+ const R = b[7];
277
+ if (R.text && j(
278
+ k(R.text, "d MMMM y", /* @__PURE__ */ new Date(), {
279
+ locale: J
280
+ }),
281
+ { representation: "date" }
282
+ ) < m)
283
+ continue;
284
+ }
285
+ }
286
+ const h = T.getAttribute("data-href");
287
+ e.notStrictEqual(h, void 0);
288
+ const $ = h.split("/");
289
+ e.strictEqual(
290
+ $[0],
291
+ "",
292
+ `Unexpected URL path for amendement: ${h}`
293
+ ), e.strictEqual(
294
+ $[1],
295
+ "dyn",
296
+ `Unexpected URL path for amendement: ${h}`
297
+ );
298
+ const A = F.join(
299
+ i,
300
+ ...$.slice(2)
301
+ ) + ".html";
302
+ await q.ensureDir(F.dirname(A));
303
+ const y = await q.pathExists(
304
+ A
305
+ ) ? await q.readFile(A, "utf8") : null, L = T.outerHTML, U = `---
306
+ ${W.dump(
307
+ {
308
+ position: l - u,
309
+ search: t.replace(/&page=[\d]+/, "")
310
+ },
311
+ {
312
+ sortKeys: !0
313
+ }
314
+ )}---
315
+
316
+ ${L}`;
317
+ if (U === y) {
318
+ if (a)
319
+ break e;
320
+ continue;
321
+ }
322
+ if (y !== null && K(y).body === L)
323
+ continue;
324
+ d.verbose && console.log(
325
+ y === null ? `Adding amendement search cache: ${A}…` : `Updating amendement search cache: ${A}…`
326
+ );
327
+ const _ = new URL(
328
+ h,
329
+ "https://www.assemblee-nationale.fr/"
330
+ ).toString(), O = await fetch(_);
331
+ if (O.status === 404) {
332
+ console.log(
333
+ `Amendement HTML page not found at ${_}. Skipping.`
334
+ );
335
+ continue;
336
+ }
337
+ e(
338
+ O.ok,
339
+ `Retrieval of amendement HTML page at ${_} failed with error: ${O.status} ${O.statusText}`
340
+ );
341
+ const V = await O.text(), N = X(V).querySelectorAll(
342
+ "li.mirror-card-header--options--content--item"
343
+ );
344
+ e.notStrictEqual(N.length, 0);
345
+ const I = N.find((b) => {
346
+ const R = b.querySelector("a > span");
347
+ return e.notStrictEqual(
348
+ R,
349
+ null,
350
+ `No <span> in <a> found in ${b.toString()}`
351
+ ), R.text === "Version JSON";
352
+ });
353
+ e.notStrictEqual(
354
+ I,
355
+ void 0,
356
+ `No JSON version found for amendement at ${_}`
357
+ );
358
+ const C = I.querySelector("a");
359
+ e.notStrictEqual(
360
+ C,
361
+ null,
362
+ `No <a> found in ${I.toString()}`
363
+ );
364
+ const H = C.getAttribute("href");
365
+ e.notStrictEqual(
366
+ H,
367
+ void 0,
368
+ `No URL found for JSON version of amendement: ${I.toString()}`
369
+ );
370
+ const D = new URL(
371
+ H,
372
+ "https://www.assemblee-nationale.fr/"
373
+ ).toString(), M = await fetch(D);
374
+ e(
375
+ M.ok,
376
+ `Retrieval of amendement JSON page at ${D} failed with error: ${M.status} ${M.statusText}`
377
+ );
378
+ const B = await M.json();
379
+ yield [h, B], await q.writeFile(
380
+ A,
381
+ U,
382
+ "utf8"
383
+ );
384
+ }
385
+ const E = s.querySelector(
386
+ "div.an-pagination--item > i.an-icons-chevron-right ~ a"
387
+ );
388
+ if (E === null)
389
+ break;
390
+ const x = E.getAttribute("href");
391
+ e.notStrictEqual(x, void 0), t = new URL(x, "https://www.assemblee-nationale.fr/").toString();
392
+ }
393
+ }
394
+ export {
395
+ Se as iterRechercheAmendements,
396
+ le as iterRechercheRawAmendements,
397
+ he as parseTexte
398
+ };
@@ -318,12 +318,14 @@ export interface SocProcInsee {
318
318
  }
319
319
  export declare enum FamSocProEnum {
320
320
  AgriculteursExploitants = "Agriculteurs exploitants",
321
- ArtisansCommerçantsEtChefsDEntreprise = "Artisans, commer\u00E7ants et chefs d'entreprise",
321
+ ArtisansCommerçantsChefsDEntreprises = "Artisans, commer\u00E7ants, chefs d'entreprises",
322
+ ArtisansCommerçantsEtChefsDEntrepriseAncien = "Artisans, commer\u00E7ants et chefs d'entreprise",
322
323
  AutresPersonnesSansActivitéProfessionnelle = "Autres personnes sans activit\u00E9 professionnelle",
323
324
  CadresEtProfessionsIntellectuellesSupérieures = "Cadres et professions intellectuelles sup\u00E9rieures",
324
325
  Employés = "Employ\u00E9s",
325
326
  Ouvriers = "Ouvriers",
326
- ProfessionsIntermédiaires = "Professions Interm\u00E9diaires",
327
+ ProfessionsIntermédiaires = "Professions interm\u00E9diaires",
328
+ ProfessionsIntermédiairesAncien = "Professions Interm\u00E9diaires",
327
329
  Retraités = "Retrait\u00E9s",
328
330
  SansProfessionDéclarée = "Sans profession d\u00E9clar\u00E9e"
329
331
  }
@@ -17,7 +17,7 @@ export interface CompteRendu {
17
17
  }
18
18
  export interface Contenu {
19
19
  quantiemes: Quantiemes;
20
- ouvertureSeance: Point[] | Point;
20
+ ouvertureSeance?: Point[] | Point;
21
21
  point: Point[] | Point;
22
22
  finSeance?: FinSeance;
23
23
  paragraphe?: Point[];
@@ -82,7 +82,7 @@ export interface Point {
82
82
  adt?: string;
83
83
  ssadt?: string;
84
84
  roledebat?: string;
85
- changementPresidence?: Point;
85
+ changementPresidence?: Point[] | Point;
86
86
  type_debat?: string;
87
87
  decision?: Decision;
88
88
  ouvertureSeance?: Point;
@@ -1,4 +1,4 @@
1
- import { CodeActe } from "../shared_types/codes_actes";
1
+ import { CodeActe } from '../shared_types/codes_actes';
2
2
  export interface Document {
3
3
  document: DocumentDocument | DocumentSupprime;
4
4
  }