@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 CHANGED
@@ -157,8 +157,8 @@ var MaxEventBusManager = class {
157
157
  * @param appName 子应用名称
158
158
  * @param masterEventBus 子应用的事件总线实例
159
159
  */
160
- registerSlaveBus(appName, masterEventBus) {
161
- this.slaveEventBus.set(appName, masterEventBus);
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
- onAnySlave(event, callback) {
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));
@@ -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, 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"]}
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, masterEventBus: MaxEventBus): void;
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
- onAnySlave<K extends string>(event: K, callback: (data: any, appName: string) => void): () => void;
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, masterEventBus: MaxEventBus): void;
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
- onAnySlave<K extends string>(event: K, callback: (data: any, appName: string) => void): () => void;
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, masterEventBus) {
121
- this.slaveEventBus.set(appName, masterEventBus);
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
- onAnySlave(event, callback) {
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));
@@ -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, 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":[]}
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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maxax/x-plugins-mitt",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A lightweight event bus wrapper based on mitt for Maxax projects",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",