@pisell/pisellos 0.0.5
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/README.md +180 -0
- package/dist/core/index.d.ts +30 -0
- package/dist/core/index.js +360 -0
- package/dist/effects/index.d.ts +17 -0
- package/dist/effects/index.js +162 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +17 -0
- package/dist/modules/Account/index.d.ts +21 -0
- package/dist/modules/Account/index.js +212 -0
- package/dist/modules/Account/types.d.ts +41 -0
- package/dist/modules/Account/types.js +19 -0
- package/dist/modules/BaseModule.d.ts +11 -0
- package/dist/modules/BaseModule.js +27 -0
- package/dist/modules/Cart/index.d.ts +33 -0
- package/dist/modules/Cart/index.js +242 -0
- package/dist/modules/Cart/types.d.ts +35 -0
- package/dist/modules/Cart/types.js +19 -0
- package/dist/modules/Date/index.d.ts +17 -0
- package/dist/modules/Date/index.js +133 -0
- package/dist/modules/Date/types.d.ts +32 -0
- package/dist/modules/Date/types.js +17 -0
- package/dist/modules/Guests/index.d.ts +17 -0
- package/dist/modules/Guests/index.js +259 -0
- package/dist/modules/Guests/types.d.ts +43 -0
- package/dist/modules/Guests/types.js +23 -0
- package/dist/modules/Order/index.d.ts +17 -0
- package/dist/modules/Order/index.js +228 -0
- package/dist/modules/Order/types.d.ts +57 -0
- package/dist/modules/Order/types.js +29 -0
- package/dist/modules/Payment/index.d.ts +18 -0
- package/dist/modules/Payment/index.js +243 -0
- package/dist/modules/Payment/types.d.ts +49 -0
- package/dist/modules/Payment/types.js +31 -0
- package/dist/modules/Product/index.d.ts +39 -0
- package/dist/modules/Product/index.js +118 -0
- package/dist/modules/Product/types.d.ts +387 -0
- package/dist/modules/Product/types.js +1 -0
- package/dist/modules/ProductList/index.d.ts +16 -0
- package/dist/modules/ProductList/index.js +158 -0
- package/dist/modules/ProductList/types.d.ts +9 -0
- package/dist/modules/ProductList/types.js +5 -0
- package/dist/modules/Resource/index.d.ts +15 -0
- package/dist/modules/Resource/index.js +219 -0
- package/dist/modules/Resource/types.d.ts +44 -0
- package/dist/modules/Resource/types.js +22 -0
- package/dist/modules/index.d.ts +3 -0
- package/dist/modules/index.js +3 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.js +2 -0
- package/dist/plugins/request.d.ts +127 -0
- package/dist/plugins/request.js +592 -0
- package/dist/plugins/window.d.ts +115 -0
- package/dist/plugins/window.js +328 -0
- package/dist/solution/BookingByStep/index.d.ts +12 -0
- package/dist/solution/BookingByStep/index.js +77 -0
- package/dist/solution/BookingByStep/types.d.ts +27 -0
- package/dist/solution/BookingByStep/types.js +10 -0
- package/dist/solution/BuyTickets/index.d.ts +26 -0
- package/dist/solution/BuyTickets/index.js +339 -0
- package/dist/solution/BuyTickets/types.d.ts +24 -0
- package/dist/solution/BuyTickets/types.js +19 -0
- package/dist/solution/PlaceOrder/index.d.ts +0 -0
- package/dist/solution/PlaceOrder/index.js +54 -0
- package/dist/solution/index.d.ts +1 -0
- package/dist/solution/index.js +1 -0
- package/dist/store/createStore.d.ts +3 -0
- package/dist/store/createStore.js +43 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/index.js +1 -0
- package/lib/core/index.d.ts +30 -0
- package/lib/core/index.js +212 -0
- package/lib/effects/index.d.ts +17 -0
- package/lib/effects/index.js +78 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.js +51 -0
- package/lib/modules/Account/index.d.ts +21 -0
- package/lib/modules/Account/index.js +93 -0
- package/lib/modules/Account/types.d.ts +41 -0
- package/lib/modules/Account/types.js +35 -0
- package/lib/modules/BaseModule.d.ts +11 -0
- package/lib/modules/BaseModule.js +40 -0
- package/lib/modules/Cart/index.d.ts +33 -0
- package/lib/modules/Cart/index.js +104 -0
- package/lib/modules/Cart/types.d.ts +35 -0
- package/lib/modules/Cart/types.js +35 -0
- package/lib/modules/Date/index.d.ts +17 -0
- package/lib/modules/Date/index.js +75 -0
- package/lib/modules/Date/types.d.ts +32 -0
- package/lib/modules/Date/types.js +33 -0
- package/lib/modules/Guests/index.d.ts +17 -0
- package/lib/modules/Guests/index.js +95 -0
- package/lib/modules/Guests/types.d.ts +43 -0
- package/lib/modules/Guests/types.js +35 -0
- package/lib/modules/Order/index.d.ts +17 -0
- package/lib/modules/Order/index.js +95 -0
- package/lib/modules/Order/types.d.ts +57 -0
- package/lib/modules/Order/types.js +35 -0
- package/lib/modules/Payment/index.d.ts +18 -0
- package/lib/modules/Payment/index.js +103 -0
- package/lib/modules/Payment/types.d.ts +49 -0
- package/lib/modules/Payment/types.js +35 -0
- package/lib/modules/Product/index.d.ts +39 -0
- package/lib/modules/Product/index.js +87 -0
- package/lib/modules/Product/types.d.ts +387 -0
- package/lib/modules/Product/types.js +17 -0
- package/lib/modules/ProductList/index.d.ts +16 -0
- package/lib/modules/ProductList/index.js +71 -0
- package/lib/modules/ProductList/types.d.ts +9 -0
- package/lib/modules/ProductList/types.js +33 -0
- package/lib/modules/Resource/index.d.ts +15 -0
- package/lib/modules/Resource/index.js +91 -0
- package/lib/modules/Resource/types.d.ts +44 -0
- package/lib/modules/Resource/types.js +34 -0
- package/lib/modules/index.d.ts +3 -0
- package/lib/modules/index.js +27 -0
- package/lib/plugins/index.d.ts +2 -0
- package/lib/plugins/index.js +25 -0
- package/lib/plugins/request.d.ts +127 -0
- package/lib/plugins/request.js +297 -0
- package/lib/plugins/window.d.ts +115 -0
- package/lib/plugins/window.js +252 -0
- package/lib/solution/BookingByStep/index.d.ts +12 -0
- package/lib/solution/BookingByStep/index.js +53 -0
- package/lib/solution/BookingByStep/types.d.ts +27 -0
- package/lib/solution/BookingByStep/types.js +38 -0
- package/lib/solution/BuyTickets/index.d.ts +26 -0
- package/lib/solution/BuyTickets/index.js +122 -0
- package/lib/solution/BuyTickets/types.d.ts +24 -0
- package/lib/solution/BuyTickets/types.js +40 -0
- package/lib/solution/PlaceOrder/index.d.ts +0 -0
- package/lib/solution/PlaceOrder/index.js +0 -0
- package/lib/solution/index.d.ts +1 -0
- package/lib/solution/index.js +23 -0
- package/lib/store/createStore.d.ts +3 -0
- package/lib/store/createStore.js +46 -0
- package/lib/types/index.d.ts +85 -0
- package/lib/types/index.js +17 -0
- package/package.json +65 -0
|
@@ -0,0 +1,104 @@
|
|
|
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 __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/modules/Cart/index.ts
|
|
21
|
+
var Cart_exports = {};
|
|
22
|
+
__export(Cart_exports, {
|
|
23
|
+
CartModule: () => CartModule
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(Cart_exports);
|
|
26
|
+
var import_BaseModule = require("../BaseModule");
|
|
27
|
+
var import_types = require("./types");
|
|
28
|
+
__reExport(Cart_exports, require("./types"), module.exports);
|
|
29
|
+
var CartModule = class extends import_BaseModule.BaseModule {
|
|
30
|
+
constructor(name, version) {
|
|
31
|
+
super(name, version);
|
|
32
|
+
// 提供给 baseModule 用的默认名称 和 默认版本
|
|
33
|
+
this.defaultName = "cart";
|
|
34
|
+
this.defaultVersion = "1.0.0";
|
|
35
|
+
// 导出的模块 API
|
|
36
|
+
this.exports = {
|
|
37
|
+
addItem: this.addItem.bind(this),
|
|
38
|
+
getItemCount: this.getItemCount.bind(this),
|
|
39
|
+
getTotalPrice: this.getTotalPrice.bind(this),
|
|
40
|
+
getItems: this.getItems.bind(this),
|
|
41
|
+
updateItemQuantity: this.updateItemQuantity.bind(this),
|
|
42
|
+
removeItem: this.removeItem.bind(this)
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 初始化购物车模块
|
|
47
|
+
*/
|
|
48
|
+
async initialize(core, options) {
|
|
49
|
+
this.core = core;
|
|
50
|
+
this.store = options.store;
|
|
51
|
+
this.request = core.getPlugin("request");
|
|
52
|
+
this.window = core.getPlugin("window");
|
|
53
|
+
if (!this.request) {
|
|
54
|
+
throw new Error("购物车模块需要 request 插件支持");
|
|
55
|
+
}
|
|
56
|
+
if (!this.window) {
|
|
57
|
+
throw new Error("购物车模块需要 window 插件支持");
|
|
58
|
+
}
|
|
59
|
+
console.log("[CartModule] 初始化完成");
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 模块销毁
|
|
63
|
+
*/
|
|
64
|
+
async destroy() {
|
|
65
|
+
console.log("[CartModule] 已销毁");
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 添加商品到购物车
|
|
69
|
+
*/
|
|
70
|
+
async addItem(item) {
|
|
71
|
+
const items = [...this.store.list, item];
|
|
72
|
+
this.store.list = items;
|
|
73
|
+
await this.core.effects.emit(import_types.CartHooks.OnAddItem, item);
|
|
74
|
+
await this.core.effects.emit(import_types.CartHooks.OnCartChange, items);
|
|
75
|
+
}
|
|
76
|
+
getItemCount() {
|
|
77
|
+
return this.store.list.length;
|
|
78
|
+
}
|
|
79
|
+
getTotalPrice() {
|
|
80
|
+
return this.store.list.reduce((total, item) => total + item.price * item.quantity, 0);
|
|
81
|
+
}
|
|
82
|
+
async getItems() {
|
|
83
|
+
return this.store.list;
|
|
84
|
+
}
|
|
85
|
+
async updateItemQuantity(id, quantity) {
|
|
86
|
+
const items = this.store.list;
|
|
87
|
+
const itemIndex = items.findIndex((i) => i.id === id);
|
|
88
|
+
if (itemIndex !== -1) {
|
|
89
|
+
items[itemIndex] = { ...items[itemIndex], quantity };
|
|
90
|
+
this.store.list = items;
|
|
91
|
+
await this.core.effects.emit(import_types.CartHooks.OnCartUpdateItem, items);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async removeItem(id) {
|
|
95
|
+
const items = this.store.list.filter((i) => i.id !== id);
|
|
96
|
+
this.store.list = items;
|
|
97
|
+
await this.core.effects.emit(import_types.CartHooks.OnCartRemove, items);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
101
|
+
0 && (module.exports = {
|
|
102
|
+
CartModule,
|
|
103
|
+
...require("./types")
|
|
104
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ProductData } from '../Product/types';
|
|
2
|
+
export declare enum CartHooks {
|
|
3
|
+
OnAddItem = "card:onAddItem",
|
|
4
|
+
OnCartChange = "card:onCartChange",
|
|
5
|
+
OnCartUpdateItem = "card:onCartUpdateItem",
|
|
6
|
+
OnCartRemove = "card:onCartRemove"
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 购物车商品接口
|
|
10
|
+
*/
|
|
11
|
+
export interface CartItem {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
price: number;
|
|
15
|
+
quantity: number;
|
|
16
|
+
product: ProductData;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 购物车状态接口
|
|
20
|
+
*/
|
|
21
|
+
export interface CartState {
|
|
22
|
+
list: CartItem[];
|
|
23
|
+
total: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 购物车模块 API
|
|
27
|
+
*/
|
|
28
|
+
export interface CartModuleAPI {
|
|
29
|
+
addItem: (item: CartItem) => Promise<void>;
|
|
30
|
+
getItemCount: () => number;
|
|
31
|
+
getTotalPrice: () => number;
|
|
32
|
+
getItems: () => Promise<CartItem[]>;
|
|
33
|
+
updateItemQuantity: (id: string, quantity: number) => Promise<void>;
|
|
34
|
+
removeItem: (id: string) => Promise<void>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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/modules/Cart/types.ts
|
|
20
|
+
var types_exports = {};
|
|
21
|
+
__export(types_exports, {
|
|
22
|
+
CartHooks: () => CartHooks
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(types_exports);
|
|
25
|
+
var CartHooks = /* @__PURE__ */ ((CartHooks2) => {
|
|
26
|
+
CartHooks2["OnAddItem"] = "card:onAddItem";
|
|
27
|
+
CartHooks2["OnCartChange"] = "card:onCartChange";
|
|
28
|
+
CartHooks2["OnCartUpdateItem"] = "card:onCartUpdateItem";
|
|
29
|
+
CartHooks2["OnCartRemove"] = "card:onCartRemove";
|
|
30
|
+
return CartHooks2;
|
|
31
|
+
})(CartHooks || {});
|
|
32
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
+
0 && (module.exports = {
|
|
34
|
+
CartHooks
|
|
35
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Module, PisellCore, ModuleOptions } from '../../types';
|
|
2
|
+
import { BaseModule } from '../BaseModule';
|
|
3
|
+
import { TimeSlot, DateModuleAPI } from './types';
|
|
4
|
+
export declare class DateModule extends BaseModule implements Module, DateModuleAPI {
|
|
5
|
+
protected defaultName: string;
|
|
6
|
+
protected defaultVersion: string;
|
|
7
|
+
private state;
|
|
8
|
+
constructor(name?: string, version?: string);
|
|
9
|
+
initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
|
|
10
|
+
setDate(date: Date): Promise<void>;
|
|
11
|
+
setTimeSlot(timeSlot: TimeSlot): Promise<void>;
|
|
12
|
+
getSelectedDate(): Date | null;
|
|
13
|
+
getSelectedTimeSlot(): TimeSlot | null;
|
|
14
|
+
getAvailableTimeSlots(): TimeSlot[];
|
|
15
|
+
isDateAvailable(date: Date): boolean;
|
|
16
|
+
isTimeSlotAvailable(timeSlot: TimeSlot): boolean;
|
|
17
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
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/modules/Date/index.ts
|
|
20
|
+
var Date_exports = {};
|
|
21
|
+
__export(Date_exports, {
|
|
22
|
+
DateModule: () => DateModule
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(Date_exports);
|
|
25
|
+
var import_BaseModule = require("../BaseModule");
|
|
26
|
+
var import_types = require("./types");
|
|
27
|
+
var DateModule = class extends import_BaseModule.BaseModule {
|
|
28
|
+
constructor(name, version) {
|
|
29
|
+
super(name, version);
|
|
30
|
+
this.defaultName = "date";
|
|
31
|
+
this.defaultVersion = "1.0.0";
|
|
32
|
+
this.state = {
|
|
33
|
+
selectedDate: null,
|
|
34
|
+
selectedTimeSlot: null,
|
|
35
|
+
availableTimeSlots: []
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async initialize(core, options) {
|
|
39
|
+
this.core = core;
|
|
40
|
+
if (options == null ? void 0 : options.initialState) {
|
|
41
|
+
this.state = { ...this.state, ...options.initialState };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async setDate(date) {
|
|
45
|
+
this.state.selectedDate = date;
|
|
46
|
+
await this.core.effects.emit(import_types.DateHooks.OnDateChange, date);
|
|
47
|
+
}
|
|
48
|
+
async setTimeSlot(timeSlot) {
|
|
49
|
+
this.state.selectedTimeSlot = timeSlot;
|
|
50
|
+
await this.core.effects.emit(import_types.DateHooks.OnTimeSlotChange, timeSlot);
|
|
51
|
+
}
|
|
52
|
+
getSelectedDate() {
|
|
53
|
+
return this.state.selectedDate;
|
|
54
|
+
}
|
|
55
|
+
getSelectedTimeSlot() {
|
|
56
|
+
return this.state.selectedTimeSlot;
|
|
57
|
+
}
|
|
58
|
+
getAvailableTimeSlots() {
|
|
59
|
+
return this.state.availableTimeSlots;
|
|
60
|
+
}
|
|
61
|
+
isDateAvailable(date) {
|
|
62
|
+
return this.state.availableTimeSlots.some(
|
|
63
|
+
(slot) => slot.start.getDate() === date.getDate() && slot.start.getMonth() === date.getMonth() && slot.start.getFullYear() === date.getFullYear() && slot.isAvailable
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
isTimeSlotAvailable(timeSlot) {
|
|
67
|
+
return this.state.availableTimeSlots.some(
|
|
68
|
+
(slot) => slot.start.getTime() === timeSlot.start.getTime() && slot.end.getTime() === timeSlot.end.getTime() && slot.isAvailable
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
73
|
+
0 && (module.exports = {
|
|
74
|
+
DateModule
|
|
75
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare enum DateHooks {
|
|
2
|
+
OnDateChange = "date:onDateChange",
|
|
3
|
+
OnTimeSlotChange = "date:onTimeSlotChange"
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 时间槽位
|
|
7
|
+
*/
|
|
8
|
+
export interface TimeSlot {
|
|
9
|
+
start: Date;
|
|
10
|
+
end: Date;
|
|
11
|
+
isAvailable: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 日期模块状态
|
|
15
|
+
*/
|
|
16
|
+
export interface DateState {
|
|
17
|
+
selectedDate: Date | null;
|
|
18
|
+
selectedTimeSlot: TimeSlot | null;
|
|
19
|
+
availableTimeSlots: TimeSlot[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 日期模块 API
|
|
23
|
+
*/
|
|
24
|
+
export interface DateModuleAPI {
|
|
25
|
+
setDate: (date: Date) => Promise<void>;
|
|
26
|
+
setTimeSlot: (timeSlot: TimeSlot) => Promise<void>;
|
|
27
|
+
getSelectedDate: () => Date | null;
|
|
28
|
+
getSelectedTimeSlot: () => TimeSlot | null;
|
|
29
|
+
getAvailableTimeSlots: () => TimeSlot[];
|
|
30
|
+
isDateAvailable: (date: Date) => boolean;
|
|
31
|
+
isTimeSlotAvailable: (timeSlot: TimeSlot) => boolean;
|
|
32
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
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/modules/Date/types.ts
|
|
20
|
+
var types_exports = {};
|
|
21
|
+
__export(types_exports, {
|
|
22
|
+
DateHooks: () => DateHooks
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(types_exports);
|
|
25
|
+
var DateHooks = /* @__PURE__ */ ((DateHooks2) => {
|
|
26
|
+
DateHooks2["OnDateChange"] = "date:onDateChange";
|
|
27
|
+
DateHooks2["OnTimeSlotChange"] = "date:onTimeSlotChange";
|
|
28
|
+
return DateHooks2;
|
|
29
|
+
})(DateHooks || {});
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
DateHooks
|
|
33
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Module, PisellCore, ModuleOptions } from '../../types';
|
|
2
|
+
import { BaseModule } from '../BaseModule';
|
|
3
|
+
import { Guest, GuestItem, GuestListModuleAPI } from './types';
|
|
4
|
+
export declare class GuestListModule extends BaseModule implements Module, GuestListModuleAPI {
|
|
5
|
+
protected defaultName: string;
|
|
6
|
+
protected defaultVersion: string;
|
|
7
|
+
private state;
|
|
8
|
+
constructor(name?: string, version?: string);
|
|
9
|
+
initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
|
|
10
|
+
addGuest(guest: Guest): Promise<void>;
|
|
11
|
+
updateGuest(id: string, updates: Partial<Guest>): Promise<void>;
|
|
12
|
+
removeGuest(id: string): Promise<void>;
|
|
13
|
+
getGuests(): Promise<Guest[]>;
|
|
14
|
+
getGuestCount(): number;
|
|
15
|
+
addItemToGuest(guestId: string, item: GuestItem): Promise<void>;
|
|
16
|
+
removeItemFromGuest(guestId: string, itemId: string): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
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/modules/Guests/index.ts
|
|
20
|
+
var Guests_exports = {};
|
|
21
|
+
__export(Guests_exports, {
|
|
22
|
+
GuestListModule: () => GuestListModule
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(Guests_exports);
|
|
25
|
+
var import_BaseModule = require("../BaseModule");
|
|
26
|
+
var import_types = require("./types");
|
|
27
|
+
var GuestListModule = class extends import_BaseModule.BaseModule {
|
|
28
|
+
constructor(name, version) {
|
|
29
|
+
super(name, version);
|
|
30
|
+
this.defaultName = "guestList";
|
|
31
|
+
this.defaultVersion = "1.0.0";
|
|
32
|
+
this.state = {
|
|
33
|
+
list: []
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async initialize(core, options) {
|
|
37
|
+
this.core = core;
|
|
38
|
+
if (options == null ? void 0 : options.initialState) {
|
|
39
|
+
this.state = { ...this.state, ...options.initialState };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async addGuest(guest) {
|
|
43
|
+
this.state.list.push(guest);
|
|
44
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestAdd, guest);
|
|
45
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestChange, this.state.list);
|
|
46
|
+
}
|
|
47
|
+
async updateGuest(id, updates) {
|
|
48
|
+
const index = this.state.list.findIndex((g) => g.id === id);
|
|
49
|
+
if (index === -1)
|
|
50
|
+
return;
|
|
51
|
+
this.state.list[index] = {
|
|
52
|
+
...this.state.list[index],
|
|
53
|
+
...updates
|
|
54
|
+
};
|
|
55
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestUpdate, this.state.list[index]);
|
|
56
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestChange, this.state.list);
|
|
57
|
+
}
|
|
58
|
+
async removeGuest(id) {
|
|
59
|
+
const index = this.state.list.findIndex((g) => g.id === id);
|
|
60
|
+
if (index === -1)
|
|
61
|
+
return;
|
|
62
|
+
const [removed] = this.state.list.splice(index, 1);
|
|
63
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestRemove, removed);
|
|
64
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestChange, this.state.list);
|
|
65
|
+
}
|
|
66
|
+
async getGuests() {
|
|
67
|
+
return this.state.list;
|
|
68
|
+
}
|
|
69
|
+
getGuestCount() {
|
|
70
|
+
return this.state.list.length;
|
|
71
|
+
}
|
|
72
|
+
async addItemToGuest(guestId, item) {
|
|
73
|
+
const guest = this.state.list.find((g) => g.id === guestId);
|
|
74
|
+
if (!guest)
|
|
75
|
+
return;
|
|
76
|
+
guest.items.push(item);
|
|
77
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestUpdate, guest);
|
|
78
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestChange, this.state.list);
|
|
79
|
+
}
|
|
80
|
+
async removeItemFromGuest(guestId, itemId) {
|
|
81
|
+
const guest = this.state.list.find((g) => g.id === guestId);
|
|
82
|
+
if (!guest)
|
|
83
|
+
return;
|
|
84
|
+
const index = guest.items.findIndex((i) => i.id === itemId);
|
|
85
|
+
if (index === -1)
|
|
86
|
+
return;
|
|
87
|
+
guest.items.splice(index, 1);
|
|
88
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestUpdate, guest);
|
|
89
|
+
await this.core.effects.emit(import_types.GuestHooks.OnGuestChange, this.state.list);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
93
|
+
0 && (module.exports = {
|
|
94
|
+
GuestListModule
|
|
95
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ProductData } from '../Product/types';
|
|
2
|
+
export declare enum GuestHooks {
|
|
3
|
+
OnGuestAdd = "guest:onGuestAdd",
|
|
4
|
+
OnGuestUpdate = "guest:onGuestUpdate",
|
|
5
|
+
OnGuestRemove = "guest:onGuestRemove",
|
|
6
|
+
OnGuestChange = "guest:onGuestChange"
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 预约人选择的商品/服务
|
|
10
|
+
*/
|
|
11
|
+
export interface GuestItem {
|
|
12
|
+
id: string;
|
|
13
|
+
product: ProductData;
|
|
14
|
+
quantity: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 预约人信息
|
|
18
|
+
*/
|
|
19
|
+
export interface Guest {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
phone: string;
|
|
23
|
+
email?: string;
|
|
24
|
+
items: GuestItem[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 预约人列表状态
|
|
28
|
+
*/
|
|
29
|
+
export interface GuestState {
|
|
30
|
+
list: Guest[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 预约人列表模块 API
|
|
34
|
+
*/
|
|
35
|
+
export interface GuestListModuleAPI {
|
|
36
|
+
addGuest: (guest: Guest) => Promise<void>;
|
|
37
|
+
updateGuest: (id: string, guest: Partial<Guest>) => Promise<void>;
|
|
38
|
+
removeGuest: (id: string) => Promise<void>;
|
|
39
|
+
getGuests: () => Promise<Guest[]>;
|
|
40
|
+
getGuestCount: () => number;
|
|
41
|
+
addItemToGuest: (guestId: string, item: GuestItem) => Promise<void>;
|
|
42
|
+
removeItemFromGuest: (guestId: string, itemId: string) => Promise<void>;
|
|
43
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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/modules/Guests/types.ts
|
|
20
|
+
var types_exports = {};
|
|
21
|
+
__export(types_exports, {
|
|
22
|
+
GuestHooks: () => GuestHooks
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(types_exports);
|
|
25
|
+
var GuestHooks = /* @__PURE__ */ ((GuestHooks2) => {
|
|
26
|
+
GuestHooks2["OnGuestAdd"] = "guest:onGuestAdd";
|
|
27
|
+
GuestHooks2["OnGuestUpdate"] = "guest:onGuestUpdate";
|
|
28
|
+
GuestHooks2["OnGuestRemove"] = "guest:onGuestRemove";
|
|
29
|
+
GuestHooks2["OnGuestChange"] = "guest:onGuestChange";
|
|
30
|
+
return GuestHooks2;
|
|
31
|
+
})(GuestHooks || {});
|
|
32
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
33
|
+
0 && (module.exports = {
|
|
34
|
+
GuestHooks
|
|
35
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Module, PisellCore, ModuleOptions } from '../../types';
|
|
2
|
+
import { BaseModule } from '../BaseModule';
|
|
3
|
+
import { Order, OrderItem, OrderModuleAPI, OrderStatus } from './types';
|
|
4
|
+
export declare class OrderModule extends BaseModule implements Module, OrderModuleAPI {
|
|
5
|
+
protected defaultName: string;
|
|
6
|
+
protected defaultVersion: string;
|
|
7
|
+
private state;
|
|
8
|
+
constructor(name?: string, version?: string);
|
|
9
|
+
initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
|
|
10
|
+
createOrder(items: OrderItem[]): Promise<Order>;
|
|
11
|
+
getOrder(orderId: string): Promise<Order>;
|
|
12
|
+
updateOrderStatus(orderId: string, status: OrderStatus): Promise<void>;
|
|
13
|
+
cancelOrder(orderId: string): Promise<void>;
|
|
14
|
+
getOrderHistory(): Promise<Order[]>;
|
|
15
|
+
getCurrentOrder(): Order | null;
|
|
16
|
+
calculateTotalAmount(items: OrderItem[]): number;
|
|
17
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
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/modules/Order/index.ts
|
|
20
|
+
var Order_exports = {};
|
|
21
|
+
__export(Order_exports, {
|
|
22
|
+
OrderModule: () => OrderModule
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(Order_exports);
|
|
25
|
+
var import_BaseModule = require("../BaseModule");
|
|
26
|
+
var import_types = require("./types");
|
|
27
|
+
var OrderModule = class extends import_BaseModule.BaseModule {
|
|
28
|
+
constructor(name, version) {
|
|
29
|
+
super(name, version);
|
|
30
|
+
this.defaultName = "order";
|
|
31
|
+
this.defaultVersion = "1.0.0";
|
|
32
|
+
this.state = {
|
|
33
|
+
currentOrder: null,
|
|
34
|
+
orderHistory: []
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async initialize(core, options) {
|
|
38
|
+
this.core = core;
|
|
39
|
+
if (options == null ? void 0 : options.initialState) {
|
|
40
|
+
this.state = { ...this.state, ...options.initialState };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async createOrder(items) {
|
|
44
|
+
const order = {
|
|
45
|
+
id: Date.now().toString(),
|
|
46
|
+
// 实际应该使用更可靠的 ID 生成方式
|
|
47
|
+
orderNumber: `ORD-${Date.now()}`,
|
|
48
|
+
status: "pending",
|
|
49
|
+
items,
|
|
50
|
+
totalAmount: this.calculateTotalAmount(items),
|
|
51
|
+
createdAt: /* @__PURE__ */ new Date(),
|
|
52
|
+
updatedAt: /* @__PURE__ */ new Date()
|
|
53
|
+
};
|
|
54
|
+
this.state.currentOrder = order;
|
|
55
|
+
await this.core.effects.emit(import_types.OrderHooks.OnOrderCreate, order);
|
|
56
|
+
return order;
|
|
57
|
+
}
|
|
58
|
+
async getOrder(orderId) {
|
|
59
|
+
const order = this.state.orderHistory.find((o) => o.id === orderId);
|
|
60
|
+
if (!order)
|
|
61
|
+
throw new Error("Order not found");
|
|
62
|
+
return order;
|
|
63
|
+
}
|
|
64
|
+
async updateOrderStatus(orderId, status) {
|
|
65
|
+
const order = this.state.orderHistory.find((o) => o.id === orderId);
|
|
66
|
+
if (!order)
|
|
67
|
+
return;
|
|
68
|
+
order.status = status;
|
|
69
|
+
order.updatedAt = /* @__PURE__ */ new Date();
|
|
70
|
+
await this.core.effects.emit(import_types.OrderHooks.OnOrderStatusChange, { orderId, status });
|
|
71
|
+
await this.core.effects.emit(import_types.OrderHooks.OnOrderUpdate, order);
|
|
72
|
+
}
|
|
73
|
+
async cancelOrder(orderId) {
|
|
74
|
+
const order = this.state.orderHistory.find((o) => o.id === orderId);
|
|
75
|
+
if (!order)
|
|
76
|
+
return;
|
|
77
|
+
order.status = "cancelled";
|
|
78
|
+
order.updatedAt = /* @__PURE__ */ new Date();
|
|
79
|
+
await this.core.effects.emit(import_types.OrderHooks.OnOrderCancel, order);
|
|
80
|
+
await this.core.effects.emit(import_types.OrderHooks.OnOrderUpdate, order);
|
|
81
|
+
}
|
|
82
|
+
async getOrderHistory() {
|
|
83
|
+
return this.state.orderHistory;
|
|
84
|
+
}
|
|
85
|
+
getCurrentOrder() {
|
|
86
|
+
return this.state.currentOrder;
|
|
87
|
+
}
|
|
88
|
+
calculateTotalAmount(items) {
|
|
89
|
+
return items.reduce((total, item) => total + item.price * item.quantity, 0);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
93
|
+
0 && (module.exports = {
|
|
94
|
+
OrderModule
|
|
95
|
+
});
|