Comparing version
@@ -25,2 +25,3 @@ /** | ||
declare class ReadonlyRemitter<TConfig = any> { | ||
#private; | ||
/** | ||
@@ -30,5 +31,2 @@ * An event name to listen to all events or to remit on any event listener. | ||
readonly ANY_EVENT: ANY_EVENT; | ||
private readonly listeners_; | ||
private relayListeners_?; | ||
private onceListeners_?; | ||
/** | ||
@@ -35,0 +33,0 @@ * Emit an event to `eventName` listeners. |
@@ -91,7 +91,7 @@ 'use strict'; | ||
ANY_EVENT = ANY_EVENT; | ||
_l = /* @__PURE__ */ new Map(); | ||
_r; | ||
_o; | ||
#listeners = /* @__PURE__ */ new Map(); | ||
#relayListeners; | ||
#onceListeners; | ||
emit(event, data) { | ||
const listeners = this._l.get(event); | ||
const listeners = this.#listeners.get(event); | ||
if (listeners) { | ||
@@ -110,11 +110,11 @@ for (const listener of listeners) { | ||
on(eventName, listener) { | ||
let listeners = this._l.get(eventName); | ||
let listeners = this.#listeners.get(eventName); | ||
if (!listeners) { | ||
listeners = /* @__PURE__ */ new Set(); | ||
this._l.set(eventName, listeners); | ||
this.#listeners.set(eventName, listeners); | ||
} | ||
listeners.add(listener); | ||
if (this._r && listeners.size === 1) { | ||
if (this.#relayListeners && listeners.size === 1) { | ||
tryStartAllRelay( | ||
this._r, | ||
this.#relayListeners, | ||
this | ||
@@ -130,3 +130,3 @@ ); | ||
const onceListener = (eventData) => (off(), listener(eventData)); | ||
(this._o || (this._o = /* @__PURE__ */ new WeakMap())).set( | ||
(this.#onceListeners || (this.#onceListeners = /* @__PURE__ */ new WeakMap())).set( | ||
listener, | ||
@@ -142,6 +142,6 @@ onceListener | ||
off(eventName, listener) { | ||
const listeners = this._l.get(eventName); | ||
const listeners = this.#listeners.get(eventName); | ||
if (listeners) { | ||
let result = listeners.delete(listener); | ||
const onceListener = this._o?.get(listener); | ||
const onceListener = this.#onceListeners?.get(listener); | ||
if (onceListener) { | ||
@@ -151,5 +151,5 @@ result = listeners.delete(onceListener) || result; | ||
if (listeners.size <= 0) { | ||
this._l.delete(eventName); | ||
if (this._r) { | ||
tryStopAllRelay(this._r, this); | ||
this.#listeners.delete(eventName); | ||
if (this.#relayListeners) { | ||
tryStopAllRelay(this.#relayListeners, this); | ||
} | ||
@@ -163,8 +163,8 @@ } | ||
if (eventName) { | ||
this._l.get(eventName)?.clear(); | ||
this.#listeners.get(eventName)?.clear(); | ||
} else { | ||
this._l.clear(); | ||
this.#listeners.clear(); | ||
} | ||
if (this._r) { | ||
tryStopAllRelay(this._r, this); | ||
if (this.#relayListeners) { | ||
tryStopAllRelay(this.#relayListeners, this); | ||
} | ||
@@ -180,6 +180,6 @@ } | ||
if (eventName) { | ||
return this._l.get(eventName)?.size || 0; | ||
return this.#listeners.get(eventName)?.size || 0; | ||
} else { | ||
let count = 0; | ||
for (const listeners of this._l.values()) { | ||
for (const listeners of this.#listeners.values()) { | ||
count += listeners.size; | ||
@@ -197,5 +197,5 @@ } | ||
if (eventName) { | ||
return this._l.get(eventName)?.size > 0; | ||
return this.#listeners.get(eventName)?.size > 0; | ||
} else { | ||
for (const listeners of this._l.values()) { | ||
for (const listeners of this.#listeners.values()) { | ||
if (listeners.size > 0) { | ||
@@ -223,3 +223,3 @@ return true; | ||
}; | ||
(this._r || (this._r = /* @__PURE__ */ new Set())).add( | ||
(this.#relayListeners || (this.#relayListeners = /* @__PURE__ */ new Set())).add( | ||
relayListener | ||
@@ -231,3 +231,3 @@ ); | ||
return () => { | ||
this._r?.delete(relayListener); | ||
this.#relayListeners?.delete(relayListener); | ||
stopRelay(relayListener); | ||
@@ -241,3 +241,3 @@ }; | ||
this.clear(); | ||
this._r?.clear(); | ||
this.#relayListeners?.clear(); | ||
} | ||
@@ -244,0 +244,0 @@ }; |
{ | ||
"name": "remitter", | ||
"version": "0.3.2", | ||
"version": "0.3.3", | ||
"private": false, | ||
@@ -5,0 +5,0 @@ "description": "A TypeScript friendly event emitter with easy re-emitting events.", |
@@ -28,10 +28,7 @@ import type { | ||
private readonly listeners_ = new Map< | ||
AllRemitterEventNames<TConfig>, | ||
Set<Fn> | ||
>(); | ||
readonly #listeners = new Map<AllRemitterEventNames<TConfig>, Set<Fn>>(); | ||
private relayListeners_?: Set<RelayListener>; | ||
#relayListeners?: Set<RelayListener>; | ||
private onceListeners_?: WeakMap< | ||
#onceListeners?: WeakMap< | ||
RemitterListener<TConfig, any>, | ||
@@ -58,3 +55,3 @@ RemitterListener<TConfig, any> | ||
): void { | ||
const listeners = this.listeners_.get(event); | ||
const listeners = this.#listeners.get(event); | ||
if (listeners) { | ||
@@ -91,12 +88,12 @@ for (const listener of listeners) { | ||
): RemitterDisposer { | ||
let listeners = this.listeners_.get(eventName); | ||
let listeners = this.#listeners.get(eventName); | ||
if (!listeners) { | ||
listeners = new Set(); | ||
this.listeners_.set(eventName, listeners); | ||
this.#listeners.set(eventName, listeners); | ||
} | ||
listeners.add(listener); | ||
if (this.relayListeners_ && listeners.size === 1) { | ||
if (this.#relayListeners && listeners.size === 1) { | ||
tryStartAllRelay( | ||
this.relayListeners_, | ||
this.#relayListeners, | ||
this as unknown as Remitter<TConfig> | ||
@@ -133,3 +130,3 @@ ); | ||
)) as RemitterListener<TConfig, TEventName>; | ||
(this.onceListeners_ || (this.onceListeners_ = new WeakMap())).set( | ||
(this.#onceListeners || (this.#onceListeners = new WeakMap())).set( | ||
listener, | ||
@@ -149,6 +146,6 @@ onceListener | ||
): boolean { | ||
const listeners = this.listeners_.get(eventName); | ||
const listeners = this.#listeners.get(eventName); | ||
if (listeners) { | ||
let result = listeners.delete(listener); | ||
const onceListener = this.onceListeners_?.get(listener); | ||
const onceListener = this.#onceListeners?.get(listener); | ||
if (onceListener) { | ||
@@ -158,5 +155,5 @@ result = listeners.delete(onceListener) || result; | ||
if (listeners.size <= 0) { | ||
this.listeners_.delete(eventName); | ||
if (this.relayListeners_) { | ||
tryStopAllRelay(this.relayListeners_, this); | ||
this.#listeners.delete(eventName); | ||
if (this.#relayListeners) { | ||
tryStopAllRelay(this.#relayListeners, this); | ||
} | ||
@@ -173,8 +170,8 @@ } | ||
if (eventName) { | ||
this.listeners_.get(eventName)?.clear(); | ||
this.#listeners.get(eventName)?.clear(); | ||
} else { | ||
this.listeners_.clear(); | ||
this.#listeners.clear(); | ||
} | ||
if (this.relayListeners_) { | ||
tryStopAllRelay(this.relayListeners_, this); | ||
if (this.#relayListeners) { | ||
tryStopAllRelay(this.#relayListeners, this); | ||
} | ||
@@ -193,6 +190,6 @@ } | ||
if (eventName) { | ||
return this.listeners_.get(eventName)?.size || 0; | ||
return this.#listeners.get(eventName)?.size || 0; | ||
} else { | ||
let count = 0; | ||
for (const listeners of this.listeners_.values()) { | ||
for (const listeners of this.#listeners.values()) { | ||
count += listeners.size; | ||
@@ -213,5 +210,5 @@ } | ||
if (eventName) { | ||
return (this.listeners_.get(eventName)?.size as number) > 0; | ||
return (this.#listeners.get(eventName)?.size as number) > 0; | ||
} else { | ||
for (const listeners of this.listeners_.values()) { | ||
for (const listeners of this.#listeners.values()) { | ||
if (listeners.size > 0) { | ||
@@ -243,3 +240,3 @@ return true; | ||
}; | ||
(this.relayListeners_ || (this.relayListeners_ = new Set())).add( | ||
(this.#relayListeners || (this.#relayListeners = new Set())).add( | ||
relayListener | ||
@@ -255,3 +252,3 @@ ); | ||
return () => { | ||
this.relayListeners_?.delete(relayListener); | ||
this.#relayListeners?.delete(relayListener); | ||
stopRelay(relayListener); | ||
@@ -266,3 +263,3 @@ }; | ||
this.clear(); | ||
this.relayListeners_?.clear(); | ||
this.#relayListeners?.clear(); | ||
} | ||
@@ -269,0 +266,0 @@ } |
Sorry, the diff of this file is not supported yet
35046
1.33%941
-0.53%