Fix removeAllListeners

This commit is contained in:
2026-08-10 02:32:25 +00:00
parent 57e809157b
commit ef797a5f20
2 changed files with 36 additions and 3 deletions
+7 -3
View File
@@ -133,8 +133,8 @@ export class EventEmitter<T extends EventMap> {
listeners.delete(entry);
});
// If no listener was provided, remove the listeners set from the listeners map.
if (!listener) {
// If no listener was provided and no listeners are left for the event type, remove the listeners set from the listeners map.
if (!listener || this.#listeners.get(type)?.size === 0) {
this.#listeners.delete(type);
}
}
@@ -169,7 +169,11 @@ export class EventEmitter<T extends EventMap> {
* Remove all listeners.
*/
removeAllListeners(): void {
this.#listeners.clear();
for (const [ type, listeners ] of this.#listeners.entries()) {
listeners.forEach((entry) => {
this.off(type, entry.listener);
});
}
}
/**