@dereekb/date 9.17.3 → 9.18.1
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/CHANGELOG.md +21 -0
- package/package.json +3 -3
- package/src/lib/date/date.block.d.ts +76 -13
- package/src/lib/date/date.block.js +126 -13
- package/src/lib/date/date.block.js.map +1 -1
- package/src/lib/date/date.calendar.js.map +1 -1
- package/src/lib/date/date.d.ts +22 -0
- package/src/lib/date/date.duration.d.ts +2 -1
- package/src/lib/date/date.duration.js.map +1 -1
- package/src/lib/date/date.format.d.ts +2 -0
- package/src/lib/date/date.format.js +9 -1
- package/src/lib/date/date.format.js.map +1 -1
- package/src/lib/date/date.js +9 -1
- package/src/lib/date/date.js.map +1 -1
- package/src/lib/date/date.range.d.ts +30 -8
- package/src/lib/date/date.range.js +56 -7
- package/src/lib/date/date.range.js.map +1 -1
- package/src/lib/date/date.schedule.d.ts +222 -0
- package/src/lib/date/date.schedule.js +333 -0
- package/src/lib/date/date.schedule.js.map +1 -0
- package/src/lib/date/date.time.minute.d.ts +37 -3
- package/src/lib/date/date.time.minute.js +46 -8
- package/src/lib/date/date.time.minute.js.map +1 -1
- package/src/lib/date/index.d.ts +1 -0
- package/src/lib/date/index.js +1 -0
- package/src/lib/date/index.js.map +1 -1
- package/src/lib/rrule/date.recurrence.d.ts +2 -1
- package/src/lib/rrule/date.recurrence.js.map +1 -1
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.expandDateSchedule = exports.expandDateScheduleFactory = exports.dateScheduleDateBlockTimingFilter = exports.dateScheduleDateFilter = exports.isSameDateScheduleRange = exports.DateSchedule = exports.isSameDateSchedule = exports.dateScheduleDayCodeFactory = exports.expandDateScheduleDayCodesToDayOfWeekSet = exports.dateScheduleDayCodes = exports.expandDateScheduleEncodedWeek = exports.simplifyDateScheduleDayCodes = exports.dateScheduleEncodedWeek = exports.isDateScheduleEncodedWeek = exports.DATE_SCHEDULE_ENCODED_WEEK_REGEX = exports.dateScheduleDayCodesFromEnabledDays = exports.enabledDaysFromDateScheduleDayCodes = exports.DateScheduleDayCode = 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_block_1 = require("./date.block");
|
|
10
|
+
const date_filter_1 = require("./date.filter");
|
|
11
|
+
const date_range_1 = require("./date.range");
|
|
12
|
+
const date_week_1 = require("./date.week");
|
|
13
|
+
var DateScheduleDayCode;
|
|
14
|
+
(function (DateScheduleDayCode) {
|
|
15
|
+
/**
|
|
16
|
+
* Special no-op/unused code
|
|
17
|
+
*/
|
|
18
|
+
DateScheduleDayCode[DateScheduleDayCode["NONE"] = 0] = "NONE";
|
|
19
|
+
DateScheduleDayCode[DateScheduleDayCode["SUNDAY"] = 1] = "SUNDAY";
|
|
20
|
+
DateScheduleDayCode[DateScheduleDayCode["MONDAY"] = 2] = "MONDAY";
|
|
21
|
+
DateScheduleDayCode[DateScheduleDayCode["TUESDAY"] = 3] = "TUESDAY";
|
|
22
|
+
DateScheduleDayCode[DateScheduleDayCode["WEDNESDAY"] = 4] = "WEDNESDAY";
|
|
23
|
+
DateScheduleDayCode[DateScheduleDayCode["THURSDAY"] = 5] = "THURSDAY";
|
|
24
|
+
DateScheduleDayCode[DateScheduleDayCode["FRIDAY"] = 6] = "FRIDAY";
|
|
25
|
+
DateScheduleDayCode[DateScheduleDayCode["SATURDAY"] = 7] = "SATURDAY";
|
|
26
|
+
/**
|
|
27
|
+
* All weekdays (Mon-Fri)
|
|
28
|
+
*/
|
|
29
|
+
DateScheduleDayCode[DateScheduleDayCode["WEEKDAY"] = 8] = "WEEKDAY";
|
|
30
|
+
/**
|
|
31
|
+
* All weekend days (Sat/Sun)
|
|
32
|
+
*/
|
|
33
|
+
DateScheduleDayCode[DateScheduleDayCode["WEEKEND"] = 9] = "WEEKEND";
|
|
34
|
+
})(DateScheduleDayCode = exports.DateScheduleDayCode || (exports.DateScheduleDayCode = {}));
|
|
35
|
+
/**
|
|
36
|
+
* Creates an EnabledDays from the input.
|
|
37
|
+
*
|
|
38
|
+
* @param input
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
function enabledDaysFromDateScheduleDayCodes(input) {
|
|
42
|
+
const days = expandDateScheduleDayCodesToDayOfWeekSet(Array.from(new Set(input)));
|
|
43
|
+
return (0, util_1.enabledDaysFromDaysOfWeek)(days);
|
|
44
|
+
}
|
|
45
|
+
exports.enabledDaysFromDateScheduleDayCodes = enabledDaysFromDateScheduleDayCodes;
|
|
46
|
+
/**
|
|
47
|
+
* Creates an array of simplified DateScheduleDayCode[] values from the input.
|
|
48
|
+
*
|
|
49
|
+
* @param input
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
function dateScheduleDayCodesFromEnabledDays(input) {
|
|
53
|
+
const days = (0, util_1.daysOfWeekFromEnabledDays)(input);
|
|
54
|
+
const scheduleDayCodes = days.map((x) => x + 1);
|
|
55
|
+
return simplifyDateScheduleDayCodes(scheduleDayCodes);
|
|
56
|
+
}
|
|
57
|
+
exports.dateScheduleDayCodesFromEnabledDays = dateScheduleDayCodesFromEnabledDays;
|
|
58
|
+
exports.DATE_SCHEDULE_ENCODED_WEEK_REGEX = /^[0-9]{0,9}$/;
|
|
59
|
+
/**
|
|
60
|
+
* Returns true if the input is a DateScheduleEncodedWeek.
|
|
61
|
+
*
|
|
62
|
+
* @param input
|
|
63
|
+
* @returns
|
|
64
|
+
*/
|
|
65
|
+
function isDateScheduleEncodedWeek(input) {
|
|
66
|
+
return exports.DATE_SCHEDULE_ENCODED_WEEK_REGEX.test(input);
|
|
67
|
+
}
|
|
68
|
+
exports.isDateScheduleEncodedWeek = isDateScheduleEncodedWeek;
|
|
69
|
+
/**
|
|
70
|
+
* Creates a DateScheduleEncodedWeek from an array of DateScheduleDayCode values.
|
|
71
|
+
*
|
|
72
|
+
* The returned encoded week is simplified.
|
|
73
|
+
*
|
|
74
|
+
* @param codes
|
|
75
|
+
*/
|
|
76
|
+
function dateScheduleEncodedWeek(codes) {
|
|
77
|
+
const result = simplifyDateScheduleDayCodes(codes);
|
|
78
|
+
return result.join('');
|
|
79
|
+
}
|
|
80
|
+
exports.dateScheduleEncodedWeek = dateScheduleEncodedWeek;
|
|
81
|
+
/**
|
|
82
|
+
* Reduces/merges any day codes into more simplified day codes.
|
|
83
|
+
*
|
|
84
|
+
* For instance, if all days of the week are selected, they will be reduced to "8".
|
|
85
|
+
*
|
|
86
|
+
* @param codes
|
|
87
|
+
* @returns
|
|
88
|
+
*/
|
|
89
|
+
function simplifyDateScheduleDayCodes(codes) {
|
|
90
|
+
const codesSet = new Set(codes);
|
|
91
|
+
const result = [];
|
|
92
|
+
if (codesSet.size >= 2) {
|
|
93
|
+
let weekDays;
|
|
94
|
+
let hasAllWeekDays = codesSet.has(DateScheduleDayCode.WEEKDAY);
|
|
95
|
+
if (!hasAllWeekDays) {
|
|
96
|
+
weekDays = (0, util_1.range)(DateScheduleDayCode.MONDAY, DateScheduleDayCode.SATURDAY).filter((code) => codesSet.has(code));
|
|
97
|
+
hasAllWeekDays = weekDays.length === 5;
|
|
98
|
+
}
|
|
99
|
+
const hasSaturday = codesSet.has(DateScheduleDayCode.SATURDAY);
|
|
100
|
+
const hasSunday = codesSet.has(DateScheduleDayCode.SUNDAY);
|
|
101
|
+
const hasAllWeekendDays = codesSet.has(DateScheduleDayCode.WEEKEND) || (hasSaturday && hasSunday);
|
|
102
|
+
if (!hasAllWeekendDays && hasSunday) {
|
|
103
|
+
result.push(DateScheduleDayCode.SUNDAY);
|
|
104
|
+
}
|
|
105
|
+
if (!hasAllWeekDays) {
|
|
106
|
+
(0, util_1.mergeArrayIntoArray)(result, weekDays);
|
|
107
|
+
}
|
|
108
|
+
if (!hasAllWeekendDays && hasSaturday) {
|
|
109
|
+
result.push(DateScheduleDayCode.SATURDAY);
|
|
110
|
+
}
|
|
111
|
+
if (hasAllWeekDays) {
|
|
112
|
+
result.push(DateScheduleDayCode.WEEKDAY);
|
|
113
|
+
}
|
|
114
|
+
if (hasAllWeekendDays) {
|
|
115
|
+
result.push(DateScheduleDayCode.WEEKEND);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const only = (0, util_1.firstValueFromIterable)(codesSet);
|
|
120
|
+
if (only) {
|
|
121
|
+
result.push(only);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
exports.simplifyDateScheduleDayCodes = simplifyDateScheduleDayCodes;
|
|
127
|
+
/**
|
|
128
|
+
* Expands a DateScheduleEncodedWeek to an array of DateScheduleDayCode valeus.
|
|
129
|
+
*
|
|
130
|
+
* @param week
|
|
131
|
+
* @returns
|
|
132
|
+
*/
|
|
133
|
+
function expandDateScheduleEncodedWeek(week) {
|
|
134
|
+
return Array.from(new Set(week)).map((x) => Number(x));
|
|
135
|
+
}
|
|
136
|
+
exports.expandDateScheduleEncodedWeek = expandDateScheduleEncodedWeek;
|
|
137
|
+
/**
|
|
138
|
+
* Converts the input DateScheduleDayCodesInput to an array of DateScheduleDayCode values.
|
|
139
|
+
*
|
|
140
|
+
* @param input
|
|
141
|
+
* @returns
|
|
142
|
+
*/
|
|
143
|
+
function dateScheduleDayCodes(input) {
|
|
144
|
+
return typeof input === 'string' ? expandDateScheduleEncodedWeek(input) : input;
|
|
145
|
+
}
|
|
146
|
+
exports.dateScheduleDayCodes = dateScheduleDayCodes;
|
|
147
|
+
/**
|
|
148
|
+
* Expands the input DateScheduleDayCodesInput to a Set of DayOfWeek values.
|
|
149
|
+
*
|
|
150
|
+
* @param input
|
|
151
|
+
* @returns
|
|
152
|
+
*/
|
|
153
|
+
function expandDateScheduleDayCodesToDayOfWeekSet(input) {
|
|
154
|
+
const codes = dateScheduleDayCodes(input);
|
|
155
|
+
const days = new Set();
|
|
156
|
+
codes.forEach((code) => {
|
|
157
|
+
switch (code) {
|
|
158
|
+
case 0:
|
|
159
|
+
// do nothing
|
|
160
|
+
break;
|
|
161
|
+
case 8:
|
|
162
|
+
(0, util_1.addToSet)(days, [1, 2, 3, 4, 5]); // monday-friday
|
|
163
|
+
break;
|
|
164
|
+
case 9:
|
|
165
|
+
(0, util_1.addToSet)(days, [util_1.Day.SUNDAY, util_1.Day.SATURDAY]);
|
|
166
|
+
break;
|
|
167
|
+
default: // remove offset
|
|
168
|
+
days.add((code - 1));
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
return days;
|
|
173
|
+
}
|
|
174
|
+
exports.expandDateScheduleDayCodesToDayOfWeekSet = expandDateScheduleDayCodesToDayOfWeekSet;
|
|
175
|
+
/**
|
|
176
|
+
* Creates a DateScheduleDayCodeFactory using the optional input config.
|
|
177
|
+
*
|
|
178
|
+
* @param config
|
|
179
|
+
* @returns
|
|
180
|
+
*/
|
|
181
|
+
function dateScheduleDayCodeFactory(config) {
|
|
182
|
+
const normal = (0, date_week_1.yearWeekCodeDateTimezoneInstance)(config === null || config === void 0 ? void 0 : config.timezone);
|
|
183
|
+
return (date) => {
|
|
184
|
+
const target = normal.systemDateToTargetDate(date);
|
|
185
|
+
const day = (0, date_fns_1.getDay)(target);
|
|
186
|
+
return day + 1;
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
exports.dateScheduleDayCodeFactory = dateScheduleDayCodeFactory;
|
|
190
|
+
function isSameDateSchedule(a, b) {
|
|
191
|
+
if (a && b) {
|
|
192
|
+
return a.w === b.w && (0, util_1.iterablesAreSetEquivalent)(a.ex, b.ex) && (0, util_1.iterablesAreSetEquivalent)(a.d, b.d);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
return a == b;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
exports.isSameDateSchedule = isSameDateSchedule;
|
|
199
|
+
class DateSchedule {
|
|
200
|
+
}
|
|
201
|
+
tslib_1.__decorate([
|
|
202
|
+
(0, class_transformer_1.Expose)(),
|
|
203
|
+
(0, class_validator_1.IsString)(),
|
|
204
|
+
(0, class_validator_1.Matches)(exports.DATE_SCHEDULE_ENCODED_WEEK_REGEX),
|
|
205
|
+
tslib_1.__metadata("design:type", String)
|
|
206
|
+
], DateSchedule.prototype, "w", void 0);
|
|
207
|
+
tslib_1.__decorate([
|
|
208
|
+
(0, class_transformer_1.Expose)(),
|
|
209
|
+
(0, class_validator_1.IsOptional)(),
|
|
210
|
+
(0, class_validator_1.Min)(0, { each: true }),
|
|
211
|
+
(0, class_validator_1.IsArray)(),
|
|
212
|
+
tslib_1.__metadata("design:type", Array)
|
|
213
|
+
], DateSchedule.prototype, "d", void 0);
|
|
214
|
+
tslib_1.__decorate([
|
|
215
|
+
(0, class_transformer_1.Expose)(),
|
|
216
|
+
(0, class_validator_1.IsOptional)(),
|
|
217
|
+
(0, class_validator_1.Min)(0, { each: true }),
|
|
218
|
+
(0, class_validator_1.IsArray)(),
|
|
219
|
+
tslib_1.__metadata("design:type", Array)
|
|
220
|
+
], DateSchedule.prototype, "ex", void 0);
|
|
221
|
+
exports.DateSchedule = DateSchedule;
|
|
222
|
+
/**
|
|
223
|
+
* Returns true if both inputs have the same schedule and date range.
|
|
224
|
+
*
|
|
225
|
+
* @param a
|
|
226
|
+
* @param b
|
|
227
|
+
* @returns
|
|
228
|
+
*/
|
|
229
|
+
function isSameDateScheduleRange(a, b) {
|
|
230
|
+
if (a && b) {
|
|
231
|
+
return (0, date_range_1.isSameDateRange)(a, b) && isSameDateSchedule(a, b);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
return a == b;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
exports.isSameDateScheduleRange = isSameDateScheduleRange;
|
|
238
|
+
/**
|
|
239
|
+
* Creates a DateScheduleDateFilter.
|
|
240
|
+
*
|
|
241
|
+
* @param config
|
|
242
|
+
* @returns
|
|
243
|
+
*/
|
|
244
|
+
function dateScheduleDateFilter(config) {
|
|
245
|
+
const { w, start: firstDate = new Date(), end } = config;
|
|
246
|
+
const allowedDays = expandDateScheduleDayCodesToDayOfWeekSet(w);
|
|
247
|
+
const firstDateDay = (0, date_fns_1.getDay)(firstDate);
|
|
248
|
+
const dayForIndex = (0, date_block_1.dateBlockDayOfWeekFactory)(firstDateDay);
|
|
249
|
+
const dateIndexForDate = (0, date_block_1.dateTimingRelativeIndexFactory)({ start: firstDate });
|
|
250
|
+
const maxIndex = end != null ? dateIndexForDate(end) : Number.MAX_SAFE_INTEGER;
|
|
251
|
+
const includedIndexes = new Set(config.d);
|
|
252
|
+
const excludedIndexes = new Set(config.ex);
|
|
253
|
+
return (input) => {
|
|
254
|
+
let i;
|
|
255
|
+
let day;
|
|
256
|
+
if (typeof input === 'number') {
|
|
257
|
+
i = input;
|
|
258
|
+
day = dayForIndex(i);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
i = dateIndexForDate(input);
|
|
262
|
+
day = (0, util_1.dayOfWeek)(input);
|
|
263
|
+
}
|
|
264
|
+
return (i >= 0 && i < maxIndex && allowedDays.has(day) && !excludedIndexes.has(i)) || includedIndexes.has(i);
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
exports.dateScheduleDateFilter = dateScheduleDateFilter;
|
|
268
|
+
/**
|
|
269
|
+
* Creates a DateScheduleDateBlockTimingFilter.
|
|
270
|
+
*
|
|
271
|
+
* @param param0
|
|
272
|
+
* @returns
|
|
273
|
+
*/
|
|
274
|
+
function dateScheduleDateBlockTimingFilter({ timing, schedule }) {
|
|
275
|
+
const isAllowed = dateScheduleDateFilter({
|
|
276
|
+
w: schedule.w,
|
|
277
|
+
d: schedule.d,
|
|
278
|
+
ex: schedule.ex,
|
|
279
|
+
start: (0, date_block_1.getCurrentDateBlockTimingStartDate)(timing) // start date in the current system timezone.
|
|
280
|
+
});
|
|
281
|
+
return (block) => {
|
|
282
|
+
const i = block.i;
|
|
283
|
+
return isAllowed(i);
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
exports.dateScheduleDateBlockTimingFilter = dateScheduleDateBlockTimingFilter;
|
|
287
|
+
/**
|
|
288
|
+
* Creates a DateBlocksExpansionFactory using the input DateScheduleDateBlockTimingFilterConfig.
|
|
289
|
+
*
|
|
290
|
+
* @param config
|
|
291
|
+
* @returns
|
|
292
|
+
*/
|
|
293
|
+
function expandDateScheduleFactory(config) {
|
|
294
|
+
const { invertSchedule = false, now, onlyBlocksNotYetEnded, onlyBlocksNotYetStarted, maxDateBlocksToReturn } = config;
|
|
295
|
+
let durationSpanFilter;
|
|
296
|
+
if (onlyBlocksNotYetStarted) {
|
|
297
|
+
durationSpanFilter = (0, date_filter_1.dateBlockDurationSpanHasNotStartedFilterFunction)(now);
|
|
298
|
+
}
|
|
299
|
+
else if (onlyBlocksNotYetEnded) {
|
|
300
|
+
durationSpanFilter = (0, date_filter_1.dateBlockDurationSpanHasNotEndedFilterFunction)(now);
|
|
301
|
+
}
|
|
302
|
+
const expansionFactory = (0, date_block_1.dateBlocksExpansionFactory)({
|
|
303
|
+
timing: config.timing,
|
|
304
|
+
filter: (0, util_1.invertFilter)(dateScheduleDateBlockTimingFilter(config), invertSchedule),
|
|
305
|
+
durationSpanFilter,
|
|
306
|
+
maxDateBlocksToReturn
|
|
307
|
+
});
|
|
308
|
+
return expansionFactory;
|
|
309
|
+
}
|
|
310
|
+
exports.expandDateScheduleFactory = expandDateScheduleFactory;
|
|
311
|
+
/**
|
|
312
|
+
* Expands the input DateBlockTiming and DateSchedule into an array of DateBlockDurationSpan value that correspond with blocks in the event.
|
|
313
|
+
*
|
|
314
|
+
* Can optionally provide an IndexRange to specify a specific range to filter on. The range will be capped to the range of the timing.
|
|
315
|
+
*
|
|
316
|
+
* @param timing
|
|
317
|
+
* @param schedule
|
|
318
|
+
* @param inputRange
|
|
319
|
+
* @returns
|
|
320
|
+
*/
|
|
321
|
+
function expandDateSchedule(input) {
|
|
322
|
+
const { timing, inputRange } = input;
|
|
323
|
+
const expansionFactory = expandDateScheduleFactory(input);
|
|
324
|
+
const completeRange = (0, date_block_1.dateBlockIndexRange)(timing);
|
|
325
|
+
const range = inputRange ? { minIndex: Math.max(inputRange.minIndex, completeRange.minIndex), maxIndex: Math.min(inputRange.maxIndex, completeRange.maxIndex) } : completeRange;
|
|
326
|
+
const dateBlockForRange = {
|
|
327
|
+
i: range.minIndex,
|
|
328
|
+
to: range.maxIndex
|
|
329
|
+
}; // Index is considered to be used as inclusive already, so no need to use dateBlockIndexRangeToDateBlockRange
|
|
330
|
+
return expansionFactory([dateBlockForRange]);
|
|
331
|
+
}
|
|
332
|
+
exports.expandDateSchedule = expandDateSchedule;
|
|
333
|
+
//# sourceMappingURL=date.schedule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.schedule.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.schedule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { Minutes } from '@dereekb/util';
|
|
1
|
+
import { Minutes, DecisionFunction } from '@dereekb/util';
|
|
2
2
|
import { StepRoundDateTimeDown } from './date.round';
|
|
3
|
+
import { DateScheduleDateFilterConfig } from './date.schedule';
|
|
3
4
|
import { LimitDateTimeConfig } from './date.time.limit';
|
|
4
5
|
export interface DateTimeMinuteConfig extends LimitDateTimeConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Default date to consider.
|
|
8
|
+
*/
|
|
5
9
|
date?: Date;
|
|
6
10
|
/**
|
|
7
11
|
* Number of minutes each "step" is.
|
|
@@ -20,6 +24,10 @@ export interface DateTimeMinuteConfig extends LimitDateTimeConfig {
|
|
|
20
24
|
*/
|
|
21
25
|
capToMaxLimit?: boolean;
|
|
22
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Schedule to filter the days to.
|
|
29
|
+
*/
|
|
30
|
+
schedule?: DateScheduleDateFilterConfig;
|
|
23
31
|
}
|
|
24
32
|
/**
|
|
25
33
|
* Current state of the date in the instance.
|
|
@@ -45,6 +53,10 @@ export interface DateTimeMinuteDateStatus {
|
|
|
45
53
|
* If the date is in the past.
|
|
46
54
|
*/
|
|
47
55
|
inPast: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* If the date is on a schedule day.
|
|
58
|
+
*/
|
|
59
|
+
isInSchedule: boolean;
|
|
48
60
|
}
|
|
49
61
|
export interface RoundDateTimeMinute extends StepRoundDateTimeDown {
|
|
50
62
|
roundToBound?: boolean;
|
|
@@ -52,18 +64,33 @@ export interface RoundDateTimeMinute extends StepRoundDateTimeDown {
|
|
|
52
64
|
/**
|
|
53
65
|
* Instance for working with a single date/time.
|
|
54
66
|
*
|
|
55
|
-
* Can step the date forward/backwards, and validate
|
|
67
|
+
* Can step the date forward/backwards, and validate.
|
|
56
68
|
*/
|
|
57
69
|
export declare class DateTimeMinuteInstance {
|
|
58
70
|
readonly config: DateTimeMinuteConfig;
|
|
59
71
|
private _date;
|
|
60
72
|
private _step;
|
|
61
73
|
private _limit;
|
|
62
|
-
|
|
74
|
+
private _dateFilter;
|
|
75
|
+
constructor(config?: DateTimeMinuteConfig, dateOverride?: Date | null);
|
|
63
76
|
get date(): Date;
|
|
64
77
|
set date(date: Date);
|
|
65
78
|
get step(): Minutes;
|
|
66
79
|
set step(step: Minutes);
|
|
80
|
+
/**
|
|
81
|
+
* Returns true if the input is within the range and in the schedule.
|
|
82
|
+
*
|
|
83
|
+
* @param date
|
|
84
|
+
* @returns
|
|
85
|
+
*/
|
|
86
|
+
isInValidRange(date?: Date): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Returns true if the status is completely valid.
|
|
89
|
+
*
|
|
90
|
+
* @param date
|
|
91
|
+
* @returns
|
|
92
|
+
*/
|
|
93
|
+
isValid(date?: Date): boolean;
|
|
67
94
|
getStatus(date?: Date): DateTimeMinuteDateStatus;
|
|
68
95
|
round(round: RoundDateTimeMinute): Date;
|
|
69
96
|
limit(date?: Date): Date;
|
|
@@ -71,3 +98,10 @@ export declare class DateTimeMinuteInstance {
|
|
|
71
98
|
protected _takeMinimumBoundedDate(date?: Date): Date;
|
|
72
99
|
protected _takeMaximumBoundedDate(date?: Date): Date;
|
|
73
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Creates a DecisionFunction for the input Date value.
|
|
103
|
+
*
|
|
104
|
+
* @param config
|
|
105
|
+
* @returns
|
|
106
|
+
*/
|
|
107
|
+
export declare function dateTimeMinuteDecisionFunction(config: DateTimeMinuteConfig): DecisionFunction<Date>;
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DateTimeMinuteInstance = void 0;
|
|
3
|
+
exports.dateTimeMinuteDecisionFunction = exports.DateTimeMinuteInstance = void 0;
|
|
4
4
|
const util_1 = require("@dereekb/util");
|
|
5
5
|
const date_fns_1 = require("date-fns");
|
|
6
|
+
const date_1 = require("./date");
|
|
6
7
|
const date_round_1 = require("./date.round");
|
|
8
|
+
const date_schedule_1 = require("./date.schedule");
|
|
7
9
|
const date_time_limit_1 = require("./date.time.limit");
|
|
8
10
|
/**
|
|
9
11
|
* Instance for working with a single date/time.
|
|
10
12
|
*
|
|
11
|
-
* Can step the date forward/backwards, and validate
|
|
13
|
+
* Can step the date forward/backwards, and validate.
|
|
12
14
|
*/
|
|
13
15
|
class DateTimeMinuteInstance {
|
|
14
|
-
constructor(config = {}) {
|
|
15
|
-
var _a
|
|
16
|
+
constructor(config = {}, dateOverride) {
|
|
17
|
+
var _a;
|
|
16
18
|
this.config = config;
|
|
17
|
-
this._date = (
|
|
18
|
-
this._step = (
|
|
19
|
+
this._date = (dateOverride == undefined ? config.date : dateOverride) || new Date();
|
|
20
|
+
this._step = (_a = config.step) !== null && _a !== void 0 ? _a : 1;
|
|
19
21
|
this._limit = new date_time_limit_1.LimitDateTimeInstance(config);
|
|
22
|
+
this._dateFilter = config.schedule ? (0, date_schedule_1.dateScheduleDateFilter)(config.schedule) : () => true;
|
|
20
23
|
}
|
|
21
24
|
get date() {
|
|
22
25
|
return this._date;
|
|
@@ -30,15 +33,36 @@ class DateTimeMinuteInstance {
|
|
|
30
33
|
set step(step) {
|
|
31
34
|
this._step = step;
|
|
32
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns true if the input is within the range and in the schedule.
|
|
38
|
+
*
|
|
39
|
+
* @param date
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
isInValidRange(date) {
|
|
43
|
+
const result = this.getStatus(date);
|
|
44
|
+
return result.isAfterMinimum && result.isBeforeMaximum && result.isInSchedule;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Returns true if the status is completely valid.
|
|
48
|
+
*
|
|
49
|
+
* @param date
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
isValid(date) {
|
|
53
|
+
const result = this.getStatus(date);
|
|
54
|
+
return result.isAfterMinimum && result.isBeforeMaximum && result.inFuture && result.inFutureMinutes && result.inPast && result.isInSchedule;
|
|
55
|
+
}
|
|
33
56
|
getStatus(date = this.date) {
|
|
34
57
|
let isBeforeMaximum = true;
|
|
35
58
|
let isAfterMinimum = true;
|
|
36
59
|
let inFuture = true;
|
|
37
60
|
let inFutureMinutes = true;
|
|
38
61
|
let inPast = true;
|
|
62
|
+
let isInSchedule = true;
|
|
39
63
|
const { limits = {} } = this._limit.config;
|
|
40
64
|
const { minimumMinutesIntoFuture } = this._limit;
|
|
41
|
-
const now = (0,
|
|
65
|
+
const now = (0, date_1.roundDownToMinute)(new Date());
|
|
42
66
|
// Min/Future
|
|
43
67
|
if (limits.min) {
|
|
44
68
|
isAfterMinimum = (0, date_fns_1.isAfter)(date, limits.min);
|
|
@@ -57,12 +81,15 @@ class DateTimeMinuteInstance {
|
|
|
57
81
|
if (limits.isPast) {
|
|
58
82
|
inPast = (0, date_fns_1.isBefore)(date, now);
|
|
59
83
|
}
|
|
84
|
+
// Schedule
|
|
85
|
+
isInSchedule = this._dateFilter(date);
|
|
60
86
|
return {
|
|
61
87
|
isBeforeMaximum,
|
|
62
88
|
isAfterMinimum,
|
|
63
89
|
inFuture,
|
|
64
90
|
inFutureMinutes,
|
|
65
|
-
inPast
|
|
91
|
+
inPast,
|
|
92
|
+
isInSchedule
|
|
66
93
|
};
|
|
67
94
|
}
|
|
68
95
|
round(round) {
|
|
@@ -101,4 +128,15 @@ class DateTimeMinuteInstance {
|
|
|
101
128
|
}
|
|
102
129
|
}
|
|
103
130
|
exports.DateTimeMinuteInstance = DateTimeMinuteInstance;
|
|
131
|
+
/**
|
|
132
|
+
* Creates a DecisionFunction for the input Date value.
|
|
133
|
+
*
|
|
134
|
+
* @param config
|
|
135
|
+
* @returns
|
|
136
|
+
*/
|
|
137
|
+
function dateTimeMinuteDecisionFunction(config) {
|
|
138
|
+
const instance = new DateTimeMinuteInstance(config, null);
|
|
139
|
+
return (date) => instance.isValid(date);
|
|
140
|
+
}
|
|
141
|
+
exports.dateTimeMinuteDecisionFunction = dateTimeMinuteDecisionFunction;
|
|
104
142
|
//# sourceMappingURL=date.time.minute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.time.minute.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.time.minute.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"date.time.minute.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/date.time.minute.ts"],"names":[],"mappings":"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"}
|
package/src/lib/date/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from './date.format';
|
|
|
7
7
|
export * from './date.hashset';
|
|
8
8
|
export * from './date.range';
|
|
9
9
|
export * from './date.round';
|
|
10
|
+
export * from './date.schedule';
|
|
10
11
|
export * from './date.sort';
|
|
11
12
|
export * from './date.time.limit';
|
|
12
13
|
export * from './date.time.minute';
|
package/src/lib/date/index.js
CHANGED
|
@@ -10,6 +10,7 @@ tslib_1.__exportStar(require("./date.format"), exports);
|
|
|
10
10
|
tslib_1.__exportStar(require("./date.hashset"), exports);
|
|
11
11
|
tslib_1.__exportStar(require("./date.range"), exports);
|
|
12
12
|
tslib_1.__exportStar(require("./date.round"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./date.schedule"), exports);
|
|
13
14
|
tslib_1.__exportStar(require("./date.sort"), exports);
|
|
14
15
|
tslib_1.__exportStar(require("./date.time.limit"), exports);
|
|
15
16
|
tslib_1.__exportStar(require("./date.time.minute"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,4DAAkC;AAClC,0DAAgC;AAChC,0DAAgC;AAChC,wDAA8B;AAC9B,wDAA8B;AAC9B,yDAA+B;AAC/B,uDAA6B;AAC7B,uDAA6B;AAC7B,sDAA4B;AAC5B,4DAAkC;AAClC,6DAAmC;AACnC,sDAA4B;AAC5B,0DAAgC;AAChC,iDAAuB;AACvB,sDAA4B;AAC5B,sDAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/date/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,4DAAkC;AAClC,0DAAgC;AAChC,0DAAgC;AAChC,wDAA8B;AAC9B,wDAA8B;AAC9B,yDAA+B;AAC/B,uDAA6B;AAC7B,uDAA6B;AAC7B,0DAAgC;AAChC,sDAA4B;AAC5B,4DAAkC;AAClC,6DAAmC;AACnC,sDAA4B;AAC5B,0DAAgC;AAChC,iDAAuB;AACvB,sDAA4B;AAC5B,sDAA4B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CalendarDate, DateRange } from '../date';
|
|
2
2
|
import { DateRRuleInstance } from './date.rrule';
|
|
3
3
|
import { RRuleLines, RRuleStringLineSet } from './date.rrule.parse';
|
|
4
|
-
import { TimezoneString } from '@dereekb/util';
|
|
4
|
+
import { TimezoneString as UtilTimezoneString } from '@dereekb/util';
|
|
5
|
+
export declare type TimezoneString = UtilTimezoneString;
|
|
5
6
|
export interface RecurrenceModel {
|
|
6
7
|
recur?: ModelRecurrenceInfo;
|
|
7
8
|
recurs: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.recurrence.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/date.recurrence.ts"],"names":[],"mappings":";;;;AAAA,yDAAoD;AAEpD,6CAAmE;AACnE,yDAA2F;
|
|
1
|
+
{"version":3,"file":"date.recurrence.js","sourceRoot":"","sources":["../../../../../../packages/date/src/lib/rrule/date.recurrence.ts"],"names":[],"mappings":";;;;AAAA,yDAAoD;AAEpD,6CAAmE;AACnE,yDAA2F;AAU3F;;GAEG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAiC9B,YAAY,QAA6B;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClC,CAAC;CACF,CAAA;AAlCC;IAAC,IAAA,0BAAM,GAAE;;qDACiB;AAK1B;IAAC,IAAA,0BAAM,GAAE;;kDACS;AAKlB;IAAC,IAAA,0BAAM,GAAE;sCACF,IAAI;kDAAC;AAKZ;IAAC,IAAA,0BAAM,GAAE;sCACJ,IAAI;gDAAC;AAKV;IAAC,IAAA,0BAAM,GAAE;;oDACS;AA/BP,mBAAmB;IAD/B,IAAA,2BAAO,GAAE;6CAkCc,mBAAmB;GAjC9B,mBAAmB,CAwC/B;AAxCY,kDAAmB;AA2DhC;;GAEG;AACH,MAAa,0BAA0B;IACrC;;OAEG;IACH,MAAM,CAAC,+CAA+C,CAAC,MAA4B;;QACjF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAEzC,MAAM,SAAS,GAAG,6BAAgB,CAAC,YAAY,CAAC;YAC9C,kBAAkB,EAAE,KAAK;YACzB,OAAO,EAAE;gBACP,IAAI;aACL;SACF,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC;QACjD,MAAM,cAAc,GAAe,wCAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE7E,MAAM,cAAc,GAAG;YACrB,QAAQ;YACR,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,MAAA,KAAK,CAAC,qBAAqB,mCAAI,KAAK,CAAC,GAAG;YAC7C,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;QAEF,OAAO,IAAI,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,IAAyB,EAAE,IAAkB;QACxE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEjC,OAAO,6BAAgB,CAAC,YAAY,CAAC;YACnC,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE;gBACP,IAAI;gBACJ,QAAQ;aACT;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAvCD,gEAuCC"}
|