@pisell/pisellos 2.2.58 → 2.2.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/model/strategy/adapter/index.d.ts +2 -0
  2. package/dist/model/strategy/adapter/index.js +2 -1
  3. package/dist/model/strategy/adapter/promotion/evaluator.d.ts +213 -0
  4. package/dist/model/strategy/adapter/promotion/evaluator.js +1206 -0
  5. package/dist/model/strategy/adapter/promotion/index.d.ts +206 -0
  6. package/dist/model/strategy/adapter/promotion/index.js +0 -0
  7. package/dist/model/strategy/adapter/promotion/type.d.ts +447 -0
  8. package/dist/model/strategy/adapter/promotion/type.js +209 -0
  9. package/dist/model/strategy/adapter/walletPass/evaluator.js +4 -1
  10. package/dist/model/strategy/engine.d.ts +106 -0
  11. package/dist/model/strategy/engine.js +611 -0
  12. package/dist/model/strategy/index.d.ts +2 -93
  13. package/dist/model/strategy/index.js +6 -549
  14. package/dist/modules/BaseModule.d.ts +4 -0
  15. package/dist/modules/BaseModule.js +5 -0
  16. package/dist/modules/Payment/index.js +5 -5
  17. package/dist/modules/Rules/index.d.ts +1 -0
  18. package/dist/modules/Rules/index.js +30 -22
  19. package/dist/modules/Schedule/index.d.ts +2 -2
  20. package/dist/modules/Schedule/index.js +0 -2
  21. package/dist/solution/BookingByStep/index.js +1 -0
  22. package/dist/solution/Checkout/index.js +38 -40
  23. package/lib/model/strategy/adapter/index.d.ts +2 -0
  24. package/lib/model/strategy/adapter/index.js +5 -0
  25. package/lib/model/strategy/adapter/promotion/evaluator.d.ts +213 -0
  26. package/lib/model/strategy/adapter/promotion/evaluator.js +844 -0
  27. package/lib/model/strategy/adapter/promotion/index.d.ts +206 -0
  28. package/lib/model/strategy/adapter/promotion/index.js +0 -0
  29. package/lib/model/strategy/adapter/promotion/type.d.ts +447 -0
  30. package/lib/model/strategy/adapter/promotion/type.js +51 -0
  31. package/lib/model/strategy/adapter/walletPass/evaluator.js +2 -1
  32. package/lib/model/strategy/engine.d.ts +106 -0
  33. package/lib/model/strategy/engine.js +450 -0
  34. package/lib/model/strategy/index.d.ts +2 -93
  35. package/lib/model/strategy/index.js +6 -381
  36. package/lib/modules/BaseModule.d.ts +4 -0
  37. package/lib/modules/BaseModule.js +3 -0
  38. package/lib/modules/Payment/index.js +5 -4
  39. package/lib/modules/Rules/index.d.ts +1 -0
  40. package/lib/modules/Rules/index.js +25 -23
  41. package/lib/modules/Schedule/index.d.ts +2 -2
  42. package/lib/modules/Schedule/index.js +0 -2
  43. package/lib/solution/BookingByStep/index.js +1 -0
  44. package/lib/solution/Checkout/index.js +4 -5
  45. package/package.json +1 -1
  46. package/dist/modules/Schedule/getDateIsInSchedule.d.ts +0 -32
  47. package/dist/modules/Schedule/getDateIsInSchedule.js +0 -747
  48. package/lib/modules/Schedule/getDateIsInSchedule.d.ts +0 -32
  49. package/lib/modules/Schedule/getDateIsInSchedule.js +0 -451
@@ -1,32 +0,0 @@
1
- import dayjs from "dayjs";
2
- import { ScheduleItem } from "./types";
3
- export declare const getDateIsInSchedule: (dateTime: string, scheduleList: ScheduleItem[]) => boolean;
4
- export type ScheduleTimeSlot = {
5
- /** 开始时间 HH:mm */
6
- start_time: string;
7
- /** 结束时间 HH:mm */
8
- end_time: string;
9
- /** 开始日期时间 YYYY-MM-DD HH:mm:ss */
10
- start_at: dayjs.Dayjs;
11
- /** 结束日期时间 YYYY-MM-DD HH:mm:ss */
12
- end_at: dayjs.Dayjs;
13
- };
14
- /**
15
- * 获取当前日期日程时间点
16
- * @param date 日期 YYYY-MM-DD
17
- * @param scheduleList 日程列表
18
- * @returns 当前日期日程时间点 结构,数组 [{
19
- *
20
- * // HH:mm
21
- * end_time: string,
22
- * // HH:mm
23
- * start_time: string,
24
- * // 日期时间
25
- * // YYYY-MM-DD HH:mm:ss
26
- * end_at: Dayjs,
27
- * // YYYY-MM-DD HH:mm:ss
28
- * start_at: Dayjs,
29
- *
30
- * }]
31
- */
32
- export declare const getScheduleStartEndTimePoints: (date: string, scheduleList: ScheduleItem[]) => ScheduleTimeSlot[];
@@ -1,451 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
-
29
- // src/modules/Schedule/getDateIsInSchedule.ts
30
- var getDateIsInSchedule_exports = {};
31
- __export(getDateIsInSchedule_exports, {
32
- getDateIsInSchedule: () => getDateIsInSchedule,
33
- getScheduleStartEndTimePoints: () => getScheduleStartEndTimePoints
34
- });
35
- module.exports = __toCommonJS(getDateIsInSchedule_exports);
36
- var import_dayjs = __toESM(require("dayjs"));
37
- var getDateIsInSchedule = (dateTime, scheduleList) => {
38
- if (!dateTime || !scheduleList || scheduleList.length === 0) {
39
- return false;
40
- }
41
- const targetDate = (0, import_dayjs.default)(dateTime);
42
- if (!targetDate.isValid()) {
43
- return false;
44
- }
45
- for (const schedule of scheduleList) {
46
- if (isTimeInScheduleItem(dateTime, schedule)) {
47
- return true;
48
- }
49
- }
50
- return false;
51
- };
52
- var isTimeInScheduleItem = (dateTime, schedule) => {
53
- const targetDate = (0, import_dayjs.default)(dateTime);
54
- const targetDateString = dateTime.split(" ")[0];
55
- const targetTimeString = dateTime.split(" ")[1] || "00:00:00";
56
- switch (schedule.type) {
57
- case "standard":
58
- return isInStandardSchedule(targetDate, targetDateString, targetTimeString, schedule);
59
- case "time-slots":
60
- return isInTimeSlotsSchedule(targetDate, targetDateString, targetTimeString, schedule);
61
- case "designation":
62
- return isInDesignationSchedule(targetDate, targetDateString, targetTimeString, schedule);
63
- default:
64
- return false;
65
- }
66
- };
67
- var isInStandardSchedule = (targetDate, targetDateString, targetTimeString, schedule) => {
68
- if (!schedule.start_time || !schedule.end_time) {
69
- return false;
70
- }
71
- const startDate = (0, import_dayjs.default)(schedule.start_time);
72
- const endDate = (0, import_dayjs.default)(schedule.end_time);
73
- const isInBasicRange = targetDate.isSameOrAfter(startDate) && targetDate.isSameOrBefore(endDate);
74
- if (schedule.repeat_type === "none") {
75
- return isInBasicRange;
76
- }
77
- return isInRepeatingSchedule(targetDate, targetDateString, targetTimeString, schedule, startDate, endDate);
78
- };
79
- var isInTimeSlotsSchedule = (targetDate, targetDateString, targetTimeString, schedule) => {
80
- if (!schedule.start_time) {
81
- return false;
82
- }
83
- const scheduleDate = schedule.start_time.split(" ")[0];
84
- if (targetDateString !== scheduleDate) {
85
- return false;
86
- }
87
- for (const timeSlot of schedule.time_slot) {
88
- const slotStart = `${scheduleDate} ${timeSlot.start_time}:00`;
89
- const slotEnd = `${scheduleDate} ${timeSlot.end_time}:00`;
90
- const slotStartDate = (0, import_dayjs.default)(slotStart);
91
- const slotEndDate = (0, import_dayjs.default)(slotEnd);
92
- if (targetDate.isSameOrAfter(slotStartDate) && targetDate.isSameOrBefore(slotEndDate)) {
93
- return true;
94
- }
95
- }
96
- return false;
97
- };
98
- var isInDesignationSchedule = (targetDate, targetDateString, targetTimeString, schedule) => {
99
- if (!schedule.designation) {
100
- return false;
101
- }
102
- for (const designation of schedule.designation) {
103
- const startDateTime = `${designation.start_date} ${designation.start_time}:00`;
104
- const endDateTime = `${designation.end_date} ${designation.end_time}:00`;
105
- const startDate = (0, import_dayjs.default)(startDateTime);
106
- const endDate = (0, import_dayjs.default)(endDateTime);
107
- if (targetDate.isSameOrAfter(startDate) && targetDate.isSameOrBefore(endDate)) {
108
- return true;
109
- }
110
- }
111
- return false;
112
- };
113
- var isInRepeatingSchedule = (targetDate, targetDateString, targetTimeString, schedule, startDate, endDate) => {
114
- if (!schedule.repeat_rule) {
115
- return false;
116
- }
117
- const { repeat_rule, repeat_type } = schedule;
118
- const targetDateOnly = (0, import_dayjs.default)(targetDateString);
119
- if (repeat_rule.included_date && repeat_rule.included_date.length > 0) {
120
- for (const includedDate of repeat_rule.included_date) {
121
- const includeStartDate = (0, import_dayjs.default)(includedDate.start);
122
- const includeEndDate = (0, import_dayjs.default)(includedDate.end);
123
- if (targetDateOnly.isSameOrAfter(includeStartDate, "day") && targetDateOnly.isSameOrBefore(includeEndDate, "day")) {
124
- return true;
125
- }
126
- }
127
- }
128
- for (const excludedDate of repeat_rule.excluded_date) {
129
- const excludeStartDate = (0, import_dayjs.default)(excludedDate.start);
130
- const excludeEndDate = (0, import_dayjs.default)(excludedDate.end);
131
- if (targetDateOnly.isSameOrAfter(excludeStartDate, "day") && targetDateOnly.isSameOrBefore(excludeEndDate, "day")) {
132
- return false;
133
- }
134
- }
135
- if (repeat_rule.end.type === "date" && repeat_rule.end.end_date) {
136
- const ruleEndDate = (0, import_dayjs.default)(repeat_rule.end.end_date);
137
- if (targetDate.isAfter(ruleEndDate)) {
138
- return false;
139
- }
140
- }
141
- switch (repeat_type) {
142
- case "daily":
143
- return isInDailyRepeat(targetDate, startDate, endDate, repeat_rule);
144
- case "weekly":
145
- return isInWeeklyRepeat(targetDate, startDate, endDate, repeat_rule);
146
- default:
147
- return false;
148
- }
149
- };
150
- var isInDailyRepeat = (targetDate, startDate, endDate, repeatRule) => {
151
- const daysDiff = targetDate.diff(startDate, "day");
152
- if (daysDiff < 0) {
153
- return false;
154
- }
155
- if (daysDiff % repeatRule.frequency !== 0) {
156
- return false;
157
- }
158
- const targetTimeOfDay = targetDate.hour() * 3600 + targetDate.minute() * 60 + targetDate.second();
159
- const startTimeOfDay = startDate.hour() * 3600 + startDate.minute() * 60 + startDate.second();
160
- const endTimeOfDay = endDate.hour() * 3600 + endDate.minute() * 60 + endDate.second();
161
- return targetTimeOfDay >= startTimeOfDay && targetTimeOfDay <= endTimeOfDay;
162
- };
163
- var isInWeeklyRepeat = (targetDate, startDate, endDate, repeatRule) => {
164
- const targetDayOfWeek = targetDate.day();
165
- if (!repeatRule.frequency_date.includes(targetDayOfWeek)) {
166
- return false;
167
- }
168
- const weeksDiff = targetDate.diff(startDate, "week");
169
- if (weeksDiff < 0) {
170
- return false;
171
- }
172
- if (weeksDiff % repeatRule.frequency !== 0) {
173
- return false;
174
- }
175
- const targetTimeOfDay = targetDate.hour() * 3600 + targetDate.minute() * 60 + targetDate.second();
176
- const startTimeOfDay = startDate.hour() * 3600 + startDate.minute() * 60 + startDate.second();
177
- const endTimeOfDay = endDate.hour() * 3600 + endDate.minute() * 60 + endDate.second();
178
- return targetTimeOfDay >= startTimeOfDay && targetTimeOfDay <= endTimeOfDay;
179
- };
180
- var getScheduleStartEndTimePoints = (date, scheduleList) => {
181
- if (!date || !scheduleList || scheduleList.length === 0) {
182
- return [];
183
- }
184
- const targetDate = (0, import_dayjs.default)(date);
185
- if (!targetDate.isValid()) {
186
- return [];
187
- }
188
- const timeSlots = [];
189
- for (const schedule of scheduleList) {
190
- const slots = extractTimeSlotsFromSchedule(date, schedule);
191
- timeSlots.push(...slots);
192
- }
193
- return mergeAndSortTimeSlots(timeSlots);
194
- };
195
- var extractTimeSlotsFromSchedule = (date, schedule) => {
196
- switch (schedule.type) {
197
- case "standard":
198
- return extractStandardScheduleTimeSlots(date, schedule);
199
- case "time-slots":
200
- return extractTimeSlotsScheduleTimeSlots(date, schedule);
201
- case "designation":
202
- return extractDesignationScheduleTimeSlots(date, schedule);
203
- default:
204
- return [];
205
- }
206
- };
207
- var extractStandardScheduleTimeSlots = (date, schedule) => {
208
- if (!schedule.start_time || !schedule.end_time) {
209
- return [];
210
- }
211
- const targetDate = (0, import_dayjs.default)(date);
212
- const startDate = (0, import_dayjs.default)(schedule.start_time);
213
- const endDate = (0, import_dayjs.default)(schedule.end_time);
214
- if (!isDateInStandardSchedule(targetDate, schedule, startDate, endDate)) {
215
- return [];
216
- }
217
- const startTime = startDate.format("HH:mm");
218
- const endTime = endDate.format("HH:mm");
219
- const startAt = (0, import_dayjs.default)(`${date} ${startTime}:00`);
220
- const endAt = (0, import_dayjs.default)(`${date} ${endTime}:00`);
221
- return [{
222
- start_time: startTime,
223
- end_time: endTime,
224
- start_at: startAt,
225
- end_at: endAt
226
- }];
227
- };
228
- var extractTimeSlotsScheduleTimeSlots = (date, schedule) => {
229
- if (!schedule.start_time || !schedule.time_slot || schedule.time_slot.length === 0) {
230
- return [];
231
- }
232
- const targetDate = (0, import_dayjs.default)(date);
233
- const scheduleStartDate = (0, import_dayjs.default)(schedule.start_time.split(" ")[0]);
234
- if (!isDateInTimeSlotsSchedule(targetDate, schedule, scheduleStartDate)) {
235
- return [];
236
- }
237
- const slots = [];
238
- for (const timeSlot of schedule.time_slot) {
239
- if (!timeSlot.start_time || !timeSlot.end_time) {
240
- continue;
241
- }
242
- const startAt = (0, import_dayjs.default)(`${date} ${timeSlot.start_time}:00`);
243
- const endAt = (0, import_dayjs.default)(`${date} ${timeSlot.end_time}:00`);
244
- slots.push({
245
- start_time: timeSlot.start_time,
246
- end_time: timeSlot.end_time,
247
- start_at: startAt,
248
- end_at: endAt
249
- });
250
- }
251
- return slots;
252
- };
253
- var isDateInTimeSlotsSchedule = (targetDate, schedule, scheduleStartDate) => {
254
- if (schedule.repeat_type === "none") {
255
- return targetDate.isSame(scheduleStartDate, "day");
256
- }
257
- if (!schedule.repeat_rule) {
258
- return false;
259
- }
260
- const { repeat_rule, repeat_type } = schedule;
261
- if (repeat_rule.included_date && repeat_rule.included_date.length > 0) {
262
- for (const includedDate of repeat_rule.included_date) {
263
- const includeStartDate = (0, import_dayjs.default)(includedDate.start);
264
- const includeEndDate = (0, import_dayjs.default)(includedDate.end);
265
- if (targetDate.isSameOrAfter(includeStartDate, "day") && targetDate.isSameOrBefore(includeEndDate, "day")) {
266
- return true;
267
- }
268
- }
269
- }
270
- if (repeat_rule.excluded_date && repeat_rule.excluded_date.length > 0) {
271
- for (const excludedDate of repeat_rule.excluded_date) {
272
- const excludeStartDate = (0, import_dayjs.default)(excludedDate.start);
273
- const excludeEndDate = (0, import_dayjs.default)(excludedDate.end);
274
- if (targetDate.isSameOrAfter(excludeStartDate, "day") && targetDate.isSameOrBefore(excludeEndDate, "day")) {
275
- return false;
276
- }
277
- }
278
- }
279
- if (repeat_rule.end.type === "date" && repeat_rule.end.end_date) {
280
- const ruleEndDate = (0, import_dayjs.default)(repeat_rule.end.end_date);
281
- if (targetDate.isAfter(ruleEndDate, "day")) {
282
- return false;
283
- }
284
- }
285
- if (targetDate.isBefore(scheduleStartDate, "day")) {
286
- return false;
287
- }
288
- switch (repeat_type) {
289
- case "daily":
290
- return isDateInDailyRepeat(targetDate, scheduleStartDate, repeat_rule);
291
- case "weekly":
292
- return isDateInWeeklyRepeat(targetDate, scheduleStartDate, repeat_rule);
293
- default:
294
- return false;
295
- }
296
- };
297
- var extractDesignationScheduleTimeSlots = (date, schedule) => {
298
- if (!schedule.designation) {
299
- return [];
300
- }
301
- const targetDate = (0, import_dayjs.default)(date);
302
- const designations = Array.isArray(schedule.designation) ? schedule.designation : [schedule.designation];
303
- const slots = [];
304
- for (const designation of designations) {
305
- const startDate = (0, import_dayjs.default)(designation.start_date);
306
- const endDate = (0, import_dayjs.default)(designation.end_date);
307
- if (isDateInDesignationSchedule(targetDate, schedule, designation, startDate, endDate)) {
308
- const startAt = (0, import_dayjs.default)(`${date} ${designation.start_time}:00`);
309
- const endAt = (0, import_dayjs.default)(`${date} ${designation.end_time}:00`);
310
- slots.push({
311
- start_time: designation.start_time,
312
- end_time: designation.end_time,
313
- start_at: startAt,
314
- end_at: endAt
315
- });
316
- }
317
- }
318
- return slots;
319
- };
320
- var isDateInDesignationSchedule = (targetDate, schedule, designation, startDate, endDate) => {
321
- if (schedule.repeat_type === "none") {
322
- return targetDate.isSameOrAfter(startDate, "day") && targetDate.isSameOrBefore(endDate, "day");
323
- }
324
- if (!schedule.repeat_rule) {
325
- return false;
326
- }
327
- const { repeat_rule, repeat_type } = schedule;
328
- if (repeat_rule.included_date && repeat_rule.included_date.length > 0) {
329
- for (const includedDate of repeat_rule.included_date) {
330
- const includeStartDate = (0, import_dayjs.default)(includedDate.start);
331
- const includeEndDate = (0, import_dayjs.default)(includedDate.end);
332
- if (targetDate.isSameOrAfter(includeStartDate, "day") && targetDate.isSameOrBefore(includeEndDate, "day")) {
333
- return true;
334
- }
335
- }
336
- }
337
- if (repeat_rule.excluded_date && repeat_rule.excluded_date.length > 0) {
338
- for (const excludedDate of repeat_rule.excluded_date) {
339
- const excludeStartDate = (0, import_dayjs.default)(excludedDate.start);
340
- const excludeEndDate = (0, import_dayjs.default)(excludedDate.end);
341
- if (targetDate.isSameOrAfter(excludeStartDate, "day") && targetDate.isSameOrBefore(excludeEndDate, "day")) {
342
- return false;
343
- }
344
- }
345
- }
346
- if (repeat_rule.end.type === "date" && repeat_rule.end.end_date) {
347
- const ruleEndDate = (0, import_dayjs.default)(repeat_rule.end.end_date);
348
- if (targetDate.isAfter(ruleEndDate, "day")) {
349
- return false;
350
- }
351
- }
352
- if (!targetDate.isSameOrAfter(startDate, "day") || !targetDate.isSameOrBefore(endDate, "day")) {
353
- if (targetDate.isBefore(startDate, "day")) {
354
- return false;
355
- }
356
- }
357
- switch (repeat_type) {
358
- case "daily":
359
- return isDateInDailyRepeat(targetDate, startDate, repeat_rule);
360
- case "weekly":
361
- return isDateInWeeklyRepeat(targetDate, startDate, repeat_rule);
362
- default:
363
- return false;
364
- }
365
- };
366
- var isDateInStandardSchedule = (targetDate, schedule, startDate, endDate) => {
367
- const targetDateString = targetDate.format("YYYY-MM-DD");
368
- if (schedule.repeat_type === "none") {
369
- const scheduleStartDate = startDate.format("YYYY-MM-DD");
370
- const scheduleEndDate = endDate.format("YYYY-MM-DD");
371
- return targetDate.isSameOrAfter(scheduleStartDate, "day") && targetDate.isSameOrBefore(scheduleEndDate, "day");
372
- }
373
- if (!schedule.repeat_rule) {
374
- return false;
375
- }
376
- const { repeat_rule, repeat_type } = schedule;
377
- if (repeat_rule.included_date && repeat_rule.included_date.length > 0) {
378
- for (const includedDate of repeat_rule.included_date) {
379
- const includeStartDate = (0, import_dayjs.default)(includedDate.start);
380
- const includeEndDate = (0, import_dayjs.default)(includedDate.end);
381
- if (targetDate.isSameOrAfter(includeStartDate, "day") && targetDate.isSameOrBefore(includeEndDate, "day")) {
382
- return true;
383
- }
384
- }
385
- }
386
- for (const excludedDate of repeat_rule.excluded_date) {
387
- const excludeStartDate = (0, import_dayjs.default)(excludedDate.start);
388
- const excludeEndDate = (0, import_dayjs.default)(excludedDate.end);
389
- if (targetDate.isSameOrAfter(excludeStartDate, "day") && targetDate.isSameOrBefore(excludeEndDate, "day")) {
390
- return false;
391
- }
392
- }
393
- if (repeat_rule.end.type === "date" && repeat_rule.end.end_date) {
394
- const ruleEndDate = (0, import_dayjs.default)(repeat_rule.end.end_date);
395
- if (targetDate.isAfter(ruleEndDate, "day")) {
396
- return false;
397
- }
398
- }
399
- if (targetDate.isBefore(startDate, "day")) {
400
- return false;
401
- }
402
- switch (repeat_type) {
403
- case "daily":
404
- return isDateInDailyRepeat(targetDate, startDate, repeat_rule);
405
- case "weekly":
406
- return isDateInWeeklyRepeat(targetDate, startDate, repeat_rule);
407
- default:
408
- return false;
409
- }
410
- };
411
- var isDateInDailyRepeat = (targetDate, startDate, repeatRule) => {
412
- const daysDiff = targetDate.diff(startDate, "day");
413
- if (daysDiff < 0) {
414
- return false;
415
- }
416
- return daysDiff % repeatRule.frequency === 0;
417
- };
418
- var isDateInWeeklyRepeat = (targetDate, startDate, repeatRule) => {
419
- const targetDayOfWeek = targetDate.day();
420
- if (!repeatRule.frequency_date.includes(targetDayOfWeek)) {
421
- return false;
422
- }
423
- const weeksDiff = targetDate.diff(startDate, "week");
424
- if (weeksDiff < 0) {
425
- return false;
426
- }
427
- return weeksDiff % repeatRule.frequency === 0;
428
- };
429
- var mergeAndSortTimeSlots = (slots) => {
430
- if (slots.length === 0) {
431
- return [];
432
- }
433
- const sorted = [...slots].sort((a, b) => {
434
- return a.start_at.valueOf() - b.start_at.valueOf();
435
- });
436
- const unique = [];
437
- const seenKeys = /* @__PURE__ */ new Set();
438
- for (const slot of sorted) {
439
- const key = `${slot.start_time}-${slot.end_time}`;
440
- if (!seenKeys.has(key)) {
441
- seenKeys.add(key);
442
- unique.push(slot);
443
- }
444
- }
445
- return unique;
446
- };
447
- // Annotate the CommonJS export names for ESM import in node:
448
- 0 && (module.exports = {
449
- getDateIsInSchedule,
450
- getScheduleStartEndTimePoints
451
- });