feat: event aggregator (#6218)
What: - Event Aggregator Util - Preparation for normalizing event in a new format (backward compatible with the current format) - GQL Schema to joiner config and some Entities configured - Link modules emmiting events
This commit is contained in:
1 parent
73fd92a1af
commit
884428a1b5
66 files changed
+1407
-749
No files matched your search
@@ -1,5 +1,11 @@
|
||||
import { MedusaContainer } from "@medusajs/modules-sdk"
|
||||
import { EmitData, EventBusTypes, Logger, Subscriber } from "@medusajs/types"
|
||||
import {
|
||||
EmitData,
|
||||
EventBusTypes,
|
||||
Logger,
|
||||
Message,
|
||||
Subscriber,
|
||||
} from "@medusajs/types"
|
||||
import { AbstractEventBusModuleService } from "@medusajs/utils"
|
||||
import { EventEmitter } from "events"
|
||||
import { ulid } from "ulid"
|
||||
@@ -37,14 +43,16 @@ export default class LocalEventBusService extends AbstractEventBusModuleService
|
||||
*/
|
||||
async emit<T>(data: EmitData<T>[]): Promise<void>
|
||||
|
||||
async emit<T, TInput extends string | EmitData<T>[] = string>(
|
||||
async emit<T>(data: Message<T>[]): Promise<void>
|
||||
|
||||
async emit<T, TInput extends string | EmitData<T>[] | Message<T>[] = string>(
|
||||
eventOrData: TInput,
|
||||
data?: T,
|
||||
options: Record<string, unknown> = {}
|
||||
): Promise<void> {
|
||||
const isBulkEmit = Array.isArray(eventOrData)
|
||||
|
||||
const events: EmitData[] = isBulkEmit
|
||||
const events: EmitData[] | Message<T>[] = isBulkEmit
|
||||
? eventOrData
|
||||
: [{ eventName: eventOrData, data }]
|
||||
|
||||
@@ -61,7 +69,8 @@ export default class LocalEventBusService extends AbstractEventBusModuleService
|
||||
continue
|
||||
}
|
||||
|
||||
this.eventEmitter_.emit(event.eventName, event.data)
|
||||
const data = (event as EmitData).data ?? (event as Message<T>).body
|
||||
this.eventEmitter_.emit(event.eventName, data)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user