From 20e9a6e0e595297340e1b83f3b8e521e78277c19 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Sat, 8 Apr 2023 16:11:03 -0400 Subject: [PATCH] * Add EventEmitter2 library for event handling and remove EventEmitter3 library in index.ts; update package.json to include EventEmitter2 library. --- package.json | 2 +- src/index.ts | 35 ++++++++++++++++++----------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index e88cec4..6936e5e 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,13 @@ "async-mutex": "^0.4.0", "b4a": "^1.6.3", "backoff.js": "^1.0.4", - "eventemitter3": "^5.0.0", "p-defer": "^4.0.0", "protomux": "git+https://git.lumeweb.com/LumeWeb/protomux.git" }, "devDependencies": { "@types/b4a": "^1.6.0", "@types/node": "^18.15.11", + "eventemitter2": "^6.4.9", "prettier": "^2.8.7", "pretty": "^2.0.0", "typescript": "^4.9.5" diff --git a/src/index.ts b/src/index.ts index 53f4868..fe8a823 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,14 +4,19 @@ import { DataFn, ErrTuple, hexToBuf } from "@siaweb/libweb"; import { blake2b } from "@noble/hashes/blake2b"; import b4a from "b4a"; -import type { EventEmitter } from "eventemitter3"; - // @ts-ignore import Backoff from "backoff.js"; import { Mutex } from "async-mutex"; // @ts-ignore import Protomux from "protomux"; -import defer from "p-defer"; + +import type { + eventNS, + event, + ListenerFn, + OnOptions, + Listener, +} from "eventemitter2"; export class SwarmClient extends Client { private useDefaultSwarm: boolean; @@ -193,11 +198,12 @@ export class Socket extends Client { this._rawStream = info.rawStream; await this.swarm.emitAsync("setup", this); } - on>( - event: T, - fn: EventEmitter.EventListener, - context?: any - ): this { + + on( + event: event | eventNS, + listener: ListenerFn, + options?: boolean | OnOptions + ): this | Listener { const [update, promise] = this.connectModule( "socketListenEvent", { id: this.id, event: event }, @@ -208,24 +214,19 @@ export class Socket extends Client { this.trackEvent(event as string, update); promise.then(() => { - this.off(event as string, fn); + this.off(event as string, listener); }); - return super.on(event, fn, context) as this; + return super.on(event, listener, options); } - off>( - event: T, - fn?: EventEmitter.EventListener, - context?: any, - once?: boolean - ): this { + off(event: event | eventNS, listener: ListenerFn): this { const updates = [...this.eventUpdates[event as string]]; this.eventUpdates[event as string] = []; for (const func of updates) { func(); } - return super.off(event, fn, context, once); + return super.off(event, listener); } write(message: string | Buffer): void {