@neomasterr/eventer

1.0.1 • Public • Published

npm

Eventer

Simple lightweight inheritable dependency free event emitter with minimal footprint

Example

import Eventer from '@neomasterr/eventer';

const ev = new Eventer();

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

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

Inheritance (mixin)

///////////////////////////
// my-super-component.js //
///////////////////////////
import {EventerMixin} from '@neomasterr/eventer';

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

    // typeof this.eventer == 'Eventer'

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

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

// mixin
Object.assign(MySuperComponent.prototype, EventerMixin.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/eventer

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

6.47 kB

Total Files

5

Last publish

Collaborators

  • neomasterr