@tricoteuses/assemblee 1.9.13 → 1.10.1

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 (235) 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 +3 -2
  59. package/lib/index.js +14 -1
  60. package/lib/index.mjs +3 -2
  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.js +9 -9
  90. package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
  91. package/lib/raw_types/questions.js +9 -9
  92. package/lib/raw_types/questions.mjs +1 -1
  93. package/lib/raw_types/scrutins.js +9 -9
  94. package/lib/raw_types/scrutins.mjs +1 -1
  95. package/lib/scripts/bugs_helper.js +25 -26
  96. package/lib/scripts/bugs_helper.mjs +3 -3
  97. package/lib/scripts/clean_reorganized_data.js +256 -245
  98. package/lib/scripts/clean_reorganized_data.mjs +18 -29
  99. package/lib/scripts/diff_amendements.js +9 -8
  100. package/lib/scripts/diff_amendements.mjs +1 -1
  101. package/lib/scripts/document_dossiers_legislatifs.js +24 -27
  102. package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
  103. package/lib/scripts/get_today_reunions.js +3 -2
  104. package/lib/scripts/get_today_reunions.mjs +1 -1
  105. package/lib/scripts/merge_scrutins.js +9 -8
  106. package/lib/scripts/merge_scrutins.mjs +1 -1
  107. package/lib/scripts/parse_textes_lois.js +6 -5
  108. package/lib/scripts/parse_textes_lois.mjs +1 -1
  109. package/lib/scripts/process_open_dataset.d.ts +0 -2
  110. package/lib/scripts/process_open_dataset.js +19 -19
  111. package/lib/scripts/process_open_dataset.mjs +3 -5
  112. package/lib/scripts/raw_types_from_amendements.d.ts +0 -1
  113. package/lib/scripts/raw_types_from_amendements.js +122 -198
  114. package/lib/scripts/raw_types_from_amendements.mjs +105 -60
  115. package/lib/scripts/reorganize_data.js +14 -15
  116. package/lib/scripts/reorganize_data.mjs +3 -3
  117. package/lib/scripts/retrieve_deputes_photos.js +40 -31
  118. package/lib/scripts/retrieve_deputes_photos.mjs +10 -2
  119. package/lib/scripts/retrieve_documents.d.ts +1 -1
  120. package/lib/scripts/retrieve_documents.js +230 -138
  121. package/lib/scripts/retrieve_documents.mjs +87 -38
  122. package/lib/scripts/retrieve_open_data.js +27 -30
  123. package/lib/scripts/retrieve_open_data.mjs +5 -8
  124. package/lib/scripts/retrieve_pending_amendments.js +14 -14
  125. package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
  126. package/lib/scripts/retrieve_senateurs_photos.js +10 -10
  127. package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
  128. package/lib/scripts/retrieve_textes_lois.js +17 -15
  129. package/lib/scripts/retrieve_textes_lois.mjs +1 -1
  130. package/lib/scripts/shared/cli_helpers.d.ts +11 -0
  131. package/lib/scripts/shared/cli_helpers.js +13 -2
  132. package/lib/scripts/shared/cli_helpers.mjs +12 -1
  133. package/lib/scripts/test_iter_load.js +5 -19
  134. package/lib/scripts/test_iter_load.mjs +2 -9
  135. package/lib/scripts/test_load.js +2 -2
  136. package/lib/scripts/test_load.mjs +1 -1
  137. package/lib/scripts/test_load_big_files.js +2 -2
  138. package/lib/scripts/test_load_big_files.mjs +1 -1
  139. package/lib/scripts/validate_json.js +17 -18
  140. package/lib/scripts/validate_json.mjs +3 -3
  141. package/lib/shared_types/codes_actes.js +1 -1
  142. package/lib/shared_types/codes_actes.mjs +1 -1
  143. package/lib/strings.js +1 -1
  144. package/lib/strings.mjs +1 -1
  145. package/lib/types/acteurs_et_organes.js +9 -9
  146. package/lib/types/acteurs_et_organes.mjs +1 -1
  147. package/lib/types/agendas.d.ts +1 -0
  148. package/lib/types/agendas.js +11 -10
  149. package/lib/types/agendas.mjs +3 -2
  150. package/lib/types/amendements.js +9 -9
  151. package/lib/types/amendements.mjs +1 -1
  152. package/lib/types/debats.js +9 -9
  153. package/lib/types/debats.mjs +1 -1
  154. package/lib/types/dossiers_legislatifs.d.ts +13 -0
  155. package/lib/types/dossiers_legislatifs.js +47 -9
  156. package/lib/types/dossiers_legislatifs.mjs +39 -1
  157. package/lib/types/legislatures.js +1 -1
  158. package/lib/types/legislatures.mjs +1 -1
  159. package/lib/types/questions.js +9 -9
  160. package/lib/types/questions.mjs +1 -1
  161. package/lib/types/scrutins.js +9 -9
  162. package/lib/types/scrutins.mjs +1 -1
  163. package/lib/urls.js +2 -2
  164. package/lib/urls.mjs +1 -1
  165. package/package.json +14 -20
  166. package/lib/cleaners/textes_loi.d.ts +0 -1
  167. package/lib/cleaners/textes_loi.js +0 -12
  168. package/lib/cleaners/textes_loi.mjs +0 -5
  169. package/lib/examples/PIONANR5L15B0020/input.d.ts +0 -2
  170. package/lib/examples/PIONANR5L15B0020/input.js +0 -10
  171. package/lib/examples/PIONANR5L15B0020/input.mjs +0 -193
  172. package/lib/examples/PIONANR5L15B0020/input.ts +0 -193
  173. package/lib/examples/PIONANR5L15B0020/loi.json +0 -26
  174. package/lib/examples/PIONANR5L15B0020/loi_populated.json +0 -29
  175. package/lib/examples/PIONANR5L15B0020/meta.json +0 -28
  176. package/lib/examples/PIONANR5L15B0020/motifs.json +0 -5
  177. package/lib/examples/PIONANR5L15B0020/motifs_populated.json +0 -6
  178. package/lib/examples/PIONANR5L15B0020/sommaire.json +0 -3
  179. package/lib/examples/PRJLANR5L16B0914/input.d.ts +0 -2
  180. package/lib/examples/PRJLANR5L16B0914/input.js +0 -10
  181. package/lib/examples/PRJLANR5L16B0914/input.mjs +0 -322
  182. package/lib/examples/PRJLANR5L16B0914/input.ts +0 -322
  183. package/lib/examples/PRJLANR5L16B0914/loi.json +0 -14
  184. package/lib/examples/PRJLANR5L16B0914/loi_populated.json +0 -20
  185. package/lib/examples/PRJLANR5L16B0914/meta.json +0 -35
  186. package/lib/examples/PRJLANR5L16B0914/motifs.json +0 -4
  187. package/lib/examples/PRJLANR5L16B0914/motifs_populated.json +0 -5
  188. package/lib/examples/PRJLANR5L16B0914/sommaire.json +0 -3
  189. package/lib/examples/PRJLANR5L16B2014/README.md +0 -2
  190. package/lib/examples/PRJLANR5L16B2014/input.d.ts +0 -2
  191. package/lib/examples/PRJLANR5L16B2014/input.js +0 -10
  192. package/lib/examples/PRJLANR5L16B2014/input.mjs +0 -577
  193. package/lib/examples/PRJLANR5L16B2014/input.ts +0 -577
  194. package/lib/examples/PRJLANR5L16B2014/loi.json +0 -369
  195. package/lib/examples/PRJLANR5L16B2014/meta.json +0 -31
  196. package/lib/examples/PRJLANR5L16B2014/motifs.json +0 -5
  197. package/lib/examples/PRJLANR5L16B2014/sommaire.json +0 -51
  198. package/lib/examples/PRJLANR5L16B2424/alineas.json +0 -44
  199. package/lib/examples/PRJLANR5L16B2424/input.d.ts +0 -2
  200. package/lib/examples/PRJLANR5L16B2424/input.js +0 -10
  201. package/lib/examples/PRJLANR5L16B2424/input.mjs +0 -322
  202. package/lib/examples/PRJLANR5L16B2424/input.ts +0 -322
  203. package/lib/examples/PRJLANR5L16B2424/loi.json +0 -74
  204. package/lib/examples/PRJLANR5L16B2424/loi_populated.json +0 -87
  205. package/lib/examples/PRJLANR5L16B2424/meta.json +0 -31
  206. package/lib/examples/PRJLANR5L16B2424/motifs.json +0 -4
  207. package/lib/examples/PRJLANR5L16B2424/motifs_populated.json +0 -5
  208. package/lib/examples/PRJLANR5L16B2424/sommaire.json +0 -3
  209. package/lib/examples/PRJLANR5L16B2462/input.d.ts +0 -2
  210. package/lib/examples/PRJLANR5L16B2462/input.js +0 -10
  211. package/lib/examples/PRJLANR5L16B2462/input.mjs +0 -1308
  212. package/lib/examples/PRJLANR5L16B2462/input.ts +0 -1308
  213. package/lib/examples/PRJLANR5L16B2462/loi.json +0 -74
  214. package/lib/examples/PRJLANR5L16B2462/loi_populated.json +0 -310
  215. package/lib/examples/PRJLANR5L16B2462/meta.json +0 -29
  216. package/lib/examples/PRJLANR5L16B2462/motifs.json +0 -6
  217. package/lib/examples/PRJLANR5L16B2462/motifs_populated.json +0 -6
  218. package/lib/examples/PRJLANR5L16B2462/sommaire.json +0 -50
  219. package/lib/examples/README.md +0 -3
  220. package/lib/raw_types/textes_loi.d.ts +0 -93
  221. package/lib/raw_types/textes_loi.js +0 -429
  222. package/lib/raw_types/textes_loi.mjs +0 -378
  223. package/lib/schemas/texte_loi/Alinea.json +0 -36
  224. package/lib/schemas/texte_loi/ExposeMotifs.json +0 -24
  225. package/lib/schemas/texte_loi/MetaDonnees.json +0 -126
  226. package/lib/schemas/texte_loi/ProjetLoi.json +0 -64
  227. package/lib/schemas/texte_loi/Sommaire.json +0 -48
  228. package/lib/schemas/texte_loi/TexteLoi.json +0 -225
  229. package/lib/schemas/texte_loi/TexteLoiPartiel.json +0 -237
  230. package/lib/scripts/process_textes_loi_dataset.d.ts +0 -7
  231. package/lib/scripts/process_textes_loi_dataset.js +0 -373
  232. package/lib/scripts/process_textes_loi_dataset.mjs +0 -239
  233. package/lib/types/textes_loi.d.ts +0 -94
  234. package/lib/types/textes_loi.js +0 -429
  235. 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/LmNvZGVcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBbXCJQSU9OXCIsIFwiUFJKTFwiXVxuXG4gICAgLy8gQ2hlY2sgZG9jdW1lbnQgdHlwZSBhbmQgY2hlY2sgYWxzbyBkb2N1bWVudCB1aWQuXG4gICAgaWYgKFxuICAgICAgIWFsbG93ZWRUeXBlcy5pbmNsdWRlcyhkb2N1bWVudFR5cGUpIHx8XG4gICAgICAhYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGRvY3VtZW50LnVpZClcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGlnbm9yZUlkcy5pbmNsdWRlcyhkb2N1bWVudC51aWQpKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2tpcHBpbmcuIFxuICAgICAgICAgIERvY3VtZW50ICR7ZG9jdW1lbnQudWlkfSBtdXN0IE5PVCBiZSBwcm9jZXNzZWQgYmVjYXVzZSBpdCdzIGluY2x1ZGVkIGluIFwiaWdub3JlSWRzXCIgYXJyYXkuYClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gTk9URTogVGhpcyBjYW4gYmUgb3B0aW1pemVkLlxuICAgIGlmIChvbmx5UHJvY2Vzc0lkcy5sZW5ndGggPiAwICYmICFvbmx5UHJvY2Vzc0lkcy5pbmNsdWRlcyhkb2N1bWVudC51aWQpKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2tpcHBpbmcuIFxuICAgICAgICAgIERvY3VtZW50ICR7ZG9jdW1lbnQudWlkfSBtdXN0IE5PVCBiZSBwcm9jZXNzZWQgYmVjYXVzZSBpdCdzIE5PVCBpbmNsdWRlZCBpbiBcIm9ubHlQcm9jZXNzSWRzXCIgYXJyYXkuYClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgZG9jdW1lbnREaXI6IHN0cmluZyA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudC51aWQpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhkb2N1bWVudERpcilcblxuICAgIGNvbnN0IGh0bWxGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKGRvY3VtZW50RGlyLCBcImR5bi1vcGVuZGF0YS5odG1sXCIpXG4gICAgY29uc3QgaHRtbFRlbXBGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgZG9jdW1lbnREaXIsXG4gICAgICBcImR5bi1vcGVuZGF0YV90ZW1wLmh0bWxcIixcbiAgICApXG5cbiAgICBjb25zdCB1cmw6IHN0cmluZyA9IGBodHRwczovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL2R5bi9vcGVuZGF0YS8ke2RvY3VtZW50LnVpZH0uaHRtbGBcblxuICAgIGlmIChmZXRjaERvY3VtZW50cyA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJldHJpZXZpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9IGF0ICR7dXJsfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBSZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcblxuICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGF3YWl0IHBpcGVsaW5lKFxuICAgICAgICAgIHJlc3BvbnNlLmJvZHkgYXMgdW5rbm93biBhcyBOb2RlSlMuUmVhZGFibGVTdHJlYW0sXG4gICAgICAgICAgZnMuY3JlYXRlV3JpdGVTdHJlYW0oaHRtbFRlbXBGaWxlUGF0aCksXG4gICAgICAgIClcbiAgICAgICAgZnMucmVuYW1lU3luYyhodG1sVGVtcEZpbGVQYXRoLCBodG1sRmlsZVBhdGgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIXByb2Nlc3MuZW52Lk9QRU5BSV9BUElfS0VZIHx8XG4gICAgICB0eXBlb2YgcHJvY2Vzcy5lbnYuT1BFTkFJX0FQSV9LRVkgIT09IFwic3RyaW5nXCJcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oZG9jdW1lbnREaXIsIGAke2RvY3VtZW50LnVpZH0uanNvbmApXG5cbiAgICAvLyBJZiBIVE1MIGRvZXMgbm90IGV4aXN0LCBjb250aW51ZVxuICAgIGlmICghZnMuZXhpc3RzU3luYyhodG1sRmlsZVBhdGgpKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2tpcHBpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9YClcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSAmJiAhZnVsbCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBodG1sOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoaHRtbEZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuXG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUuZ3JvdXAoYFBhcnNpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR94oCmYClcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgYXdhaXQgZXh0cmFjdFRleHRlTG9pKHtcbiAgICAgICAgICBodG1sLFxuICAgICAgICAgIGRvY3VtZW50LFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAganNvbkZpbGVQYXRoLFxuICAgICAgICAgIHNob3VsZENyZWF0ZUV4YW1wbGUsXG4gICAgICAgICAgZXhhbXBsZURpcixcbiAgICAgICAgfSksXG4gICAgICAgIHRpbWVvdXQodGV4dFByb2Nlc3NUaW1lb3V0KSxcbiAgICAgIF0pXG5cbiAgICAgIGxvZ1N1Y2Nlc3Moe1xuICAgICAgICBkb2N1bWVudElkOiBkb2N1bWVudC51aWQsXG4gICAgICAgIGRpcmVjdG9yeTogbG9nVG9kYXlEaXIsXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCkgLy8gRW5kaW5nIGdyb3VwOiBQYXJzaW5nIGRvY3VtZW50ICR7ZG9jdW1lbnQudWlkfeKAplxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGV4dHJhY3RpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9LmAsIGVycm9yKVxuICAgICAgfVxuXG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGRpcmVjdG9yeTogbG9nVG9kYXlEaXIsXG4gICAgICAgIGRvY3VtZW50SWQ6IGRvY3VtZW50LnVpZCxcbiAgICAgICAgZXJyb3JTdGFja1RyYWNlOiBlcnJvci50b1N0cmluZygpLFxuICAgICAgfSlcbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKSAvLyBFbmRpbmcgZ3JvdXA6IFBhcnNpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR94oCmXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICBjb25zb2xlLmdyb3VwRW5kKCkgLy8gRW5kaW5nIGdyb3VwOiBQcm9jZXNzVGV4dGVzTG9pRGF0YXNldFxuICB9XG5cbiAgcmV0dXJuIDBcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFRleHRlTG9pKHtcbiAgaHRtbCxcbiAgZG9jdW1lbnQsXG4gIG9wdGlvbnMsXG4gIGpzb25GaWxlUGF0aCxcbiAgc2hvdWxkQ3JlYXRlRXhhbXBsZSxcbiAgZXhhbXBsZURpcixcbn06IEV4dHJhY3RUZXh0TG9pT3B0aW9ucykge1xuICBjb25zdCB0ZXh0ZUxvaURhdGE6IGFueSA9IGF3YWl0IHBhcnNlVGV4dGVMb2koaHRtbClcblxuICBpZiAoIXRleHRlTG9pRGF0YSkge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBFcnJvciB3aGVuIHBhcnNpbmcgZG9jdW1lbnQgJHtkb2N1bWVudC51aWR9YClcbiAgICB9XG4gICAgdGhyb3cgRXJyb3IoYHRleHRMb2lEYXRhIGNvdWxkIG5vdCBiZSBleHRyYWN0ZWQuYClcbiAgfVxuXG4gIHRleHRlTG9pRGF0YS5tZXRhLnVpZCA9IGRvY3VtZW50LnVpZFxuICB0ZXh0ZUxvaURhdGEubWV0YS5kb2N1bWVudFJlZiA9IGRvY3VtZW50LnVpZFxuXG4gIGNvbnN0IGpzb25EYXRhID0ge1xuICAgIC4uLnRleHRlTG9pRGF0YS5tZXRhLFxuICAgIHNvbW1haXJlOiB0ZXh0ZUxvaURhdGEuc29tbWFpcmUgPz8gW10sXG4gICAgY29udGVudToge1xuICAgICAgYXJ0aWNsZXM6IHRleHRlTG9pRGF0YS5sb2kuYXJ0aWNsZXMsXG4gICAgICBleHBvc2VNb3RpZnM6IHRleHRlTG9pRGF0YS5leHBvc2VNb3RpZnMsXG4gICAgfSxcbiAgfVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoanNvbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uRGF0YSwgbnVsbCwgMikpXG5cbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBEb2N1bWVudCAke2RvY3VtZW50LnVpZH0gc3VjY2Vzc2Z1bGx5IHBhcnNlZCAhYClcbiAgfVxuXG4gIGlmIChzaG91bGRDcmVhdGVFeGFtcGxlKSB7XG4gICAgY3JlYXRlRXhhbXBsZSh7XG4gICAgICBkYXRhOiB0ZXh0ZUxvaURhdGEsXG4gICAgICBkb2N1bWVudElkOiBkb2N1bWVudC51aWQsXG4gICAgICBkaXJlY3Rvcnk6IGV4YW1wbGVEaXIsXG4gICAgICBzaWxlbnQ6IG9wdGlvbnMuc2lsZW50LFxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRXhhbXBsZSh7XG4gIGRhdGEsXG4gIGRpcmVjdG9yeSxcbiAgZG9jdW1lbnRJZCxcbiAgc2lsZW50LFxufTogRXhhbXBsZU9wdGlvbnMpIHtcbiAgY29uc3QgZXhhbXBsZURpcjogc3RyaW5nID0gcGF0aC5qb2luKGRpcmVjdG9yeSwgZG9jdW1lbnRJZClcbiAgZnMuZW5zdXJlRGlyU3luYyhleGFtcGxlRGlyKVxuXG4gIGlmICghc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coXCJHZW5lcmF0ZSBleGFtcGxlIGF0OiBcIiwgZXhhbXBsZURpcilcbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEpKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbihleGFtcGxlRGlyLCBgJHtrZXl9Lmpzb25gKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKSxcbiAgICApXG4gIH1cbn1cblxuZnVuY3Rpb24gbG9nRXJyb3IoeyBkaXJlY3RvcnksIGRvY3VtZW50SWQsIGVycm9yU3RhY2tUcmFjZSB9OiBMb2dPcHRpb25zKSB7XG4gIGNvbnN0IGVycm9yc0ZpbGVQYXRoID0gcGF0aC5qb2luKGRpcmVjdG9yeSwgXCJlcnJvcnMuanNvblwiKVxuICBsZXQgZXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHsgZGF0ZTogc3RyaW5nOyBlcnJvcjogc3RyaW5nIH0gfSA9IHt9XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoZXJyb3JzRmlsZVBhdGgpKSB7XG4gICAgY29uc3QgZGF0YTogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGVycm9yc0ZpbGVQYXRoLCBcInV0ZjhcIilcbiAgICBlcnJvcnMgPSBKU09OLnBhcnNlKGRhdGEpXG4gIH1cblxuICBlcnJvcnNbZG9jdW1lbnRJZF0gPSB7XG4gICAgZGF0ZTogbmV3IERhdGUoKVxuICAgICAgLnRvVVRDU3RyaW5nKClcbiAgICAgIC5yZXBsYWNlQWxsKFwiOlwiLCBcIi1cIilcbiAgICAgIC5yZXBsYWNlKFwiLFwiLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoXCIgXCIsIFwiLVwiKSxcbiAgICBlcnJvcjogZXJyb3JTdGFja1RyYWNlID8/IFwiXCIsXG4gIH1cblxuICBmcy53cml0ZUZpbGVTeW5jKGVycm9yc0ZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShlcnJvcnMsIG51bGwsIDIpLCBcInV0ZjhcIilcbn1cblxuZnVuY3Rpb24gbG9nU3VjY2Vzcyh7IGRpcmVjdG9yeSwgZG9jdW1lbnRJZCB9OiBMb2dPcHRpb25zKSB7XG4gIGNvbnN0IHN1Y2Nlc3Nlc0ZpbGVQYXRoID0gcGF0aC5qb2luKGRpcmVjdG9yeSwgXCJzdWNjZXNzZXMuanNvblwiKVxuICBsZXQgc3VjY2Vzc2VzOiB7IFtrZXk6IHN0cmluZ106IHsgZGF0ZTogc3RyaW5nOyBzdWNjZXNzOiBib29sZWFuIH0gfSA9IHt9XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoc3VjY2Vzc2VzRmlsZVBhdGgpKSB7XG4gICAgY29uc3QgZGF0YTogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHN1Y2Nlc3Nlc0ZpbGVQYXRoLCBcInV0ZjhcIilcbiAgICBzdWNjZXNzZXMgPSBKU09OLnBhcnNlKGRhdGEpXG4gIH1cblxuICBzdWNjZXNzZXNbZG9jdW1lbnRJZF0gPSB7XG4gICAgZGF0ZTogbmV3IERhdGUoKVxuICAgICAgLnRvVVRDU3RyaW5nKClcbiAgICAgIC5yZXBsYWNlQWxsKFwiOlwiLCBcIi1cIilcbiAgICAgIC5yZXBsYWNlKFwiLFwiLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoXCIgXCIsIFwiLVwiKSxcbiAgICBzdWNjZXNzOiB0cnVlLFxuICB9XG5cbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBzdWNjZXNzZXNGaWxlUGF0aCxcbiAgICBKU09OLnN0cmluZ2lmeShzdWNjZXNzZXMsIG51bGwsIDIpLFxuICAgIFwidXRmOFwiLFxuICApXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHByb21pc2UgdGhhdCByZWplY3RzIHdpdGggYW4gZXJyb3IgYWZ0ZXIgYSBzcGVjaWZpZWQgdGltZW91dC5cbiAqIElmIHRoZSB0aW1lb3V0IGR1cmF0aW9uIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCB0aGUgcHJvbWlzZSByZXNvbHZlcyBpbW1lZGlhdGVseS5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbXMgLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSByZWplY3RpbmcgdGhlIHByb21pc2UuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVqZWN0cyB3aXRoIGFuIGVycm9yIGFmdGVyIHRoZSBzcGVjaWZpZWQgdGltZW91dC5cbiAqL1xuZnVuY3Rpb24gdGltZW91dChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKG1zIDw9IDApIHtcbiAgICAgIHJlc29sdmUoKVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIk9wZXJhdGlvbiB0aW1lZCBvdXRcIikpXG4gICAgfSwgbXMpXG4gIH0pXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQ3ZCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQ3ZCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQUEsU0FDbEJDLDBCQUEwQixFQUFFQyxtQkFBbUI7QUFBQSxTQUMvQ0MsYUFBYTtBQUd0QixNQUFNQyxRQUFRLEdBQUdMLElBQUksQ0FBQ00sU0FBUyxDQUFDTCxNQUFNLENBQUNJLFFBQVEsQ0FBQztBQThCaEQsT0FBTyxlQUFlRSx1QkFBdUJBLENBQzNDQyxJQUErQixFQUNkO0VBQ2pCLE1BQU07SUFBRUMsT0FBTztJQUFFQyxPQUFPO0lBQUVDO0VBQVEsQ0FBQyxHQUFHSCxJQUFJO0VBRTFDLE1BQU07SUFDSkksTUFBTSxHQUFHLEtBQUs7SUFDZEMsSUFBSSxHQUFHLEtBQUs7SUFDWkMsY0FBYztJQUNkQyxTQUFTLEdBQUcsRUFBRTtJQUNkQyxXQUFXO0lBQ1hDLGNBQWMsR0FBRyxFQUFFO0lBQ25CQyxrQkFBa0IsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDcENDLG1CQUFtQixHQUFHO0VBQ3hCLENBQUMsR0FBR1IsT0FBTztFQUVYLElBQUksQ0FBQ0Ms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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
- }