@dereekb/date 10.0.5 → 10.0.7

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/index.cjs.d.ts +1 -0
  2. package/index.cjs.js +9264 -0
  3. package/index.esm.js +9957 -0
  4. package/package.json +17 -3
  5. package/src/lib/date/date.calendar.d.ts +1 -1
  6. package/src/lib/date/date.cell.d.ts +3 -3
  7. package/src/lib/date/date.cell.factory.d.ts +5 -5
  8. package/src/lib/date/date.cell.filter.d.ts +3 -3
  9. package/src/lib/date/date.cell.index.d.ts +4 -3
  10. package/src/lib/date/date.cell.schedule.d.ts +7 -7
  11. package/src/lib/date/date.cell.schedule.day.d.ts +2 -2
  12. package/src/lib/date/date.cell.validator.d.ts +2 -2
  13. package/src/lib/date/date.cell.week.d.ts +3 -3
  14. package/src/lib/date/date.d.ts +1 -1
  15. package/src/lib/date/date.day.d.ts +3 -3
  16. package/src/lib/date/date.duration.d.ts +2 -2
  17. package/src/lib/date/date.format.d.ts +3 -4
  18. package/src/lib/date/date.logical.d.ts +1 -1
  19. package/src/lib/date/date.range.d.ts +1 -1
  20. package/src/lib/date/date.range.string.d.ts +2 -2
  21. package/src/lib/date/date.range.timezone.d.ts +2 -2
  22. package/src/lib/date/date.rxjs.d.ts +3 -3
  23. package/src/lib/date/date.sort.d.ts +2 -2
  24. package/src/lib/date/date.time.d.ts +3 -3
  25. package/src/lib/date/date.time.limit.d.ts +3 -3
  26. package/src/lib/date/date.time.minute.d.ts +4 -4
  27. package/src/lib/date/date.timezone.d.ts +2 -2
  28. package/src/lib/date/date.unix.d.ts +1 -1
  29. package/src/lib/date/date.week.d.ts +3 -3
  30. package/src/lib/expires/expires.d.ts +1 -1
  31. package/src/lib/expires/expires.rxjs.d.ts +3 -3
  32. package/src/lib/query/query.builder.d.ts +2 -2
  33. package/src/lib/query/query.builder.mongo.d.ts +2 -2
  34. package/src/lib/query/query.filter.d.ts +2 -2
  35. package/src/lib/query/query.request.d.ts +2 -2
  36. package/src/lib/rrule/date.recurrence.d.ts +4 -4
  37. package/src/lib/rrule/date.rrule.d.ts +5 -5
  38. package/src/lib/rrule/date.rrule.extension.d.ts +1 -1
  39. package/src/lib/rrule/date.rrule.parse.d.ts +2 -2
  40. package/src/lib/timezone/timezone.d.ts +1 -1
  41. package/src/lib/timezone/timezone.validator.d.ts +2 -2
  42. package/CHANGELOG.md +0 -1488
  43. package/src/index.js +0 -5
  44. package/src/index.js.map +0 -1
  45. package/src/lib/date/date.calendar.js +0 -65
  46. package/src/lib/date/date.calendar.js.map +0 -1
  47. package/src/lib/date/date.cell.factory.js +0 -493
  48. package/src/lib/date/date.cell.factory.js.map +0 -1
  49. package/src/lib/date/date.cell.filter.js +0 -65
  50. package/src/lib/date/date.cell.filter.js.map +0 -1
  51. package/src/lib/date/date.cell.index.js +0 -731
  52. package/src/lib/date/date.cell.index.js.map +0 -1
  53. package/src/lib/date/date.cell.js +0 -574
  54. package/src/lib/date/date.cell.js.map +0 -1
  55. package/src/lib/date/date.cell.schedule.day.js +0 -15
  56. package/src/lib/date/date.cell.schedule.day.js.map +0 -1
  57. package/src/lib/date/date.cell.schedule.js +0 -711
  58. package/src/lib/date/date.cell.schedule.js.map +0 -1
  59. package/src/lib/date/date.cell.validator.js +0 -67
  60. package/src/lib/date/date.cell.validator.js.map +0 -1
  61. package/src/lib/date/date.cell.week.js +0 -40
  62. package/src/lib/date/date.cell.week.js.map +0 -1
  63. package/src/lib/date/date.day.js +0 -207
  64. package/src/lib/date/date.day.js.map +0 -1
  65. package/src/lib/date/date.duration.js +0 -56
  66. package/src/lib/date/date.duration.js.map +0 -1
  67. package/src/lib/date/date.format.js +0 -231
  68. package/src/lib/date/date.format.js.map +0 -1
  69. package/src/lib/date/date.hashset.js +0 -11
  70. package/src/lib/date/date.hashset.js.map +0 -1
  71. package/src/lib/date/date.js +0 -267
  72. package/src/lib/date/date.js.map +0 -1
  73. package/src/lib/date/date.logical.js +0 -61
  74. package/src/lib/date/date.logical.js.map +0 -1
  75. package/src/lib/date/date.range.js +0 -643
  76. package/src/lib/date/date.range.js.map +0 -1
  77. package/src/lib/date/date.range.string.js +0 -19
  78. package/src/lib/date/date.range.string.js.map +0 -1
  79. package/src/lib/date/date.range.timezone.js +0 -29
  80. package/src/lib/date/date.range.timezone.js.map +0 -1
  81. package/src/lib/date/date.round.js +0 -49
  82. package/src/lib/date/date.round.js.map +0 -1
  83. package/src/lib/date/date.rxjs.js +0 -40
  84. package/src/lib/date/date.rxjs.js.map +0 -1
  85. package/src/lib/date/date.sort.js +0 -43
  86. package/src/lib/date/date.sort.js.map +0 -1
  87. package/src/lib/date/date.time.js +0 -240
  88. package/src/lib/date/date.time.js.map +0 -1
  89. package/src/lib/date/date.time.limit.js +0 -99
  90. package/src/lib/date/date.time.limit.js.map +0 -1
  91. package/src/lib/date/date.time.minute.js +0 -144
  92. package/src/lib/date/date.time.minute.js.map +0 -1
  93. package/src/lib/date/date.timezone.js +0 -494
  94. package/src/lib/date/date.timezone.js.map +0 -1
  95. package/src/lib/date/date.unix.js +0 -41
  96. package/src/lib/date/date.unix.js.map +0 -1
  97. package/src/lib/date/date.week.js +0 -263
  98. package/src/lib/date/date.week.js.map +0 -1
  99. package/src/lib/date/index.js +0 -30
  100. package/src/lib/date/index.js.map +0 -1
  101. package/src/lib/expires/expires.js +0 -81
  102. package/src/lib/expires/expires.js.map +0 -1
  103. package/src/lib/expires/expires.rxjs.js +0 -61
  104. package/src/lib/expires/expires.rxjs.js.map +0 -1
  105. package/src/lib/expires/index.js +0 -6
  106. package/src/lib/expires/index.js.map +0 -1
  107. package/src/lib/index.js +0 -9
  108. package/src/lib/index.js.map +0 -1
  109. package/src/lib/query/index.js +0 -8
  110. package/src/lib/query/index.js.map +0 -1
  111. package/src/lib/query/query.builder.js +0 -85
  112. package/src/lib/query/query.builder.js.map +0 -1
  113. package/src/lib/query/query.builder.mongo.js +0 -41
  114. package/src/lib/query/query.builder.mongo.js.map +0 -1
  115. package/src/lib/query/query.filter.js +0 -3
  116. package/src/lib/query/query.filter.js.map +0 -1
  117. package/src/lib/query/query.request.js +0 -3
  118. package/src/lib/query/query.request.js.map +0 -1
  119. package/src/lib/rrule/date.recurrence.js +0 -93
  120. package/src/lib/rrule/date.recurrence.js.map +0 -1
  121. package/src/lib/rrule/date.rrule.extension.js +0 -151
  122. package/src/lib/rrule/date.rrule.extension.js.map +0 -1
  123. package/src/lib/rrule/date.rrule.js +0 -187
  124. package/src/lib/rrule/date.rrule.js.map +0 -1
  125. package/src/lib/rrule/date.rrule.parse.js +0 -135
  126. package/src/lib/rrule/date.rrule.parse.js.map +0 -1
  127. package/src/lib/rrule/index.js +0 -8
  128. package/src/lib/rrule/index.js.map +0 -1
  129. package/src/lib/timezone/index.js +0 -6
  130. package/src/lib/timezone/index.js.map +0 -1
  131. package/src/lib/timezone/timezone.js +0 -66
  132. package/src/lib/timezone/timezone.js.map +0 -1
  133. package/src/lib/timezone/timezone.validator.js +0 -26
  134. package/src/lib/timezone/timezone.validator.js.map +0 -1
@@ -1,643 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDaysOfWeekInDateRange = exports.transformDateRangeWithStartOfDay = exports.transformDateRangeDatesFunction = exports.clampDateRangeToDateRange = exports.clampDateRangeFunction = exports.clampDateToDateRange = exports.clampDateFunction = exports.fitUTCDateRangeToDayPeriod = exports.dateRangeOverlapsDateRangeFunction = exports.dateRangeOverlapsDateRange = exports.isDateRangeInDateRangeFunction = exports.isDateRangeInDateRange = exports.isDateInDateRangeFunction = exports.isDateInDateRange = exports.groupDateRangesByDateRelativeState = exports.dateRangeRelativeState = exports.expandDaysForDateRange = exports.expandDaysForDateRangeFunction = exports.DEFAULT_EXPAND_DAYS_FOR_DATE_RANGE_MAX_EXPANSION_SIZE = exports.forEachDayInDateRange = exports.iterateDaysInDateRange = exports.iterateDaysInDateRangeFunction = exports.endItreateDaysInDateRangeEarly = exports.IterateDaysInDateRangeFunctionBailError = exports.DEFAULT_ITERATE_DAYS_IN_DATE_RANGE_MAX_ITERATIONS = exports.dateRange = exports.DateRangeParams = exports.DateRangeType = exports.dateOrDateRangeToDateRange = exports.isFullDateRange = exports.isPartialDateRange = exports.isInfiniteDateRange = exports.isSameDateDayRange = exports.isSameDateRange = exports.isDateRange = exports.dateRangeDaysCount = exports.DateRange = exports.sortDateRangeStartAscendingCompareFunction = exports.isDateRangeStart = void 0;
4
- const tslib_1 = require("tslib");
5
- const util_1 = require("@dereekb/util");
6
- const class_transformer_1 = require("class-transformer");
7
- const class_validator_1 = require("class-validator");
8
- const date_fns_1 = require("date-fns");
9
- const date_1 = require("./date");
10
- const date_sort_1 = require("./date.sort");
11
- /**
12
- * Returns true if the input is a DateRangeStart.
13
- *
14
- * @param value
15
- * @returns
16
- */
17
- function isDateRangeStart(value) {
18
- return typeof value === 'object' && (0, date_1.isDate)(value.start);
19
- }
20
- exports.isDateRangeStart = isDateRangeStart;
21
- /**
22
- * Sorts the input DateRangeStart values in ascending order by start Date.
23
- *
24
- * @param a
25
- * @param b
26
- * @returns
27
- */
28
- exports.sortDateRangeStartAscendingCompareFunction = (0, date_sort_1.sortByDateFunction)((x) => x.start);
29
- class DateRange {
30
- constructor(template) {
31
- if (template != null) {
32
- this.start = template.start;
33
- this.end = template.end;
34
- }
35
- }
36
- }
37
- exports.DateRange = DateRange;
38
- tslib_1.__decorate([
39
- (0, class_transformer_1.Expose)(),
40
- (0, class_validator_1.IsDate)(),
41
- (0, class_transformer_1.Type)(() => Date),
42
- tslib_1.__metadata("design:type", Date)
43
- ], DateRange.prototype, "start", void 0);
44
- tslib_1.__decorate([
45
- (0, class_transformer_1.Expose)(),
46
- (0, class_validator_1.IsDate)(),
47
- (0, class_transformer_1.Type)(() => Date),
48
- tslib_1.__metadata("design:type", Date)
49
- ], DateRange.prototype, "end", void 0);
50
- /**
51
- * Total number of days in the range. Minimum of 1 day.
52
- *
53
- * @param dateRange
54
- * @returns
55
- */
56
- function dateRangeDaysCount(dateRange) {
57
- return (0, date_fns_1.differenceInDays)(dateRange.end, dateRange.start) + 1;
58
- }
59
- exports.dateRangeDaysCount = dateRangeDaysCount;
60
- /**
61
- * Returns true if the input is a DateRange.
62
- *
63
- * @param input
64
- * @returns
65
- */
66
- function isDateRange(input) {
67
- return typeof input === 'object' && (0, date_1.isDate)(input.start) && (0, date_1.isDate)(input.end);
68
- }
69
- exports.isDateRange = isDateRange;
70
- function isSameDateRange(a, b) {
71
- return a && b ? (0, date_1.isSameDate)(a.start, b.start) && (0, date_1.isSameDate)(a.end, b.end) : a == b;
72
- }
73
- exports.isSameDateRange = isSameDateRange;
74
- function isSameDateDayRange(a, b) {
75
- return a && b ? (0, date_1.isSameDateDay)(a.start, b.start) && (0, date_1.isSameDateDay)(a.end, b.end) : a == b;
76
- }
77
- exports.isSameDateDayRange = isSameDateDayRange;
78
- /**
79
- * Returns true if the date range has no start or end.
80
- *
81
- * @param input
82
- * @returns
83
- */
84
- function isInfiniteDateRange(input) {
85
- return input.start == null && input.end == null;
86
- }
87
- exports.isInfiniteDateRange = isInfiniteDateRange;
88
- function isPartialDateRange(input) {
89
- return (input.start != null || input.end != null) && !isFullDateRange(input);
90
- }
91
- exports.isPartialDateRange = isPartialDateRange;
92
- function isFullDateRange(input) {
93
- return input.start != null && input.end != null;
94
- }
95
- exports.isFullDateRange = isFullDateRange;
96
- function dateOrDateRangeToDateRange(startOrDateRange, end) {
97
- var _a;
98
- if ((0, date_1.isDate)(startOrDateRange)) {
99
- return { start: startOrDateRange, end: (_a = end) !== null && _a !== void 0 ? _a : startOrDateRange };
100
- }
101
- else {
102
- return startOrDateRange;
103
- }
104
- }
105
- exports.dateOrDateRangeToDateRange = dateOrDateRangeToDateRange;
106
- var DateRangeType;
107
- (function (DateRangeType) {
108
- /**
109
- * Full day of the date. Ignores distance.
110
- */
111
- DateRangeType["DAY"] = "day";
112
- /**
113
- * Full week of the date. Ignores distance.
114
- */
115
- DateRangeType["WEEK"] = "week";
116
- /**
117
- * Full month of the date. Ignores distance.
118
- */
119
- DateRangeType["MONTH"] = "month";
120
- /**
121
- * Full minute of the date. Ignores distance.
122
- */
123
- DateRangeType["MINUTE"] = "minute";
124
- /**
125
- * Full hour of the date. Ignores distance.
126
- */
127
- DateRangeType["HOUR"] = "hour";
128
- /**
129
- * Full minutes between the date and the target date in the given distance/direction.
130
- */
131
- DateRangeType["MINUTES_RANGE"] = "minutes_range";
132
- /**
133
- * Full hours between the date and the target date in the given distance/direction.
134
- */
135
- DateRangeType["HOURS_RANGE"] = "hours_range";
136
- /**
137
- * Days between the date and the target date in the given distance/direction.
138
- */
139
- DateRangeType["DAYS_RANGE"] = "days_range";
140
- /**
141
- * Full weeks between the date and the target date in the given distance/direction.
142
- */
143
- DateRangeType["WEEKS_RANGE"] = "weeks_range";
144
- /**
145
- * Full months between the date and the target date in the given distance/direction.
146
- */
147
- DateRangeType["MONTHS_RANGE"] = "months_range";
148
- /**
149
- * Radius specified in minutes with the input.
150
- */
151
- DateRangeType["MINUTES_RADIUS"] = "minutes_radius";
152
- /**
153
- * Radius specified in hours with the input.
154
- */
155
- DateRangeType["HOURS_RADIUS"] = "hours_radius";
156
- /**
157
- * Radius specified in days with the input.
158
- */
159
- DateRangeType["DAYS_RADIUS"] = "days_radius";
160
- /**
161
- * Radius specified in weeks with the input.
162
- */
163
- DateRangeType["WEEKS_RADIUS"] = "weeks_radius";
164
- /**
165
- * All surrounding days that would appear on a calendar with this date.
166
- */
167
- DateRangeType["CALENDAR_MONTH"] = "calendar_month";
168
- })(DateRangeType || (exports.DateRangeType = DateRangeType = {}));
169
- /**
170
- * Params for building a date range.
171
- */
172
- class DateRangeParams {
173
- constructor(template) {
174
- /**
175
- * Type of range.
176
- */
177
- this.type = DateRangeType.DAY;
178
- /**
179
- * Date to filter on. If not provided, assumes now.
180
- */
181
- this.date = new Date();
182
- if (template) {
183
- this.type = template.type;
184
- this.date = template.date;
185
- this.distance = template.distance;
186
- }
187
- }
188
- }
189
- exports.DateRangeParams = DateRangeParams;
190
- tslib_1.__decorate([
191
- (0, class_validator_1.IsEnum)(DateRangeType),
192
- tslib_1.__metadata("design:type", String)
193
- ], DateRangeParams.prototype, "type", void 0);
194
- tslib_1.__decorate([
195
- (0, class_validator_1.IsOptional)(),
196
- (0, class_validator_1.IsDate)(),
197
- (0, class_transformer_1.Type)(() => Date),
198
- tslib_1.__metadata("design:type", Date)
199
- ], DateRangeParams.prototype, "date", void 0);
200
- tslib_1.__decorate([
201
- (0, class_validator_1.IsNumber)(),
202
- (0, class_validator_1.IsOptional)(),
203
- tslib_1.__metadata("design:type", Number)
204
- ], DateRangeParams.prototype, "distance", void 0);
205
- /**
206
- * Creates a DateRange from the input DateRangeParams
207
- *
208
- * @param param0
209
- * @param roundToMinute
210
- * @returns
211
- */
212
- function dateRange(input, inputRoundToMinute) {
213
- const config = typeof input === 'string' ? { type: input } : input;
214
- const { type = DateRangeType.DAYS_RANGE, date: inputDate, distance: inputDistance, roundToMinute: inputConfigRoundToMinute = false } = config;
215
- const rawDistance = inputDistance !== null && inputDistance !== void 0 ? inputDistance : undefined;
216
- const roundToMinute = inputRoundToMinute !== null && inputRoundToMinute !== void 0 ? inputRoundToMinute : inputConfigRoundToMinute;
217
- let date = inputDate !== null && inputDate !== void 0 ? inputDate : new Date();
218
- let distance = inputDistance !== null && inputDistance !== void 0 ? inputDistance : 1;
219
- let start = date;
220
- let end = date;
221
- if (roundToMinute) {
222
- date = (0, date_fns_1.startOfMinute)(date); // Reset to start of minute
223
- }
224
- function calculateStartAndEndForDate(startOfFn, endOfFn) {
225
- const preStart = start;
226
- const preEnd = end;
227
- start = startOfFn(preStart);
228
- end = endOfFn(preEnd);
229
- }
230
- function calculateStartAndEndForBetween(addFn, distance = 0, startOfFn, endOfFn) {
231
- let preStart;
232
- let preEnd;
233
- switch (distance) {
234
- case 0:
235
- preStart = date;
236
- preEnd = date;
237
- break;
238
- default:
239
- const hasNegativeDistance = distance < 0;
240
- if (hasNegativeDistance) {
241
- preStart = addFn(date, distance);
242
- preEnd = date;
243
- }
244
- else {
245
- preStart = date;
246
- preEnd = addFn(date, distance);
247
- }
248
- break;
249
- }
250
- start = startOfFn(preStart);
251
- end = endOfFn(preEnd);
252
- }
253
- switch (type) {
254
- case DateRangeType.DAY:
255
- calculateStartAndEndForDate(date_fns_1.startOfDay, date_fns_1.endOfDay);
256
- break;
257
- case DateRangeType.WEEK:
258
- calculateStartAndEndForDate(date_fns_1.startOfWeek, date_fns_1.endOfWeek);
259
- break;
260
- case DateRangeType.MONTH:
261
- calculateStartAndEndForDate(date_fns_1.startOfMonth, date_fns_1.endOfMonth);
262
- break;
263
- case DateRangeType.HOUR:
264
- calculateStartAndEndForDate(date_fns_1.startOfHour, date_fns_1.endOfHour);
265
- break;
266
- case DateRangeType.MINUTE:
267
- calculateStartAndEndForDate(date_fns_1.startOfMinute, date_fns_1.endOfMinute);
268
- break;
269
- case DateRangeType.MINUTES_RANGE:
270
- calculateStartAndEndForBetween(date_fns_1.addMinutes, rawDistance, date_fns_1.startOfMinute, date_fns_1.endOfMinute);
271
- break;
272
- case DateRangeType.HOURS_RANGE:
273
- calculateStartAndEndForBetween(date_fns_1.addHours, rawDistance, date_fns_1.startOfHour, date_fns_1.endOfHour);
274
- break;
275
- case DateRangeType.DAYS_RANGE:
276
- calculateStartAndEndForBetween(date_fns_1.addDays, rawDistance, date_fns_1.startOfDay, date_fns_1.endOfDay);
277
- break;
278
- case DateRangeType.WEEKS_RANGE:
279
- calculateStartAndEndForBetween(date_fns_1.addWeeks, rawDistance, date_fns_1.startOfWeek, date_fns_1.endOfWeek);
280
- break;
281
- case DateRangeType.MONTHS_RANGE:
282
- calculateStartAndEndForBetween(date_fns_1.addMonths, rawDistance, date_fns_1.startOfMonth, date_fns_1.endOfMonth);
283
- break;
284
- case DateRangeType.MINUTES_RADIUS:
285
- distance = Math.abs(distance);
286
- start = (0, date_fns_1.addMinutes)(date, -distance);
287
- end = (0, date_fns_1.addMinutes)(date, distance);
288
- break;
289
- case DateRangeType.HOURS_RADIUS:
290
- distance = Math.abs(distance);
291
- start = (0, date_fns_1.addHours)(date, -distance);
292
- end = (0, date_fns_1.addHours)(date, distance);
293
- break;
294
- case DateRangeType.DAYS_RADIUS:
295
- distance = Math.abs(distance);
296
- start = (0, date_fns_1.addDays)(date, -distance);
297
- end = (0, date_fns_1.addDays)(date, distance);
298
- break;
299
- case DateRangeType.WEEKS_RADIUS:
300
- distance = Math.abs(distance);
301
- start = (0, date_fns_1.addDays)(date, -distance * 7);
302
- end = (0, date_fns_1.addDays)(date, distance * 7);
303
- break;
304
- case DateRangeType.CALENDAR_MONTH:
305
- const monthStart = (0, date_fns_1.startOfMonth)((0, date_fns_1.endOfWeek)(date));
306
- start = (0, date_fns_1.startOfWeek)(monthStart);
307
- end = (0, date_fns_1.endOfWeek)((0, date_fns_1.endOfMonth)(monthStart));
308
- break;
309
- default:
310
- throw new Error(`Unknown date range type: ${type}`);
311
- }
312
- return {
313
- start,
314
- end
315
- };
316
- }
317
- exports.dateRange = dateRange;
318
- exports.DEFAULT_ITERATE_DAYS_IN_DATE_RANGE_MAX_ITERATIONS = 4000;
319
- class IterateDaysInDateRangeFunctionBailError extends Error {
320
- constructor(message = 'bail out') {
321
- super(message);
322
- }
323
- }
324
- exports.IterateDaysInDateRangeFunctionBailError = IterateDaysInDateRangeFunctionBailError;
325
- /**
326
- * Call to end iterating days in a date range early.
327
- */
328
- function endItreateDaysInDateRangeEarly() {
329
- throw new IterateDaysInDateRangeFunctionBailError();
330
- }
331
- exports.endItreateDaysInDateRangeEarly = endItreateDaysInDateRangeEarly;
332
- /**
333
- * Creates an IterateDaysInDateRangeFunction
334
- *
335
- * @param getNextDate
336
- * @returns
337
- */
338
- function iterateDaysInDateRangeFunction(input) {
339
- const config = typeof input === 'function' ? { getNextDate: input } : input;
340
- const { maxIterations: inputMaxIterations = exports.DEFAULT_ITERATE_DAYS_IN_DATE_RANGE_MAX_ITERATIONS, throwErrorOnMaxIterations = true, getNextDate } = config;
341
- const maxIterations = inputMaxIterations ? inputMaxIterations : Number.MAX_SAFE_INTEGER;
342
- return ({ start, end }, forEachFn) => {
343
- let current = start;
344
- const results = [];
345
- try {
346
- while (!(0, date_fns_1.isAfter)(current, end)) {
347
- const result = forEachFn(current);
348
- results.push(result);
349
- current = getNextDate(current);
350
- if (results.length >= maxIterations) {
351
- if (throwErrorOnMaxIterations) {
352
- throw new Error(`iterateDaysInDateRangeFunction() reached max configured iterations of ${maxIterations}`);
353
- }
354
- else {
355
- break;
356
- }
357
- }
358
- }
359
- }
360
- catch (e) {
361
- if (!(e instanceof IterateDaysInDateRangeFunctionBailError)) {
362
- throw e;
363
- }
364
- }
365
- return results;
366
- };
367
- }
368
- exports.iterateDaysInDateRangeFunction = iterateDaysInDateRangeFunction;
369
- function iterateDaysInDateRange(dateRange, forEachFn, getNextDate) {
370
- return iterateDaysInDateRangeFunction(getNextDate)(dateRange, forEachFn);
371
- }
372
- exports.iterateDaysInDateRange = iterateDaysInDateRange;
373
- /**
374
- * Iterates each day in the date range, starting from the start date.
375
- *
376
- * @param dateRange
377
- * @param forEachFn
378
- */
379
- exports.forEachDayInDateRange = iterateDaysInDateRangeFunction((current) => (0, date_fns_1.addDays)(current, 1));
380
- exports.DEFAULT_EXPAND_DAYS_FOR_DATE_RANGE_MAX_EXPANSION_SIZE = 1500;
381
- /**
382
- * Expands the input range into dates.
383
- *
384
- * @param param0
385
- */
386
- function expandDaysForDateRangeFunction(config = {}) {
387
- const { maxExpansionSize: inputMaxExpansionSize = exports.DEFAULT_EXPAND_DAYS_FOR_DATE_RANGE_MAX_EXPANSION_SIZE } = config;
388
- const maxExpansionSize = inputMaxExpansionSize ? inputMaxExpansionSize : Number.MAX_SAFE_INTEGER;
389
- return (dateRange) => {
390
- const { start, end } = dateRange;
391
- // check the expansion isn't too large
392
- const distance = Math.abs((0, date_fns_1.differenceInDays)(start, end));
393
- if (distance > maxExpansionSize) {
394
- throw new Error(`Attempted to expand days past the max expansion size of "${distance}"`);
395
- }
396
- const dates = (0, exports.forEachDayInDateRange)(dateRange, (x) => x);
397
- return dates;
398
- };
399
- }
400
- exports.expandDaysForDateRangeFunction = expandDaysForDateRangeFunction;
401
- /**
402
- * Expands the input range to the days.
403
- *
404
- * @param range
405
- * @returns
406
- */
407
- function expandDaysForDateRange(range) {
408
- return expandDaysForDateRangeFunction({})(range);
409
- }
410
- exports.expandDaysForDateRange = expandDaysForDateRange;
411
- /**
412
- * Returns the DateRelativeState from the input DateRange.
413
- *
414
- * @param param0
415
- * @returns
416
- */
417
- function dateRangeRelativeState({ start, end }, now = new Date()) {
418
- if ((0, date_fns_1.isAfter)(now, end)) {
419
- return 'past';
420
- }
421
- else if ((0, date_fns_1.isBefore)(now, start)) {
422
- return 'future';
423
- }
424
- else {
425
- return 'present';
426
- }
427
- }
428
- exports.dateRangeRelativeState = dateRangeRelativeState;
429
- function groupDateRangesByDateRelativeState(dateRanges, now = new Date()) {
430
- return (0, util_1.groupValues)(dateRanges, (x) => dateRangeRelativeState(x));
431
- }
432
- exports.groupDateRangesByDateRelativeState = groupDateRangesByDateRelativeState;
433
- function isDateInDateRange(date, dateRange) {
434
- return isDateInDateRangeFunction(dateRange)(date);
435
- }
436
- exports.isDateInDateRange = isDateInDateRange;
437
- /**
438
- * Creates an IsDateInDateRangeFunction
439
- *
440
- * @param dateRange
441
- * @returns
442
- */
443
- function isDateInDateRangeFunction(dateRange) {
444
- let fn;
445
- if (dateRange.start != null && dateRange.end != null) {
446
- // Start And End
447
- const startTime = dateRange.start.getTime();
448
- const endTime = dateRange.end.getTime();
449
- fn = ((input) => {
450
- const time = input.getTime();
451
- return time >= startTime && time <= endTime;
452
- });
453
- }
454
- else if (dateRange.start != null) {
455
- // Start Only
456
- const startTime = dateRange.start.getTime();
457
- fn = ((input) => {
458
- const time = input.getTime();
459
- return time >= startTime;
460
- });
461
- }
462
- else if (dateRange.end != null) {
463
- // End Only
464
- const endTime = dateRange.end.getTime();
465
- fn = ((input) => {
466
- const time = input.getTime();
467
- return time <= endTime;
468
- });
469
- }
470
- else {
471
- fn = ((input) => true);
472
- }
473
- fn._dateRange = dateRange;
474
- return fn;
475
- }
476
- exports.isDateInDateRangeFunction = isDateInDateRangeFunction;
477
- function isDateRangeInDateRange(compareDateRange, dateRange) {
478
- return isDateRangeInDateRangeFunction(dateRange)(compareDateRange);
479
- }
480
- exports.isDateRangeInDateRange = isDateRangeInDateRange;
481
- /**
482
- * Creates an IsDateRangeInDateRangeFunction
483
- *
484
- * @param dateRange
485
- * @returns
486
- */
487
- function isDateRangeInDateRangeFunction(dateRange) {
488
- const isDateInDateRange = isDateInDateRangeFunction(dateRange);
489
- const fn = ((input) => {
490
- return isDateInDateRange(input.start) && isDateInDateRange(input.end);
491
- });
492
- fn._dateRange = dateRange;
493
- return fn;
494
- }
495
- exports.isDateRangeInDateRangeFunction = isDateRangeInDateRangeFunction;
496
- function dateRangeOverlapsDateRange(compareDateRange, dateRange) {
497
- return dateRangeOverlapsDateRangeFunction(dateRange)(compareDateRange);
498
- }
499
- exports.dateRangeOverlapsDateRange = dateRangeOverlapsDateRange;
500
- /**
501
- * Creates an DateRangeOverlapsDateRangeFunction
502
- *
503
- * @param dateRange
504
- * @returns
505
- */
506
- function dateRangeOverlapsDateRangeFunction(dateRange) {
507
- const startTime = dateRange.start.getTime();
508
- const endTime = dateRange.end.getTime();
509
- const fn = ((input) => {
510
- return input.start.getTime() <= endTime && input.end.getTime() >= startTime;
511
- });
512
- fn._dateRange = dateRange;
513
- return fn;
514
- }
515
- exports.dateRangeOverlapsDateRangeFunction = dateRangeOverlapsDateRangeFunction;
516
- /**
517
- * Reduces the UTC date range to represent a 24 hour period.
518
- *
519
- * For example, a range of 10AM one day to 1PM three days later will be simplified to 10AM to 1PM.
520
- *
521
- * The order of times is retained. Date ranges that are 1PM to 10AM three days later will be simplified to 1PM to 10AM.
522
- *
523
- * For the UTC timezone, meaning changes in daylight savings are not considered.
524
- */
525
- function fitUTCDateRangeToDayPeriod(dateRange) {
526
- const startTime = dateRange.start.getTime();
527
- const endTime = dateRange.end.getTime();
528
- const distance = endTime - startTime;
529
- let newDistance = distance % util_1.MS_IN_DAY;
530
- // if the times are the same but not on the same day, then it is a 24 hour period.
531
- if (newDistance === 0 && distance > 0) {
532
- newDistance = util_1.MS_IN_DAY;
533
- }
534
- const end = (0, date_fns_1.addMilliseconds)(dateRange.start, newDistance);
535
- return Object.assign(Object.assign({}, dateRange), { start: dateRange.start, end });
536
- }
537
- exports.fitUTCDateRangeToDayPeriod = fitUTCDateRangeToDayPeriod;
538
- function clampDateFunction(dateRange) {
539
- var _a, _b;
540
- let fn;
541
- const hasStartDate = dateRange.start != null;
542
- const hasEndDate = dateRange.end != null;
543
- if (hasStartDate || hasEndDate) {
544
- // Start Clamp
545
- const startTime = ((_a = dateRange.start) === null || _a === void 0 ? void 0 : _a.getTime()) || 0;
546
- const clampStart = (input) => {
547
- const time = input.getTime();
548
- return time >= startTime ? input : dateRange.start;
549
- };
550
- // End Clamp
551
- const endTime = ((_b = dateRange.end) === null || _b === void 0 ? void 0 : _b.getTime()) || 0;
552
- const clampEnd = (input) => {
553
- const time = input.getTime();
554
- return time <= endTime ? input : dateRange.end;
555
- };
556
- if (hasStartDate && hasEndDate) {
557
- fn = ((input) => {
558
- return clampStart(clampEnd(input));
559
- });
560
- }
561
- else if (hasStartDate) {
562
- fn = ((input) => {
563
- return clampStart(input);
564
- });
565
- }
566
- else {
567
- fn = ((input) => {
568
- return clampEnd(input);
569
- });
570
- }
571
- }
572
- else {
573
- fn = ((input) => input);
574
- }
575
- fn._dateRange = dateRange;
576
- return fn;
577
- }
578
- exports.clampDateFunction = clampDateFunction;
579
- /**
580
- * Clamps the date to the date range. Convenience function for clampDateFunction().
581
- *
582
- * @param date
583
- * @param dateRange
584
- * @returns
585
- */
586
- function clampDateToDateRange(date, dateRange) {
587
- return clampDateFunction(dateRange)(date);
588
- }
589
- exports.clampDateToDateRange = clampDateToDateRange;
590
- function clampDateRangeFunction(dateRange, defaultClampNullValues = false) {
591
- const clampDate = clampDateFunction(dateRange);
592
- const fn = ((input, clampNullValues = defaultClampNullValues) => {
593
- const start = input.start ? clampDate(input.start) : clampNullValues ? dateRange.start : undefined;
594
- const end = input.end ? clampDate(input.end) : clampNullValues ? dateRange.end : undefined;
595
- return { start, end };
596
- });
597
- fn._dateRange = dateRange;
598
- return fn;
599
- }
600
- exports.clampDateRangeFunction = clampDateRangeFunction;
601
- /**
602
- * Clamps the input range to the second date range. Convenience function for clampDateRangeFunction().
603
- *
604
- * @param inputDateRange
605
- * @param limitToDateRange
606
- * @returns
607
- */
608
- function clampDateRangeToDateRange(inputDateRange, limitToDateRange) {
609
- return clampDateRangeFunction(limitToDateRange)(inputDateRange);
610
- }
611
- exports.clampDateRangeToDateRange = clampDateRangeToDateRange;
612
- function transformDateRangeDatesFunction(transform) {
613
- return ({ start, end }) => ({
614
- start: transform(start),
615
- end: transform(end)
616
- });
617
- }
618
- exports.transformDateRangeDatesFunction = transformDateRangeDatesFunction;
619
- /**
620
- * TransformDateRangeDatesFunction that transforms the input dates to the start of the day.
621
- */
622
- exports.transformDateRangeWithStartOfDay = transformDateRangeDatesFunction(date_fns_1.startOfDay);
623
- /**
624
- * Returns each unique day of the week in the date range in the order they appear.
625
- *
626
- * @param dateRange
627
- */
628
- function getDaysOfWeekInDateRange(dateRange) {
629
- const days = [];
630
- const daysRange = (0, date_fns_1.differenceInDays)(dateRange.start, dateRange.end);
631
- if (daysRange >= 7) {
632
- return (0, util_1.daysOfWeekArray)((0, util_1.dayOfWeek)(dateRange.start));
633
- }
634
- (0, exports.forEachDayInDateRange)(dateRange, (day) => {
635
- days.push((0, util_1.dayOfWeek)(day));
636
- if (days.length >= 7) {
637
- endItreateDaysInDateRangeEarly();
638
- }
639
- });
640
- return days;
641
- }
642
- exports.getDaysOfWeekInDateRange = getDaysOfWeekInDateRange;
643
- //# sourceMappingURL=date.range.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.range.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.range.ts"],"names":[],"mappings":"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"}