6.0.3 • Published 9 months ago

typed-emitters v6.0.3

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

typed-emitters | Simple, Typed, Universal, Lightweight, Dependency-free event emitters

Install

npm install typed-emitters

Single-event emitter

Create emitter

import { createTypedEmitter } from "typed-emitters";
const emitter =
    createTypedEmitter<
        [string, number] // Multiple args are supported
    >();

// Share the public interface
export const event = this.emitter.source;
emitter.emit("Test string", 1); // Type checking

Listen to events

// The source object allows listening to events but not emitting them

// The type of args is [string, number]
event.addListener((...args) => {
    console.log(args);
});

Multi-event emitter

Create emitter

import { createTypedMultiEmitter } from "typed-emitters";
const emitter =
    createTypedMultiEmitter<{
        'type1': [number],
        'type2' [string, number]
    }>();

// Share the public interface
export const events = this.emitter.source;
emitter.emit("type1", 1); // Type checking
emitter.emit("type2", "Test string", 1); // Type checking

Listen to events

// The source object allows listening to events but not emitting them

// The type of value is number
events.addListener("type1", (value) => {
    console.log(value);
});

// The type of args is [string, number]
events.addListener("type2", (...args) => {
    console.log(args);
});

Unsubscribing

// Option 1
event.removeListener(yourListener);

// Option 2
const dispose = event.addListener((...args) => {
    console.log(args);
});
dispose();

Other

Check if an emitter has any listeners

emitter.checkForListeners();
emitter.checkForListeners("type1");

Removing all listeners

emitter.removeAllListeners();
emitter.removeAllListeners("type1");

Exported types

  • TypedEventEmitter<Args>
  • TypedEventSource<Args>
  • TypedMultiEventEmitter<ArgsByEventName>
  • TypedMultiEventSource<ArgsByEventName>
6.0.1

9 months ago

6.0.0

9 months ago

6.0.3

9 months ago

6.0.2

9 months ago

5.0.0

2 years ago

4.1.0

2 years ago

4.0.0

2 years ago

4.1.1

2 years ago

3.0.5

2 years ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.7

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago