Numerous Pancakes Munched

    arbitrary-emitter

    2.0.1 • Public • Published

    arbitrary-emitter

    ES6 Map based event emitter in ~350 bytes

    Build Status npm version npm dependencies

    Arbitrary-emitter stores listeners in ES6 maps, so you can use any kind of value as key for your events

    const emitter = arbitraryEmitter()
    const key = {}
    emitter.on(key, () => doSomething())
    // will `doSomething`
    emitter.emit(key)
    • ~350 bytes when gzipped
    • conventional api (on, off, once and emit)
    • check weak-emitter for a version that uses weakmaps to store events

    Install

    Install with npm or yarn, clone the repo or download and extract the zip. Then import or insert it as script tag.

    Emitter API

    on(key, handler)

    Adds the handler function to the event tagged with key. key can be any type of value. Every handler will be added once, despite the number of times it was added to the event. Handlers are invoked in the order they were added.

    const key = {}
    emitter.on(key, () => doSomething())
    emitter.emit(key) // will `doSomething`

    once(key, handler)

    Same as on, but listener will be triggered just once, then it will be removed.

    const key = {}
    emitter.once(key, () => doSomethingOnce())
    emitter.emit(key) // will `doSomethingOnce`
    emitter.emit(key) // won't do anything

    emit(key[, ...args])

    Invoke all handlers tagged with key, passing the rest of the arguments

    emitter.on('test', (opts) => console.log(opts.test))
    const options = { test: 'Testing!' }
    emitter.emit('test', options) // => 'Testing!'

    off([key[, handler]])

    • If a key but no handler is passed the event will be removed
    • If key and handler are passed as arguments just the handler will be removed from the event
    emitter.off(key, action) // will remove action from listeners
    emitter.off(key) // will remove all the listeners tagged with `key`, and the tag itself

    listeners(key)

    Create and return an array with all the handlers for the event tagged with key

    const f1 = () => alert('hi')
    const f2 = () => alert('ho')
    emitter.on('a', f1)
    emitter.on('a', f2)
     
    emitter.emitters()
    // ==> [f1, f2]

    Testing

    npm test




    © 2020 Jacobo Tabernero - Released under MIT License

    Install

    npm i arbitrary-emitter

    DownloadsWeekly Downloads

    3

    Version

    2.0.1

    License

    MIT

    Unpacked Size

    10.1 kB

    Total Files

    8

    Last publish

    Collaborators

    • jacoborus