Merge branch 'event-emitter' into sse-and-backoff

This commit is contained in:
2026-08-09 05:09:33 +00:00
2 changed files with 20 additions and 173 deletions
+13 -11
View File
@@ -122,19 +122,21 @@ export class EventEmitter<T extends EventMap> {
const listeners = this.#listeners.get(type);
if (!listeners) return;
// If no listener is provided, remove all listeners for the event type.
// Find the listener entries (If a listener was provided, only 1 entry will be returned. Otherwise, all entries will be returned).
const listenerEntries = Array.from(listeners).filter((entry) => !listener || entry.listener === listener || entry.wrappedListener === listener);
// Remove the listener entries from the listeners set.
listenerEntries.forEach((entry) => {
// Set the wrapped listener to a no-op function to prevent it from being called by debounced events after it's been removed.
entry.wrappedListener = (): void => {};
// Remove the listener entry from the listeners set.
listeners.delete(entry);
});
// If no listener was provided, remove the listeners set from the listeners map.
if (!listener) {
this.#listeners.delete(type);
return;
}
// Find the listener entry.
const listenerEntry = Array.from(listeners).find((entry) => entry.listener === listener || entry.wrappedListener === listener);
// If the listener entry is found, remove it from the listeners map.
if (listenerEntry) {
listeners.delete(listenerEntry);
}
}