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

be-eventbus

v0.0.5

Published

a sample event bus

Downloads

7

Readme

beEventBus

an javascript version event bus.

中文 README

key features

  • namespace & event-name driven
  • support unicast, multicast, broadcast
  • provided a event factory to simplify the creation of the event
  • you can use it as a Vuejs plugin

install

use script tag in html:

<script src="YOUR_PATH/beEventBus.min.js">
YOUR_PATH is the static resource URI where you store beEventBus.min.js

npm:

npm install be-eventbus --save

types & api

//beEventBus.eventType | enum
const eventType = {
    BROADCAST: 0, //broadcast, event will broadcast to all the name matched handler and ignore namespace
    UNICAST: 1,   //unicast, event will post to the last name matched handler under the namespace
    MULTICAST: 2, //multicast, event will post to all the name matched handler under the namespace
}

//beEventBus.event | object
/***
 * 
 * @param namespace | string | namespace
 * @param name | string | event name
 * @param data | any | event data
 * @param type | beEventBus.eventType | valid event type
 * 
 * @description you need new an beEventBus.event before you post an event to bus
 */
const event = function (namespace, name, data, type = eventType.BROADCAST){
    this.namespace = namespace
    this.name = name
    this.data = data
    this.type = type    
}


/***
 *
 * @param namespace | string | namespace
 * @param type | beEventBus.eventType | valid event type
 * 
 * @returns object | {newEvent(name, data)} | this function will return an object which has newEvent method that used to create new beEventBus.event
 * @description this is a factory method. you can preset the namespace and eventType, then the newEvent method of the return object will set this two parameter automatically
 */
const eventFactory = function (namespace, type = eventType.MULTICAST) {/*...*/}

//beEventBus.bus api
/***
 * 
 * @param eventName | string | event name
 * @param action | function | handler function
 * @param scope | object | callback context
 * @param namespace | string | namespace, default set to "BE_EVENT_BUS_DEFAULT_NAMESPACE"
 * 
 * @returns object | eventHandler | eventHandler is an inner type
 * @description register an event handler
 */
beEventBus.bus.registerEventHandler(eventName, action, scope = null, namespace = "BE_EVENT_BUS_DEFAULT_NAMESPACE")

/***
 *
 * @param handler | eventHandler | the object returned by api registerEventHandler
 * @description unregister an event handler
 */
deregisterEventHandler(handler)

/***
 * 
 * @param e | event | the event object to post  
 * @description post an event to the bus
 */
post(e)

use in Vuejs (npm installed):

/*
 .........
 */
import {busForVue} from "be-eventbus";
Vue.use(busForVue)

/*
 .........
 this.$BEEventBus.bus
 this.$BEEventBus.eventType
 this.$BEEventBus.event
 this.$BEEventBus.eventFactory
 */

Example

please refer to example directory

License

MIT