@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
Markdown
# @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");
```