diff --git a/__tests__/unit/core-event-emitter/emitter.test.ts b/__tests__/unit/core-event-emitter/emitter.test.ts index d92aa0dc90..8c06e6bb4e 100755 --- a/__tests__/unit/core-event-emitter/emitter.test.ts +++ b/__tests__/unit/core-event-emitter/emitter.test.ts @@ -1,5 +1,5 @@ -import EventEmitter from "eventemitter3"; import { plugin } from "../../../packages/core-event-emitter/src"; +import { EventEmitter } from "../../../packages/core-event-emitter/src/emitter"; const emitter = plugin.register(); diff --git a/packages/core-event-emitter/package.json b/packages/core-event-emitter/package.json index 26d835ac40..9587bba891 100644 --- a/packages/core-event-emitter/package.json +++ b/packages/core-event-emitter/package.json @@ -17,9 +17,6 @@ "build:watch": "yarn clean && yarn compile -w", "clean": "del dist" }, - "dependencies": { - "eventemitter3": "^3.1.0" - }, "publishConfig": { "access": "public" }, diff --git a/packages/core-event-emitter/src/emitter.ts b/packages/core-event-emitter/src/emitter.ts new file mode 100644 index 0000000000..c87aea0906 --- /dev/null +++ b/packages/core-event-emitter/src/emitter.ts @@ -0,0 +1,30 @@ +import { EventEmitter as NativeEmitter } from "events"; + +export class EventEmitter { + private readonly emitter: NativeEmitter = new NativeEmitter(); + + public emit(event: string | symbol, args: any): boolean { + return this.emitter.emit(event, args); + } + + public on(event: string | symbol, listener: (...args: any) => void): void { + this.ensureMaxListenerCount(event); + + this.emitter.on(event, listener); + } + + public once(event: string | symbol, listener: (...args: any) => void): void { + this.ensureMaxListenerCount(event); + + this.emitter.once(event, listener); + } + + private ensureMaxListenerCount(event): void { + const maxListeners = this.emitter.getMaxListeners(); + const listenerCount = this.emitter.listenerCount(event); + + if (listenerCount >= maxListeners) { + this.emitter.setMaxListeners(maxListeners + 1); + } + } +} diff --git a/packages/core-event-emitter/src/index.ts b/packages/core-event-emitter/src/index.ts index ec20d8dd61..e42d7f1268 100644 --- a/packages/core-event-emitter/src/index.ts +++ b/packages/core-event-emitter/src/index.ts @@ -1,4 +1,4 @@ -import EventEmitter from "eventemitter3"; +import { EventEmitter } from "./emitter"; export const plugin = { pkg: require("../package.json"), diff --git a/packages/core-interfaces/package.json b/packages/core-interfaces/package.json index cac8fb95bb..8d50cf58d8 100644 --- a/packages/core-interfaces/package.json +++ b/packages/core-interfaces/package.json @@ -24,8 +24,7 @@ }, "dependencies": { "@arkecosystem/crypto": "^2.3.0-next.2", - "awilix": "^4.2.1", - "eventemitter3": "^3.1.0" + "awilix": "^4.2.1" }, "publishConfig": { "access": "public" diff --git a/packages/core-interfaces/src/core-event-emitter/index.ts b/packages/core-interfaces/src/core-event-emitter/index.ts index 478f9bc498..764fc472d1 100644 --- a/packages/core-interfaces/src/core-event-emitter/index.ts +++ b/packages/core-interfaces/src/core-event-emitter/index.ts @@ -1,2 +1,3 @@ -import EventEmitter from "eventemitter3"; +import { EventEmitter } from "events"; + export { EventEmitter }; diff --git a/yarn.lock b/yarn.lock index 4ed28c9ce1..16ddec0a47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5577,11 +5577,6 @@ event-lite@^0.1.1: resolved "https://registry.yarnpkg.com/event-lite/-/event-lite-0.1.2.tgz#838a3e0fdddef8cc90f128006c8e55a4e4e4c11b" integrity sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g== -eventemitter3@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== - events@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"