@pisell/pisellos 2.2.313 → 2.2.315
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/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/model/strategy/adapter/itemRule/adapter.d.ts +3 -1
- package/dist/model/strategy/adapter/itemRule/adapter.js +74 -7
- package/dist/model/strategy/adapter/itemRule/evaluator.d.ts +3 -1
- package/dist/model/strategy/adapter/itemRule/evaluator.js +13 -0
- package/dist/model/strategy/adapter/itemRule/type.d.ts +40 -1
- package/dist/model/strategy/adapter/itemRule/type.js +10 -0
- package/dist/modules/BookingContext/utils/productExtend.d.ts +7 -0
- package/dist/modules/BookingContext/utils/productExtend.js +62 -18
- package/dist/modules/BookingContext/utils/resources.js +1 -1
- package/dist/modules/BusinessAvailability/index.d.ts +30 -0
- package/dist/modules/BusinessAvailability/index.js +204 -0
- package/dist/modules/Cart/index.js +4 -3
- package/dist/modules/Cart/types.d.ts +2 -0
- package/dist/modules/Cart/utils/cartProduct.d.ts +3 -1
- package/dist/modules/Cart/utils/cartProduct.js +59 -32
- package/dist/modules/FulfillmentTiming/index.d.ts +11 -0
- package/dist/modules/FulfillmentTiming/index.js +407 -0
- package/dist/modules/FulfillmentTiming/types.d.ts +67 -0
- package/dist/modules/FulfillmentTiming/types.js +1 -0
- package/dist/modules/OpenData/types.d.ts +14 -0
- package/dist/modules/Order/index.d.ts +14 -2
- package/dist/modules/Order/index.js +856 -486
- package/dist/modules/Order/localEftposState.d.ts +13 -0
- package/dist/modules/Order/localEftposState.js +39 -0
- package/dist/modules/Order/pickupTiming.d.ts +46 -0
- package/dist/modules/Order/pickupTiming.js +53 -0
- package/dist/modules/Order/types.d.ts +30 -2
- package/dist/modules/Order/utils.js +25 -7
- package/dist/modules/Payment/index.js +9 -10
- package/dist/modules/Product/types.d.ts +11 -0
- package/dist/modules/ProductList/index.js +1 -1
- package/dist/modules/ResourcePlanner/planner.d.ts +2 -0
- package/dist/modules/ResourcePlanner/planner.js +332 -23
- package/dist/modules/ResourcePlanner/types.d.ts +29 -0
- package/dist/modules/Schedule/index.d.ts +8 -0
- package/dist/modules/Schedule/index.js +141 -39
- package/dist/modules/index.d.ts +1 -0
- package/dist/modules/index.js +1 -0
- package/dist/plugins/request.d.ts +7 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +1536 -1309
- package/dist/server/modules/form/index.d.ts +19 -0
- package/dist/server/modules/form/index.js +205 -0
- package/dist/server/modules/form/types.d.ts +13 -0
- package/dist/server/modules/form/types.js +3 -0
- package/dist/server/modules/index.d.ts +3 -0
- package/dist/server/modules/index.js +4 -0
- package/dist/server/modules/order/index.d.ts +15 -0
- package/dist/server/modules/order/index.js +920 -688
- package/dist/server/modules/order/types.d.ts +1 -0
- package/dist/server/test.json +1 -1
- package/dist/server/utils/small-ticket.d.ts +1 -85
- package/dist/server/utils/small-ticket.js +2 -2542
- package/dist/shared/payment/loadPaymentMethods.d.ts +9 -0
- package/dist/shared/payment/loadPaymentMethods.js +66 -0
- package/dist/shared/receipt/customerInvoiceLanguages.d.ts +8 -0
- package/dist/shared/receipt/customerInvoiceLanguages.js +60 -0
- package/dist/shared/receipt/loadCustomerInvoiceLayout.d.ts +27 -0
- package/dist/shared/receipt/loadCustomerInvoiceLayout.js +184 -0
- package/dist/shared/receipt/small-ticket.d.ts +96 -0
- package/dist/shared/receipt/small-ticket.js +2751 -0
- package/dist/shared/receipt/templateVisibility.d.ts +23 -0
- package/dist/shared/receipt/templateVisibility.js +64 -0
- package/dist/shared/sales/loadSalesOrderSnapshot.d.ts +9 -0
- package/dist/shared/sales/loadSalesOrderSnapshot.js +21 -0
- package/dist/solution/BaseSales/fulfillmentItemRules.d.ts +27 -0
- package/dist/solution/BaseSales/fulfillmentItemRules.js +750 -0
- package/dist/solution/BaseSales/index.d.ts +39 -16
- package/dist/solution/BaseSales/index.js +1754 -1154
- package/dist/solution/BaseSales/pickupTiming.d.ts +47 -0
- package/dist/solution/BaseSales/pickupTiming.js +616 -0
- package/dist/solution/BaseSales/types.d.ts +11 -0
- package/dist/solution/BaseSales/utils/parseSalesResponse.js +3 -0
- package/dist/solution/BookingByStep/index.d.ts +4 -2
- package/dist/solution/BookingByStep/index.js +8 -3
- package/dist/solution/BookingTicket/index.d.ts +8 -2
- package/dist/solution/BookingTicket/index.js +513 -436
- package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +0 -1
- package/dist/solution/BookingTicket/utils/addProductDecision.js +1 -1
- package/dist/solution/BookingTicket/utils/cartView.js +3 -1
- package/dist/solution/OrderInvoicePreview/index.d.ts +66 -0
- package/dist/solution/OrderInvoicePreview/index.js +340 -0
- package/dist/solution/RegisterAndLogin/config.js +54 -11
- package/dist/solution/RegisterAndLogin/index.d.ts +2 -0
- package/dist/solution/RegisterAndLogin/index.js +1 -1
- package/dist/solution/RegisterAndLogin/utils.d.ts +12 -4
- package/dist/solution/RegisterAndLogin/utils.js +36 -16
- package/dist/solution/Sales/index.js +1 -1
- package/dist/solution/UnifiedBookingSales/businessAvailability.d.ts +27 -0
- package/dist/solution/UnifiedBookingSales/businessAvailability.js +292 -0
- package/dist/solution/UnifiedBookingSales/index.d.ts +36 -4
- package/dist/solution/UnifiedBookingSales/index.js +1714 -905
- package/dist/solution/UnifiedBookingSales/types.d.ts +16 -2
- package/dist/solution/VenueBooking/index.d.ts +15 -2
- package/dist/solution/VenueBooking/index.js +1062 -785
- package/dist/solution/VenueBooking/types.d.ts +2 -1
- package/dist/solution/VenueBooking/types.js +1 -0
- package/dist/solution/VenueBooking/utils/dateSummary.d.ts +1 -0
- package/dist/solution/VenueBooking/utils/dateSummary.js +7 -4
- package/dist/solution/VenueBooking/utils/smartPricing.d.ts +71 -0
- package/dist/solution/VenueBooking/utils/smartPricing.js +273 -0
- package/dist/solution/VenueBooking/utils/timeSlot.d.ts +1 -0
- package/dist/solution/VenueBooking/utils/timeSlot.js +6 -3
- package/dist/solution/index.d.ts +1 -0
- package/dist/solution/index.js +2 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +21 -1
- package/lib/model/strategy/adapter/itemRule/adapter.d.ts +3 -1
- package/lib/model/strategy/adapter/itemRule/adapter.js +54 -4
- package/lib/model/strategy/adapter/itemRule/evaluator.d.ts +3 -1
- package/lib/model/strategy/adapter/itemRule/evaluator.js +9 -0
- package/lib/model/strategy/adapter/itemRule/type.d.ts +40 -1
- package/lib/model/strategy/adapter/itemRule/type.js +10 -0
- package/lib/modules/BookingContext/utils/productExtend.d.ts +7 -0
- package/lib/modules/BookingContext/utils/productExtend.js +45 -2
- package/lib/modules/BookingContext/utils/resources.js +1 -1
- package/lib/modules/BusinessAvailability/index.d.ts +30 -0
- package/lib/modules/BusinessAvailability/index.js +146 -0
- package/lib/modules/Cart/index.js +4 -2
- package/lib/modules/Cart/types.d.ts +2 -0
- package/lib/modules/Cart/utils/cartProduct.d.ts +3 -1
- package/lib/modules/Cart/utils/cartProduct.js +39 -20
- package/lib/modules/FulfillmentTiming/index.d.ts +11 -0
- package/lib/modules/FulfillmentTiming/index.js +359 -0
- package/lib/modules/FulfillmentTiming/types.d.ts +67 -0
- package/lib/modules/FulfillmentTiming/types.js +5 -0
- package/lib/modules/OpenData/types.d.ts +14 -0
- package/lib/modules/Order/index.d.ts +14 -2
- package/lib/modules/Order/index.js +240 -38
- package/lib/modules/Order/localEftposState.d.ts +13 -0
- package/lib/modules/Order/localEftposState.js +44 -0
- package/lib/modules/Order/pickupTiming.d.ts +46 -0
- package/lib/modules/Order/pickupTiming.js +61 -0
- package/lib/modules/Order/types.d.ts +30 -2
- package/lib/modules/Order/utils.js +21 -5
- package/lib/modules/Payment/index.js +3 -4
- package/lib/modules/Product/types.d.ts +11 -0
- package/lib/modules/ProductList/index.js +1 -1
- package/lib/modules/ResourcePlanner/planner.d.ts +2 -0
- package/lib/modules/ResourcePlanner/planner.js +252 -8
- package/lib/modules/ResourcePlanner/types.d.ts +29 -0
- package/lib/modules/Schedule/index.d.ts +8 -0
- package/lib/modules/Schedule/index.js +68 -12
- package/lib/modules/index.d.ts +1 -0
- package/lib/modules/index.js +11 -0
- package/lib/plugins/request.d.ts +7 -0
- package/lib/server/index.d.ts +1 -0
- package/lib/server/index.js +158 -37
- package/lib/server/modules/form/index.d.ts +19 -0
- package/lib/server/modules/form/index.js +73 -0
- package/lib/server/modules/form/types.d.ts +13 -0
- package/lib/server/modules/form/types.js +9 -0
- package/lib/server/modules/index.d.ts +3 -0
- package/lib/server/modules/index.js +15 -1
- package/lib/server/modules/order/index.d.ts +15 -0
- package/lib/server/modules/order/index.js +114 -3
- package/lib/server/modules/order/types.d.ts +1 -0
- package/lib/server/test.json +1 -1
- package/lib/server/utils/small-ticket.d.ts +1 -85
- package/lib/server/utils/small-ticket.js +9 -2305
- package/lib/shared/payment/loadPaymentMethods.d.ts +9 -0
- package/lib/shared/payment/loadPaymentMethods.js +40 -0
- package/lib/shared/receipt/customerInvoiceLanguages.d.ts +8 -0
- package/lib/shared/receipt/customerInvoiceLanguages.js +58 -0
- package/lib/shared/receipt/loadCustomerInvoiceLayout.d.ts +27 -0
- package/lib/shared/receipt/loadCustomerInvoiceLayout.js +124 -0
- package/lib/shared/receipt/small-ticket.d.ts +96 -0
- package/lib/shared/receipt/small-ticket.js +2546 -0
- package/lib/shared/receipt/templateVisibility.d.ts +23 -0
- package/lib/shared/receipt/templateVisibility.js +63 -0
- package/lib/shared/sales/loadSalesOrderSnapshot.d.ts +9 -0
- package/lib/shared/sales/loadSalesOrderSnapshot.js +22 -0
- package/lib/solution/BaseSales/fulfillmentItemRules.d.ts +27 -0
- package/lib/solution/BaseSales/fulfillmentItemRules.js +259 -0
- package/lib/solution/BaseSales/index.d.ts +39 -16
- package/lib/solution/BaseSales/index.js +333 -31
- package/lib/solution/BaseSales/pickupTiming.d.ts +47 -0
- package/lib/solution/BaseSales/pickupTiming.js +290 -0
- package/lib/solution/BaseSales/types.d.ts +11 -0
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +3 -0
- package/lib/solution/BookingByStep/index.d.ts +4 -2
- package/lib/solution/BookingByStep/index.js +7 -3
- package/lib/solution/BookingTicket/index.d.ts +8 -2
- package/lib/solution/BookingTicket/index.js +65 -6
- package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +0 -1
- package/lib/solution/BookingTicket/utils/addProductDecision.js +1 -1
- package/lib/solution/BookingTicket/utils/cartView.js +3 -1
- package/lib/solution/OrderInvoicePreview/index.d.ts +66 -0
- package/lib/solution/OrderInvoicePreview/index.js +246 -0
- package/lib/solution/RegisterAndLogin/config.js +57 -11
- package/lib/solution/RegisterAndLogin/index.d.ts +2 -0
- package/lib/solution/RegisterAndLogin/index.js +9 -1
- package/lib/solution/RegisterAndLogin/utils.d.ts +12 -4
- package/lib/solution/RegisterAndLogin/utils.js +24 -17
- package/lib/solution/Sales/index.js +1 -1
- package/lib/solution/UnifiedBookingSales/businessAvailability.d.ts +27 -0
- package/lib/solution/UnifiedBookingSales/businessAvailability.js +138 -0
- package/lib/solution/UnifiedBookingSales/index.d.ts +36 -4
- package/lib/solution/UnifiedBookingSales/index.js +561 -74
- package/lib/solution/UnifiedBookingSales/types.d.ts +16 -2
- package/lib/solution/VenueBooking/index.d.ts +15 -2
- package/lib/solution/VenueBooking/index.js +243 -96
- package/lib/solution/VenueBooking/types.d.ts +2 -1
- package/lib/solution/VenueBooking/types.js +1 -0
- package/lib/solution/VenueBooking/utils/dateSummary.d.ts +1 -0
- package/lib/solution/VenueBooking/utils/dateSummary.js +7 -4
- package/lib/solution/VenueBooking/utils/smartPricing.d.ts +71 -0
- package/lib/solution/VenueBooking/utils/smartPricing.js +224 -0
- package/lib/solution/VenueBooking/utils/timeSlot.d.ts +1 -0
- package/lib/solution/VenueBooking/utils/timeSlot.js +5 -2
- package/lib/solution/index.d.ts +1 -0
- package/lib/solution/index.js +11 -0
- package/package.json +1 -1
|
@@ -33,29 +33,49 @@ export function validatePhone(phone) {
|
|
|
33
33
|
var phoneRegex = /^(\+\d{1,3}[- ]?)?\d{10,14}$/;
|
|
34
34
|
return phoneRegex.test(cleanPhone);
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* 验证密码强度
|
|
39
|
-
*/
|
|
36
|
+
/** 验证密码强度;不传 options 时保持原有规则与返回格式。 */
|
|
40
37
|
export function validatePassword(password) {
|
|
38
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
41
39
|
var errors = [];
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
var _options$minLength = options.minLength,
|
|
41
|
+
minLength = _options$minLength === void 0 ? 8 : _options$minLength,
|
|
42
|
+
_options$maxLength = options.maxLength,
|
|
43
|
+
maxLength = _options$maxLength === void 0 ? 128 : _options$maxLength,
|
|
44
|
+
_options$requireLower = options.requireLowercase,
|
|
45
|
+
requireLowercase = _options$requireLower === void 0 ? true : _options$requireLower,
|
|
46
|
+
_options$requireUpper = options.requireUppercase,
|
|
47
|
+
requireUppercase = _options$requireUpper === void 0 ? true : _options$requireUpper,
|
|
48
|
+
_options$requireNumbe = options.requireNumber,
|
|
49
|
+
requireNumber = _options$requireNumbe === void 0 ? true : _options$requireNumbe,
|
|
50
|
+
_options$requireSpeci = options.requireSpecialCharacters,
|
|
51
|
+
requireSpecialCharacters = _options$requireSpeci === void 0 ? true : _options$requireSpeci,
|
|
52
|
+
_options$specialChara = options.specialCharactersPattern,
|
|
53
|
+
specialCharactersPattern = _options$specialChara === void 0 ? /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/ : _options$specialChara,
|
|
54
|
+
_options$messages = options.messages,
|
|
55
|
+
messages = _options$messages === void 0 ? {} : _options$messages;
|
|
56
|
+
if (password.length < minLength) {
|
|
57
|
+
var _messages$minLength;
|
|
58
|
+
errors.push((_messages$minLength = messages.minLength) !== null && _messages$minLength !== void 0 ? _messages$minLength : "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A".concat(minLength, "\u4F4D"));
|
|
44
59
|
}
|
|
45
|
-
if (password.length >
|
|
46
|
-
|
|
60
|
+
if (password.length > maxLength) {
|
|
61
|
+
var _messages$maxLength;
|
|
62
|
+
errors.push((_messages$maxLength = messages.maxLength) !== null && _messages$maxLength !== void 0 ? _messages$maxLength : "\u5BC6\u7801\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7".concat(maxLength, "\u4F4D"));
|
|
47
63
|
}
|
|
48
|
-
if (!/[a-z]/.test(password)) {
|
|
49
|
-
|
|
64
|
+
if (requireLowercase && !/[a-z]/.test(password)) {
|
|
65
|
+
var _messages$requireLowe;
|
|
66
|
+
errors.push((_messages$requireLowe = messages.requireLowercase) !== null && _messages$requireLowe !== void 0 ? _messages$requireLowe : '密码必须包含至少一个小写字母');
|
|
50
67
|
}
|
|
51
|
-
if (!/[A-Z]/.test(password)) {
|
|
52
|
-
|
|
68
|
+
if (requireUppercase && !/[A-Z]/.test(password)) {
|
|
69
|
+
var _messages$requireUppe;
|
|
70
|
+
errors.push((_messages$requireUppe = messages.requireUppercase) !== null && _messages$requireUppe !== void 0 ? _messages$requireUppe : '密码必须包含至少一个大写字母');
|
|
53
71
|
}
|
|
54
|
-
if (!/\d/.test(password)) {
|
|
55
|
-
|
|
72
|
+
if (requireNumber && !/\d/.test(password)) {
|
|
73
|
+
var _messages$requireNumb;
|
|
74
|
+
errors.push((_messages$requireNumb = messages.requireNumber) !== null && _messages$requireNumb !== void 0 ? _messages$requireNumb : '密码必须包含至少一个数字');
|
|
56
75
|
}
|
|
57
|
-
if (
|
|
58
|
-
|
|
76
|
+
if (requireSpecialCharacters && !specialCharactersPattern.test(password)) {
|
|
77
|
+
var _messages$requireSpec;
|
|
78
|
+
errors.push((_messages$requireSpec = messages.requireSpecialCharacters) !== null && _messages$requireSpec !== void 0 ? _messages$requireSpec : '密码必须包含至少一个特殊字符');
|
|
59
79
|
}
|
|
60
80
|
return {
|
|
61
81
|
isValid: errors.length === 0,
|
|
@@ -442,7 +442,7 @@ export var SalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
442
442
|
} : {
|
|
443
443
|
external_sale_number: normalizedLookup
|
|
444
444
|
};
|
|
445
|
-
return _context6.abrupt("return", this.request.post('/local/print-order', _objectSpread(_objectSpread({}, lookupPayload), {}, {
|
|
445
|
+
return _context6.abrupt("return", this.request.post('/shop/local/print-order', _objectSpread(_objectSpread({}, lookupPayload), {}, {
|
|
446
446
|
lookup_order_from_db: 1,
|
|
447
447
|
small_ticket_data_flag: 1,
|
|
448
448
|
business_code: businessCode,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type BusinessAvailability } from '../../modules/BusinessAvailability';
|
|
2
|
+
import type { ScheduleModule } from '../../modules/Schedule';
|
|
3
|
+
interface BusinessAvailabilityHost {
|
|
4
|
+
loadOpenData: () => Promise<Record<string, unknown> | null>;
|
|
5
|
+
getSchedule: () => ScheduleModule | undefined;
|
|
6
|
+
getTimezone: () => string;
|
|
7
|
+
getScope: () => string;
|
|
8
|
+
now?: () => Date;
|
|
9
|
+
}
|
|
10
|
+
/** Read successful configuration once per business runtime; evaluate the clock on demand. */
|
|
11
|
+
export declare class BusinessAvailabilityController {
|
|
12
|
+
private readonly host;
|
|
13
|
+
private runtime?;
|
|
14
|
+
constructor(host: BusinessAvailabilityHost);
|
|
15
|
+
invalidate(): void;
|
|
16
|
+
private now;
|
|
17
|
+
private getRuntime;
|
|
18
|
+
private assertCurrent;
|
|
19
|
+
private loadConfig;
|
|
20
|
+
private loadSchedules;
|
|
21
|
+
private error;
|
|
22
|
+
/** Synchronous final cart-commit check; deliberately never starts a load. */
|
|
23
|
+
getCachedAvailability(): BusinessAvailability;
|
|
24
|
+
getAvailability(): Promise<BusinessAvailability>;
|
|
25
|
+
assertAvailable(): void;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
4
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
5
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
6
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
8
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
9
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
10
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
11
|
+
import { cloneDeep } from 'lodash-es';
|
|
12
|
+
import { computeBusinessAvailability, normalizeBusinessAvailabilityConfig } from "../../modules/BusinessAvailability";
|
|
13
|
+
function withTimeout(_x) {
|
|
14
|
+
return _withTimeout.apply(this, arguments);
|
|
15
|
+
}
|
|
16
|
+
/** Read successful configuration once per business runtime; evaluate the clock on demand. */
|
|
17
|
+
function _withTimeout() {
|
|
18
|
+
_withTimeout = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(request) {
|
|
19
|
+
var timer;
|
|
20
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
21
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
22
|
+
case 0:
|
|
23
|
+
_context6.prev = 0;
|
|
24
|
+
_context6.next = 3;
|
|
25
|
+
return Promise.race([request, new Promise(function (_, reject) {
|
|
26
|
+
timer = setTimeout(function () {
|
|
27
|
+
return reject(new Error('Unable to load business settings. Please try again.'));
|
|
28
|
+
}, 30000);
|
|
29
|
+
})]);
|
|
30
|
+
case 3:
|
|
31
|
+
return _context6.abrupt("return", _context6.sent);
|
|
32
|
+
case 4:
|
|
33
|
+
_context6.prev = 4;
|
|
34
|
+
if (timer !== undefined) clearTimeout(timer);
|
|
35
|
+
return _context6.finish(4);
|
|
36
|
+
case 7:
|
|
37
|
+
case "end":
|
|
38
|
+
return _context6.stop();
|
|
39
|
+
}
|
|
40
|
+
}, _callee6, null, [[0,, 4, 7]]);
|
|
41
|
+
}));
|
|
42
|
+
return _withTimeout.apply(this, arguments);
|
|
43
|
+
}
|
|
44
|
+
export var BusinessAvailabilityController = /*#__PURE__*/function () {
|
|
45
|
+
function BusinessAvailabilityController(host) {
|
|
46
|
+
_classCallCheck(this, BusinessAvailabilityController);
|
|
47
|
+
_defineProperty(this, "runtime", void 0);
|
|
48
|
+
this.host = host;
|
|
49
|
+
}
|
|
50
|
+
_createClass(BusinessAvailabilityController, [{
|
|
51
|
+
key: "invalidate",
|
|
52
|
+
value: function invalidate() {
|
|
53
|
+
this.runtime = undefined;
|
|
54
|
+
}
|
|
55
|
+
}, {
|
|
56
|
+
key: "now",
|
|
57
|
+
value: function now() {
|
|
58
|
+
var _this$host$now, _this$host$now2, _this$host;
|
|
59
|
+
return (_this$host$now = (_this$host$now2 = (_this$host = this.host).now) === null || _this$host$now2 === void 0 ? void 0 : _this$host$now2.call(_this$host)) !== null && _this$host$now !== void 0 ? _this$host$now : new Date();
|
|
60
|
+
}
|
|
61
|
+
}, {
|
|
62
|
+
key: "getRuntime",
|
|
63
|
+
value: function getRuntime() {
|
|
64
|
+
var _this$runtime;
|
|
65
|
+
var scope = this.host.getScope();
|
|
66
|
+
if (((_this$runtime = this.runtime) === null || _this$runtime === void 0 ? void 0 : _this$runtime.scope) !== scope) this.runtime = {
|
|
67
|
+
scope: scope
|
|
68
|
+
};
|
|
69
|
+
return this.runtime;
|
|
70
|
+
}
|
|
71
|
+
}, {
|
|
72
|
+
key: "assertCurrent",
|
|
73
|
+
value: function assertCurrent(runtime) {
|
|
74
|
+
if (this.runtime !== runtime || runtime.scope !== this.host.getScope()) {
|
|
75
|
+
throw new Error('Store settings changed. Please try again.');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}, {
|
|
79
|
+
key: "loadConfig",
|
|
80
|
+
value: function () {
|
|
81
|
+
var _loadConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(runtime) {
|
|
82
|
+
var _this = this;
|
|
83
|
+
var request;
|
|
84
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
85
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
86
|
+
case 0:
|
|
87
|
+
if (!runtime.config) {
|
|
88
|
+
_context2.next = 2;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
return _context2.abrupt("return", runtime.config);
|
|
92
|
+
case 2:
|
|
93
|
+
if (!runtime.configRequest) {
|
|
94
|
+
runtime.configRequest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
95
|
+
var data, config;
|
|
96
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
97
|
+
while (1) switch (_context.prev = _context.next) {
|
|
98
|
+
case 0:
|
|
99
|
+
_context.next = 2;
|
|
100
|
+
return withTimeout(_this.host.loadOpenData());
|
|
101
|
+
case 2:
|
|
102
|
+
data = _context.sent;
|
|
103
|
+
_this.assertCurrent(runtime);
|
|
104
|
+
if (data) {
|
|
105
|
+
_context.next = 6;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
throw new Error('Business settings are unavailable. Please try again.');
|
|
109
|
+
case 6:
|
|
110
|
+
config = cloneDeep(normalizeBusinessAvailabilityConfig(data));
|
|
111
|
+
runtime.config = config;
|
|
112
|
+
return _context.abrupt("return", config);
|
|
113
|
+
case 9:
|
|
114
|
+
case "end":
|
|
115
|
+
return _context.stop();
|
|
116
|
+
}
|
|
117
|
+
}, _callee);
|
|
118
|
+
}))();
|
|
119
|
+
}
|
|
120
|
+
request = runtime.configRequest;
|
|
121
|
+
_context2.prev = 4;
|
|
122
|
+
_context2.next = 7;
|
|
123
|
+
return request;
|
|
124
|
+
case 7:
|
|
125
|
+
return _context2.abrupt("return", _context2.sent);
|
|
126
|
+
case 8:
|
|
127
|
+
_context2.prev = 8;
|
|
128
|
+
if (runtime.configRequest === request) runtime.configRequest = undefined;
|
|
129
|
+
return _context2.finish(8);
|
|
130
|
+
case 11:
|
|
131
|
+
case "end":
|
|
132
|
+
return _context2.stop();
|
|
133
|
+
}
|
|
134
|
+
}, _callee2, null, [[4,, 8, 11]]);
|
|
135
|
+
}));
|
|
136
|
+
function loadConfig(_x2) {
|
|
137
|
+
return _loadConfig.apply(this, arguments);
|
|
138
|
+
}
|
|
139
|
+
return loadConfig;
|
|
140
|
+
}()
|
|
141
|
+
}, {
|
|
142
|
+
key: "loadSchedules",
|
|
143
|
+
value: function () {
|
|
144
|
+
var _loadSchedules = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(runtime) {
|
|
145
|
+
var _this2 = this;
|
|
146
|
+
var request;
|
|
147
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
148
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
149
|
+
case 0:
|
|
150
|
+
if (!runtime.schedules) {
|
|
151
|
+
_context4.next = 2;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
return _context4.abrupt("return", runtime.schedules);
|
|
155
|
+
case 2:
|
|
156
|
+
if (!runtime.scheduleRequest) {
|
|
157
|
+
runtime.scheduleRequest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
158
|
+
var schedule, schedules;
|
|
159
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
160
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
161
|
+
case 0:
|
|
162
|
+
schedule = _this2.host.getSchedule();
|
|
163
|
+
if (schedule) {
|
|
164
|
+
_context3.next = 3;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
throw new Error('Business operating-hours schedule is unavailable. Please try again.');
|
|
168
|
+
case 3:
|
|
169
|
+
_context3.next = 5;
|
|
170
|
+
return withTimeout(schedule.loadAllSchedule({
|
|
171
|
+
useCache: true
|
|
172
|
+
}));
|
|
173
|
+
case 5:
|
|
174
|
+
_this2.assertCurrent(runtime);
|
|
175
|
+
schedules = cloneDeep(schedule.getScheduleListByIds(runtime.config.scheduleIds) || []);
|
|
176
|
+
runtime.schedules = schedules;
|
|
177
|
+
return _context3.abrupt("return", schedules);
|
|
178
|
+
case 9:
|
|
179
|
+
case "end":
|
|
180
|
+
return _context3.stop();
|
|
181
|
+
}
|
|
182
|
+
}, _callee3);
|
|
183
|
+
}))();
|
|
184
|
+
}
|
|
185
|
+
request = runtime.scheduleRequest;
|
|
186
|
+
_context4.prev = 4;
|
|
187
|
+
_context4.next = 7;
|
|
188
|
+
return request;
|
|
189
|
+
case 7:
|
|
190
|
+
return _context4.abrupt("return", _context4.sent);
|
|
191
|
+
case 8:
|
|
192
|
+
_context4.prev = 8;
|
|
193
|
+
if (runtime.scheduleRequest === request) runtime.scheduleRequest = undefined;
|
|
194
|
+
return _context4.finish(8);
|
|
195
|
+
case 11:
|
|
196
|
+
case "end":
|
|
197
|
+
return _context4.stop();
|
|
198
|
+
}
|
|
199
|
+
}, _callee4, null, [[4,, 8, 11]]);
|
|
200
|
+
}));
|
|
201
|
+
function loadSchedules(_x3) {
|
|
202
|
+
return _loadSchedules.apply(this, arguments);
|
|
203
|
+
}
|
|
204
|
+
return loadSchedules;
|
|
205
|
+
}()
|
|
206
|
+
}, {
|
|
207
|
+
key: "error",
|
|
208
|
+
value: function error(reason, runtime) {
|
|
209
|
+
var _runtime$config$requi, _runtime$config;
|
|
210
|
+
return {
|
|
211
|
+
status: 'error',
|
|
212
|
+
behavior: 'hide_all',
|
|
213
|
+
message: null,
|
|
214
|
+
nextChangeAt: this.now().getTime() + 60000,
|
|
215
|
+
requirePaymentOnSubmit: (_runtime$config$requi = runtime === null || runtime === void 0 || (_runtime$config = runtime.config) === null || _runtime$config === void 0 ? void 0 : _runtime$config.requirePaymentOnSubmit) !== null && _runtime$config$requi !== void 0 ? _runtime$config$requi : true,
|
|
216
|
+
error: reason instanceof Error ? reason.message : 'Business settings are unavailable. Please try again.'
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/** Synchronous final cart-commit check; deliberately never starts a load. */
|
|
221
|
+
}, {
|
|
222
|
+
key: "getCachedAvailability",
|
|
223
|
+
value: function getCachedAvailability() {
|
|
224
|
+
var runtime = this.getRuntime();
|
|
225
|
+
try {
|
|
226
|
+
this.assertCurrent(runtime);
|
|
227
|
+
if (!runtime.config) throw new Error('Business settings are still loading. Please try again.');
|
|
228
|
+
return computeBusinessAvailability({
|
|
229
|
+
config: runtime.config,
|
|
230
|
+
schedules: runtime.schedules || [],
|
|
231
|
+
timezone: this.host.getTimezone(),
|
|
232
|
+
now: this.now()
|
|
233
|
+
});
|
|
234
|
+
} catch (reason) {
|
|
235
|
+
return this.error(reason, runtime);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}, {
|
|
239
|
+
key: "getAvailability",
|
|
240
|
+
value: function () {
|
|
241
|
+
var _getAvailability = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
242
|
+
var runtime, config;
|
|
243
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
244
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
245
|
+
case 0:
|
|
246
|
+
runtime = this.getRuntime();
|
|
247
|
+
_context5.prev = 1;
|
|
248
|
+
_context5.next = 4;
|
|
249
|
+
return this.loadConfig(runtime);
|
|
250
|
+
case 4:
|
|
251
|
+
config = _context5.sent;
|
|
252
|
+
this.assertCurrent(runtime);
|
|
253
|
+
if (!(!config.paused && !config.invalidScheduleIds && config.scheduleIds.length)) {
|
|
254
|
+
_context5.next = 9;
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
_context5.next = 9;
|
|
258
|
+
return this.loadSchedules(runtime);
|
|
259
|
+
case 9:
|
|
260
|
+
this.assertCurrent(runtime);
|
|
261
|
+
return _context5.abrupt("return", this.getCachedAvailability());
|
|
262
|
+
case 13:
|
|
263
|
+
_context5.prev = 13;
|
|
264
|
+
_context5.t0 = _context5["catch"](1);
|
|
265
|
+
return _context5.abrupt("return", this.error(_context5.t0, runtime));
|
|
266
|
+
case 16:
|
|
267
|
+
case "end":
|
|
268
|
+
return _context5.stop();
|
|
269
|
+
}
|
|
270
|
+
}, _callee5, this, [[1, 13]]);
|
|
271
|
+
}));
|
|
272
|
+
function getAvailability() {
|
|
273
|
+
return _getAvailability.apply(this, arguments);
|
|
274
|
+
}
|
|
275
|
+
return getAvailability;
|
|
276
|
+
}()
|
|
277
|
+
}, {
|
|
278
|
+
key: "assertAvailable",
|
|
279
|
+
value: function assertAvailable() {
|
|
280
|
+
var availability = this.getCachedAvailability();
|
|
281
|
+
if (availability.status !== 'open') {
|
|
282
|
+
var error = new Error(availability.error || (availability.status === 'paused' ? 'Ordering is temporarily paused.' : 'Ordering is currently closed.'));
|
|
283
|
+
Object.assign(error, {
|
|
284
|
+
code: 'BUSINESS_UNAVAILABLE',
|
|
285
|
+
businessAvailability: availability
|
|
286
|
+
});
|
|
287
|
+
throw error;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}]);
|
|
291
|
+
return BusinessAvailabilityController;
|
|
292
|
+
}();
|
|
@@ -5,9 +5,11 @@ import type { LoadScheduleAvailableDateParams, ScheduleItem } from '../../module
|
|
|
5
5
|
import type { ProductListLoadProductsParams, ProductListStoreQueryParams } from '../../modules/ProductList';
|
|
6
6
|
import type { AvailabilityDateRange, AvailabilityOccupancy, AvailabilityProduct, AvailabilityResource, GetProductTimeRangesRequest } from '../../modules/ResourcePlanner';
|
|
7
7
|
import type { AvailabilityContextRef, ContextualAvailabilityQuery, ContextualAvailabilityQueryResult, ContextualCommitAvailabilitySelectionParams, ContextualProductTimeRangeGroup, UnifiedBookingSalesAddRetailProductParams, UnifiedBookingSalesApplyPlannerDiscountsParams, UnifiedBookingSalesCommitAvailabilitySelectionResult, UnifiedBookingSalesDiscountResult, UnifiedBookingSalesLoadProductsByScheduleDateParams, UnifiedBookingSalesLoadOpenDataParams, UnifiedBookingSalesPrepareAvailabilityProjectionParams, UnifiedBookingSalesPolicyResponse, UnifiedBookingSalesResolveProductAllergyRequirementParams, UnifiedBookingSalesStageRetailProductsParams, UnifiedBookingSalesState } from './types';
|
|
8
|
+
import type { BusinessAvailability } from '../../modules/BusinessAvailability';
|
|
8
9
|
import { BookingTicket } from '../BookingTicket';
|
|
9
10
|
import type { AllergyRequirement } from '../../model/strategy/adapter/itemRule';
|
|
10
11
|
export * from './types';
|
|
12
|
+
export type { BusinessAvailability, BusinessClosedBehavior } from '../../modules/BusinessAvailability';
|
|
11
13
|
export { AvailabilityError } from '../../modules/ResourcePlanner';
|
|
12
14
|
/**
|
|
13
15
|
* Converts Rules/Order discount internals into a small UI-facing diagnostic. The result keeps
|
|
@@ -59,6 +61,14 @@ export declare class UnifiedBookingSalesImpl extends BookingTicket {
|
|
|
59
61
|
protected defaultName: string;
|
|
60
62
|
protected defaultVersion: string;
|
|
61
63
|
protected store: UnifiedBookingSalesState;
|
|
64
|
+
protected pickupTimingEnabled: boolean;
|
|
65
|
+
private businessAvailabilityController?;
|
|
66
|
+
private runtimeOpenDataScope;
|
|
67
|
+
private runtimeOpenDataSnapshot;
|
|
68
|
+
private runtimeOpenDataModule;
|
|
69
|
+
private runtimeOpenDataCore;
|
|
70
|
+
private runtimeOpenDataGeneration;
|
|
71
|
+
private runtimeOpenDataDestroyed;
|
|
62
72
|
private unifiedProductCatalog;
|
|
63
73
|
private availabilityRuntimeOffsetMinutes;
|
|
64
74
|
private availabilityScheduleCatalog;
|
|
@@ -79,11 +89,28 @@ export declare class UnifiedBookingSalesImpl extends BookingTicket {
|
|
|
79
89
|
private allergyItemRuleConfigsPromise;
|
|
80
90
|
initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
|
|
81
91
|
protected getSubmitOrderSalesChannel(): string;
|
|
92
|
+
/** Only the explicit Kiosk Sales consumer entry enables this policy; POS stays unchanged. */
|
|
93
|
+
protected isBusinessAvailabilityEnabled(): boolean;
|
|
94
|
+
protected getBusinessAvailabilityScope(): string;
|
|
95
|
+
private getBusinessAvailabilityController;
|
|
96
|
+
getBusinessAvailability(): Promise<BusinessAvailability>;
|
|
97
|
+
/** Internal final-write assertion; does not fetch OpenData or Schedule. */
|
|
98
|
+
assertBusinessAvailability(): void;
|
|
99
|
+
protected getSubModuleHooks(moduleName: string): any;
|
|
82
100
|
private createAvailabilityFacadeError;
|
|
83
101
|
private getAvailabilityScopeDescriptor;
|
|
102
|
+
private usesDurationTimeGrid;
|
|
103
|
+
private getCurrentAvailabilityBusinessDate;
|
|
104
|
+
private getAvailabilityBusinessDateRange;
|
|
84
105
|
private normalizeAvailabilityIdList;
|
|
85
106
|
private normalizeAvailabilityStringList;
|
|
86
107
|
private normalizeAvailabilityPrepareDescriptor;
|
|
108
|
+
/**
|
|
109
|
+
* 列表直加没有经过 SKU availability flow,legacy cacheItem 的灵活时长可能落到
|
|
110
|
+
* 23:59。提交前用同一套营业排期补齐结束时间,保留已选开始时间、资源和 Holder。
|
|
111
|
+
* 仅供直加调用;手动时间选择和 availability candidate 不经过此方法。
|
|
112
|
+
*/
|
|
113
|
+
prepareDirectAddFlexibleBooking(cacheItem: any): Promise<any>;
|
|
87
114
|
private resolveAvailabilityPrepareDefaults;
|
|
88
115
|
private buildAvailabilityPrepareKey;
|
|
89
116
|
private clearAvailabilityRemoteResourceState;
|
|
@@ -126,6 +153,8 @@ export declare class UnifiedBookingSalesImpl extends BookingTicket {
|
|
|
126
153
|
* 用于支付跳转等终态场景,避免浏览器返回时恢复已提交订单。
|
|
127
154
|
*/
|
|
128
155
|
clearSessionStorageOrderSnapshot(): void;
|
|
156
|
+
/** 在 Kiosk 拉起支付设备前补齐订单号,同一订单重试复用已分配的号码。 */
|
|
157
|
+
ensureLocalOrderNumbersForCheckout(): Promise<void>;
|
|
129
158
|
/**
|
|
130
159
|
* PC/H5/Kiosk 结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
|
|
131
160
|
* 显式传 checkoutSyncTaskEnabled: true 时仍可回退到本地同步模式。
|
|
@@ -142,12 +171,14 @@ export declare class UnifiedBookingSalesImpl extends BookingTicket {
|
|
|
142
171
|
private resolveDiscountAction;
|
|
143
172
|
private resetCachedCustomerDiscountState;
|
|
144
173
|
private refreshLegacySessionCustomerDiscounts;
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
174
|
+
private getRuntimeOpenDataScope;
|
|
175
|
+
private resetRuntimeOpenData;
|
|
176
|
+
protected prepareInvoiceTemplateAtSolutionReady(injectedOpenData?: OpenDataConfig): Promise<void>;
|
|
177
|
+
protected loadOpenDataConfig(): Promise<OpenDataConfig | null>;
|
|
178
|
+
/** A successful configuration belongs to this business runtime until an explicit refresh. */
|
|
149
179
|
loadOpenData(params: UnifiedBookingSalesLoadOpenDataParams): Promise<OpenDataConfig>;
|
|
150
180
|
getOpenData(): Promise<OpenDataConfig | null>;
|
|
181
|
+
protected loadPickupTimingOpenData(_force: boolean): Promise<Record<string, unknown>>;
|
|
151
182
|
private resetAllergyItemRuleState;
|
|
152
183
|
private fetchAllergyItemRuleConfigs;
|
|
153
184
|
private ensureAllergyItemRuleConfigsLoaded;
|
|
@@ -253,6 +284,7 @@ export declare class UnifiedBookingSalesImpl extends BookingTicket {
|
|
|
253
284
|
private assertAvailabilityCommitWriteCAS;
|
|
254
285
|
private findProductLineByUid;
|
|
255
286
|
private findLinkedBooking;
|
|
287
|
+
removeBookingProductsOutsideStartDate(startDate: unknown): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
256
288
|
/** Revalidates against the latest landed occupancy cache, then mutates exactly one product line. */
|
|
257
289
|
commitAvailabilitySelection(contextId: string, params: ContextualCommitAvailabilitySelectionParams): Promise<UnifiedBookingSalesCommitAvailabilitySelectionResult>;
|
|
258
290
|
}
|