npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ai-zen/event-bus

v1.1.0

Published

EventBus is a simple event management library for TypeScript.

Downloads

39

Readme

EventBus

License

EventBus is a simple event management library for TypeScript.

Installation

npm install @ai-zen/event-bus

Usage

import EventBus from "@ai-zen/event-bus";

// Create a new instance of EventBus
const eventBus = new EventBus();

// Subscribe to an event
eventBus.on("eventName", (arg1, arg2) => {
  // Handle the event
});

// Unsubscribe from an event
eventBus.off("eventName", handler);

// Unsubscribe from all handlers of an event
eventBus.offAll("eventName");

// Destroy the event bus and remove all event subscriptions
eventBus.destroy();

// Emit an event
eventBus.emit("eventName", arg1, arg2);

// Gather the results returned by all handlers of an event
const results = eventBus.gather < T > ("eventName", arg1, arg2);

// Gather the results returned by all handlers of an event as a map
const resultsMap = eventBus.gatherMap < T > ("eventName", arg1, arg2);

// Subscribe to an event and automatically unsubscribe after the first invocation
eventBus.once("eventName", (arg1, arg2) => {
  // Handle the event
});

// Subscribe to an event and return a promise that resolves when the event is emitted
const resultPromise = eventBus.promise("eventName");

API

on(name: string, handler: EventHandler, error?: ErrorHandler): Disposable

Subscribes to an event.

  • name (required): The name of the event to subscribe to.
  • handler (required): The event handler function.
  • error (optional): The error handler function.
  • Returns: A Disposable object that can be used to unsubscribe from the event.

Example

const disposable = eventBus.on("eventName", (arg1, arg2) => {
  // Handle the event
});

// Unsubscribe from the event
disposable.dispose();

off(name: string, handler: EventHandler): boolean

Unsubscribes from an event.

  • name (required): The name of the event to unsubscribe from.
  • handler (required): The event handler function.
  • Returns: True if the unsubscribing was successful, otherwise false.

offAll(name: string): void

Unsubscribes all event handlers from an event.

  • name (required): The name of the event to unsubscribe all handlers from.

destroy(): void

Destroys the event bus by clearing all event subscribers.

emit(name: string, ...args: any[]): void

Emits an event.

  • name (required): The name of the event to emit.
  • args (optional): The arguments to pass to the event handlers.

error(name: string, reason: any): void

This method is used to send an error event through the event bus.

  • name (required): The name of the error event to be sent.
  • reason (required): The reason for the error.

Example

try {
  // Do something that might throw an error
  const data = await getData();
  eventBus.emit("fooEvent", data);
} catch (error) {
  eventBus.error("fooEvent", error); // Send an error event
}
// Use the error handler function for eventBus.on
eventBus.on(
  "fooEvent",
  (data) => {
    // Handle the data
  },
  (error) => {
    // Handle the error
  }
);

// You can also use a promise catch to handle the error
eventBus.promise("fooEvent").catch((error) => {
  // Handle the error
});

gather<T>(name: string, ...args: any[]): T[]

Gathers the results from all event handlers of the specified event.

  • name (required): The name of the event to gather results from.
  • args (optional): The arguments to pass to the event handlers.
  • Returns: An array of results from all event handlers.

gatherMap<T>(name: string, ...args: any[]): Map<EventHandler, T>

Gathers the results from all event handlers of the specified event with a map of the handlers.

  • name (required): The name of the event to gather results from.
  • args (optional): The arguments to pass to the event handlers.
  • Returns: A map of event handlers and their corresponding results.

once(name: string, handler: EventHandler, error?: ErrorHandler): Disposable

Subscribes to an event and unsubscribes automatically after the event is emitted once.

  • name (required): The name of the event to subscribe to.
  • handler (required): The event handler function.
  • error (optional): The error handler function.
  • Returns: A Disposable object that can be used to unsubscribe from the event.

Example

const disposable = eventBus.once("eventName", (arg1, arg2) => {
  // Handle the event
});

// The handler will be automatically unsubscribed after the first invocation

promise(name: string): Promise<any>

Returns a promise that resolves when the specified event is emitted.

  • name (required): The name of the event to create a promise for.
  • Returns: A promise that resolves when the event is emitted.

Example

const resultPromise = eventBus.promise("eventName");

resultPromise.then((result) => {
  // Handle the result
});

subscribe(name: string, handler: EventHandler): void

Alias for the on method.

unsubscribe(name: string, handler: EventHandler): boolean

Alias for the off method.

publish(name: string, ...args: any[]): void

Alias for the emit method.

License

MIT