@pisell/pisellos 0.0.568 → 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 (588) 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/evaluator.js +3 -2
  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 +24 -96
  11. package/dist/model/strategy/strategy-example.js +19 -5
  12. package/dist/modules/BaseModule.d.ts +2 -2
  13. package/dist/modules/BaseModule.js +12 -14
  14. package/dist/modules/BookingContext/index.d.ts +48 -0
  15. package/dist/modules/BookingContext/index.js +566 -0
  16. package/dist/modules/BookingContext/types.d.ts +102 -0
  17. package/dist/modules/BookingContext/types.js +51 -0
  18. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  19. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  20. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  21. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  22. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  23. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  24. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  25. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  26. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  27. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  28. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  29. package/dist/modules/BookingContext/utils/index.js +11 -0
  30. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  31. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  32. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  33. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  34. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  35. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  36. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  37. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  38. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  39. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  40. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  41. package/dist/modules/BookingContext/utils/resources.js +486 -0
  42. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  43. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  44. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  45. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  46. package/dist/modules/Cart/index.js +3 -0
  47. package/dist/modules/Cart/utils/cartProduct.js +27 -5
  48. package/dist/modules/Cart/utils/cartResource.js +0 -2
  49. package/dist/modules/Cart/utils/changePrice.js +11 -11
  50. package/dist/modules/Customer/index.d.ts +20 -0
  51. package/dist/modules/Customer/index.js +172 -83
  52. package/dist/modules/Customer/types.d.ts +2 -0
  53. package/dist/modules/Date/index.js +5 -1
  54. package/dist/modules/Discount/index.d.ts +2 -2
  55. package/dist/modules/Discount/index.js +43 -30
  56. package/dist/modules/Discount/types.d.ts +1 -1
  57. package/dist/modules/OpenData/index.d.ts +8 -0
  58. package/dist/modules/OpenData/index.js +38 -16
  59. package/dist/modules/Order/index.d.ts +449 -24
  60. package/dist/modules/Order/index.js +5460 -574
  61. package/dist/modules/Order/types.d.ts +693 -88
  62. package/dist/modules/Order/types.js +68 -1
  63. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  64. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  65. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  66. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  67. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  68. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  69. package/dist/modules/Order/utils.d.ts +167 -18
  70. package/dist/modules/Order/utils.js +960 -165
  71. package/dist/modules/Payment/index.d.ts +10 -9
  72. package/dist/modules/Payment/index.js +573 -746
  73. package/dist/modules/Payment/types.d.ts +44 -24
  74. package/dist/modules/Payment/utils.d.ts +1 -1
  75. package/dist/modules/Payment/utils.js +4 -3
  76. package/dist/modules/Payment/walletpass.d.ts +0 -2
  77. package/dist/modules/Payment/walletpass.js +49 -33
  78. package/dist/modules/Product/types.d.ts +29 -7
  79. package/dist/modules/ProductList/index.d.ts +17 -13
  80. package/dist/modules/ProductList/index.js +182 -81
  81. package/dist/modules/ProductList/types.d.ts +16 -0
  82. package/dist/modules/Quotation/index.d.ts +22 -2
  83. package/dist/modules/Quotation/index.js +108 -42
  84. package/dist/modules/Quotation/types.d.ts +19 -0
  85. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  86. package/dist/modules/ResourcePlanner/index.js +181 -0
  87. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  88. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  89. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  90. package/dist/modules/ResourcePlanner/types.js +1 -0
  91. package/dist/modules/Rules/index.d.ts +8 -10
  92. package/dist/modules/Rules/index.js +324 -513
  93. package/dist/modules/Rules/types.d.ts +14 -3
  94. package/dist/modules/SalesSummary/index.d.ts +23 -26
  95. package/dist/modules/SalesSummary/index.js +152 -46
  96. package/dist/modules/SalesSummary/types.d.ts +9 -1
  97. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  98. package/dist/modules/SalesSummary/utils.js +804 -165
  99. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -12
  100. package/dist/modules/Schedule/index.d.ts +18 -5
  101. package/dist/modules/Schedule/index.js +79 -24
  102. package/dist/modules/Schedule/types.d.ts +2 -0
  103. package/dist/modules/Schedule/utils.js +1 -0
  104. package/dist/modules/Step/index.js +1 -0
  105. package/dist/modules/Summary/index.js +4 -3
  106. package/dist/modules/Summary/utils.js +22 -43
  107. package/dist/modules/SurchargeList/index.d.ts +18 -0
  108. package/dist/modules/SurchargeList/index.js +185 -0
  109. package/dist/modules/SurchargeList/types.d.ts +15 -0
  110. package/dist/modules/SurchargeList/types.js +1 -0
  111. package/dist/modules/index.d.ts +3 -0
  112. package/dist/modules/index.js +4 -1
  113. package/dist/plugins/app.d.ts +2 -0
  114. package/dist/plugins/request.d.ts +1 -0
  115. package/dist/plugins/request.js +4 -1
  116. package/dist/plugins/window.js +6 -2
  117. package/dist/server/index.d.ts +462 -8
  118. package/dist/server/index.js +6168 -680
  119. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  120. package/dist/server/modules/floor-plan/index.js +595 -0
  121. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  122. package/dist/server/modules/floor-plan/types.js +13 -0
  123. package/dist/server/modules/index.d.ts +7 -2
  124. package/dist/server/modules/index.js +6 -0
  125. package/dist/server/modules/menu/index.js +41 -32
  126. package/dist/server/modules/order/index.d.ts +207 -14
  127. package/dist/server/modules/order/index.js +2328 -379
  128. package/dist/server/modules/order/types.d.ts +76 -5
  129. package/dist/server/modules/order/types.js +14 -1
  130. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  131. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  132. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  133. package/dist/server/modules/payment/index.d.ts +28 -0
  134. package/dist/server/modules/payment/index.js +305 -0
  135. package/dist/server/modules/payment/types.d.ts +9 -0
  136. package/dist/server/modules/payment/types.js +1 -0
  137. package/dist/server/modules/products/index.d.ts +105 -14
  138. package/dist/server/modules/products/index.js +1416 -521
  139. package/dist/server/modules/products/types.d.ts +34 -1
  140. package/dist/server/modules/products/types.js +4 -0
  141. package/dist/server/modules/quotation/index.d.ts +39 -0
  142. package/dist/server/modules/quotation/index.js +298 -77
  143. package/dist/server/modules/resource/index.d.ts +2 -3
  144. package/dist/server/modules/resource/index.js +109 -86
  145. package/dist/server/modules/schedule/index.d.ts +6 -4
  146. package/dist/server/modules/schedule/index.js +145 -106
  147. package/dist/server/test.json +713 -0
  148. package/dist/server/types.d.ts +2 -0
  149. package/dist/server/utils/product.js +3 -2
  150. package/dist/server/utils/small-ticket.d.ts +71 -0
  151. package/dist/server/utils/small-ticket.js +963 -0
  152. package/dist/solution/BaseSales/index.d.ts +378 -0
  153. package/dist/solution/BaseSales/index.js +4009 -0
  154. package/dist/solution/BaseSales/types.d.ts +394 -0
  155. package/dist/solution/BaseSales/types.js +40 -0
  156. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  157. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  158. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  159. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  160. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  161. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  162. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  163. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  164. package/dist/solution/BaseSales/utils.d.ts +40 -0
  165. package/dist/solution/BaseSales/utils.js +263 -0
  166. package/dist/solution/BookingByStep/index.d.ts +1 -1
  167. package/dist/solution/BookingByStep/index.js +60 -11
  168. package/dist/solution/BookingByStep/utils/capacity.js +11 -1
  169. package/dist/solution/BookingByStep/utils/resources.js +3 -1
  170. package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
  171. package/dist/solution/BookingTicket/index.d.ts +393 -24
  172. package/dist/solution/BookingTicket/index.js +2508 -443
  173. package/dist/solution/BookingTicket/types.d.ts +191 -6
  174. package/dist/solution/BookingTicket/types.js +83 -10
  175. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  176. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  177. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  178. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  179. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  180. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  181. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  182. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  183. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  184. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  185. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  186. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  187. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  188. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  189. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  190. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  191. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  192. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +42 -1
  193. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  194. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  195. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  196. package/dist/solution/BookingTicket/utils/scan/handleScan.js +42 -28
  197. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  198. package/dist/solution/BookingTicket/utils/scan/index.js +30 -14
  199. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  200. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  201. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  202. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  203. package/dist/solution/BuyTickets/index.js +12 -9
  204. package/dist/solution/Checkout/index.d.ts +1 -0
  205. package/dist/solution/Checkout/index.js +275 -209
  206. package/dist/solution/Checkout/utils/index.js +20 -8
  207. package/dist/solution/RegisterAndLogin/config.js +2 -10
  208. package/dist/solution/RegisterAndLogin/index.js +76 -30
  209. package/dist/solution/Sales/index.d.ts +50 -5
  210. package/dist/solution/Sales/index.js +484 -92
  211. package/dist/solution/Sales/types.d.ts +26 -2
  212. package/dist/solution/ScanOrder/index.d.ts +27 -21
  213. package/dist/solution/ScanOrder/index.js +519 -444
  214. package/dist/solution/ScanOrder/types.d.ts +33 -11
  215. package/dist/solution/ScanOrder/types.js +4 -5
  216. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  217. package/dist/solution/ScanOrder/utils.js +109 -34
  218. package/dist/solution/ShopDiscount/index.js +18 -19
  219. package/dist/solution/ShopDiscount/types.d.ts +4 -5
  220. package/dist/solution/ShopDiscount/utils.d.ts +0 -9
  221. package/dist/solution/ShopDiscount/utils.js +0 -9
  222. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  223. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  224. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  225. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  226. package/dist/solution/VenueBooking/index.d.ts +32 -51
  227. package/dist/solution/VenueBooking/index.js +741 -808
  228. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  229. package/dist/solution/VenueBooking/types.d.ts +1 -3
  230. package/dist/solution/VenueBooking/types.js +0 -1
  231. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  232. package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
  233. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  234. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  235. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  236. package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
  237. package/dist/solution/index.d.ts +2 -0
  238. package/dist/solution/index.js +3 -1
  239. package/dist/types/index.d.ts +12 -2
  240. package/dist/utils/task.js +18 -15
  241. package/dist/utils/watch.js +1 -0
  242. package/lib/apis/picoding.js +0 -2
  243. package/lib/core/index.js +132 -130
  244. package/lib/effects/index.js +57 -46
  245. package/lib/index.d.ts +0 -1
  246. package/lib/index.js +50 -92
  247. package/lib/model/index.js +21 -14
  248. package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
  249. package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
  250. package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
  251. package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
  252. package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
  253. package/lib/model/strategy/adapter/index.js +64 -100
  254. package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
  255. package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
  256. package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
  257. package/lib/model/strategy/adapter/itemRule/index.js +57 -83
  258. package/lib/model/strategy/adapter/itemRule/type.js +36 -97
  259. package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
  260. package/lib/model/strategy/adapter/promotion/evaluator.js +233 -382
  261. package/lib/model/strategy/adapter/promotion/examples.js +159 -139
  262. package/lib/model/strategy/adapter/promotion/index.js +0 -1
  263. package/lib/model/strategy/adapter/promotion/type.js +35 -199
  264. package/lib/model/strategy/adapter/type.js +16 -4
  265. package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
  266. package/lib/model/strategy/adapter/walletPass/example.js +190 -217
  267. package/lib/model/strategy/adapter/walletPass/index.js +51 -75
  268. package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
  269. package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
  270. package/lib/model/strategy/adapter/walletPass/type.js +16 -4
  271. package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  272. package/lib/model/strategy/adapter/walletPass/utils.js +383 -676
  273. package/lib/model/strategy/engine.js +168 -270
  274. package/lib/model/strategy/index.js +34 -49
  275. package/lib/model/strategy/strategy-example.js +239 -243
  276. package/lib/model/strategy/type.js +40 -100
  277. package/lib/modules/Account/index.js +53 -39
  278. package/lib/modules/Account/types.js +33 -20
  279. package/lib/modules/AccountList/index.js +154 -116
  280. package/lib/modules/AccountList/types.js +31 -30
  281. package/lib/modules/AccountList/utils.js +30 -18
  282. package/lib/modules/BaseModule.d.ts +2 -2
  283. package/lib/modules/BaseModule.js +50 -29
  284. package/lib/modules/BookingContext/index.d.ts +48 -0
  285. package/lib/modules/BookingContext/index.js +368 -0
  286. package/lib/modules/BookingContext/types.d.ts +102 -0
  287. package/lib/modules/BookingContext/types.js +34 -0
  288. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  289. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +298 -0
  290. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  291. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +155 -0
  292. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  293. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +222 -0
  294. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  295. package/lib/modules/BookingContext/utils/flexible.js +80 -0
  296. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  297. package/lib/modules/BookingContext/utils/formatResourceList.js +50 -0
  298. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  299. package/lib/modules/BookingContext/utils/index.js +43 -0
  300. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  301. package/lib/modules/BookingContext/utils/noResource.js +90 -0
  302. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  303. package/lib/modules/BookingContext/utils/orderLineDisplay.js +56 -0
  304. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  305. package/lib/modules/BookingContext/utils/productExtend.js +283 -0
  306. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  307. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  308. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  309. package/lib/modules/BookingContext/utils/resourceSelection.js +46 -0
  310. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  311. package/lib/modules/BookingContext/utils/resources.js +377 -0
  312. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  313. package/lib/modules/BookingContext/utils/serviceTimes.js +162 -0
  314. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  315. package/lib/modules/BookingContext/utils/timeSlices.js +124 -0
  316. package/lib/modules/Cart/index.js +124 -170
  317. package/lib/modules/Cart/types.js +51 -46
  318. package/lib/modules/Cart/utils/cartAccount.js +39 -40
  319. package/lib/modules/Cart/utils/cartDate.js +61 -56
  320. package/lib/modules/Cart/utils/cartDiscount.js +33 -28
  321. package/lib/modules/Cart/utils/cartNote.js +32 -27
  322. package/lib/modules/Cart/utils/cartProduct.js +261 -309
  323. package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
  324. package/lib/modules/Cart/utils/cartResource.js +78 -72
  325. package/lib/modules/Cart/utils/changePrice.js +59 -31
  326. package/lib/modules/Cart/utils/index.js +48 -106
  327. package/lib/modules/Customer/constants.js +34 -13
  328. package/lib/modules/Customer/index.d.ts +20 -0
  329. package/lib/modules/Customer/index.js +207 -217
  330. package/lib/modules/Customer/types.d.ts +2 -0
  331. package/lib/modules/Customer/types.js +35 -38
  332. package/lib/modules/Date/index.js +115 -116
  333. package/lib/modules/Date/types.js +28 -16
  334. package/lib/modules/Date/utils.js +123 -174
  335. package/lib/modules/Discount/index.d.ts +2 -2
  336. package/lib/modules/Discount/index.js +133 -119
  337. package/lib/modules/Discount/types.d.ts +1 -1
  338. package/lib/modules/Discount/types.js +31 -9
  339. package/lib/modules/Guests/index.js +56 -30
  340. package/lib/modules/Guests/types.js +33 -23
  341. package/lib/modules/Holder/index.js +189 -209
  342. package/lib/modules/Holder/types.js +16 -4
  343. package/lib/modules/Holder/utils.js +49 -20
  344. package/lib/modules/OpenData/index.d.ts +8 -0
  345. package/lib/modules/OpenData/index.js +88 -63
  346. package/lib/modules/OpenData/types.js +16 -4
  347. package/lib/modules/OpenData/utils.js +78 -44
  348. package/lib/modules/Order/index.d.ts +449 -24
  349. package/lib/modules/Order/index.js +4184 -514
  350. package/lib/modules/Order/types.d.ts +693 -88
  351. package/lib/modules/Order/types.js +35 -24
  352. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  353. package/lib/modules/Order/utils/bundleDiscountHydration.js +139 -0
  354. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  355. package/lib/modules/Order/utils/manualProductDiscount.js +206 -0
  356. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  357. package/lib/modules/Order/utils/orderCollectionIdentity.js +415 -0
  358. package/lib/modules/Order/utils.d.ts +167 -18
  359. package/lib/modules/Order/utils.js +1085 -414
  360. package/lib/modules/Payment/cash.js +33 -20
  361. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  362. package/lib/modules/Payment/eftpos.js +30 -16
  363. package/lib/modules/Payment/index.d.ts +10 -9
  364. package/lib/modules/Payment/index.js +402 -636
  365. package/lib/modules/Payment/mx51.js +0 -1
  366. package/lib/modules/Payment/types.d.ts +44 -24
  367. package/lib/modules/Payment/types.js +107 -216
  368. package/lib/modules/Payment/utils.d.ts +1 -1
  369. package/lib/modules/Payment/utils.js +50 -52
  370. package/lib/modules/Payment/walletpass.d.ts +0 -2
  371. package/lib/modules/Payment/walletpass.js +216 -221
  372. package/lib/modules/Product/index.js +46 -51
  373. package/lib/modules/Product/types.d.ts +29 -7
  374. package/lib/modules/Product/types.js +16 -4
  375. package/lib/modules/Product/utils.js +33 -32
  376. package/lib/modules/ProductList/index.d.ts +17 -13
  377. package/lib/modules/ProductList/index.js +161 -120
  378. package/lib/modules/ProductList/types.d.ts +16 -0
  379. package/lib/modules/ProductList/types.js +31 -9
  380. package/lib/modules/Quotation/index.d.ts +22 -2
  381. package/lib/modules/Quotation/index.js +154 -64
  382. package/lib/modules/Quotation/types.d.ts +19 -0
  383. package/lib/modules/Quotation/types.js +16 -4
  384. package/lib/modules/Resource/index.js +59 -27
  385. package/lib/modules/Resource/types.js +32 -22
  386. package/lib/modules/Resource/utils.js +38 -30
  387. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  388. package/lib/modules/ResourcePlanner/index.js +148 -0
  389. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  390. package/lib/modules/ResourcePlanner/planner.js +933 -0
  391. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  392. package/lib/modules/ResourcePlanner/types.js +17 -0
  393. package/lib/modules/Rules/index.d.ts +8 -10
  394. package/lib/modules/Rules/index.js +960 -1440
  395. package/lib/modules/Rules/types.d.ts +14 -3
  396. package/lib/modules/Rules/types.js +40 -17
  397. package/lib/modules/SalesSummary/index.d.ts +23 -26
  398. package/lib/modules/SalesSummary/index.js +134 -61
  399. package/lib/modules/SalesSummary/types.d.ts +9 -1
  400. package/lib/modules/SalesSummary/types.js +16 -4
  401. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  402. package/lib/modules/SalesSummary/utils.js +814 -233
  403. package/lib/modules/ScanOrderLogger/index.js +79 -59
  404. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  405. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  406. package/lib/modules/ScanOrderLogger/types.js +16 -4
  407. package/lib/modules/Schedule/getDateIsInSchedule.js +169 -338
  408. package/lib/modules/Schedule/index.d.ts +18 -5
  409. package/lib/modules/Schedule/index.js +153 -104
  410. package/lib/modules/Schedule/type.js +16 -4
  411. package/lib/modules/Schedule/types.d.ts +2 -0
  412. package/lib/modules/Schedule/types.js +16 -4
  413. package/lib/modules/Schedule/utils.js +291 -433
  414. package/lib/modules/Step/index.js +52 -40
  415. package/lib/modules/Step/tyeps.js +16 -4
  416. package/lib/modules/Summary/index.js +71 -66
  417. package/lib/modules/Summary/types.js +16 -4
  418. package/lib/modules/Summary/utils.js +418 -791
  419. package/lib/modules/SurchargeList/index.d.ts +18 -0
  420. package/lib/modules/SurchargeList/index.js +109 -0
  421. package/lib/modules/SurchargeList/types.d.ts +15 -0
  422. package/lib/modules/SurchargeList/types.js +17 -0
  423. package/lib/modules/index.d.ts +3 -0
  424. package/lib/modules/index.js +63 -212
  425. package/lib/plugins/app.d.ts +2 -0
  426. package/lib/plugins/app.js +16 -4
  427. package/lib/plugins/index.js +25 -36
  428. package/lib/plugins/request.d.ts +1 -0
  429. package/lib/plugins/request.js +126 -137
  430. package/lib/plugins/shopStore.js +16 -4
  431. package/lib/plugins/user.js +16 -4
  432. package/lib/plugins/window.js +179 -171
  433. package/lib/server/index.d.ts +462 -8
  434. package/lib/server/index.js +4520 -1162
  435. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  436. package/lib/server/modules/floor-plan/index.js +327 -0
  437. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  438. package/lib/server/modules/floor-plan/types.js +34 -0
  439. package/lib/server/modules/index.d.ts +7 -2
  440. package/lib/server/modules/index.js +67 -84
  441. package/lib/server/modules/menu/index.js +122 -146
  442. package/lib/server/modules/menu/types.js +31 -18
  443. package/lib/server/modules/order/index.d.ts +207 -14
  444. package/lib/server/modules/order/index.js +1543 -285
  445. package/lib/server/modules/order/types.d.ts +76 -5
  446. package/lib/server/modules/order/types.js +32 -107
  447. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  448. package/lib/server/modules/order/utils/filterBookings.js +259 -176
  449. package/lib/server/modules/order/utils/filterOrders.js +293 -94
  450. package/lib/server/modules/payment/index.d.ts +28 -0
  451. package/lib/server/modules/payment/index.js +192 -0
  452. package/lib/server/modules/payment/types.d.ts +9 -0
  453. package/lib/server/modules/payment/types.js +17 -0
  454. package/lib/server/modules/products/index.d.ts +105 -14
  455. package/lib/server/modules/products/index.js +850 -475
  456. package/lib/server/modules/products/types.d.ts +34 -1
  457. package/lib/server/modules/products/types.js +34 -41
  458. package/lib/server/modules/quotation/index.d.ts +39 -0
  459. package/lib/server/modules/quotation/index.js +254 -75
  460. package/lib/server/modules/quotation/types.js +31 -21
  461. package/lib/server/modules/resource/index.d.ts +2 -3
  462. package/lib/server/modules/resource/index.js +240 -243
  463. package/lib/server/modules/resource/types.js +33 -42
  464. package/lib/server/modules/schedule/index.d.ts +6 -4
  465. package/lib/server/modules/schedule/index.js +146 -147
  466. package/lib/server/modules/schedule/types.js +21 -14
  467. package/lib/server/modules/schedule/utils.js +163 -334
  468. package/lib/server/test.json +713 -0
  469. package/lib/server/types.d.ts +2 -0
  470. package/lib/server/types.js +16 -4
  471. package/lib/server/utils/index.js +23 -25
  472. package/lib/server/utils/product.js +140 -197
  473. package/lib/server/utils/schedule.js +41 -34
  474. package/lib/server/utils/small-ticket.d.ts +71 -0
  475. package/lib/server/utils/small-ticket.js +904 -0
  476. package/lib/server/utils/time.js +49 -40
  477. package/lib/solution/BaseSales/index.d.ts +378 -0
  478. package/lib/solution/BaseSales/index.js +2533 -0
  479. package/lib/solution/BaseSales/types.d.ts +394 -0
  480. package/lib/solution/BaseSales/types.js +43 -0
  481. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  482. package/lib/solution/BaseSales/utils/cartPromotion.js +1004 -0
  483. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  484. package/lib/solution/BaseSales/utils/parseSalesResponse.js +160 -0
  485. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  486. package/lib/solution/BaseSales/utils/quotationPrice.js +289 -0
  487. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  488. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +256 -0
  489. package/lib/solution/BaseSales/utils.d.ts +40 -0
  490. package/lib/solution/BaseSales/utils.js +244 -0
  491. package/lib/solution/BookingByStep/index.d.ts +1 -1
  492. package/lib/solution/BookingByStep/index.js +1340 -1530
  493. package/lib/solution/BookingByStep/types.js +99 -40
  494. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  495. package/lib/solution/BookingByStep/utils/products.js +52 -42
  496. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  497. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  498. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  499. package/lib/solution/BookingTicket/index.d.ts +393 -24
  500. package/lib/solution/BookingTicket/index.js +1374 -184
  501. package/lib/solution/BookingTicket/types.d.ts +191 -6
  502. package/lib/solution/BookingTicket/types.js +79 -40
  503. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  504. package/lib/solution/BookingTicket/utils/addProductDecision.js +318 -0
  505. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  506. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +125 -0
  507. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  508. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -0
  509. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  510. package/lib/solution/BookingTicket/utils/cartView.js +184 -0
  511. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  512. package/lib/solution/BookingTicket/utils/exampleData.js +0 -0
  513. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  514. package/lib/solution/BookingTicket/utils/orderCustomer.js +58 -0
  515. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  516. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +254 -0
  517. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  518. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +169 -0
  519. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  520. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +97 -64
  521. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  522. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +51 -0
  523. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  524. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -82
  525. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  526. package/lib/solution/BookingTicket/utils/scan/index.js +109 -91
  527. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  528. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  529. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +127 -0
  530. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  531. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +85 -0
  532. package/lib/solution/BuyTickets/index.js +70 -67
  533. package/lib/solution/BuyTickets/types.js +38 -22
  534. package/lib/solution/Checkout/index.d.ts +1 -0
  535. package/lib/solution/Checkout/index.js +1169 -1463
  536. package/lib/solution/Checkout/types.js +61 -91
  537. package/lib/solution/Checkout/utils/index.js +156 -228
  538. package/lib/solution/PlaceOrder/index.js +0 -55
  539. package/lib/solution/RegisterAndLogin/config.js +462 -503
  540. package/lib/solution/RegisterAndLogin/index.js +630 -633
  541. package/lib/solution/RegisterAndLogin/types.js +76 -189
  542. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  543. package/lib/solution/Sales/index.d.ts +50 -5
  544. package/lib/solution/Sales/index.js +498 -238
  545. package/lib/solution/Sales/types.d.ts +26 -2
  546. package/lib/solution/Sales/types.js +33 -27
  547. package/lib/solution/ScanOrder/index.d.ts +27 -21
  548. package/lib/solution/ScanOrder/index.js +936 -864
  549. package/lib/solution/ScanOrder/types.d.ts +33 -11
  550. package/lib/solution/ScanOrder/types.js +34 -34
  551. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  552. package/lib/solution/ScanOrder/utils.js +422 -385
  553. package/lib/solution/ShopDiscount/index.js +233 -235
  554. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  555. package/lib/solution/ShopDiscount/types.js +37 -15
  556. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  557. package/lib/solution/ShopDiscount/utils.js +172 -309
  558. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  559. package/lib/solution/UnifiedBookingSales/index.js +1076 -0
  560. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  561. package/lib/solution/UnifiedBookingSales/types.js +33 -0
  562. package/lib/solution/VenueBooking/index.d.ts +32 -51
  563. package/lib/solution/VenueBooking/index.js +1008 -984
  564. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  565. package/lib/solution/VenueBooking/types.d.ts +1 -3
  566. package/lib/solution/VenueBooking/types.js +39 -20
  567. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  568. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  569. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  570. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  571. package/lib/solution/VenueBooking/utils/slotMerge.js +109 -90
  572. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  573. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  574. package/lib/solution/VenueBooking/utils.js +67 -130
  575. package/lib/solution/index.d.ts +2 -0
  576. package/lib/solution/index.js +41 -102
  577. package/lib/store/createStore.js +29 -32
  578. package/lib/types/index.d.ts +12 -2
  579. package/lib/types/index.js +16 -4
  580. package/lib/utils/task.js +36 -36
  581. package/lib/utils/watch.js +47 -81
  582. package/package.json +2 -4
  583. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  584. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  585. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  586. package/lib/solution/Checkout/appointmentDemo.json +0 -1
  587. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  588. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
@@ -1,27 +1,36 @@
1
- "use strict";
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);
2
18
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
19
+ // src/model/strategy/adapter/itemRule/adapter.ts
20
+ var adapter_exports = {};
21
+ __export(adapter_exports, {
22
+ ItemRuleAdapter: () => ItemRuleAdapter,
23
+ default: () => adapter_default
5
24
  });
6
- exports.default = exports.ItemRuleAdapter = void 0;
7
- var _type = require("./type");
8
- /**
9
- * ItemRule 适配器
10
- *
11
- * 将堂食扫码点餐的商品规则业务数据转换为策略引擎格式,
12
- * 并将引擎结果转换为数量校验和预填购物车的业务结果。
13
- */
14
- class ItemRuleAdapter {
15
- name = 'ItemRuleAdapter';
16
- version = '1.0.0';
25
+ module.exports = __toCommonJS(adapter_exports);
26
+ var import_type = require("./type");
27
+ var ItemRuleAdapter = class {
28
+ constructor() {
29
+ this.name = "ItemRuleAdapter";
30
+ this.version = "1.0.0";
31
+ }
17
32
  prepareContext(businessData) {
18
- const {
19
- pax,
20
- cartItems,
21
- serviceType,
22
- submissionIndex,
23
- custom
24
- } = businessData;
33
+ const { pax, cartItems, serviceType, submissionIndex, custom } = businessData;
25
34
  return {
26
35
  entities: {
27
36
  cartItems,
@@ -29,7 +38,7 @@ class ItemRuleAdapter {
29
38
  pax
30
39
  },
31
40
  attributes: {
32
- serviceType: serviceType || '',
41
+ serviceType: serviceType || "",
33
42
  totalPax: pax.total,
34
43
  adultPax: pax.adult,
35
44
  childPax: pax.child,
@@ -47,61 +56,47 @@ class ItemRuleAdapter {
47
56
  const quantityChecks = [];
48
57
  const prefillItems = [];
49
58
  if (!result.applicable || !businessData) {
50
- return {
51
- quantityChecks,
52
- prefillItems
53
- };
59
+ return { quantityChecks, prefillItems };
54
60
  }
55
61
  for (const action of result.matchedActions) {
56
- if (action.type === _type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK) {
62
+ if (action.type === import_type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK) {
57
63
  const checkResult = this.processQuantityCheck(action, businessData);
58
64
  if (checkResult) {
59
65
  quantityChecks.push(checkResult);
60
66
  }
61
- } else if (action.type === _type.ITEM_RULE_ACTION_TYPES.PREFILL_CART) {
67
+ } else if (action.type === import_type.ITEM_RULE_ACTION_TYPES.PREFILL_CART) {
62
68
  const items = this.processPrefillCart(action, businessData);
63
69
  prefillItems.push(...items);
64
70
  }
65
71
  }
66
- return {
67
- quantityChecks,
68
- prefillItems
69
- };
72
+ return { quantityChecks, prefillItems };
70
73
  }
71
74
  formatConfig(result, businessData) {
72
- return {
73
- result,
74
- businessData
75
- };
75
+ return { result, businessData };
76
76
  }
77
-
78
77
  // ============================================
79
78
  // Quantity Check 处理
80
79
  // ============================================
81
-
82
80
  processQuantityCheck(action, businessData) {
83
81
  const config = action.config;
84
- if (!config) return null;
85
- const {
86
- scope,
87
- quantityRules,
88
- targetType,
89
- targets,
90
- validationMessage
91
- } = config;
82
+ if (!config)
83
+ return null;
84
+ const { scope, quantityRules, targetType, targets, validationMessage } = config;
92
85
  if (!this.shouldEvaluateForScope(scope, businessData.submissionIndex ?? 0)) {
93
86
  return null;
94
87
  }
95
- const actualQuantity = this.calculateActualQuantity(targets, scope, businessData);
96
- const {
97
- passed,
98
- failedRules,
88
+ const actualQuantity = this.calculateActualQuantity(
89
+ targets,
90
+ scope,
91
+ businessData
92
+ );
93
+ const { passed, failedRules, requiredMin, requiredMax, requiredExact, mustInclude } = this.evaluateQuantityRules(quantityRules, actualQuantity, businessData);
94
+ const message = this.formatValidationMessage(
95
+ validationMessage,
99
96
  requiredMin,
100
97
  requiredMax,
101
- requiredExact,
102
- mustInclude
103
- } = this.evaluateQuantityRules(quantityRules, actualQuantity, businessData);
104
- const message = this.formatValidationMessage(validationMessage, requiredMin, requiredMax, requiredExact);
98
+ requiredExact
99
+ );
105
100
  return {
106
101
  ruleId: action.id,
107
102
  passed,
@@ -114,44 +109,42 @@ class ItemRuleAdapter {
114
109
  mustInclude,
115
110
  validationMessage: message,
116
111
  scope,
117
- failedRules: passed ? undefined : failedRules
112
+ failedRules: passed ? void 0 : failedRules
118
113
  };
119
114
  }
120
-
121
115
  /**
122
116
  * 根据 scope 判断当前提交是否需要评估此规则
123
117
  */
124
118
  shouldEvaluateForScope(scope, submissionIndex) {
125
119
  switch (scope) {
126
- case 'each_submission':
120
+ case "each_submission":
127
121
  return true;
128
- case 'first_submission_only':
122
+ case "first_submission_only":
129
123
  return submissionIndex === 0;
130
- case 'subsequent_only':
124
+ case "subsequent_only":
131
125
  return submissionIndex > 0;
132
- case 'cumulative':
126
+ case "cumulative":
133
127
  return true;
134
128
  default:
135
129
  return true;
136
130
  }
137
131
  }
138
-
139
132
  /**
140
133
  * 计算目标商品在购物车中的实际数量
141
134
  *
142
135
  * cumulative scope 时还会加上历史订单数量。
143
136
  */
144
137
  calculateActualQuantity(targets, scope, businessData) {
145
- const targetIds = new Set(targets.map(t => t.product_id));
138
+ const targetIds = new Set(targets.map((t) => t.product_id));
146
139
  let quantity = 0;
147
- const countFromItems = items => {
140
+ const countFromItems = (items) => {
148
141
  for (const item of items) {
149
142
  if (targetIds.has(item.product_id)) {
150
143
  quantity += item.quantity;
151
144
  }
152
145
  }
153
146
  };
154
- if (scope === 'cumulative') {
147
+ if (scope === "cumulative") {
155
148
  if (businessData.historicalItems) {
156
149
  countFromItems(businessData.historicalItems);
157
150
  }
@@ -173,42 +166,38 @@ class ItemRuleAdapter {
173
166
  for (const rule of rules) {
174
167
  const resolvedValue = this.resolveQuantityValue(rule, businessData);
175
168
  switch (rule.comparison) {
176
- case 'minimum':
177
- {
178
- if (requiredMin === undefined || resolvedValue > requiredMin) {
179
- requiredMin = resolvedValue;
180
- }
181
- if (actualQuantity < resolvedValue) {
182
- failedRules.push(rule);
183
- }
184
- break;
169
+ case "minimum": {
170
+ if (requiredMin === void 0 || resolvedValue > requiredMin) {
171
+ requiredMin = resolvedValue;
172
+ }
173
+ if (actualQuantity < resolvedValue) {
174
+ failedRules.push(rule);
175
+ }
176
+ break;
177
+ }
178
+ case "maximum": {
179
+ if (requiredMax === void 0 || resolvedValue < requiredMax) {
180
+ requiredMax = resolvedValue;
185
181
  }
186
- case 'maximum':
187
- {
188
- if (requiredMax === undefined || resolvedValue < requiredMax) {
189
- requiredMax = resolvedValue;
190
- }
191
- if (actualQuantity > resolvedValue) {
192
- failedRules.push(rule);
193
- }
194
- break;
182
+ if (actualQuantity > resolvedValue) {
183
+ failedRules.push(rule);
195
184
  }
196
- case 'exact':
197
- {
198
- requiredExact = resolvedValue;
199
- if (actualQuantity !== resolvedValue) {
200
- failedRules.push(rule);
201
- }
202
- break;
185
+ break;
186
+ }
187
+ case "exact": {
188
+ requiredExact = resolvedValue;
189
+ if (actualQuantity !== resolvedValue) {
190
+ failedRules.push(rule);
203
191
  }
204
- case 'must_include':
205
- {
206
- mustInclude = true;
207
- if (actualQuantity < 1) {
208
- failedRules.push(rule);
209
- }
210
- break;
192
+ break;
193
+ }
194
+ case "must_include": {
195
+ mustInclude = true;
196
+ if (actualQuantity < 1) {
197
+ failedRules.push(rule);
211
198
  }
199
+ break;
200
+ }
212
201
  }
213
202
  }
214
203
  return {
@@ -220,39 +209,36 @@ class ItemRuleAdapter {
220
209
  mustInclude
221
210
  };
222
211
  }
223
-
224
212
  /**
225
213
  * 根据 source 解析出数量规则的实际数值
226
214
  */
227
215
  resolveQuantityValue(rule, businessData) {
228
216
  switch (rule.source) {
229
- case 'total_pax':
217
+ case "total_pax":
230
218
  return businessData.pax.total;
231
- case 'adult_pax':
219
+ case "adult_pax":
232
220
  return businessData.pax.adult;
233
- case 'fixed':
221
+ case "fixed":
234
222
  return rule.value ?? 0;
235
223
  default:
236
224
  return rule.value ?? 0;
237
225
  }
238
226
  }
239
-
240
227
  /**
241
228
  * 格式化校验提示语,替换 {min} {max} 占位符
242
229
  */
243
230
  formatValidationMessage(template, min, max, exact, locale) {
244
- if (!template) return undefined;
245
- let text = typeof template === 'string' ? template : template[locale || 'en'] || Object.values(template)[0] || '';
246
- text = text.replace(/\{min\}/g, String(min ?? ''));
247
- text = text.replace(/\{max\}/g, String(max ?? ''));
248
- text = text.replace(/\{exact\}/g, String(exact ?? ''));
231
+ if (!template)
232
+ return void 0;
233
+ let text = typeof template === "string" ? template : template[locale || "en"] || Object.values(template)[0] || "";
234
+ text = text.replace(/\{min\}/g, String(min ?? ""));
235
+ text = text.replace(/\{max\}/g, String(max ?? ""));
236
+ text = text.replace(/\{exact\}/g, String(exact ?? ""));
249
237
  return text;
250
238
  }
251
-
252
239
  // ============================================
253
240
  // Quantity Limit 提取(仅读取配置,不做校验)
254
241
  // ============================================
255
-
256
242
  /**
257
243
  * 从单个 QUANTITY_CHECK action 中提取数量限制配置。
258
244
  *
@@ -262,14 +248,9 @@ class ItemRuleAdapter {
262
248
  */
263
249
  extractQuantityLimits(action, businessData) {
264
250
  const config = action.config;
265
- if (!config) return null;
266
- const {
267
- scope,
268
- quantityRules,
269
- targetType,
270
- targets,
271
- validationMessage
272
- } = config;
251
+ if (!config)
252
+ return null;
253
+ const { scope, quantityRules, targetType, targets, validationMessage } = config;
273
254
  if (!this.shouldEvaluateForScope(scope, businessData.submissionIndex ?? 0)) {
274
255
  return null;
275
256
  }
@@ -280,34 +261,40 @@ class ItemRuleAdapter {
280
261
  for (const rule of quantityRules) {
281
262
  const resolvedValue = this.resolveQuantityValue(rule, businessData);
282
263
  switch (rule.comparison) {
283
- case 'minimum':
284
- {
285
- if (requiredMin === undefined || resolvedValue > requiredMin) {
286
- requiredMin = resolvedValue;
287
- }
288
- break;
289
- }
290
- case 'maximum':
291
- {
292
- if (requiredMax === undefined || resolvedValue < requiredMax) {
293
- requiredMax = resolvedValue;
294
- }
295
- break;
264
+ case "minimum": {
265
+ if (requiredMin === void 0 || resolvedValue > requiredMin) {
266
+ requiredMin = resolvedValue;
296
267
  }
297
- case 'exact':
298
- {
299
- requiredExact = resolvedValue;
300
- break;
301
- }
302
- case 'must_include':
303
- {
304
- mustInclude = true;
305
- break;
268
+ break;
269
+ }
270
+ case "maximum": {
271
+ if (requiredMax === void 0 || resolvedValue < requiredMax) {
272
+ requiredMax = resolvedValue;
306
273
  }
274
+ break;
275
+ }
276
+ case "exact": {
277
+ requiredExact = resolvedValue;
278
+ break;
279
+ }
280
+ case "must_include": {
281
+ mustInclude = true;
282
+ break;
283
+ }
307
284
  }
308
285
  }
309
- const remainingMax = this.calculateRemainingMax(scope, requiredMax, targets, businessData);
310
- const formattedValidationMessage = this.formatValidationMessage(validationMessage, requiredMin, requiredMax, requiredExact);
286
+ const remainingMax = this.calculateRemainingMax(
287
+ scope,
288
+ requiredMax,
289
+ targets,
290
+ businessData
291
+ );
292
+ const formattedValidationMessage = this.formatValidationMessage(
293
+ validationMessage,
294
+ requiredMin,
295
+ requiredMax,
296
+ requiredExact
297
+ );
311
298
  return {
312
299
  ruleId: action.id,
313
300
  targetType,
@@ -322,7 +309,6 @@ class ItemRuleAdapter {
322
309
  rawValidationMessage: validationMessage
323
310
  };
324
311
  }
325
-
326
312
  /**
327
313
  * 计算当前提交剩余可选的最大数量。
328
314
  *
@@ -331,14 +317,14 @@ class ItemRuleAdapter {
331
317
  * 其余场景返回 undefined,保持向后兼容。
332
318
  */
333
319
  calculateRemainingMax(scope, requiredMax, targets, businessData) {
334
- if (scope !== 'cumulative' || typeof requiredMax !== 'number') {
335
- return undefined;
320
+ if (scope !== "cumulative" || typeof requiredMax !== "number") {
321
+ return void 0;
336
322
  }
337
323
  const historicalItems = businessData.historicalItems;
338
- if (!historicalItems?.length) {
324
+ if (!(historicalItems == null ? void 0 : historicalItems.length)) {
339
325
  return Math.max(0, requiredMax);
340
326
  }
341
- const targetIds = new Set(targets.map(t => t.product_id));
327
+ const targetIds = new Set(targets.map((t) => t.product_id));
342
328
  let historicalQty = 0;
343
329
  for (const item of historicalItems) {
344
330
  if (targetIds.has(item.product_id)) {
@@ -347,18 +333,18 @@ class ItemRuleAdapter {
347
333
  }
348
334
  return Math.max(0, requiredMax - historicalQty);
349
335
  }
350
-
351
336
  // ============================================
352
337
  // Prefill Cart 处理
353
338
  // ============================================
354
-
355
339
  processPrefillCart(action, businessData) {
356
340
  const config = action.config;
357
- if (!config?.products) return [];
341
+ if (!(config == null ? void 0 : config.products))
342
+ return [];
358
343
  const results = [];
359
344
  for (const prefillProduct of config.products) {
360
345
  const quantity = this.resolvePrefillQuantity(prefillProduct.quantityFrom, prefillProduct.quantity, businessData);
361
- if (quantity <= 0) continue;
346
+ if (quantity <= 0)
347
+ continue;
362
348
  results.push({
363
349
  ruleId: action.id,
364
350
  product_id: prefillProduct.product_id,
@@ -368,22 +354,24 @@ class ItemRuleAdapter {
368
354
  }
369
355
  return results;
370
356
  }
371
-
372
357
  /**
373
358
  * 根据 quantityFrom 计算预填数量
374
359
  */
375
360
  resolvePrefillQuantity(quantityFrom, fixedValue, businessData) {
376
361
  switch (quantityFrom) {
377
- case 'total_pax':
362
+ case "total_pax":
378
363
  return businessData.pax.total;
379
- case 'adult_pax':
364
+ case "adult_pax":
380
365
  return businessData.pax.adult;
381
- case 'fixed':
366
+ case "fixed":
382
367
  return fixedValue ?? 0;
383
368
  default:
384
369
  return fixedValue ?? 0;
385
370
  }
386
371
  }
387
- }
388
- exports.ItemRuleAdapter = ItemRuleAdapter;
389
- var _default = exports.default = ItemRuleAdapter;
372
+ };
373
+ var adapter_default = ItemRuleAdapter;
374
+ // Annotate the CommonJS export names for ESM import in node:
375
+ 0 && (module.exports = {
376
+ ItemRuleAdapter
377
+ });
@@ -1,46 +1,56 @@
1
- "use strict";
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);
2
18
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
19
+ // src/model/strategy/adapter/itemRule/evaluator.ts
20
+ var evaluator_exports = {};
21
+ __export(evaluator_exports, {
22
+ ItemRuleEvaluator: () => ItemRuleEvaluator
5
23
  });
6
- exports.ItemRuleEvaluator = void 0;
7
- var _engine = require("../../engine");
8
- var _adapter = require("./adapter");
9
- var _type = require("./type");
10
- /**
11
- * ItemRule 评估器
12
- *
13
- * 组合 StrategyEngine + ItemRuleAdapter,提供面向业务的高层 API。
14
- * 支持批量评估多条 item_rule 策略配置,聚合数量校验和预填购物车结果。
15
- */
16
- class ItemRuleEvaluator {
17
- engine;
18
- adapter;
19
- strategyConfigs = [];
24
+ module.exports = __toCommonJS(evaluator_exports);
25
+ var import_engine = require("../../engine");
26
+ var import_adapter = require("./adapter");
27
+ var import_type = require("./type");
28
+ var ItemRuleEvaluator = class {
20
29
  constructor() {
21
- this.engine = new _engine.StrategyEngine({
30
+ this.strategyConfigs = [];
31
+ this.engine = new import_engine.StrategyEngine({
22
32
  debug: false,
23
33
  enableTrace: false
24
34
  });
25
- this.adapter = new _adapter.ItemRuleAdapter();
35
+ this.adapter = new import_adapter.ItemRuleAdapter();
26
36
  }
27
-
28
37
  /**
29
38
  * 设置策略配置列表
30
39
  * 自动过滤 metadata.type === 'item_rule' 的配置
31
40
  */
32
41
  setStrategyConfigs(configs) {
33
- this.strategyConfigs = configs.filter(c => c.metadata.type === 'item_rule');
42
+ this.strategyConfigs = configs.filter(
43
+ (c) => c.metadata.type === "item_rule"
44
+ );
34
45
  }
35
46
  getStrategyConfigs() {
36
47
  return this.strategyConfigs;
37
48
  }
38
-
39
49
  /**
40
50
  * 完整评估:数量校验 + 预填购物车
41
51
  */
42
52
  evaluate(businessData) {
43
- const configs = businessData.strategyConfigs ? businessData.strategyConfigs.filter(c => c.metadata.type === 'item_rule') : this.strategyConfigs;
53
+ const configs = businessData.strategyConfigs ? businessData.strategyConfigs.filter((c) => c.metadata.type === "item_rule") : this.strategyConfigs;
44
54
  const allQuantityChecks = [];
45
55
  const allPrefillItems = [];
46
56
  const rawResults = [];
@@ -48,14 +58,14 @@ class ItemRuleEvaluator {
48
58
  for (const config of configs) {
49
59
  const evalResult = this.engine.evaluate(config, context);
50
60
  rawResults.push(evalResult);
51
- const {
52
- quantityChecks,
53
- prefillItems
54
- } = this.adapter.transformResult(evalResult, businessData);
61
+ const { quantityChecks, prefillItems } = this.adapter.transformResult(
62
+ evalResult,
63
+ businessData
64
+ );
55
65
  allQuantityChecks.push(...quantityChecks);
56
66
  allPrefillItems.push(...prefillItems);
57
67
  }
58
- const failedChecks = allQuantityChecks.filter(c => !c.passed);
68
+ const failedChecks = allQuantityChecks.filter((c) => !c.passed);
59
69
  return {
60
70
  quantityChecks: allQuantityChecks,
61
71
  prefillItems: allPrefillItems,
@@ -64,7 +74,6 @@ class ItemRuleEvaluator {
64
74
  rawResults
65
75
  };
66
76
  }
67
-
68
77
  /**
69
78
  * 获取当前配置中各商品的数量限制
70
79
  *
@@ -73,14 +82,16 @@ class ItemRuleEvaluator {
73
82
  * 会评估条件是否满足、根据 scope + submissionIndex 过滤。
74
83
  */
75
84
  getQuantityLimits(businessData) {
76
- const configs = businessData.strategyConfigs ? businessData.strategyConfigs.filter(c => c.metadata.type === 'item_rule') : this.strategyConfigs;
85
+ const configs = businessData.strategyConfigs ? businessData.strategyConfigs.filter((c) => c.metadata.type === "item_rule") : this.strategyConfigs;
77
86
  const results = [];
78
87
  const context = this.adapter.prepareContext(businessData);
79
88
  for (const config of configs) {
80
89
  const evalResult = this.engine.evaluate(config, context);
81
- if (!evalResult.applicable) continue;
90
+ if (!evalResult.applicable)
91
+ continue;
82
92
  for (const action of evalResult.matchedActions) {
83
- if (action.type !== _type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK) continue;
93
+ if (action.type !== import_type.ITEM_RULE_ACTION_TYPES.QUANTITY_CHECK)
94
+ continue;
84
95
  const limit = this.adapter.extractQuantityLimits(action, businessData);
85
96
  if (limit) {
86
97
  results.push(limit);
@@ -89,7 +100,6 @@ class ItemRuleEvaluator {
89
100
  }
90
101
  return results;
91
102
  }
92
-
93
103
  /**
94
104
  * 便捷方法:仅做数量校验,返回是否全部通过及失败详情
95
105
  */
@@ -100,7 +110,6 @@ class ItemRuleEvaluator {
100
110
  failures: result.failedChecks
101
111
  };
102
112
  }
103
-
104
113
  /**
105
114
  * 便捷方法:仅获取需要预填到购物车的商品
106
115
  */
@@ -108,5 +117,8 @@ class ItemRuleEvaluator {
108
117
  const result = this.evaluate(businessData);
109
118
  return result.prefillItems;
110
119
  }
111
- }
112
- exports.ItemRuleEvaluator = ItemRuleEvaluator;
120
+ };
121
+ // Annotate the CommonJS export names for ESM import in node:
122
+ 0 && (module.exports = {
123
+ ItemRuleEvaluator
124
+ });