From f86328c5cdb4c5a83ee0c941feba3b6ef8e5c016 Mon Sep 17 00:00:00 2001 From: Chad Nehemiah Date: Mon, 20 Feb 2023 03:01:58 -0500 Subject: [PATCH] chore: upgrade aegir to `38.1.2` (#182) --- package.json | 6 +++--- src/compat/index.ts | 14 ++++++------- src/compat/querier.ts | 16 +++++++-------- src/compat/responder.ts | 8 ++++---- src/index.ts | 14 ++++++------- src/query.ts | 8 ++++---- test/compat/go-multicast-dns.spec.ts | 8 ++++---- test/compat/querier.spec.ts | 25 +++++++++++------------ test/compat/responder.spec.ts | 9 +++++---- test/multicast-dns.spec.ts | 30 +++++++++++++++++----------- 10 files changed, 71 insertions(+), 67 deletions(-) diff --git a/package.json b/package.json index baa40be..30be638 100644 --- a/package.json +++ b/package.json @@ -143,14 +143,14 @@ "@libp2p/peer-id": "^2.0.0", "@multiformats/multiaddr": "^11.0.0", "@types/multicast-dns": "^7.2.1", - "multicast-dns": "^7.2.0", - "multiformats": "^11.0.0" + "dns-packet": "^5.4.0", + "multicast-dns": "^7.2.0" }, "devDependencies": { "@libp2p/interface-address-manager": "^2.0.0", "@libp2p/interface-peer-discovery-compliance-tests": "^2.0.0", "@libp2p/peer-id-factory": "^2.0.0", - "aegir": "^37.9.1", + "aegir": "^38.1.2", "delay": "^5.0.0", "p-defer": "^4.0.0", "p-wait-for": "^5.0.0", diff --git a/src/compat/index.ts b/src/compat/index.ts index 17b65af..2b896e3 100644 --- a/src/compat/index.ts +++ b/src/compat/index.ts @@ -37,28 +37,26 @@ export class GoMulticastDNS extends EventEmitter implements return true } - get [Symbol.toStringTag] () { + get [Symbol.toStringTag] (): '@libp2p/go-mdns' { return '@libp2p/go-mdns' } - isStarted () { + isStarted (): boolean { return this._started } - async start () { + async start (): Promise { if (this.isStarted()) { return } this._started = true - await Promise.all([ - this._responder.start(), - this._querier.start() - ]) + await this._responder.start() + await this._querier.start() } - async stop () { + async stop (): Promise { if (!this.isStarted()) { return } diff --git a/src/compat/querier.ts b/src/compat/querier.ts index 7c46c2d..9b8aebf 100644 --- a/src/compat/querier.ts +++ b/src/compat/querier.ts @@ -53,15 +53,15 @@ export class Querier extends EventEmitter implements PeerDi return true } - get [Symbol.toStringTag] () { + get [Symbol.toStringTag] (): '@libp2p/go-mdns-querier' { return '@libp2p/go-mdns-querier' } - isStarted () { + isStarted (): boolean { return Boolean(this._handle) } - start () { + async start (): Promise { this._handle = periodically(() => { // Create a querier that queries multicast but gets responses unicast const mdns = MDNS({ multicast: false, interface: '0.0.0.0', port: 0 }) @@ -84,7 +84,7 @@ export class Querier extends EventEmitter implements PeerDi return { stop: async () => { mdns.removeListener('response', this._onResponse) - return await new Promise(resolve => mdns.destroy(resolve)) + await new Promise(resolve => { mdns.destroy(resolve as () => void) }) } } }, { @@ -93,7 +93,7 @@ export class Querier extends EventEmitter implements PeerDi }) } - _onResponse (event: ResponsePacket, info: RemoteInfo) { + _onResponse (event: ResponsePacket, info: RemoteInfo): void { log.trace('received mDNS query response') const answers = event.answers ?? [] @@ -116,7 +116,7 @@ export class Querier extends EventEmitter implements PeerDi })) } - async stop () { + async stop (): Promise { if (this._handle != null) { await this._handle.stop() } @@ -128,12 +128,12 @@ export class Querier extends EventEmitter implements PeerDi * running it again. `fn` must return an object with a stop function, which is * called when the period expires. */ -function periodically (fn: () => Handle, options: { period: number, interval: number }) { +function periodically (fn: () => Handle, options: { period: number, interval: number }): { stop: () => Promise } { let handle: Handle | null let timeoutId: NodeJS.Timer let stopped = false - const reRun = () => { + const reRun = (): void => { handle = fn() timeoutId = setTimeout(() => { if (handle != null) { diff --git a/src/compat/responder.ts b/src/compat/responder.ts index 08cb829..5cd71e9 100644 --- a/src/compat/responder.ts +++ b/src/compat/responder.ts @@ -18,12 +18,12 @@ export class Responder { this._onQuery = this._onQuery.bind(this) } - start () { + async start (): Promise { this._mdns = MDNS() this._mdns.on('query', this._onQuery) } - _onQuery (event: QueryPacket, info: RemoteInfo) { + _onQuery (event: QueryPacket, info: RemoteInfo): void { const addresses = this.components.addressManager.getAddresses().reduce((acc, addr) => { addr = addr.decapsulateCode(protocols('p2p').code) @@ -101,10 +101,10 @@ export class Responder { } } - stop () { + async stop (): Promise { if (this._mdns != null) { this._mdns.removeListener('query', this._onQuery) - return new Promise(resolve => { + await new Promise(resolve => { if (this._mdns != null) { this._mdns.destroy(resolve) } else { diff --git a/src/index.ts b/src/index.ts index 8049669..09dadd0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -66,11 +66,11 @@ class MulticastDNS extends EventEmitter implements PeerDisc return true } - get [Symbol.toStringTag] () { + get [Symbol.toStringTag] (): '@libp2p/mdns' { return '@libp2p/mdns' } - isStarted () { + isStarted (): boolean { return Boolean(this.mdns) } @@ -79,7 +79,7 @@ class MulticastDNS extends EventEmitter implements PeerDisc * * @returns {void} */ - async start () { + async start (): Promise { if (this.mdns != null) { return } @@ -95,7 +95,7 @@ class MulticastDNS extends EventEmitter implements PeerDisc } } - _onMdnsQuery (event: multicastDNS.QueryPacket) { + _onMdnsQuery (event: multicastDNS.QueryPacket): void { if (this.mdns == null) { return } @@ -104,7 +104,7 @@ class MulticastDNS extends EventEmitter implements PeerDisc query.gotQuery(event, this.mdns, this.components.peerId, this.components.addressManager.getAddresses(), this.serviceTag, this.broadcast) } - _onMdnsResponse (event: multicastDNS.ResponsePacket) { + _onMdnsResponse (event: multicastDNS.ResponsePacket): void { log.trace('received mDNS query response') try { @@ -122,7 +122,7 @@ class MulticastDNS extends EventEmitter implements PeerDisc } } - _onPeer (evt: CustomEvent) { + _onPeer (evt: CustomEvent): void { if (this.mdns == null) { return } @@ -137,7 +137,7 @@ class MulticastDNS extends EventEmitter implements PeerDisc * * @returns {Promise} */ - async stop () { + async stop (): Promise { if (this.mdns == null) { return } diff --git a/src/query.ts b/src/query.ts index 81164cf..44dacc7 100644 --- a/src/query.ts +++ b/src/query.ts @@ -10,8 +10,8 @@ import type { SrvAnswer, StringAnswer, TxtAnswer, Answer } from 'dns-packet' const log = logger('libp2p:mdns:query') -export function queryLAN (mdns: MulticastDNS, serviceTag: string, interval: number) { - const query = () => { +export function queryLAN (mdns: MulticastDNS, serviceTag: string, interval: number): NodeJS.Timer { + const query = (): void => { log('query', serviceTag) mdns.query({ @@ -98,7 +98,7 @@ export function gotResponse (rsp: ResponsePacket, localPeerId: PeerId, serviceTa } } -export function gotQuery (qry: QueryPacket, mdns: MulticastDNS, peerId: PeerId, multiaddrs: Multiaddr[], serviceTag: string, broadcast: boolean) { +export function gotQuery (qry: QueryPacket, mdns: MulticastDNS, peerId: PeerId, multiaddrs: Multiaddr[], serviceTag: string, broadcast: boolean): void { if (!broadcast) { log('not responding to mDNS query as broadcast mode is false') return @@ -139,7 +139,7 @@ export function gotQuery (qry: QueryPacket, mdns: MulticastDNS, peerId: PeerId, data: { priority: 10, weight: 1, - port: port, + port, target: os.hostname() } }) diff --git a/test/compat/go-multicast-dns.spec.ts b/test/compat/go-multicast-dns.spec.ts index 13923e7..5de4508 100644 --- a/test/compat/go-multicast-dns.spec.ts +++ b/test/compat/go-multicast-dns.spec.ts @@ -10,7 +10,7 @@ import type { PeerInfo } from '@libp2p/interface-peer-info' let port = 20000 -async function createGoMulticastDNS () { +async function createGoMulticastDNS (): Promise<{ mdns: GoMulticastDNS, components: any }> { const peerId = await createEd25519PeerId() const addressManager = stubInterface() addressManager.getAddresses.returns([ @@ -36,7 +36,7 @@ describe('GoMulticastDNS', () => { const { mdns } = await createGoMulticastDNS() await mdns.start() - return await mdns.stop() + await mdns.stop() }) it('should ignore multiple start calls', async () => { @@ -45,7 +45,7 @@ describe('GoMulticastDNS', () => { await mdns.start() await mdns.start() - return await mdns.stop() + await mdns.stop() }) it('should ignore unnecessary stop calls', async () => { @@ -62,7 +62,7 @@ describe('GoMulticastDNS', () => { mdnsA.addEventListener('peer', (evt) => { const { id } = evt.detail - if (!componentsB.peerId.equals(id)) { + if (componentsB.peerId.equals(id) !== true) { return } diff --git a/test/compat/querier.spec.ts b/test/compat/querier.spec.ts index 4ff3c51..a475b14 100644 --- a/test/compat/querier.spec.ts +++ b/test/compat/querier.spec.ts @@ -27,9 +27,9 @@ describe('Querier', () => { }) afterEach(async () => { + mdns?.destroy() return await Promise.all([ - querier?.stop(), - mdns?.destroy() + querier?.stop() ]) }) @@ -60,7 +60,7 @@ describe('Querier', () => { }) it('should not emit peer for responses with non matching service tags', async () => { - return await ensureNoPeer(event => { + await ensureNoPeer(event => { const peerServiceTagLocal = `${peerIds[1].toString()}.${SERVICE_TAG_LOCAL}` const bogusServiceTagLocal = '_ifps-discovery._udp' @@ -75,7 +75,7 @@ describe('Querier', () => { }) it('should not emit peer for responses with missing TXT record', async () => { - return await ensureNoPeer(event => { + await ensureNoPeer(event => { const peerServiceTagLocal = `${peerIds[1].toString()}.${SERVICE_TAG_LOCAL}` return [{ @@ -89,7 +89,7 @@ describe('Querier', () => { }) it('should not emit peer for responses with missing peer ID in TXT record', async () => { - return await ensureNoPeer(event => { + await ensureNoPeer(event => { const peerServiceTagLocal = `${peerIds[1].toString()}.${SERVICE_TAG_LOCAL}` return [{ @@ -109,7 +109,7 @@ describe('Querier', () => { }) it('should not emit peer for responses to self', async () => { - return await ensureNoPeer(event => { + await ensureNoPeer(event => { const peerServiceTagLocal = `${peerIds[1].toString()}.${SERVICE_TAG_LOCAL}` return [{ @@ -128,9 +128,8 @@ describe('Querier', () => { }) }) - // TODO: unskip when https://github.com/libp2p/js-peer-id/issues/83 is resolved it('should not emit peer for responses with invalid peer ID in TXT record', async () => { - return await ensureNoPeer(event => { + await ensureNoPeer(event => { const peerServiceTagLocal = `${peerIds[1].toString()}.${SERVICE_TAG_LOCAL}` return [{ @@ -150,7 +149,7 @@ describe('Querier', () => { }) it('should not emit peer for responses with missing SRV record', async () => { - return await ensureNoPeer(event => { + await ensureNoPeer(event => { const peerServiceTagLocal = `${peerIds[1].toString()}.${SERVICE_TAG_LOCAL}` return [{ @@ -170,7 +169,7 @@ describe('Querier', () => { }) it('should emit peer for responses even if no multiaddrs', async () => { - return await ensurePeer(event => { + await ensurePeer(event => { const peerServiceTagLocal = `${peerIds[1].toString()}.${SERVICE_TAG_LOCAL}` return [{ @@ -201,7 +200,7 @@ describe('Querier', () => { }) it('should emit peer for responses with valid multiaddrs', async () => { - return await ensurePeer(event => { + await ensurePeer(event => { const peerServiceTagLocal = `${peerIds[1].toString()}.${SERVICE_TAG_LOCAL}` return [{ @@ -242,7 +241,7 @@ describe('Querier', () => { * * @param {Function} getResponse - Given a query, construct a response to test the querier */ - async function ensurePeer (getResponse: (event: QueryPacket, info: RemoteInfo) => Answer[]) { + async function ensurePeer (getResponse: (event: QueryPacket, info: RemoteInfo) => Answer[]): Promise { const querier = new Querier({ peerId: peerIds[0] }) mdns = MDNS() @@ -278,7 +277,7 @@ describe('Querier', () => { * * @param {Function} getResponse - Given a query, construct a response to test the querier */ - async function ensureNoPeer (getResponse: (event: QueryPacket, info: RemoteInfo) => Answer[]) { + async function ensureNoPeer (getResponse: (event: QueryPacket, info: RemoteInfo) => Answer[]): Promise { const querier = new Querier({ peerId: peerIds[0] }) mdns = MDNS() diff --git a/test/compat/responder.spec.ts b/test/compat/responder.spec.ts index 247a83f..5f2b0cc 100644 --- a/test/compat/responder.spec.ts +++ b/test/compat/responder.spec.ts @@ -42,9 +42,10 @@ describe('Responder', () => { }) afterEach(async () => { + mdns?.destroy() + return await Promise.all([ - responder?.stop(), - mdns?.destroy() + responder?.stop() ]) }) @@ -125,7 +126,7 @@ describe('Responder', () => { const peerInfo = findPeerInfoInAnswers(event.answers, peerIds[1]) if (peerInfo == null) { - return defer.reject(new Error('Could not read PeerData from mDNS query response')) + defer.reject(new Error('Could not read PeerData from mDNS query response')); return } defer.resolve(peerInfo) @@ -146,7 +147,7 @@ describe('Responder', () => { }) }) -function isResponseFrom (res: ResponsePacket, fromPeerId: PeerId) { +function isResponseFrom (res: ResponsePacket, fromPeerId: PeerId): boolean { const answers = res.answers ?? [] const ptrRecord = answers.find(a => a.type === 'PTR' && a.name === SERVICE_TAG_LOCAL) if (ptrRecord == null) return false // Ignore irrelevant diff --git a/test/multicast-dns.spec.ts b/test/multicast-dns.spec.ts index f9b285c..d517b96 100644 --- a/test/multicast-dns.spec.ts +++ b/test/multicast-dns.spec.ts @@ -8,11 +8,11 @@ import pWaitFor from 'p-wait-for' import { mdns } from './../src/index.js' import type { PeerId } from '@libp2p/interface-peer-id' import type { PeerInfo } from '@libp2p/interface-peer-info' -import { stubInterface } from 'ts-sinon' +import { StubbedInstance, stubInterface } from 'ts-sinon' import type { AddressManager } from '@libp2p/interface-address-manager' import { start, stop } from '@libp2p/interfaces/startable' -function getComponents (peerId: PeerId, multiaddrs: Multiaddr[]) { +function getComponents (peerId: PeerId, multiaddrs: Multiaddr[]): { peerId: PeerId, addressManager: StubbedInstance } { const addressManager = stubInterface() addressManager.getAddresses.returns(multiaddrs) @@ -78,9 +78,11 @@ describe('MulticastDNS', () => { await start(mdnsA, mdnsB) - const { detail: { id } } = await new Promise>((resolve) => mdnsA.addEventListener('peer', resolve, { - once: true - })) + const { detail: { id } } = await new Promise>((resolve) => { + mdnsA.addEventListener('peer', resolve, { + once: true + }) + }) expect(pB.toString()).to.eql(id.toString()) @@ -109,7 +111,7 @@ describe('MulticastDNS', () => { const peers = new Map() const expectedPeer = pC.toString() - const foundPeer = (evt: CustomEvent) => peers.set(evt.detail.id.toString(), evt.detail) + const foundPeer = (evt: CustomEvent): Map => peers.set(evt.detail.id.toString(), evt.detail) mdnsA.addEventListener('peer', foundPeer) await pWaitFor(() => peers.has(expectedPeer)) @@ -136,9 +138,11 @@ describe('MulticastDNS', () => { await start(mdnsA, mdnsB) - const { detail: { id, multiaddrs } } = await new Promise>((resolve) => mdnsA.addEventListener('peer', resolve, { - once: true - })) + const { detail: { id, multiaddrs } } = await new Promise>((resolve) => { + mdnsA.addEventListener('peer', resolve, { + once: true + }) + }) expect(pB.toString()).to.eql(id.toString()) expect(multiaddrs.length).to.equal(2) @@ -244,9 +248,11 @@ describe('MulticastDNS', () => { await start(mdnsA, mdnsB) - const { detail: { id } } = await new Promise>((resolve) => mdnsA.addEventListener('peer', resolve, { - once: true - })) + const { detail: { id } } = await new Promise>((resolve) => { + mdnsA.addEventListener('peer', resolve, { + once: true + }) + }) expect(pB.toString()).to.eql(id.toString())