Comparing version
@@ -24,3 +24,3 @@ /** | ||
declare class Remitter<TConfig = any> { | ||
declare class ReadonlyRemitter<TConfig = any> { | ||
private readonly listeners_; | ||
@@ -32,7 +32,7 @@ private relayListeners_?; | ||
*/ | ||
emit<TEventName extends RemitterDatalessEventName<TConfig>>(eventName: TEventName): void; | ||
protected emit<TEventName extends RemitterDatalessEventName<TConfig>>(eventName: TEventName): void; | ||
/** | ||
* Emit an event with payload to `eventName` listeners. | ||
*/ | ||
emit<TEventName extends RemitterEventNames<TConfig>>(eventName: TEventName, eventData: TConfig[TEventName]): void; | ||
protected emit<TEventName extends RemitterEventNames<TConfig>>(eventName: TEventName, eventData: TConfig[TEventName]): void; | ||
/** | ||
@@ -75,3 +75,3 @@ * Add an `ANY_EVENT_NAME` listener to receive all events. | ||
*/ | ||
remit<TEventName extends AllRemitterEventNames<TConfig>>(eventName: TEventName, start: (remitter: Remitter<TConfig>) => RemitterDisposer): RemitterDisposer; | ||
protected remit<TEventName extends AllRemitterEventNames<TConfig>>(eventName: TEventName, start: (remitter: Remitter<TConfig>) => RemitterDisposer): RemitterDisposer; | ||
/** | ||
@@ -82,4 +82,11 @@ * Dispose all listeners. | ||
} | ||
type ReadonlyRemitter<TConfig = any> = Pick<Remitter<TConfig>, "dispose" | "count" | "on" | "off" | "clear">; | ||
declare class Remitter<TConfig = any> extends ReadonlyRemitter<TConfig> { | ||
constructor(); | ||
emit: { | ||
<TEventName extends RemitterDatalessEventName<TConfig>>(eventName: TEventName): void; | ||
<TEventName_1 extends keyof TConfig>(eventName: TEventName_1, eventData: TConfig[TEventName_1]): void; | ||
}; | ||
remit: <TEventName extends AllRemitterEventNames<TConfig>>(eventName: TEventName, start: (remitter: Remitter<TConfig>) => RemitterDisposer) => RemitterDisposer; | ||
} | ||
export { ANY_EVENT, AllRemitterEventNames, AnyEventData, AnyRemitterListener, ReadonlyRemitter, Remitter, RemitterConfig, RemitterDatalessEventName, RemitterDisposer, RemitterEventNames, RemitterListener }; |
@@ -86,3 +86,3 @@ 'use strict'; | ||
// src/remitter.ts | ||
var Remitter = class { | ||
var ReadonlyRemitter = class { | ||
_l = /* @__PURE__ */ new Map(); | ||
@@ -113,3 +113,6 @@ _r; | ||
if (this._r && listeners.size === 1) { | ||
tryStartAllRelay(this._r, this); | ||
tryStartAllRelay( | ||
this._r, | ||
this | ||
); | ||
} | ||
@@ -211,4 +214,12 @@ return () => { | ||
}; | ||
var Remitter = class extends ReadonlyRemitter { | ||
constructor() { | ||
super(); | ||
} | ||
emit = super.emit; | ||
remit = super.remit; | ||
}; | ||
exports.ANY_EVENT = ANY_EVENT; | ||
exports.ReadonlyRemitter = ReadonlyRemitter; | ||
exports.Remitter = Remitter; |
{ | ||
"name": "remitter", | ||
"version": "0.2.14", | ||
"version": "0.2.15", | ||
"private": false, | ||
@@ -5,0 +5,0 @@ "description": "A TypeScript friendly event emitter with easy re-emitting events.", |
@@ -12,2 +12,2 @@ export type { | ||
export { ANY_EVENT } from "./constants"; | ||
export { Remitter, type ReadonlyRemitter } from "./remitter"; | ||
export { Remitter, ReadonlyRemitter } from "./remitter"; |
import type { AllRemitterEventNames, RemitterDisposer } from "./interface"; | ||
import type { Remitter } from "./remitter"; | ||
import type { ReadonlyRemitter, Remitter } from "./remitter"; | ||
import { ANY_EVENT } from "./constants"; | ||
@@ -52,3 +52,3 @@ import { noop, tryCall } from "./utils"; | ||
listeners: Set<RelayListener>, | ||
remitter: Remitter | ||
remitter: ReadonlyRemitter | ||
) => { | ||
@@ -55,0 +55,0 @@ for (const listener of listeners) { |
@@ -22,3 +22,3 @@ import type { | ||
export class Remitter<TConfig = any> { | ||
export class ReadonlyRemitter<TConfig = any> { | ||
private readonly listeners_ = new Map< | ||
@@ -39,3 +39,3 @@ AllRemitterEventNames<TConfig>, | ||
*/ | ||
public emit<TEventName extends RemitterDatalessEventName<TConfig>>( | ||
protected emit<TEventName extends RemitterDatalessEventName<TConfig>>( | ||
eventName: TEventName | ||
@@ -46,7 +46,7 @@ ): void; | ||
*/ | ||
public emit<TEventName extends RemitterEventNames<TConfig>>( | ||
protected emit<TEventName extends RemitterEventNames<TConfig>>( | ||
eventName: TEventName, | ||
eventData: TConfig[TEventName] | ||
): void; | ||
public emit<TEventName extends RemitterEventNames<TConfig>>( | ||
protected emit<TEventName extends RemitterEventNames<TConfig>>( | ||
event: TEventName, | ||
@@ -62,3 +62,3 @@ data?: TConfig[TEventName] | ||
if (event !== ANY_EVENT && this.count(ANY_EVENT)) { | ||
(this as Remitter<RemitterConfig<TConfig>>).emit(ANY_EVENT, { | ||
(this as ReadonlyRemitter<RemitterConfig<TConfig>>).emit(ANY_EVENT, { | ||
event, | ||
@@ -96,3 +96,6 @@ data, | ||
if (this.relayListeners_ && listeners.size === 1) { | ||
tryStartAllRelay(this.relayListeners_, this); | ||
tryStartAllRelay( | ||
this.relayListeners_, | ||
this as unknown as Remitter<TConfig> | ||
); | ||
} | ||
@@ -202,3 +205,3 @@ | ||
*/ | ||
public remit<TEventName extends AllRemitterEventNames<TConfig>>( | ||
protected remit<TEventName extends AllRemitterEventNames<TConfig>>( | ||
eventName: TEventName, | ||
@@ -215,3 +218,3 @@ start: (remitter: Remitter<TConfig>) => RemitterDisposer | ||
if (this.count(eventName) > 0 || this.count(ANY_EVENT) > 0) { | ||
startRelay(relayListener, this); | ||
startRelay(relayListener, this as unknown as Remitter<TConfig>); | ||
} | ||
@@ -233,5 +236,8 @@ return () => { | ||
export type ReadonlyRemitter<TConfig = any> = Pick< | ||
Remitter<TConfig>, | ||
"dispose" | "count" | "on" | "off" | "clear" | ||
>; | ||
export class Remitter<TConfig = any> extends ReadonlyRemitter<TConfig> { | ||
public constructor() { | ||
super(); | ||
} | ||
public override emit = super.emit; | ||
public override remit = super.remit; | ||
} |
Sorry, the diff of this file is not supported yet
31503
3.3%864
4.1%