Skip to content

Commit ff72bb6

Browse files
committed
Fixed a bug related to extended strict events
1 parent ef4eae7 commit ff72bb6

File tree

5 files changed

+28
-14
lines changed

5 files changed

+28
-14
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313

1414
---
1515

16+
## [v1.1.3](https://github.com/foxifyjs/events/releases/tag/v1.1.3) - _(2019-04-13)_
17+
18+
- :beetle: Fixed a bug related to extended (with `&` instead of `extends`) strict events.
19+
1620
## [v1.1.2](https://github.com/foxifyjs/events/releases/tag/v1.1.2) - _(2019-04-12)_
1721

1822
- :star2: Added Ability to define strict events.

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
[![NPM Version](https://img.shields.io/npm/v/@foxify/events.svg)](https://www.npmjs.com/package/@foxify/events)
66
[![TypeScript Version](https://img.shields.io/npm/types/@foxify/events.svg)](https://www.typescriptlang.org)
7+
[![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/@foxify/events.svg)](https://www.npmjs.com/package/@foxify/events)
8+
[![npm bundle size (minified + gzip)](https://img.shields.io/bundlephobia/minzip/@foxify/events.svg)](https://www.npmjs.com/package/@foxify/events)
79
[![Tested With Jest](https://img.shields.io/badge/tested_with-jest-99424f.svg)](https://github.com/facebook/jest)
810
[![Pull Requests](https://img.shields.io/badge/PRs-Welcome-brightgreen.svg)](https://github.com/foxifyjs/events/pulls)
911
[![License](https://img.shields.io/github/license/foxifyjs/events.svg)](https://github.com/foxifyjs/events/blob/master/LICENSE)
@@ -32,6 +34,7 @@ This module is API compatible with the EventEmitter that ships by default with N
3234
- [Usage](#usage)
3335
- [Strict events](#strict-events)
3436
- [Contextual emits](#contextual-emits)
37+
- [Benchmarks](#benchmarks)
3538
- [Versioning](#versioning)
3639
- [Authors](#authors)
3740
- [License](#license)
@@ -102,6 +105,12 @@ eventEmitter.prependListener("event:4", emitted, context);
102105
eventEmitter.prependOnceListener("event:5", emitted, context);
103106
```
104107

108+
## Benchmarks
109+
110+
```bash
111+
npm run benchmarks
112+
```
113+
105114
## Versioning
106115

107116
We use [SemVer](http://semver.org) for versioning. For the versions available, see the [tags on this repository](https://github.com/foxifyjs/events/tags).

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@foxify/events",
3-
"version": "1.1.2",
3+
"version": "1.1.3",
44
"description": "A high performance EventEmitter alternative for Node.js and browser",
55
"author": "Ardalan Amini <[email protected]> (https://ardalanamini.com)",
66
"license": "MIT",

src/EventEmitter.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,18 @@ namespace EventEmitter {
4444
[E in string | symbol]: EventEmitter.DefaultListener
4545
};
4646

47-
export type Event<Events extends {}> = Extract<
48-
keyof Events,
49-
string | symbol
50-
>;
47+
export type Event<Events extends {}> = Extract<keyof Events, string | symbol>;
5148

5249
export type EmitArgs<T> = [T] extends [(...args: infer U) => any]
5350
? U
5451
: [T] extends [void]
5552
? []
5653
: [T];
5754

55+
export type Listener<E extends {}, K extends keyof E> = (
56+
...args: EmitArgs<E[K]>
57+
) => void;
58+
5859
export interface Listeners {
5960
[event: string]: Item[] | undefined;
6061
}
@@ -64,14 +65,14 @@ interface EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
6465
on(event: "error", listener: (error: Error) => void, context?: any): this;
6566
on<K extends EventEmitter.Event<Events>>(
6667
event: K,
67-
listener: Events[K],
68+
listener: EventEmitter.Listener<Events, K>,
6869
context?: any,
6970
): this;
7071

7172
off(event: "error", listener: (error: Error) => void): this;
7273
off<K extends EventEmitter.Event<Events>>(
7374
event: K,
74-
listener: Events[K],
75+
listener: EventEmitter.Listener<Events, K>,
7576
): this;
7677
}
7778

@@ -97,7 +98,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
9798
public listeners(event: "error"): EventEmitter.DefaultListener[];
9899
public listeners<K extends EventEmitter.Event<Events>>(
99100
event: K,
100-
): Array<Events[K]>;
101+
): Array<EventEmitter.Listener<Events, K>>;
101102
public listeners(event: string | symbol) {
102103
const listeners = this.rawListeners(event as any);
103104
const length = listeners.length;
@@ -152,7 +153,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
152153
): this;
153154
public addListener<K extends EventEmitter.Event<Events>>(
154155
event: K,
155-
listener: Events[K],
156+
listener: EventEmitter.Listener<Events, K>,
156157
context?: any,
157158
): this;
158159
public addListener(
@@ -170,7 +171,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
170171
): this;
171172
public once<K extends EventEmitter.Event<Events>>(
172173
event: K,
173-
listener: Events[K],
174+
listener: EventEmitter.Listener<Events, K>,
174175
context?: any,
175176
): this;
176177
public once(
@@ -188,7 +189,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
188189
): this;
189190
public prependListener<K extends EventEmitter.Event<Events>>(
190191
event: K,
191-
listener: Events[K],
192+
listener: EventEmitter.Listener<Events, K>,
192193
context?: any,
193194
): this;
194195
public prependListener(
@@ -206,7 +207,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
206207
): this;
207208
public prependOnceListener<K extends EventEmitter.Event<Events>>(
208209
event: K,
209-
listener: Events[K],
210+
listener: EventEmitter.Listener<Events, K>,
210211
context?: any,
211212
): this;
212213
public prependOnceListener(
@@ -245,7 +246,7 @@ class EventEmitter<Events extends {} = EventEmitter.DefaultEvents> {
245246
public removeListener(event: "error", listener: (error: Error) => void): this;
246247
public removeListener<K extends EventEmitter.Event<Events>>(
247248
event: K,
248-
listener: Events[K],
249+
listener: EventEmitter.Listener<Events, K>,
249250
): this;
250251
public removeListener(
251252
event: string | symbol,

0 commit comments

Comments
 (0)