@pisell/pisellos 0.10.14 → 0.10.16

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 (301) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  3. package/dist/model/strategy/strategy-example.js +5 -19
  4. package/dist/modules/Cart/index.js +0 -3
  5. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  6. package/dist/modules/Date/index.js +1 -5
  7. package/dist/modules/Discount/index.js +2 -4
  8. package/dist/modules/OpenData/index.js +0 -2
  9. package/dist/modules/Order/index.d.ts +1 -1
  10. package/dist/modules/Order/index.js +75 -91
  11. package/dist/modules/Order/types.d.ts +5 -1
  12. package/dist/modules/Order/utils/virtualSettlement.d.ts +8 -1
  13. package/dist/modules/Order/utils/virtualSettlement.js +15 -2
  14. package/dist/modules/Order/utils.js +7 -1
  15. package/dist/modules/Payment/index.js +97 -162
  16. package/dist/modules/Product/types.d.ts +2 -0
  17. package/dist/modules/Rules/index.js +1 -4
  18. package/dist/modules/Schedule/index.js +0 -1
  19. package/dist/modules/Schedule/utils.js +0 -1
  20. package/dist/modules/Step/index.js +0 -1
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.js +97 -129
  24. package/dist/server/modules/menu/index.js +32 -41
  25. package/dist/server/modules/order/index.js +2 -4
  26. package/dist/server/modules/products/index.js +24 -42
  27. package/dist/server/modules/quotation/index.js +29 -38
  28. package/dist/server/modules/resource/index.js +3 -4
  29. package/dist/server/modules/schedule/index.js +27 -35
  30. package/dist/server/utils/product.js +0 -1
  31. package/dist/solution/BaseSales/index.js +107 -76
  32. package/dist/solution/BaseSales/types.d.ts +2 -0
  33. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  34. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  35. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  36. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -1
  37. package/dist/solution/BaseSales/utils.js +6 -3
  38. package/dist/solution/BookingByStep/index.d.ts +2 -2
  39. package/dist/solution/BookingByStep/index.js +7 -59
  40. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  41. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  42. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  43. package/dist/solution/BookingTicket/index.js +8 -4
  44. package/dist/solution/BookingTicket/utils/addProductDecision.js +3 -1
  45. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  46. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  47. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  48. package/dist/solution/BuyTickets/index.js +9 -12
  49. package/dist/solution/Checkout/index.js +177 -252
  50. package/dist/solution/Checkout/utils/index.js +4 -16
  51. package/dist/solution/RegisterAndLogin/index.js +30 -76
  52. package/dist/solution/ScanOrder/index.js +50 -60
  53. package/dist/solution/ScanOrder/types.d.ts +2 -0
  54. package/dist/solution/ScanOrder/utils.js +6 -3
  55. package/dist/solution/ShopDiscount/index.js +2 -7
  56. package/dist/solution/VenueBooking/index.js +45 -55
  57. package/dist/utils/task.js +15 -18
  58. package/dist/utils/watch.js +0 -1
  59. package/lib/apis/picoding.js +2 -0
  60. package/lib/core/index.js +131 -131
  61. package/lib/effects/index.js +46 -57
  62. package/lib/index.js +82 -49
  63. package/lib/model/index.js +14 -21
  64. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  65. package/lib/model/strategy/adapter/dataVariant/evaluator.js +209 -315
  66. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  67. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  68. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  69. package/lib/model/strategy/adapter/index.js +100 -64
  70. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  71. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  72. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  73. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  74. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  75. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  76. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  77. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  78. package/lib/model/strategy/adapter/promotion/index.js +43 -48
  79. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  80. package/lib/model/strategy/adapter/type.js +4 -16
  81. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  82. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  83. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  84. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  85. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  86. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  87. package/lib/model/strategy/engine.js +270 -168
  88. package/lib/model/strategy/index.js +49 -34
  89. package/lib/model/strategy/strategy-example.js +243 -239
  90. package/lib/model/strategy/type.js +100 -40
  91. package/lib/modules/Account/index.js +39 -53
  92. package/lib/modules/Account/types.js +20 -33
  93. package/lib/modules/AccountList/index.js +116 -154
  94. package/lib/modules/AccountList/types.js +30 -31
  95. package/lib/modules/AccountList/utils.js +18 -30
  96. package/lib/modules/BaseModule.js +23 -42
  97. package/lib/modules/BookingContext/index.js +158 -136
  98. package/lib/modules/BookingContext/types.js +46 -32
  99. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  100. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  101. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  102. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  103. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  104. package/lib/modules/BookingContext/utils/index.js +124 -41
  105. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  106. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  107. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  108. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  109. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  110. package/lib/modules/BookingContext/utils/resources.js +209 -167
  111. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  112. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  113. package/lib/modules/Cart/index.js +170 -124
  114. package/lib/modules/Cart/types.js +46 -51
  115. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  116. package/lib/modules/Cart/utils/cartDate.js +56 -61
  117. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  118. package/lib/modules/Cart/utils/cartNote.js +27 -32
  119. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  120. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  121. package/lib/modules/Cart/utils/cartResource.js +70 -78
  122. package/lib/modules/Cart/utils/changePrice.js +22 -50
  123. package/lib/modules/Cart/utils/index.js +106 -48
  124. package/lib/modules/Customer/constants.js +13 -34
  125. package/lib/modules/Customer/index.js +235 -172
  126. package/lib/modules/Customer/types.js +38 -35
  127. package/lib/modules/Date/index.js +116 -115
  128. package/lib/modules/Date/types.js +16 -28
  129. package/lib/modules/Date/utils.js +174 -123
  130. package/lib/modules/Discount/index.js +133 -143
  131. package/lib/modules/Discount/types.js +9 -31
  132. package/lib/modules/Guests/index.js +30 -56
  133. package/lib/modules/Guests/types.js +23 -33
  134. package/lib/modules/Holder/index.js +209 -189
  135. package/lib/modules/Holder/types.js +4 -16
  136. package/lib/modules/Holder/utils.js +20 -49
  137. package/lib/modules/OpenData/index.js +70 -76
  138. package/lib/modules/OpenData/types.js +4 -16
  139. package/lib/modules/OpenData/utils.js +44 -78
  140. package/lib/modules/Order/index.d.ts +1 -1
  141. package/lib/modules/Order/index.js +1810 -2238
  142. package/lib/modules/Order/payment-utils.js +77 -120
  143. package/lib/modules/Order/types.d.ts +5 -1
  144. package/lib/modules/Order/types.js +87 -35
  145. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  146. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  147. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  148. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  149. package/lib/modules/Order/utils/virtualSettlement.d.ts +8 -1
  150. package/lib/modules/Order/utils/virtualSettlement.js +126 -164
  151. package/lib/modules/Order/utils.js +834 -668
  152. package/lib/modules/Payment/cash.js +20 -33
  153. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  154. package/lib/modules/Payment/eftpos.js +16 -30
  155. package/lib/modules/Payment/index.js +532 -399
  156. package/lib/modules/Payment/mx51.js +1 -0
  157. package/lib/modules/Payment/types.js +230 -108
  158. package/lib/modules/Payment/utils.js +52 -51
  159. package/lib/modules/Payment/walletpass.js +485 -660
  160. package/lib/modules/Product/index.js +51 -46
  161. package/lib/modules/Product/types.d.ts +2 -0
  162. package/lib/modules/Product/types.js +4 -16
  163. package/lib/modules/Product/utils.js +32 -33
  164. package/lib/modules/ProductList/index.js +138 -161
  165. package/lib/modules/ProductList/types.js +9 -31
  166. package/lib/modules/Quotation/index.js +66 -100
  167. package/lib/modules/Quotation/types.js +4 -16
  168. package/lib/modules/Resource/index.js +27 -59
  169. package/lib/modules/Resource/types.js +22 -32
  170. package/lib/modules/Resource/utils.js +30 -38
  171. package/lib/modules/ResourcePlanner/index.js +25 -23
  172. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  173. package/lib/modules/ResourcePlanner/planner.js +591 -772
  174. package/lib/modules/ResourcePlanner/types.js +10 -29
  175. package/lib/modules/Rules/index.js +1218 -959
  176. package/lib/modules/Rules/types.js +17 -40
  177. package/lib/modules/SalesSummary/index.js +78 -89
  178. package/lib/modules/SalesSummary/types.js +4 -16
  179. package/lib/modules/SalesSummary/utils.js +359 -442
  180. package/lib/modules/ScanOrderLogger/index.js +59 -79
  181. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  182. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  183. package/lib/modules/ScanOrderLogger/types.js +4 -16
  184. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  185. package/lib/modules/Schedule/index.js +100 -114
  186. package/lib/modules/Schedule/type.js +4 -16
  187. package/lib/modules/Schedule/types.js +4 -16
  188. package/lib/modules/Schedule/utils.js +433 -291
  189. package/lib/modules/Step/index.js +40 -52
  190. package/lib/modules/Step/tyeps.js +4 -16
  191. package/lib/modules/Summary/index.js +66 -71
  192. package/lib/modules/Summary/types.js +4 -16
  193. package/lib/modules/Summary/utils.js +773 -418
  194. package/lib/modules/SurchargeList/index.js +46 -60
  195. package/lib/modules/SurchargeList/types.js +4 -16
  196. package/lib/modules/index.js +245 -63
  197. package/lib/plugins/app.js +4 -16
  198. package/lib/plugins/index.js +36 -25
  199. package/lib/plugins/request.js +137 -126
  200. package/lib/plugins/shopStore.js +4 -16
  201. package/lib/plugins/user.js +4 -16
  202. package/lib/plugins/window.js +171 -179
  203. package/lib/server/index.js +3027 -2655
  204. package/lib/server/modules/floor-plan/index.js +102 -123
  205. package/lib/server/modules/floor-plan/types.js +15 -30
  206. package/lib/server/modules/index.js +106 -68
  207. package/lib/server/modules/menu/index.js +146 -122
  208. package/lib/server/modules/menu/types.js +18 -31
  209. package/lib/server/modules/order/index.js +758 -956
  210. package/lib/server/modules/order/types.js +122 -33
  211. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  212. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  213. package/lib/server/modules/payment/index.js +59 -83
  214. package/lib/server/modules/payment/types.js +4 -16
  215. package/lib/server/modules/products/index.js +575 -459
  216. package/lib/server/modules/products/types.js +44 -34
  217. package/lib/server/modules/quotation/index.js +137 -172
  218. package/lib/server/modules/quotation/types.js +21 -31
  219. package/lib/server/modules/resource/index.js +213 -184
  220. package/lib/server/modules/resource/types.js +42 -33
  221. package/lib/server/modules/schedule/index.js +135 -123
  222. package/lib/server/modules/schedule/types.js +14 -21
  223. package/lib/server/modules/schedule/utils.js +334 -163
  224. package/lib/server/types.js +4 -16
  225. package/lib/server/utils/index.js +25 -23
  226. package/lib/server/utils/product.js +196 -139
  227. package/lib/server/utils/schedule.js +34 -41
  228. package/lib/server/utils/small-ticket.js +479 -456
  229. package/lib/server/utils/time.js +40 -49
  230. package/lib/solution/BaseSales/index.js +1276 -1485
  231. package/lib/solution/BaseSales/types.d.ts +2 -0
  232. package/lib/solution/BaseSales/types.js +42 -38
  233. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  234. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  235. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  236. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  237. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  238. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +138 -180
  239. package/lib/solution/BaseSales/utils.js +161 -143
  240. package/lib/solution/BookingByStep/index.d.ts +2 -2
  241. package/lib/solution/BookingByStep/index.js +1527 -1340
  242. package/lib/solution/BookingByStep/types.js +40 -99
  243. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  244. package/lib/solution/BookingByStep/utils/products.js +42 -52
  245. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  246. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  247. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  248. package/lib/solution/BookingTicket/index.js +598 -514
  249. package/lib/solution/BookingTicket/types.js +99 -77
  250. package/lib/solution/BookingTicket/utils/addProductDecision.js +229 -190
  251. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  252. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  253. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  254. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  255. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  256. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  257. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  258. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  259. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  260. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  261. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  262. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  263. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  264. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  265. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  266. package/lib/solution/BuyTickets/index.js +67 -70
  267. package/lib/solution/BuyTickets/types.js +22 -38
  268. package/lib/solution/Checkout/index.js +1451 -1158
  269. package/lib/solution/Checkout/types.js +91 -61
  270. package/lib/solution/Checkout/utils/index.js +228 -156
  271. package/lib/solution/PlaceOrder/index.js +55 -0
  272. package/lib/solution/RegisterAndLogin/config.js +493 -460
  273. package/lib/solution/RegisterAndLogin/index.js +633 -630
  274. package/lib/solution/RegisterAndLogin/types.js +189 -76
  275. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  276. package/lib/solution/Sales/index.js +328 -324
  277. package/lib/solution/Sales/types.js +27 -33
  278. package/lib/solution/ScanOrder/index.js +822 -852
  279. package/lib/solution/ScanOrder/types.d.ts +2 -0
  280. package/lib/solution/ScanOrder/types.js +33 -34
  281. package/lib/solution/ScanOrder/utils.js +412 -374
  282. package/lib/solution/ShopDiscount/index.js +226 -232
  283. package/lib/solution/ShopDiscount/types.js +15 -37
  284. package/lib/solution/ShopDiscount/utils.js +300 -172
  285. package/lib/solution/UnifiedBookingSales/index.js +1052 -1213
  286. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  287. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  288. package/lib/solution/VenueBooking/index.js +811 -879
  289. package/lib/solution/VenueBooking/types.js +19 -39
  290. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  291. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  292. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  293. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  294. package/lib/solution/VenueBooking/utils.js +130 -67
  295. package/lib/solution/index.js +124 -41
  296. package/lib/store/createStore.js +32 -29
  297. package/lib/types/index.js +4 -16
  298. package/lib/utils/payment-number.js +26 -46
  299. package/lib/utils/task.js +36 -36
  300. package/lib/utils/watch.js +81 -47
  301. package/package.json +2 -1
package/lib/core/index.js CHANGED
@@ -1,116 +1,101 @@
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/core/index.ts
30
- var core_exports = {};
31
- __export(core_exports, {
32
- PisellOSCore: () => PisellOSCore,
33
- default: () => core_default
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
34
5
  });
35
- module.exports = __toCommonJS(core_exports);
36
- var import_createStore = require("../store/createStore");
37
- var import_effects = require("../effects");
38
- var PisellOSCore = class {
39
- // 保存 Server 配置
6
+ exports.default = exports.PisellOSCore = void 0;
7
+ var _createStore = require("../store/createStore");
8
+ var _effects = require("../effects");
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ /**
12
+ * pisell OS 核心实现
13
+ */
14
+ class PisellOSCore {
15
+ plugins = new Map();
16
+ modules = new Map();
17
+ stores = new Map();
18
+ effects = new _effects.EffectsManager();
19
+ debug = false;
20
+ context = {};
21
+ server; // Server 实例
22
+ serverOptions; // 保存 Server 配置
23
+
40
24
  constructor(options) {
41
- this.plugins = /* @__PURE__ */ new Map();
42
- this.modules = /* @__PURE__ */ new Map();
43
- this.stores = /* @__PURE__ */ new Map();
44
- this.effects = new import_effects.EffectsManager();
45
- this.debug = false;
46
- this.context = {};
47
- this.debug = (options == null ? void 0 : options.debug) || false;
48
- this.context = (options == null ? void 0 : options.context) || {};
49
- if (options == null ? void 0 : options.server) {
25
+ this.debug = options?.debug || false;
26
+ this.context = options?.context || {};
27
+
28
+ // 保存 Server 配置但不初始化
29
+ if (options?.server) {
50
30
  this.serverOptions = options.server;
51
31
  }
52
32
  this.initialize(options);
53
33
  }
54
34
  initialize(options) {
55
- if (options == null ? void 0 : options.plugins) {
56
- options.plugins.forEach((item) => {
35
+ if (options?.plugins) {
36
+ options.plugins.forEach(item => {
57
37
  this.registerPlugin(item.plugin, item.options);
58
38
  });
59
39
  }
60
- if (options == null ? void 0 : options.modules) {
61
- options.modules.forEach((item) => {
40
+ if (options?.modules) {
41
+ options.modules.forEach(item => {
62
42
  this.registerModule(item.module, item.options);
63
43
  });
64
44
  }
65
- this.log("[PisellOS] 核心初始化完成");
45
+ this.log('[PisellOS] 核心初始化完成');
66
46
  }
47
+
67
48
  /**
68
49
  * 初始化 Server(公开方法,需要外部显式调用并等待)
69
50
  * Server 配置从构造函数传入的 options.server 中获取
70
51
  */
71
52
  async initializeServer(options) {
53
+ // 检查是否已经初始化
72
54
  if (this.server) {
73
- this.log("Server 已经初始化,跳过重复初始化", "warn");
55
+ this.log('Server 已经初始化,跳过重复初始化', 'warn');
74
56
  return;
75
57
  }
58
+
59
+ // 检查是否有 Server 配置
76
60
  if (!this.serverOptions) {
77
- this.log("未提供 Server 配置,无法初始化", "warn");
61
+ this.log('未提供 Server 配置,无法初始化', 'warn');
78
62
  return;
79
63
  }
80
64
  try {
81
- const ServerModule = await import("../server");
65
+ // 动态导入 Server 类以避免循环依赖
66
+ const ServerModule = await Promise.resolve().then(() => _interopRequireWildcard(require("../server")));
82
67
  const Server = ServerModule.default;
68
+
69
+ // 创建 Server 实例
83
70
  this.server = new Server(this);
84
- this.log("Server 实例已创建");
71
+ this.log('Server 实例已创建');
72
+
73
+ // 初始化模块并预加载数据
85
74
  if (this.serverOptions.modules) {
86
- await this.server.initialize(
87
- this.serverOptions.modules,
88
- this.serverOptions.autoInitData !== false,
89
- options
90
- );
75
+ await this.server.initialize(this.serverOptions.modules, this.serverOptions.autoInitData !== false, options);
91
76
  }
92
- console.log("[PisellOS] ✅ Server 初始化完成,所有数据已预加载");
93
- this.log("[PisellOS] Server 初始化完成");
77
+ this.log('[PisellOS] Server 初始化完成');
94
78
  } catch (error) {
95
- console.error("[PisellOS] ❌ Server 初始化失败:", error);
96
- this.log(`Server 初始化失败: ${error}`, "error");
79
+ console.error('[PisellOS] ❌ Server 初始化失败:', error);
80
+ this.log(`Server 初始化失败: ${error}`, 'error');
97
81
  throw error;
98
82
  }
99
83
  }
84
+
100
85
  // 日志方法
101
- log(message, level = "info") {
102
- if (!this.debug && level === "info") {
86
+ log(message, level = 'info') {
87
+ if (!this.debug && level === 'info') {
103
88
  return;
104
89
  }
105
- const prefix = "[PisellOS]";
90
+ const prefix = '[PisellOS]';
106
91
  switch (level) {
107
- case "info":
108
- console.log(`${prefix} ${message}`);
92
+ case 'info':
109
93
  break;
110
- case "warn":
111
- console.log(`%c${prefix}%c ${message}`, "color: #f59e0b; font-weight: bold;", "color: #f59e0b;");
94
+ case 'warn':
95
+ // 使用 console.log 避免显示堆栈跟踪,提升性能
96
+
112
97
  break;
113
- case "error":
98
+ case 'error':
114
99
  console.error(`${prefix} ${message}`);
115
100
  break;
116
101
  }
@@ -118,27 +103,31 @@ var PisellOSCore = class {
118
103
  // 插件相关方法
119
104
  registerPlugin(plugin, options) {
120
105
  if (this.plugins.has(plugin.name)) {
121
- this.log(`插件 ${plugin.name} 已经注册过,将被覆盖`, "warn");
106
+ this.log(`插件 ${plugin.name} 已经注册过,将被覆盖`, 'warn');
122
107
  }
123
- if (options == null ? void 0 : options.dependencies) {
108
+
109
+ // 检查依赖
110
+ if (options?.dependencies) {
124
111
  for (const dep of options.dependencies) {
125
112
  if (!this.plugins.has(dep)) {
126
113
  throw new Error(`注册插件 ${plugin.name} 失败:缺少依赖插件 ${dep}`);
127
114
  }
128
115
  }
129
116
  }
117
+
118
+ // 初始化插件
130
119
  try {
131
120
  const result = plugin.initialize();
132
121
  if (result instanceof Promise) {
133
- result.catch((err) => {
134
- this.log(`插件 ${plugin.name} 初始化失败: ${err.message}`, "error");
122
+ result.catch(err => {
123
+ this.log(`插件 ${plugin.name} 初始化失败: ${err.message}`, 'error');
135
124
  throw err;
136
125
  });
137
126
  }
138
127
  this.plugins.set(plugin.name, plugin);
139
128
  this.log(`插件 ${plugin.name} v${plugin.version} 注册成功`);
140
129
  } catch (error) {
141
- this.log(`插件 ${plugin.name} 初始化过程中出错: ${error}`, "error");
130
+ this.log(`插件 ${plugin.name} 初始化过程中出错: ${error}`, 'error');
142
131
  throw error;
143
132
  }
144
133
  }
@@ -148,129 +137,140 @@ var PisellOSCore = class {
148
137
  hasPlugin(name) {
149
138
  return this.plugins.has(name);
150
139
  }
140
+
151
141
  // 模块相关方法
152
- registerModule(module2, options) {
153
- if (this.modules.has(module2.name)) {
154
- this.log(`模块 ${module2.name} 已经注册过,将被覆盖`, "warn");
142
+ registerModule(module, options) {
143
+ if (this.modules.has(module.name)) {
144
+ this.log(`模块 ${module.name} 已经注册过,将被覆盖`, 'warn');
155
145
  }
156
- if (options == null ? void 0 : options.dependencies) {
146
+
147
+ // 检查依赖模块
148
+ if (options?.dependencies) {
157
149
  for (const dep of options.dependencies) {
158
150
  if (!this.modules.has(dep)) {
159
- throw new Error(`注册模块 ${module2.name} 失败:缺少依赖模块 ${dep}`);
151
+ throw new Error(`注册模块 ${module.name} 失败:缺少依赖模块 ${dep}`);
160
152
  }
161
153
  }
162
154
  }
163
- if (options == null ? void 0 : options.plugins) {
155
+
156
+ // 检查依赖插件
157
+ if (options?.plugins) {
164
158
  for (const plugin of options.plugins) {
165
159
  if (!this.plugins.has(plugin)) {
166
- throw new Error(
167
- `注册模块 ${module2.name} 失败:缺少依赖插件 ${plugin}`
168
- );
160
+ throw new Error(`注册模块 ${module.name} 失败:缺少依赖插件 ${plugin}`);
169
161
  }
170
162
  }
171
163
  }
172
- const { proxy } = (0, import_createStore.createStore)(
173
- (options == null ? void 0 : options.initialState) || {},
174
- module2.name,
175
- (path, value) => {
176
- console.log("core 检测到模块值更新", module2.name, path, value);
177
- this.effects.emit(`${module2.name}:changed`, { path, value });
178
- if (module2.storeChange)
179
- module2.storeChange(path, value);
180
- }
181
- );
182
- this.stores.set(module2.name, proxy);
164
+ // 预先给模块初始化值系统
165
+ const {
166
+ proxy
167
+ } = (0, _createStore.createStore)(options?.initialState || {}, module.name, (path, value) => {
168
+ this.effects.emit(`${module.name}:changed`, {
169
+ path,
170
+ value
171
+ });
172
+ if (module.storeChange) module.storeChange(path, value);
173
+ });
174
+ this.stores.set(module.name, proxy);
175
+ // 初始化模块
183
176
  try {
184
- const result = module2.initialize(this, { store: proxy, ...options });
177
+ const result = module.initialize(this, {
178
+ store: proxy,
179
+ ...options
180
+ });
185
181
  if (result instanceof Promise) {
186
- result.catch((err) => {
187
- this.log(`模块 ${module2.name} 初始化失败: ${err.message}`, "error");
182
+ result.catch(err => {
183
+ this.log(`模块 ${module.name} 初始化失败: ${err.message}`, 'error');
188
184
  throw err;
189
185
  });
190
186
  }
191
- this.modules.set(module2.name, module2);
192
- this.log(`模块 ${module2.name} v${module2.version} 注册成功`);
187
+ this.modules.set(module.name, module);
188
+ this.log(`模块 ${module.name} v${module.version} 注册成功`);
193
189
  } catch (error) {
194
- this.log(`模块 ${module2.name} 初始化过程中出错: ${error}`, "error");
190
+ this.log(`模块 ${module.name} 初始化过程中出错: ${error}`, 'error');
195
191
  throw error;
196
192
  }
197
193
  }
198
- unregisterModule(module2) {
199
- this.stores.delete(module2.name);
200
- this.modules.delete(module2.name);
194
+ unregisterModule(module) {
195
+ this.stores.delete(module.name);
196
+ this.modules.delete(module.name);
201
197
  }
202
198
  getModule(name) {
203
199
  return this.modules.get(name) || null;
204
200
  }
205
201
  getModuleExports(name) {
206
- const module2 = this.modules.get(name);
207
- return (module2 == null ? void 0 : module2.exports) || null;
202
+ const module = this.modules.get(name);
203
+ return module?.exports || null;
208
204
  }
209
205
  hasModule(name) {
210
206
  return this.modules.has(name);
211
207
  }
208
+
212
209
  /** 返回当前已注册模块名,供宿主在切换店铺等生命周期中定向清理运行态。 */
213
210
  getModuleNames() {
214
211
  return Array.from(this.modules.keys());
215
212
  }
213
+
216
214
  // 销毁方法
217
215
  async destroy() {
218
- for (const [name, module2] of this.modules.entries()) {
219
- if (module2.destroy) {
216
+ // 先销毁模块
217
+ for (const [name, module] of this.modules.entries()) {
218
+ if (module.destroy) {
220
219
  try {
221
- await Promise.resolve(module2.destroy());
220
+ await Promise.resolve(module.destroy());
222
221
  this.log(`模块 ${name} 已销毁`);
223
222
  } catch (error) {
224
- this.log(`销毁模块 ${name} 时出错: ${error}`, "error");
223
+ this.log(`销毁模块 ${name} 时出错: ${error}`, 'error');
225
224
  }
226
225
  }
227
226
  }
228
227
  this.modules.clear();
228
+
229
+ // 再销毁插件
229
230
  for (const [name, plugin] of this.plugins.entries()) {
230
231
  if (plugin.destroy) {
231
232
  try {
232
233
  await Promise.resolve(plugin.destroy());
233
234
  this.log(`插件 ${name} 已销毁`);
234
235
  } catch (error) {
235
- this.log(`销毁插件 ${name} 时出错: ${error}`, "error");
236
+ this.log(`销毁插件 ${name} 时出错: ${error}`, 'error');
236
237
  }
237
238
  }
238
239
  }
239
240
  this.plugins.clear();
240
- this.log("PisellOS 核心已销毁");
241
+ this.log('PisellOS 核心已销毁');
241
242
  }
242
243
  setContext(ctx) {
243
- this.context = { ...this.context, ...ctx };
244
+ this.context = {
245
+ ...this.context,
246
+ ...ctx
247
+ };
244
248
  this.log(`上下文已更新: ${JSON.stringify(Object.keys(ctx))}`);
245
249
  }
250
+
246
251
  /**
247
252
  * 验证上下文参数
248
253
  */
249
254
  validateContext(config) {
250
255
  for (const rule of config.validations) {
251
256
  const value = this.context[rule.name];
252
- if (rule.required && (value === void 0 || value === null)) {
253
- this.log(
254
- `模块 ${config.name} 缺少必需的上下文参数: ${rule.name}`,
255
- "error"
256
- );
257
+
258
+ // 检查必需参数
259
+ if (rule.required && (value === undefined || value === null)) {
260
+ this.log(`模块 ${config.name} 缺少必需的上下文参数: ${rule.name}`, 'error');
257
261
  return false;
258
262
  }
259
- if (rule.validate && value !== void 0 && value !== null) {
263
+
264
+ // 执行自定义验证
265
+ if (rule.validate && value !== undefined && value !== null) {
260
266
  if (!rule.validate(value)) {
261
- this.log(
262
- `模块 ${config.name} 上下文参数验证失败: ${rule.name} - ${rule.message || "验证失败"}`,
263
- "error"
264
- );
267
+ this.log(`模块 ${config.name} 上下文参数验证失败: ${rule.name} - ${rule.message || '验证失败'}`, 'error');
265
268
  return false;
266
269
  }
267
270
  }
268
271
  }
269
272
  return true;
270
273
  }
271
- };
272
- var core_default = PisellOSCore;
273
- // Annotate the CommonJS export names for ESM import in node:
274
- 0 && (module.exports = {
275
- PisellOSCore
276
- });
274
+ }
275
+ exports.PisellOSCore = PisellOSCore;
276
+ var _default = exports.default = PisellOSCore;
@@ -1,93 +1,82 @@
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/effects/index.ts
20
- var effects_exports = {};
21
- __export(effects_exports, {
22
- EffectsManager: () => EffectsManager
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
23
5
  });
24
- module.exports = __toCommonJS(effects_exports);
25
- var EffectsManager = class {
26
- constructor() {
27
- this.listeners = /* @__PURE__ */ new Map();
28
- }
6
+ exports.EffectsManager = void 0;
7
+ // 取消监听函数类型
8
+
9
+ class EffectsManager {
10
+ listeners = new Map();
29
11
  on(event, callback) {
30
- var _a;
31
- if (!this.listeners.has(event))
32
- this.listeners.set(event, /* @__PURE__ */ new Set());
33
- (_a = this.listeners.get(event)) == null ? void 0 : _a.add(callback);
12
+ if (!this.listeners.has(event)) this.listeners.set(event, new Set());
13
+ this.listeners.get(event)?.add(callback);
14
+
15
+ // 返回取消函数
34
16
  return () => {
35
17
  this.off(event, callback);
36
18
  };
37
19
  }
20
+
38
21
  // 设置单例监听器,只能存在一个,新的会替换旧的
39
22
  only(event, callback) {
40
- var _a, _b;
23
+ // 清除该事件的所有现有监听器
41
24
  if (this.listeners.has(event)) {
42
- (_a = this.listeners.get(event)) == null ? void 0 : _a.clear();
25
+ this.listeners.get(event)?.clear();
43
26
  } else {
44
- this.listeners.set(event, /* @__PURE__ */ new Set());
27
+ this.listeners.set(event, new Set());
45
28
  }
46
- (_b = this.listeners.get(event)) == null ? void 0 : _b.add(callback);
29
+
30
+ // 添加新的监听器
31
+ this.listeners.get(event)?.add(callback);
32
+
33
+ // 返回取消函数
47
34
  return () => {
48
35
  this.off(event, callback);
49
36
  };
50
37
  }
51
38
  off(event, callback) {
52
- var _a;
53
- (_a = this.listeners.get(event)) == null ? void 0 : _a.delete(callback);
39
+ this.listeners.get(event)?.delete(callback);
54
40
  }
41
+
55
42
  // 模块销毁时,删除所有以模块名开头的监听
56
- offByModuleDestroy(module2) {
57
- Array.from(this.listeners.keys()).forEach((item) => {
58
- if (item.startsWith(module2)) {
43
+ offByModuleDestroy(module) {
44
+ Array.from(this.listeners.keys()).forEach(item => {
45
+ if (item.startsWith(module)) {
59
46
  this.listeners.delete(item);
60
47
  }
61
48
  });
62
49
  }
63
50
  once(event, callback) {
64
- const wrapper = async (payload) => {
51
+ const wrapper = async payload => {
65
52
  await callback(payload);
66
53
  this.off(event, wrapper);
67
54
  };
55
+
56
+ // 调用修改后的on方法,它会返回取消函数
68
57
  return this.on(event, wrapper);
69
58
  }
70
59
  async emit(event, payload) {
71
60
  const callbacks = this.listeners.get(event);
72
- if (!callbacks)
73
- return { status: true, data: [] };
61
+ if (!callbacks) return {
62
+ status: true,
63
+ data: []
64
+ };
74
65
  const res = [];
75
- await Promise.all(
76
- Array.from(callbacks).reverse().map(async (cb) => {
77
- const result = await cb(payload);
78
- if (result !== void 0 && typeof result === "object" && "status" in result) {
79
- res.push(result);
80
- }
81
- })
82
- );
83
- const isAllPass = res.every((r) => (r == null ? void 0 : r.status) !== false);
84
- return { status: isAllPass, data: res };
66
+ await Promise.all(Array.from(callbacks).reverse().map(async cb => {
67
+ const result = await cb(payload);
68
+ if (result !== undefined && typeof result === 'object' && 'status' in result) {
69
+ res.push(result);
70
+ }
71
+ }));
72
+ const isAllPass = res.every(r => r?.status !== false);
73
+ return {
74
+ status: isAllPass,
75
+ data: res
76
+ };
85
77
  }
86
78
  clear() {
87
79
  this.listeners.clear();
88
80
  }
89
- };
90
- // Annotate the CommonJS export names for ESM import in node:
91
- 0 && (module.exports = {
92
- EffectsManager
93
- });
81
+ }
82
+ exports.EffectsManager = EffectsManager;