npm stats
  • Search
  • About
  • Repo
  • Sponsor
  • more
    • Search
    • About
    • Repo
    • Sponsor

Made by Antonio Ramirez

@multiformats/multiaddr

13.0.1

@npm-service-account-multiformats

npmHomeRepoSnykSocket
Downloads:1181480
$ npm install @multiformats/multiaddr
DailyWeeklyMonthlyYearly

@multiformats/multiaddr

multiformats.io codecov CI

The JavaScript implementation of the Multiaddr spec

About

A standard way to represent addresses that

  • support any standard network protocol
  • have a binary packed format
  • have a nice string representation
  • encapsulate well

Example

import { multiaddr } from '@multiformats/multiaddr'

const addr = multiaddr('/ip4/127.0.0.1/udp/1234')
// Multiaddr(/ip4/127.0.0.1/udp/1234)

addr.bytes
// <Uint8Array 04 7f 00 00 01 11 04 d2>

addr.toString()
// '/ip4/127.0.0.1/udp/1234'

addr.getComponents()
// [
//   { code: 4, name: 'ip4', value: '127.0.0.1' },
//   { code: 273, name: 'udp', value: '1234' }
// ]

addr.encapsulate('/sctp/5678')
// Multiaddr(/ip4/127.0.0.1/udp/1234/sctp/5678)

Example - Adding custom protocols

To add application-specific or experimental protocols, add a protocol codec to the protocol registry:

import { registry, V, multiaddr } from '@multiformats/multiaddr'
import type { ProtocolCodec } from '@multiformats/multiaddr'

const maWithCustomTuple = '/custom-protocol/hello'

// throws UnknownProtocolError
multiaddr(maWithCustomTuple)

const protocol: ProtocolCodec = {
  code: 2059,
  name: 'custom-protocol',
  size: V
  // V means variable length, can also be 0, a positive integer (e.g. a fixed
  // length or omitted
}

registry.addProtocol(protocol)

// does not throw UnknownProtocolError
multiaddr(maWithCustomTuple)

// protocols can also be removed
registry.removeProtocol(protocol.code)

API Docs

  • https://multiformats.github.io/js-multiaddr

License

Licensed under either of

  • Apache 2.0, (LICENSE-APACHE / http://www.apache.org/licenses/LICENSE-2.0)
  • MIT (LICENSE-MIT / http://opensource.org/licenses/MIT)

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.