Comparing version
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});class l{constructor(){this.listeners=new Map,this.relayListeners=new Set}emit(s,t){var e;(e=this.listeners.get(s))==null||e.forEach(i=>i(t))}on(s,t){let e=this.listeners.get(s);return e||(e=new Set,this.listeners.set(s,e)),e.add(t),e.size===1&&this.relayListeners.forEach(i=>i.start(s)),()=>{this.off(s,t)}}off(s,t){const e=this.listeners.get(s);if(e){const i=e.delete(t);return e.size<=0&&(this.listeners.delete(s),this.relayListeners.forEach(r=>r.dispose(s))),i}return!1}clear(s){var t;s?(t=this.listeners.get(s))==null||t.clear():this.listeners.clear()}count(s){var t;if(s)return((t=this.listeners.get(s))==null?void 0:t.size)||0;{let e=0;return this.listeners.forEach(i=>{e+=i.size}),e}}tap(s,t){let e;const i={start:r=>{r===s&&(e=t(this))},dispose:r=>{e&&(!r||r===s)&&e()}};return this.relayListeners.add(i),()=>{this.relayListeners.delete(i),e&&e()}}destroy(){this.clear(),this.relayListeners.forEach(s=>s.dispose()),this.relayListeners.clear()}}exports.Remitter=l; | ||
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});class l{constructor(){this.listeners=new Map,this.relayListeners=new Set}emit(e,t){var s;(s=this.listeners.get(e))==null||s.forEach(i=>i(t))}on(e,t){let s=this.listeners.get(e);return s||(s=new Set,this.listeners.set(e,s)),s.add(t),s.size===1&&this.relayListeners.forEach(i=>i.start(e)),()=>{this.off(e,t)}}off(e,t){const s=this.listeners.get(e);if(s){const i=s.delete(t);return s.size<=0&&(this.listeners.delete(e),this.relayListeners.forEach(r=>r.dispose(e))),i}return!1}clear(e){var t;e?(t=this.listeners.get(e))==null||t.clear():this.listeners.clear()}count(e){var t;if(e)return((t=this.listeners.get(e))==null?void 0:t.size)||0;{let s=0;return this.listeners.forEach(i=>{s+=i.size}),s}}remit(e,t){let s;const i={start:r=>{r===e&&(s=t(this))},dispose:r=>{s&&(!r||r===e)&&s()}};return this.relayListeners.add(i),()=>{this.relayListeners.delete(i),s&&s()}}destroy(){this.clear(),this.relayListeners.forEach(e=>e.dispose()),this.relayListeners.clear()}}exports.Remitter=l; | ||
//# sourceMappingURL=remitter.cjs.js.map |
@@ -33,2 +33,3 @@ declare type EventData<TData> = TData extends never | undefined | void ? void : TData; | ||
* Start a side effect when the eventName has a first listener. | ||
* Dispose the side effect when the eventName has no listeners. | ||
* For example tap into other events. | ||
@@ -39,5 +40,5 @@ * | ||
*/ | ||
tap<TEventName extends RemitterEventNames<TConfig>>(eventName: TEventName, start: (remitter: Remitter<TConfig>) => RemitterDisposer): RemitterDisposer; | ||
remit<TEventName extends RemitterEventNames<TConfig>>(eventName: TEventName, start: (remitter: Remitter<TConfig>) => RemitterDisposer): RemitterDisposer; | ||
destroy(): void; | ||
} | ||
export {}; |
@@ -56,3 +56,3 @@ class Remitter { | ||
} | ||
tap(eventName, start) { | ||
remit(eventName, start) { | ||
let disposer; | ||
@@ -59,0 +59,0 @@ const relayListener = { |
{ | ||
"name": "remitter", | ||
"version": "0.2.2", | ||
"version": "0.2.3", | ||
"private": false, | ||
@@ -5,0 +5,0 @@ "description": "A TypeScript friendly event emitter with easy re-emitting events.", |
@@ -60,5 +60,5 @@ # remitter | ||
```js | ||
remitter.tap("event1", () => { | ||
remitter.remit("event1", () => { | ||
const handler = e => { | ||
remitter.emit("event2", e.value + 1); | ||
remitter.emit("event1", e.value + 1); | ||
}; | ||
@@ -77,3 +77,3 @@ otherEvent.addListener(handler); | ||
const handler = e => { | ||
remitter.emit("event2", e.value + 1); | ||
remitter.emit("event1", e.value + 1); | ||
}; | ||
@@ -86,3 +86,3 @@ otherEvent.addListener(handler); | ||
remitter.tap("event1", tapToOtherEvent); | ||
remitter.remit("event1", tapToOtherEvent); | ||
``` | ||
@@ -89,0 +89,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
23083
0.94%133
0.76%