@formkit/tempo 0.0.19 → 0.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 (177) hide show
  1. package/dist/addDay.d.ts +9 -0
  2. package/dist/addDay.mjs +11 -0
  3. package/dist/addDay.mjs.map +1 -0
  4. package/dist/addHour.d.ts +9 -0
  5. package/dist/addHour.mjs +11 -0
  6. package/dist/addHour.mjs.map +1 -0
  7. package/dist/addMinute.d.ts +9 -0
  8. package/dist/addMinute.mjs +11 -0
  9. package/dist/addMinute.mjs.map +1 -0
  10. package/dist/addMonth.d.ts +13 -0
  11. package/dist/addMonth.mjs +19 -0
  12. package/dist/addMonth.mjs.map +1 -0
  13. package/dist/addSecond.d.ts +9 -0
  14. package/dist/addSecond.mjs +11 -0
  15. package/dist/addSecond.mjs.map +1 -0
  16. package/dist/addYear.d.ts +13 -0
  17. package/dist/addYear.mjs +19 -0
  18. package/dist/addYear.mjs.map +1 -0
  19. package/dist/ap.d.ts +8 -0
  20. package/dist/ap.mjs +28 -0
  21. package/dist/ap.mjs.map +1 -0
  22. package/dist/applyOffset.d.ts +11 -0
  23. package/dist/applyOffset.mjs +20 -0
  24. package/dist/applyOffset.mjs.map +1 -0
  25. package/dist/bundle.mjs +1215 -0
  26. package/dist/bundle.mjs.map +1 -0
  27. package/dist/common.d.ts +137 -0
  28. package/dist/common.mjs +252 -0
  29. package/dist/common.mjs.map +1 -0
  30. package/dist/date.d.ts +9 -0
  31. package/dist/date.mjs +28 -0
  32. package/dist/date.mjs.map +1 -0
  33. package/dist/dayEnd.d.ts +9 -0
  34. package/dist/dayEnd.mjs +11 -0
  35. package/dist/dayEnd.mjs.map +1 -0
  36. package/dist/dayOfYear.d.ts +10 -0
  37. package/dist/dayOfYear.mjs +12 -0
  38. package/dist/dayOfYear.mjs.map +1 -0
  39. package/dist/dayStart.d.ts +9 -0
  40. package/dist/dayStart.mjs +11 -0
  41. package/dist/dayStart.mjs.map +1 -0
  42. package/dist/deviceLocale.d.ts +7 -0
  43. package/dist/deviceLocale.mjs +8 -0
  44. package/dist/deviceLocale.mjs.map +1 -0
  45. package/dist/deviceTZ.d.ts +8 -0
  46. package/dist/deviceTZ.mjs +8 -0
  47. package/dist/deviceTZ.mjs.map +1 -0
  48. package/dist/diffDays.d.ts +12 -0
  49. package/dist/diffDays.mjs +14 -0
  50. package/dist/diffDays.mjs.map +1 -0
  51. package/dist/diffHours.d.ts +12 -0
  52. package/dist/diffHours.mjs +14 -0
  53. package/dist/diffHours.mjs.map +1 -0
  54. package/dist/diffMilliseconds.d.ts +10 -0
  55. package/dist/diffMilliseconds.mjs +11 -0
  56. package/dist/diffMilliseconds.mjs.map +1 -0
  57. package/dist/diffMinutes.d.ts +11 -0
  58. package/dist/diffMinutes.mjs +10 -0
  59. package/dist/diffMinutes.mjs.map +1 -0
  60. package/dist/diffMonths.d.ts +10 -0
  61. package/dist/diffMonths.mjs +25 -0
  62. package/dist/diffMonths.mjs.map +1 -0
  63. package/dist/diffRound.d.ts +9 -0
  64. package/dist/diffRound.mjs +9 -0
  65. package/dist/diffRound.mjs.map +1 -0
  66. package/dist/diffSeconds.d.ts +12 -0
  67. package/dist/diffSeconds.mjs +10 -0
  68. package/dist/diffSeconds.mjs.map +1 -0
  69. package/dist/diffWeeks.d.ts +12 -0
  70. package/dist/diffWeeks.mjs +14 -0
  71. package/dist/diffWeeks.mjs.map +1 -0
  72. package/dist/diffYears.d.ts +10 -0
  73. package/dist/diffYears.mjs +10 -0
  74. package/dist/diffYears.mjs.map +1 -0
  75. package/dist/format.d.ts +36 -0
  76. package/dist/format.mjs +48 -0
  77. package/dist/format.mjs.map +1 -0
  78. package/dist/formatStr.d.ts +13 -0
  79. package/dist/formatStr.mjs +13 -0
  80. package/dist/formatStr.mjs.map +1 -0
  81. package/dist/fourDigitYear.d.ts +10 -0
  82. package/dist/fourDigitYear.mjs +12 -0
  83. package/dist/fourDigitYear.mjs.map +1 -0
  84. package/dist/hourEnd.d.ts +9 -0
  85. package/dist/hourEnd.mjs +11 -0
  86. package/dist/hourEnd.mjs.map +1 -0
  87. package/dist/hourStart.d.ts +9 -0
  88. package/dist/hourStart.mjs +11 -0
  89. package/dist/hourStart.mjs.map +1 -0
  90. package/dist/index.cjs +139 -20
  91. package/dist/index.cjs.map +1 -1
  92. package/dist/index.d.cts +75 -4
  93. package/dist/index.d.ts +54 -498
  94. package/dist/index.mjs +62 -1057
  95. package/dist/index.mjs.map +1 -1
  96. package/dist/isAfter.d.ts +18 -0
  97. package/dist/isAfter.mjs +11 -0
  98. package/dist/isAfter.mjs.map +1 -0
  99. package/dist/isBefore.d.ts +13 -0
  100. package/dist/isBefore.mjs +11 -0
  101. package/dist/isBefore.mjs.map +1 -0
  102. package/dist/isEqual.d.ts +13 -0
  103. package/dist/isEqual.mjs +11 -0
  104. package/dist/isEqual.mjs.map +1 -0
  105. package/dist/iso8601.d.ts +13 -0
  106. package/dist/iso8601.mjs +27 -0
  107. package/dist/iso8601.mjs.map +1 -0
  108. package/dist/minuteEnd.d.ts +9 -0
  109. package/dist/minuteEnd.mjs +11 -0
  110. package/dist/minuteEnd.mjs.map +1 -0
  111. package/dist/minuteStart.d.ts +9 -0
  112. package/dist/minuteStart.mjs +11 -0
  113. package/dist/minuteStart.mjs.map +1 -0
  114. package/dist/monthDays.d.ts +9 -0
  115. package/dist/monthDays.mjs +10 -0
  116. package/dist/monthDays.mjs.map +1 -0
  117. package/dist/monthEnd.d.ts +10 -0
  118. package/dist/monthEnd.mjs +13 -0
  119. package/dist/monthEnd.mjs.map +1 -0
  120. package/dist/monthStart.d.ts +9 -0
  121. package/dist/monthStart.mjs +12 -0
  122. package/dist/monthStart.mjs.map +1 -0
  123. package/dist/nearestDay.d.ts +12 -0
  124. package/dist/nearestDay.mjs +46 -0
  125. package/dist/nearestDay.mjs.map +1 -0
  126. package/dist/offset.d.ts +14 -0
  127. package/dist/offset.mjs +36 -0
  128. package/dist/offset.mjs.map +1 -0
  129. package/dist/parse.d.ts +13 -0
  130. package/dist/parse.mjs +163 -0
  131. package/dist/parse.mjs.map +1 -0
  132. package/dist/parts.d.ts +12 -0
  133. package/dist/parts.mjs +214 -0
  134. package/dist/parts.mjs.map +1 -0
  135. package/dist/range.d.ts +10 -0
  136. package/dist/range.mjs +50 -0
  137. package/dist/range.mjs.map +1 -0
  138. package/dist/removeOffset.d.ts +10 -0
  139. package/dist/removeOffset.mjs +13 -0
  140. package/dist/removeOffset.mjs.map +1 -0
  141. package/dist/sameDay.d.ts +10 -0
  142. package/dist/sameDay.mjs +11 -0
  143. package/dist/sameDay.mjs.map +1 -0
  144. package/dist/sameHour.d.ts +10 -0
  145. package/dist/sameHour.mjs +11 -0
  146. package/dist/sameHour.mjs.map +1 -0
  147. package/dist/sameMinute.d.ts +10 -0
  148. package/dist/sameMinute.mjs +11 -0
  149. package/dist/sameMinute.mjs.map +1 -0
  150. package/dist/sameSecond.d.ts +10 -0
  151. package/dist/sameSecond.mjs +11 -0
  152. package/dist/sameSecond.mjs.map +1 -0
  153. package/dist/sameYear.d.ts +10 -0
  154. package/dist/sameYear.mjs +11 -0
  155. package/dist/sameYear.mjs.map +1 -0
  156. package/dist/types.d.ts +143 -0
  157. package/dist/types.mjs +1 -0
  158. package/dist/types.mjs.map +1 -0
  159. package/dist/tzDate.d.ts +15 -0
  160. package/dist/tzDate.mjs +12 -0
  161. package/dist/tzDate.mjs.map +1 -0
  162. package/dist/weekEnd.d.ts +12 -0
  163. package/dist/weekEnd.mjs +12 -0
  164. package/dist/weekEnd.mjs.map +1 -0
  165. package/dist/weekStart.d.ts +12 -0
  166. package/dist/weekStart.mjs +15 -0
  167. package/dist/weekStart.mjs.map +1 -0
  168. package/dist/yearDays.d.ts +9 -0
  169. package/dist/yearDays.mjs +10 -0
  170. package/dist/yearDays.mjs.map +1 -0
  171. package/dist/yearEnd.d.ts +9 -0
  172. package/dist/yearEnd.mjs +13 -0
  173. package/dist/yearEnd.mjs.map +1 -0
  174. package/dist/yearStart.d.ts +9 -0
  175. package/dist/yearStart.mjs +13 -0
  176. package/dist/yearStart.mjs.map +1 -0
  177. package/package.json +8 -1
package/dist/index.mjs CHANGED
@@ -1,1060 +1,57 @@
1
- // src/iso8601.ts
2
- var iso8601Match = /^([0-9]{4})-([0-1][0-9])(?:-([0-3][0-9]))?(?:[T ]?([0-2][0-9])(?::([0-5][0-9]))?(?::([0-5][0-9]))?)?(?:\.[0-9]+)?(Z|(?:\+|\-)[0-9]{2}:?[0-9]{2})?$/;
3
- function iso8601(date2) {
4
- const matches = date2.match(iso8601Match);
5
- if (matches) {
6
- const month = Number(matches[2]);
7
- if (month < 1 || month > 12)
8
- return false;
9
- if (typeof matches[3] !== void 0) {
10
- const date3 = Number(matches[3]);
11
- if (date3 < 1 || date3 > 31)
12
- return false;
13
- }
14
- if (typeof matches[4] !== void 0) {
15
- const hours = Number(matches[4]);
16
- if (hours < 0 || hours > 23)
17
- return false;
18
- }
19
- return true;
20
- }
21
- return false;
22
- }
23
-
24
- // src/date.ts
25
- function normalize(date2) {
26
- const matches = date2.match(iso8601Match);
27
- if (matches && typeof matches[4] === "undefined") {
28
- return date2 += "T00:00:00";
29
- }
30
- return date2;
31
- }
32
- function date(date2) {
33
- if (!date2) {
34
- date2 = /* @__PURE__ */ new Date();
35
- }
36
- if (date2 instanceof Date) {
37
- const d = new Date(date2);
38
- d.setMilliseconds(0);
39
- return d;
40
- }
41
- date2 = date2.trim();
42
- if (iso8601(date2)) {
43
- return new Date(normalize(date2));
44
- }
45
- throw new Error(`Non ISO 8601 compliant date (${date2}).`);
46
- }
47
-
48
- // src/addDay.ts
49
- function addDay(inputDate, count = 1) {
50
- const d = date(inputDate);
51
- d.setDate(d.getDate() + count);
52
- return d;
53
- }
54
-
55
- // src/monthEnd.ts
56
- function monthEnd(inputDate) {
57
- const d = date(inputDate);
58
- d.setDate(1);
59
- d.setMonth(d.getMonth() + 1);
60
- d.setDate(0);
61
- return d;
62
- }
63
-
64
- // src/monthDays.ts
65
- function monthDays(inputDate) {
66
- const d = monthEnd(inputDate);
67
- return d.getDate();
68
- }
69
-
70
- // src/addMonth.ts
71
- function addMonth(inputDate, count = 1, dateOverflow = false) {
72
- const d = date(inputDate);
73
- const dayOfMonth = d.getDate();
74
- if (!dateOverflow)
75
- d.setDate(1);
76
- d.setMonth(d.getMonth() + count);
77
- if (!dateOverflow) {
78
- const daysInMonth = monthDays(d);
79
- d.setDate(daysInMonth < dayOfMonth ? daysInMonth : dayOfMonth);
80
- }
81
- return d;
82
- }
83
-
84
- // src/addYear.ts
85
- function addYear(inputDate, count = 1, dateOverflow = false) {
86
- const d = date(inputDate);
87
- const dayOfMonth = d.getDate();
88
- if (!dateOverflow)
89
- d.setDate(1);
90
- d.setFullYear(d.getFullYear() + count);
91
- if (!dateOverflow) {
92
- const daysInMonth = monthDays(d);
93
- d.setDate(daysInMonth < dayOfMonth ? daysInMonth : dayOfMonth);
94
- }
95
- return d;
96
- }
97
-
98
- // src/addHour.ts
99
- function addHour(inputDate, count = 1) {
100
- const d = date(inputDate);
101
- d.setHours(d.getHours() + count);
102
- return d;
103
- }
104
-
105
- // src/addMinute.ts
106
- function addMinute(inputDate, count = 1) {
107
- const d = date(inputDate);
108
- d.setMinutes(d.getMinutes() + count);
109
- return d;
110
- }
111
-
112
- // src/addSecond.ts
113
- function addSecond(inputDate, count = 1) {
114
- const d = date(inputDate);
115
- d.setSeconds(d.getSeconds() + count);
116
- return d;
117
- }
118
-
119
- // src/common.ts
120
- var specDate = "1999-03-04T02:05:01.000Z";
121
- var memoParts = /* @__PURE__ */ new Map();
122
- var clockAgnostic = [
123
- ["YYYY", { year: "numeric" }],
124
- ["YY", { year: "2-digit" }],
125
- ["MMMM", { month: "long" }],
126
- ["MMM", { month: "short" }],
127
- ["MM", { month: "2-digit" }],
128
- ["M", { month: "numeric" }],
129
- ["DD", { day: "2-digit" }],
130
- ["D", { day: "numeric" }],
131
- ["dddd", { weekday: "long" }],
132
- ["ddd", { weekday: "short" }],
133
- ["d", { weekday: "narrow" }],
134
- ["mm", { minute: "2-digit" }],
135
- ["m", { minute: "numeric" }],
136
- ["ss", { second: "2-digit" }],
137
- ["s", { second: "numeric" }],
138
- ["Z", { timeZoneName: "short" }]
139
- ];
140
- var clock24 = [
141
- ["HH", { hour: "2-digit" }],
142
- ["H", { hour: "numeric" }]
143
- ];
144
- var clock12 = [
145
- ["hh", { hour: "2-digit" }],
146
- ["h", { hour: "numeric" }],
147
- ["a", { dayPeriod: "narrow" }],
148
- ["A", { dayPeriod: "narrow" }]
149
- ];
150
- var fixedLength = {
151
- DD: 2,
152
- HH: 2,
153
- MM: 2,
154
- YY: 2,
155
- YYYY: 4,
156
- hh: 2,
157
- mm: 2,
158
- ss: 2
159
- };
160
- function fixedLengthByOffset(offsetString) {
161
- if (/^[+-]\d{2}:\d{2}/.test(offsetString)) {
162
- return 6;
163
- }
164
- if (/^[+-]\d{4}/.test(offsetString)) {
165
- return 5;
166
- }
167
- throw new Error("Invalid offset format");
168
- }
169
- var genitiveTokens = ["MMMM", "MMM", "dddd", "ddd"];
170
- var tokens = /* @__PURE__ */ new Map(
171
- /* @__PURE__ */ [...clockAgnostic, ...clock24, ...clock12].map((format2) => {
172
- return [format2[0], format2];
173
- })
174
- );
175
- var dayPeriodMap = /* @__PURE__ */ new Map();
176
- var styles = [
177
- "full",
178
- "long",
179
- "medium",
180
- "short"
181
- ];
182
- var two = (n) => String(n).padStart(2, "0");
183
- var four = (n) => String(n).padStart(2, "0");
184
- function normStr(part) {
185
- if (part.type === "literal") {
186
- part.value = part.value.normalize("NFKC");
187
- }
188
- return part;
189
- }
190
- function fill(inputDate, parts2, locale, genitive = false, offset2 = null) {
191
- const partMap = createPartMap(inputDate, parts2, locale, genitive);
192
- const d = date(inputDate);
193
- function value({ partName, partValue, token }) {
194
- if (partName === "literal")
195
- return partValue;
196
- const value2 = partMap[partName];
197
- if (partName === "hour" && token === "H") {
198
- return value2.replace(/^0/, "") || "0";
199
- }
200
- if (["mm", "ss", "MM"].includes(token) && value2.length === 1) {
201
- return `0${value2}`;
202
- }
203
- if (partName === "dayPeriod") {
204
- const p = ap(d.getUTCHours() < 12 ? "am" : "pm", locale);
205
- return token === "A" ? p.toUpperCase() : p.toLowerCase();
206
- }
207
- if (partName === "timeZoneName") {
208
- return offset2 != null ? offset2 : minsToOffset(-1 * d.getTimezoneOffset());
209
- }
210
- return value2;
211
- }
212
- return parts2.map((part) => {
213
- return {
214
- ...part,
215
- value: value(part)
216
- };
217
- });
218
- }
219
- function createPartMap(inputDate, parts2, locale, genitive = false) {
220
- const d = date(inputDate);
221
- const hour12 = parts2.filter((part) => part.hour12);
222
- const hour24 = parts2.filter((part) => !part.hour12);
223
- const valueParts = [];
224
- const genitiveParts = [];
225
- function addValues(requestedParts, hour122 = false) {
226
- const preciseLocale = `${locale}-u-hc-${hour122 ? "h12" : "h23"}`;
227
- valueParts.push(
228
- ...new Intl.DateTimeFormat(
229
- preciseLocale,
230
- requestedParts.reduce(
231
- (options, part) => {
232
- if (part.partName === "literal")
233
- return options;
234
- if (genitive && genitiveTokens.includes(part.token)) {
235
- genitiveParts.push(part);
236
- }
237
- return Object.assign(options, part.option);
238
- },
239
- { timeZone: "UTC" }
240
- )
241
- ).formatToParts(d).map(normStr)
242
- );
243
- if (genitive && genitiveParts.length) {
244
- for (const part of genitiveParts) {
245
- let formattedParts = [];
246
- switch (part.token) {
247
- case "MMMM":
248
- formattedParts = new Intl.DateTimeFormat(preciseLocale, {
249
- dateStyle: "long",
250
- timeZone: "UTC"
251
- }).formatToParts(d).map(normStr);
252
- break;
253
- case "MMM":
254
- formattedParts = new Intl.DateTimeFormat(preciseLocale, {
255
- dateStyle: "medium",
256
- timeZone: "UTC"
257
- }).formatToParts(d).map(normStr);
258
- break;
259
- }
260
- const genitiveFormattedPart = formattedParts.find(
261
- (p) => p.type === part.partName
262
- );
263
- const index = valueParts.findIndex((p) => p.type === part.partName);
264
- if (genitiveFormattedPart && index > -1) {
265
- valueParts[index] = genitiveFormattedPart;
266
- }
267
- }
268
- }
269
- }
270
- if (hour12.length)
271
- addValues(hour12, true);
272
- if (hour24.length)
273
- addValues(hour24);
274
- return valueParts.reduce((map, part) => {
275
- map[part.type] = part.value;
276
- return map;
277
- }, {});
278
- }
279
- function minsToOffset(timeDiffInMins) {
280
- const hours = String(Math.floor(Math.abs(timeDiffInMins / 60))).padStart(
281
- 2,
282
- "0"
283
- );
284
- const mins = String(Math.abs(timeDiffInMins % 60)).padStart(2, "0");
285
- const sign = timeDiffInMins < 0 ? "-" : "+";
286
- return `${sign}${hours}${mins}`;
287
- }
288
- function offsetToMins(offset2) {
289
- validOffset(offset2);
290
- const [_, sign, hours, mins] = offset2.match(/([+-])([0-3][0-9])([0-6][0-9])/);
291
- const offsetInMins = Number(hours) * 60 + Number(mins);
292
- return sign === "+" ? offsetInMins : -offsetInMins;
293
- }
294
- function validOffset(offset2) {
295
- const valid = /^([+-])[0-3][0-9]:?[0-6][0-9]$/.test(offset2);
296
- if (!valid)
297
- throw new Error(`Invalid offset: ${offset2}`);
298
- return offset2;
299
- }
300
- function escapeTokens(str) {
301
- return clockAgnostic.concat(clock24).concat(clock12).sort((a, b) => a[0].length > b[0].length ? 1 : -1).reduce((target, part) => {
302
- return target.replace(part[0], `\\${part[0]}`);
303
- }, str);
304
- }
305
- function isNumeric(part) {
306
- return ["numeric", "2-digit"].includes(part.partValue);
307
- }
308
- function validate(parts2) {
309
- let lastPart = void 0;
310
- for (const part of parts2) {
311
- if (part.partName === "literal" && !isNaN(parseFloat(part.partValue))) {
312
- throw new Error(`Numbers in format (${part.partValue}).`);
313
- }
314
- if (lastPart && lastPart.partName !== "literal" && part.partName !== "literal") {
315
- if (!(lastPart.token in fixedLength) && !(part.token in fixedLength) && !(isNumeric(lastPart) && part.token.toLowerCase() === "a")) {
316
- throw new Error(
317
- `Illegal adjacent tokens (${lastPart.token}, ${part.token})`
318
- );
319
- }
320
- }
321
- lastPart = part;
322
- }
323
- return parts2;
324
- }
325
-
326
- // src/ap.ts
327
- function ap(ampm, locale) {
328
- const l = dayPeriodMap.get(locale);
329
- if (l && l[ampm])
330
- return l[ampm];
331
- const specimen = new Date(specDate);
332
- specimen.setUTCHours(ampm === "am" ? 5 : 20);
333
- const subparts = new Intl.DateTimeFormat(locale, {
334
- timeStyle: "full",
335
- timeZone: "UTC",
336
- hour12: true
337
- }).formatToParts(specimen).map(normStr);
338
- const period = subparts.find((part) => part.type === "dayPeriod");
339
- if (period) {
340
- const localePeriods = l || {};
341
- dayPeriodMap.set(
342
- locale,
343
- Object.assign(localePeriods, { [ampm]: period.value })
344
- );
345
- return period.value;
346
- }
347
- return ampm;
348
- }
349
-
350
- // src/applyOffset.ts
351
- function applyOffset(dateInput, offset2 = "+0000") {
352
- const d = date(dateInput);
353
- const timeDiffInMins = offsetToMins(offset2);
354
- return new Date(d.getTime() + timeDiffInMins * 1e3 * 60);
355
- }
356
-
357
- // src/deviceTZ.ts
358
- function deviceTZ() {
359
- return Intl.DateTimeFormat().resolvedOptions().timeZone;
360
- }
361
-
362
- // src/offset.ts
363
- function relativeTime(d, timeZone) {
364
- const utcParts = new Intl.DateTimeFormat("en-US", {
365
- year: "numeric",
366
- month: "2-digit",
367
- day: "2-digit",
368
- hour: "2-digit",
369
- minute: "2-digit",
370
- second: "2-digit",
371
- timeZone,
372
- hourCycle: "h23"
373
- }).formatToParts(d).map(normStr);
374
- const parts2 = {};
375
- utcParts.forEach((part) => {
376
- parts2[part.type] = part.value;
377
- });
378
- return /* @__PURE__ */ new Date(
379
- `${parts2.year}-${parts2.month}-${parts2.day}T${parts2.hour}:${parts2.minute}:${parts2.second}Z`
380
- );
381
- }
382
- function offset(utcTime, tzA = "UTC", tzB = "device") {
383
- var _a;
384
- tzB = tzB === "device" ? (_a = deviceTZ()) != null ? _a : "utc" : tzB;
385
- const d = date(utcTime);
386
- const timeA = relativeTime(d, tzA);
387
- const timeB = relativeTime(d, tzB);
388
- const timeDiffInMins = (timeB.getTime() - timeA.getTime()) / 1e3 / 60;
389
- return minsToOffset(timeDiffInMins);
390
- }
391
-
392
- // src/tzDate.ts
393
- function tzDate(inputDate, tz) {
394
- const d = date(inputDate);
395
- return applyOffset(d, offset(d, tz));
396
- }
397
-
398
- // src/dayOfYear.ts
399
- function dayOfYear(inputDate) {
400
- const d = date(inputDate);
401
- return Math.round(
402
- (new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0).getTime() - new Date(d.getFullYear(), 0, 0).getTime()) / 864e5
403
- );
404
- }
405
-
406
- // src/dayEnd.ts
407
- function dayEnd(inputDate) {
408
- const d = date(inputDate);
409
- d.setHours(23, 59, 59, 999);
410
- return d;
411
- }
412
-
413
- // src/dayStart.ts
414
- function dayStart(inputDate) {
415
- const d = date(inputDate);
416
- d.setHours(0, 0, 0);
417
- return d;
418
- }
419
-
420
- // src/parts.ts
421
- function parts(format2, locale) {
422
- if (styles.includes(format2) || typeof format2 === "object") {
423
- return styleParts(format2, locale);
424
- }
425
- let f = format2;
426
- let match = 0;
427
- const testPattern = (pattern) => {
428
- if (!pattern[2])
429
- pattern[2] = new RegExp(`(.)?(${pattern[0]})`, "g");
430
- if (pattern[2].test(f)) {
431
- let didAdd = 0;
432
- f = f.replace(pattern[2], (_, prefix, actualMatch) => {
433
- if (prefix === "\\")
434
- return actualMatch;
435
- return `${typeof prefix === "string" ? prefix : ""}{!${didAdd++ ? match : match++}!}`;
436
- });
437
- return !!didAdd;
438
- }
439
- return false;
440
- };
441
- function validate2(patterns) {
442
- const parts3 = patterns.map((part) => part.partName);
443
- const deduped = new Set(parts3);
444
- if (parts3.length > deduped.size) {
445
- throw new Error(`Cannot reuse format tokens.`);
446
- }
447
- return patterns;
448
- }
449
- function createPart(hour12, [token, option, exp]) {
450
- const partName = Object.keys(option)[0];
451
- const partValue = option[partName];
452
- return {
453
- option,
454
- partName,
455
- partValue,
456
- token,
457
- pattern: exp,
458
- hour12
459
- };
460
- }
461
- const found24Patterns = clockAgnostic.filter(testPattern).concat(clock24.filter(testPattern)).map(createPart.bind(null, false));
462
- const parts2 = validate2(
463
- found24Patterns.concat(
464
- clock12.filter(testPattern).map(createPart.bind(null, true))
465
- )
466
- );
467
- const extractIndex = /^\{!(\d+)!\}$/;
468
- return f.split(/(\{!\d+!\})/).map((match2) => {
469
- const hasIndex = match2.match(extractIndex);
470
- if (hasIndex) {
471
- return parts2[Number(hasIndex[1])];
472
- }
473
- return {
474
- option: { literal: match2 },
475
- partName: "literal",
476
- partValue: match2,
477
- token: match2,
478
- pattern: new RegExp(""),
479
- hour12: false
480
- };
481
- }).filter((part) => !(part.partName === "literal" && part.partValue === ""));
482
- }
483
- function styleParts(format2, locale) {
484
- const options = {
485
- timeZone: "UTC"
486
- };
487
- if (typeof format2 === "string") {
488
- options.dateStyle = format2;
489
- } else {
490
- if ("date" in format2)
491
- options.dateStyle = format2.date;
492
- if ("time" in format2)
493
- options.timeStyle = format2.time;
494
- }
495
- const formatter = new Intl.DateTimeFormat(locale, options);
496
- const segments = formatter.formatToParts(new Date(specDate)).map(normStr);
497
- const hourTypeSegments = formatter.formatToParts(/* @__PURE__ */ new Date("1999-04-05T23:05:01.000Z")).map(normStr);
498
- const hourPart = hourTypeSegments.find((segment) => segment.type === "hour");
499
- const hourType = hourPart && hourPart.value === "23" ? 24 : 12;
500
- return segments.map((part) => {
501
- const partName = part.type;
502
- const formatPattern = guessPattern(
503
- part.type,
504
- part.value,
505
- locale,
506
- part.type === "hour" ? hourType : void 0
507
- );
508
- if (formatPattern === void 0)
509
- return;
510
- const partValue = formatPattern[1][partName];
511
- if (!partValue)
512
- return;
513
- if (!formatPattern[2])
514
- formatPattern[2] = new RegExp(`${formatPattern[0]}`, "g");
515
- return {
516
- option: { [partName]: partValue },
517
- partName,
518
- partValue,
519
- token: formatPattern[0],
520
- pattern: formatPattern[2],
521
- hour12: hourType === 12
522
- };
523
- }).filter((part) => !!part);
524
- }
525
- function guessPattern(partName, partValue, locale, hour) {
526
- const l = partValue.length;
527
- const n = !isNaN(Number(partValue));
528
- let style;
529
- switch (partName) {
530
- case "year":
531
- return l === 2 ? tokens.get("YY") : tokens.get("YYYY");
532
- case "month":
533
- if (n)
534
- return l === 1 ? tokens.get("M") : tokens.get("MM");
535
- style = partStyle(locale, partName, partValue);
536
- switch (style) {
537
- case "long":
538
- return tokens.get("MMMM");
539
- default:
540
- return tokens.get("MMM");
541
- }
542
- case "day":
543
- return l === 1 ? tokens.get("D") : tokens.get("DD");
544
- case "weekday":
545
- style = partStyle(locale, partName, partValue);
546
- switch (style) {
547
- case "narrow":
548
- return tokens.get("d");
549
- case "short":
550
- return tokens.get("ddd");
551
- default:
552
- return tokens.get("dddd");
553
- }
554
- case "hour":
555
- if (hour === 12)
556
- return l === 1 ? tokens.get("h") : tokens.get("hh");
557
- return l === 1 ? tokens.get("H") : tokens.get("HH");
558
- case "minute":
559
- return l === 1 ? tokens.get("m") : tokens.get("mm");
560
- case "second":
561
- return l === 1 ? tokens.get("s") : tokens.get("ss");
562
- case "dayPeriod":
563
- return /^[A-Z]+$/u.test(partValue) ? tokens.get("A") : tokens.get("a");
564
- case "literal":
565
- return [partValue, { literal: partValue }, new RegExp("")];
566
- case "timeZoneName":
567
- const offset2 = partValue.split("-");
568
- return offset2.length === 2 && offset2[1].length === 4 ? tokens.get("ZZ") : tokens.get("Z");
569
- default:
570
- return void 0;
571
- }
572
- }
573
- function partStyle(locale, part, value) {
574
- if (!memoParts.has(locale)) {
575
- const date2 = new Date(specDate);
576
- const weekdays = [3, 8, 9, 7, 6, 4, 3];
577
- const parts2 = ["weekday", "month", "dayPeriod"];
578
- const partStyles = ["long", "short", "narrow"];
579
- const formats2 = {};
580
- for (let i = 0; i < 12; i++) {
581
- date2.setMonth(0 + i);
582
- if (i in weekdays)
583
- date2.setDate(weekdays[i]);
584
- date2.setUTCHours(8 + i);
585
- for (const style of partStyles) {
586
- const segments = new Intl.DateTimeFormat(
587
- locale,
588
- parts2.reduce(
589
- (options, part2) => Object.assign(options, { [part2]: style }),
590
- { hour12: true, timeZone: "UTC" }
591
- )
592
- ).formatToParts(date2).map(normStr);
593
- if (style === "long" || style === "short") {
594
- const genitiveFormattedParts = new Intl.DateTimeFormat(locale, {
595
- dateStyle: style === "short" ? "medium" : "long",
596
- timeZone: "UTC"
597
- }).formatToParts(date2).map(normStr);
598
- const genitiveMonth = genitiveFormattedParts.find(
599
- (part2) => part2.type === "month"
600
- );
601
- const index = segments.findIndex((part2) => part2.type === "month");
602
- if (index > -1 && genitiveMonth)
603
- segments[index] = genitiveMonth;
604
- }
605
- segments.forEach((part2) => {
606
- if (part2.type === "literal")
607
- return;
608
- const type = part2.type;
609
- formats2[type] = Object.assign(formats2[type] || {}, {
610
- [part2.value]: style
611
- });
612
- });
613
- }
614
- }
615
- memoParts.set(locale, formats2);
616
- }
617
- const formats = memoParts.get(locale);
618
- return formats ? formats[part][value] : void 0;
619
- }
620
-
621
- // src/removeOffset.ts
622
- function removeOffset(dateInput, offset2 = "+0000") {
623
- const positive = offset2.slice(0, 1) === "+";
624
- return applyOffset(
625
- dateInput,
626
- offset2.replace(positive ? "+" : "-", positive ? "-" : "+")
627
- );
628
- }
629
-
630
- // src/deviceLocale.ts
631
- function deviceLocale() {
632
- return Intl.DateTimeFormat().resolvedOptions().locale;
633
- }
634
-
635
- // src/format.ts
636
- function format(inputDateOrOptions, format2 = "long", locale = "device", genitive = false, partFilter) {
637
- let tz, forceOffset;
638
- if (typeof inputDateOrOptions === "object" && !(inputDateOrOptions instanceof Date)) {
639
- ;
640
- ({
641
- date: inputDateOrOptions,
642
- format: format2,
643
- locale,
644
- genitive,
645
- partFilter,
646
- tz
647
- } = inputDateOrOptions);
648
- }
649
- if (format2 === "ISO8601")
650
- return date(inputDateOrOptions).toISOString();
651
- if (tz) {
652
- forceOffset = offset(inputDateOrOptions, "utc", tz);
653
- }
654
- tz != null ? tz : tz = deviceTZ();
655
- if ((tz == null ? void 0 : tz.toLowerCase()) !== "utc") {
656
- inputDateOrOptions = removeOffset(
657
- inputDateOrOptions,
658
- offset(inputDateOrOptions, tz, "utc")
659
- );
660
- }
661
- if (!locale || locale === "device") {
662
- locale = deviceLocale();
663
- }
664
- return fill(
665
- inputDateOrOptions,
666
- parts(format2, locale).filter(partFilter != null ? partFilter : () => true),
667
- locale,
668
- genitive,
669
- forceOffset
670
- ).map((p) => p.value).join("");
671
- }
672
-
673
- // src/formatStr.ts
674
- function formatStr(format2, locale = "en", escapeLiterals = false, filterParts = () => true) {
675
- return parts(format2, locale).filter(filterParts).reduce(
676
- (f, p) => f += escapeLiterals && p.partName === "literal" ? escapeTokens(p.token) : p.token,
677
- ""
678
- ).normalize("NFKC");
679
- }
680
-
681
- // src/fourDigitYear.ts
682
- function fourDigitYear(value) {
683
- const y = (/* @__PURE__ */ new Date()).getFullYear();
684
- const currentYear = y % 100;
685
- const century = Math.floor(y / 100);
686
- const parsedYear = Number(value);
687
- return (century + (parsedYear > currentYear + 20 ? -1 : 0)) * 100 + parsedYear;
688
- }
689
-
690
- // src/hourEnd.ts
691
- function hourEnd(inputDate) {
692
- const d = date(inputDate);
693
- d.setMinutes(59, 59, 999);
694
- return d;
695
- }
696
-
697
- // src/hourStart.ts
698
- function hourStart(inputDate) {
699
- const d = date(inputDate);
700
- d.setMinutes(0, 0);
701
- return d;
702
- }
703
-
704
- // src/minuteEnd.ts
705
- function minuteEnd(inputDate) {
706
- const d = date(inputDate);
707
- d.setSeconds(59, 999);
708
- return d;
709
- }
710
-
711
- // src/minuteStart.ts
712
- function minuteStart(inputDate) {
713
- const d = date(inputDate);
714
- d.setSeconds(0);
715
- return d;
716
- }
717
-
718
- // src/monthStart.ts
719
- function monthStart(inputDate) {
720
- const d = date(inputDate);
721
- d.setDate(1);
722
- d.setHours(0, 0, 0);
723
- return d;
724
- }
725
-
726
- // src/yearDays.ts
727
- function yearDays(inputDate) {
728
- const d = date(inputDate);
729
- return (new Date(d.getFullYear() + 1, 0, 0).getTime() - new Date(d.getFullYear(), 0, 0).getTime()) / 864e5;
730
- }
731
-
732
- // src/nearestDay.ts
733
- function nearestDay(inputDate, search, constraint = 7) {
734
- let increments;
735
- let decrements;
736
- const d = date(inputDate);
737
- switch (constraint) {
738
- case "month":
739
- decrements = d.getDate();
740
- increments = monthDays(d) - d.getDate();
741
- break;
742
- case "week":
743
- decrements = d.getDay() + 1;
744
- increments = 6 - d.getDay();
745
- break;
746
- case "year":
747
- const total = yearDays(d);
748
- const day = dayOfYear(d);
749
- decrements = day;
750
- increments = total - day;
751
- break;
752
- default:
753
- increments = decrements = constraint;
754
- }
755
- for (let i = 0; i <= increments || i < decrements; i++) {
756
- if (i <= increments) {
757
- const next = addDay(d, i);
758
- if (search(next))
759
- return next;
760
- }
761
- if (i && i <= decrements) {
762
- const prev = addDay(d, -i);
763
- if (search(prev))
764
- return prev;
765
- }
766
- }
767
- return null;
768
- }
769
-
770
- // src/range.ts
771
- function range(token, locale = "en", genitive = false) {
772
- const r = (n, c) => Array(n).fill("").map((_, i) => `${c(i)}`);
773
- if (token === "M")
774
- return r(12, (i) => i + 1);
775
- if (token === "MM")
776
- return r(12, (i) => {
777
- const m = i + 1;
778
- return m < 10 ? `0${m}` : m;
779
- });
780
- if (token.startsWith("M"))
781
- return range("MM").map(
782
- (m) => format(`2000-${m}-05`, token, locale, genitive)
783
- );
784
- if (token.startsWith("d"))
785
- return r(7, (i) => `0${i + 2}`).map(
786
- (d) => format(`2022-10-${d}`, token, locale)
787
- );
788
- if (token === "a")
789
- return [ap("am", locale).toLowerCase(), ap("pm", locale).toLowerCase()];
790
- if (token === "A")
791
- return [ap("am", locale).toUpperCase(), ap("pm", locale).toUpperCase()];
792
- if (token.startsWith("Y")) {
793
- const year = (/* @__PURE__ */ new Date()).getFullYear();
794
- return r(120, (i) => i + 1).reduce(
795
- (ranges, i) => {
796
- if (i !== "120")
797
- ranges.push(format(`${year + Number(i)}-06-06`, token, locale));
798
- ranges.unshift(format(`${year - Number(i)}-06-06`, token, locale));
799
- return ranges;
800
- },
801
- [format(`${year}-06-06`, token, locale)]
802
- );
803
- }
804
- if (token.startsWith("D"))
805
- return r(31, (i) => `${token === "DD" && i < 9 ? "0" : ""}${i + 1}`);
806
- if (token.startsWith("H"))
807
- return r(24, (i) => `${token === "HH" && i < 10 ? "0" : ""}${i}`);
808
- if (token.startsWith("h"))
809
- return r(12, (i) => `${token === "hh" && i < 9 ? "0" : ""}${i + 1}`);
810
- if (token.startsWith("m") || token.startsWith("s"))
811
- return r(60, (i) => `${token.length > 1 && i < 10 ? "0" : ""}${i}`);
812
- return [];
813
- }
814
-
815
- // src/parse.ts
816
- function parse(dateStrOrOptions, format2 = "ISO8601", locale = "device") {
817
- let partFilter = () => true;
818
- let dateStr;
819
- let dateOverflow = "backward";
820
- if (typeof dateStrOrOptions === "object") {
821
- ;
822
- ({
823
- date: dateStr,
824
- format: format2 = "ISO8601",
825
- locale = "device",
826
- dateOverflow = "backward",
827
- partFilter = () => true
828
- } = dateStrOrOptions);
829
- } else {
830
- dateStr = dateStrOrOptions;
831
- }
832
- if (!dateStr)
833
- throw new Error("parse() requires a date string.");
834
- const invalid = () => {
835
- throw new Error(
836
- `Date (${dateStr}) does not match format (${formatStr(format2, locale)})`
837
- );
838
- };
839
- if (format2 === "ISO8601")
840
- return date(dateStr);
841
- const genitive = styles.includes(format2) || typeof format2 === "object";
842
- const formatParts = validate(parts(format2, locale).filter(partFilter));
843
- if (!formatParts.length)
844
- throw new Error("parse() requires a pattern.");
845
- let parsedParts;
846
- try {
847
- parsedParts = parseParts(dateStr, formatParts);
848
- } catch {
849
- return invalid();
850
- }
851
- const now = /* @__PURE__ */ new Date();
852
- const parsed = /* @__PURE__ */ new Map([
853
- ["YYYY", now.getFullYear()],
854
- ["MM", now.getMonth() + 1],
855
- ["DD", now.getDate()],
856
- ["HH", 0],
857
- ["mm", 0],
858
- ["ss", 0]
859
- ]);
860
- let a = null;
861
- let offset2 = "";
862
- parsedParts.forEach((part) => {
863
- if (part.partName === "literal")
864
- return;
865
- if (part.token === part.value)
866
- return invalid();
867
- const v = Number(part.value);
868
- if (parsed.has(part.token)) {
869
- parsed.set(part.token, v);
870
- } else if (part.token === "YY") {
871
- parsed.set("YYYY", fourDigitYear(part.value));
872
- } else {
873
- const t = part.token;
874
- if (t.startsWith("d")) {
875
- return;
876
- } else if (t === "D") {
877
- parsed.set("DD", v);
878
- } else if (t === "H" || t.startsWith("h")) {
879
- parsed.set("HH", v);
880
- } else if (t === "M") {
881
- parsed.set("MM", v);
882
- } else if (t === "a" || t === "A") {
883
- a = part.value.toLowerCase() === ap("am", locale).toLowerCase();
884
- } else if (t === "Z") {
885
- offset2 = validOffset(part.value);
886
- } else {
887
- const values = range(t, locale, genitive);
888
- const index = values.indexOf(part.value);
889
- if (index !== -1) {
890
- switch (t) {
891
- case "MMM":
892
- case "MMMM":
893
- parsed.set("MM", index + 1);
894
- break;
895
- }
896
- }
897
- }
898
- }
899
- });
900
- let hours = parsed.get("HH") || 0;
901
- if (a === false) {
902
- hours += hours === 12 ? 0 : 12;
903
- parsed.set("HH", hours === 24 ? 0 : hours);
904
- } else if (a === true && hours === 12) {
905
- parsed.set("HH", 0);
906
- }
907
- parsed.set("MM", (parsed.get("MM") || 1) - 1);
908
- let [Y, M, D, h, m, s] = Array.from(parsed.values());
909
- const maxDaysInMonth = monthDays(/* @__PURE__ */ new Date(`${four(Y)}-${two(M + 1)}-10`));
910
- if (maxDaysInMonth < D && dateOverflow === "throw")
911
- throw new Error(`Invalid date ${four(Y)}-${two(M + 1)}-${two(D)}`);
912
- D = dateOverflow === "backward" ? Math.min(D, maxDaysInMonth) : D;
913
- const isoString = `${four(Y)}-${two(M + 1)}-${two(D)}T${two(h)}:${two(
914
- m
915
- )}:${two(s)}${offset2}`;
916
- const d = new Date(isoString);
917
- if (isFinite(+d))
918
- return d;
919
- return invalid();
920
- }
921
- function parseParts(dateStr, formatParts) {
922
- let i = 0;
923
- const advance = (parts2) => [
924
- parts2[i++],
925
- parts2[i]
926
- ];
927
- let pos = 0;
928
- const parsed = [];
929
- let n = void 0;
930
- do {
931
- const [current, next] = advance(formatParts);
932
- n = next;
933
- let len = 1;
934
- if (current.partName === "literal") {
935
- len = current.partValue.length;
936
- } else if (current.partName === "timeZoneName") {
937
- len = fixedLengthByOffset(dateStr.substring(pos));
938
- } else if (current.token in fixedLength) {
939
- len = fixedLength[current.token];
940
- } else if (next) {
941
- if (next.partName === "literal") {
942
- len = dateStr.indexOf(next.partValue, pos) - pos;
943
- if (len < 0)
944
- throw new Error();
945
- } else if (next.partName === "dayPeriod") {
946
- for (let i2 = 1; i2 <= 4; i2++) {
947
- if (isNaN(Number(dateStr.charAt(pos + i2)))) {
948
- len = i2;
949
- break;
950
- }
951
- }
952
- } else {
953
- const nextChar = dateStr.substring(pos).search(/\d/);
954
- if (nextChar !== -1)
955
- len = pos + nextChar;
956
- }
957
- } else {
958
- len = dateStr.length;
959
- }
960
- parsed.push({ ...current, value: dateStr.substring(pos, pos + len) });
961
- pos += len;
962
- } while (n);
963
- return parsed;
964
- }
965
-
966
- // src/sameDay.ts
967
- function sameDay(inputDateA, inputDateB) {
968
- const a = date(inputDateA);
969
- const b = date(inputDateB);
970
- return a.getDate() === b.getDate() && a.getMonth() === b.getMonth() && a.getFullYear() === b.getFullYear();
971
- }
972
-
973
- // src/sameSecond.ts
974
- function sameSecond(inputDateA, inputDateB) {
975
- const a = date(inputDateA);
976
- const b = date(inputDateB);
977
- return a.getSeconds() === b.getSeconds();
978
- }
979
-
980
- // src/sameMinute.ts
981
- function sameMinute(inputDateA, inputDateB) {
982
- const a = date(inputDateA);
983
- const b = date(inputDateB);
984
- return a.getMinutes() === b.getMinutes();
985
- }
986
-
987
- // src/sameHour.ts
988
- function sameHour(inputDateA, inputDateB) {
989
- const a = date(inputDateA);
990
- const b = date(inputDateB);
991
- return a.getHours() === b.getHours();
992
- }
993
-
994
- // src/sameYear.ts
995
- function sameYear(inputDateA, inputDateB) {
996
- const a = date(inputDateA);
997
- const b = date(inputDateB);
998
- return a.getFullYear() === b.getFullYear();
999
- }
1000
-
1001
- // src/weekStart.ts
1002
- function weekStart(inputDate, startOfWeekDay = 0) {
1003
- const d = date(inputDate);
1004
- let diff = startOfWeekDay - d.getDay();
1005
- if (diff > 0)
1006
- diff = diff - 7;
1007
- d.setDate(d.getDate() + diff);
1008
- d.setHours(0, 0, 0);
1009
- return d;
1010
- }
1011
-
1012
- // src/weekEnd.ts
1013
- function weekEnd(inputDate, startOfWeekDay = 0) {
1014
- const d = weekStart(inputDate, startOfWeekDay);
1015
- d.setDate(d.getDate() + 6);
1016
- d.setHours(23, 59, 59);
1017
- return d;
1018
- }
1019
-
1020
- // src/yearStart.ts
1021
- function yearStart(inputDate) {
1022
- const d = date(inputDate);
1023
- d.setMonth(0);
1024
- d.setDate(1);
1025
- d.setHours(0, 0, 0);
1026
- return d;
1027
- }
1028
-
1029
- // src/yearEnd.ts
1030
- function yearEnd(inputDate) {
1031
- const d = date(inputDate);
1032
- d.setMonth(11);
1033
- d.setDate(31);
1034
- d.setHours(23, 59, 59, 999);
1035
- return d;
1036
- }
1037
-
1038
- // src/isBefore.ts
1039
- function isBefore(inputDate, dateToCompare) {
1040
- const _date = date(inputDate);
1041
- const _dateToCompare = date(dateToCompare);
1042
- return +_date < +_dateToCompare;
1043
- }
1044
-
1045
- // src/isAfter.ts
1046
- function isAfter(inputDate, dateToCompare) {
1047
- const _date = date(inputDate);
1048
- const _dateToCompare = date(dateToCompare);
1049
- return +_date > +_dateToCompare;
1050
- }
1051
-
1052
- // src/isEqual.ts
1053
- function isEqual(dateLeft, dateRight) {
1054
- const _dateLeft = date(dateLeft);
1055
- const _dateRight = date(dateRight);
1056
- return +_dateLeft === +_dateRight;
1057
- }
1
+ // src/index.ts
2
+ import { addDay } from "./addDay.mjs";
3
+ import { addMonth } from "./addMonth.mjs";
4
+ import { addYear } from "./addYear.mjs";
5
+ import { addHour } from "./addHour.mjs";
6
+ import { addMinute } from "./addMinute.mjs";
7
+ import { addSecond } from "./addSecond.mjs";
8
+ import { ap } from "./ap.mjs";
9
+ import { applyOffset } from "./applyOffset.mjs";
10
+ import { date } from "./date.mjs";
11
+ import { tzDate } from "./tzDate.mjs";
12
+ import { dayOfYear } from "./dayOfYear.mjs";
13
+ import { dayEnd } from "./dayEnd.mjs";
14
+ import { dayStart } from "./dayStart.mjs";
15
+ import { format } from "./format.mjs";
16
+ import { formatStr } from "./formatStr.mjs";
17
+ import { fourDigitYear } from "./fourDigitYear.mjs";
18
+ import { hourEnd } from "./hourEnd.mjs";
19
+ import { hourStart } from "./hourStart.mjs";
20
+ import { iso8601 } from "./iso8601.mjs";
21
+ import { minuteEnd } from "./minuteEnd.mjs";
22
+ import { minuteStart } from "./minuteStart.mjs";
23
+ import { monthDays } from "./monthDays.mjs";
24
+ import { monthEnd } from "./monthEnd.mjs";
25
+ import { monthStart } from "./monthStart.mjs";
26
+ import { nearestDay } from "./nearestDay.mjs";
27
+ import { offset } from "./offset.mjs";
28
+ import { parse } from "./parse.mjs";
29
+ import { parseParts } from "./parse.mjs";
30
+ import { parts } from "./parts.mjs";
31
+ import { range } from "./range.mjs";
32
+ import { removeOffset } from "./removeOffset.mjs";
33
+ import { sameDay } from "./sameDay.mjs";
34
+ import { sameSecond } from "./sameSecond.mjs";
35
+ import { sameMinute } from "./sameMinute.mjs";
36
+ import { sameHour } from "./sameHour.mjs";
37
+ import { sameYear } from "./sameYear.mjs";
38
+ import { weekEnd } from "./weekEnd.mjs";
39
+ import { weekStart } from "./weekStart.mjs";
40
+ import { yearDays } from "./yearDays.mjs";
41
+ import { yearStart } from "./yearStart.mjs";
42
+ import { yearEnd } from "./yearEnd.mjs";
43
+ import { isBefore } from "./isBefore.mjs";
44
+ import { isAfter } from "./isAfter.mjs";
45
+ import { isEqual } from "./isEqual.mjs";
46
+ export * from "./types.mjs";
47
+ import { diffMilliseconds } from "./diffMilliseconds.mjs";
48
+ import { diffSeconds } from "./diffSeconds.mjs";
49
+ import { diffMinutes } from "./diffMinutes.mjs";
50
+ import { diffHours } from "./diffHours.mjs";
51
+ import { diffDays } from "./diffDays.mjs";
52
+ import { diffWeeks } from "./diffWeeks.mjs";
53
+ import { diffMonths } from "./diffMonths.mjs";
54
+ import { diffYears } from "./diffYears.mjs";
1058
55
  export {
1059
56
  addDay,
1060
57
  addHour,
@@ -1068,6 +65,14 @@ export {
1068
65
  dayEnd,
1069
66
  dayOfYear,
1070
67
  dayStart,
68
+ diffDays,
69
+ diffHours,
70
+ diffMilliseconds,
71
+ diffMinutes,
72
+ diffMonths,
73
+ diffSeconds,
74
+ diffWeeks,
75
+ diffYears,
1071
76
  format,
1072
77
  formatStr,
1073
78
  fourDigitYear,