npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

basic-event-emitter

v0.1.5

Published

A basic event emitter for node and browser

Downloads

626

Readme

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.