Skip to content

Documentation / @cashconnect-js/core / primitives/event-emitter

EventMap

ts
type EventMap = Record<string, unknown>;

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:14

A record type that maps event names (strings) to their payload types. Used as a constraint for the EventEmitter's generic type parameter.

Example

typescript
interface MyEvents extends EventMap {
  'user-login': { userId: string; timestamp: number };
  'data-updated': { data: any[] };
  'error': { message: string; code: number };
}

OffCallback()

ts
type OffCallback = () => void;

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:52

A callback function returned by event registration methods that can be called to unregister the listener.

Returns

void

Example

typescript
const off = emitter.on('test', handler);
off(); // Unregisters the handler

EventEmitter

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:79

A type-safe event emitter that supports debouncing, one-time listeners, and async event waiting.

Example

typescript
interface AppEvents extends EventMap {
  'user-login': { userId: string };
  'data-change': { data: any[] };
  'error': { message: string };
}

const emitter = new EventEmitter<AppEvents>();

// Type-safe event registration
emitter.on('user-login', ({ userId }) => {
  console.log(`User ${userId} logged in`);
});

// Emit events with proper typing
emitter.emit('user-login', { userId: '123' });

Type Parameters

Type ParameterDescription
T extends EventMapAn EventMap that defines the available events and their payload types

Constructors

Constructor

ts
new EventEmitter<T>(): EventEmitter<T>;
Returns

EventEmitter<T>

Methods

on()

ts
on<K>(
   type, 
   listener, 
   debounceMilliseconds?): OffCallback;

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:102

Registers a listener for the specified event type.

Type Parameters
Type ParameterDescription
K extends string | number | symbolThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to listen for
listenerListener<T[K]>The function to call when the event is emitted
debounceMilliseconds?numberOptional debounce time in milliseconds
Returns

OffCallback

A callback function that can be used to unregister this listener

Example
typescript
const off = emitter.on('data-change', (data) => {
  console.log('Data updated:', data);
}, 300); // Debounce for 300ms

// Later, unregister the listener
off();

once()

ts
once<K>(
   type, 
   listener, 
   debounceMilliseconds?): OffCallback;

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:145

Registers a one-time listener for the specified event type. The listener will be automatically removed after being called once.

Type Parameters
Type ParameterDescription
K extends string | number | symbolThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to listen for
listenerListener<T[K]>The function to call when the event is emitted
debounceMilliseconds?numberOptional debounce time in milliseconds
Returns

OffCallback

A callback function that can be used to unregister this listener before it fires

Example
typescript
emitter.once('user-login', ({ userId }) => {
  console.log(`Welcome ${userId}! This will only show once.`);
});

off()

ts
off<K>(type, listener): void;

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:191

Removes a specific listener for the given event type.

Type Parameters
Type ParameterDescription
K extends string | number | symbolThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to remove the listener from
listenerListener<T[K]>The listener function to remove
Returns

void

Example
typescript
const handler = (data) => console.log(data);
emitter.on('test', handler);
emitter.off('test', handler); // Removes the listener

emit()

ts
emit<K>(type, payload): boolean;

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:226

Emits an event of the specified type with the given payload. All registered listeners for this event type will be called.

Type Parameters
Type ParameterDescription
K extends string | number | symbolThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to emit
payloadT[K]The data to pass to all listeners
Returns

boolean

true if there were listeners for this event, false otherwise

Example
typescript
const hasListeners = emitter.emit('user-login', {
  userId: '123',
  timestamp: Date.now()
});

if (!hasListeners) {
  console.log('No one was listening for user-login events');
}

removeAllListeners()

ts
removeAllListeners(): void;

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:247

Removes all listeners for all events. This effectively resets the EventEmitter to its initial state.

Returns

void

Example
typescript
emitter.removeAllListeners();
// All previously registered listeners are now gone

waitFor()

ts
waitFor<K>(
   type, 
   predicate, 
   timeoutMs?): Promise<T[K]>;

Defined in: cashconnect-js/packages/core/src/primitives/event-emitter.ts:276

Returns a Promise that resolves when an event of the specified type is emitted and matches the given predicate.

Type Parameters
Type ParameterDescription
K extends string | number | symbolThe event type key
Parameters
ParameterTypeDescription
typeKThe event type to wait for
predicate(payload) => booleanA function that determines if the event payload matches what we're waiting for
timeoutMs?numberOptional timeout in milliseconds. If specified, the promise will reject after this time
Returns

Promise<T[K]>

A Promise that resolves with the event payload when the condition is met

Throws

If the timeout is reached before a matching event occurs

Example
typescript
try {
  const loginData = await emitter.waitFor(
    'user-login',
    ({ userId }) => userId === 'admin',
    5000 // Wait up to 5 seconds
  );
  console.log('Admin logged in:', loginData);
} catch (error) {
  console.log('Timeout: Admin never logged in');
}