multiaddr
Version:
multiaddr implementation (binary + string representation of network addresses)
37 lines (27 loc) • 792 B
JavaScript
const protocols = require('../protocols-table')
const { code: dnsaddrCode } = protocols('dnsaddr')
/**
* @typedef {import('..').Multiaddr} Multiaddr
*/
/**
* Resolver for dnsaddr addresses.
*
* @param {Multiaddr} addr
* @returns {Promise<string[]>}
*/
async function dnsaddrResolver (addr) {
const Resolver = require('./dns')
const resolver = new Resolver()
const peerId = addr.getPeerId()
const [, hostname] = addr.stringTuples().find(([proto]) => proto === dnsaddrCode) || []
const records = await resolver.resolveTxt(`_dnsaddr.${hostname}`)
let addresses = records.flat().map((a) => a.split('=')[1])
if (peerId) {
addresses = addresses.filter((entry) => entry.includes(peerId))
}
return addresses
}
module.exports = {
dnsaddrResolver
}