@pisell/pisellos 2.2.283 → 2.2.285

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