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

@axel669/event-bridge

v1.0.2

Published

pubsub-ish event emitter for node/browser with some neat features

Downloads

14

Readme

EventBridge

A pubsub-like event emitter with neat features for node & browser

Installation

Yarn

yarn install @axel669/event-bridge

Browser (Standalone)

<script src="https://cdn.jsdelivr.net/npm/@axel669/event-bridge/dist/event-bridge.js"></script>

API

on(type, listener)

  • type:String The type of events to listen for
  • listener:Function The listener function Adds and event listener. Returns a function that removes the listeners.

once(type, listener)

  • type:String The type of events to listen for
  • listener:Function The listener function Adds and event listener that is only triggered once. Returns a function that removes the listener if it hasn't been fired (and just does a noop if the listener has been triggered).

emit(type, data)

  • type:String The type of event to trigger
  • data:Any Data to attach to the event Emits an event to the appropriate listeners.

pull(source, prefix)

  • source:EventBridge The EventBridge to pull events from
  • prefix:String Optional A prefix to attach to the event type when pulling. If nothing is given, will use the exact event type. Pulls all events from the given bridge to the current one. Returns a function to cancel the pulling (like the on function).

bind(source, types)

  • source:EventEmitter The source to pull events from. An EventEmitter is any object that has addEventListener and removeEventListener functions.
  • type:Array[String] The list of event types to pull from the source Pulls events from the source and passes them into the EventBridge. Returns a function that stops the event pulling.

removeAll()

Removes all listeners for all events on the EventBridge.

Usage

import EventBridge from "@axel669/event-bridge"

//  new is not required
const bridge = EventBridge()

//  standard event emitter stuff
bridge.on("demo", listener)
//  namespaced events
bridge.on("demo.nested", listener)
//  wildcard events
bridge.on("demo.*", listener)

//  will trigger the demo.nested and demo.* listeners
bridge.emit("demo.nested", data)

const allEvents = EventBridge()
bridge.forward(allEvents)
allEvents.pull(window, ["click", "mousemove"])

allEvents.on("mousemove", something)
allEvents.on("demo.*", something)

bridge.removeAll()

Event Trigger Path

Events fired will fire upward through the namespaces as well in a very specific way, which can be seen using EventBridge.tracePath(type). Listeners are fired from most specific to least specific, and only wildcard listeners for namespaces are triggered for things inside the namespace. All events can be listened for using the "*" type, as all paths end with it.

Examples

"demo"
> ["demo", "*"]

"demo.nested"
> ["demo.nested", "demo.*", "*"]

"demo.nested.again"
> ["demo.nested.again", "demo.nested.*", "demo.*", "*"]