glob-events v1.6.0
glob-events.js
Event emitter with glob support on event names, for node and the browser
Features
- Node.js EventEmitter compatible API
- Register listeners with glob event names (
*
and**
) - Emit events with glob event names (
*
and**
) - 100% test coverage
Install with npm
npm install glob-events
Browser support
Use Browserify to create a standalone file.
Usage
var Emitter = require('glob-events').Emitter;
var emitter = new Emitter();
API
Emitter([opts])
: Constructor function, accepting these options:reverse
: Whether to invoke listeners in reverse insertion order. Defaults tofalse
.addEvent
: The event to fire when new listeners are added. Defaults to"newListener"
.removeEvent
: The event to fire when listeners are removed. Defaults to"removeListener"
.internalEvents
: An array of internal events. Listeners that are registered for internal events are not invoked when emitting*
. ThenewListener
,removeListener
and"error"
events are always internal.internalEmitter
: An emitter to use for internal events. Defaults tothis
toScope(args[, emitter])
: Converts the given arguments array into a scope object that can be used withinvoke
. If anemitter
is given, it is added to the scope object.
The constructor opts
are passed to the glob-store constructor.
Emitter API
emit(event[, ...])
: Invokes all listeners registered for the given event with the optional arguments. Matching rules are applied on the event name as described in the glob-tree match expressions.addListener(event, fn)
/on(event, fn)
: Registers a listener for an eventonce(event, fn)
: Registers a listener for an event that is automatically removed on the first invocationremoveListener(event, fn)
: Unregisters a listener for an eventremoveAllListeners([event])
: Unregisters all listeners, or all listeners for the given event. Matching rules are not applied.removeMatchingListeners(event)
: Unregisters all listeners matching the given event name as described in the glob-tree match expressions.listeners([event][, options])
: Returns all listeners, or all listeners for the given event. Matching rules are applied on the event name as described in the glob-tree match expressions.iterator([event][, options])
: Exposes the iterator used to retrieve all listeners, or all listeners for a given event. Each iterator entry has these properties:event
: The event name that was used to register the functionfn
: The registered function. Note: When usingonce
, this is not the same as the registered function.orig
: The original registered function, only available for entries that where added withonce
.scope
: The scope to use when invoking the function.
invoke(iterator, scope)
: Invokes the functions returned by an iterator on the givenscope
with the arguments fromscope.args
. This function is internally used byemit
. If a listener throws,emitError
is used to emit an error event.isInternalEvent(event)
: Returnstrue
if the given event is an internal event. These are the "error" event, the add and remove events and the configured internal events.emitError(error, cause)
: Emits an"error"
event with the given error as the only argument. Ifcause
is given, it is accessible in error listeners viathis.cause
. A cause object should have these entries: -event
: The event that caused the exception -fn
: The function that threw the exception -scope
: The scope the function was executed with -args
: The arguments that where passed to the function
Options
The options
argument can have these properties:
matchers
: Emit to matchers, defaults totrue
listeners
: Emit to listeners, defaults totrue
The first argument passed to emit
can be an object with an event
property
and any of the above options.
Scope
Listeners are invoked with a special scope object. If an object is passed to
emit
as the event (see Options), that object is used as the scope object.
The scope object always has these properties:
event
: The event that was emittedargs
: The arguments that where passed after the event name.emitter
: The event emitter instance
It is also possible to bind individual listeners to specific scope objects:
emitter.addListener({
event : 'some.event',
scope : this
}, function () { ... });
Events
newListener
: Emitted byaddListener
,on
andonce
with the event name and the new listener function. Matchers will not receive this event.removeListener
: Emitted byremoveListener
andremoveAllListeners
with the event name and the removed listener function. Matchers will not receive this event.error
: Emitted byemit
if a listener throws an exception. The only argument is the caught exception. The original event's scope is exposed onthis.cause
with these properties:event
: The event that caused the exceptionfn
: The function that threw the exceptionscope
: The scope the function was executed withargs
: The arguments that where passed to the function
TODO
- setMaxListeners(n)
License
MIT
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago