@perdieminc/time-slots 0.0.11 → 1.0.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.
@@ -11,15 +11,6 @@ export type FulfillmentType = (typeof FULFILLMENT_TYPES)[keyof typeof FULFILLMEN
11
11
  export declare const DEFAULT_GAP_IN_MINUTES = 15;
12
12
  export declare const DEFAULT_PREP_TIME_IN_MINUTES = 5;
13
13
  export declare const MINUTES_PER_DAY = 1440;
14
- /**
15
- * Prep time behaviour when computing first available slot.
16
- */
17
- export declare const PrepTimeBehaviour: Readonly<{
18
- FIRST_SHIFT: 0;
19
- EVERY_SHIFT: 1;
20
- ROLL_FROM_FIRST_SHIFT: 2;
21
- }>;
22
- export type PrepTimeBehaviourType = (typeof PrepTimeBehaviour)[keyof typeof PrepTimeBehaviour];
23
14
  export declare const PREP_TIME_CADENCE: {
24
15
  readonly MINUTE: "minute";
25
16
  readonly DAY: "day";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,MAAM,MAAM,eAAe,GAC1B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAChC,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,eAAe,GAC1B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;CAIX,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,MAAM,MAAM,eAAe,GAC1B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,eAAe,GAC1B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;CAIX,CAAC"}
package/lib/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PLATFORM = exports.PREP_TIME_CADENCE = exports.PrepTimeBehaviour = exports.MINUTES_PER_DAY = exports.DEFAULT_PREP_TIME_IN_MINUTES = exports.DEFAULT_GAP_IN_MINUTES = exports.DEFAULT_TIMEZONE = exports.FULFILLMENT_TYPES = void 0;
3
+ exports.PLATFORM = exports.PREP_TIME_CADENCE = exports.MINUTES_PER_DAY = exports.DEFAULT_PREP_TIME_IN_MINUTES = exports.DEFAULT_GAP_IN_MINUTES = exports.DEFAULT_TIMEZONE = exports.FULFILLMENT_TYPES = void 0;
4
4
  /**
5
5
  * Fulfillment types for pickup, delivery, curbside.
6
6
  */
@@ -13,14 +13,6 @@ exports.DEFAULT_TIMEZONE = "America/New_York";
13
13
  exports.DEFAULT_GAP_IN_MINUTES = 15;
14
14
  exports.DEFAULT_PREP_TIME_IN_MINUTES = 5;
15
15
  exports.MINUTES_PER_DAY = 1440;
16
- /**
17
- * Prep time behaviour when computing first available slot.
18
- */
19
- exports.PrepTimeBehaviour = Object.freeze({
20
- FIRST_SHIFT: 0,
21
- EVERY_SHIFT: 1,
22
- ROLL_FROM_FIRST_SHIFT: 2,
23
- });
24
16
  exports.PREP_TIME_CADENCE = {
25
17
  MINUTE: "minute",
26
18
  DAY: "day",
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAChC,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;CACX,CAAC;AAEE,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AAItC,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,4BAA4B,GAAG,CAAC,CAAC;AACjC,QAAA,eAAe,GAAG,IAAI,CAAC;AACpC;;GAEG;AACU,QAAA,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;IACd,qBAAqB,EAAE,CAAC;CACxB,CAAC,CAAC;AAKU,QAAA,iBAAiB,GAAG;IAChC,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACH,CAAC;AAKX;;GAEG;AACU,QAAA,QAAQ,GAAG;IACvB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,SAAS;CACT,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAChC,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;CACX,CAAC;AAEE,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AAItC,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAC5B,QAAA,4BAA4B,GAAG,CAAC,CAAC;AACjC,QAAA,eAAe,GAAG,IAAI,CAAC;AACvB,QAAA,iBAAiB,GAAG;IAChC,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACH,CAAC;AAKX;;GAEG;AACU,QAAA,QAAQ,GAAG;IACvB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,SAAS;CACT,CAAC"}
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export type { FulfillmentType, PrepTimeBehaviourType } from "./constants";
2
- export { DEFAULT_GAP_IN_MINUTES, DEFAULT_PREP_TIME_IN_MINUTES, FULFILLMENT_TYPES, PrepTimeBehaviour, } from "./constants";
1
+ export type { FulfillmentType } from "./constants";
2
+ export { DEFAULT_GAP_IN_MINUTES, DEFAULT_PREP_TIME_IN_MINUTES, FULFILLMENT_TYPES, } from "./constants";
3
3
  export { getSchedules } from "./schedule/get-schedules";
4
4
  export * from "./types";
5
5
  export type { BusinessHour, BusinessHourInput, BusinessHoursOverrideInput, BusinessHoursOverrideOutput, } from "./types/business-hours";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACN,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,cAAc,SAAS,CAAC;AACxB,YAAY,EACX,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,2BAA2B,EAC3B,uBAAuB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACN,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,cAAc,SAAS,CAAC;AACxB,YAAY,EACX,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,2BAA2B,EAC3B,uBAAuB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
package/lib/index.js CHANGED
@@ -14,12 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getOpeningClosingTime = exports.filterMenusFromSchedule = exports.filterBusyTimesFromSchedule = exports.overrideTimeZoneOnUTC = exports.isTomorrowInTimeZone = exports.isTodayInTimeZone = exports.getPreSalePickupDates = exports.getCateringPrepTimeConfig = exports.getLocationsBusinessHoursOverrides = exports.getSchedules = exports.PrepTimeBehaviour = exports.FULFILLMENT_TYPES = exports.DEFAULT_PREP_TIME_IN_MINUTES = exports.DEFAULT_GAP_IN_MINUTES = void 0;
17
+ exports.getOpeningClosingTime = exports.filterMenusFromSchedule = exports.filterBusyTimesFromSchedule = exports.overrideTimeZoneOnUTC = exports.isTomorrowInTimeZone = exports.isTodayInTimeZone = exports.getPreSalePickupDates = exports.getCateringPrepTimeConfig = exports.getLocationsBusinessHoursOverrides = exports.getSchedules = exports.FULFILLMENT_TYPES = exports.DEFAULT_PREP_TIME_IN_MINUTES = exports.DEFAULT_GAP_IN_MINUTES = void 0;
18
18
  var constants_1 = require("./constants");
19
19
  Object.defineProperty(exports, "DEFAULT_GAP_IN_MINUTES", { enumerable: true, get: function () { return constants_1.DEFAULT_GAP_IN_MINUTES; } });
20
20
  Object.defineProperty(exports, "DEFAULT_PREP_TIME_IN_MINUTES", { enumerable: true, get: function () { return constants_1.DEFAULT_PREP_TIME_IN_MINUTES; } });
21
21
  Object.defineProperty(exports, "FULFILLMENT_TYPES", { enumerable: true, get: function () { return constants_1.FULFILLMENT_TYPES; } });
22
- Object.defineProperty(exports, "PrepTimeBehaviour", { enumerable: true, get: function () { return constants_1.PrepTimeBehaviour; } });
23
22
  var get_schedules_1 = require("./schedule/get-schedules");
24
23
  Object.defineProperty(exports, "getSchedules", { enumerable: true, get: function () { return get_schedules_1.getSchedules; } });
25
24
  __exportStar(require("./types"), exports);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,yCAKqB;AAJpB,mHAAA,sBAAsB,OAAA;AACtB,yHAAA,4BAA4B,OAAA;AAC5B,8GAAA,iBAAiB,OAAA;AACjB,8GAAA,iBAAiB,OAAA;AAElB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,0CAAwB;AAOxB,yDAA4E;AAAnE,oIAAA,kCAAkC,OAAA;AAC3C,6CAA6D;AAApD,qHAAA,yBAAyB,OAAA;AAClC,qCAKsB;AAJrB,6GAAA,qBAAqB,OAAA;AACrB,yGAAA,iBAAiB,OAAA;AACjB,4GAAA,oBAAoB,OAAA;AACpB,6GAAA,qBAAqB,OAAA;AAEtB,2DAGiC;AAFhC,8HAAA,2BAA2B,OAAA;AAC3B,0HAAA,uBAAuB,OAAA;AAExB,mDAA4D;AAAnD,oHAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,yCAIqB;AAHpB,mHAAA,sBAAsB,OAAA;AACtB,yHAAA,4BAA4B,OAAA;AAC5B,8GAAA,iBAAiB,OAAA;AAElB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,0CAAwB;AAOxB,yDAA4E;AAAnE,oIAAA,kCAAkC,OAAA;AAC3C,6CAA6D;AAApD,qHAAA,yBAAyB,OAAA;AAClC,qCAKsB;AAJrB,6GAAA,qBAAqB,OAAA;AACrB,yGAAA,iBAAiB,OAAA;AACjB,4GAAA,oBAAoB,OAAA;AACpB,6GAAA,qBAAqB,OAAA;AAEtB,2DAGiC;AAFhC,8HAAA,2BAA2B,OAAA;AAC3B,0HAAA,uBAAuB,OAAA;AAExB,mDAA4D;AAAnD,oHAAA,qBAAqB,OAAA"}
@@ -1,3 +1,3 @@
1
1
  import type { DaySchedule, GenerateScheduleParams } from "../types";
2
- export declare function generateSchedule({ currentDate, prepTimeBehaviour, weekDayPrepTimes, defaultPrepTimeInMinutes, timeZone, dates, businessHours, businessHoursOverrides, preSaleHoursOverride, gapInMinutes, prepTimeCadence, }: GenerateScheduleParams): DaySchedule[];
2
+ export declare function generateSchedule({ currentDate, timeZone, dates, businessHours, businessHoursOverrides, preSaleHoursOverride, gapInMinutes, prepTimeCadence, prepTimeFrequency, openingBuffer, closingBuffer, estimatedDeliveryMinutes, }: GenerateScheduleParams): DaySchedule[];
3
3
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/schedule/generate.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAGX,WAAW,EACX,sBAAsB,EACtB,MAAM,UAAU,CAAC;AAiElB,wBAAgB,gBAAgB,CAAC,EAChC,WAAwB,EACxB,iBAA2D,EAC3D,gBAAqB,EACrB,wBAAwB,EACxB,QAAQ,EACR,KAAU,EACV,aAAkB,EAClB,sBAA2B,EAC3B,oBAAoB,EACpB,YAAiB,EACjB,eAAsB,GACtB,EAAE,sBAAsB,GAAG,WAAW,EAAE,CAoLxC"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/schedule/generate.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGX,WAAW,EACX,sBAAsB,EACtB,MAAM,UAAU,CAAC;AA6ElB,wBAAgB,gBAAgB,CAAC,EAChC,WAAwB,EACxB,QAAQ,EACR,KAAU,EACV,aAAkB,EAClB,sBAA2B,EAC3B,oBAAoB,EACpB,YAAiB,EACjB,eAAsB,EACtB,iBAAqB,EACrB,aAAiB,EACjB,aAAiB,EACjB,wBAA4B,GAC5B,EAAE,sBAAsB,GAAG,WAAW,EAAE,CAuQxC"}
@@ -7,13 +7,13 @@ const constants_1 = require("../constants");
7
7
  const date_1 = require("../utils/date");
8
8
  function getSelectedBusinessHours({ businessHours = [], businessHoursOverrides = [], date, timeZone, preSaleHoursOverride, }) {
9
9
  if (!date || !timeZone) {
10
- return [[], (0, timezone_support_1.getZonedTime)(new Date(), (0, timezone_support_1.findTimeZone)(timeZone ?? "UTC"))];
10
+ return [];
11
11
  }
12
12
  const zonedDate = (0, timezone_support_1.getZonedTime)(date, (0, timezone_support_1.findTimeZone)(timeZone));
13
13
  const dayOfWeek = zonedDate.dayOfWeek ?? 0;
14
14
  const dayBusinessHours = businessHours?.filter((bh) => bh.day === dayOfWeek);
15
15
  const businessHoursOverride = businessHoursOverrides?.filter((override) => zonedDate.month === override.month && zonedDate.day === override.day);
16
- const selectedBusinessHours = preSaleHoursOverride
16
+ return preSaleHoursOverride
17
17
  ? preSaleHoursOverride.map((o) => ({
18
18
  day: dayOfWeek,
19
19
  startTime: o.startTime,
@@ -26,115 +26,191 @@ function getSelectedBusinessHours({ businessHours = [], businessHoursOverrides =
26
26
  endTime: o.endTime ?? "23:59",
27
27
  }))
28
28
  : (dayBusinessHours ?? []);
29
- return [selectedBusinessHours, zonedDate];
29
+ }
30
+ /**
31
+ * Project the time-of-day from `source` onto `targetDate` in the given timezone.
32
+ * e.g. source = Sat 2:30 PM, targetDate = Mon → Mon 2:30 PM (in timezone).
33
+ */
34
+ function projectTimeOfDay(source, targetDate, timeZone) {
35
+ const tz = (0, timezone_support_1.findTimeZone)(timeZone);
36
+ const zonedSource = (0, timezone_support_1.getZonedTime)(source, tz);
37
+ const hh = String(zonedSource.hours).padStart(2, "0");
38
+ const mm = String(zonedSource.minutes).padStart(2, "0");
39
+ return (0, date_1.setHmOnDate)(targetDate, `${hh}:${mm}`, timeZone);
30
40
  }
31
41
  // ── Public API ──────────────────────────────────────────────────────────────
32
- function generateSchedule({ currentDate = new Date(), prepTimeBehaviour = constants_1.PrepTimeBehaviour.ROLL_FROM_FIRST_SHIFT, weekDayPrepTimes = {}, defaultPrepTimeInMinutes, timeZone, dates = [], businessHours = [], businessHoursOverrides = [], preSaleHoursOverride, gapInMinutes = 15, prepTimeCadence = null, }) {
42
+ function generateSchedule({ currentDate = new Date(), timeZone, dates = [], businessHours = [], businessHoursOverrides = [], preSaleHoursOverride, gapInMinutes = 15, prepTimeCadence = null, prepTimeFrequency = 0, openingBuffer = 0, closingBuffer = 0, estimatedDeliveryMinutes = 0, }) {
33
43
  const isMinutesCadence = prepTimeCadence !== constants_1.PREP_TIME_CADENCE.DAY;
34
- const defaultPrep = defaultPrepTimeInMinutes ?? 0;
44
+ const isDayCadence = prepTimeCadence === constants_1.PREP_TIME_CADENCE.DAY;
45
+ const minuteCadenceDaysSkipped = isMinutesCadence
46
+ ? Math.floor(prepTimeFrequency / constants_1.MINUTES_PER_DAY)
47
+ : 0;
48
+ const effectivePrepMinutes = minuteCadenceDaysSkipped > 0
49
+ ? prepTimeFrequency % constants_1.MINUTES_PER_DAY
50
+ : prepTimeFrequency;
35
51
  let shiftStartDateWithPrepTime = null;
36
52
  return dates
37
53
  .map((date, index) => {
38
54
  const lastDate = dates?.[index - 1];
39
- const [selectedBusinessHours, zonedDate] = getSelectedBusinessHours({
55
+ const selectedBusinessHours = getSelectedBusinessHours({
40
56
  businessHours,
41
57
  businessHoursOverrides,
42
58
  date,
43
59
  timeZone,
44
60
  preSaleHoursOverride,
45
61
  });
46
- const [prevSelectedBusinessHours] = getSelectedBusinessHours({
62
+ const prevSelectedBusinessHours = getSelectedBusinessHours({
47
63
  businessHours,
48
64
  businessHoursOverrides,
49
65
  date: lastDate,
50
66
  timeZone,
51
67
  preSaleHoursOverride,
52
68
  });
53
- const weekDayPrepTime = weekDayPrepTimes[zonedDate.dayOfWeek] ?? defaultPrep;
54
69
  const storeTimes = {
55
70
  openingTime: null,
56
71
  closingTime: null,
57
72
  remainingShifts: 0,
58
73
  totalShifts: 0,
59
74
  };
60
- let isPrevDayMidnightTransition = false;
75
+ // Track midnight spill: if today's last shift ends at 24:00, we need to
76
+ // apply closing buffer to tomorrow's last shift instead
77
+ const isTodayEndingInMidnightSpill = (0, date_1.lastShiftEndsAtMidnight)(selectedBusinessHours);
78
+ // For DAY cadence: the first date in dates IS the target date (after slicing in location.ts)
79
+ const isDayCadenceFirstDate = isDayCadence && index === 0;
80
+ // For MINUTE cadence with ≥1 day of prep: days were skipped via dates.slice()
81
+ // in location.ts, so the first date here is the target day.
82
+ const isMinuteCadenceFirstDate = isMinutesCadence && minuteCadenceDaysSkipped > 0 && index === 0;
61
83
  const slots = selectedBusinessHours
62
84
  .flatMap((businessHour, i) => {
85
+ const isFirstShift = i === 0;
86
+ const isLastShift = i === selectedBusinessHours.length - 1;
63
87
  const startDate = (0, date_1.setHmOnDate)(date, businessHour.startTime, timeZone);
64
- const shiftStartDate = isMinutesCadence && shiftStartDateWithPrepTime
88
+ // The effective start accounts for prep-time rollover from a prior
89
+ // shift, but the slot grid must always be anchored to the raw
90
+ // business-hour start so that the 15-min cadence stays on
91
+ // :00 / :15 / :30 / :45.
92
+ const effectiveShiftStart = isMinutesCadence && shiftStartDateWithPrepTime
65
93
  ? (0, date_fns_1.max)([shiftStartDateWithPrepTime, startDate])
66
94
  : startDate;
67
- const shiftEndDate = (0, date_1.setHmOnDate)(date, businessHour.endTime, timeZone);
68
- if (i === 0) {
69
- storeTimes.openingTime = shiftStartDate;
95
+ const shiftStartDate = startDate;
96
+ // Check if this is a midnight spill continuation from previous day
97
+ // (first shift starts at 00:00 AND previous day ended at 24:00)
98
+ const isMidnightShiftContinuation = isFirstShift &&
99
+ (0, date_1.isZeroPrepTimeForMidnightShift)({
100
+ prevDayBusinessHours: prevSelectedBusinessHours,
101
+ businessHour,
102
+ });
103
+ // Determine if closing buffer should be applied:
104
+ // - Apply to last shift normally
105
+ // - BUT if this day ends in midnight spill, don't apply yet (wait for tomorrow's last shift)
106
+ // - If this is a midnight spill continuation AND it's the last shift, apply closing buffer
107
+ const shouldApplyClosingBuffer = isLastShift &&
108
+ !isTodayEndingInMidnightSpill &&
109
+ !isMidnightShiftContinuation;
110
+ const rawEndDate = (0, date_1.setHmOnDate)(date, businessHour.endTime, timeZone);
111
+ const shiftEndDate = shouldApplyClosingBuffer
112
+ ? (0, date_fns_1.addMinutes)(rawEndDate, -closingBuffer)
113
+ : rawEndDate;
114
+ if (isFirstShift) {
115
+ // Store the raw opening time (pre-buffer) for reference in today logic
116
+ storeTimes.openingTime = startDate;
70
117
  }
71
- if (i === selectedBusinessHours.length - 1) {
118
+ if (isLastShift) {
72
119
  storeTimes.closingTime = shiftEndDate;
73
120
  }
74
- if (!(0, date_fns_1.isBefore)(shiftStartDate, shiftEndDate)) {
75
- if (isMinutesCadence) {
76
- shiftStartDateWithPrepTime = null;
77
- }
121
+ if ((0, date_fns_1.isAfter)(effectiveShiftStart, shiftEndDate)) {
122
+ // Shift fully skipped — keep shiftStartDateWithPrepTime so it
123
+ // can carry forward to the next shift or day.
78
124
  return [];
79
125
  }
80
126
  storeTimes.totalShifts += 1;
81
127
  const fixedSlots = (0, date_fns_1.eachMinuteOfInterval)({ start: shiftStartDate, end: shiftEndDate }, { step: gapInMinutes });
82
- if ((0, date_1.isTodayInTimeZone)(date, timeZone)) {
83
- const openingTime = storeTimes.openingTime ?? new Date(0);
84
- const baseDate = currentDate instanceof Date ? currentDate : new Date(currentDate);
85
- const currentDateWithPrepTime = (0, date_fns_1.addMinutes)(new Date(Math.max(baseDate.getTime(), openingTime.getTime())), Math.max(defaultPrep, weekDayPrepTime));
86
- if ((0, date_fns_1.isAfter)(currentDateWithPrepTime, shiftEndDate)) {
87
- // If the prep time cadence is minutes, we need to set the shift start date with the prep time
128
+ // ── Today / first-date logic ────────────────────────────────────
129
+ const isActualToday = (0, date_1.isTodayInTimeZone)(date, timeZone);
130
+ if (isActualToday ||
131
+ isDayCadenceFirstDate ||
132
+ isMinuteCadenceFirstDate) {
133
+ let effectiveFirstSlot;
134
+ if (isFirstShift) {
135
+ const openingTime = startDate;
136
+ if (isDayCadenceFirstDate) {
137
+ // DAY cadence: first slot = opening + buffer
138
+ effectiveFirstSlot = (0, date_fns_1.addMinutes)(openingTime, openingBuffer);
139
+ }
140
+ else if (isMinuteCadenceFirstDate) {
141
+ // MINUTE cadence with day skipping: project now's time-of-day
142
+ // onto the target date, then add any remaining prep minutes.
143
+ const projectedNow = projectTimeOfDay(currentDate, date, timeZone);
144
+ const projectedWithPrep = (0, date_fns_1.addMinutes)(projectedNow, effectivePrepMinutes);
145
+ const openingPlusBuffer = (0, date_fns_1.addMinutes)(openingTime, openingBuffer);
146
+ effectiveFirstSlot = (0, date_fns_1.max)([
147
+ projectedWithPrep,
148
+ openingPlusBuffer,
149
+ ]);
150
+ }
151
+ else {
152
+ // Actual today with MINUTE cadence
153
+ if ((0, date_fns_1.isBefore)(currentDate, openingTime)) {
154
+ effectiveFirstSlot = (0, date_fns_1.addMinutes)(openingTime, Math.max(openingBuffer, prepTimeFrequency));
155
+ }
156
+ else {
157
+ const nowPlusPrep = (0, date_fns_1.addMinutes)(currentDate, prepTimeFrequency);
158
+ const openingPlusBuffer = (0, date_fns_1.addMinutes)(openingTime, openingBuffer);
159
+ effectiveFirstSlot = (0, date_fns_1.max)([nowPlusPrep, openingPlusBuffer]);
160
+ }
161
+ }
162
+ // Delivery always added on top
163
+ effectiveFirstSlot = (0, date_fns_1.addMinutes)(effectiveFirstSlot, estimatedDeliveryMinutes);
164
+ }
165
+ else {
166
+ // Non-first shifts: use the effective start (which accounts for
167
+ // prep-time rollover) but keep the slot grid on the raw boundary.
168
+ effectiveFirstSlot = effectiveShiftStart;
169
+ }
170
+ if ((0, date_fns_1.isAfter)(effectiveFirstSlot, shiftEndDate)) {
88
171
  if (isMinutesCadence) {
89
- shiftStartDateWithPrepTime = currentDateWithPrepTime;
172
+ shiftStartDateWithPrepTime = effectiveFirstSlot;
90
173
  }
91
174
  return [];
92
175
  }
93
- if ((0, date_fns_1.isBefore)(currentDateWithPrepTime, shiftStartDate)) {
176
+ if ((0, date_fns_1.isBefore)(effectiveFirstSlot, effectiveShiftStart)) {
94
177
  storeTimes.remainingShifts += 1;
95
- if (prepTimeBehaviour ===
96
- constants_1.PrepTimeBehaviour.EVERY_SHIFT) {
97
- const shiftStartDateWithPrepTime = (0, date_fns_1.addMinutes)(shiftStartDate, weekDayPrepTime);
98
- const slotDates = fixedSlots.filter((d) => (0, date_fns_1.isAfter)(d, shiftStartDateWithPrepTime));
99
- slotDates.unshift(shiftStartDateWithPrepTime);
100
- return slotDates;
101
- }
102
178
  return fixedSlots;
103
179
  }
104
- const slotDates = fixedSlots.filter((d) => (0, date_fns_1.isAfter)(d, currentDateWithPrepTime));
105
- slotDates.unshift(currentDateWithPrepTime);
180
+ const slotDates = fixedSlots.filter((d) => (0, date_fns_1.isAfter)(d, effectiveFirstSlot));
181
+ slotDates.unshift(effectiveFirstSlot);
106
182
  storeTimes.remainingShifts += 1;
183
+ if (isMinutesCadence) {
184
+ shiftStartDateWithPrepTime = null;
185
+ }
107
186
  return slotDates;
108
187
  }
109
- if (prepTimeBehaviour === constants_1.PrepTimeBehaviour.FIRST_SHIFT && i !== 0) {
110
- storeTimes.remainingShifts += 1;
111
- return fixedSlots;
112
- }
113
- const allowZeroPrepTimeForMidnightShift = (0, date_1.isZeroPrepTimeForMidnightShift)({
114
- prevDayBusinessHours: prevSelectedBusinessHours,
115
- businessHour,
116
- });
117
- const prepTimeSlot = (0, date_fns_1.addMinutes)(prepTimeBehaviour === constants_1.PrepTimeBehaviour.ROLL_FROM_FIRST_SHIFT &&
118
- !isPrevDayMidnightTransition &&
188
+ // ── Future day logic ─────────────────────────────────────────────
189
+ // Opening buffer applies to the first shift only, and not to midnight-spill
190
+ // continuations (those are an extension of the previous day's last shift)
191
+ const effectiveOpeningBuffer = isFirstShift && !isMidnightShiftContinuation ? openingBuffer : 0;
192
+ // Roll from the opening time for first shift; subsequent shifts from their own start
193
+ const rollFromDate = isFirstShift &&
194
+ !isMidnightShiftContinuation &&
119
195
  storeTimes.openingTime
120
196
  ? storeTimes.openingTime
121
- : shiftStartDate, allowZeroPrepTimeForMidnightShift ? 0 : weekDayPrepTime);
122
- isPrevDayMidnightTransition = allowZeroPrepTimeForMidnightShift;
123
- if (prepTimeSlot > shiftEndDate) {
124
- if (isMinutesCadence) {
125
- shiftStartDateWithPrepTime = prepTimeSlot;
126
- }
127
- shiftStartDateWithPrepTime = prepTimeSlot;
197
+ : startDate;
198
+ const prepTimeSlot = (0, date_fns_1.addMinutes)(rollFromDate, effectiveOpeningBuffer + estimatedDeliveryMinutes);
199
+ // Use the later of prepTimeSlot and effectiveShiftStart, so that
200
+ // prep-time rollover from a prior day is respected.
201
+ const effectiveFirstSlot = (0, date_fns_1.max)([prepTimeSlot, effectiveShiftStart]);
202
+ if ((0, date_fns_1.isAfter)(effectiveFirstSlot, shiftEndDate)) {
203
+ shiftStartDateWithPrepTime = effectiveFirstSlot;
128
204
  return [];
129
205
  }
130
- if (prepTimeSlot < shiftStartDate) {
206
+ if ((0, date_fns_1.isBefore)(effectiveFirstSlot, startDate)) {
131
207
  storeTimes.remainingShifts += 1;
132
208
  return fixedSlots;
133
209
  }
134
- const slotDates = fixedSlots.filter((d) => (0, date_fns_1.isAfter)(d, prepTimeSlot));
135
- slotDates.unshift(prepTimeSlot);
210
+ const slotDates = fixedSlots.filter((d) => (0, date_fns_1.isAfter)(d, effectiveFirstSlot));
211
+ slotDates.unshift(effectiveFirstSlot);
136
212
  storeTimes.remainingShifts += 1;
137
- shiftStartDateWithPrepTime = null; //reset the shift start date with prep time
213
+ shiftStartDateWithPrepTime = null;
138
214
  return slotDates;
139
215
  })
140
216
  .sort(date_fns_1.compareAsc);
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/schedule/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/schedule/generate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-schedules.d.ts","sourceRoot":"","sources":["../../src/schedule/get-schedules.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGX,kBAAkB,EAClB,kBAAkB,EAGlB,MAAM,UAAU,CAAC;AAsKlB,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,cAAsB,GACtB,EAAE,kBAAkB,GAAG,kBAAkB,CA2HzC"}
1
+ {"version":3,"file":"get-schedules.d.ts","sourceRoot":"","sources":["../../src/schedule/get-schedules.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGX,kBAAkB,EAClB,kBAAkB,EAGlB,MAAM,UAAU,CAAC;AAgIlB,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,cAAsB,GACtB,EAAE,kBAAkB,GAAG,kBAAkB,CAkIzC"}
@@ -44,23 +44,15 @@ function getPreSaleHoursOverride(preSaleConfig, hasPreSaleItem) {
44
44
  }
45
45
  return null;
46
46
  }
47
- function resolveStartDate({ preSaleStartDate, hasPreSaleItem, totalCateringPrepTimeInHours, isCateringFlow, }) {
47
+ function resolveStartDate({ preSaleStartDate, hasPreSaleItem, cateringShiftMinutes = 0, }) {
48
48
  if (hasPreSaleItem) {
49
49
  return new Date(Math.max(preSaleStartDate.getTime(), Date.now()));
50
50
  }
51
- if (isCateringFlow && totalCateringPrepTimeInHours > 0) {
52
- return (0, date_fns_1.addHours)(new Date(), totalCateringPrepTimeInHours);
51
+ if (cateringShiftMinutes > 0) {
52
+ return (0, date_fns_1.addMinutes)(new Date(), cateringShiftMinutes);
53
53
  }
54
54
  return new Date();
55
55
  }
56
- const WEEKDAY_KEYS = [0, 1, 2, 3, 4, 5, 6];
57
- function addEstimatedDeliveryToWeekDays(weekDayPrepTimes, estimatedDeliveryMinutes) {
58
- const result = {};
59
- for (const day of WEEKDAY_KEYS) {
60
- result[day] = (weekDayPrepTimes[day] ?? 0) + estimatedDeliveryMinutes;
61
- }
62
- return result;
63
- }
64
56
  /**
65
57
  * Returns prep time cadence and frequency for schedule generation.
66
58
  * If prepTimeCadence and prepTimeFrequency exist on settings (e.g. from catering), returns them.
@@ -83,47 +75,37 @@ function getPrepTimeCadenceAndFrequency(settings) {
83
75
  };
84
76
  }
85
77
  /**
86
- * Resolves prep time config: for catering flow uses cart-derived cadence/frequency;
87
- * when fulfillment is DELIVERY, adds estimatedDeliveryMinutes to all weekday prep times.
78
+ * Resolves prep time config: for catering flow uses cart-derived cadence/frequency.
79
+ * estimatedDeliveryMinutes is now passed directly to generateSchedule rather than
80
+ * being baked into prep time, so it is always additive on top of prep time.
88
81
  */
89
- function resolvePrepTimeConfig(prepTimeSettings, cartItems, isCateringFlow, fulfillmentPreference) {
90
- let resolved;
82
+ function resolvePrepTimeConfig(prepTimeSettings, cartItems, isCateringFlow) {
91
83
  if (!isCateringFlow) {
92
- const isDayCadence = prepTimeSettings.prepTimeCadence === constants_1.PREP_TIME_CADENCE.DAY;
93
- resolved = {
94
- ...prepTimeSettings,
95
- ...(isDayCadence && { weekDayPrepTimes: {} }),
96
- };
97
- }
98
- else {
99
- const cateringPrepTimeConfig = (0, catering_1.getCateringPrepTimeConfig)({
100
- items: cartItems,
101
- prepTimeCadence: prepTimeSettings.prepTimeCadence,
102
- prepTimeFrequency: prepTimeSettings.prepTimeFrequency,
103
- });
104
- resolved = {
105
- ...prepTimeSettings,
106
- ...cateringPrepTimeConfig,
107
- };
108
- }
109
- const { estimatedDeliveryMinutes = 0 } = prepTimeSettings;
110
- if (fulfillmentPreference === constants_1.FULFILLMENT_TYPES.DELIVERY &&
111
- estimatedDeliveryMinutes > 0) {
112
- const baseWeekDays = resolved.weekDayPrepTimes ?? {};
113
- resolved = {
114
- ...resolved,
115
- weekDayPrepTimes: addEstimatedDeliveryToWeekDays(baseWeekDays, prepTimeSettings.estimatedDeliveryMinutes ?? 0),
116
- };
84
+ return prepTimeSettings;
117
85
  }
118
- return resolved;
86
+ const cateringPrepTimeConfig = (0, catering_1.getCateringPrepTimeConfig)({
87
+ items: cartItems,
88
+ prepTimeCadence: prepTimeSettings.prepTimeCadence,
89
+ prepTimeFrequency: prepTimeSettings.prepTimeFrequency,
90
+ });
91
+ return {
92
+ ...prepTimeSettings,
93
+ ...cateringPrepTimeConfig,
94
+ };
119
95
  }
120
96
  // ── Main ────────────────────────────────────────────────────────────────────
121
97
  function getSchedules({ store, locations, cartItems, fulfillmentPreference, prepTimeSettings, currentLocation, isCateringFlow = false, }) {
122
98
  const { isAsapOrders, isSameDayOrders, max_future_order_days: daysCount = 7, weeklyPreSaleConfig, preSaleConfig, } = store;
123
99
  const cart = deriveCartInfo(cartItems);
124
- const resolvedPrepTime = resolvePrepTimeConfig(getPrepTimeCadenceAndFrequency(prepTimeSettings), cartItems, isCateringFlow, fulfillmentPreference);
125
- const { gapInMinutes, busyTimes: busyTimesByLocationId, prepTimeFrequency, prepTimeCadence, weekDayPrepTimes, totalCateringPrepTimeInHours = 0, } = resolvedPrepTime;
126
- const defaultPrepTimeInMinutes = prepTimeSettings.defaultPrepTimeInMinutes ?? constants_1.DEFAULT_PREP_TIME_IN_MINUTES;
100
+ const resolvedPrepTime = resolvePrepTimeConfig(getPrepTimeCadenceAndFrequency(prepTimeSettings), cartItems, isCateringFlow);
101
+ const { gapInMinutes, busyTimes: busyTimesByLocationId, prepTimeFrequency: rawPrepTimeFrequency, prepTimeCadence, openingBuffer = 0, closingBuffer = 0, } = resolvedPrepTime;
102
+ const isDayCadence = prepTimeCadence === constants_1.PREP_TIME_CADENCE.DAY;
103
+ const cateringShiftMinutes = isCateringFlow && !isDayCadence ? (rawPrepTimeFrequency ?? 0) : 0;
104
+ const prepTimeFrequency = cateringShiftMinutes > 0 ? 0 : (rawPrepTimeFrequency ?? 0);
105
+ const isDelivery = fulfillmentPreference === constants_1.FULFILLMENT_TYPES.DELIVERY;
106
+ const estimatedDeliveryMinutes = isDelivery
107
+ ? (resolvedPrepTime.estimatedDeliveryMinutes ?? 0)
108
+ : 0;
127
109
  const busyTimes = busyTimesByLocationId?.[currentLocation.location_id] ?? [];
128
110
  const businessHoursOverrides = (0, business_hours_1.getLocationsBusinessHoursOverrides)(store.businessHoursOverrides, locations)[currentLocation.location_id] ?? [];
129
111
  const filterSchedule = (schedule) => (0, schedule_filter_1.filterBusyTimesFromSchedule)({
@@ -146,7 +128,9 @@ function getSchedules({ store, locations, cartItems, fulfillmentPreference, prep
146
128
  gapInMinutes,
147
129
  daysCount: 7,
148
130
  preSaleDates: weeklyPickupDates,
149
- defaultPrepTimeInMinutes,
131
+ openingBuffer,
132
+ closingBuffer,
133
+ estimatedDeliveryMinutes,
150
134
  });
151
135
  const filteredSchedule = filterSchedule(schedule);
152
136
  if (cart.hasWeeklyPreSaleItem) {
@@ -174,21 +158,19 @@ function getSchedules({ store, locations, cartItems, fulfillmentPreference, prep
174
158
  currentDate: resolveStartDate({
175
159
  preSaleStartDate: preSaleDates.startDate,
176
160
  hasPreSaleItem: cart.hasPreSaleItem,
177
- totalCateringPrepTimeInHours,
178
- isCateringFlow,
161
+ cateringShiftMinutes,
179
162
  }),
180
- prepTimeFrequency,
181
- prepTimeCadence,
163
+ prepTimeFrequency: isPreSaleEnabled ? 0 : prepTimeFrequency,
164
+ prepTimeCadence: isPreSaleEnabled ? undefined : prepTimeCadence,
182
165
  location: currentLocation,
183
166
  fulfillmentPreference,
184
167
  businessHoursOverrides,
185
168
  gapInMinutes,
186
169
  daysCount: effectiveDaysCount,
187
170
  isCatering: isCateringFlow,
188
- defaultPrepTimeInMinutes,
189
- ...(!isPreSaleEnabled && {
190
- weekDayPrepTimes,
191
- }),
171
+ openingBuffer,
172
+ closingBuffer,
173
+ estimatedDeliveryMinutes,
192
174
  ...(preSaleHoursOverride && { preSaleHoursOverride }),
193
175
  ...(isPreSaleEnabled && { endDate: preSaleDates.endDate }),
194
176
  });
@@ -1 +1 @@
1
- {"version":3,"file":"get-schedules.js","sourceRoot":"","sources":["../../src/schedule/get-schedules.ts"],"names":[],"mappings":";;AAoLA,oCAmIC;AAvTD,uCAAsD;AACtD,4CAKsB;AAStB,4DAA6E;AAC7E,gDAA8D;AAC9D,wCAA6E;AAC7E,8DAAuE;AACvE,yCAAiE;AAEjE,+EAA+E;AAE/E,SAAS,cAAc,CAAC,SAAqB;IAC5C,OAAO;QACN,cAAc,EAAE,SAAS,CAAC,MAAM;QAChC,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QACtD,oBAAoB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;QAClE,WAAW,EAAE,KAAK,CAAC,IAAI,CACtB,IAAI,GAAG,CACN,SAAS;aACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC;aACtC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAC3C,CACD;KACD,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC3B,aAAwC,EACxC,QAAgB;IAEhB,OAAO;QACN,SAAS,EAAE,aAAa,EAAE,cAAc;YACvC,CAAC,CAAC,IAAA,4BAAqB,EAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC;YAC/D,CAAC,CAAC,IAAI,IAAI,EAAE;QACb,OAAO,EAAE,aAAa,EAAE,YAAY;YACnC,CAAC,CAAC,IAAA,4BAAqB,EAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC;YAC7D,CAAC,CAAC,IAAI,IAAI,EAAE;KACb,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC/B,aAAwC,EACxC,cAAuB;IAEvB,IACC,aAAa;QACb,CAAC,aAAa,CAAC,mBAAmB;QAClC,cAAc;QACd,aAAa,CAAC,cAAc;QAC5B,aAAa,CAAC,YAAY,EACzB,CAAC;QACF,OAAO;YACN;gBACC,SAAS,EAAE,aAAa,CAAC,cAAc;gBACvC,OAAO,EAAE,aAAa,CAAC,YAAY;aACnC;SACD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,EACzB,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,cAAc,GAMd;IACA,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,cAAc,IAAI,4BAA4B,GAAG,CAAC,EAAE,CAAC;QACxD,OAAO,IAAA,mBAAQ,EAAC,IAAI,IAAI,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,IAAI,EAAE,CAAC;AACnB,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC;AAEpD,SAAS,8BAA8B,CACtC,gBAAwC,EACxC,wBAAgC;IAEhC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,wBAAwB,CAAC;IACvE,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,8BAA8B,CACtC,QAA0B;IAE1B,MAAM,UAAU,GACf,QAAQ,CAAC,eAAe,IAAI,IAAI,IAAI,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC;IACxE,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,MAAM,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;IACrE,OAAO;QACN,GAAG,QAAQ;QACX,eAAe,EAAE,yBAAyB;YACzC,CAAC,CAAC,6BAAiB,CAAC,GAAG;YACvB,CAAC,CAAC,6BAAiB,CAAC,MAAM;QAC3B,iBAAiB,EAAE,yBAAyB;YAC3C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,GAAG,2BAAe,CAAC;YAC1D,CAAC,CAAC,CAAC,QAAQ,EAAE,iBAAiB,IAAI,CAAC,CAAC;KACrC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC7B,gBAAkC,EAClC,SAAqB,EACrB,cAAuB,EACvB,qBAAyD;IAEzD,IAAI,QAA0B,CAAC;IAE/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,MAAM,YAAY,GACjB,gBAAgB,CAAC,eAAe,KAAK,6BAAiB,CAAC,GAAG,CAAC;QAC5D,QAAQ,GAAG;YACV,GAAG,gBAAgB;YACnB,GAAG,CAAC,YAAY,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;SAC7C,CAAC;IACH,CAAC;SAAM,CAAC;QACP,MAAM,sBAAsB,GAAG,IAAA,oCAAyB,EAAC;YACxD,KAAK,EAAE,SAAS;YAChB,eAAe,EAAE,gBAAgB,CAAC,eAAe;YACjD,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;SACrD,CAAC,CAAC;QACH,QAAQ,GAAG;YACV,GAAG,gBAAgB;YACnB,GAAG,sBAAsB;SACzB,CAAC;IACH,CAAC;IACD,MAAM,EAAE,wBAAwB,GAAG,CAAC,EAAE,GAAG,gBAAgB,CAAC;IAC1D,IACC,qBAAqB,KAAK,6BAAiB,CAAC,QAAQ;QACpD,wBAAwB,GAAG,CAAC,EAC3B,CAAC;QACF,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACrD,QAAQ,GAAG;YACV,GAAG,QAAQ;YACX,gBAAgB,EAAE,8BAA8B,CAC/C,YAAY,EACZ,gBAAgB,CAAC,wBAAwB,IAAI,CAAC,CAC9C;SACD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,+EAA+E;AAE/E,SAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,cAAc,GAAG,KAAK,GACF;IACpB,MAAM,EACL,YAAY,EACZ,eAAe,EACf,qBAAqB,EAAE,SAAS,GAAG,CAAC,EACpC,mBAAmB,EACnB,aAAa,GACb,GAAG,KAAK,CAAC;IAEV,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,gBAAgB,GAAG,qBAAqB,CAC7C,8BAA8B,CAAC,gBAAgB,CAAC,EAChD,SAAS,EACT,cAAc,EACd,qBAAqB,CACrB,CAAC;IAEF,MAAM,EACL,YAAY,EACZ,SAAS,EAAE,qBAAqB,EAChC,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,4BAA4B,GAAG,CAAC,GAChC,GAAG,gBAAgB,CAAC;IAErB,MAAM,wBAAwB,GAC7B,gBAAgB,CAAC,wBAAwB,IAAI,wCAA4B,CAAC;IAE3E,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAE7E,MAAM,sBAAsB,GAC3B,IAAA,mDAAkC,EAAC,KAAK,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAC1E,eAAe,CAAC,WAAW,CAC3B,IAAI,EAAE,CAAC;IAET,MAAM,cAAc,GAAG,CAAC,QAA6B,EAAE,EAAE,CACxD,IAAA,6CAA2B,EAAC;QAC3B,QAAQ;QACR,SAAS;QACT,eAAe,EAAE,IAAI,CAAC,WAAW;KACjC,CAAC,CAAC;IACJ,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,2EAA2E;IAC3E,IACC,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACnD,mBAAmB,EAAE,MAAM;QAC3B,CAAC,cAAc,EACd,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAA,4BAAqB,EAC9C,mBAAmB,EAAE,WAAW,EAChC,mBAAmB,EAAE,aAAa,CAClC,CAAC;QAEF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAA,8CAAmC,EAAC;gBACpD,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBAC/B,QAAQ,EAAE,eAAe;gBACzB,qBAAqB;gBACrB,sBAAsB;gBACtB,YAAY;gBACZ,SAAS,EAAE,CAAC;gBACZ,YAAY,EAAE,iBAAiB;gBAC/B,wBAAwB;aACxB,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,OAAO;oBACN,QAAQ,EAAE,gBAAgB;oBAC1B,wBAAwB,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC;iBACrD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,wBAAwB,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;YACxD,CAAC;QACF,CAAC;IACF,CAAC;IAED,2EAA2E;IAC3E,MAAM,gBAAgB,GACrB,CAAC,aAAa,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC;IAC5E,MAAM,YAAY,GAAG,mBAAmB,CACvC,aAAa,EACb,eAAe,CAAC,QAAQ,CACxB,CAAC;IACF,MAAM,oBAAoB,GAAG,uBAAuB,CACnD,aAAa,EACb,IAAI,CAAC,cAAc,CACnB,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,cAAc,CAAC;IAC3E,MAAM,kBAAkB,GAAG,gBAAgB;QAC1C,CAAC,CAAC,IAAA,2BAAgB,EAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;QACpE,CAAC,CAAC,YAAY;YACb,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,QAAQ,GAAG,IAAA,8CAAmC,EAAC;QACpD,WAAW,EAAE,gBAAgB,CAAC;YAC7B,gBAAgB,EAAE,YAAY,CAAC,SAAS;YACxC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,4BAA4B;YAC5B,cAAc;SACd,CAAC;QACF,iBAAiB;QACjB,eAAe;QACf,QAAQ,EAAE,eAAe;QACzB,qBAAqB;QACrB,sBAAsB;QACtB,YAAY;QACZ,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,cAAc;QAC1B,wBAAwB;QACxB,GAAG,CAAC,CAAC,gBAAgB,IAAI;YACxB,gBAAgB;SAChB,CAAC;QACF,GAAG,CAAC,oBAAoB,IAAI,EAAE,oBAAoB,EAAE,CAAC;QACrD,GAAG,CAAC,gBAAgB,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;KAC1D,CAAC,CAAC;IAEH,OAAO;QACN,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;QAClC,wBAAwB;KACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"get-schedules.js","sourceRoot":"","sources":["../../src/schedule/get-schedules.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type { FulfillmentSchedule, GenerateLocationFulfillmentScheduleParams } from "../types";
2
- export declare function generateLocationFulfillmentSchedule({ startDate, currentDate, prepTimeFrequency, prepTimeCadence, weekDayPrepTimes, defaultPrepTimeInMinutes, location, fulfillmentPreference, businessHoursOverrides, preSaleHoursOverride, gapInMinutes, daysCount, preSaleDates, endDate, isCatering, }: GenerateLocationFulfillmentScheduleParams): FulfillmentSchedule;
2
+ export declare function generateLocationFulfillmentSchedule({ startDate, currentDate, prepTimeFrequency, prepTimeCadence, location, fulfillmentPreference, businessHoursOverrides, preSaleHoursOverride, gapInMinutes, daysCount, preSaleDates, endDate, isCatering, openingBuffer, closingBuffer, estimatedDeliveryMinutes, }: GenerateLocationFulfillmentScheduleParams): FulfillmentSchedule;
3
3
  //# sourceMappingURL=location.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../src/schedule/location.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,mBAAmB,EACnB,yCAAyC,EACzC,MAAM,UAAU,CAAC;AAKlB,wBAAgB,mCAAmC,CAAC,EACnD,SAAS,EACT,WAAwB,EACxB,iBAAqB,EACrB,eAA0C,EAC1C,gBAAgB,EAChB,wBAAwB,EACxB,QAAQ,EACR,qBAAqB,EACrB,sBAA2B,EAC3B,oBAAoB,EACpB,YAAY,EACZ,SAAa,EACb,YAAiB,EACjB,OAAc,EACd,UAAkB,GAClB,EAAE,yCAAyC,GAAG,mBAAmB,CAgCjE"}
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../src/schedule/location.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,mBAAmB,EACnB,yCAAyC,EACzC,MAAM,UAAU,CAAC;AAKlB,wBAAgB,mCAAmC,CAAC,EACnD,SAAS,EACT,WAAwB,EACxB,iBAAqB,EACrB,eAA0C,EAC1C,QAAQ,EACR,qBAAqB,EACrB,sBAA2B,EAC3B,oBAAoB,EACpB,YAAY,EACZ,SAAa,EACb,YAAiB,EACjB,OAAc,EACd,UAAkB,EAClB,aAAiB,EACjB,aAAiB,EACjB,wBAA4B,GAC5B,EAAE,yCAAyC,GAAG,mBAAmB,CA6CjE"}
@@ -6,9 +6,15 @@ const constants_1 = require("../constants");
6
6
  const business_hours_1 = require("../utils/business-hours");
7
7
  const available_dates_1 = require("./available-dates");
8
8
  const generate_1 = require("./generate");
9
- function generateLocationFulfillmentSchedule({ startDate, currentDate = new Date(), prepTimeFrequency = 0, prepTimeCadence = constants_1.PREP_TIME_CADENCE.MINUTE, weekDayPrepTimes, defaultPrepTimeInMinutes, location, fulfillmentPreference, businessHoursOverrides = [], preSaleHoursOverride, gapInMinutes, daysCount = 1, preSaleDates = [], endDate = null, isCatering = false, }) {
9
+ function generateLocationFulfillmentSchedule({ startDate, currentDate = new Date(), prepTimeFrequency = 0, prepTimeCadence = constants_1.PREP_TIME_CADENCE.MINUTE, location, fulfillmentPreference, businessHoursOverrides = [], preSaleHoursOverride, gapInMinutes, daysCount = 1, preSaleDates = [], endDate = null, isCatering = false, openingBuffer = 0, closingBuffer = 0, estimatedDeliveryMinutes = 0, }) {
10
10
  const isDaysCadence = prepTimeCadence === constants_1.PREP_TIME_CADENCE.DAY;
11
11
  const businessHours = (0, business_hours_1.getLocationBusinessHoursForFulfillment)(location, fulfillmentPreference, isCatering);
12
+ // DAY cadence: prepTimeFrequency is already in days.
13
+ // MINUTE cadence: convert minutes - full days to skip, remainder applied on target day.
14
+ const minuteCadenceDaysSkipped = !isDaysCadence
15
+ ? Math.floor(prepTimeFrequency / constants_1.MINUTES_PER_DAY)
16
+ : 0;
17
+ const hasDaySkipping = isDaysCadence || minuteCadenceDaysSkipped > 0;
12
18
  const dates = (0, available_dates_1.getNextAvailableDates)({
13
19
  startDate: startDate || currentDate,
14
20
  businessHours,
@@ -17,14 +23,14 @@ function generateLocationFulfillmentSchedule({ startDate, currentDate = new Date
17
23
  datesCount: daysCount,
18
24
  preSaleDates,
19
25
  endDate,
20
- isDaysCadence,
26
+ isDaysCadence: hasDaySkipping,
21
27
  });
22
- // If prepTimeCadence is days, we need to skip opening days by prepTimeFrequency
23
- const availableDates = isDaysCadence ? dates.slice(prepTimeFrequency) : dates;
28
+ const daysToSkip = isDaysCadence
29
+ ? prepTimeFrequency
30
+ : minuteCadenceDaysSkipped;
31
+ const availableDates = daysToSkip > 0 ? dates.slice(daysToSkip) : dates;
24
32
  return (0, generate_1.generateSchedule)({
25
33
  currentDate: (0, date_fns_1.roundToNearestMinutes)(currentDate),
26
- weekDayPrepTimes,
27
- defaultPrepTimeInMinutes,
28
34
  timeZone: location.timezone,
29
35
  dates: availableDates,
30
36
  businessHours,
@@ -32,6 +38,10 @@ function generateLocationFulfillmentSchedule({ startDate, currentDate = new Date
32
38
  preSaleHoursOverride,
33
39
  gapInMinutes,
34
40
  prepTimeCadence,
41
+ prepTimeFrequency,
42
+ openingBuffer,
43
+ closingBuffer,
44
+ estimatedDeliveryMinutes,
35
45
  });
36
46
  }
37
47
  //# sourceMappingURL=location.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"location.js","sourceRoot":"","sources":["../../src/schedule/location.ts"],"names":[],"mappings":";;AAUA,kFAgDC;AA1DD,uCAAiD;AACjD,4CAAiD;AAKjD,4DAAiF;AACjF,uDAA0D;AAC1D,yCAA8C;AAE9C,SAAgB,mCAAmC,CAAC,EACnD,SAAS,EACT,WAAW,GAAG,IAAI,IAAI,EAAE,EACxB,iBAAiB,GAAG,CAAC,EACrB,eAAe,GAAG,6BAAiB,CAAC,MAAM,EAC1C,gBAAgB,EAChB,wBAAwB,EACxB,QAAQ,EACR,qBAAqB,EACrB,sBAAsB,GAAG,EAAE,EAC3B,oBAAoB,EACpB,YAAY,EACZ,SAAS,GAAG,CAAC,EACb,YAAY,GAAG,EAAE,EACjB,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,KAAK,GACyB;IAC3C,MAAM,aAAa,GAAG,eAAe,KAAK,6BAAiB,CAAC,GAAG,CAAC;IAChE,MAAM,aAAa,GAAG,IAAA,uDAAsC,EAC3D,QAAQ,EACR,qBAAqB,EACrB,UAAU,CACV,CAAC;IAEF,MAAM,KAAK,GAAG,IAAA,uCAAqB,EAAC;QACnC,SAAS,EAAE,SAAS,IAAI,WAAW;QACnC,aAAa;QACb,sBAAsB;QACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,SAAS;QACrB,YAAY;QACZ,OAAO;QACP,aAAa;KACb,CAAC,CAAC;IACH,gFAAgF;IAChF,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9E,OAAO,IAAA,2BAAgB,EAAC;QACvB,WAAW,EAAE,IAAA,gCAAqB,EAAC,WAAW,CAAC;QAC/C,gBAAgB;QAChB,wBAAwB;QACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,KAAK,EAAE,cAAc;QACrB,aAAa;QACb,sBAAsB;QACtB,oBAAoB;QACpB,YAAY;QACZ,eAAe;KACf,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"location.js","sourceRoot":"","sources":["../../src/schedule/location.ts"],"names":[],"mappings":";;AAUA,kFA8DC;AAxED,uCAAiD;AACjD,4CAAkE;AAKlE,4DAAiF;AACjF,uDAA0D;AAC1D,yCAA8C;AAE9C,SAAgB,mCAAmC,CAAC,EACnD,SAAS,EACT,WAAW,GAAG,IAAI,IAAI,EAAE,EACxB,iBAAiB,GAAG,CAAC,EACrB,eAAe,GAAG,6BAAiB,CAAC,MAAM,EAC1C,QAAQ,EACR,qBAAqB,EACrB,sBAAsB,GAAG,EAAE,EAC3B,oBAAoB,EACpB,YAAY,EACZ,SAAS,GAAG,CAAC,EACb,YAAY,GAAG,EAAE,EACjB,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,KAAK,EAClB,aAAa,GAAG,CAAC,EACjB,aAAa,GAAG,CAAC,EACjB,wBAAwB,GAAG,CAAC,GACe;IAC3C,MAAM,aAAa,GAAG,eAAe,KAAK,6BAAiB,CAAC,GAAG,CAAC;IAChE,MAAM,aAAa,GAAG,IAAA,uDAAsC,EAC3D,QAAQ,EACR,qBAAqB,EACrB,UAAU,CACV,CAAC;IAEF,qDAAqD;IACrD,wFAAwF;IACxF,MAAM,wBAAwB,GAAG,CAAC,aAAa;QAC9C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,2BAAe,CAAC;QACjD,CAAC,CAAC,CAAC,CAAC;IACL,MAAM,cAAc,GAAG,aAAa,IAAI,wBAAwB,GAAG,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,IAAA,uCAAqB,EAAC;QACnC,SAAS,EAAE,SAAS,IAAI,WAAW;QACnC,aAAa;QACb,sBAAsB;QACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,SAAS;QACrB,YAAY;QACZ,OAAO;QACP,aAAa,EAAE,cAAc;KAC7B,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,aAAa;QAC/B,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,wBAAwB,CAAC;IAC5B,MAAM,cAAc,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAExE,OAAO,IAAA,2BAAgB,EAAC;QACvB,WAAW,EAAE,IAAA,gCAAqB,EAAC,WAAW,CAAC;QAC/C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,KAAK,EAAE,cAAc;QACrB,aAAa;QACb,sBAAsB;QACtB,oBAAoB;QACpB,YAAY;QACZ,eAAe;QACf,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,wBAAwB;KACxB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { CateringPrepTimeResult, GetCateringPrepTimeParams } from "../types";
2
2
  /**
3
- * Derives prep time config (cadence, frequency, weekDayPrepTimes) from cart items for catering flow.
3
+ * Derives prep time config (cadence, frequency) from cart items for catering flow.
4
4
  * DAY cadence has priority; if any item uses days, returns max day frequency.
5
5
  * Otherwise returns HOUR cadence with max hour frequency across items.
6
6
  * When items are empty or have no catering prep time, falls back to params (e.g. from prepTimeSettings).
@@ -1 +1 @@
1
- {"version":3,"file":"catering.d.ts","sourceRoot":"","sources":["../../src/utils/catering.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,UAAU,CAAC;AAgClB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,yBAAyB,GAC/B,sBAAsB,CA2CxB"}
1
+ {"version":3,"file":"catering.d.ts","sourceRoot":"","sources":["../../src/utils/catering.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,UAAU,CAAC;AAiClB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,yBAAyB,GAC/B,sBAAsB,CA2CxB"}
@@ -2,28 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCateringPrepTimeConfig = getCateringPrepTimeConfig;
4
4
  const constants_1 = require("../constants");
5
- const getTotalCateringPrepTimeInHours = (prepTimeCadence, prepTimeFrequency) => {
6
- if (prepTimeCadence === constants_1.PREP_TIME_CADENCE.MINUTE) {
7
- return Math.floor(prepTimeFrequency / 60);
8
- }
9
- if (prepTimeCadence === constants_1.PREP_TIME_CADENCE.HOUR) {
10
- return prepTimeFrequency;
11
- }
12
- return prepTimeFrequency * 24;
13
- };
14
5
  /**
15
- * Catering prep time is applied to the first slot only (not weekDayPrepTimes).
6
+ * Catering prep time is applied to the first slot only.
7
+ * DAY cadence is preserved so it flows through the same business-day-skip
8
+ * logic (dates.slice) as non-catering orders.
9
+ * HOUR cadence is converted to minutes so the standard minute-cadence
10
+ * rollover logic handles it.
16
11
  */
17
12
  function buildCateringPrepTimeResult(prepTimeCadence, prepTimeFrequency) {
13
+ if (prepTimeCadence === constants_1.PREP_TIME_CADENCE.DAY) {
14
+ return {
15
+ prepTimeCadence: constants_1.PREP_TIME_CADENCE.DAY,
16
+ prepTimeFrequency,
17
+ };
18
+ }
19
+ // Convert HOUR → minutes so the existing minute-cadence rollover logic
20
+ // in generateSchedule handles it uniformly.
21
+ const frequencyInMinutes = prepTimeCadence === constants_1.PREP_TIME_CADENCE.HOUR
22
+ ? prepTimeFrequency * 60
23
+ : prepTimeFrequency;
18
24
  return {
19
- prepTimeCadence: "minute",
20
- prepTimeFrequency: 0,
21
- weekDayPrepTimes: {},
22
- totalCateringPrepTimeInHours: getTotalCateringPrepTimeInHours(prepTimeCadence, prepTimeFrequency),
25
+ prepTimeCadence: constants_1.PREP_TIME_CADENCE.MINUTE,
26
+ prepTimeFrequency: frequencyInMinutes,
23
27
  };
24
28
  }
25
29
  /**
26
- * Derives prep time config (cadence, frequency, weekDayPrepTimes) from cart items for catering flow.
30
+ * Derives prep time config (cadence, frequency) from cart items for catering flow.
27
31
  * DAY cadence has priority; if any item uses days, returns max day frequency.
28
32
  * Otherwise returns HOUR cadence with max hour frequency across items.
29
33
  * When items are empty or have no catering prep time, falls back to params (e.g. from prepTimeSettings).
@@ -1 +1 @@
1
- {"version":3,"file":"catering.js","sourceRoot":"","sources":["../../src/utils/catering.ts"],"names":[],"mappings":";;AA0CA,8DA6CC;AAvFD,4CAAiD;AAMjD,MAAM,+BAA+B,GAAG,CACvC,eAA0D,EAC1D,iBAAyB,EACxB,EAAE;IACH,IAAI,eAAe,KAAK,6BAAiB,CAAC,MAAM,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,eAAe,KAAK,6BAAiB,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,iBAAiB,CAAC;IAC1B,CAAC;IACD,OAAO,iBAAiB,GAAG,EAAE,CAAC;AAC/B,CAAC,CAAC;AACF;;GAEG;AACH,SAAS,2BAA2B,CACnC,eAA0D,EAC1D,iBAAyB;IAEzB,OAAO;QACN,eAAe,EAAE,QAAQ;QACzB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,EAAE;QACpB,4BAA4B,EAAE,+BAA+B,CAC5D,eAAe,EACf,iBAAiB,CACjB;KACD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CACxC,MAAiC;IAEjC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,2BAA2B,CACjC,MAAM,CAAC,eAAe,IAAI,6BAAiB,CAAC,IAAI,EAChD,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAC7B,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC;QAC7D,IAAI,OAAO,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI;YAAE,SAAS;QAEnD,IAAI,OAAO,KAAK,6BAAiB,CAAC,GAAG,EAAE,CAAC;YACvC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,KAAK,6BAAiB,CAAC,IAAI,EAAE,CAAC;YAC/C,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,2BAA2B,CACjC,6BAAiB,CAAC,GAAG,EACrB,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAC3B,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,2BAA2B,CACjC,6BAAiB,CAAC,IAAI,EACtB,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAC5B,CAAC;IACH,CAAC;IAED,OAAO,2BAA2B,CACjC,MAAM,CAAC,eAAe,IAAI,6BAAiB,CAAC,IAAI,EAChD,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"catering.js","sourceRoot":"","sources":["../../src/utils/catering.ts"],"names":[],"mappings":";;AA2CA,8DA6CC;AAxFD,4CAAiD;AAMjD;;;;;;GAMG;AACH,SAAS,2BAA2B,CACnC,eAA0D,EAC1D,iBAAyB;IAEzB,IAAI,eAAe,KAAK,6BAAiB,CAAC,GAAG,EAAE,CAAC;QAC/C,OAAO;YACN,eAAe,EAAE,6BAAiB,CAAC,GAAG;YACtC,iBAAiB;SACjB,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,4CAA4C;IAC5C,MAAM,kBAAkB,GACvB,eAAe,KAAK,6BAAiB,CAAC,IAAI;QACzC,CAAC,CAAC,iBAAiB,GAAG,EAAE;QACxB,CAAC,CAAC,iBAAiB,CAAC;IAEtB,OAAO;QACN,eAAe,EAAE,6BAAiB,CAAC,MAAM;QACzC,iBAAiB,EAAE,kBAAkB;KACrC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CACxC,MAAiC;IAEjC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,2BAA2B,CACjC,MAAM,CAAC,eAAe,IAAI,6BAAiB,CAAC,IAAI,EAChD,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAC7B,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC;QAC7D,IAAI,OAAO,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI;YAAE,SAAS;QAEnD,IAAI,OAAO,KAAK,6BAAiB,CAAC,GAAG,EAAE,CAAC;YACvC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,KAAK,6BAAiB,CAAC,IAAI,EAAE,CAAC;YAC/C,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,2BAA2B,CACjC,6BAAiB,CAAC,GAAG,EACrB,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAC3B,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,2BAA2B,CACjC,6BAAiB,CAAC,IAAI,EACtB,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAC5B,CAAC;IACH,CAAC;IAED,OAAO,2BAA2B,CACjC,MAAM,CAAC,eAAe,IAAI,6BAAiB,CAAC,IAAI,EAChD,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAC7B,CAAC;AACH,CAAC"}
@@ -9,6 +9,7 @@ export declare function isTomorrowInTimeZone(date: Date, timeZone: string): bool
9
9
  export declare function toDateStringInTimeZone(date: Date, timeZone: string): string;
10
10
  export declare function isSameDateInTimeZone(dateLeft: Date, dateRight: Date, timeZone: string): boolean;
11
11
  export declare function isMidnightTransition(endDate: Date, startDateNextDay: Date, timeZone: string): boolean;
12
+ export declare function lastShiftEndsAtMidnight(businessHours: BusinessHour[]): boolean;
12
13
  export declare function isZeroPrepTimeForMidnightShift({ prevDayBusinessHours, businessHour, }: {
13
14
  prevDayBusinessHours: BusinessHour[];
14
15
  businessHour: BusinessHour;
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAiB1E;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,MAAM,EACtB,aAAa,GAAE,IAAiB,GAC9B,IAAI,CAIN;AAED,wBAAgB,qBAAqB,CACpC,iBAAiB,GAAE,MAAM,EAAO,EAChC,mBAAmB,GAAE,MAAM,EAAO,GAChC,IAAI,EAAE,CAeR;AAED,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,IAAI,CAUN;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK1E;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,IAAI,EACd,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAST;AAED,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,IAAI,EACb,gBAAgB,EAAE,IAAI,EACtB,QAAQ,EAAE,MAAM,GACd,OAAO,CAaT;AAED,wBAAgB,8BAA8B,CAAC,EAC9C,oBAAoB,EACpB,YAAY,GACZ,EAAE;IACF,oBAAoB,EAAE,YAAY,EAAE,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;CAC3B,GAAG,OAAO,CAoBV"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAiB1E;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,MAAM,EACtB,aAAa,GAAE,IAAiB,GAC9B,IAAI,CAIN;AAED,wBAAgB,qBAAqB,CACpC,iBAAiB,GAAE,MAAM,EAAO,EAChC,mBAAmB,GAAE,MAAM,EAAO,GAChC,IAAI,EAAE,CAeR;AAED,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,SAAS,EAAE,MAAM,GACf,IAAI,CAUN;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAK1E;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,IAAI,EACd,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAST;AAED,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,IAAI,EACb,gBAAgB,EAAE,IAAI,EACtB,QAAQ,EAAE,MAAM,GACd,OAAO,CAaT;AAED,wBAAgB,uBAAuB,CACtC,aAAa,EAAE,YAAY,EAAE,GAC3B,OAAO,CAIT;AAED,wBAAgB,8BAA8B,CAAC,EAC9C,oBAAoB,EACpB,YAAY,GACZ,EAAE;IACF,oBAAoB,EAAE,YAAY,EAAE,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;CAC3B,GAAG,OAAO,CAoBV"}
package/lib/utils/date.js CHANGED
@@ -9,6 +9,7 @@ exports.isTomorrowInTimeZone = isTomorrowInTimeZone;
9
9
  exports.toDateStringInTimeZone = toDateStringInTimeZone;
10
10
  exports.isSameDateInTimeZone = isSameDateInTimeZone;
11
11
  exports.isMidnightTransition = isMidnightTransition;
12
+ exports.lastShiftEndsAtMidnight = lastShiftEndsAtMidnight;
12
13
  exports.isZeroPrepTimeForMidnightShift = isZeroPrepTimeForMidnightShift;
13
14
  const date_fns_1 = require("date-fns");
14
15
  const timezone_support_1 = require("timezone-support");
@@ -89,6 +90,12 @@ function isMidnightTransition(endDate, startDateNextDay, timeZone) {
89
90
  zonedStartDate.hours === 0 &&
90
91
  zonedStartDate.minutes === 0);
91
92
  }
93
+ function lastShiftEndsAtMidnight(businessHours) {
94
+ if (!businessHours.length)
95
+ return false;
96
+ const lastShift = businessHours[businessHours.length - 1];
97
+ return lastShift.endTime === "24:00" || lastShift.endTime === "23:59";
98
+ }
92
99
  function isZeroPrepTimeForMidnightShift({ prevDayBusinessHours, businessHour, }) {
93
100
  if (!Array.isArray(prevDayBusinessHours) ||
94
101
  prevDayBusinessHours.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perdieminc/time-slots",
3
- "version": "0.0.11",
3
+ "version": "1.0.0",
4
4
  "description": "Generate time slots for scheduling",
5
5
  "keywords": [
6
6
  "time-slots",