libp2p
Version:
JavaScript implementation of libp2p, a modular peer to peer network stack
32 lines (28 loc) • 874 B
text/typescript
import {
reliableTransportsFirst,
loopbackAddressLast,
publicAddressesFirst,
circuitRelayAddressesLast
} from '@libp2p/utils'
import type { Address } from '@libp2p/interface'
/**
* Compare function for array.sort() that moves certified addresses to the start
* of the array.
*/
export function certifiedAddressesFirst (a: Address, b: Address): -1 | 0 | 1 {
if (a.isCertified && !b.isCertified) {
return -1
} else if (!a.isCertified && b.isCertified) {
return 1
}
return 0
}
export function defaultAddressSorter (addresses: Address[]): Address[] {
return addresses.sort((a, b) =>
loopbackAddressLast(a.multiaddr, b.multiaddr) ||
publicAddressesFirst(a.multiaddr, b.multiaddr) ||
circuitRelayAddressesLast(a.multiaddr, b.multiaddr) ||
certifiedAddressesFirst(a, b) ||
reliableTransportsFirst(a.multiaddr, b.multiaddr)
)
}