@pisell/pisellos 2.3.73 → 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 (296) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/index.js +111 -71
  3. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +2 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +36 -64
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Quotation/index.d.ts +6 -0
  15. package/dist/modules/Quotation/index.js +75 -19
  16. package/dist/modules/Rules/index.js +1 -4
  17. package/dist/modules/Schedule/index.js +0 -1
  18. package/dist/modules/Schedule/utils.js +0 -1
  19. package/dist/modules/Step/index.js +0 -1
  20. package/dist/plugins/request.d.ts +1 -0
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.d.ts +8 -2
  24. package/dist/server/index.js +303 -269
  25. package/dist/server/modules/floor-plan/index.d.ts +4 -0
  26. package/dist/server/modules/floor-plan/index.js +240 -98
  27. package/dist/server/modules/menu/index.js +75 -59
  28. package/dist/server/modules/order/index.d.ts +17 -7
  29. package/dist/server/modules/order/index.js +421 -211
  30. package/dist/server/modules/products/index.d.ts +8 -2
  31. package/dist/server/modules/products/index.js +191 -117
  32. package/dist/server/modules/quotation/index.js +29 -38
  33. package/dist/server/modules/resource/index.js +24 -17
  34. package/dist/server/modules/schedule/index.js +27 -35
  35. package/dist/server/utils/product.js +0 -1
  36. package/dist/solution/BaseSales/index.js +38 -41
  37. package/dist/solution/BookingByStep/index.d.ts +1 -1
  38. package/dist/solution/BookingByStep/index.js +7 -59
  39. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  40. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  41. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  42. package/dist/solution/BookingTicket/index.js +0 -2
  43. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  44. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  45. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  46. package/dist/solution/BuyTickets/index.js +9 -12
  47. package/dist/solution/Checkout/index.js +177 -252
  48. package/dist/solution/Checkout/utils/index.js +4 -16
  49. package/dist/solution/RegisterAndLogin/index.js +30 -76
  50. package/dist/solution/ScanOrder/index.js +50 -60
  51. package/dist/solution/ShopDiscount/index.js +2 -7
  52. package/dist/solution/VenueBooking/index.js +45 -55
  53. package/dist/utils/task.js +15 -18
  54. package/dist/utils/watch.js +0 -1
  55. package/lib/apis/picoding.js +2 -0
  56. package/lib/core/index.d.ts +7 -0
  57. package/lib/core/index.js +149 -131
  58. package/lib/effects/index.js +46 -57
  59. package/lib/index.js +82 -49
  60. package/lib/model/index.js +14 -21
  61. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  62. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  63. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  64. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  65. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  66. package/lib/model/strategy/adapter/index.js +100 -64
  67. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  68. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  69. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  70. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  71. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  72. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  73. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  74. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  75. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  76. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  77. package/lib/model/strategy/adapter/type.js +4 -16
  78. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  79. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  80. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  81. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  82. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  83. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  84. package/lib/model/strategy/engine.js +270 -168
  85. package/lib/model/strategy/index.js +49 -34
  86. package/lib/model/strategy/strategy-example.js +243 -239
  87. package/lib/model/strategy/type.js +100 -40
  88. package/lib/modules/Account/index.js +39 -53
  89. package/lib/modules/Account/types.js +20 -33
  90. package/lib/modules/AccountList/index.js +116 -154
  91. package/lib/modules/AccountList/types.js +30 -31
  92. package/lib/modules/AccountList/utils.js +18 -30
  93. package/lib/modules/BaseModule.js +23 -42
  94. package/lib/modules/BookingContext/index.js +158 -136
  95. package/lib/modules/BookingContext/types.js +46 -32
  96. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  97. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  98. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  99. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  100. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  101. package/lib/modules/BookingContext/utils/index.js +124 -41
  102. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  103. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  104. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  105. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  106. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  107. package/lib/modules/BookingContext/utils/resources.js +209 -167
  108. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  109. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  110. package/lib/modules/Cart/index.js +170 -124
  111. package/lib/modules/Cart/types.js +46 -51
  112. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  113. package/lib/modules/Cart/utils/cartDate.js +56 -61
  114. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  115. package/lib/modules/Cart/utils/cartNote.js +27 -32
  116. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  117. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  118. package/lib/modules/Cart/utils/cartResource.js +70 -78
  119. package/lib/modules/Cart/utils/changePrice.js +22 -50
  120. package/lib/modules/Cart/utils/index.js +106 -48
  121. package/lib/modules/Customer/constants.js +13 -34
  122. package/lib/modules/Customer/index.js +235 -172
  123. package/lib/modules/Customer/types.js +38 -35
  124. package/lib/modules/Date/index.js +116 -115
  125. package/lib/modules/Date/types.js +16 -28
  126. package/lib/modules/Date/utils.js +174 -123
  127. package/lib/modules/Discount/index.js +122 -127
  128. package/lib/modules/Discount/types.js +9 -31
  129. package/lib/modules/Guests/index.js +30 -56
  130. package/lib/modules/Guests/types.js +23 -33
  131. package/lib/modules/Holder/index.js +209 -189
  132. package/lib/modules/Holder/types.js +4 -16
  133. package/lib/modules/Holder/utils.js +20 -49
  134. package/lib/modules/OpenData/index.js +70 -76
  135. package/lib/modules/OpenData/types.js +4 -16
  136. package/lib/modules/OpenData/utils.js +44 -78
  137. package/lib/modules/Order/index.d.ts +1 -1
  138. package/lib/modules/Order/index.js +1713 -2118
  139. package/lib/modules/Order/payment-utils.js +77 -120
  140. package/lib/modules/Order/types.js +88 -35
  141. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  142. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  143. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  144. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  145. package/lib/modules/Order/utils.js +814 -647
  146. package/lib/modules/Payment/cash.js +20 -33
  147. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  148. package/lib/modules/Payment/eftpos.js +16 -30
  149. package/lib/modules/Payment/index.js +532 -399
  150. package/lib/modules/Payment/mx51.js +1 -0
  151. package/lib/modules/Payment/types.js +230 -108
  152. package/lib/modules/Payment/utils.js +52 -51
  153. package/lib/modules/Payment/walletpass.js +485 -660
  154. package/lib/modules/Product/index.js +51 -46
  155. package/lib/modules/Product/types.js +4 -16
  156. package/lib/modules/Product/utils.js +32 -33
  157. package/lib/modules/ProductList/index.js +113 -123
  158. package/lib/modules/ProductList/types.js +9 -31
  159. package/lib/modules/Quotation/index.d.ts +6 -0
  160. package/lib/modules/Quotation/index.js +110 -103
  161. package/lib/modules/Quotation/types.js +4 -16
  162. package/lib/modules/Resource/index.js +27 -59
  163. package/lib/modules/Resource/types.js +22 -32
  164. package/lib/modules/Resource/utils.js +30 -38
  165. package/lib/modules/ResourcePlanner/index.js +25 -23
  166. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  167. package/lib/modules/ResourcePlanner/planner.js +589 -770
  168. package/lib/modules/ResourcePlanner/types.js +10 -29
  169. package/lib/modules/Rules/index.js +1218 -959
  170. package/lib/modules/Rules/types.js +17 -40
  171. package/lib/modules/SalesSummary/index.js +85 -90
  172. package/lib/modules/SalesSummary/types.js +4 -16
  173. package/lib/modules/SalesSummary/utils.js +355 -430
  174. package/lib/modules/ScanOrderLogger/index.js +59 -79
  175. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  176. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  177. package/lib/modules/ScanOrderLogger/types.js +4 -16
  178. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  179. package/lib/modules/Schedule/index.js +100 -114
  180. package/lib/modules/Schedule/type.js +4 -16
  181. package/lib/modules/Schedule/types.js +4 -16
  182. package/lib/modules/Schedule/utils.js +433 -291
  183. package/lib/modules/Step/index.js +40 -52
  184. package/lib/modules/Step/tyeps.js +4 -16
  185. package/lib/modules/Summary/index.js +66 -71
  186. package/lib/modules/Summary/types.js +4 -16
  187. package/lib/modules/Summary/utils.js +773 -418
  188. package/lib/modules/SurchargeList/index.js +46 -60
  189. package/lib/modules/SurchargeList/types.js +4 -16
  190. package/lib/modules/index.js +245 -63
  191. package/lib/plugins/app.js +4 -16
  192. package/lib/plugins/index.js +36 -25
  193. package/lib/plugins/request.d.ts +1 -0
  194. package/lib/plugins/request.js +137 -126
  195. package/lib/plugins/shopStore.js +4 -16
  196. package/lib/plugins/user.js +4 -16
  197. package/lib/plugins/window.js +171 -179
  198. package/lib/server/index.d.ts +8 -2
  199. package/lib/server/index.js +3083 -2663
  200. package/lib/server/modules/floor-plan/index.d.ts +4 -0
  201. package/lib/server/modules/floor-plan/index.js +159 -127
  202. package/lib/server/modules/floor-plan/types.js +15 -30
  203. package/lib/server/modules/index.js +106 -68
  204. package/lib/server/modules/menu/index.js +170 -124
  205. package/lib/server/modules/menu/types.js +18 -31
  206. package/lib/server/modules/order/index.d.ts +17 -7
  207. package/lib/server/modules/order/index.js +916 -977
  208. package/lib/server/modules/order/types.js +122 -33
  209. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  210. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  211. package/lib/server/modules/payment/index.js +59 -83
  212. package/lib/server/modules/payment/types.js +4 -16
  213. package/lib/server/modules/products/index.d.ts +8 -2
  214. package/lib/server/modules/products/index.js +656 -471
  215. package/lib/server/modules/products/types.js +44 -34
  216. package/lib/server/modules/quotation/index.js +137 -172
  217. package/lib/server/modules/quotation/types.js +21 -31
  218. package/lib/server/modules/resource/index.js +225 -186
  219. package/lib/server/modules/resource/types.js +42 -33
  220. package/lib/server/modules/schedule/index.js +135 -123
  221. package/lib/server/modules/schedule/types.js +14 -21
  222. package/lib/server/modules/schedule/utils.js +334 -163
  223. package/lib/server/types.js +4 -16
  224. package/lib/server/utils/index.js +25 -23
  225. package/lib/server/utils/product.js +196 -139
  226. package/lib/server/utils/schedule.js +34 -41
  227. package/lib/server/utils/small-ticket.js +479 -456
  228. package/lib/server/utils/time.js +40 -49
  229. package/lib/solution/BaseSales/index.js +1186 -1410
  230. package/lib/solution/BaseSales/types.js +42 -38
  231. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  232. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  233. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  234. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  235. package/lib/solution/BaseSales/utils.js +158 -143
  236. package/lib/solution/BookingByStep/index.d.ts +1 -1
  237. package/lib/solution/BookingByStep/index.js +1527 -1340
  238. package/lib/solution/BookingByStep/types.js +40 -99
  239. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  240. package/lib/solution/BookingByStep/utils/products.js +42 -52
  241. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  242. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  243. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  244. package/lib/solution/BookingTicket/index.js +607 -522
  245. package/lib/solution/BookingTicket/types.js +99 -77
  246. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  247. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  248. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  249. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  250. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  251. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  252. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  253. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  254. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  255. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  256. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  257. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  258. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  259. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  260. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  261. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  262. package/lib/solution/BuyTickets/index.js +67 -70
  263. package/lib/solution/BuyTickets/types.js +22 -38
  264. package/lib/solution/Checkout/index.js +1451 -1158
  265. package/lib/solution/Checkout/types.js +91 -61
  266. package/lib/solution/Checkout/utils/index.js +228 -156
  267. package/lib/solution/PlaceOrder/index.js +55 -0
  268. package/lib/solution/RegisterAndLogin/config.js +493 -460
  269. package/lib/solution/RegisterAndLogin/index.js +633 -630
  270. package/lib/solution/RegisterAndLogin/types.js +189 -76
  271. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  272. package/lib/solution/Sales/index.js +328 -324
  273. package/lib/solution/Sales/types.js +27 -33
  274. package/lib/solution/ScanOrder/index.js +832 -864
  275. package/lib/solution/ScanOrder/types.js +33 -34
  276. package/lib/solution/ScanOrder/utils.js +409 -374
  277. package/lib/solution/ShopDiscount/index.js +226 -232
  278. package/lib/solution/ShopDiscount/types.js +15 -37
  279. package/lib/solution/ShopDiscount/utils.js +300 -172
  280. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  281. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  282. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  283. package/lib/solution/VenueBooking/index.js +811 -879
  284. package/lib/solution/VenueBooking/types.js +19 -39
  285. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  286. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  287. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  288. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  289. package/lib/solution/VenueBooking/utils.js +130 -67
  290. package/lib/solution/index.js +124 -41
  291. package/lib/store/createStore.js +32 -29
  292. package/lib/types/index.js +4 -16
  293. package/lib/utils/payment-number.js +26 -46
  294. package/lib/utils/task.js +36 -36
  295. package/lib/utils/watch.js +81 -47
  296. package/package.json +2 -1
@@ -1,105 +1,129 @@
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 __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
29
2
 
30
- // src/modules/BookingContext/index.ts
31
- var BookingContext_exports = {};
32
- __export(BookingContext_exports, {
33
- BookingContextModule: () => BookingContextModule,
34
- __clearBookingContextSharedCacheForTest: () => __clearBookingContextSharedCacheForTest,
35
- buildBookingConfigQueryKey: () => buildBookingConfigQueryKey,
36
- buildBookingResourcesQueryKey: () => buildBookingResourcesQueryKey
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ __clearBookingContextSharedCacheForTest: true,
8
+ buildBookingConfigQueryKey: true,
9
+ buildBookingResourcesQueryKey: true,
10
+ BookingContextModule: true
11
+ };
12
+ exports.BookingContextModule = void 0;
13
+ exports.__clearBookingContextSharedCacheForTest = __clearBookingContextSharedCacheForTest;
14
+ exports.buildBookingConfigQueryKey = buildBookingConfigQueryKey;
15
+ exports.buildBookingResourcesQueryKey = buildBookingResourcesQueryKey;
16
+ var _dayjs = _interopRequireDefault(require("dayjs"));
17
+ var _BaseModule = require("../BaseModule");
18
+ var _request = require("../../plugins/request");
19
+ var _types = require("./types");
20
+ Object.keys(_types).forEach(function (key) {
21
+ if (key === "default" || key === "__esModule") return;
22
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
23
+ if (key in exports && exports[key] === _types[key]) return;
24
+ Object.defineProperty(exports, key, {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _types[key];
28
+ }
29
+ });
37
30
  });
38
- module.exports = __toCommonJS(BookingContext_exports);
39
- var import_dayjs = __toESM(require("dayjs"));
40
- var import_BaseModule = require("../BaseModule");
41
- var import_request = require("../../plugins/request");
42
- var import_types = require("./types");
43
- var import_formatResourceList = require("./utils/formatResourceList");
44
- __reExport(BookingContext_exports, require("./types"), module.exports);
45
- __reExport(BookingContext_exports, require("./utils"), module.exports);
46
- var EMPTY_STATE = {
31
+ var _formatResourceList = require("./utils/formatResourceList");
32
+ var _utils = require("./utils");
33
+ Object.keys(_utils).forEach(function (key) {
34
+ if (key === "default" || key === "__esModule") return;
35
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
36
+ if (key in exports && exports[key] === _utils[key]) return;
37
+ Object.defineProperty(exports, key, {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _utils[key];
41
+ }
42
+ });
43
+ });
44
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45
+ const EMPTY_STATE = {
47
46
  bookingConfig: null,
48
47
  resourcesOrigin: [],
49
48
  resourcesOriginMap: {},
50
49
  date: null
51
50
  };
52
- var DEFAULT_BOOKING_CONFIG_PARAMS = {
53
- item_type: "appointment_booking",
54
- sub_type: "ticket"
51
+ const DEFAULT_BOOKING_CONFIG_PARAMS = {
52
+ item_type: 'appointment_booking',
53
+ sub_type: 'ticket'
55
54
  };
56
- var BOARD_CONFIG_CACHE = {
55
+ const BOARD_CONFIG_CACHE = {
57
56
  useCache: true,
58
57
  cache: {
59
- mode: import_request.RequestModeENUM.REMOTE_LOCAL,
60
- type: "indexDB",
58
+ mode: _request.RequestModeENUM.REMOTE_LOCAL,
59
+ type: 'indexDB',
61
60
  updateCache: true
62
61
  }
63
62
  };
64
- var RESOURCE_LIST_CACHE = {
63
+ const RESOURCE_LIST_CACHE = {
65
64
  useCache: true,
66
65
  cache: {
67
- mode: import_request.RequestModeENUM.REMOTE_LOCAL,
68
- type: "memory"
66
+ mode: _request.RequestModeENUM.REMOTE_LOCAL,
67
+ type: 'memory'
69
68
  }
70
69
  };
71
- var requestScopeIds = /* @__PURE__ */ new WeakMap();
72
- var nextRequestScopeId = 1;
73
- var sharedBookingConfigCache = /* @__PURE__ */ new Map();
74
- var sharedBookingConfigPending = /* @__PURE__ */ new Map();
75
- var sharedResourcesCache = /* @__PURE__ */ new Map();
76
- var sharedResourcesPending = /* @__PURE__ */ new Map();
70
+ const requestScopeIds = new WeakMap();
71
+ let nextRequestScopeId = 1;
72
+ const sharedBookingConfigCache = new Map();
73
+ const sharedBookingConfigPending = new Map();
74
+ const sharedResourcesCache = new Map();
75
+ const sharedResourcesPending = new Map();
76
+
77
+ /**
78
+ * 为 request 插件生成稳定作用域,避免不同 request 客户端之间共享缓存数据。
79
+ *
80
+ * @example
81
+ * const scopedKey = buildSharedCacheKey(requestPlugin, '{"sub_type":"ticket"}');
82
+ */
77
83
  function getRequestScopeId(request) {
78
84
  const key = request;
79
85
  const existed = requestScopeIds.get(key);
80
- if (existed)
81
- return existed;
86
+ if (existed) return existed;
82
87
  const id = nextRequestScopeId++;
83
88
  requestScopeIds.set(key, id);
84
89
  return id;
85
90
  }
91
+
92
+ /**
93
+ * 共享缓存 key = request 作用域 + 已稳定序列化的业务参数。
94
+ *
95
+ * @example
96
+ * const cacheKey = buildSharedCacheKey(requestPlugin, '2026-06-10|1,2');
97
+ */
86
98
  function buildSharedCacheKey(request, queryKey) {
87
99
  return `${getRequestScopeId(request)}:${queryKey}`;
88
100
  }
101
+
102
+ /**
103
+ * 清理跨实例共享缓存,仅供单元测试隔离使用。
104
+ *
105
+ * @example
106
+ * __clearBookingContextSharedCacheForTest();
107
+ */
89
108
  function __clearBookingContextSharedCacheForTest() {
90
109
  sharedBookingConfigCache.clear();
91
110
  sharedBookingConfigPending.clear();
92
111
  sharedResourcesCache.clear();
93
112
  sharedResourcesPending.clear();
94
113
  }
114
+
115
+ /**
116
+ * 把多形态 date 入参 normalize 成字符串。
117
+ * - dayjs 实例:调用 format()(无参 ISO)。
118
+ * - Date 实例:toISOString()。
119
+ * - 字符串:原样保留。
120
+ * - null/undefined/空串:→ null。
121
+ */
95
122
  function normalizeDate(input) {
96
- if (input === null || input === void 0)
97
- return null;
98
- if (typeof input === "string")
99
- return input || null;
100
- if (input instanceof Date)
101
- return input.toISOString();
102
- if (typeof input.format === "function") {
123
+ if (input === null || input === undefined) return null;
124
+ if (typeof input === 'string') return input || null;
125
+ if (input instanceof Date) return input.toISOString();
126
+ if (typeof input.format === 'function') {
103
127
  try {
104
128
  return input.format() || null;
105
129
  } catch {
@@ -108,52 +132,67 @@ function normalizeDate(input) {
108
132
  }
109
133
  return null;
110
134
  }
135
+
136
+ /** 资源接口使用的 `YYYY-MM-DD` 日期串。 */
111
137
  function toScheduleQueryDate(input) {
112
138
  const normalized = normalizeDate(input);
113
- if (!normalized)
114
- return (0, import_dayjs.default)().format("YYYY-MM-DD");
115
- const parsed = (0, import_dayjs.default)(normalized);
116
- return parsed.isValid() ? parsed.format("YYYY-MM-DD") : (0, import_dayjs.default)().format("YYYY-MM-DD");
139
+ if (!normalized) return (0, _dayjs.default)().format('YYYY-MM-DD');
140
+ const parsed = (0, _dayjs.default)(normalized);
141
+ return parsed.isValid() ? parsed.format('YYYY-MM-DD') : (0, _dayjs.default)().format('YYYY-MM-DD');
117
142
  }
143
+
144
+ /**
145
+ * 由 resources 数组派生出以 id 为 key 的 map,便于 `getResourceByIds` 直接命中。
146
+ */
118
147
  function buildResourcesMap(resources) {
119
148
  const map = {};
120
- resources.forEach((resource) => {
121
- if (resource && resource.id !== void 0 && resource.id !== null) {
149
+ resources.forEach(resource => {
150
+ if (resource && resource.id !== undefined && resource.id !== null) {
122
151
  map[String(resource.id)] = resource;
123
152
  }
124
153
  });
125
154
  return map;
126
155
  }
156
+
157
+ /** 稳定序列化 config 查询参数,用于判断是否与上次 loadBookingConfig 一致。 */
127
158
  function buildBookingConfigQueryKey(params = {}) {
128
- const merged = { ...DEFAULT_BOOKING_CONFIG_PARAMS, ...params };
159
+ const merged = {
160
+ ...DEFAULT_BOOKING_CONFIG_PARAMS,
161
+ ...params
162
+ };
129
163
  const keys = Object.keys(merged).sort();
130
164
  const sorted = {};
131
- keys.forEach((k) => {
165
+ keys.forEach(k => {
132
166
  sorted[k] = merged[k];
133
167
  });
134
168
  return JSON.stringify(sorted);
135
169
  }
170
+
171
+ /** 稳定序列化资源列表查询(date + bookingIds),用于跳过重复 loadResources。 */
136
172
  function buildBookingResourcesQueryKey(params = {}) {
137
173
  const date = toScheduleQueryDate(params.date);
138
- const ids = (params.bookingIds || []).filter((id) => typeof id === "number" && Number.isFinite(id)).sort((a, b) => a - b);
139
- return `${date}|${ids.join(",")}`;
174
+ const ids = (params.bookingIds || []).filter(id => typeof id === 'number' && Number.isFinite(id)).sort((a, b) => a - b);
175
+ return `${date}|${ids.join(',')}`;
140
176
  }
141
- var BookingContextModule = class extends import_BaseModule.BaseModule {
177
+ class BookingContextModule extends _BaseModule.BaseModule {
178
+ defaultName = 'bookingContext';
179
+ defaultVersion = '1.0.0';
180
+ request;
181
+ store = {
182
+ ...EMPTY_STATE
183
+ };
184
+ /** 上次成功 loadBookingConfig 的 query key;命中则不再请求。 */
185
+ lastConfigQueryKey = null;
186
+ /** 上次成功 loadResources 的 query key(date|bookingIds);命中则不再请求。 */
187
+ lastResourcesQueryKey = null;
142
188
  constructor(name, version) {
143
189
  super(name, version);
144
- this.defaultName = "bookingContext";
145
- this.defaultVersion = "1.0.0";
146
- this.store = { ...EMPTY_STATE };
147
- /** 上次成功 loadBookingConfig 的 query key;命中则不再请求。 */
148
- this.lastConfigQueryKey = null;
149
- /** 上次成功 loadResources 的 query key(date|bookingIds);命中则不再请求。 */
150
- this.lastResourcesQueryKey = null;
151
190
  }
152
191
  async initialize(core, options = {}) {
153
192
  this.core = core;
154
- this.request = core.getPlugin("request");
193
+ this.request = core.getPlugin('request');
155
194
  if (!this.request) {
156
- throw new Error("BookingContextModule 需要 request 插件支持");
195
+ throw new Error('BookingContextModule 需要 request 插件支持');
157
196
  }
158
197
  this.store = {
159
198
  bookingConfig: null,
@@ -189,18 +228,14 @@ var BookingContextModule = class extends import_BaseModule.BaseModule {
189
228
  this.lastConfigQueryKey = configKey;
190
229
  return cached;
191
230
  }
192
- let pending = !options.forceRefresh ? sharedBookingConfigPending.get(sharedKey) : void 0;
231
+ let pending = !options.forceRefresh ? sharedBookingConfigPending.get(sharedKey) : undefined;
193
232
  if (!pending) {
194
233
  const requestPromise = (async () => {
195
234
  try {
196
- const res = await this.request.get(
197
- "/core/board/management/config",
198
- query,
199
- BOARD_CONFIG_CACHE
200
- );
201
- const config2 = (res == null ? void 0 : res.data) ?? null;
202
- sharedBookingConfigCache.set(sharedKey, config2);
203
- return config2;
235
+ const res = await this.request.get('/core/board/management/config', query, BOARD_CONFIG_CACHE);
236
+ const config = res?.data ?? null;
237
+ sharedBookingConfigCache.set(sharedKey, config);
238
+ return config;
204
239
  } finally {
205
240
  sharedBookingConfigPending.delete(sharedKey);
206
241
  }
@@ -229,18 +264,18 @@ var BookingContextModule = class extends import_BaseModule.BaseModule {
229
264
  this.lastResourcesQueryKey = resourcesKey;
230
265
  return this.getResourcesOrigin();
231
266
  }
232
- let pending = !options.forceRefresh ? sharedResourcesPending.get(sharedKey) : void 0;
267
+ let pending = !options.forceRefresh ? sharedResourcesPending.get(sharedKey) : undefined;
233
268
  if (!pending) {
234
269
  const requestPromise = (async () => {
235
270
  try {
236
- const res = await this.request.get(
237
- "/schedule/resource/list",
238
- { date },
239
- RESOURCE_LIST_CACHE
240
- );
241
- const { list: list2 } = (0, import_formatResourceList.formatResourceListAndMap)(res == null ? void 0 : res.data, params.bookingIds || []);
242
- sharedResourcesCache.set(sharedKey, list2);
243
- return list2;
271
+ const res = await this.request.get('/schedule/resource/list', {
272
+ date
273
+ }, RESOURCE_LIST_CACHE);
274
+ const {
275
+ list
276
+ } = (0, _formatResourceList.formatResourceListAndMap)(res?.data, params.bookingIds || []);
277
+ sharedResourcesCache.set(sharedKey, list);
278
+ return list;
244
279
  } finally {
245
280
  sharedResourcesPending.delete(sharedKey);
246
281
  }
@@ -253,12 +288,13 @@ var BookingContextModule = class extends import_BaseModule.BaseModule {
253
288
  this.lastResourcesQueryKey = resourcesKey;
254
289
  return this.getResourcesOrigin();
255
290
  }
291
+
256
292
  /**
257
293
  * store 内是否已具备与本次 init 入参等价的 config / resources(不再打接口)。
258
294
  */
259
295
  isBookingContextReady(params = {}) {
260
296
  const configKey = buildBookingConfigQueryKey(params.bookingConfigParams);
261
- const dateInput = params.date ?? this.store.date ?? (0, import_dayjs.default)();
297
+ const dateInput = params.date ?? this.store.date ?? (0, _dayjs.default)();
262
298
  const queryDate = toScheduleQueryDate(dateInput);
263
299
  const resourcesKey = buildBookingResourcesQueryKey({
264
300
  date: queryDate,
@@ -269,7 +305,7 @@ var BookingContextModule = class extends import_BaseModule.BaseModule {
269
305
  return configReady && resourcesReady;
270
306
  }
271
307
  async initBookingContext(params = {}) {
272
- const dateInput = params.date ?? this.store.date ?? (0, import_dayjs.default)();
308
+ const dateInput = params.date ?? this.store.date ?? (0, _dayjs.default)();
273
309
  const queryDate = toScheduleQueryDate(dateInput);
274
310
  this.setDate(dateInput);
275
311
  if (!params.forceRefresh && this.isBookingContextReady(params)) {
@@ -288,24 +324,18 @@ var BookingContextModule = class extends import_BaseModule.BaseModule {
288
324
  });
289
325
  }
290
326
  if (needResources) {
291
- await this.loadResources(
292
- {
293
- date: queryDate,
294
- bookingIds: params.bookingIds
295
- },
296
- {
297
- forceRefresh: params.forceRefresh
298
- }
299
- );
327
+ await this.loadResources({
328
+ date: queryDate,
329
+ bookingIds: params.bookingIds
330
+ }, {
331
+ forceRefresh: params.forceRefresh
332
+ });
300
333
  }
301
334
  return this.getState();
302
335
  }
303
336
  setBookingConfig(config) {
304
337
  this.store.bookingConfig = config || null;
305
- this.core.effects.emit(
306
- `${this.name}:${import_types.BookingContextEvent.OnBookingConfigChange}`,
307
- this.store.bookingConfig
308
- );
338
+ this.core.effects.emit(`${this.name}:${_types.BookingContextEvent.OnBookingConfigChange}`, this.store.bookingConfig);
309
339
  }
310
340
  getBookingConfig() {
311
341
  return this.store.bookingConfig;
@@ -314,7 +344,7 @@ var BookingContextModule = class extends import_BaseModule.BaseModule {
314
344
  const list = Array.isArray(resources) ? resources : [];
315
345
  this.store.resourcesOrigin = list;
316
346
  this.store.resourcesOriginMap = buildResourcesMap(list);
317
- this.core.effects.emit(`${this.name}:${import_types.BookingContextEvent.OnResourcesChange}`, {
347
+ this.core.effects.emit(`${this.name}:${_types.BookingContextEvent.OnResourcesChange}`, {
318
348
  resourcesOrigin: this.store.resourcesOrigin,
319
349
  resourcesOriginMap: this.store.resourcesOriginMap
320
350
  });
@@ -327,7 +357,7 @@ var BookingContextModule = class extends import_BaseModule.BaseModule {
327
357
  }
328
358
  setDate(date) {
329
359
  this.store.date = normalizeDate(date);
330
- this.core.effects.emit(`${this.name}:${import_types.BookingContextEvent.OnDateChange}`, this.store.date);
360
+ this.core.effects.emit(`${this.name}:${_types.BookingContextEvent.OnDateChange}`, this.store.date);
331
361
  }
332
362
  getDate() {
333
363
  return this.store.date;
@@ -349,20 +379,12 @@ var BookingContextModule = class extends import_BaseModule.BaseModule {
349
379
  resourcesOriginMap: {},
350
380
  date: null
351
381
  };
352
- this.core.effects.emit(`${this.name}:${import_types.BookingContextEvent.OnBookingConfigChange}`, null);
353
- this.core.effects.emit(`${this.name}:${import_types.BookingContextEvent.OnResourcesChange}`, {
382
+ this.core.effects.emit(`${this.name}:${_types.BookingContextEvent.OnBookingConfigChange}`, null);
383
+ this.core.effects.emit(`${this.name}:${_types.BookingContextEvent.OnResourcesChange}`, {
354
384
  resourcesOrigin: [],
355
385
  resourcesOriginMap: {}
356
386
  });
357
- this.core.effects.emit(`${this.name}:${import_types.BookingContextEvent.OnDateChange}`, null);
387
+ this.core.effects.emit(`${this.name}:${_types.BookingContextEvent.OnDateChange}`, null);
358
388
  }
359
- };
360
- // Annotate the CommonJS export names for ESM import in node:
361
- 0 && (module.exports = {
362
- BookingContextModule,
363
- __clearBookingContextSharedCacheForTest,
364
- buildBookingConfigQueryKey,
365
- buildBookingResourcesQueryKey,
366
- ...require("./types"),
367
- ...require("./utils")
368
- });
389
+ }
390
+ exports.BookingContextModule = BookingContextModule;
@@ -1,34 +1,48 @@
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/modules/BookingContext/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- BookingContextEvent: () => BookingContextEvent
23
- });
24
- module.exports = __toCommonJS(types_exports);
25
- var BookingContextEvent = /* @__PURE__ */ ((BookingContextEvent2) => {
26
- BookingContextEvent2["OnBookingConfigChange"] = "onBookingConfigChange";
27
- BookingContextEvent2["OnResourcesChange"] = "onResourcesChange";
28
- BookingContextEvent2["OnDateChange"] = "onDateChange";
29
- return BookingContextEvent2;
30
- })(BookingContextEvent || {});
31
- // Annotate the CommonJS export names for ESM import in node:
32
- 0 && (module.exports = {
33
- BookingContextEvent
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
34
5
  });
6
+ exports.BookingContextEvent = void 0;
7
+ /**
8
+ * BookingContext 子模块:承载「预约 UI 上下文」三件套。
9
+ *
10
+ * - bookingConfig:来自 `/core/board/management/config` 的整套预约配置(service_time / resource_tab /
11
+ * appointment_subject / subject_require / stock_setting / basic / capacity 等)。
12
+ * - resourcesOrigin / resourcesOriginMap:来自 `/schedule/resource/list` 的资源全集,含 times / event_list /
13
+ * combined_resource 等运行态信息,是 getResourceByIds / getResourceTimeIsUsable 的输入。
14
+ * - date:当前选择的日期(dayjs 或 ISO 字符串,迁移后内部统一存原始 ISO 字符串,UI 可自行解析)。
15
+ *
16
+ * 设计原则(与 BookingTicket 现状对齐):
17
+ * - 默认由 `loadBookingConfig` / `loadResources` 拉取并写入 store;也支持消费方 `set*` 直接灌入(复用 ticketBooking 已拉到的数据)。
18
+ * - 所有读 API 返回浅克隆(数组)或原引用(map / config),避免 UI 写穿。
19
+ */
20
+ /** `loadBookingConfig` 入参,与 ticketBooking `getBookingConfig` 一致。 */
21
+ /** `loadResources` 入参,与 info2 `getResourceList` 一致。 */
22
+ /** `initBookingContext` 入参(BookingTicket 聚合入口)。 */
23
+ /**
24
+ * 资源全集 map:key 为资源 id(数字),value 为资源原始对象,含 times / event_list 等运行态。
25
+ * 这里只声明 Record 形态;具体字段保留 `any`,与 ticketBooking 现网传入的数据形状兼容。
26
+ */
27
+ /**
28
+ * 形参 booking_config(结构来自 `/core/board/management/config` 接口)。
29
+ * OS 不强制 schema,保留 `Record<string, any>` 兼容现网;常用路径文档化在 SDK docs。
30
+ */
31
+ /**
32
+ * 日期入参:接受 dayjs 实例、ISO 字符串、Date 实例;内部统一 normalize 为 ISO 字符串保存。
33
+ */
34
+ /**
35
+ * 内部 store 形态。`resourcesOriginMap` 由 `setResources` 派生,不允许外部直接 set。
36
+ */
37
+ /**
38
+ * BookingContextModule 对外 API(给 BookingTicket / SDK Provider 透传消费)。
39
+ */
40
+ /**
41
+ * BookingContextModule 事件名常量(采用 `${this.name}:` 前缀,与现有模块一致)。
42
+ */
43
+ let BookingContextEvent = exports.BookingContextEvent = /*#__PURE__*/function (BookingContextEvent) {
44
+ BookingContextEvent["OnBookingConfigChange"] = "onBookingConfigChange";
45
+ BookingContextEvent["OnResourcesChange"] = "onResourcesChange";
46
+ BookingContextEvent["OnDateChange"] = "onDateChange";
47
+ return BookingContextEvent;
48
+ }({});