JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 133
  • Score
    100M100P100Q80240F
  • License MIT

A basic event emitter for all platforms

Package Exports

  • @figliolia/event-emitter

Readme

@figliolia/event-emitter

Installation

npm i -S @figliolia/event-emitter;
# or yarn
yarn add @figliolia/event-emitter;

Basic Usage

Creating an instance

import { EventEmitter } from "@figliolia/event-emitter";

export const MyEmitter = new EventEmitter();

Emitting Events

import { MyEmitter } from "./path/to/myEmitter";

MyEmitter.emit("some-event", /* any data */);

Subscribing to Events

import { MyEmitter } from "./path/to/myEmitter";

const ID = MyEmitter.on("some-event", (event) => {
  // any logic you wish!
});

// Cleaning up listeners
MyEmitter.off("some-event", ID);

With Strict Typescript

Creating an Instance

import { EventEmitter } from "@figliolia/event-emitter";

type MyEvents = {
  "event-0": {
    dataPoint: number;
    anotherDataPoint: any
  },
  "event-1": Map<string, () => void>
  // ... and so on
}

export const MyEmitter = new EventEmitter<MyEvents>();

Emitting type-safe Events

import { MyEmitter } from "./path/to/myEmitter";

MyEmitter.emit("event-0", {
  dataPoint: 2,
  anotherDataPoint: [1, 2, 3]
});

// Fails typescript validation
MyEmitter.emit("event-0", {
  dataPoint: "one",
});

// Fails typescript validation
MyEmitter.emit("my-event2", /* event */);

Subscribing to Events

import { MyEmitter } from "./path/to/myEmitter";

MyEmitter.on("event-0", (event) => {
  // any logic you wish!
});

// Fails typescript validation
MyEmitter.on("my-event2", /* handler */);