emoney

1.1.1 • Public • Published

E$

A lightweight, isomorphic event emitter.

travis-ci

Overview

E$ can be used standalone or inherited by other classes.

// Standalone
const emoney = E$({
    handleE$() { ... }
});
 
// Inherited
class E$Extended extends E$ {
    handleE$() { ... }
}

E$ provides a clean way to interface with object instances.

emoney
    .$when('loading', (e, pct) => console.log('loading... (%s%)', pct))
    .$when('ready', () => console.log('ready!'))
    .$when('error', (e, err) => console.error(err.stack));

E$ instances can communicate via the handleE$ method.

const emitter = E$();
const watcher = E$({
    handleE$(e, str, obj) {
        expect(str).to.eql('awesome');
        expect(obj).to.eql({ rad: true });
    }
});
watcher.$watch(emitter);
emitter.$emit('gnarly', ['awesome', { rad: true }]);
expect(watcher.handleE$).to.have.been.called.once;

E$ can be used to create a DOM-like event tree.

const emitter = E$();
const watcher1 = E$();
const watcher2 = E$();
const spy = sinon.spy();
 
watcher2
    .$watch(watcher1)
    .$when('gnarly', spy);
 
watcher1
    .$watch(emitter)
    .$when('gnarly', e => e.stopPropagation());
 
emitter.$emit('gnarly', () => expect(spy).to.have.not.been.called);

Methods

(static) E$.is(subject) → {boolean}

Returns true if subject is E$-ish, false otherwise.

const emoney = E$();
const emoneyIsh = new E$Extended();
const somethingElse = new SomethingElse();
 
emoney instanceof E$;     // true
E$.is(emoney);            // true
 
emoneyIsh instanceof E$;  // false
E$.is(emoneyIsh);         // true
 
E$.is(somethingElse);     // false

.$when(events, argsopt, fnopt) → {instance}

Adds an event listener.

Parameter Type Description Required
events string
array
The event(s) to be handled. yes
args variant
array
The argument(s) to be bound to the event handler. no
fn function
E$
The event handler.
If E$.is(fn) == true, the event will be bound to instance.handleE$.
If fn is falsy, the event will be bound to emoney.handleE$.
no
// basic use
emoney.$when('gnarly', () => { ... });
 
// bind an argument to multiple events
emoney.$when(['gnarly', 'rad'], 'arg', () => { ... });

.$once(events, argsopt, fnopt) → {instance}

Adds an event listener that is removed after the first time it is invoked.

Parameter Type Description Required
events string
array
The event(s) to be handled. yes
args variant
array
The argument(s) to be bound to the event fn. no
fn function
E$
The event handler. no
// basic use
emoney.$once('gnarly', () => { ... });
 
// bind an argument to multiple events
emoney.$once(['gnarly', 'rad'], 'arg', () => { ... });

.$emit(events, argsopt, callbackopt) → {instance}

Emits an event.

Parameter Type Description Required
events string
array
The event(s) to be emitted. yes
args variant
array
The argument(s) to be passed to the event handler. no
callback function A function to be executed at the end of the event chain (see event behavior). no
// basic use
emoney.$emit('gnarly', () => { ... });
 
// pass an argument to multiple event handlers
emoney.$emit(['gnarly', 'rad'], 'arg', () => { ... });
 
// pass multiple arguments to an event handler
emoney.$emit('gnarly', ['arg1', 'arg2'], () => { ... });

.$dispel(events, wildopt, fnopt) → {instance}

Removes an event listener.

Parameter Type Description Required
events string
array
null
The event(s) to be removed. yes
wild boolean A boolean value denoting whether handlers bound to the wildcard event should be removed. no
fn function
E$
The event handler. no
// remove any gnarly listeners bound to fn
emoney.$dispel('gnarly', fn);
 
// remove all gnarly or rad listeners bound to any handler
emoney.$dispel(['gnarly', 'rad']);
 
// remove all listeners bound to fn except wildcard listeners
emoney.$dispel(null, fn);
 
// remove all listeners bound to fn
emoney.$dispel(null, true, fn);
 
// remove all listeners
emoney.$dispel(null, true);

.$watch(emitters) → {instance}

Starts watching E$ instance(s).

Parameter Type Description Required
emitters E$
array
The E$ instance(s) to watch. yes
// watch a single emitter
listener.$watch(emitter1);
 
// watch multiple emitters
listener.$watch([emitter1, emitter2]);

.$unwatch(emitters) → {instance}

Stops watching E$ instance(s).

Parameter Type Description Required
emitters E$
array
The E$ instance(s) to stop watching. yes
// stop watching a single emitter
listener.$unwatch(emitter1);
 
// stop watching multiple emitters
listener.$unwatch([emitter1, emitter2]);

Events

Properties

Property Type Default Description
target E$ n/a The event target.
type string n/a The event type.
defaultPrevented boolean false A flag denoting whether default was prevented.
cancelBubble boolean false A flag denoting whether propagation was stopped.
timeStamp number n/a The time at which the event was first triggered.

Methods

.preventDefault()

Prevents the $emit callback from being executed.

emoney
    .$when('gnarly', (e) => {
        e.preventDefault();
        console.log('fn1');
    })
    .$when('gnarly', () => console.log('fn2'))
    .$emit('gnarly', () => console.log('cb'));
 
/**
 * > 'fn1'
 * > 'fn2'
 */

.stopPropagation()

Stops execution of the event chain and executes the emit callback.

emoney
    .$when('gnarly', (e) => {
        e.stopPropagation();
        console.log('fn1');
    })
    .$when('gnarly', () => console.log('fn2'))
    .$emit('gnarly', () => console.log('cb'));
 
/**
 * > 'fn1'
 * > 'cb'
 */

Behavior

normal execution

defaultPrevented

cancelBubble

Build & Test

npm i && npm run build

Package Sidebar

Install

npm i emoney

Weekly Downloads

9

Version

1.1.1

License

MIT

Last publish

Collaborators

  • elnarddogg