@neomasterr/event-emitter

1.1.4 • Public • Published

npm

EventEmitter

Simple lightweight inheritable event emitter with minimal footprint and zero dependencies

Example

import EventEmitter from '@neomasterr/event-emitter';

const ev = new EventEmitter();

ev.on('init', (foo, bar) => {
    console.log(foo, bar);
});

ev.emit('init', 'foo', 'bar');

Inheritance (mixin)

///////////////////////////
// my-super-component.js //
///////////////////////////
import EventEmitterMixin from '@neomasterr/event-emitter/mixin';

function MySuperComponent(options = {on: {}}) {
    EventEmitterMixin.call(this, options.on);

    // typeof this.emitter == 'EventEmitter'

    this.emit('init'); // or this.emitter.emit('init');

    setTimeout(() => {
        this.emit('init:after');
    }, 1000);
}

// mixin
Object.assign(MySuperComponent.prototype, EventEmitterMixin.prototype);

// prototype chaining
Object.defineProperty(MySuperComponent.prototype, 'constructor', {
    value: MySuperComponent,
    writable: true,
    enumerable: false,
});

/////////////
// page.js //
/////////////
import MySuperComponent from './my-super-component';

const component = new MySuperComponent({
    on: {
        init: () => {
            console.log('Hello world!');
        },
    },
});

component.on('init:after', () => {
    console.log('After init');
});

Package Sidebar

Install

npm i @neomasterr/event-emitter

Weekly Downloads

0

Version

1.1.4

License

MIT

Unpacked Size

8.52 kB

Total Files

7

Last publish

Collaborators

  • neomasterr