🚀 Socket Launch Week 🚀 Day 3: Socket Acquires Coana.Learn More
Socket
Sign inDemoInstall
Socket

extended-emitter

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

extended-emitter

An emitter with expanded utility for node and the browser

1.6.0
latest
Source
npm
Version published
Weekly downloads
7.5K
-0.37%
Maintainers
1
Weekly downloads
 
Created
Source

extended-emitter.js

NPM version npm

Everything you expect from require('events').EventEmitter in both the browser and client, plus:

  • criteria : use a sift expression to work on a subset of the events
  • .allOff() : removes all events from this emitter
  • .emitter : the internal emitter used, in case you need direct access.

import

CommonJS

const { Emitter } = require('extended-emitter');
const emitter = new Emitter();

ES6 imports

import { Emitter } from 'extended-emitter';
const emitter = new Emitter();

optional criteria

you can now using mongo-style queries (supported by sift) to subscribe to specific events (in this context .once() means meeting the criteria, not just firing an event of that type).

emitter.on('my_object_event', {
    myObjectId : object.id
}, function(){
    //do stuff here
});

// or

emitter.once('my_object_event', {
    myObjectId : object.id,
    myObjectValue : {
    	$gt : 20,
    	$lt : 40
    }
}, function(){
    //do stuff here
});

.when()

and there's also the addition of a when function which can take ready-style functions, real promises or events, making it easy to delay or wait for a state, without resorting to chaining.

async

await emitter.when([$(document).ready, 'my-init-event', 'my-load-event']);

callbacks

emitter.when([$(document).ready, 'my-init-event', 'my-load-event'], function(){
	//do stuff
});

.onto()

Often you want an object to implement emitters, and while it's easy enough to wrap them, why not just have that done for you and avoid the boilerplate?

emitter.onto(MyClass.prototype);
emitter.onto(MyInstance);
emitter.onto(MyObject);

or in the constructor:

(new Emitter()).onto(this);

Testing

Run the tests at the project root with:

npm run import-test
npm run require-test

Enjoy,

-Abbey Hawk Sparrow

Keywords

emitter

FAQs

Package last updated on 03 Sep 2023

Did you know?

Socket

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.

Install

Related posts