@pisell/pisellos 2.3.74 → 2.3.76
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/dist/core/index.js +6 -10
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/example.js +3 -26
- package/dist/model/strategy/strategy-example.js +5 -19
- package/dist/modules/Cart/index.js +0 -3
- package/dist/modules/Cart/utils/cartProduct.js +0 -1
- package/dist/modules/Date/index.js +1 -5
- package/dist/modules/Discount/index.js +2 -4
- package/dist/modules/OpenData/index.js +0 -2
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +75 -91
- package/dist/modules/Order/types.d.ts +3 -1
- package/dist/modules/Payment/index.js +97 -162
- package/dist/modules/Rules/index.js +1 -4
- package/dist/modules/Schedule/index.js +0 -1
- package/dist/modules/Schedule/utils.js +0 -1
- package/dist/modules/Step/index.js +0 -1
- package/dist/plugins/request.js +1 -4
- package/dist/plugins/window.js +2 -6
- package/dist/server/index.js +97 -129
- package/dist/server/modules/menu/index.js +32 -41
- package/dist/server/modules/order/index.js +2 -4
- package/dist/server/modules/products/index.js +24 -42
- package/dist/server/modules/quotation/index.js +29 -38
- package/dist/server/modules/resource/index.js +3 -4
- package/dist/server/modules/schedule/index.js +27 -35
- package/dist/server/utils/product.js +0 -1
- package/dist/solution/BaseSales/index.js +100 -72
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
- package/dist/solution/BookingByStep/index.js +7 -59
- package/dist/solution/BookingByStep/utils/capacity.js +1 -11
- package/dist/solution/BookingByStep/utils/resources.js +1 -3
- package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
- package/dist/solution/BookingTicket/index.js +0 -2
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
- package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
- package/dist/solution/BuyTickets/index.js +9 -12
- package/dist/solution/Checkout/index.js +177 -252
- package/dist/solution/Checkout/utils/index.js +4 -16
- package/dist/solution/RegisterAndLogin/index.js +30 -76
- package/dist/solution/ScanOrder/index.js +50 -60
- package/dist/solution/ShopDiscount/index.js +2 -7
- package/dist/solution/VenueBooking/index.js +45 -55
- package/dist/utils/task.js +15 -18
- package/dist/utils/watch.js +0 -1
- package/lib/apis/picoding.js +2 -0
- package/lib/core/index.js +134 -134
- package/lib/effects/index.js +46 -57
- package/lib/index.js +82 -49
- package/lib/model/index.js +14 -21
- package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
- package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
- package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
- package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
- package/lib/model/strategy/adapter/index.js +100 -64
- package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
- package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
- package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
- package/lib/model/strategy/adapter/itemRule/index.js +83 -57
- package/lib/model/strategy/adapter/itemRule/type.js +97 -36
- package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
- package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
- package/lib/model/strategy/adapter/promotion/examples.js +222 -234
- package/lib/model/strategy/adapter/promotion/index.js +1 -0
- package/lib/model/strategy/adapter/promotion/type.js +243 -36
- package/lib/model/strategy/adapter/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
- package/lib/model/strategy/adapter/walletPass/example.js +217 -190
- package/lib/model/strategy/adapter/walletPass/index.js +75 -51
- package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
- package/lib/model/strategy/adapter/walletPass/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
- package/lib/model/strategy/engine.js +270 -168
- package/lib/model/strategy/index.js +49 -34
- package/lib/model/strategy/strategy-example.js +243 -239
- package/lib/model/strategy/type.js +100 -40
- package/lib/modules/Account/index.js +39 -53
- package/lib/modules/Account/types.js +20 -33
- package/lib/modules/AccountList/index.js +116 -154
- package/lib/modules/AccountList/types.js +30 -31
- package/lib/modules/AccountList/utils.js +18 -30
- package/lib/modules/BaseModule.js +23 -42
- package/lib/modules/BookingContext/index.js +158 -136
- package/lib/modules/BookingContext/types.js +46 -32
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
- package/lib/modules/BookingContext/utils/flexible.js +38 -55
- package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
- package/lib/modules/BookingContext/utils/index.js +124 -41
- package/lib/modules/BookingContext/utils/noResource.js +58 -70
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
- package/lib/modules/BookingContext/utils/productExtend.js +202 -155
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
- package/lib/modules/BookingContext/utils/resources.js +209 -167
- package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
- package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
- package/lib/modules/Cart/index.js +170 -124
- package/lib/modules/Cart/types.js +46 -51
- package/lib/modules/Cart/utils/cartAccount.js +40 -39
- package/lib/modules/Cart/utils/cartDate.js +56 -61
- package/lib/modules/Cart/utils/cartDiscount.js +28 -33
- package/lib/modules/Cart/utils/cartNote.js +27 -32
- package/lib/modules/Cart/utils/cartProduct.js +321 -251
- package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
- package/lib/modules/Cart/utils/cartResource.js +70 -78
- package/lib/modules/Cart/utils/changePrice.js +22 -50
- package/lib/modules/Cart/utils/index.js +106 -48
- package/lib/modules/Customer/constants.js +13 -34
- package/lib/modules/Customer/index.js +235 -172
- package/lib/modules/Customer/types.js +38 -35
- package/lib/modules/Date/index.js +116 -115
- package/lib/modules/Date/types.js +16 -28
- package/lib/modules/Date/utils.js +174 -123
- package/lib/modules/Discount/index.js +122 -127
- package/lib/modules/Discount/types.js +9 -31
- package/lib/modules/Guests/index.js +30 -56
- package/lib/modules/Guests/types.js +23 -33
- package/lib/modules/Holder/index.js +209 -189
- package/lib/modules/Holder/types.js +4 -16
- package/lib/modules/Holder/utils.js +20 -49
- package/lib/modules/OpenData/index.js +70 -76
- package/lib/modules/OpenData/types.js +4 -16
- package/lib/modules/OpenData/utils.js +44 -78
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +1733 -2121
- package/lib/modules/Order/payment-utils.js +77 -120
- package/lib/modules/Order/types.d.ts +3 -1
- package/lib/modules/Order/types.js +88 -35
- package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
- package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
- package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
- package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
- package/lib/modules/Order/utils.js +814 -647
- package/lib/modules/Payment/cash.js +20 -33
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
- package/lib/modules/Payment/eftpos.js +16 -30
- package/lib/modules/Payment/index.js +532 -399
- package/lib/modules/Payment/mx51.js +1 -0
- package/lib/modules/Payment/types.js +230 -108
- package/lib/modules/Payment/utils.js +52 -51
- package/lib/modules/Payment/walletpass.js +485 -660
- package/lib/modules/Product/index.js +51 -46
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +113 -123
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +81 -118
- package/lib/modules/Quotation/types.js +4 -16
- package/lib/modules/Resource/index.js +27 -59
- package/lib/modules/Resource/types.js +22 -32
- package/lib/modules/Resource/utils.js +30 -38
- package/lib/modules/ResourcePlanner/index.js +25 -23
- package/lib/modules/ResourcePlanner/localClock.js +54 -119
- package/lib/modules/ResourcePlanner/planner.js +589 -770
- package/lib/modules/ResourcePlanner/types.js +10 -29
- package/lib/modules/Rules/index.js +1218 -959
- package/lib/modules/Rules/types.js +17 -40
- package/lib/modules/SalesSummary/index.js +85 -90
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +355 -430
- package/lib/modules/ScanOrderLogger/index.js +59 -79
- package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
- package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
- package/lib/modules/ScanOrderLogger/types.js +4 -16
- package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
- package/lib/modules/Schedule/index.js +100 -114
- package/lib/modules/Schedule/type.js +4 -16
- package/lib/modules/Schedule/types.js +4 -16
- package/lib/modules/Schedule/utils.js +433 -291
- package/lib/modules/Step/index.js +40 -52
- package/lib/modules/Step/tyeps.js +4 -16
- package/lib/modules/Summary/index.js +66 -71
- package/lib/modules/Summary/types.js +4 -16
- package/lib/modules/Summary/utils.js +773 -418
- package/lib/modules/SurchargeList/index.js +46 -60
- package/lib/modules/SurchargeList/types.js +4 -16
- package/lib/modules/index.js +245 -63
- package/lib/plugins/app.js +4 -16
- package/lib/plugins/index.js +36 -25
- package/lib/plugins/request.js +137 -126
- package/lib/plugins/shopStore.js +4 -16
- package/lib/plugins/user.js +4 -16
- package/lib/plugins/window.js +171 -179
- package/lib/server/index.js +3050 -2665
- package/lib/server/modules/floor-plan/index.js +118 -134
- package/lib/server/modules/floor-plan/types.js +15 -30
- package/lib/server/modules/index.js +106 -68
- package/lib/server/modules/menu/index.js +142 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +784 -1002
- package/lib/server/modules/order/types.js +122 -33
- package/lib/server/modules/order/utils/filterBookings.js +219 -194
- package/lib/server/modules/order/utils/filterOrders.js +118 -92
- package/lib/server/modules/payment/index.js +59 -83
- package/lib/server/modules/payment/types.js +4 -16
- package/lib/server/modules/products/index.js +583 -471
- package/lib/server/modules/products/types.js +44 -34
- package/lib/server/modules/quotation/index.js +137 -172
- package/lib/server/modules/quotation/types.js +21 -31
- package/lib/server/modules/resource/index.js +220 -186
- package/lib/server/modules/resource/types.js +42 -33
- package/lib/server/modules/schedule/index.js +135 -123
- package/lib/server/modules/schedule/types.js +14 -21
- package/lib/server/modules/schedule/utils.js +334 -163
- package/lib/server/types.js +4 -16
- package/lib/server/utils/index.js +25 -23
- package/lib/server/utils/product.js +196 -139
- package/lib/server/utils/schedule.js +34 -41
- package/lib/server/utils/small-ticket.js +479 -456
- package/lib/server/utils/time.js +40 -49
- package/lib/solution/BaseSales/index.js +1220 -1412
- package/lib/solution/BaseSales/types.js +42 -38
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
- package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
- package/lib/solution/BaseSales/utils.js +158 -143
- package/lib/solution/BookingByStep/index.js +1527 -1340
- package/lib/solution/BookingByStep/types.js +40 -99
- package/lib/solution/BookingByStep/utils/capacity.js +192 -160
- package/lib/solution/BookingByStep/utils/products.js +42 -52
- package/lib/solution/BookingByStep/utils/resources.js +527 -330
- package/lib/solution/BookingByStep/utils/stock.js +65 -44
- package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
- package/lib/solution/BookingTicket/index.js +607 -522
- package/lib/solution/BookingTicket/types.js +99 -77
- package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
- package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
- package/lib/solution/BookingTicket/utils/cartView.js +114 -99
- package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
- package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
- package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
- package/lib/solution/BuyTickets/index.js +67 -70
- package/lib/solution/BuyTickets/types.js +22 -38
- package/lib/solution/Checkout/index.js +1451 -1158
- package/lib/solution/Checkout/types.js +91 -61
- package/lib/solution/Checkout/utils/index.js +228 -156
- package/lib/solution/PlaceOrder/index.js +55 -0
- package/lib/solution/RegisterAndLogin/config.js +493 -460
- package/lib/solution/RegisterAndLogin/index.js +633 -630
- package/lib/solution/RegisterAndLogin/types.js +189 -76
- package/lib/solution/RegisterAndLogin/utils.js +183 -125
- package/lib/solution/Sales/index.js +328 -324
- package/lib/solution/Sales/types.js +27 -33
- package/lib/solution/ScanOrder/index.js +832 -864
- package/lib/solution/ScanOrder/types.js +33 -34
- package/lib/solution/ScanOrder/utils.js +409 -374
- package/lib/solution/ShopDiscount/index.js +226 -232
- package/lib/solution/ShopDiscount/types.js +15 -37
- package/lib/solution/ShopDiscount/utils.js +300 -172
- package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
- package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
- package/lib/solution/UnifiedBookingSales/types.js +10 -32
- package/lib/solution/VenueBooking/index.js +811 -879
- package/lib/solution/VenueBooking/types.js +19 -39
- package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
- package/lib/solution/VenueBooking/utils/resource.js +31 -54
- package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
- package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
- package/lib/solution/VenueBooking/utils.js +130 -67
- package/lib/solution/index.js +124 -41
- package/lib/store/createStore.js +32 -29
- package/lib/types/index.js +4 -16
- package/lib/utils/payment-number.js +26 -46
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +81 -47
- package/package.json +2 -1
|
@@ -1,51 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(remoteOccupancyCache_exports, {
|
|
22
|
-
AvailabilityRemoteOccupancyCache: () => AvailabilityRemoteOccupancyCache
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
23
5
|
});
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var
|
|
6
|
+
exports.AvailabilityRemoteOccupancyCache = void 0;
|
|
7
|
+
var _lodashEs = require("lodash-es");
|
|
8
|
+
var _localClock = require("../../modules/ResourcePlanner/localClock");
|
|
27
9
|
function uniqueIds(values) {
|
|
28
|
-
const result =
|
|
29
|
-
values.forEach(
|
|
30
|
-
if (value ===
|
|
31
|
-
return;
|
|
10
|
+
const result = new Map();
|
|
11
|
+
values.forEach(value => {
|
|
12
|
+
if (value === undefined || value === null || value === '') return;
|
|
32
13
|
result.set(String(value), value);
|
|
33
14
|
});
|
|
34
15
|
return Array.from(result.values());
|
|
35
16
|
}
|
|
36
17
|
function buildDateList(dateRange) {
|
|
37
|
-
if (!
|
|
38
|
-
return [];
|
|
18
|
+
if (!dateRange?.startDate || !dateRange?.endDate) return [];
|
|
39
19
|
try {
|
|
40
|
-
const startOrdinal = (0,
|
|
41
|
-
const endOrdinal = (0,
|
|
42
|
-
if (endOrdinal < startOrdinal)
|
|
43
|
-
return [];
|
|
20
|
+
const startOrdinal = (0, _localClock.dateOrdinalFromLocalDate)(dateRange.startDate);
|
|
21
|
+
const endOrdinal = (0, _localClock.dateOrdinalFromLocalDate)(dateRange.endDate);
|
|
22
|
+
if (endOrdinal < startOrdinal) return [];
|
|
44
23
|
const dates = [];
|
|
45
|
-
let cursor = (0,
|
|
24
|
+
let cursor = (0, _localClock.localDateToScalarStart)(dateRange.startDate);
|
|
46
25
|
for (let ordinal = startOrdinal; ordinal <= endOrdinal; ordinal += 1) {
|
|
47
|
-
dates.push((0,
|
|
48
|
-
cursor = (0,
|
|
26
|
+
dates.push((0, _localClock.formatLocalDate)(cursor));
|
|
27
|
+
cursor = (0, _localClock.addLocalCalendarDays)(cursor, 1);
|
|
49
28
|
}
|
|
50
29
|
return dates;
|
|
51
30
|
} catch {
|
|
@@ -54,8 +33,7 @@ function buildDateList(dateRange) {
|
|
|
54
33
|
}
|
|
55
34
|
function resolveResourceId(raw) {
|
|
56
35
|
const id = raw.resourceId ?? raw.resource_id ?? raw.id;
|
|
57
|
-
if (id ===
|
|
58
|
-
return null;
|
|
36
|
+
if (id === undefined || id === null || id === '') return null;
|
|
59
37
|
return id;
|
|
60
38
|
}
|
|
61
39
|
function getRawEventStartAt(rawEvent) {
|
|
@@ -67,53 +45,44 @@ function getRawEventEndAt(rawEvent) {
|
|
|
67
45
|
return endAt ? String(endAt) : null;
|
|
68
46
|
}
|
|
69
47
|
function parseEventScalar(value) {
|
|
70
|
-
return (0,
|
|
48
|
+
return (0, _localClock.localDateTimeToScalar)((0, _localClock.parseLocalDateTime)(value));
|
|
71
49
|
}
|
|
72
50
|
function buildEventIdentity(resourceId, rawEvent) {
|
|
73
|
-
var _a, _b;
|
|
74
51
|
const scheduleEventId = rawEvent.schedule_event_id ?? rawEvent.scheduleEventId;
|
|
75
|
-
if (scheduleEventId !==
|
|
52
|
+
if (scheduleEventId !== undefined && scheduleEventId !== null && scheduleEventId !== '') {
|
|
76
53
|
return `scheduleEvent:${String(resourceId)}:${String(scheduleEventId)}`;
|
|
77
54
|
}
|
|
78
|
-
const bookingUid = rawEvent.booking_uid ?? rawEvent.bookingUid ??
|
|
79
|
-
if (bookingUid !==
|
|
55
|
+
const bookingUid = rawEvent.booking_uid ?? rawEvent.bookingUid ?? rawEvent.metadata?.unique_identification_number;
|
|
56
|
+
if (bookingUid !== undefined && bookingUid !== null && bookingUid !== '') {
|
|
80
57
|
return `bookingUid:${String(resourceId)}:${String(bookingUid)}`;
|
|
81
58
|
}
|
|
82
|
-
const productUid = rawEvent.product_uid ?? rawEvent.productUid ??
|
|
83
|
-
if (productUid !==
|
|
59
|
+
const productUid = rawEvent.product_uid ?? rawEvent.productUid ?? rawEvent.metadata?.product_uid;
|
|
60
|
+
if (productUid !== undefined && productUid !== null && productUid !== '') {
|
|
84
61
|
return `productUid:${String(resourceId)}:${String(productUid)}`;
|
|
85
62
|
}
|
|
86
|
-
return [
|
|
87
|
-
"range",
|
|
88
|
-
String(resourceId),
|
|
89
|
-
getRawEventStartAt(rawEvent) || "",
|
|
90
|
-
getRawEventEndAt(rawEvent) || ""
|
|
91
|
-
].join(":");
|
|
63
|
+
return ['range', String(resourceId), getRawEventStartAt(rawEvent) || '', getRawEventEndAt(rawEvent) || ''].join(':');
|
|
92
64
|
}
|
|
93
65
|
function bucketEventDates(params) {
|
|
94
66
|
const startAt = getRawEventStartAt(params.rawEvent);
|
|
95
67
|
const endAt = getRawEventEndAt(params.rawEvent);
|
|
96
|
-
if (!startAt || !endAt)
|
|
97
|
-
return [];
|
|
68
|
+
if (!startAt || !endAt) return [];
|
|
98
69
|
try {
|
|
99
70
|
const startScalar = parseEventScalar(startAt);
|
|
100
71
|
const endScalar = parseEventScalar(endAt);
|
|
101
|
-
if (endScalar <= startScalar)
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
if (endOrdinal < startOrdinal)
|
|
109
|
-
return [];
|
|
72
|
+
if (endScalar <= startScalar) return [];
|
|
73
|
+
const endInclusiveScalar = endScalar - 1000;
|
|
74
|
+
const startDate = (0, _localClock.formatLocalDate)(startScalar);
|
|
75
|
+
const endDate = (0, _localClock.formatLocalDate)(endInclusiveScalar);
|
|
76
|
+
const startOrdinal = (0, _localClock.dateOrdinalFromLocalDate)(startDate);
|
|
77
|
+
const endOrdinal = (0, _localClock.dateOrdinalFromLocalDate)(endDate);
|
|
78
|
+
if (endOrdinal < startOrdinal) return [];
|
|
110
79
|
const dates = [];
|
|
111
80
|
let cursorDate = startDate;
|
|
112
81
|
for (let ordinal = startOrdinal; ordinal <= endOrdinal; ordinal += 1) {
|
|
113
82
|
if (params.requestedDates.has(cursorDate)) {
|
|
114
83
|
dates.push(cursorDate);
|
|
115
84
|
}
|
|
116
|
-
cursorDate = (0,
|
|
85
|
+
cursorDate = (0, _localClock.nextDate)(cursorDate);
|
|
117
86
|
}
|
|
118
87
|
return dates;
|
|
119
88
|
} catch {
|
|
@@ -122,22 +91,21 @@ function bucketEventDates(params) {
|
|
|
122
91
|
}
|
|
123
92
|
function sortEventList(events) {
|
|
124
93
|
return [...events].sort((left, right) => {
|
|
125
|
-
const leftStart = getRawEventStartAt(left) ||
|
|
126
|
-
const rightStart = getRawEventStartAt(right) ||
|
|
127
|
-
if (leftStart !== rightStart)
|
|
128
|
-
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return leftEnd.localeCompare(rightEnd);
|
|
133
|
-
return buildEventIdentity(left.resource_id ?? left.resourceId ?? "", left).localeCompare(buildEventIdentity(right.resource_id ?? right.resourceId ?? "", right));
|
|
94
|
+
const leftStart = getRawEventStartAt(left) || '';
|
|
95
|
+
const rightStart = getRawEventStartAt(right) || '';
|
|
96
|
+
if (leftStart !== rightStart) return leftStart.localeCompare(rightStart);
|
|
97
|
+
const leftEnd = getRawEventEndAt(left) || '';
|
|
98
|
+
const rightEnd = getRawEventEndAt(right) || '';
|
|
99
|
+
if (leftEnd !== rightEnd) return leftEnd.localeCompare(rightEnd);
|
|
100
|
+
return buildEventIdentity(left.resource_id ?? left.resourceId ?? '', left).localeCompare(buildEventIdentity(right.resource_id ?? right.resourceId ?? '', right));
|
|
134
101
|
});
|
|
135
102
|
}
|
|
136
|
-
|
|
103
|
+
class AvailabilityRemoteOccupancyCache {
|
|
104
|
+
maxCells;
|
|
105
|
+
cells = new Map();
|
|
106
|
+
resourceMeta = new Map();
|
|
107
|
+
resourceCellCounts = new Map();
|
|
137
108
|
constructor(maxCells = 4096) {
|
|
138
|
-
this.cells = /* @__PURE__ */ new Map();
|
|
139
|
-
this.resourceMeta = /* @__PURE__ */ new Map();
|
|
140
|
-
this.resourceCellCounts = /* @__PURE__ */ new Map();
|
|
141
109
|
this.maxCells = maxCells;
|
|
142
110
|
}
|
|
143
111
|
clear() {
|
|
@@ -148,30 +116,25 @@ var AvailabilityRemoteOccupancyCache = class {
|
|
|
148
116
|
read(params) {
|
|
149
117
|
const requestedResourceIds = uniqueIds(params.resourceIds);
|
|
150
118
|
const requestedDates = buildDateList(params.dateRange);
|
|
151
|
-
if (requestedResourceIds.length === 0 || requestedDates.length === 0)
|
|
152
|
-
return [];
|
|
119
|
+
if (requestedResourceIds.length === 0 || requestedDates.length === 0) return [];
|
|
153
120
|
const resources = [];
|
|
154
121
|
for (const resourceId of requestedResourceIds) {
|
|
155
122
|
const resourceKey = this.buildResourceKey(params.scopeKey, resourceId);
|
|
156
|
-
const eventList =
|
|
123
|
+
const eventList = new Map();
|
|
157
124
|
for (const date of requestedDates) {
|
|
158
125
|
const cellKey = this.buildCellKey(resourceKey, date);
|
|
159
126
|
const cell = this.touchCell(cellKey);
|
|
160
|
-
if (!cell)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
eventList.set(buildEventIdentity(resourceId, rawEvent), (0, import_lodash_es.cloneDeep)(rawEvent));
|
|
127
|
+
if (!cell) return null;
|
|
128
|
+
cell.eventList.forEach(rawEvent => {
|
|
129
|
+
eventList.set(buildEventIdentity(resourceId, rawEvent), (0, _lodashEs.cloneDeep)(rawEvent));
|
|
164
130
|
});
|
|
165
131
|
}
|
|
166
132
|
const metadataEntry = this.resourceMeta.get(resourceKey);
|
|
167
|
-
if (!metadataEntry)
|
|
168
|
-
|
|
169
|
-
if (metadataEntry.
|
|
170
|
-
continue;
|
|
171
|
-
if (!metadataEntry.metadata)
|
|
172
|
-
return null;
|
|
133
|
+
if (!metadataEntry) return null;
|
|
134
|
+
if (metadataEntry.status === 'absent') continue;
|
|
135
|
+
if (!metadataEntry.metadata) return null;
|
|
173
136
|
resources.push({
|
|
174
|
-
...(0,
|
|
137
|
+
...(0, _lodashEs.cloneDeep)(metadataEntry.metadata),
|
|
175
138
|
event_list: sortEventList(Array.from(eventList.values()))
|
|
176
139
|
});
|
|
177
140
|
}
|
|
@@ -180,14 +143,12 @@ var AvailabilityRemoteOccupancyCache = class {
|
|
|
180
143
|
hasCompleteCoverage(params) {
|
|
181
144
|
const requestedResourceIds = uniqueIds(params.resourceIds);
|
|
182
145
|
const requestedDates = buildDateList(params.dateRange);
|
|
183
|
-
if (requestedResourceIds.length === 0 || requestedDates.length === 0)
|
|
184
|
-
return true;
|
|
146
|
+
if (requestedResourceIds.length === 0 || requestedDates.length === 0) return true;
|
|
185
147
|
for (const resourceId of requestedResourceIds) {
|
|
186
148
|
const resourceKey = this.buildResourceKey(params.scopeKey, resourceId);
|
|
187
149
|
for (const date of requestedDates) {
|
|
188
150
|
const cell = this.cells.get(this.buildCellKey(resourceKey, date));
|
|
189
|
-
if (!cell)
|
|
190
|
-
return false;
|
|
151
|
+
if (!cell) return false;
|
|
191
152
|
}
|
|
192
153
|
}
|
|
193
154
|
return true;
|
|
@@ -195,31 +156,23 @@ var AvailabilityRemoteOccupancyCache = class {
|
|
|
195
156
|
publish(params) {
|
|
196
157
|
const requestedResourceIds = uniqueIds(params.resourceIds);
|
|
197
158
|
const requestedDates = buildDateList(params.dateRange);
|
|
198
|
-
if (requestedResourceIds.length === 0 || requestedDates.length === 0)
|
|
199
|
-
return;
|
|
159
|
+
if (requestedResourceIds.length === 0 || requestedDates.length === 0) return;
|
|
200
160
|
const requestedDateSet = new Set(requestedDates);
|
|
201
161
|
const publishedAt = Date.now();
|
|
202
|
-
const requestedResourceKeyById = new Map(
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
this.buildResourceKey(params.scopeKey, resourceId)
|
|
206
|
-
])
|
|
207
|
-
);
|
|
208
|
-
const rawResourceById = /* @__PURE__ */ new Map();
|
|
209
|
-
(params.rawResources || []).forEach((rawResource) => {
|
|
162
|
+
const requestedResourceKeyById = new Map(requestedResourceIds.map(resourceId => [String(resourceId), this.buildResourceKey(params.scopeKey, resourceId)]));
|
|
163
|
+
const rawResourceById = new Map();
|
|
164
|
+
(params.rawResources || []).forEach(rawResource => {
|
|
210
165
|
const resourceId = resolveResourceId(rawResource);
|
|
211
166
|
if (resourceId !== null && requestedResourceKeyById.has(String(resourceId))) {
|
|
212
167
|
rawResourceById.set(String(resourceId), rawResource);
|
|
213
168
|
}
|
|
214
169
|
});
|
|
215
|
-
requestedResourceIds.forEach(
|
|
170
|
+
requestedResourceIds.forEach(resourceId => {
|
|
216
171
|
const resourceKey = requestedResourceKeyById.get(String(resourceId));
|
|
217
|
-
if (!resourceKey)
|
|
218
|
-
|
|
219
|
-
if (!this.canPublishResourceRange(resourceKey, requestedDates, params.version))
|
|
220
|
-
return;
|
|
172
|
+
if (!resourceKey) return;
|
|
173
|
+
if (!this.canPublishResourceRange(resourceKey, requestedDates, params.version)) return;
|
|
221
174
|
const rawResource = rawResourceById.get(String(resourceId));
|
|
222
|
-
const nextStatus = rawResource ?
|
|
175
|
+
const nextStatus = rawResource ? 'present' : 'absent';
|
|
223
176
|
const currentMetadata = this.resourceMeta.get(resourceKey);
|
|
224
177
|
if (currentMetadata && currentMetadata.version <= params.version && currentMetadata.status !== nextStatus) {
|
|
225
178
|
this.deleteResourceCells(resourceKey);
|
|
@@ -229,32 +182,33 @@ var AvailabilityRemoteOccupancyCache = class {
|
|
|
229
182
|
requestedDates: requestedDateSet,
|
|
230
183
|
timezoneName: params.timezoneName
|
|
231
184
|
});
|
|
232
|
-
const metadata = rawResource ? (({
|
|
185
|
+
const metadata = rawResource ? (({
|
|
186
|
+
event_list: _eventList,
|
|
187
|
+
...rest
|
|
188
|
+
}) => rest)(rawResource) : undefined;
|
|
233
189
|
this.writeResourceMeta(resourceKey, nextStatus, metadata, params.version);
|
|
234
|
-
const eventsByDate =
|
|
235
|
-
requestedDates.forEach(
|
|
236
|
-
eventsByDate.set(date,
|
|
190
|
+
const eventsByDate = new Map();
|
|
191
|
+
requestedDates.forEach(date => {
|
|
192
|
+
eventsByDate.set(date, new Map());
|
|
237
193
|
});
|
|
238
|
-
const eventList = Array.isArray(rawResource
|
|
239
|
-
eventList.forEach(
|
|
240
|
-
const rawEvent = (0,
|
|
194
|
+
const eventList = Array.isArray(rawResource?.event_list) ? rawResource.event_list : [];
|
|
195
|
+
eventList.forEach(event => {
|
|
196
|
+
const rawEvent = (0, _lodashEs.cloneDeep)(event);
|
|
241
197
|
const identity = buildEventIdentity(resourceId, rawEvent);
|
|
242
198
|
bucketEventDates({
|
|
243
199
|
rawEvent,
|
|
244
200
|
timezoneName: params.timezoneName,
|
|
245
201
|
requestedDates: requestedDateSet
|
|
246
|
-
}).forEach(
|
|
247
|
-
|
|
248
|
-
(_a = eventsByDate.get(date)) == null ? void 0 : _a.set(identity, rawEvent);
|
|
202
|
+
}).forEach(date => {
|
|
203
|
+
eventsByDate.get(date)?.set(identity, rawEvent);
|
|
249
204
|
});
|
|
250
205
|
});
|
|
251
|
-
requestedDates.forEach(
|
|
252
|
-
var _a;
|
|
206
|
+
requestedDates.forEach(date => {
|
|
253
207
|
this.writeCell({
|
|
254
208
|
key: this.buildCellKey(resourceKey, date),
|
|
255
209
|
resourceKey,
|
|
256
210
|
version: params.version,
|
|
257
|
-
eventList: sortEventList(Array.from(
|
|
211
|
+
eventList: sortEventList(Array.from(eventsByDate.get(date)?.values() || [])),
|
|
258
212
|
fetchedAt: publishedAt,
|
|
259
213
|
lastAccessedAt: publishedAt
|
|
260
214
|
});
|
|
@@ -269,13 +223,13 @@ var AvailabilityRemoteOccupancyCache = class {
|
|
|
269
223
|
}
|
|
270
224
|
touchCell(cellKey) {
|
|
271
225
|
const entry = this.cells.get(cellKey);
|
|
272
|
-
if (!entry)
|
|
273
|
-
return null;
|
|
226
|
+
if (!entry) return null;
|
|
274
227
|
entry.lastAccessedAt = Date.now();
|
|
275
228
|
this.cells.delete(cellKey);
|
|
276
229
|
this.cells.set(cellKey, entry);
|
|
277
230
|
return entry;
|
|
278
231
|
}
|
|
232
|
+
|
|
279
233
|
/**
|
|
280
234
|
* A response is one coherent resource snapshot for its requested range. If any overlapping day
|
|
281
235
|
* already contains a newer response, publishing only the older response's remaining days would
|
|
@@ -283,13 +237,13 @@ var AvailabilityRemoteOccupancyCache = class {
|
|
|
283
237
|
*/
|
|
284
238
|
canPublishResourceRange(resourceKey, requestedDates, version) {
|
|
285
239
|
const metadata = this.resourceMeta.get(resourceKey);
|
|
286
|
-
if (metadata && metadata.version > version)
|
|
287
|
-
|
|
288
|
-
return requestedDates.every((date) => {
|
|
240
|
+
if (metadata && metadata.version > version) return false;
|
|
241
|
+
return requestedDates.every(date => {
|
|
289
242
|
const current = this.cells.get(this.buildCellKey(resourceKey, date));
|
|
290
243
|
return !current || current.version <= version;
|
|
291
244
|
});
|
|
292
245
|
}
|
|
246
|
+
|
|
293
247
|
/**
|
|
294
248
|
* A day cell stores the original event range so it can be reconstructed without losing server
|
|
295
249
|
* identity. When a newer adjacent-day response replaces that event, evict older neighbour cells
|
|
@@ -299,25 +253,21 @@ var AvailabilityRemoteOccupancyCache = class {
|
|
|
299
253
|
invalidateAdjacentOverlappingCells(params) {
|
|
300
254
|
const keysToDelete = [];
|
|
301
255
|
this.cells.forEach((cell, cellKey) => {
|
|
302
|
-
if (cell.resourceKey !== params.resourceKey)
|
|
303
|
-
return;
|
|
256
|
+
if (cell.resourceKey !== params.resourceKey) return;
|
|
304
257
|
const cellDate = cellKey.slice(cell.resourceKey.length + 1);
|
|
305
|
-
if (params.requestedDates.has(cellDate))
|
|
306
|
-
|
|
307
|
-
const overlapsRequestedDate = cell.eventList.some((rawEvent) => bucketEventDates({
|
|
258
|
+
if (params.requestedDates.has(cellDate)) return;
|
|
259
|
+
const overlapsRequestedDate = cell.eventList.some(rawEvent => bucketEventDates({
|
|
308
260
|
rawEvent,
|
|
309
261
|
timezoneName: params.timezoneName,
|
|
310
262
|
requestedDates: params.requestedDates
|
|
311
263
|
}).length > 0);
|
|
312
|
-
if (overlapsRequestedDate)
|
|
313
|
-
keysToDelete.push(cellKey);
|
|
264
|
+
if (overlapsRequestedDate) keysToDelete.push(cellKey);
|
|
314
265
|
});
|
|
315
|
-
keysToDelete.forEach(
|
|
266
|
+
keysToDelete.forEach(cellKey => this.deleteCell(cellKey));
|
|
316
267
|
}
|
|
317
268
|
deleteCell(cellKey) {
|
|
318
269
|
const entry = this.cells.get(cellKey);
|
|
319
|
-
if (!entry)
|
|
320
|
-
return;
|
|
270
|
+
if (!entry) return;
|
|
321
271
|
this.cells.delete(cellKey);
|
|
322
272
|
const nextCount = (this.resourceCellCounts.get(entry.resourceKey) || 1) - 1;
|
|
323
273
|
if (nextCount <= 0) {
|
|
@@ -330,47 +280,37 @@ var AvailabilityRemoteOccupancyCache = class {
|
|
|
330
280
|
deleteResourceCells(resourceKey) {
|
|
331
281
|
const keysToDelete = [];
|
|
332
282
|
this.cells.forEach((cell, cellKey) => {
|
|
333
|
-
if (cell.resourceKey === resourceKey)
|
|
334
|
-
keysToDelete.push(cellKey);
|
|
283
|
+
if (cell.resourceKey === resourceKey) keysToDelete.push(cellKey);
|
|
335
284
|
});
|
|
336
|
-
keysToDelete.forEach(
|
|
285
|
+
keysToDelete.forEach(cellKey => this.deleteCell(cellKey));
|
|
337
286
|
}
|
|
338
287
|
writeResourceMeta(resourceKey, status, metadata, version) {
|
|
339
288
|
const current = this.resourceMeta.get(resourceKey);
|
|
340
|
-
if (current && current.version > version)
|
|
341
|
-
return;
|
|
289
|
+
if (current && current.version > version) return;
|
|
342
290
|
this.resourceMeta.set(resourceKey, {
|
|
343
291
|
version,
|
|
344
292
|
status,
|
|
345
|
-
metadata: metadata ? (0,
|
|
293
|
+
metadata: metadata ? (0, _lodashEs.cloneDeep)(metadata) : undefined
|
|
346
294
|
});
|
|
347
295
|
}
|
|
348
296
|
writeCell(entry) {
|
|
349
297
|
const current = this.cells.get(entry.key);
|
|
350
|
-
if (current && current.version > entry.version)
|
|
351
|
-
return;
|
|
298
|
+
if (current && current.version > entry.version) return;
|
|
352
299
|
if (!current) {
|
|
353
|
-
this.resourceCellCounts.set(
|
|
354
|
-
entry.resourceKey,
|
|
355
|
-
(this.resourceCellCounts.get(entry.resourceKey) || 0) + 1
|
|
356
|
-
);
|
|
300
|
+
this.resourceCellCounts.set(entry.resourceKey, (this.resourceCellCounts.get(entry.resourceKey) || 0) + 1);
|
|
357
301
|
} else {
|
|
358
302
|
this.cells.delete(entry.key);
|
|
359
303
|
}
|
|
360
304
|
this.cells.set(entry.key, {
|
|
361
305
|
...entry,
|
|
362
|
-
eventList: (0,
|
|
306
|
+
eventList: (0, _lodashEs.cloneDeep)(entry.eventList)
|
|
363
307
|
});
|
|
364
308
|
while (this.cells.size > this.maxCells) {
|
|
365
309
|
const oldest = this.cells.entries().next().value;
|
|
366
|
-
if (!oldest)
|
|
367
|
-
break;
|
|
310
|
+
if (!oldest) break;
|
|
368
311
|
const [oldestKey] = oldest;
|
|
369
312
|
this.deleteCell(oldestKey);
|
|
370
313
|
}
|
|
371
314
|
}
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
0 && (module.exports = {
|
|
375
|
-
AvailabilityRemoteOccupancyCache
|
|
376
|
-
});
|
|
315
|
+
}
|
|
316
|
+
exports.AvailabilityRemoteOccupancyCache = AvailabilityRemoteOccupancyCache;
|
|
@@ -1,34 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(types_exports, {
|
|
22
|
-
UnifiedBookingSalesHooks: () => UnifiedBookingSalesHooks
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(types_exports);
|
|
25
|
-
var UnifiedBookingSalesHooks = /* @__PURE__ */ ((UnifiedBookingSalesHooks2) => {
|
|
26
|
-
UnifiedBookingSalesHooks2["onAvailabilityProjectionPrepared"] = "unifiedBookingSales:onAvailabilityProjectionPrepared";
|
|
27
|
-
UnifiedBookingSalesHooks2["onAvailabilitySelectionCommitted"] = "unifiedBookingSales:onAvailabilitySelectionCommitted";
|
|
28
|
-
UnifiedBookingSalesHooks2["onAvailabilityProjectionDiagnostic"] = "unifiedBookingSales:onAvailabilityProjectionDiagnostic";
|
|
29
|
-
return UnifiedBookingSalesHooks2;
|
|
30
|
-
})(UnifiedBookingSalesHooks || {});
|
|
31
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
32
|
-
0 && (module.exports = {
|
|
33
|
-
UnifiedBookingSalesHooks
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
34
5
|
});
|
|
6
|
+
exports.UnifiedBookingSalesHooks = void 0;
|
|
7
|
+
let UnifiedBookingSalesHooks = exports.UnifiedBookingSalesHooks = /*#__PURE__*/function (UnifiedBookingSalesHooks) {
|
|
8
|
+
UnifiedBookingSalesHooks["onAvailabilityProjectionPrepared"] = "unifiedBookingSales:onAvailabilityProjectionPrepared";
|
|
9
|
+
UnifiedBookingSalesHooks["onAvailabilitySelectionCommitted"] = "unifiedBookingSales:onAvailabilitySelectionCommitted";
|
|
10
|
+
UnifiedBookingSalesHooks["onAvailabilityProjectionDiagnostic"] = "unifiedBookingSales:onAvailabilityProjectionDiagnostic";
|
|
11
|
+
return UnifiedBookingSalesHooks;
|
|
12
|
+
}({});
|