@pisell/pisellos 2.1.100 → 2.1.102
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.
- package/dist/effects/index.d.ts +2 -2
- package/dist/modules/Customer/types.d.ts +1 -1
- package/dist/modules/Payment/types.d.ts +7 -7
- package/dist/modules/Product/index.d.ts +1 -1
- package/dist/modules/Rules/types.d.ts +1 -1
- package/dist/modules/Schedule/getDateIsInSchedule.d.ts +1 -1
- package/dist/modules/Schedule/type.d.ts +7 -7
- package/dist/modules/Schedule/types.d.ts +9 -9
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingByStep/utils/resources.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/ShopDiscount/types.d.ts +1 -1
- package/dist/solution/ShopDiscount/utils.d.ts +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/utils/task.d.ts +2 -2
- package/dist/utils/watch.d.ts +2 -2
- package/lib/core/index.js +28 -27
- package/lib/effects/index.d.ts +2 -2
- package/lib/effects/index.js +7 -3
- package/lib/modules/Account/index.js +10 -9
- package/lib/modules/AccountList/index.js +11 -14
- package/lib/modules/BaseModule.js +3 -6
- package/lib/modules/Cart/index.js +9 -14
- package/lib/modules/Cart/utils/cartProduct.js +6 -3
- package/lib/modules/Customer/constants.js +1 -1
- package/lib/modules/Customer/index.js +15 -18
- package/lib/modules/Customer/types.d.ts +1 -1
- package/lib/modules/Date/index.js +6 -10
- package/lib/modules/Date/types.js +0 -1
- package/lib/modules/Discount/index.js +6 -11
- package/lib/modules/Guests/index.js +15 -10
- package/lib/modules/Order/index.js +7 -10
- package/lib/modules/Payment/cash.js +1 -1
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +1 -1
- package/lib/modules/Payment/eftpos.js +1 -1
- package/lib/modules/Payment/index.js +73 -84
- package/lib/modules/Payment/types.d.ts +7 -7
- package/lib/modules/Payment/utils.js +6 -3
- package/lib/modules/Payment/walletpass.js +31 -31
- package/lib/modules/Product/index.d.ts +1 -1
- package/lib/modules/Product/index.js +5 -6
- package/lib/modules/ProductList/index.js +3 -5
- package/lib/modules/Resource/index.js +12 -8
- package/lib/modules/Rules/index.js +35 -21
- package/lib/modules/Rules/types.d.ts +1 -1
- package/lib/modules/Schedule/getDateIsInSchedule.d.ts +1 -1
- package/lib/modules/Schedule/index.js +5 -8
- package/lib/modules/Schedule/type.d.ts +7 -7
- package/lib/modules/Schedule/types.d.ts +9 -9
- package/lib/modules/Schedule/utils.js +4 -2
- package/lib/modules/Step/index.js +4 -7
- package/lib/modules/Summary/index.js +4 -9
- package/lib/modules/Summary/utils.js +16 -8
- package/lib/plugins/request.js +33 -34
- package/lib/plugins/window.js +113 -101
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingByStep/index.js +177 -110
- package/lib/solution/BookingByStep/utils/capacity.js +16 -11
- package/lib/solution/BookingByStep/utils/resources.d.ts +1 -1
- package/lib/solution/BookingByStep/utils/resources.js +8 -4
- package/lib/solution/BookingByStep/utils/stock.js +6 -3
- package/lib/solution/BookingByStep/utils/timeslots.js +27 -24
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.js +14 -19
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +3 -3
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +6 -6
- package/lib/solution/BookingTicket/utils/scan/index.js +1 -3
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +9 -10
- package/lib/solution/BuyTickets/index.js +15 -15
- package/lib/solution/Checkout/index.js +211 -216
- package/lib/solution/Checkout/utils/index.js +22 -18
- package/lib/solution/RegisterAndLogin/config.js +2 -2
- package/lib/solution/RegisterAndLogin/index.js +110 -114
- package/lib/solution/RegisterAndLogin/utils.js +9 -9
- package/lib/solution/ShopDiscount/index.js +13 -16
- package/lib/solution/ShopDiscount/types.d.ts +1 -1
- package/lib/solution/ShopDiscount/utils.d.ts +2 -2
- package/lib/solution/ShopDiscount/utils.js +2 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/utils/task.d.ts +2 -2
- package/lib/utils/task.js +3 -3
- package/lib/utils/watch.d.ts +2 -2
- package/lib/utils/watch.js +7 -5
- package/package.json +17 -16
package/dist/effects/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
type EffectCallback = (payload: any) => void | Promise<void | {
|
|
2
2
|
status: boolean;
|
|
3
3
|
message?: string;
|
|
4
4
|
}>;
|
|
5
|
-
|
|
5
|
+
type UnsubscribeFunction = () => void;
|
|
6
6
|
declare class EffectsManager {
|
|
7
7
|
private listeners;
|
|
8
8
|
on(event: string, callback: EffectCallback): UnsubscribeFunction;
|
|
@@ -33,7 +33,7 @@ export interface ShopCustomer extends ICustomer {
|
|
|
33
33
|
* walletDetails.wallet: 用户所有wallet
|
|
34
34
|
* latestWalletDetail.wallet: 用户最新wallet
|
|
35
35
|
*/
|
|
36
|
-
|
|
36
|
+
type CustomerWith = 'formRecord' | 'walletDetails.wallet' | 'latestWalletDetail.wallet';
|
|
37
37
|
/**
|
|
38
38
|
* 获取客户列表参数
|
|
39
39
|
*/
|
|
@@ -581,12 +581,12 @@ export declare enum PaymentHooks {
|
|
|
581
581
|
OnOrderAmountChanged = "payment:onOrderAmountChanged",
|
|
582
582
|
OnPaymentSyncError = "payment:onPaymentSyncError",
|
|
583
583
|
OnPaymentSyncSuccess = "payment:onPaymentSyncSuccess",
|
|
584
|
-
OnWalletRecommendListUpdated =
|
|
585
|
-
OnWalletRecommendListCleared =
|
|
586
|
-
OnUserIdentificationCodesUpdated =
|
|
587
|
-
OnUserIdentificationCodesCleared =
|
|
588
|
-
OnWalletCacheCleared =
|
|
589
|
-
OnSearchIdentificationCodeCompleted =
|
|
584
|
+
OnWalletRecommendListUpdated = "wallet:onWalletRecommendListUpdated",
|
|
585
|
+
OnWalletRecommendListCleared = "wallet:onWalletRecommendListCleared",
|
|
586
|
+
OnUserIdentificationCodesUpdated = "wallet:onUserIdentificationCodesUpdated",
|
|
587
|
+
OnUserIdentificationCodesCleared = "wallet:onUserIdentificationCodesCleared",
|
|
588
|
+
OnWalletCacheCleared = "wallet:onWalletCacheCleared",
|
|
589
|
+
OnSearchIdentificationCodeCompleted = "wallet:onSearchIdentificationCodeCompleted"
|
|
590
590
|
}
|
|
591
591
|
/**
|
|
592
592
|
* 钱包推荐扣款请求参数
|
|
@@ -740,7 +740,7 @@ export interface SearchIdentificationCodeResponse {
|
|
|
740
740
|
/**
|
|
741
741
|
* 搜索识别码结果类型
|
|
742
742
|
*/
|
|
743
|
-
export
|
|
743
|
+
export type SearchIdentificationCodeResult = {
|
|
744
744
|
type: 'walletCode';
|
|
745
745
|
data: SearchIdentificationCodeItem[];
|
|
746
746
|
} | {
|
|
@@ -49,5 +49,5 @@ export declare class Product extends BaseModule implements Module {
|
|
|
49
49
|
getCategories(): ProductCategory[];
|
|
50
50
|
setOtherParams(key: string, value: any): void;
|
|
51
51
|
getOtherParams(): any;
|
|
52
|
-
getProductType(): "
|
|
52
|
+
getProductType(): "normal" | "duration" | "session";
|
|
53
53
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import dayjs from "dayjs";
|
|
2
2
|
import { ScheduleItem } from "./types";
|
|
3
3
|
export declare const getDateIsInSchedule: (dateTime: string, scheduleList: ScheduleItem[]) => boolean;
|
|
4
|
-
export
|
|
4
|
+
export type ScheduleTimeSlot = {
|
|
5
5
|
/** 开始时间 HH:mm */
|
|
6
6
|
start_time: string;
|
|
7
7
|
/** 结束时间 HH:mm */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type ScheduleItem = {
|
|
2
2
|
/** 颜色 */
|
|
3
3
|
color: string;
|
|
4
4
|
/** 创建时间 */
|
|
@@ -65,7 +65,7 @@ export declare type ScheduleItem = {
|
|
|
65
65
|
schedule_id: number;
|
|
66
66
|
}[];
|
|
67
67
|
};
|
|
68
|
-
export
|
|
68
|
+
export type ScheduleFormOtherValue = {
|
|
69
69
|
/** 截止模式
|
|
70
70
|
* 1: 永不截止
|
|
71
71
|
* 2: 按日期截止
|
|
@@ -79,11 +79,11 @@ export declare type ScheduleFormOtherValue = {
|
|
|
79
79
|
includeStatus: boolean;
|
|
80
80
|
type: 'standard' | 'time-slots' | 'designation';
|
|
81
81
|
};
|
|
82
|
-
export
|
|
82
|
+
export type ExcIncDate = {
|
|
83
83
|
start: string;
|
|
84
84
|
end: string;
|
|
85
85
|
};
|
|
86
|
-
export
|
|
86
|
+
export type ScheduleFormData = {
|
|
87
87
|
/** 颜色 */
|
|
88
88
|
color: string;
|
|
89
89
|
/** 日程名称 */
|
|
@@ -131,20 +131,20 @@ export declare type ScheduleFormData = {
|
|
|
131
131
|
start_time: any;
|
|
132
132
|
end_time: any;
|
|
133
133
|
};
|
|
134
|
-
export
|
|
134
|
+
export type CalendarDataItem = {
|
|
135
135
|
date: string;
|
|
136
136
|
color: string[];
|
|
137
137
|
isExcluded: boolean;
|
|
138
138
|
schedule_ids?: number[];
|
|
139
139
|
[key: string]: any;
|
|
140
140
|
};
|
|
141
|
-
export
|
|
141
|
+
export type RequestData<Data> = {
|
|
142
142
|
data: Data;
|
|
143
143
|
status: boolean;
|
|
144
144
|
message: string;
|
|
145
145
|
code: number;
|
|
146
146
|
};
|
|
147
|
-
export
|
|
147
|
+
export type ResponseListData<Data> = {
|
|
148
148
|
status: boolean;
|
|
149
149
|
message: string;
|
|
150
150
|
code: number;
|
|
@@ -4,7 +4,7 @@ export interface ScheduleState {
|
|
|
4
4
|
availabilityDateList: ScheduleAvailabilityDateItem[];
|
|
5
5
|
otherProductsIds: number[];
|
|
6
6
|
}
|
|
7
|
-
export
|
|
7
|
+
export type ScheduleAvailabilityDateItem = {
|
|
8
8
|
date: string;
|
|
9
9
|
schedule_id: number[];
|
|
10
10
|
product_ids: number[];
|
|
@@ -24,7 +24,7 @@ export interface LoadScheduleAvailableDateParams {
|
|
|
24
24
|
}
|
|
25
25
|
export interface ScheduleModuleAPI {
|
|
26
26
|
}
|
|
27
|
-
export
|
|
27
|
+
export type ScheduleItem = {
|
|
28
28
|
/** 颜色 */
|
|
29
29
|
color: string;
|
|
30
30
|
/** 创建时间 */
|
|
@@ -91,7 +91,7 @@ export declare type ScheduleItem = {
|
|
|
91
91
|
schedule_id: number;
|
|
92
92
|
}[];
|
|
93
93
|
};
|
|
94
|
-
export
|
|
94
|
+
export type ScheduleFormOtherValue = {
|
|
95
95
|
/** 截止模式
|
|
96
96
|
* 1: 永不截止
|
|
97
97
|
* 2: 按日期截止
|
|
@@ -105,11 +105,11 @@ export declare type ScheduleFormOtherValue = {
|
|
|
105
105
|
includeStatus: boolean;
|
|
106
106
|
type: 'standard' | 'time-slots' | 'designation';
|
|
107
107
|
};
|
|
108
|
-
export
|
|
108
|
+
export type ExcIncDate = {
|
|
109
109
|
start: string;
|
|
110
110
|
end: string;
|
|
111
111
|
};
|
|
112
|
-
export
|
|
112
|
+
export type ScheduleFormData = {
|
|
113
113
|
/** 颜色 */
|
|
114
114
|
color: string;
|
|
115
115
|
/** 日程名称 */
|
|
@@ -157,20 +157,20 @@ export declare type ScheduleFormData = {
|
|
|
157
157
|
start_time: any;
|
|
158
158
|
end_time: any;
|
|
159
159
|
};
|
|
160
|
-
export
|
|
160
|
+
export type CalendarDataItem = {
|
|
161
161
|
date: string;
|
|
162
162
|
color: string[];
|
|
163
163
|
isExcluded: boolean;
|
|
164
164
|
schedule_ids?: number[];
|
|
165
165
|
[key: string]: any;
|
|
166
166
|
};
|
|
167
|
-
export
|
|
167
|
+
export type RequestData<Data> = {
|
|
168
168
|
data: Data;
|
|
169
169
|
status: boolean;
|
|
170
170
|
message: string;
|
|
171
171
|
code: number;
|
|
172
172
|
};
|
|
173
|
-
export
|
|
173
|
+
export type ResponseListData<Data> = {
|
|
174
174
|
status: boolean;
|
|
175
175
|
message: string;
|
|
176
176
|
code: number;
|
|
@@ -181,7 +181,7 @@ export declare type ResponseListData<Data> = {
|
|
|
181
181
|
skip: number;
|
|
182
182
|
};
|
|
183
183
|
};
|
|
184
|
-
export
|
|
184
|
+
export type ScheduleAllMap = Record<string, {
|
|
185
185
|
minTime: dayjs.Dayjs | null;
|
|
186
186
|
maxTime: dayjs.Dayjs | null;
|
|
187
187
|
minTimeStr: string | null;
|
|
@@ -357,7 +357,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
357
357
|
};
|
|
358
358
|
setOtherData(key: string, value: any): void;
|
|
359
359
|
getOtherData(key: string): any;
|
|
360
|
-
getProductTypeById(id: number): Promise<"
|
|
360
|
+
getProductTypeById(id: number): Promise<"normal" | "duration" | "session">;
|
|
361
361
|
/**
|
|
362
362
|
* 提供给 UI 的方法,减轻 UI 层的计算压力,UI 层只需要传递 cartItemId 和 resourceCode 即返回对应的 renderList
|
|
363
363
|
*
|
|
@@ -6,7 +6,7 @@ import { CartItem, ProductData } from '../../../modules';
|
|
|
6
6
|
* 3. 格式化资源相关 格式化资源列表 --> 格式化资源 --> 获取时间切片列表 --> 判断单个时间切片是否可用 formatResources
|
|
7
7
|
*
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
type DateType = Dayjs;
|
|
10
10
|
export interface TimeSliceItem {
|
|
11
11
|
start_time: string;
|
|
12
12
|
end_time: string;
|
|
@@ -115,7 +115,7 @@ export declare class BookingTicketImpl extends BaseModule implements Module {
|
|
|
115
115
|
* 获取当前的客户搜索条件
|
|
116
116
|
* @returns 当前搜索条件
|
|
117
117
|
*/
|
|
118
|
-
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "
|
|
118
|
+
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "skip" | "num">;
|
|
119
119
|
/**
|
|
120
120
|
* 获取客户列表状态(包含滚动加载相关状态)
|
|
121
121
|
* @returns 客户状态
|
|
@@ -11,7 +11,7 @@ export declare enum ShopDiscountHooks {
|
|
|
11
11
|
onRulesListChange = "shopDiscount:onRulesListChange",
|
|
12
12
|
onLoadPrepareCalcResult = "shopDiscount:onLoadPrepareCalcResult"
|
|
13
13
|
}
|
|
14
|
-
export
|
|
14
|
+
export type Customer = {
|
|
15
15
|
id: string | number;
|
|
16
16
|
name: string;
|
|
17
17
|
email: string;
|
|
@@ -12,13 +12,13 @@ export declare const isAllNormalProduct: (items: any[]) => boolean;
|
|
|
12
12
|
* @returns
|
|
13
13
|
*/
|
|
14
14
|
export declare const getDiscountAmount: (discount: Discount, total: number, price: number) => number;
|
|
15
|
-
export declare const getDiscountListAmountTotal: (discount: Discount[]) =>
|
|
15
|
+
export declare const getDiscountListAmountTotal: (discount: Discount[]) => any;
|
|
16
16
|
/**
|
|
17
17
|
* 获取折扣金额 计算每个折扣的金额
|
|
18
18
|
* @param discount
|
|
19
19
|
* @returns
|
|
20
20
|
*/
|
|
21
|
-
export declare const getDiscountListAmount: (discount: Discount[]) =>
|
|
21
|
+
export declare const getDiscountListAmount: (discount: Discount[]) => any;
|
|
22
22
|
export interface ScheduleItem {
|
|
23
23
|
id: number;
|
|
24
24
|
name: string | {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export interface ModuleOptions {
|
|
|
27
27
|
initialState?: Record<string, any>;
|
|
28
28
|
otherParams?: Record<string, any>;
|
|
29
29
|
}
|
|
30
|
-
export
|
|
30
|
+
export type EventHandler = (data?: any) => void;
|
|
31
31
|
export interface PisellCore {
|
|
32
32
|
registerPlugin: (plugin: Plugin, options?: PluginOptions) => void;
|
|
33
33
|
getPlugin: <T extends Plugin>(name: string) => T | null;
|
package/dist/utils/task.d.ts
CHANGED
package/dist/utils/watch.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* 监听模块
|
|
3
3
|
*
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
6
|
-
export
|
|
5
|
+
export type WatchEventCallback = (...args: any[]) => void;
|
|
6
|
+
export type WatchEventItem = {
|
|
7
7
|
key: string;
|
|
8
8
|
callback: WatchEventCallback;
|
|
9
9
|
};
|
package/lib/core/index.js
CHANGED
|
@@ -26,13 +26,13 @@ module.exports = __toCommonJS(core_exports);
|
|
|
26
26
|
var import_createStore = require("../store/createStore");
|
|
27
27
|
var import_effects = require("../effects");
|
|
28
28
|
var PisellOSCore = class {
|
|
29
|
-
plugins = /* @__PURE__ */ new Map();
|
|
30
|
-
modules = /* @__PURE__ */ new Map();
|
|
31
|
-
stores = /* @__PURE__ */ new Map();
|
|
32
|
-
effects = new import_effects.EffectsManager();
|
|
33
|
-
debug = false;
|
|
34
|
-
context = {};
|
|
35
29
|
constructor(options) {
|
|
30
|
+
this.plugins = /* @__PURE__ */ new Map();
|
|
31
|
+
this.modules = /* @__PURE__ */ new Map();
|
|
32
|
+
this.stores = /* @__PURE__ */ new Map();
|
|
33
|
+
this.effects = new import_effects.EffectsManager();
|
|
34
|
+
this.debug = false;
|
|
35
|
+
this.context = {};
|
|
36
36
|
this.debug = (options == null ? void 0 : options.debug) || false;
|
|
37
37
|
this.context = (options == null ? void 0 : options.context) || {};
|
|
38
38
|
this.initialize(options);
|
|
@@ -48,7 +48,7 @@ var PisellOSCore = class {
|
|
|
48
48
|
this.registerModule(item.module, item.options);
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
|
-
this.log("PisellOS
|
|
51
|
+
this.log("PisellOS 核心初始化完成");
|
|
52
52
|
}
|
|
53
53
|
// 日志方法
|
|
54
54
|
log(message, level = "info") {
|
|
@@ -71,12 +71,12 @@ var PisellOSCore = class {
|
|
|
71
71
|
// 插件相关方法
|
|
72
72
|
registerPlugin(plugin, options) {
|
|
73
73
|
if (this.plugins.has(plugin.name)) {
|
|
74
|
-
this.log(
|
|
74
|
+
this.log(`插件 ${plugin.name} 已经注册过,将被覆盖`, "warn");
|
|
75
75
|
}
|
|
76
76
|
if (options == null ? void 0 : options.dependencies) {
|
|
77
77
|
for (const dep of options.dependencies) {
|
|
78
78
|
if (!this.plugins.has(dep)) {
|
|
79
|
-
throw new Error(
|
|
79
|
+
throw new Error(`注册插件 ${plugin.name} 失败:缺少依赖插件 ${dep}`);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -84,14 +84,14 @@ var PisellOSCore = class {
|
|
|
84
84
|
const result = plugin.initialize();
|
|
85
85
|
if (result instanceof Promise) {
|
|
86
86
|
result.catch((err) => {
|
|
87
|
-
this.log(
|
|
87
|
+
this.log(`插件 ${plugin.name} 初始化失败: ${err.message}`, "error");
|
|
88
88
|
throw err;
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
91
|
this.plugins.set(plugin.name, plugin);
|
|
92
|
-
this.log(
|
|
92
|
+
this.log(`插件 ${plugin.name} v${plugin.version} 注册成功`);
|
|
93
93
|
} catch (error) {
|
|
94
|
-
this.log(
|
|
94
|
+
this.log(`插件 ${plugin.name} 初始化过程中出错: ${error}`, "error");
|
|
95
95
|
throw error;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
@@ -104,12 +104,12 @@ var PisellOSCore = class {
|
|
|
104
104
|
// 模块相关方法
|
|
105
105
|
registerModule(module2, options) {
|
|
106
106
|
if (this.modules.has(module2.name)) {
|
|
107
|
-
this.log(
|
|
107
|
+
this.log(`模块 ${module2.name} 已经注册过,将被覆盖`, "warn");
|
|
108
108
|
}
|
|
109
109
|
if (options == null ? void 0 : options.dependencies) {
|
|
110
110
|
for (const dep of options.dependencies) {
|
|
111
111
|
if (!this.modules.has(dep)) {
|
|
112
|
-
throw new Error(
|
|
112
|
+
throw new Error(`注册模块 ${module2.name} 失败:缺少依赖模块 ${dep}`);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
}
|
|
@@ -117,7 +117,7 @@ var PisellOSCore = class {
|
|
|
117
117
|
for (const plugin of options.plugins) {
|
|
118
118
|
if (!this.plugins.has(plugin)) {
|
|
119
119
|
throw new Error(
|
|
120
|
-
|
|
120
|
+
`注册模块 ${module2.name} 失败:缺少依赖插件 ${plugin}`
|
|
121
121
|
);
|
|
122
122
|
}
|
|
123
123
|
}
|
|
@@ -126,9 +126,10 @@ var PisellOSCore = class {
|
|
|
126
126
|
(options == null ? void 0 : options.initialState) || {},
|
|
127
127
|
module2.name,
|
|
128
128
|
(path, value) => {
|
|
129
|
-
console.log("core
|
|
129
|
+
console.log("core 检测到模块值更新", module2.name, path, value);
|
|
130
130
|
this.effects.emit(`${module2.name}:changed`, { path, value });
|
|
131
|
-
if (module2.storeChange)
|
|
131
|
+
if (module2.storeChange)
|
|
132
|
+
module2.storeChange(path, value);
|
|
132
133
|
}
|
|
133
134
|
);
|
|
134
135
|
this.stores.set(module2.name, proxy);
|
|
@@ -136,14 +137,14 @@ var PisellOSCore = class {
|
|
|
136
137
|
const result = module2.initialize(this, { store: proxy, ...options });
|
|
137
138
|
if (result instanceof Promise) {
|
|
138
139
|
result.catch((err) => {
|
|
139
|
-
this.log(
|
|
140
|
+
this.log(`模块 ${module2.name} 初始化失败: ${err.message}`, "error");
|
|
140
141
|
throw err;
|
|
141
142
|
});
|
|
142
143
|
}
|
|
143
144
|
this.modules.set(module2.name, module2);
|
|
144
|
-
this.log(
|
|
145
|
+
this.log(`模块 ${module2.name} v${module2.version} 注册成功`);
|
|
145
146
|
} catch (error) {
|
|
146
|
-
this.log(
|
|
147
|
+
this.log(`模块 ${module2.name} 初始化过程中出错: ${error}`, "error");
|
|
147
148
|
throw error;
|
|
148
149
|
}
|
|
149
150
|
}
|
|
@@ -167,9 +168,9 @@ var PisellOSCore = class {
|
|
|
167
168
|
if (module2.destroy) {
|
|
168
169
|
try {
|
|
169
170
|
await Promise.resolve(module2.destroy());
|
|
170
|
-
this.log(
|
|
171
|
+
this.log(`模块 ${name} 已销毁`);
|
|
171
172
|
} catch (error) {
|
|
172
|
-
this.log(
|
|
173
|
+
this.log(`销毁模块 ${name} 时出错: ${error}`, "error");
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
176
|
}
|
|
@@ -178,14 +179,14 @@ var PisellOSCore = class {
|
|
|
178
179
|
if (plugin.destroy) {
|
|
179
180
|
try {
|
|
180
181
|
await Promise.resolve(plugin.destroy());
|
|
181
|
-
this.log(
|
|
182
|
+
this.log(`插件 ${name} 已销毁`);
|
|
182
183
|
} catch (error) {
|
|
183
|
-
this.log(
|
|
184
|
+
this.log(`销毁插件 ${name} 时出错: ${error}`, "error");
|
|
184
185
|
}
|
|
185
186
|
}
|
|
186
187
|
}
|
|
187
188
|
this.plugins.clear();
|
|
188
|
-
this.log("PisellOS
|
|
189
|
+
this.log("PisellOS 核心已销毁");
|
|
189
190
|
}
|
|
190
191
|
/**
|
|
191
192
|
* 验证上下文参数
|
|
@@ -195,7 +196,7 @@ var PisellOSCore = class {
|
|
|
195
196
|
const value = this.context[rule.name];
|
|
196
197
|
if (rule.required && (value === void 0 || value === null)) {
|
|
197
198
|
this.log(
|
|
198
|
-
|
|
199
|
+
`模块 ${config.name} 缺少必需的上下文参数: ${rule.name}`,
|
|
199
200
|
"error"
|
|
200
201
|
);
|
|
201
202
|
return false;
|
|
@@ -203,7 +204,7 @@ var PisellOSCore = class {
|
|
|
203
204
|
if (rule.validate && value !== void 0 && value !== null) {
|
|
204
205
|
if (!rule.validate(value)) {
|
|
205
206
|
this.log(
|
|
206
|
-
|
|
207
|
+
`模块 ${config.name} 上下文参数验证失败: ${rule.name} - ${rule.message || "验证失败"}`,
|
|
207
208
|
"error"
|
|
208
209
|
);
|
|
209
210
|
return false;
|
package/lib/effects/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
type EffectCallback = (payload: any) => void | Promise<void | {
|
|
2
2
|
status: boolean;
|
|
3
3
|
message?: string;
|
|
4
4
|
}>;
|
|
5
|
-
|
|
5
|
+
type UnsubscribeFunction = () => void;
|
|
6
6
|
declare class EffectsManager {
|
|
7
7
|
private listeners;
|
|
8
8
|
on(event: string, callback: EffectCallback): UnsubscribeFunction;
|
package/lib/effects/index.js
CHANGED
|
@@ -23,10 +23,13 @@ __export(effects_exports, {
|
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(effects_exports);
|
|
25
25
|
var EffectsManager = class {
|
|
26
|
-
|
|
26
|
+
constructor() {
|
|
27
|
+
this.listeners = /* @__PURE__ */ new Map();
|
|
28
|
+
}
|
|
27
29
|
on(event, callback) {
|
|
28
30
|
var _a;
|
|
29
|
-
if (!this.listeners.has(event))
|
|
31
|
+
if (!this.listeners.has(event))
|
|
32
|
+
this.listeners.set(event, /* @__PURE__ */ new Set());
|
|
30
33
|
(_a = this.listeners.get(event)) == null ? void 0 : _a.add(callback);
|
|
31
34
|
return () => {
|
|
32
35
|
this.off(event, callback);
|
|
@@ -66,7 +69,8 @@ var EffectsManager = class {
|
|
|
66
69
|
}
|
|
67
70
|
async emit(event, payload) {
|
|
68
71
|
const callbacks = this.listeners.get(event);
|
|
69
|
-
if (!callbacks)
|
|
72
|
+
if (!callbacks)
|
|
73
|
+
return { status: true, data: [] };
|
|
70
74
|
return new Promise(async (resolve) => {
|
|
71
75
|
const res = [];
|
|
72
76
|
for (const cb of callbacks) {
|
|
@@ -26,16 +26,16 @@ module.exports = __toCommonJS(Account_exports);
|
|
|
26
26
|
var import_BaseModule = require("../BaseModule");
|
|
27
27
|
__reExport(Account_exports, require("./types"), module.exports);
|
|
28
28
|
var AccountModule = class extends import_BaseModule.BaseModule {
|
|
29
|
-
defaultName = "account";
|
|
30
|
-
defaultVersion = "1.0.0";
|
|
31
|
-
isGuest = false;
|
|
32
|
-
store = {
|
|
33
|
-
accountInfo: null,
|
|
34
|
-
isLoggedIn: false,
|
|
35
|
-
active: false
|
|
36
|
-
};
|
|
37
29
|
constructor(name, version) {
|
|
38
30
|
super(name, version);
|
|
31
|
+
this.defaultName = "account";
|
|
32
|
+
this.defaultVersion = "1.0.0";
|
|
33
|
+
this.isGuest = false;
|
|
34
|
+
this.store = {
|
|
35
|
+
accountInfo: null,
|
|
36
|
+
isLoggedIn: false,
|
|
37
|
+
active: false
|
|
38
|
+
};
|
|
39
39
|
}
|
|
40
40
|
async initialize(core, options) {
|
|
41
41
|
this.core = core;
|
|
@@ -64,7 +64,8 @@ var AccountModule = class extends import_BaseModule.BaseModule {
|
|
|
64
64
|
return this.store.accountInfo;
|
|
65
65
|
}
|
|
66
66
|
async updateProfile(updates) {
|
|
67
|
-
if (!this.store.accountInfo)
|
|
67
|
+
if (!this.store.accountInfo)
|
|
68
|
+
return;
|
|
68
69
|
this.store.accountInfo = {
|
|
69
70
|
...this.store.accountInfo,
|
|
70
71
|
...updates
|
|
@@ -28,22 +28,19 @@ var import_BaseModule = require("../BaseModule");
|
|
|
28
28
|
var import_types = require("./types");
|
|
29
29
|
var import_utils = require("./utils");
|
|
30
30
|
var AccountListModule = class extends import_BaseModule.BaseModule {
|
|
31
|
-
defaultName = "accountList";
|
|
32
|
-
defaultVersion = "1.0.0";
|
|
33
|
-
store = {
|
|
34
|
-
accountList: [],
|
|
35
|
-
// 账号的纯数据列表
|
|
36
|
-
accounts: [],
|
|
37
|
-
// 账号的 module 列表
|
|
38
|
-
isLoading: false,
|
|
39
|
-
error: null
|
|
40
|
-
};
|
|
41
|
-
request;
|
|
42
|
-
cacheId;
|
|
43
|
-
openCache = false;
|
|
44
|
-
fatherModule;
|
|
45
31
|
constructor(name, version) {
|
|
46
32
|
super(name, version);
|
|
33
|
+
this.defaultName = "accountList";
|
|
34
|
+
this.defaultVersion = "1.0.0";
|
|
35
|
+
this.store = {
|
|
36
|
+
accountList: [],
|
|
37
|
+
// 账号的纯数据列表
|
|
38
|
+
accounts: [],
|
|
39
|
+
// 账号的 module 列表
|
|
40
|
+
isLoading: false,
|
|
41
|
+
error: null
|
|
42
|
+
};
|
|
43
|
+
this.openCache = false;
|
|
47
44
|
}
|
|
48
45
|
async initialize(core, options) {
|
|
49
46
|
var _a, _b, _c;
|
|
@@ -23,13 +23,10 @@ __export(BaseModule_exports, {
|
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(BaseModule_exports);
|
|
25
25
|
var BaseModule = class {
|
|
26
|
-
defaultName = "baseModule";
|
|
27
|
-
defaultVersion = "1.0.0";
|
|
28
|
-
name;
|
|
29
|
-
version;
|
|
30
|
-
isSolution = false;
|
|
31
|
-
core;
|
|
32
26
|
constructor(name, version) {
|
|
27
|
+
this.defaultName = "baseModule";
|
|
28
|
+
this.defaultVersion = "1.0.0";
|
|
29
|
+
this.isSolution = false;
|
|
33
30
|
this.name = name || this.defaultName;
|
|
34
31
|
this.version = version || this.defaultVersion;
|
|
35
32
|
}
|
|
@@ -32,17 +32,12 @@ var import_utils2 = require("../Product/utils");
|
|
|
32
32
|
__reExport(Cart_exports, require("./types"), module.exports);
|
|
33
33
|
var import_utils3 = require("./utils");
|
|
34
34
|
var CartModule = class extends import_BaseModule.BaseModule {
|
|
35
|
-
// 提供给 baseModule 用的默认名称 和 默认版本
|
|
36
|
-
defaultName = "cart";
|
|
37
|
-
defaultVersion = "1.0.0";
|
|
38
|
-
request;
|
|
39
|
-
window;
|
|
40
|
-
store;
|
|
41
|
-
cacheId;
|
|
42
|
-
openCache = false;
|
|
43
|
-
fatherModule;
|
|
44
35
|
constructor(name, version) {
|
|
45
36
|
super(name || "cart", version || "1.0.0");
|
|
37
|
+
// 提供给 baseModule 用的默认名称 和 默认版本
|
|
38
|
+
this.defaultName = "cart";
|
|
39
|
+
this.defaultVersion = "1.0.0";
|
|
40
|
+
this.openCache = false;
|
|
46
41
|
}
|
|
47
42
|
/**
|
|
48
43
|
* 初始化购物车模块
|
|
@@ -67,12 +62,12 @@ var CartModule = class extends import_BaseModule.BaseModule {
|
|
|
67
62
|
this.request = core.getPlugin("request");
|
|
68
63
|
this.window = core.getPlugin("window");
|
|
69
64
|
if (!this.request) {
|
|
70
|
-
throw new Error("
|
|
65
|
+
throw new Error("购物车模块需要 request 插件支持");
|
|
71
66
|
}
|
|
72
67
|
if (!this.window) {
|
|
73
|
-
throw new Error("
|
|
68
|
+
throw new Error("购物车模块需要 window 插件支持");
|
|
74
69
|
}
|
|
75
|
-
console.log("[CartModule]
|
|
70
|
+
console.log("[CartModule] 初始化完成");
|
|
76
71
|
}
|
|
77
72
|
/**
|
|
78
73
|
* 添加商品到购物车
|
|
@@ -123,7 +118,7 @@ var CartModule = class extends import_BaseModule.BaseModule {
|
|
|
123
118
|
this.store.list = [...items];
|
|
124
119
|
await this.core.effects.emit(`${this.name}:onUpdateItem`, tempCartItem);
|
|
125
120
|
} catch (error) {
|
|
126
|
-
console.error("[CartModule]
|
|
121
|
+
console.error("[CartModule] 更新购物车商品失败", error);
|
|
127
122
|
}
|
|
128
123
|
}
|
|
129
124
|
// 更新购物车中商品的初始信息
|
|
@@ -160,7 +155,7 @@ var CartModule = class extends import_BaseModule.BaseModule {
|
|
|
160
155
|
quantity = (tempCartItem == null ? void 0 : tempCartItem.num) || 1;
|
|
161
156
|
}
|
|
162
157
|
if (!tempCartItem) {
|
|
163
|
-
throw new Error("[CartModule]
|
|
158
|
+
throw new Error("[CartModule] 格式化数据到购物车失败,商品不存在");
|
|
164
159
|
}
|
|
165
160
|
if (cartItem) {
|
|
166
161
|
tempCartItem = cartItem;
|