@maxax/x-plugins-mitt 1.0.0

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/index.cjs ADDED
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
31
+
32
+ // src/index.ts
33
+ var index_exports = {};
34
+ __export(index_exports, {
35
+ MaxEventBus: () => MaxEventBus,
36
+ MaxEventBusManager: () => MaxEventBusManager,
37
+ createEventBus: () => createEventBus,
38
+ getEventBus: () => getEventBus,
39
+ getMaxEventBusManager: () => getMaxEventBusManager,
40
+ resetEventBus: () => resetEventBus,
41
+ resetMaxEventBusManager: () => resetMaxEventBusManager
42
+ });
43
+ module.exports = __toCommonJS(index_exports);
44
+
45
+ // src/core.ts
46
+ var import_mitt = __toESM(require("mitt"), 1);
47
+ var MaxEventBus = class {
48
+ constructor() {
49
+ __publicField(this, "emitter");
50
+ this.emitter = (0, import_mitt.default)();
51
+ }
52
+ /**
53
+ * 发布事件
54
+ * @param type 事件类型
55
+ * @param data 事件数据
56
+ */
57
+ emit(type, data) {
58
+ this.emitter.emit(type, data);
59
+ }
60
+ /**
61
+ * 发布事件(不指定类型)
62
+ * @param type 事件类型
63
+ * @param data 事件数据
64
+ */
65
+ emitWithout(type) {
66
+ this.emitter.emit(type);
67
+ }
68
+ /**
69
+ * 订阅事件
70
+ * @param event 事件名称
71
+ * @param callback 回调函数
72
+ * @returns 取消订阅函数
73
+ */
74
+ on(event, callback) {
75
+ this.emitter.on(event, callback);
76
+ return () => this.off(event, callback);
77
+ }
78
+ /**
79
+ * 订阅所有事件
80
+ * @param type 事件类型
81
+ * @param handler 回调函数
82
+ * @returns 取消订阅函数
83
+ */
84
+ onBoth(handler) {
85
+ this.emitter.on("*", handler);
86
+ return () => this.offBoth("*", handler);
87
+ }
88
+ /**
89
+ * 订阅事件(只触发一次)
90
+ * @param event 事件名称
91
+ * @param callback 回调函数
92
+ */
93
+ once(event, callback) {
94
+ const wrapper = (data) => {
95
+ this.off(event, wrapper);
96
+ callback(data);
97
+ };
98
+ this.emitter.on(event, wrapper);
99
+ return () => this.off(event, wrapper);
100
+ }
101
+ /**
102
+ * 取消订阅
103
+ * @param event 事件名称
104
+ * @param callback 回调函数(可选,不传则取消所有该事件的监听器)
105
+ */
106
+ off(event, callback) {
107
+ this.emitter.off(event, callback);
108
+ }
109
+ /**
110
+ * 取消订阅所有事件
111
+ * @param type 事件类型
112
+ * @param handler 回调函数
113
+ */
114
+ offBoth(type, handler) {
115
+ this.emitter.off(type, handler);
116
+ }
117
+ /**
118
+ * 清空所有监听器
119
+ */
120
+ clear() {
121
+ var _a;
122
+ (_a = this.emitter.all) == null ? void 0 : _a.clear();
123
+ }
124
+ };
125
+ var eventBusInstance = null;
126
+ function getEventBus() {
127
+ if (!eventBusInstance) {
128
+ eventBusInstance = new MaxEventBus();
129
+ }
130
+ return eventBusInstance;
131
+ }
132
+ function createEventBus() {
133
+ return new MaxEventBus();
134
+ }
135
+ function resetEventBus() {
136
+ if (eventBusInstance) {
137
+ eventBusInstance.clear();
138
+ eventBusInstance = null;
139
+ }
140
+ }
141
+
142
+ // src/manager.ts
143
+ var MaxEventBusManager = class {
144
+ constructor() {
145
+ __publicField(this, "masterEventBus");
146
+ __publicField(this, "slaveEventBus", /* @__PURE__ */ new Map());
147
+ this.masterEventBus = createEventBus();
148
+ }
149
+ /**
150
+ * 获取主应用事件总线实例
151
+ */
152
+ getMasterBus() {
153
+ return this.masterEventBus;
154
+ }
155
+ /**
156
+ * 注册子应用事件总线
157
+ * @param appName 子应用名称
158
+ * @param masterEventBus 子应用的事件总线实例
159
+ */
160
+ registerSlaveBus(appName, masterEventBus) {
161
+ this.slaveEventBus.set(appName, masterEventBus);
162
+ }
163
+ /**
164
+ * 注销子应用事件总线
165
+ * @param appName 子应用名称
166
+ */
167
+ unregisterSlaveBus(appName) {
168
+ this.slaveEventBus.delete(appName);
169
+ }
170
+ /**
171
+ * 向所有应用(主应用 + 子应用)广播事件
172
+ * @param event 事件名称
173
+ * @param data 事件数据
174
+ */
175
+ broadcast(event, data) {
176
+ this.masterEventBus.emit(event, data);
177
+ this.slaveEventBus.forEach((bus) => {
178
+ bus.emit(event, data);
179
+ });
180
+ }
181
+ /**
182
+ * 向主应用发送事件
183
+ * @param event 事件名称
184
+ * @param data 事件数据
185
+ */
186
+ toMaster(event, data) {
187
+ this.masterEventBus.emit(event, data);
188
+ }
189
+ /**
190
+ * 向特定子应用发送事件
191
+ * @param appName 子应用名称
192
+ * @param event 事件名称
193
+ * @param data 事件数据
194
+ */
195
+ toSlave(appName, event, data) {
196
+ const bus = this.slaveEventBus.get(appName);
197
+ if (bus) {
198
+ bus.emit(event, data);
199
+ }
200
+ }
201
+ /**
202
+ * 向多个子应用发送事件
203
+ * @param appNames 子应用名称列表
204
+ * @param event 事件名称
205
+ * @param data 事件数据
206
+ */
207
+ toSlaves(appNames, event, data) {
208
+ appNames.forEach((appName) => {
209
+ this.toSlave(appName, event, data);
210
+ });
211
+ }
212
+ /**
213
+ * 监听主应用事件
214
+ * @param event 事件名称
215
+ * @param callback 回调函数
216
+ */
217
+ onMaster(event, callback) {
218
+ return this.masterEventBus.on(event, callback);
219
+ }
220
+ /**
221
+ * 监听来自特定子应用的事件
222
+ * @param appName 子应用名称
223
+ * @param event 事件名称
224
+ * @param callback 回调函数
225
+ */
226
+ onSlave(appName, event, callback) {
227
+ const bus = this.slaveEventBus.get(appName);
228
+ if (bus) {
229
+ return bus.on(event, callback);
230
+ }
231
+ return () => {
232
+ };
233
+ }
234
+ /**
235
+ * 监听所有子应用事件(任何子应用发送的事件)
236
+ * @param event 事件名称
237
+ * @param callback 回调函数
238
+ */
239
+ onAnySlave(event, callback) {
240
+ const unSubscribers = [];
241
+ this.slaveEventBus.forEach((bus, name) => {
242
+ const unSub = bus.on(event, (data) => callback(data, name));
243
+ unSubscribers.push(unSub);
244
+ });
245
+ return () => {
246
+ unSubscribers.forEach((unSub) => unSub());
247
+ };
248
+ }
249
+ /**
250
+ * 获取已注册的子应用列表
251
+ */
252
+ getRegisteredApps() {
253
+ return Array.from(this.slaveEventBus.keys());
254
+ }
255
+ /**
256
+ * 清空所有监听器
257
+ */
258
+ clear() {
259
+ this.masterEventBus.clear();
260
+ this.slaveEventBus.forEach((bus) => bus.clear());
261
+ }
262
+ /**
263
+ * 销毁管理器
264
+ */
265
+ destroy() {
266
+ this.clear();
267
+ this.slaveEventBus.clear();
268
+ }
269
+ };
270
+ var managerInstance = null;
271
+ function getMaxEventBusManager() {
272
+ if (!managerInstance) {
273
+ managerInstance = new MaxEventBusManager();
274
+ }
275
+ return managerInstance;
276
+ }
277
+ function resetMaxEventBusManager() {
278
+ if (managerInstance) {
279
+ managerInstance.destroy();
280
+ managerInstance = null;
281
+ }
282
+ }
283
+ // Annotate the CommonJS export names for ESM import in node:
284
+ 0 && (module.exports = {
285
+ MaxEventBus,
286
+ MaxEventBusManager,
287
+ createEventBus,
288
+ getEventBus,
289
+ getMaxEventBusManager,
290
+ resetEventBus,
291
+ resetMaxEventBusManager
292
+ });
293
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/core.ts","../src/manager.ts"],"sourcesContent":["export * from './core'\nexport * from './manager'\n","import type { Emitter, Handler, WildcardHandler } from 'mitt'\nimport mitt from 'mitt'\nimport type { MaxEvents } from './types'\n/**\n * Mitt 事件总线核心实现\n */\nexport class MaxEventBus {\n private emitter: Emitter<MaxEvents>\n\n constructor() {\n this.emitter = mitt<MaxEvents>()\n }\n\n /**\n * 发布事件\n * @param type 事件类型\n * @param data 事件数据\n */\n emit<Key extends keyof MaxEvents>(type: Key, data: MaxEvents[Key]): void {\n this.emitter.emit(type, data)\n }\n\n /**\n * 发布事件(不指定类型)\n * @param type 事件类型\n * @param data 事件数据\n */\n emitWithout<Key extends keyof MaxEvents>(type: undefined extends MaxEvents[Key] ? Key : never): void {\n this.emitter.emit(type)\n }\n\n /**\n * 订阅事件\n * @param event 事件名称\n * @param callback 回调函数\n * @returns 取消订阅函数\n */\n on<Key extends keyof MaxEvents>(event: Key, callback: Handler<MaxEvents[Key]>): () => void {\n this.emitter.on(event, callback)\n return () => this.off(event, callback)\n }\n\n /**\n * 订阅所有事件\n * @param type 事件类型\n * @param handler 回调函数\n * @returns 取消订阅函数\n */\n onBoth(handler: WildcardHandler<MaxEvents>): () => void {\n this.emitter.on('*', handler)\n return () => this.offBoth('*', handler)\n }\n\n /**\n * 订阅事件(只触发一次)\n * @param event 事件名称\n * @param callback 回调函数\n */\n once<Key extends keyof MaxEvents>(event: Key, callback: Handler<MaxEvents[Key]>): () => void {\n const wrapper: Handler<MaxEvents[Key]> = (data: MaxEvents[Key]) => {\n this.off(event, wrapper)\n callback(data)\n }\n this.emitter.on(event, wrapper)\n return () => this.off(event, wrapper)\n }\n\n /**\n * 取消订阅\n * @param event 事件名称\n * @param callback 回调函数(可选,不传则取消所有该事件的监听器)\n */\n off<Key extends keyof MaxEvents>(event: Key, callback?: Handler<MaxEvents[Key]>): void {\n this.emitter.off(event, callback)\n }\n\n /**\n * 取消订阅所有事件\n * @param type 事件类型\n * @param handler 回调函数\n */\n offBoth(type: '*', handler: WildcardHandler<MaxEvents>): void {\n this.emitter.off(type, handler)\n }\n\n /**\n * 清空所有监听器\n */\n clear(): void {\n this.emitter.all?.clear()\n }\n}\n\n// 导出单例实例工厂\nlet eventBusInstance: MaxEventBus | null = null\n\n/**\n * 获取事件总线单例\n */\nexport function getEventBus() {\n if (!eventBusInstance) {\n eventBusInstance = new MaxEventBus()\n }\n return eventBusInstance\n}\n\n/**\n * 创建新的事件总线实例\n */\nexport function createEventBus() {\n return new MaxEventBus()\n}\n\n/**\n * 重置事件总线单例\n */\nexport function resetEventBus(): void {\n if (eventBusInstance) {\n eventBusInstance.clear()\n eventBusInstance = null\n }\n}\n","import type { MaxEventBus } from './core'\nimport { createEventBus } from './core'\n\n/**\n * 主应用事件总线管理器\n * 负责在主应用中创建和分发事件总线给子应用\n */\nclass MaxEventBusManager {\n private masterEventBus: MaxEventBus\n private slaveEventBus: Map<string, MaxEventBus> = new Map()\n\n constructor() {\n this.masterEventBus = createEventBus()\n }\n\n /**\n * 获取主应用事件总线实例\n */\n getMasterBus(): MaxEventBus {\n return this.masterEventBus\n }\n\n /**\n * 注册子应用事件总线\n * @param appName 子应用名称\n * @param masterEventBus 子应用的事件总线实例\n */\n registerSlaveBus(appName: string, masterEventBus: MaxEventBus): void {\n this.slaveEventBus.set(appName, masterEventBus)\n }\n\n /**\n * 注销子应用事件总线\n * @param appName 子应用名称\n */\n unregisterSlaveBus(appName: string): void {\n this.slaveEventBus.delete(appName)\n }\n\n /**\n * 向所有应用(主应用 + 子应用)广播事件\n * @param event 事件名称\n * @param data 事件数据\n */\n broadcast<K extends string>(event: K, data?: any): void {\n // 主应用\n this.masterEventBus.emit(event, data)\n\n // 所有子应用\n this.slaveEventBus.forEach(bus => {\n bus.emit(event, data)\n })\n }\n\n /**\n * 向主应用发送事件\n * @param event 事件名称\n * @param data 事件数据\n */\n toMaster<K extends string>(event: K, data?: any): void {\n this.masterEventBus.emit(event, data)\n }\n\n /**\n * 向特定子应用发送事件\n * @param appName 子应用名称\n * @param event 事件名称\n * @param data 事件数据\n */\n toSlave<K extends string>(appName: string, event: K, data?: any): void {\n const bus = this.slaveEventBus.get(appName)\n if (bus) {\n bus.emit(event, data)\n }\n }\n\n /**\n * 向多个子应用发送事件\n * @param appNames 子应用名称列表\n * @param event 事件名称\n * @param data 事件数据\n */\n toSlaves<K extends string>(appNames: string[], event: K, data?: any): void {\n appNames.forEach(appName => {\n this.toSlave(appName, event, data)\n })\n }\n\n /**\n * 监听主应用事件\n * @param event 事件名称\n * @param callback 回调函数\n */\n onMaster<K extends string>(event: K, callback: (data: any) => void): () => void {\n return this.masterEventBus.on(event, callback)\n }\n\n /**\n * 监听来自特定子应用的事件\n * @param appName 子应用名称\n * @param event 事件名称\n * @param callback 回调函数\n */\n onSlave<K extends string>(appName: string, event: K, callback: (data: any) => void): () => void {\n const bus = this.slaveEventBus.get(appName)\n if (bus) {\n return bus.on(event, callback)\n }\n return () => {\n //\n }\n }\n\n /**\n * 监听所有子应用事件(任何子应用发送的事件)\n * @param event 事件名称\n * @param callback 回调函数\n */\n onAnySlave<K extends string>(event: K, callback: (data: any, appName: string) => void): () => void {\n const unSubscribers: (() => void)[] = []\n\n this.slaveEventBus.forEach((bus, name) => {\n const unSub = bus.on(event, data => callback(data, name))\n unSubscribers.push(unSub)\n })\n\n // 返回取消所有订阅的函数\n return () => {\n unSubscribers.forEach(unSub => unSub())\n }\n }\n\n /**\n * 获取已注册的子应用列表\n */\n getRegisteredApps(): string[] {\n return Array.from(this.slaveEventBus.keys())\n }\n\n /**\n * 清空所有监听器\n */\n clear(): void {\n this.masterEventBus.clear()\n this.slaveEventBus.forEach(bus => bus.clear())\n }\n\n /**\n * 销毁管理器\n */\n destroy(): void {\n this.clear()\n this.slaveEventBus.clear()\n }\n}\n\n// 单例实例\nlet managerInstance: MaxEventBusManager | null = null\n\n/**\n * 获取主应用事件总线管理器单例\n */\nexport function getMaxEventBusManager(): MaxEventBusManager {\n if (!managerInstance) {\n managerInstance = new MaxEventBusManager()\n }\n return managerInstance\n}\n\n/**\n * 重置管理器单例\n */\nexport function resetMaxEventBusManager(): void {\n if (managerInstance) {\n managerInstance.destroy()\n managerInstance = null\n }\n}\n\nexport { MaxEventBusManager }\n"],"mappings":"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","names":["mitt"]}
@@ -0,0 +1,168 @@
1
+ import { Handler, WildcardHandler } from 'mitt';
2
+
3
+ /**
4
+ * 自定义事件类型定义
5
+ */
6
+ interface MaxEvents {
7
+ [key: string | symbol]: any;
8
+ }
9
+
10
+ /**
11
+ * Mitt 事件总线核心实现
12
+ */
13
+ declare class MaxEventBus {
14
+ private emitter;
15
+ constructor();
16
+ /**
17
+ * 发布事件
18
+ * @param type 事件类型
19
+ * @param data 事件数据
20
+ */
21
+ emit<Key extends keyof MaxEvents>(type: Key, data: MaxEvents[Key]): void;
22
+ /**
23
+ * 发布事件(不指定类型)
24
+ * @param type 事件类型
25
+ * @param data 事件数据
26
+ */
27
+ emitWithout<Key extends keyof MaxEvents>(type: undefined extends MaxEvents[Key] ? Key : never): void;
28
+ /**
29
+ * 订阅事件
30
+ * @param event 事件名称
31
+ * @param callback 回调函数
32
+ * @returns 取消订阅函数
33
+ */
34
+ on<Key extends keyof MaxEvents>(event: Key, callback: Handler<MaxEvents[Key]>): () => void;
35
+ /**
36
+ * 订阅所有事件
37
+ * @param type 事件类型
38
+ * @param handler 回调函数
39
+ * @returns 取消订阅函数
40
+ */
41
+ onBoth(handler: WildcardHandler<MaxEvents>): () => void;
42
+ /**
43
+ * 订阅事件(只触发一次)
44
+ * @param event 事件名称
45
+ * @param callback 回调函数
46
+ */
47
+ once<Key extends keyof MaxEvents>(event: Key, callback: Handler<MaxEvents[Key]>): () => void;
48
+ /**
49
+ * 取消订阅
50
+ * @param event 事件名称
51
+ * @param callback 回调函数(可选,不传则取消所有该事件的监听器)
52
+ */
53
+ off<Key extends keyof MaxEvents>(event: Key, callback?: Handler<MaxEvents[Key]>): void;
54
+ /**
55
+ * 取消订阅所有事件
56
+ * @param type 事件类型
57
+ * @param handler 回调函数
58
+ */
59
+ offBoth(type: '*', handler: WildcardHandler<MaxEvents>): void;
60
+ /**
61
+ * 清空所有监听器
62
+ */
63
+ clear(): void;
64
+ }
65
+ /**
66
+ * 获取事件总线单例
67
+ */
68
+ declare function getEventBus(): MaxEventBus;
69
+ /**
70
+ * 创建新的事件总线实例
71
+ */
72
+ declare function createEventBus(): MaxEventBus;
73
+ /**
74
+ * 重置事件总线单例
75
+ */
76
+ declare function resetEventBus(): void;
77
+
78
+ /**
79
+ * 主应用事件总线管理器
80
+ * 负责在主应用中创建和分发事件总线给子应用
81
+ */
82
+ declare class MaxEventBusManager {
83
+ private masterEventBus;
84
+ private slaveEventBus;
85
+ constructor();
86
+ /**
87
+ * 获取主应用事件总线实例
88
+ */
89
+ getMasterBus(): MaxEventBus;
90
+ /**
91
+ * 注册子应用事件总线
92
+ * @param appName 子应用名称
93
+ * @param masterEventBus 子应用的事件总线实例
94
+ */
95
+ registerSlaveBus(appName: string, masterEventBus: MaxEventBus): void;
96
+ /**
97
+ * 注销子应用事件总线
98
+ * @param appName 子应用名称
99
+ */
100
+ unregisterSlaveBus(appName: string): void;
101
+ /**
102
+ * 向所有应用(主应用 + 子应用)广播事件
103
+ * @param event 事件名称
104
+ * @param data 事件数据
105
+ */
106
+ broadcast<K extends string>(event: K, data?: any): void;
107
+ /**
108
+ * 向主应用发送事件
109
+ * @param event 事件名称
110
+ * @param data 事件数据
111
+ */
112
+ toMaster<K extends string>(event: K, data?: any): void;
113
+ /**
114
+ * 向特定子应用发送事件
115
+ * @param appName 子应用名称
116
+ * @param event 事件名称
117
+ * @param data 事件数据
118
+ */
119
+ toSlave<K extends string>(appName: string, event: K, data?: any): void;
120
+ /**
121
+ * 向多个子应用发送事件
122
+ * @param appNames 子应用名称列表
123
+ * @param event 事件名称
124
+ * @param data 事件数据
125
+ */
126
+ toSlaves<K extends string>(appNames: string[], event: K, data?: any): void;
127
+ /**
128
+ * 监听主应用事件
129
+ * @param event 事件名称
130
+ * @param callback 回调函数
131
+ */
132
+ onMaster<K extends string>(event: K, callback: (data: any) => void): () => void;
133
+ /**
134
+ * 监听来自特定子应用的事件
135
+ * @param appName 子应用名称
136
+ * @param event 事件名称
137
+ * @param callback 回调函数
138
+ */
139
+ onSlave<K extends string>(appName: string, event: K, callback: (data: any) => void): () => void;
140
+ /**
141
+ * 监听所有子应用事件(任何子应用发送的事件)
142
+ * @param event 事件名称
143
+ * @param callback 回调函数
144
+ */
145
+ onAnySlave<K extends string>(event: K, callback: (data: any, appName: string) => void): () => void;
146
+ /**
147
+ * 获取已注册的子应用列表
148
+ */
149
+ getRegisteredApps(): string[];
150
+ /**
151
+ * 清空所有监听器
152
+ */
153
+ clear(): void;
154
+ /**
155
+ * 销毁管理器
156
+ */
157
+ destroy(): void;
158
+ }
159
+ /**
160
+ * 获取主应用事件总线管理器单例
161
+ */
162
+ declare function getMaxEventBusManager(): MaxEventBusManager;
163
+ /**
164
+ * 重置管理器单例
165
+ */
166
+ declare function resetMaxEventBusManager(): void;
167
+
168
+ export { MaxEventBus, MaxEventBusManager, createEventBus, getEventBus, getMaxEventBusManager, resetEventBus, resetMaxEventBusManager };
@@ -0,0 +1,168 @@
1
+ import { Handler, WildcardHandler } from 'mitt';
2
+
3
+ /**
4
+ * 自定义事件类型定义
5
+ */
6
+ interface MaxEvents {
7
+ [key: string | symbol]: any;
8
+ }
9
+
10
+ /**
11
+ * Mitt 事件总线核心实现
12
+ */
13
+ declare class MaxEventBus {
14
+ private emitter;
15
+ constructor();
16
+ /**
17
+ * 发布事件
18
+ * @param type 事件类型
19
+ * @param data 事件数据
20
+ */
21
+ emit<Key extends keyof MaxEvents>(type: Key, data: MaxEvents[Key]): void;
22
+ /**
23
+ * 发布事件(不指定类型)
24
+ * @param type 事件类型
25
+ * @param data 事件数据
26
+ */
27
+ emitWithout<Key extends keyof MaxEvents>(type: undefined extends MaxEvents[Key] ? Key : never): void;
28
+ /**
29
+ * 订阅事件
30
+ * @param event 事件名称
31
+ * @param callback 回调函数
32
+ * @returns 取消订阅函数
33
+ */
34
+ on<Key extends keyof MaxEvents>(event: Key, callback: Handler<MaxEvents[Key]>): () => void;
35
+ /**
36
+ * 订阅所有事件
37
+ * @param type 事件类型
38
+ * @param handler 回调函数
39
+ * @returns 取消订阅函数
40
+ */
41
+ onBoth(handler: WildcardHandler<MaxEvents>): () => void;
42
+ /**
43
+ * 订阅事件(只触发一次)
44
+ * @param event 事件名称
45
+ * @param callback 回调函数
46
+ */
47
+ once<Key extends keyof MaxEvents>(event: Key, callback: Handler<MaxEvents[Key]>): () => void;
48
+ /**
49
+ * 取消订阅
50
+ * @param event 事件名称
51
+ * @param callback 回调函数(可选,不传则取消所有该事件的监听器)
52
+ */
53
+ off<Key extends keyof MaxEvents>(event: Key, callback?: Handler<MaxEvents[Key]>): void;
54
+ /**
55
+ * 取消订阅所有事件
56
+ * @param type 事件类型
57
+ * @param handler 回调函数
58
+ */
59
+ offBoth(type: '*', handler: WildcardHandler<MaxEvents>): void;
60
+ /**
61
+ * 清空所有监听器
62
+ */
63
+ clear(): void;
64
+ }
65
+ /**
66
+ * 获取事件总线单例
67
+ */
68
+ declare function getEventBus(): MaxEventBus;
69
+ /**
70
+ * 创建新的事件总线实例
71
+ */
72
+ declare function createEventBus(): MaxEventBus;
73
+ /**
74
+ * 重置事件总线单例
75
+ */
76
+ declare function resetEventBus(): void;
77
+
78
+ /**
79
+ * 主应用事件总线管理器
80
+ * 负责在主应用中创建和分发事件总线给子应用
81
+ */
82
+ declare class MaxEventBusManager {
83
+ private masterEventBus;
84
+ private slaveEventBus;
85
+ constructor();
86
+ /**
87
+ * 获取主应用事件总线实例
88
+ */
89
+ getMasterBus(): MaxEventBus;
90
+ /**
91
+ * 注册子应用事件总线
92
+ * @param appName 子应用名称
93
+ * @param masterEventBus 子应用的事件总线实例
94
+ */
95
+ registerSlaveBus(appName: string, masterEventBus: MaxEventBus): void;
96
+ /**
97
+ * 注销子应用事件总线
98
+ * @param appName 子应用名称
99
+ */
100
+ unregisterSlaveBus(appName: string): void;
101
+ /**
102
+ * 向所有应用(主应用 + 子应用)广播事件
103
+ * @param event 事件名称
104
+ * @param data 事件数据
105
+ */
106
+ broadcast<K extends string>(event: K, data?: any): void;
107
+ /**
108
+ * 向主应用发送事件
109
+ * @param event 事件名称
110
+ * @param data 事件数据
111
+ */
112
+ toMaster<K extends string>(event: K, data?: any): void;
113
+ /**
114
+ * 向特定子应用发送事件
115
+ * @param appName 子应用名称
116
+ * @param event 事件名称
117
+ * @param data 事件数据
118
+ */
119
+ toSlave<K extends string>(appName: string, event: K, data?: any): void;
120
+ /**
121
+ * 向多个子应用发送事件
122
+ * @param appNames 子应用名称列表
123
+ * @param event 事件名称
124
+ * @param data 事件数据
125
+ */
126
+ toSlaves<K extends string>(appNames: string[], event: K, data?: any): void;
127
+ /**
128
+ * 监听主应用事件
129
+ * @param event 事件名称
130
+ * @param callback 回调函数
131
+ */
132
+ onMaster<K extends string>(event: K, callback: (data: any) => void): () => void;
133
+ /**
134
+ * 监听来自特定子应用的事件
135
+ * @param appName 子应用名称
136
+ * @param event 事件名称
137
+ * @param callback 回调函数
138
+ */
139
+ onSlave<K extends string>(appName: string, event: K, callback: (data: any) => void): () => void;
140
+ /**
141
+ * 监听所有子应用事件(任何子应用发送的事件)
142
+ * @param event 事件名称
143
+ * @param callback 回调函数
144
+ */
145
+ onAnySlave<K extends string>(event: K, callback: (data: any, appName: string) => void): () => void;
146
+ /**
147
+ * 获取已注册的子应用列表
148
+ */
149
+ getRegisteredApps(): string[];
150
+ /**
151
+ * 清空所有监听器
152
+ */
153
+ clear(): void;
154
+ /**
155
+ * 销毁管理器
156
+ */
157
+ destroy(): void;
158
+ }
159
+ /**
160
+ * 获取主应用事件总线管理器单例
161
+ */
162
+ declare function getMaxEventBusManager(): MaxEventBusManager;
163
+ /**
164
+ * 重置管理器单例
165
+ */
166
+ declare function resetMaxEventBusManager(): void;
167
+
168
+ export { MaxEventBus, MaxEventBusManager, createEventBus, getEventBus, getMaxEventBusManager, resetEventBus, resetMaxEventBusManager };