@tricoteuses/assemblee 1.0.0-next.2 → 1.0.2

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 (135) hide show
  1. package/README.md +2 -0
  2. package/lib/api.js +23 -7
  3. package/lib/api.mjs +41 -0
  4. package/lib/bugs/acteur-00010/plugin.test.js +139 -33
  5. package/lib/bugs/acteur-00010/plugin.test.mjs +33 -0
  6. package/lib/bugs/acteur-00010.js +166 -24
  7. package/lib/bugs/acteur-00010.mjs +31 -0
  8. package/lib/bugs/agenda-00002/plugin.test.js +178 -52
  9. package/lib/bugs/agenda-00002/plugin.test.mjs +52 -0
  10. package/lib/bugs/agenda-00002.js +507 -143
  11. package/lib/bugs/agenda-00002.mjs +197 -0
  12. package/lib/bugs/agenda-00008/plugin.test.js +143 -31
  13. package/lib/bugs/agenda-00008/plugin.test.mjs +31 -0
  14. package/lib/bugs/agenda-00008.js +180 -25
  15. package/lib/bugs/agenda-00008.mjs +30 -0
  16. package/lib/bugs/agenda-00011/plugin.test.js +371 -156
  17. package/lib/bugs/agenda-00011/plugin.test.mjs +156 -0
  18. package/lib/bugs/agenda-00011.js +416 -117
  19. package/lib/bugs/agenda-00011.mjs +150 -0
  20. package/lib/bugs.js +591 -54
  21. package/lib/bugs.mjs +93 -0
  22. package/lib/cleaners/actes_legislatifs.js +149 -61
  23. package/lib/cleaners/actes_legislatifs.mjs +311 -0
  24. package/lib/cleaners/acteurs.js +255 -123
  25. package/lib/cleaners/acteurs.mjs +211 -0
  26. package/lib/cleaners/amendements.js +242 -117
  27. package/lib/cleaners/amendements.mjs +292 -0
  28. package/lib/cleaners/documents.js +147 -62
  29. package/lib/cleaners/documents.mjs +162 -0
  30. package/lib/cleaners/dossiers_legislatifs.js +132 -45
  31. package/lib/cleaners/dossiers_legislatifs.mjs +123 -0
  32. package/lib/cleaners/index.js +64 -8
  33. package/lib/cleaners/index.mjs +8 -0
  34. package/lib/cleaners/organes.js +54 -21
  35. package/lib/cleaners/organes.mjs +64 -0
  36. package/lib/cleaners/reunions.js +237 -127
  37. package/lib/cleaners/reunions.mjs +318 -0
  38. package/lib/cleaners/scrutins.js +261 -99
  39. package/lib/cleaners/scrutins.mjs +254 -0
  40. package/lib/cleaners/xml.js +81 -16
  41. package/lib/cleaners/xml.mjs +42 -0
  42. package/lib/datasets.js +284 -153
  43. package/lib/datasets.mjs +596 -0
  44. package/lib/dates.js +93 -34
  45. package/lib/dates.mjs +98 -0
  46. package/lib/dossiers_legislatifs.js +107 -33
  47. package/lib/dossiers_legislatifs.mjs +215 -0
  48. package/lib/file_systems.js +203 -35
  49. package/lib/file_systems.mjs +64 -0
  50. package/lib/git.js +139 -41
  51. package/lib/git.mjs +114 -0
  52. package/lib/index.js +310 -16
  53. package/lib/index.mjs +16 -0
  54. package/lib/inserters.js +355 -131
  55. package/lib/inserters.mjs +413 -0
  56. package/lib/loaders.js +900 -440
  57. package/lib/loaders.mjs +678 -0
  58. package/lib/organes.js +15 -5
  59. package/lib/organes.mjs +18 -0
  60. package/lib/parsers/documents.js +241 -89
  61. package/lib/parsers/documents.mjs +433 -0
  62. package/lib/parsers/index.js +36 -3
  63. package/lib/parsers/index.mjs +3 -0
  64. package/lib/parsers/recherche_amendements.js +616 -173
  65. package/lib/parsers/recherche_amendements.mjs +189 -0
  66. package/lib/raw_types/acteurs_et_organes.d.ts +36 -148
  67. package/lib/raw_types/acteurs_et_organes.js +228 -506
  68. package/lib/raw_types/acteurs_et_organes.mjs +1240 -0
  69. package/lib/raw_types/agendas.js +165 -75
  70. package/lib/raw_types/agendas.mjs +944 -0
  71. package/lib/raw_types/amendements.js +165 -77
  72. package/lib/raw_types/amendements.mjs +1040 -0
  73. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -43
  74. package/lib/raw_types/dossiers_legislatifs.js +181 -143
  75. package/lib/raw_types/dossiers_legislatifs.mjs +1792 -0
  76. package/lib/raw_types/scrutins.js +144 -61
  77. package/lib/raw_types/scrutins.mjs +645 -0
  78. package/lib/scripts/bugs_helper.js +657 -155
  79. package/lib/scripts/bugs_helper.mjs +286 -0
  80. package/lib/scripts/clean_data.js +380 -145
  81. package/lib/scripts/clean_data.mjs +190 -0
  82. package/lib/scripts/clean_reorganized_data.js +627 -331
  83. package/lib/scripts/clean_reorganized_data.mjs +520 -0
  84. package/lib/scripts/diff_amendements.js +159 -73
  85. package/lib/scripts/diff_amendements.mjs +234 -0
  86. package/lib/scripts/document_dossiers_legislatifs.js +570 -288
  87. package/lib/scripts/document_dossiers_legislatifs.mjs +494 -0
  88. package/lib/scripts/get_today_reunions.js +37 -20
  89. package/lib/scripts/get_today_reunions.mjs +41 -0
  90. package/lib/scripts/merge_scrutins.js +121 -39
  91. package/lib/scripts/merge_scrutins.mjs +69 -0
  92. package/lib/scripts/parse_textes_lois.js +179 -125
  93. package/lib/scripts/parse_textes_lois.mjs +215 -0
  94. package/lib/scripts/raw_types_from_amendements.js +276 -77
  95. package/lib/scripts/raw_types_from_amendements.mjs +118 -0
  96. package/lib/scripts/reorganize_data.js +867 -446
  97. package/lib/scripts/reorganize_data.mjs +712 -0
  98. package/lib/scripts/retrieve_deputes_photos.js +378 -157
  99. package/lib/scripts/retrieve_deputes_photos.mjs +230 -0
  100. package/lib/scripts/retrieve_documents.js +648 -172
  101. package/lib/scripts/retrieve_documents.mjs +292 -0
  102. package/lib/scripts/retrieve_open_data.js +286 -85
  103. package/lib/scripts/retrieve_open_data.mjs +125 -0
  104. package/lib/scripts/retrieve_pending_amendments.js +302 -69
  105. package/lib/scripts/retrieve_pending_amendments.mjs +130 -0
  106. package/lib/scripts/retrieve_senateurs_photos.js +374 -198
  107. package/lib/scripts/retrieve_senateurs_photos.mjs +277 -0
  108. package/lib/scripts/retrieve_textes_lois.js +343 -89
  109. package/lib/scripts/retrieve_textes_lois.mjs +168 -0
  110. package/lib/scripts/test_load.js +30 -11
  111. package/lib/scripts/test_load.mjs +26 -0
  112. package/lib/scripts/test_load_big_files.js +30 -11
  113. package/lib/scripts/test_load_big_files.mjs +26 -0
  114. package/lib/scripts/validate_json.js +370 -120
  115. package/lib/scripts/validate_json.mjs +216 -0
  116. package/lib/shared_types/codes_actes.js +50 -15
  117. package/lib/shared_types/codes_actes.mjs +228 -0
  118. package/lib/strings.js +16 -3
  119. package/lib/strings.mjs +7 -0
  120. package/lib/types/acteurs_et_organes.js +156 -71
  121. package/lib/types/acteurs_et_organes.mjs +918 -0
  122. package/lib/types/agendas.js +154 -67
  123. package/lib/types/agendas.mjs +623 -0
  124. package/lib/types/amendements.js +166 -77
  125. package/lib/types/amendements.mjs +885 -0
  126. package/lib/types/dossiers_legislatifs.d.ts +1 -42
  127. package/lib/types/dossiers_legislatifs.js +182 -143
  128. package/lib/types/dossiers_legislatifs.mjs +1120 -0
  129. package/lib/types/legislatures.js +12 -3
  130. package/lib/types/legislatures.mjs +9 -0
  131. package/lib/types/scrutins.js +144 -61
  132. package/lib/types/scrutins.mjs +528 -0
  133. package/lib/urls.js +44 -25
  134. package/lib/urls.mjs +201 -0
  135. package/package.json +33 -12
package/lib/urls.js CHANGED
@@ -1,12 +1,30 @@
1
- export let DocumentUrlFormat;
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DocumentUrlFormat = void 0;
9
+ exports.urlFromDocument = urlFromDocument;
10
+ exports.urlFromScrutin = urlFromScrutin;
11
+
12
+ require("core-js/modules/es.regexp.exec.js");
13
+
14
+ require("core-js/modules/es.array.concat.js");
15
+
16
+ require("core-js/modules/es.string.replace.js");
17
+
18
+ var DocumentUrlFormat;
19
+ exports.DocumentUrlFormat = DocumentUrlFormat;
2
20
 
3
21
  (function (DocumentUrlFormat) {
4
22
  DocumentUrlFormat["Html"] = "html";
5
23
  DocumentUrlFormat["Pdf"] = "pdf";
6
24
  DocumentUrlFormat["RawHtml"] = "raw-html";
7
- })(DocumentUrlFormat || (DocumentUrlFormat = {}));
25
+ })(DocumentUrlFormat || (exports.DocumentUrlFormat = DocumentUrlFormat = {}));
8
26
 
9
- const documentUrlFragmentsByType = {
27
+ var documentUrlFragmentsByType = {
10
28
  ACIN: {
11
29
  directory: "projets",
12
30
  prefix: "pl",
@@ -132,34 +150,34 @@ function extensionFromDocumentUrlFormat(format) {
132
150
  }
133
151
  }
134
152
 
135
- export function urlFromDocument(document, format) {
153
+ function urlFromDocument(document, format) {
136
154
  // Code taken from function `an_text_url` in project anpy:
137
155
  // https://github.com/regardscitoyens/anpy/blob/master/anpy/dossier_from_opendata.py
138
156
  // See http://www.assemblee-nationale.fr/opendata/Implementation_Referentiel/Identifiants_Referentiels.html
139
157
  // for a description of the format of an UID.
140
- const extension = extensionFromDocumentUrlFormat(format);
141
- const match = /^(.{4})([ANS]*)(R[0-9])([LS]*)([0-9]*)([BTACP]*)(.*)$/.exec(document.uid);
158
+ var extension = extensionFromDocumentUrlFormat(format);
159
+ var match = /^(.{4})([ANS]*)(R[0-9])([LS]*)([0-9]*)([BTACP]*)(.*)$/.exec(document.uid);
142
160
 
143
161
  if (match === null) {
144
- console.log(`Unable to generate URL from document with unexpected UID: "${document.uid}"`);
162
+ console.log("Unable to generate URL from document with unexpected UID: \"".concat(document.uid, "\""));
145
163
  return null;
146
164
  }
147
165
 
148
- const chambre = match[2];
166
+ var chambre = match[2];
149
167
 
150
168
  if (chambre === "SN") {
151
- console.log(`Unable to generate URL for document in Sénat. UID: "${document.uid}"`);
169
+ console.log("Unable to generate URL for document in S\xE9nat. UID: \"".concat(document.uid, "\""));
152
170
  return null;
153
171
  }
154
172
 
155
- const legislature = match[5];
156
- let number = match[7];
173
+ var legislature = match[5];
174
+ var number = match[7];
157
175
 
158
176
  if (format === DocumentUrlFormat.RawHtml) {
159
- return `http://www.assemblee-nationale.fr/${legislature}/textes/${number}${extension}`;
177
+ return "http://www.assemblee-nationale.fr/".concat(legislature, "/textes/").concat(number).concat(extension);
160
178
  }
161
179
 
162
- let documentType = {
180
+ var documentType = {
163
181
  BTC: "TCOM",
164
182
  BTA: "TADO",
165
183
  TAP: "TADO"
@@ -171,31 +189,32 @@ export function urlFromDocument(document, format) {
171
189
  }
172
190
 
173
191
  if (documentType == "AVCE") {
174
- documentType = `AVCE${document.classification.famille.classe.code}`;
192
+ documentType = "AVCE".concat(document.classification.famille.classe.code);
175
193
  }
176
194
 
177
- const fragments = documentUrlFragmentsByType[documentType];
195
+ var fragments = documentUrlFragmentsByType[documentType];
178
196
 
179
197
  if (fragments === undefined) {
180
198
  // For example: ALCNANR5L15B0002 (allocution du président)
181
- console.log(`Unable to generate URL from document of UID "${document.uid}" and type "${documentType}"`);
199
+ console.log("Unable to generate URL from document of UID \"".concat(document.uid, "\" and type \"").concat(documentType, "\""));
182
200
  return null;
183
201
  }
184
202
 
185
- const directory = format === DocumentUrlFormat.Pdf ? `pdf/${fragments.directory}` : fragments.directory;
186
- return `http://www.assemblee-nationale.fr/${legislature}/${directory}/${fragments.prefix}${number}${fragments.suffix}${extension}`;
203
+ var directory = format === DocumentUrlFormat.Pdf ? "pdf/".concat(fragments.directory) : fragments.directory;
204
+ return "http://www.assemblee-nationale.fr/".concat(legislature, "/").concat(directory, "/").concat(fragments.prefix).concat(number).concat(fragments.suffix).concat(extension);
187
205
  }
188
- export function urlFromScrutin(scrutin) {
206
+
207
+ function urlFromScrutin(scrutin) {
189
208
  // Sample UIDs: VTANR5L15V389
190
- const match = /^VTANR([0-9]+)L([0-9]+)V([0-9]+)$/.exec(scrutin.uid);
209
+ var match = /^VTANR([0-9]+)L([0-9]+)V([0-9]+)$/.exec(scrutin.uid);
191
210
 
192
211
  if (match === null) {
193
- console.log(`Unable to generate URL from scrutin with unexpected UID: "${scrutin.uid}"`);
212
+ console.log("Unable to generate URL from scrutin with unexpected UID: \"".concat(scrutin.uid, "\""));
194
213
  return null;
195
214
  }
196
215
 
197
- const legislature = match[2];
198
- const numero = match[3];
199
- return `http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/${legislature}/(num)/${numero}`;
216
+ var legislature = match[2];
217
+ var numero = match[3];
218
+ return "http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/".concat(legislature, "/(num)/").concat(numero);
200
219
  }
201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFVybEZvcm1hdCIsImRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlIiwiQUNJTiIsImRpcmVjdG9yeSIsInByZWZpeCIsInN1ZmZpeCIsIkFWQ0VQUkpMT0kiLCJBVkNFTEVUVFJFIiwiQVZDRVBJT05MT0kiLCJBVklTIiwiRVRESSIsIkxFVFQiLCJQSU9OIiwiUE5SRSIsIlBOUkVBUFBBUlQzNDEiLCJQTlJFQ09NRU5RIiwiUE5SRU1PRFJFR0xUQU4iLCJQTlJFVFZYSU5TVElURVVST1AiLCJQUkpMIiwiUkFQUCIsIlJJTkYiLCJSSU9OIiwiVEFETyIsIlRDT00iLCJUQ09NQ09NRU5RIiwiVENPTU1PRFJFR0xUQU4iLCJUQ09NVFZYSU5TVElURVVST1AiLCJleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQiLCJmb3JtYXQiLCJIdG1sIiwiUGRmIiwiUmF3SHRtbCIsInVybEZyb21Eb2N1bWVudCIsImRvY3VtZW50IiwiZXh0ZW5zaW9uIiwibWF0Y2giLCJleGVjIiwidWlkIiwiY29uc29sZSIsImxvZyIsImNoYW1icmUiLCJsZWdpc2xhdHVyZSIsIm51bWJlciIsImRvY3VtZW50VHlwZSIsIkJUQyIsIkJUQSIsIlRBUCIsImNsYXNzaWZpY2F0aW9uIiwidW5kZWZpbmVkIiwic291c1R5cGUiLCJjb2RlIiwicmVwbGFjZSIsImZhbWlsbGUiLCJjbGFzc2UiLCJmcmFnbWVudHMiLCJ1cmxGcm9tU2NydXRpbiIsInNjcnV0aW4iLCJudW1lcm8iXSwic291cmNlcyI6WyIuLi9zcmMvdXJscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgZW51bSBEb2N1bWVudFVybEZvcm1hdCB7XG4gIEh0bWwgPSBcImh0bWxcIixcbiAgUGRmID0gXCJwZGZcIixcbiAgUmF3SHRtbCA9IFwicmF3LWh0bWxcIiwgLy8gVGhlIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IHRoYXQgY2FuIGJlIHBhcnNlZCB0byBleHRyYWN0IGRpdmlzaW9ucyAmIGFydGljbGVzXG59XG5cbmNvbnN0IGRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiB7XG4gICAgZGlyZWN0b3J5OiBzdHJpbmdcbiAgICBwcmVmaXg6IHN0cmluZ1xuICAgIHN1ZmZpeDogc3RyaW5nXG4gIH1cbn0gPSB7XG4gIEFDSU46IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItYWlcIixcbiAgfSxcbiAgQVZDRVBSSkxPSToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRUxFVFRSRToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRVBJT05MT0k6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiLWFjZVwiLFxuICB9LFxuICBBVklTOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIEVUREk6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItZWlcIixcbiAgfSxcbiAgTEVUVDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1sXCIsXG4gIH0sXG4gIFBJT046IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkU6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVBUFBBUlQzNDE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVDT01FTlE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVNT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb3Bvc2l0aW9uc1wiLFxuICAgIHByZWZpeDogXCJwaW9uXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBQTlJFVFZYSU5TVElURVVST1A6IHtcbiAgICBkaXJlY3Rvcnk6IFwiZXVyb3BlL3Jlc29sdXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBwZVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUFJKTDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBSQVBQOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFJJTkY6IHtcbiAgICBkaXJlY3Rvcnk6IFwicmFwLWluZm9cIixcbiAgICBwcmVmaXg6IFwiaVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUklPTjoge1xuICAgIGRpcmVjdG9yeTogXCJcIixcbiAgICBwcmVmaXg6IFwiXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQURPOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhXCIsXG4gICAgcHJlZml4OiBcInRhXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQ09NOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTUNPTUVOUToge1xuICAgIGRpcmVjdG9yeTogXCJ0YS1jb21taXNzaW9uXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiLWEwXCIsXG4gIH0sXG4gIFRDT01NT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTVRWWElOU1RJVEVVUk9QOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbn1cblxuZnVuY3Rpb24gZXh0ZW5zaW9uRnJvbURvY3VtZW50VXJsRm9ybWF0KGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuSHRtbDpcbiAgICAgIHJldHVybiBcIi5hc3BcIlxuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuUGRmOlxuICAgICAgcmV0dXJuIFwiLnBkZlwiXG4gICAgY2FzZSBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sOlxuICAgICAgcmV0dXJuIFwiLmFzcFwiXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21Eb2N1bWVudChcbiAgZG9jdW1lbnQ6IGFueSxcbiAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdCxcbik6IHN0cmluZyB8IG51bGwge1xuICAvLyBDb2RlIHRha2VuIGZyb20gZnVuY3Rpb24gYGFuX3RleHRfdXJsYCBpbiBwcm9qZWN0IGFucHk6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdhcmRzY2l0b3llbnMvYW5weS9ibG9iL21hc3Rlci9hbnB5L2Rvc3NpZXJfZnJvbV9vcGVuZGF0YS5weVxuICAvLyBTZWUgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL29wZW5kYXRhL0ltcGxlbWVudGF0aW9uX1JlZmVyZW50aWVsL0lkZW50aWZpYW50c19SZWZlcmVudGllbHMuaHRtbFxuICAvLyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0IG9mIGFuIFVJRC5cblxuICBjb25zdCBleHRlbnNpb24gPSBleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQoZm9ybWF0KVxuICBjb25zdCBtYXRjaCA9IC9eKC57NH0pKFtBTlNdKikoUlswLTldKShbTFNdKikoWzAtOV0qKShbQlRBQ1BdKikoLiopJC8uZXhlYyhcbiAgICBkb2N1bWVudC51aWQsXG4gIClcbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IHdpdGggdW5leHBlY3RlZCBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNoYW1icmUgPSBtYXRjaFsyXVxuICBpZiAoY2hhbWJyZSA9PT0gXCJTTlwiKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmb3IgZG9jdW1lbnQgaW4gU8OpbmF0LiBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbNV1cbiAgbGV0IG51bWJlciA9IG1hdGNoWzddXG4gIGlmIChmb3JtYXQgPT09IERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8ke2xlZ2lzbGF0dXJlfS90ZXh0ZXMvJHtudW1iZXJ9JHtleHRlbnNpb259YFxuICB9XG4gIGxldCBkb2N1bWVudFR5cGUgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgQlRDOiBcIlRDT01cIixcbiAgICAgICAgQlRBOiBcIlRBRE9cIixcbiAgICAgICAgVEFQOiBcIlRBRE9cIixcbiAgICAgIH0gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIClbbWF0Y2hbNl1dIHx8IG1hdGNoWzFdXG4gIGlmIChcbiAgICBkb2N1bWVudC5jbGFzc2lmaWNhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgZG9jdW1lbnQuY2xhc3NpZmljYXRpb24uc291c1R5cGUgIT09IHVuZGVmaW5lZCAmJlxuICAgIGRvY3VtZW50LmNsYXNzaWZpY2F0aW9uLnNvdXNUeXBlLmNvZGUgPT09IFwiQ09NUEFcIlxuICApIHtcbiAgICAvLyBBbm5leGUgYXUgcmFwcG9ydCA6IFRleHRlIGNvbXBhcmF0aWYgQ09NUEFcbiAgICBudW1iZXIgPSBudW1iZXIucmVwbGFjZSgvLUNPTVBBLywgXCItYUNPTVBBXCIpXG4gIH1cbiAgaWYgKGRvY3VtZW50VHlwZSA9PSBcIkFWQ0VcIikge1xuICAgIGRvY3VtZW50VHlwZSA9IGBBVkNFJHtkb2N1bWVudC5jbGFzc2lmaWNhdGlvbi5mYW1pbGxlLmNsYXNzZS5jb2RlfWBcbiAgfVxuICBjb25zdCBmcmFnbWVudHMgPSBkb2N1bWVudFVybEZyYWdtZW50c0J5VHlwZVtkb2N1bWVudFR5cGVdXG4gIGlmIChmcmFnbWVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIEZvciBleGFtcGxlOiBBTENOQU5SNUwxNUIwMDAyIChhbGxvY3V0aW9uIGR1IHByw6lzaWRlbnQpXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IG9mIFVJRCBcIiR7ZG9jdW1lbnQudWlkfVwiIGFuZCB0eXBlIFwiJHtkb2N1bWVudFR5cGV9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGRpcmVjdG9yeSA9XG4gICAgZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5QZGZcbiAgICAgID8gYHBkZi8ke2ZyYWdtZW50cy5kaXJlY3Rvcnl9YFxuICAgICAgOiBmcmFnbWVudHMuZGlyZWN0b3J5XG4gIHJldHVybiBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLyR7bGVnaXNsYXR1cmV9LyR7ZGlyZWN0b3J5fS8ke2ZyYWdtZW50cy5wcmVmaXh9JHtudW1iZXJ9JHtmcmFnbWVudHMuc3VmZml4fSR7ZXh0ZW5zaW9ufWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21TY3J1dGluKHNjcnV0aW46IFNjcnV0aW4pIHtcbiAgLy8gU2FtcGxlIFVJRHM6IFZUQU5SNUwxNVYzODlcbiAgY29uc3QgbWF0Y2ggPSAvXlZUQU5SKFswLTldKylMKFswLTldKylWKFswLTldKykkLy5leGVjKHNjcnV0aW4udWlkKVxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVbmFibGUgdG8gZ2VuZXJhdGUgVVJMIGZyb20gc2NydXRpbiB3aXRoIHVuZXhwZWN0ZWQgVUlEOiBcIiR7c2NydXRpbi51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbMl1cbiAgY29uc3QgbnVtZXJvID0gbWF0Y2hbM11cbiAgcmV0dXJuIGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3NjcnV0aW5zL2RldGFpbC8obGVnaXNsYXR1cmUpLyR7bGVnaXNsYXR1cmV9LyhudW0pLyR7bnVtZXJvfWBcbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsV0FBWUEsaUJBQVo7O1dBQVlBLGlCO0VBQUFBLGlCO0VBQUFBLGlCO0VBQUFBLGlCO0dBQUFBLGlCLEtBQUFBLGlCOztBQU1aLE1B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
220
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFVybEZvcm1hdCIsImRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlIiwiQUNJTiIsImRpcmVjdG9yeSIsInByZWZpeCIsInN1ZmZpeCIsIkFWQ0VQUkpMT0kiLCJBVkNFTEVUVFJFIiwiQVZDRVBJT05MT0kiLCJBVklTIiwiRVRESSIsIkxFVFQiLCJQSU9OIiwiUE5SRSIsIlBOUkVBUFBBUlQzNDEiLCJQTlJFQ09NRU5RIiwiUE5SRU1PRFJFR0xUQU4iLCJQTlJFVFZYSU5TVElURVVST1AiLCJQUkpMIiwiUkFQUCIsIlJJTkYiLCJSSU9OIiwiVEFETyIsIlRDT00iLCJUQ09NQ09NRU5RIiwiVENPTU1PRFJFR0xUQU4iLCJUQ09NVFZYSU5TVElURVVST1AiLCJleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQiLCJmb3JtYXQiLCJIdG1sIiwiUGRmIiwiUmF3SHRtbCIsInVybEZyb21Eb2N1bWVudCIsImRvY3VtZW50IiwiZXh0ZW5zaW9uIiwibWF0Y2giLCJleGVjIiwidWlkIiwiY29uc29sZSIsImxvZyIsImNoYW1icmUiLCJsZWdpc2xhdHVyZSIsIm51bWJlciIsImRvY3VtZW50VHlwZSIsIkJUQyIsIkJUQSIsIlRBUCIsImNsYXNzaWZpY2F0aW9uIiwidW5kZWZpbmVkIiwic291c1R5cGUiLCJjb2RlIiwicmVwbGFjZSIsImZhbWlsbGUiLCJjbGFzc2UiLCJmcmFnbWVudHMiLCJ1cmxGcm9tU2NydXRpbiIsInNjcnV0aW4iLCJudW1lcm8iXSwic291cmNlcyI6WyIuLi9zcmMvdXJscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgZW51bSBEb2N1bWVudFVybEZvcm1hdCB7XG4gIEh0bWwgPSBcImh0bWxcIixcbiAgUGRmID0gXCJwZGZcIixcbiAgUmF3SHRtbCA9IFwicmF3LWh0bWxcIiwgLy8gVGhlIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IHRoYXQgY2FuIGJlIHBhcnNlZCB0byBleHRyYWN0IGRpdmlzaW9ucyAmIGFydGljbGVzXG59XG5cbmNvbnN0IGRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiB7XG4gICAgZGlyZWN0b3J5OiBzdHJpbmdcbiAgICBwcmVmaXg6IHN0cmluZ1xuICAgIHN1ZmZpeDogc3RyaW5nXG4gIH1cbn0gPSB7XG4gIEFDSU46IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItYWlcIixcbiAgfSxcbiAgQVZDRVBSSkxPSToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRUxFVFRSRToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRVBJT05MT0k6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiLWFjZVwiLFxuICB9LFxuICBBVklTOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIEVUREk6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItZWlcIixcbiAgfSxcbiAgTEVUVDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1sXCIsXG4gIH0sXG4gIFBJT046IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkU6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVBUFBBUlQzNDE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVDT01FTlE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVNT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb3Bvc2l0aW9uc1wiLFxuICAgIHByZWZpeDogXCJwaW9uXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBQTlJFVFZYSU5TVElURVVST1A6IHtcbiAgICBkaXJlY3Rvcnk6IFwiZXVyb3BlL3Jlc29sdXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBwZVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUFJKTDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBSQVBQOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFJJTkY6IHtcbiAgICBkaXJlY3Rvcnk6IFwicmFwLWluZm9cIixcbiAgICBwcmVmaXg6IFwiaVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUklPTjoge1xuICAgIGRpcmVjdG9yeTogXCJcIixcbiAgICBwcmVmaXg6IFwiXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQURPOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhXCIsXG4gICAgcHJlZml4OiBcInRhXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQ09NOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTUNPTUVOUToge1xuICAgIGRpcmVjdG9yeTogXCJ0YS1jb21taXNzaW9uXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiLWEwXCIsXG4gIH0sXG4gIFRDT01NT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTVRWWElOU1RJVEVVUk9QOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbn1cblxuZnVuY3Rpb24gZXh0ZW5zaW9uRnJvbURvY3VtZW50VXJsRm9ybWF0KGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuSHRtbDpcbiAgICAgIHJldHVybiBcIi5hc3BcIlxuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuUGRmOlxuICAgICAgcmV0dXJuIFwiLnBkZlwiXG4gICAgY2FzZSBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sOlxuICAgICAgcmV0dXJuIFwiLmFzcFwiXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21Eb2N1bWVudChcbiAgZG9jdW1lbnQ6IGFueSxcbiAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdCxcbik6IHN0cmluZyB8IG51bGwge1xuICAvLyBDb2RlIHRha2VuIGZyb20gZnVuY3Rpb24gYGFuX3RleHRfdXJsYCBpbiBwcm9qZWN0IGFucHk6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdhcmRzY2l0b3llbnMvYW5weS9ibG9iL21hc3Rlci9hbnB5L2Rvc3NpZXJfZnJvbV9vcGVuZGF0YS5weVxuICAvLyBTZWUgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL29wZW5kYXRhL0ltcGxlbWVudGF0aW9uX1JlZmVyZW50aWVsL0lkZW50aWZpYW50c19SZWZlcmVudGllbHMuaHRtbFxuICAvLyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0IG9mIGFuIFVJRC5cblxuICBjb25zdCBleHRlbnNpb24gPSBleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQoZm9ybWF0KVxuICBjb25zdCBtYXRjaCA9IC9eKC57NH0pKFtBTlNdKikoUlswLTldKShbTFNdKikoWzAtOV0qKShbQlRBQ1BdKikoLiopJC8uZXhlYyhcbiAgICBkb2N1bWVudC51aWQsXG4gIClcbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IHdpdGggdW5leHBlY3RlZCBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNoYW1icmUgPSBtYXRjaFsyXVxuICBpZiAoY2hhbWJyZSA9PT0gXCJTTlwiKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmb3IgZG9jdW1lbnQgaW4gU8OpbmF0LiBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbNV1cbiAgbGV0IG51bWJlciA9IG1hdGNoWzddXG4gIGlmIChmb3JtYXQgPT09IERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8ke2xlZ2lzbGF0dXJlfS90ZXh0ZXMvJHtudW1iZXJ9JHtleHRlbnNpb259YFxuICB9XG4gIGxldCBkb2N1bWVudFR5cGUgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgQlRDOiBcIlRDT01cIixcbiAgICAgICAgQlRBOiBcIlRBRE9cIixcbiAgICAgICAgVEFQOiBcIlRBRE9cIixcbiAgICAgIH0gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIClbbWF0Y2hbNl1dIHx8IG1hdGNoWzFdXG4gIGlmIChcbiAgICBkb2N1bWVudC5jbGFzc2lmaWNhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgZG9jdW1lbnQuY2xhc3NpZmljYXRpb24uc291c1R5cGUgIT09IHVuZGVmaW5lZCAmJlxuICAgIGRvY3VtZW50LmNsYXNzaWZpY2F0aW9uLnNvdXNUeXBlLmNvZGUgPT09IFwiQ09NUEFcIlxuICApIHtcbiAgICAvLyBBbm5leGUgYXUgcmFwcG9ydCA6IFRleHRlIGNvbXBhcmF0aWYgQ09NUEFcbiAgICBudW1iZXIgPSBudW1iZXIucmVwbGFjZSgvLUNPTVBBLywgXCItYUNPTVBBXCIpXG4gIH1cbiAgaWYgKGRvY3VtZW50VHlwZSA9PSBcIkFWQ0VcIikge1xuICAgIGRvY3VtZW50VHlwZSA9IGBBVkNFJHtkb2N1bWVudC5jbGFzc2lmaWNhdGlvbi5mYW1pbGxlLmNsYXNzZS5jb2RlfWBcbiAgfVxuICBjb25zdCBmcmFnbWVudHMgPSBkb2N1bWVudFVybEZyYWdtZW50c0J5VHlwZVtkb2N1bWVudFR5cGVdXG4gIGlmIChmcmFnbWVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIEZvciBleGFtcGxlOiBBTENOQU5SNUwxNUIwMDAyIChhbGxvY3V0aW9uIGR1IHByw6lzaWRlbnQpXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IG9mIFVJRCBcIiR7ZG9jdW1lbnQudWlkfVwiIGFuZCB0eXBlIFwiJHtkb2N1bWVudFR5cGV9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGRpcmVjdG9yeSA9XG4gICAgZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5QZGZcbiAgICAgID8gYHBkZi8ke2ZyYWdtZW50cy5kaXJlY3Rvcnl9YFxuICAgICAgOiBmcmFnbWVudHMuZGlyZWN0b3J5XG4gIHJldHVybiBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLyR7bGVnaXNsYXR1cmV9LyR7ZGlyZWN0b3J5fS8ke2ZyYWdtZW50cy5wcmVmaXh9JHtudW1iZXJ9JHtmcmFnbWVudHMuc3VmZml4fSR7ZXh0ZW5zaW9ufWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21TY3J1dGluKHNjcnV0aW46IFNjcnV0aW4pIHtcbiAgLy8gU2FtcGxlIFVJRHM6IFZUQU5SNUwxNVYzODlcbiAgY29uc3QgbWF0Y2ggPSAvXlZUQU5SKFswLTldKylMKFswLTldKylWKFswLTldKykkLy5leGVjKHNjcnV0aW4udWlkKVxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVbmFibGUgdG8gZ2VuZXJhdGUgVVJMIGZyb20gc2NydXRpbiB3aXRoIHVuZXhwZWN0ZWQgVUlEOiBcIiR7c2NydXRpbi51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbMl1cbiAgY29uc3QgbnVtZXJvID0gbWF0Y2hbM11cbiAgcmV0dXJuIGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3NjcnV0aW5zL2RldGFpbC8obGVnaXNsYXR1cmUpLyR7bGVnaXNsYXR1cmV9LyhudW0pLyR7bnVtZXJvfWBcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFWUEsaUI7OztXQUFBQSxpQjtFQUFBQSxpQjtFQUFBQSxpQjtFQUFBQSxpQjtHQUFBQSxpQixpQ0FBQUEs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
package/lib/urls.mjs ADDED
@@ -0,0 +1,201 @@
1
+ export let DocumentUrlFormat;
2
+
3
+ (function (DocumentUrlFormat) {
4
+ DocumentUrlFormat["Html"] = "html";
5
+ DocumentUrlFormat["Pdf"] = "pdf";
6
+ DocumentUrlFormat["RawHtml"] = "raw-html";
7
+ })(DocumentUrlFormat || (DocumentUrlFormat = {}));
8
+
9
+ const documentUrlFragmentsByType = {
10
+ ACIN: {
11
+ directory: "projets",
12
+ prefix: "pl",
13
+ suffix: "-ai"
14
+ },
15
+ AVCEPRJLOI: {
16
+ directory: "projets",
17
+ prefix: "pl",
18
+ suffix: "-ace"
19
+ },
20
+ AVCELETTRE: {
21
+ directory: "projets",
22
+ prefix: "pl",
23
+ suffix: "-ace"
24
+ },
25
+ AVCEPIONLOI: {
26
+ directory: "propositions",
27
+ prefix: "pion",
28
+ suffix: "-ace"
29
+ },
30
+ AVIS: {
31
+ directory: "rapports",
32
+ prefix: "r",
33
+ suffix: ""
34
+ },
35
+ ETDI: {
36
+ directory: "projets",
37
+ prefix: "pl",
38
+ suffix: "-ei"
39
+ },
40
+ LETT: {
41
+ directory: "projets",
42
+ prefix: "pl",
43
+ suffix: "-l"
44
+ },
45
+ PION: {
46
+ directory: "propositions",
47
+ prefix: "pion",
48
+ suffix: ""
49
+ },
50
+ PNRE: {
51
+ directory: "propositions",
52
+ prefix: "pion",
53
+ suffix: ""
54
+ },
55
+ PNREAPPART341: {
56
+ directory: "propositions",
57
+ prefix: "pion",
58
+ suffix: ""
59
+ },
60
+ PNRECOMENQ: {
61
+ directory: "propositions",
62
+ prefix: "pion",
63
+ suffix: ""
64
+ },
65
+ PNREMODREGLTAN: {
66
+ directory: "propositions",
67
+ prefix: "pion",
68
+ suffix: ""
69
+ },
70
+ PNRETVXINSTITEUROP: {
71
+ directory: "europe/resolutions",
72
+ prefix: "ppe",
73
+ suffix: ""
74
+ },
75
+ PRJL: {
76
+ directory: "projets",
77
+ prefix: "pl",
78
+ suffix: ""
79
+ },
80
+ RAPP: {
81
+ directory: "rapports",
82
+ prefix: "r",
83
+ suffix: ""
84
+ },
85
+ RINF: {
86
+ directory: "rap-info",
87
+ prefix: "i",
88
+ suffix: ""
89
+ },
90
+ RION: {
91
+ directory: "",
92
+ prefix: "",
93
+ suffix: ""
94
+ },
95
+ TADO: {
96
+ directory: "ta",
97
+ prefix: "ta",
98
+ suffix: ""
99
+ },
100
+ TCOM: {
101
+ directory: "ta-commission",
102
+ prefix: "r",
103
+ suffix: "-a0"
104
+ },
105
+ TCOMCOMENQ: {
106
+ directory: "ta-commission",
107
+ prefix: "r",
108
+ suffix: "-a0"
109
+ },
110
+ TCOMMODREGLTAN: {
111
+ directory: "ta-commission",
112
+ prefix: "r",
113
+ suffix: "-a0"
114
+ },
115
+ TCOMTVXINSTITEUROP: {
116
+ directory: "ta-commission",
117
+ prefix: "r",
118
+ suffix: "-a0"
119
+ }
120
+ };
121
+
122
+ function extensionFromDocumentUrlFormat(format) {
123
+ switch (format) {
124
+ case DocumentUrlFormat.Html:
125
+ return ".asp";
126
+
127
+ case DocumentUrlFormat.Pdf:
128
+ return ".pdf";
129
+
130
+ case DocumentUrlFormat.RawHtml:
131
+ return ".asp";
132
+ }
133
+ }
134
+
135
+ export function urlFromDocument(document, format) {
136
+ // Code taken from function `an_text_url` in project anpy:
137
+ // https://github.com/regardscitoyens/anpy/blob/master/anpy/dossier_from_opendata.py
138
+ // See http://www.assemblee-nationale.fr/opendata/Implementation_Referentiel/Identifiants_Referentiels.html
139
+ // for a description of the format of an UID.
140
+ const extension = extensionFromDocumentUrlFormat(format);
141
+ const match = /^(.{4})([ANS]*)(R[0-9])([LS]*)([0-9]*)([BTACP]*)(.*)$/.exec(document.uid);
142
+
143
+ if (match === null) {
144
+ console.log(`Unable to generate URL from document with unexpected UID: "${document.uid}"`);
145
+ return null;
146
+ }
147
+
148
+ const chambre = match[2];
149
+
150
+ if (chambre === "SN") {
151
+ console.log(`Unable to generate URL for document in Sénat. UID: "${document.uid}"`);
152
+ return null;
153
+ }
154
+
155
+ const legislature = match[5];
156
+ let number = match[7];
157
+
158
+ if (format === DocumentUrlFormat.RawHtml) {
159
+ return `http://www.assemblee-nationale.fr/${legislature}/textes/${number}${extension}`;
160
+ }
161
+
162
+ let documentType = {
163
+ BTC: "TCOM",
164
+ BTA: "TADO",
165
+ TAP: "TADO"
166
+ }[match[6]] || match[1];
167
+
168
+ if (document.classification !== undefined && document.classification.sousType !== undefined && document.classification.sousType.code === "COMPA") {
169
+ // Annexe au rapport : Texte comparatif COMPA
170
+ number = number.replace(/-COMPA/, "-aCOMPA");
171
+ }
172
+
173
+ if (documentType == "AVCE") {
174
+ documentType = `AVCE${document.classification.famille.classe.code}`;
175
+ }
176
+
177
+ const fragments = documentUrlFragmentsByType[documentType];
178
+
179
+ if (fragments === undefined) {
180
+ // For example: ALCNANR5L15B0002 (allocution du président)
181
+ console.log(`Unable to generate URL from document of UID "${document.uid}" and type "${documentType}"`);
182
+ return null;
183
+ }
184
+
185
+ const directory = format === DocumentUrlFormat.Pdf ? `pdf/${fragments.directory}` : fragments.directory;
186
+ return `http://www.assemblee-nationale.fr/${legislature}/${directory}/${fragments.prefix}${number}${fragments.suffix}${extension}`;
187
+ }
188
+ export function urlFromScrutin(scrutin) {
189
+ // Sample UIDs: VTANR5L15V389
190
+ const match = /^VTANR([0-9]+)L([0-9]+)V([0-9]+)$/.exec(scrutin.uid);
191
+
192
+ if (match === null) {
193
+ console.log(`Unable to generate URL from scrutin with unexpected UID: "${scrutin.uid}"`);
194
+ return null;
195
+ }
196
+
197
+ const legislature = match[2];
198
+ const numero = match[3];
199
+ return `http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/${legislature}/(num)/${numero}`;
200
+ }
201
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFVybEZvcm1hdCIsImRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlIiwiQUNJTiIsImRpcmVjdG9yeSIsInByZWZpeCIsInN1ZmZpeCIsIkFWQ0VQUkpMT0kiLCJBVkNFTEVUVFJFIiwiQVZDRVBJT05MT0kiLCJBVklTIiwiRVRESSIsIkxFVFQiLCJQSU9OIiwiUE5SRSIsIlBOUkVBUFBBUlQzNDEiLCJQTlJFQ09NRU5RIiwiUE5SRU1PRFJFR0xUQU4iLCJQTlJFVFZYSU5TVElURVVST1AiLCJQUkpMIiwiUkFQUCIsIlJJTkYiLCJSSU9OIiwiVEFETyIsIlRDT00iLCJUQ09NQ09NRU5RIiwiVENPTU1PRFJFR0xUQU4iLCJUQ09NVFZYSU5TVElURVVST1AiLCJleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQiLCJmb3JtYXQiLCJIdG1sIiwiUGRmIiwiUmF3SHRtbCIsInVybEZyb21Eb2N1bWVudCIsImRvY3VtZW50IiwiZXh0ZW5zaW9uIiwibWF0Y2giLCJleGVjIiwidWlkIiwiY29uc29sZSIsImxvZyIsImNoYW1icmUiLCJsZWdpc2xhdHVyZSIsIm51bWJlciIsImRvY3VtZW50VHlwZSIsIkJUQyIsIkJUQSIsIlRBUCIsImNsYXNzaWZpY2F0aW9uIiwidW5kZWZpbmVkIiwic291c1R5cGUiLCJjb2RlIiwicmVwbGFjZSIsImZhbWlsbGUiLCJjbGFzc2UiLCJmcmFnbWVudHMiLCJ1cmxGcm9tU2NydXRpbiIsInNjcnV0aW4iLCJudW1lcm8iXSwic291cmNlcyI6WyIuLi9zcmMvdXJscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgZW51bSBEb2N1bWVudFVybEZvcm1hdCB7XG4gIEh0bWwgPSBcImh0bWxcIixcbiAgUGRmID0gXCJwZGZcIixcbiAgUmF3SHRtbCA9IFwicmF3LWh0bWxcIiwgLy8gVGhlIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IHRoYXQgY2FuIGJlIHBhcnNlZCB0byBleHRyYWN0IGRpdmlzaW9ucyAmIGFydGljbGVzXG59XG5cbmNvbnN0IGRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiB7XG4gICAgZGlyZWN0b3J5OiBzdHJpbmdcbiAgICBwcmVmaXg6IHN0cmluZ1xuICAgIHN1ZmZpeDogc3RyaW5nXG4gIH1cbn0gPSB7XG4gIEFDSU46IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItYWlcIixcbiAgfSxcbiAgQVZDRVBSSkxPSToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRUxFVFRSRToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1hY2VcIixcbiAgfSxcbiAgQVZDRVBJT05MT0k6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiLWFjZVwiLFxuICB9LFxuICBBVklTOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIEVUREk6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvamV0c1wiLFxuICAgIHByZWZpeDogXCJwbFwiLFxuICAgIHN1ZmZpeDogXCItZWlcIixcbiAgfSxcbiAgTEVUVDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1sXCIsXG4gIH0sXG4gIFBJT046IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkU6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVBUFBBUlQzNDE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVDT01FTlE6IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVNT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb3Bvc2l0aW9uc1wiLFxuICAgIHByZWZpeDogXCJwaW9uXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBQTlJFVFZYSU5TVElURVVST1A6IHtcbiAgICBkaXJlY3Rvcnk6IFwiZXVyb3BlL3Jlc29sdXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBwZVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUFJKTDoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBSQVBQOiB7XG4gICAgZGlyZWN0b3J5OiBcInJhcHBvcnRzXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFJJTkY6IHtcbiAgICBkaXJlY3Rvcnk6IFwicmFwLWluZm9cIixcbiAgICBwcmVmaXg6IFwiaVwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUklPTjoge1xuICAgIGRpcmVjdG9yeTogXCJcIixcbiAgICBwcmVmaXg6IFwiXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQURPOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhXCIsXG4gICAgcHJlZml4OiBcInRhXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBUQ09NOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTUNPTUVOUToge1xuICAgIGRpcmVjdG9yeTogXCJ0YS1jb21taXNzaW9uXCIsXG4gICAgcHJlZml4OiBcInJcIixcbiAgICBzdWZmaXg6IFwiLWEwXCIsXG4gIH0sXG4gIFRDT01NT0RSRUdMVEFOOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTVRWWElOU1RJVEVVUk9QOiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbn1cblxuZnVuY3Rpb24gZXh0ZW5zaW9uRnJvbURvY3VtZW50VXJsRm9ybWF0KGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuSHRtbDpcbiAgICAgIHJldHVybiBcIi5hc3BcIlxuICAgIGNhc2UgRG9jdW1lbnRVcmxGb3JtYXQuUGRmOlxuICAgICAgcmV0dXJuIFwiLnBkZlwiXG4gICAgY2FzZSBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sOlxuICAgICAgcmV0dXJuIFwiLmFzcFwiXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21Eb2N1bWVudChcbiAgZG9jdW1lbnQ6IGFueSxcbiAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdCxcbik6IHN0cmluZyB8IG51bGwge1xuICAvLyBDb2RlIHRha2VuIGZyb20gZnVuY3Rpb24gYGFuX3RleHRfdXJsYCBpbiBwcm9qZWN0IGFucHk6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdhcmRzY2l0b3llbnMvYW5weS9ibG9iL21hc3Rlci9hbnB5L2Rvc3NpZXJfZnJvbV9vcGVuZGF0YS5weVxuICAvLyBTZWUgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL29wZW5kYXRhL0ltcGxlbWVudGF0aW9uX1JlZmVyZW50aWVsL0lkZW50aWZpYW50c19SZWZlcmVudGllbHMuaHRtbFxuICAvLyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0IG9mIGFuIFVJRC5cblxuICBjb25zdCBleHRlbnNpb24gPSBleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQoZm9ybWF0KVxuICBjb25zdCBtYXRjaCA9IC9eKC57NH0pKFtBTlNdKikoUlswLTldKShbTFNdKikoWzAtOV0qKShbQlRBQ1BdKikoLiopJC8uZXhlYyhcbiAgICBkb2N1bWVudC51aWQsXG4gIClcbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IHdpdGggdW5leHBlY3RlZCBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNoYW1icmUgPSBtYXRjaFsyXVxuICBpZiAoY2hhbWJyZSA9PT0gXCJTTlwiKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmb3IgZG9jdW1lbnQgaW4gU8OpbmF0LiBVSUQ6IFwiJHtkb2N1bWVudC51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbNV1cbiAgbGV0IG51bWJlciA9IG1hdGNoWzddXG4gIGlmIChmb3JtYXQgPT09IERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpIHtcbiAgICByZXR1cm4gYGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8ke2xlZ2lzbGF0dXJlfS90ZXh0ZXMvJHtudW1iZXJ9JHtleHRlbnNpb259YFxuICB9XG4gIGxldCBkb2N1bWVudFR5cGUgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgQlRDOiBcIlRDT01cIixcbiAgICAgICAgQlRBOiBcIlRBRE9cIixcbiAgICAgICAgVEFQOiBcIlRBRE9cIixcbiAgICAgIH0gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIClbbWF0Y2hbNl1dIHx8IG1hdGNoWzFdXG4gIGlmIChcbiAgICBkb2N1bWVudC5jbGFzc2lmaWNhdGlvbiAhPT0gdW5kZWZpbmVkICYmXG4gICAgZG9jdW1lbnQuY2xhc3NpZmljYXRpb24uc291c1R5cGUgIT09IHVuZGVmaW5lZCAmJlxuICAgIGRvY3VtZW50LmNsYXNzaWZpY2F0aW9uLnNvdXNUeXBlLmNvZGUgPT09IFwiQ09NUEFcIlxuICApIHtcbiAgICAvLyBBbm5leGUgYXUgcmFwcG9ydCA6IFRleHRlIGNvbXBhcmF0aWYgQ09NUEFcbiAgICBudW1iZXIgPSBudW1iZXIucmVwbGFjZSgvLUNPTVBBLywgXCItYUNPTVBBXCIpXG4gIH1cbiAgaWYgKGRvY3VtZW50VHlwZSA9PSBcIkFWQ0VcIikge1xuICAgIGRvY3VtZW50VHlwZSA9IGBBVkNFJHtkb2N1bWVudC5jbGFzc2lmaWNhdGlvbi5mYW1pbGxlLmNsYXNzZS5jb2RlfWBcbiAgfVxuICBjb25zdCBmcmFnbWVudHMgPSBkb2N1bWVudFVybEZyYWdtZW50c0J5VHlwZVtkb2N1bWVudFR5cGVdXG4gIGlmIChmcmFnbWVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIEZvciBleGFtcGxlOiBBTENOQU5SNUwxNUIwMDAyIChhbGxvY3V0aW9uIGR1IHByw6lzaWRlbnQpXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmcm9tIGRvY3VtZW50IG9mIFVJRCBcIiR7ZG9jdW1lbnQudWlkfVwiIGFuZCB0eXBlIFwiJHtkb2N1bWVudFR5cGV9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGRpcmVjdG9yeSA9XG4gICAgZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5QZGZcbiAgICAgID8gYHBkZi8ke2ZyYWdtZW50cy5kaXJlY3Rvcnl9YFxuICAgICAgOiBmcmFnbWVudHMuZGlyZWN0b3J5XG4gIHJldHVybiBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLyR7bGVnaXNsYXR1cmV9LyR7ZGlyZWN0b3J5fS8ke2ZyYWdtZW50cy5wcmVmaXh9JHtudW1iZXJ9JHtmcmFnbWVudHMuc3VmZml4fSR7ZXh0ZW5zaW9ufWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21TY3J1dGluKHNjcnV0aW46IFNjcnV0aW4pIHtcbiAgLy8gU2FtcGxlIFVJRHM6IFZUQU5SNUwxNVYzODlcbiAgY29uc3QgbWF0Y2ggPSAvXlZUQU5SKFswLTldKylMKFswLTldKylWKFswLTldKykkLy5leGVjKHNjcnV0aW4udWlkKVxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVbmFibGUgdG8gZ2VuZXJhdGUgVVJMIGZyb20gc2NydXRpbiB3aXRoIHVuZXhwZWN0ZWQgVUlEOiBcIiR7c2NydXRpbi51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbMl1cbiAgY29uc3QgbnVtZXJvID0gbWF0Y2hbM11cbiAgcmV0dXJuIGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3NjcnV0aW5zL2RldGFpbC8obGVnaXNsYXR1cmUpLyR7bGVnaXNsYXR1cmV9LyhudW0pLyR7bnVtZXJvfWBcbn1cbiJdLCJtYXBwaW5ncyI6IkFBRUEsV0FBWUEsaUJBQVo7O1dBQVlBLGlCO0VBQUFBLGlCO0VBQUFBLGlCO0VBQUFBLGlCO0dBQUFBLGlCLEtBQUFBLGlCOztBQU1aLE1B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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tricoteuses/assemblee",
3
- "version": "1.0.0-next.2",
3
+ "version": "1.0.2",
4
4
  "description": "Retrieve, clean up & handle French Assemblée nationale's open data",
5
5
  "keywords": [
6
6
  "Assemblée nationale",
@@ -22,30 +22,51 @@
22
22
  "url": "https://git.en-root.org/tricoteuses/tricoteuses-assemblee.git"
23
23
  },
24
24
  "engines": {
25
- "node": ">=16"
25
+ "node": ">=12"
26
26
  },
27
- "type": "module",
28
27
  "main": "lib/index.js",
29
28
  "types": "lib/index.d.ts",
30
29
  "files": [
31
30
  "lib"
32
31
  ],
33
32
  "exports": {
34
- ".": "./lib/index.js",
35
- "./cleaners": "./lib/cleaners/index.js",
36
- "./lib/cleaners": "./lib/cleaners/index.js",
37
- "./lib/loaders": "./lib/loaders.js",
38
- "./lib/parsers": "./lib/parsers/index.js",
39
- "./loaders": "./lib/loaders.js",
33
+ ".": {
34
+ "import": "./lib/index.mjs",
35
+ "require": "./lib/index.js"
36
+ },
37
+ "./cleaners": {
38
+ "import": "./lib/cleaners/index.mjs",
39
+ "require": "./lib/cleaners/index.js"
40
+ },
41
+ "./lib/cleaners": {
42
+ "import": "./lib/cleaners/index.mjs",
43
+ "require": "./lib/cleaners/index.js"
44
+ },
45
+ "./lib/loaders": {
46
+ "import": "./lib/loaders.mjs",
47
+ "require": "./lib/loaders.js"
48
+ },
49
+ "./lib/parsers": {
50
+ "import": "./lib/parsers/index.mjs",
51
+ "require": "./lib/parsers/index.js"
52
+ },
53
+ "./loaders": {
54
+ "import": "./lib/loaders.mjs",
55
+ "require": "./lib/loaders.js"
56
+ },
40
57
  "./package.json": "./package.json",
41
- "./parsers": "./lib/parsers/index.js"
58
+ "./parsers": {
59
+ "import": "./lib/parsers/index.mjs",
60
+ "require": "./lib/parsers/index.js"
61
+ }
42
62
  },
43
63
  "publishConfig": {
44
64
  "access": "public"
45
65
  },
46
66
  "scripts": {
47
- "build": "npm run build:types && npm run build:js",
48
- "build:js": "babel src --out-dir lib --extensions \".ts\" --source-maps inline",
67
+ "build": "npm run build:types && npm run build:mjs && npm run build:cjs",
68
+ "build:cjs": "babel src --out-dir lib --extensions \".ts\" --source-maps inline",
69
+ "build:mjs": "babel src --out-dir lib --config-file ./babel.mjs-config.cjs --extensions \".ts\" --out-file-extension .mjs --source-maps inline",
49
70
  "build:types": "tsc --emitDeclarationOnly",
50
71
  "clean": "rimraf lib",
51
72
  "coverage": "nyc -e .ts -x \"**/*.test.ts\" npm run test",