A tiny pub/sub utility in vanilla JavaScript.
- Simple pub/sub pattern
- Lightweight and dependency-free
- Duplicate subscription protection
- Easy unsubscribe handling
- Debug helpers for inspecting subscribers
npm install emttrimport Emttr from "emttr";
const emttr = new Emttr();
const subscription = emttr.subscribe("user:login", data => {
console.log("User logged in:", data);
});
emttr.publish("user:login", { name: "Geet" });
subscription.unsubscribe();Creates a new emitter instance.
Subscribes a callback to an event.
event- the event namecallback- the function to run when the event is published
An object with an unsubscribe() method.
const subscription = emttr.subscribe("message", data => {
console.log(data);
});
subscription.unsubscribe();Publishes data to all subscribers of an event.
event- the event namedata- optional data passed to each subscriber
emttr.publish("message", { text: "Hello world" });Clears subscribers for a specific event.
emttr.clear("message");Clears all subscribers.
emttr.clear();Returns helper methods for inspecting subscriber state.
const debug = emttr.debug();
console.log(debug.count("message"));
console.log(debug.subscribers());count(event)- returns the number of subscribers for an eventsubscribers()- returns a copied object of all subscribers
import Emttr from "emttr";
const emttr = new Emttr();
const sub1 = emttr.subscribe("order:created", order => {
console.log("Order received:", order);
});
const sub2 = emttr.subscribe("order:created", order => {
console.log("Processing order:", order.id);
});
emttr.publish("order:created", { id: 101, item: "Pizza" });
console.log(emttr.debug().count("order:created")); // 2
console.log(emttr.debug().subscribers());
sub1.unsubscribe();
sub2.unsubscribe();MIT