@pisell/pisellos 2.1.151 → 2.1.152

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 (201) hide show
  1. package/dist/apis/picoding.d.ts +0 -0
  2. package/dist/apis/picoding.js +1 -0
  3. package/dist/index.d.ts +0 -1
  4. package/dist/index.js +0 -1
  5. package/dist/model/strategy/adapter/promotion/evaluator.js +26 -99
  6. package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +0 -2
  7. package/dist/model/strategy/adapter/walletPass/evaluator.js +8 -61
  8. package/dist/model/strategy/adapter/walletPass/locales.js +3 -12
  9. package/dist/model/strategy/engine.d.ts +5 -18
  10. package/dist/model/strategy/engine.js +45 -145
  11. package/dist/model/strategy/type.d.ts +0 -17
  12. package/dist/model/strategy/type.js +0 -4
  13. package/dist/modules/Cart/types.d.ts +0 -2
  14. package/dist/modules/Cart/utils/cartProduct.js +25 -56
  15. package/dist/modules/Discount/index.d.ts +9 -3
  16. package/dist/modules/Discount/index.js +103 -11
  17. package/dist/modules/Discount/types.d.ts +8 -19
  18. package/dist/modules/OpenData/index.d.ts +24 -0
  19. package/dist/modules/OpenData/index.js +173 -0
  20. package/dist/modules/OpenData/types.d.ts +73 -0
  21. package/dist/modules/OpenData/types.js +1 -0
  22. package/dist/modules/OpenData/utils.d.ts +2 -0
  23. package/dist/modules/OpenData/utils.js +75 -0
  24. package/dist/modules/Order/index.d.ts +66 -1
  25. package/dist/modules/Order/index.js +906 -30
  26. package/dist/modules/Order/types.d.ts +174 -12
  27. package/dist/modules/Order/types.js +2 -0
  28. package/dist/modules/Order/utils.d.ts +118 -0
  29. package/dist/modules/Order/utils.js +586 -2
  30. package/dist/modules/Payment/index.d.ts +1 -2
  31. package/dist/modules/Payment/index.js +7 -10
  32. package/dist/modules/Payment/utils.js +0 -3
  33. package/dist/modules/Payment/walletpass.d.ts +0 -23
  34. package/dist/modules/Payment/walletpass.js +95 -191
  35. package/dist/modules/Product/utils.js +2 -2
  36. package/dist/modules/ProductList/index.d.ts +1 -1
  37. package/dist/modules/ProductList/index.js +4 -3
  38. package/dist/modules/Quotation/index.d.ts +48 -0
  39. package/dist/modules/Quotation/index.js +248 -0
  40. package/dist/modules/Quotation/types.d.ts +42 -0
  41. package/dist/modules/Quotation/types.js +1 -0
  42. package/dist/modules/Rules/index.d.ts +5 -9
  43. package/dist/modules/Rules/index.js +168 -677
  44. package/dist/modules/Rules/types.d.ts +0 -2
  45. package/dist/modules/SalesSummary/index.d.ts +63 -0
  46. package/dist/modules/SalesSummary/index.js +174 -0
  47. package/dist/modules/SalesSummary/types.d.ts +60 -0
  48. package/dist/modules/SalesSummary/types.js +1 -0
  49. package/dist/modules/SalesSummary/utils.d.ts +30 -0
  50. package/dist/modules/SalesSummary/utils.js +480 -0
  51. package/dist/modules/ScanOrderLogger/index.d.ts +23 -0
  52. package/dist/modules/ScanOrderLogger/index.js +174 -0
  53. package/dist/modules/ScanOrderLogger/providers/feishu.d.ts +2 -0
  54. package/dist/modules/ScanOrderLogger/providers/feishu.js +221 -0
  55. package/dist/modules/ScanOrderLogger/providers/grafana.d.ts +2 -0
  56. package/dist/modules/ScanOrderLogger/providers/grafana.js +50 -0
  57. package/dist/modules/ScanOrderLogger/types.d.ts +53 -0
  58. package/dist/modules/ScanOrderLogger/types.js +1 -0
  59. package/dist/modules/Schedule/getDateIsInSchedule.js +11 -18
  60. package/dist/modules/Schedule/utils.d.ts +1 -1
  61. package/dist/modules/Summary/types.d.ts +0 -2
  62. package/dist/modules/Summary/utils.d.ts +3 -9
  63. package/dist/modules/Summary/utils.js +41 -52
  64. package/dist/modules/index.d.ts +4 -0
  65. package/dist/modules/index.js +5 -1
  66. package/dist/plugins/window.d.ts +0 -2
  67. package/dist/solution/BookingByStep/index.d.ts +1 -2
  68. package/dist/solution/BookingByStep/index.js +46 -43
  69. package/dist/solution/BookingByStep/types.d.ts +3 -1
  70. package/dist/solution/BookingByStep/types.js +5 -1
  71. package/dist/solution/BookingByStep/utils/timeslots.d.ts +3 -1
  72. package/dist/solution/BookingByStep/utils/timeslots.js +19 -12
  73. package/dist/solution/Checkout/index.js +0 -2
  74. package/dist/solution/ScanOrder/index.d.ts +152 -0
  75. package/dist/solution/ScanOrder/index.js +3132 -0
  76. package/dist/solution/ScanOrder/types.d.ts +287 -0
  77. package/dist/solution/ScanOrder/types.js +35 -0
  78. package/dist/solution/ScanOrder/utils.d.ts +167 -0
  79. package/dist/solution/ScanOrder/utils.js +764 -0
  80. package/dist/solution/ShopDiscount/index.d.ts +3 -2
  81. package/dist/solution/ShopDiscount/index.js +60 -59
  82. package/dist/solution/ShopDiscount/types.d.ts +1 -1
  83. package/dist/solution/ShopDiscount/types.js +1 -2
  84. package/dist/solution/ShopDiscount/utils.js +12 -26
  85. package/dist/solution/VenueBooking/index.d.ts +200 -0
  86. package/dist/solution/VenueBooking/index.js +3459 -0
  87. package/dist/solution/VenueBooking/sales-section-4-annotated.json +343 -0
  88. package/dist/solution/VenueBooking/types.d.ts +154 -0
  89. package/dist/solution/VenueBooking/types.js +21 -0
  90. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +11 -0
  91. package/dist/solution/VenueBooking/utils/dateSummary.js +104 -0
  92. package/dist/solution/VenueBooking/utils/resource.d.ts +14 -0
  93. package/dist/solution/VenueBooking/utils/resource.js +131 -0
  94. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +38 -0
  95. package/dist/solution/VenueBooking/utils/slotMerge.js +239 -0
  96. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +32 -0
  97. package/dist/solution/VenueBooking/utils/timeSlot.js +453 -0
  98. package/dist/solution/VenueBooking/utils.d.ts +1 -0
  99. package/dist/solution/VenueBooking/utils.js +1 -0
  100. package/dist/solution/index.d.ts +2 -0
  101. package/dist/solution/index.js +3 -1
  102. package/lib/apis/picoding.d.ts +0 -0
  103. package/lib/apis/picoding.js +0 -0
  104. package/lib/index.d.ts +0 -1
  105. package/lib/index.js +1 -3
  106. package/lib/model/strategy/adapter/promotion/evaluator.js +8 -57
  107. package/lib/model/strategy/adapter/promotion/index.js +0 -49
  108. package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +0 -2
  109. package/lib/model/strategy/adapter/walletPass/evaluator.js +3 -34
  110. package/lib/model/strategy/adapter/walletPass/locales.js +3 -12
  111. package/lib/model/strategy/engine.d.ts +5 -18
  112. package/lib/model/strategy/engine.js +21 -85
  113. package/lib/model/strategy/type.d.ts +0 -17
  114. package/lib/modules/Cart/types.d.ts +0 -2
  115. package/lib/modules/Cart/utils/cartProduct.js +12 -39
  116. package/lib/modules/Discount/index.d.ts +9 -3
  117. package/lib/modules/Discount/index.js +65 -4
  118. package/lib/modules/Discount/types.d.ts +8 -19
  119. package/lib/modules/OpenData/index.d.ts +24 -0
  120. package/lib/modules/OpenData/index.js +119 -0
  121. package/lib/modules/OpenData/types.d.ts +73 -0
  122. package/lib/modules/OpenData/types.js +17 -0
  123. package/lib/modules/OpenData/utils.d.ts +2 -0
  124. package/lib/modules/OpenData/utils.js +111 -0
  125. package/lib/modules/Order/index.d.ts +66 -1
  126. package/lib/modules/Order/index.js +515 -1
  127. package/lib/modules/Order/types.d.ts +174 -12
  128. package/lib/modules/Order/utils.d.ts +118 -0
  129. package/lib/modules/Order/utils.js +483 -2
  130. package/lib/modules/Payment/index.d.ts +1 -2
  131. package/lib/modules/Payment/index.js +0 -1
  132. package/lib/modules/Payment/utils.js +0 -3
  133. package/lib/modules/Payment/walletpass.d.ts +0 -23
  134. package/lib/modules/Payment/walletpass.js +17 -94
  135. package/lib/modules/Product/utils.js +2 -2
  136. package/lib/modules/ProductList/index.d.ts +1 -1
  137. package/lib/modules/ProductList/index.js +5 -3
  138. package/lib/modules/Quotation/index.d.ts +48 -0
  139. package/lib/modules/Quotation/index.js +152 -0
  140. package/lib/modules/Quotation/types.d.ts +42 -0
  141. package/lib/modules/Quotation/types.js +17 -0
  142. package/lib/modules/Rules/index.d.ts +5 -9
  143. package/lib/modules/Rules/index.js +288 -780
  144. package/lib/modules/Rules/types.d.ts +0 -2
  145. package/lib/modules/SalesSummary/index.d.ts +63 -0
  146. package/lib/modules/SalesSummary/index.js +105 -0
  147. package/lib/modules/SalesSummary/types.d.ts +60 -0
  148. package/lib/modules/SalesSummary/types.js +17 -0
  149. package/lib/modules/SalesSummary/utils.d.ts +30 -0
  150. package/lib/modules/SalesSummary/utils.js +420 -0
  151. package/lib/modules/ScanOrderLogger/index.d.ts +23 -0
  152. package/lib/modules/ScanOrderLogger/index.js +147 -0
  153. package/lib/modules/ScanOrderLogger/providers/feishu.d.ts +2 -0
  154. package/lib/modules/ScanOrderLogger/providers/feishu.js +157 -0
  155. package/lib/modules/ScanOrderLogger/providers/grafana.d.ts +2 -0
  156. package/lib/modules/ScanOrderLogger/providers/grafana.js +52 -0
  157. package/lib/modules/ScanOrderLogger/types.d.ts +53 -0
  158. package/lib/modules/ScanOrderLogger/types.js +17 -0
  159. package/lib/modules/Schedule/getDateIsInSchedule.js +9 -11
  160. package/lib/modules/Schedule/utils.d.ts +1 -1
  161. package/lib/modules/Summary/types.d.ts +0 -2
  162. package/lib/modules/Summary/utils.d.ts +3 -9
  163. package/lib/modules/Summary/utils.js +22 -31
  164. package/lib/modules/index.d.ts +4 -0
  165. package/lib/modules/index.js +9 -1
  166. package/lib/plugins/window.d.ts +0 -2
  167. package/lib/solution/BookingByStep/index.d.ts +1 -2
  168. package/lib/solution/BookingByStep/index.js +6 -4
  169. package/lib/solution/BookingByStep/types.d.ts +3 -1
  170. package/lib/solution/BookingByStep/types.js +10 -0
  171. package/lib/solution/BookingByStep/utils/timeslots.d.ts +3 -1
  172. package/lib/solution/BookingByStep/utils/timeslots.js +19 -11
  173. package/lib/solution/Checkout/index.js +0 -2
  174. package/lib/solution/ScanOrder/index.d.ts +152 -0
  175. package/lib/solution/ScanOrder/index.js +1901 -0
  176. package/lib/solution/ScanOrder/types.d.ts +287 -0
  177. package/lib/solution/ScanOrder/types.js +36 -0
  178. package/lib/solution/ScanOrder/utils.d.ts +167 -0
  179. package/lib/solution/ScanOrder/utils.js +635 -0
  180. package/lib/solution/ShopDiscount/index.d.ts +3 -2
  181. package/lib/solution/ShopDiscount/index.js +19 -25
  182. package/lib/solution/ShopDiscount/types.d.ts +1 -1
  183. package/lib/solution/ShopDiscount/utils.js +6 -10
  184. package/lib/solution/VenueBooking/index.d.ts +200 -0
  185. package/lib/solution/VenueBooking/index.js +1926 -0
  186. package/lib/solution/VenueBooking/sales-section-4-annotated.json +343 -0
  187. package/lib/solution/VenueBooking/types.d.ts +154 -0
  188. package/lib/solution/VenueBooking/types.js +44 -0
  189. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +11 -0
  190. package/lib/solution/VenueBooking/utils/dateSummary.js +110 -0
  191. package/lib/solution/VenueBooking/utils/resource.d.ts +14 -0
  192. package/lib/solution/VenueBooking/utils/resource.js +92 -0
  193. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +38 -0
  194. package/lib/solution/VenueBooking/utils/slotMerge.js +237 -0
  195. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +32 -0
  196. package/lib/solution/VenueBooking/utils/timeSlot.js +339 -0
  197. package/lib/solution/VenueBooking/utils.d.ts +1 -0
  198. package/lib/solution/VenueBooking/utils.js +69 -0
  199. package/lib/solution/index.d.ts +2 -0
  200. package/lib/solution/index.js +5 -1
  201. package/package.json +1 -1
@@ -0,0 +1,453 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
3
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
5
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
6
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
10
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
11
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
12
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+ import dayjs from 'dayjs';
19
+ import Decimal from 'decimal.js';
20
+ export function isBusinessHoursCrossDay(config) {
21
+ var _config$businessStart = config.businessStartTime.split(':').map(Number),
22
+ _config$businessStart2 = _slicedToArray(_config$businessStart, 2),
23
+ startH = _config$businessStart2[0],
24
+ startM = _config$businessStart2[1];
25
+ var _config$businessEndTi = config.businessEndTime.split(':').map(Number),
26
+ _config$businessEndTi2 = _slicedToArray(_config$businessEndTi, 2),
27
+ endH = _config$businessEndTi2[0],
28
+ endM = _config$businessEndTi2[1];
29
+ return endH < startH || endH === startH && endM <= startM;
30
+ }
31
+ export function generateTimeLabels(config) {
32
+ var slotDurationMinutes = config.slotDurationMinutes,
33
+ businessStartTime = config.businessStartTime,
34
+ businessEndTime = config.businessEndTime;
35
+ var labels = [];
36
+ var baseDate = '2000-01-01';
37
+ var cursor = dayjs("".concat(baseDate, " ").concat(businessStartTime));
38
+ var crossDay = isBusinessHoursCrossDay(config);
39
+ var endBase = crossDay ? '2000-01-02' : baseDate;
40
+ var end = dayjs("".concat(endBase, " ").concat(businessEndTime));
41
+ while (cursor.isBefore(end)) {
42
+ labels.push(cursor.format('HH:mm'));
43
+ cursor = cursor.add(slotDurationMinutes, 'minute');
44
+ }
45
+ return labels;
46
+ }
47
+ export function isSlotOccupied(slotStart, slotEnd, occupiedTimes) {
48
+ var _iterator = _createForOfIteratorHelper(occupiedTimes),
49
+ _step;
50
+ try {
51
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
52
+ var occupied = _step.value;
53
+ var occStart = dayjs(occupied.start_at);
54
+ var occEnd = dayjs(occupied.end_at);
55
+ if (slotStart.isBefore(occEnd) && slotEnd.isAfter(occStart)) {
56
+ return true;
57
+ }
58
+ }
59
+ } catch (err) {
60
+ _iterator.e(err);
61
+ } finally {
62
+ _iterator.f();
63
+ }
64
+ return false;
65
+ }
66
+ function isSlotWithinResourceTimes(slotStart, slotEnd, resourceTimes) {
67
+ var _iterator2 = _createForOfIteratorHelper(resourceTimes),
68
+ _step2;
69
+ try {
70
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
71
+ var t = _step2.value;
72
+ var tStart = dayjs(t.start_at);
73
+ var tEnd = dayjs(t.end_at);
74
+ if (slotStart.isBefore(tEnd) && slotEnd.isAfter(tStart)) return true;
75
+ }
76
+ } catch (err) {
77
+ _iterator2.e(err);
78
+ } finally {
79
+ _iterator2.f();
80
+ }
81
+ return false;
82
+ }
83
+ function getResourceTimesForDate(resource, date, config) {
84
+ var crossDay = isBusinessHoursCrossDay(config);
85
+ var dayStart = dayjs("".concat(date, " ").concat(config.businessStartTime));
86
+ var dayEnd = crossDay ? dayjs("".concat(date, " ").concat(config.businessEndTime)).add(1, 'day') : dayjs("".concat(date, " ").concat(config.businessEndTime));
87
+ return resource.times.filter(function (t) {
88
+ var tStart = dayjs(t.start_at);
89
+ var tEnd = dayjs(t.end_at);
90
+ return tStart.isBefore(dayEnd) && tEnd.isAfter(dayStart);
91
+ });
92
+ }
93
+ export function collectEventsForDate(resource, date, config) {
94
+ var timesForDate = getResourceTimesForDate(resource, date, config);
95
+ var events = [];
96
+ var _iterator3 = _createForOfIteratorHelper(timesForDate),
97
+ _step3;
98
+ try {
99
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
100
+ var t = _step3.value;
101
+ if (Array.isArray(t.event_list)) {
102
+ var _iterator4 = _createForOfIteratorHelper(t.event_list),
103
+ _step4;
104
+ try {
105
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
106
+ var _evt$pax;
107
+ var evt = _step4.value;
108
+ events.push({
109
+ start_at: evt.start_at,
110
+ end_at: evt.end_at,
111
+ pax: (_evt$pax = evt.pax) !== null && _evt$pax !== void 0 ? _evt$pax : 1
112
+ });
113
+ }
114
+ } catch (err) {
115
+ _iterator4.e(err);
116
+ } finally {
117
+ _iterator4.f();
118
+ }
119
+ }
120
+ }
121
+ } catch (err) {
122
+ _iterator3.e(err);
123
+ } finally {
124
+ _iterator3.f();
125
+ }
126
+ return events;
127
+ }
128
+ export function computeSlotStatus(params) {
129
+ var slotStart = params.slotStart,
130
+ slotEnd = params.slotEnd,
131
+ events = params.events,
132
+ resourceType = params.resourceType,
133
+ capacity = params.capacity;
134
+ var overlapping = events.filter(function (evt) {
135
+ var evtStart = dayjs(evt.start_at);
136
+ var evtEnd = dayjs(evt.end_at);
137
+ return slotStart.isBefore(evtEnd) && slotEnd.isAfter(evtStart);
138
+ });
139
+ if (resourceType === 'single') {
140
+ if (overlapping.length > 0) return {
141
+ status: 'occupied',
142
+ remainingCapacity: 0
143
+ };
144
+ return {
145
+ status: 'available',
146
+ remainingCapacity: 1
147
+ };
148
+ }
149
+ var usedCapacity = overlapping.reduce(function (sum, evt) {
150
+ return sum + evt.pax;
151
+ }, 0);
152
+ var remaining = Math.max(0, capacity - usedCapacity);
153
+ if (remaining <= 0) return {
154
+ status: 'occupied',
155
+ remainingCapacity: 0
156
+ };
157
+ if (remaining < capacity) return {
158
+ status: 'partially_occupied',
159
+ remainingCapacity: remaining
160
+ };
161
+ return {
162
+ status: 'available',
163
+ remainingCapacity: remaining
164
+ };
165
+ }
166
+
167
+ /**
168
+ * 合并多个子商品的同一个时段为一个"外层 slot"。
169
+ * - status 取优先级最高的(available > partially_occupied > occupied > unavailable / past)
170
+ * - price 取非空子 slot 中最小的那个
171
+ * - 其它字段使用第一个参考子 slot(外层 slot 不带 productId)
172
+ */
173
+ function mergeSubSlots(subSlots) {
174
+ var priority = {
175
+ available: 5,
176
+ partially_occupied: 4,
177
+ occupied: 3,
178
+ unavailable: 2,
179
+ past: 1
180
+ };
181
+ var best = subSlots[0];
182
+ var _iterator5 = _createForOfIteratorHelper(subSlots),
183
+ _step5;
184
+ try {
185
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
186
+ var _priority$slot$status, _priority$best$status;
187
+ var slot = _step5.value;
188
+ if (((_priority$slot$status = priority[slot.status]) !== null && _priority$slot$status !== void 0 ? _priority$slot$status : 0) > ((_priority$best$status = priority[best.status]) !== null && _priority$best$status !== void 0 ? _priority$best$status : 0)) best = slot;
189
+ }
190
+ } catch (err) {
191
+ _iterator5.e(err);
192
+ } finally {
193
+ _iterator5.f();
194
+ }
195
+ var minPrice = null;
196
+ var _iterator6 = _createForOfIteratorHelper(subSlots),
197
+ _step6;
198
+ try {
199
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
200
+ var _slot = _step6.value;
201
+ if (_slot.price == null) continue;
202
+ var decimal = new Decimal(_slot.price || '0');
203
+ if (!minPrice || decimal.lt(minPrice)) minPrice = decimal;
204
+ }
205
+ } catch (err) {
206
+ _iterator6.e(err);
207
+ } finally {
208
+ _iterator6.f();
209
+ }
210
+ return {
211
+ startTime: best.startTime,
212
+ endTime: best.endTime,
213
+ status: best.status,
214
+ price: minPrice ? minPrice.toFixed(2) : null,
215
+ resourceId: best.resourceId,
216
+ resourceFormId: best.resourceFormId,
217
+ capacity: best.capacity,
218
+ remainingCapacity: best.remainingCapacity
219
+ };
220
+ }
221
+ function buildProductSlots(params) {
222
+ var date = params.date,
223
+ config = params.config,
224
+ resource = params.resource,
225
+ mapping = params.mapping,
226
+ timeLabels = params.timeLabels,
227
+ timesForDate = params.timesForDate,
228
+ events = params.events,
229
+ resCapacity = params.resCapacity,
230
+ now = params.now,
231
+ crossDay = params.crossDay,
232
+ quotationPriceMap = params.quotationPriceMap,
233
+ childRawResources = params.childRawResources,
234
+ childTimesCache = params.childTimesCache,
235
+ childEventsCache = params.childEventsCache,
236
+ config_businessStartHour = params.config_businessStartHour;
237
+ var slots = [];
238
+ var _iterator7 = _createForOfIteratorHelper(timeLabels),
239
+ _step7;
240
+ try {
241
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
242
+ var _quotationPriceMap$ge;
243
+ var label = _step7.value;
244
+ var _label$split$map = label.split(':').map(Number),
245
+ _label$split$map2 = _slicedToArray(_label$split$map, 1),
246
+ h = _label$split$map2[0];
247
+ var isNextDay = crossDay && h < config_businessStartHour;
248
+ var slotDate = isNextDay ? dayjs(date).add(1, 'day').format('YYYY-MM-DD') : date;
249
+ var slotStart = dayjs("".concat(slotDate, " ").concat(label));
250
+ var slotEnd = slotStart.add(config.slotDurationMinutes, 'minute');
251
+ var status = void 0;
252
+ var remainingCapacity = null;
253
+ if (slotStart.isBefore(now)) {
254
+ status = 'past';
255
+ } else if (!isSlotWithinResourceTimes(slotStart, slotEnd, timesForDate)) {
256
+ status = 'unavailable';
257
+ } else {
258
+ var result = computeSlotStatus({
259
+ slotStart: slotStart,
260
+ slotEnd: slotEnd,
261
+ events: events,
262
+ resourceType: mapping.resourceType,
263
+ capacity: resCapacity
264
+ });
265
+ status = result.status;
266
+ remainingCapacity = result.remainingCapacity;
267
+ if (status !== 'occupied' && childRawResources && childRawResources.length) {
268
+ for (var i = 0; i < childRawResources.length; i++) {
269
+ var _childTimesCache$i, _childEventsCache$i, _child$capacity;
270
+ var child = childRawResources[i];
271
+ var childTimes = (_childTimesCache$i = childTimesCache === null || childTimesCache === void 0 ? void 0 : childTimesCache[i]) !== null && _childTimesCache$i !== void 0 ? _childTimesCache$i : getResourceTimesForDate(child, date, config);
272
+ var childEvents = (_childEventsCache$i = childEventsCache === null || childEventsCache === void 0 ? void 0 : childEventsCache[i]) !== null && _childEventsCache$i !== void 0 ? _childEventsCache$i : collectEventsForDate(child, date, config);
273
+ if (!isSlotWithinResourceTimes(slotStart, slotEnd, childTimes)) {
274
+ status = 'unavailable';
275
+ remainingCapacity = null;
276
+ break;
277
+ }
278
+ var childType = child.type || 'single';
279
+ var childResult = computeSlotStatus({
280
+ slotStart: slotStart,
281
+ slotEnd: slotEnd,
282
+ events: childEvents,
283
+ resourceType: childType,
284
+ capacity: (_child$capacity = child.capacity) !== null && _child$capacity !== void 0 ? _child$capacity : 1
285
+ });
286
+ if (childResult.status === 'occupied') {
287
+ status = 'occupied';
288
+ remainingCapacity = 0;
289
+ break;
290
+ }
291
+ if (childResult.status === 'partially_occupied' && status === 'available') {
292
+ var _remainingCapacity;
293
+ status = 'partially_occupied';
294
+ remainingCapacity = Math.min((_remainingCapacity = remainingCapacity) !== null && _remainingCapacity !== void 0 ? _remainingCapacity : childResult.remainingCapacity, childResult.remainingCapacity);
295
+ }
296
+ }
297
+ }
298
+ }
299
+ var isBookable = status === 'available' || status === 'partially_occupied';
300
+ var slotStartStr = slotStart.format('YYYY-MM-DD HH:mm');
301
+ slots.push({
302
+ startTime: slotStartStr,
303
+ endTime: slotEnd.format('YYYY-MM-DD HH:mm'),
304
+ status: status,
305
+ price: isBookable ? (_quotationPriceMap$ge = quotationPriceMap === null || quotationPriceMap === void 0 ? void 0 : quotationPriceMap.get("".concat(mapping.productId, ":").concat(slotStartStr))) !== null && _quotationPriceMap$ge !== void 0 ? _quotationPriceMap$ge : mapping.price : null,
306
+ resourceId: resource.resourceId,
307
+ resourceFormId: resource.formId,
308
+ capacity: status === 'past' || status === 'unavailable' ? null : resCapacity,
309
+ remainingCapacity: remainingCapacity,
310
+ productId: mapping.productId
311
+ });
312
+ }
313
+ } catch (err) {
314
+ _iterator7.e(err);
315
+ } finally {
316
+ _iterator7.f();
317
+ }
318
+ return slots;
319
+ }
320
+ export function buildTimeSlotGrid(params) {
321
+ var date = params.date,
322
+ config = params.config,
323
+ rawResources = params.rawResources,
324
+ resourceProductMap = params.resourceProductMap,
325
+ quotationPriceMap = params.quotationPriceMap;
326
+ var timeLabels = generateTimeLabels(config);
327
+ var now = dayjs();
328
+ var crossDay = isBusinessHoursCrossDay(config);
329
+ var config_businessStartHour = Number(config.businessStartTime.split(':')[0]);
330
+ var rawResourceById = new Map();
331
+ var _iterator8 = _createForOfIteratorHelper(rawResources),
332
+ _step8;
333
+ try {
334
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
335
+ var item = _step8.value;
336
+ rawResourceById.set(item.resourceId, item);
337
+ }
338
+ } catch (err) {
339
+ _iterator8.e(err);
340
+ } finally {
341
+ _iterator8.f();
342
+ }
343
+ var resources = [];
344
+ var _iterator9 = _createForOfIteratorHelper(rawResources),
345
+ _step9;
346
+ try {
347
+ var _loop = function _loop() {
348
+ var _resource$capacity;
349
+ var resource = _step9.value;
350
+ var mappings = resourceProductMap.get(resource.resourceId);
351
+ if (!mappings || !mappings.length) return 1; // continue
352
+ var timesForDate = getResourceTimesForDate(resource, date, config);
353
+ var events = collectEventsForDate(resource, date, config);
354
+ var resCapacity = (_resource$capacity = resource.capacity) !== null && _resource$capacity !== void 0 ? _resource$capacity : 1;
355
+ var combined = resource.combined_resource;
356
+ var isCombined = !!(combined && combined.status === 1 && Array.isArray(combined.resource_ids) && combined.resource_ids.length);
357
+ var childRawResources = isCombined ? combined.resource_ids.map(function (id) {
358
+ return rawResourceById.get(id);
359
+ }).filter(function (r) {
360
+ return !!r;
361
+ }) : undefined;
362
+ var childTimesCache = childRawResources === null || childRawResources === void 0 ? void 0 : childRawResources.map(function (child) {
363
+ return getResourceTimesForDate(child, date, config);
364
+ });
365
+ var childEventsCache = childRawResources === null || childRawResources === void 0 ? void 0 : childRawResources.map(function (child) {
366
+ return collectEventsForDate(child, date, config);
367
+ });
368
+ var subRows = mappings.map(function (mapping) {
369
+ var productSlots = buildProductSlots({
370
+ date: date,
371
+ config: config,
372
+ resource: resource,
373
+ mapping: mapping,
374
+ timeLabels: timeLabels,
375
+ timesForDate: timesForDate,
376
+ events: events,
377
+ resCapacity: resCapacity,
378
+ now: now,
379
+ crossDay: crossDay,
380
+ quotationPriceMap: quotationPriceMap,
381
+ childRawResources: childRawResources,
382
+ childTimesCache: childTimesCache,
383
+ childEventsCache: childEventsCache,
384
+ config_businessStartHour: config_businessStartHour
385
+ });
386
+ return {
387
+ productId: mapping.productId,
388
+ productTitle: mapping.productTitle,
389
+ price: mapping.price,
390
+ slots: productSlots
391
+ };
392
+ });
393
+ var hasMultipleProducts = subRows.length > 1;
394
+ var primary = mappings[0];
395
+ var outerSlots;
396
+ if (hasMultipleProducts) {
397
+ outerSlots = timeLabels.map(function (_label, slotIndex) {
398
+ var group = subRows.map(function (row) {
399
+ return row.slots[slotIndex];
400
+ });
401
+ return mergeSubSlots(group);
402
+ });
403
+ } else {
404
+ outerSlots = subRows[0].slots.map(function (slot) {
405
+ return _objectSpread(_objectSpread({}, slot), {}, {
406
+ productId: undefined
407
+ });
408
+ });
409
+ }
410
+ var row = {
411
+ resourceId: resource.resourceId,
412
+ resourceFormId: resource.formId,
413
+ resourceName: resource.main_field || primary.resourceName,
414
+ productId: primary.productId,
415
+ productTitle: primary.productTitle,
416
+ slots: outerSlots
417
+ };
418
+ if (hasMultipleProducts) {
419
+ row.products = subRows;
420
+ row.hasMultipleProducts = true;
421
+ }
422
+ if (isCombined && combined) {
423
+ row.combinedResource = {
424
+ resourceIds: _toConsumableArray(combined.resource_ids)
425
+ };
426
+ }
427
+ resources.push(row);
428
+ };
429
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
430
+ if (_loop()) continue;
431
+ }
432
+
433
+ // 按 productId 分组排序,确保同一商品的场地连续排列
434
+ } catch (err) {
435
+ _iterator9.e(err);
436
+ } finally {
437
+ _iterator9.f();
438
+ }
439
+ var productOrder = new Map();
440
+ for (var _i = 0, _resources = resources; _i < _resources.length; _i++) {
441
+ var row = _resources[_i];
442
+ if (!productOrder.has(row.productId)) productOrder.set(row.productId, productOrder.size);
443
+ }
444
+ resources.sort(function (a, b) {
445
+ var _productOrder$get, _productOrder$get2;
446
+ return ((_productOrder$get = productOrder.get(a.productId)) !== null && _productOrder$get !== void 0 ? _productOrder$get : 0) - ((_productOrder$get2 = productOrder.get(b.productId)) !== null && _productOrder$get2 !== void 0 ? _productOrder$get2 : 0);
447
+ });
448
+ return {
449
+ date: date,
450
+ timeLabels: timeLabels,
451
+ resources: resources
452
+ };
453
+ }
@@ -0,0 +1 @@
1
+ export { createEmptySummary, getSafeProductNum, toBoolean, toPositiveString, normalizeEnabledItemRuleIds, extractStrategyModelIdsFromTableConfig, normalizeItemRuleStrategies, toNonNegativeNumber, toNonNegativeInt, toPriceString, buildProductKey, getTopLevelProductId, getTopLevelVariantId, buildQuantityLimitIndex, resolveSkuMatchedQuantityLimits, aggregateItemRuleLimit, buildItemRuleBusinessData, attachItemRuleLimitsToTopLevelProducts, getProductIdentityIndex, isIdentityMatch, normalizeOrderProduct, } from '../ScanOrder/utils';
@@ -0,0 +1 @@
1
+ export { createEmptySummary, getSafeProductNum, toBoolean, toPositiveString, normalizeEnabledItemRuleIds, extractStrategyModelIdsFromTableConfig, normalizeItemRuleStrategies, toNonNegativeNumber, toNonNegativeInt, toPriceString, buildProductKey, getTopLevelProductId, getTopLevelVariantId, buildQuantityLimitIndex, resolveSkuMatchedQuantityLimits, aggregateItemRuleLimit, buildItemRuleBusinessData, attachItemRuleLimitsToTopLevelProducts, getProductIdentityIndex, isIdentityMatch, normalizeOrderProduct } from "../ScanOrder/utils";
@@ -4,3 +4,5 @@ export * from './BookingTicket';
4
4
  export * from './ShopDiscount';
5
5
  export * from './RegisterAndLogin';
6
6
  export * from './Checkout';
7
+ export * from './ScanOrder';
8
+ export * from './VenueBooking';
@@ -3,4 +3,6 @@ export * from "./BookingByStep";
3
3
  export * from "./BookingTicket";
4
4
  export * from "./ShopDiscount";
5
5
  export * from "./RegisterAndLogin";
6
- export * from "./Checkout";
6
+ export * from "./Checkout";
7
+ export * from "./ScanOrder";
8
+ export * from "./VenueBooking";
File without changes
File without changes
package/lib/index.d.ts CHANGED
@@ -6,7 +6,6 @@ export * from './types';
6
6
  export * from './modules';
7
7
  export * from './plugins';
8
8
  export * from './solution';
9
- export * from './model';
10
9
  export { PisellOSCore } from './core';
11
10
  import PisellOSCore from './core';
12
11
  export default PisellOSCore;
package/lib/index.js CHANGED
@@ -38,7 +38,6 @@ __reExport(src_exports, require("./types"), module.exports);
38
38
  __reExport(src_exports, require("./modules"), module.exports);
39
39
  __reExport(src_exports, require("./plugins"), module.exports);
40
40
  __reExport(src_exports, require("./solution"), module.exports);
41
- __reExport(src_exports, require("./model"), module.exports);
42
41
  var import_core = require("./core");
43
42
  var import_core2 = __toESM(require("./core"));
44
43
  var src_default = import_core2.default;
@@ -48,6 +47,5 @@ var src_default = import_core2.default;
48
47
  ...require("./types"),
49
48
  ...require("./modules"),
50
49
  ...require("./plugins"),
51
- ...require("./solution"),
52
- ...require("./model")
50
+ ...require("./solution")
53
51
  });
@@ -512,21 +512,14 @@ var PromotionEvaluator = class {
512
512
  unitProducts.push({
513
513
  product,
514
514
  price: product.price,
515
- productId: product.id,
516
- sourceAvailableQty: availableQty
515
+ productId: product.id
517
516
  });
518
517
  }
519
518
  }
520
519
  if (unitProducts.length === 0) {
521
520
  return { products: [], originalAmount: 0, finalAmount: 0 };
522
521
  }
523
- unitProducts.sort((a, b) => {
524
- const aIsMultiple = a.sourceAvailableQty > 0 && a.sourceAvailableQty % x === 0 ? 1 : 0;
525
- const bIsMultiple = b.sourceAvailableQty > 0 && b.sourceAvailableQty % x === 0 ? 1 : 0;
526
- if (aIsMultiple !== bIsMultiple)
527
- return bIsMultiple - aIsMultiple;
528
- return b.price - a.price;
529
- });
522
+ unitProducts.sort((a, b) => b.price - a.price);
530
523
  const totalUnits = unitProducts.length;
531
524
  const groupCount = cumulative ? Math.floor(totalUnits / x) : totalUnits >= x ? 1 : 0;
532
525
  const promotionUnits = groupCount * x;
@@ -580,9 +573,7 @@ var PromotionEvaluator = class {
580
573
  (sum, p) => sum.plus(p),
581
574
  new import_decimal.default(0)
582
575
  );
583
- const productOriginalAmount = new import_decimal.default(product.price).mul(promoQty);
584
- const actualTotal = import_decimal.default.min(totalAllocated, productOriginalAmount);
585
- const finalPricePerUnit = this.formatPrice(actualTotal.div(promoQty));
576
+ const finalPricePerUnit = this.formatPrice(totalAllocated.div(promoQty));
586
577
  result.push({
587
578
  ...product,
588
579
  quantity: promoQty,
@@ -593,8 +584,9 @@ var PromotionEvaluator = class {
593
584
  isSplit: false,
594
585
  matchedBundleIndex
595
586
  });
587
+ const productOriginalAmount = new import_decimal.default(product.price).mul(promoQty);
596
588
  originalAmount = originalAmount.plus(productOriginalAmount);
597
- finalAmount = finalAmount.plus(actualTotal);
589
+ finalAmount = finalAmount.plus(totalAllocated);
598
590
  } else if (promoQty === 0 && remainingQty > 0) {
599
591
  result.push({
600
592
  ...product,
@@ -613,9 +605,7 @@ var PromotionEvaluator = class {
613
605
  (sum, p) => sum.plus(p),
614
606
  new import_decimal.default(0)
615
607
  );
616
- const promoOriginalAmount = new import_decimal.default(product.price).mul(promoQty);
617
- const actualTotal = import_decimal.default.min(totalAllocated, promoOriginalAmount);
618
- const finalPricePerUnit = this.formatPrice(actualTotal.div(promoQty));
608
+ const finalPricePerUnit = this.formatPrice(totalAllocated.div(promoQty));
619
609
  result.push({
620
610
  ...product,
621
611
  id: this.generateRandomId(),
@@ -628,8 +618,9 @@ var PromotionEvaluator = class {
628
618
  matchedBundleIndex,
629
619
  isSplit: true
630
620
  });
621
+ const promoOriginalAmount = new import_decimal.default(product.price).mul(promoQty);
631
622
  originalAmount = originalAmount.plus(promoOriginalAmount);
632
- finalAmount = finalAmount.plus(actualTotal);
623
+ finalAmount = finalAmount.plus(totalAllocated);
633
624
  result.push({
634
625
  ...product,
635
626
  quantity: remainingQty,
@@ -645,46 +636,6 @@ var PromotionEvaluator = class {
645
636
  }
646
637
  processedQuantityMap.set(key, processedQty + availableQty);
647
638
  }
648
- if (groupCount > 0) {
649
- const expectedPromoTotal = new import_decimal.default(groupPrice).mul(groupCount);
650
- const promoItems = result.filter((p) => p.inPromotion);
651
- let actualPromoTotal = new import_decimal.default(0);
652
- for (const p of promoItems) {
653
- actualPromoTotal = actualPromoTotal.plus(
654
- new import_decimal.default(p.finalPrice).mul(p.quantity)
655
- );
656
- }
657
- const roundingDiff = actualPromoTotal.minus(expectedPromoTotal);
658
- if (!roundingDiff.eq(0)) {
659
- const adjustTarget = promoItems.find((p) => p.quantity === 1);
660
- if (adjustTarget) {
661
- adjustTarget.finalPrice = this.formatPrice(
662
- new import_decimal.default(adjustTarget.finalPrice).minus(roundingDiff)
663
- );
664
- } else if (promoItems.length > 0) {
665
- const lastPromo = promoItems[promoItems.length - 1];
666
- const adjustedUnitPrice = this.formatPrice(
667
- new import_decimal.default(lastPromo.finalPrice).minus(roundingDiff)
668
- );
669
- lastPromo.quantity -= 1;
670
- lastPromo.isSplit = true;
671
- result.push({
672
- ...lastPromo,
673
- id: this.generateRandomId(),
674
- originalId: lastPromo.originalId || lastPromo.id,
675
- quantity: 1,
676
- finalPrice: adjustedUnitPrice,
677
- isSplit: true
678
- });
679
- }
680
- finalAmount = new import_decimal.default(0);
681
- for (const p of result) {
682
- finalAmount = finalAmount.plus(
683
- new import_decimal.default(p.finalPrice).mul(p.quantity)
684
- );
685
- }
686
- }
687
- }
688
639
  return {
689
640
  products: result,
690
641
  originalAmount: originalAmount.toNumber(),
@@ -1,49 +0,0 @@
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);
28
-
29
- // src/model/strategy/adapter/promotion/index.ts
30
- var promotion_exports = {};
31
- __export(promotion_exports, {
32
- BUY_X_GET_Y_FREE_STRATEGY: () => import_examples.BUY_X_GET_Y_FREE_STRATEGY,
33
- PromotionAdapter: () => import_adapter.PromotionAdapter,
34
- PromotionEvaluator: () => import_evaluator.PromotionEvaluator,
35
- X_ITEMS_FOR_Y_PRICE_STRATEGY: () => import_examples.X_ITEMS_FOR_Y_PRICE_STRATEGY,
36
- default: () => import_adapter2.default
37
- });
38
- module.exports = __toCommonJS(promotion_exports);
39
- var import_evaluator = require("./evaluator");
40
- var import_adapter = require("./adapter");
41
- var import_adapter2 = __toESM(require("./adapter"));
42
- var import_examples = require("./examples");
43
- // Annotate the CommonJS export names for ESM import in node:
44
- 0 && (module.exports = {
45
- BUY_X_GET_Y_FREE_STRATEGY,
46
- PromotionAdapter,
47
- PromotionEvaluator,
48
- X_ITEMS_FOR_Y_PRICE_STRATEGY
49
- });