Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jacomyal/emmett
A custom event emitter for Node.js and the browser
https://github.com/jacomyal/emmett
Last synced: 23 days ago
JSON representation
A custom event emitter for Node.js and the browser
- Host: GitHub
- URL: https://github.com/jacomyal/emmett
- Owner: jacomyal
- License: mit
- Created: 2014-10-31T16:40:01.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2022-12-30T19:41:24.000Z (almost 2 years ago)
- Last Synced: 2024-10-12T01:45:58.052Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 320 KB
- Stars: 58
- Watchers: 4
- Forks: 4
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Emmett
A custom event emitter for Node.js and the browser.
Its aim is to provide its user with a lot of event emitting sugar while remaining lightweight and fast.
## Installation
You can install **Emmett** through npm:
```bash
npm install --save emmett
```## Usage
### Creating an emitter
```js
var Emitter = require('emmett');var emitter = new Emitter();
```### Extending the emitter
*Node.js*
```js
var util = require('util'),
Emitter = require('emmett');function MyObject() {
Emitter.call(this);
}util.inherits(MyObject, Emitter);
```*ES6 class*
```js
import Emitter from 'emmett';class MyObject extends Emitter {
/* ... */
}
```### Listening to events
```js
// Basic
emitter.on('eventName', callback);// Once
emitter.once('eventName', callback);// Using ES6 symbol as event name
const sym = Symbol();
emitter.on(sym, callback);// Matching event names with a regex
emitter.on(/^event/, callback);// Options
emitter.on('eventName', callback, {scope: customScope, once: true});// Polymorphisms
emitter.on(['event1', 'event2'], callback);emitter.on({
event1: callback1,
event2: callback2
});// Listening to every events
emitter.on(callback);
```## Event data
Events are objects having the following keys:
* **data**: the data attached to the event.
* **type**: the event type.
* **target**: the event emitter.```js
emitter.on('myEvent', function(e) {
console.log(e.data);
});emitter.emit('myEvent', 'Hello World!');
// Will print "Hello World!" in the console
```## Removing listeners
```js
// Basic
emitter.off('eventName', callback);// Removing every listeners attached to the given event
emitter.off('eventName');// Removing the callback from any event
emitter.off(callback);// Polymorphisms
emitter.off(['event1', 'event2'], callback);emitter.off({
event1: callback1,
event2: callback2
});// Removing every listeners
emitter.unbindAll();
```## Emitting
```js
// Basic
emitter.emit('eventName');// With data
emitter.emit('eventName', {hello: 'world'});// Polymorphisms
emitter.emit(['event1', 'event2']);
emitter.emit(['event1', 'event2'], {hello: 'world'});emitter.emit({
event1: 'hey',
event2: 'ho'
});
```## Retrieving listeners
```js
// Return every matching handlers for a given event name
emitter.listeners('eventName');
```## Disabling an emitter
While disabled, emitting events won't produce nothing.
```js
emitter.disable();
emitter.enable();
```## Killing an emitter
Killing an emitter will remove all its listeners and make it inoperant in the future.
```js
emitter.kill();
```## Contribution
Do not hesitate to contribute to the library. Be sure to add and pass any relevant unit test before submitting any code.
```bash
# Installing the dev version
git clone http://github.com/jacomyal/emmett
cd emmett# Installing dependencies
npm install# Running unit tests
npm test# Lint the code
npm run lint
```