UNPKG

libp2p

Version:

JavaScript implementation of libp2p, a modular peer to peer network stack

35 lines 1.29 kB
import { multiaddr } from '@multiformats/multiaddr'; import { convertToIpNet } from '@multiformats/multiaddr/convert'; /** * Converts a multiaddr string or object to an IpNet object. * If the multiaddr doesn't include /ipcidr, it will encapsulate with the appropriate CIDR: * - /ipcidr/32 for IPv4 * - /ipcidr/128 for IPv6 * * @param {string | Multiaddr} ma - The multiaddr string or object to convert. * @returns {IpNet} The converted IpNet object. * @throws {Error} Throws an error if the multiaddr is not valid. */ export function multiaddrToIpNet(ma) { try { let parsedMa; if (typeof ma === 'string') { parsedMa = multiaddr(ma); } else { parsedMa = ma; } const protoNames = new Set([...parsedMa.getComponents().map(component => component.name)]); // Check if /ipcidr is already present if (!protoNames.has('ipcidr')) { const isIPv6 = protoNames.has('ip6'); const cidr = isIPv6 ? '/ipcidr/128' : '/ipcidr/32'; parsedMa = parsedMa.encapsulate(cidr); } return convertToIpNet(parsedMa); } catch (error) { throw new Error(`Can't convert to IpNet, Invalid multiaddr format: ${ma}`); } } //# sourceMappingURL=utils.js.map