@nanots/pubsub

Smallest pubsub library ever made

Usage no npm install needed!

<script type="module">
  import nanotsPubsub from 'https://cdn.skypack.dev/@nanots/pubsub';
</script>

README

@nanots/pubsub

@nanots/pubsub is a tiny, type-safe pubsub library written in typescript.

Installation

npm install @nanots/pubsub

Usage

import { createPubSub } from "@nanots/pubsub";

interface LoginPayload {
  token: string;
  remember?: boolean;
}

interface Events {
  login: LoginPayload;
  logout: void; // no payload
}

const pubsub = createPubSub<Events>();

// returns a cleanup function to remove listener
const unsubscribe = pubsub.subscribe("login", ({ token, remember }) => {
  // payload is inferred
});

// fails without payload, must be provided
pubsub.publish("login", { token: "foobar" });

// fails with payload
pubsub.publish("logout");

// clear all listeners for `login`
pubsub.unsubscribe("login");

// clear all
pubsub.unsubscribe();