Skip to content

Commit 3445479

Browse files
committed
Minimize code for browsers
1 parent 548c3ee commit 3445479

File tree

6 files changed

+40
-50
lines changed

6 files changed

+40
-50
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,13 @@
1313

1414
---
1515

16+
## [v1.1.1](https://github.com/foxifyjs/events/releases/tag/v1.1.1) - _(2019-04-10)_
17+
18+
- :star2: Minimize code for browsers.
19+
1620
## [v1.1.0](https://github.com/foxifyjs/events/releases/tag/v1.1.0) - _(2019-04-04)_
1721

18-
- :star2: Now we `throw` an error when you emit an `error` event and nobody is listening.
22+
- :zap: Now we `throw` an error when you emit an `error` event and nobody is listening.
1923

2024
## [v1.0.0](https://github.com/foxifyjs/events/releases/tag/v1.0.0) - _(2019-03-24)_
2125

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ We use [SemVer](http://semver.org) for versioning. For the versions available, s
7777

7878
## Authors
7979

80-
- **Ardalan Amini** - *Owner/Developer* - [@ardalanamini](https://github.com/ardalanamini)
80+
- **Ardalan Amini** - *Core Maintainer* - [@ardalanamini](https://github.com/ardalanamini)
8181

8282
See also the list of [contributors](https://github.com/foxifyjs/events/contributors) who participated in this project.
8383

package-lock.json

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@foxify/events",
3-
"version": "1.1.0",
3+
"version": "1.1.1",
44
"description": "An EventEmitter alternative for Node.js and browser",
55
"author": "Ardalan Amini <[email protected]> (https://ardalanamini.com)",
66
"license": "MIT",
@@ -38,22 +38,22 @@
3838
"test": "jest",
3939
"coverage": "npm test -- --coverage",
4040
"codecov": "npm run build && npm run coverage -- --runInBand && codecov",
41-
"benchmark": "find benchmarks -name '*.js' -exec benchmarks/start.sh {} \\;"
41+
"benchmarks": "find benchmarks -name '*.js' -exec benchmarks/start.sh {} \\;"
4242
},
4343
"dependencies": {},
4444
"devDependencies": {
4545
"@types/jest": "^24.0.11",
46-
"@types/node": "^11.13.0",
46+
"@types/node": "^11.13.2",
4747
"benchmark": "^2.1.4",
4848
"codecov": "^3.3.0",
4949
"drip": "^1.4.0",
5050
"eventemitter2": "^5.0.1",
5151
"eventemitter3": "^3.1.0",
5252
"jest": "^24.7.1",
53-
"ts-jest": "^24.0.1",
53+
"ts-jest": "^24.0.2",
5454
"tslint": "^5.15.0",
5555
"tslint-config-airbnb": "^5.11.1",
56-
"typescript": "^3.4.1"
56+
"typescript": "^3.4.3"
5757
},
5858
"jest": {
5959
"moduleFileExtensions": [

src/EventEmitter.ts

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -64,23 +64,20 @@ class EventEmitter {
6464
);
6565
}
6666

67-
public listenerCount(event: string | symbol) {
67+
public rawListeners(event: string | symbol) {
6868
assertEvent(event);
6969

70-
const listeners = this._listeners[event as string];
71-
72-
return listeners ? listeners.length : 0;
70+
return this._listeners[event as string] || [];
7371
}
7472

7573
public listeners(event: string | symbol) {
76-
assertEvent(event);
77-
78-
const listeners = this._listeners[event as string];
74+
const listeners = this.rawListeners(event);
75+
const length = listeners.length;
7976

80-
if (!listeners) return [];
77+
if (!length) return [];
8178

82-
const length = listeners.length;
83-
const ret = [];
79+
// tslint:disable-next-line:prefer-array-literal
80+
const ret = new Array(length);
8481

8582
for (let i = 0; i < length; i++) {
8683
ret[i] = listeners[i].listener;
@@ -89,25 +86,14 @@ class EventEmitter {
8986
return ret;
9087
}
9188

92-
public rawListeners(event: string | symbol) {
93-
assertEvent(event);
94-
95-
return this._listeners[event as string] || [];
89+
public listenerCount(event: string | symbol) {
90+
return this.rawListeners(event).length;
9691
}
9792

9893
public emit(event: "error", error: Error): boolean;
9994
public emit(event: string | symbol, ...args: any[]): boolean;
10095
public emit(event: string | symbol, ...args: any[]) {
101-
assertEvent(event);
102-
103-
const listeners = this._listeners[event as string];
104-
105-
if (!listeners) {
106-
if (event === "error") throw args[0];
107-
108-
return false;
109-
}
110-
96+
const listeners = this.rawListeners(event);
11197
const length = listeners.length;
11298

11399
if (!length) {
@@ -184,24 +170,24 @@ class EventEmitter {
184170
event: string | symbol,
185171
listener: (...args: any[]) => void,
186172
) {
187-
assertEvent(event);
188173
assertListener(listener);
189174

190-
let listeners = this._listeners[event as string];
175+
let listeners = this.rawListeners(event);
176+
const length = listeners.length;
191177

192-
if (!listeners) return this;
178+
if (!length) return this;
193179

194-
if (listeners.length === 1) {
180+
if (length === 1) {
195181
if (listener !== listeners[0].listener) return this;
196182

197183
this._listeners[event as string] = undefined;
198184

199185
return this;
200186
}
201187

202-
listeners = [...listeners];
188+
listeners = listeners.slice(0);
203189

204-
let index = listeners.length - 1;
190+
let index = length - 1;
205191
for (; index >= 0; index--) {
206192
if (listeners[index].listener === listener) break;
207193
}

src/Item.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
class Item {
22
constructor(
3-
public listener: (...args: any[]) => void,
4-
public context: any,
5-
public once: boolean,
3+
public readonly listener: (...args: any[]) => void,
4+
public readonly context: any,
5+
public readonly once: boolean,
66
) {}
77
}
88

0 commit comments

Comments
 (0)