diff --git a/api/src/emitter.ts b/api/src/emitter.ts index 035ff25267..c50058d811 100644 --- a/api/src/emitter.ts +++ b/api/src/emitter.ts @@ -29,14 +29,19 @@ export class Emitter { context: EventContext ): Promise { const events = Array.isArray(event) ? event : [event]; - const listeners = events.flatMap((event) => this.filterEmitter.listeners(event) as FilterHandler[]); + const eventListeners = events.map((event) => ({ + event, + listeners: this.filterEmitter.listeners(event) as FilterHandler[], + })); let updatedPayload = payload; - for (const listener of listeners) { - const result = await listener(updatedPayload, meta, context); + for (const { event, listeners } of eventListeners) { + for (const listener of listeners) { + const result = await listener(updatedPayload, { event, ...meta }, context); - if (result !== undefined) { - updatedPayload = result; + if (result !== undefined) { + updatedPayload = result; + } } } @@ -47,7 +52,7 @@ export class Emitter { const events = Array.isArray(event) ? event : [event]; for (const event of events) { - this.actionEmitter.emitAsync(event, meta, context).catch((err) => { + this.actionEmitter.emitAsync(event, { event, ...meta }, context).catch((err) => { logger.warn(`An error was thrown while executing action "${event}"`); logger.warn(err); }); @@ -56,7 +61,7 @@ export class Emitter { public async emitInit(event: string, meta: Record): Promise { try { - await this.initEmitter.emitAsync(event, meta); + await this.initEmitter.emitAsync(event, { event, ...meta }); } catch (err: any) { logger.warn(`An error was thrown while executing init "${event}"`); logger.warn(err); diff --git a/api/tests/cli/index.test.ts b/api/tests/cli/index.test.ts index 5b5914c96e..b2c4a44b2f 100644 --- a/api/tests/cli/index.test.ts +++ b/api/tests/cli/index.test.ts @@ -57,10 +57,10 @@ describe('cli hooks', () => { const program = await setup(); expect(beforeHook).toHaveBeenCalledTimes(1); - expect(beforeHook).toHaveBeenCalledWith({ program }); + expect(beforeHook).toHaveBeenCalledWith({ event: 'cli.before', program }); expect(afterHook).toHaveBeenCalledTimes(1); - expect(afterHook).toHaveBeenCalledWith({ program }); + expect(afterHook).toHaveBeenCalledWith({ event: 'cli.after', program }); }); test('should be able to add a custom cli command', async () => {