@pisell/pisellos 2.3.74 → 2.3.75

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 (276) hide show
  1. package/dist/core/index.js +6 -10
  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.js +36 -64
  11. package/dist/modules/Payment/index.js +97 -162
  12. package/dist/modules/Rules/index.js +1 -4
  13. package/dist/modules/Schedule/index.js +0 -1
  14. package/dist/modules/Schedule/utils.js +0 -1
  15. package/dist/modules/Step/index.js +0 -1
  16. package/dist/plugins/request.js +1 -4
  17. package/dist/plugins/window.js +2 -6
  18. package/dist/server/index.js +97 -129
  19. package/dist/server/modules/menu/index.js +32 -41
  20. package/dist/server/modules/order/index.js +2 -4
  21. package/dist/server/modules/products/index.js +24 -42
  22. package/dist/server/modules/quotation/index.js +29 -38
  23. package/dist/server/modules/resource/index.js +3 -4
  24. package/dist/server/modules/schedule/index.js +27 -35
  25. package/dist/server/utils/product.js +0 -1
  26. package/dist/solution/BaseSales/index.js +38 -41
  27. package/dist/solution/BookingByStep/index.js +7 -59
  28. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  29. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  30. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  31. package/dist/solution/BookingTicket/index.js +0 -2
  32. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  33. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  34. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  35. package/dist/solution/BuyTickets/index.js +9 -12
  36. package/dist/solution/Checkout/index.js +177 -252
  37. package/dist/solution/Checkout/utils/index.js +4 -16
  38. package/dist/solution/RegisterAndLogin/index.js +30 -76
  39. package/dist/solution/ScanOrder/index.js +50 -60
  40. package/dist/solution/ShopDiscount/index.js +2 -7
  41. package/dist/solution/VenueBooking/index.js +45 -55
  42. package/dist/utils/task.js +15 -18
  43. package/dist/utils/watch.js +0 -1
  44. package/lib/apis/picoding.js +2 -0
  45. package/lib/core/index.js +134 -134
  46. package/lib/effects/index.js +46 -57
  47. package/lib/index.js +82 -49
  48. package/lib/model/index.js +14 -21
  49. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  50. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  51. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  52. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  53. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  54. package/lib/model/strategy/adapter/index.js +100 -64
  55. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  56. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  57. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  58. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  59. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  60. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  61. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  62. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  63. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  64. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  65. package/lib/model/strategy/adapter/type.js +4 -16
  66. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  67. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  68. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  69. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  70. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  71. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  72. package/lib/model/strategy/engine.js +270 -168
  73. package/lib/model/strategy/index.js +49 -34
  74. package/lib/model/strategy/strategy-example.js +243 -239
  75. package/lib/model/strategy/type.js +100 -40
  76. package/lib/modules/Account/index.js +39 -53
  77. package/lib/modules/Account/types.js +20 -33
  78. package/lib/modules/AccountList/index.js +116 -154
  79. package/lib/modules/AccountList/types.js +30 -31
  80. package/lib/modules/AccountList/utils.js +18 -30
  81. package/lib/modules/BaseModule.js +23 -42
  82. package/lib/modules/BookingContext/index.js +158 -136
  83. package/lib/modules/BookingContext/types.js +46 -32
  84. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  85. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  86. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  87. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  88. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  89. package/lib/modules/BookingContext/utils/index.js +124 -41
  90. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  91. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  92. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  93. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  94. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  95. package/lib/modules/BookingContext/utils/resources.js +209 -167
  96. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  97. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  98. package/lib/modules/Cart/index.js +170 -124
  99. package/lib/modules/Cart/types.js +46 -51
  100. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  101. package/lib/modules/Cart/utils/cartDate.js +56 -61
  102. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  103. package/lib/modules/Cart/utils/cartNote.js +27 -32
  104. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  105. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  106. package/lib/modules/Cart/utils/cartResource.js +70 -78
  107. package/lib/modules/Cart/utils/changePrice.js +22 -50
  108. package/lib/modules/Cart/utils/index.js +106 -48
  109. package/lib/modules/Customer/constants.js +13 -34
  110. package/lib/modules/Customer/index.js +235 -172
  111. package/lib/modules/Customer/types.js +38 -35
  112. package/lib/modules/Date/index.js +116 -115
  113. package/lib/modules/Date/types.js +16 -28
  114. package/lib/modules/Date/utils.js +174 -123
  115. package/lib/modules/Discount/index.js +122 -127
  116. package/lib/modules/Discount/types.js +9 -31
  117. package/lib/modules/Guests/index.js +30 -56
  118. package/lib/modules/Guests/types.js +23 -33
  119. package/lib/modules/Holder/index.js +209 -189
  120. package/lib/modules/Holder/types.js +4 -16
  121. package/lib/modules/Holder/utils.js +20 -49
  122. package/lib/modules/OpenData/index.js +70 -76
  123. package/lib/modules/OpenData/types.js +4 -16
  124. package/lib/modules/OpenData/utils.js +44 -78
  125. package/lib/modules/Order/index.js +1713 -2118
  126. package/lib/modules/Order/payment-utils.js +77 -120
  127. package/lib/modules/Order/types.js +88 -35
  128. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  129. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  130. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  131. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  132. package/lib/modules/Order/utils.js +814 -647
  133. package/lib/modules/Payment/cash.js +20 -33
  134. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  135. package/lib/modules/Payment/eftpos.js +16 -30
  136. package/lib/modules/Payment/index.js +532 -399
  137. package/lib/modules/Payment/mx51.js +1 -0
  138. package/lib/modules/Payment/types.js +230 -108
  139. package/lib/modules/Payment/utils.js +52 -51
  140. package/lib/modules/Payment/walletpass.js +485 -660
  141. package/lib/modules/Product/index.js +51 -46
  142. package/lib/modules/Product/types.js +4 -16
  143. package/lib/modules/Product/utils.js +32 -33
  144. package/lib/modules/ProductList/index.js +113 -123
  145. package/lib/modules/ProductList/types.js +9 -31
  146. package/lib/modules/Quotation/index.js +81 -118
  147. package/lib/modules/Quotation/types.js +4 -16
  148. package/lib/modules/Resource/index.js +27 -59
  149. package/lib/modules/Resource/types.js +22 -32
  150. package/lib/modules/Resource/utils.js +30 -38
  151. package/lib/modules/ResourcePlanner/index.js +25 -23
  152. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  153. package/lib/modules/ResourcePlanner/planner.js +589 -770
  154. package/lib/modules/ResourcePlanner/types.js +10 -29
  155. package/lib/modules/Rules/index.js +1218 -959
  156. package/lib/modules/Rules/types.js +17 -40
  157. package/lib/modules/SalesSummary/index.js +85 -90
  158. package/lib/modules/SalesSummary/types.js +4 -16
  159. package/lib/modules/SalesSummary/utils.js +355 -430
  160. package/lib/modules/ScanOrderLogger/index.js +59 -79
  161. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  162. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  163. package/lib/modules/ScanOrderLogger/types.js +4 -16
  164. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  165. package/lib/modules/Schedule/index.js +100 -114
  166. package/lib/modules/Schedule/type.js +4 -16
  167. package/lib/modules/Schedule/types.js +4 -16
  168. package/lib/modules/Schedule/utils.js +433 -291
  169. package/lib/modules/Step/index.js +40 -52
  170. package/lib/modules/Step/tyeps.js +4 -16
  171. package/lib/modules/Summary/index.js +66 -71
  172. package/lib/modules/Summary/types.js +4 -16
  173. package/lib/modules/Summary/utils.js +773 -418
  174. package/lib/modules/SurchargeList/index.js +46 -60
  175. package/lib/modules/SurchargeList/types.js +4 -16
  176. package/lib/modules/index.js +245 -63
  177. package/lib/plugins/app.js +4 -16
  178. package/lib/plugins/index.js +36 -25
  179. package/lib/plugins/request.js +137 -126
  180. package/lib/plugins/shopStore.js +4 -16
  181. package/lib/plugins/user.js +4 -16
  182. package/lib/plugins/window.js +171 -179
  183. package/lib/server/index.js +3050 -2665
  184. package/lib/server/modules/floor-plan/index.js +118 -134
  185. package/lib/server/modules/floor-plan/types.js +15 -30
  186. package/lib/server/modules/index.js +106 -68
  187. package/lib/server/modules/menu/index.js +142 -122
  188. package/lib/server/modules/menu/types.js +18 -31
  189. package/lib/server/modules/order/index.js +784 -1002
  190. package/lib/server/modules/order/types.js +122 -33
  191. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  192. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  193. package/lib/server/modules/payment/index.js +59 -83
  194. package/lib/server/modules/payment/types.js +4 -16
  195. package/lib/server/modules/products/index.js +583 -471
  196. package/lib/server/modules/products/types.js +44 -34
  197. package/lib/server/modules/quotation/index.js +137 -172
  198. package/lib/server/modules/quotation/types.js +21 -31
  199. package/lib/server/modules/resource/index.js +220 -186
  200. package/lib/server/modules/resource/types.js +42 -33
  201. package/lib/server/modules/schedule/index.js +135 -123
  202. package/lib/server/modules/schedule/types.js +14 -21
  203. package/lib/server/modules/schedule/utils.js +334 -163
  204. package/lib/server/types.js +4 -16
  205. package/lib/server/utils/index.js +25 -23
  206. package/lib/server/utils/product.js +196 -139
  207. package/lib/server/utils/schedule.js +34 -41
  208. package/lib/server/utils/small-ticket.js +479 -456
  209. package/lib/server/utils/time.js +40 -49
  210. package/lib/solution/BaseSales/index.js +1186 -1410
  211. package/lib/solution/BaseSales/types.js +42 -38
  212. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  213. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  214. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  215. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  216. package/lib/solution/BaseSales/utils.js +158 -143
  217. package/lib/solution/BookingByStep/index.js +1527 -1340
  218. package/lib/solution/BookingByStep/types.js +40 -99
  219. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  220. package/lib/solution/BookingByStep/utils/products.js +42 -52
  221. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  222. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  223. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  224. package/lib/solution/BookingTicket/index.js +607 -522
  225. package/lib/solution/BookingTicket/types.js +99 -77
  226. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  227. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  228. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  229. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  230. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  231. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  232. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  233. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  234. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  235. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  236. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  237. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  238. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  239. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  240. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  241. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  242. package/lib/solution/BuyTickets/index.js +67 -70
  243. package/lib/solution/BuyTickets/types.js +22 -38
  244. package/lib/solution/Checkout/index.js +1451 -1158
  245. package/lib/solution/Checkout/types.js +91 -61
  246. package/lib/solution/Checkout/utils/index.js +228 -156
  247. package/lib/solution/PlaceOrder/index.js +55 -0
  248. package/lib/solution/RegisterAndLogin/config.js +493 -460
  249. package/lib/solution/RegisterAndLogin/index.js +633 -630
  250. package/lib/solution/RegisterAndLogin/types.js +189 -76
  251. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  252. package/lib/solution/Sales/index.js +328 -324
  253. package/lib/solution/Sales/types.js +27 -33
  254. package/lib/solution/ScanOrder/index.js +832 -864
  255. package/lib/solution/ScanOrder/types.js +33 -34
  256. package/lib/solution/ScanOrder/utils.js +409 -374
  257. package/lib/solution/ShopDiscount/index.js +226 -232
  258. package/lib/solution/ShopDiscount/types.js +15 -37
  259. package/lib/solution/ShopDiscount/utils.js +300 -172
  260. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  261. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  262. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  263. package/lib/solution/VenueBooking/index.js +811 -879
  264. package/lib/solution/VenueBooking/types.js +19 -39
  265. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  266. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  267. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  268. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  269. package/lib/solution/VenueBooking/utils.js +130 -67
  270. package/lib/solution/index.js +124 -41
  271. package/lib/store/createStore.js +32 -29
  272. package/lib/types/index.js +4 -16
  273. package/lib/utils/payment-number.js +26 -46
  274. package/lib/utils/task.js +36 -36
  275. package/lib/utils/watch.js +81 -47
  276. 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
+ }