@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.
Files changed (138) hide show
  1. package/README.md +180 -0
  2. package/dist/core/index.d.ts +30 -0
  3. package/dist/core/index.js +360 -0
  4. package/dist/effects/index.d.ts +17 -0
  5. package/dist/effects/index.js +162 -0
  6. package/dist/index.d.ts +11 -0
  7. package/dist/index.js +17 -0
  8. package/dist/modules/Account/index.d.ts +21 -0
  9. package/dist/modules/Account/index.js +212 -0
  10. package/dist/modules/Account/types.d.ts +41 -0
  11. package/dist/modules/Account/types.js +19 -0
  12. package/dist/modules/BaseModule.d.ts +11 -0
  13. package/dist/modules/BaseModule.js +27 -0
  14. package/dist/modules/Cart/index.d.ts +33 -0
  15. package/dist/modules/Cart/index.js +242 -0
  16. package/dist/modules/Cart/types.d.ts +35 -0
  17. package/dist/modules/Cart/types.js +19 -0
  18. package/dist/modules/Date/index.d.ts +17 -0
  19. package/dist/modules/Date/index.js +133 -0
  20. package/dist/modules/Date/types.d.ts +32 -0
  21. package/dist/modules/Date/types.js +17 -0
  22. package/dist/modules/Guests/index.d.ts +17 -0
  23. package/dist/modules/Guests/index.js +259 -0
  24. package/dist/modules/Guests/types.d.ts +43 -0
  25. package/dist/modules/Guests/types.js +23 -0
  26. package/dist/modules/Order/index.d.ts +17 -0
  27. package/dist/modules/Order/index.js +228 -0
  28. package/dist/modules/Order/types.d.ts +57 -0
  29. package/dist/modules/Order/types.js +29 -0
  30. package/dist/modules/Payment/index.d.ts +18 -0
  31. package/dist/modules/Payment/index.js +243 -0
  32. package/dist/modules/Payment/types.d.ts +49 -0
  33. package/dist/modules/Payment/types.js +31 -0
  34. package/dist/modules/Product/index.d.ts +39 -0
  35. package/dist/modules/Product/index.js +118 -0
  36. package/dist/modules/Product/types.d.ts +387 -0
  37. package/dist/modules/Product/types.js +1 -0
  38. package/dist/modules/ProductList/index.d.ts +16 -0
  39. package/dist/modules/ProductList/index.js +158 -0
  40. package/dist/modules/ProductList/types.d.ts +9 -0
  41. package/dist/modules/ProductList/types.js +5 -0
  42. package/dist/modules/Resource/index.d.ts +15 -0
  43. package/dist/modules/Resource/index.js +219 -0
  44. package/dist/modules/Resource/types.d.ts +44 -0
  45. package/dist/modules/Resource/types.js +22 -0
  46. package/dist/modules/index.d.ts +3 -0
  47. package/dist/modules/index.js +3 -0
  48. package/dist/plugins/index.d.ts +2 -0
  49. package/dist/plugins/index.js +2 -0
  50. package/dist/plugins/request.d.ts +127 -0
  51. package/dist/plugins/request.js +592 -0
  52. package/dist/plugins/window.d.ts +115 -0
  53. package/dist/plugins/window.js +328 -0
  54. package/dist/solution/BookingByStep/index.d.ts +12 -0
  55. package/dist/solution/BookingByStep/index.js +77 -0
  56. package/dist/solution/BookingByStep/types.d.ts +27 -0
  57. package/dist/solution/BookingByStep/types.js +10 -0
  58. package/dist/solution/BuyTickets/index.d.ts +26 -0
  59. package/dist/solution/BuyTickets/index.js +339 -0
  60. package/dist/solution/BuyTickets/types.d.ts +24 -0
  61. package/dist/solution/BuyTickets/types.js +19 -0
  62. package/dist/solution/PlaceOrder/index.d.ts +0 -0
  63. package/dist/solution/PlaceOrder/index.js +54 -0
  64. package/dist/solution/index.d.ts +1 -0
  65. package/dist/solution/index.js +1 -0
  66. package/dist/store/createStore.d.ts +3 -0
  67. package/dist/store/createStore.js +43 -0
  68. package/dist/types/index.d.ts +85 -0
  69. package/dist/types/index.js +1 -0
  70. package/lib/core/index.d.ts +30 -0
  71. package/lib/core/index.js +212 -0
  72. package/lib/effects/index.d.ts +17 -0
  73. package/lib/effects/index.js +78 -0
  74. package/lib/index.d.ts +11 -0
  75. package/lib/index.js +51 -0
  76. package/lib/modules/Account/index.d.ts +21 -0
  77. package/lib/modules/Account/index.js +93 -0
  78. package/lib/modules/Account/types.d.ts +41 -0
  79. package/lib/modules/Account/types.js +35 -0
  80. package/lib/modules/BaseModule.d.ts +11 -0
  81. package/lib/modules/BaseModule.js +40 -0
  82. package/lib/modules/Cart/index.d.ts +33 -0
  83. package/lib/modules/Cart/index.js +104 -0
  84. package/lib/modules/Cart/types.d.ts +35 -0
  85. package/lib/modules/Cart/types.js +35 -0
  86. package/lib/modules/Date/index.d.ts +17 -0
  87. package/lib/modules/Date/index.js +75 -0
  88. package/lib/modules/Date/types.d.ts +32 -0
  89. package/lib/modules/Date/types.js +33 -0
  90. package/lib/modules/Guests/index.d.ts +17 -0
  91. package/lib/modules/Guests/index.js +95 -0
  92. package/lib/modules/Guests/types.d.ts +43 -0
  93. package/lib/modules/Guests/types.js +35 -0
  94. package/lib/modules/Order/index.d.ts +17 -0
  95. package/lib/modules/Order/index.js +95 -0
  96. package/lib/modules/Order/types.d.ts +57 -0
  97. package/lib/modules/Order/types.js +35 -0
  98. package/lib/modules/Payment/index.d.ts +18 -0
  99. package/lib/modules/Payment/index.js +103 -0
  100. package/lib/modules/Payment/types.d.ts +49 -0
  101. package/lib/modules/Payment/types.js +35 -0
  102. package/lib/modules/Product/index.d.ts +39 -0
  103. package/lib/modules/Product/index.js +87 -0
  104. package/lib/modules/Product/types.d.ts +387 -0
  105. package/lib/modules/Product/types.js +17 -0
  106. package/lib/modules/ProductList/index.d.ts +16 -0
  107. package/lib/modules/ProductList/index.js +71 -0
  108. package/lib/modules/ProductList/types.d.ts +9 -0
  109. package/lib/modules/ProductList/types.js +33 -0
  110. package/lib/modules/Resource/index.d.ts +15 -0
  111. package/lib/modules/Resource/index.js +91 -0
  112. package/lib/modules/Resource/types.d.ts +44 -0
  113. package/lib/modules/Resource/types.js +34 -0
  114. package/lib/modules/index.d.ts +3 -0
  115. package/lib/modules/index.js +27 -0
  116. package/lib/plugins/index.d.ts +2 -0
  117. package/lib/plugins/index.js +25 -0
  118. package/lib/plugins/request.d.ts +127 -0
  119. package/lib/plugins/request.js +297 -0
  120. package/lib/plugins/window.d.ts +115 -0
  121. package/lib/plugins/window.js +252 -0
  122. package/lib/solution/BookingByStep/index.d.ts +12 -0
  123. package/lib/solution/BookingByStep/index.js +53 -0
  124. package/lib/solution/BookingByStep/types.d.ts +27 -0
  125. package/lib/solution/BookingByStep/types.js +38 -0
  126. package/lib/solution/BuyTickets/index.d.ts +26 -0
  127. package/lib/solution/BuyTickets/index.js +122 -0
  128. package/lib/solution/BuyTickets/types.d.ts +24 -0
  129. package/lib/solution/BuyTickets/types.js +40 -0
  130. package/lib/solution/PlaceOrder/index.d.ts +0 -0
  131. package/lib/solution/PlaceOrder/index.js +0 -0
  132. package/lib/solution/index.d.ts +1 -0
  133. package/lib/solution/index.js +23 -0
  134. package/lib/store/createStore.d.ts +3 -0
  135. package/lib/store/createStore.js +46 -0
  136. package/lib/types/index.d.ts +85 -0
  137. package/lib/types/index.js +17 -0
  138. 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
+ });