@tricoteuses/assemblee 1.0.7 → 1.1.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 (134) hide show
  1. package/lib/api.js +3 -9
  2. package/lib/api.mjs +4 -5
  3. package/lib/bugs/acteur-00010/plugin.test.js +3 -50
  4. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  5. package/lib/bugs/acteur-00010.js +2 -57
  6. package/lib/bugs/acteur-00010.mjs +1 -6
  7. package/lib/bugs/agenda-00002/plugin.test.js +3 -53
  8. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
  9. package/lib/bugs/agenda-00002.js +3 -148
  10. package/lib/bugs/agenda-00002.mjs +1 -28
  11. package/lib/bugs/agenda-00008/plugin.test.js +3 -52
  12. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  13. package/lib/bugs/agenda-00008.js +2 -61
  14. package/lib/bugs/agenda-00008.mjs +1 -5
  15. package/lib/bugs/agenda-00011/plugin.test.js +5 -99
  16. package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
  17. package/lib/bugs/agenda-00011.js +4 -105
  18. package/lib/bugs/agenda-00011.mjs +3 -29
  19. package/lib/bugs.js +3 -164
  20. package/lib/bugs.mjs +1 -26
  21. package/lib/cleaners/actes_legislatifs.js +11 -115
  22. package/lib/cleaners/actes_legislatifs.mjs +7 -82
  23. package/lib/cleaners/acteurs.js +12 -92
  24. package/lib/cleaners/acteurs.mjs +7 -38
  25. package/lib/cleaners/amendements.js +10 -103
  26. package/lib/cleaners/amendements.mjs +4 -58
  27. package/lib/cleaners/documents.js +5 -67
  28. package/lib/cleaners/documents.mjs +1 -37
  29. package/lib/cleaners/dossiers_legislatifs.js +5 -61
  30. package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
  31. package/lib/cleaners/index.js +1 -9
  32. package/lib/cleaners/index.mjs +1 -1
  33. package/lib/cleaners/organes.js +1 -33
  34. package/lib/cleaners/organes.mjs +1 -17
  35. package/lib/cleaners/reunions.js +4 -119
  36. package/lib/cleaners/reunions.mjs +1 -64
  37. package/lib/cleaners/scrutins.js +10 -102
  38. package/lib/cleaners/scrutins.mjs +1 -48
  39. package/lib/cleaners/xml.js +8 -42
  40. package/lib/cleaners/xml.mjs +6 -8
  41. package/lib/datasets.js +14 -113
  42. package/lib/datasets.mjs +6 -46
  43. package/lib/dates.js +7 -37
  44. package/lib/dates.mjs +9 -14
  45. package/lib/dossiers_legislatifs.js +6 -68
  46. package/lib/dossiers_legislatifs.mjs +5 -36
  47. package/lib/file_systems.js +56 -139
  48. package/lib/file_systems.mjs +1 -9
  49. package/lib/git.js +4 -53
  50. package/lib/git.mjs +1 -12
  51. package/lib/index.js +1 -15
  52. package/lib/index.mjs +1 -1
  53. package/lib/inserters.js +23 -146
  54. package/lib/inserters.mjs +6 -87
  55. package/lib/loaders.js +44 -316
  56. package/lib/loaders.mjs +12 -135
  57. package/lib/organes.js +1 -7
  58. package/lib/organes.mjs +1 -4
  59. package/lib/parsers/documents.js +22 -151
  60. package/lib/parsers/documents.mjs +19 -81
  61. package/lib/parsers/index.js +1 -4
  62. package/lib/parsers/index.mjs +1 -1
  63. package/lib/parsers/recherche_amendements.js +302 -527
  64. package/lib/parsers/recherche_amendements.mjs +8 -31
  65. package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
  66. package/lib/raw_types/acteurs_et_organes.js +5 -124
  67. package/lib/raw_types/acteurs_et_organes.mjs +5 -105
  68. package/lib/raw_types/agendas.js +6 -89
  69. package/lib/raw_types/agendas.mjs +9 -65
  70. package/lib/raw_types/amendements.d.ts +2 -0
  71. package/lib/raw_types/amendements.js +10 -90
  72. package/lib/raw_types/amendements.mjs +11 -69
  73. package/lib/raw_types/dossiers_legislatifs.js +6 -96
  74. package/lib/raw_types/dossiers_legislatifs.mjs +6 -73
  75. package/lib/raw_types/scrutins.js +6 -81
  76. package/lib/raw_types/scrutins.mjs +9 -57
  77. package/lib/scripts/bugs_helper.js +2 -181
  78. package/lib/scripts/bugs_helper.mjs +2 -39
  79. package/lib/scripts/clean_data.js +27 -143
  80. package/lib/scripts/clean_data.mjs +15 -34
  81. package/lib/scripts/clean_reorganized_data.js +76 -240
  82. package/lib/scripts/clean_reorganized_data.mjs +36 -99
  83. package/lib/scripts/diff_amendements.js +19 -79
  84. package/lib/scripts/diff_amendements.mjs +17 -35
  85. package/lib/scripts/document_dossiers_legislatifs.js +17 -142
  86. package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
  87. package/lib/scripts/get_today_reunions.js +4 -22
  88. package/lib/scripts/get_today_reunions.mjs +1 -7
  89. package/lib/scripts/merge_scrutins.js +3 -47
  90. package/lib/scripts/merge_scrutins.mjs +1 -9
  91. package/lib/scripts/parse_textes_lois.js +15 -44
  92. package/lib/scripts/parse_textes_lois.mjs +18 -19
  93. package/lib/scripts/raw_types_from_amendements.js +3 -95
  94. package/lib/scripts/raw_types_from_amendements.mjs +1 -16
  95. package/lib/scripts/reorganize_data.js +74 -294
  96. package/lib/scripts/reorganize_data.mjs +22 -133
  97. package/lib/scripts/retrieve_deputes_photos.js +6 -119
  98. package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
  99. package/lib/scripts/retrieve_documents.js +4 -192
  100. package/lib/scripts/retrieve_documents.mjs +2 -50
  101. package/lib/scripts/retrieve_open_data.js +44 -116
  102. package/lib/scripts/retrieve_open_data.mjs +14 -19
  103. package/lib/scripts/retrieve_pending_amendments.js +4 -98
  104. package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
  105. package/lib/scripts/retrieve_senateurs_photos.js +18 -114
  106. package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
  107. package/lib/scripts/retrieve_textes_lois.js +3 -122
  108. package/lib/scripts/retrieve_textes_lois.mjs +3 -21
  109. package/lib/scripts/test_load.js +2 -10
  110. package/lib/scripts/test_load.mjs +2 -1
  111. package/lib/scripts/test_load_big_files.js +2 -10
  112. package/lib/scripts/test_load_big_files.mjs +2 -1
  113. package/lib/scripts/validate_json.js +4 -119
  114. package/lib/scripts/validate_json.mjs +2 -36
  115. package/lib/shared_types/codes_actes.js +1 -24
  116. package/lib/shared_types/codes_actes.mjs +3 -10
  117. package/lib/strings.js +1 -5
  118. package/lib/strings.mjs +1 -1
  119. package/lib/types/acteurs_et_organes.js +9 -84
  120. package/lib/types/acteurs_et_organes.mjs +10 -63
  121. package/lib/types/agendas.js +8 -90
  122. package/lib/types/agendas.mjs +11 -66
  123. package/lib/types/amendements.d.ts +2 -0
  124. package/lib/types/amendements.js +12 -92
  125. package/lib/types/amendements.mjs +15 -70
  126. package/lib/types/dossiers_legislatifs.js +8 -96
  127. package/lib/types/dossiers_legislatifs.mjs +10 -72
  128. package/lib/types/legislatures.js +1 -3
  129. package/lib/types/legislatures.mjs +1 -2
  130. package/lib/types/scrutins.js +8 -82
  131. package/lib/types/scrutins.mjs +11 -58
  132. package/lib/urls.js +3 -27
  133. package/lib/urls.mjs +3 -21
  134. package/package.json +1 -1
package/lib/dates.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.object.define-property.js");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -16,50 +15,35 @@ exports.frenchTimeFormat = void 0;
16
15
  exports.frenchTimeFromDateOrString = frenchTimeFromDateOrString;
17
16
  exports.localIso8601StringFromDate = localIso8601StringFromDate;
18
17
  exports.patchedDateToJson = void 0;
19
-
20
18
  require("core-js/modules/es.date.to-json.js");
21
-
22
19
  require("core-js/modules/es.date.to-string.js");
23
-
24
20
  require("core-js/modules/es.regexp.exec.js");
25
-
26
21
  require("core-js/modules/es.string.replace.js");
27
-
28
22
  require("core-js/modules/es.date.to-iso-string.js");
29
-
30
23
  require("core-js/modules/es.object.to-string.js");
31
-
32
24
  require("core-js/modules/es.regexp.to-string.js");
33
-
34
25
  require("core-js/modules/web.url.to-json.js");
35
-
36
26
  require("core-js/modules/es.string.ends-with.js");
37
-
38
27
  var _index = _interopRequireDefault(require("date-fns/format/index.js"));
39
-
40
28
  var _index2 = _interopRequireDefault(require("date-fns/locale/fr/index.js"));
41
-
42
29
  var _index3 = _interopRequireDefault(require("date-fns/parse/index.js"));
43
-
44
30
  var _index4 = _interopRequireDefault(require("date-fns/parseISO/index.js"));
45
-
46
31
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
47
-
48
32
  // Note: "/index.js" added to imports, because of issue
49
33
  // https://github.com/date-fns/date-fns/issues/2964
34
+
50
35
  // Patch Date.prototype.toJSON to ensure that dates keep their timezone when converted to strings.
51
36
  // https://stackoverflow.com/questions/31096130/how-to-json-stringify-a-javascript-date-and-preserve-timezone
52
37
  var existingDateToJson = Date.prototype.toJSON;
53
38
  exports.existingDateToJson = existingDateToJson;
54
-
55
39
  var patchedDateToJson = function patchedDateToJson() {
56
40
  try {
57
41
  var timezoneOffsetInHours = -(this.getTimezoneOffset() / 60); //UTC minus local time
58
-
59
42
  var sign = timezoneOffsetInHours >= 0 ? "+" : "-";
60
- var leadingZero = Math.abs(timezoneOffsetInHours) < 10 ? "0" : ""; // It's a bit unfortunate that we need to construct a new Date instance
61
- // (we don't want _this_ Date instance to be modified).
43
+ var leadingZero = Math.abs(timezoneOffsetInHours) < 10 ? "0" : "";
62
44
 
45
+ // It's a bit unfortunate that we need to construct a new Date instance
46
+ // (we don't want _this_ Date instance to be modified).
63
47
  var correctedDate = new Date(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds(), this.getMilliseconds());
64
48
  correctedDate.setHours(this.getHours() + timezoneOffsetInHours);
65
49
  var iso = correctedDate.toISOString().replace("Z", "");
@@ -71,7 +55,6 @@ var patchedDateToJson = function patchedDateToJson() {
71
55
  return jsonDate;
72
56
  }
73
57
  };
74
-
75
58
  exports.patchedDateToJson = patchedDateToJson;
76
59
  var frenchDateFormat = new Intl.DateTimeFormat("fr-FR", {
77
60
  day: "numeric",
@@ -90,66 +73,53 @@ var frenchTimeFormat = new Intl.DateTimeFormat("fr-FR", {
90
73
  minute: "2-digit"
91
74
  });
92
75
  exports.frenchTimeFormat = frenchTimeFormat;
93
-
94
76
  function dateFromNullableDateOrIsoString(date, defaultValue) {
95
77
  if (date instanceof Date) {
96
78
  return date;
97
79
  }
98
-
99
80
  if (typeof date === "string") {
100
81
  return (0, _index4["default"])(date);
101
82
  }
102
-
103
83
  return defaultValue;
104
- } /// Convert strings like "2017-11-24+01:00" to dates.
105
-
84
+ }
106
85
 
86
+ /// Convert strings like "2017-11-24+01:00" to dates.
107
87
  function dateFromYearMonthDayTimezoneString(dateString) {
108
88
  return (0, _index3["default"])(dateString, "yyyy-MM-ddXXX", new Date());
109
89
  }
110
-
111
90
  function displayDateFromLocalIsoString(dateString) {
112
91
  var date = (0, _index4["default"])(dateString);
113
92
  dateString = (0, _index["default"])(date, "EEEE d LLLL yyyy H'h'mm", {
114
93
  locale: _index2["default"]
115
94
  });
116
-
117
95
  if (dateString.endsWith(" 0h00")) {
118
96
  dateString = dateString.substring(0, dateString.length - 5);
119
97
  }
120
-
121
98
  return dateString;
122
99
  }
123
-
124
100
  function formatRelativeFrenchTime(date, now) {
125
101
  if (date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate()) {
126
102
  return frenchTimeFormat.format(date);
127
103
  }
128
-
129
104
  return frenchDateSameYearShortFormat.format(date);
130
105
  }
131
-
132
106
  function frenchDateWithoutDayOfWeekFromDateOrString(dateOrString) {
133
107
  var date = dateOrString instanceof Date ? dateOrString : (0, _index4["default"])(dateOrString);
134
108
  var dateString = (0, _index["default"])(date, "d LLLL yyyy H'h'mm", {
135
109
  locale: _index2["default"]
136
110
  });
137
-
138
111
  if (dateString.endsWith(" 0h00")) {
139
112
  dateString = dateString.substring(0, dateString.length - 5);
140
113
  }
141
-
142
114
  return dateString;
143
115
  }
144
-
145
116
  function frenchTimeFromDateOrString(dateOrString) {
146
117
  var date = dateOrString instanceof Date ? dateOrString : (0, _index4["default"])(dateOrString);
147
118
  return (0, _index["default"])(date, "H'h'mm", {
148
119
  locale: _index2["default"]
149
120
  });
150
121
  }
151
-
152
122
  function localIso8601StringFromDate(date) {
153
123
  return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().split("T")[0];
154
124
  }
155
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGlzdGluZ0RhdGVUb0pzb24iLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJ0aW1lem9uZU9mZnNldEluSG91cnMiLCJnZXRUaW1lem9uZU9mZnNldCIsInNpZ24iLCJsZWFkaW5nWmVybyIsIk1hdGgiLCJhYnMiLCJjb3JyZWN0ZWREYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwic2V0SG91cnMiLCJpc28iLCJ0b0lTT1N0cmluZyIsInJlcGxhY2UiLCJ0b1N0cmluZyIsInNwbGl0IiwiZSIsImpzb25EYXRlIiwiZnJlbmNoRGF0ZUZvcm1hdCIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsImRheSIsIm1vbnRoIiwid2Vla2RheSIsInllYXIiLCJmcmVuY2hEYXRlU2FtZVllYXJTaG9ydEZvcm1hdCIsImZyZW5jaFRpbWVGb3JtYXQiLCJob3VyIiwibWludXRlIiwiZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyIsImRhdGUiLCJkZWZhdWx0VmFsdWUiLCJwYXJzZUlTTyIsImRhdGVGcm9tWWVhck1vbnRoRGF5VGltZXpvbmVTdHJpbmciLCJkYXRlU3RyaW5nIiwicGFyc2UiLCJkaXNwbGF5RGF0ZUZyb21Mb2NhbElzb1N0cmluZyIsImZvcm1hdCIsImxvY2FsZSIsImZyTG9jYWxlIiwiZW5kc1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJmb3JtYXRSZWxhdGl2ZUZyZW5jaFRpbWUiLCJub3ciLCJmcmVuY2hEYXRlV2l0aG91dERheU9mV2Vla0Zyb21EYXRlT3JTdHJpbmciLCJkYXRlT3JTdHJpbmciLCJmcmVuY2hUaW1lRnJvbURhdGVPclN0cmluZyIsImxvY2FsSXNvODYwMVN0cmluZ0Zyb21EYXRlIiwiZ2V0VGltZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3RlOiBcIi9pbmRleC5qc1wiIGFkZGVkIHRvIGltcG9ydHMsIGJlY2F1c2Ugb2YgaXNzdWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMjk2NFxuaW1wb3J0IGZvcm1hdCBmcm9tIFwiZGF0ZS1mbnMvZm9ybWF0L2luZGV4LmpzXCJcbmltcG9ydCBmckxvY2FsZSBmcm9tIFwiZGF0ZS1mbnMvbG9jYWxlL2ZyL2luZGV4LmpzXCJcbmltcG9ydCBwYXJzZSBmcm9tIFwiZGF0ZS1mbnMvcGFyc2UvaW5kZXguanNcIlxuaW1wb3J0IHBhcnNlSVNPIGZyb20gXCJkYXRlLWZucy9wYXJzZUlTTy9pbmRleC5qc1wiXG5cbi8vIFBhdGNoIERhdGUucHJvdG90eXBlLnRvSlNPTiB0byBlbnN1cmUgdGhhdCBkYXRlcyBrZWVwIHRoZWlyIHRpbWV6b25lIHdoZW4gY29udmVydGVkIHRvIHN0cmluZ3MuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTA5NjEzMC9ob3ctdG8tanNvbi1zdHJpbmdpZnktYS1qYXZhc2NyaXB0LWRhdGUtYW5kLXByZXNlcnZlLXRpbWV6b25lXG5leHBvcnQgY29uc3QgZXhpc3RpbmdEYXRlVG9Kc29uID0gRGF0ZS5wcm90b3R5cGUudG9KU09OXG5leHBvcnQgY29uc3QgcGF0Y2hlZERhdGVUb0pzb24gPSBmdW5jdGlvbiAodGhpczogRGF0ZSk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbkhvdXJzID0gLSh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MCkgLy9VVEMgbWludXMgbG9jYWwgdGltZVxuICAgIGNvbnN0IHNpZ24gPSB0aW1lem9uZU9mZnNldEluSG91cnMgPj0gMCA/IFwiK1wiIDogXCItXCJcbiAgICBjb25zdCBsZWFkaW5nWmVybyA9IE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykgPCAxMCA/IFwiMFwiIDogXCJcIlxuXG4gICAgLy8gSXQncyBhIGJpdCB1bmZvcnR1bmF0ZSB0aGF0IHdlIG5lZWQgdG8gY29uc3RydWN0IGEgbmV3IERhdGUgaW5zdGFuY2VcbiAgICAvLyAod2UgZG9uJ3Qgd2FudCBfdGhpc18gRGF0ZSBpbnN0YW5jZSB0byBiZSBtb2RpZmllZCkuXG4gICAgY29uc3QgY29ycmVjdGVkRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5nZXRNb250aCgpLFxuICAgICAgdGhpcy5nZXREYXRlKCksXG4gICAgICB0aGlzLmdldEhvdXJzKCksXG4gICAgICB0aGlzLmdldE1pbnV0ZXMoKSxcbiAgICAgIHRoaXMuZ2V0U2Vjb25kcygpLFxuICAgICAgdGhpcy5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICApXG4gICAgY29ycmVjdGVkRGF0ZS5zZXRIb3Vycyh0aGlzLmdldEhvdXJzKCkgKyB0aW1lem9uZU9mZnNldEluSG91cnMpXG4gICAgY29uc3QgaXNvID0gY29ycmVjdGVkRGF0ZS50b0lTT1N0cmluZygpLnJlcGxhY2UoXCJaXCIsIFwiXCIpXG4gICAgcmV0dXJuIChcbiAgICAgIGlzbyArXG4gICAgICBzaWduICtcbiAgICAgIGxlYWRpbmdaZXJvICtcbiAgICAgIE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMF0gK1xuICAgICAgXCI6MDBcIlxuICAgIClcbiAgfSBjYXRjaCAoZSkge1xuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuICAgIGNvbnN0IGpzb25EYXRlID0gdGhpcy50b0pTT04oKVxuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gICAgcmV0dXJuIGpzb25EYXRlXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgZGF5OiBcIm51bWVyaWNcIixcbiAgbW9udGg6IFwibG9uZ1wiLFxuICB3ZWVrZGF5OiBcImxvbmdcIixcbiAgeWVhcjogXCJudW1lcmljXCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJmci1GUlwiLCB7XG4gIGRheTogXCJudW1lcmljXCIsXG4gIG1vbnRoOiBcInNob3J0XCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaFRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgaG91cjogXCJudW1lcmljXCIsXG4gIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG59KVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyhcbiAgZGF0ZTogRGF0ZSB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIGRlZmF1bHRWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwsXG4pOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBkYXRlXG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHBhcnNlSVNPKGRhdGUpXG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZVxufVxuXG4vLy8gQ29udmVydCBzdHJpbmdzIGxpa2UgXCIyMDE3LTExLTI0KzAxOjAwXCIgdG8gZGF0ZXMuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21ZZWFyTW9udGhEYXlUaW1lem9uZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlIHtcbiAgcmV0dXJuIHBhcnNlKGRhdGVTdHJpbmcsIFwieXl5eS1NTS1kZFhYWFwiLCBuZXcgRGF0ZSgpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheURhdGVGcm9tTG9jYWxJc29TdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlSVNPKGRhdGVTdHJpbmcpXG4gIGRhdGVTdHJpbmcgPSBmb3JtYXQoZGF0ZSwgXCJFRUVFIGQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlRnJlbmNoVGltZShkYXRlOiBEYXRlLCBub3c6IERhdGUpIHtcbiAgaWYgKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiZcbiAgICBkYXRlLmdldE1vbnRoKCkgPT09IG5vdy5nZXRNb250aCgpICYmXG4gICAgZGF0ZS5nZXREYXRlKCkgPT09IG5vdy5nZXREYXRlKClcbiAgKSB7XG4gICAgcmV0dXJuIGZyZW5jaFRpbWVGb3JtYXQuZm9ybWF0KGRhdGUpXG4gIH1cbiAgcmV0dXJuIGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0LmZvcm1hdChkYXRlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICBsZXQgZGF0ZVN0cmluZyA9IGZvcm1hdChkYXRlLCBcImQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyZW5jaFRpbWVGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICByZXR1cm4gZm9ybWF0KGRhdGUsIFwiSCdoJ21tXCIsIHsgbG9jYWxlOiBmckxvY2FsZSB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxJc284NjAxU3RyaW5nRnJvbURhdGUoZGF0ZTogRGF0ZSkge1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMClcbiAgICAudG9JU09TdHJpbmcoKVxuICAgIC5zcGxpdChcIlRcIilbMF1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBTEE7QUFDQTtBQU1BO0FBQ0E7QUFDTyxJQUFNQSxrQkFBa0IsR0FBR0MsSUFBSSxDQUFDQyxTQUFMLENBQWVDLE1BQTFDOzs7QUFDQSxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLEdBQThCO0VBQzdELElBQUk7SUFDRixJQUFNQyxxQkFBcUIsR0FBRyxFQUFFLEtBQUtDLGlCQUFMLEtBQTJCLEVBQTdCLENBQTlCLENBREUsQ0FDNkQ7O0lBQy9ELElBQU1DLElBQUksR0FBR0YscUJBQXFCLElBQUksQ0FBekIsR0FBNkIsR0FBN0IsR0FBbUMsR0FBaEQ7SUFDQSxJ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
125
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGlzdGluZ0RhdGVUb0pzb24iLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJ0aW1lem9uZU9mZnNldEluSG91cnMiLCJnZXRUaW1lem9uZU9mZnNldCIsInNpZ24iLCJsZWFkaW5nWmVybyIsIk1hdGgiLCJhYnMiLCJjb3JyZWN0ZWREYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwic2V0SG91cnMiLCJpc28iLCJ0b0lTT1N0cmluZyIsInJlcGxhY2UiLCJ0b1N0cmluZyIsInNwbGl0IiwiZSIsImpzb25EYXRlIiwiZnJlbmNoRGF0ZUZvcm1hdCIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsImRheSIsIm1vbnRoIiwid2Vla2RheSIsInllYXIiLCJmcmVuY2hEYXRlU2FtZVllYXJTaG9ydEZvcm1hdCIsImZyZW5jaFRpbWVGb3JtYXQiLCJob3VyIiwibWludXRlIiwiZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyIsImRhdGUiLCJkZWZhdWx0VmFsdWUiLCJwYXJzZUlTTyIsImRhdGVGcm9tWWVhck1vbnRoRGF5VGltZXpvbmVTdHJpbmciLCJkYXRlU3RyaW5nIiwicGFyc2UiLCJkaXNwbGF5RGF0ZUZyb21Mb2NhbElzb1N0cmluZyIsImZvcm1hdCIsImxvY2FsZSIsImZyTG9jYWxlIiwiZW5kc1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJmb3JtYXRSZWxhdGl2ZUZyZW5jaFRpbWUiLCJub3ciLCJmcmVuY2hEYXRlV2l0aG91dERheU9mV2Vla0Zyb21EYXRlT3JTdHJpbmciLCJkYXRlT3JTdHJpbmciLCJmcmVuY2hUaW1lRnJvbURhdGVPclN0cmluZyIsImxvY2FsSXNvODYwMVN0cmluZ0Zyb21EYXRlIiwiZ2V0VGltZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3RlOiBcIi9pbmRleC5qc1wiIGFkZGVkIHRvIGltcG9ydHMsIGJlY2F1c2Ugb2YgaXNzdWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMjk2NFxuaW1wb3J0IGZvcm1hdCBmcm9tIFwiZGF0ZS1mbnMvZm9ybWF0L2luZGV4LmpzXCJcbmltcG9ydCBmckxvY2FsZSBmcm9tIFwiZGF0ZS1mbnMvbG9jYWxlL2ZyL2luZGV4LmpzXCJcbmltcG9ydCBwYXJzZSBmcm9tIFwiZGF0ZS1mbnMvcGFyc2UvaW5kZXguanNcIlxuaW1wb3J0IHBhcnNlSVNPIGZyb20gXCJkYXRlLWZucy9wYXJzZUlTTy9pbmRleC5qc1wiXG5cbi8vIFBhdGNoIERhdGUucHJvdG90eXBlLnRvSlNPTiB0byBlbnN1cmUgdGhhdCBkYXRlcyBrZWVwIHRoZWlyIHRpbWV6b25lIHdoZW4gY29udmVydGVkIHRvIHN0cmluZ3MuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTA5NjEzMC9ob3ctdG8tanNvbi1zdHJpbmdpZnktYS1qYXZhc2NyaXB0LWRhdGUtYW5kLXByZXNlcnZlLXRpbWV6b25lXG5leHBvcnQgY29uc3QgZXhpc3RpbmdEYXRlVG9Kc29uID0gRGF0ZS5wcm90b3R5cGUudG9KU09OXG5leHBvcnQgY29uc3QgcGF0Y2hlZERhdGVUb0pzb24gPSBmdW5jdGlvbiAodGhpczogRGF0ZSk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbkhvdXJzID0gLSh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MCkgLy9VVEMgbWludXMgbG9jYWwgdGltZVxuICAgIGNvbnN0IHNpZ24gPSB0aW1lem9uZU9mZnNldEluSG91cnMgPj0gMCA/IFwiK1wiIDogXCItXCJcbiAgICBjb25zdCBsZWFkaW5nWmVybyA9IE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykgPCAxMCA/IFwiMFwiIDogXCJcIlxuXG4gICAgLy8gSXQncyBhIGJpdCB1bmZvcnR1bmF0ZSB0aGF0IHdlIG5lZWQgdG8gY29uc3RydWN0IGEgbmV3IERhdGUgaW5zdGFuY2VcbiAgICAvLyAod2UgZG9uJ3Qgd2FudCBfdGhpc18gRGF0ZSBpbnN0YW5jZSB0byBiZSBtb2RpZmllZCkuXG4gICAgY29uc3QgY29ycmVjdGVkRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5nZXRNb250aCgpLFxuICAgICAgdGhpcy5nZXREYXRlKCksXG4gICAgICB0aGlzLmdldEhvdXJzKCksXG4gICAgICB0aGlzLmdldE1pbnV0ZXMoKSxcbiAgICAgIHRoaXMuZ2V0U2Vjb25kcygpLFxuICAgICAgdGhpcy5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICApXG4gICAgY29ycmVjdGVkRGF0ZS5zZXRIb3Vycyh0aGlzLmdldEhvdXJzKCkgKyB0aW1lem9uZU9mZnNldEluSG91cnMpXG4gICAgY29uc3QgaXNvID0gY29ycmVjdGVkRGF0ZS50b0lTT1N0cmluZygpLnJlcGxhY2UoXCJaXCIsIFwiXCIpXG4gICAgcmV0dXJuIChcbiAgICAgIGlzbyArXG4gICAgICBzaWduICtcbiAgICAgIGxlYWRpbmdaZXJvICtcbiAgICAgIE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMF0gK1xuICAgICAgXCI6MDBcIlxuICAgIClcbiAgfSBjYXRjaCAoZSkge1xuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuICAgIGNvbnN0IGpzb25EYXRlID0gdGhpcy50b0pTT04oKVxuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gICAgcmV0dXJuIGpzb25EYXRlXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgZGF5OiBcIm51bWVyaWNcIixcbiAgbW9udGg6IFwibG9uZ1wiLFxuICB3ZWVrZGF5OiBcImxvbmdcIixcbiAgeWVhcjogXCJudW1lcmljXCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJmci1GUlwiLCB7XG4gIGRheTogXCJudW1lcmljXCIsXG4gIG1vbnRoOiBcInNob3J0XCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaFRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgaG91cjogXCJudW1lcmljXCIsXG4gIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG59KVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyhcbiAgZGF0ZTogRGF0ZSB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIGRlZmF1bHRWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwsXG4pOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBkYXRlXG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHBhcnNlSVNPKGRhdGUpXG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZVxufVxuXG4vLy8gQ29udmVydCBzdHJpbmdzIGxpa2UgXCIyMDE3LTExLTI0KzAxOjAwXCIgdG8gZGF0ZXMuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21ZZWFyTW9udGhEYXlUaW1lem9uZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlIHtcbiAgcmV0dXJuIHBhcnNlKGRhdGVTdHJpbmcsIFwieXl5eS1NTS1kZFhYWFwiLCBuZXcgRGF0ZSgpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheURhdGVGcm9tTG9jYWxJc29TdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlSVNPKGRhdGVTdHJpbmcpXG4gIGRhdGVTdHJpbmcgPSBmb3JtYXQoZGF0ZSwgXCJFRUVFIGQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlRnJlbmNoVGltZShkYXRlOiBEYXRlLCBub3c6IERhdGUpIHtcbiAgaWYgKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiZcbiAgICBkYXRlLmdldE1vbnRoKCkgPT09IG5vdy5nZXRNb250aCgpICYmXG4gICAgZGF0ZS5nZXREYXRlKCkgPT09IG5vdy5nZXREYXRlKClcbiAgKSB7XG4gICAgcmV0dXJuIGZyZW5jaFRpbWVGb3JtYXQuZm9ybWF0KGRhdGUpXG4gIH1cbiAgcmV0dXJuIGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0LmZvcm1hdChkYXRlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICBsZXQgZGF0ZVN0cmluZyA9IGZvcm1hdChkYXRlLCBcImQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyZW5jaFRpbWVGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICByZXR1cm4gZm9ybWF0KGRhdGUsIFwiSCdoJ21tXCIsIHsgbG9jYWxlOiBmckxvY2FsZSB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxJc284NjAxU3RyaW5nRnJvbURhdGUoZGF0ZTogRGF0ZSkge1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMClcbiAgICAudG9JU09TdHJpbmcoKVxuICAgIC5zcGxpdChcIlRcIilbMF1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFpRDtBQUxqRDtBQUNBOztBQU1BO0FBQ0E7QUFDTyxJQUFNQSxrQkFBa0IsR0FBR0MsSUFBSSxDQUFDQyxTQUFTLENBQUNDLE1BQU07QUFBQTtBQUNoRCxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCLEdBQWlDO0VBQzdELElBQUk7SUFDRixJQUFNQyxxQkFBcUIsR0FBRyxFQUFFLElBQUksQ0FBQ0MsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBQztJQUMvRCxJQUFNQyxJQUFJLEdBQUdGLHFCQUFxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRztJQUNuRCxJQUFNRyxXQUFX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
package/lib/dates.mjs CHANGED
@@ -3,18 +3,19 @@
3
3
  import format from "date-fns/format/index.js";
4
4
  import frLocale from "date-fns/locale/fr/index.js";
5
5
  import parse from "date-fns/parse/index.js";
6
- import parseISO from "date-fns/parseISO/index.js"; // 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
6
+ import parseISO from "date-fns/parseISO/index.js";
8
7
 
8
+ // Patch Date.prototype.toJSON to ensure that dates keep their timezone when converted to strings.
9
+ // https://stackoverflow.com/questions/31096130/how-to-json-stringify-a-javascript-date-and-preserve-timezone
9
10
  export const existingDateToJson = Date.prototype.toJSON;
10
11
  export const patchedDateToJson = function () {
11
12
  try {
12
13
  const timezoneOffsetInHours = -(this.getTimezoneOffset() / 60); //UTC minus local time
13
-
14
14
  const sign = timezoneOffsetInHours >= 0 ? "+" : "-";
15
- const leadingZero = Math.abs(timezoneOffsetInHours) < 10 ? "0" : ""; // It's a bit unfortunate that we need to construct a new Date instance
16
- // (we don't want _this_ Date instance to be modified).
15
+ const leadingZero = Math.abs(timezoneOffsetInHours) < 10 ? "0" : "";
17
16
 
17
+ // It's a bit unfortunate that we need to construct a new Date instance
18
+ // (we don't want _this_ Date instance to be modified).
18
19
  const correctedDate = new Date(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds(), this.getMilliseconds());
19
20
  correctedDate.setHours(this.getHours() + timezoneOffsetInHours);
20
21
  const iso = correctedDate.toISOString().replace("Z", "");
@@ -44,14 +45,13 @@ export function dateFromNullableDateOrIsoString(date, defaultValue) {
44
45
  if (date instanceof Date) {
45
46
  return date;
46
47
  }
47
-
48
48
  if (typeof date === "string") {
49
49
  return parseISO(date);
50
50
  }
51
-
52
51
  return defaultValue;
53
- } /// Convert strings like "2017-11-24+01:00" to dates.
52
+ }
54
53
 
54
+ /// Convert strings like "2017-11-24+01:00" to dates.
55
55
  export function dateFromYearMonthDayTimezoneString(dateString) {
56
56
  return parse(dateString, "yyyy-MM-ddXXX", new Date());
57
57
  }
@@ -60,18 +60,15 @@ export function displayDateFromLocalIsoString(dateString) {
60
60
  dateString = format(date, "EEEE d LLLL yyyy H'h'mm", {
61
61
  locale: frLocale
62
62
  });
63
-
64
63
  if (dateString.endsWith(" 0h00")) {
65
64
  dateString = dateString.substring(0, dateString.length - 5);
66
65
  }
67
-
68
66
  return dateString;
69
67
  }
70
68
  export function formatRelativeFrenchTime(date, now) {
71
69
  if (date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate()) {
72
70
  return frenchTimeFormat.format(date);
73
71
  }
74
-
75
72
  return frenchDateSameYearShortFormat.format(date);
76
73
  }
77
74
  export function frenchDateWithoutDayOfWeekFromDateOrString(dateOrString) {
@@ -79,11 +76,9 @@ export function frenchDateWithoutDayOfWeekFromDateOrString(dateOrString) {
79
76
  let dateString = format(date, "d LLLL yyyy H'h'mm", {
80
77
  locale: frLocale
81
78
  });
82
-
83
79
  if (dateString.endsWith(" 0h00")) {
84
80
  dateString = dateString.substring(0, dateString.length - 5);
85
81
  }
86
-
87
82
  return dateString;
88
83
  }
89
84
  export function frenchTimeFromDateOrString(dateOrString) {
@@ -95,4 +90,4 @@ export function frenchTimeFromDateOrString(dateOrString) {
95
90
  export function localIso8601StringFromDate(date) {
96
91
  return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().split("T")[0];
97
92
  }
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXQiLCJmckxvY2FsZSIsInBhcnNlIiwicGFyc2VJU08iLCJleGlzdGluZ0RhdGVUb0pzb24iLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJ0aW1lem9uZU9mZnNldEluSG91cnMiLCJnZXRUaW1lem9uZU9mZnNldCIsInNpZ24iLCJsZWFkaW5nWmVybyIsIk1hdGgiLCJhYnMiLCJjb3JyZWN0ZWREYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwic2V0SG91cnMiLCJpc28iLCJ0b0lTT1N0cmluZyIsInJlcGxhY2UiLCJ0b1N0cmluZyIsInNwbGl0IiwiZSIsImpzb25EYXRlIiwiZnJlbmNoRGF0ZUZvcm1hdCIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsImRheSIsIm1vbnRoIiwid2Vla2RheSIsInllYXIiLCJmcmVuY2hEYXRlU2FtZVllYXJTaG9ydEZvcm1hdCIsImZyZW5jaFRpbWVGb3JtYXQiLCJob3VyIiwibWludXRlIiwiZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyIsImRhdGUiLCJkZWZhdWx0VmFsdWUiLCJkYXRlRnJvbVllYXJNb250aERheVRpbWV6b25lU3RyaW5nIiwiZGF0ZVN0cmluZyIsImRpc3BsYXlEYXRlRnJvbUxvY2FsSXNvU3RyaW5nIiwibG9jYWxlIiwiZW5kc1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJmb3JtYXRSZWxhdGl2ZUZyZW5jaFRpbWUiLCJub3ciLCJmcmVuY2hEYXRlV2l0aG91dERheU9mV2Vla0Zyb21EYXRlT3JTdHJpbmciLCJkYXRlT3JTdHJpbmciLCJmcmVuY2hUaW1lRnJvbURhdGVPclN0cmluZyIsImxvY2FsSXNvODYwMVN0cmluZ0Zyb21EYXRlIiwiZ2V0VGltZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3RlOiBcIi9pbmRleC5qc1wiIGFkZGVkIHRvIGltcG9ydHMsIGJlY2F1c2Ugb2YgaXNzdWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMjk2NFxuaW1wb3J0IGZvcm1hdCBmcm9tIFwiZGF0ZS1mbnMvZm9ybWF0L2luZGV4LmpzXCJcbmltcG9ydCBmckxvY2FsZSBmcm9tIFwiZGF0ZS1mbnMvbG9jYWxlL2ZyL2luZGV4LmpzXCJcbmltcG9ydCBwYXJzZSBmcm9tIFwiZGF0ZS1mbnMvcGFyc2UvaW5kZXguanNcIlxuaW1wb3J0IHBhcnNlSVNPIGZyb20gXCJkYXRlLWZucy9wYXJzZUlTTy9pbmRleC5qc1wiXG5cbi8vIFBhdGNoIERhdGUucHJvdG90eXBlLnRvSlNPTiB0byBlbnN1cmUgdGhhdCBkYXRlcyBrZWVwIHRoZWlyIHRpbWV6b25lIHdoZW4gY29udmVydGVkIHRvIHN0cmluZ3MuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTA5NjEzMC9ob3ctdG8tanNvbi1zdHJpbmdpZnktYS1qYXZhc2NyaXB0LWRhdGUtYW5kLXByZXNlcnZlLXRpbWV6b25lXG5leHBvcnQgY29uc3QgZXhpc3RpbmdEYXRlVG9Kc29uID0gRGF0ZS5wcm90b3R5cGUudG9KU09OXG5leHBvcnQgY29uc3QgcGF0Y2hlZERhdGVUb0pzb24gPSBmdW5jdGlvbiAodGhpczogRGF0ZSk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbkhvdXJzID0gLSh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MCkgLy9VVEMgbWludXMgbG9jYWwgdGltZVxuICAgIGNvbnN0IHNpZ24gPSB0aW1lem9uZU9mZnNldEluSG91cnMgPj0gMCA/IFwiK1wiIDogXCItXCJcbiAgICBjb25zdCBsZWFkaW5nWmVybyA9IE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykgPCAxMCA/IFwiMFwiIDogXCJcIlxuXG4gICAgLy8gSXQncyBhIGJpdCB1bmZvcnR1bmF0ZSB0aGF0IHdlIG5lZWQgdG8gY29uc3RydWN0IGEgbmV3IERhdGUgaW5zdGFuY2VcbiAgICAvLyAod2UgZG9uJ3Qgd2FudCBfdGhpc18gRGF0ZSBpbnN0YW5jZSB0byBiZSBtb2RpZmllZCkuXG4gICAgY29uc3QgY29ycmVjdGVkRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5nZXRNb250aCgpLFxuICAgICAgdGhpcy5nZXREYXRlKCksXG4gICAgICB0aGlzLmdldEhvdXJzKCksXG4gICAgICB0aGlzLmdldE1pbnV0ZXMoKSxcbiAgICAgIHRoaXMuZ2V0U2Vjb25kcygpLFxuICAgICAgdGhpcy5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICApXG4gICAgY29ycmVjdGVkRGF0ZS5zZXRIb3Vycyh0aGlzLmdldEhvdXJzKCkgKyB0aW1lem9uZU9mZnNldEluSG91cnMpXG4gICAgY29uc3QgaXNvID0gY29ycmVjdGVkRGF0ZS50b0lTT1N0cmluZygpLnJlcGxhY2UoXCJaXCIsIFwiXCIpXG4gICAgcmV0dXJuIChcbiAgICAgIGlzbyArXG4gICAgICBzaWduICtcbiAgICAgIGxlYWRpbmdaZXJvICtcbiAgICAgIE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMF0gK1xuICAgICAgXCI6MDBcIlxuICAgIClcbiAgfSBjYXRjaCAoZSkge1xuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuICAgIGNvbnN0IGpzb25EYXRlID0gdGhpcy50b0pTT04oKVxuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gICAgcmV0dXJuIGpzb25EYXRlXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgZGF5OiBcIm51bWVyaWNcIixcbiAgbW9udGg6IFwibG9uZ1wiLFxuICB3ZWVrZGF5OiBcImxvbmdcIixcbiAgeWVhcjogXCJudW1lcmljXCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJmci1GUlwiLCB7XG4gIGRheTogXCJudW1lcmljXCIsXG4gIG1vbnRoOiBcInNob3J0XCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaFRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgaG91cjogXCJudW1lcmljXCIsXG4gIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG59KVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyhcbiAgZGF0ZTogRGF0ZSB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIGRlZmF1bHRWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwsXG4pOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBkYXRlXG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHBhcnNlSVNPKGRhdGUpXG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZVxufVxuXG4vLy8gQ29udmVydCBzdHJpbmdzIGxpa2UgXCIyMDE3LTExLTI0KzAxOjAwXCIgdG8gZGF0ZXMuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21ZZWFyTW9udGhEYXlUaW1lem9uZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlIHtcbiAgcmV0dXJuIHBhcnNlKGRhdGVTdHJpbmcsIFwieXl5eS1NTS1kZFhYWFwiLCBuZXcgRGF0ZSgpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheURhdGVGcm9tTG9jYWxJc29TdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlSVNPKGRhdGVTdHJpbmcpXG4gIGRhdGVTdHJpbmcgPSBmb3JtYXQoZGF0ZSwgXCJFRUVFIGQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlRnJlbmNoVGltZShkYXRlOiBEYXRlLCBub3c6IERhdGUpIHtcbiAgaWYgKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiZcbiAgICBkYXRlLmdldE1vbnRoKCkgPT09IG5vdy5nZXRNb250aCgpICYmXG4gICAgZGF0ZS5nZXREYXRlKCkgPT09IG5vdy5nZXREYXRlKClcbiAgKSB7XG4gICAgcmV0dXJuIGZyZW5jaFRpbWVGb3JtYXQuZm9ybWF0KGRhdGUpXG4gIH1cbiAgcmV0dXJuIGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0LmZvcm1hdChkYXRlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICBsZXQgZGF0ZVN0cmluZyA9IGZvcm1hdChkYXRlLCBcImQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyZW5jaFRpbWVGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICByZXR1cm4gZm9ybWF0KGRhdGUsIFwiSCdoJ21tXCIsIHsgbG9jYWxlOiBmckxvY2FsZSB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxJc284NjAxU3RyaW5nRnJvbURhdGUoZGF0ZTogRGF0ZSkge1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMClcbiAgICAudG9JU09TdHJpbmcoKVxuICAgIC5zcGxpdChcIlRcIilbMF1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLE9BQU9BLE1BQVAsTUFBbUIsMEJBQW5CO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQiw2QkFBckI7QUFDQSxPQUFPQyxLQUFQLE1BQWtCLHlCQUFsQjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsNEJBQXJCLEMsQ0FFQTtBQUNBOztBQUNBLE9BQU8sTUFBTUMsa0JBQWtCLEdBQUdDLElBQUksQ0FBQ0MsU0FBTCxDQUFlQyxNQUExQztBQUNQLE9BQU8sTUFBTUMsaUJBQWlCLEdBQUcsWUFBOEI7RUFDN0QsSUFBSTtJQUNGLE1BQU1DLHFCQUFxQixHQUFHLEVBQUUsS0FBS0MsaUJBQUwsS0FBMkIsRUFBN0IsQ0FBOUIsQ0FERSxDQUM2RDs7SUFDL0QsTUFBTUMsSUFBSSxHQUFH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
93
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JtYXQiLCJmckxvY2FsZSIsInBhcnNlIiwicGFyc2VJU08iLCJleGlzdGluZ0RhdGVUb0pzb24iLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJ0aW1lem9uZU9mZnNldEluSG91cnMiLCJnZXRUaW1lem9uZU9mZnNldCIsInNpZ24iLCJsZWFkaW5nWmVybyIsIk1hdGgiLCJhYnMiLCJjb3JyZWN0ZWREYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwic2V0SG91cnMiLCJpc28iLCJ0b0lTT1N0cmluZyIsInJlcGxhY2UiLCJ0b1N0cmluZyIsInNwbGl0IiwiZSIsImpzb25EYXRlIiwiZnJlbmNoRGF0ZUZvcm1hdCIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsImRheSIsIm1vbnRoIiwid2Vla2RheSIsInllYXIiLCJmcmVuY2hEYXRlU2FtZVllYXJTaG9ydEZvcm1hdCIsImZyZW5jaFRpbWVGb3JtYXQiLCJob3VyIiwibWludXRlIiwiZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyIsImRhdGUiLCJkZWZhdWx0VmFsdWUiLCJkYXRlRnJvbVllYXJNb250aERheVRpbWV6b25lU3RyaW5nIiwiZGF0ZVN0cmluZyIsImRpc3BsYXlEYXRlRnJvbUxvY2FsSXNvU3RyaW5nIiwibG9jYWxlIiwiZW5kc1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJmb3JtYXRSZWxhdGl2ZUZyZW5jaFRpbWUiLCJub3ciLCJmcmVuY2hEYXRlV2l0aG91dERheU9mV2Vla0Zyb21EYXRlT3JTdHJpbmciLCJkYXRlT3JTdHJpbmciLCJmcmVuY2hUaW1lRnJvbURhdGVPclN0cmluZyIsImxvY2FsSXNvODYwMVN0cmluZ0Zyb21EYXRlIiwiZ2V0VGltZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3RlOiBcIi9pbmRleC5qc1wiIGFkZGVkIHRvIGltcG9ydHMsIGJlY2F1c2Ugb2YgaXNzdWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9pc3N1ZXMvMjk2NFxuaW1wb3J0IGZvcm1hdCBmcm9tIFwiZGF0ZS1mbnMvZm9ybWF0L2luZGV4LmpzXCJcbmltcG9ydCBmckxvY2FsZSBmcm9tIFwiZGF0ZS1mbnMvbG9jYWxlL2ZyL2luZGV4LmpzXCJcbmltcG9ydCBwYXJzZSBmcm9tIFwiZGF0ZS1mbnMvcGFyc2UvaW5kZXguanNcIlxuaW1wb3J0IHBhcnNlSVNPIGZyb20gXCJkYXRlLWZucy9wYXJzZUlTTy9pbmRleC5qc1wiXG5cbi8vIFBhdGNoIERhdGUucHJvdG90eXBlLnRvSlNPTiB0byBlbnN1cmUgdGhhdCBkYXRlcyBrZWVwIHRoZWlyIHRpbWV6b25lIHdoZW4gY29udmVydGVkIHRvIHN0cmluZ3MuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTA5NjEzMC9ob3ctdG8tanNvbi1zdHJpbmdpZnktYS1qYXZhc2NyaXB0LWRhdGUtYW5kLXByZXNlcnZlLXRpbWV6b25lXG5leHBvcnQgY29uc3QgZXhpc3RpbmdEYXRlVG9Kc29uID0gRGF0ZS5wcm90b3R5cGUudG9KU09OXG5leHBvcnQgY29uc3QgcGF0Y2hlZERhdGVUb0pzb24gPSBmdW5jdGlvbiAodGhpczogRGF0ZSk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXRJbkhvdXJzID0gLSh0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MCkgLy9VVEMgbWludXMgbG9jYWwgdGltZVxuICAgIGNvbnN0IHNpZ24gPSB0aW1lem9uZU9mZnNldEluSG91cnMgPj0gMCA/IFwiK1wiIDogXCItXCJcbiAgICBjb25zdCBsZWFkaW5nWmVybyA9IE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykgPCAxMCA/IFwiMFwiIDogXCJcIlxuXG4gICAgLy8gSXQncyBhIGJpdCB1bmZvcnR1bmF0ZSB0aGF0IHdlIG5lZWQgdG8gY29uc3RydWN0IGEgbmV3IERhdGUgaW5zdGFuY2VcbiAgICAvLyAod2UgZG9uJ3Qgd2FudCBfdGhpc18gRGF0ZSBpbnN0YW5jZSB0byBiZSBtb2RpZmllZCkuXG4gICAgY29uc3QgY29ycmVjdGVkRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5nZXRNb250aCgpLFxuICAgICAgdGhpcy5nZXREYXRlKCksXG4gICAgICB0aGlzLmdldEhvdXJzKCksXG4gICAgICB0aGlzLmdldE1pbnV0ZXMoKSxcbiAgICAgIHRoaXMuZ2V0U2Vjb25kcygpLFxuICAgICAgdGhpcy5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICApXG4gICAgY29ycmVjdGVkRGF0ZS5zZXRIb3Vycyh0aGlzLmdldEhvdXJzKCkgKyB0aW1lem9uZU9mZnNldEluSG91cnMpXG4gICAgY29uc3QgaXNvID0gY29ycmVjdGVkRGF0ZS50b0lTT1N0cmluZygpLnJlcGxhY2UoXCJaXCIsIFwiXCIpXG4gICAgcmV0dXJuIChcbiAgICAgIGlzbyArXG4gICAgICBzaWduICtcbiAgICAgIGxlYWRpbmdaZXJvICtcbiAgICAgIE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0SW5Ib3VycykudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMF0gK1xuICAgICAgXCI6MDBcIlxuICAgIClcbiAgfSBjYXRjaCAoZSkge1xuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuICAgIGNvbnN0IGpzb25EYXRlID0gdGhpcy50b0pTT04oKVxuICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gICAgcmV0dXJuIGpzb25EYXRlXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgZGF5OiBcIm51bWVyaWNcIixcbiAgbW9udGg6IFwibG9uZ1wiLFxuICB3ZWVrZGF5OiBcImxvbmdcIixcbiAgeWVhcjogXCJudW1lcmljXCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJmci1GUlwiLCB7XG4gIGRheTogXCJudW1lcmljXCIsXG4gIG1vbnRoOiBcInNob3J0XCIsXG59KVxuZXhwb3J0IGNvbnN0IGZyZW5jaFRpbWVGb3JtYXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImZyLUZSXCIsIHtcbiAgaG91cjogXCJudW1lcmljXCIsXG4gIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG59KVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21OdWxsYWJsZURhdGVPcklzb1N0cmluZyhcbiAgZGF0ZTogRGF0ZSB8IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIGRlZmF1bHRWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCB8IG51bGwsXG4pOiBEYXRlIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBkYXRlXG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHBhcnNlSVNPKGRhdGUpXG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZVxufVxuXG4vLy8gQ29udmVydCBzdHJpbmdzIGxpa2UgXCIyMDE3LTExLTI0KzAxOjAwXCIgdG8gZGF0ZXMuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUZyb21ZZWFyTW9udGhEYXlUaW1lem9uZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlIHtcbiAgcmV0dXJuIHBhcnNlKGRhdGVTdHJpbmcsIFwieXl5eS1NTS1kZFhYWFwiLCBuZXcgRGF0ZSgpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGxheURhdGVGcm9tTG9jYWxJc29TdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlSVNPKGRhdGVTdHJpbmcpXG4gIGRhdGVTdHJpbmcgPSBmb3JtYXQoZGF0ZSwgXCJFRUVFIGQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlRnJlbmNoVGltZShkYXRlOiBEYXRlLCBub3c6IERhdGUpIHtcbiAgaWYgKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiZcbiAgICBkYXRlLmdldE1vbnRoKCkgPT09IG5vdy5nZXRNb250aCgpICYmXG4gICAgZGF0ZS5nZXREYXRlKCkgPT09IG5vdy5nZXREYXRlKClcbiAgKSB7XG4gICAgcmV0dXJuIGZyZW5jaFRpbWVGb3JtYXQuZm9ybWF0KGRhdGUpXG4gIH1cbiAgcmV0dXJuIGZyZW5jaERhdGVTYW1lWWVhclNob3J0Rm9ybWF0LmZvcm1hdChkYXRlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJlbmNoRGF0ZVdpdGhvdXREYXlPZldlZWtGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICBsZXQgZGF0ZVN0cmluZyA9IGZvcm1hdChkYXRlLCBcImQgTExMTCB5eXl5IEgnaCdtbVwiLCB7IGxvY2FsZTogZnJMb2NhbGUgfSlcbiAgaWYgKGRhdGVTdHJpbmcuZW5kc1dpdGgoXCIgMGgwMFwiKSkge1xuICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBkYXRlU3RyaW5nLmxlbmd0aCAtIDUpXG4gIH1cbiAgcmV0dXJuIGRhdGVTdHJpbmdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyZW5jaFRpbWVGcm9tRGF0ZU9yU3RyaW5nKFxuICBkYXRlT3JTdHJpbmc6IERhdGUgfCBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBkYXRlOiBEYXRlID1cbiAgICBkYXRlT3JTdHJpbmcgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZU9yU3RyaW5nIDogcGFyc2VJU08oZGF0ZU9yU3RyaW5nKVxuICByZXR1cm4gZm9ybWF0KGRhdGUsIFwiSCdoJ21tXCIsIHsgbG9jYWxlOiBmckxvY2FsZSB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxJc284NjAxU3RyaW5nRnJvbURhdGUoZGF0ZTogRGF0ZSkge1xuICByZXR1cm4gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMClcbiAgICAudG9JU09TdHJpbmcoKVxuICAgIC5zcGxpdChcIlRcIilbMF1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLE9BQU9BLE1BQU0sTUFBTSwwQkFBMEI7QUFDN0MsT0FBT0MsUUFBUSxNQUFNLDZCQUE2QjtBQUNsRCxPQUFPQyxLQUFLLE1BQU0seUJBQXlCO0FBQzNDLE9BQU9DLFFBQVEsTUFBTSw0QkFBNEI7O0FBRWpEO0FBQ0E7QUFDQSxPQUFPLE1BQU1DLGtCQUFrQixHQUFHQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsTUFBTTtBQUN2RCxPQUFPLE1BQU1DLGlCQUFpQixHQUFHLFlBQThCO0VBQzdELElBQUk7SUFDRixNQUFNQyxxQkFBcUIsR0FBRyxFQUFFLElBQUksQ0FBQ0MsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBQztJQUMvRCxNQUFNQyxJQUFJLEdBQUdG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