@pisell/pisellos 2.2.314 → 2.2.316

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.
Files changed (268) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +3 -1
  3. package/dist/model/strategy/adapter/itemRule/adapter.d.ts +3 -1
  4. package/dist/model/strategy/adapter/itemRule/adapter.js +74 -7
  5. package/dist/model/strategy/adapter/itemRule/evaluator.d.ts +3 -1
  6. package/dist/model/strategy/adapter/itemRule/evaluator.js +13 -0
  7. package/dist/model/strategy/adapter/itemRule/type.d.ts +40 -1
  8. package/dist/model/strategy/adapter/itemRule/type.js +10 -0
  9. package/dist/model/strategy/adapter/promotion/evaluator.js +89 -104
  10. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
  11. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +28 -4
  12. package/dist/modules/BookingContext/utils/productExtend.d.ts +7 -0
  13. package/dist/modules/BookingContext/utils/productExtend.js +62 -18
  14. package/dist/modules/BookingContext/utils/resources.js +1 -1
  15. package/dist/modules/BusinessAvailability/index.d.ts +30 -0
  16. package/dist/modules/BusinessAvailability/index.js +204 -0
  17. package/dist/modules/Cart/index.js +4 -3
  18. package/dist/modules/Cart/types.d.ts +2 -0
  19. package/dist/modules/Cart/utils/cartProduct.d.ts +3 -1
  20. package/dist/modules/Cart/utils/cartProduct.js +59 -32
  21. package/dist/modules/FulfillmentTiming/index.d.ts +11 -0
  22. package/dist/modules/FulfillmentTiming/index.js +407 -0
  23. package/dist/modules/FulfillmentTiming/types.d.ts +67 -0
  24. package/dist/modules/FulfillmentTiming/types.js +1 -0
  25. package/dist/modules/Holder/utils.d.ts +2 -0
  26. package/dist/modules/Holder/utils.js +32 -2
  27. package/dist/modules/OpenData/contactInfo.d.ts +20 -0
  28. package/dist/modules/OpenData/contactInfo.js +70 -0
  29. package/dist/modules/OpenData/index.d.ts +1 -0
  30. package/dist/modules/OpenData/index.js +1 -0
  31. package/dist/modules/OpenData/types.d.ts +23 -0
  32. package/dist/modules/Order/holderRelations.d.ts +14 -0
  33. package/dist/modules/Order/holderRelations.js +154 -0
  34. package/dist/modules/Order/index.d.ts +16 -4
  35. package/dist/modules/Order/index.js +926 -511
  36. package/dist/modules/Order/localEftposState.d.ts +13 -0
  37. package/dist/modules/Order/localEftposState.js +39 -0
  38. package/dist/modules/Order/pickupTiming.d.ts +46 -0
  39. package/dist/modules/Order/pickupTiming.js +53 -0
  40. package/dist/modules/Order/types.d.ts +49 -3
  41. package/dist/modules/Order/types.js +2 -0
  42. package/dist/modules/Order/utils/discountProductLineIdentity.d.ts +1 -1
  43. package/dist/modules/Order/utils/discountProductLineIdentity.js +142 -7
  44. package/dist/modules/Order/utils/orderCollectionIdentity.js +24 -10
  45. package/dist/modules/Order/utils.d.ts +2 -1
  46. package/dist/modules/Order/utils.js +61 -17
  47. package/dist/modules/Payment/index.js +9 -10
  48. package/dist/modules/Product/types.d.ts +11 -0
  49. package/dist/modules/ProductList/index.js +1 -1
  50. package/dist/modules/ResourcePlanner/planner.d.ts +2 -0
  51. package/dist/modules/ResourcePlanner/planner.js +332 -23
  52. package/dist/modules/ResourcePlanner/types.d.ts +29 -0
  53. package/dist/modules/Rules/index.js +62 -61
  54. package/dist/modules/Schedule/index.d.ts +8 -0
  55. package/dist/modules/Schedule/index.js +141 -39
  56. package/dist/modules/index.d.ts +1 -0
  57. package/dist/modules/index.js +1 -0
  58. package/dist/plugins/request.d.ts +7 -0
  59. package/dist/server/index.d.ts +1 -0
  60. package/dist/server/index.js +1557 -1322
  61. package/dist/server/modules/form/index.d.ts +19 -0
  62. package/dist/server/modules/form/index.js +205 -0
  63. package/dist/server/modules/form/types.d.ts +13 -0
  64. package/dist/server/modules/form/types.js +3 -0
  65. package/dist/server/modules/index.d.ts +3 -0
  66. package/dist/server/modules/index.js +4 -0
  67. package/dist/server/modules/order/index.d.ts +19 -0
  68. package/dist/server/modules/order/index.js +1071 -774
  69. package/dist/server/modules/order/types.d.ts +4 -0
  70. package/dist/server/modules/products/index.d.ts +28 -7
  71. package/dist/server/modules/products/index.js +1297 -770
  72. package/dist/server/modules/products/replication.d.ts +8 -0
  73. package/dist/server/modules/products/replication.js +69 -0
  74. package/dist/server/modules/products/types.d.ts +12 -1
  75. package/dist/server/modules/products/types.js +4 -0
  76. package/dist/server/test.json +1 -1
  77. package/dist/server/utils/small-ticket.d.ts +1 -85
  78. package/dist/server/utils/small-ticket.js +2 -2542
  79. package/dist/shared/payment/loadPaymentMethods.d.ts +9 -0
  80. package/dist/shared/payment/loadPaymentMethods.js +66 -0
  81. package/dist/shared/receipt/customerInvoiceLanguages.d.ts +8 -0
  82. package/dist/shared/receipt/customerInvoiceLanguages.js +60 -0
  83. package/dist/shared/receipt/loadCustomerInvoiceLayout.d.ts +27 -0
  84. package/dist/shared/receipt/loadCustomerInvoiceLayout.js +184 -0
  85. package/dist/shared/receipt/small-ticket.d.ts +96 -0
  86. package/dist/shared/receipt/small-ticket.js +2763 -0
  87. package/dist/shared/receipt/templateVisibility.d.ts +26 -0
  88. package/dist/shared/receipt/templateVisibility.js +68 -0
  89. package/dist/shared/sales/loadSalesOrderSnapshot.d.ts +9 -0
  90. package/dist/shared/sales/loadSalesOrderSnapshot.js +21 -0
  91. package/dist/solution/BaseSales/fulfillmentItemRules.d.ts +27 -0
  92. package/dist/solution/BaseSales/fulfillmentItemRules.js +750 -0
  93. package/dist/solution/BaseSales/index.d.ts +43 -16
  94. package/dist/solution/BaseSales/index.js +2028 -1247
  95. package/dist/solution/BaseSales/pickupTiming.d.ts +47 -0
  96. package/dist/solution/BaseSales/pickupTiming.js +616 -0
  97. package/dist/solution/BaseSales/types.d.ts +12 -0
  98. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +3 -1
  99. package/dist/solution/BaseSales/utils/parseSalesResponse.js +10 -3
  100. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +14 -4
  101. package/dist/solution/BookingByStep/index.d.ts +4 -2
  102. package/dist/solution/BookingByStep/index.js +8 -3
  103. package/dist/solution/BookingTicket/index.d.ts +23 -3
  104. package/dist/solution/BookingTicket/index.js +867 -507
  105. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +0 -1
  106. package/dist/solution/BookingTicket/utils/addProductDecision.js +1 -1
  107. package/dist/solution/BookingTicket/utils/cartView.js +3 -1
  108. package/dist/solution/OrderInvoicePreview/index.d.ts +66 -0
  109. package/dist/solution/OrderInvoicePreview/index.js +340 -0
  110. package/dist/solution/RegisterAndLogin/config.js +54 -11
  111. package/dist/solution/RegisterAndLogin/index.d.ts +2 -0
  112. package/dist/solution/RegisterAndLogin/index.js +1 -1
  113. package/dist/solution/RegisterAndLogin/utils.d.ts +12 -4
  114. package/dist/solution/RegisterAndLogin/utils.js +36 -16
  115. package/dist/solution/ScanOrder/index.js +65 -31
  116. package/dist/solution/ScanOrder/types.d.ts +3 -0
  117. package/dist/solution/UnifiedBookingSales/businessAvailability.d.ts +27 -0
  118. package/dist/solution/UnifiedBookingSales/businessAvailability.js +292 -0
  119. package/dist/solution/UnifiedBookingSales/index.d.ts +36 -4
  120. package/dist/solution/UnifiedBookingSales/index.js +1715 -906
  121. package/dist/solution/UnifiedBookingSales/types.d.ts +16 -2
  122. package/dist/solution/VenueBooking/index.d.ts +15 -2
  123. package/dist/solution/VenueBooking/index.js +1062 -785
  124. package/dist/solution/VenueBooking/types.d.ts +2 -1
  125. package/dist/solution/VenueBooking/types.js +1 -0
  126. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +1 -0
  127. package/dist/solution/VenueBooking/utils/dateSummary.js +7 -4
  128. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +71 -0
  129. package/dist/solution/VenueBooking/utils/smartPricing.js +273 -0
  130. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +1 -0
  131. package/dist/solution/VenueBooking/utils/timeSlot.js +6 -3
  132. package/dist/solution/index.d.ts +1 -0
  133. package/dist/solution/index.js +2 -1
  134. package/lib/index.d.ts +2 -0
  135. package/lib/index.js +21 -1
  136. package/lib/model/strategy/adapter/itemRule/adapter.d.ts +3 -1
  137. package/lib/model/strategy/adapter/itemRule/adapter.js +54 -4
  138. package/lib/model/strategy/adapter/itemRule/evaluator.d.ts +3 -1
  139. package/lib/model/strategy/adapter/itemRule/evaluator.js +9 -0
  140. package/lib/model/strategy/adapter/itemRule/type.d.ts +40 -1
  141. package/lib/model/strategy/adapter/itemRule/type.js +10 -0
  142. package/lib/model/strategy/adapter/promotion/evaluator.js +9 -14
  143. package/lib/model/strategy/adapter/promotion/index.js +46 -1
  144. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
  145. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +17 -1
  146. package/lib/modules/BookingContext/utils/productExtend.d.ts +7 -0
  147. package/lib/modules/BookingContext/utils/productExtend.js +45 -2
  148. package/lib/modules/BookingContext/utils/resources.js +1 -1
  149. package/lib/modules/BusinessAvailability/index.d.ts +30 -0
  150. package/lib/modules/BusinessAvailability/index.js +146 -0
  151. package/lib/modules/Cart/index.js +4 -2
  152. package/lib/modules/Cart/types.d.ts +2 -0
  153. package/lib/modules/Cart/utils/cartProduct.d.ts +3 -1
  154. package/lib/modules/Cart/utils/cartProduct.js +39 -20
  155. package/lib/modules/FulfillmentTiming/index.d.ts +11 -0
  156. package/lib/modules/FulfillmentTiming/index.js +359 -0
  157. package/lib/modules/FulfillmentTiming/types.d.ts +67 -0
  158. package/lib/modules/FulfillmentTiming/types.js +5 -0
  159. package/lib/modules/Holder/utils.d.ts +2 -0
  160. package/lib/modules/Holder/utils.js +27 -1
  161. package/lib/modules/OpenData/contactInfo.d.ts +20 -0
  162. package/lib/modules/OpenData/contactInfo.js +56 -0
  163. package/lib/modules/OpenData/index.d.ts +1 -0
  164. package/lib/modules/OpenData/index.js +12 -0
  165. package/lib/modules/OpenData/types.d.ts +23 -0
  166. package/lib/modules/Order/holderRelations.d.ts +14 -0
  167. package/lib/modules/Order/holderRelations.js +98 -0
  168. package/lib/modules/Order/index.d.ts +16 -4
  169. package/lib/modules/Order/index.js +284 -50
  170. package/lib/modules/Order/localEftposState.d.ts +13 -0
  171. package/lib/modules/Order/localEftposState.js +44 -0
  172. package/lib/modules/Order/pickupTiming.d.ts +46 -0
  173. package/lib/modules/Order/pickupTiming.js +61 -0
  174. package/lib/modules/Order/types.d.ts +49 -3
  175. package/lib/modules/Order/types.js +1 -0
  176. package/lib/modules/Order/utils/discountProductLineIdentity.d.ts +1 -1
  177. package/lib/modules/Order/utils/discountProductLineIdentity.js +51 -2
  178. package/lib/modules/Order/utils/orderCollectionIdentity.js +5 -0
  179. package/lib/modules/Order/utils.d.ts +2 -1
  180. package/lib/modules/Order/utils.js +49 -11
  181. package/lib/modules/Payment/index.js +3 -4
  182. package/lib/modules/Product/types.d.ts +11 -0
  183. package/lib/modules/ProductList/index.js +1 -1
  184. package/lib/modules/ResourcePlanner/planner.d.ts +2 -0
  185. package/lib/modules/ResourcePlanner/planner.js +252 -8
  186. package/lib/modules/ResourcePlanner/types.d.ts +29 -0
  187. package/lib/modules/Rules/index.js +2 -1
  188. package/lib/modules/Schedule/index.d.ts +8 -0
  189. package/lib/modules/Schedule/index.js +68 -12
  190. package/lib/modules/index.d.ts +1 -0
  191. package/lib/modules/index.js +11 -0
  192. package/lib/plugins/request.d.ts +7 -0
  193. package/lib/server/index.d.ts +1 -0
  194. package/lib/server/index.js +166 -39
  195. package/lib/server/modules/form/index.d.ts +19 -0
  196. package/lib/server/modules/form/index.js +73 -0
  197. package/lib/server/modules/form/types.d.ts +13 -0
  198. package/lib/server/modules/form/types.js +9 -0
  199. package/lib/server/modules/index.d.ts +3 -0
  200. package/lib/server/modules/index.js +15 -1
  201. package/lib/server/modules/order/index.d.ts +19 -0
  202. package/lib/server/modules/order/index.js +160 -7
  203. package/lib/server/modules/order/types.d.ts +4 -0
  204. package/lib/server/modules/products/index.d.ts +28 -7
  205. package/lib/server/modules/products/index.js +226 -63
  206. package/lib/server/modules/products/replication.d.ts +8 -0
  207. package/lib/server/modules/products/replication.js +30 -0
  208. package/lib/server/modules/products/types.d.ts +12 -1
  209. package/lib/server/modules/products/types.js +3 -0
  210. package/lib/server/test.json +1 -1
  211. package/lib/server/utils/small-ticket.d.ts +1 -85
  212. package/lib/server/utils/small-ticket.js +9 -2305
  213. package/lib/shared/payment/loadPaymentMethods.d.ts +9 -0
  214. package/lib/shared/payment/loadPaymentMethods.js +40 -0
  215. package/lib/shared/receipt/customerInvoiceLanguages.d.ts +8 -0
  216. package/lib/shared/receipt/customerInvoiceLanguages.js +58 -0
  217. package/lib/shared/receipt/loadCustomerInvoiceLayout.d.ts +27 -0
  218. package/lib/shared/receipt/loadCustomerInvoiceLayout.js +124 -0
  219. package/lib/shared/receipt/small-ticket.d.ts +96 -0
  220. package/lib/shared/receipt/small-ticket.js +2555 -0
  221. package/lib/shared/receipt/templateVisibility.d.ts +26 -0
  222. package/lib/shared/receipt/templateVisibility.js +67 -0
  223. package/lib/shared/sales/loadSalesOrderSnapshot.d.ts +9 -0
  224. package/lib/shared/sales/loadSalesOrderSnapshot.js +22 -0
  225. package/lib/solution/BaseSales/fulfillmentItemRules.d.ts +27 -0
  226. package/lib/solution/BaseSales/fulfillmentItemRules.js +259 -0
  227. package/lib/solution/BaseSales/index.d.ts +43 -16
  228. package/lib/solution/BaseSales/index.js +401 -33
  229. package/lib/solution/BaseSales/pickupTiming.d.ts +47 -0
  230. package/lib/solution/BaseSales/pickupTiming.js +290 -0
  231. package/lib/solution/BaseSales/types.d.ts +12 -0
  232. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +3 -1
  233. package/lib/solution/BaseSales/utils/parseSalesResponse.js +7 -0
  234. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +16 -8
  235. package/lib/solution/BookingByStep/index.d.ts +4 -2
  236. package/lib/solution/BookingByStep/index.js +7 -3
  237. package/lib/solution/BookingTicket/index.d.ts +23 -3
  238. package/lib/solution/BookingTicket/index.js +197 -9
  239. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +0 -1
  240. package/lib/solution/BookingTicket/utils/addProductDecision.js +1 -1
  241. package/lib/solution/BookingTicket/utils/cartView.js +3 -1
  242. package/lib/solution/OrderInvoicePreview/index.d.ts +66 -0
  243. package/lib/solution/OrderInvoicePreview/index.js +246 -0
  244. package/lib/solution/RegisterAndLogin/config.js +57 -11
  245. package/lib/solution/RegisterAndLogin/index.d.ts +2 -0
  246. package/lib/solution/RegisterAndLogin/index.js +9 -1
  247. package/lib/solution/RegisterAndLogin/utils.d.ts +12 -4
  248. package/lib/solution/RegisterAndLogin/utils.js +24 -17
  249. package/lib/solution/ScanOrder/index.js +59 -20
  250. package/lib/solution/ScanOrder/types.d.ts +3 -0
  251. package/lib/solution/UnifiedBookingSales/businessAvailability.d.ts +27 -0
  252. package/lib/solution/UnifiedBookingSales/businessAvailability.js +138 -0
  253. package/lib/solution/UnifiedBookingSales/index.d.ts +36 -4
  254. package/lib/solution/UnifiedBookingSales/index.js +562 -75
  255. package/lib/solution/UnifiedBookingSales/types.d.ts +16 -2
  256. package/lib/solution/VenueBooking/index.d.ts +15 -2
  257. package/lib/solution/VenueBooking/index.js +243 -96
  258. package/lib/solution/VenueBooking/types.d.ts +2 -1
  259. package/lib/solution/VenueBooking/types.js +1 -0
  260. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +1 -0
  261. package/lib/solution/VenueBooking/utils/dateSummary.js +7 -4
  262. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +71 -0
  263. package/lib/solution/VenueBooking/utils/smartPricing.js +224 -0
  264. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +1 -0
  265. package/lib/solution/VenueBooking/utils/timeSlot.js +5 -2
  266. package/lib/solution/index.d.ts +1 -0
  267. package/lib/solution/index.js +11 -0
  268. package/package.json +1 -1
@@ -65,7 +65,6 @@ export interface AddProductDecideContext extends BookingCalcContext {
65
65
  type?: 'select' | 'detail';
66
66
  quantity?: number;
67
67
  customerId?: number | string;
68
- channel?: string;
69
68
  }
70
69
  /**
71
70
  * 统一补齐预约商品的运行态字段。
@@ -141,7 +141,7 @@ function isMultiDayLike(cacheItem) {
141
141
  * `_extend.resource / capacity / startDate / endDate` 等后续 booking mapper 需要的字段。
142
142
  */
143
143
  export function prepareBookingCacheItem(cacheItem, ctx) {
144
- if (isNormalBookingProduct(cacheItem) || hasPreparedBookingExtend(cacheItem)) {
144
+ if ((ctx === null || ctx === void 0 ? void 0 : ctx.rememberedTime) === undefined && (isNormalBookingProduct(cacheItem) || hasPreparedBookingExtend(cacheItem))) {
145
145
  return cacheItem;
146
146
  }
147
147
  return getProductExtend({
@@ -5,12 +5,14 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  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); }
7
7
  import { resolveBookingCanAddTime } from "./addTimeAvailability";
8
+ import { isFulfillmentTimingBooking } from "../../../modules/Order/pickupTiming";
8
9
  /**
9
10
  * 仅按 booking.product_uid 建索引,避免发明 booking 与商品行之间的其它等价关系。
10
11
  */
11
12
  export function indexBookingsByProductUid(bookings) {
12
13
  if (!Array.isArray(bookings) || bookings.length === 0) return {};
13
14
  return bookings.reduce(function (acc, booking) {
15
+ if (isFulfillmentTimingBooking(booking)) return acc;
14
16
  var uid = booking === null || booking === void 0 ? void 0 : booking.product_uid;
15
17
  if (uid === undefined || uid === null || uid === '') return acc;
16
18
  var key = String(uid);
@@ -109,7 +111,7 @@ export function buildCartView(lines, bookings) {
109
111
  var productLines = Array.isArray(lines) ? lines : [];
110
112
  var bookingList = Array.isArray(bookings) ? bookings : [];
111
113
  var childBookings = bookingList.filter(function (booking) {
112
- return booking.parent_id !== 0;
114
+ return booking.parent_id !== 0 && !isFulfillmentTimingBooking(booking);
113
115
  });
114
116
  var bookingsByProductUid = indexBookingsByProductUid(childBookings);
115
117
  var linesByUid = indexProductsByUid(productLines);
@@ -0,0 +1,66 @@
1
+ import type { Module, ModuleOptions, PisellCore } from '../../types';
2
+ import { BaseModule } from '../../modules/BaseModule';
3
+ import { type CustomerInvoiceLanguageCode, type CustomerInvoiceLanguageOption } from '../../shared/receipt/customerInvoiceLanguages';
4
+ export type { CustomerInvoiceLanguageCode, CustomerInvoiceLanguageOption, } from '../../shared/receipt/customerInvoiceLanguages';
5
+ import type { InvoiceLayoutConfig } from '../../modules/OpenData';
6
+ import { type SmallTicketData } from '../../shared/receipt/small-ticket';
7
+ export interface OrderInvoicePreviewInput {
8
+ orderId: string | number;
9
+ tenantId: string | number;
10
+ shopId: string | number;
11
+ /** Changes on login/logout, without exposing credentials in state or cache keys. */
12
+ identity: string;
13
+ businessCode: string;
14
+ channel: string;
15
+ locale: string;
16
+ sourceRevision: string;
17
+ shop?: Record<string, any>;
18
+ }
19
+ export interface OrderInvoicePreviewResult {
20
+ identity: string;
21
+ sourceRevision: string;
22
+ generatedAt: string;
23
+ locale: string;
24
+ secondaryLocale?: string;
25
+ languageOptions: CustomerInvoiceLanguageOption[];
26
+ selectedLanguage: CustomerInvoiceLanguageCode;
27
+ orderId: string | number;
28
+ source: Record<string, any>;
29
+ shop: Record<string, any>;
30
+ layout: InvoiceLayoutConfig;
31
+ smallTicketData: SmallTicketData;
32
+ }
33
+ export interface OrderInvoicePreviewState {
34
+ status: 'idle' | 'loading' | 'ready' | 'error';
35
+ result: OrderInvoicePreviewResult | null;
36
+ error: string | null;
37
+ }
38
+ /** Read-only, page-owned solution. No Order, Schedule, quotation or payment modules. */
39
+ export declare class OrderInvoicePreviewImpl extends BaseModule implements Module {
40
+ isSolution: boolean;
41
+ private request;
42
+ private state;
43
+ private listeners;
44
+ private generation;
45
+ private disposed;
46
+ private input?;
47
+ private activeKey;
48
+ private languageSelection?;
49
+ private pending?;
50
+ private snapshotCache;
51
+ constructor(name?: string);
52
+ initialize(core: PisellCore, _options: ModuleOptions): void;
53
+ getState: () => OrderInvoicePreviewState;
54
+ subscribe: (listener: () => void) => (() => void);
55
+ private publish;
56
+ private getScope;
57
+ private loadContext;
58
+ private loadSource;
59
+ prepare(input: OrderInvoicePreviewInput): Promise<OrderInvoicePreviewResult>;
60
+ private getSelectionScope;
61
+ private documentIdentity;
62
+ /** Switch only the ready receipt projection; no fetching or rebuilding data. */
63
+ selectLanguage(code: string): OrderInvoicePreviewResult;
64
+ retry(): Promise<OrderInvoicePreviewResult>;
65
+ destroy(): void;
66
+ }
@@ -0,0 +1,340 @@
1
+ var _excluded = ["secondaryLocale"];
2
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
3
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
4
+ 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; }
5
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
6
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ 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); } }
12
+ 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); }); }; }
13
+ 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); }
14
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
15
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
19
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
21
+ 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); } }
22
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
23
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
24
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
25
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
26
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
27
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
28
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
29
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
30
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
31
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
32
+ 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; }
33
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
34
+ 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); }
35
+ import { BaseModule } from "../../modules/BaseModule";
36
+ import { loadCustomerInvoiceTemplate } from "../../shared/receipt/loadCustomerInvoiceLayout";
37
+ import { resolveCustomerInvoiceLanguages } from "../../shared/receipt/customerInvoiceLanguages";
38
+ import { buildSmallTicketData } from "../../shared/receipt/small-ticket";
39
+ import { loadSalesOrderSnapshot } from "../../shared/sales/loadSalesOrderSnapshot";
40
+ import { loadPaymentMethods, withPaymentMethodNames } from "../../shared/payment/loadPaymentMethods";
41
+ // Page-runtime cache shared by preview instances, scoped to host, shop and identity.
42
+ var contextCaches = new WeakMap();
43
+ /** Read-only, page-owned solution. No Order, Schedule, quotation or payment modules. */
44
+ export var OrderInvoicePreviewImpl = /*#__PURE__*/function (_BaseModule) {
45
+ _inherits(OrderInvoicePreviewImpl, _BaseModule);
46
+ var _super = _createSuper(OrderInvoicePreviewImpl);
47
+ function OrderInvoicePreviewImpl() {
48
+ var _this;
49
+ var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'orderInvoicePreview';
50
+ _classCallCheck(this, OrderInvoicePreviewImpl);
51
+ _this = _super.call(this, name);
52
+ _defineProperty(_assertThisInitialized(_this), "isSolution", true);
53
+ _defineProperty(_assertThisInitialized(_this), "request", void 0);
54
+ _defineProperty(_assertThisInitialized(_this), "state", {
55
+ status: 'idle',
56
+ result: null,
57
+ error: null
58
+ });
59
+ _defineProperty(_assertThisInitialized(_this), "listeners", new Set());
60
+ _defineProperty(_assertThisInitialized(_this), "generation", 0);
61
+ _defineProperty(_assertThisInitialized(_this), "disposed", false);
62
+ _defineProperty(_assertThisInitialized(_this), "input", void 0);
63
+ _defineProperty(_assertThisInitialized(_this), "activeKey", '');
64
+ // Hosts retain this readonly instance while the same order modal is closed.
65
+ _defineProperty(_assertThisInitialized(_this), "languageSelection", void 0);
66
+ _defineProperty(_assertThisInitialized(_this), "pending", void 0);
67
+ _defineProperty(_assertThisInitialized(_this), "snapshotCache", new Map());
68
+ _defineProperty(_assertThisInitialized(_this), "getState", function () {
69
+ return _this.state;
70
+ });
71
+ _defineProperty(_assertThisInitialized(_this), "subscribe", function (listener) {
72
+ _this.listeners.add(listener);
73
+ return function () {
74
+ _this.listeners.delete(listener);
75
+ };
76
+ });
77
+ return _this;
78
+ }
79
+ _createClass(OrderInvoicePreviewImpl, [{
80
+ key: "initialize",
81
+ value: function initialize(core, _options) {
82
+ this.core = core;
83
+ var request = core.getPlugin('request');
84
+ if (!request) throw new Error('OrderInvoicePreview requires request plugin');
85
+ this.request = request;
86
+ }
87
+ }, {
88
+ key: "publish",
89
+ value: function publish(state) {
90
+ this.state = state;
91
+ this.listeners.forEach(function (listener) {
92
+ return listener();
93
+ });
94
+ }
95
+ }, {
96
+ key: "getScope",
97
+ value: function getScope(input) {
98
+ return JSON.stringify([input.tenantId, input.shopId, input.identity, input.businessCode, input.channel]);
99
+ }
100
+ }, {
101
+ key: "loadContext",
102
+ value: function loadContext(input) {
103
+ var cache = contextCaches.get(this.request);
104
+ if (!cache) {
105
+ cache = new Map();
106
+ contextCaches.set(this.request, cache);
107
+ }
108
+ var key = JSON.stringify([input.tenantId, input.shopId, input.identity]);
109
+ var cached = cache.get(key);
110
+ if (cached) return cached;
111
+ var task = Promise.all([this.request.get('/shop/show', {}, {
112
+ manualErrorHandling: true,
113
+ skipErrorHandler: true
114
+ }), loadPaymentMethods(this.request, {
115
+ transport: 'remote',
116
+ filterPaymentMethods: false
117
+ })]).then(function (_ref) {
118
+ var _ref2 = _slicedToArray(_ref, 2),
119
+ response = _ref2[0],
120
+ methods = _ref2[1];
121
+ var shop = response === null || response === void 0 ? void 0 : response.data;
122
+ if (!shop || _typeof(shop) !== 'object' || Array.isArray(shop)) throw new Error('Invoice shop information is unavailable');
123
+ if (String(shop.id) !== String(input.shopId)) throw new Error('Invoice shop identity mismatch');
124
+ return {
125
+ shop: shop,
126
+ methods: methods
127
+ };
128
+ }).catch(function (error) {
129
+ if (cache.get(key) === task) cache.delete(key);
130
+ throw error;
131
+ });
132
+ cache.set(key, task);
133
+ return task;
134
+ }
135
+ }, {
136
+ key: "loadSource",
137
+ value: function loadSource(input) {
138
+ var _this2 = this;
139
+ var key = JSON.stringify([this.getScope(input), input.orderId, input.sourceRevision]);
140
+ var cached = this.snapshotCache.get(key);
141
+ if (cached) return cached;
142
+ var task = loadSalesOrderSnapshot(this.request, {
143
+ lookup: input.orderId,
144
+ transport: 'remote'
145
+ }).then(function (response) {
146
+ if ((response === null || response === void 0 ? void 0 : response.code) !== 200 || !response.data || _typeof(response.data) !== 'object' || Array.isArray(response.data)) {
147
+ throw new Error((response === null || response === void 0 ? void 0 : response.message) || 'Invoice order is unavailable');
148
+ }
149
+ var source = response.data;
150
+ if (source.order_id != null && String(source.order_id) !== String(input.orderId)) {
151
+ throw new Error('Invoice order identity mismatch');
152
+ }
153
+ return source;
154
+ }).catch(function (error) {
155
+ if (_this2.snapshotCache.get(key) === task) _this2.snapshotCache.delete(key);
156
+ throw error;
157
+ });
158
+ this.snapshotCache.set(key, task);
159
+ return task;
160
+ }
161
+ }, {
162
+ key: "prepare",
163
+ value: function prepare(input) {
164
+ var _this$core$getPlugin,
165
+ _this$core$getPlugin$,
166
+ _this$core$getPlugin$2,
167
+ _this$languageSelecti,
168
+ _this3 = this;
169
+ if (this.disposed) return Promise.reject(new Error('Invoice preview disposed'));
170
+ var currentShop = (_this$core$getPlugin = this.core.getPlugin('app')) === null || _this$core$getPlugin === void 0 || (_this$core$getPlugin$ = _this$core$getPlugin.getData) === null || _this$core$getPlugin$ === void 0 || (_this$core$getPlugin$2 = _this$core$getPlugin$.call(_this$core$getPlugin)) === null || _this$core$getPlugin$2 === void 0 ? void 0 : _this$core$getPlugin$2('shop_id');
171
+ if (currentShop != null && String(currentShop) !== String(input.shopId)) {
172
+ return Promise.reject(new Error('Invoice shop changed'));
173
+ }
174
+ var key = JSON.stringify([this.getScope(input), input.orderId, input.sourceRevision, input.locale]);
175
+ if (key === this.activeKey) {
176
+ if (this.pending) return this.pending;
177
+ if (this.state.status === 'ready' && this.state.result) return Promise.resolve(this.state.result);
178
+ }
179
+ if (this.input && this.getScope(this.input) !== this.getScope(input)) this.snapshotCache.clear();
180
+ if (((_this$languageSelecti = this.languageSelection) === null || _this$languageSelecti === void 0 ? void 0 : _this$languageSelecti.scope) !== this.getSelectionScope(input)) this.languageSelection = undefined;
181
+ this.input = input;
182
+ this.activeKey = key;
183
+ var generation = ++this.generation;
184
+ this.publish({
185
+ status: 'loading',
186
+ result: null,
187
+ error: null
188
+ });
189
+ var task = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
190
+ var _this3$core$getPlugin, _this3$core$getPlugin2, _coreData$core, _this3$languageSelect;
191
+ var _yield$Promise$all, _yield$Promise$all2, snapshot, context, template, source, getData, coreData, shop, languageOptions, remembered, selected, locale, result;
192
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
193
+ while (1) switch (_context.prev = _context.next) {
194
+ case 0:
195
+ _context.next = 2;
196
+ return Promise.all([_this3.loadSource(input), _this3.loadContext(input), loadCustomerInvoiceTemplate(_this3.request, input)]);
197
+ case 2:
198
+ _yield$Promise$all = _context.sent;
199
+ _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);
200
+ snapshot = _yield$Promise$all2[0];
201
+ context = _yield$Promise$all2[1];
202
+ template = _yield$Promise$all2[2];
203
+ source = withPaymentMethodNames(snapshot, context.methods);
204
+ getData = (_this3$core$getPlugin = _this3.core.getPlugin('app')) === null || _this3$core$getPlugin === void 0 || (_this3$core$getPlugin2 = _this3$core$getPlugin.getData) === null || _this3$core$getPlugin2 === void 0 ? void 0 : _this3$core$getPlugin2.call(_this3$core$getPlugin);
205
+ if (!((getData === null || getData === void 0 ? void 0 : getData('shop_id')) != null && String(getData('shop_id')) !== String(input.shopId))) {
206
+ _context.next = 11;
207
+ break;
208
+ }
209
+ throw new Error('Invoice shop changed');
210
+ case 11:
211
+ coreData = getData === null || getData === void 0 ? void 0 : getData('core');
212
+ shop = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, (coreData === null || coreData === void 0 || (_coreData$core = coreData.core) === null || _coreData$core === void 0 ? void 0 : _coreData$core.shop) || (coreData === null || coreData === void 0 ? void 0 : coreData.shop) || {}), (getData === null || getData === void 0 ? void 0 : getData('shop_info')) || {}), input.shop), context.shop), getData !== null && getData !== void 0 && getData('tax_country_code') ? {
213
+ tax_country_code: getData('tax_country_code')
214
+ } : {});
215
+ if (!(generation !== _this3.generation || _this3.disposed)) {
216
+ _context.next = 15;
217
+ break;
218
+ }
219
+ throw new Error('Invoice request superseded');
220
+ case 15:
221
+ languageOptions = resolveCustomerInvoiceLanguages(template.language, input.locale);
222
+ remembered = (_this3$languageSelect = _this3.languageSelection) === null || _this3$languageSelect === void 0 ? void 0 : _this3$languageSelect.code;
223
+ selected = languageOptions.find(function (option) {
224
+ return option.code === remembered;
225
+ }) || languageOptions[0];
226
+ locale = selected.locales[0];
227
+ result = _objectSpread(_objectSpread({
228
+ identity: _this3.documentIdentity(key, selected.code),
229
+ languageOptions: languageOptions,
230
+ selectedLanguage: selected.code
231
+ }, selected.locales[1] ? {
232
+ secondaryLocale: selected.locales[1]
233
+ } : {}), {}, {
234
+ orderId: input.orderId,
235
+ sourceRevision: input.sourceRevision,
236
+ generatedAt: new Date().toISOString(),
237
+ locale: locale,
238
+ source: source,
239
+ shop: shop,
240
+ layout: template.layout,
241
+ smallTicketData: buildSmallTicketData({
242
+ order: source,
243
+ shopInfo: shop,
244
+ locales: _toConsumableArray(new Set(languageOptions.flatMap(function (option) {
245
+ return option.locales;
246
+ }))),
247
+ includeReceiptKeys: true,
248
+ templateSettings: template.layout
249
+ })
250
+ });
251
+ _this3.publish({
252
+ status: 'ready',
253
+ result: result,
254
+ error: null
255
+ });
256
+ return _context.abrupt("return", result);
257
+ case 22:
258
+ case "end":
259
+ return _context.stop();
260
+ }
261
+ }, _callee);
262
+ }))().catch(function (error) {
263
+ if (generation === _this3.generation && !_this3.disposed) {
264
+ _this3.publish({
265
+ status: 'error',
266
+ result: null,
267
+ error: error instanceof Error ? error.message : String(error)
268
+ });
269
+ }
270
+ throw error;
271
+ }).finally(function () {
272
+ if (_this3.pending === task) _this3.pending = undefined;
273
+ });
274
+ this.pending = task;
275
+ return task;
276
+ }
277
+ }, {
278
+ key: "getSelectionScope",
279
+ value: function getSelectionScope(input) {
280
+ return JSON.stringify([this.getScope(input), input.orderId]);
281
+ }
282
+ }, {
283
+ key: "documentIdentity",
284
+ value: function documentIdentity(key, language) {
285
+ return JSON.stringify([key, language]);
286
+ }
287
+
288
+ /** Switch only the ready receipt projection; no fetching or rebuilding data. */
289
+ }, {
290
+ key: "selectLanguage",
291
+ value: function selectLanguage(code) {
292
+ var _this$core$getPlugin2, _this$core$getPlugin3, _this$core$getPlugin4;
293
+ if (this.disposed) throw new Error('Invoice preview disposed');
294
+ var current = this.state.result;
295
+ if (this.state.status !== 'ready' || !current || !this.input) throw new Error('Invoice preview is not ready');
296
+ var currentShop = (_this$core$getPlugin2 = this.core.getPlugin('app')) === null || _this$core$getPlugin2 === void 0 || (_this$core$getPlugin3 = _this$core$getPlugin2.getData) === null || _this$core$getPlugin3 === void 0 || (_this$core$getPlugin4 = _this$core$getPlugin3.call(_this$core$getPlugin2)) === null || _this$core$getPlugin4 === void 0 ? void 0 : _this$core$getPlugin4('shop_id');
297
+ if (currentShop != null && String(currentShop) !== String(this.input.shopId)) throw new Error('Invoice shop changed');
298
+ var selected = current.languageOptions.find(function (option) {
299
+ return option.code === code;
300
+ });
301
+ if (!selected) throw new Error('Invoice language is unavailable');
302
+ this.languageSelection = {
303
+ scope: this.getSelectionScope(this.input),
304
+ code: selected.code
305
+ };
306
+ if (selected.code === current.selectedLanguage) return current;
307
+ var _previousSecondary = current.secondaryLocale,
308
+ rest = _objectWithoutProperties(current, _excluded);
309
+ var result = _objectSpread(_objectSpread({}, rest), {}, {
310
+ identity: this.documentIdentity(this.activeKey, selected.code),
311
+ selectedLanguage: selected.code,
312
+ locale: selected.locales[0]
313
+ }, selected.locales[1] ? {
314
+ secondaryLocale: selected.locales[1]
315
+ } : {});
316
+ this.publish({
317
+ status: 'ready',
318
+ result: result,
319
+ error: null
320
+ });
321
+ return result;
322
+ }
323
+ }, {
324
+ key: "retry",
325
+ value: function retry() {
326
+ if (!this.input) return Promise.reject(new Error('Invoice input is missing'));
327
+ return this.prepare(this.input);
328
+ }
329
+ }, {
330
+ key: "destroy",
331
+ value: function destroy() {
332
+ this.disposed = true;
333
+ this.generation++;
334
+ this.listeners.clear();
335
+ this.snapshotCache.clear();
336
+ if (this.core.getModule(this.name) === this) _get(_getPrototypeOf(OrderInvoicePreviewImpl.prototype), "destroy", this).call(this);
337
+ }
338
+ }]);
339
+ return OrderInvoicePreviewImpl;
340
+ }(BaseModule);
@@ -386,6 +386,26 @@ function withH5AuthPrefix(config) {
386
386
  return nextConfig;
387
387
  }
388
388
  var h5OnlineStoreConfig = withH5AuthPrefix(onlineStoreConfig);
389
+ function withKioskSalesChannel(config) {
390
+ return _objectSpread(_objectSpread({}, config), {}, {
391
+ options: function options(params) {
392
+ var options = (typeof config.options === 'function' ? config.options(params) : config.options) || {};
393
+ var headers = typeof options.headers === 'function' ? options.headers(params) : options.headers;
394
+ return _objectSpread(_objectSpread({}, options), {}, {
395
+ headers: _objectSpread(_objectSpread({}, headers), {}, {
396
+ 'Sales-Channel': 'kiosk'
397
+ })
398
+ });
399
+ }
400
+ });
401
+ }
402
+
403
+ // Kiosk 复用网店顾客认证接口,通过注册(含验证码登录自动注册)请求头标识会员归属渠道。
404
+ var kioskConfig = _objectSpread(_objectSpread({}, h5OnlineStoreConfig), {}, {
405
+ emailCodeRegister: withKioskSalesChannel(h5OnlineStoreConfig.emailCodeRegister),
406
+ phoneCodeRegister: withKioskSalesChannel(h5OnlineStoreConfig.phoneCodeRegister),
407
+ phoneCodeLogin: withKioskSalesChannel(h5OnlineStoreConfig.phoneCodeLogin)
408
+ });
389
409
 
390
410
  /**
391
411
  * 默认配置(通用配置)
@@ -713,6 +733,16 @@ var defaultConfig = {
713
733
  /**
714
734
  * webpos 渠道配置
715
735
  */
736
+ var webposPasswordResetOptions = {
737
+ prefix: false,
738
+ isDefaultSaasDomain: true,
739
+ cache: false,
740
+ noToast: true,
741
+ headers: {
742
+ Accept: 'application/json',
743
+ 'Content-Type': 'application/json'
744
+ }
745
+ };
716
746
  var webposConfig = {
717
747
  sendEmailVerificationCode: {
718
748
  url: '/auth/email/register-code',
@@ -865,15 +895,23 @@ var webposConfig = {
865
895
  }
866
896
  },
867
897
  checkEmailCode: {
868
- url: '/auth/email/check-email-code',
869
- method: 'GET',
898
+ url: '/tenant/account/reset-password/email-code/verify',
899
+ method: 'POST',
870
900
  transformParams: function transformParams(params) {
871
901
  return {
872
902
  email: params.email,
873
- code: params.code,
874
- action: params.action
903
+ code: params.code
875
904
  };
876
- }
905
+ },
906
+ // SaaS 成功时 data 为 null,统一为既有验证码校验返回结构。
907
+ transformResponse: function transformResponse(response) {
908
+ return (response === null || response === void 0 ? void 0 : response.status) === true ? _objectSpread(_objectSpread({}, response), {}, {
909
+ data: {
910
+ valid: true
911
+ }
912
+ }) : response;
913
+ },
914
+ options: webposPasswordResetOptions
877
915
  },
878
916
  checkMobileCode: {
879
917
  url: '/auth/mobile/check-mobile-code',
@@ -899,13 +937,14 @@ var webposConfig = {
899
937
  }
900
938
  },
901
939
  sendPasswordResetEmail: {
902
- url: '/auth/email/reset-password-code',
903
- method: 'GET',
940
+ url: '/tenant/account/reset-password/email-code/send',
941
+ method: 'POST',
904
942
  transformParams: function transformParams(params) {
905
943
  return {
906
944
  email: params.email
907
945
  };
908
- }
946
+ },
947
+ options: webposPasswordResetOptions
909
948
  },
910
949
  sendPasswordResetSms: {
911
950
  url: '/auth/mobile/sms-forget',
@@ -946,15 +985,18 @@ var webposConfig = {
946
985
  }
947
986
  },
948
987
  resetPasswordByEmail: {
949
- url: '/auth/email/reset-password',
988
+ url: '/tenant/account/reset-password/email-code',
950
989
  method: 'POST',
951
990
  transformParams: function transformParams(params) {
952
991
  return {
953
992
  email: params.email,
954
993
  password: params.password,
955
- code: params.code
994
+ code: params.code,
995
+ // 页面先校验两次输入完全一致,SDK 保持原有重置参数。
996
+ password_confirmation: params.password
956
997
  };
957
- }
998
+ },
999
+ options: webposPasswordResetOptions
958
1000
  },
959
1001
  resetPasswordByPhone: {
960
1002
  url: '/auth/mobile/reset-password',
@@ -1383,6 +1425,7 @@ var shopWebposConfig = {
1383
1425
  export var channelConfigMap = {
1384
1426
  'online-store': onlineStoreConfig,
1385
1427
  'online-store-h5': h5OnlineStoreConfig,
1428
+ 'kiosk': kioskConfig,
1386
1429
  'default': defaultConfig,
1387
1430
  'webpos': webposConfig,
1388
1431
  'shop.webpos': shopWebposConfig
@@ -4,6 +4,8 @@ import { RegisterParams, LoginParams, OAuthLoginParams, SendVerificationCodePara
4
4
  import { ApiCaller } from './config';
5
5
  export * from './types';
6
6
  export * from './config';
7
+ export { validatePassword } from './utils';
8
+ export type { PasswordValidationOptions } from './utils';
7
9
  /**
8
10
  * 注册登录解决方案实现
9
11
  */
@@ -22,7 +22,7 @@ import { RegisterAndLoginHooks, VerificationCodeType, VerificationPurpose } from
22
22
  import { createApiCaller } from "./config";
23
23
  export * from "./types";
24
24
  export * from "./config";
25
-
25
+ export { validatePassword } from "./utils";
26
26
  /**
27
27
  * 注册登录解决方案实现
28
28
  */
@@ -10,10 +10,18 @@ export declare function validateEmail(email: string): boolean;
10
10
  * 验证手机号格式(支持多种国际格式)
11
11
  */
12
12
  export declare function validatePhone(phone: string): boolean;
13
- /**
14
- * 验证密码强度
15
- */
16
- export declare function validatePassword(password: string): {
13
+ export interface PasswordValidationOptions {
14
+ minLength?: number;
15
+ maxLength?: number;
16
+ requireLowercase?: boolean;
17
+ requireUppercase?: boolean;
18
+ requireNumber?: boolean;
19
+ requireSpecialCharacters?: boolean;
20
+ specialCharactersPattern?: RegExp;
21
+ messages?: Partial<Record<'minLength' | 'maxLength' | 'requireLowercase' | 'requireUppercase' | 'requireNumber' | 'requireSpecialCharacters', string>>;
22
+ }
23
+ /** 验证密码强度;不传 options 时保持原有规则与返回格式。 */
24
+ export declare function validatePassword(password: string, options?: PasswordValidationOptions): {
17
25
  isValid: boolean;
18
26
  errors: string[];
19
27
  };