@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,52 +1,48 @@
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/model/strategy/engine.ts
20
+ var engine_exports = {};
21
+ __export(engine_exports, {
22
+ StrategyEngine: () => StrategyEngine,
23
+ createStrategyEngine: () => createStrategyEngine,
24
+ evaluate: () => evaluate
5
25
  });
6
- exports.StrategyEngine = void 0;
7
- exports.createStrategyEngine = createStrategyEngine;
8
- exports.evaluate = evaluate;
9
- var _type = require("./type");
10
- /**
11
- * 策略模型 - 核心实现
12
- *
13
- * 完全业务无关的通用策略引擎
14
- * 支持条件评估、动作匹配、结果返回
15
- */
16
-
17
- // ============================================
18
- // 策略引擎实现
19
- // ============================================
20
-
21
- /**
22
- * 策略引擎
23
- *
24
- * 核心职责:
25
- * 1. 递归评估条件组
26
- * 2. 收集满足条件的 actionIds
27
- * 3. 根据 actionIds 获取 ActionEffect 对象
28
- * 4. 按 priority 排序返回
29
- */
30
- class StrategyEngine {
31
- options;
32
- operatorHandlers;
26
+ module.exports = __toCommonJS(engine_exports);
27
+ var import_type = require("./type");
28
+ var StrategyEngine = class {
33
29
  constructor(options = {}) {
34
30
  this.options = {
35
31
  debug: options.debug ?? false,
36
32
  enableTrace: options.enableTrace ?? false,
37
33
  operatorHandlers: options.operatorHandlers ?? {},
38
- errorHandler: options.errorHandler ?? (error => console.error(error))
34
+ errorHandler: options.errorHandler ?? ((error) => console.error(error))
39
35
  };
40
-
41
- // 初始化内置运算符处理器
42
- this.operatorHandlers = new Map(Object.entries(this.options.operatorHandlers));
36
+ this.operatorHandlers = new Map(
37
+ Object.entries(this.options.operatorHandlers)
38
+ );
43
39
  this.initializeBuiltInOperators();
44
40
  }
45
-
46
41
  /**
47
42
  * 评估策略
48
43
  */
49
44
  evaluate(config, context) {
45
+ var _a, _b;
50
46
  const startTime = Date.now();
51
47
  const trace = {
52
48
  steps: [],
@@ -54,23 +50,23 @@ class StrategyEngine {
54
50
  errors: []
55
51
  };
56
52
  try {
57
- // 验证配置
58
53
  this.validateConfig(config);
59
54
  if (this.options.enableTrace) {
60
55
  trace.steps.push({
61
- step: 'validate_config',
62
- status: 'success',
56
+ step: "validate_config",
57
+ status: "success",
63
58
  duration: Date.now() - startTime
64
59
  });
65
60
  }
66
-
67
- // 递归评估条件组,收集 actionIds
68
61
  const evaluateStart = Date.now();
69
- const evaluationResult = this.evaluateConditionGroup(config.conditions, context);
62
+ const evaluationResult = this.evaluateConditionGroup(
63
+ config.conditions,
64
+ context
65
+ );
70
66
  if (this.options.enableTrace) {
71
67
  trace.steps.push({
72
- step: 'evaluate_conditions',
73
- status: 'success',
68
+ step: "evaluate_conditions",
69
+ status: "success",
74
70
  duration: Date.now() - evaluateStart,
75
71
  details: {
76
72
  satisfied: evaluationResult.satisfied,
@@ -78,51 +74,46 @@ class StrategyEngine {
78
74
  }
79
75
  });
80
76
  }
81
-
82
- // 根据 actionIds 获取 ActionEffect 对象
83
77
  const actionStart = Date.now();
84
- const matchedActions = this.getActionsByIds(evaluationResult.actionIds, config.actions);
78
+ const matchedActions = this.getActionsByIds(
79
+ evaluationResult.actionIds,
80
+ config.actions
81
+ );
85
82
  if (this.options.enableTrace) {
86
83
  trace.steps.push({
87
- step: 'get_actions',
88
- status: 'success',
84
+ step: "get_actions",
85
+ status: "success",
89
86
  duration: Date.now() - actionStart,
90
- details: {
91
- matchedCount: matchedActions.length
92
- }
87
+ details: { matchedCount: matchedActions.length }
93
88
  });
94
89
  }
95
-
96
- // 按 priority 排序(降序)
97
90
  const sortStart = Date.now();
98
91
  const sortedActions = this.sortActionsByPriority(matchedActions);
99
92
  if (this.options.enableTrace) {
100
93
  trace.steps.push({
101
- step: 'sort_actions',
102
- status: 'success',
94
+ step: "sort_actions",
95
+ status: "success",
103
96
  duration: Date.now() - sortStart
104
97
  });
105
98
  }
106
-
107
- // 构建结果 - applicable 基于条件是否满足,而不是 actionIds 数量
108
99
  const applicable = evaluationResult.satisfied;
109
100
  const result = {
110
101
  success: true,
111
102
  applicable,
112
- code: applicable ? _type.SUCCESS_CODES.SUCCESS : _type.NOT_APPLICABLE_CODES.CONDITION_NOT_MET,
113
- message: applicable ? 'Strategy is applicable' : 'Conditions not met',
103
+ code: applicable ? import_type.SUCCESS_CODES.SUCCESS : import_type.NOT_APPLICABLE_CODES.CONDITION_NOT_MET,
104
+ message: applicable ? "Strategy is applicable" : "Conditions not met",
114
105
  matched: {
115
106
  conditions: applicable,
116
107
  actionIds: evaluationResult.actionIds,
117
108
  details: {},
118
- ...(applicable ? {} : {
119
- failedField: evaluationResult.failedRules[0]?.field,
109
+ ...applicable ? {} : {
110
+ failedField: (_a = evaluationResult.failedRules[0]) == null ? void 0 : _a.field,
120
111
  failedRules: evaluationResult.failedRules
121
- })
112
+ }
122
113
  },
123
114
  matchedActions: sortedActions,
124
115
  outputs: {},
125
- config: config
116
+ config
126
117
  };
127
118
  trace.duration = Date.now() - startTime;
128
119
  if (this.options.enableTrace) {
@@ -130,10 +121,10 @@ class StrategyEngine {
130
121
  }
131
122
  return result;
132
123
  } catch (error) {
133
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
124
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
134
125
  if (this.options.enableTrace) {
135
- trace.errors?.push({
136
- step: 'evaluation',
126
+ (_b = trace.errors) == null ? void 0 : _b.push({
127
+ step: "evaluation",
137
128
  error: errorMessage,
138
129
  timestamp: Date.now()
139
130
  });
@@ -143,7 +134,7 @@ class StrategyEngine {
143
134
  return {
144
135
  success: false,
145
136
  applicable: false,
146
- code: _type.ERROR_CODES.EVALUATION_ERROR,
137
+ code: import_type.ERROR_CODES.EVALUATION_ERROR,
147
138
  message: errorMessage,
148
139
  matched: {
149
140
  conditions: false,
@@ -152,12 +143,11 @@ class StrategyEngine {
152
143
  },
153
144
  matchedActions: [],
154
145
  outputs: {},
155
- trace: this.options.enableTrace ? trace : undefined,
156
- config: config
146
+ trace: this.options.enableTrace ? trace : void 0,
147
+ config
157
148
  };
158
149
  }
159
150
  }
160
-
161
151
  /**
162
152
  * 递归评估条件组
163
153
  *
@@ -167,16 +157,12 @@ class StrategyEngine {
167
157
  */
168
158
  evaluateConditionGroup(group, context) {
169
159
  const collectedActionIds = [];
170
-
171
- // 评估当前层的 operator 和 rules(同时收集失败信息)
172
- const {
173
- satisfied,
174
- failedRules
175
- } = this.evaluateGroupLogicDetailed(group, context);
160
+ const { satisfied, failedRules } = this.evaluateGroupLogicDetailed(
161
+ group,
162
+ context
163
+ );
176
164
  if (satisfied) {
177
165
  collectedActionIds.push(...group.actionIds);
178
-
179
- // 递归评估嵌套的 ConditionGroup,收集嵌套层的 actionIds
180
166
  for (const rule of group.rules) {
181
167
  if (this.isConditionGroup(rule)) {
182
168
  const nestedResult = this.evaluateConditionGroup(rule, context);
@@ -190,7 +176,6 @@ class StrategyEngine {
190
176
  failedRules
191
177
  };
192
178
  }
193
-
194
179
  /**
195
180
  * 评估条件组的逻辑运算(带失败规则收集)
196
181
  *
@@ -200,72 +185,46 @@ class StrategyEngine {
200
185
  * - `not`:被取反规则实际通过时,记录该规则
201
186
  */
202
187
  evaluateGroupLogicDetailed(group, context) {
203
- const {
204
- operator,
205
- rules
206
- } = group;
188
+ const { operator, rules } = group;
207
189
  switch (operator) {
208
- case 'and':
209
- {
210
- for (const rule of rules) {
211
- const ruleResult = this.evaluateRuleDetailed(rule, context);
212
- if (!ruleResult.satisfied) {
213
- return {
214
- satisfied: false,
215
- failedRules: ruleResult.failedRules
216
- };
217
- }
218
- }
219
- return {
220
- satisfied: true,
221
- failedRules: []
222
- };
223
- }
224
- case 'or':
225
- {
226
- const aggregated = [];
227
- for (const rule of rules) {
228
- const ruleResult = this.evaluateRuleDetailed(rule, context);
229
- if (ruleResult.satisfied) {
230
- return {
231
- satisfied: true,
232
- failedRules: []
233
- };
234
- }
235
- aggregated.push(...ruleResult.failedRules);
236
- }
237
- return {
238
- satisfied: false,
239
- failedRules: aggregated
240
- };
241
- }
242
- case 'not':
243
- {
244
- if (rules.length === 0) {
190
+ case "and": {
191
+ for (const rule of rules) {
192
+ const ruleResult = this.evaluateRuleDetailed(rule, context);
193
+ if (!ruleResult.satisfied) {
245
194
  return {
246
195
  satisfied: false,
247
- failedRules: []
196
+ failedRules: ruleResult.failedRules
248
197
  };
249
198
  }
250
- const ruleResult = this.evaluateRuleDetailed(rules[0], context);
199
+ }
200
+ return { satisfied: true, failedRules: [] };
201
+ }
202
+ case "or": {
203
+ const aggregated = [];
204
+ for (const rule of rules) {
205
+ const ruleResult = this.evaluateRuleDetailed(rule, context);
251
206
  if (ruleResult.satisfied) {
252
- // 被取反规则实际通过,导致 not 失败
253
- const failed = this.isConditionGroup(rules[0]) ? [] : [this.buildFailedRuleInfo(rules[0], context)];
254
- return {
255
- satisfied: false,
256
- failedRules: failed
257
- };
207
+ return { satisfied: true, failedRules: [] };
258
208
  }
259
- return {
260
- satisfied: true,
261
- failedRules: []
262
- };
209
+ aggregated.push(...ruleResult.failedRules);
210
+ }
211
+ return { satisfied: false, failedRules: aggregated };
212
+ }
213
+ case "not": {
214
+ if (rules.length === 0) {
215
+ return { satisfied: false, failedRules: [] };
263
216
  }
217
+ const ruleResult = this.evaluateRuleDetailed(rules[0], context);
218
+ if (ruleResult.satisfied) {
219
+ const failed = this.isConditionGroup(rules[0]) ? [] : [this.buildFailedRuleInfo(rules[0], context)];
220
+ return { satisfied: false, failedRules: failed };
221
+ }
222
+ return { satisfied: true, failedRules: [] };
223
+ }
264
224
  default:
265
225
  throw new Error(`Unknown operator: ${operator}`);
266
226
  }
267
227
  }
268
-
269
228
  /**
270
229
  * 评估单个规则(带失败规则收集)
271
230
  */
@@ -276,35 +235,27 @@ class StrategyEngine {
276
235
  const conditionRule = rule;
277
236
  const satisfied = this.evaluateAtomicRule(conditionRule, context);
278
237
  if (satisfied) {
279
- return {
280
- satisfied: true,
281
- failedRules: []
282
- };
238
+ return { satisfied: true, failedRules: [] };
283
239
  }
284
240
  return {
285
241
  satisfied: false,
286
242
  failedRules: [this.buildFailedRuleInfo(conditionRule, context)]
287
243
  };
288
244
  }
289
-
290
245
  /**
291
246
  * 评估原子规则(不收集失败信息,仅返回布尔结果)
292
247
  */
293
248
  evaluateAtomicRule(conditionRule, context) {
294
- // Code 模式:使用 eval 执行
295
- if (conditionRule.type === 'code' && conditionRule.code) {
249
+ if (conditionRule.type === "code" && conditionRule.code) {
296
250
  return this.evaluateCodeCondition(conditionRule.code, context);
297
251
  }
298
-
299
- // Operator 模式:标准运算符判断
300
252
  return this.evaluateOperatorCondition(conditionRule, context);
301
253
  }
302
-
303
254
  /**
304
255
  * 构建失败规则信息
305
256
  */
306
257
  buildFailedRuleInfo(conditionRule, context) {
307
- const actualValue = conditionRule.field ? this.getFieldValue(conditionRule.field, context) : undefined;
258
+ const actualValue = conditionRule.field ? this.getFieldValue(conditionRule.field, context) : void 0;
308
259
  return {
309
260
  field: conditionRule.field,
310
261
  operator: conditionRule.operator,
@@ -312,169 +263,144 @@ class StrategyEngine {
312
263
  actualValue
313
264
  };
314
265
  }
315
-
316
266
  /**
317
267
  * 评估代码模式条件
318
268
  */
319
269
  evaluateCodeCondition(code, context) {
320
270
  try {
321
- // 将 context 解构到作用域中,方便代码直接使用
322
- const {
323
- entities,
324
- attributes,
325
- metadata
326
- } = context;
327
-
328
- // 使用 Function 构造器代替 eval,更安全
329
- const evalFunc = new Function('entities', 'attributes', 'metadata', `return (${code})`);
271
+ const { entities, attributes, metadata } = context;
272
+ const evalFunc = new Function(
273
+ "entities",
274
+ "attributes",
275
+ "metadata",
276
+ `return (${code})`
277
+ );
330
278
  const result = evalFunc(entities, attributes, metadata);
331
279
  return Boolean(result);
332
280
  } catch (error) {
333
281
  if (this.options.debug) {
334
- console.error('Code evaluation error:', error);
282
+ console.error("Code evaluation error:", error);
335
283
  }
336
284
  return false;
337
285
  }
338
286
  }
339
-
340
287
  /**
341
288
  * 评估运算符模式条件
342
289
  */
343
290
  evaluateOperatorCondition(rule, context) {
344
- const {
345
- field,
346
- operator,
347
- value
348
- } = rule;
291
+ const { field, operator, value } = rule;
349
292
  if (!field || !operator) {
350
293
  return false;
351
294
  }
352
-
353
- // 从 context.attributes 中获取字段值
354
295
  const fieldValue = this.getFieldValue(field, context);
355
-
356
- // 使用运算符处理器
357
296
  const handler = this.operatorHandlers.get(operator);
358
297
  if (handler) {
359
298
  return handler(fieldValue, value, rule);
360
299
  }
361
-
362
- // 回退到内置运算符
363
300
  return this.evaluateBuiltInOperator(fieldValue, operator, value);
364
301
  }
365
-
366
302
  /**
367
303
  * 获取字段值
368
304
  */
369
305
  getFieldValue(field, context) {
370
- // 支持点号路径,如 "order.total"
371
- const path = field.split('.');
306
+ const path = field.split(".");
372
307
  let value = context.attributes;
373
308
  for (const key of path) {
374
- if (value && typeof value === 'object' && key in value) {
309
+ if (value && typeof value === "object" && key in value) {
375
310
  value = value[key];
376
311
  } else {
377
- return undefined;
312
+ return void 0;
378
313
  }
379
314
  }
380
315
  return value;
381
316
  }
382
-
383
317
  /**
384
318
  * 评估内置运算符
385
319
  */
386
320
  evaluateBuiltInOperator(fieldValue, operator, compareValue) {
387
321
  switch (operator) {
388
- // 比较运算符
389
- case '=':
390
- case '==':
322
+ case "=":
323
+ case "==":
391
324
  return fieldValue == compareValue;
392
- case '!=':
325
+ case "!=":
393
326
  return fieldValue != compareValue;
394
- case '>':
327
+ case ">":
395
328
  return fieldValue > compareValue;
396
- case '>=':
329
+ case ">=":
397
330
  return fieldValue >= compareValue;
398
- case '<':
331
+ case "<":
399
332
  return fieldValue < compareValue;
400
- case '<=':
333
+ case "<=":
401
334
  return fieldValue <= compareValue;
402
-
403
- // 集合运算符
404
- case 'in':
335
+ case "in":
405
336
  return Array.isArray(compareValue) && compareValue.includes(fieldValue);
406
- case 'not_in':
337
+ case "not_in":
407
338
  return Array.isArray(compareValue) && !compareValue.includes(fieldValue);
408
- case 'contains':
339
+ case "contains":
409
340
  if (Array.isArray(fieldValue)) {
410
341
  return fieldValue.includes(compareValue);
411
342
  }
412
- if (typeof fieldValue === 'string') {
343
+ if (typeof fieldValue === "string") {
413
344
  return fieldValue.includes(compareValue);
414
345
  }
415
346
  return false;
416
- case 'not_contains':
347
+ case "not_contains":
417
348
  if (Array.isArray(fieldValue)) {
418
349
  return !fieldValue.includes(compareValue);
419
350
  }
420
- if (typeof fieldValue === 'string') {
351
+ if (typeof fieldValue === "string") {
421
352
  return !fieldValue.includes(compareValue);
422
353
  }
423
354
  return true;
424
-
425
- // 字符串运算符
426
- case 'starts_with':
427
- return typeof fieldValue === 'string' && fieldValue.startsWith(compareValue);
428
- case 'ends_with':
429
- return typeof fieldValue === 'string' && fieldValue.endsWith(compareValue);
430
- case 'regex':
431
- return typeof fieldValue === 'string' && new RegExp(compareValue).test(fieldValue);
432
-
433
- // 范围运算符
434
- case 'between':
435
- if (!Array.isArray(compareValue) || compareValue.length !== 2) return false;
355
+ case "starts_with":
356
+ return typeof fieldValue === "string" && fieldValue.startsWith(compareValue);
357
+ case "ends_with":
358
+ return typeof fieldValue === "string" && fieldValue.endsWith(compareValue);
359
+ case "regex":
360
+ return typeof fieldValue === "string" && new RegExp(compareValue).test(fieldValue);
361
+ case "between":
362
+ if (!Array.isArray(compareValue) || compareValue.length !== 2)
363
+ return false;
436
364
  return fieldValue >= compareValue[0] && fieldValue <= compareValue[1];
437
-
438
- // 逻辑运算符
439
- case 'is_null':
440
- return fieldValue === null || fieldValue === undefined;
441
- case 'is_not_null':
442
- return fieldValue !== null && fieldValue !== undefined;
443
- case 'is_empty':
444
- if (Array.isArray(fieldValue)) return fieldValue.length === 0;
445
- if (typeof fieldValue === 'string') return fieldValue.length === 0;
446
- if (typeof fieldValue === 'object') return Object.keys(fieldValue).length === 0;
365
+ case "is_null":
366
+ return fieldValue === null || fieldValue === void 0;
367
+ case "is_not_null":
368
+ return fieldValue !== null && fieldValue !== void 0;
369
+ case "is_empty":
370
+ if (Array.isArray(fieldValue))
371
+ return fieldValue.length === 0;
372
+ if (typeof fieldValue === "string")
373
+ return fieldValue.length === 0;
374
+ if (typeof fieldValue === "object")
375
+ return Object.keys(fieldValue).length === 0;
447
376
  return !fieldValue;
448
- case 'is_not_empty':
449
- if (Array.isArray(fieldValue)) return fieldValue.length > 0;
450
- if (typeof fieldValue === 'string') return fieldValue.length > 0;
451
- if (typeof fieldValue === 'object') return Object.keys(fieldValue).length > 0;
377
+ case "is_not_empty":
378
+ if (Array.isArray(fieldValue))
379
+ return fieldValue.length > 0;
380
+ if (typeof fieldValue === "string")
381
+ return fieldValue.length > 0;
382
+ if (typeof fieldValue === "object")
383
+ return Object.keys(fieldValue).length > 0;
452
384
  return Boolean(fieldValue);
453
-
454
- // 商品匹配运算符
455
- case 'product_match':
385
+ case "product_match":
456
386
  return this.evaluateProductMatch(fieldValue, compareValue);
457
-
458
- // 对象包含运算符(兼容旧配置)
459
- case 'object_in':
387
+ case "object_in":
460
388
  return this.evaluateProductMatch(fieldValue, compareValue);
461
389
  default:
462
390
  throw new Error(`Unsupported operator: ${operator}`);
463
391
  }
464
392
  }
465
-
466
393
  /**
467
394
  * 根据 actionIds 获取 ActionEffect 对象
468
395
  */
469
396
  getActionsByIds(actionIds, actions) {
470
397
  const matchedActions = [];
471
- const actionMap = new Map(actions.map(action => [action.id, action]));
398
+ const actionMap = new Map(actions.map((action) => [action.id, action]));
472
399
  for (const id of actionIds) {
473
400
  const action = actionMap.get(id);
474
401
  if (action) {
475
402
  matchedActions.push(action);
476
403
  } else {
477
- // 找不到的 ID 记录警告
478
404
  if (this.options.debug) {
479
405
  console.warn(`Action with id "${id}" not found in actions array`);
480
406
  }
@@ -482,7 +408,6 @@ class StrategyEngine {
482
408
  }
483
409
  return matchedActions;
484
410
  }
485
-
486
411
  /**
487
412
  * 按 priority 排序(降序)
488
413
  */
@@ -490,43 +415,37 @@ class StrategyEngine {
490
415
  return [...actions].sort((a, b) => {
491
416
  const priorityA = a.priority ?? 0;
492
417
  const priorityB = b.priority ?? 0;
493
- return priorityB - priorityA; // 降序
418
+ return priorityB - priorityA;
494
419
  });
495
420
  }
496
-
497
421
  /**
498
422
  * 判断是否为条件组
499
423
  */
500
424
  isConditionGroup(rule) {
501
- return 'operator' in rule && 'rules' in rule && Array.isArray(rule.rules);
425
+ return "operator" in rule && "rules" in rule && Array.isArray(rule.rules);
502
426
  }
503
-
504
427
  /**
505
428
  * 验证配置
506
429
  */
507
430
  validateConfig(config) {
508
431
  if (!config) {
509
- throw new Error('Strategy config is required');
432
+ throw new Error("Strategy config is required");
510
433
  }
511
434
  if (!config.metadata || !config.metadata.id) {
512
- throw new Error('Strategy metadata.id is required');
435
+ throw new Error("Strategy metadata.id is required");
513
436
  }
514
437
  if (!config.conditions) {
515
- throw new Error('Strategy conditions is required');
438
+ throw new Error("Strategy conditions is required");
516
439
  }
517
440
  if (!Array.isArray(config.actions)) {
518
- throw new Error('Strategy actions must be an array');
441
+ throw new Error("Strategy actions must be an array");
519
442
  }
520
443
  }
521
-
522
444
  /**
523
445
  * 初始化内置运算符处理器
524
446
  */
525
447
  initializeBuiltInOperators() {
526
- // 内置运算符已经在 evaluateBuiltInOperator 中实现
527
- // 这里可以添加自定义的运算符处理器
528
448
  }
529
-
530
449
  /**
531
450
  * 评估商品匹配运算符
532
451
  *
@@ -540,49 +459,35 @@ class StrategyEngine {
540
459
  * @returns 是否匹配
541
460
  */
542
461
  evaluateProductMatch(fieldValue, configValue) {
543
- // 确保 configValue 是数组
544
462
  if (!Array.isArray(configValue)) {
545
463
  return false;
546
464
  }
547
-
548
- // 确保 fieldValue 是有效的商品对象
549
- if (!fieldValue || typeof fieldValue !== 'object' || typeof fieldValue.product_id !== 'number') {
465
+ if (!fieldValue || typeof fieldValue !== "object" || typeof fieldValue.product_id !== "number") {
550
466
  return false;
551
467
  }
552
468
  const actualProductId = fieldValue.product_id;
553
469
  const actualVariantId = fieldValue.product_variant_id ?? 0;
554
-
555
- // 遍历配置的商品列表,检查是否有匹配
556
- return configValue.some(item => {
557
- // 验证配置项格式
558
- if (!item || typeof item.product_id !== 'number') {
470
+ return configValue.some((item) => {
471
+ if (!item || typeof item.product_id !== "number") {
559
472
  return false;
560
473
  }
561
474
  const configProductId = item.product_id;
562
475
  const configVariantId = item.product_variant_id ?? 0;
563
-
564
- // 首先检查 product_id 是否匹配
565
476
  if (configProductId !== actualProductId) {
566
477
  return false;
567
478
  }
568
-
569
- // 如果配置的 product_variant_id = 0,只需要 product_id 匹配
570
479
  if (configVariantId === 0) {
571
480
  return true;
572
481
  }
573
-
574
- // 否则需要 product_variant_id 精确匹配
575
482
  return configVariantId === actualVariantId;
576
483
  });
577
484
  }
578
-
579
485
  /**
580
486
  * 注册自定义运算符
581
487
  */
582
488
  registerOperator(operator, handler) {
583
489
  this.operatorHandlers.set(operator, handler);
584
490
  }
585
-
586
491
  /**
587
492
  * 获取调试信息
588
493
  */
@@ -593,24 +498,17 @@ class StrategyEngine {
593
498
  registeredOperators: Array.from(this.operatorHandlers.keys())
594
499
  };
595
500
  }
596
- }
597
-
598
- // ============================================
599
- // 导出工具函数
600
- // ============================================
601
-
602
- /**
603
- * 创建策略引擎实例
604
- */
605
- exports.StrategyEngine = StrategyEngine;
501
+ };
606
502
  function createStrategyEngine(options) {
607
503
  return new StrategyEngine(options);
608
504
  }
609
-
610
- /**
611
- * 快速评估(使用默认引擎配置)
612
- */
613
505
  function evaluate(config, context) {
614
506
  const engine = new StrategyEngine();
615
507
  return engine.evaluate(config, context);
616
- }
508
+ }
509
+ // Annotate the CommonJS export names for ESM import in node:
510
+ 0 && (module.exports = {
511
+ StrategyEngine,
512
+ createStrategyEngine,
513
+ evaluate
514
+ });