1.0.3 • Published 1 year ago
@tiara.dev/emitter v1.0.3
Install
npm i @tiara.dev/emitter
Important
Although this package uses runtypes to express types defined by the emitter it does not currently actually perform type validation using them.
Usage
A set of typed emitters can be created by passing through a mapping of event name to the expected event shape.
import { emitter } from "@tiara.dev/emitter";
import {
String as String_,
Number as Number_,
Record_ as Record,
} from "runtypes";
const { on, emit } = emitter({
myNumberEvent: Number_,
myUpdatedEvent: Record_({ valueA: String_, valueB: Number_ }),
});
From here events can be emitted as follows:
emit.myNumberEvent(6)
emit.myUpdatedEvent({valueA: 'test' valueB: 99})
And listened to like this:
const stopListeningToMyNumberEvent = on.myNumberEvent((n) => {
console.log(`n is the number ${n}`);
});
const stopListeningToMyUpdateEvent = on.myUpdatedEvent((e) => {
console.log(`e.valueA is a string: ${e.valueA}`);
console.log(`e.valueB is a number: ${e.valueB}`);
});
The return value of the subscribe method above will unsubscribe the listener. So to unsubscribe from both listeners you would call:
stopListeningToMyNumberEvent();
stopListeningToMyUpdateEvent();