@perdieminc/time-slots 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/lib/constants.d.ts +1 -0
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +2 -1
- package/lib/constants.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/schedule/get-schedules.d.ts.map +1 -1
- package/lib/schedule/get-schedules.js +22 -1
- package/lib/schedule/get-schedules.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ Builds the schedule for the current location and fulfillment preference.
|
|
|
40
40
|
| `locations` | List of locations (with `location_id`, `timezone`, and business hours). |
|
|
41
41
|
| `cartItems` | Cart items (used for pre-sale, weekly pre-sale, catering prep time, and category-based filtering). |
|
|
42
42
|
| `fulfillmentPreference` | `"PICKUP"` \| `"DELIVERY"` \| `"CURBSIDE"`. |
|
|
43
|
-
| `prepTimeSettings` | Prep time in minutes, per-weekday overrides, gap, busy times,
|
|
43
|
+
| `prepTimeSettings` | Prep time in minutes, per-weekday overrides, gap, busy times, **fulfillAtBusinessDayStart** (when true, prep is by day; when false, by minutes), and optional delivery buffer. |
|
|
44
44
|
| `currentLocation` | The location to generate the schedule for. |
|
|
45
45
|
| `isCateringFlow` | If `true`, prep time is derived from cart catering config. |
|
|
46
46
|
| `platform` | `"web"` \| `"ios"` \| `"android"` for timezone handling (default `"web"`). |
|
|
@@ -52,7 +52,7 @@ Builds the schedule for the current location and fulfillment preference.
|
|
|
52
52
|
### Types and constants
|
|
53
53
|
|
|
54
54
|
- **Fulfillment:** `FULFILLMENT_TYPES`, `FulfillmentType`, `FulfillmentSchedule`, `DaySchedule`.
|
|
55
|
-
- **Prep time:** `PrepTimeBehaviour` (first shift / every shift / roll), `DEFAULT_PREP_TIME_IN_MINUTES`, `DEFAULT_GAP_IN_MINUTES`, `PrepTimeSettings`, `PrepTimeCadence` (minute / hour / day).
|
|
55
|
+
- **Prep time:** `PrepTimeBehaviour` (first shift / every shift / roll), `DEFAULT_PREP_TIME_IN_MINUTES`, `DEFAULT_GAP_IN_MINUTES`, `MINUTES_PER_DAY`, `PrepTimeSettings`, `PrepTimeCadence` (minute / hour / day).
|
|
56
56
|
- **Store / cart:** `StoreConfig`, `PreSaleConfig`, `WeeklyPreSaleConfig`, `CartItem`, `PrepTimeSettings`, `CateringPrepTimeResult`.
|
|
57
57
|
- **Location / hours:** `LocationLike`, `BusinessHour`, `BusinessHoursOverrideInput` / `Output`, `getLocationsBusinessHoursOverrides`, `getOpeningClosingTime`.
|
|
58
58
|
- **Platform:** `PLATFORM` (web, ios, android).
|
|
@@ -71,14 +71,15 @@ Internal schedule generation uses **`getNextAvailableDates`**-style logic (timez
|
|
|
71
71
|
|
|
72
72
|
## Prep time (high level)
|
|
73
73
|
|
|
74
|
-
Prep time
|
|
74
|
+
Prep time is either **by minutes** or **by day** (e.g. in dashboard, when prep is set to “day”, it is treated as day-based).
|
|
75
75
|
|
|
76
|
-
- **
|
|
77
|
-
- **
|
|
76
|
+
- **By day:** First slot is at **business start** (opening) on the next open day(s). Number of days is derived from `prepTimeInMinutes` (e.g. 1440 min = 1 day).
|
|
77
|
+
- **By minutes:** First slot = order time + prep minutes, within store hours.
|
|
78
|
+
- **Per weekday:** different prep minutes per day via `weekDayPrepTimes` (when not using day-based prep).
|
|
78
79
|
- **Catering:** when `isCateringFlow` is true, cadence and frequency are derived from cart items via `getCateringPrepTimeConfig`.
|
|
79
80
|
- **Delivery:** optional `estimatedDeliveryMinutes` added to weekday prep times for delivery.
|
|
80
81
|
|
|
81
|
-
|
|
82
|
+
QA-friendly test cases (Given / When / Expected) are in [docs/TEST-CASES.md](docs/TEST-CASES.md).
|
|
82
83
|
|
|
83
84
|
## Scripts
|
|
84
85
|
|
package/lib/constants.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare const DEFAULT_TIMEZONE = "America/New_York";
|
|
|
10
10
|
export type FulfillmentType = (typeof FULFILLMENT_TYPES)[keyof typeof FULFILLMENT_TYPES];
|
|
11
11
|
export declare const DEFAULT_GAP_IN_MINUTES = 15;
|
|
12
12
|
export declare const DEFAULT_PREP_TIME_IN_MINUTES = 5;
|
|
13
|
+
export declare const MINUTES_PER_DAY = 1440;
|
|
13
14
|
/**
|
|
14
15
|
* Prep time behaviour when computing first available slot.
|
|
15
16
|
*/
|
package/lib/constants.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
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.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.PrepTimeBehaviour = 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
|
*/
|
|
@@ -12,6 +12,7 @@ exports.FULFILLMENT_TYPES = {
|
|
|
12
12
|
exports.DEFAULT_TIMEZONE = "America/New_York";
|
|
13
13
|
exports.DEFAULT_GAP_IN_MINUTES = 15;
|
|
14
14
|
exports.DEFAULT_PREP_TIME_IN_MINUTES = 5;
|
|
15
|
+
exports.MINUTES_PER_DAY = 1440;
|
|
15
16
|
/**
|
|
16
17
|
* Prep time behaviour when computing first available slot.
|
|
17
18
|
*/
|
package/lib/constants.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export type { FulfillmentType, PrepTimeBehaviourType } from "./constants";
|
|
|
2
2
|
export { DEFAULT_GAP_IN_MINUTES, DEFAULT_PREP_TIME_IN_MINUTES, FULFILLMENT_TYPES, PLATFORM, PrepTimeBehaviour, } from "./constants";
|
|
3
3
|
export { getSchedules } from "./schedule/get-schedules";
|
|
4
4
|
export * from "./types";
|
|
5
|
+
export type { BusinessHour, BusinessHourInput, BusinessHoursOverrideInput, BusinessHoursOverrideOutput, } from "./types/business-hours";
|
|
5
6
|
export { getLocationsBusinessHoursOverrides } from "./utils/business-hours";
|
|
6
7
|
export { getCateringPrepTimeConfig } from "./utils/catering";
|
|
7
8
|
export { getPreSalePickupDates, isTodayInTimeZone, isTomorrowInTimeZone, overrideTimeZoneOnUTC, } from "./utils/date";
|
package/lib/index.d.ts.map
CHANGED
|
@@ -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,QAAQ,EACR,iBAAiB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,cAAc,SAAS,CAAC;AACxB,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,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACN,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,EACjB,QAAQ,EACR,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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,yCAMqB;AALpB,mHAAA,sBAAsB,OAAA;AACtB,yHAAA,4BAA4B,OAAA;AAC5B,8GAAA,iBAAiB,OAAA;AACjB,qGAAA,QAAQ,OAAA;AACR,8GAAA,iBAAiB,OAAA;AAElB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,0CAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,yCAMqB;AALpB,mHAAA,sBAAsB,OAAA;AACtB,yHAAA,4BAA4B,OAAA;AAC5B,8GAAA,iBAAiB,OAAA;AACjB,qGAAA,QAAQ,OAAA;AACR,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-schedules.d.ts","sourceRoot":"","sources":["../../src/schedule/get-schedules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-schedules.d.ts","sourceRoot":"","sources":["../../src/schedule/get-schedules.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAGX,kBAAkB,EAClB,kBAAkB,EAGlB,MAAM,UAAU,CAAC;AA6JlB,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,cAAsB,EACtB,QAAuB,GACvB,EAAE,kBAAkB,GAAG,kBAAkB,CA4GzC"}
|
|
@@ -57,6 +57,27 @@ function addEstimatedDeliveryToWeekDays(weekDayPrepTimes, estimatedDeliveryMinut
|
|
|
57
57
|
}
|
|
58
58
|
return result;
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns prep time cadence and frequency for schedule generation.
|
|
62
|
+
* If prepTimeCadence and prepTimeFrequency exist on settings (e.g. from catering), returns them.
|
|
63
|
+
* Otherwise derives from fulfillAtBusinessDayStart and prepTimeInMinutes (days = prepTimeInMinutes / MINUTES_PER_DAY).
|
|
64
|
+
*/
|
|
65
|
+
function getPrepTimeCadenceAndFrequency(settings) {
|
|
66
|
+
const hasCadence = settings.prepTimeCadence != null && settings.prepTimeFrequency != null;
|
|
67
|
+
if (hasCadence) {
|
|
68
|
+
return settings;
|
|
69
|
+
}
|
|
70
|
+
const fulfillAtBusinessDayStart = settings.fulfillAtBusinessDayStart;
|
|
71
|
+
return {
|
|
72
|
+
...settings,
|
|
73
|
+
prepTimeCadence: fulfillAtBusinessDayStart
|
|
74
|
+
? constants_1.PREP_TIME_CADENCE.DAY
|
|
75
|
+
: constants_1.PREP_TIME_CADENCE.MINUTE,
|
|
76
|
+
prepTimeFrequency: fulfillAtBusinessDayStart
|
|
77
|
+
? Math.floor(settings.prepTimeInMinutes / constants_1.MINUTES_PER_DAY)
|
|
78
|
+
: (settings?.prepTimeInMinutes ?? 0),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
60
81
|
/**
|
|
61
82
|
* Resolves prep time config: for catering flow uses cart-derived cadence/frequency;
|
|
62
83
|
* when fulfillment is DELIVERY, adds estimatedDeliveryMinutes to all weekday prep times.
|
|
@@ -97,7 +118,7 @@ function resolvePrepTimeConfig(prepTimeSettings, cartItems, isCateringFlow, fulf
|
|
|
97
118
|
function getSchedules({ store, locations, cartItems, fulfillmentPreference, prepTimeSettings, currentLocation, isCateringFlow = false, platform = constants_1.PLATFORM.WEB, }) {
|
|
98
119
|
const { isAsapOrders, isSameDayOrders, max_future_order_days: daysCount = 7, weeklyPreSaleConfig, preSaleConfig, } = store;
|
|
99
120
|
const cart = deriveCartInfo(cartItems);
|
|
100
|
-
const resolvedPrepTime = resolvePrepTimeConfig(prepTimeSettings, cartItems, isCateringFlow, fulfillmentPreference, currentLocation?.timezone);
|
|
121
|
+
const resolvedPrepTime = resolvePrepTimeConfig(getPrepTimeCadenceAndFrequency(prepTimeSettings), cartItems, isCateringFlow, fulfillmentPreference, currentLocation?.timezone);
|
|
101
122
|
const { gapInMinutes, busyTimes: busyTimesByLocationId, prepTimeFrequency, prepTimeCadence, weekDayPrepTimes, } = resolvedPrepTime;
|
|
102
123
|
const busyTimes = busyTimesByLocationId?.[currentLocation.location_id] ?? [];
|
|
103
124
|
const businessHoursOverrides = (0, business_hours_1.getLocationsBusinessHoursOverrides)(store.businessHoursOverrides, locations)[currentLocation.location_id] ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-schedules.js","sourceRoot":"","sources":["../../src/schedule/get-schedules.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"get-schedules.js","sourceRoot":"","sources":["../../src/schedule/get-schedules.ts"],"names":[],"mappings":"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"}
|