@anephenix/event-emitter 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/EventEmitter.d.ts +2 -2
- package/dist/EventEmitter.js +12 -0
- package/dist/EventEmitter.js.map +1 -1
- package/package.json +2 -2
- package/src/EventEmitter.ts +0 -37
- package/src/index.ts +0 -2
package/README.md
CHANGED
|
@@ -108,6 +108,20 @@ emitter.emit("join", "Alice");
|
|
|
108
108
|
This will help with preventing the misspelling of event names and also ensuring
|
|
109
109
|
that the event data payloads are correct.
|
|
110
110
|
|
|
111
|
+
## Applying multiple event names for the same listener
|
|
112
|
+
|
|
113
|
+
If you find that you have multiple event names calling the same function, and
|
|
114
|
+
you would like to DRY up your code a bit, you can pass the event names in an
|
|
115
|
+
array to the `on` function like this:
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
emitter.on(['user-join', 'bot-join'], (username:string) => {
|
|
119
|
+
console.log(`${username} joined`);
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
It also works for `off` calls as well.
|
|
124
|
+
|
|
111
125
|
## Tests
|
|
112
126
|
|
|
113
127
|
You can run the unit tests using this command:
|
package/dist/EventEmitter.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ declare class EventEmitter<T extends EventMap> {
|
|
|
5
5
|
};
|
|
6
6
|
enableLogging: boolean;
|
|
7
7
|
log(...args: unknown[]): void;
|
|
8
|
-
on<K extends keyof T>(event: K, listener: T[K]): void;
|
|
9
|
-
off<K extends keyof T>(event: K, listener: T[K]): void;
|
|
8
|
+
on<K extends keyof T>(event: K | K[], listener: T[K]): void;
|
|
9
|
+
off<K extends keyof T>(event: K | K[], listener: T[K]): void;
|
|
10
10
|
emit<K extends keyof T>(event: K, ...args: Parameters<T[K]>): void;
|
|
11
11
|
}
|
|
12
12
|
export default EventEmitter;
|
package/dist/EventEmitter.js
CHANGED
|
@@ -9,12 +9,24 @@ class EventEmitter {
|
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
on(event, listener) {
|
|
12
|
+
if (Array.isArray(event)) {
|
|
13
|
+
for (const ev of event) {
|
|
14
|
+
this.on(ev, listener);
|
|
15
|
+
}
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
12
18
|
if (!this.events[event]) {
|
|
13
19
|
this.events[event] = [];
|
|
14
20
|
}
|
|
15
21
|
this.events[event].push(listener);
|
|
16
22
|
}
|
|
17
23
|
off(event, listener) {
|
|
24
|
+
if (Array.isArray(event)) {
|
|
25
|
+
for (const ev of event) {
|
|
26
|
+
this.off(ev, listener);
|
|
27
|
+
}
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
18
30
|
const listeners = this.events[event];
|
|
19
31
|
if (!listeners)
|
|
20
32
|
return;
|
package/dist/EventEmitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../src/EventEmitter.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY;IAAlB;QACC,WAAM,GAAgC,EAAE,CAAC;QACzC,kBAAa,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../src/EventEmitter.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY;IAAlB;QACC,WAAM,GAAgC,EAAE,CAAC;QACzC,kBAAa,GAAG,KAAK,CAAC;IAyCvB,CAAC;IAvCA,GAAG,CAAC,GAAG,IAAe;QACrB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IAED,EAAE,CAAoB,KAAc,EAAE,QAAc;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACvB,CAAC;YACD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAoB,KAAc,EAAE,QAAc;QACpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACxB,CAAC;YACD,OAAO;QACR,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAoB,KAAQ,EAAE,GAAG,IAAsB;QAC1D,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;CACD;AAED,eAAe,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anephenix/event-emitter",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"description": "A small EventEmitter library",
|
|
5
5
|
"author": "Paul Jensen <paul@anephenix.com>",
|
|
6
6
|
"maintainers": [
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|
|
35
|
-
"
|
|
35
|
+
"README.md"
|
|
36
36
|
],
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "tsc --project tsconfig.json",
|
package/src/EventEmitter.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// Generic type for an event map where each key has a listener signature
|
|
2
|
-
export type EventMap = Record<string, (...args: unknown[]) => void>;
|
|
3
|
-
|
|
4
|
-
class EventEmitter<T extends EventMap> {
|
|
5
|
-
events: { [K in keyof T]?: T[K][] } = {};
|
|
6
|
-
enableLogging = false;
|
|
7
|
-
|
|
8
|
-
log(...args: unknown[]) {
|
|
9
|
-
if (this.enableLogging) {
|
|
10
|
-
console.log(...args);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
on<K extends keyof T>(event: K, listener: T[K]): void {
|
|
15
|
-
if (!this.events[event]) {
|
|
16
|
-
this.events[event] = [];
|
|
17
|
-
}
|
|
18
|
-
this.events[event].push(listener);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
off<K extends keyof T>(event: K, listener: T[K]): void {
|
|
22
|
-
const listeners = this.events[event];
|
|
23
|
-
if (!listeners) return;
|
|
24
|
-
this.events[event] = listeners.filter((l) => l !== listener);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
emit<K extends keyof T>(event: K, ...args: Parameters<T[K]>): void {
|
|
28
|
-
this.log("Emitting event:", event, "with args:", ...args);
|
|
29
|
-
const listeners = this.events[event];
|
|
30
|
-
if (!listeners) return;
|
|
31
|
-
for (const listener of listeners) {
|
|
32
|
-
listener(...args);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export default EventEmitter;
|
package/src/index.ts
DELETED