diff --git a/src/types/Emitter.ts b/src/types/Emitter.ts index 6ae3e26..d351f28 100644 --- a/src/types/Emitter.ts +++ b/src/types/Emitter.ts @@ -9,16 +9,16 @@ export interface ReadonlyEmitter { export interface ReadonlyAsyncEmitter { on( - type: E['type'], + type: E['type'] | '*', listener: (event: E) => void | Promise, weight?: number, ): this; once( - type: E['type'], + type: E['type'] | '*', listener: (event: E) => void | Promise, weight?: number, ): this; - off(type: E['type'], listener: (event: E) => void | Promise): this; + off(type: E['type'] | '*', listener: (event: E) => void | Promise): this; } export interface Emitter extends ReadonlyEmitter { diff --git a/src/utils/emitters/SemiAsyncEmitter.ts b/src/utils/emitters/SemiAsyncEmitter.ts index 4740c48..52825e5 100644 --- a/src/utils/emitters/SemiAsyncEmitter.ts +++ b/src/utils/emitters/SemiAsyncEmitter.ts @@ -15,15 +15,23 @@ export class SemiAsyncEmitter this.#syncEvents = new Set(syncEvents); } - on(type: E['type'], listener: (event: E) => unknown, order?: number): this { + on( + type: E['type'] | '*', + listener: (event: E) => unknown, + order?: number, + ): this { return this.#invoke('on', type, listener, order); } - once(type: E['type'], listener: (event: E) => unknown, order?: number): this { + once( + type: E['type'] | '*', + listener: (event: E) => unknown, + order?: number, + ): this { return this.#invoke('once', type, listener, order); } - off(type: E['type'], listener: (event: E) => unknown): this { + off(type: E['type'] | '*', listener: (event: E) => unknown): this { return this.#invoke('off', type, listener); } @@ -35,7 +43,7 @@ export class SemiAsyncEmitter #invoke( methodName: 'on' | 'once' | 'off', - type: E['type'], + type: E['type'] | '*', listener: (event: E) => unknown, order?: number, ): this {