From ca520775eb26f5ed501375fdb24ba698c9a8c8c8 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Wed, 20 Jan 2021 10:15:40 +0100 Subject: [PATCH] fix: event emitter types with local types (#80) --- src/pubsub/index.js | 4 +++- src/pubsub/peer-streams.js | 4 +++- src/types.ts | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/types.ts diff --git a/src/pubsub/index.js b/src/pubsub/index.js index e4d83be..4fd93c1 100644 --- a/src/pubsub/index.js +++ b/src/pubsub/index.js @@ -1,7 +1,9 @@ 'use strict' const debug = require('debug') -const { EventEmitter } = require('events') +/** @typedef {import('../types').EventEmitterFactory} Events */ +/** @type Events */ +const EventEmitter = require('events') const errcode = require('err-code') const { pipe } = require('it-pipe') diff --git a/src/pubsub/peer-streams.js b/src/pubsub/peer-streams.js index d238bb5..feedca1 100644 --- a/src/pubsub/peer-streams.js +++ b/src/pubsub/peer-streams.js @@ -1,6 +1,8 @@ 'use strict' -const { EventEmitter } = require('events') +/** @typedef {import('../types').EventEmitterFactory} Events */ +/** @type Events */ +const EventEmitter = require('events') const lp = require('it-length-prefixed') diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..554dfdf --- /dev/null +++ b/src/types.ts @@ -0,0 +1,18 @@ +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; +}