Comparing version
@@ -62,8 +62,15 @@ /** | ||
/** | ||
* @deprecated Use `has` instead. | ||
* Returns the number of listeners for the eventName. | ||
* @param eventName If empty returns the number of listeners for all events. | ||
* @returns | ||
* @param eventName Optional eventName to check. | ||
* @returns The number of listeners for the eventName. If no eventName is provided, returns the total count of all listeners. | ||
*/ | ||
count<TEventName extends AllRemitterEventNames<TConfig>>(eventName?: TEventName): number; | ||
/** | ||
* If the eventName has any listener. | ||
* @param eventName Optional eventName to check. | ||
* @returns `true` if the eventName has any listener, `false` otherwise. If no eventName is provided, returns `true` if the Remitter has any listener. | ||
*/ | ||
has<TEventName extends AllRemitterEventNames<TConfig>>(eventName?: TEventName): boolean; | ||
/** | ||
* Start a side effect when the eventName has a first listener. | ||
@@ -70,0 +77,0 @@ * Dispose the side effect when the eventName has no listeners. |
@@ -29,9 +29,9 @@ 'use strict'; | ||
listener.eventName_ === ANY_EVENT | ||
? remitter.count() > 0 | ||
: remitter.count(listener.eventName_) > 0 || | ||
remitter.count(ANY_EVENT) > 0 | ||
? remitter.has() | ||
: remitter.has(listener.eventName_) || | ||
remitter.has(ANY_EVENT) | ||
``` | ||
`tryStartAll_` will always be called when remitter.count() > 0 | ||
`tryStartAll_` will always be called when remitter.has() is `true` | ||
*/ | ||
listener.b === ANY_EVENT || remitter.count(listener.b) > 0 || remitter.count(ANY_EVENT) > 0 | ||
listener.b === ANY_EVENT || remitter.has(listener.b) || remitter.has(ANY_EVENT) | ||
) { | ||
@@ -52,3 +52,3 @@ startRelay(listener, remitter); | ||
if (listener.a) { | ||
if (listener.b === ANY_EVENT ? remitter.count() <= 0 : remitter.count(ANY_EVENT) <= 0 && remitter.count(listener.b) <= 0) { | ||
if (listener.b === ANY_EVENT ? !remitter.has() : !remitter.has(ANY_EVENT) && !remitter.has(listener.b)) { | ||
stopRelay(listener); | ||
@@ -103,3 +103,3 @@ } | ||
} | ||
if (event !== ANY_EVENT && this.count(ANY_EVENT)) { | ||
if (event !== ANY_EVENT && this.has(ANY_EVENT)) { | ||
this.emit(ANY_EVENT, { | ||
@@ -170,5 +170,6 @@ event, | ||
/** | ||
* @deprecated Use `has` instead. | ||
* Returns the number of listeners for the eventName. | ||
* @param eventName If empty returns the number of listeners for all events. | ||
* @returns | ||
* @param eventName Optional eventName to check. | ||
* @returns The number of listeners for the eventName. If no eventName is provided, returns the total count of all listeners. | ||
*/ | ||
@@ -187,2 +188,19 @@ count(eventName) { | ||
/** | ||
* If the eventName has any listener. | ||
* @param eventName Optional eventName to check. | ||
* @returns `true` if the eventName has any listener, `false` otherwise. If no eventName is provided, returns `true` if the Remitter has any listener. | ||
*/ | ||
has(eventName) { | ||
if (eventName) { | ||
return this._l.get(eventName)?.size > 0; | ||
} else { | ||
for (const listeners of this._l.values()) { | ||
if (listeners.size > 0) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
} | ||
} | ||
/** | ||
* Start a side effect when the eventName has a first listener. | ||
@@ -205,3 +223,3 @@ * Dispose the side effect when the eventName has no listeners. | ||
); | ||
if (eventName === ANY_EVENT ? this.count() > 0 : this.count(eventName) > 0 || this.count(ANY_EVENT) > 0) { | ||
if (eventName === ANY_EVENT ? this.has() : this.has(eventName) || this.has(ANY_EVENT)) { | ||
startRelay(relayListener, this); | ||
@@ -208,0 +226,0 @@ } |
{ | ||
"name": "remitter", | ||
"version": "0.3.1", | ||
"version": "0.3.2", | ||
"private": false, | ||
@@ -5,0 +5,0 @@ "description": "A TypeScript friendly event emitter with easy re-emitting events.", |
@@ -45,3 +45,3 @@ # remitter | ||
remitter.count("event1"); // 2 | ||
remitter.has("event1"); // true | ||
@@ -58,4 +58,5 @@ remitter.emit("event1", "hello"); // logs "event1 hello" and "event1-once hello" | ||
remitter.clear("event2"); // remove all listeners for event2 | ||
remitter.count(); // 0 | ||
remitter.has(); // false | ||
remitter.dispose(); // removes all listeners and dispose tapped events | ||
@@ -62,0 +63,0 @@ ``` |
@@ -27,11 +27,11 @@ import type { AllRemitterEventNames, RemitterDisposer } from "./interface"; | ||
listener.eventName_ === ANY_EVENT | ||
? remitter.count() > 0 | ||
: remitter.count(listener.eventName_) > 0 || | ||
remitter.count(ANY_EVENT) > 0 | ||
? remitter.has() | ||
: remitter.has(listener.eventName_) || | ||
remitter.has(ANY_EVENT) | ||
``` | ||
`tryStartAll_` will always be called when remitter.count() > 0 | ||
`tryStartAll_` will always be called when remitter.has() is `true` | ||
*/ | ||
listener.eventName_ === ANY_EVENT || | ||
remitter.count(listener.eventName_) > 0 || | ||
remitter.count(ANY_EVENT) > 0 | ||
remitter.has(listener.eventName_) || | ||
remitter.has(ANY_EVENT) | ||
) { | ||
@@ -59,5 +59,4 @@ startRelay(listener, remitter); | ||
listener.eventName_ === ANY_EVENT | ||
? remitter.count() <= 0 | ||
: remitter.count(ANY_EVENT) <= 0 && | ||
remitter.count(listener.eventName_) <= 0 | ||
? !remitter.has() | ||
: !remitter.has(ANY_EVENT) && !remitter.has(listener.eventName_) | ||
) { | ||
@@ -64,0 +63,0 @@ stopRelay(listener); |
@@ -63,3 +63,3 @@ import type { | ||
} | ||
if (event !== ANY_EVENT && this.count(ANY_EVENT)) { | ||
if (event !== ANY_EVENT && this.has(ANY_EVENT)) { | ||
(this as ReadonlyRemitter<RemitterConfig<TConfig>>).emit(ANY_EVENT, { | ||
@@ -178,5 +178,6 @@ event, | ||
/** | ||
* @deprecated Use `has` instead. | ||
* Returns the number of listeners for the eventName. | ||
* @param eventName If empty returns the number of listeners for all events. | ||
* @returns | ||
* @param eventName Optional eventName to check. | ||
* @returns The number of listeners for the eventName. If no eventName is provided, returns the total count of all listeners. | ||
*/ | ||
@@ -198,2 +199,22 @@ public count<TEventName extends AllRemitterEventNames<TConfig>>( | ||
/** | ||
* If the eventName has any listener. | ||
* @param eventName Optional eventName to check. | ||
* @returns `true` if the eventName has any listener, `false` otherwise. If no eventName is provided, returns `true` if the Remitter has any listener. | ||
*/ | ||
public has<TEventName extends AllRemitterEventNames<TConfig>>( | ||
eventName?: TEventName | ||
): boolean { | ||
if (eventName) { | ||
return (this.listeners_.get(eventName)?.size as number) > 0; | ||
} else { | ||
for (const listeners of this.listeners_.values()) { | ||
if (listeners.size > 0) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
} | ||
} | ||
/** | ||
* Start a side effect when the eventName has a first listener. | ||
@@ -221,4 +242,4 @@ * Dispose the side effect when the eventName has no listeners. | ||
eventName === ANY_EVENT | ||
? this.count() > 0 | ||
: this.count(eventName) > 0 || this.count(ANY_EVENT) > 0 | ||
? this.has() | ||
: this.has(eventName) || this.has(ANY_EVENT) | ||
) { | ||
@@ -225,0 +246,0 @@ startRelay(relayListener, this as unknown as Remitter<TConfig>); |
Sorry, the diff of this file is not supported yet
34586
7.12%946
7.01%131
0.77%