New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

remitter

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

remitter - npm Package Compare versions

Comparing version

to
0.3.5

87

dist/main.d.ts

@@ -24,4 +24,3 @@ /**

declare class ReadonlyRemitter<TConfig = any> {
#private;
interface EventReceiver<TConfig = any> {
/**

@@ -32,10 +31,2 @@ * An event name to listen to all events or to remit on any event listener.

/**
* Emit an event to `eventName` listeners.
*/
protected emit<TEventName extends RemitterDatalessEventName<TConfig>>(eventName: TEventName): void;
/**
* Emit an event with payload to `eventName` listeners.
*/
protected emit<TEventName extends RemitterEventNames<TConfig>>(eventName: TEventName, eventData: TConfig[TEventName]): void;
/**
* Add an `ANY_EVENT_NAME` listener to receive all events.

@@ -49,2 +40,6 @@ */

/**
* Add an `ANY_EVENT_NAME` listener to receive all events.
*/
onAny(listener: AnyRemitterListener<TConfig>): RemitterDisposer;
/**
* Add a one-time listener to `ANY_EVENT_NAME` to receive all events..

@@ -58,7 +53,24 @@ */

/**
* Add a one-time listener to `ANY_EVENT_NAME` to receive all events..
*/
onceAny(listener: AnyRemitterListener<TConfig>): RemitterDisposer;
/**
* Remove a listener from the eventName.
*/
off<TEventName extends AllRemitterEventNames<TConfig>>(eventName: TEventName, listener: Fn): boolean;
/**
* Remove a listener from `ANY_EVENT_NAME`.
*/
offAny(listener: AnyRemitterListener<TConfig>): boolean;
/**
* Remove all listeners.
*/
clear<TEventName extends AllRemitterEventNames<TConfig>>(eventName?: TEventName): void;
/**
* 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;
/**
* @deprecated Use `has` instead.

@@ -71,8 +83,16 @@ * Returns the number of listeners for the 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.
* Remove all listeners and all remit listeners.
*/
has<TEventName extends AllRemitterEventNames<TConfig>>(eventName?: TEventName): boolean;
dispose(): void;
}
interface Remitter<TConfig = any> extends EventReceiver<TConfig> {
/**
* Emit an event to `eventName` listeners.
*/
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;
/**
* Start a side effect when the eventName has a first listener.

@@ -87,17 +107,34 @@ * Dispose the side effect when the eventName has no listeners.

*/
protected remit<TEventName extends AllRemitterEventNames<TConfig>>(eventName: TEventName, start: (remitter: Remitter<TConfig>) => RemitterDisposer): RemitterDisposer;
remit<TEventName extends AllRemitterEventNames<TConfig>>(eventName: TEventName, start: (remitter: Remitter<TConfig>) => RemitterDisposer): RemitterDisposer;
}
declare class Remitter<TConfig = any> implements Remitter<TConfig> {
#private;
readonly ANY_EVENT: ANY_EVENT;
emit<TEventName extends RemitterDatalessEventName<TConfig>>(eventName: TEventName): void;
emit<TEventName extends RemitterEventNames<TConfig>>(eventName: TEventName, eventData: TConfig[TEventName]): void;
on(eventName: typeof ANY_EVENT, listener: AnyRemitterListener<TConfig>): RemitterDisposer;
on<TEventName extends RemitterEventNames<TConfig>>(eventName: TEventName, listener: RemitterListener<TConfig, TEventName>): RemitterDisposer;
onAny(listener: AnyRemitterListener<TConfig>): RemitterDisposer;
once(eventName: typeof ANY_EVENT, listener: AnyRemitterListener<TConfig>): RemitterDisposer;
once<TEventName extends RemitterEventNames<TConfig>>(eventName: TEventName, listener: RemitterListener<TConfig, TEventName>): RemitterDisposer;
onceAny(listener: AnyRemitterListener<TConfig>): RemitterDisposer;
off<TEventName extends AllRemitterEventNames<TConfig>>(eventName: TEventName, listener: Fn): boolean;
offAny(listener: AnyRemitterListener<TConfig>): boolean;
clear<TEventName extends AllRemitterEventNames<TConfig>>(eventName?: TEventName): void;
has<TEventName extends AllRemitterEventNames<TConfig>>(eventName?: TEventName): boolean;
/**
* Dispose all listeners.
* @deprecated Use `has` instead.
*/
count<TEventName extends AllRemitterEventNames<TConfig>>(eventName?: TEventName): number;
dispose(): void;
}
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;
}
/**
* @deprecated Use `EventReceiver` instead.
*/
type ReadonlyRemitter<TConfig = any> = EventReceiver<TConfig>;
/**
* @deprecated Use `Remitter` instead.
*/
declare const ReadonlyRemitter: typeof Remitter;
export { ANY_EVENT, AllRemitterEventNames, AnyEventData, AnyRemitterListener, ReadonlyRemitter, Remitter, RemitterConfig, RemitterDatalessEventName, RemitterDisposer, RemitterEventNames, RemitterListener };
export { ANY_EVENT, AllRemitterEventNames, AnyEventData, AnyRemitterListener, EventReceiver, ReadonlyRemitter, Remitter, RemitterConfig, RemitterDatalessEventName, RemitterDisposer, RemitterEventNames, RemitterListener };

@@ -86,6 +86,3 @@ 'use strict';

// src/remitter.ts
var ReadonlyRemitter = class {
/**
* An event name to listen to all events or to remit on any event listener.
*/
var Remitter = class {
ANY_EVENT = ANY_EVENT;

@@ -126,2 +123,5 @@ #listeners = /* @__PURE__ */ new Map();

}
onAny(listener) {
return this.on(ANY_EVENT, listener);
}
once(eventName, listener) {

@@ -137,5 +137,5 @@ const off = abortable(() => this.off(eventName, onceListener));

}
/**
* Remove a listener from the eventName.
*/
onceAny(listener) {
return this.once(ANY_EVENT, listener);
}
off(eventName, listener) {

@@ -159,2 +159,5 @@ const listeners = this.#listeners.get(eventName);

}
offAny(listener) {
return this.off(ANY_EVENT, listener);
}
clear(eventName) {

@@ -170,7 +173,16 @@ if (eventName) {

}
has(eventName) {
if (eventName) {
return this.#listeners.get(eventName)?.size > 0;
} else {
for (const listeners of this.#listeners.values()) {
if (listeners.size > 0) {
return true;
}
}
return false;
}
}
/**
* @deprecated Use `has` instead.
* Returns the number of listeners for the eventName.
* @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.
*/

@@ -188,29 +200,2 @@ 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.#listeners.get(eventName)?.size > 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.
* Dispose the side effect when the eventName has no listeners.
* For example tap into other events.
*
* remit `ANY_EVENT` will be started when any event is listened.
*
* @param eventName
* @param start A function that is called when listener count if `eventName` grows from 0 to 1. Returns a disposer when listener count if `eventName` drops from 1 to 0.
*/
remit(eventName, start) {

@@ -232,5 +217,2 @@ const relayListener = {

}
/**
* Dispose all listeners.
*/
dispose() {

@@ -241,9 +223,3 @@ this.clear();

};
var Remitter = class extends ReadonlyRemitter {
constructor() {
super();
}
emit = super.emit;
remit = super.remit;
};
var ReadonlyRemitter = Remitter;

@@ -250,0 +226,0 @@ exports.ANY_EVENT = ANY_EVENT;

{
"name": "remitter",
"version": "0.3.4",
"version": "0.3.5",
"private": false,

@@ -5,0 +5,0 @@ "description": "A TypeScript friendly event emitter with easy re-emitting events.",

@@ -75,3 +75,3 @@ # remitter

remitter.on(remitter.ANY_EVENT, ({ event, data }) => {
remitter.onAny(({ event, data }) => {
console.log(event, data);

@@ -78,0 +78,0 @@ });

@@ -12,2 +12,2 @@ export type {

export { ANY_EVENT } from "./constants";
export { Remitter, ReadonlyRemitter } from "./remitter";
export { Remitter, ReadonlyRemitter, type EventReceiver } from "./remitter";
import type { AllRemitterEventNames, RemitterDisposer } from "./interface";
import type { ReadonlyRemitter, Remitter } from "./remitter";
import type { Remitter } from "./remitter";
import { ANY_EVENT } from "./constants";

@@ -52,3 +52,3 @@ import { noop, tryCall } from "./utils";

listeners: Set<RelayListener>,
remitter: ReadonlyRemitter
remitter: Remitter
) => {

@@ -55,0 +55,0 @@ for (const listener of listeners) {

@@ -22,6 +22,125 @@ import type {

export class ReadonlyRemitter<TConfig = any> {
export interface EventReceiver<TConfig = any> {
/**
* An event name to listen to all events or to remit on any event listener.
*/
readonly ANY_EVENT: ANY_EVENT;
/**
* Add an `ANY_EVENT_NAME` listener to receive all events.
*/
on(
eventName: typeof ANY_EVENT,
listener: AnyRemitterListener<TConfig>
): RemitterDisposer;
/**
* Add a listener to the eventName.
*/
on<TEventName extends RemitterEventNames<TConfig>>(
eventName: TEventName,
listener: RemitterListener<TConfig, TEventName>
): RemitterDisposer;
/**
* Add an `ANY_EVENT_NAME` listener to receive all events.
*/
onAny(listener: AnyRemitterListener<TConfig>): RemitterDisposer;
/**
* Add a one-time listener to `ANY_EVENT_NAME` to receive all events..
*/
once(
eventName: typeof ANY_EVENT,
listener: AnyRemitterListener<TConfig>
): RemitterDisposer;
/**
* Add a one-time listener to the eventName.
*/
once<TEventName extends RemitterEventNames<TConfig>>(
eventName: TEventName,
listener: RemitterListener<TConfig, TEventName>
): RemitterDisposer;
/**
* Add a one-time listener to `ANY_EVENT_NAME` to receive all events..
*/
onceAny(listener: AnyRemitterListener<TConfig>): RemitterDisposer;
/**
* Remove a listener from the eventName.
*/
off<TEventName extends AllRemitterEventNames<TConfig>>(
eventName: TEventName,
listener: Fn
): boolean;
/**
* Remove a listener from `ANY_EVENT_NAME`.
*/
offAny(listener: AnyRemitterListener<TConfig>): boolean;
/**
* Remove all listeners.
*/
clear<TEventName extends AllRemitterEventNames<TConfig>>(
eventName?: TEventName
): void;
/**
* 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;
/**
* @deprecated Use `has` instead.
* Returns the number of listeners for the eventName.
* @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;
/**
* Remove all listeners and all remit listeners.
*/
dispose(): void;
}
export interface Remitter<TConfig = any> extends EventReceiver<TConfig> {
/**
* Emit an event to `eventName` listeners.
*/
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;
/**
* 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.
*
* remit `ANY_EVENT` will be started when any event is listened.
*
* @param eventName
* @param start A function that is called when listener count if `eventName` grows from 0 to 1. Returns a disposer when listener count if `eventName` drops from 1 to 0.
*/
remit<TEventName extends AllRemitterEventNames<TConfig>>(
eventName: TEventName,
start: (remitter: Remitter<TConfig>) => RemitterDisposer
): RemitterDisposer;
}
export class Remitter<TConfig = any> implements Remitter<TConfig> {
public readonly ANY_EVENT: ANY_EVENT = ANY_EVENT;

@@ -38,16 +157,10 @@

/**
* Emit an event to `eventName` listeners.
*/
protected emit<TEventName extends RemitterDatalessEventName<TConfig>>(
public emit<TEventName extends RemitterDatalessEventName<TConfig>>(
eventName: TEventName
): void;
/**
* Emit an event with payload to `eventName` listeners.
*/
protected emit<TEventName extends RemitterEventNames<TConfig>>(
public emit<TEventName extends RemitterEventNames<TConfig>>(
eventName: TEventName,
eventData: TConfig[TEventName]
): void;
protected emit<TEventName extends RemitterEventNames<TConfig>>(
public emit<TEventName extends RemitterEventNames<TConfig>>(
event: TEventName,

@@ -63,3 +176,3 @@ data?: TConfig[TEventName]

if (event !== ANY_EVENT && this.has(ANY_EVENT)) {
(this as ReadonlyRemitter<RemitterConfig<TConfig>>).emit(ANY_EVENT, {
(this as Remitter<RemitterConfig<TConfig>>).emit(ANY_EVENT, {
event,

@@ -71,5 +184,2 @@ data,

/**
* Add an `ANY_EVENT_NAME` listener to receive all events.
*/
public on(

@@ -79,5 +189,2 @@ eventName: typeof ANY_EVENT,

): RemitterDisposer;
/**
* Add a listener to the eventName.
*/
public on<TEventName extends RemitterEventNames<TConfig>>(

@@ -110,5 +217,6 @@ eventName: TEventName,

/**
* Add a one-time listener to `ANY_EVENT_NAME` to receive all events..
*/
public onAny(listener: AnyRemitterListener<TConfig>): RemitterDisposer {
return this.on(ANY_EVENT, listener);
}
public once(

@@ -118,5 +226,2 @@ eventName: typeof ANY_EVENT,

): RemitterDisposer;
/**
* Add a one-time listener to the eventName.
*/
public once<TEventName extends RemitterEventNames<TConfig>>(

@@ -142,5 +247,6 @@ eventName: TEventName,

/**
* Remove a listener from the eventName.
*/
public onceAny(listener: AnyRemitterListener<TConfig>): RemitterDisposer {
return this.once(ANY_EVENT, listener);
}
public off<TEventName extends AllRemitterEventNames<TConfig>>(

@@ -168,2 +274,6 @@ eventName: TEventName,

public offAny(listener: AnyRemitterListener<TConfig>): boolean {
return this.off(ANY_EVENT, listener);
}
public clear<TEventName extends AllRemitterEventNames<TConfig>>(

@@ -182,19 +292,14 @@ eventName?: TEventName

/**
* @deprecated Use `has` instead.
* Returns the number of listeners for the eventName.
* @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.
*/
public count<TEventName extends AllRemitterEventNames<TConfig>>(
public has<TEventName extends AllRemitterEventNames<TConfig>>(
eventName?: TEventName
): number {
): boolean {
if (eventName) {
return this.#listeners.get(eventName)?.size || 0;
return (this.#listeners.get(eventName)?.size as number) > 0;
} else {
let count = 0;
for (const listeners of this.#listeners.values()) {
count += listeners.size;
if (listeners.size > 0) {
return true;
}
}
return count;
return false;
}

@@ -204,32 +309,19 @@ }

/**
* 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.
* @deprecated Use `has` instead.
*/
public has<TEventName extends AllRemitterEventNames<TConfig>>(
public count<TEventName extends AllRemitterEventNames<TConfig>>(
eventName?: TEventName
): boolean {
): number {
if (eventName) {
return (this.#listeners.get(eventName)?.size as number) > 0;
return this.#listeners.get(eventName)?.size || 0;
} else {
let count = 0;
for (const listeners of this.#listeners.values()) {
if (listeners.size > 0) {
return true;
}
count += listeners.size;
}
return false;
return count;
}
}
/**
* 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.
*
* remit `ANY_EVENT` will be started when any event is listened.
*
* @param eventName
* @param start A function that is called when listener count if `eventName` grows from 0 to 1. Returns a disposer when listener count if `eventName` drops from 1 to 0.
*/
protected remit<TEventName extends AllRemitterEventNames<TConfig>>(
public remit<TEventName extends AllRemitterEventNames<TConfig>>(
eventName: TEventName,

@@ -258,5 +350,2 @@ start: (remitter: Remitter<TConfig>) => RemitterDisposer

/**
* Dispose all listeners.
*/
public dispose(): void {

@@ -268,8 +357,9 @@ this.clear();

export class Remitter<TConfig = any> extends ReadonlyRemitter<TConfig> {
public constructor() {
super();
}
public override emit = super.emit;
public override remit = super.remit;
}
/**
* @deprecated Use `EventReceiver` instead.
*/
export type ReadonlyRemitter<TConfig = any> = EventReceiver<TConfig>;
/**
* @deprecated Use `Remitter` instead.
*/
export const ReadonlyRemitter = Remitter;

Sorry, the diff of this file is not supported yet