From 7dece01b94006e6a97e9b6bfaf9386c9f6a6187a Mon Sep 17 00:00:00 2001 From: achingbrain Date: Mon, 24 Apr 2023 17:17:28 +0100 Subject: [PATCH] deps!: update all dependencies --- .github/workflows/js-test-and-release.yml | 60 +++++++++++++++---- .gitignore | 1 + packages/webrtc-star-protocol/package.json | 3 +- .../package.json | 4 +- .../src/config.ts | 2 +- .../src/index.ts | 4 +- .../src/socket-server.ts | 18 +++--- .../test/sig-server.ts | 8 +-- packages/webrtc-star-transport/package.json | 28 ++++----- .../webrtc-star-transport/src/listener.ts | 24 ++++---- .../webrtc-star-transport/src/transport.ts | 38 ++++++------ packages/webrtc-star-transport/src/utils.ts | 4 +- .../webrtc-star-transport/test/browser.ts | 8 ++- .../test/compliance.spec.ts | 2 +- packages/webrtc-star-transport/test/node.ts | 13 +++- .../test/transport/dial.ts | 10 ++-- .../test/transport/discovery.ts | 27 +++++++-- .../test/transport/filter.ts | 2 +- .../test/transport/listen.ts | 45 +++++++++++--- .../test/transport/multiple-signal-servers.ts | 6 +- .../test/transport/reconnect.node.ts | 29 +++++++-- .../test/transport/track.ts | 8 ++- 22 files changed, 230 insertions(+), 114 deletions(-) diff --git a/.github/workflows/js-test-and-release.yml b/.github/workflows/js-test-and-release.yml index 3cb16216..37e7d29b 100644 --- a/.github/workflows/js-test-and-release.yml +++ b/.github/workflows/js-test-and-release.yml @@ -2,7 +2,7 @@ name: test & maybe release on: push: branches: - - master # with #262 - ${{{ github.default_branch }}} + - ${{{ github.default_branch }}} pull_request: jobs: @@ -33,7 +33,7 @@ jobs: node-version: ${{ matrix.node }} - uses: ipfs/aegir/actions/cache-node-modules@master - run: npm run --if-present test:node - - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0 + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: flags: node @@ -47,7 +47,7 @@ jobs: node-version: lts/* - uses: ipfs/aegir/actions/cache-node-modules@master - run: npm run --if-present test:chrome - - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0 + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: flags: chrome @@ -61,7 +61,7 @@ jobs: node-version: lts/* - uses: ipfs/aegir/actions/cache-node-modules@master - run: npm run --if-present test:chrome-webworker - - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0 + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: flags: chrome-webworker @@ -75,7 +75,7 @@ jobs: node-version: lts/* - uses: ipfs/aegir/actions/cache-node-modules@master - run: npm run --if-present test:firefox - - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0 + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: flags: firefox @@ -89,10 +89,48 @@ jobs: node-version: lts/* - uses: ipfs/aegir/actions/cache-node-modules@master - run: npm run --if-present test:firefox-webworker - - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0 + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: flags: firefox-webworker + test-webkit: + needs: check + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + node: [lts/*] + fail-fast: true + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: lts/* + - uses: ipfs/aegir/actions/cache-node-modules@master + - run: npm run --if-present test:webkit + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 + with: + flags: webkit + + test-webkit-webworker: + needs: check + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + node: [lts/*] + fail-fast: true + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: lts/* + - uses: ipfs/aegir/actions/cache-node-modules@master + - run: npm run --if-present test:webkit-webworker + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 + with: + flags: webkit-webworker + test-electron-main: needs: check runs-on: ubuntu-latest @@ -103,7 +141,7 @@ jobs: node-version: lts/* - uses: ipfs/aegir/actions/cache-node-modules@master - run: npx xvfb-maybe npm run --if-present test:electron-main - - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0 + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: flags: electron-main @@ -117,14 +155,14 @@ jobs: node-version: lts/* - uses: ipfs/aegir/actions/cache-node-modules@master - run: npx xvfb-maybe npm run --if-present test:electron-renderer - - uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0 + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: flags: electron-renderer release: - needs: [test-node, test-chrome, test-chrome-webworker, test-firefox, test-firefox-webworker, test-electron-main, test-electron-renderer] + needs: [test-node, test-chrome, test-chrome-webworker, test-firefox, test-firefox-webworker, test-webkit, test-webkit-webworker, test-electron-main, test-electron-renderer] runs-on: ubuntu-latest - if: github.event_name == 'push' && github.ref == 'refs/heads/master' # with #262 - 'refs/heads/${{{ github.default_branch }}}' + if: github.event_name == 'push' && github.ref == 'refs/heads/${{{ github.default_branch }}}' steps: - uses: actions/checkout@v3 with: @@ -139,5 +177,5 @@ jobs: docker-username: ${{ secrets.DOCKER_USERNAME }} - run: npm run --if-present release env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.UCI_GITHUB_TOKEN || github.token }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.gitignore b/.gitignore index 89556e48..1232a9e2 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ test/test-data/go-ipfs-repo/LOG.old # while testing npm5 package-lock.json yarn.lock +.vscode diff --git a/packages/webrtc-star-protocol/package.json b/packages/webrtc-star-protocol/package.json index 527b8b11..0d3d3902 100644 --- a/packages/webrtc-star-protocol/package.json +++ b/packages/webrtc-star-protocol/package.json @@ -132,10 +132,9 @@ "release": "aegir release" }, "dependencies": { - "@multiformats/multiaddr": "^11.0.0", "socket.io-client": "^4.1.2" }, "devDependencies": { - "aegir": "^37.9.1" + "aegir": "^38.1.8" } } diff --git a/packages/webrtc-star-signalling-server/package.json b/packages/webrtc-star-signalling-server/package.json index 21519a06..987f8516 100644 --- a/packages/webrtc-star-signalling-server/package.json +++ b/packages/webrtc-star-signalling-server/package.json @@ -144,7 +144,7 @@ "@hapi/inert": "^7.0.0", "@libp2p/logger": "^2.0.0", "@libp2p/webrtc-star-protocol": "^3.0.0", - "@multiformats/multiaddr": "^11.0.0", + "@multiformats/multiaddr": "^12.1.2", "menoetius": "0.0.3", "minimist": "^1.2.5", "prom-client": "^14.0.0", @@ -153,7 +153,7 @@ }, "devDependencies": { "@types/hapi__inert": "^5.2.3", - "aegir": "^37.9.1", + "aegir": "^38.1.8", "p-event": "^5.0.1", "p-wait-for": "^5.0.0", "socket.io-client-v2": "npm:socket.io-client@^2.3.0", diff --git a/packages/webrtc-star-signalling-server/src/config.ts b/packages/webrtc-star-signalling-server/src/config.ts index cdee6378..1e963cf0 100644 --- a/packages/webrtc-star-signalling-server/src/config.ts +++ b/packages/webrtc-star-signalling-server/src/config.ts @@ -3,7 +3,7 @@ import { logger } from '@libp2p/logger' const log = logger('signalling-server') export const config = { - log: log, + log, hapi: { port: process.env.PORT ?? 13579, host: '0.0.0.0', diff --git a/packages/webrtc-star-signalling-server/src/index.ts b/packages/webrtc-star-signalling-server/src/index.ts index 080bec6b..6667dbe7 100644 --- a/packages/webrtc-star-signalling-server/src/index.ts +++ b/packages/webrtc-star-signalling-server/src/index.ts @@ -26,7 +26,7 @@ export interface SigServer extends Server { io: SocketServer } -export async function sigServer (options: Options = {}) { +export async function sigServer (options: Options = {}): Promise { const port = options.port ?? config.hapi.port const host = options.host ?? config.hapi.host const peers = new Map() @@ -50,7 +50,7 @@ export async function sigServer (options: Options = {}) { http.io.attach(http.listener, { path: '/socket.io-next' // v3/v4 clients might be using this path }) - http.events.on('stop', () => http.io.close()) + http.events.on('stop', () => { http.io.close() }) await http.register(Inert) await http.start() diff --git a/packages/webrtc-star-signalling-server/src/socket-server.ts b/packages/webrtc-star-signalling-server/src/socket-server.ts index a919463c..01536fcc 100644 --- a/packages/webrtc-star-signalling-server/src/socket-server.ts +++ b/packages/webrtc-star-signalling-server/src/socket-server.ts @@ -14,12 +14,12 @@ const fake = { } } -export function socketServer (peers: Map, hasMetrics: boolean, refreshPeerListIntervalMS: number) { +export function socketServer (peers: Map, hasMetrics: boolean, refreshPeerListIntervalMS: number): Server { const io = new Server({ allowEIO3: true // allow socket.io v2 clients to connect }) // @ts-expect-error types are different? - io.on('connection', (socket) => handle(socket)) + io.on('connection', (socket) => { handle(socket) }) const peersMetric = hasMetrics ? new client.Gauge({ name: 'webrtc_star_peers', help: 'peers online now' }) : fake.gauge const dialsSuccessTotal = hasMetrics ? new client.Counter({ name: 'webrtc_star_dials_total_success', help: 'successfully completed dials since server started' }) : fake.counter @@ -29,9 +29,9 @@ export function socketServer (peers: Map, hasMetrics: const joinsFailureTotal = hasMetrics ? new client.Counter({ name: 'webrtc_star_joins_total_failure', help: 'failed joins since server started' }) : fake.counter const joinsTotal = hasMetrics ? new client.Counter({ name: 'webrtc_star_joins_total', help: 'all joins since server started' }) : fake.counter - const refreshMetrics = () => peersMetric.set(peers.size) + const refreshMetrics = (): void => { peersMetric.set(peers.size) } - function safeEmit (maStr: string, event: any, arg: any) { + function safeEmit (maStr: string, event: any, arg: any): void { const peer = peers.get(maStr) if (peer == null) { @@ -42,7 +42,7 @@ export function socketServer (peers: Map, hasMetrics: peer.emit(event, arg) } - function handle (socket: WebRTCStarSocket) { + function handle (socket: WebRTCStarSocket): void { let multiaddr: string // join this signaling server network @@ -50,7 +50,7 @@ export function socketServer (peers: Map, hasMetrics: joinsTotal.inc() if (maStr == null) { - return joinsFailureTotal.inc() + joinsFailureTotal.inc(); return } multiaddr = maStr @@ -63,7 +63,7 @@ export function socketServer (peers: Map, hasMetrics: let refreshInterval: NodeJS.Timer | undefined = setInterval(sendPeers, refreshPeerListIntervalMS) sendPeers() - function sendPeers () { + function sendPeers (): void { for (const mh of peers.keys()) { if (mh === multiaddr) { continue @@ -73,7 +73,7 @@ export function socketServer (peers: Map, hasMetrics: } } - function stopSendingPeers () { + function stopSendingPeers (): void { if (refreshInterval != null) { clearInterval(refreshInterval) refreshInterval = undefined @@ -101,7 +101,7 @@ export function socketServer (peers: Map, hasMetrics: dialsTotal.inc() if (offer == null || typeof offer !== 'object' || offer.srcMultiaddr == null || offer.dstMultiaddr == null) { - return dialsFailureTotal.inc() + dialsFailureTotal.inc(); return } if (offer.answer === true) { diff --git a/packages/webrtc-star-signalling-server/test/sig-server.ts b/packages/webrtc-star-signalling-server/test/sig-server.ts index 9b7a6f5b..abe93f32 100644 --- a/packages/webrtc-star-signalling-server/test/sig-server.ts +++ b/packages/webrtc-star-signalling-server/test/sig-server.ts @@ -7,7 +7,7 @@ import pWaitFor from 'p-wait-for' import { pEvent } from 'p-event' import type { WebRTCStarSocket } from '@libp2p/webrtc-star-protocol' -export default (clientName: string, io: (url: string, opts: any) => WebRTCStarSocket, sioOptions: any) => { +export default (clientName: string, io: (url: string, opts: any) => WebRTCStarSocket, sioOptions: any): void => { describe(`signalling ${clientName}`, () => { let sioUrl: string let sigS: SigServer @@ -16,7 +16,7 @@ export default (clientName: string, io: (url: string, opts: any) => WebRTCStarSo let c3: WebRTCStarSocket let c4: WebRTCStarSocket - const base = (id: string) => { + const base = (id: string): string => { return `/ip4/127.0.0.1/tcp/9090/ws/p2p-webrtc-star/ipfs/${id}` } @@ -110,7 +110,7 @@ export default (clientName: string, io: (url: string, opts: any) => WebRTCStarSo c3.on('connect', connected) c4.on('connect', connected) - function connected () { + function connected (): void { if (++count === 3) { done() } } }) @@ -209,7 +209,7 @@ export default (clientName: string, io: (url: string, opts: any) => WebRTCStarSo check() }) - function check () { + function check (): void { if (++peersEmitted === 2) { done() } diff --git a/packages/webrtc-star-transport/package.json b/packages/webrtc-star-transport/package.json index d1397778..99ff1cad 100644 --- a/packages/webrtc-star-transport/package.json +++ b/packages/webrtc-star-transport/package.json @@ -127,7 +127,7 @@ "scripts": { "clean": "aegir clean", "lint": "aegir lint", - "dep-check": "aegir dep-check", + "dep-check": "aegir dep-check -i @mapbox/node-pre-gyp", "build": "aegir build", "test": "aegir test", "test:node": "aegir test -t node -f ./dist/test/node.js --cov", @@ -138,45 +138,43 @@ "release": "aegir release" }, "dependencies": { - "@libp2p/interface-connection": "^3.0.1", + "@libp2p/interface-connection": "^5.0.1", "@libp2p/interface-peer-discovery": "^1.0.0", "@libp2p/interface-peer-id": "^2.0.0", - "@libp2p/interface-transport": "^2.0.0", + "@libp2p/interface-transport": "^4.0.0", "@libp2p/interfaces": "^3.0.2", "@libp2p/logger": "^2.0.0", "@libp2p/peer-id": "^2.0.0", - "@libp2p/utils": "^3.0.1", "@libp2p/webrtc-peer": "^2.0.0", "@libp2p/webrtc-star-protocol": "^3.0.0", - "@multiformats/mafmt": "^11.0.2", - "@multiformats/multiaddr": "^11.0.0", - "abortable-iterator": "^4.0.2", + "@multiformats/mafmt": "^12.1.0", + "@multiformats/multiaddr": "^12.1.2", + "abortable-iterator": "^5.0.1", "delay": "^5.0.0", "err-code": "^3.0.1", "iso-random-stream": "^2.0.2", - "multiformats": "^11.0.0", "p-defer": "^4.0.0", "socket.io-client": "^4.1.2", "uint8arrays": "^4.0.2" }, "devDependencies": { - "@libp2p/interface-mocks": "^9.0.0", + "@libp2p/interface-mocks": "^11.0.0", "@libp2p/interface-peer-discovery-compliance-tests": "^2.0.0", - "@libp2p/interface-transport-compliance-tests": "^3.0.0", + "@libp2p/interface-registrar": "^2.0.10", + "@libp2p/interface-transport-compliance-tests": "^4.0.0", "@libp2p/peer-id-factory": "^2.0.0", "@libp2p/webrtc-star-signalling-server": "^3.0.0", "@mapbox/node-pre-gyp": "^1.0.5", - "aegir": "^37.9.1", + "aegir": "^38.1.8", "electron-webrtc": "~0.3.0", - "it-all": "^2.0.0", - "it-pipe": "^2.0.3", + "it-all": "^3.0.1", + "it-pipe": "^3.0.1", "it-pushable": "^3.0.0", - "it-stream-types": "^1.0.4", + "it-stream-types": "^2.0.1", "p-event": "^5.0.1", "p-wait-for": "^5.0.0", "sinon": "^15.0.1", "uint8arraylist": "^2.3.2", - "util": "^0.12.4", "wrtc": "^0.4.6" } } diff --git a/packages/webrtc-star-transport/src/listener.ts b/packages/webrtc-star-transport/src/listener.ts index 62d55ffb..6953b666 100644 --- a/packages/webrtc-star-transport/src/listener.ts +++ b/packages/webrtc-star-transport/src/listener.ts @@ -90,14 +90,14 @@ class SigServer extends EventEmitter implements Signal }) } - _createChannel (intentId: string, srcMultiaddr: string, dstMultiaddr: string) { + _createChannel (intentId: string, srcMultiaddr: string, dstMultiaddr: string): WebRTCReceiver { const channelOptions: WebRTCReceiverInit = { ...this.channelOptions } const channel = new WebRTCReceiver(channelOptions) - const onError = (evt: CustomEvent) => { + const onError = (evt: CustomEvent): void => { const err = evt.detail log.error('incoming connection errored', err) @@ -133,7 +133,7 @@ class SigServer extends EventEmitter implements Signal this.connections.push(maConn) - const untrackConn = () => { + const untrackConn = (): void => { this.connections = this.connections.filter(c => c !== maConn) this.channels.delete(intentId) this.pendingSignals.delete(intentId) @@ -167,7 +167,7 @@ class SigServer extends EventEmitter implements Signal return channel } - handleWsHandshake (offer: HandshakeSignal) { + handleWsHandshake (offer: HandshakeSignal): void { log('incoming handshake. signal type "%s" is answer %s', offer.signal.type, offer.answer) if (offer.answer === true || offer.err != null || offer.intentId == null) { @@ -208,15 +208,15 @@ class SigServer extends EventEmitter implements Signal } } - async close () { + async close (): Promise { // Close listener this.socket.emit('ss-leave', this.signallingAddr.toString()) this.socket.removeAllListeners() this.socket.close() await Promise.all([ - ...this.connections.map(async maConn => await maConn.close()), - ...Array.from(this.channels.values()).map(async channel => await channel.close()) + ...this.connections.map(async maConn => { await maConn.close() }), + ...Array.from(this.channels.values()).map(async channel => { await channel.close() }) ]) this.dispatchEvent(new CustomEvent('close')) @@ -242,7 +242,7 @@ class WebRTCListener extends EventEmitter implements Listener { this.options = options } - async listen (ma: Multiaddr) { + async listen (ma: Multiaddr): Promise { // Should only be used if not already listening if (this.listeningAddr != null) { throw errCode(new Error('listener already in use'), 'ERR_ALREADY_LISTENING') @@ -309,10 +309,10 @@ class WebRTCListener extends EventEmitter implements Listener { // Store listen and signal reference addresses this.transport.sigServers.set(this.signallingUrl, server) - return await defer.promise + await defer.promise } - async close () { + async close (): Promise { if (this.signallingUrl != null) { const server = this.transport.sigServers.get(this.signallingUrl) @@ -328,7 +328,7 @@ class WebRTCListener extends EventEmitter implements Listener { this.listeningAddr = undefined } - getAddrs () { + getAddrs (): Multiaddr[] { if (this.listeningAddr != null) { return [ this.listeningAddr @@ -339,6 +339,6 @@ class WebRTCListener extends EventEmitter implements Listener { } } -export function createListener (upgrader: Upgrader, handler: ConnectionHandler, peerId: PeerId, transport: WebRTCStar, options: WebRTCStarListenerOptions) { +export function createListener (upgrader: Upgrader, handler: ConnectionHandler, peerId: PeerId, transport: WebRTCStar, options: WebRTCStarListenerOptions): Listener { return new WebRTCListener(upgrader, handler, peerId, transport, options) } diff --git a/packages/webrtc-star-transport/src/transport.ts b/packages/webrtc-star-transport/src/transport.ts index c9fca1ae..a03030a7 100644 --- a/packages/webrtc-star-transport/src/transport.ts +++ b/packages/webrtc-star-transport/src/transport.ts @@ -26,7 +26,7 @@ import type { PeerId } from '@libp2p/interface-peer-id' const webrtcSupport = 'RTCPeerConnection' in globalThis const log = logger('libp2p:webrtc-star') -const noop = () => {} +const noop = (): void => {} export class WebRTCStarDiscovery extends EventEmitter implements PeerDiscovery, Startable { private started = false @@ -35,23 +35,23 @@ export class WebRTCStarDiscovery extends EventEmitter imple return true } - get [Symbol.toStringTag] () { + get [Symbol.toStringTag] (): string { return '@libp2p/webrtc-star-discovery' } - isStarted () { + isStarted (): boolean { return this.started } - async start () { + async start (): Promise { this.started = true } - async stop () { + async stop (): Promise { this.started = false } - dispatchEvent (event: CustomEvent) { + dispatchEvent (event: CustomEvent): boolean { if (!this.isStarted()) { return false } @@ -122,11 +122,11 @@ export class WebRTCStar implements Transport { return true } - get [Symbol.toStringTag] () { + get [Symbol.toStringTag] (): string { return '@libp2p/webrtc-star' } - async dial (ma: Multiaddr, options: WebRTCStarDialOptions) { + async dial (ma: Multiaddr, options: WebRTCStarDialOptions): Promise { const rawConn = await this._connect(ma, options) const maConn = toMultiaddrConnection(rawConn, { remoteAddr: ma, signal: options.signal }) log('new outbound connection %s', maConn.remoteAddr) @@ -135,7 +135,7 @@ export class WebRTCStar implements Transport { return conn } - async _connect (ma: Multiaddr, options: WebRTCStarDialOptions) { + async _connect (ma: Multiaddr, options: WebRTCStarDialOptions): Promise { if (options.signal?.aborted === true) { throw new AbortError() } @@ -156,7 +156,7 @@ export class WebRTCStar implements Transport { const sio = this.sigServers.get(cleanUrlSIO(ma)) if (sio?.socket == null) { - return reject(errcode(new Error('unknown signal server to use'), 'ERR_UNKNOWN_SIGNAL_SERVER')) + reject(errcode(new Error('unknown signal server to use'), 'ERR_UNKNOWN_SIGNAL_SERVER')); return } let connected: boolean = false @@ -164,7 +164,7 @@ export class WebRTCStar implements Transport { log('dialing %s:%s', cOpts.host, cOpts.port) const channel = new WebRTCInitiator(channelOptions) - const onError = (evt: CustomEvent) => { + const onError = (evt: CustomEvent): void => { const err = evt.detail if (!connected) { @@ -174,21 +174,21 @@ export class WebRTCStar implements Transport { } } - const onReady = () => { + const onReady = (): void => { connected = true log('connection opened %s:%s', cOpts.host, cOpts.port) done() } - const onAbort = () => { + const onAbort = (): void => { log.error('connection aborted %s:%s', cOpts.host, cOpts.port) channel.close().finally(() => { done(new AbortError()) }) } - const done = (err?: Error) => { + const done = (err?: Error): void => { channel.removeEventListener('ready', onReady) options.signal?.removeEventListener('abort', onAbort) @@ -211,10 +211,10 @@ export class WebRTCStar implements Transport { const signal = evt.detail sio.socket.emit('ss-handshake', { - intentId: intentId, + intentId, srcMultiaddr: sio.signallingAddr.toString(), dstMultiaddr: ma.toString(), - signal: signal + signal }) }) @@ -260,7 +260,7 @@ export class WebRTCStar implements Transport { /** * Takes a list of `Multiaddr`s and returns only valid TCP addresses */ - filter (multiaddrs: Multiaddr[]) { + filter (multiaddrs: Multiaddr[]): Multiaddr[] { multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs] return multiaddrs.filter((ma) => { @@ -268,11 +268,11 @@ export class WebRTCStar implements Transport { return false } - return mafmt.WebRTCStar.matches(ma) + return mafmt.P2PWebRTCStar.matches(ma) }) } - peerDiscovered (maStr: string) { + peerDiscovered (maStr: string): void { log('peer discovered: %s', maStr) maStr = cleanMultiaddr(maStr) diff --git a/packages/webrtc-star-transport/src/utils.ts b/packages/webrtc-star-transport/src/utils.ts index e3ca732a..74a5dd18 100644 --- a/packages/webrtc-star-transport/src/utils.ts +++ b/packages/webrtc-star-transport/src/utils.ts @@ -1,7 +1,7 @@ import { multiaddr, isName } from '@multiformats/multiaddr' import type { Multiaddr } from '@multiformats/multiaddr' -export function cleanUrlSIO (ma: Multiaddr) { +export function cleanUrlSIO (ma: Multiaddr): string { const maStrSplit = ma.toString().split('/') const tcpProto = ma.protos()[1].name const wsProto = ma.protos()[2].name @@ -26,7 +26,7 @@ export function cleanUrlSIO (ma: Multiaddr) { throw new Error('invalid multiaddr: ' + ma.toString()) } -export function cleanMultiaddr (maStr: string) { +export function cleanMultiaddr (maStr: string): string { const legacy = '/libp2p-webrtc-star' if (maStr.startsWith(legacy)) { diff --git a/packages/webrtc-star-transport/test/browser.ts b/packages/webrtc-star-transport/test/browser.ts index 83cbeec3..c04a447a 100644 --- a/packages/webrtc-star-transport/test/browser.ts +++ b/packages/webrtc-star-transport/test/browser.ts @@ -9,16 +9,20 @@ import filterTests from './transport/filter.js' import { mockRegistrar, mockUpgrader } from '@libp2p/interface-mocks' import type { PeerTransport } from './index.js' import type { WebRTCStar, WebRTCStarDiscovery } from '../src/transport.js' +import { EventEmitter } from '@libp2p/interfaces/events' describe('browser RTC', () => { - const create = async () => { + const create = async (): Promise => { const peerId = await createEd25519PeerId() const wrtcStar = webRTCStar() const transport = wrtcStar.transport({ peerId }) as WebRTCStar const discovery = wrtcStar.discovery() as WebRTCStarDiscovery const registrar = mockRegistrar() - const upgrader = mockUpgrader({ registrar }) + const upgrader = mockUpgrader({ + registrar, + events: new EventEmitter() + }) const peerTransport: PeerTransport = { peerId, diff --git a/packages/webrtc-star-transport/test/compliance.spec.ts b/packages/webrtc-star-transport/test/compliance.spec.ts index 38a511cb..29d7abfe 100644 --- a/packages/webrtc-star-transport/test/compliance.spec.ts +++ b/packages/webrtc-star-transport/test/compliance.spec.ts @@ -17,7 +17,7 @@ describe('interface-transport compliance', function () { const peerId = peerIdFromString('QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a') const ws = webRTCStar({ wrtc }).transport({ peerId }) - const base = (id: string) => { + const base = (id: string): string => { return `/ip4/127.0.0.1/tcp/15555/ws/p2p-webrtc-star/p2p/${id}` } diff --git a/packages/webrtc-star-transport/test/node.ts b/packages/webrtc-star-transport/test/node.ts index 311a1b2b..beedfd6d 100644 --- a/packages/webrtc-star-transport/test/node.ts +++ b/packages/webrtc-star-transport/test/node.ts @@ -16,6 +16,7 @@ import reconnectTests from './transport/reconnect.node.js' import type { PeerTransport } from './index.js' import { mockRegistrar, mockUpgrader } from '@libp2p/interface-mocks' import type { WebRTCStar, WebRTCStarDiscovery } from '../src/transport.js' +import { EventEmitter } from '@libp2p/interfaces/events' // TODO: Temporary fix per wrtc issue // https://github.com/node-webrtc/node-webrtc/issues/636#issuecomment-774171409 @@ -29,7 +30,10 @@ describe('transport: with wrtc', () => { const discovery = wrtcStar.discovery() as WebRTCStarDiscovery const registrar = mockRegistrar() - const upgrader = mockUpgrader({ registrar }) + const upgrader = mockUpgrader({ + registrar, + events: new EventEmitter() + }) const peerTransport: PeerTransport = { peerId, @@ -53,14 +57,17 @@ describe('transport: with wrtc', () => { // TODO: Electron-webrtc is currently unreliable on linux describe.skip('transport: with electron-webrtc', () => { - const create = async () => { + const create = async (): Promise => { const peerId = await createEd25519PeerId() const wrtcStar = webRTCStar({ wrtc: electronWebRTC() }) const transport = wrtcStar.transport({ peerId }) as WebRTCStar const discovery = wrtcStar.discovery() as WebRTCStarDiscovery const registrar = mockRegistrar() - const upgrader = mockUpgrader({ registrar }) + const upgrader = mockUpgrader({ + registrar, + events: new EventEmitter() + }) const peerTransport: PeerTransport = { peerId, diff --git a/packages/webrtc-star-transport/test/transport/dial.ts b/packages/webrtc-star-transport/test/transport/dial.ts index 66197df5..14a5cd8b 100644 --- a/packages/webrtc-star-transport/test/transport/dial.ts +++ b/packages/webrtc-star-transport/test/transport/dial.ts @@ -16,14 +16,15 @@ import { mockRegistrar, mockUpgrader } from '@libp2p/interface-mocks' import type { PeerTransport } from '../index.js' import type { Source } from 'it-stream-types' import type { Uint8ArrayList } from 'uint8arraylist' +import { EventEmitter } from '@libp2p/interfaces/events' -async function * toBytes (source: Source) { +async function * toBytes (source: Source): AsyncGenerator { for await (const list of source) { yield * list } } -export default (create: () => Promise) => { +export default (create: () => Promise): void => { describe('dial', () => { let ws1: WebRTCStar let ws2: WebRTCStar @@ -62,7 +63,8 @@ export default (create: () => Promise) => { ) }) upgrader = mockUpgrader({ - registrar + registrar, + events: new EventEmitter() }) // first @@ -101,7 +103,7 @@ export default (create: () => Promise) => { afterEach(async () => { await Promise.all( - [listener1, listener2].map(async l => await l.close()) + [listener1, listener2].map(async l => { await l.close() }) ) }) diff --git a/packages/webrtc-star-transport/test/transport/discovery.ts b/packages/webrtc-star-transport/test/transport/discovery.ts index 28b49aa1..236738bf 100644 --- a/packages/webrtc-star-transport/test/transport/discovery.ts +++ b/packages/webrtc-star-transport/test/transport/discovery.ts @@ -9,8 +9,9 @@ import type { WebRTCStar } from '../../src/transport.js' import type { Listener } from '@libp2p/interface-transport' import { mockUpgrader } from '@libp2p/interface-mocks' import type { PeerTransport } from '../index.js' +import { EventEmitter } from '@libp2p/interfaces/events' -export default (create: () => Promise) => { +export default (create: () => Promise): void => { describe('peer discovery', () => { let ws1: WebRTCStar let ws2: WebRTCStar @@ -27,7 +28,11 @@ export default (create: () => Promise) => { it('listen on the first', async () => { ({ transport: ws1 } = await create()) - ws1Listener = ws1.createListener({ upgrader: mockUpgrader() }) + ws1Listener = ws1.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await ws1.discovery().start() await ws1Listener.listen(signallerAddr) @@ -35,7 +40,11 @@ export default (create: () => Promise) => { it('listen on the second, discover the first', async () => { ({ transport: ws2 } = await create()) - const listener = ws2.createListener({ upgrader: mockUpgrader() }) + const listener = ws2.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await ws2.discovery().start() await listener.listen(signallerAddr) @@ -66,7 +75,11 @@ export default (create: () => Promise) => { }) ;({ transport: ws3 } = await create()) - const listener = ws3.createListener({ upgrader: mockUpgrader() }) + const listener = ws3.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await ws3.discovery().start() await listener.listen(signallerAddr) @@ -94,7 +107,11 @@ export default (create: () => Promise) => { void ws1.discovery().stop() ;({ transport: ws4 } = await create()) - const listener = ws4.createListener({ upgrader: mockUpgrader() }) + const listener = ws4.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) void ws4.discovery().start() await listener.listen(signallerAddr) diff --git a/packages/webrtc-star-transport/test/transport/filter.ts b/packages/webrtc-star-transport/test/transport/filter.ts index 381a025a..557e2b08 100644 --- a/packages/webrtc-star-transport/test/transport/filter.ts +++ b/packages/webrtc-star-transport/test/transport/filter.ts @@ -4,7 +4,7 @@ import { expect } from 'aegir/chai' import { multiaddr } from '@multiformats/multiaddr' import type { PeerTransport } from '../index.js' -export default (create: () => Promise) => { +export default (create: () => Promise): void => { describe('filter', () => { it('filters non valid webrtc-star multiaddrs', async () => { const peer = await create() diff --git a/packages/webrtc-star-transport/test/transport/listen.ts b/packages/webrtc-star-transport/test/transport/listen.ts index b37c5c76..4fb10cfa 100644 --- a/packages/webrtc-star-transport/test/transport/listen.ts +++ b/packages/webrtc-star-transport/test/transport/listen.ts @@ -6,8 +6,9 @@ import { pEvent } from 'p-event' import type { WebRTCStar } from '../../src/transport.js' import { mockUpgrader } from '@libp2p/interface-mocks' import type { PeerTransport } from '../index.js' +import { EventEmitter } from '@libp2p/interfaces/events' -export default (create: () => Promise) => { +export default (create: () => Promise): void => { describe('listen', () => { let ws: WebRTCStar const ma = multiaddr('/ip4/127.0.0.1/tcp/15555/ws/p2p-webrtc-star') @@ -17,14 +18,22 @@ export default (create: () => Promise) => { }) it('listen, check for promise', async () => { - const listener = ws.createListener({ upgrader: mockUpgrader() }) + const listener = ws.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await listener.listen(ma) await listener.close() }) it('listen, check for listening event', async () => { - const listener = ws.createListener({ upgrader: mockUpgrader() }) + const listener = ws.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) void listener.listen(ma) await pEvent(listener, 'listening') @@ -32,7 +41,11 @@ export default (create: () => Promise) => { }) it('listen, check for the close event', async () => { - const listener = ws.createListener({ upgrader: mockUpgrader() }) + const listener = ws.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await listener.listen(ma) void listener.close() @@ -44,7 +57,11 @@ export default (create: () => Promise) => { }) it('should throw an error if it cannot listen on the given multiaddr', async () => { - const listener = ws.createListener({ upgrader: mockUpgrader() }) + const listener = ws.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) const ma = multiaddr('/ip4/127.0.0.1/tcp/15554/ws/p2p-webrtc-star') await expect(listener.listen(ma)) @@ -52,7 +69,11 @@ export default (create: () => Promise) => { }) it('getAddrs', async () => { - const listener = ws.createListener({ upgrader: mockUpgrader() }) + const listener = ws.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) const ma = multiaddr('/ip4/127.0.0.1/tcp/15555/ws/p2p-webrtc-star') await listener.listen(ma) @@ -64,7 +85,11 @@ export default (create: () => Promise) => { }) it('getAddrs with peer id', async () => { - const listener = ws.createListener({ upgrader: mockUpgrader() }) + const listener = ws.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) const ma = multiaddr('/ip4/127.0.0.1/tcp/15555/ws/p2p-webrtc-star/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooooA') await listener.listen(ma) @@ -76,7 +101,11 @@ export default (create: () => Promise) => { }) it('can only listen on one address per listener', async () => { - const listener = ws.createListener({ upgrader: mockUpgrader() }) + const listener = ws.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await listener.listen(ma) diff --git a/packages/webrtc-star-transport/test/transport/multiple-signal-servers.ts b/packages/webrtc-star-transport/test/transport/multiple-signal-servers.ts index 3a67068a..f70fede1 100644 --- a/packages/webrtc-star-transport/test/transport/multiple-signal-servers.ts +++ b/packages/webrtc-star-transport/test/transport/multiple-signal-servers.ts @@ -7,12 +7,13 @@ import type { WebRTCStar } from '../../src/transport.js' import { mockRegistrar, mockUpgrader } from '@libp2p/interface-mocks' import type { Upgrader } from '@libp2p/interface-transport' import type { PeerTransport } from '../index.js' +import { EventEmitter } from '@libp2p/interfaces/events' const ma1 = multiaddr('/ip4/127.0.0.1/tcp/15555/ws/p2p-webrtc-star') const ma2 = multiaddr('/ip4/127.0.0.1/tcp/15556/ws/p2p-webrtc-star') const protocol = '/echo/1.0.0' -export default (create: () => Promise) => { +export default (create: () => Promise): void => { describe('multiple signal servers', () => { let ws1: WebRTCStar let ws2: WebRTCStar @@ -30,7 +31,8 @@ export default (create: () => Promise) => { ) }) upgrader = mockUpgrader({ - registrar + registrar, + events: new EventEmitter() }) }) diff --git a/packages/webrtc-star-transport/test/transport/reconnect.node.ts b/packages/webrtc-star-transport/test/transport/reconnect.node.ts index 31bcc5f1..7c84881c 100644 --- a/packages/webrtc-star-transport/test/transport/reconnect.node.ts +++ b/packages/webrtc-star-transport/test/transport/reconnect.node.ts @@ -15,10 +15,11 @@ import pDefer from 'p-defer' import delay from 'delay' import type { WebRTCStar } from '../../src/transport.js' import { pEvent } from 'p-event' +import { EventEmitter } from '@libp2p/interfaces/events' const SERVER_PORT = 13580 -export default (create: () => Promise) => { +export default (create: () => Promise): void => { describe('reconnect to signaling server', () => { let sigS: SigServer let ws1: WebRTCStar @@ -52,7 +53,11 @@ export default (create: () => Promise) => { it('listen on the first', async () => { ({ transport: ws1 } = await create()) - listener1 = ws1.createListener({ upgrader: mockUpgrader() }) + listener1 = ws1.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await ws1.discovery().start() await listener1.listen(signallerAddr) @@ -61,7 +66,11 @@ export default (create: () => Promise) => { it('listen on the second, discover the first', async () => { ({ transport: ws2 } = await create()) - listener2 = ws2.createListener({ upgrader: mockUpgrader() }) + listener2 = ws2.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await listener2.listen(signallerAddr) const { detail: { multiaddrs } } = await pEvent<'peer', { detail: { multiaddrs: Multiaddr[] } }>(ws1.discovery(), 'peer') @@ -87,7 +96,11 @@ export default (create: () => Promise) => { it('listen on the third, first discovers it', async () => { ({ transport: ws3 } = await create()) - listener3 = ws3.createListener({ upgrader: mockUpgrader() }) + listener3 = ws3.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await listener3.listen(signallerAddr) const { detail: { multiaddrs } } = await pEvent<'peer', { detail: { multiaddrs: Multiaddr[] } }>(ws1.discovery(), 'peer') @@ -131,7 +144,7 @@ export default (create: () => Promise) => { it('does not drop connections when the signalling server disconnects', async () => { // returns a promise that resolves when peer1 has discovered peer2 and peer3 - async function discoverPeers () { + async function discoverPeers (): Promise { const peer2Discovered = pDefer() const peer3Discovered = pDefer() @@ -158,7 +171,11 @@ export default (create: () => Promise) => { // listen on the first const peer1 = await create() - listener1 = peer1.transport.createListener({ upgrader: mockUpgrader() }) + listener1 = peer1.transport.createListener({ + upgrader: mockUpgrader({ + events: new EventEmitter() + }) + }) await peer1.transport.discovery().start() await listener1.listen(signallerAddr) diff --git a/packages/webrtc-star-transport/test/transport/track.ts b/packages/webrtc-star-transport/test/transport/track.ts index 2f580984..e51bf459 100644 --- a/packages/webrtc-star-transport/test/transport/track.ts +++ b/packages/webrtc-star-transport/test/transport/track.ts @@ -11,10 +11,11 @@ import type { WebRTCStar } from '../../src/transport.js' import type { Listener, Upgrader } from '@libp2p/interface-transport' import { mockRegistrar, mockUpgrader } from '@libp2p/interface-mocks' import type { PeerTransport } from '../index.js' +import { EventEmitter } from '@libp2p/interfaces/events' const protocol = '/echo/1.0.0' -export default (create: () => Promise) => { +export default (create: () => Promise): void => { describe('track connections', () => { let ws1: WebRTCStar let ws2: WebRTCStar @@ -48,7 +49,8 @@ export default (create: () => Promise) => { ) }) upgrader = mockUpgrader({ - registrar + registrar, + events: new EventEmitter() }) // first @@ -79,7 +81,7 @@ export default (create: () => Promise) => { }) afterEach(async () => { - await Promise.all([listener, remoteListener].map(async l => await l.close())) + await Promise.all([listener, remoteListener].map(async l => { await l.close() })) }) it('should untrack conn after being closed', async function () {