@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
@@ -1,67 +1,74 @@
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);
18
-
19
- // src/server/modules/resource/index.ts
20
- var resource_exports = {};
21
- __export(resource_exports, {
22
- ResourceHooks: () => import_types2.ResourceHooks,
23
- ResourceModule: () => ResourceModule,
24
- resourceModule: () => resourceModule
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ResourceHooks", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _types.ResourceHooks;
10
+ }
25
11
  });
26
- module.exports = __toCommonJS(resource_exports);
27
- var import_lodash_es = require("lodash-es");
28
- var import_BaseModule = require("../../../modules/BaseModule");
29
- var import_types = require("./types");
30
- var import_types2 = require("./types");
31
- var RESOURCE_STORE_NAME = "resources";
32
- var DEFAULT_PAGE_SIZE = 999;
33
- var RESOURCE_SYNC_DEBOUNCE_MS = 1e4;
34
- var ResourceModule = class extends import_BaseModule.BaseModule {
12
+ exports.resourceModule = exports.ResourceModule = void 0;
13
+ var _lodashEs = require("lodash-es");
14
+ var _BaseModule = require("../../../modules/BaseModule");
15
+ var _types = require("./types");
16
+ /**
17
+ * SQLite 存储名称
18
+ */
19
+ const RESOURCE_STORE_NAME = 'resources';
20
+ // const BOOKING_STORE_NAME = 'resource_bookings'
21
+
22
+ /**
23
+ * 默认分页大小
24
+ */
25
+ const DEFAULT_PAGE_SIZE = 999;
26
+
27
+ /**
28
+ * 同步防抖超时(毫秒)
29
+ */
30
+ const RESOURCE_SYNC_DEBOUNCE_MS = 10_000;
31
+
32
+ /**
33
+ * Resource 模块
34
+ */
35
+ class ResourceModule extends _BaseModule.BaseModule {
36
+ defaultName = 'resource';
37
+ defaultVersion = '1.0.0';
38
+ store;
39
+ dbManager;
40
+ logger; // LoggerManager 实例
41
+ resourceDataSource;
42
+
43
+ /** 倒排索引: resourceId -> ResourceBooking[] */
44
+ resourceIdIndex = new Map();
45
+
46
+ /** 待处理的同步消息队列 */
47
+ pendingSyncMessages = [];
48
+ syncTimer;
35
49
  constructor(name, version) {
36
50
  super(name, version);
37
- this.defaultName = "resource";
38
- this.defaultVersion = "1.0.0";
39
- /** 倒排索引: resourceId -> ResourceBooking[] */
40
- this.resourceIdIndex = /* @__PURE__ */ new Map();
41
- /** 待处理的同步消息队列 */
42
- this.pendingSyncMessages = [];
43
51
  }
52
+
44
53
  // ─────────────────────────────────────────────────────────────────
45
54
  // 初始化 & 生命周期
46
55
  // ─────────────────────────────────────────────────────────────────
56
+
47
57
  async initialize(core, options) {
48
- var _a, _b;
49
58
  this.core = core;
50
- this.store = options == null ? void 0 : options.store;
51
- if (Array.isArray((_a = options == null ? void 0 : options.initialState) == null ? void 0 : _a.list)) {
52
- this.store.list = ((_b = options == null ? void 0 : options.initialState) == null ? void 0 : _b.list).map(
53
- (item) => this.normalizeResource(item)
54
- );
59
+ this.store = options?.store;
60
+ if (Array.isArray(options?.initialState?.list)) {
61
+ this.store.list = (options?.initialState?.list).map(item => this.normalizeResource(item));
55
62
  this.syncResourcesMap();
56
- this.core.effects.emit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
63
+ this.core.effects.emit(_types.ResourceHooks.onResourcesChanged, this.store.list);
57
64
  } else {
58
65
  this.store.list = [];
59
- this.store.map = /* @__PURE__ */ new Map();
66
+ this.store.map = new Map();
60
67
  }
61
68
  if (!Array.isArray(this.store.bookings)) {
62
69
  this.store.bookings = [];
63
70
  }
64
- const appPlugin = core.getPlugin("app");
71
+ const appPlugin = core.getPlugin('app');
65
72
  if (appPlugin) {
66
73
  const app = appPlugin.getApp();
67
74
  this.dbManager = app.sqlite || app.dbManager;
@@ -72,7 +79,7 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
72
79
  logInfo(title, metadata) {
73
80
  if (this.logger) {
74
81
  this.logger.addLog({
75
- type: "info",
82
+ type: 'info',
76
83
  title: `[ResourceModule] ${title}`,
77
84
  metadata: metadata || {}
78
85
  });
@@ -81,7 +88,7 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
81
88
  logError(title, error, metadata) {
82
89
  if (this.logger) {
83
90
  this.logger.addLog({
84
- type: "error",
91
+ type: 'error',
85
92
  title: `[ResourceModule] ${title}`,
86
93
  metadata: metadata || {}
87
94
  });
@@ -91,111 +98,125 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
91
98
  await this.setupResourceSync();
92
99
  const cachedResources = await this.loadResourcesFromSQLite();
93
100
  if (cachedResources.length > 0) {
94
- this.store.list = (0, import_lodash_es.cloneDeep)(cachedResources).map((item) => this.normalizeResource(item));
101
+ this.store.list = (0, _lodashEs.cloneDeep)(cachedResources).map(item => this.normalizeResource(item));
95
102
  this.syncResourcesMap();
96
- await this.safeEmit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
103
+ await this.safeEmit(_types.ResourceHooks.onResourcesChanged, this.store.list);
97
104
  } else {
98
105
  const resources = await this.loadResourcesByServer();
99
106
  if (resources.length > 0) {
100
- this.store.list = (0, import_lodash_es.cloneDeep)(resources).map((item) => this.normalizeResource(item));
107
+ this.store.list = (0, _lodashEs.cloneDeep)(resources).map(item => this.normalizeResource(item));
101
108
  this.syncResourcesMap();
102
- await this.safeEmit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
109
+ await this.safeEmit(_types.ResourceHooks.onResourcesChanged, this.store.list);
103
110
  }
104
111
  }
112
+
113
+ // const cachedBookings = await this.loadBookingsFromSQLite()
114
+ // if (cachedBookings.length > 0) {
115
+ // this.store.bookings = cloneDeep(cachedBookings)
116
+ // this.syncBookingsIndex()
117
+ // }
105
118
  }
106
119
  getRoutes() {
107
120
  return [];
108
121
  }
109
122
  destroy() {
110
- var _a;
111
123
  if (this.syncTimer) {
112
124
  clearTimeout(this.syncTimer);
113
- this.syncTimer = void 0;
125
+ this.syncTimer = undefined;
114
126
  }
115
127
  this.pendingSyncMessages = [];
116
- if ((_a = this.resourceDataSource) == null ? void 0 : _a.destroy)
117
- this.resourceDataSource.destroy();
128
+ if (this.resourceDataSource?.destroy) this.resourceDataSource.destroy();
118
129
  super.destroy();
119
130
  }
131
+
120
132
  // ─────────────────────────────────────────────────────────────────
121
133
  // Resource CRUD
122
134
  // ─────────────────────────────────────────────────────────────────
135
+
123
136
  /**
124
137
  * 获取所有资源(支持 includeBookings 附加预订信息)
125
138
  */
126
139
  getResources(queryOptions) {
127
- this.logInfo("getResources", {
140
+ this.logInfo('getResources', {
128
141
  queryOptions
129
142
  });
130
- if (!(queryOptions == null ? void 0 : queryOptions.includeBookings)) {
143
+ if (!queryOptions?.includeBookings) {
131
144
  return this.store.list;
132
145
  }
133
- return this.store.list.map((resource) => this.attachBookingsToResource(resource));
146
+ return this.store.list.map(resource => this.attachBookingsToResource(resource));
134
147
  }
148
+
135
149
  /**
136
150
  * 根据 ID 获取单个资源
137
151
  */
138
152
  getResourceById(id, queryOptions) {
139
153
  const resource = this.store.map.get(id);
140
- if (!resource)
141
- return void 0;
142
- if (queryOptions == null ? void 0 : queryOptions.includeBookings) {
154
+ if (!resource) return undefined;
155
+ if (queryOptions?.includeBookings) {
143
156
  return this.attachBookingsToResource(resource);
144
157
  }
145
158
  return resource;
146
159
  }
160
+
147
161
  /**
148
162
  * 创建资源
149
163
  */
150
164
  createResource(data) {
151
- const id = (data == null ? void 0 : data.id) ?? (data == null ? void 0 : data.form_record_id) ?? Date.now();
152
- const resource = this.normalizeResource({ ...data, id });
165
+ const id = data?.id ?? data?.form_record_id ?? Date.now();
166
+ const resource = this.normalizeResource({
167
+ ...data,
168
+ id
169
+ });
153
170
  this.store.list.push(resource);
154
171
  this.store.map.set(resource.id, resource);
155
- this.saveResourcesToSQLite(this.store.list).catch(() => {
156
- });
157
- this.safeEmit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
172
+ this.saveResourcesToSQLite(this.store.list).catch(() => {});
173
+ this.safeEmit(_types.ResourceHooks.onResourcesChanged, this.store.list);
158
174
  return resource;
159
175
  }
176
+
160
177
  /**
161
178
  * 更新资源
162
179
  */
163
180
  updateResource(id, data) {
164
- const index = this.store.list.findIndex((r) => this.getIdKey(r.id) === this.getIdKey(id));
165
- if (index === -1)
166
- return void 0;
167
- const updated = this.normalizeResource({ ...this.store.list[index], ...data, id });
181
+ const index = this.store.list.findIndex(r => this.getIdKey(r.id) === this.getIdKey(id));
182
+ if (index === -1) return undefined;
183
+ const updated = this.normalizeResource({
184
+ ...this.store.list[index],
185
+ ...data,
186
+ id
187
+ });
168
188
  this.store.list[index] = updated;
169
189
  this.store.map.set(updated.id, updated);
170
- this.saveResourcesToSQLite(this.store.list).catch(() => {
171
- });
172
- this.safeEmit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
190
+ this.saveResourcesToSQLite(this.store.list).catch(() => {});
191
+ this.safeEmit(_types.ResourceHooks.onResourcesChanged, this.store.list);
173
192
  return updated;
174
193
  }
194
+
175
195
  /**
176
196
  * 删除资源
177
197
  */
178
198
  deleteResource(id) {
179
199
  const key = this.getIdKey(id);
180
- const index = this.store.list.findIndex((r) => this.getIdKey(r.id) === key);
181
- if (index === -1)
182
- return false;
200
+ const index = this.store.list.findIndex(r => this.getIdKey(r.id) === key);
201
+ if (index === -1) return false;
183
202
  this.store.list.splice(index, 1);
184
203
  this.store.map.delete(id);
185
- this.saveResourcesToSQLite(this.store.list).catch(() => {
186
- });
187
- this.safeEmit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
204
+ this.saveResourcesToSQLite(this.store.list).catch(() => {});
205
+ this.safeEmit(_types.ResourceHooks.onResourcesChanged, this.store.list);
188
206
  return true;
189
207
  }
208
+
190
209
  // ─────────────────────────────────────────────────────────────────
191
210
  // Booking CRUD
192
211
  // ─────────────────────────────────────────────────────────────────
212
+
193
213
  /**
194
214
  * 根据资源 ID 获取预订列表
195
215
  */
196
216
  getBookingsByResourceId(resourceId) {
197
217
  return this.resourceIdIndex.get(resourceId) || [];
198
218
  }
219
+
199
220
  /**
200
221
  * 创建预订
201
222
  */
@@ -205,43 +226,52 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
205
226
  // id,
206
227
  // ...booking,
207
228
  // } as ResourceBooking
229
+
208
230
  // this.store.bookings.push(normalized)
231
+
209
232
  // const rid = normalized.resource_id ?? normalized.resourceId
210
233
  // if (rid !== undefined) {
211
234
  // const existing = this.resourceIdIndex.get(rid) || []
212
235
  // existing.push(normalized)
213
236
  // this.resourceIdIndex.set(rid, existing)
214
237
  // }
238
+
215
239
  // this.saveBookingsToSQLite(this.store.bookings).catch(() => {})
216
240
  // this.safeEmit(ResourceHooks.onBookingsChanged, this.store.bookings)
217
241
  // return normalized
218
242
  // }
243
+
219
244
  /**
220
245
  * 更新预订
221
246
  */
222
247
  // updateBooking(id: ResourceId, data: Partial<ResourceBooking>): ResourceBooking | undefined {
223
248
  // const index = this.store.bookings.findIndex(b => this.getIdKey(b.id) === this.getIdKey(id))
224
249
  // if (index === -1) return undefined
250
+
225
251
  // const old = this.store.bookings[index]
226
252
  // const updated: ResourceBooking = { ...old, ...data, id: old.id } as ResourceBooking
227
253
  // this.store.bookings[index] = updated
254
+
228
255
  // this.rebuildBookingsIndex()
229
256
  // this.saveBookingsToSQLite(this.store.bookings).catch(() => {})
230
257
  // this.safeEmit(ResourceHooks.onBookingsChanged, this.store.bookings)
231
258
  // return updated
232
259
  // }
260
+
233
261
  /**
234
262
  * 删除预订
235
263
  */
236
264
  // deleteBooking(id: ResourceId): boolean {
237
265
  // const index = this.store.bookings.findIndex(b => this.getIdKey(b.id) === this.getIdKey(id))
238
266
  // if (index === -1) return false
267
+
239
268
  // this.store.bookings.splice(index, 1)
240
269
  // this.rebuildBookingsIndex()
241
270
  // this.saveBookingsToSQLite(this.store.bookings).catch(() => {})
242
271
  // this.safeEmit(ResourceHooks.onBookingsChanged, this.store.bookings)
243
272
  // return true
244
273
  // }
274
+
245
275
  /**
246
276
  * 清空缓存
247
277
  */
@@ -253,15 +283,19 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
253
283
  if (this.dbManager) {
254
284
  try {
255
285
  await this.dbManager.clear(RESOURCE_STORE_NAME);
286
+ // await this.dbManager.clear(BOOKING_STORE_NAME)
256
287
  } catch {
288
+ // 清理失败不影响调用方
257
289
  }
258
290
  }
259
- await this.safeEmit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
260
- await this.safeEmit(import_types.ResourceHooks.onBookingsChanged, this.store.bookings);
291
+ await this.safeEmit(_types.ResourceHooks.onResourcesChanged, this.store.list);
292
+ await this.safeEmit(_types.ResourceHooks.onBookingsChanged, this.store.bookings);
261
293
  }
294
+
262
295
  // ─────────────────────────────────────────────────────────────────
263
296
  // 内部工具方法
264
297
  // ─────────────────────────────────────────────────────────────────
298
+
265
299
  attachBookingsToResource(resource) {
266
300
  return {
267
301
  ...resource,
@@ -269,25 +303,23 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
269
303
  };
270
304
  }
271
305
  normalizeIntegerIdValue(value) {
272
- if (typeof value !== "string")
273
- return value;
306
+ if (typeof value !== 'string') return value;
274
307
  const matched = value.match(/^(-?\d+)\.0+$/);
275
- if (!matched)
276
- return value;
308
+ if (!matched) return value;
277
309
  return matched[1];
278
310
  }
279
311
  normalizeResourceIdFields(resource) {
280
312
  resource.id = this.normalizeIntegerIdValue(resource.id);
281
- if (resource.form_record_id !== void 0) {
313
+ if (resource.form_record_id !== undefined) {
282
314
  resource.form_record_id = this.normalizeIntegerIdValue(resource.form_record_id);
283
315
  }
284
- if (resource.form_id !== void 0) {
316
+ if (resource.form_id !== undefined) {
285
317
  resource.form_id = this.normalizeIntegerIdValue(resource.form_id);
286
318
  }
287
- if (resource.resource_form_id !== void 0) {
319
+ if (resource.resource_form_id !== undefined) {
288
320
  resource.resource_form_id = this.normalizeIntegerIdValue(resource.resource_form_id);
289
321
  }
290
- if (resource.resource_id !== void 0) {
322
+ if (resource.resource_id !== undefined) {
291
323
  resource.resource_id = this.normalizeIntegerIdValue(resource.resource_id);
292
324
  }
293
325
  return resource;
@@ -295,21 +327,20 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
295
327
  normalizeResource(resource) {
296
328
  const normalized = this.normalizeResourceIdFields({
297
329
  ...resource,
298
- id: this.normalizeIntegerIdValue((resource == null ? void 0 : resource.id) ?? (resource == null ? void 0 : resource.form_record_id) ?? "")
330
+ id: this.normalizeIntegerIdValue(resource?.id ?? resource?.form_record_id ?? '')
299
331
  });
300
- if (normalized.form_record_id === void 0 && normalized.id !== "") {
332
+ if (normalized.form_record_id === undefined && normalized.id !== '') {
301
333
  normalized.form_record_id = normalized.id;
302
334
  }
303
- if (normalized.resource_form_id === void 0 || normalized.resource_form_id === null) {
304
- normalized.resource_form_id = "";
335
+ if (normalized.resource_form_id === undefined || normalized.resource_form_id === null) {
336
+ normalized.resource_form_id = '';
305
337
  }
306
- if (normalized.schedule === void 0 || normalized.schedule === null) {
307
- normalized.schedule = "";
338
+ if (normalized.schedule === undefined || normalized.schedule === null) {
339
+ normalized.schedule = '';
308
340
  }
309
341
  if (Array.isArray(normalized.times)) {
310
- normalized.times = normalized.times.map((timeSlot) => {
311
- if (!timeSlot || typeof timeSlot !== "object")
312
- return timeSlot;
342
+ normalized.times = normalized.times.map(timeSlot => {
343
+ if (!timeSlot || typeof timeSlot !== 'object') return timeSlot;
313
344
  const startAt = timeSlot.start_at ?? timeSlot.start;
314
345
  const endAt = timeSlot.end_at ?? timeSlot.end;
315
346
  return {
@@ -322,7 +353,7 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
322
353
  });
323
354
  }
324
355
  if (Array.isArray(normalized.children)) {
325
- normalized.children = normalized.children.map((child) => this.normalizeResource(child));
356
+ normalized.children = normalized.children.map(child => this.normalizeResource(child));
326
357
  }
327
358
  return normalized;
328
359
  }
@@ -330,11 +361,12 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
330
361
  try {
331
362
  await this.core.effects.emit(event, payload);
332
363
  } catch (error) {
364
+ // 不让外部监听器异常影响资源模块预加载或清理流程
333
365
  console.error(`[ResourceModule] 事件派发失败: ${event}`, error);
334
366
  }
335
367
  }
336
368
  syncResourcesMap() {
337
- this.store.map = /* @__PURE__ */ new Map();
369
+ this.store.map = new Map();
338
370
  for (const resource of this.store.list) {
339
371
  this.store.map.set(resource.id, resource);
340
372
  }
@@ -343,8 +375,7 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
343
375
  this.resourceIdIndex.clear();
344
376
  for (const booking of this.store.bookings) {
345
377
  const rid = booking.resource_id ?? booking.resourceId;
346
- if (rid === void 0)
347
- continue;
378
+ if (rid === undefined) continue;
348
379
  const existing = this.resourceIdIndex.get(rid) || [];
349
380
  existing.push(booking);
350
381
  this.resourceIdIndex.set(rid, existing);
@@ -356,32 +387,34 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
356
387
  getIdKey(id) {
357
388
  return String(id);
358
389
  }
390
+
359
391
  // ─────────────────────────────────────────────────────────────────
360
392
  // 数据加载
361
393
  // ─────────────────────────────────────────────────────────────────
394
+
362
395
  async loadResourcesByServer() {
363
- if (!this.resourceDataSource)
364
- return [];
396
+ if (!this.resourceDataSource) return [];
365
397
  try {
366
398
  const response = await this.resourceDataSource.getResourcePage({
367
399
  num: DEFAULT_PAGE_SIZE,
368
400
  skip: 1
369
401
  });
370
- const resourceList = Array.isArray(response == null ? void 0 : response.list) ? response.list : [];
371
- const normalizedList = resourceList.map((item) => this.normalizeResource(item));
402
+ const resourceList = Array.isArray(response?.list) ? response.list : [];
403
+ const normalizedList = resourceList.map(item => this.normalizeResource(item));
372
404
  await this.saveResourcesToSQLite(normalizedList);
373
- await this.safeEmit(import_types.ResourceHooks.onResourcesLoaded, normalizedList);
405
+ await this.safeEmit(_types.ResourceHooks.onResourcesLoaded, normalizedList);
374
406
  return normalizedList;
375
407
  } catch {
376
408
  return [];
377
409
  }
378
410
  }
411
+
379
412
  // ─────────────────────────────────────────────────────────────────
380
413
  // SQLite 持久化
381
414
  // ─────────────────────────────────────────────────────────────────
415
+
382
416
  async loadResourcesFromSQLite() {
383
- if (!this.dbManager)
384
- return [];
417
+ if (!this.dbManager) return [];
385
418
  try {
386
419
  const resources = await this.dbManager.getAll(RESOURCE_STORE_NAME);
387
420
  return resources || [];
@@ -390,25 +423,24 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
390
423
  }
391
424
  }
392
425
  async saveResourcesToSQLite(resourceList) {
393
- if (!this.dbManager)
394
- return;
426
+ if (!this.dbManager) return;
395
427
  try {
396
428
  await this.dbManager.clear(RESOURCE_STORE_NAME);
397
- if (resourceList.length === 0)
398
- return;
429
+ if (resourceList.length === 0) return;
399
430
  if (this.dbManager.bulkAdd) {
400
431
  await this.dbManager.bulkAdd(RESOURCE_STORE_NAME, resourceList);
401
432
  return;
402
433
  }
403
- await Promise.all(resourceList.map((r) => this.dbManager.add(RESOURCE_STORE_NAME, r)));
434
+ await Promise.all(resourceList.map(r => this.dbManager.add(RESOURCE_STORE_NAME, r)));
404
435
  } catch (error) {
405
- console.error("saveResourcesToSQLite error", error);
406
- this.logError("保存资源到 SQLite 失败", {
436
+ console.error('saveResourcesToSQLite error', error);
437
+ this.logError('保存资源到 SQLite 失败', {
407
438
  error: error instanceof Error ? error.message : String(error),
408
439
  resourceList: resourceList.length
409
440
  });
410
441
  }
411
442
  }
443
+
412
444
  // private async loadBookingsFromSQLite(): Promise<ResourceBooking[]> {
413
445
  // if (!this.dbManager) return []
414
446
  // try {
@@ -418,6 +450,7 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
418
450
  // return []
419
451
  // }
420
452
  // }
453
+
421
454
  // private async saveBookingsToSQLite(bookings: ResourceBooking[]): Promise<void> {
422
455
  // if (!this.dbManager) return
423
456
  // try {
@@ -432,97 +465,95 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
432
465
  // // 忽略 SQLite 异常
433
466
  // }
434
467
  // }
468
+
435
469
  // ─────────────────────────────────────────────────────────────────
436
470
  // pubsub 同步
437
471
  // ─────────────────────────────────────────────────────────────────
472
+
438
473
  initResourceDataSource() {
439
- var _a, _b;
440
- const ResourceDataSourceClass = (_b = (_a = this.core.serverOptions) == null ? void 0 : _a.All_DATA_SOURCES) == null ? void 0 : _b.ResourceDataSource;
441
- if (!ResourceDataSourceClass)
442
- return;
474
+ const ResourceDataSourceClass = this.core.serverOptions?.All_DATA_SOURCES?.ResourceDataSource;
475
+ if (!ResourceDataSourceClass) return;
443
476
  this.resourceDataSource = new ResourceDataSourceClass();
444
477
  }
445
478
  async setupResourceSync() {
446
- var _a, _b, _c;
447
- if (!this.resourceDataSource)
448
- return;
479
+ if (!this.resourceDataSource) return;
449
480
  const result = await this.resourceDataSource.run({
450
481
  pubsub: {
451
- callback: (res) => {
452
- const data = (res == null ? void 0 : res.data) || res;
453
- if (!data)
454
- return;
455
- const channelKey = data.module || "resource";
456
- this.pendingSyncMessages.push({ ...data, _channelKey: channelKey });
457
- if (this.syncTimer)
458
- clearTimeout(this.syncTimer);
482
+ callback: res => {
483
+ const data = res?.data || res;
484
+ if (!data) return;
485
+ const channelKey = data.module || 'resource';
486
+ this.pendingSyncMessages.push({
487
+ ...data,
488
+ _channelKey: channelKey
489
+ });
490
+ if (this.syncTimer) clearTimeout(this.syncTimer);
459
491
  this.syncTimer = setTimeout(() => {
460
492
  this.processSyncMessages();
461
493
  }, RESOURCE_SYNC_DEBOUNCE_MS);
462
494
  }
463
495
  }
464
496
  }).catch(() => {
497
+ // 忽略同步初始化异常
465
498
  });
466
- console.log("result", result);
467
- this.logInfo("setupResourceSync: 资源列表查询结果", { result });
468
- if ((_b = (_a = result == null ? void 0 : result.data) == null ? void 0 : _a.list) == null ? void 0 : _b.length) {
469
- await this.mergeResourcesToStore((_c = result == null ? void 0 : result.data) == null ? void 0 : _c.list);
499
+ this.logInfo('setupResourceSync: 资源列表查询结果', {
500
+ result
501
+ });
502
+ if (result?.data?.list?.length) {
503
+ await this.mergeResourcesToStore(result?.data?.list);
470
504
  }
471
505
  }
472
506
  async processSyncMessages() {
473
- var _a, _b, _c;
474
507
  const messages = [...this.pendingSyncMessages];
475
508
  this.pendingSyncMessages = [];
476
- if (messages.length === 0)
477
- return;
509
+ if (messages.length === 0) return;
478
510
  const deleteIds = [];
479
- const bodyUpdates = /* @__PURE__ */ new Map();
511
+ const bodyUpdates = new Map();
480
512
  const sseRefreshIds = [];
481
513
  for (const msg of messages) {
482
- if (msg.operation === "delete" || msg.action === "delete") {
483
- if ((_a = msg.ids) == null ? void 0 : _a.length)
484
- deleteIds.push(...msg.ids);
485
- else if (msg.id !== void 0)
486
- deleteIds.push(msg.id);
514
+ if (msg.operation === 'delete' || msg.action === 'delete') {
515
+ if (msg.ids?.length) deleteIds.push(...msg.ids);else if (msg.id !== undefined) deleteIds.push(msg.id);
487
516
  continue;
488
517
  }
489
518
  if (msg.body) {
490
519
  const bodyId = msg.body.id ?? msg.id;
491
- if (bodyId === void 0)
492
- continue;
493
- bodyUpdates.set(this.getIdKey(bodyId), { ...msg.body, id: bodyId });
520
+ if (bodyId === undefined) continue;
521
+ bodyUpdates.set(this.getIdKey(bodyId), {
522
+ ...msg.body,
523
+ id: bodyId
524
+ });
494
525
  continue;
495
526
  }
496
- if ((_b = msg.ids) == null ? void 0 : _b.length) {
527
+ if (msg.ids?.length) {
497
528
  sseRefreshIds.push(...msg.ids);
498
- } else if (msg.id !== void 0) {
529
+ } else if (msg.id !== undefined) {
499
530
  sseRefreshIds.push(msg.id);
500
- } else if ((_c = msg.relation_resource_ids) == null ? void 0 : _c.length) {
531
+ } else if (msg.relation_resource_ids?.length) {
501
532
  sseRefreshIds.push(...msg.relation_resource_ids);
502
533
  }
503
534
  }
504
535
  const uniqueDeleteIds = this.uniqueResourceIds(deleteIds);
505
536
  const uniqueSSEIds = this.uniqueResourceIds(sseRefreshIds);
506
537
  const bodyList = [...bodyUpdates.values()];
507
- if (uniqueDeleteIds.length > 0)
508
- await this.removeResourcesByIds(uniqueDeleteIds);
509
- if (bodyList.length > 0)
510
- await this.mergeResourcesToStore(bodyList);
538
+ if (uniqueDeleteIds.length > 0) await this.removeResourcesByIds(uniqueDeleteIds);
539
+ if (bodyList.length > 0) await this.mergeResourcesToStore(bodyList);
511
540
  if (uniqueSSEIds.length > 0) {
512
541
  const freshResources = await this.fetchResourcesBySSE(uniqueSSEIds);
513
- if (freshResources.length > 0)
514
- await this.mergeResourcesToStore(freshResources);
542
+ if (freshResources.length > 0) await this.mergeResourcesToStore(freshResources);
515
543
  }
516
- if (uniqueDeleteIds.length === 0 && bodyList.length === 0 && uniqueSSEIds.length === 0)
517
- return;
518
- await this.core.effects.emit(import_types.ResourceHooks.onResourcesSyncCompleted, null);
544
+ if (uniqueDeleteIds.length === 0 && bodyList.length === 0 && uniqueSSEIds.length === 0) return;
545
+ await this.core.effects.emit(_types.ResourceHooks.onResourcesSyncCompleted, null);
519
546
  }
520
547
  async fetchResourcesBySSE(ids) {
521
- if (!this.resourceDataSource)
522
- return [];
548
+ if (!this.resourceDataSource) return [];
523
549
  try {
524
550
  const list = await this.resourceDataSource.run({
525
- sse: { query: { type: "resource", ids } }
551
+ sse: {
552
+ query: {
553
+ type: 'resource',
554
+ ids
555
+ }
556
+ }
526
557
  });
527
558
  return list || [];
528
559
  } catch {
@@ -530,8 +561,8 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
530
561
  }
531
562
  }
532
563
  async removeResourcesByIds(ids) {
533
- const keySet = new Set(ids.map((id) => this.getIdKey(id)));
534
- this.store.list = this.store.list.filter((r) => !keySet.has(this.getIdKey(r.id)));
564
+ const keySet = new Set(ids.map(id => this.getIdKey(id)));
565
+ this.store.list = this.store.list.filter(r => !keySet.has(this.getIdKey(r.id)));
535
566
  this.syncResourcesMap();
536
567
  if (this.dbManager) {
537
568
  try {
@@ -539,21 +570,20 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
539
570
  await this.dbManager.delete(RESOURCE_STORE_NAME, id);
540
571
  }
541
572
  } catch {
573
+ // 忽略 SQLite 异常
542
574
  }
543
575
  }
544
- await this.safeEmit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
576
+ await this.safeEmit(_types.ResourceHooks.onResourcesChanged, this.store.list);
545
577
  }
546
578
  async mergeResourcesToStore(freshResources) {
547
- const freshMap = /* @__PURE__ */ new Map();
579
+ const freshMap = new Map();
548
580
  for (const r of freshResources) {
549
- if ((r == null ? void 0 : r.id) === void 0)
550
- continue;
581
+ if (r?.id === undefined) continue;
551
582
  freshMap.set(this.getIdKey(r.id), this.normalizeResource(r));
552
583
  }
553
- const updatedList = this.store.list.map((r) => {
584
+ const updatedList = this.store.list.map(r => {
554
585
  const key = this.getIdKey(r.id);
555
- if (!freshMap.has(key))
556
- return r;
586
+ if (!freshMap.has(key)) return r;
557
587
  const fresh = freshMap.get(key);
558
588
  freshMap.delete(key);
559
589
  return fresh;
@@ -564,20 +594,19 @@ var ResourceModule = class extends import_BaseModule.BaseModule {
564
594
  this.store.list = updatedList;
565
595
  this.syncResourcesMap();
566
596
  await this.saveResourcesToSQLite(this.store.list);
567
- await this.safeEmit(import_types.ResourceHooks.onResourcesChanged, this.store.list);
597
+ await this.safeEmit(_types.ResourceHooks.onResourcesChanged, this.store.list);
568
598
  }
569
599
  uniqueResourceIds(ids) {
570
- const idMap = /* @__PURE__ */ new Map();
600
+ const idMap = new Map();
571
601
  for (const id of ids) {
572
602
  idMap.set(this.getIdKey(id), id);
573
603
  }
574
604
  return [...idMap.values()];
575
605
  }
576
- };
577
- var resourceModule = new ResourceModule();
578
- // Annotate the CommonJS export names for ESM import in node:
579
- 0 && (module.exports = {
580
- ResourceHooks,
581
- ResourceModule,
582
- resourceModule
583
- });
606
+ }
607
+
608
+ // ─────────────────────────────────────────────────────────────────
609
+ // 导出
610
+ // ─────────────────────────────────────────────────────────────────
611
+ exports.ResourceModule = ResourceModule;
612
+ const resourceModule = exports.resourceModule = new ResourceModule();