1.0.0 • Published 1 year ago

@phucbm/events-manager v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Events Manager

Test Status NPM Publish NPM Version

Install

npm i @phucbm/events-manager

Usage in Plugin

JavaScript

import {EventsManager} from "@phucbm/events-manager";

class Plugin{
    constructor(){
        // init events manager
        this.events = new EventsManager(this, {
            names: ['onInit'] // register event names
        });

        // fire an event
        this.events.fire('onInit', {source: 'example'}); // the 2nd param is an object that will be passed to the callback
    }

    /**
     * Assign late-events
     */
    on(eventName, callback){
        this.events.add(eventName, callback);
    }
}

// add event from init
const instance = new Plugin();
instance.on('onInit', data => {
    console.log('init', data);
});

// add via method after init
instance.on('onInit', data => {
    console.log('init', data);
});

// with or without keyword on before the event name are all acceptable
instance.on('init', data => {
    console.log('init', data);
});

TypeScript

import {EventsManager} from "@phucbm/events-manager";

interface Context {
    options?: Record<string, any>;
    config?: Record<string, any>;
}

class Plugin {
    private events: EventsManager;

    constructor() {
        const context: Context = {options: {}};
        // init events manager
        this.events = new EventsManager(context, {
            names: ['onInit'] // register event names
        });

        // fire an event
        this.events.fire('onInit', {source: 'example'}); // the 2nd param is an object that will be passed to the callback
    }

    /**
     * Assign late-events
     */
    on(eventName: string, callback: Function): void {
        this.events.add(eventName, callback);
    }
}

// add event from init
const instance = new Plugin();
instance.on('onInit', (data: any) => {
    console.log('init', data);
});

// add via method after init
instance.on('onInit', (data: any) => {
    console.log('init', data);
});

// with or without keyword on before the event name are all acceptable
instance.on('init', (data: any) => {
    console.log('init', data);
});

Use the Plugin

JavaScript

// add event from init
const instance = Plugin.init({
    onInit: data => {
        console.log('init', data);
    }
});

// add via method after init
instance.on('onInit', data => {
    console.log('init', data);
});

// with or without keyword on before the event name are all acceptable
instance.on('init', data => {
    console.log('init', data);
});

TypeScript

// add event from init
const instance = Plugin.init({
    onInit: (data: any) => {
        console.log('init', data);
    }
});

// add via method after init
instance.on('onInit', (data: any) => {
    console.log('init', data);
});

// with or without keyword on before the event name are all acceptable
instance.on('init', (data: any) => {
    console.log('init', data);
});
1.0.0

1 year ago

0.0.5

2 years ago