easy-event-emitter
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

Event.Emitter

Easy EventEmitter

Install

npm i easy-event-emitter

Create isolated emitter

import EventEmitter from "easy-event-emitter";

const events = new EventEmitter();

Global

const events = new EventEmitter(true);

Methods

addListener(event name, callback); //return {remove()}
emit(event name, data); //return void
removeAllListeners(); //return void

Examples

Isolated

const events1 = new EventEmitter();
const events2 = new EventEmitter();

events1.addListener('test', (val) => {
	console.log(val); //hello
});

const listener = events2.addListener('test', (val) => {
	console.log(val); //world
});

events2.addListener('test2', (val) => {
	console.log(val); //hi :-)
});

events1.emit('test', 'hello');
events2.emit('test', 'world');
events2.emit('test2', 'hi :-)');

listener.remove(); //Remove current listener

events2.removeAllListeners(); //Remove all listeners in current instance

Groups

const events1 = new EventEmitter('test_group');
const events2 = new EventEmitter('test_group');

events1.addListener('test', (val) => {
	console.log(val); //"hello" replace "world"
});

events2.addListener('test', (val) => {
	console.log(val); //"hello" replace "world"
});

events1.emit('test', 'hello');
events2.emit('test', 'world');

Global

const events = new EventEmitter(true);
events.addListener('test', (val) => {
	console.log(val); //"hello" replace "world"
});

const listener = EventEmitter.addListener('test', (val) => {
	console.log(val); //"hello" replace "world"
});

events.emit('test', 'hello');
EventEmitter.emit('test', 'world');

listener.remove(); //Remove current global listener

events.removeAllListeners(); //Remove all global listeners
//Or
EventEmitter.removeAllListeners();

Typing

type TUser = {
	id: number;
	name: string;
	email: string;
};

type TEvents = {
	login: TUser;
	register: Omit<TUser, 'id'>
};

const events = new EventEmitter<TEvents>();

Use

events.addListener('login', (user) => {
	// user: {
	// 	id: 1,
	// 	name: 'user',
	// 	email: 'user@gmail.com'
	// }
});

//...

events.addListener('register', (user) => {
	// user: {
	// 	name: 'new user',
	// 	email: 'new_user@gmail.com'
	// }
});
events.emit('login', {
	id: 1,
	name: 'user',
	email: 'user@gmail.com'
});

events.emit('register', {
	name: 'new user',
	email: 'new_user@gmail.com'
});

Package Sidebar

Install

npm i easy-event-emitter

Weekly Downloads

15

Version

1.1.0

License

MIT

Unpacked Size

46.7 kB

Total Files

18

Last publish

Collaborators

  • sergomorello