@maxax/x-plugins-mitt 1.0.0 → 1.0.1
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 +4 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +4 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -157,8 +157,8 @@ var MaxEventBusManager = class {
|
|
|
157
157
|
* @param appName 子应用名称
|
|
158
158
|
* @param masterEventBus 子应用的事件总线实例
|
|
159
159
|
*/
|
|
160
|
-
registerSlaveBus(appName
|
|
161
|
-
this.slaveEventBus.set(appName,
|
|
160
|
+
registerSlaveBus(appName) {
|
|
161
|
+
this.slaveEventBus.set(appName, createEventBus());
|
|
162
162
|
}
|
|
163
163
|
/**
|
|
164
164
|
* 注销子应用事件总线
|
|
@@ -168,12 +168,11 @@ var MaxEventBusManager = class {
|
|
|
168
168
|
this.slaveEventBus.delete(appName);
|
|
169
169
|
}
|
|
170
170
|
/**
|
|
171
|
-
*
|
|
171
|
+
* 向所有应用(子应用)广播事件
|
|
172
172
|
* @param event 事件名称
|
|
173
173
|
* @param data 事件数据
|
|
174
174
|
*/
|
|
175
175
|
broadcast(event, data) {
|
|
176
|
-
this.masterEventBus.emit(event, data);
|
|
177
176
|
this.slaveEventBus.forEach((bus) => {
|
|
178
177
|
bus.emit(event, data);
|
|
179
178
|
});
|
|
@@ -236,7 +235,7 @@ var MaxEventBusManager = class {
|
|
|
236
235
|
* @param event 事件名称
|
|
237
236
|
* @param callback 回调函数
|
|
238
237
|
*/
|
|
239
|
-
|
|
238
|
+
onBothSlave(event, callback) {
|
|
240
239
|
const unSubscribers = [];
|
|
241
240
|
this.slaveEventBus.forEach((bus, name) => {
|
|
242
241
|
const unSub = bus.on(event, (data) => callback(data, name));
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +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
|
|
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): void {\n this.slaveEventBus.set(appName, createEventBus())\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.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 onBothSlave<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"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -92,14 +92,14 @@ declare class MaxEventBusManager {
|
|
|
92
92
|
* @param appName 子应用名称
|
|
93
93
|
* @param masterEventBus 子应用的事件总线实例
|
|
94
94
|
*/
|
|
95
|
-
registerSlaveBus(appName: string
|
|
95
|
+
registerSlaveBus(appName: string): void;
|
|
96
96
|
/**
|
|
97
97
|
* 注销子应用事件总线
|
|
98
98
|
* @param appName 子应用名称
|
|
99
99
|
*/
|
|
100
100
|
unregisterSlaveBus(appName: string): void;
|
|
101
101
|
/**
|
|
102
|
-
*
|
|
102
|
+
* 向所有应用(子应用)广播事件
|
|
103
103
|
* @param event 事件名称
|
|
104
104
|
* @param data 事件数据
|
|
105
105
|
*/
|
|
@@ -142,7 +142,7 @@ declare class MaxEventBusManager {
|
|
|
142
142
|
* @param event 事件名称
|
|
143
143
|
* @param callback 回调函数
|
|
144
144
|
*/
|
|
145
|
-
|
|
145
|
+
onBothSlave<K extends string>(event: K, callback: (data: any, appName: string) => void): () => void;
|
|
146
146
|
/**
|
|
147
147
|
* 获取已注册的子应用列表
|
|
148
148
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -92,14 +92,14 @@ declare class MaxEventBusManager {
|
|
|
92
92
|
* @param appName 子应用名称
|
|
93
93
|
* @param masterEventBus 子应用的事件总线实例
|
|
94
94
|
*/
|
|
95
|
-
registerSlaveBus(appName: string
|
|
95
|
+
registerSlaveBus(appName: string): void;
|
|
96
96
|
/**
|
|
97
97
|
* 注销子应用事件总线
|
|
98
98
|
* @param appName 子应用名称
|
|
99
99
|
*/
|
|
100
100
|
unregisterSlaveBus(appName: string): void;
|
|
101
101
|
/**
|
|
102
|
-
*
|
|
102
|
+
* 向所有应用(子应用)广播事件
|
|
103
103
|
* @param event 事件名称
|
|
104
104
|
* @param data 事件数据
|
|
105
105
|
*/
|
|
@@ -142,7 +142,7 @@ declare class MaxEventBusManager {
|
|
|
142
142
|
* @param event 事件名称
|
|
143
143
|
* @param callback 回调函数
|
|
144
144
|
*/
|
|
145
|
-
|
|
145
|
+
onBothSlave<K extends string>(event: K, callback: (data: any, appName: string) => void): () => void;
|
|
146
146
|
/**
|
|
147
147
|
* 获取已注册的子应用列表
|
|
148
148
|
*/
|
package/dist/index.mjs
CHANGED
|
@@ -117,8 +117,8 @@ var MaxEventBusManager = class {
|
|
|
117
117
|
* @param appName 子应用名称
|
|
118
118
|
* @param masterEventBus 子应用的事件总线实例
|
|
119
119
|
*/
|
|
120
|
-
registerSlaveBus(appName
|
|
121
|
-
this.slaveEventBus.set(appName,
|
|
120
|
+
registerSlaveBus(appName) {
|
|
121
|
+
this.slaveEventBus.set(appName, createEventBus());
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
124
|
* 注销子应用事件总线
|
|
@@ -128,12 +128,11 @@ var MaxEventBusManager = class {
|
|
|
128
128
|
this.slaveEventBus.delete(appName);
|
|
129
129
|
}
|
|
130
130
|
/**
|
|
131
|
-
*
|
|
131
|
+
* 向所有应用(子应用)广播事件
|
|
132
132
|
* @param event 事件名称
|
|
133
133
|
* @param data 事件数据
|
|
134
134
|
*/
|
|
135
135
|
broadcast(event, data) {
|
|
136
|
-
this.masterEventBus.emit(event, data);
|
|
137
136
|
this.slaveEventBus.forEach((bus) => {
|
|
138
137
|
bus.emit(event, data);
|
|
139
138
|
});
|
|
@@ -196,7 +195,7 @@ var MaxEventBusManager = class {
|
|
|
196
195
|
* @param event 事件名称
|
|
197
196
|
* @param callback 回调函数
|
|
198
197
|
*/
|
|
199
|
-
|
|
198
|
+
onBothSlave(event, callback) {
|
|
200
199
|
const unSubscribers = [];
|
|
201
200
|
this.slaveEventBus.forEach((bus, name) => {
|
|
202
201
|
const unSub = bus.on(event, (data) => callback(data, name));
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core.ts","../src/manager.ts"],"sourcesContent":["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
|
|
1
|
+
{"version":3,"sources":["../src/core.ts","../src/manager.ts"],"sourcesContent":["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): void {\n this.slaveEventBus.set(appName, createEventBus())\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.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 onBothSlave<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":[]}
|