@tricoteuses/assemblee 1.10.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-79bwpkvR.js +154 -0
  3. package/lib/amendements-CV3s5a0M.js +667 -0
  4. package/lib/cleaners/index.d.ts +9 -9
  5. package/lib/cleaners.js +564 -0
  6. package/lib/datasets.d.ts +3 -3
  7. package/lib/dossiers_legislatifs.d.ts +2 -2
  8. package/lib/index.d.ts +17 -22
  9. package/lib/index.js +1542 -314
  10. package/lib/inserters.d.ts +5 -5
  11. package/lib/loaders-9mHdTl9L.js +4158 -0
  12. package/lib/loaders.d.ts +12 -12
  13. package/lib/loaders.js +29 -1689
  14. package/lib/organes.d.ts +1 -1
  15. package/lib/parse-Ccs6wcUg.js +2512 -0
  16. package/lib/parsers/index.d.ts +2 -3
  17. package/lib/parsers/plf.d.ts +1 -0
  18. package/lib/parsers/recherche_amendements.d.ts +2 -2
  19. package/lib/parsers/textes_lois.d.ts +1 -23
  20. package/lib/parsers.js +398 -0
  21. package/lib/raw_types/debats.d.ts +2 -2
  22. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -1
  23. package/lib/schemas/acteurs_et_organes.json +1166 -0
  24. package/lib/schemas/agendas.json +1745 -0
  25. package/lib/schemas/amendements.json +2085 -0
  26. package/lib/schemas/debats.json +842 -0
  27. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  28. package/lib/schemas/legislatures.json +17 -0
  29. package/lib/schemas/questions.json +704 -0
  30. package/lib/schemas/scrutins.json +701 -0
  31. package/lib/scripts/retrieve_deputes_photos.d.ts +1 -1
  32. package/lib/types/acteurs_et_organes.d.ts +340 -0
  33. package/lib/types/agendas.d.ts +236 -10
  34. package/lib/types/amendements.d.ts +276 -1
  35. package/lib/types/debats.d.ts +52 -2
  36. package/lib/types/dossiers_legislatifs.d.ts +403 -9
  37. package/lib/types/questions.d.ts +99 -2
  38. package/lib/types/scrutins.d.ts +101 -0
  39. package/lib/urls.d.ts +2 -2
  40. package/package.json +32 -94
  41. package/lib/api.js +0 -52
  42. package/lib/api.mjs +0 -45
  43. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  44. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  45. package/lib/bugs/acteur-00010.d.ts +0 -7
  46. package/lib/bugs/acteur-00010.js +0 -116
  47. package/lib/bugs/acteur-00010.mjs +0 -26
  48. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  49. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  50. package/lib/bugs/agenda-00002.d.ts +0 -15
  51. package/lib/bugs/agenda-00002.js +0 -406
  52. package/lib/bugs/agenda-00002.mjs +0 -172
  53. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  54. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  55. package/lib/bugs/agenda-00008.d.ts +0 -7
  56. package/lib/bugs/agenda-00008.js +0 -123
  57. package/lib/bugs/agenda-00008.mjs +0 -26
  58. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  59. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  60. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  61. package/lib/bugs/agenda-00011.d.ts +0 -16
  62. package/lib/bugs/agenda-00011.js +0 -333
  63. package/lib/bugs/agenda-00011.mjs +0 -125
  64. package/lib/bugs.d.ts +0 -21
  65. package/lib/bugs.js +0 -452
  66. package/lib/bugs.mjs +0 -70
  67. package/lib/cleaners/actes_legislatifs.js +0 -315
  68. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  69. package/lib/cleaners/acteurs.js +0 -265
  70. package/lib/cleaners/acteurs.mjs +0 -180
  71. package/lib/cleaners/amendements.js +0 -294
  72. package/lib/cleaners/amendements.mjs +0 -227
  73. package/lib/cleaners/debats.js +0 -12
  74. package/lib/cleaners/debats.mjs +0 -5
  75. package/lib/cleaners/documents.js +0 -205
  76. package/lib/cleaners/documents.mjs +0 -133
  77. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  78. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  79. package/lib/cleaners/index.js +0 -70
  80. package/lib/cleaners/index.mjs +0 -10
  81. package/lib/cleaners/organes.js +0 -65
  82. package/lib/cleaners/organes.mjs +0 -48
  83. package/lib/cleaners/questions.js +0 -12
  84. package/lib/cleaners/questions.mjs +0 -5
  85. package/lib/cleaners/reunions.js +0 -312
  86. package/lib/cleaners/reunions.mjs +0 -255
  87. package/lib/cleaners/scrutins.js +0 -340
  88. package/lib/cleaners/scrutins.mjs +0 -221
  89. package/lib/cleaners/xml.js +0 -74
  90. package/lib/cleaners/xml.mjs +0 -59
  91. package/lib/datasets.js +0 -837
  92. package/lib/datasets.mjs +0 -755
  93. package/lib/dates.js +0 -124
  94. package/lib/dates.mjs +0 -100
  95. package/lib/dossiers_legislatifs.js +0 -346
  96. package/lib/dossiers_legislatifs.mjs +0 -208
  97. package/lib/file_systems.js +0 -162
  98. package/lib/file_systems.mjs +0 -62
  99. package/lib/git.js +0 -223
  100. package/lib/git.mjs +0 -151
  101. package/lib/index.mjs +0 -17
  102. package/lib/inserters.js +0 -521
  103. package/lib/inserters.mjs +0 -337
  104. package/lib/loaders.mjs +0 -886
  105. package/lib/logger.js +0 -35
  106. package/lib/logger.mjs +0 -26
  107. package/lib/organes.js +0 -22
  108. package/lib/organes.mjs +0 -15
  109. package/lib/parsers/documents.d.ts +0 -62
  110. package/lib/parsers/documents.js +0 -453
  111. package/lib/parsers/documents.mjs +0 -370
  112. package/lib/parsers/index.js +0 -40
  113. package/lib/parsers/index.mjs +0 -4
  114. package/lib/parsers/recherche_amendements.js +0 -403
  115. package/lib/parsers/recherche_amendements.mjs +0 -167
  116. package/lib/parsers/textes_lois.js +0 -307
  117. package/lib/parsers/textes_lois.mjs +0 -264
  118. package/lib/raw_types/acteurs_et_organes.js +0 -1215
  119. package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
  120. package/lib/raw_types/agendas.js +0 -777
  121. package/lib/raw_types/agendas.mjs +0 -724
  122. package/lib/raw_types/amendements.js +0 -1052
  123. package/lib/raw_types/amendements.mjs +0 -993
  124. package/lib/raw_types/debats.js +0 -630
  125. package/lib/raw_types/debats.mjs +0 -573
  126. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  127. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  128. package/lib/raw_types/questions.js +0 -469
  129. package/lib/raw_types/questions.mjs +0 -416
  130. package/lib/raw_types/scrutins.js +0 -651
  131. package/lib/raw_types/scrutins.mjs +0 -598
  132. package/lib/schemas/acteur/Acteur.json +0 -56
  133. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  134. package/lib/schemas/acteur/AdressePostale.json +0 -75
  135. package/lib/schemas/acteur/Civ.json +0 -14
  136. package/lib/schemas/acteur/Collaborateur.json +0 -29
  137. package/lib/schemas/acteur/EtatCivil.json +0 -51
  138. package/lib/schemas/acteur/Ident.json +0 -40
  139. package/lib/schemas/acteur/Lieu.json +0 -66
  140. package/lib/schemas/acteur/Mandat.json +0 -192
  141. package/lib/schemas/acteur/Profession.json +0 -46
  142. package/lib/schemas/agenda/Agenda.json +0 -318
  143. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  144. package/lib/schemas/agenda/PointOdj.json +0 -82
  145. package/lib/schemas/amendement/Amendement.json +0 -246
  146. package/lib/schemas/amendement/Diff.json +0 -25
  147. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  148. package/lib/schemas/amendement/Identifiant.json +0 -62
  149. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  150. package/lib/schemas/amendement/Representation.json +0 -67
  151. package/lib/schemas/amendement/Total.json +0 -26
  152. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  153. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  154. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  155. package/lib/schemas/converted_from_type/debats.json +0 -682
  156. package/lib/schemas/converted_from_type/deputes.json +0 -26
  157. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  158. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  159. package/lib/schemas/converted_from_type/questions.json +0 -328
  160. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  161. package/lib/schemas/debat/Contenu.json +0 -75
  162. package/lib/schemas/debat/Debat.json +0 -40
  163. package/lib/schemas/debat/Metadonnees.json +0 -75
  164. package/lib/schemas/debat/Orateur.json +0 -60
  165. package/lib/schemas/debat/Point.json +0 -169
  166. package/lib/schemas/debat/Sommaire.json +0 -71
  167. package/lib/schemas/debat/SommaireElement.json +0 -108
  168. package/lib/schemas/debat/Texte.json +0 -34
  169. package/lib/schemas/document/CodeLibelle.json +0 -25
  170. package/lib/schemas/document/Document.json +0 -385
  171. package/lib/schemas/document/Indexation.json +0 -38
  172. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  173. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  174. package/lib/schemas/dossier/Agenda.json +0 -23
  175. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  176. package/lib/schemas/dossier/Decision.json +0 -25
  177. package/lib/schemas/dossier/Dossier.json +0 -124
  178. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  179. package/lib/schemas/dossier/EtudePlf.json +0 -105
  180. package/lib/schemas/dossier/Europe.json +0 -42
  181. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  182. package/lib/schemas/dossier/InfoJO.json +0 -23
  183. package/lib/schemas/dossier/Initiateur.json +0 -36
  184. package/lib/schemas/dossier/Motion.json +0 -27
  185. package/lib/schemas/dossier/Promulgation.json +0 -62
  186. package/lib/schemas/dossier/Rapporteur.json +0 -36
  187. package/lib/schemas/dossier/Texte.json +0 -47
  188. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  189. package/lib/schemas/organe/Organe.json +0 -136
  190. package/lib/schemas/organe/ViMoDe.json +0 -28
  191. package/lib/schemas/question/Auteur.json +0 -58
  192. package/lib/schemas/question/Cloture.json +0 -28
  193. package/lib/schemas/question/InfoJO.json +0 -40
  194. package/lib/schemas/question/MinAttribElement.json +0 -30
  195. package/lib/schemas/question/Question.json +0 -172
  196. package/lib/schemas/question/Renouvellement.json +0 -17
  197. package/lib/schemas/question/Signalement.json +0 -21
  198. package/lib/schemas/question/Texte.json +0 -24
  199. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  200. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  201. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  202. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  203. package/lib/schemas/scrutin/Scrutin.json +0 -187
  204. package/lib/schemas/scrutin/Votant.json +0 -37
  205. package/lib/scripts/bugs_helper.d.ts +0 -13
  206. package/lib/scripts/bugs_helper.js +0 -595
  207. package/lib/scripts/bugs_helper.mjs +0 -251
  208. package/lib/scripts/clean_reorganized_data.js +0 -613
  209. package/lib/scripts/clean_reorganized_data.mjs +0 -276
  210. package/lib/scripts/diff_amendements.js +0 -249
  211. package/lib/scripts/diff_amendements.mjs +0 -202
  212. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  213. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  214. package/lib/scripts/get_today_reunions.js +0 -37
  215. package/lib/scripts/get_today_reunions.mjs +0 -31
  216. package/lib/scripts/merge_scrutins.js +0 -97
  217. package/lib/scripts/merge_scrutins.mjs +0 -47
  218. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  219. package/lib/scripts/parse_textes_lois.js +0 -171
  220. package/lib/scripts/parse_textes_lois.mjs +0 -140
  221. package/lib/scripts/process_open_dataset.js +0 -301
  222. package/lib/scripts/process_open_dataset.mjs +0 -134
  223. package/lib/scripts/raw_types_from_amendements.js +0 -135
  224. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  225. package/lib/scripts/reorganize_data.js +0 -805
  226. package/lib/scripts/reorganize_data.mjs +0 -517
  227. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  228. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  229. package/lib/scripts/retrieve_documents.js +0 -547
  230. package/lib/scripts/retrieve_documents.mjs +0 -242
  231. package/lib/scripts/retrieve_open_data.js +0 -107
  232. package/lib/scripts/retrieve_open_data.mjs +0 -26
  233. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  234. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  235. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  236. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  237. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  238. package/lib/scripts/retrieve_textes_lois.js +0 -240
  239. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  240. package/lib/scripts/shared/cli_helpers.js +0 -89
  241. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  242. package/lib/scripts/test_iter_load.js +0 -155
  243. package/lib/scripts/test_iter_load.mjs +0 -72
  244. package/lib/scripts/test_load.js +0 -26
  245. package/lib/scripts/test_load.mjs +0 -16
  246. package/lib/scripts/test_load_big_files.js +0 -26
  247. package/lib/scripts/test_load_big_files.mjs +0 -16
  248. package/lib/scripts/validate_json.js +0 -353
  249. package/lib/scripts/validate_json.mjs +0 -184
  250. package/lib/shared_types/codes_actes.js +0 -231
  251. package/lib/shared_types/codes_actes.mjs +0 -224
  252. package/lib/strings.js +0 -16
  253. package/lib/strings.mjs +0 -7
  254. package/lib/types/acteurs_et_organes.js +0 -965
  255. package/lib/types/acteurs_et_organes.mjs +0 -906
  256. package/lib/types/agendas.js +0 -628
  257. package/lib/types/agendas.mjs +0 -575
  258. package/lib/types/amendements.js +0 -899
  259. package/lib/types/amendements.mjs +0 -842
  260. package/lib/types/debats.js +0 -619
  261. package/lib/types/debats.mjs +0 -562
  262. package/lib/types/dossiers_legislatifs.js +0 -1188
  263. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  264. package/lib/types/legislatures.js +0 -17
  265. package/lib/types/legislatures.mjs +0 -10
  266. package/lib/types/questions.js +0 -454
  267. package/lib/types/questions.mjs +0 -401
  268. package/lib/types/scrutins.js +0 -556
  269. package/lib/types/scrutins.mjs +0 -503
  270. package/lib/urls.js +0 -325
  271. package/lib/urls.mjs +0 -258
  272. /package/lib/{bugs/acteur-00010/plugin.test.d.ts → scripts/add_links_to_documents.d.ts} +0 -0
  273. /package/lib/{bugs/agenda-00002/plugin.test.d.ts → scripts/copy-schemas.d.ts} +0 -0
  274. /package/lib/{bugs/agenda-00008/plugin.test.d.ts → scripts/generate-json-schemas.d.ts} +0 -0
package/lib/dates.js DELETED
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.object.define-property.js");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.dateFromNullableDateOrIsoString = dateFromNullableDateOrIsoString;
8
- exports.dateFromYearMonthDayTimezoneString = dateFromYearMonthDayTimezoneString;
9
- exports.displayDateFromLocalIsoString = displayDateFromLocalIsoString;
10
- exports.existingDateToJson = void 0;
11
- exports.formatRelativeFrenchTime = formatRelativeFrenchTime;
12
- exports.frenchDateSameYearShortFormat = exports.frenchDateFormat = void 0;
13
- exports.frenchDateWithoutDayOfWeekFromDateOrString = frenchDateWithoutDayOfWeekFromDateOrString;
14
- exports.frenchTimeFormat = void 0;
15
- exports.frenchTimeFromDateOrString = frenchTimeFromDateOrString;
16
- exports.localIso8601StringFromDate = localIso8601StringFromDate;
17
- exports.patchedDateToJson = void 0;
18
- require("core-js/modules/es.date.to-iso-string.js");
19
- require("core-js/modules/es.date.to-json.js");
20
- require("core-js/modules/es.date.to-string.js");
21
- require("core-js/modules/es.object.to-string.js");
22
- require("core-js/modules/es.regexp.exec.js");
23
- require("core-js/modules/es.regexp.to-string.js");
24
- require("core-js/modules/es.string.ends-with.js");
25
- require("core-js/modules/es.string.replace.js");
26
- var _format = require("date-fns/format");
27
- var _fr = require("date-fns/locale/fr");
28
- var _parse = require("date-fns/parse");
29
- var _parseISO = require("date-fns/parseISO");
30
- // Patch Date.prototype.toJSON to ensure that dates keep their timezone when converted to strings.
31
- // https://stackoverflow.com/questions/31096130/how-to-json-stringify-a-javascript-date-and-preserve-timezone
32
- var existingDateToJson = exports.existingDateToJson = Date.prototype.toJSON;
33
- var _patchedDateToJson = exports.patchedDateToJson = function patchedDateToJson() {
34
- try {
35
- var hours = this.getHours();
36
- var minutes = this.getMinutes();
37
- var seconds = this.getSeconds();
38
- var milliseconds = this.getMilliseconds();
39
- var timezoneOffsetInHours = -(this.getTimezoneOffset() / 60); //UTC minus local time
40
- // When year <= 1900, timezoneOffsetInHours is 0.15, minutes is 9 and seconds is 21!
41
- if (timezoneOffsetInHours === 0.15 && hours === 0 && minutes === 9 && seconds === 21 || hours - timezoneOffsetInHours === 0 && minutes === 0 && seconds === 0 && milliseconds === 0) {
42
- return this.toISOString().split("T")[0];
43
- }
44
-
45
- // It's a bit unfortunate that we need ttimezoneOffsetInHours = -(this.getTimezoneOffset() / 60) o construct a new Date instance
46
- // (we don't want _this_ Date instance to be modified).
47
- var correctedDate = new Date(this.getFullYear(), this.getMonth(), this.getDate(), hours, minutes, seconds, milliseconds);
48
- correctedDate.setHours(this.getHours() + timezoneOffsetInHours);
49
- // Remove milliseconds & trailing "Z".
50
- var iso = correctedDate.toISOString().replace(/(\.0+)?Z$/, "");
51
- var sign = timezoneOffsetInHours >= 0 ? "+" : "-";
52
- var leadingZero = Math.abs(timezoneOffsetInHours) < 10 ? "0" : "";
53
- return iso + sign + leadingZero + Math.abs(timezoneOffsetInHours).toString().split(".")[0] + ":00";
54
- } catch (e) {
55
- Date.prototype.toJSON = existingDateToJson;
56
- var jsonDate = this.toJSON();
57
- Date.prototype.toJSON = _patchedDateToJson;
58
- return jsonDate;
59
- }
60
- };
61
- var frenchDateFormat = exports.frenchDateFormat = new Intl.DateTimeFormat("fr-FR", {
62
- day: "numeric",
63
- month: "long",
64
- weekday: "long",
65
- year: "numeric"
66
- });
67
- var frenchDateSameYearShortFormat = exports.frenchDateSameYearShortFormat = new Intl.DateTimeFormat("fr-FR", {
68
- day: "numeric",
69
- month: "short"
70
- });
71
- var frenchTimeFormat = exports.frenchTimeFormat = new Intl.DateTimeFormat("fr-FR", {
72
- hour: "numeric",
73
- minute: "2-digit"
74
- });
75
- function dateFromNullableDateOrIsoString(date, defaultValue) {
76
- if (date instanceof Date) {
77
- return date;
78
- }
79
- if (typeof date === "string") {
80
- return (0, _parseISO.parseISO)(date);
81
- }
82
- return defaultValue;
83
- }
84
-
85
- /// Convert strings like "2017-11-24+01:00" to dates.
86
- function dateFromYearMonthDayTimezoneString(dateString) {
87
- return (0, _parse.parse)(dateString, "yyyy-MM-ddXXX", new Date());
88
- }
89
- function displayDateFromLocalIsoString(dateString) {
90
- var date = (0, _parseISO.parseISO)(dateString);
91
- dateString = (0, _format.format)(date, "EEEE d LLLL yyyy H'h'mm", {
92
- locale: _fr.fr
93
- });
94
- if (dateString.endsWith(" 0h00")) {
95
- dateString = dateString.substring(0, dateString.length - 5);
96
- }
97
- return dateString;
98
- }
99
- function formatRelativeFrenchTime(date, now) {
100
- if (date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate()) {
101
- return frenchTimeFormat.format(date);
102
- }
103
- return frenchDateSameYearShortFormat.format(date);
104
- }
105
- function frenchDateWithoutDayOfWeekFromDateOrString(dateOrString) {
106
- var date = dateOrString instanceof Date ? dateOrString : (0, _parseISO.parseISO)(dateOrString);
107
- var dateString = (0, _format.format)(date, "d LLLL yyyy H'h'mm", {
108
- locale: _fr.fr
109
- });
110
- if (dateString.endsWith(" 0h00")) {
111
- dateString = dateString.substring(0, dateString.length - 5);
112
- }
113
- return dateString;
114
- }
115
- function frenchTimeFromDateOrString(dateOrString) {
116
- var date = dateOrString instanceof Date ? dateOrString : (0, _parseISO.parseISO)(dateOrString);
117
- return (0, _format.format)(date, "H'h'mm", {
118
- locale: _fr.fr
119
- });
120
- }
121
- function localIso8601StringFromDate(date) {
122
- return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().split("T")[0];
123
- }
124
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZm9ybWF0IiwicmVxdWlyZSIsIl9mciIsIl9wYXJzZSIsIl9wYXJzZUlTTyIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsImV4cG9ydHMiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJob3VycyIsImdldEhvdXJzIiwibWludXRlcyIsImdldE1pbnV0ZXMiLCJzZWNvbmRzIiwiZ2V0U2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsInRpbWV6b25lT2Zmc2V0SW5Ib3VycyIsImdldFRpbWV6b25lT2Zmc2V0IiwidG9JU09TdHJpbmciLCJzcGxpdCIsImNvcnJlY3RlZERhdGUiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsInNldEhvdXJzIiwiaXNvIiwicmVwbGFjZSIsInNpZ24iLCJsZWFkaW5nWmVybyIsIk1hdGgiLCJhYnMiLCJ0b1N0cmluZyIsImUiLCJqc29uRGF0ZSIsImZyZW5jaERhdGVGb3JtYXQiLCJJbnRsIiwiRGF0ZVRpbWVGb3JtYXQiLCJkYXkiLCJtb250aCIsIndlZWtkYXkiLCJ5ZWFyIiwiZnJlbmNoRGF0ZVNhbWVZZWFyU2hvcnRGb3JtYXQiLCJmcmVuY2hUaW1lRm9ybWF0IiwiaG91ciIsIm1pbnV0ZSIsImRhdGVGcm9tTnVsbGFibGVEYXRlT3JJc29TdHJpbmciLCJkYXRlIiwiZGVmYXVsdFZhbHVlIiwicGFyc2VJU08iLCJkYXRlRnJvbVllYXJNb250aERheVRpbWV6b25lU3RyaW5nIiwiZGF0ZVN0cmluZyIsInBhcnNlIiwiZGlzcGxheURhdGVGcm9tTG9jYWxJc29TdHJpbmciLCJmb3JtYXQiLCJsb2NhbGUiLCJmckxvY2FsZSIsImVuZHNXaXRoIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiZm9ybWF0UmVsYXRpdmVGcmVuY2hUaW1lIiwibm93IiwiZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nIiwiZGF0ZU9yU3RyaW5nIiwiZnJlbmNoVGltZUZyb21EYXRlT3JTdHJpbmciLCJsb2NhbElzbzg2MDFTdHJpbmdGcm9tRGF0ZSIsImdldFRpbWUiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcImRhdGUtZm5zL2Zvcm1hdFwiXG5pbXBvcnQgeyBmciBhcyBmckxvY2FsZSB9IGZyb20gXCJkYXRlLWZucy9sb2NhbGUvZnJcIlxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiZGF0ZS1mbnMvcGFyc2VcIlxuaW1wb3J0IHsgcGFyc2VJU08gfSBmcm9tIFwiZGF0ZS1mbnMvcGFyc2VJU09cIlxuXG4vLyBQYXRjaCBEYXRlLnByb3RvdHlwZS50b0pTT04gdG8gZW5zdXJlIHRoYXQgZGF0ZXMga2VlcCB0aGVpciB0aW1lem9uZSB3aGVuIGNvbnZlcnRlZCB0byBzdHJpbmdzLlxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzEwOTYxMzAvaG93LXRvLWpzb24tc3RyaW5naWZ5LWEtamF2YXNjcmlwdC1kYXRlLWFuZC1wcmVzZXJ2ZS10aW1lem9uZVxuZXhwb3J0IGNvbnN0IGV4aXN0aW5nRGF0ZVRvSnNvbiA9IERhdGUucHJvdG90eXBlLnRvSlNPTlxuZXhwb3J0IGNvbnN0IHBhdGNoZWREYXRlVG9Kc29uID0gZnVuY3Rpb24gKHRoaXM6IERhdGUpOiBzdHJpbmcge1xuICB0cnkge1xuICAgIGNvbnN0IGhvdXJzID0gdGhpcy5nZXRIb3VycygpXG4gICAgY29uc3QgbWludXRlcyA9IHRoaXMuZ2V0TWludXRlcygpXG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMuZ2V0U2Vjb25kcygpXG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gdGhpcy5nZXRNaWxsaXNlY29uZHMoKVxuXG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbkhvdXJzID0gLSh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MCkgLy9VVEMgbWludXMgbG9jYWwgdGltZVxuICAgIC8vIFdoZW4geWVhciA8PSAxOTAwLCB0aW1lem9uZU9mZnNldEluSG91cnMgaXMgMC4xNSwgbWludXRlcyBpcyA5IGFuZCBzZWNvbmRzIGlzIDIxIVxuICAgIGlmIChcbiAgICAgICh0aW1lem9uZU9mZnNldEluSG91cnMgPT09IDAuMTUgJiZcbiAgICAgICAgaG91cnMgPT09IDAgJiZcbiAgICAgICAgbWludXRlcyA9PT0gOSAmJlxuICAgICAgICBzZWNvbmRzID09PSAyMSkgfHxcbiAgICAgIChob3VycyAtIHRpbWV6b25lT2Zmc2V0SW5Ib3VycyA9PT0gMCAmJlxuICAgICAgICBtaW51dGVzID09PSAwICYmXG4gICAgICAgIHNlY29uZHMgPT09IDAgJiZcbiAgICAgICAgbWlsbGlzZWNvbmRzID09PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICB9XG5cbiAgICAvLyBJdCdzIGEgYml0IHVuZm9ydHVuYXRlIHRoYXQgd2UgbmVlZCB0dGltZXpvbmVPZmZzZXRJbkhvdXJzID0gLSh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MCkgbyBjb25zdHJ1Y3QgYSBuZXcgRGF0ZSBpbnN0YW5jZVxuICAgIC8vICh3ZSBkb24ndCB3YW50IF90aGlzXyBEYXRlIGluc3RhbmNlIHRvIGJlIG1vZGlmaWVkKS5cbiAgICBjb25zdCBjb3JyZWN0ZWREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLmdldEZ1bGxZZWFyKCksXG4gICAgICB0aGlzLmdldE1vbnRoKCksXG4gICAgICB0aGlzLmdldERhdGUoKSxcbiAgICAgIGhvdXJzLFxuICAgICAgbWludXRlcyxcbiAgICAgIHNlY29uZHMsXG4gICAgICBtaWxsaXNlY29uZHMsXG4gICAgKVxuICAgIGNvcnJlY3RlZERhdGUuc2V0SG91cnModGhpcy5nZXRIb3VycygpICsgdGltZXpvbmVPZmZzZXRJbkhvdXJzKVxuICAgIC8vIFJlbW92ZSBtaWxsaXNlY29uZHMgJiB0cmFpbGluZyBcIlpcIi5cbiAgICBjb25zdCBpc28gPSBjb3JyZWN0ZWREYXRlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvKFxcLjArKT9aJC8sIFwiXCIpXG4gICAgY29uc3Qgc2lnbiA9IHRpbWV6b25lT2Zmc2V0SW5Ib3VycyA+PSAwID8gXCIrXCIgOiBcIi1cIlxuICAgIGNvbnN0IGxlYWRpbmdaZXJvID0gTWF0aC5hYnModGltZXpvbmVPZmZzZXRJbkhvdXJzKSA8IDEwID8gXCIwXCIgOiBcIlwiXG4gICAgcmV0dXJuIChcbiAgICAgIGlzbyArXG4gICAgICBzaWduICtcbiAgICAgIGxlYWRpbmdaZXJvICtcbiAgICAgIE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMF0gK1xuICAgICAgXCI6MDBcIlxuICAgIClcbiAgfSBjYXRjaCAoZSkge1xuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuICAgIGNvbnN0IGpzb25EYXRlID0gdGhpcy50b0pTT04oKVxuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gICAgcmV0dXJuIGpzb25EYXRlXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgZGF5OiBcIm51bWVyaWNcIixcbiAgbW9udGg6IFwibG9uZ1wiLFxuICB3ZWVrZGF5OiBcImxvbmdcIixcbiAgeWVhcjogXCJudW1lcmljXCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJmci1GUlwiLCB7XG4gIGRheTogXCJudW1lcmljXCIsXG4gIG1vbnRoOiBcInNob3J0XCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaFRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgaG91cjogXCJudW1lcmljXCIsXG4gIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG59KVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyhcbiAgZGF0ZTogRGF0ZSB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIGRlZmF1bHRWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwsXG4pOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBkYXRlXG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHBhcnNlSVNPKGRhdGUpXG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZVxufVxuXG4vLy8gQ29udmVydCBzdHJpbmdzIGxpa2UgXCIyMDE3LTExLTI0KzAxOjAwXCIgdG8gZGF0ZXMuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21ZZWFyTW9udGhEYXlUaW1lem9uZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlIHtcbiAgcmV0dXJuIHBhcnNlKGRhdGVTdHJpbmcsIFwieXl5eS1NTS1kZFhYWFwiLCBuZXcgRGF0ZSgpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheURhdGVGcm9tTG9jYWxJc29TdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlSVNPKGRhdGVTdHJpbmcpXG4gIGRhdGVTdHJpbmcgPSBmb3JtYXQoZGF0ZSwgXCJFRUVFIGQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlRnJlbmNoVGltZShkYXRlOiBEYXRlLCBub3c6IERhdGUpIHtcbiAgaWYgKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiZcbiAgICBkYXRlLmdldE1vbnRoKCkgPT09IG5vdy5nZXRNb250aCgpICYmXG4gICAgZGF0ZS5nZXREYXRlKCkgPT09IG5vdy5nZXREYXRlKClcbiAgKSB7XG4gICAgcmV0dXJuIGZyZW5jaFRpbWVGb3JtYXQuZm9ybWF0KGRhdGUpXG4gIH1cbiAgcmV0dXJuIGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0LmZvcm1hdChkYXRlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICBsZXQgZGF0ZVN0cmluZyA9IGZvcm1hdChkYXRlLCBcImQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyZW5jaFRpbWVGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICByZXR1cm4gZm9ybWF0KGRhdGUsIFwiSCdoJ21tXCIsIHsgbG9jYWxlOiBmckxvY2FsZSB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxJc284NjAxU3RyaW5nRnJvbURhdGUoZGF0ZTogRGF0ZSkge1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMClcbiAgICAudG9JU09TdHJpbmcoKVxuICAgIC5zcGxpdChcIlRcIilbMF1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUgsT0FBQTtBQUVBO0FBQ0E7QUFDTyxJQUFNSSxrQkFBa0IsR0FBQUMsT0FBQSxDQUFBRCxrQkFBQSxHQUFHRSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsTUFBTTtBQUNoRCxJQUFNQyxrQkFBaUIsR0FBQUosT0FBQSxDQUFBSSxpQkFBQSxHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUEsRUFBaUM7RUFDN0QsSUFBSTtJQUNGLElBQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLElBQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLElBQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLElBQU1DLFlBQVksR0FBRyxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDO0lBRTNDLElBQU1DLHFCQUFxQixHQUFHLEVBQUUsSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUM7SUFDL0Q7SUFDQSxJQUNHRCxxQkFBcUIsS0FBSyxJQUFJLElBQzdCUixL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
package/lib/dates.mjs DELETED
@@ -1,100 +0,0 @@
1
- import { format } from "date-fns/format";
2
- import { fr as frLocale } from "date-fns/locale/fr";
3
- import { parse } from "date-fns/parse";
4
- import { parseISO } from "date-fns/parseISO";
5
-
6
- // Patch Date.prototype.toJSON to ensure that dates keep their timezone when converted to strings.
7
- // https://stackoverflow.com/questions/31096130/how-to-json-stringify-a-javascript-date-and-preserve-timezone
8
- export const existingDateToJson = Date.prototype.toJSON;
9
- export const patchedDateToJson = function () {
10
- try {
11
- const hours = this.getHours();
12
- const minutes = this.getMinutes();
13
- const seconds = this.getSeconds();
14
- const milliseconds = this.getMilliseconds();
15
- const timezoneOffsetInHours = -(this.getTimezoneOffset() / 60); //UTC minus local time
16
- // When year <= 1900, timezoneOffsetInHours is 0.15, minutes is 9 and seconds is 21!
17
- if (timezoneOffsetInHours === 0.15 && hours === 0 && minutes === 9 && seconds === 21 || hours - timezoneOffsetInHours === 0 && minutes === 0 && seconds === 0 && milliseconds === 0) {
18
- return this.toISOString().split("T")[0];
19
- }
20
-
21
- // It's a bit unfortunate that we need ttimezoneOffsetInHours = -(this.getTimezoneOffset() / 60) o construct a new Date instance
22
- // (we don't want _this_ Date instance to be modified).
23
- const correctedDate = new Date(this.getFullYear(), this.getMonth(), this.getDate(), hours, minutes, seconds, milliseconds);
24
- correctedDate.setHours(this.getHours() + timezoneOffsetInHours);
25
- // Remove milliseconds & trailing "Z".
26
- const iso = correctedDate.toISOString().replace(/(\.0+)?Z$/, "");
27
- const sign = timezoneOffsetInHours >= 0 ? "+" : "-";
28
- const leadingZero = Math.abs(timezoneOffsetInHours) < 10 ? "0" : "";
29
- return iso + sign + leadingZero + Math.abs(timezoneOffsetInHours).toString().split(".")[0] + ":00";
30
- } catch (e) {
31
- Date.prototype.toJSON = existingDateToJson;
32
- const jsonDate = this.toJSON();
33
- Date.prototype.toJSON = patchedDateToJson;
34
- return jsonDate;
35
- }
36
- };
37
- export const frenchDateFormat = new Intl.DateTimeFormat("fr-FR", {
38
- day: "numeric",
39
- month: "long",
40
- weekday: "long",
41
- year: "numeric"
42
- });
43
- export const frenchDateSameYearShortFormat = new Intl.DateTimeFormat("fr-FR", {
44
- day: "numeric",
45
- month: "short"
46
- });
47
- export const frenchTimeFormat = new Intl.DateTimeFormat("fr-FR", {
48
- hour: "numeric",
49
- minute: "2-digit"
50
- });
51
- export function dateFromNullableDateOrIsoString(date, defaultValue) {
52
- if (date instanceof Date) {
53
- return date;
54
- }
55
- if (typeof date === "string") {
56
- return parseISO(date);
57
- }
58
- return defaultValue;
59
- }
60
-
61
- /// Convert strings like "2017-11-24+01:00" to dates.
62
- export function dateFromYearMonthDayTimezoneString(dateString) {
63
- return parse(dateString, "yyyy-MM-ddXXX", new Date());
64
- }
65
- export function displayDateFromLocalIsoString(dateString) {
66
- const date = parseISO(dateString);
67
- dateString = format(date, "EEEE d LLLL yyyy H'h'mm", {
68
- locale: frLocale
69
- });
70
- if (dateString.endsWith(" 0h00")) {
71
- dateString = dateString.substring(0, dateString.length - 5);
72
- }
73
- return dateString;
74
- }
75
- export function formatRelativeFrenchTime(date, now) {
76
- if (date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate()) {
77
- return frenchTimeFormat.format(date);
78
- }
79
- return frenchDateSameYearShortFormat.format(date);
80
- }
81
- export function frenchDateWithoutDayOfWeekFromDateOrString(dateOrString) {
82
- const date = dateOrString instanceof Date ? dateOrString : parseISO(dateOrString);
83
- let dateString = format(date, "d LLLL yyyy H'h'mm", {
84
- locale: frLocale
85
- });
86
- if (dateString.endsWith(" 0h00")) {
87
- dateString = dateString.substring(0, dateString.length - 5);
88
- }
89
- return dateString;
90
- }
91
- export function frenchTimeFromDateOrString(dateOrString) {
92
- const date = dateOrString instanceof Date ? dateOrString : parseISO(dateOrString);
93
- return format(date, "H'h'mm", {
94
- locale: frLocale
95
- });
96
- }
97
- export function localIso8601StringFromDate(date) {
98
- return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().split("T")[0];
99
- }
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXQiLCJmciIsImZyTG9jYWxlIiwicGFyc2UiLCJwYXJzZUlTTyIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsIkRhdGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImhvdXJzIiwiZ2V0SG91cnMiLCJtaW51dGVzIiwiZ2V0TWludXRlcyIsInNlY29uZHMiLCJnZXRTZWNvbmRzIiwibWlsbGlzZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwidGltZXpvbmVPZmZzZXRJbkhvdXJzIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJ0b0lTT1N0cmluZyIsInNwbGl0IiwiY29ycmVjdGVkRGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwic2V0SG91cnMiLCJpc28iLCJyZXBsYWNlIiwic2lnbiIsImxlYWRpbmdaZXJvIiwiTWF0aCIsImFicyIsInRvU3RyaW5nIiwiZSIsImpzb25EYXRlIiwiZnJlbmNoRGF0ZUZvcm1hdCIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsImRheSIsIm1vbnRoIiwid2Vla2RheSIsInllYXIiLCJmcmVuY2hEYXRlU2FtZVllYXJTaG9ydEZvcm1hdCIsImZyZW5jaFRpbWVGb3JtYXQiLCJob3VyIiwibWludXRlIiwiZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyIsImRhdGUiLCJkZWZhdWx0VmFsdWUiLCJkYXRlRnJvbVllYXJNb250aERheVRpbWV6b25lU3RyaW5nIiwiZGF0ZVN0cmluZyIsImRpc3BsYXlEYXRlRnJvbUxvY2FsSXNvU3RyaW5nIiwibG9jYWxlIiwiZW5kc1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJmb3JtYXRSZWxhdGl2ZUZyZW5jaFRpbWUiLCJub3ciLCJmcmVuY2hEYXRlV2l0aG91dERheU9mV2Vla0Zyb21EYXRlT3JTdHJpbmciLCJkYXRlT3JTdHJpbmciLCJmcmVuY2hUaW1lRnJvbURhdGVPclN0cmluZyIsImxvY2FsSXNvODYwMVN0cmluZ0Zyb21EYXRlIiwiZ2V0VGltZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwiZGF0ZS1mbnMvZm9ybWF0XCJcbmltcG9ydCB7IGZyIGFzIGZyTG9jYWxlIH0gZnJvbSBcImRhdGUtZm5zL2xvY2FsZS9mclwiXG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJkYXRlLWZucy9wYXJzZVwiXG5pbXBvcnQgeyBwYXJzZUlTTyB9IGZyb20gXCJkYXRlLWZucy9wYXJzZUlTT1wiXG5cbi8vIFBhdGNoIERhdGUucHJvdG90eXBlLnRvSlNPTiB0byBlbnN1cmUgdGhhdCBkYXRlcyBrZWVwIHRoZWlyIHRpbWV6b25lIHdoZW4gY29udmVydGVkIHRvIHN0cmluZ3MuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTA5NjEzMC9ob3ctdG8tanNvbi1zdHJpbmdpZnktYS1qYXZhc2NyaXB0LWRhdGUtYW5kLXByZXNlcnZlLXRpbWV6b25lXG5leHBvcnQgY29uc3QgZXhpc3RpbmdEYXRlVG9Kc29uID0gRGF0ZS5wcm90b3R5cGUudG9KU09OXG5leHBvcnQgY29uc3QgcGF0Y2hlZERhdGVUb0pzb24gPSBmdW5jdGlvbiAodGhpczogRGF0ZSk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgaG91cnMgPSB0aGlzLmdldEhvdXJzKClcbiAgICBjb25zdCBtaW51dGVzID0gdGhpcy5nZXRNaW51dGVzKClcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5nZXRTZWNvbmRzKClcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSB0aGlzLmdldE1pbGxpc2Vjb25kcygpXG5cbiAgICBjb25zdCB0aW1lem9uZU9mZnNldEluSG91cnMgPSAtKHRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoKSAvIDYwKSAvL1VUQyBtaW51cyBsb2NhbCB0aW1lXG4gICAgLy8gV2hlbiB5ZWFyIDw9IDE5MDAsIHRpbWV6b25lT2Zmc2V0SW5Ib3VycyBpcyAwLjE1LCBtaW51dGVzIGlzIDkgYW5kIHNlY29uZHMgaXMgMjEhXG4gICAgaWYgKFxuICAgICAgKHRpbWV6b25lT2Zmc2V0SW5Ib3VycyA9PT0gMC4xNSAmJlxuICAgICAgICBob3VycyA9PT0gMCAmJlxuICAgICAgICBtaW51dGVzID09PSA5ICYmXG4gICAgICAgIHNlY29uZHMgPT09IDIxKSB8fFxuICAgICAgKGhvdXJzIC0gdGltZXpvbmVPZmZzZXRJbkhvdXJzID09PSAwICYmXG4gICAgICAgIG1pbnV0ZXMgPT09IDAgJiZcbiAgICAgICAgc2Vjb25kcyA9PT0gMCAmJlxuICAgICAgICBtaWxsaXNlY29uZHMgPT09IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgIH1cblxuICAgIC8vIEl0J3MgYSBiaXQgdW5mb3J0dW5hdGUgdGhhdCB3ZSBuZWVkIHR0aW1lem9uZU9mZnNldEluSG91cnMgPSAtKHRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoKSAvIDYwKSBvIGNvbnN0cnVjdCBhIG5ldyBEYXRlIGluc3RhbmNlXG4gICAgLy8gKHdlIGRvbid0IHdhbnQgX3RoaXNfIERhdGUgaW5zdGFuY2UgdG8gYmUgbW9kaWZpZWQpLlxuICAgIGNvbnN0IGNvcnJlY3RlZERhdGUgPSBuZXcgRGF0ZShcbiAgICAgIHRoaXMuZ2V0RnVsbFllYXIoKSxcbiAgICAgIHRoaXMuZ2V0TW9udGgoKSxcbiAgICAgIHRoaXMuZ2V0RGF0ZSgpLFxuICAgICAgaG91cnMsXG4gICAgICBtaW51dGVzLFxuICAgICAgc2Vjb25kcyxcbiAgICAgIG1pbGxpc2Vjb25kcyxcbiAgICApXG4gICAgY29ycmVjdGVkRGF0ZS5zZXRIb3Vycyh0aGlzLmdldEhvdXJzKCkgKyB0aW1lem9uZU9mZnNldEluSG91cnMpXG4gICAgLy8gUmVtb3ZlIG1pbGxpc2Vjb25kcyAmIHRyYWlsaW5nIFwiWlwiLlxuICAgIGNvbnN0IGlzbyA9IGNvcnJlY3RlZERhdGUudG9JU09TdHJpbmcoKS5yZXBsYWNlKC8oXFwuMCspP1okLywgXCJcIilcbiAgICBjb25zdCBzaWduID0gdGltZXpvbmVPZmZzZXRJbkhvdXJzID49IDAgPyBcIitcIiA6IFwiLVwiXG4gICAgY29uc3QgbGVhZGluZ1plcm8gPSBNYXRoLmFicyh0aW1lem9uZU9mZnNldEluSG91cnMpIDwgMTAgPyBcIjBcIiA6IFwiXCJcbiAgICByZXR1cm4gKFxuICAgICAgaXNvICtcbiAgICAgIHNpZ24gK1xuICAgICAgbGVhZGluZ1plcm8gK1xuICAgICAgTWF0aC5hYnModGltZXpvbmVPZmZzZXRJbkhvdXJzKS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVswXSArXG4gICAgICBcIjowMFwiXG4gICAgKVxuICB9IGNhdGNoIChlKSB7XG4gICAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG4gICAgY29uc3QganNvbkRhdGUgPSB0aGlzLnRvSlNPTigpXG4gICAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cbiAgICByZXR1cm4ganNvbkRhdGVcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZnJlbmNoRGF0ZUZvcm1hdCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZnItRlJcIiwge1xuICBkYXk6IFwibnVtZXJpY1wiLFxuICBtb250aDogXCJsb25nXCIsXG4gIHdlZWtkYXk6IFwibG9uZ1wiLFxuICB5ZWFyOiBcIm51bWVyaWNcIixcbn0pXG5leHBvcnQgY29uc3QgZnJlbmNoRGF0ZVNhbWVZZWFyU2hvcnRGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgZGF5OiBcIm51bWVyaWNcIixcbiAgbW9udGg6IFwic2hvcnRcIixcbn0pXG5leHBvcnQgY29uc3QgZnJlbmNoVGltZUZvcm1hdCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZnItRlJcIiwge1xuICBob3VyOiBcIm51bWVyaWNcIixcbiAgbWludXRlOiBcIjItZGlnaXRcIixcbn0pXG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlRnJvbU51bGxhYmxlRGF0ZU9ySXNvU3RyaW5nKFxuICBkYXRlOiBEYXRlIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgZGVmYXVsdFZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCxcbik6IERhdGUgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIGRhdGVcbiAgfVxuICBpZiAodHlwZW9mIGRhdGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gcGFyc2VJU08oZGF0ZSlcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlXG59XG5cbi8vLyBDb252ZXJ0IHN0cmluZ3MgbGlrZSBcIjIwMTctMTEtMjQrMDE6MDBcIiB0byBkYXRlcy5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlRnJvbVllYXJNb250aERheVRpbWV6b25lU3RyaW5nKGRhdGVTdHJpbmc6IHN0cmluZyk6IERhdGUge1xuICByZXR1cm4gcGFyc2UoZGF0ZVN0cmluZywgXCJ5eXl5LU1NLWRkWFhYXCIsIG5ldyBEYXRlKCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5RGF0ZUZyb21Mb2NhbElzb1N0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRlID0gcGFyc2VJU08oZGF0ZVN0cmluZylcbiAgZGF0ZVN0cmluZyA9IGZvcm1hdChkYXRlLCBcIkVFRUUgZCBMTExMIHl5eXkgSCdoJ21tXCIsIHsgbG9jYWxlOiBmckxvY2FsZSB9KVxuICBpZiAoZGF0ZVN0cmluZy5lbmRzV2l0aChcIiAwaDAwXCIpKSB7XG4gICAgZGF0ZVN0cmluZyA9IGRhdGVTdHJpbmcuc3Vic3RyaW5nKDAsIGRhdGVTdHJpbmcubGVuZ3RoIC0gNSlcbiAgfVxuICByZXR1cm4gZGF0ZVN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVGcmVuY2hUaW1lKGRhdGU6IERhdGUsIG5vdzogRGF0ZSkge1xuICBpZiAoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpID09PSBub3cuZ2V0RnVsbFllYXIoKSAmJlxuICAgIGRhdGUuZ2V0TW9udGgoKSA9PT0gbm93LmdldE1vbnRoKCkgJiZcbiAgICBkYXRlLmdldERhdGUoKSA9PT0gbm93LmdldERhdGUoKVxuICApIHtcbiAgICByZXR1cm4gZnJlbmNoVGltZUZvcm1hdC5mb3JtYXQoZGF0ZSlcbiAgfVxuICByZXR1cm4gZnJlbmNoRGF0ZVNhbWVZZWFyU2hvcnRGb3JtYXQuZm9ybWF0KGRhdGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmVuY2hEYXRlV2l0aG91dERheU9mV2Vla0Zyb21EYXRlT3JTdHJpbmcoXG4gIGRhdGVPclN0cmluZzogRGF0ZSB8IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGU6IERhdGUgPVxuICAgIGRhdGVPclN0cmluZyBpbnN0YW5jZW9mIERhdGUgPyBkYXRlT3JTdHJpbmcgOiBwYXJzZUlTTyhkYXRlT3JTdHJpbmcpXG4gIGxldCBkYXRlU3RyaW5nID0gZm9ybWF0KGRhdGUsIFwiZCBMTExMIHl5eXkgSCdoJ21tXCIsIHsgbG9jYWxlOiBmckxvY2FsZSB9KVxuICBpZiAoZGF0ZVN0cmluZy5lbmRzV2l0aChcIiAwaDAwXCIpKSB7XG4gICAgZGF0ZVN0cmluZyA9IGRhdGVTdHJpbmcuc3Vic3RyaW5nKDAsIGRhdGVTdHJpbmcubGVuZ3RoIC0gNSlcbiAgfVxuICByZXR1cm4gZGF0ZVN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJlbmNoVGltZUZyb21EYXRlT3JTdHJpbmcoXG4gIGRhdGVPclN0cmluZzogRGF0ZSB8IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGU6IERhdGUgPVxuICAgIGRhdGVPclN0cmluZyBpbnN0YW5jZW9mIERhdGUgPyBkYXRlT3JTdHJpbmcgOiBwYXJzZUlTTyhkYXRlT3JTdHJpbmcpXG4gIHJldHVybiBmb3JtYXQoZGF0ZSwgXCJIJ2gnbW1cIiwgeyBsb2NhbGU6IGZyTG9jYWxlIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbElzbzg2MDFTdHJpbmdGcm9tRGF0ZShkYXRlOiBEYXRlKSB7XG4gIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKVxuICAgIC50b0lTT1N0cmluZygpXG4gICAgLnNwbGl0KFwiVFwiKVswXVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUFNLFFBQVEsaUJBQWlCO0FBQ3hDLFNBQVNDLEVBQUUsSUFBSUMsUUFBUSxRQUFRLG9CQUFvQjtBQUNuRCxTQUFTQyxLQUFLLFFBQVEsZ0JBQWdCO0FBQ3RDLFNBQVNDLFFBQVEsUUFBUSxtQkFBbUI7O0FBRTVDO0FBQ0E7QUFDQSxPQUFPLE1BQU1DLGtCQUFrQixHQUFHQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsTUFBTTtBQUN2RCxPQUFPLE1BQU1DLGlCQUFpQixHQUFHLFNBQUFBLENBQUEsRUFBOEI7RUFDN0QsSUFBSTtJQUNGLE1BQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLE1BQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLE1BQU1DLE9BQU8sR0FBRyxJQUFJLENBQUNDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLE1BQU1DLFlBQVksR0FBRyxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDO0lBRTNDLE1BQU1DLHFCQUFxQixHQUFHLEVBQUUsSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUM7SUFDL0Q7SUFDQSxJQUNHRCxxQkFBcUIsS0FBSyxJQUFJLElBQzdCUixLQUFLLEtBQUssQ0FBQyxJQUNYRSxPQUFPLEtBQUssQ0FBQyxJQUNiRSxPQUFPLEtBQUssRUFBRSxJQUNmSixLQUFLLEdBQUdRLHFCQUFxQixLQUFLLENBQUMsSUFDbENOLE9BQU8s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