@pisell/pisellos 2.2.282 → 2.2.284

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 (285) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/strategy-example.js +5 -19
  5. package/dist/modules/Cart/index.js +0 -3
  6. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  7. package/dist/modules/Date/index.js +1 -5
  8. package/dist/modules/Discount/index.js +2 -4
  9. package/dist/modules/OpenData/index.js +0 -2
  10. package/dist/modules/Order/index.d.ts +2 -2
  11. package/dist/modules/Order/index.js +75 -91
  12. package/dist/modules/Order/types.d.ts +3 -1
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Rules/index.js +1 -4
  15. package/dist/modules/Schedule/index.js +0 -1
  16. package/dist/modules/Schedule/utils.js +0 -1
  17. package/dist/modules/Step/index.js +0 -1
  18. package/dist/modules/Summary/utils.d.ts +1 -1
  19. package/dist/plugins/request.js +1 -4
  20. package/dist/plugins/window.js +2 -6
  21. package/dist/server/index.js +97 -129
  22. package/dist/server/modules/menu/index.js +32 -41
  23. package/dist/server/modules/order/index.js +2 -4
  24. package/dist/server/modules/products/index.js +24 -42
  25. package/dist/server/modules/quotation/index.js +29 -38
  26. package/dist/server/modules/resource/index.js +3 -4
  27. package/dist/server/modules/schedule/index.js +27 -35
  28. package/dist/server/utils/product.js +0 -1
  29. package/dist/solution/BaseSales/index.js +100 -72
  30. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  31. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  32. package/dist/solution/BookingByStep/index.d.ts +1 -1
  33. package/dist/solution/BookingByStep/index.js +7 -59
  34. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  35. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  36. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  37. package/dist/solution/BookingTicket/index.js +8 -4
  38. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  39. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  40. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  41. package/dist/solution/BuyTickets/index.js +9 -12
  42. package/dist/solution/Checkout/index.js +177 -252
  43. package/dist/solution/Checkout/utils/index.js +4 -16
  44. package/dist/solution/RegisterAndLogin/index.js +30 -76
  45. package/dist/solution/ScanOrder/index.js +50 -60
  46. package/dist/solution/ShopDiscount/index.js +2 -7
  47. package/dist/solution/VenueBooking/index.js +45 -55
  48. package/dist/utils/task.js +15 -18
  49. package/dist/utils/watch.js +0 -1
  50. package/lib/apis/picoding.js +2 -0
  51. package/lib/core/index.js +131 -131
  52. package/lib/effects/index.js +46 -57
  53. package/lib/index.js +82 -49
  54. package/lib/model/index.js +14 -21
  55. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  56. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  57. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  58. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  59. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  60. package/lib/model/strategy/adapter/index.js +100 -64
  61. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  62. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  63. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  64. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  65. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  66. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  67. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  68. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  69. package/lib/model/strategy/adapter/promotion/index.js +1 -51
  70. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  71. package/lib/model/strategy/adapter/type.js +4 -16
  72. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  73. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  74. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  75. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  76. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  77. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  78. package/lib/model/strategy/engine.js +270 -168
  79. package/lib/model/strategy/index.js +49 -34
  80. package/lib/model/strategy/strategy-example.js +243 -239
  81. package/lib/model/strategy/type.js +100 -40
  82. package/lib/modules/Account/index.js +39 -53
  83. package/lib/modules/Account/types.js +20 -33
  84. package/lib/modules/AccountList/index.js +116 -154
  85. package/lib/modules/AccountList/types.js +30 -31
  86. package/lib/modules/AccountList/utils.js +18 -30
  87. package/lib/modules/BaseModule.js +23 -42
  88. package/lib/modules/BookingContext/index.js +158 -136
  89. package/lib/modules/BookingContext/types.js +46 -32
  90. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  91. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  92. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  93. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  94. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  95. package/lib/modules/BookingContext/utils/index.js +124 -41
  96. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  97. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  98. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  99. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  100. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  101. package/lib/modules/BookingContext/utils/resources.js +209 -167
  102. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  103. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  104. package/lib/modules/Cart/index.js +170 -124
  105. package/lib/modules/Cart/types.js +46 -51
  106. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  107. package/lib/modules/Cart/utils/cartDate.js +56 -61
  108. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  109. package/lib/modules/Cart/utils/cartNote.js +27 -32
  110. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  111. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  112. package/lib/modules/Cart/utils/cartResource.js +70 -78
  113. package/lib/modules/Cart/utils/changePrice.js +22 -50
  114. package/lib/modules/Cart/utils/index.js +106 -48
  115. package/lib/modules/Customer/constants.js +13 -34
  116. package/lib/modules/Customer/index.js +235 -172
  117. package/lib/modules/Customer/types.js +38 -35
  118. package/lib/modules/Date/index.js +116 -115
  119. package/lib/modules/Date/types.js +16 -28
  120. package/lib/modules/Date/utils.js +174 -123
  121. package/lib/modules/Discount/index.js +122 -127
  122. package/lib/modules/Discount/types.js +9 -31
  123. package/lib/modules/Guests/index.js +30 -56
  124. package/lib/modules/Guests/types.js +23 -33
  125. package/lib/modules/Holder/index.js +209 -189
  126. package/lib/modules/Holder/types.js +4 -16
  127. package/lib/modules/Holder/utils.js +20 -49
  128. package/lib/modules/OpenData/index.js +70 -76
  129. package/lib/modules/OpenData/types.js +4 -16
  130. package/lib/modules/OpenData/utils.js +44 -78
  131. package/lib/modules/Order/index.d.ts +2 -2
  132. package/lib/modules/Order/index.js +1733 -2121
  133. package/lib/modules/Order/payment-utils.js +77 -120
  134. package/lib/modules/Order/types.d.ts +3 -1
  135. package/lib/modules/Order/types.js +87 -35
  136. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  137. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  138. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  139. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  140. package/lib/modules/Order/utils.js +814 -647
  141. package/lib/modules/Payment/cash.js +20 -33
  142. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  143. package/lib/modules/Payment/eftpos.js +16 -30
  144. package/lib/modules/Payment/index.js +532 -399
  145. package/lib/modules/Payment/mx51.js +1 -0
  146. package/lib/modules/Payment/types.js +230 -108
  147. package/lib/modules/Payment/utils.js +52 -51
  148. package/lib/modules/Payment/walletpass.js +485 -660
  149. package/lib/modules/Product/index.js +51 -46
  150. package/lib/modules/Product/types.js +4 -16
  151. package/lib/modules/Product/utils.js +32 -33
  152. package/lib/modules/ProductList/index.js +113 -123
  153. package/lib/modules/ProductList/types.js +9 -31
  154. package/lib/modules/Quotation/index.js +66 -100
  155. package/lib/modules/Quotation/types.js +4 -16
  156. package/lib/modules/Resource/index.js +27 -59
  157. package/lib/modules/Resource/types.js +22 -32
  158. package/lib/modules/Resource/utils.js +30 -38
  159. package/lib/modules/ResourcePlanner/index.js +60 -61
  160. package/lib/modules/ResourcePlanner/planner.js +346 -384
  161. package/lib/modules/ResourcePlanner/types.js +4 -16
  162. package/lib/modules/Rules/index.js +1218 -959
  163. package/lib/modules/Rules/types.js +17 -40
  164. package/lib/modules/SalesSummary/index.js +85 -90
  165. package/lib/modules/SalesSummary/types.js +4 -16
  166. package/lib/modules/SalesSummary/utils.js +355 -430
  167. package/lib/modules/ScanOrderLogger/index.js +59 -79
  168. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  169. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  170. package/lib/modules/ScanOrderLogger/types.js +4 -16
  171. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  172. package/lib/modules/Schedule/index.js +100 -114
  173. package/lib/modules/Schedule/type.js +4 -16
  174. package/lib/modules/Schedule/types.js +4 -16
  175. package/lib/modules/Schedule/utils.js +433 -291
  176. package/lib/modules/Step/index.js +40 -52
  177. package/lib/modules/Step/tyeps.js +4 -16
  178. package/lib/modules/Summary/index.js +66 -71
  179. package/lib/modules/Summary/types.js +4 -16
  180. package/lib/modules/Summary/utils.d.ts +1 -1
  181. package/lib/modules/Summary/utils.js +773 -418
  182. package/lib/modules/SurchargeList/index.js +46 -60
  183. package/lib/modules/SurchargeList/types.js +4 -16
  184. package/lib/modules/index.js +245 -63
  185. package/lib/plugins/app.js +4 -16
  186. package/lib/plugins/index.js +36 -25
  187. package/lib/plugins/request.js +137 -126
  188. package/lib/plugins/shopStore.js +4 -16
  189. package/lib/plugins/user.js +4 -16
  190. package/lib/plugins/window.js +171 -179
  191. package/lib/server/index.js +3027 -2655
  192. package/lib/server/modules/floor-plan/index.js +102 -123
  193. package/lib/server/modules/floor-plan/types.js +15 -30
  194. package/lib/server/modules/index.js +106 -68
  195. package/lib/server/modules/menu/index.js +146 -122
  196. package/lib/server/modules/menu/types.js +18 -31
  197. package/lib/server/modules/order/index.js +758 -956
  198. package/lib/server/modules/order/types.js +122 -33
  199. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  200. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  201. package/lib/server/modules/payment/index.js +59 -83
  202. package/lib/server/modules/payment/types.js +4 -16
  203. package/lib/server/modules/products/index.js +575 -459
  204. package/lib/server/modules/products/types.js +44 -34
  205. package/lib/server/modules/quotation/index.js +137 -172
  206. package/lib/server/modules/quotation/types.js +21 -31
  207. package/lib/server/modules/resource/index.js +213 -184
  208. package/lib/server/modules/resource/types.js +42 -33
  209. package/lib/server/modules/schedule/index.js +135 -123
  210. package/lib/server/modules/schedule/types.js +14 -21
  211. package/lib/server/modules/schedule/utils.js +334 -163
  212. package/lib/server/types.js +4 -16
  213. package/lib/server/utils/index.js +25 -23
  214. package/lib/server/utils/product.js +196 -139
  215. package/lib/server/utils/schedule.js +34 -41
  216. package/lib/server/utils/small-ticket.js +479 -456
  217. package/lib/server/utils/time.js +40 -49
  218. package/lib/solution/BaseSales/index.js +1209 -1412
  219. package/lib/solution/BaseSales/types.js +42 -38
  220. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  221. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  222. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  223. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  224. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  225. package/lib/solution/BaseSales/utils.js +158 -143
  226. package/lib/solution/BookingByStep/index.d.ts +1 -1
  227. package/lib/solution/BookingByStep/index.js +1527 -1340
  228. package/lib/solution/BookingByStep/types.js +40 -99
  229. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  230. package/lib/solution/BookingByStep/utils/products.js +42 -52
  231. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  232. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  233. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  234. package/lib/solution/BookingTicket/index.js +598 -514
  235. package/lib/solution/BookingTicket/types.js +99 -77
  236. package/lib/solution/BookingTicket/utils/addProductDecision.js +225 -187
  237. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  238. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  239. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  240. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  241. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  242. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  243. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  244. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  245. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  246. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  247. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  248. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  249. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  250. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  251. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  252. package/lib/solution/BuyTickets/index.js +67 -70
  253. package/lib/solution/BuyTickets/types.js +22 -38
  254. package/lib/solution/Checkout/index.js +1451 -1158
  255. package/lib/solution/Checkout/types.js +91 -61
  256. package/lib/solution/Checkout/utils/index.js +228 -156
  257. package/lib/solution/PlaceOrder/index.js +55 -0
  258. package/lib/solution/RegisterAndLogin/config.js +493 -460
  259. package/lib/solution/RegisterAndLogin/index.js +633 -630
  260. package/lib/solution/RegisterAndLogin/types.js +189 -76
  261. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  262. package/lib/solution/Sales/index.js +328 -324
  263. package/lib/solution/Sales/types.js +27 -33
  264. package/lib/solution/ScanOrder/index.js +832 -864
  265. package/lib/solution/ScanOrder/types.js +33 -34
  266. package/lib/solution/ScanOrder/utils.js +409 -374
  267. package/lib/solution/ShopDiscount/index.js +226 -232
  268. package/lib/solution/ShopDiscount/types.js +15 -37
  269. package/lib/solution/ShopDiscount/utils.js +300 -172
  270. package/lib/solution/UnifiedBookingSales/index.js +437 -487
  271. package/lib/solution/UnifiedBookingSales/types.js +12 -31
  272. package/lib/solution/VenueBooking/index.js +811 -879
  273. package/lib/solution/VenueBooking/types.js +19 -39
  274. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  275. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  276. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  277. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  278. package/lib/solution/VenueBooking/utils.js +130 -67
  279. package/lib/solution/index.js +124 -41
  280. package/lib/store/createStore.js +32 -29
  281. package/lib/types/index.js +4 -16
  282. package/lib/utils/payment-number.js +26 -46
  283. package/lib/utils/task.js +36 -36
  284. package/lib/utils/watch.js +81 -47
  285. package/package.json +2 -1
@@ -1,44 +1,24 @@
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);
1
+ "use strict";
18
2
 
19
- // src/solution/VenueBooking/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- DEFAULT_SLOT_CONFIG: () => DEFAULT_SLOT_CONFIG,
23
- VenueBookingHooks: () => VenueBookingHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(types_exports);
26
- var VenueBookingHooks = /* @__PURE__ */ ((VenueBookingHooks2) => {
27
- VenueBookingHooks2["onInited"] = "venueBooking:onInited";
28
- VenueBookingHooks2["onDestroy"] = "venueBooking:onDestroy";
29
- VenueBookingHooks2["onRetryInit"] = "venueBooking:onRetryInit";
30
- VenueBookingHooks2["onRefresh"] = "venueBooking:onRefresh";
31
- VenueBookingHooks2["onCartValidationChanged"] = "venueBooking:onCartValidationChanged";
32
- return VenueBookingHooks2;
33
- })(VenueBookingHooks || {});
34
- var DEFAULT_SLOT_CONFIG = {
6
+ exports.VenueBookingHooks = exports.DEFAULT_SLOT_CONFIG = void 0;
7
+ let VenueBookingHooks = exports.VenueBookingHooks = /*#__PURE__*/function (VenueBookingHooks) {
8
+ VenueBookingHooks["onInited"] = "venueBooking:onInited";
9
+ VenueBookingHooks["onDestroy"] = "venueBooking:onDestroy";
10
+ VenueBookingHooks["onRetryInit"] = "venueBooking:onRetryInit";
11
+ VenueBookingHooks["onRefresh"] = "venueBooking:onRefresh";
12
+ VenueBookingHooks["onCartValidationChanged"] = "venueBooking:onCartValidationChanged";
13
+ return VenueBookingHooks;
14
+ }({}); // ─── 场地预定核心类型 ───
15
+ const DEFAULT_SLOT_CONFIG = exports.DEFAULT_SLOT_CONFIG = {
35
16
  slotDurationMinutes: 30,
36
- businessStartTime: "09:00",
37
- businessEndTime: "23:00",
17
+ businessStartTime: '09:00',
18
+ businessEndTime: '23:00',
38
19
  fewLeftThreshold: 0.8
39
20
  };
40
- // Annotate the CommonJS export names for ESM import in node:
41
- 0 && (module.exports = {
42
- DEFAULT_SLOT_CONFIG,
43
- VenueBookingHooks
44
- });
21
+
22
+ // ─── 时段选择 & 合并 ───
23
+
24
+ // ─── Store 状态 ───
@@ -1,39 +1,12 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
28
2
 
29
- // src/solution/VenueBooking/utils/dateSummary.ts
30
- var dateSummary_exports = {};
31
- __export(dateSummary_exports, {
32
- buildDateRangeSummary: () => buildDateRangeSummary
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
34
- module.exports = __toCommonJS(dateSummary_exports);
35
- var import_dayjs = __toESM(require("dayjs"));
36
- var import_timeSlot = require("./timeSlot");
6
+ exports.buildDateRangeSummary = buildDateRangeSummary;
7
+ var _dayjs = _interopRequireDefault(require("dayjs"));
8
+ var _timeSlot = require("./timeSlot");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
10
  function buildDateRangeSummary(params) {
38
11
  const {
39
12
  startDate,
@@ -45,19 +18,22 @@ function buildDateRangeSummary(params) {
45
18
  resolveConfig
46
19
  } = params;
47
20
  const result = [];
48
- const productIds = quotationModule ? [...new Set([...resourceProductMap.values()].flat().map((m) => m.productId))] : [];
49
- let cursor = (0, import_dayjs.default)(startDate);
50
- const end = (0, import_dayjs.default)(endDate);
21
+ const productIds = quotationModule ? [...new Set([...resourceProductMap.values()].flat().map(m => m.productId))] : [];
22
+ let cursor = (0, _dayjs.default)(startDate);
23
+ const end = (0, _dayjs.default)(endDate);
51
24
  while (!cursor.isAfter(end)) {
52
- const date = cursor.format("YYYY-MM-DD");
53
- const effectiveConfig = (resolveConfig == null ? void 0 : resolveConfig(date)) || config;
25
+ const date = cursor.format('YYYY-MM-DD');
26
+ const effectiveConfig = resolveConfig?.(date) || config;
54
27
  let quotationPriceMap;
55
28
  if (quotationModule && productIds.length) {
56
- const timeLabels = (0, import_timeSlot.generateTimeLabels)(effectiveConfig);
57
- const timePoints = timeLabels.map((label) => `${date} ${label}`);
58
- quotationPriceMap = quotationModule.buildProductPriceMap({ productIds, timePoints });
29
+ const timeLabels = (0, _timeSlot.generateTimeLabels)(effectiveConfig);
30
+ const timePoints = timeLabels.map(label => `${date} ${label}`);
31
+ quotationPriceMap = quotationModule.buildProductPriceMap({
32
+ productIds,
33
+ timePoints
34
+ });
59
35
  }
60
- const grid = (0, import_timeSlot.buildTimeSlotGrid)({
36
+ const grid = (0, _timeSlot.buildTimeSlotGrid)({
61
37
  date,
62
38
  config: effectiveConfig,
63
39
  rawResources,
@@ -69,10 +45,9 @@ function buildDateRangeSummary(params) {
69
45
  let lowestPrice = null;
70
46
  for (const resource of grid.resources) {
71
47
  for (const slot of resource.slots) {
72
- if (slot.status === "past" || slot.status === "unavailable")
73
- continue;
48
+ if (slot.status === 'past' || slot.status === 'unavailable') continue;
74
49
  totalSlots++;
75
- if (slot.status === "available" || slot.status === "partially_occupied") {
50
+ if (slot.status === 'available' || slot.status === 'partially_occupied') {
76
51
  availableSlots++;
77
52
  if (slot.price !== null) {
78
53
  const priceNum = Number(slot.price);
@@ -85,13 +60,13 @@ function buildDateRangeSummary(params) {
85
60
  }
86
61
  let status;
87
62
  if (totalSlots === 0) {
88
- status = "unavailable";
63
+ status = 'unavailable';
89
64
  } else if (availableSlots === 0) {
90
- status = "sold_out";
65
+ status = 'sold_out';
91
66
  } else if ((totalSlots - availableSlots) / totalSlots >= effectiveConfig.fewLeftThreshold) {
92
- status = "few_left";
67
+ status = 'few_left';
93
68
  } else {
94
- status = "available";
69
+ status = 'available';
95
70
  }
96
71
  result.push({
97
72
  date,
@@ -100,11 +75,7 @@ function buildDateRangeSummary(params) {
100
75
  totalSlots,
101
76
  availableSlots
102
77
  });
103
- cursor = cursor.add(1, "day");
78
+ cursor = cursor.add(1, 'day');
104
79
  }
105
80
  return result;
106
- }
107
- // Annotate the CommonJS export names for ESM import in node:
108
- 0 && (module.exports = {
109
- buildDateRangeSummary
110
- });
81
+ }
@@ -1,69 +1,51 @@
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);
1
+ "use strict";
18
2
 
19
- // src/solution/VenueBooking/utils/resource.ts
20
- var resource_exports = {};
21
- __export(resource_exports, {
22
- buildResourceProductMap: () => buildResourceProductMap,
23
- extractResourceIds: () => extractResourceIds
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(resource_exports);
6
+ exports.buildResourceProductMap = buildResourceProductMap;
7
+ exports.extractResourceIds = extractResourceIds;
8
+ /**
9
+ * 从商品列表里抽取所有 resource_id:
10
+ * - 商品绑定的 default_resource / optional_resource
11
+ * - 以及这些资源上声明的 combined_resource.resource_ids(若可从 product_resource 读取)
12
+ * 用于一次性拉到子资源数据,判定组合资源的可用性。
13
+ */
26
14
  function extractResourceIds(products) {
27
- var _a;
28
- const ids = /* @__PURE__ */ new Set();
15
+ const ids = new Set();
29
16
  for (const product of products) {
30
- const resources = (_a = product.product_resource) == null ? void 0 : _a.resources;
31
- if (!Array.isArray(resources))
32
- continue;
17
+ const resources = product.product_resource?.resources;
18
+ if (!Array.isArray(resources)) continue;
33
19
  for (const resource of resources) {
34
- if (resource.status !== 1)
35
- continue;
20
+ if (resource.status !== 1) continue;
36
21
  const defaultRes = resource.default_resource || [];
37
22
  const optionalRes = resource.optional_resource || [];
38
23
  for (const id of [...defaultRes, ...optionalRes]) {
39
- if (typeof id === "number" && id > 0)
40
- ids.add(id);
24
+ if (typeof id === 'number' && id > 0) ids.add(id);
41
25
  }
42
26
  const combined = resource.combined_resource;
43
27
  if (combined && combined.status === 1 && Array.isArray(combined.resource_ids)) {
44
28
  for (const id of combined.resource_ids) {
45
- if (typeof id === "number" && id > 0)
46
- ids.add(id);
29
+ if (typeof id === 'number' && id > 0) ids.add(id);
47
30
  }
48
31
  }
49
32
  }
50
33
  }
51
34
  return Array.from(ids);
52
35
  }
36
+
37
+ /**
38
+ * 每个 resourceId 可以被多个商品共享(同一场地关联多种运动商品)。
39
+ * Map 的 value 改为 ResourceProductMapping[],按商品出现顺序保留。
40
+ */
53
41
  function buildResourceProductMap(products) {
54
- var _a;
55
- const map = /* @__PURE__ */ new Map();
42
+ const map = new Map();
56
43
  for (const product of products) {
57
- const resources = (_a = product.product_resource) == null ? void 0 : _a.resources;
58
- if (!Array.isArray(resources))
59
- continue;
44
+ const resources = product.product_resource?.resources;
45
+ if (!Array.isArray(resources)) continue;
60
46
  for (const resource of resources) {
61
- if (resource.status !== 1)
62
- continue;
63
- const allResourceIds = [
64
- ...resource.default_resource || [],
65
- ...resource.optional_resource || []
66
- ];
47
+ if (resource.status !== 1) continue;
48
+ const allResourceIds = [...(resource.default_resource || []), ...(resource.optional_resource || [])];
67
49
  for (const resId of allResourceIds) {
68
50
  const existing = map.get(resId);
69
51
  const mapping = {
@@ -72,21 +54,16 @@ function buildResourceProductMap(products) {
72
54
  formName: resource.title,
73
55
  resourceName: resource.title,
74
56
  formId: resource.id,
75
- price: product.price || "0.00",
76
- resourceType: resource.type || "single"
57
+ price: product.price || '0.00',
58
+ resourceType: resource.type || 'single'
77
59
  };
78
60
  if (!existing) {
79
61
  map.set(resId, [mapping]);
80
- } else if (!existing.some((m) => m.productId === mapping.productId)) {
62
+ } else if (!existing.some(m => m.productId === mapping.productId)) {
81
63
  existing.push(mapping);
82
64
  }
83
65
  }
84
66
  }
85
67
  }
86
68
  return map;
87
- }
88
- // Annotate the CommonJS export names for ESM import in node:
89
- 0 && (module.exports = {
90
- buildResourceProductMap,
91
- extractResourceIds
92
- });
69
+ }
@@ -1,62 +1,34 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
28
2
 
29
- // src/solution/VenueBooking/utils/slotMerge.ts
30
- var slotMerge_exports = {};
31
- __export(slotMerge_exports, {
32
- buildPriceBreakdown: () => buildPriceBreakdown,
33
- buildVenueBookingEntry: () => buildVenueBookingEntry,
34
- buildVenueIdentityKey: () => buildVenueIdentityKey,
35
- buildVenueResourceMetadata: () => buildVenueResourceMetadata,
36
- expandMergedSlotToIndividual: () => expandMergedSlotToIndividual,
37
- mergeConsecutiveSlots: () => mergeConsecutiveSlots
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
38
5
  });
39
- module.exports = __toCommonJS(slotMerge_exports);
40
- var import_decimal = __toESM(require("decimal.js"));
41
- var import_dayjs = __toESM(require("dayjs"));
42
- var import_utils = require("../../../modules/Order/utils");
6
+ exports.buildPriceBreakdown = buildPriceBreakdown;
7
+ exports.buildVenueBookingEntry = buildVenueBookingEntry;
8
+ exports.buildVenueIdentityKey = buildVenueIdentityKey;
9
+ exports.buildVenueResourceMetadata = buildVenueResourceMetadata;
10
+ exports.expandMergedSlotToIndividual = expandMergedSlotToIndividual;
11
+ exports.mergeConsecutiveSlots = mergeConsecutiveSlots;
12
+ var _decimal = _interopRequireDefault(require("decimal.js"));
13
+ var _dayjs = _interopRequireDefault(require("dayjs"));
14
+ var _utils = require("../../../modules/Order/utils");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
16
  function buildVenueIdentityKey(resourceId, groupIndex) {
44
- return `venue:${resourceId}:${groupIndex}:${(0, import_utils.createUuidV4)()}`;
17
+ return `venue:${resourceId}:${groupIndex}:${(0, _utils.createUuidV4)()}`;
45
18
  }
46
19
  function mergeConsecutiveSlots(slots) {
47
- if (!slots.length)
48
- return [];
20
+ if (!slots.length) return [];
49
21
  const sorted = [...slots].sort((a, b) => a.startTime.localeCompare(b.startTime));
50
22
  const groups = [];
51
23
  let currentSlots = [sorted[0]];
52
24
  let currentStart = sorted[0].startTime;
53
25
  let currentEnd = sorted[0].endTime;
54
- let totalPrice = new import_decimal.default(sorted[0].price || "0");
26
+ let totalPrice = new _decimal.default(sorted[0].price || '0');
55
27
  for (let i = 1; i < sorted.length; i++) {
56
28
  const slot = sorted[i];
57
29
  if (slot.startTime === currentEnd) {
58
30
  currentEnd = slot.endTime;
59
- totalPrice = totalPrice.add(new import_decimal.default(slot.price || "0"));
31
+ totalPrice = totalPrice.add(new _decimal.default(slot.price || '0'));
60
32
  currentSlots.push(slot);
61
33
  } else {
62
34
  groups.push({
@@ -69,7 +41,7 @@ function mergeConsecutiveSlots(slots) {
69
41
  currentSlots = [slot];
70
42
  currentStart = slot.startTime;
71
43
  currentEnd = slot.endTime;
72
- totalPrice = new import_decimal.default(slot.price || "0");
44
+ totalPrice = new _decimal.default(slot.price || '0');
73
45
  }
74
46
  }
75
47
  groups.push({
@@ -82,15 +54,21 @@ function mergeConsecutiveSlots(slots) {
82
54
  return groups;
83
55
  }
84
56
  function buildPriceBreakdown(params) {
85
- const { group, productId, quotation } = params;
86
- if (!group.slots.length)
87
- return [];
57
+ const {
58
+ group,
59
+ productId,
60
+ quotation
61
+ } = params;
62
+ if (!group.slots.length) return [];
88
63
  const entries = [];
89
64
  for (const slot of group.slots) {
90
- const unitPrice = Number(slot.price || "0");
91
- const shelfId = quotation ? quotation.getQuotationShelfId({ productId, datetime: slot.startTime }) : 0;
92
- const startHm = (0, import_dayjs.default)(slot.startTime, "YYYY-MM-DD HH:mm").format("YYYY-MM-DD HH:mm");
93
- const endHm = (0, import_dayjs.default)(slot.endTime, "YYYY-MM-DD HH:mm").format("YYYY-MM-DD HH:mm");
65
+ const unitPrice = Number(slot.price || '0');
66
+ const shelfId = quotation ? quotation.getQuotationShelfId({
67
+ productId,
68
+ datetime: slot.startTime
69
+ }) : 0;
70
+ const startHm = (0, _dayjs.default)(slot.startTime, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm');
71
+ const endHm = (0, _dayjs.default)(slot.endTime, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm');
94
72
  const last = entries[entries.length - 1];
95
73
  if (last && last.unit_price === unitPrice && last.quotation_shelf_id === shelfId && last.end_time === startHm) {
96
74
  last.end_time = endHm;
@@ -108,36 +86,50 @@ function buildPriceBreakdown(params) {
108
86
  return entries;
109
87
  }
110
88
  function buildVenueResourceMetadata(params) {
111
- const { mapping, rawResource } = params;
112
- const combined = rawResource == null ? void 0 : rawResource.combined_resource;
89
+ const {
90
+ mapping,
91
+ rawResource
92
+ } = params;
93
+ const combined = rawResource?.combined_resource;
113
94
  const isCombined = !!(combined && combined.status === 1 && Array.isArray(combined.resource_ids));
114
95
  return {
115
96
  form_name: mapping.formName ?? mapping.resourceName,
116
- resource_name: (rawResource == null ? void 0 : rawResource.main_field) ?? mapping.resourceName,
97
+ resource_name: rawResource?.main_field ?? mapping.resourceName,
117
98
  combined_resource: isCombined ? combined : null
118
99
  };
119
100
  }
120
101
  function buildVenueBookingEntry(params) {
121
- const { group, resourceId, mapping, rawResource, bookingUuid, productUid, childResources } = params;
122
- const startMoment = (0, import_dayjs.default)(group.startTime, "YYYY-MM-DD HH:mm");
123
- const endMoment = (0, import_dayjs.default)(group.endTime, "YYYY-MM-DD HH:mm");
124
- const duration = endMoment.diff(startMoment, "minute");
102
+ const {
103
+ group,
104
+ resourceId,
105
+ mapping,
106
+ rawResource,
107
+ bookingUuid,
108
+ productUid,
109
+ childResources
110
+ } = params;
111
+ const startMoment = (0, _dayjs.default)(group.startTime, 'YYYY-MM-DD HH:mm');
112
+ const endMoment = (0, _dayjs.default)(group.endTime, 'YYYY-MM-DD HH:mm');
113
+ const duration = endMoment.diff(startMoment, 'minute');
125
114
  const resourceEntry = {
126
- relation_type: "form",
127
- like_status: "common",
115
+ relation_type: 'form',
116
+ like_status: 'common',
128
117
  id: resourceId,
129
118
  main_field: mapping.resourceName,
130
- form_id: (rawResource == null ? void 0 : rawResource.form_id) ?? mapping.formId,
119
+ form_id: rawResource?.form_id ?? mapping.formId,
131
120
  relation_id: resourceId,
132
121
  capacity: 1,
133
- metadata: buildVenueResourceMetadata({ mapping, rawResource })
122
+ metadata: buildVenueResourceMetadata({
123
+ mapping,
124
+ rawResource
125
+ })
134
126
  };
135
127
  if (childResources && childResources.length) {
136
- resourceEntry.children = childResources.map((child) => ({
137
- relation_type: "form",
138
- like_status: "common",
128
+ resourceEntry.children = childResources.map(child => ({
129
+ relation_type: 'form',
130
+ like_status: 'common',
139
131
  id: child.resourceId,
140
- main_field: child.main_field || "",
132
+ main_field: child.main_field || '',
141
133
  form_id: child.form_id ?? child.formId,
142
134
  relation_id: child.resourceId,
143
135
  capacity: child.capacity ?? 1,
@@ -146,15 +138,15 @@ function buildVenueBookingEntry(params) {
146
138
  }
147
139
  return {
148
140
  schedule_event_id: null,
149
- appointment_status: "new",
150
- start_date: startMoment.format("YYYY-MM-DD"),
151
- start_time: startMoment.format("HH:mm"),
152
- end_date: endMoment.format("YYYY-MM-DD"),
153
- end_time: endMoment.format("HH:mm"),
154
- select_date: startMoment.format("YYYY-MM-DD"),
141
+ appointment_status: 'new',
142
+ start_date: startMoment.format('YYYY-MM-DD'),
143
+ start_time: startMoment.format('HH:mm'),
144
+ end_date: endMoment.format('YYYY-MM-DD'),
145
+ end_time: endMoment.format('HH:mm'),
146
+ select_date: startMoment.format('YYYY-MM-DD'),
155
147
  duration,
156
- sub_type: "minutes",
157
- like_status: "common",
148
+ sub_type: 'minutes',
149
+ like_status: 'common',
158
150
  number: 1,
159
151
  is_all: false,
160
152
  schedule_id: 0,
@@ -171,67 +163,62 @@ function buildVenueBookingEntry(params) {
171
163
  }
172
164
  };
173
165
  }
166
+
167
+ /**
168
+ * 从一条已合并的订单商品还原出独立的时段列表。
169
+ * 优先使用 metadata.price_breakdown 还原每个时段的精确价格,
170
+ * 回退到按 selling_price / slot_count 均分。
171
+ */
174
172
  function expandMergedSlotToIndividual(product, slotDurationMinutes) {
175
173
  const meta = product.metadata || {};
176
174
  const resourceId = meta.resource_id;
177
- if (resourceId == null)
178
- return [];
175
+ if (resourceId == null) return [];
179
176
  const startTime = meta.start_time;
180
177
  const endTime = meta.end_time;
181
- if (!startTime || !endTime)
182
- return [];
178
+ if (!startTime || !endTime) return [];
183
179
  const productId = Number(product.product_id);
184
180
  const breakdown = meta.price_breakdown;
185
181
  const result = [];
186
- let cursor = (0, import_dayjs.default)(startTime, "YYYY-MM-DD HH:mm");
187
- const end = (0, import_dayjs.default)(endTime, "YYYY-MM-DD HH:mm");
188
- if (breakdown == null ? void 0 : breakdown.length) {
189
- const priceMap = /* @__PURE__ */ new Map();
182
+ let cursor = (0, _dayjs.default)(startTime, 'YYYY-MM-DD HH:mm');
183
+ const end = (0, _dayjs.default)(endTime, 'YYYY-MM-DD HH:mm');
184
+ if (breakdown?.length) {
185
+ const priceMap = new Map();
190
186
  for (const entry of breakdown) {
191
- let entryCursor = (0, import_dayjs.default)(entry.start_time, "YYYY-MM-DD HH:mm");
192
- const entryEnd = (0, import_dayjs.default)(entry.end_time, "YYYY-MM-DD HH:mm");
187
+ let entryCursor = (0, _dayjs.default)(entry.start_time, 'YYYY-MM-DD HH:mm');
188
+ const entryEnd = (0, _dayjs.default)(entry.end_time, 'YYYY-MM-DD HH:mm');
193
189
  while (entryCursor.isBefore(entryEnd)) {
194
- priceMap.set(entryCursor.format("HH:mm"), entry.unit_price);
195
- entryCursor = entryCursor.add(slotDurationMinutes, "minute");
190
+ priceMap.set(entryCursor.format('HH:mm'), entry.unit_price);
191
+ entryCursor = entryCursor.add(slotDurationMinutes, 'minute');
196
192
  }
197
193
  }
198
194
  while (cursor.isBefore(end)) {
199
- const slotEnd = cursor.add(slotDurationMinutes, "minute");
200
- const hm = cursor.format("HH:mm");
195
+ const slotEnd = cursor.add(slotDurationMinutes, 'minute');
196
+ const hm = cursor.format('HH:mm');
201
197
  const price = priceMap.get(hm) ?? 0;
202
198
  result.push({
203
199
  resourceId,
204
200
  productId,
205
- startTime: cursor.format("YYYY-MM-DD HH:mm"),
206
- endTime: slotEnd.format("YYYY-MM-DD HH:mm"),
207
- price: new import_decimal.default(price).toFixed(2)
201
+ startTime: cursor.format('YYYY-MM-DD HH:mm'),
202
+ endTime: slotEnd.format('YYYY-MM-DD HH:mm'),
203
+ price: new _decimal.default(price).toFixed(2)
208
204
  });
209
205
  cursor = slotEnd;
210
206
  }
211
207
  } else {
212
208
  const slotCount = meta.slot_count || 1;
213
- const totalPrice = new import_decimal.default(product.selling_price || "0");
209
+ const totalPrice = new _decimal.default(product.selling_price || '0');
214
210
  const perSlotPrice = slotCount > 0 ? totalPrice.div(slotCount).toFixed(2) : totalPrice.toFixed(2);
215
211
  while (cursor.isBefore(end)) {
216
- const slotEnd = cursor.add(slotDurationMinutes, "minute");
212
+ const slotEnd = cursor.add(slotDurationMinutes, 'minute');
217
213
  result.push({
218
214
  resourceId,
219
215
  productId,
220
- startTime: cursor.format("YYYY-MM-DD HH:mm"),
221
- endTime: slotEnd.format("YYYY-MM-DD HH:mm"),
216
+ startTime: cursor.format('YYYY-MM-DD HH:mm'),
217
+ endTime: slotEnd.format('YYYY-MM-DD HH:mm'),
222
218
  price: perSlotPrice
223
219
  });
224
220
  cursor = slotEnd;
225
221
  }
226
222
  }
227
223
  return result;
228
- }
229
- // Annotate the CommonJS export names for ESM import in node:
230
- 0 && (module.exports = {
231
- buildPriceBreakdown,
232
- buildVenueBookingEntry,
233
- buildVenueIdentityKey,
234
- buildVenueResourceMetadata,
235
- expandMergedSlotToIndividual,
236
- mergeConsecutiveSlots
237
- });
224
+ }