1.0.3 • Published 1 year ago

@tiara.dev/emitter v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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();
1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago