@tricoteuses/assemblee 1.9.12 → 1.10.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 (237) hide show
  1. package/README.md +0 -5
  2. package/lib/api.js +1 -1
  3. package/lib/api.mjs +1 -1
  4. package/lib/bugs/acteur-00010/plugin.test.js +5 -5
  5. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  6. package/lib/bugs/acteur-00010.js +17 -18
  7. package/lib/bugs/acteur-00010.mjs +1 -1
  8. package/lib/bugs/agenda-00002/plugin.test.js +6 -6
  9. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
  10. package/lib/bugs/agenda-00002.js +31 -32
  11. package/lib/bugs/agenda-00002.mjs +3 -3
  12. package/lib/bugs/agenda-00008/plugin.test.js +5 -5
  13. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  14. package/lib/bugs/agenda-00008.js +17 -18
  15. package/lib/bugs/agenda-00008.mjs +1 -1
  16. package/lib/bugs/agenda-00011/plugin.test.js +10 -10
  17. package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
  18. package/lib/bugs/agenda-00011.js +28 -29
  19. package/lib/bugs/agenda-00011.mjs +3 -3
  20. package/lib/bugs.js +27 -29
  21. package/lib/bugs.mjs +3 -3
  22. package/lib/cleaners/actes_legislatifs.js +5 -5
  23. package/lib/cleaners/actes_legislatifs.mjs +1 -1
  24. package/lib/cleaners/acteurs.js +5 -5
  25. package/lib/cleaners/acteurs.mjs +1 -1
  26. package/lib/cleaners/amendements.js +5 -5
  27. package/lib/cleaners/amendements.mjs +1 -1
  28. package/lib/cleaners/debats.js +1 -1
  29. package/lib/cleaners/debats.mjs +1 -1
  30. package/lib/cleaners/documents.js +5 -5
  31. package/lib/cleaners/documents.mjs +1 -1
  32. package/lib/cleaners/dossiers_legislatifs.js +5 -5
  33. package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
  34. package/lib/cleaners/index.d.ts +0 -1
  35. package/lib/cleaners/index.js +1 -8
  36. package/lib/cleaners/index.mjs +1 -2
  37. package/lib/cleaners/organes.js +2 -2
  38. package/lib/cleaners/organes.mjs +1 -1
  39. package/lib/cleaners/questions.js +1 -1
  40. package/lib/cleaners/questions.mjs +1 -1
  41. package/lib/cleaners/reunions.js +5 -5
  42. package/lib/cleaners/reunions.mjs +1 -1
  43. package/lib/cleaners/scrutins.js +8 -8
  44. package/lib/cleaners/scrutins.mjs +1 -1
  45. package/lib/cleaners/xml.js +8 -8
  46. package/lib/cleaners/xml.mjs +1 -1
  47. package/lib/datasets.d.ts +1 -13
  48. package/lib/datasets.js +10 -29
  49. package/lib/datasets.mjs +2 -21
  50. package/lib/dates.js +3 -4
  51. package/lib/dates.mjs +1 -1
  52. package/lib/dossiers_legislatifs.js +8 -8
  53. package/lib/dossiers_legislatifs.mjs +1 -1
  54. package/lib/file_systems.js +15 -14
  55. package/lib/file_systems.mjs +3 -3
  56. package/lib/git.js +5 -5
  57. package/lib/git.mjs +1 -1
  58. package/lib/index.d.ts +1 -0
  59. package/lib/index.js +8 -1
  60. package/lib/index.mjs +2 -1
  61. package/lib/inserters.js +4 -4
  62. package/lib/inserters.mjs +1 -1
  63. package/lib/loaders.d.ts +0 -5
  64. package/lib/loaders.js +255 -299
  65. package/lib/loaders.mjs +1 -13
  66. package/lib/logger.js +1 -1
  67. package/lib/logger.mjs +1 -1
  68. package/lib/organes.js +1 -1
  69. package/lib/organes.mjs +1 -1
  70. package/lib/parsers/documents.js +11 -11
  71. package/lib/parsers/documents.mjs +1 -1
  72. package/lib/parsers/index.d.ts +1 -0
  73. package/lib/parsers/index.js +8 -1
  74. package/lib/parsers/index.mjs +2 -1
  75. package/lib/parsers/recherche_amendements.js +17 -15
  76. package/lib/parsers/recherche_amendements.mjs +1 -1
  77. package/lib/parsers/textes_lois.d.ts +22 -15
  78. package/lib/parsers/textes_lois.js +264 -752
  79. package/lib/parsers/textes_lois.mjs +249 -597
  80. package/lib/raw_types/acteurs_et_organes.js +9 -9
  81. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  82. package/lib/raw_types/agendas.d.ts +1 -0
  83. package/lib/raw_types/agendas.js +11 -10
  84. package/lib/raw_types/agendas.mjs +3 -2
  85. package/lib/raw_types/amendements.js +9 -9
  86. package/lib/raw_types/amendements.mjs +1 -1
  87. package/lib/raw_types/debats.js +9 -9
  88. package/lib/raw_types/debats.mjs +1 -1
  89. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -0
  90. package/lib/raw_types/dossiers_legislatifs.js +13 -9
  91. package/lib/raw_types/dossiers_legislatifs.mjs +5 -1
  92. package/lib/raw_types/questions.js +9 -9
  93. package/lib/raw_types/questions.mjs +1 -1
  94. package/lib/raw_types/scrutins.js +9 -9
  95. package/lib/raw_types/scrutins.mjs +1 -1
  96. package/lib/scripts/bugs_helper.js +25 -26
  97. package/lib/scripts/bugs_helper.mjs +3 -3
  98. package/lib/scripts/clean_reorganized_data.js +256 -245
  99. package/lib/scripts/clean_reorganized_data.mjs +18 -29
  100. package/lib/scripts/diff_amendements.js +9 -8
  101. package/lib/scripts/diff_amendements.mjs +1 -1
  102. package/lib/scripts/document_dossiers_legislatifs.js +24 -27
  103. package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
  104. package/lib/scripts/get_today_reunions.js +3 -2
  105. package/lib/scripts/get_today_reunions.mjs +1 -1
  106. package/lib/scripts/merge_scrutins.js +9 -8
  107. package/lib/scripts/merge_scrutins.mjs +1 -1
  108. package/lib/scripts/parse_textes_lois.js +6 -5
  109. package/lib/scripts/parse_textes_lois.mjs +1 -1
  110. package/lib/scripts/process_open_dataset.d.ts +0 -2
  111. package/lib/scripts/process_open_dataset.js +19 -19
  112. package/lib/scripts/process_open_dataset.mjs +3 -5
  113. package/lib/scripts/raw_types_from_amendements.d.ts +0 -1
  114. package/lib/scripts/raw_types_from_amendements.js +122 -198
  115. package/lib/scripts/raw_types_from_amendements.mjs +105 -60
  116. package/lib/scripts/reorganize_data.js +14 -15
  117. package/lib/scripts/reorganize_data.mjs +3 -3
  118. package/lib/scripts/retrieve_deputes_photos.js +40 -31
  119. package/lib/scripts/retrieve_deputes_photos.mjs +10 -2
  120. package/lib/scripts/retrieve_documents.d.ts +1 -1
  121. package/lib/scripts/retrieve_documents.js +230 -138
  122. package/lib/scripts/retrieve_documents.mjs +87 -38
  123. package/lib/scripts/retrieve_open_data.js +27 -30
  124. package/lib/scripts/retrieve_open_data.mjs +5 -8
  125. package/lib/scripts/retrieve_pending_amendments.js +14 -14
  126. package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
  127. package/lib/scripts/retrieve_senateurs_photos.js +10 -10
  128. package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
  129. package/lib/scripts/retrieve_textes_lois.js +17 -15
  130. package/lib/scripts/retrieve_textes_lois.mjs +1 -1
  131. package/lib/scripts/shared/cli_helpers.d.ts +11 -0
  132. package/lib/scripts/shared/cli_helpers.js +13 -2
  133. package/lib/scripts/shared/cli_helpers.mjs +12 -1
  134. package/lib/scripts/test_iter_load.js +5 -19
  135. package/lib/scripts/test_iter_load.mjs +2 -9
  136. package/lib/scripts/test_load.js +2 -2
  137. package/lib/scripts/test_load.mjs +1 -1
  138. package/lib/scripts/test_load_big_files.js +2 -2
  139. package/lib/scripts/test_load_big_files.mjs +1 -1
  140. package/lib/scripts/validate_json.js +17 -18
  141. package/lib/scripts/validate_json.mjs +3 -3
  142. package/lib/shared_types/codes_actes.d.ts +2 -0
  143. package/lib/shared_types/codes_actes.js +3 -1
  144. package/lib/shared_types/codes_actes.mjs +3 -1
  145. package/lib/strings.js +1 -1
  146. package/lib/strings.mjs +1 -1
  147. package/lib/types/acteurs_et_organes.js +9 -9
  148. package/lib/types/acteurs_et_organes.mjs +1 -1
  149. package/lib/types/agendas.d.ts +1 -0
  150. package/lib/types/agendas.js +11 -10
  151. package/lib/types/agendas.mjs +3 -2
  152. package/lib/types/amendements.js +9 -9
  153. package/lib/types/amendements.mjs +1 -1
  154. package/lib/types/debats.js +9 -9
  155. package/lib/types/debats.mjs +1 -1
  156. package/lib/types/dossiers_legislatifs.d.ts +14 -0
  157. package/lib/types/dossiers_legislatifs.js +51 -9
  158. package/lib/types/dossiers_legislatifs.mjs +43 -1
  159. package/lib/types/legislatures.js +1 -1
  160. package/lib/types/legislatures.mjs +1 -1
  161. package/lib/types/questions.js +9 -9
  162. package/lib/types/questions.mjs +1 -1
  163. package/lib/types/scrutins.js +9 -9
  164. package/lib/types/scrutins.mjs +1 -1
  165. package/lib/urls.js +2 -2
  166. package/lib/urls.mjs +1 -1
  167. package/package.json +14 -20
  168. package/lib/cleaners/textes_loi.d.ts +0 -1
  169. package/lib/cleaners/textes_loi.js +0 -12
  170. package/lib/cleaners/textes_loi.mjs +0 -5
  171. package/lib/examples/PIONANR5L15B0020/input.d.ts +0 -2
  172. package/lib/examples/PIONANR5L15B0020/input.js +0 -10
  173. package/lib/examples/PIONANR5L15B0020/input.mjs +0 -193
  174. package/lib/examples/PIONANR5L15B0020/input.ts +0 -193
  175. package/lib/examples/PIONANR5L15B0020/loi.json +0 -26
  176. package/lib/examples/PIONANR5L15B0020/loi_populated.json +0 -29
  177. package/lib/examples/PIONANR5L15B0020/meta.json +0 -28
  178. package/lib/examples/PIONANR5L15B0020/motifs.json +0 -5
  179. package/lib/examples/PIONANR5L15B0020/motifs_populated.json +0 -6
  180. package/lib/examples/PIONANR5L15B0020/sommaire.json +0 -3
  181. package/lib/examples/PRJLANR5L16B0914/input.d.ts +0 -2
  182. package/lib/examples/PRJLANR5L16B0914/input.js +0 -10
  183. package/lib/examples/PRJLANR5L16B0914/input.mjs +0 -322
  184. package/lib/examples/PRJLANR5L16B0914/input.ts +0 -322
  185. package/lib/examples/PRJLANR5L16B0914/loi.json +0 -14
  186. package/lib/examples/PRJLANR5L16B0914/loi_populated.json +0 -20
  187. package/lib/examples/PRJLANR5L16B0914/meta.json +0 -35
  188. package/lib/examples/PRJLANR5L16B0914/motifs.json +0 -4
  189. package/lib/examples/PRJLANR5L16B0914/motifs_populated.json +0 -5
  190. package/lib/examples/PRJLANR5L16B0914/sommaire.json +0 -3
  191. package/lib/examples/PRJLANR5L16B2014/README.md +0 -2
  192. package/lib/examples/PRJLANR5L16B2014/input.d.ts +0 -2
  193. package/lib/examples/PRJLANR5L16B2014/input.js +0 -10
  194. package/lib/examples/PRJLANR5L16B2014/input.mjs +0 -577
  195. package/lib/examples/PRJLANR5L16B2014/input.ts +0 -577
  196. package/lib/examples/PRJLANR5L16B2014/loi.json +0 -369
  197. package/lib/examples/PRJLANR5L16B2014/meta.json +0 -31
  198. package/lib/examples/PRJLANR5L16B2014/motifs.json +0 -5
  199. package/lib/examples/PRJLANR5L16B2014/sommaire.json +0 -51
  200. package/lib/examples/PRJLANR5L16B2424/alineas.json +0 -44
  201. package/lib/examples/PRJLANR5L16B2424/input.d.ts +0 -2
  202. package/lib/examples/PRJLANR5L16B2424/input.js +0 -10
  203. package/lib/examples/PRJLANR5L16B2424/input.mjs +0 -322
  204. package/lib/examples/PRJLANR5L16B2424/input.ts +0 -322
  205. package/lib/examples/PRJLANR5L16B2424/loi.json +0 -74
  206. package/lib/examples/PRJLANR5L16B2424/loi_populated.json +0 -87
  207. package/lib/examples/PRJLANR5L16B2424/meta.json +0 -31
  208. package/lib/examples/PRJLANR5L16B2424/motifs.json +0 -4
  209. package/lib/examples/PRJLANR5L16B2424/motifs_populated.json +0 -5
  210. package/lib/examples/PRJLANR5L16B2424/sommaire.json +0 -3
  211. package/lib/examples/PRJLANR5L16B2462/input.d.ts +0 -2
  212. package/lib/examples/PRJLANR5L16B2462/input.js +0 -10
  213. package/lib/examples/PRJLANR5L16B2462/input.mjs +0 -1308
  214. package/lib/examples/PRJLANR5L16B2462/input.ts +0 -1308
  215. package/lib/examples/PRJLANR5L16B2462/loi.json +0 -74
  216. package/lib/examples/PRJLANR5L16B2462/loi_populated.json +0 -310
  217. package/lib/examples/PRJLANR5L16B2462/meta.json +0 -29
  218. package/lib/examples/PRJLANR5L16B2462/motifs.json +0 -6
  219. package/lib/examples/PRJLANR5L16B2462/motifs_populated.json +0 -6
  220. package/lib/examples/PRJLANR5L16B2462/sommaire.json +0 -50
  221. package/lib/examples/README.md +0 -3
  222. package/lib/raw_types/textes_loi.d.ts +0 -93
  223. package/lib/raw_types/textes_loi.js +0 -429
  224. package/lib/raw_types/textes_loi.mjs +0 -378
  225. package/lib/schemas/texte_loi/Alinea.json +0 -36
  226. package/lib/schemas/texte_loi/ExposeMotifs.json +0 -24
  227. package/lib/schemas/texte_loi/MetaDonnees.json +0 -126
  228. package/lib/schemas/texte_loi/ProjetLoi.json +0 -64
  229. package/lib/schemas/texte_loi/Sommaire.json +0 -48
  230. package/lib/schemas/texte_loi/TexteLoi.json +0 -225
  231. package/lib/schemas/texte_loi/TexteLoiPartiel.json +0 -237
  232. package/lib/scripts/process_textes_loi_dataset.d.ts +0 -7
  233. package/lib/scripts/process_textes_loi_dataset.js +0 -373
  234. package/lib/scripts/process_textes_loi_dataset.mjs +0 -239
  235. package/lib/types/textes_loi.d.ts +0 -94
  236. package/lib/types/textes_loi.js +0 -429
  237. package/lib/types/textes_loi.mjs +0 -378
@@ -1,239 +0,0 @@
1
- import fs from "fs-extra";
2
- import path from "path";
3
- import util from "util";
4
- import stream from "stream";
5
- import { iterLoadAssembleeDocuments, pathFromDocumentUid } from "../loaders.mjs";
6
- import { parseTexteLoi } from "../parsers/textes_lois.mjs";
7
- const pipeline = util.promisify(stream.pipeline);
8
- export async function processTextesLoiDataset(args) {
9
- const {
10
- dataset,
11
- dataDir,
12
- options
13
- } = args;
14
- const {
15
- silent = false,
16
- full = false,
17
- fetchDocuments,
18
- ignoreIds = [],
19
- legislature,
20
- onlyProcessIds = [],
21
- textProcessTimeout = 1_000 * 60 * 10,
22
- shouldCreateExample = true
23
- } = options;
24
- if (!silent) {
25
- console.log(`Loading ${dataset?.title}`);
26
- }
27
- if (!silent && (!process.env.OPENAI_API_KEY || typeof process.env.OPENAI_API_KEY !== "string")) {
28
- console.error("No API key specified for the extraction of textes de loi. Documents will not be parsed to JSON.");
29
- }
30
- const date = new Date().toUTCString().replaceAll(":", "-").replace(",", "").replace(" ", "-");
31
- const documentsDir = path.join(dataDir, dataset.filename);
32
- const logTodayDir = path.join(`${documentsDir}_Logs`, date);
33
- const exampleDir = path.join(`${documentsDir}_Examples`);
34
- fs.ensureDirSync(documentsDir);
35
- fs.ensureDirSync(logTodayDir);
36
- for (const {
37
- document
38
- } of iterLoadAssembleeDocuments(dataDir, legislature, {
39
- noValidation: true
40
- })) {
41
- const documentType = document.classification?.type?.code;
42
- const allowedTypes = ["PION", "PRJL"];
43
-
44
- // Check document type and check also document uid.
45
- if (!allowedTypes.includes(documentType) || !allowedTypes.includes(document.uid)) {
46
- continue;
47
- }
48
- if (ignoreIds.includes(document.uid)) {
49
- if (!silent) {
50
- console.log(`Skipping.
51
- Document ${document.uid} must NOT be processed because it's included in "ignoreIds" array.`);
52
- }
53
- continue;
54
- }
55
-
56
- // NOTE: This can be optimized.
57
- if (onlyProcessIds.length > 0 && !onlyProcessIds.includes(document.uid)) {
58
- if (!silent) {
59
- console.log(`Skipping.
60
- Document ${document.uid} must NOT be processed because it's NOT included in "onlyProcessIds" array.`);
61
- }
62
- continue;
63
- }
64
- const documentDir = pathFromDocumentUid(documentsDir, document.uid);
65
- fs.ensureDirSync(documentDir);
66
- const htmlFilePath = path.join(documentDir, "dyn-opendata.html");
67
- const htmlTempFilePath = path.join(documentDir, "dyn-opendata_temp.html");
68
- const url = `https://www.assemblee-nationale.fr/dyn/opendata/${document.uid}.html`;
69
- if (fetchDocuments === true) {
70
- if (!silent) {
71
- console.log(`Retrieving document ${document.uid} at ${url}`);
72
- }
73
- const response = await fetch(url);
74
- if (response.ok) {
75
- await pipeline(response.body, fs.createWriteStream(htmlTempFilePath));
76
- fs.renameSync(htmlTempFilePath, htmlFilePath);
77
- }
78
- }
79
- if (!process.env.OPENAI_API_KEY || typeof process.env.OPENAI_API_KEY !== "string") {
80
- continue;
81
- }
82
- const jsonFilePath = path.join(documentDir, `${document.uid}.json`);
83
-
84
- // If HTML does not exist, continue
85
- if (!fs.existsSync(htmlFilePath)) {
86
- if (!silent) {
87
- console.log(`Skipping document ${document.uid}`);
88
- }
89
- continue;
90
- }
91
- if (fs.existsSync(jsonFilePath) && !full) {
92
- continue;
93
- }
94
- const html = fs.readFileSync(htmlFilePath, {
95
- encoding: "utf8"
96
- });
97
- if (!silent) {
98
- console.group(`Parsing document ${document.uid}…`);
99
- }
100
- try {
101
- await Promise.race([await extractTexteLoi({
102
- html,
103
- document,
104
- options,
105
- jsonFilePath,
106
- shouldCreateExample,
107
- exampleDir
108
- }), timeout(textProcessTimeout)]);
109
- logSuccess({
110
- documentId: document.uid,
111
- directory: logTodayDir
112
- });
113
- if (!silent) {
114
- console.groupEnd(); // Ending group: Parsing document ${document.uid}…
115
- }
116
- } catch (error) {
117
- if (!silent) {
118
- console.error(`Error extracting document ${document.uid}.`, error);
119
- }
120
- logError({
121
- directory: logTodayDir,
122
- documentId: document.uid,
123
- errorStackTrace: error.toString()
124
- });
125
- if (!silent) {
126
- console.groupEnd(); // Ending group: Parsing document ${document.uid}…
127
- }
128
- }
129
- }
130
- if (!silent) {
131
- console.groupEnd(); // Ending group: ProcessTextesLoiDataset
132
- }
133
- return 0;
134
- }
135
- async function extractTexteLoi({
136
- html,
137
- document,
138
- options,
139
- jsonFilePath,
140
- shouldCreateExample,
141
- exampleDir
142
- }) {
143
- const texteLoiData = await parseTexteLoi(html);
144
- if (!texteLoiData) {
145
- if (!options.silent) {
146
- console.log(`Error when parsing document ${document.uid}`);
147
- }
148
- throw Error(`textLoiData could not be extracted.`);
149
- }
150
- texteLoiData.meta.uid = document.uid;
151
- texteLoiData.meta.documentRef = document.uid;
152
- const jsonData = {
153
- ...texteLoiData.meta,
154
- sommaire: texteLoiData.sommaire ?? [],
155
- contenu: {
156
- articles: texteLoiData.loi.articles,
157
- exposeMotifs: texteLoiData.exposeMotifs
158
- }
159
- };
160
- fs.writeFileSync(jsonFilePath, JSON.stringify(jsonData, null, 2));
161
- if (!options.silent) {
162
- console.log(`Document ${document.uid} successfully parsed !`);
163
- }
164
- if (shouldCreateExample) {
165
- createExample({
166
- data: texteLoiData,
167
- documentId: document.uid,
168
- directory: exampleDir,
169
- silent: options.silent
170
- });
171
- }
172
- }
173
- function createExample({
174
- data,
175
- directory,
176
- documentId,
177
- silent
178
- }) {
179
- const exampleDir = path.join(directory, documentId);
180
- fs.ensureDirSync(exampleDir);
181
- if (!silent) {
182
- console.log("Generate example at: ", exampleDir);
183
- }
184
- for (const [key, value] of Object.entries(data)) {
185
- fs.writeFileSync(path.join(exampleDir, `${key}.json`), JSON.stringify(value, null, 2));
186
- }
187
- }
188
- function logError({
189
- directory,
190
- documentId,
191
- errorStackTrace
192
- }) {
193
- const errorsFilePath = path.join(directory, "errors.json");
194
- let errors = {};
195
- if (fs.existsSync(errorsFilePath)) {
196
- const data = fs.readFileSync(errorsFilePath, "utf8");
197
- errors = JSON.parse(data);
198
- }
199
- errors[documentId] = {
200
- date: new Date().toUTCString().replaceAll(":", "-").replace(",", "").replace(" ", "-"),
201
- error: errorStackTrace ?? ""
202
- };
203
- fs.writeFileSync(errorsFilePath, JSON.stringify(errors, null, 2), "utf8");
204
- }
205
- function logSuccess({
206
- directory,
207
- documentId
208
- }) {
209
- const successesFilePath = path.join(directory, "successes.json");
210
- let successes = {};
211
- if (fs.existsSync(successesFilePath)) {
212
- const data = fs.readFileSync(successesFilePath, "utf8");
213
- successes = JSON.parse(data);
214
- }
215
- successes[documentId] = {
216
- date: new Date().toUTCString().replaceAll(":", "-").replace(",", "").replace(" ", "-"),
217
- success: true
218
- };
219
- fs.writeFileSync(successesFilePath, JSON.stringify(successes, null, 2), "utf8");
220
- }
221
-
222
- /**
223
- * Creates a promise that rejects with an error after a specified timeout.
224
- * If the timeout duration is less than or equal to zero, the promise resolves immediately.
225
- *
226
- * @param {number} ms - The number of milliseconds to wait before rejecting the promise.
227
- * @returns {Promise<void>} A promise that rejects with an error after the specified timeout.
228
- */
229
- function timeout(ms) {
230
- return new Promise((resolve, reject) => {
231
- if (ms <= 0) {
232
- resolve();
233
- }
234
- setTimeout(() => {
235
- reject(new Error("Operation timed out"));
236
- }, ms);
237
- });
238
- }
239
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsInBhdGgiLCJ1dGlsIiwic3RyZWFtIiwiaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwicGFyc2VUZXh0ZUxvaSIsInBpcGVsaW5lIiwicHJvbWlzaWZ5IiwicHJvY2Vzc1RleHRlc0xvaURhdGFzZXQiLCJhcmdzIiwiZGF0YXNldCIsImRhdGFEaXIiLCJvcHRpb25zIiwic2lsZW50IiwiZnVsbCIsImZldGNoRG9jdW1lbnRzIiwiaWdub3JlSWRzIiwibGVnaXNsYXR1cmUiLCJvbmx5UHJvY2Vzc0lkcyIsInRleHRQcm9jZXNzVGltZW91dCIsInNob3VsZENyZWF0ZUV4YW1wbGUiLCJjb25zb2xlIiwibG9nIiwidGl0bGUiLCJwcm9jZXNzIiwiZW52IiwiT1BFTkFJX0FQSV9LRVkiLCJlcnJvciIsImRhdGUiLCJEYXRlIiwidG9VVENTdHJpbmciLCJyZXBsYWNlQWxsIiwicmVwbGFjZSIsImRvY3VtZW50c0RpciIsImpvaW4iLCJmaWxlbmFtZSIsImxvZ1RvZGF5RGlyIiwiZXhhbXBsZURpciIsImVuc3VyZURpclN5bmMiLCJkb2N1bWVudCIsIm5vVmFsaWRhdGlvbiIsImRvY3VtZW50VHlwZSIsImNsYXNzaWZpY2F0aW9uIiwidHlwZSIsImNvZGUiLCJhbGxvd2VkVHlwZXMiLCJpbmNsdWRlcyIsInVpZCIsImxlbmd0aCIsImRvY3VtZW50RGlyIiwiaHRtbEZpbGVQYXRoIiwiaHRtbFRlbXBGaWxlUGF0aCIsInVybCIsInJlc3BvbnNlIiwiZmV0Y2giLCJvayIsImJvZHkiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlbmFtZVN5bmMiLCJqc29uRmlsZVBhdGgiLCJleGlzdHNTeW5jIiwiaHRtbCIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiZ3JvdXAiLCJQcm9taXNlIiwicmFjZSIsImV4dHJhY3RUZXh0ZUxvaSIsInRpbWVvdXQiLCJsb2dTdWNjZXNzIiwiZG9jdW1lbnRJZCIsImRpcmVjdG9yeSIsImdyb3VwRW5kIiwibG9nRXJyb3IiLCJlcnJvclN0YWNrVHJhY2UiLCJ0b1N0cmluZyIsInRleHRlTG9pRGF0YSIsIkVycm9yIiwibWV0YSIsImRvY3VtZW50UmVmIiwianNvbkRhdGEiLCJzb21tYWlyZSIsImNvbnRlbnUiLCJhcnRpY2xlcyIsImxvaSIsImV4cG9zZU1vdGlmcyIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwiY3JlYXRlRXhhbXBsZSIsImRhdGEiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnNGaWxlUGF0aCIsImVycm9ycyIsInBhcnNlIiwic3VjY2Vzc2VzRmlsZVBhdGgiLCJzdWNjZXNzZXMiLCJzdWNjZXNzIiwibXMiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Byb2Nlc3NfdGV4dGVzX2xvaV9kYXRhc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHV0aWwgZnJvbSBcInV0aWxcIlxuaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbmltcG9ydCB7IGl0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzLCBwYXRoRnJvbURvY3VtZW50VWlkIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgcGFyc2VUZXh0ZUxvaSB9IGZyb20gXCIuLi9wYXJzZXJzL3RleHRlc19sb2lzXCJcbmltcG9ydCB7IERvY3VtZW50IH0gZnJvbSBcIi4uL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcblxuY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbnR5cGUgUmV0cmlldmVUZXh0ZUxvaUFyZ3VtZW50cyA9IHtcbiAgZGF0YXNldDogYW55XG4gIGRhdGFEaXI6IHN0cmluZ1xuICBvcHRpb25zOiBhbnlcbn1cblxudHlwZSBFeHRyYWN0VGV4dExvaU9wdGlvbnMgPSB7XG4gIGV4YW1wbGVEaXI6IHN0cmluZ1xuICBodG1sOiBzdHJpbmdcbiAgb3B0aW9uczogYW55XG4gIGRvY3VtZW50OiBEb2N1bWVudFxuICBqc29uRmlsZVBhdGg6IHN0cmluZ1xuICBzaG91bGRDcmVhdGVFeGFtcGxlOiBib29sZWFuXG59XG5cbnR5cGUgTG9nT3B0aW9ucyA9IHtcbiAgZGlyZWN0b3J5OiBzdHJpbmdcbiAgZG9jdW1lbnRJZDogc3RyaW5nXG4gIGVycm9yU3RhY2tUcmFjZT86IHN0cmluZ1xufVxuXG50eXBlIEV4YW1wbGVPcHRpb25zID0ge1xuICBkYXRhOiBvYmplY3RcbiAgZGlyZWN0b3J5OiBzdHJpbmdcbiAgZG9jdW1lbnRJZDogc3RyaW5nXG4gIHNpbGVudDogYm9vbGVhblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1RleHRlc0xvaURhdGFzZXQoXG4gIGFyZ3M6IFJldHJpZXZlVGV4dGVMb2lBcmd1bWVudHMsXG4pOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCB7IGRhdGFzZXQsIGRhdGFEaXIsIG9wdGlvbnMgfSA9IGFyZ3NcblxuICBjb25zdCB7XG4gICAgc2lsZW50ID0gZmFsc2UsXG4gICAgZnVsbCA9IGZhbHNlLFxuICAgIGZldGNoRG9jdW1lbnRzLFxuICAgIGlnbm9yZUlkcyA9IFtdLFxuICAgIGxlZ2lzbGF0dXJlLFxuICAgIG9ubHlQcm9jZXNzSWRzID0gW10sXG4gICAgdGV4dFByb2Nlc3NUaW1lb3V0ID0gMV8wMDAgKiA2MCAqIDEwLFxuICAgIHNob3VsZENyZWF0ZUV4YW1wbGUgPSB0cnVlLFxuICB9ID0gb3B0aW9uc1xuXG4gIGlmICghc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYExvYWRpbmcgJHtkYXRhc2V0Py50aXRsZX1gKVxuICB9XG5cbiAgaWYgKFxuICAgICFzaWxlbnQgJiZcbiAgICAoIXByb2Nlc3MuZW52Lk9QRU5BSV9BUElfS0VZIHx8XG4gICAgICB0eXBlb2YgcHJvY2Vzcy5lbnYuT1BFTkFJX0FQSV9LRVkgIT09IFwic3RyaW5nXCIpXG4gICkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIk5vIEFQSSBrZXkgc3BlY2lmaWVkIGZvciB0aGUgZXh0cmFjdGlvbiBvZiB0ZXh0ZXMgZGUgbG9pLiBEb2N1bWVudHMgd2lsbCBub3QgYmUgcGFyc2VkIHRvIEpTT04uXCIsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKClcbiAgICAudG9VVENTdHJpbmcoKVxuICAgIC5yZXBsYWNlQWxsKFwiOlwiLCBcIi1cIilcbiAgICAucmVwbGFjZShcIixcIiwgXCJcIilcbiAgICAucmVwbGFjZShcIiBcIiwgXCItXCIpXG5cbiAgY29uc3QgZG9jdW1lbnRzRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgY29uc3QgbG9nVG9kYXlEaXI6IHN0cmluZyA9IHBhdGguam9pbihgJHtkb2N1bWVudHNEaXJ9X0xvZ3NgLCBkYXRlKVxuICBjb25zdCBleGFtcGxlRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oYCR7ZG9jdW1lbnRzRGlyfV9FeGFtcGxlc2ApXG4gIGZzLmVuc3VyZURpclN5bmMoZG9jdW1lbnRzRGlyKVxuICBmcy5lbnN1cmVEaXJTeW5jKGxvZ1RvZGF5RGlyKVxuXG4gIGZvciAoY29uc3QgeyBkb2N1bWVudCB9IG9mIGl0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzKGRhdGFEaXIsIGxlZ2lzbGF0dXJlLCB7XG4gICAgbm9WYWxpZGF0aW9uOiB0cnVlLFxuICB9KSkge1xuICAgIGNvbnN0IGRvY3VtZW50VHlwZTogc3RyaW5nID0gZG9jdW1lbnQuY2xhc3NpZmljYXRpb24/LnR5cGU/LmNvZGVcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBbXCJQSU9OXCIsIFwiUFJKTFwiXVxuXG4gICAgLy8gQ2hlY2sgZG9jdW1lbnQgdHlwZSBhbmQgY2hlY2sgYWxzbyBkb2N1bWVudCB1aWQuXG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZG9jdW1lbnRUeXBlKSB8fCAhYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGRvY3VtZW50LnVpZCkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGlnbm9yZUlkcy5pbmNsdWRlcyhkb2N1bWVudC51aWQpKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2tpcHBpbmcuIFxuICAgICAgICAgIERvY3VtZW50ICR7ZG9jdW1lbnQudWlkfSBtdXN0IE5PVCBiZSBwcm9jZXNzZWQgYmVjYXVzZSBpdCdzIGluY2x1ZGVkIGluIFwiaWdub3JlSWRzXCIgYXJyYXkuYClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gTk9URTogVGhpcyBjYW4gYmUgb3B0aW1pemVkLlxuICAgIGlmIChvbmx5UHJvY2Vzc0lkcy5sZW5ndGggPiAwICYmICFvbmx5UHJvY2Vzc0lkcy5pbmNsdWRlcyhkb2N1bWVudC51aWQpKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2tpcHBpbmcuIFxuICAgICAgICAgIERvY3VtZW50ICR7ZG9jdW1lbnQudWlkfSBtdXN0IE5PVCBiZSBwcm9jZXNzZWQgYmVjYXVzZSBpdCdzIE5PVCBpbmNsdWRlZCBpbiBcIm9ubHlQcm9jZXNzSWRzXCIgYXJyYXkuYClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgZG9jdW1lbnREaXI6IHN0cmluZyA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudC51aWQpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudERpcilcblxuICAgIGNvbnN0IGh0bWxGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKGRvY3VtZW50RGlyLCBcImR5bi1vcGVuZGF0YS5odG1sXCIpXG4gICAgY29uc3QgaHRtbFRlbXBGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgZG9jdW1lbnREaXIsXG4gICAgICBcImR5bi1vcGVuZGF0YV90ZW1wLmh0bWxcIixcbiAgICApXG5cbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IGBodHRwczovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL2R5bi9vcGVuZGF0YS8ke2RvY3VtZW50LnVpZH0uaHRtbGBcblxuICAgIGlmIChmZXRjaERvY3VtZW50cyA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJldHJpZXZpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9IGF0ICR7dXJsfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBSZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcblxuICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGF3YWl0IHBpcGVsaW5lKFxuICAgICAgICAgIHJlc3BvbnNlLmJvZHkgYXMgdW5rbm93biBhcyBOb2RlSlMuUmVhZGFibGVTdHJlYW0sXG4gICAgICAgICAgZnMuY3JlYXRlV3JpdGVTdHJlYW0oaHRtbFRlbXBGaWxlUGF0aCksXG4gICAgICAgIClcbiAgICAgICAgZnMucmVuYW1lU3luYyhodG1sVGVtcEZpbGVQYXRoLCBodG1sRmlsZVBhdGgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIXByb2Nlc3MuZW52Lk9QRU5BSV9BUElfS0VZIHx8XG4gICAgICB0eXBlb2YgcHJvY2Vzcy5lbnYuT1BFTkFJX0FQSV9LRVkgIT09IFwic3RyaW5nXCJcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oZG9jdW1lbnREaXIsIGAke2RvY3VtZW50LnVpZH0uanNvbmApXG5cbiAgICAvLyBJZiBIVE1MIGRvZXMgbm90IGV4aXN0LCBjb250aW51ZVxuICAgIGlmICghZnMuZXhpc3RzU3luYyhodG1sRmlsZVBhdGgpKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2tpcHBpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9YClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSAmJiAhZnVsbCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBodG1sOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoaHRtbEZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuXG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUuZ3JvdXAoYFBhcnNpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR94oCmYClcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgYXdhaXQgZXh0cmFjdFRleHRlTG9pKHtcbiAgICAgICAgICBodG1sLFxuICAgICAgICAgIGRvY3VtZW50LFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAganNvbkZpbGVQYXRoLFxuICAgICAgICAgIHNob3VsZENyZWF0ZUV4YW1wbGUsXG4gICAgICAgICAgZXhhbXBsZURpcixcbiAgICAgICAgfSksXG4gICAgICAgIHRpbWVvdXQodGV4dFByb2Nlc3NUaW1lb3V0KSxcbiAgICAgIF0pXG5cbiAgICAgIGxvZ1N1Y2Nlc3Moe1xuICAgICAgICBkb2N1bWVudElkOiBkb2N1bWVudC51aWQsXG4gICAgICAgIGRpcmVjdG9yeTogbG9nVG9kYXlEaXIsXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCkgLy8gRW5kaW5nIGdyb3VwOiBQYXJzaW5nIGRvY3VtZW50ICR7ZG9jdW1lbnQudWlkfeKAplxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGV4dHJhY3RpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9LmAsIGVycm9yKVxuICAgICAgfVxuXG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGRpcmVjdG9yeTogbG9nVG9kYXlEaXIsXG4gICAgICAgIGRvY3VtZW50SWQ6IGRvY3VtZW50LnVpZCxcbiAgICAgICAgZXJyb3JTdGFja1RyYWNlOiBlcnJvci50b1N0cmluZygpLFxuICAgICAgfSlcbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKSAvLyBFbmRpbmcgZ3JvdXA6IFBhcnNpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR94oCmXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICBjb25zb2xlLmdyb3VwRW5kKCkgLy8gRW5kaW5nIGdyb3VwOiBQcm9jZXNzVGV4dGVzTG9pRGF0YXNldFxuICB9XG5cbiAgcmV0dXJuIDBcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFRleHRlTG9pKHtcbiAgaHRtbCxcbiAgZG9jdW1lbnQsXG4gIG9wdGlvbnMsXG4gIGpzb25GaWxlUGF0aCxcbiAgc2hvdWxkQ3JlYXRlRXhhbXBsZSxcbiAgZXhhbXBsZURpcixcbn06IEV4dHJhY3RUZXh0TG9pT3B0aW9ucykge1xuICBjb25zdCB0ZXh0ZUxvaURhdGE6IGFueSA9IGF3YWl0IHBhcnNlVGV4dGVMb2koaHRtbClcblxuICBpZiAoIXRleHRlTG9pRGF0YSkge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBFcnJvciB3aGVuIHBhcnNpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9YClcbiAgICB9XG4gICAgdGhyb3cgRXJyb3IoYHRleHRMb2lEYXRhIGNvdWxkIG5vdCBiZSBleHRyYWN0ZWQuYClcbiAgfVxuXG4gIHRleHRlTG9pRGF0YS5tZXRhLnVpZCA9IGRvY3VtZW50LnVpZFxuICB0ZXh0ZUxvaURhdGEubWV0YS5kb2N1bWVudFJlZiA9IGRvY3VtZW50LnVpZFxuXG4gIGNvbnN0IGpzb25EYXRhID0ge1xuICAgIC4uLnRleHRlTG9pRGF0YS5tZXRhLFxuICAgIHNvbW1haXJlOiB0ZXh0ZUxvaURhdGEuc29tbWFpcmUgPz8gW10sXG4gICAgY29udGVudToge1xuICAgICAgYXJ0aWNsZXM6IHRleHRlTG9pRGF0YS5sb2kuYXJ0aWNsZXMsXG4gICAgICBleHBvc2VNb3RpZnM6IHRleHRlTG9pRGF0YS5leHBvc2VNb3RpZnMsXG4gICAgfSxcbiAgfVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoanNvbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uRGF0YSwgbnVsbCwgMikpXG5cbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBEb2N1bWVudCAke2RvY3VtZW50LnVpZH0gc3VjY2Vzc2Z1bGx5IHBhcnNlZCAhYClcbiAgfVxuXG4gIGlmIChzaG91bGRDcmVhdGVFeGFtcGxlKSB7XG4gICAgY3JlYXRlRXhhbXBsZSh7XG4gICAgICBkYXRhOiB0ZXh0ZUxvaURhdGEsXG4gICAgICBkb2N1bWVudElkOiBkb2N1bWVudC51aWQsXG4gICAgICBkaXJlY3Rvcnk6IGV4YW1wbGVEaXIsXG4gICAgICBzaWxlbnQ6IG9wdGlvbnMuc2lsZW50LFxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRXhhbXBsZSh7XG4gIGRhdGEsXG4gIGRpcmVjdG9yeSxcbiAgZG9jdW1lbnRJZCxcbiAgc2lsZW50LFxufTogRXhhbXBsZU9wdGlvbnMpIHtcbiAgY29uc3QgZXhhbXBsZURpcjogc3RyaW5nID0gcGF0aC5qb2luKGRpcmVjdG9yeSwgZG9jdW1lbnRJZClcbiAgZnMuZW5zdXJlRGlyU3luYyhleGFtcGxlRGlyKVxuXG4gIGlmICghc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coXCJHZW5lcmF0ZSBleGFtcGxlIGF0OiBcIiwgZXhhbXBsZURpcilcbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEpKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbihleGFtcGxlRGlyLCBgJHtrZXl9Lmpzb25gKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKSxcbiAgICApXG4gIH1cbn1cblxuZnVuY3Rpb24gbG9nRXJyb3IoeyBkaXJlY3RvcnksIGRvY3VtZW50SWQsIGVycm9yU3RhY2tUcmFjZSB9OiBMb2dPcHRpb25zKSB7XG4gIGNvbnN0IGVycm9yc0ZpbGVQYXRoID0gcGF0aC5qb2luKGRpcmVjdG9yeSwgXCJlcnJvcnMuanNvblwiKVxuICBsZXQgZXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHsgZGF0ZTogc3RyaW5nOyBlcnJvcjogc3RyaW5nIH0gfSA9IHt9XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZXJyb3JzRmlsZVBhdGgpKSB7XG4gICAgY29uc3QgZGF0YTogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGVycm9yc0ZpbGVQYXRoLCBcInV0ZjhcIilcbiAgICBlcnJvcnMgPSBKU09OLnBhcnNlKGRhdGEpXG4gIH1cblxuICBlcnJvcnNbZG9jdW1lbnRJZF0gPSB7XG4gICAgZGF0ZTogbmV3IERhdGUoKVxuICAgICAgLnRvVVRDU3RyaW5nKClcbiAgICAgIC5yZXBsYWNlQWxsKFwiOlwiLCBcIi1cIilcbiAgICAgIC5yZXBsYWNlKFwiLFwiLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoXCIgXCIsIFwiLVwiKSxcbiAgICBlcnJvcjogZXJyb3JTdGFja1RyYWNlID8/IFwiXCIsXG4gIH1cblxuICBmcy53cml0ZUZpbGVTeW5jKGVycm9yc0ZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShlcnJvcnMsIG51bGwsIDIpLCBcInV0ZjhcIilcbn1cblxuZnVuY3Rpb24gbG9nU3VjY2Vzcyh7IGRpcmVjdG9yeSwgZG9jdW1lbnRJZCB9OiBMb2dPcHRpb25zKSB7XG4gIGNvbnN0IHN1Y2Nlc3Nlc0ZpbGVQYXRoID0gcGF0aC5qb2luKGRpcmVjdG9yeSwgXCJzdWNjZXNzZXMuanNvblwiKVxuICBsZXQgc3VjY2Vzc2VzOiB7IFtrZXk6IHN0cmluZ106IHsgZGF0ZTogc3RyaW5nOyBzdWNjZXNzOiBib29sZWFuIH0gfSA9IHt9XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoc3VjY2Vzc2VzRmlsZVBhdGgpKSB7XG4gICAgY29uc3QgZGF0YTogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHN1Y2Nlc3Nlc0ZpbGVQYXRoLCBcInV0ZjhcIilcbiAgICBzdWNjZXNzZXMgPSBKU09OLnBhcnNlKGRhdGEpXG4gIH1cblxuICBzdWNjZXNzZXNbZG9jdW1lbnRJZF0gPSB7XG4gICAgZGF0ZTogbmV3IERhdGUoKVxuICAgICAgLnRvVVRDU3RyaW5nKClcbiAgICAgIC5yZXBsYWNlQWxsKFwiOlwiLCBcIi1cIilcbiAgICAgIC5yZXBsYWNlKFwiLFwiLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoXCIgXCIsIFwiLVwiKSxcbiAgICBzdWNjZXNzOiB0cnVlLFxuICB9XG5cbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBzdWNjZXNzZXNGaWxlUGF0aCxcbiAgICBKU09OLnN0cmluZ2lmeShzdWNjZXNzZXMsIG51bGwsIDIpLFxuICAgIFwidXRmOFwiLFxuICApXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHByb21pc2UgdGhhdCByZWplY3RzIHdpdGggYW4gZXJyb3IgYWZ0ZXIgYSBzcGVjaWZpZWQgdGltZW91dC5cbiAqIElmIHRoZSB0aW1lb3V0IGR1cmF0aW9uIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCB0aGUgcHJvbWlzZSByZXNvbHZlcyBpbW1lZGlhdGVseS5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbXMgLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSByZWplY3RpbmcgdGhlIHByb21pc2UuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVqZWN0cyB3aXRoIGFuIGVycm9yIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dC5cbiAqL1xuZnVuY3Rpb24gdGltZW91dChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKG1zIDw9IDApIHtcbiAgICAgIHJlc29sdmUoKVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIk9wZXJhdGlvbiB0aW1lZCBvdXRcIikpXG4gICAgfSwgbXMpXG4gIH0pXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQ3ZCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQ3ZCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQUEsU0FDbEJDLDBCQUEwQixFQUFFQyxtQkFBbUI7QUFBQSxTQUMvQ0MsYUFBYTtBQUd0QixNQUFNQyxRQUFRLEdBQUdMLElBQUksQ0FBQ00sU0FBUyxDQUFDTCxNQUFNLENBQUNJLFFBQVEsQ0FBQztBQThCaEQsT0FBTyxlQUFlRSx1QkFBdUJBLENBQzNDQyxJQUErQixFQUNkO0VBQ2pCLE1BQU07SUFBRUMsT0FBTztJQUFFQyxPQUFPO0lBQUVDO0VBQVEsQ0FBQyxHQUFHSCxJQUFJO0VBRTFDLE1BQU07SUFDSkksTUFBTSxHQUFHLEtBQUs7SUFDZEMsSUFBSSxHQUFHLEtBQUs7SUFDWkMsY0FBYztJQUNkQyxTQUFTLEdBQUcsRUFBRTtJQUNkQyxXQUFXO0lBQ1hDLGNBQWMsR0FBRyxFQUFFO0lBQ25CQyxrQkFBa0IsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDcENDLG1CQUFtQixHQUFHO0VBQ3hCLENBQUMsR0FBR1IsT0FBTztFQUVYLElBQUksQ0FBQ0MsTUFBTSxFQUFFO0lBQ1hRLE9BQU8s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
@@ -1,94 +0,0 @@
1
- export interface TextesLoi {
2
- uid: string;
3
- documentRef: string;
4
- titre: string;
5
- organe: Organe;
6
- typeTexte: TypeTexte;
7
- commission: string;
8
- procedureAcceleree: boolean;
9
- representants: Representants;
10
- dateConstitution: Date;
11
- dateDepotAssemblee: Date;
12
- numeroLegislature: number;
13
- numeroTexte: string;
14
- sommaire: SommaireElement[] | PurpleSommaire;
15
- contenu: Contenu;
16
- signataires?: Signataire[];
17
- }
18
- export interface Contenu {
19
- articles: Article[];
20
- exposeMotifs: ExposeMotifs;
21
- }
22
- export interface Article {
23
- numeroArticle: number;
24
- numeroArticles: any[];
25
- cardinal: Cardinal;
26
- parent: string;
27
- nouveau: boolean;
28
- titre: string;
29
- alineas: Alinea[];
30
- texte: string;
31
- }
32
- export interface Alinea {
33
- numeroAlinea: number;
34
- texte: string;
35
- debut?: string;
36
- fin?: string;
37
- }
38
- export declare enum Cardinal {
39
- A = "A",
40
- B = "B",
41
- Bis = "bis",
42
- BisA = "bis A",
43
- C = "C",
44
- CardinalNouveau = "(nouveau)",
45
- Empty = "",
46
- Er = "er",
47
- Nouveau = "nouveau"
48
- }
49
- export interface ExposeMotifs {
50
- texte: string;
51
- citation?: string;
52
- }
53
- export declare enum Organe {
54
- AssembléeNationale = "Assembl\u00E9e Nationale",
55
- OrganeAssembléeNationale = "ASSEMBL\u00C9E NATIONALE"
56
- }
57
- export interface Representants {
58
- par: Signataire[];
59
- }
60
- export interface Signataire {
61
- nom: string;
62
- fonction: Fonction;
63
- }
64
- export declare enum Fonction {
65
- Député = "D\u00E9put\u00E9",
66
- Députée = "D\u00E9put\u00E9e",
67
- Empty = ""
68
- }
69
- export interface SommaireElement {
70
- typeDivision: TypeDivision;
71
- numeroDivision: string;
72
- sequence: number;
73
- titre: string;
74
- parent?: string;
75
- }
76
- export declare enum TypeDivision {
77
- Chapitre = "Chapitre",
78
- Titre = "Titre"
79
- }
80
- export interface PurpleSommaire {
81
- sommaire: any[];
82
- }
83
- export declare enum TypeTexte {
84
- MotionDeCensure = "Motion de censure",
85
- PropositionDeLoi = "Proposition de loi",
86
- PropositionDeLoiConstitutionnelle = "PROPOSITION DE LOI CONSTITUTIONNELLE",
87
- PropositionDeLoiOrganique = "PROPOSITION DE LOI ORGANIQUE",
88
- TypeTexteMotionDeCensure = "MOTION DE CENSURE",
89
- TypeTextePropositionDeLoi = "PROPOSITION DE LOI"
90
- }
91
- export declare class Convert {
92
- static toTextesLoi(json: string): TextesLoi;
93
- static textesLoiToJson(value: TextesLoi): string;
94
- }