# ev-emitter

> lil' event emitter

Latest version **2.1.2** (published 2021-12-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install ev-emitter
pnpm add ev-emitter
yarn add ev-emitter
bun add ev-emitter
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.2 |
| Published | 2021-12-28 |
| First published | 2016-01-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 11.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 69 |
| Author | David DeSandro |
| Maintainers | desandro |
| Keywords | event, emitter, pubsub |

## Links

- npm: https://www.npmjs.com/package/ev-emitter
- Repository: https://github.com/metafizzy/ev-emitter
- Homepage: https://github.com/metafizzy/ev-emitter#readme
- Issues: https://github.com/metafizzy/ev-emitter/issues
- npm.io page: https://npm.io/package/ev-emitter

## Alternatives

- [async-exit-hook](https://npm.io/package/async-exit-hook.md) — 3.7M weekly downloads
- [evnty](https://npm.io/package/evnty.md) — 7.2K weekly downloads
- [eleventy-plugin-asciidoc](https://npm.io/package/eleventy-plugin-asciidoc.md) — 3.5K weekly downloads
- [@jswork/next-get2get](https://npm.io/package/@jswork/next-get2get.md) — 945 weekly downloads
- [@dashersw/axon](https://npm.io/package/@dashersw/axon.md) — 934 weekly downloads

## Recent versions

- 2.1.2 (latest) — 2021-12-28
- 2.1.1 — 2021-12-28
- 2.1.0 — 2020-12-19
- 2.0.0 — 2020-12-19
- 1.1.1 — 2017-07-06
- 1.1.0 — 2017-05-16
- 1.0.3 — 2016-06-07
- 1.0.2 — 2016-02-15
- 1.0.1 — 2016-01-13
- 1.0.0 — 2016-01-13
- 0.1.0 — 2016-01-07

## README

# EvEmitter

_Lil' event emitter_ — add a little pub/sub

EvEmitter adds publish/subscribe pattern to a browser class. It's a smaller version of [Olical/EventEmitter](https://github.com/Olical/EventEmitter). That EventEmitter is full featured, widely used, and great. This EvEmitter has just the base event functionality to power the event API in libraries like [Isotope](https://isotope.metafizzy.co), [Flickity](https://flickity.metafizzy.co), [Masonry](https://masonry.desandro.com), and [imagesLoaded](https://imagesloaded.desandro.com).

## API

``` js
// class inheritence
class MyClass extends EvEmitter {}

// mixin prototype
Object.assign( MyClass.prototype, EvEmitter.prototype );

// single instance
let emitter = new EvEmitter();
```

### on

Add an event listener.

``` js
emitter.on( eventName, listener )
```

+ `eventName` - _String_ - name of the event
+ `listener` - _Function_

### off

Remove an event listener.

``` js
emitter.off( eventName, listener )
```

### once

Add an event listener to be triggered only once.

``` js
emitter.once( eventName, listener )
```

### emitEvent

Trigger an event.

``` js
emitter.emitEvent( eventName, args )
```

+ `eventName` - _String_ - name of the event
+ `args` - _Array_ - arguments passed to listeners

### allOff

Removes all event listeners.

``` js
emitter.allOff()
```

## Code example

``` js
// create event emitter
var emitter = new EvEmitter();

// listeners
function hey( a, b, c ) {
  console.log( 'Hey', a, b, c )
}

function ho( a, b, c ) {
  console.log( 'Ho', a, b, c )
}

function letsGo( a, b, c ) {
  console.log( 'Lets go', a, b, c )
}

// bind listeners
emitter.on( 'rock', hey )
emitter.on( 'rock', ho )
// trigger letsGo once
emitter.once( 'rock', letsGo )

// emit event
emitter.emitEvent( 'rock', [ 1, 2, 3 ] )
// => 'Hey', 1, 2, 3
// => 'Ho', 1, 2, 3
// => 'Lets go', 1, 2, 3

// unbind
emitter.off( 'rock', ho )

emitter.emitEvent( 'rock', [ 4, 5, 6 ] )
// => 'Hey' 4, 5, 6
```

## Browser support

EvEmitter v2 uses ES6 features like [for...of loops](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) and [class definition](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) as such it supports Chrome 49+, Firefox 45+, Safari 9+, and Edge 13+.

For older browser support, use [EvEmitter v1](https://github.com/metafizzy/ev-emitter/releases/tag/v1.1.1).

## License

EvEmitter is released under the [MIT License](http://desandro.mit-license.org/). Have at it.

---
_Source: https://npm.io/package/ev-emitter · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
