UNPKG

@cch137/emitter

Version:

`@cch137/emitter` is a versatile event emitter package designed to work seamlessly in both browser and Node.js environments. It provides a simple yet powerful interface for managing event-driven architecture in your applications.

71 lines (49 loc) 1.78 kB
# @cch137/emitter ## Overview `@cch137/emitter` is a versatile event emitter package designed to work seamlessly in both browser and Node.js environments. It provides a simple yet powerful interface for managing event-driven architecture in your applications. ## Features - **Cross-Platform Compatibility**: Works in both browser and Node.js environments. - **Flexible Event Management**: Easily manage listeners for different event types. - **One-Time Event Listeners**: Support for listeners that are automatically removed after their first invocation. - **Event Emission**: Emit events with any number of arguments. - **Listener Removal**: Remove specific listeners or clear all listeners for an event. ## Usage ### Creating an Emitter ```typescript import Emitter from "@cch137/emitter"; type MyEvents = { event1: [string, number]; event2: [boolean]; }; const emitter = new Emitter<MyEvents>(); ``` ### Adding Listeners #### Regular Listeners ```typescript emitter.on("event1", (arg1, arg2) => { console.log(`event1 received with args: ${arg1}, ${arg2}`); }); ``` #### One-Time Listeners ```typescript emitter.once("event2", (arg1) => { console.log(`event2 received with arg: ${arg1}`); }); ``` ### Emitting Events ```typescript emitter.emit("event1", "hello", 42); // Logs: event1 received with args: hello, 42 emitter.emit("event2", true); // Logs: event2 received with arg: true ``` ### Removing Listeners ```typescript const listener = (arg1, arg2) => { console.log(`event1 received with args: ${arg1}, ${arg2}`); }; emitter.on("event1", listener); emitter.off("event1", listener); ``` ### Clearing All Listeners for an Event ```typescript emitter.clear("event1"); ```