# @prismamedia/ts-typed-event-emitter

Latest version **1.0.2** (published 2020-12-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install @prismamedia/ts-typed-event-emitter
pnpm add @prismamedia/ts-typed-event-emitter
yarn add @prismamedia/ts-typed-event-emitter
bun add @prismamedia/ts-typed-event-emitter
```

## Health

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

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2020-12-03 |
| First published | 2020-10-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=12 |
| Dependencies | 0 |
| Unpacked size | 16.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Maintainers | prismamedia, yvann |

## Links

- npm: https://www.npmjs.com/package/@prismamedia/ts-typed-event-emitter
- Repository: https://github.com/prismamedia/ts-typed-event-emitter
- npm.io page: https://npm.io/package/@prismamedia/ts-typed-event-emitter

## Recent versions

- 1.0.2 (latest) — 2020-12-03
- 1.0.1 — 2020-10-07
- 1.0.0 — 2020-10-07
- 1.0.0-rc.1 — 2020-10-07

## README

**Typescript Typed Event Emitter**

A "typed" version of the native EventEmitter

# Usage

```js
import TypedEventEmitter from '@prismamedia/ts-typed-event-emitter';

// We declare the different types and the data they carry
type Events = {
  pre: [{ at: Date }],
  post: [{ took: number }],
}

// We "type" the data carried by the events like this :
const ee = new TypedEventEmitter<Events>();

// We can listen on events like this :
ee.on('pre', ({ at }) => console.log({ first: at }));
ee.on('pre', ({ at }) => console.log({ second: at }));
ee.on('post', ({ took }) => console.log({ took }));

// [...]

ee.emit('pre', { at: 2000 });
// -> { first: 2000 }
// -> { second: 2000 }

ee.emit('post', { took: 100 });
// -> { took: 100 }
```

## A convenient "wait" methods is available :

```js
// Wait for an event to be triggered
const eventData = await ee.wait('pre');

const eventDataOfTheFirstTriggeredEvent = await ee.wait('pre', 'post');
```

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