From 824b91fc1ff873ba790a56d139c04cf1b11b9486 Mon Sep 17 00:00:00 2001 From: jlenon7 Date: Sun, 29 Mar 2026 14:25:40 -0300 Subject: [PATCH 1/3] feat(annotation): set default camelAlias --- package-lock.json | 4 ++-- package.json | 2 +- src/annotations/Listener.ts | 1 + src/events/Listener.ts | 10 ++++++++++ src/providers/EventProvider.ts | 8 ++------ 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64c580a..0829b9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@athenna/event", - "version": "5.2.0", + "version": "5.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@athenna/event", - "version": "5.2.0", + "version": "5.4.0", "license": "MIT", "devDependencies": { "@athenna/artisan": "^5.10.0", diff --git a/package.json b/package.json index a5808db..2e85ecd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@athenna/event", - "version": "5.2.0", + "version": "5.4.0", "description": "The Athenna events handler with queue store. Based on Emittery syntax.", "license": "MIT", "author": "João Lenon ", diff --git a/src/annotations/Listener.ts b/src/annotations/Listener.ts index 8af277b..d5065db 100644 --- a/src/annotations/Listener.ts +++ b/src/annotations/Listener.ts @@ -21,6 +21,7 @@ import type { ListenerOptions } from '#src/types' export function Listener(options?: ListenerOptions): ClassDecorator { return (target: any) => { options = Options.create(options, { + camelAlias: target.name, alias: `App/Listeners/${target.name}`, connection: Config.get('queue.default'), type: 'transient' diff --git a/src/events/Listener.ts b/src/events/Listener.ts index a0ea4ce..b4c48b2 100644 --- a/src/events/Listener.ts +++ b/src/events/Listener.ts @@ -22,10 +22,20 @@ export class Listener { this.id = this.createId() } + /** + * Remove the listener. + */ public remove() { Event.removeListenerById(this.id) } + /** + * Run the listener. + */ + public async run(data: any) { + await this.closure(data) + } + private createId() { return createHash('sha256') .update(`${this.event ?? '*'}|${this.closure.toString()}`) diff --git a/src/providers/EventProvider.ts b/src/providers/EventProvider.ts index 0fe353f..e2c5368 100644 --- a/src/providers/EventProvider.ts +++ b/src/providers/EventProvider.ts @@ -54,12 +54,8 @@ export class EventProvider extends ServiceProvider { * Register the events file by importing the file. */ private async registerEvents(path: string) { - // Bust ESM import cache to guarantee the events file re-runs (tests/providers - // may register/shutdown provider multiple times in same process). - const resolvedPath = `${path}?version=${Math.random()}` - if (path.startsWith('#')) { - await Module.resolve(resolvedPath, this.getMeta()) + await Module.resolve(path, this.getMeta()) return } @@ -72,6 +68,6 @@ export class EventProvider extends ServiceProvider { return } - await Module.resolve(`${path}?version=${Math.random()}`, this.getMeta()) + await Module.resolve(path, this.getMeta()) } } From 8fd1df7e7e7b642f8d31ecb2d725e5039edd9d8c Mon Sep 17 00:00:00 2001 From: jlenon7 Date: Sun, 29 Mar 2026 14:28:50 -0300 Subject: [PATCH 2/3] feat(annotation): set default camelAlias --- tests/unit/annotations/ListenerAnnotationTest.ts | 2 +- tests/unit/providers/EventProviderTest.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/unit/annotations/ListenerAnnotationTest.ts b/tests/unit/annotations/ListenerAnnotationTest.ts index 872331c..1160965 100644 --- a/tests/unit/annotations/ListenerAnnotationTest.ts +++ b/tests/unit/annotations/ListenerAnnotationTest.ts @@ -24,7 +24,7 @@ export default class ListenerAnnotationTest extends BaseTest { const metadata = Annotation.getMeta(ProductListener) assert.isFalse(metadata.registered) - assert.isUndefined(metadata.camelAlias) + assert.equal(metadata.camelAlias, 'ProductListener') assert.equal(metadata.type, 'transient') assert.equal(metadata.connection, 'memory') assert.equal(metadata.alias, 'App/Listeners/ProductListener') diff --git a/tests/unit/providers/EventProviderTest.ts b/tests/unit/providers/EventProviderTest.ts index 7f60c2f..281b057 100644 --- a/tests/unit/providers/EventProviderTest.ts +++ b/tests/unit/providers/EventProviderTest.ts @@ -84,8 +84,8 @@ export class EventProviderTest { await new EventProvider().register() - assert.isTrue(ioc.has('helloListener')) - assert.isTrue(ioc.has('productListener')) + assert.isTrue(ioc.has('HelloListener')) + assert.isTrue(ioc.has('ProductListener')) assert.isTrue(ioc.has('annotatedListener')) assert.equal(Event.listenerCount('helloListener'), 1) From 5de8e240737ee68f2fe0105f0e73d3f886a70ba1 Mon Sep 17 00:00:00 2001 From: jlenon7 Date: Sun, 29 Mar 2026 14:34:37 -0300 Subject: [PATCH 3/3] feat(annotation): set default camelAlias --- tests/fixtures/events/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/fixtures/events/index.ts b/tests/fixtures/events/index.ts index 56026a1..9481ee5 100644 --- a/tests/fixtures/events/index.ts +++ b/tests/fixtures/events/index.ts @@ -11,8 +11,8 @@ import { Event } from '#src' import { constants } from '#tests/fixtures/constants/index' Event.on('annotatedListener', 'annotatedListener') -Event.on('helloListener', 'helloListener') -Event.on('productListener', 'productListener') +Event.on('helloListener', 'HelloListener') +Event.on('productListener', 'ProductListener') Event.on('closureListener', ctx => { constants.RUN_MAP.closureListener = true