js-libp2p/src/get-peer.js
Alex Potsides 3bed7b4cb2
chore: update aegir (#1027)
Updates aegir, fixes all new linting errors.
2021-11-19 08:02:24 +00:00

50 lines
1.0 KiB
JavaScript

'use strict'
const PeerId = require('peer-id')
const { Multiaddr } = require('multiaddr')
const errCode = require('err-code')
const { codes } = require('./errors')
/**
* Converts the given `peer` to a `Peer` object.
* If a multiaddr is received, the addressBook is updated.
*
* @param {PeerId|Multiaddr|string} peer
* @returns {{ id: PeerId, multiaddrs: Multiaddr[]|undefined }}
*/
function getPeer (peer) {
if (typeof peer === 'string') {
peer = new Multiaddr(peer)
}
let addr
if (Multiaddr.isMultiaddr(peer)) {
addr = peer
const idStr = peer.getPeerId()
if (!idStr) {
throw errCode(
new Error(`${peer} does not have a valid peer type`),
codes.ERR_INVALID_MULTIADDR
)
}
try {
peer = PeerId.createFromB58String(idStr)
} catch (/** @type {any} */ err) {
throw errCode(
new Error(`${peer} is not a valid peer type`),
codes.ERR_INVALID_MULTIADDR
)
}
}
return {
id: peer,
multiaddrs: addr ? [addr] : undefined
}
}
module.exports = getPeer