@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 forlistener: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 forlistener: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 triggerdata:Any
Data to attach to the event Emits an event to the appropriate listeners.
pull(source, prefix)
source:EventBridge
The EventBridge to pull events fromprefix: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 hasaddEventListener
andremoveEventListener
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.*", "*"]