1.4.8 • Published 9 months ago

@carry0987/event-emitter v1.4.8

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

EventEmitter-JS

NPM CI
EventEmitter is a TypeScript library that provides a simple yet powerful event-handling mechanism. It allows you to define and manage events in your application, supporting standard event operations such as on, off, emit, once, and more.

Features

  • Lightweight and easy to use
  • Type-safe event handling
  • Support for one-time event listeners with once
  • Flexible event management
  • Support for both synchronous and asynchronous event listeners

Installation

To install the EventEmitter library, use the following command:

npm i @carry0987/event-emitter -D

Usage

Importing the Library

First, import the EventEmitter class into your TypeScript file:

import { EventEmitter } from '@carry0987/event-emitter';

Defining Event Types

Define your event types for type safety. For example:

interface MyEvents {
    greet: [string];
    farewell: [string];
}

Creating an EventEmitter Instance

Create an instance of EventEmitter with your event types:

const emitter = new EventEmitter<MyEvents>();

Adding Event Listeners

Use the on method to add event listeners:

emitter.on('greet', (message) => {
    console.log(message);
});

Emitting Events

Emit events using the emit method:

emitter.emit('greet', 'Hello, world!');

Removing Event Listeners

Remove event listeners with the off method:

const greetListener = (message: string) => {
    console.log(message);
};

emitter.on('greet', greetListener);
emitter.off('greet', greetListener);

One-time Event Listeners

Use the once method to add a listener that will be called only once:

emitter.once('farewell', (message) => {
    console.log(message);
});

emitter.emit('farewell', 'Goodbye, world!'); // Listener will be called
emitter.emit('farewell', 'Goodbye again!');  // Listener will not be called

Using Asynchronous Event Listeners

Add asynchronous event listeners using the on or once method:

emitter.on('greet', async (message) => {
    await new Promise(resolve => setTimeout(resolve, 1000));
    console.log(`Async Listener: ${message}`);
});

emitter.emit('greet', 'Hello, async world!').then(() => {
    console.log('All async listeners have been called.');
});

API

on(event: EventName, listener: (...args: any[]) => void | Promise<void>): EventEmitter

Registers an event listener for the specified event.

off(event: EventName, listener: (...args: any[]) => void | Promise<void>): EventEmitter

Removes the specified event listener.

emit(event: EventName, ...args: any[]): Promise<boolean>

Emits the specified event, calling all registered listeners with the provided arguments. Returns a promise that resolves to true if there were listeners, and false otherwise.

once(event: EventName, listener: (...args: any[]) => void | Promise<void>): EventEmitter

Registers a one-time event listener for the specified event. The listener will be called at most once after being added.

listeners(): { [event: string]: ((...args: any[]) => void | Promise<void>)[] }

Returns an object containing all registered event listeners.

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

License

This project is licensed under the MIT License. See the LICENSE file for details.

1.4.8

9 months ago

1.4.7

10 months ago

1.4.6

10 months ago

1.4.5

10 months ago

1.4.4

11 months ago

1.4.3

1 year ago

1.4.2

1 year ago

1.4.1

1 year ago

1.4.0

1 year ago

1.3.0

1 year ago

1.2.1

1 year ago

1.2.0

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.0

1 year ago