event-emitter-demux

Create an event emitter from a list of event types

Usage no npm install needed!

<script type="module">
  import eventEmitterDemux from 'https://cdn.skypack.dev/event-emitter-demux';
</script>

README

event emitter demux

Create a demuxed event bus from an event list.

install

$ npm install event-emitter-demux

example

var test = require('tape')
var Bus = require('../')

test('create event bus with one event', function (t) {
    t.plan(1)
    var bus = Bus('test')
    bus.on.test(function (ev) {
        t.equal(ev, 'my event', 'should emit events by type')
    })
    bus.write.test('my event')
})

test('create event bus from array', function (t) {
    t.plan(2)
    var evs = ['test', 'testTwo']
    var bus = Bus(evs)
    bus.on.test(function (ev) {
        t.equal(ev, 'event1', 'should emit event')
    })
    bus.on.testTwo(function (ev) {
        t.equal(ev, 'event2', 'should emit event')
    })
    bus.write.test('event1')
    bus.write.testTwo('event2')
})


test('recursive nested events', function (t) {
    t.plan(3)
    var evs = [
        'one',
        ['two', ['twoA', 'twoB']]
    ]
    var bus = Bus(evs)
    bus.on.one(function (ev) {
        t.equal(ev, 'eventOne', 'should emit event on top level')
    })
    bus.on.two.twoA(function (ev) {
        t.equal(ev, 'eventTwoA', 'should create nested emitter')
    })
    bus.on.two.twoB(function (ev) {
        t.equal(ev, 'eventTwoB', 'should create nested emitter')
    })

    bus.write.one('eventOne')
    bus.write.two.twoA('eventTwoA')
    bus.write.two.twoB('eventTwoB')
})