@pisell/pisellos 0.0.569 → 0.10.1

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 (329) hide show
  1. package/dist/core/index.js +10 -6
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -3
  4. package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
  5. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  6. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  7. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  8. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  9. package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
  10. package/dist/model/strategy/strategy-example.js +19 -5
  11. package/dist/modules/BaseModule.d.ts +1 -1
  12. package/dist/modules/BaseModule.js +8 -10
  13. package/dist/modules/Cart/index.js +3 -0
  14. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  15. package/dist/modules/Cart/utils/cartResource.js +0 -2
  16. package/dist/modules/Cart/utils/changePrice.js +9 -16
  17. package/dist/modules/Date/index.js +5 -1
  18. package/dist/modules/Discount/index.d.ts +0 -1
  19. package/dist/modules/Discount/index.js +7 -22
  20. package/dist/modules/Discount/types.d.ts +0 -1
  21. package/dist/modules/OpenData/index.js +2 -0
  22. package/dist/modules/Order/index.d.ts +1 -1
  23. package/dist/modules/Order/index.js +70 -40
  24. package/dist/modules/Payment/index.js +162 -97
  25. package/dist/modules/Payment/types.d.ts +4 -8
  26. package/dist/modules/Payment/walletpass.d.ts +0 -2
  27. package/dist/modules/Payment/walletpass.js +5 -4
  28. package/dist/modules/ProductList/index.d.ts +1 -1
  29. package/dist/modules/ProductList/index.js +3 -12
  30. package/dist/modules/ProductList/types.d.ts +0 -1
  31. package/dist/modules/Rules/index.js +126 -427
  32. package/dist/modules/SalesSummary/utils.js +1 -2
  33. package/dist/modules/Schedule/getDateIsInSchedule.js +0 -5
  34. package/dist/modules/Schedule/index.js +1 -0
  35. package/dist/modules/Schedule/utils.js +1 -0
  36. package/dist/modules/Step/index.js +1 -0
  37. package/dist/modules/Summary/utils.js +22 -43
  38. package/dist/plugins/request.js +4 -1
  39. package/dist/plugins/window.js +6 -2
  40. package/dist/server/index.js +129 -97
  41. package/dist/server/modules/menu/index.js +41 -32
  42. package/dist/server/modules/order/index.js +4 -2
  43. package/dist/server/modules/products/index.js +42 -24
  44. package/dist/server/modules/quotation/index.js +38 -29
  45. package/dist/server/modules/resource/index.js +4 -3
  46. package/dist/server/modules/schedule/index.js +35 -27
  47. package/dist/server/utils/product.js +1 -0
  48. package/dist/solution/BaseSales/index.js +41 -38
  49. package/dist/solution/BookingByStep/index.d.ts +1 -1
  50. package/dist/solution/BookingByStep/index.js +60 -11
  51. package/dist/solution/BookingByStep/utils/capacity.js +11 -1
  52. package/dist/solution/BookingByStep/utils/resources.js +3 -1
  53. package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
  54. package/dist/solution/BookingTicket/index.d.ts +1 -1
  55. package/dist/solution/BookingTicket/index.js +2 -0
  56. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +7 -6
  57. package/dist/solution/BookingTicket/utils/scan/handleScan.js +31 -25
  58. package/dist/solution/BookingTicket/utils/scan/index.js +10 -6
  59. package/dist/solution/BuyTickets/index.js +12 -9
  60. package/dist/solution/Checkout/index.js +252 -177
  61. package/dist/solution/Checkout/utils/index.js +16 -4
  62. package/dist/solution/RegisterAndLogin/index.js +76 -30
  63. package/dist/solution/ScanOrder/index.js +60 -50
  64. package/dist/solution/ShopDiscount/index.js +14 -15
  65. package/dist/solution/ShopDiscount/types.d.ts +4 -5
  66. package/dist/solution/ShopDiscount/utils.d.ts +0 -9
  67. package/dist/solution/ShopDiscount/utils.js +0 -9
  68. package/dist/solution/VenueBooking/index.d.ts +3 -31
  69. package/dist/solution/VenueBooking/index.js +496 -651
  70. package/dist/solution/VenueBooking/types.d.ts +1 -3
  71. package/dist/solution/VenueBooking/types.js +0 -1
  72. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  73. package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
  74. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  75. package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
  76. package/dist/types/index.d.ts +1 -1
  77. package/dist/utils/task.js +18 -15
  78. package/dist/utils/watch.js +1 -0
  79. package/lib/apis/picoding.js +0 -2
  80. package/lib/core/index.js +132 -130
  81. package/lib/effects/index.js +57 -46
  82. package/lib/index.d.ts +0 -1
  83. package/lib/index.js +50 -92
  84. package/lib/model/index.js +21 -14
  85. package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
  86. package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
  87. package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
  88. package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
  89. package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
  90. package/lib/model/strategy/adapter/index.js +64 -100
  91. package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
  92. package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
  93. package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
  94. package/lib/model/strategy/adapter/itemRule/index.js +57 -83
  95. package/lib/model/strategy/adapter/itemRule/type.js +36 -97
  96. package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
  97. package/lib/model/strategy/adapter/promotion/evaluator.js +231 -381
  98. package/lib/model/strategy/adapter/promotion/examples.js +159 -139
  99. package/lib/model/strategy/adapter/promotion/index.js +0 -1
  100. package/lib/model/strategy/adapter/promotion/type.js +35 -199
  101. package/lib/model/strategy/adapter/type.js +16 -4
  102. package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
  103. package/lib/model/strategy/adapter/walletPass/example.js +190 -217
  104. package/lib/model/strategy/adapter/walletPass/index.js +51 -75
  105. package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
  106. package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
  107. package/lib/model/strategy/adapter/walletPass/type.js +16 -4
  108. package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  109. package/lib/model/strategy/adapter/walletPass/utils.js +383 -678
  110. package/lib/model/strategy/engine.js +168 -270
  111. package/lib/model/strategy/index.js +34 -49
  112. package/lib/model/strategy/strategy-example.js +239 -243
  113. package/lib/model/strategy/type.js +40 -100
  114. package/lib/modules/Account/index.js +53 -39
  115. package/lib/modules/Account/types.js +33 -20
  116. package/lib/modules/AccountList/index.js +154 -116
  117. package/lib/modules/AccountList/types.js +31 -30
  118. package/lib/modules/AccountList/utils.js +30 -18
  119. package/lib/modules/BaseModule.d.ts +1 -1
  120. package/lib/modules/BaseModule.js +46 -25
  121. package/lib/modules/BookingContext/index.js +136 -158
  122. package/lib/modules/BookingContext/types.js +32 -46
  123. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +143 -131
  124. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +82 -75
  125. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +150 -170
  126. package/lib/modules/BookingContext/utils/flexible.js +55 -38
  127. package/lib/modules/BookingContext/utils/formatResourceList.js +34 -19
  128. package/lib/modules/BookingContext/utils/index.js +41 -124
  129. package/lib/modules/BookingContext/utils/noResource.js +70 -58
  130. package/lib/modules/BookingContext/utils/orderLineDisplay.js +41 -14
  131. package/lib/modules/BookingContext/utils/productExtend.js +155 -202
  132. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  133. package/lib/modules/BookingContext/utils/resourceSelection.js +41 -19
  134. package/lib/modules/BookingContext/utils/resources.js +167 -209
  135. package/lib/modules/BookingContext/utils/serviceTimes.js +116 -115
  136. package/lib/modules/BookingContext/utils/timeSlices.js +80 -70
  137. package/lib/modules/Cart/index.js +124 -170
  138. package/lib/modules/Cart/types.js +51 -46
  139. package/lib/modules/Cart/utils/cartAccount.js +39 -40
  140. package/lib/modules/Cart/utils/cartDate.js +61 -56
  141. package/lib/modules/Cart/utils/cartDiscount.js +33 -28
  142. package/lib/modules/Cart/utils/cartNote.js +32 -27
  143. package/lib/modules/Cart/utils/cartProduct.js +251 -321
  144. package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
  145. package/lib/modules/Cart/utils/cartResource.js +78 -72
  146. package/lib/modules/Cart/utils/changePrice.js +50 -28
  147. package/lib/modules/Cart/utils/index.js +48 -106
  148. package/lib/modules/Customer/constants.js +34 -13
  149. package/lib/modules/Customer/index.js +169 -232
  150. package/lib/modules/Customer/types.js +35 -38
  151. package/lib/modules/Date/index.js +115 -116
  152. package/lib/modules/Date/types.js +28 -16
  153. package/lib/modules/Date/utils.js +123 -174
  154. package/lib/modules/Discount/index.d.ts +0 -1
  155. package/lib/modules/Discount/index.js +128 -130
  156. package/lib/modules/Discount/types.d.ts +0 -1
  157. package/lib/modules/Discount/types.js +31 -9
  158. package/lib/modules/Guests/index.js +56 -30
  159. package/lib/modules/Guests/types.js +33 -23
  160. package/lib/modules/Holder/index.js +189 -209
  161. package/lib/modules/Holder/types.js +16 -4
  162. package/lib/modules/Holder/utils.js +49 -20
  163. package/lib/modules/OpenData/index.js +76 -69
  164. package/lib/modules/OpenData/types.js +16 -4
  165. package/lib/modules/OpenData/utils.js +78 -44
  166. package/lib/modules/Order/index.d.ts +1 -1
  167. package/lib/modules/Order/index.js +1909 -1572
  168. package/lib/modules/Order/types.js +35 -78
  169. package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
  170. package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
  171. package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
  172. package/lib/modules/Order/utils.js +634 -799
  173. package/lib/modules/Payment/cash.js +33 -20
  174. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  175. package/lib/modules/Payment/eftpos.js +30 -16
  176. package/lib/modules/Payment/index.js +378 -518
  177. package/lib/modules/Payment/mx51.js +0 -1
  178. package/lib/modules/Payment/types.d.ts +4 -8
  179. package/lib/modules/Payment/types.js +107 -216
  180. package/lib/modules/Payment/utils.js +48 -51
  181. package/lib/modules/Payment/walletpass.d.ts +0 -2
  182. package/lib/modules/Payment/walletpass.js +211 -226
  183. package/lib/modules/Product/index.js +46 -51
  184. package/lib/modules/Product/types.js +16 -4
  185. package/lib/modules/Product/utils.js +33 -32
  186. package/lib/modules/ProductList/index.d.ts +1 -1
  187. package/lib/modules/ProductList/index.js +117 -117
  188. package/lib/modules/ProductList/types.d.ts +0 -1
  189. package/lib/modules/ProductList/types.js +31 -9
  190. package/lib/modules/Quotation/index.js +100 -66
  191. package/lib/modules/Quotation/types.js +16 -4
  192. package/lib/modules/Resource/index.js +59 -27
  193. package/lib/modules/Resource/types.js +32 -22
  194. package/lib/modules/Resource/utils.js +38 -30
  195. package/lib/modules/ResourcePlanner/index.js +61 -60
  196. package/lib/modules/ResourcePlanner/planner.js +384 -346
  197. package/lib/modules/ResourcePlanner/types.js +16 -4
  198. package/lib/modules/Rules/index.js +903 -1475
  199. package/lib/modules/Rules/types.js +40 -17
  200. package/lib/modules/SalesSummary/index.js +90 -85
  201. package/lib/modules/SalesSummary/types.js +16 -4
  202. package/lib/modules/SalesSummary/utils.js +427 -351
  203. package/lib/modules/ScanOrderLogger/index.js +79 -59
  204. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  205. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  206. package/lib/modules/ScanOrderLogger/types.js +16 -4
  207. package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
  208. package/lib/modules/Schedule/index.js +114 -100
  209. package/lib/modules/Schedule/type.js +16 -4
  210. package/lib/modules/Schedule/types.js +16 -4
  211. package/lib/modules/Schedule/utils.js +291 -433
  212. package/lib/modules/Step/index.js +52 -40
  213. package/lib/modules/Step/tyeps.js +16 -4
  214. package/lib/modules/Summary/index.js +71 -66
  215. package/lib/modules/Summary/types.js +16 -4
  216. package/lib/modules/Summary/utils.js +418 -791
  217. package/lib/modules/SurchargeList/index.js +60 -46
  218. package/lib/modules/SurchargeList/types.js +16 -4
  219. package/lib/modules/index.js +63 -245
  220. package/lib/plugins/app.js +16 -4
  221. package/lib/plugins/index.js +25 -36
  222. package/lib/plugins/request.js +126 -137
  223. package/lib/plugins/shopStore.js +16 -4
  224. package/lib/plugins/user.js +16 -4
  225. package/lib/plugins/window.js +179 -171
  226. package/lib/server/index.js +2337 -2675
  227. package/lib/server/modules/floor-plan/index.js +123 -102
  228. package/lib/server/modules/floor-plan/types.js +30 -15
  229. package/lib/server/modules/index.js +68 -106
  230. package/lib/server/modules/menu/index.js +122 -146
  231. package/lib/server/modules/menu/types.js +31 -18
  232. package/lib/server/modules/order/index.js +642 -567
  233. package/lib/server/modules/order/types.js +32 -117
  234. package/lib/server/modules/order/utils/filterBookings.js +194 -219
  235. package/lib/server/modules/order/utils/filterOrders.js +92 -118
  236. package/lib/server/modules/payment/index.js +83 -59
  237. package/lib/server/modules/payment/types.js +16 -4
  238. package/lib/server/modules/products/index.js +459 -575
  239. package/lib/server/modules/products/types.js +34 -44
  240. package/lib/server/modules/quotation/index.js +172 -137
  241. package/lib/server/modules/quotation/types.js +31 -21
  242. package/lib/server/modules/resource/index.js +184 -213
  243. package/lib/server/modules/resource/types.js +33 -42
  244. package/lib/server/modules/schedule/index.js +123 -135
  245. package/lib/server/modules/schedule/types.js +21 -14
  246. package/lib/server/modules/schedule/utils.js +163 -334
  247. package/lib/server/types.js +16 -4
  248. package/lib/server/utils/index.js +23 -25
  249. package/lib/server/utils/product.js +139 -196
  250. package/lib/server/utils/schedule.js +41 -34
  251. package/lib/server/utils/small-ticket.js +456 -478
  252. package/lib/server/utils/time.js +49 -40
  253. package/lib/solution/BaseSales/index.js +1016 -850
  254. package/lib/solution/BaseSales/types.js +37 -41
  255. package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
  256. package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
  257. package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
  258. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
  259. package/lib/solution/BaseSales/utils.js +140 -155
  260. package/lib/solution/BookingByStep/index.d.ts +1 -1
  261. package/lib/solution/BookingByStep/index.js +1340 -1530
  262. package/lib/solution/BookingByStep/types.js +99 -40
  263. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  264. package/lib/solution/BookingByStep/utils/products.js +52 -42
  265. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  266. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  267. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  268. package/lib/solution/BookingTicket/index.d.ts +1 -1
  269. package/lib/solution/BookingTicket/index.js +459 -543
  270. package/lib/solution/BookingTicket/types.js +77 -99
  271. package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
  272. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
  273. package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
  274. package/lib/solution/BookingTicket/utils/cartView.js +94 -110
  275. package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
  276. package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
  277. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
  278. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
  279. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
  280. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
  281. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
  282. package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
  283. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  284. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
  285. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
  286. package/lib/solution/BuyTickets/index.js +70 -67
  287. package/lib/solution/BuyTickets/types.js +38 -22
  288. package/lib/solution/Checkout/index.js +1158 -1451
  289. package/lib/solution/Checkout/types.js +61 -91
  290. package/lib/solution/Checkout/utils/index.js +156 -228
  291. package/lib/solution/PlaceOrder/index.js +0 -55
  292. package/lib/solution/RegisterAndLogin/config.js +460 -493
  293. package/lib/solution/RegisterAndLogin/index.js +630 -633
  294. package/lib/solution/RegisterAndLogin/types.js +76 -189
  295. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  296. package/lib/solution/Sales/index.js +320 -317
  297. package/lib/solution/Sales/types.js +33 -27
  298. package/lib/solution/ScanOrder/index.js +862 -831
  299. package/lib/solution/ScanOrder/types.js +34 -33
  300. package/lib/solution/ScanOrder/utils.js +371 -406
  301. package/lib/solution/ShopDiscount/index.js +233 -235
  302. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  303. package/lib/solution/ShopDiscount/types.js +37 -15
  304. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  305. package/lib/solution/ShopDiscount/utils.js +172 -309
  306. package/lib/solution/UnifiedBookingSales/index.js +405 -379
  307. package/lib/solution/UnifiedBookingSales/types.js +31 -12
  308. package/lib/solution/VenueBooking/index.d.ts +3 -31
  309. package/lib/solution/VenueBooking/index.js +916 -967
  310. package/lib/solution/VenueBooking/types.d.ts +1 -3
  311. package/lib/solution/VenueBooking/types.js +39 -20
  312. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  313. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  314. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  315. package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
  316. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  317. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  318. package/lib/solution/VenueBooking/utils.js +67 -130
  319. package/lib/solution/index.js +41 -124
  320. package/lib/store/createStore.js +29 -32
  321. package/lib/types/index.d.ts +1 -1
  322. package/lib/types/index.js +16 -4
  323. package/lib/utils/task.js +36 -36
  324. package/lib/utils/watch.js +47 -81
  325. package/package.json +2 -4
  326. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  327. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  328. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  329. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
@@ -1,44 +1,55 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/solution/Checkout/utils/index.ts
20
+ var utils_exports = {};
21
+ __export(utils_exports, {
22
+ calculateTotalAmount: () => calculateTotalAmount,
23
+ createCheckoutError: () => createCheckoutError,
24
+ debounce: () => debounce,
25
+ deepClone: () => deepClone,
26
+ extractAmountFromCartSummary: () => extractAmountFromCartSummary,
27
+ formatAmount: () => formatAmount,
28
+ formatDateTime: () => formatDateTime,
29
+ generateLocalOrderId: () => generateLocalOrderId,
30
+ generateOrderId: () => generateOrderId,
31
+ getErrorMessage: () => getErrorMessage,
32
+ isCashPayment: () => isCashPayment,
33
+ isEmpty: () => isEmpty,
34
+ isProduction: () => isProduction,
35
+ isValidPaymentMethodCode: () => isValidPaymentMethodCode,
36
+ isVirtualOrderId: () => isVirtualOrderId,
37
+ logger: () => logger,
38
+ retry: () => retry,
39
+ safeJsonParse: () => safeJsonParse,
40
+ shouldSyncOrderForPayment: () => shouldSyncOrderForPayment,
41
+ throttle: () => throttle,
42
+ validateAmount: () => validateAmount,
43
+ validateCheckoutData: () => validateCheckoutData,
44
+ validateLocalOrderData: () => validateLocalOrderData
5
45
  });
6
- exports.calculateTotalAmount = calculateTotalAmount;
7
- exports.createCheckoutError = createCheckoutError;
8
- exports.debounce = debounce;
9
- exports.deepClone = deepClone;
10
- exports.extractAmountFromCartSummary = extractAmountFromCartSummary;
11
- exports.formatAmount = formatAmount;
12
- exports.formatDateTime = formatDateTime;
13
- exports.generateLocalOrderId = generateLocalOrderId;
14
- exports.generateOrderId = generateOrderId;
15
- exports.getErrorMessage = getErrorMessage;
16
- exports.isCashPayment = isCashPayment;
17
- exports.isEmpty = isEmpty;
18
- exports.isProduction = isProduction;
19
- exports.isValidPaymentMethodCode = isValidPaymentMethodCode;
20
- exports.isVirtualOrderId = isVirtualOrderId;
21
- exports.logger = void 0;
22
- exports.retry = retry;
23
- exports.safeJsonParse = safeJsonParse;
24
- exports.shouldSyncOrderForPayment = shouldSyncOrderForPayment;
25
- exports.throttle = throttle;
26
- exports.validateAmount = validateAmount;
27
- exports.validateCheckoutData = validateCheckoutData;
28
- exports.validateLocalOrderData = validateLocalOrderData;
29
- var _types = require("../../../modules/Payment/types");
30
- /**
31
- * 验证结账数据
32
- */
46
+ module.exports = __toCommonJS(utils_exports);
47
+ var import_types = require("../../../modules/Payment/types");
33
48
  function validateCheckoutData(params) {
34
49
  const errors = [];
35
-
36
- // 验证购物车商品
37
50
  if (!params.cartItems || params.cartItems.length === 0) {
38
- errors.push('购物车不能为空');
51
+ errors.push("购物车不能为空");
39
52
  }
40
-
41
- // 验证购物车商品数据完整性
42
53
  if (params.cartItems) {
43
54
  params.cartItems.forEach((item, index) => {
44
55
  if (!item.id) {
@@ -52,25 +63,14 @@ function validateCheckoutData(params) {
52
63
  }
53
64
  });
54
65
  }
55
-
56
- // // 验证订单类型
57
- // if (params.orderType && !['virtual', 'appointment_booking'].includes(params.orderType)) {
58
- // errors.push('订单类型无效,必须是 virtual 或 appointment_booking');
59
- // }
60
-
61
- // 验证平台类型
62
- if (params.platform && !['pc', 'h5'].includes(params.platform)) {
63
- errors.push('平台类型无效,必须是 pc 或 h5');
66
+ if (params.platform && !["pc", "h5"].includes(params.platform)) {
67
+ errors.push("平台类型无效,必须是 pc 或 h5");
64
68
  }
65
69
  return {
66
70
  valid: errors.length === 0,
67
71
  errors
68
72
  };
69
73
  }
70
-
71
- /**
72
- * 创建结账错误对象
73
- */
74
74
  function createCheckoutError(type, message, details) {
75
75
  return {
76
76
  type,
@@ -79,44 +79,24 @@ function createCheckoutError(type, message, details) {
79
79
  timestamp: Date.now()
80
80
  };
81
81
  }
82
-
83
- /**
84
- * 格式化金额
85
- */
86
82
  function formatAmount(amount) {
87
- const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;
88
- if (isNaN(numAmount)) return '0.00';
83
+ const numAmount = typeof amount === "string" ? parseFloat(amount) : amount;
84
+ if (isNaN(numAmount))
85
+ return "0.00";
89
86
  return numAmount.toFixed(2);
90
87
  }
91
-
92
- /**
93
- * 验证金额
94
- */
95
88
  function validateAmount(amount) {
96
- const numAmount = typeof amount === 'string' ? parseFloat(amount) : amount;
89
+ const numAmount = typeof amount === "string" ? parseFloat(amount) : amount;
97
90
  return !isNaN(numAmount) && numAmount >= 0;
98
91
  }
99
-
100
- /**
101
- * 生成唯一订单ID
102
- */
103
- function generateOrderId(prefix = 'order') {
92
+ function generateOrderId(prefix = "order") {
104
93
  const timestamp = Date.now();
105
- const random = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
94
+ const random = Math.floor(Math.random() * 1e4).toString().padStart(4, "0");
106
95
  return `${prefix}_${timestamp}_${random}`;
107
96
  }
108
-
109
- /**
110
- * 检查是否为有效的支付方式代码
111
- */
112
97
  function isValidPaymentMethodCode(code) {
113
- // 基本的支付方式代码验证
114
- return typeof code === 'string' && code.length > 0 && /^[a-zA-Z0-9_-]+$/.test(code);
98
+ return typeof code === "string" && code.length > 0 && /^[a-zA-Z0-9_-]+$/.test(code);
115
99
  }
116
-
117
- /**
118
- * 安全地解析JSON
119
- */
120
100
  function safeJsonParse(jsonString, defaultValue) {
121
101
  try {
122
102
  return JSON.parse(jsonString);
@@ -124,21 +104,17 @@ function safeJsonParse(jsonString, defaultValue) {
124
104
  return defaultValue;
125
105
  }
126
106
  }
127
-
128
- /**
129
- * 深度克隆对象
130
- */
131
107
  function deepClone(obj) {
132
- if (obj === null || typeof obj !== 'object') {
108
+ if (obj === null || typeof obj !== "object") {
133
109
  return obj;
134
110
  }
135
111
  if (obj instanceof Date) {
136
112
  return new Date(obj.getTime());
137
113
  }
138
114
  if (obj instanceof Array) {
139
- return obj.map(item => deepClone(item));
115
+ return obj.map((item) => deepClone(item));
140
116
  }
141
- if (typeof obj === 'object') {
117
+ if (typeof obj === "object") {
142
118
  const clonedObj = {};
143
119
  for (const key in obj) {
144
120
  if (obj.hasOwnProperty(key)) {
@@ -149,10 +125,6 @@ function deepClone(obj) {
149
125
  }
150
126
  return obj;
151
127
  }
152
-
153
- /**
154
- * 防抖函数
155
- */
156
128
  function debounce(func, wait) {
157
129
  let timeout = null;
158
130
  return (...args) => {
@@ -164,10 +136,6 @@ function debounce(func, wait) {
164
136
  }, wait);
165
137
  };
166
138
  }
167
-
168
- /**
169
- * 节流函数
170
- */
171
139
  function throttle(func, wait) {
172
140
  let lastTime = 0;
173
141
  return (...args) => {
@@ -178,11 +146,7 @@ function throttle(func, wait) {
178
146
  }
179
147
  };
180
148
  }
181
-
182
- /**
183
- * 重试函数
184
- */
185
- async function retry(fn, maxAttempts = 3, delay = 1000) {
149
+ async function retry(fn, maxAttempts = 3, delay = 1e3) {
186
150
  let lastError;
187
151
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
188
152
  try {
@@ -192,52 +156,39 @@ async function retry(fn, maxAttempts = 3, delay = 1000) {
192
156
  if (attempt === maxAttempts) {
193
157
  throw lastError;
194
158
  }
195
-
196
- // 等待指定时间后重试
197
- await new Promise(resolve => setTimeout(resolve, delay * attempt));
159
+ await new Promise((resolve) => setTimeout(resolve, delay * attempt));
198
160
  }
199
161
  }
200
162
  throw lastError;
201
163
  }
202
-
203
- /**
204
- * 检查对象是否为空
205
- */
206
164
  function isEmpty(obj) {
207
- if (obj == null) return true;
208
- if (Array.isArray(obj) || typeof obj === 'string') return obj.length === 0;
209
- if (typeof obj === 'object') return Object.keys(obj).length === 0;
165
+ if (obj == null)
166
+ return true;
167
+ if (Array.isArray(obj) || typeof obj === "string")
168
+ return obj.length === 0;
169
+ if (typeof obj === "object")
170
+ return Object.keys(obj).length === 0;
210
171
  return false;
211
172
  }
212
-
213
- /**
214
- * 获取错误消息
215
- */
216
173
  function getErrorMessage(error) {
217
174
  if (error instanceof Error) {
218
175
  return error.message;
219
176
  }
220
- if (typeof error === 'string') {
177
+ if (typeof error === "string") {
221
178
  return error;
222
179
  }
223
- if (error && typeof error === 'object' && 'message' in error) {
180
+ if (error && typeof error === "object" && "message" in error) {
224
181
  return String(error.message);
225
182
  }
226
- return '未知错误';
183
+ return "未知错误";
227
184
  }
228
-
229
- /**
230
- * 检查是否为生产环境
231
- */
232
185
  function isProduction() {
233
- return process.env.NODE_ENV === 'production';
186
+ return process.env.NODE_ENV === "production";
234
187
  }
235
-
236
- /**
237
- * 日志记录器
238
- */
239
- const logger = exports.logger = {
240
- info: (message, ...args) => {},
188
+ var logger = {
189
+ info: (message, ...args) => {
190
+ console.log(`[Checkout] ${message}`, ...args);
191
+ },
241
192
  warn: (message, ...args) => {
242
193
  console.warn(`[Checkout] ${message}`, ...args);
243
194
  },
@@ -245,30 +196,23 @@ const logger = exports.logger = {
245
196
  console.error(`[Checkout] ${message}`, ...args);
246
197
  },
247
198
  debug: (message, ...args) => {
248
- if (!isProduction()) {}
199
+ if (!isProduction()) {
200
+ console.debug(`[Checkout] ${message}`, ...args);
201
+ }
249
202
  }
250
203
  };
251
-
252
- // ========== 从 CheckoutImpl 类中移出的纯静态方法 ==========
253
-
254
- /**
255
- * 验证本地订单数据
256
- */
257
204
  function validateLocalOrderData(orderData) {
205
+ var _a;
258
206
  const errors = [];
259
-
260
- // 验证基本字段
261
207
  if (!orderData.type) {
262
- errors.push('订单类型不能为空');
208
+ errors.push("订单类型不能为空");
263
209
  }
264
210
  if (!orderData.platform) {
265
- errors.push('平台信息不能为空');
211
+ errors.push("平台信息不能为空");
266
212
  }
267
- if ((!orderData.bookings || orderData.bookings.length === 0) && !orderData?.relation_products?.length) {
268
- errors.push('预订信息不能为空');
213
+ if ((!orderData.bookings || orderData.bookings.length === 0) && !((_a = orderData == null ? void 0 : orderData.relation_products) == null ? void 0 : _a.length)) {
214
+ errors.push("预订信息不能为空");
269
215
  }
270
-
271
- // 验证预订信息
272
216
  if (orderData.bookings) {
273
217
  orderData.bookings.forEach((booking, index) => {
274
218
  if (!booking.product || !booking.product.product_id) {
@@ -287,147 +231,131 @@ function validateLocalOrderData(orderData) {
287
231
  errors
288
232
  };
289
233
  }
290
-
291
- /**
292
- * 生成本地订单ID
293
- */
294
234
  function generateLocalOrderId() {
295
235
  const timestamp = Date.now();
296
- const random = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
236
+ const random = Math.floor(Math.random() * 1e4).toString().padStart(4, "0");
297
237
  return `local_order_${timestamp}_${random}`;
298
238
  }
299
-
300
- /**
301
- * 格式化日期时间为 YYYY-MM-DD hh:mm:ss 格式
302
- *
303
- * @param date 要格式化的日期对象
304
- * @returns 格式化后的日期时间字符串
305
- */
306
239
  function formatDateTime(date) {
307
240
  const year = date.getFullYear();
308
- const month = String(date.getMonth() + 1).padStart(2, '0');
309
- const day = String(date.getDate()).padStart(2, '0');
310
- const hours = String(date.getHours()).padStart(2, '0');
311
- const minutes = String(date.getMinutes()).padStart(2, '0');
312
- const seconds = String(date.getSeconds()).padStart(2, '0');
241
+ const month = String(date.getMonth() + 1).padStart(2, "0");
242
+ const day = String(date.getDate()).padStart(2, "0");
243
+ const hours = String(date.getHours()).padStart(2, "0");
244
+ const minutes = String(date.getMinutes()).padStart(2, "0");
245
+ const seconds = String(date.getSeconds()).padStart(2, "0");
313
246
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
314
247
  }
315
-
316
- /**
317
- * 从购物车小计数据中提取金额信息
318
- */
319
248
  function extractAmountFromCartSummary(cartSummary) {
320
249
  const result = {
321
- totalAmount: '0.00',
322
- subTotal: '0.00',
323
- taxAmount: '0.00',
324
- discountAmount: '0.00',
325
- shopDiscountAmount: '0.00',
326
- roundingAmount: '0.00'
250
+ totalAmount: "0.00",
251
+ subTotal: "0.00",
252
+ taxAmount: "0.00",
253
+ discountAmount: "0.00",
254
+ shopDiscountAmount: "0.00",
255
+ roundingAmount: "0.00"
327
256
  };
328
- cartSummary.forEach(item => {
257
+ cartSummary.forEach((item) => {
329
258
  const value = Number(item.value).toFixed(2);
330
259
  switch (item.key) {
331
- case 'expect_amount':
260
+ case "expect_amount":
332
261
  result.totalAmount = value;
333
262
  break;
334
- case 'sub_total':
263
+ case "sub_total":
335
264
  result.subTotal = value;
336
265
  break;
337
- case 'tax':
266
+ case "tax":
338
267
  result.taxAmount = value;
339
268
  if (item.tax) {
340
269
  result.taxDetails = item.tax;
341
270
  }
342
271
  break;
343
- case 'discount':
272
+ case "discount":
344
273
  result.discountAmount = value;
345
274
  break;
346
- case 'shop_discount':
275
+ case "shop_discount":
347
276
  result.shopDiscountAmount = value;
348
277
  break;
349
- case 'custom_roundingAmount':
278
+ case "custom_roundingAmount":
350
279
  result.roundingAmount = value;
351
280
  break;
352
281
  default:
353
- // 处理其他可能的键,如定金等
354
- if (item.key.includes('deposit')) {
282
+ if (item.key.includes("deposit")) {
355
283
  result.depositAmount = value;
356
284
  }
357
285
  break;
358
286
  }
359
287
  });
288
+ console.log("[Checkout] 从购物车小计提取金额信息:", {
289
+ totalAmount: result.totalAmount,
290
+ subTotal: result.subTotal,
291
+ taxAmount: result.taxAmount,
292
+ discountAmount: result.discountAmount,
293
+ shopDiscountAmount: result.shopDiscountAmount,
294
+ roundingAmount: result.roundingAmount
295
+ });
360
296
  return result;
361
297
  }
362
-
363
- /**
364
- * 计算购物车总金额
365
- */
366
298
  function calculateTotalAmount(cartItems) {
367
299
  const total = cartItems.reduce((sum, item) => {
368
- const price = parseFloat(String(item.price) || '0');
300
+ const price = parseFloat(String(item.price) || "0");
369
301
  const quantity = item.quantity || 1;
370
302
  return sum + price * quantity;
371
303
  }, 0);
372
304
  return total.toFixed(2);
373
305
  }
374
-
375
- /**
376
- * 判断订单ID是否为本地生成的虚拟ID
377
- *
378
- * @param orderId 订单ID
379
- * @returns true 表示是虚拟ID,false 表示是真实的后端ID
380
- */
381
306
  function isVirtualOrderId(orderId) {
382
- return orderId.startsWith('local_order_');
307
+ return orderId.startsWith("local_order_");
383
308
  }
384
-
385
- /**
386
- * 判断支付方式是否需要同步订单到后端
387
- *
388
- * 现金支付(CASHMANUAL)和自定义支付不需要同步,其他支付方式需要同步
389
- *
390
- * @param paymentCode 支付方式代码
391
- * @param paymentType 支付方式类型
392
- * @returns 是否需要同步订单
393
- */
394
309
  function shouldSyncOrderForPayment(paymentCode, paymentType) {
395
- const codeUpper = paymentCode?.toUpperCase() || '';
396
- const typeUpper = paymentType?.toUpperCase() || '';
397
-
398
- // 现金支付不需要同步 - 支持多种现金支付识别方式
399
- const cashIdentifiers = ['CASHMANUAL', 'CASH', 'MANUAL'];
400
- if (cashIdentifiers.some(id => codeUpper.includes(id) || typeUpper.includes(id))) {
310
+ const codeUpper = (paymentCode == null ? void 0 : paymentCode.toUpperCase()) || "";
311
+ const typeUpper = (paymentType == null ? void 0 : paymentType.toUpperCase()) || "";
312
+ const cashIdentifiers = ["CASHMANUAL", "CASH", "MANUAL"];
313
+ if (cashIdentifiers.some(
314
+ (id) => codeUpper.includes(id) || typeUpper.includes(id)
315
+ )) {
401
316
  return false;
402
317
  }
403
-
404
- // 标准现金支付代码检查
405
- if (paymentCode === _types.PaymentMethodType.Cash || paymentType === _types.PaymentMethodType.Cash) {
318
+ if (paymentCode === import_types.PaymentMethodType.Cash || paymentType === import_types.PaymentMethodType.Cash) {
406
319
  return false;
407
320
  }
408
-
409
- // 自定义支付不需要同步
410
- if (codeUpper.includes('CUSTOM') || typeUpper.includes('CUSTOM')) {
321
+ if (codeUpper.includes("CUSTOM") || typeUpper.includes("CUSTOM")) {
411
322
  return false;
412
323
  }
413
-
414
- // 其他支付方式都需要同步
415
324
  return true;
416
325
  }
417
-
418
- /**
419
- * 判断是否为现金支付
420
- *
421
- * @param paymentCode 支付方式代码
422
- * @param paymentType 支付方式类型
423
- * @returns 是否为现金支付
424
- */
425
326
  function isCashPayment(paymentItem) {
426
- const codeUpper = paymentItem.code?.toUpperCase() || '';
427
- const typeUpper = paymentItem.type?.toUpperCase() || '';
428
- const isNameCash = paymentItem.name?.toLowerCase().includes('cash');
429
-
430
- // 现金支付识别规则
431
- const cashIdentifiers = ['CASH', 'CASHMANUAL', 'MANUAL'];
432
- return cashIdentifiers.some(identifier => codeUpper.includes(identifier) || typeUpper.includes(identifier)) || isNameCash;
433
- }
327
+ var _a, _b, _c;
328
+ const codeUpper = ((_a = paymentItem.code) == null ? void 0 : _a.toUpperCase()) || "";
329
+ const typeUpper = ((_b = paymentItem.type) == null ? void 0 : _b.toUpperCase()) || "";
330
+ const isNameCash = (_c = paymentItem.name) == null ? void 0 : _c.toLowerCase().includes("cash");
331
+ const cashIdentifiers = ["CASH", "CASHMANUAL", "MANUAL"];
332
+ return cashIdentifiers.some(
333
+ (identifier) => codeUpper.includes(identifier) || typeUpper.includes(identifier)
334
+ ) || isNameCash;
335
+ }
336
+ // Annotate the CommonJS export names for ESM import in node:
337
+ 0 && (module.exports = {
338
+ calculateTotalAmount,
339
+ createCheckoutError,
340
+ debounce,
341
+ deepClone,
342
+ extractAmountFromCartSummary,
343
+ formatAmount,
344
+ formatDateTime,
345
+ generateLocalOrderId,
346
+ generateOrderId,
347
+ getErrorMessage,
348
+ isCashPayment,
349
+ isEmpty,
350
+ isProduction,
351
+ isValidPaymentMethodCode,
352
+ isVirtualOrderId,
353
+ logger,
354
+ retry,
355
+ safeJsonParse,
356
+ shouldSyncOrderForPayment,
357
+ throttle,
358
+ validateAmount,
359
+ validateCheckoutData,
360
+ validateLocalOrderData
361
+ });
@@ -1,55 +0,0 @@
1
- // // 只是一个示例工程
2
-
3
- // import { Module, PisellCore, ModuleOptions } from '../types';
4
- // import { CartModuleAPI } from '../modules/cart';
5
- // import { StockModuleAPI } from '../modules/stock';
6
- // import { CheckoutModuleAPI } from '../modules/checkout';
7
-
8
- // class OrderSolution implements Module {
9
- // name = 'orderSolution';
10
- // version = '1.0.0';
11
-
12
- // private core!: PisellCore;
13
- // private cart!: CartModuleAPI;
14
- // private stock!: StockModuleAPI;
15
- // private checkout!: CheckoutModuleAPI;
16
-
17
- // public exports = {
18
- // submitOrder: this.submitOrder.bind(this),
19
- // };
20
-
21
- // async initialize(core: PisellCore): Promise<void> {
22
- // this.core = core;
23
-
24
- // // 获取依赖的模块 API
25
- // this.cart = core.getModuleExports<CartModuleAPI>('cart');
26
- // this.stock = core.getModuleExports<StockModuleAPI>('stock');
27
- // this.checkout = core.getModuleExports<CheckoutModuleAPI>('checkout');
28
-
29
- // console.log('[OrderSolution] 初始化完成');
30
- // }
31
-
32
- // async destroy(): Promise<void> {
33
- // console.log('[OrderSolution] 已销毁');
34
- // }
35
-
36
- // /**
37
- // * 下单流程(商品 → 库存校验 → 结算 → 提交)
38
- // */
39
- // async submitOrder(): Promise<void> {
40
- // const cartItems = await this.cart.getItems();
41
-
42
- // const stockResult = await this.stock.checkAvailability(cartItems);
43
- // if (!stockResult.ok) {
44
- // throw new Error('部分商品库存不足');
45
- // }
46
-
47
- // const summary = await this.checkout.calculate(cartItems);
48
-
49
- // await this.checkout.submit(summary);
50
- // console.log('[OrderSolution] 下单完成');
51
- // }
52
- // }
53
-
54
- // export default new OrderSolution();
55
- "use strict";