@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.
- package/README.md +0 -5
- package/lib/api.js +1 -1
- package/lib/api.mjs +1 -1
- package/lib/bugs/acteur-00010/plugin.test.js +5 -5
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +17 -18
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +6 -6
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +31 -32
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +5 -5
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +17 -18
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +10 -10
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +28 -29
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +27 -29
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/actes_legislatifs.mjs +1 -1
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/amendements.mjs +1 -1
- package/lib/cleaners/debats.js +1 -1
- package/lib/cleaners/debats.mjs +1 -1
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/documents.mjs +1 -1
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
- package/lib/cleaners/index.d.ts +0 -1
- package/lib/cleaners/index.js +1 -8
- package/lib/cleaners/index.mjs +1 -2
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/organes.mjs +1 -1
- package/lib/cleaners/questions.js +1 -1
- package/lib/cleaners/questions.mjs +1 -1
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/reunions.mjs +1 -1
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/scrutins.mjs +1 -1
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +1 -13
- package/lib/datasets.js +10 -29
- package/lib/datasets.mjs +2 -21
- package/lib/dates.js +3 -4
- package/lib/dates.mjs +1 -1
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/dossiers_legislatifs.mjs +1 -1
- package/lib/file_systems.js +15 -14
- package/lib/file_systems.mjs +3 -3
- package/lib/git.js +5 -5
- package/lib/git.mjs +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.js +14 -1
- package/lib/index.mjs +3 -2
- package/lib/inserters.js +4 -4
- package/lib/inserters.mjs +1 -1
- package/lib/loaders.d.ts +0 -5
- package/lib/loaders.js +255 -299
- package/lib/loaders.mjs +1 -13
- package/lib/logger.js +1 -1
- package/lib/logger.mjs +1 -1
- package/lib/organes.js +1 -1
- package/lib/organes.mjs +1 -1
- package/lib/parsers/documents.js +11 -11
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/index.d.ts +1 -0
- package/lib/parsers/index.js +8 -1
- package/lib/parsers/index.mjs +2 -1
- package/lib/parsers/recherche_amendements.js +17 -15
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/parsers/textes_lois.d.ts +22 -15
- package/lib/parsers/textes_lois.js +264 -752
- package/lib/parsers/textes_lois.mjs +249 -597
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.d.ts +1 -0
- package/lib/raw_types/agendas.js +11 -10
- package/lib/raw_types/agendas.mjs +3 -2
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.js +9 -9
- package/lib/raw_types/debats.mjs +1 -1
- package/lib/raw_types/dossiers_legislatifs.js +9 -9
- package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +9 -9
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +25 -26
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +256 -245
- package/lib/scripts/clean_reorganized_data.mjs +18 -29
- package/lib/scripts/diff_amendements.js +9 -8
- package/lib/scripts/diff_amendements.mjs +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +24 -27
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +3 -2
- package/lib/scripts/get_today_reunions.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +9 -8
- package/lib/scripts/merge_scrutins.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +6 -5
- package/lib/scripts/parse_textes_lois.mjs +1 -1
- package/lib/scripts/process_open_dataset.d.ts +0 -2
- package/lib/scripts/process_open_dataset.js +19 -19
- package/lib/scripts/process_open_dataset.mjs +3 -5
- package/lib/scripts/raw_types_from_amendements.d.ts +0 -1
- package/lib/scripts/raw_types_from_amendements.js +122 -198
- package/lib/scripts/raw_types_from_amendements.mjs +105 -60
- package/lib/scripts/reorganize_data.js +14 -15
- package/lib/scripts/reorganize_data.mjs +3 -3
- package/lib/scripts/retrieve_deputes_photos.js +40 -31
- package/lib/scripts/retrieve_deputes_photos.mjs +10 -2
- package/lib/scripts/retrieve_documents.d.ts +1 -1
- package/lib/scripts/retrieve_documents.js +230 -138
- package/lib/scripts/retrieve_documents.mjs +87 -38
- package/lib/scripts/retrieve_open_data.js +27 -30
- package/lib/scripts/retrieve_open_data.mjs +5 -8
- package/lib/scripts/retrieve_pending_amendments.js +14 -14
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
- package/lib/scripts/retrieve_senateurs_photos.js +10 -10
- package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
- package/lib/scripts/retrieve_textes_lois.js +17 -15
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/shared/cli_helpers.d.ts +11 -0
- package/lib/scripts/shared/cli_helpers.js +13 -2
- package/lib/scripts/shared/cli_helpers.mjs +12 -1
- package/lib/scripts/test_iter_load.js +5 -19
- package/lib/scripts/test_iter_load.mjs +2 -9
- package/lib/scripts/test_load.js +2 -2
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +2 -2
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/scripts/validate_json.js +17 -18
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/shared_types/codes_actes.js +1 -1
- package/lib/shared_types/codes_actes.mjs +1 -1
- package/lib/strings.js +1 -1
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.d.ts +1 -0
- package/lib/types/agendas.js +11 -10
- package/lib/types/agendas.mjs +3 -2
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.js +9 -9
- package/lib/types/debats.mjs +1 -1
- package/lib/types/dossiers_legislatifs.d.ts +13 -0
- package/lib/types/dossiers_legislatifs.js +47 -9
- package/lib/types/dossiers_legislatifs.mjs +39 -1
- package/lib/types/legislatures.js +1 -1
- package/lib/types/legislatures.mjs +1 -1
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +14 -20
- package/lib/cleaners/textes_loi.d.ts +0 -1
- package/lib/cleaners/textes_loi.js +0 -12
- package/lib/cleaners/textes_loi.mjs +0 -5
- package/lib/examples/PIONANR5L15B0020/input.d.ts +0 -2
- package/lib/examples/PIONANR5L15B0020/input.js +0 -10
- package/lib/examples/PIONANR5L15B0020/input.mjs +0 -193
- package/lib/examples/PIONANR5L15B0020/input.ts +0 -193
- package/lib/examples/PIONANR5L15B0020/loi.json +0 -26
- package/lib/examples/PIONANR5L15B0020/loi_populated.json +0 -29
- package/lib/examples/PIONANR5L15B0020/meta.json +0 -28
- package/lib/examples/PIONANR5L15B0020/motifs.json +0 -5
- package/lib/examples/PIONANR5L15B0020/motifs_populated.json +0 -6
- package/lib/examples/PIONANR5L15B0020/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B0914/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B0914/input.js +0 -10
- package/lib/examples/PRJLANR5L16B0914/input.mjs +0 -322
- package/lib/examples/PRJLANR5L16B0914/input.ts +0 -322
- package/lib/examples/PRJLANR5L16B0914/loi.json +0 -14
- package/lib/examples/PRJLANR5L16B0914/loi_populated.json +0 -20
- package/lib/examples/PRJLANR5L16B0914/meta.json +0 -35
- package/lib/examples/PRJLANR5L16B0914/motifs.json +0 -4
- package/lib/examples/PRJLANR5L16B0914/motifs_populated.json +0 -5
- package/lib/examples/PRJLANR5L16B0914/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B2014/README.md +0 -2
- package/lib/examples/PRJLANR5L16B2014/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2014/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2014/input.mjs +0 -577
- package/lib/examples/PRJLANR5L16B2014/input.ts +0 -577
- package/lib/examples/PRJLANR5L16B2014/loi.json +0 -369
- package/lib/examples/PRJLANR5L16B2014/meta.json +0 -31
- package/lib/examples/PRJLANR5L16B2014/motifs.json +0 -5
- package/lib/examples/PRJLANR5L16B2014/sommaire.json +0 -51
- package/lib/examples/PRJLANR5L16B2424/alineas.json +0 -44
- package/lib/examples/PRJLANR5L16B2424/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2424/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2424/input.mjs +0 -322
- package/lib/examples/PRJLANR5L16B2424/input.ts +0 -322
- package/lib/examples/PRJLANR5L16B2424/loi.json +0 -74
- package/lib/examples/PRJLANR5L16B2424/loi_populated.json +0 -87
- package/lib/examples/PRJLANR5L16B2424/meta.json +0 -31
- package/lib/examples/PRJLANR5L16B2424/motifs.json +0 -4
- package/lib/examples/PRJLANR5L16B2424/motifs_populated.json +0 -5
- package/lib/examples/PRJLANR5L16B2424/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B2462/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2462/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2462/input.mjs +0 -1308
- package/lib/examples/PRJLANR5L16B2462/input.ts +0 -1308
- package/lib/examples/PRJLANR5L16B2462/loi.json +0 -74
- package/lib/examples/PRJLANR5L16B2462/loi_populated.json +0 -310
- package/lib/examples/PRJLANR5L16B2462/meta.json +0 -29
- package/lib/examples/PRJLANR5L16B2462/motifs.json +0 -6
- package/lib/examples/PRJLANR5L16B2462/motifs_populated.json +0 -6
- package/lib/examples/PRJLANR5L16B2462/sommaire.json +0 -50
- package/lib/examples/README.md +0 -3
- package/lib/raw_types/textes_loi.d.ts +0 -93
- package/lib/raw_types/textes_loi.js +0 -429
- package/lib/raw_types/textes_loi.mjs +0 -378
- package/lib/schemas/texte_loi/Alinea.json +0 -36
- package/lib/schemas/texte_loi/ExposeMotifs.json +0 -24
- package/lib/schemas/texte_loi/MetaDonnees.json +0 -126
- package/lib/schemas/texte_loi/ProjetLoi.json +0 -64
- package/lib/schemas/texte_loi/Sommaire.json +0 -48
- package/lib/schemas/texte_loi/TexteLoi.json +0 -225
- package/lib/schemas/texte_loi/TexteLoiPartiel.json +0 -237
- package/lib/scripts/process_textes_loi_dataset.d.ts +0 -7
- package/lib/scripts/process_textes_loi_dataset.js +0 -373
- package/lib/scripts/process_textes_loi_dataset.mjs +0 -239
- package/lib/types/textes_loi.d.ts +0 -94
- package/lib/types/textes_loi.js +0 -429
- 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
|
-
}
|