energy

Simple cross-platform event emitter

Usage no npm install needed!

<script type="module">
  import energy from 'https://cdn.skypack.dev/energy';
</script>

README

energy

simple cross-platform event emitter based on EventEmitter

API

Create an emitter instance

var energy = require('energy')
var emitter = energy()

Or use new if you prefer. Either way works :)

var energy = require('energy')
var emitter = new energy()

Methods

Parameters

  • emitter refers to an energy() object
  • event refers to an event name
  • listener refers to a function that listens to an event

emitter.on(event, listener)

  • Add listener for event
  • @return emitter

emitter.off(event?, listener?, quota?)

  • Remove listener(s)
    • .off() removes all listeners for all events
    • .off(event) removes all event listeners
    • .off(event, listener) removes all occurrences of event listener
    • .off(event, listener, quota) remove quota occurrences of event listener
  • @return emitter

emitter.emit(event, ...args)

  • Fire event listeners (in sequence) with the supplied arguments
  • Listeners run in the context of emitter
  • @return integer (number of listeners that fired)

emitter.once(event, listener)

  • Add a one-time event listener
  • @return emitter

emitter.clone()

  • Clone an emitter at its current state
  • @return a new emitter

emitter.listeners(event)

  • Access the listeners array for the specified event
  • @return array (reference)

emitter.init()

  • Reinitialize an emitter
  • @return emitter

emitter.to(target)

  • Make target emitter-like based on emitter as the source.
  • @return emitter

energy.to(target)

  • Make target emitter-like based on a energy() object as the source
  • @return target with emitter methods and properties

energy.applies(fns, scope, args, breaker?)

  • Apply each function with scope and args
  • If breaker is defined, then functions can return breaker to abort subsequent applies
  • @return integer (number of functions that fired)

Compatibility

Works in node and in any browser. Tested in node, Chrome, FF, Opera, IE8