@xylabs/events

Base functionality used throughout XY Labs TypeScript/JavaScript libraries
Install
Using npm:
npm install {{name}}
Using yarn:
yarn add {{name}}
Using pnpm:
pnpm add {{name}}
Using bun:
bun add {{name}}
License
See the LICENSE file for license rights and limitations (LGPL-3.0-only).
Reference
packages
events
### .temp-typedoc
### classes
### <a id="BaseEmitter"></a>BaseEmitter
@xylabs/events
Base class that combines the Base utility class with typed event emission capabilities.
Delegates all event operations to an internal Events instance.
Extends
Type Parameters
TParams
TParams extends BaseParams = BaseParams
TEventData
TEventData extends EventData = EventData
Implements
Constructors
Constructor
new BaseEmitter<TParams, TEventData>(params): BaseEmitter<TParams, TEventData>;
Parameters
params
BaseParams<TParams>
Returns
BaseEmitter<TParams, TEventData>
Overrides
Base<TParams>.constructor
Properties
defaultLogger?
static optional defaultLogger?: Logger;
Inherited from
Base.defaultLogger
globalInstances
readonly static globalInstances: Record<BaseClassName, WeakRef<Base>[]>;
Inherited from
Base.globalInstances
globalInstancesCountHistory
readonly static globalInstancesCountHistory: Record<BaseClassName, number[]>;
Inherited from
Base.globalInstancesCountHistory
eventData
eventData: TEventData;
Type-level reference to the event data shape for external type queries.
Implementation of
EventEmitter.eventData
Accessors
historyInterval
Get Signature
get static historyInterval(): number;
Returns
number
Set Signature
set static historyInterval(value): void;
Parameters
value
number
Returns
void
Inherited from
Base.historyInterval
historyTime
Get Signature
get static historyTime(): number;
Returns
number
Set Signature
set static historyTime(value): void;
Parameters
value
number
Returns
void
Inherited from
Base.historyTime
maxGcFrequency
Get Signature
get static maxGcFrequency(): number;
Returns
number
Set Signature
set static maxGcFrequency(value): void;
Parameters
value
number
Returns
void
Inherited from
Base.maxGcFrequency
maxHistoryDepth
Get Signature
get static maxHistoryDepth(): number;
Returns
number
Inherited from
Base.maxHistoryDepth
logger
Get Signature
get logger(): Logger | undefined;
Returns
Logger | undefined
Inherited from
Base.logger
meter
Get Signature
get meter(): Meter | undefined;
Returns
Meter | undefined
Inherited from
Base.meter
params
Get Signature
get params(): BaseParams<TParams>;
Returns
BaseParams<TParams>
Inherited from
Base.params
tracer
Get Signature
get tracer(): Tracer | undefined;
Returns
Tracer | undefined
Inherited from
Base.tracer
Methods
gc()
Call Signature
static gc(force?): void;
Parameters
force?
boolean
Returns
void
Inherited from
Base.gc
Call Signature
static gc(className): void;
Parameters
className
BaseClassName
Returns
void
Inherited from
Base.gc
instanceCount()
static instanceCount(className): number;
Parameters
className
BaseClassName
Returns
number
Inherited from
Base.instanceCount
instanceCounts()
static instanceCounts(): Record<BaseClassName, number>;
Returns
Record<BaseClassName, number>
Inherited from
Base.instanceCounts
startHistory()
static startHistory(): void;
Returns
void
Inherited from
Base.startHistory
stopHistory()
static stopHistory(): void;
Returns
void
Inherited from
Base.stopHistory
clearListeners()
clearListeners(eventNames): BaseEmitter<TParams, TEventData>;
Removes all listeners for the specified event name(s).
Parameters
eventNames
keyof TEventData | keyof TEventData[]
One or more event names to clear listeners for.
Returns
BaseEmitter<TParams, TEventData>
This instance for chaining.
Implementation of
EventEmitter.clearListeners
emit()
emit<TEventName, TEventArgs>(eventName, eventArgs): Promise<void>;
Emits an event, invoking all registered listeners concurrently.
Type Parameters
TEventName
TEventName extends string | number | symbol = keyof TEventData
TEventArgs
TEventArgs extends EventArgs = TEventData[TEventName]
Parameters
eventName
TEventName
The event to emit.
eventArgs
TEventArgs
The data to pass to listeners.
Returns
Promise<void>
Implementation of
EventEmitter.emit
emitSerial()
emitSerial<TEventName, TEventArgs>(eventName, eventArgs): Promise<void>;
Emits an event, invoking all registered listeners sequentially in order.
Type Parameters
TEventName
TEventName extends string | number | symbol = keyof TEventData
TEventArgs
TEventArgs extends EventArgs = TEventData[TEventName]
Parameters
eventName
TEventName
The event to emit.
eventArgs
TEventArgs
The data to pass to listeners.
Returns
Promise<void>
Implementation of
EventEmitter.emitSerial
listenerCount()
listenerCount(eventNames): number;
Returns the total number of listeners registered for the specified event name(s).
Parameters
eventNames
keyof TEventData | keyof TEventData[]
One or more event names to count listeners for.
Returns
number
The total listener count.
Implementation of
EventEmitter.listenerCount
off()
off<TEventName>(eventNames, listener): void;
Removes a specific listener from the specified event name(s).
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventNames
TEventName | TEventName[]
One or more event names to unsubscribe from.
listener
EventListener<TEventData[TEventName]>
The listener to remove.
Returns
void
Implementation of
EventEmitter.off
offAny()
offAny(listener): void;
Removes a wildcard listener that was receiving all events.
Parameters
listener
EventAnyListener
The wildcard listener to remove.
Returns
void
Implementation of
EventEmitter.offAny
on()
on<TEventName>(eventNames, listener): (...args) => void;
Subscribes a listener to the specified event name(s).
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventNames
TEventName | TEventName[]
One or more event names to listen for.
listener
EventListener<TEventData[TEventName]>
The callback to invoke when the event fires.
Returns
An unsubscribe function.
(...args) => void
Implementation of
EventEmitter.on
onAny()
onAny(listener): (...args) => void;
Subscribes a wildcard listener that receives all events.
Parameters
listener
EventAnyListener
The callback to invoke for any event.
Returns
An unsubscribe function.
(...args) => void
Implementation of
EventEmitter.onAny
once()
once<TEventName>(eventName, listener): (...args) => void;
Subscribes a listener that will be invoked only once for the specified event, then automatically removed.
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventName
TEventName
The event to listen for.
listener
EventListener<TEventData[TEventName]>
The callback to invoke once.
Returns
An unsubscribe function.
(...args) => void
Implementation of
EventEmitter.once
### <a id="Events"></a>Events
@xylabs/events
Core typed event emitter implementation supporting named events, wildcard listeners,
serial and concurrent emission, listener filtering, and debug logging.
Extends
Type Parameters
TEventData
TEventData extends EventData = EventData
Implements
Constructors
Constructor
new Events<TEventData>(params?): Events<TEventData>;
Parameters
params?
EventsParams = {}
Returns
Events<TEventData>
Overrides
Base<EventsParams>.constructor
Properties
defaultLogger?
static optional defaultLogger?: Logger;
Inherited from
Base.defaultLogger
globalInstances
readonly static globalInstances: Record<BaseClassName, WeakRef<Base>[]>;
Inherited from
Base.globalInstances
globalInstancesCountHistory
readonly static globalInstancesCountHistory: Record<BaseClassName, number[]>;
Inherited from
Base.globalInstancesCountHistory
anyMap
protected static anyMap: WeakMap<object, Set<EventAnyListener>>;
eventsMap
protected static eventsMap: WeakMap<object, Map<PropertyKey, Set<EventListenerInfo<EventArgs>>>>;
eventData
eventData: TEventData;
Type-level reference to the event data shape for external type queries.
Implementation of
EventEmitter.eventData
Accessors
historyInterval
Get Signature
get static historyInterval(): number;
Returns
number
Set Signature
set static historyInterval(value): void;
Parameters
value
number
Returns
void
Inherited from
Base.historyInterval
historyTime
Get Signature
get static historyTime(): number;
Returns
number
Set Signature
set static historyTime(value): void;
Parameters
value
number
Returns
void
Inherited from
Base.historyTime
maxGcFrequency
Get Signature
get static maxGcFrequency(): number;
Returns
number
Set Signature
set static maxGcFrequency(value): void;
Parameters
value
number
Returns
void
Inherited from
Base.maxGcFrequency
maxHistoryDepth
Get Signature
get static maxHistoryDepth(): number;
Returns
number
Inherited from
Base.maxHistoryDepth
logger
Get Signature
get logger(): Logger | undefined;
Returns
Logger | undefined
Inherited from
Base.logger
meter
Get Signature
get meter(): Meter | undefined;
Returns
Meter | undefined
Inherited from
Base.meter
params
Get Signature
get params(): BaseParams<TParams>;
Returns
BaseParams<TParams>
Inherited from
Base.params
tracer
Get Signature
get tracer(): Tracer | undefined;
Returns
Tracer | undefined
Inherited from
Base.tracer
isDebugEnabled
Get Signature
get static isDebugEnabled(): boolean;
Whether debug mode is enabled globally or via the DEBUG environment variable.
Returns
boolean
Set Signature
set static isDebugEnabled(newValue): void;
Parameters
newValue
boolean
Returns
void
debug
Get Signature
get debug(): DebugOptions | undefined;
The debug configuration for this instance, if provided.
Returns
DebugOptions | undefined
Methods
gc()
Call Signature
static gc(force?): void;
Parameters
force?
boolean
Returns
void
Inherited from
Base.gc
Call Signature
static gc(className): void;
Parameters
className
BaseClassName
Returns
void
Inherited from
Base.gc
instanceCount()
static instanceCount(className): number;
Parameters
className
BaseClassName
Returns
number
Inherited from
Base.instanceCount
instanceCounts()
static instanceCounts(): Record<BaseClassName, number>;
Returns
Record<BaseClassName, number>
Inherited from
Base.instanceCounts
startHistory()
static startHistory(): void;
Returns
void
Inherited from
Base.startHistory
stopHistory()
static stopHistory(): void;
Returns
void
Inherited from
Base.stopHistory
clearListeners()
clearListeners(eventNames): void;
Removes all listeners for the specified event name(s).
Parameters
eventNames
keyof TEventData | keyof TEventData[]
One or more event names to clear listeners for.
Returns
void
Implementation of
EventEmitter.clearListeners
emit()
emit<TEventName>(eventName, eventArgs): Promise<void>;
Emits an event, invoking all registered listeners concurrently.
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventName
TEventName
The event to emit.
eventArgs
TEventData[TEventName]
The data to pass to listeners.
Returns
Promise<void>
Implementation of
EventEmitter.emit
emitMetaEvent()
emitMetaEvent<TEventName>(eventName, eventArgs): Promise<boolean | undefined>;
Emits an internal meta event (listenerAdded or listenerRemoved).
Type Parameters
TEventName
TEventName extends keyof MetaEventData<TEventData>
Parameters
eventName
TEventName
The meta event name.
eventArgs
MetaEventData<TEventData>[TEventName]
The meta event data containing listener and event information.
Returns
Promise<boolean | undefined>
True if the meta event was emitted successfully.
emitSerial()
emitSerial<TEventName>(eventName, eventArgs): Promise<void>;
Emits an event, invoking all registered listeners sequentially in order.
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventName
TEventName
The event to emit.
eventArgs
TEventData[TEventName]
The data to pass to listeners.
Returns
Promise<void>
Implementation of
EventEmitter.emitSerial
listenerCount()
listenerCount(eventNames?): number;
Returns the total number of listeners registered for the specified event name(s).
Parameters
eventNames?
keyof TEventData | keyof TEventData[]
One or more event names to count listeners for.
Returns
number
The total listener count.
Implementation of
EventEmitter.listenerCount
logIfDebugEnabled()
logIfDebugEnabled<TEventName>(
type,
eventName?,
eventArgs?): void;
Logs debug information if debug mode is enabled.
Type Parameters
TEventName
TEventName extends PropertyKey
Parameters
type
string
The type of operation being logged.
eventName?
TEventName
The event name, if applicable.
eventArgs?
EventArgs
The event data, if applicable.
Returns
void
off()
off<TEventName, TEventListener>(eventNames, listener): void;
Removes a specific listener from the specified event name(s).
Type Parameters
TEventName
TEventName extends string | number | symbol
TEventListener
TEventListener = EventListener<TEventData[TEventName]>
Parameters
eventNames
TEventName | TEventName[]
One or more event names to unsubscribe from.
listener
TEventListener
The listener to remove.
Returns
void
Implementation of
EventEmitter.off
offAny()
offAny(listener): void;
Removes a wildcard listener that was receiving all events.
Parameters
listener
EventAnyListener
The wildcard listener to remove.
Returns
void
Implementation of
EventEmitter.offAny
on()
on<TEventName>(
eventNames,
listener,
filter?): (...args) => void;
Subscribes a listener to the specified event name(s).
Type Parameters
TEventName
TEventName extends string | number | symbol = keyof TEventData
Parameters
eventNames
TEventName | TEventName[]
One or more event names to listen for.
listener
EventListener<TEventData[TEventName]>
The callback to invoke when the event fires.
filter?
TEventData[TEventName]
Optional filter to selectively invoke the listener based on event data.
Returns
An unsubscribe function.
(...args) => void
Implementation of
EventEmitter.on
onAny()
onAny(listener): (...args) => void;
Subscribes a wildcard listener that receives all events.
Parameters
listener
EventAnyListener
The callback to invoke for any event.
Returns
An unsubscribe function.
(...args) => void
Implementation of
EventEmitter.onAny
once()
once<TEventName>(eventName, listener): (...args) => void;
Subscribes a listener that will be invoked only once for the specified event, then automatically removed.
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventName
TEventName
The event to listen for.
listener
EventListener<TEventData[TEventName]>
The callback to invoke once.
Returns
An unsubscribe function.
(...args) => void
Implementation of
EventEmitter.once
### interfaces
### <a id="BaseEmitterParamsFields"></a>BaseEmitterParamsFields
@xylabs/events
Fields specific to BaseEmitter configuration parameters.
### <a id="DebugOptions"></a>DebugOptions
@xylabs/events
Configure debug options of an instance.
Properties
enabled?
optional enabled?: boolean;
logger?
optional logger?: DebugLogger;
name
readonly name: string;
### <a id="EventEmitter"></a>EventEmitter
@xylabs/events
Interface for a typed event emitter that supports subscribing, unsubscribing, and emitting events.
Type Parameters
T
T extends EventData
Properties
eventData
eventData: T;
Type-level reference to the event data shape for external type queries.
Methods
clearListeners()
clearListeners(eventNames): void;
Removes all listeners for the specified event name(s).
Parameters
eventNames
keyof T | keyof T[]
Returns
void
emit()
emit<TEventName>(eventName, eventArgs): Promise<void>;
Emits an event, invoking all registered listeners concurrently.
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventName
TEventName
eventArgs
T[TEventName]
Returns
Promise<void>
emitSerial()
emitSerial<TEventName>(eventName, eventArgs): Promise<void>;
Emits an event, invoking all registered listeners sequentially in order.
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventName
TEventName
eventArgs
T[TEventName]
Returns
Promise<void>
listenerCount()
listenerCount(eventNames): number;
Returns the total number of listeners registered for the specified event name(s).
Parameters
eventNames
keyof T | keyof T[]
Returns
number
off()
off<TEventName>(eventNames, listener): void;
Removes a specific listener from the specified event name(s).
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventNames
TEventName | TEventName[]
listener
EventListener<T[TEventName]>
Returns
void
offAny()
offAny(listener): void;
Removes a wildcard listener that was receiving all events.
Parameters
listener
| Promise<void>
| EventAnyListener
Returns
void
on()
on<TEventName>(eventNames, listener): EventUnsubscribeFunction;
Subscribes a listener to the specified event name(s) and returns an unsubscribe function.
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventNames
TEventName | TEventName[]
listener
EventListener<T[TEventName]>
Returns
EventUnsubscribeFunction
onAny()
onAny(listener): EventUnsubscribeFunction;
Subscribes a wildcard listener that receives all events and returns an unsubscribe function.
Parameters
listener
EventAnyListener
Returns
EventUnsubscribeFunction
once()
once<TEventName>(eventName, listener): EventUnsubscribeFunction;
Subscribes a listener that will be invoked only once for the specified event, then automatically removed.
Type Parameters
TEventName
TEventName extends string | number | symbol
Parameters
eventName
TEventName
listener
EventListener<T[TEventName]>
Returns
EventUnsubscribeFunction
### <a id="EventListenerInfo"></a>EventListenerInfo
@xylabs/events
Information about a registered event listener, including an optional filter for selective invocation.
Type Parameters
TEventArgs
TEventArgs extends EventArgs = EventArgs
Properties
filter?
optional filter?: TEventArgs;
listener
listener: EventListener<TEventArgs>;
### <a id="MetaEventData"></a>MetaEventData
@xylabs/events
Data shape for internal meta events that fire when listeners are added or removed.
Type Parameters
TEventData
TEventData extends EventData
Properties
listenerAdded
listenerAdded: object;
eventName?
optional eventName?: keyof TEventData;
listener
listener:
| EventListener<TEventData[keyof TEventData]>
| EventAnyListener<TEventData[keyof TEventData]>;
listenerRemoved
listenerRemoved: object;
eventName?
optional eventName?: keyof TEventData;
listener
listener:
| EventListener<TEventData[keyof TEventData]>
| EventAnyListener<TEventData[keyof TEventData]>;
### type-aliases
### <a id="BaseEmitterParams"></a>BaseEmitterParams
@xylabs/events
type BaseEmitterParams<T> = BaseParams<T & BaseEmitterParamsFields & T>;
Parameters type for configuring a BaseEmitter instance.
Type Parameters
T
T extends EmptyObject = EmptyObject
### <a id="DebugLogger"></a>DebugLogger
@xylabs/events
type DebugLogger = (type, debugName, eventName?, eventData?) => void;
Emittery can collect and log debug information.
To enable this feature set the DEBUG environment variable to emittery or *. Additionally, you can set the static isDebugEnabled variable to true
on the Emittery class, or myEmitter.debug.enabled on an instance of it for debugging a single instance.
See API for more information on how debugging works.
Parameters
type
string
debugName
string
eventName?
EventName
eventData?
EventArgs
Returns
void
### <a id="EventAnyListener"></a>EventAnyListener
@xylabs/events
type EventAnyListener<TEventArgs> = (eventName, eventData) => Promisable<void>;
A listener that receives all events regardless of name.
Type Parameters
TEventArgs
TEventArgs extends EventArgs = EventArgs
Parameters
eventName
EventName
The name of the emitted event.
eventData
TEventArgs
The data associated with the event.
Returns
Promisable<void>
### <a id="EventArgs"></a>EventArgs
@xylabs/events
type EventArgs = string | number | object;
The allowed types for event argument payloads.
### <a id="EventData"></a>EventData
@xylabs/events
type EventData = Record<EventName, EventArgs>;
A mapping of event names to their corresponding event argument types.
### <a id="EventListener"></a>EventListener
@xylabs/events
type EventListener<TEventArgs> = (eventData) => Promisable<void>;
A listener for a specific event type.
Type Parameters
TEventArgs
TEventArgs extends EventArgs = EventArgs
Parameters
eventData
TEventArgs
The data associated with the event.
Returns
Promisable<void>
### <a id="EventName"></a>EventName
@xylabs/events
type EventName = PropertyKey;
A valid event name, which can be any property key (string, number, or symbol).
### <a id="EventUnsubscribeFunction"></a>EventUnsubscribeFunction
@xylabs/events
type EventUnsubscribeFunction = () => void;
A function returned by event subscription methods that unsubscribes the listener when called.
Returns
void
### <a id="EventsParams"></a>EventsParams
@xylabs/events
type EventsParams = BaseParams<{
debug?: DebugOptions;
}>;
Parameters for constructing an Events instance, with optional debug configuration.