diff --git a/src/connection-manager/index.js b/src/connection-manager/index.js index 4add4840..99a6ae1d 100644 --- a/src/connection-manager/index.js +++ b/src/connection-manager/index.js @@ -10,7 +10,9 @@ const mergeOptions = require('merge-options') const LatencyMonitor = require('./latency-monitor') const retimer = require('retimer') -const { EventEmitter } = require('events') +/** @typedef {import('../types').EventEmitterFactory} Events */ +/** @type Events */ +const EventEmitter = require('events') const PeerId = require('peer-id') diff --git a/src/connection-manager/latency-monitor.js b/src/connection-manager/latency-monitor.js index c9301ee1..094e5963 100644 --- a/src/connection-manager/latency-monitor.js +++ b/src/connection-manager/latency-monitor.js @@ -7,7 +7,9 @@ /* global window */ const globalThis = require('ipfs-utils/src/globalthis') -const { EventEmitter } = require('events') +/** @typedef {import('../types').EventEmitterFactory} Events */ +/** @type Events */ +const EventEmitter = require('events') const VisibilityChangeEmitter = require('./visibility-change-emitter') const debug = require('debug')('latency-monitor:LatencyMonitor') diff --git a/src/connection-manager/visibility-change-emitter.js b/src/connection-manager/visibility-change-emitter.js index ebe5e7d0..bf7da71b 100644 --- a/src/connection-manager/visibility-change-emitter.js +++ b/src/connection-manager/visibility-change-emitter.js @@ -6,7 +6,9 @@ */ 'use strict' -const { EventEmitter } = require('events') +/** @typedef {import('../types').EventEmitterFactory} Events */ +/** @type Events */ +const EventEmitter = require('events') const debug = require('debug')('latency-monitor:VisibilityChangeEmitter') diff --git a/src/index.js b/src/index.js index 8393d3fa..335612e0 100644 --- a/src/index.js +++ b/src/index.js @@ -4,7 +4,9 @@ const debug = require('debug') const log = Object.assign(debug('libp2p'), { error: debug('libp2p:err') }) -const { EventEmitter } = require('events') +/** @typedef {import('./types').EventEmitterFactory} Events */ +/** @type Events */ +const EventEmitter = require('events') const globalThis = require('ipfs-utils/src/globalthis') const errCode = require('err-code') diff --git a/src/metrics/stats.js b/src/metrics/stats.js index e35ab311..f820c5b4 100644 --- a/src/metrics/stats.js +++ b/src/metrics/stats.js @@ -1,7 +1,9 @@ // @ts-nocheck 'use strict' -const { EventEmitter } = require('events') +/** @typedef {import('../types').EventEmitterFactory} Events */ +/** @type Events */ +const EventEmitter = require('events') const Big = require('bignumber.js') const MovingAverage = require('moving-average') const retimer = require('retimer') diff --git a/src/peer-store/index.js b/src/peer-store/index.js index b3df1bbb..07412290 100644 --- a/src/peer-store/index.js +++ b/src/peer-store/index.js @@ -2,7 +2,9 @@ const errcode = require('err-code') -const { EventEmitter } = require('events') +/** @typedef {import('../types').EventEmitterFactory} Events */ +/** @type Events */ +const EventEmitter = require('events') const PeerId = require('peer-id') const AddressBook = require('./address-book') diff --git a/src/types.ts b/src/types.ts index 3e87d7c8..16c00ef1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -82,3 +82,22 @@ export type CircuitMessageProto = { CAN_HOP: CAN_HOP } } + +export interface EventEmitterFactory { + new(): EventEmitter; +} + +export interface EventEmitter { + addListener(event: string | symbol, listener: (...args: any[]) => void); + on(event: string | symbol, listener: (...args: any[]) => void); + once(event: string | symbol, listener: (...args: any[]) => void); + removeListener(event: string | symbol, listener: (...args: any[]) => void); + off(event: string | symbol, listener: (...args: any[]) => void); + removeAllListeners(event?: string | symbol); + setMaxListeners(n: number); + getMaxListeners(): number; + listeners(event: string | symbol): Function[]; // eslint-disable-line @typescript-eslint/ban-types + rawListeners(event: string | symbol): Function[]; // eslint-disable-line @typescript-eslint/ban-types + emit(event: string | symbol, ...args: any[]): boolean; + listenerCount(event: string | symbol): number; +}