@dereekb/date 9.17.3 → 9.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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":";;;;AAAA,wCAAsS;AACtS,yDAA2C;AAC3C,qDAA8E;AAC9E,uCAAkC;AAClC,6CAA6R;AAC7R,+CAAiI;AACjI,6CAA0D;AAC1D,2CAAmF;AAEnF,IAAY,mBAoBX;AApBD,WAAY,mBAAmB;IAC7B;;OAEG;IACH,6DAAQ,CAAA;IACR,iEAAU,CAAA;IACV,iEAAU,CAAA;IACV,mEAAW,CAAA;IACX,uEAAa,CAAA;IACb,qEAAY,CAAA;IACZ,iEAAU,CAAA;IACV,qEAAY,CAAA;IACZ;;OAEG;IACH,mEAAW,CAAA;IACX;;OAEG;IACH,mEAAW,CAAA;AACb,CAAC,EApBW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAoB9B;AAED;;;;;GAKG;AACH,SAAgB,mCAAmC,CAAC,KAA2C;IAC7F,MAAM,IAAI,GAAG,wCAAwC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,IAAA,gCAAyB,EAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAHD,kFAGC;AAED;;;;;GAKG;AACH,SAAgB,mCAAmC,CAAC,KAAyB;IAC3E,MAAM,IAAI,GAAG,IAAA,gCAAyB,EAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,OAAO,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;AACxD,CAAC;AAJD,kFAIC;AAOY,QAAA,gCAAgC,GAAG,cAAc,CAAC;AAE/D;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,KAAa;IACrD,OAAO,wCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAFD,8DAEC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,KAAoC;IAC1E,MAAM,MAAM,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAA4B,CAAC;AACpD,CAAC;AAHD,0DAGC;AAED;;;;;;;GAOG;AACH,SAAgB,4BAA4B,CAAC,KAAoC;IAC/E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,MAAM,GAA0B,EAAE,CAAC;IAEzC,IAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE;QACtB,IAAI,QAAsC,CAAC;QAC3C,IAAI,cAAc,GAAY,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAExE,IAAI,CAAC,cAAc,EAAE;YACnB,QAAQ,GAAG,IAAA,YAAK,EAAC,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAChH,cAAc,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;SACxC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAY,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;QAE3G,IAAI,CAAC,iBAAiB,IAAI,SAAS,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;SACzC;QAED,IAAI,CAAC,cAAc,EAAE;YACnB,IAAA,0BAAmB,EAAC,MAAM,EAAE,QAAiC,CAAC,CAAC;SAChE;QAED,IAAI,CAAC,iBAAiB,IAAI,WAAW,EAAE;YACrC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;SAC3C;QAED,IAAI,cAAc,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SAC1C;QAED,IAAI,iBAAiB,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SAC1C;KACF;SAAM;QACL,MAAM,IAAI,GAAG,IAAA,6BAAsB,EAAC,QAAQ,CAAC,CAAC;QAE9C,IAAI,IAAI,EAAE;YACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA7CD,oEA6CC;AAED;;;;;GAKG;AACH,SAAgB,6BAA6B,CAAC,IAA6B;IACzE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAA0B,CAAC;AAClF,CAAC;AAFD,sEAEC;AAID;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,KAAgC;IACnE,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClF,CAAC;AAFD,oDAEC;AAED;;;;;GAKG;AACH,SAAgB,wCAAwC,CAAC,KAAgC;IACvF,MAAM,KAAK,GAA0B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAC;IAElC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,QAAQ,IAAI,EAAE;YACZ,KAAK,CAAC;gBACJ,aAAa;gBACb,MAAM;YACR,KAAK,CAAC;gBACJ,IAAA,eAAQ,EAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;gBACjD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAA,eAAQ,EAAC,IAAI,EAAE,CAAC,UAAG,CAAC,MAAM,EAAE,UAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3C,MAAM;YACR,SAAS,gBAAgB;gBACvB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAc,CAAC,CAAC;gBAClC,MAAM;SACT;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAtBD,4FAsBC;AASD;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,MAAkC;IAC3E,MAAM,MAAM,GAAG,IAAA,4CAAgC,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,CAAC;IAClE,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,GAAG,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAPD,gEAOC;AAqBD,SAAgB,kBAAkB,CAAC,CAAsB,EAAE,CAAsB;IAC/E,IAAI,CAAC,IAAI,CAAC,EAAE;QACV,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAA,gCAAyB,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,IAAA,gCAAyB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACpG;SAAM;QACL,OAAO,CAAC,IAAI,CAAC,CAAC;KACf;AACH,CAAC;AAND,gDAMC;AAED,MAAa,YAAY;CAiBxB;AAhBC;IAAC,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;IACV,IAAA,yBAAO,EAAC,wCAAgC,CAAC;;uCACd;AAE5B;IAAC,IAAA,0BAAM,GAAE;IACR,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAG,EAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtB,IAAA,yBAAO,GAAE;;uCACW;AAErB;IAAC,IAAA,0BAAM,GAAE;IACR,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAG,EAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtB,IAAA,yBAAO,GAAE;;wCACY;AAhBxB,oCAiBC;AAOD;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,CAA2B,EAAE,CAA2B;IAC9F,IAAI,CAAC,IAAI,CAAC,EAAE;QACV,OAAO,IAAA,4BAAe,EAAC,CAAC,EAAE,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1D;SAAM;QACL,OAAO,CAAC,IAAI,CAAC,CAAC;KACf;AACH,CAAC;AAND,0DAMC;AAkBD;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,MAAoC;IACzE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACzD,MAAM,WAAW,GAAmB,wCAAwC,CAAC,CAAC,CAAC,CAAC;IAEhF,MAAM,YAAY,GAAG,IAAA,iBAAM,EAAC,SAAS,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,IAAA,sCAAyB,EAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,IAAA,2CAA8B,EAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC/E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE3C,OAAO,CAAC,KAAkC,EAAE,EAAE;QAC5C,IAAI,CAAiB,CAAC;QACtB,IAAI,GAAc,CAAC;QAEnB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,CAAC,GAAG,KAAK,CAAC;YACV,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;SACtB;aAAM;YACL,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC5B,GAAG,GAAG,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC;SACxB;QAED,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/G,CAAC,CAAC;AACJ,CAAC;AAzBD,wDAyBC;AAyCD;;;;;GAKG;AACH,SAAgB,iCAAiC,CAAkC,EAAE,MAAM,EAAE,QAAQ,EAA2C;IAC9I,MAAM,SAAS,GAAG,sBAAsB,CAAC;QACvC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,KAAK,EAAE,IAAA,+CAAkC,EAAC,MAAM,CAAC,CAAC,6CAA6C;KAChG,CAAC,CAAC;IAEH,OAAO,CAAC,KAAkB,EAAE,EAAE;QAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAClB,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAZD,8EAYC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAkC,MAA+C;IACxH,MAAM,EAAE,cAAc,GAAG,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAC;IACtH,IAAI,kBAAgF,CAAC;IAErF,IAAI,uBAAuB,EAAE;QAC3B,kBAAkB,GAAG,IAAA,8DAAgD,EAAC,GAAG,CAAC,CAAC;KAC5E;SAAM,IAAI,qBAAqB,EAAE;QAChC,kBAAkB,GAAG,IAAA,4DAA8C,EAAC,GAAG,CAAC,CAAC;KAC1E;IAED,MAAM,gBAAgB,GAAG,IAAA,uCAA0B,EAAI;QACrD,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,IAAA,mBAAY,EAAC,iCAAiC,CAAC,MAAM,CAAmB,EAAE,cAAc,CAAC;QACjG,kBAAkB;QAClB,qBAAqB;KACtB,CAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAlBD,8DAkBC;AAMD;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,IAAA,gCAAmB,EAAC,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAChL,MAAM,iBAAiB,GAAmB;QACxC,CAAC,EAAE,KAAK,CAAC,QAAQ;QACjB,EAAE,EAAE,KAAK,CAAC,QAAQ;KACnB,CAAC,CAAC,6GAA6G;IAEhH,OAAO,gBAAgB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC/C,CAAC;AAXD,gDAWC"}
@@ -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
- constructor(config?: DateTimeMinuteConfig);
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, _b;
16
+ constructor(config = {}, dateOverride) {
17
+ var _a;
16
18
  this.config = config;
17
- this._date = (_a = config.date) !== null && _a !== void 0 ? _a : new Date();
18
- this._step = (_b = config.step) !== null && _b !== void 0 ? _b : 1;
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, date_fns_1.set)(new Date(), { seconds: 0, milliseconds: 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":"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"}
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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"}
@@ -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';
@@ -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;AAQ3F;;GAEG;AAEH,IAAa,mBAAmB,GAAhC,MAAa,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;AAjCC;IADC,IAAA,0BAAM,GAAE;;qDACiB;AAM1B;IADC,IAAA,0BAAM,GAAE;;kDACS;AAMlB;IADC,IAAA,0BAAM,GAAE;sCACF,IAAI;kDAAC;AAMZ;IADC,IAAA,0BAAM,GAAE;sCACJ,IAAI;gDAAC;AAMV;IADC,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"}
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"}