@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.
- package/index.cjs.d.ts +1 -0
- package/index.cjs.js +9264 -0
- package/index.esm.js +9957 -0
- package/package.json +17 -3
- package/src/lib/date/date.calendar.d.ts +1 -1
- package/src/lib/date/date.cell.d.ts +3 -3
- package/src/lib/date/date.cell.factory.d.ts +5 -5
- package/src/lib/date/date.cell.filter.d.ts +3 -3
- package/src/lib/date/date.cell.index.d.ts +4 -3
- package/src/lib/date/date.cell.schedule.d.ts +7 -7
- package/src/lib/date/date.cell.schedule.day.d.ts +2 -2
- package/src/lib/date/date.cell.validator.d.ts +2 -2
- package/src/lib/date/date.cell.week.d.ts +3 -3
- package/src/lib/date/date.d.ts +1 -1
- package/src/lib/date/date.day.d.ts +3 -3
- package/src/lib/date/date.duration.d.ts +2 -2
- package/src/lib/date/date.format.d.ts +3 -4
- package/src/lib/date/date.logical.d.ts +1 -1
- package/src/lib/date/date.range.d.ts +1 -1
- package/src/lib/date/date.range.string.d.ts +2 -2
- package/src/lib/date/date.range.timezone.d.ts +2 -2
- package/src/lib/date/date.rxjs.d.ts +3 -3
- package/src/lib/date/date.sort.d.ts +2 -2
- package/src/lib/date/date.time.d.ts +3 -3
- package/src/lib/date/date.time.limit.d.ts +3 -3
- package/src/lib/date/date.time.minute.d.ts +4 -4
- package/src/lib/date/date.timezone.d.ts +2 -2
- package/src/lib/date/date.unix.d.ts +1 -1
- package/src/lib/date/date.week.d.ts +3 -3
- package/src/lib/expires/expires.d.ts +1 -1
- package/src/lib/expires/expires.rxjs.d.ts +3 -3
- package/src/lib/query/query.builder.d.ts +2 -2
- package/src/lib/query/query.builder.mongo.d.ts +2 -2
- package/src/lib/query/query.filter.d.ts +2 -2
- package/src/lib/query/query.request.d.ts +2 -2
- package/src/lib/rrule/date.recurrence.d.ts +4 -4
- package/src/lib/rrule/date.rrule.d.ts +5 -5
- package/src/lib/rrule/date.rrule.extension.d.ts +1 -1
- package/src/lib/rrule/date.rrule.parse.d.ts +2 -2
- package/src/lib/timezone/timezone.d.ts +1 -1
- package/src/lib/timezone/timezone.validator.d.ts +2 -2
- package/CHANGELOG.md +0 -1488
- package/src/index.js +0 -5
- package/src/index.js.map +0 -1
- package/src/lib/date/date.calendar.js +0 -65
- package/src/lib/date/date.calendar.js.map +0 -1
- package/src/lib/date/date.cell.factory.js +0 -493
- package/src/lib/date/date.cell.factory.js.map +0 -1
- package/src/lib/date/date.cell.filter.js +0 -65
- package/src/lib/date/date.cell.filter.js.map +0 -1
- package/src/lib/date/date.cell.index.js +0 -731
- package/src/lib/date/date.cell.index.js.map +0 -1
- package/src/lib/date/date.cell.js +0 -574
- package/src/lib/date/date.cell.js.map +0 -1
- package/src/lib/date/date.cell.schedule.day.js +0 -15
- package/src/lib/date/date.cell.schedule.day.js.map +0 -1
- package/src/lib/date/date.cell.schedule.js +0 -711
- package/src/lib/date/date.cell.schedule.js.map +0 -1
- package/src/lib/date/date.cell.validator.js +0 -67
- package/src/lib/date/date.cell.validator.js.map +0 -1
- package/src/lib/date/date.cell.week.js +0 -40
- package/src/lib/date/date.cell.week.js.map +0 -1
- package/src/lib/date/date.day.js +0 -207
- package/src/lib/date/date.day.js.map +0 -1
- package/src/lib/date/date.duration.js +0 -56
- package/src/lib/date/date.duration.js.map +0 -1
- package/src/lib/date/date.format.js +0 -231
- package/src/lib/date/date.format.js.map +0 -1
- package/src/lib/date/date.hashset.js +0 -11
- package/src/lib/date/date.hashset.js.map +0 -1
- package/src/lib/date/date.js +0 -267
- package/src/lib/date/date.js.map +0 -1
- package/src/lib/date/date.logical.js +0 -61
- package/src/lib/date/date.logical.js.map +0 -1
- package/src/lib/date/date.range.js +0 -643
- package/src/lib/date/date.range.js.map +0 -1
- package/src/lib/date/date.range.string.js +0 -19
- package/src/lib/date/date.range.string.js.map +0 -1
- package/src/lib/date/date.range.timezone.js +0 -29
- package/src/lib/date/date.range.timezone.js.map +0 -1
- package/src/lib/date/date.round.js +0 -49
- package/src/lib/date/date.round.js.map +0 -1
- package/src/lib/date/date.rxjs.js +0 -40
- package/src/lib/date/date.rxjs.js.map +0 -1
- package/src/lib/date/date.sort.js +0 -43
- package/src/lib/date/date.sort.js.map +0 -1
- package/src/lib/date/date.time.js +0 -240
- package/src/lib/date/date.time.js.map +0 -1
- package/src/lib/date/date.time.limit.js +0 -99
- package/src/lib/date/date.time.limit.js.map +0 -1
- package/src/lib/date/date.time.minute.js +0 -144
- package/src/lib/date/date.time.minute.js.map +0 -1
- package/src/lib/date/date.timezone.js +0 -494
- package/src/lib/date/date.timezone.js.map +0 -1
- package/src/lib/date/date.unix.js +0 -41
- package/src/lib/date/date.unix.js.map +0 -1
- package/src/lib/date/date.week.js +0 -263
- package/src/lib/date/date.week.js.map +0 -1
- package/src/lib/date/index.js +0 -30
- package/src/lib/date/index.js.map +0 -1
- package/src/lib/expires/expires.js +0 -81
- package/src/lib/expires/expires.js.map +0 -1
- package/src/lib/expires/expires.rxjs.js +0 -61
- package/src/lib/expires/expires.rxjs.js.map +0 -1
- package/src/lib/expires/index.js +0 -6
- package/src/lib/expires/index.js.map +0 -1
- package/src/lib/index.js +0 -9
- package/src/lib/index.js.map +0 -1
- package/src/lib/query/index.js +0 -8
- package/src/lib/query/index.js.map +0 -1
- package/src/lib/query/query.builder.js +0 -85
- package/src/lib/query/query.builder.js.map +0 -1
- package/src/lib/query/query.builder.mongo.js +0 -41
- package/src/lib/query/query.builder.mongo.js.map +0 -1
- package/src/lib/query/query.filter.js +0 -3
- package/src/lib/query/query.filter.js.map +0 -1
- package/src/lib/query/query.request.js +0 -3
- package/src/lib/query/query.request.js.map +0 -1
- package/src/lib/rrule/date.recurrence.js +0 -93
- package/src/lib/rrule/date.recurrence.js.map +0 -1
- package/src/lib/rrule/date.rrule.extension.js +0 -151
- package/src/lib/rrule/date.rrule.extension.js.map +0 -1
- package/src/lib/rrule/date.rrule.js +0 -187
- package/src/lib/rrule/date.rrule.js.map +0 -1
- package/src/lib/rrule/date.rrule.parse.js +0 -135
- package/src/lib/rrule/date.rrule.parse.js.map +0 -1
- package/src/lib/rrule/index.js +0 -8
- package/src/lib/rrule/index.js.map +0 -1
- package/src/lib/timezone/index.js +0 -6
- package/src/lib/timezone/index.js.map +0 -1
- package/src/lib/timezone/timezone.js +0 -66
- package/src/lib/timezone/timezone.js.map +0 -1
- package/src/lib/timezone/timezone.validator.js +0 -26
- 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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"}
|