@wasdadeel/emitter
v1.0.28
Published
A tiny, strongly-typed event emitter for TypeScript projects
Maintainers
Readme
@wasdadeel/emitter
A tiny, strongly-typed event emitter for TypeScript projects.
Built to be minimal, predictable, and dependency-free.
Installation
npm install @wasdadeel/emitter
# or
yarn add @wasdadeel/emitterUsage
import { createEventEmitter } from "@wasdadeel/emitter";
// define your event map
type Events = {
message: string;
count: number;
};
const emitter = createEventEmitter<Events>();
// subscribe
const off = emitter.on("message", (msg) => {
console.log("Got message:", msg);
});
// emit
emitter.emit("message", "Hello world!");
// unsubscribe
off();
// once
emitter.once("count", (n) => {
console.log("Count fired once:", n);
});
emitter.emit("count", 1);
emitter.emit("count", 2); // won't fireAPI
createEventEmitter<T>()
Creates a typed event emitter.
The returned emitter has the following methods:
on(event, listener): () => voidSubscribe to an event. Returns an unsubscribe function.
once(event, listener): () => voidSubscribe to an event once. Automatically removed after first call.
Returns a manual unsubscribe.
off(event, listener): voidRemove a listener previously added with on.
offOnce(event, listener): voidRemove a listener previously added with once.
emit(event, payload): voidTrigger all listeners for a given event.
Why?
- No dependencies
- Simple source code - copy/paste & customize & be happy
