LogoPear Docs

bare-events

Event emitters for JavaScript

stable

bare-events — Event emitters for JavaScript.

Mirrors the Node.js events module.

npm i bare-events

Usage

const EventEmitter = require('bare-events')

const e = new EventEmitter()

e.on('hello', function (data) {
  console.log(data)
})

e.emit('hello', 'world')

API

Adding and removing listeners

addListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this

Source

Add fn as a listener for name, called on every subsequent emit. Returns this for chaining.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to listen for.
fnEventHandler<M[E], R>The listener function, called with the event's arguments on each emit.

addOnceListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this

Source

Add fn as a listener for name that is removed after it fires once. Returns this for chaining.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to listen for.
fnEventHandler<M[E], R>The listener function, called once with the event's arguments then removed.

prependListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this

Source

Like addListener, but adds fn to the beginning of the listener list instead of the end.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to listen for.
fnEventHandler<M[E], R>The listener function to add to the front of the listener list instead of the end.

Returns this — The emitter itself, for chaining, like addListener.

prependOnceListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this

Source

Like addOnceListener, but adds fn to the beginning of the listener list instead of the end.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to listen for.
fnEventHandler<M[E], R>The listener function to add to the front of the listener list, removed after it fires once.

Returns this — The emitter itself, for chaining, like addOnceListener.

removeListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this

Source

Remove one instance of fn from the listeners for name. Returns this for chaining.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to remove the listener from.
fnEventHandler<M[E], R>The listener function to remove.

removeAllListeners<E extends keyof M>(name?: E): this

Source

Remove all listeners, or only those for name if given. Returns this for chaining.

Parameters

ParameterTypeDefaultDescription
name?EIf given, remove listeners only for this event name; otherwise remove all listeners for every event.

on<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this

Source

Parameters

ParameterTypeDefaultDescription
nameEThe event name.
fnEventHandler<M[E], R>The listener function, called with the event's arguments on each emit.

Returns this — The emitter itself, for chaining — implemented identically to addListener.

once<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this

Source

Parameters

ParameterTypeDefaultDescription
nameEThe event name.
fnEventHandler<M[E], R>The listener function, called once with the event's arguments then removed.

Returns this — The emitter itself, for chaining — implemented identically to addOnceListener.

off<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this

Source

Alias for removeListener.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to remove the listener from.
fnEventHandler<M[E], R>The listener function to remove.

Returns this — The emitter itself, for chaining — implemented identically to removeListener.

Emitting

emit<E extends keyof M>(name: E, ...args: M[E]): boolean

Source

Synchronously call each listener registered for name, in registration order, with args. Returns true if there were listeners, false otherwise. Emitting 'error' with no 'error' listeners throws the error asynchronously instead of calling any listener.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to emit.
argsM[E]Arguments passed to each listener registered for name.

Inspecting listeners

listeners<E extends keyof M, R>(name: E): EventHandler<M[E], R>

Source

Return a copy of the listener array for name.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to return the listener array for.

rawListeners<E extends keyof M, R>(name: E): EventHandler<M[E], R>[]

Source

Return a copy of the listener array for name, including one-time wrapper listeners as registered.

Parameters

ParameterTypeDefaultDescription
nameEThe event name to return the raw listener array for.

eventNames(): (keyof M)[]

Source

Return an array of the event names that currently have listeners.

listenerCount<E extends keyof M>(name: E): number

Source

Return the number of listeners registered for name.

Parameters

ParameterTypeDefaultDescription
nameEThe event name.

getMaxListeners(): number

Source

Returns numberEventEmitter.defaultMaxListeners; bare-events does not track a per-instance limit separately.

setMaxListeners(n: number): void

Source

Parameters

ParameterTypeDefaultDescription
nnumberThe maximum number of listeners to allow.

Static utilities

EventEmitter.defaultMaxListeners: number

Source

The default max-listeners value used by getMaxListeners().

EventEmitter.forward

EventEmitter.forward<F extends EventMap, E extends keyof F, T extends Pick<F, E>>(from: EventEmitter<F>, to: EventEmitter<T>, names: E | E[], opts?: { emit?: (name: E, ...args: T[E]) => void }): void
Source

Forward events named in names from from to to, re-emitting them on to only while to has at least one listener for that event.

Parameters

ParameterTypeDefaultDescription
fromEventEmitter<F>The emitter to forward events from.
toEventEmitter<T>The emitter to forward events to.
namesE | E[]The event name, or array of event names, to forward.
opts?{ emit?: (name: E, ...args: T[E]) => void }Options; emit overrides how forwarded events are re-emitted on to (defaults to to.emit).

EventEmitter.getMaxListeners(emitter: EventEmitter): number

Source

Parameters

ParameterTypeDefaultDescription
emitterEventEmitterThe emitter to query.

Returns numberEventEmitter.defaultMaxListeners; bare-events does not track a per-instance limit separately.

EventEmitter.listenerCount

EventEmitter.listenerCount<M extends EventMap, E extends keyof M>(emitter: EventEmitter<M>, name: E): number
Source

Return the number of listeners registered for name.

Parameters

ParameterTypeDefaultDescription
emitterEventEmitter<M>The emitter to query.
nameEThe event name.

EventEmitter.on

EventEmitter.on<M extends EventMap, E extends keyof M>(emitter: EventEmitter<M>, name: E, opts?: { signal?: AbortSignal }): AsyncIterableIterator<M[E]>
Source

Parameters

ParameterTypeDefaultDescription
emitterEventEmitter<M>The emitter to iterate events from.
nameEThe event name.
opts?{ signal?: AbortSignal }Options; signal aborts the iteration, rejecting it with an EventEmitterError.

EventEmitter.once

EventEmitter.once<M extends EventMap, E extends keyof M>(emitter: EventEmitter<M>, name: E, opts?: { signal?: AbortSignal }): Promise<M[E]>
Source

Parameters

ParameterTypeDefaultDescription
emitterEventEmitter<M>The emitter to wait on.
nameEThe event name.
opts?{ signal?: AbortSignal }Options; signal aborts the wait, rejecting the promise with an EventEmitterError.

EventEmitter.setMaxListeners(n: number, ...emitters: EventEmitter[]): void

Source

Parameters

ParameterTypeDefaultDescription
nnumberThe maximum number of listeners to allow.
emittersEventEmitter[]The emitters to apply the new limit to; if omitted, sets the global default instead.

Errors

EventEmitterError.OPERATION_ABORTED(cause: Error, msg?: string): EventEmitterError

Source

Create an EventEmitterError wrapping cause, used when an AbortSignal aborts a pending events.on or events.once wait.

Parameters

ParameterTypeDefaultDescription
causeErrorThe abort reason wrapped by the error.
msg?stringAn optional custom message for the wrapping error.

EventEmitterError.UNHANDLED_ERROR(cause: Error, msg?: string): EventEmitterError

Source

Create an EventEmitterError wrapping cause, used when an 'error' event is emitted with no listeners attached.

Parameters

ParameterTypeDefaultDescription
causeErrorThe underlying error wrapped by the error.
msg?stringAn optional custom message for the wrapping error.

Types

EventMap

interface EventMap {
  [event: string | symbol]: unknown[]
}
Source

EventHandler

interface EventHandler<in A extends unknown[] = unknown[], out R = unknown> {
  (...args: A): R
}
Source

bare-events/global

Types

EventConstructor

type EventConstructor = typeof events.Event
Source

CustomEventConstructor

type CustomEventConstructor = typeof events.CustomEvent
Source

EventTargetConstructor

type EventTargetConstructor = typeof events.EventTarget
Source

bare-events/web

Event

new Event(type: string, options?: EventOptions)

Source

Parameters

ParameterTypeDefaultDescription
typestringThe event's type, exposed as event.type.
options?EventOptionsOptions controlling bubbles, cancelable, and composed.

bubbles: boolean

Source

cancelable: boolean

Source

composed: boolean

Source

currentTarget: EventTarget | null

Source

defaultPrevented: boolean

Source

isTrusted: boolean

Source

preventDefault(): void

Source

stopImmediatePropagation(): void

Source

stopPropagation(): void

Source

target: EventTarget | null

Source

type: string

Source

CustomEvent

new CustomEvent(type: string, options?: CustomEventOptions<T>)

Source

Parameters

ParameterTypeDefaultDescription
typestringThe event's type, exposed as event.type.
options?CustomEventOptions<T>Options controlling bubbles/cancelable/composed plus the detail value.

detail: T

Source

EventTarget

new EventTarget()

Source

addEventListener

addEventListener(type: string, callback: EventListener, options?: AddEventListenerOptions | boolean): void
Source

Parameters

ParameterTypeDefaultDescription
typestringThe event type to listen for.
callbackEventListenerThe listener function, or an object with a handleEvent method.
options?AddEventListenerOptions | booleanOptions, or a boolean shorthand for capture; once removes the listener after it fires, signal removes it when the given AbortSignal aborts.

dispatchEvent(event: Event): boolean

Source

Parameters

ParameterTypeDefaultDescription
eventEventThe event to dispatch to this target's listeners.

Returns booleanfalse if the event is cancelable and preventDefault() was called on it during dispatch, true otherwise.

removeEventListener

removeEventListener(type: string, callback: EventListener, options?: RemoveEventListenerOptions | boolean): void
Source

Parameters

ParameterTypeDefaultDescription
typestringThe event type to stop listening for.
callbackEventListenerThe listener to remove.
options?RemoveEventListenerOptions | booleanOptions, or a boolean shorthand for capture; must match the capture value passed to addEventListener.

Types

AbortSignal

interface AbortSignal extends EventTarget {}
Source

EventOptions

interface EventOptions {
  bubbles?: boolean
  cancelable?: boolean
  composed?: boolean
}
Source

CustomEventOptions

interface CustomEventOptions<T = any> extends EventOptions {
  detail?: T
}
Source

AddEventListenerOptions

interface AddEventListenerOptions {
  capture?: boolean
  passive?: boolean
  once?: boolean
  signal?: AbortSignal | null
}
Source

RemoveEventListenerOptions

interface RemoveEventListenerOptions {
  capture?: boolean
}
Source

EventListener

type EventListener = EventCallback | EventHandler
Source

EventCallback

interface EventCallback {
  (event: Event): void
}
Source

web.EventHandler

interface EventHandler {
  handleEvent(event: Event): void
}
Source

See also

On this page

Usage
API
Adding and removing listeners
addListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
addOnceListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
prependListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
prependOnceListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
removeListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
removeAllListeners<E extends keyof M>(name?: E): this
on<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
once<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
off<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
Emitting
emit<E extends keyof M>(name: E, ...args: M[E]): boolean
Inspecting listeners
listeners<E extends keyof M, R>(name: E): EventHandler<M[E], R>
rawListeners<E extends keyof M, R>(name: E): EventHandler<M[E], R>[]
eventNames(): (keyof M)[]
listenerCount<E extends keyof M>(name: E): number
getMaxListeners(): number
setMaxListeners(n: number): void
Static utilities
EventEmitter.defaultMaxListeners: number
EventEmitter.forward
EventEmitter.getMaxListeners(emitter: EventEmitter): number
EventEmitter.listenerCount
EventEmitter.on
EventEmitter.once
EventEmitter.setMaxListeners(n: number, ...emitters: EventEmitter[]): void
Errors
EventEmitterError.OPERATION_ABORTED(cause: Error, msg?: string): EventEmitterError
EventEmitterError.UNHANDLED_ERROR(cause: Error, msg?: string): EventEmitterError
Types
EventMap
EventHandler
bare-events/global
Types
EventConstructor
CustomEventConstructor
EventTargetConstructor
bare-events/web
Event
new Event(type: string, options?: EventOptions)
bubbles: boolean
cancelable: boolean
composed: boolean
currentTarget: EventTarget | null
defaultPrevented: boolean
isTrusted: boolean
preventDefault(): void
stopImmediatePropagation(): void
stopPropagation(): void
target: EventTarget | null
type: string
CustomEvent
new CustomEvent(type: string, options?: CustomEventOptions<T>)
detail: T
EventTarget
new EventTarget()
addEventListener
dispatchEvent(event: Event): boolean
removeEventListener
Types
AbortSignal
EventOptions
CustomEventOptions
AddEventListenerOptions
RemoveEventListenerOptions
EventListener
EventCallback
web.EventHandler
See also