Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
component-emitter
Advanced tools
The component-emitter package is a simple event emitter implementation that allows objects to subscribe to events, emit events, and remove event listeners. It is often used to add observer pattern capabilities to objects, enabling event-driven programming.
Event subscription
This feature allows an object to listen for specific events using the 'on' method. When the event is emitted, the callback function is called.
const Emitter = require('component-emitter');
let emitter = new Emitter();
emitter.on('event', function(message) {
console.log(message);
});
Event emission
This feature allows an object to emit an event, optionally passing arguments to the event listeners.
emitter.emit('event', 'Hello World!');
One-time event subscription
This feature allows an object to listen for an event only once. After the event is emitted and the listener is invoked, the listener is removed.
emitter.once('event', function(message) {
console.log(message);
});
Event unsubscription
This feature allows an object to stop listening for specific events using the 'off' method.
function listener(message) {
console.log(message);
}
emitter.on('event', listener);
emitter.off('event', listener);
The 'events' package is Node.js's core EventEmitter class for managing and emitting events. It is similar to component-emitter but is built into Node.js and provides a more extensive API.
EventEmitter3 is a high-performance event emitter. It offers a similar API to component-emitter but focuses on performance and is optimized for modern JavaScript engines.
Wolfy87's EventEmitter is an implementation of the EventEmitter module found in Node.js but can be used in the browser. It has additional features like namespacing events, but it's larger in size compared to component-emitter.
Simple event emitter
npm install component-emitter
As an Emitter
instance:
import Emitter from 'component-emitter';
const emitter = new Emitter();
emitter.emit('🦄');
As a mixin:
import Emitter from 'component-emitter';
const user = {name: 'tobi'};
Emitter(user);
user.emit('I am a user');
As a prototype mixin:
import Emitter from 'component-emitter';
Emitter(User.prototype);
Create a new emitter.
Use it as a mixin. For example a plain object may become an emitter, or you may extend an existing prototype.
Register an event handler that listens to a specified event.
Register a one-time event handler for a specified event.
Remove a specific event handler for a specified event.
Remove all event handlers for a specified event.
Remove all event handlers for all events.
Emit an event, invoking all handlers registered for it.
Retrieve the event handlers registered for a specific event.
Get the count of listeners for a specific event.
Get the count of all event handlers in total.
Check if there are any handlers registered for a specific event.
Check if there are any handlers registered for any event.
It's simpler and more lightweight, and it works in any JavaScript environment, not just Node.js. It also provides mixin functionality to add event handling to existing objects without needing inheritance.
FAQs
Simple event emitter
The npm package component-emitter receives a total of 21,124,273 weekly downloads. As such, component-emitter popularity was classified as popular.
We found that component-emitter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 33 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.