Skip to content

Commit 1b7767a

Browse files
committed
refactor: use EventEmitter from @dedot/utils
1 parent 2f2741f commit 1b7767a

File tree

3 files changed

+1
-73
lines changed

3 files changed

+1
-73
lines changed

packages/typink/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
},
1414
"dependencies": {
1515
"dedot": "^0.6.1",
16-
"eventemitter3": "^5.0.1",
1716
"fast-deep-equal": "^3.1.3",
1817
"react": "^18.3.1",
1918
"react-use": "^17.6.0"
Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { EventEmitter as EE } from 'eventemitter3';
1+
import { EventEmitter } from 'dedot/utils'
22
import type { FrameSystemEventRecord } from 'dedot/chaintypes';
33

44
export type SystemEventsListener = (events: FrameSystemEventRecord[]) => void;
@@ -8,76 +8,6 @@ export enum InternalEvent {
88
SystemEvents = 'SYSTEM_EVENTS',
99
}
1010

11-
export interface IEventEmitter<EventTypes extends string = string> {
12-
on(event: EventTypes, handler: HandlerFn): Unsub;
13-
once(event: EventTypes, handler: HandlerFn): Unsub;
14-
off(event: EventTypes, handler?: HandlerFn): this;
15-
}
16-
17-
const handlerWrapper = (handler: HandlerFn): HandlerFn => {
18-
return (...args: any[]) => {
19-
try {
20-
handler(...args);
21-
} catch {
22-
// ignore this!
23-
}
24-
};
25-
};
26-
27-
export class EventEmitter<EventTypes extends string = string> implements IEventEmitter<EventTypes> {
28-
#emitter: EE;
29-
#mapper: Map<HandlerFn, HandlerFn>;
30-
31-
constructor() {
32-
this.#emitter = new EE();
33-
this.#mapper = new Map();
34-
}
35-
36-
emit(event: EventTypes, ...args: any[]): boolean {
37-
return this.#emitter.emit(event, ...args);
38-
}
39-
40-
protected clearEvents() {
41-
this.#emitter.removeAllListeners();
42-
this.#mapper.clear();
43-
}
44-
45-
public on(event: EventTypes, handler: HandlerFn): Unsub {
46-
const wrapper = handlerWrapper(handler);
47-
this.#mapper.set(handler, wrapper);
48-
this.#emitter.on(event, wrapper);
49-
50-
return () => {
51-
this.off(event, handler);
52-
};
53-
}
54-
55-
public once(event: EventTypes, handler: HandlerFn): Unsub {
56-
const wrapper = handlerWrapper(handler);
57-
this.#mapper.set(handler, wrapper);
58-
59-
this.#emitter.once(event, wrapper);
60-
61-
return () => {
62-
this.off(event, handler);
63-
};
64-
}
65-
66-
public off(event: EventTypes, handler?: HandlerFn): this {
67-
if (handler) {
68-
const wrapper = this.#mapper.get(handler);
69-
if (!wrapper) return this;
70-
71-
this.#emitter.off(event, wrapper);
72-
this.#mapper.delete(handler);
73-
} else {
74-
this.#emitter.off(event);
75-
}
76-
77-
return this;
78-
}
79-
}
80-
8111
export default new EventEmitter();
8212

8313

yarn.lock

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13259,7 +13259,6 @@ __metadata:
1325913259
dependencies:
1326013260
"@types/react": "npm:^18.3.16"
1326113261
dedot: "npm:^0.6.1"
13262-
eventemitter3: "npm:^5.0.1"
1326313262
fast-deep-equal: "npm:^3.1.3"
1326413263
react: "npm:^18.3.1"
1326513264
react-use: "npm:^17.6.0"

0 commit comments

Comments
 (0)