@pisell/pisellos 0.10.60 → 0.10.61

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.
@@ -266,6 +266,7 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
266
266
  _context5.next = 3;
267
267
  return this.request.get("/machinecode/batch-search", _objectSpread(_objectSpread({
268
268
  code: code,
269
+ resolve_ticket_order: 1,
269
270
  translate_flag: 1,
270
271
  tags: ['entitlement_pass', 'good_pass', 'product_discount_card'],
271
272
  // available: 1,
@@ -609,7 +609,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
609
609
  generateIdempotencyToken(): string;
610
610
  syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
611
611
  createOrder(params: CommitOrderParams['query']): {
612
- type: "virtual" | "appointment_booking";
612
+ type: "appointment_booking" | "virtual";
613
613
  platform: string;
614
614
  sales_channel: string;
615
615
  order_sales_channel: string;
@@ -326,7 +326,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
326
326
  date: string;
327
327
  status: string;
328
328
  week: string;
329
- weekNum: 0 | 1 | 2 | 6 | 4 | 5 | 3;
329
+ weekNum: 0 | 2 | 1 | 3 | 4 | 5 | 6;
330
330
  }[]>;
331
331
  submitTimeSlot(timeSlots: TimeSliceItem): void;
332
332
  private getScheduleDataByIds;
@@ -465,7 +465,19 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
465
465
  * 加车两阶段主决策(规格弹窗 / 资源编辑 / 直接加车)。
466
466
  * 与 ticketBooking `handleSelectProduct` + `handleBooking4Service` 等价。
467
467
  */
468
- decideAddProduct(item: any, options?: Partial<AddProductDecideContext>): import("./utils/addProductDecision").AddProductDecision;
468
+ decideAddProduct(item: any, options?: Partial<AddProductDecideContext>): {
469
+ action: "reloadCatalog";
470
+ } | {
471
+ action: "add";
472
+ cacheItem: any;
473
+ } | {
474
+ action: "requiresDetail";
475
+ payload: AddProductRequiresDetailPayload;
476
+ } | {
477
+ action: "requiresBookingEdit";
478
+ cacheItem: any;
479
+ payload: import("./utils/addProductDecision").AddProductRequiresBookingEditPayload;
480
+ };
469
481
  /** 规格弹窗 callback 后的第二段决策。 */
470
482
  decideAfterDetail(cacheItem: any, options?: Partial<AddProductDecideContext>): import("./utils/addProductDecision").AddProductDecision;
471
483
  /**
@@ -5,7 +5,7 @@ import type { OrderProduct, OrderProductIdentity, AddProductBookingInput } from
5
5
  * cart.addProduct 两阶段决策(与 ticketBooking `handleSelectProduct` 对齐):
6
6
  *
7
7
  * 1. `requiresDetail`:规格 / SKU / 套餐 / Session / 称重弹窗(门禁:`isOpenDetailModal` / `cartDetailValue` / `open_sold_weight`)
8
- * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(kiosk 强制进入;其他渠道由 `getIsAutoClose` 决定)
8
+ * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(自助终端强制进入;其他渠道由 `getIsAutoClose` 决定)
9
9
  * 3. `add`:两关均通过,直接 transform + 加车
10
10
  */
11
11
  export type AddProductDecision = {
@@ -8,12 +8,13 @@ import dayjs from 'dayjs';
8
8
  import { cacheItemToBookingInput, derivePresetStartTimeFromDate, getProductExtend, getIsAutoClose, isSessionProduct, isBookingProduct, applySessionTimesToExtend, hasActualResourceSelection, productNeedsResourceExtend } from "../../../modules/BookingContext";
9
9
  import { transformBaseProductToOrderProduct } from "../../BaseSales/utils/transformBaseProductToOrderProduct";
10
10
  import { buildProductSkuFromCacheItem } from "./weighingProductSku";
11
+ import { isSelfServicePlatform } from "../../../utils/platform";
11
12
 
12
13
  /**
13
14
  * cart.addProduct 两阶段决策(与 ticketBooking `handleSelectProduct` 对齐):
14
15
  *
15
16
  * 1. `requiresDetail`:规格 / SKU / 套餐 / Session / 称重弹窗(门禁:`isOpenDetailModal` / `cartDetailValue` / `open_sold_weight`)
16
- * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(kiosk 强制进入;其他渠道由 `getIsAutoClose` 决定)
17
+ * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(自助终端强制进入;其他渠道由 `getIsAutoClose` 决定)
17
18
  * 3. `add`:两关均通过,直接 transform + 加车
18
19
  */
19
20
 
@@ -30,11 +31,11 @@ function needsSpecDetailModal(item) {
30
31
  }
31
32
 
32
33
  /**
33
- * 第二段:预约商品是否仍需打开资源 / 时间编辑(kiosk 强制打开,其他渠道与 info2 `cacheItem.autoClose` 等价)。
34
+ * 第二段:预约商品是否仍需打开资源 / 时间编辑(自助终端强制打开,其他渠道与 info2 `cacheItem.autoClose` 等价)。
34
35
  */
35
36
  function needsBookingEdit(cacheItem, ctx) {
36
37
  if (isNormalBookingProduct(cacheItem)) return false;
37
- if ((ctx === null || ctx === void 0 ? void 0 : ctx.channel) === 'kiosk') return true;
38
+ if (isSelfServicePlatform(ctx === null || ctx === void 0 ? void 0 : ctx.channel)) return true;
38
39
  var isAutoAllocationOn = (ctx === null || ctx === void 0 ? void 0 : ctx.isAutoAllocationOn) || function () {
39
40
  return true;
40
41
  };
@@ -13,6 +13,7 @@ export var searchWalletPass = /*#__PURE__*/function () {
13
13
  case 0:
14
14
  params = {
15
15
  code: code,
16
+ resolve_ticket_order: 1,
16
17
  translate_flag: 1,
17
18
  // 翻译识别码名称 0:不翻译 1:翻译
18
19
  relation_product: 1,
@@ -10,6 +10,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
10
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
11
  import { searchWalletPass, searchWallet, searchProduct, searchOrder } from "./cloudSearch";
12
12
  import scanCache from "./scanCache";
13
+ import { isSelfServicePlatform } from "../../../../utils/platform";
13
14
 
14
15
  /**
15
16
  * Promise.any 的替代实现
@@ -161,7 +162,7 @@ export var handleGlobalScan = function handleGlobalScan(request, localSearch, ch
161
162
  if (value.startsWith('WL')) {
162
163
  requestList = [searchWallet(request, value)];
163
164
  } else {
164
- requestList = [].concat(_toConsumableArray(channel === 'kiosk' ? [] : [searchOrder(request, value)]), [searchWalletPass(request, value), searchWallet(request, value), searchProduct(request, value)]);
165
+ requestList = [].concat(_toConsumableArray(isSelfServicePlatform(channel) ? [] : [searchOrder(request, value)]), [searchWalletPass(request, value), searchWallet(request, value), searchProduct(request, value)]);
165
166
  }
166
167
  return requestList;
167
168
  };
@@ -145,7 +145,7 @@ export declare class UnifiedBookingSalesImpl extends BookingTicket {
145
145
  */
146
146
  clearSessionStorageOrderSnapshot(): void;
147
147
  /**
148
- * PC/H5/Kiosk 结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
148
+ * PC/H5 及自助终端结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
149
149
  * 显式传 checkoutSyncTaskEnabled: true 时仍可回退到本地同步模式。
150
150
  */
151
151
  protected shouldUseCheckoutSyncTask(): boolean;
@@ -45,7 +45,7 @@ import { AvailabilityRemoteOccupancyCache } from "./remoteOccupancyCache";
45
45
  import { BusinessAvailabilityController } from "./businessAvailability";
46
46
  import { BookingTicket } from "../BookingTicket";
47
47
  import { addLocalCalendarDays, captureRuntimeOffsetMinutes, formatLocalDate, formatLocalDateTime, formatLocalTime, localDateTimeToScalar, localDateToScalar, localDateToScalarStart, parseLocalDate, parseLocalDateTime } from "../../modules/ResourcePlanner/localClock";
48
- import { isCustomerUserPlatform, normalizeRuntimePlatform } from "../../utils/platform";
48
+ import { isCustomerUserPlatform, isSelfServicePlatform, normalizeRuntimePlatform } from "../../utils/platform";
49
49
  import { ItemRuleEvaluator } from "../../model/strategy/adapter/itemRule";
50
50
  export * from "./types";
51
51
  export { AvailabilityError } from "../../modules/ResourcePlanner";
@@ -2005,7 +2005,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
2005
2005
  }
2006
2006
 
2007
2007
  /**
2008
- * PC/H5/Kiosk 结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
2008
+ * PC/H5 及自助终端结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
2009
2009
  * 显式传 checkoutSyncTaskEnabled: true 时仍可回退到本地同步模式。
2010
2010
  */
2011
2011
  }, {
@@ -2015,7 +2015,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
2015
2015
  var configured = (_this$otherParams16 = this.otherParams) === null || _this$otherParams16 === void 0 ? void 0 : _this$otherParams16.checkoutSyncTaskEnabled;
2016
2016
  if (configured === true) return true;
2017
2017
  var platform = normalizeRuntimePlatform((_this$otherParams17 = this.otherParams) === null || _this$otherParams17 === void 0 ? void 0 : _this$otherParams17.platform);
2018
- return !isCustomerUserPlatform(platform) && platform !== 'kiosk';
2018
+ return !isCustomerUserPlatform(platform) && !isSelfServicePlatform(platform);
2019
2019
  }
2020
2020
 
2021
2021
  /** UnifiedBookingSales 的真实结账默认请求收据数据,供云端确认后再本地打印。 */
@@ -2838,7 +2838,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
2838
2838
  throw new Error('[UnifiedBookingSales] getProtocol 需要 policyId');
2839
2839
  case 3:
2840
2840
  policyUrl = 'shop-policy';
2841
- if (this.otherParams.platform === 'kiosk' || this.otherParams.platform === 'pos' || this.otherParams.platform === 'shop') {
2841
+ if (isSelfServicePlatform(this.otherParams.platform) || this.otherParams.platform === 'pos' || this.otherParams.platform === 'shop') {
2842
2842
  policyUrl = 'policy';
2843
2843
  }
2844
2844
  return _context23.abrupt("return", this.request.get("/".concat(policyUrl, "/").concat(encodeURIComponent(normalizedPolicyId))));
@@ -6,3 +6,5 @@ export declare function normalizeRuntimePlatform(platform: unknown): string;
6
6
  * PC and H5 are authenticated-customer clients rather than staff terminals.
7
7
  */
8
8
  export declare function isCustomerUserPlatform(platform: unknown): boolean;
9
+ /** Kiosk and vending retain distinct channels but share self-service checkout behavior. */
10
+ export declare function isSelfServicePlatform(platform: unknown): boolean;
@@ -1,4 +1,5 @@
1
1
  var CUSTOMER_USER_PLATFORMS = new Set(['pc', 'h5']);
2
+ var SELF_SERVICE_PLATFORMS = new Set(['kiosk', 'vending']);
2
3
 
3
4
  /**
4
5
  * Normalize the runtime platform passed through solution/module otherParams.
@@ -12,4 +13,9 @@ export function normalizeRuntimePlatform(platform) {
12
13
  */
13
14
  export function isCustomerUserPlatform(platform) {
14
15
  return CUSTOMER_USER_PLATFORMS.has(normalizeRuntimePlatform(platform));
16
+ }
17
+
18
+ /** Kiosk and vending retain distinct channels but share self-service checkout behavior. */
19
+ export function isSelfServicePlatform(platform) {
20
+ return SELF_SERVICE_PLATFORMS.has(normalizeRuntimePlatform(platform));
15
21
  }
@@ -142,6 +142,7 @@ class DiscountModule extends _BaseModule.BaseModule {
142
142
  } = options || {};
143
143
  const result = await this.request.get(`/machinecode/batch-search`, {
144
144
  code,
145
+ resolve_ticket_order: 1,
145
146
  translate_flag: 1,
146
147
  tags: ['entitlement_pass', 'good_pass', 'product_discount_card'],
147
148
  // available: 1,
@@ -609,7 +609,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
609
609
  generateIdempotencyToken(): string;
610
610
  syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
611
611
  createOrder(params: CommitOrderParams['query']): {
612
- type: "virtual" | "appointment_booking";
612
+ type: "appointment_booking" | "virtual";
613
613
  platform: string;
614
614
  sales_channel: string;
615
615
  order_sales_channel: string;
@@ -326,7 +326,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
326
326
  date: string;
327
327
  status: string;
328
328
  week: string;
329
- weekNum: 0 | 1 | 2 | 6 | 4 | 5 | 3;
329
+ weekNum: 0 | 2 | 1 | 3 | 4 | 5 | 6;
330
330
  }[]>;
331
331
  submitTimeSlot(timeSlots: TimeSliceItem): void;
332
332
  private getScheduleDataByIds;
@@ -465,7 +465,19 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
465
465
  * 加车两阶段主决策(规格弹窗 / 资源编辑 / 直接加车)。
466
466
  * 与 ticketBooking `handleSelectProduct` + `handleBooking4Service` 等价。
467
467
  */
468
- decideAddProduct(item: any, options?: Partial<AddProductDecideContext>): import("./utils/addProductDecision").AddProductDecision;
468
+ decideAddProduct(item: any, options?: Partial<AddProductDecideContext>): {
469
+ action: "reloadCatalog";
470
+ } | {
471
+ action: "add";
472
+ cacheItem: any;
473
+ } | {
474
+ action: "requiresDetail";
475
+ payload: AddProductRequiresDetailPayload;
476
+ } | {
477
+ action: "requiresBookingEdit";
478
+ cacheItem: any;
479
+ payload: import("./utils/addProductDecision").AddProductRequiresBookingEditPayload;
480
+ };
469
481
  /** 规格弹窗 callback 后的第二段决策。 */
470
482
  decideAfterDetail(cacheItem: any, options?: Partial<AddProductDecideContext>): import("./utils/addProductDecision").AddProductDecision;
471
483
  /**
@@ -5,7 +5,7 @@ import type { OrderProduct, OrderProductIdentity, AddProductBookingInput } from
5
5
  * cart.addProduct 两阶段决策(与 ticketBooking `handleSelectProduct` 对齐):
6
6
  *
7
7
  * 1. `requiresDetail`:规格 / SKU / 套餐 / Session / 称重弹窗(门禁:`isOpenDetailModal` / `cartDetailValue` / `open_sold_weight`)
8
- * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(kiosk 强制进入;其他渠道由 `getIsAutoClose` 决定)
8
+ * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(自助终端强制进入;其他渠道由 `getIsAutoClose` 决定)
9
9
  * 3. `add`:两关均通过,直接 transform + 加车
10
10
  */
11
11
  export type AddProductDecision = {
@@ -17,12 +17,13 @@ var _dayjs = _interopRequireDefault(require("dayjs"));
17
17
  var _BookingContext = require("../../../modules/BookingContext");
18
18
  var _transformBaseProductToOrderProduct = require("../../BaseSales/utils/transformBaseProductToOrderProduct");
19
19
  var _weighingProductSku = require("./weighingProductSku");
20
+ var _platform = require("../../../utils/platform");
20
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22
  /**
22
23
  * cart.addProduct 两阶段决策(与 ticketBooking `handleSelectProduct` 对齐):
23
24
  *
24
25
  * 1. `requiresDetail`:规格 / SKU / 套餐 / Session / 称重弹窗(门禁:`isOpenDetailModal` / `cartDetailValue` / `open_sold_weight`)
25
- * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(kiosk 强制进入;其他渠道由 `getIsAutoClose` 决定)
26
+ * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(自助终端强制进入;其他渠道由 `getIsAutoClose` 决定)
26
27
  * 3. `add`:两关均通过,直接 transform + 加车
27
28
  */
28
29
 
@@ -39,11 +40,11 @@ function needsSpecDetailModal(item) {
39
40
  }
40
41
 
41
42
  /**
42
- * 第二段:预约商品是否仍需打开资源 / 时间编辑(kiosk 强制打开,其他渠道与 info2 `cacheItem.autoClose` 等价)。
43
+ * 第二段:预约商品是否仍需打开资源 / 时间编辑(自助终端强制打开,其他渠道与 info2 `cacheItem.autoClose` 等价)。
43
44
  */
44
45
  function needsBookingEdit(cacheItem, ctx) {
45
46
  if (isNormalBookingProduct(cacheItem)) return false;
46
- if (ctx?.channel === 'kiosk') return true;
47
+ if ((0, _platform.isSelfServicePlatform)(ctx?.channel)) return true;
47
48
  const isAutoAllocationOn = ctx?.isAutoAllocationOn || (() => true);
48
49
  return !(0, _BookingContext.getIsAutoClose)(cacheItem, isAutoAllocationOn);
49
50
  }
@@ -10,6 +10,7 @@ exports.searchWalletPass = exports.searchWallet = exports.searchProduct = export
10
10
  const searchWalletPass = async (request, code) => {
11
11
  const params = {
12
12
  code,
13
+ resolve_ticket_order: 1,
13
14
  translate_flag: 1,
14
15
  // 翻译识别码名称 0:不翻译 1:翻译
15
16
  relation_product: 1,
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.handleUniversalScan = exports.handleGlobalScan = exports.handleCustomerScan = void 0;
7
7
  var _cloudSearch = require("./cloudSearch");
8
8
  var _scanCache = _interopRequireDefault(require("./scanCache"));
9
+ var _platform = require("../../../../utils/platform");
9
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
11
  /**
11
12
  * Promise.any 的替代实现
@@ -107,7 +108,7 @@ const handleGlobalScan = (request, localSearch, channel) => {
107
108
  if (value.startsWith('WL')) {
108
109
  requestList = [(0, _cloudSearch.searchWallet)(request, value)];
109
110
  } else {
110
- requestList = [...(channel === 'kiosk' ? [] : [(0, _cloudSearch.searchOrder)(request, value)]), (0, _cloudSearch.searchWalletPass)(request, value), (0, _cloudSearch.searchWallet)(request, value), (0, _cloudSearch.searchProduct)(request, value)];
111
+ requestList = [...((0, _platform.isSelfServicePlatform)(channel) ? [] : [(0, _cloudSearch.searchOrder)(request, value)]), (0, _cloudSearch.searchWalletPass)(request, value), (0, _cloudSearch.searchWallet)(request, value), (0, _cloudSearch.searchProduct)(request, value)];
111
112
  }
112
113
  return requestList;
113
114
  };
@@ -145,7 +145,7 @@ export declare class UnifiedBookingSalesImpl extends BookingTicket {
145
145
  */
146
146
  clearSessionStorageOrderSnapshot(): void;
147
147
  /**
148
- * PC/H5/Kiosk 结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
148
+ * PC/H5 及自助终端结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
149
149
  * 显式传 checkoutSyncTaskEnabled: true 时仍可回退到本地同步模式。
150
150
  */
151
151
  protected shouldUseCheckoutSyncTask(): boolean;
@@ -1653,14 +1653,14 @@ class UnifiedBookingSalesImpl extends _BookingTicket.BookingTicket {
1653
1653
  }
1654
1654
 
1655
1655
  /**
1656
- * PC/H5/Kiosk 结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
1656
+ * PC/H5 及自助终端结账默认直接等待云端 checkout;POS/WebPOS 仍保持本地待同步。
1657
1657
  * 显式传 checkoutSyncTaskEnabled: true 时仍可回退到本地同步模式。
1658
1658
  */
1659
1659
  shouldUseCheckoutSyncTask() {
1660
1660
  const configured = this.otherParams?.checkoutSyncTaskEnabled;
1661
1661
  if (configured === true) return true;
1662
1662
  const platform = (0, _platform.normalizeRuntimePlatform)(this.otherParams?.platform);
1663
- return !(0, _platform.isCustomerUserPlatform)(platform) && platform !== 'kiosk';
1663
+ return !(0, _platform.isCustomerUserPlatform)(platform) && !(0, _platform.isSelfServicePlatform)(platform);
1664
1664
  }
1665
1665
 
1666
1666
  /** UnifiedBookingSales 的真实结账默认请求收据数据,供云端确认后再本地打印。 */
@@ -2017,7 +2017,7 @@ class UnifiedBookingSalesImpl extends _BookingTicket.BookingTicket {
2017
2017
  throw new Error('[UnifiedBookingSales] getProtocol 需要 policyId');
2018
2018
  }
2019
2019
  let policyUrl = 'shop-policy';
2020
- if (this.otherParams.platform === 'kiosk' || this.otherParams.platform === 'pos' || this.otherParams.platform === 'shop') {
2020
+ if ((0, _platform.isSelfServicePlatform)(this.otherParams.platform) || this.otherParams.platform === 'pos' || this.otherParams.platform === 'shop') {
2021
2021
  policyUrl = 'policy';
2022
2022
  }
2023
2023
  return this.request.get(`/${policyUrl}/${encodeURIComponent(normalizedPolicyId)}`);
@@ -6,3 +6,5 @@ export declare function normalizeRuntimePlatform(platform: unknown): string;
6
6
  * PC and H5 are authenticated-customer clients rather than staff terminals.
7
7
  */
8
8
  export declare function isCustomerUserPlatform(platform: unknown): boolean;
9
+ /** Kiosk and vending retain distinct channels but share self-service checkout behavior. */
10
+ export declare function isSelfServicePlatform(platform: unknown): boolean;
@@ -4,8 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isCustomerUserPlatform = isCustomerUserPlatform;
7
+ exports.isSelfServicePlatform = isSelfServicePlatform;
7
8
  exports.normalizeRuntimePlatform = normalizeRuntimePlatform;
8
9
  const CUSTOMER_USER_PLATFORMS = new Set(['pc', 'h5']);
10
+ const SELF_SERVICE_PLATFORMS = new Set(['kiosk', 'vending']);
9
11
 
10
12
  /**
11
13
  * Normalize the runtime platform passed through solution/module otherParams.
@@ -19,4 +21,9 @@ function normalizeRuntimePlatform(platform) {
19
21
  */
20
22
  function isCustomerUserPlatform(platform) {
21
23
  return CUSTOMER_USER_PLATFORMS.has(normalizeRuntimePlatform(platform));
24
+ }
25
+
26
+ /** Kiosk and vending retain distinct channels but share self-service checkout behavior. */
27
+ function isSelfServicePlatform(platform) {
28
+ return SELF_SERVICE_PLATFORMS.has(normalizeRuntimePlatform(platform));
22
29
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "0.10.60",
4
+ "version": "0.10.61",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",