0.1.5 • Published 10 months ago

basic-event-emitter v0.1.5

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

basic-event-emitter

basic-event-emitter é uma biblioteca simples e leve para gerenciar eventos no estilo "publicador/assinante" (pub/sub). Ideal para projetos que precisam de um sistema de emissão e escuta de eventos sem a complexidade de dependências pesadas.

🚀 Instalação

Você pode instalar o pacote via npm:

npm install basic-event-emitter

Ou via yarn:

yarn add basic-event-emitter

📖 Uso

Aqui está um exemplo básico de como usar o basic-event-emitter:

import BasicEventEmitter from 'basic-event-emitter';

// Cria uma instância do EventEmitter
const emitter = new BasicEventEmitter<{
    greet: (name: string) => void;
    farewell: (name: string) => void;
}>();

// Assinando um evento
emitter.on('greet', (name) => {
    console.log(`Hello, ${name}!`);
});

// Emitindo um evento
emitter.emit('greet', 'Alice');

// Removendo um listener
const sayGoodbye = (name) => console.log(`Goodbye, ${name}!`);
emitter.on('farewell', sayGoodbye);
emitter.off('farewell', sayGoodbye);

// Emitindo novamente (não irá disparar, pois o listener foi removido)
emitter.emit('farewell', 'Alice');

Usando como extensão em classes:

import BasicEventEmitter from 'basic-event-emitter';

type UserEvents = {
    login: (username: string) => void;
    logout: (username: string) => void;
};

class User extends BasicEventEmitter<UserEvents> {
    login(username: string) {
        this.emit('login', username);
    }

    logout(username: string) {
        this.emit('logout', username);
    }
}

const user = new User();

user.on('login', (username) => {
    console.log(`User ${username} logged in.`);
});

user.login('Alice');

🛠️ API

on(event: string, listener: (...args: any[]) => void): BasicEventHandler

Registra um ouvinte para um evento específico.

  • event: O nome do evento.
  • listener: A função a ser chamada quando o evento é emitido.
const handler = emitter.on('greet', (name) => {
    console.log(`Hello, ${name}!`);
});

// Remover o ouvinte
handler.remove();

emit(event: string, ...args: any[]): void

Dispara todos os ouvintes registrados para um evento.

  • event: O nome do evento.
  • ...args: Argumentos a serem passados para os ouvintes.
emitter.emit('greet', 'Alice');

off(event: string, listener: (...args: any[]) => void): void

Remove um ouvinte de um evento específico.

  • event: O nome do evento.
  • listener: A função a ser removida.
const sayGoodbye = (name) => console.log(`Goodbye, ${name}!`);
emitter.on('farewell', sayGoodbye);
emitter.off('farewell', sayGoodbye);

once(event: string, listener: (...args: any[]) => R): Promise<R>

Registra um ouvinte que será chamado apenas uma vez.

  • event: O nome do evento.
  • listener: A função a ser chamada quando o evento for emitido.
  • returns: Uma Promise que resolve com o valor retornado pela função listener.
emitter.once('greet', (name) => {
    console.log(`Hello, ${name}!`);
    return 'Listener called.';
}).then((message) => {
    console.log(message);
});

emitOnce(event: string, ...args: any[]): void

Dispara todos os ouvintes registrados para um evento e remove-os após a execução.

  • event: O nome do evento.
  • ...args: Argumentos a serem passados para os ouvintes.
emitter.emitOnce('greet', 'Alice');

offOnce(event: string, listener: (...args: any[]) => void): void

Remove um ouvinte de um evento específico após a primeira execução.

  • event: O nome do evento.
  • listener: A função a ser removida.
const sayGoodbye = (name) => console.log(`Goodbye, ${name}!`);
emitter.once('farewell', sayGoodbye);
emitter.offOnce('farewell', sayGoodbye);

pipe(event: string, emitter: BasicEventEmitter<any>): BasicEventHandler

Encaminha eventos de outro EventEmitter para o EventEmitter atual.

  • event: O nome do evento.
  • emitter: O EventEmitter de origem.
const emitter2 = new BasicEventEmitter();
const handler = emitter.pipe('greet', emitter2);

// Remover o ouvinte
handler.remove();

pipeOnce(event: string, emitter: BasicEventtEmitter<any>): Promise<void>

Encaminha eventos de outro EventEmitter para o EventEmitter atual, removendo o encaminhamento após a primeira execução.

  • event: O nome do evento.
  • emitter: O EventEmitter de origem.
const emitter2 = new BasicEventEmitter();
emitter.pipeOnce('greet', emitter2).then(() => {
    console.log('Event forwarded.');
});

clearEvents(): void

Remove todos os ouvintes registrados para todos os eventos.

emitter.clearEvents();

ready<R = never>(callback: () => R | Promise<R>): Promise<R>

Executa uma função após a propriedade prepared ser definida como true.

  • callback: A função a ser execut
  • returns: Uma Promise que resolve com o valor retornado pela função.
emitter.ready(() => {
    console.log('EventEmitter is ready.');
});

prepared: boolean

Propriedade que indica se o EventEmitter está pronto para uso.

// Verificar se o EventEmitter está pronto
if (emitter.prepared) {
    console.log('EventEmitter is ready.');
}

// Aguardar até que o EventEmitter esteja pronto
emitter.ready(()=>{
    console.log('EventEmitter is ready.');
});

// Infomar que o EventEmitter está pronto
emitter.prepared = true;

🌟 Funcionalidades

  • Leve e sem dependências externas.
  • Interface simples e intuitiva.
  • Compatível com Node.js e navegadores.

💡 Casos de Uso

  • Comunicação entre componentes em aplicações frontend.
  • Implementação de eventos personalizados em aplicações backend.
  • Emissão de notificações ou mensagens em sistemas.
0.1.4

10 months ago

0.1.3

10 months ago

0.1.5

10 months ago

0.1.2

11 months ago

0.1.1

11 months ago

0.1.0

11 months ago