JSPM

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

A basic event emitter for all platforms

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@figliolia/event-emitter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    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 = {
        "my-event1": {
            type: "my-event1",
            datapoint: number;
            anotherDatapoint: any
        }
        // ... and so on
    }
    
    export const MyEmitter = new EventEmitter<MyEvents>();

    Emitting type-safe Events

    import { MyEmitter } from "./path/to/myEmitter";
    
    MyEmitter.emit("my-event1", {
        type: "my-event1",
        datapoint: 2,
        anotherDatapoint: [1, 2, 3]
    });
    
    // Fails typescript validation
    MyEmitter.emit("my-event1", {
        type: "my-event1",
        datapoint: "one",
    });
    
    // Fails typescript validation
    MyEmitter.emit("my-event2", /* event */);

    Subscribing to Events

    import { MyEmitter } from "./path/to/myEmitter";
    
    MyEmitter.on("my-event1", (event: MyEvents["my-events1"]) => {
        // any logic you wish!
    });
    
    // Fails typescript validation
    MyEmitter.on("my-event2", /* handler */);