@pisell/pisellos 0.0.569 → 0.10.2

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 (328) 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/promotion/index.js +9 -0
  5. package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
  6. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  7. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  8. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  9. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  10. package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
  11. package/dist/model/strategy/strategy-example.js +19 -5
  12. package/dist/modules/BaseModule.d.ts +1 -1
  13. package/dist/modules/BaseModule.js +8 -10
  14. package/dist/modules/Cart/index.js +3 -0
  15. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  16. package/dist/modules/Cart/utils/cartResource.js +0 -2
  17. package/dist/modules/Cart/utils/changePrice.js +9 -16
  18. package/dist/modules/Date/index.js +5 -1
  19. package/dist/modules/Discount/index.d.ts +0 -1
  20. package/dist/modules/Discount/index.js +7 -22
  21. package/dist/modules/Discount/types.d.ts +0 -1
  22. package/dist/modules/OpenData/index.js +2 -0
  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 +49 -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.js +1909 -1572
  167. package/lib/modules/Order/types.js +35 -78
  168. package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
  169. package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
  170. package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
  171. package/lib/modules/Order/utils.js +634 -799
  172. package/lib/modules/Payment/cash.js +33 -20
  173. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  174. package/lib/modules/Payment/eftpos.js +30 -16
  175. package/lib/modules/Payment/index.js +378 -518
  176. package/lib/modules/Payment/mx51.js +0 -1
  177. package/lib/modules/Payment/types.d.ts +4 -8
  178. package/lib/modules/Payment/types.js +107 -216
  179. package/lib/modules/Payment/utils.js +48 -51
  180. package/lib/modules/Payment/walletpass.d.ts +0 -2
  181. package/lib/modules/Payment/walletpass.js +211 -226
  182. package/lib/modules/Product/index.js +46 -51
  183. package/lib/modules/Product/types.js +16 -4
  184. package/lib/modules/Product/utils.js +33 -32
  185. package/lib/modules/ProductList/index.d.ts +1 -1
  186. package/lib/modules/ProductList/index.js +117 -117
  187. package/lib/modules/ProductList/types.d.ts +0 -1
  188. package/lib/modules/ProductList/types.js +31 -9
  189. package/lib/modules/Quotation/index.js +100 -66
  190. package/lib/modules/Quotation/types.js +16 -4
  191. package/lib/modules/Resource/index.js +59 -27
  192. package/lib/modules/Resource/types.js +32 -22
  193. package/lib/modules/Resource/utils.js +38 -30
  194. package/lib/modules/ResourcePlanner/index.js +61 -60
  195. package/lib/modules/ResourcePlanner/planner.js +384 -346
  196. package/lib/modules/ResourcePlanner/types.js +16 -4
  197. package/lib/modules/Rules/index.js +903 -1475
  198. package/lib/modules/Rules/types.js +40 -17
  199. package/lib/modules/SalesSummary/index.js +90 -85
  200. package/lib/modules/SalesSummary/types.js +16 -4
  201. package/lib/modules/SalesSummary/utils.js +427 -351
  202. package/lib/modules/ScanOrderLogger/index.js +79 -59
  203. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  204. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  205. package/lib/modules/ScanOrderLogger/types.js +16 -4
  206. package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
  207. package/lib/modules/Schedule/index.js +114 -100
  208. package/lib/modules/Schedule/type.js +16 -4
  209. package/lib/modules/Schedule/types.js +16 -4
  210. package/lib/modules/Schedule/utils.js +291 -433
  211. package/lib/modules/Step/index.js +52 -40
  212. package/lib/modules/Step/tyeps.js +16 -4
  213. package/lib/modules/Summary/index.js +71 -66
  214. package/lib/modules/Summary/types.js +16 -4
  215. package/lib/modules/Summary/utils.js +418 -791
  216. package/lib/modules/SurchargeList/index.js +60 -46
  217. package/lib/modules/SurchargeList/types.js +16 -4
  218. package/lib/modules/index.js +63 -245
  219. package/lib/plugins/app.js +16 -4
  220. package/lib/plugins/index.js +25 -36
  221. package/lib/plugins/request.js +126 -137
  222. package/lib/plugins/shopStore.js +16 -4
  223. package/lib/plugins/user.js +16 -4
  224. package/lib/plugins/window.js +179 -171
  225. package/lib/server/index.js +2337 -2675
  226. package/lib/server/modules/floor-plan/index.js +123 -102
  227. package/lib/server/modules/floor-plan/types.js +30 -15
  228. package/lib/server/modules/index.js +68 -106
  229. package/lib/server/modules/menu/index.js +122 -146
  230. package/lib/server/modules/menu/types.js +31 -18
  231. package/lib/server/modules/order/index.js +642 -567
  232. package/lib/server/modules/order/types.js +32 -117
  233. package/lib/server/modules/order/utils/filterBookings.js +194 -219
  234. package/lib/server/modules/order/utils/filterOrders.js +92 -118
  235. package/lib/server/modules/payment/index.js +83 -59
  236. package/lib/server/modules/payment/types.js +16 -4
  237. package/lib/server/modules/products/index.js +459 -575
  238. package/lib/server/modules/products/types.js +34 -44
  239. package/lib/server/modules/quotation/index.js +172 -137
  240. package/lib/server/modules/quotation/types.js +31 -21
  241. package/lib/server/modules/resource/index.js +184 -213
  242. package/lib/server/modules/resource/types.js +33 -42
  243. package/lib/server/modules/schedule/index.js +123 -135
  244. package/lib/server/modules/schedule/types.js +21 -14
  245. package/lib/server/modules/schedule/utils.js +163 -334
  246. package/lib/server/types.js +16 -4
  247. package/lib/server/utils/index.js +23 -25
  248. package/lib/server/utils/product.js +139 -196
  249. package/lib/server/utils/schedule.js +41 -34
  250. package/lib/server/utils/small-ticket.js +456 -478
  251. package/lib/server/utils/time.js +49 -40
  252. package/lib/solution/BaseSales/index.js +1016 -850
  253. package/lib/solution/BaseSales/types.js +37 -41
  254. package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
  255. package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
  256. package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
  257. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
  258. package/lib/solution/BaseSales/utils.js +140 -155
  259. package/lib/solution/BookingByStep/index.d.ts +1 -1
  260. package/lib/solution/BookingByStep/index.js +1340 -1530
  261. package/lib/solution/BookingByStep/types.js +99 -40
  262. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  263. package/lib/solution/BookingByStep/utils/products.js +52 -42
  264. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  265. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  266. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  267. package/lib/solution/BookingTicket/index.d.ts +1 -1
  268. package/lib/solution/BookingTicket/index.js +459 -543
  269. package/lib/solution/BookingTicket/types.js +77 -99
  270. package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
  271. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
  272. package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
  273. package/lib/solution/BookingTicket/utils/cartView.js +94 -110
  274. package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
  275. package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
  276. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
  277. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
  278. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
  279. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
  280. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
  281. package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
  282. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  283. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
  284. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
  285. package/lib/solution/BuyTickets/index.js +70 -67
  286. package/lib/solution/BuyTickets/types.js +38 -22
  287. package/lib/solution/Checkout/index.js +1158 -1451
  288. package/lib/solution/Checkout/types.js +61 -91
  289. package/lib/solution/Checkout/utils/index.js +156 -228
  290. package/lib/solution/PlaceOrder/index.js +0 -55
  291. package/lib/solution/RegisterAndLogin/config.js +460 -493
  292. package/lib/solution/RegisterAndLogin/index.js +630 -633
  293. package/lib/solution/RegisterAndLogin/types.js +76 -189
  294. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  295. package/lib/solution/Sales/index.js +320 -317
  296. package/lib/solution/Sales/types.js +33 -27
  297. package/lib/solution/ScanOrder/index.js +862 -831
  298. package/lib/solution/ScanOrder/types.js +34 -33
  299. package/lib/solution/ScanOrder/utils.js +371 -406
  300. package/lib/solution/ShopDiscount/index.js +233 -235
  301. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  302. package/lib/solution/ShopDiscount/types.js +37 -15
  303. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  304. package/lib/solution/ShopDiscount/utils.js +172 -309
  305. package/lib/solution/UnifiedBookingSales/index.js +405 -379
  306. package/lib/solution/UnifiedBookingSales/types.js +31 -12
  307. package/lib/solution/VenueBooking/index.d.ts +3 -31
  308. package/lib/solution/VenueBooking/index.js +916 -967
  309. package/lib/solution/VenueBooking/types.d.ts +1 -3
  310. package/lib/solution/VenueBooking/types.js +39 -20
  311. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  312. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  313. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  314. package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
  315. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  316. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  317. package/lib/solution/VenueBooking/utils.js +67 -130
  318. package/lib/solution/index.js +41 -124
  319. package/lib/store/createStore.js +29 -32
  320. package/lib/types/index.d.ts +1 -1
  321. package/lib/types/index.js +16 -4
  322. package/lib/utils/task.js +36 -36
  323. package/lib/utils/watch.js +47 -81
  324. package/package.json +2 -4
  325. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  326. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  327. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  328. 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";