@multiformats/multiaddr
Advanced tools
Comparing version 11.0.8 to 11.0.9
@@ -1,3 +0,2 @@ | ||
import type { Protocol } from './protocols-table.js'; | ||
import type { StringTuple, Tuple } from './index.js'; | ||
import type { StringTuple, Tuple, Protocol } from './index.js'; | ||
/** | ||
@@ -25,2 +24,5 @@ * string -> [[str name, str addr]... ] | ||
export declare function tuplesToBytes(tuples: Tuple[]): Uint8Array; | ||
/** | ||
* For the passed address, return the serialized size | ||
*/ | ||
export declare function sizeForAddr(p: Protocol, addr: Uint8Array | number[]): number; | ||
@@ -27,0 +29,0 @@ export declare function bytesToTuples(buf: Uint8Array): Tuple[]; |
@@ -98,2 +98,5 @@ import { convertToBytes, convertToString } from './convert.js'; | ||
} | ||
/** | ||
* For the passed address, return the serialized size | ||
*/ | ||
export function sizeForAddr(p, addr) { | ||
@@ -100,0 +103,0 @@ if (p.size > 0) { |
/** | ||
* @packageDocumentation | ||
* | ||
* Provides methods for converting | ||
*/ | ||
/** | ||
* converts (serializes) addresses | ||
*/ | ||
export declare function convert(proto: string, a: string | Uint8Array): string | Uint8Array; | ||
export declare function convert(proto: string, a: string): Uint8Array; | ||
export declare function convert(proto: string, a: Uint8Array): string; | ||
/** | ||
@@ -6,0 +12,0 @@ * Convert [code,Uint8Array] to string |
@@ -0,1 +1,6 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* Provides methods for converting | ||
*/ | ||
import * as ip from './ip.js'; | ||
@@ -12,5 +17,2 @@ import { getProtocol } from './protocols-table.js'; | ||
import { concat as uint8ArrayConcat } from 'uint8arrays/concat'; | ||
/** | ||
* converts (serializes) addresses | ||
*/ | ||
export function convert(proto, a) { | ||
@@ -17,0 +19,0 @@ if (a instanceof Uint8Array) { |
@@ -0,2 +1,18 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* An implementation of a Multiaddr in JavaScript | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const ma = multiaddr('/ip4/127.0.0.1/tcp/1234') | ||
* ``` | ||
*/ | ||
import { getProtocol } from './protocols-table.js'; | ||
/** | ||
* Protocols are present in the protocol table | ||
*/ | ||
export interface Protocol { | ||
@@ -9,2 +25,5 @@ code: number; | ||
} | ||
/** | ||
* A plain JavaScript object representation of a {@link Multiaddr} | ||
*/ | ||
export interface MultiaddrObject { | ||
@@ -16,2 +35,5 @@ family: 4 | 6; | ||
} | ||
/** | ||
* A NodeAddress is an IPv4/IPv6 address/TCP port combination | ||
*/ | ||
export interface NodeAddress { | ||
@@ -22,11 +44,30 @@ family: 4 | 6; | ||
} | ||
/** | ||
* These types can be parsed into a {@link Multiaddr} object | ||
*/ | ||
export type MultiaddrInput = string | Multiaddr | Uint8Array | null; | ||
/** | ||
* A Resolver is a function that takes a {@link Multiaddr} and resolves it into one | ||
* or more string representations of that {@link Multiaddr}. | ||
*/ | ||
export interface Resolver { | ||
(addr: Multiaddr, options?: AbortOptions): Promise<string[]>; | ||
} | ||
/** | ||
* A code/value pair | ||
*/ | ||
export type Tuple = [number, Uint8Array?]; | ||
/** | ||
* A code/value pair with the value as a string | ||
*/ | ||
export type StringTuple = [number, string?]; | ||
/** | ||
* Allows aborting long-lived operations | ||
*/ | ||
export interface AbortOptions { | ||
signal?: AbortSignal; | ||
} | ||
/** | ||
* All configured {@link Resolver}s | ||
*/ | ||
export declare const resolvers: Map<string, Resolver>; | ||
@@ -40,3 +81,5 @@ export interface Multiaddr { | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').toString() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').toString() | ||
* // '/ip4/127.0.0.1/tcp/4001' | ||
@@ -51,3 +94,5 @@ * ``` | ||
* ```js | ||
* JSON.stringify(new Multiaddr('/ip4/127.0.0.1/tcp/4001')) | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* JSON.stringify(multiaddr('/ip4/127.0.0.1/tcp/4001')) | ||
* // '/ip4/127.0.0.1/tcp/4001' | ||
@@ -62,3 +107,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').toOptions() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').toOptions() | ||
* // { family: 4, host: '127.0.0.1', transport: 'tcp', port: 4001 } | ||
@@ -76,3 +123,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').protos() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').protos() | ||
* // [ { code: 4, size: 32, name: 'ip4' }, | ||
@@ -89,3 +138,5 @@ * // { code: 6, size: 16, name: 'tcp' } ] | ||
* ```js | ||
* Multiaddr('/ip4/127.0.0.1/tcp/4001').protoCodes() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').protoCodes() | ||
* // [ 4, 6 ] | ||
@@ -101,3 +152,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').protoNames() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').protoNames() | ||
* // [ 'ip4', 'tcp' ] | ||
@@ -112,3 +165,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr("/ip4/127.0.0.1/tcp/4001").tuples() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').tuples() | ||
* // [ [ 4, <Buffer 7f 00 00 01> ], [ 6, <Buffer 0f a1> ] ] | ||
@@ -125,3 +180,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr("/ip4/127.0.0.1/tcp/4001").stringTuples() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').stringTuples() | ||
* // [ [ 4, '127.0.0.1' ], [ 6, '4001' ] ] | ||
@@ -136,6 +193,8 @@ * ``` | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080> | ||
* | ||
* const mh2 = new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* const mh2 = multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -158,6 +217,8 @@ * | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080> | ||
* | ||
* const mh2 = new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* const mh2 = multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -183,3 +244,5 @@ * | ||
* ```js | ||
* const addr = new Multiaddr('/ip4/0.0.0.0/tcp/8080/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const addr = multiaddr('/ip4/0.0.0.0/tcp/8080/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC') | ||
* // <Multiaddr 0400... - /ip4/0.0.0.0/tcp/8080/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC> | ||
@@ -190,3 +253,3 @@ * | ||
* | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/8080').decapsulateCode(421).toString() | ||
* multiaddr('/ip4/127.0.0.1/tcp/8080').decapsulateCode(421).toString() | ||
* // '/ip4/127.0.0.1/tcp/8080' | ||
@@ -201,3 +264,5 @@ * ``` | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string> | ||
@@ -215,3 +280,5 @@ * | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080/unix/tmp/p2p.sock') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080/unix/tmp/p2p.sock') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080/unix/tmp/p2p.sock> | ||
@@ -229,6 +296,8 @@ * | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080> | ||
* | ||
* const mh2 = new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* const mh2 = multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -251,4 +320,6 @@ * | ||
* ```js | ||
* Multiaddr.resolvers.set('dnsaddr', resolverFunction) | ||
* const mh1 = new Multiaddr('/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb') | ||
* import { multiaddr, resolvers } from '@multiformats/multiaddr' | ||
* | ||
* resolvers.set('dnsaddr', resolverFunction) | ||
* const mh1 = multiaddr('/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb') | ||
* const resolvedMultiaddrs = await mh1.resolve() | ||
@@ -272,3 +343,5 @@ * // [ | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').nodeAddress() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').nodeAddress() | ||
* // {family: 4, address: '127.0.0.1', port: 4001} | ||
@@ -287,9 +360,11 @@ * ``` | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
* const mh2 = new Multiaddr('/ip4/192.168.2.1/tcp/5001') | ||
* const mh2 = multiaddr('/ip4/192.168.2.1/tcp/5001') | ||
* // <Multiaddr 04c0a80201061389 - /ip4/192.168.2.1/tcp/5001> | ||
* const mh3 = mh1.encapsulate(mh2) | ||
* // <Multiaddr 047f000001060fa104c0a80201061389 - /ip4/127.0.0.1/tcp/4001/ip4/192.168.2.1/tcp/5001> | ||
* const mh4 = new Multiaddr('/ip4/127.0.0.1/tcp/2000/wss/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a') | ||
* const mh4 = multiaddr('/ip4/127.0.0.1/tcp/2000/wss/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a') | ||
* // <Multiaddr 047f0000010607d0de039302a503221220d52ebb89d85b02a284948203a62ff28389c57c9f42beec4ec20db76a64835843 - /ip4/127.0.0.1/tcp/2000/wss/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a> | ||
@@ -314,3 +389,5 @@ * mh1.isThinWaistAddress() | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').inspect() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').inspect() | ||
* // '<Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001>' | ||
@@ -326,3 +403,5 @@ * ``` | ||
* ```js | ||
* Multiaddr.fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp') | ||
* import { fromNodeAddress } from '@multiformats/multiaddr' | ||
* | ||
* fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -333,15 +412,39 @@ * ``` | ||
/** | ||
* Returns if something is a Multiaddr that is a name | ||
* Returns if something is a {@link Multiaddr} that is a resolvable name | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { isName, multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* isName(multiaddr('/ip4/127.0.0.1')) | ||
* // false | ||
* isName(multiaddr('/dns/ipfs.io')) | ||
* // true | ||
* ``` | ||
*/ | ||
export declare function isName(addr: Multiaddr): boolean; | ||
/** | ||
* Check if object is a CID instance | ||
* Check if object is a {@link Multiaddr} instance | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { isMultiaddr, multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* isMultiaddr(5) | ||
* // false | ||
* isMultiaddr(multiaddr('/ip4/127.0.0.1')) | ||
* // true | ||
* ``` | ||
*/ | ||
export declare function isMultiaddr(value: any): value is Multiaddr; | ||
/** | ||
* Static factory | ||
* A function that takes a {@link MultiaddrInput} and returns a {@link Multiaddr} | ||
* | ||
* @example | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* import { multiaddr } from '@libp2p/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -348,0 +451,0 @@ * ``` |
@@ -0,1 +1,14 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* An implementation of a Multiaddr in JavaScript | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const ma = multiaddr('/ip4/127.0.0.1/tcp/1234') | ||
* ``` | ||
*/ | ||
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { | ||
@@ -32,2 +45,5 @@ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); | ||
]; | ||
/** | ||
* All configured {@link Resolver}s | ||
*/ | ||
export const resolvers = new Map(); | ||
@@ -40,3 +56,5 @@ const symbol = Symbol.for('@multiformats/js-multiaddr/multiaddr'); | ||
* ```js | ||
* Multiaddr.fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp') | ||
* import { fromNodeAddress } from '@multiformats/multiaddr' | ||
* | ||
* fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -66,3 +84,14 @@ * ``` | ||
/** | ||
* Returns if something is a Multiaddr that is a name | ||
* Returns if something is a {@link Multiaddr} that is a resolvable name | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { isName, multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* isName(multiaddr('/ip4/127.0.0.1')) | ||
* // false | ||
* isName(multiaddr('/dns/ipfs.io')) | ||
* // true | ||
* ``` | ||
*/ | ||
@@ -77,3 +106,14 @@ export function isName(addr) { | ||
/** | ||
* Check if object is a CID instance | ||
* Check if object is a {@link Multiaddr} instance | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { isMultiaddr, multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* isMultiaddr(5) | ||
* // false | ||
* isMultiaddr(multiaddr('/ip4/127.0.0.1')) | ||
* // true | ||
* ``` | ||
*/ | ||
@@ -84,17 +124,5 @@ export function isMultiaddr(value) { | ||
/** | ||
* Creates a [multiaddr](https://github.com/multiformats/multiaddr) from | ||
* a Uint8Array, String or another Multiaddr instance | ||
* public key. | ||
* | ||
* Creates a {@link Multiaddr} from a {@link MultiaddrInput} | ||
*/ | ||
class DefaultMultiaddr { | ||
/** | ||
* @example | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
* ``` | ||
* | ||
* @param {MultiaddrInput} [addr] - If String or Uint8Array, needs to adhere to the address format of a [multiaddr](https://github.com/multiformats/multiaddr#string-format) | ||
*/ | ||
constructor(addr) { | ||
@@ -311,3 +339,5 @@ _DefaultMultiaddr_string.set(this, void 0); | ||
* ```js | ||
* console.log(new Multiaddr('/ip4/127.0.0.1/tcp/4001')) | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // '<Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001>' | ||
@@ -320,13 +350,13 @@ * ``` | ||
inspect() { | ||
return '<Multiaddr ' + | ||
uint8ArrayToString(this.bytes, 'base16') + ' - ' + | ||
codec.bytesToString(this.bytes) + '>'; | ||
return `<Multiaddr ${uint8ArrayToString(this.bytes, 'base16')} - ${codec.bytesToString(this.bytes)}>`; | ||
} | ||
} | ||
/** | ||
* Static factory | ||
* A function that takes a {@link MultiaddrInput} and returns a {@link Multiaddr} | ||
* | ||
* @example | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* import { multiaddr } from '@libp2p/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -333,0 +363,0 @@ * ``` |
@@ -1,8 +0,2 @@ | ||
export interface Protocol { | ||
code: number; | ||
size: number; | ||
name: string; | ||
resolvable?: boolean; | ||
path?: boolean; | ||
} | ||
import type { Protocol } from './index.js'; | ||
export declare const names: Record<string, Protocol>; | ||
@@ -12,3 +6,15 @@ export declare const codes: Record<number, Protocol>; | ||
export declare function createProtocol(code: number, size: number, name: string, resolvable?: any, path?: any): Protocol; | ||
/** | ||
* For the passed proto string or number, return a {@link Protocol} | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { protocol } from '@multiformats/multiaddr' | ||
* | ||
* console.info(protocol(4)) | ||
* // { code: 4, size: 32, name: 'ip4', resolvable: false, path: false } | ||
* ``` | ||
*/ | ||
export declare function getProtocol(proto: number | string): Protocol; | ||
//# sourceMappingURL=protocols-table.d.ts.map |
@@ -58,2 +58,14 @@ const V = -1; | ||
} | ||
/** | ||
* For the passed proto string or number, return a {@link Protocol} | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { protocol } from '@multiformats/multiaddr' | ||
* | ||
* console.info(protocol(4)) | ||
* // { code: 4, size: 32, name: 'ip4', resolvable: false, path: false } | ||
* ``` | ||
*/ | ||
export function getProtocol(proto) { | ||
@@ -60,0 +72,0 @@ if (typeof proto === 'number') { |
@@ -0,6 +1,29 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* Provides strategies for resolving multiaddrs. | ||
*/ | ||
import type { AbortOptions, Multiaddr } from '../index.js'; | ||
/** | ||
* Resolver for dnsaddr addresses. | ||
* | ||
* @example | ||
* | ||
* ```typescript | ||
* import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers' | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io') | ||
* const addresses = await dnsaddrResolver(ma) | ||
* | ||
* console.info(addresses) | ||
* //[ | ||
* // '/dnsaddr/am6.bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb', | ||
* // '/dnsaddr/ny5.bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa', | ||
* // '/dnsaddr/sg1.bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt', | ||
* // '/dnsaddr/sv15.bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN' | ||
* //] | ||
* ``` | ||
*/ | ||
export declare function dnsaddrResolver(addr: Multiaddr, options?: AbortOptions): Promise<string[]>; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -0,1 +1,6 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* Provides strategies for resolving multiaddrs. | ||
*/ | ||
import { getProtocol } from '../protocols-table.js'; | ||
@@ -6,2 +11,20 @@ import Resolver from './dns.js'; | ||
* Resolver for dnsaddr addresses. | ||
* | ||
* @example | ||
* | ||
* ```typescript | ||
* import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers' | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io') | ||
* const addresses = await dnsaddrResolver(ma) | ||
* | ||
* console.info(addresses) | ||
* //[ | ||
* // '/dnsaddr/am6.bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb', | ||
* // '/dnsaddr/ny5.bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa', | ||
* // '/dnsaddr/sg1.bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt', | ||
* // '/dnsaddr/sv15.bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN' | ||
* //] | ||
* ``` | ||
*/ | ||
@@ -8,0 +31,0 @@ export async function dnsaddrResolver(addr, options = {}) { |
{ | ||
"name": "@multiformats/multiaddr", | ||
"version": "11.0.8", | ||
"version": "11.0.9", | ||
"description": "multiaddr implementation (binary + string representation of network addresses)", | ||
@@ -164,3 +164,4 @@ "license": "Apache-2.0 OR MIT", | ||
"test:electron-main": "aegir test -t electron-main", | ||
"release": "aegir release" | ||
"release": "aegir release", | ||
"docs": "aegir docs" | ||
}, | ||
@@ -177,3 +178,3 @@ "dependencies": { | ||
"@types/varint": "^6.0.0", | ||
"aegir": "^37.4.5", | ||
"aegir": "^37.6.2", | ||
"sinon": "^15.0.0", | ||
@@ -180,0 +181,0 @@ "util": "^0.12.3" |
@@ -6,4 +6,3 @@ import { convertToBytes, convertToString } from './convert.js' | ||
import { toString as uint8ArrayToString } from 'uint8arrays/to-string' | ||
import type { Protocol } from './protocols-table.js' | ||
import type { StringTuple, Tuple } from './index.js' | ||
import type { StringTuple, Tuple, Protocol } from './index.js' | ||
@@ -13,3 +12,3 @@ /** | ||
*/ | ||
export function stringToStringTuples (str: string) { | ||
export function stringToStringTuples (str: string): string[][] { | ||
const tuples = [] | ||
@@ -56,3 +55,3 @@ const parts = str.split('/').slice(1) // skip first empty elem | ||
*/ | ||
export function stringTuplesToString (tuples: StringTuple[]) { | ||
export function stringTuplesToString (tuples: StringTuple[]): string { | ||
const parts: string[] = [] | ||
@@ -105,3 +104,3 @@ tuples.map((tup) => { | ||
*/ | ||
export function tuplesToBytes (tuples: Tuple[]) { | ||
export function tuplesToBytes (tuples: Tuple[]): Uint8Array { | ||
return fromBytes(uint8ArrayConcat(tuples.map((tup) => { | ||
@@ -119,3 +118,6 @@ const proto = protoFromTuple(tup) | ||
export function sizeForAddr (p: Protocol, addr: Uint8Array | number[]) { | ||
/** | ||
* For the passed address, return the serialized size | ||
*/ | ||
export function sizeForAddr (p: Protocol, addr: Uint8Array | number[]): number { | ||
if (p.size > 0) { | ||
@@ -166,3 +168,3 @@ return p.size / 8 | ||
*/ | ||
export function bytesToString (buf: Uint8Array) { | ||
export function bytesToString (buf: Uint8Array): string { | ||
const a = bytesToTuples(buf) | ||
@@ -176,3 +178,3 @@ const b = tuplesToStringTuples(a) | ||
*/ | ||
export function stringToBytes (str: string) { | ||
export function stringToBytes (str: string): Uint8Array { | ||
str = cleanPath(str) | ||
@@ -188,3 +190,3 @@ const a = stringToStringTuples(str) | ||
*/ | ||
export function fromString (str: string) { | ||
export function fromString (str: string): Uint8Array { | ||
return stringToBytes(str) | ||
@@ -196,3 +198,3 @@ } | ||
*/ | ||
export function fromBytes (buf: Uint8Array) { | ||
export function fromBytes (buf: Uint8Array): Uint8Array { | ||
const err = validateBytes(buf) | ||
@@ -213,17 +215,17 @@ if (err != null) { | ||
export function isValidBytes (buf: Uint8Array) { | ||
export function isValidBytes (buf: Uint8Array): boolean { | ||
return validateBytes(buf) === undefined | ||
} | ||
export function cleanPath (str: string) { | ||
export function cleanPath (str: string): string { | ||
return '/' + str.trim().split('/').filter((a) => a).join('/') | ||
} | ||
export function ParseError (str: string) { | ||
export function ParseError (str: string): Error { | ||
return new Error('Error parsing address: ' + str) | ||
} | ||
export function protoFromTuple (tup: any[]) { | ||
export function protoFromTuple (tup: any[]): Protocol { | ||
const proto = getProtocol(tup[0]) | ||
return proto | ||
} |
@@ -0,1 +1,6 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* Provides methods for converting | ||
*/ | ||
@@ -17,3 +22,5 @@ import * as ip from './ip.js' | ||
*/ | ||
export function convert (proto: string, a: string | Uint8Array) { | ||
export function convert (proto: string, a: string): Uint8Array | ||
export function convert (proto: string, a: Uint8Array): string | ||
export function convert (proto: string, a: string | Uint8Array): Uint8Array | string { | ||
if (a instanceof Uint8Array) { | ||
@@ -29,3 +36,3 @@ return convertToString(proto, a) | ||
*/ | ||
export function convertToString (proto: number | string, buf: Uint8Array) { | ||
export function convertToString (proto: number | string, buf: Uint8Array): string { | ||
const protocol = getProtocol(proto) | ||
@@ -64,3 +71,3 @@ switch (protocol.code) { | ||
export function convertToBytes (proto: string | number, str: string) { | ||
export function convertToBytes (proto: string | number, str: string): Uint8Array { | ||
const protocol = getProtocol(proto) | ||
@@ -107,3 +114,3 @@ switch (protocol.code) { | ||
function ip2bytes (ipString: string) { | ||
function ip2bytes (ipString: string): Uint8Array { | ||
if (!ip.isIP(ipString)) { | ||
@@ -115,3 +122,3 @@ throw new Error('invalid ip address') | ||
function bytes2ip (ipBuff: Uint8Array) { | ||
function bytes2ip (ipBuff: Uint8Array): string { | ||
const ipString = ip.toString(ipBuff, 0, ipBuff.length) | ||
@@ -127,3 +134,3 @@ if (ipString == null) { | ||
function port2bytes (port: number) { | ||
function port2bytes (port: number): Uint8Array { | ||
const buf = new ArrayBuffer(2) | ||
@@ -136,3 +143,3 @@ const view = new DataView(buf) | ||
function bytes2port (buf: Uint8Array) { | ||
function bytes2port (buf: Uint8Array): number { | ||
const view = new DataView(buf.buffer) | ||
@@ -142,3 +149,3 @@ return view.getUint16(buf.byteOffset) | ||
function str2bytes (str: string) { | ||
function str2bytes (str: string): Uint8Array { | ||
const buf = uint8ArrayFromString(str) | ||
@@ -149,3 +156,3 @@ const size = Uint8Array.from(varint.encode(buf.length)) | ||
function bytes2str (buf: Uint8Array) { | ||
function bytes2str (buf: Uint8Array): string { | ||
const size = varint.decode(buf) | ||
@@ -161,3 +168,3 @@ buf = buf.slice(varint.decode.bytes) | ||
function mh2bytes (hash: string) { | ||
function mh2bytes (hash: string): Uint8Array { | ||
let mh | ||
@@ -176,3 +183,3 @@ | ||
function mb2bytes (mbstr: string) { | ||
function mb2bytes (mbstr: string): Uint8Array { | ||
const mb = anybaseDecoder.decode(mbstr) | ||
@@ -196,3 +203,3 @@ const size = Uint8Array.from(varint.encode(mb.length)) | ||
*/ | ||
function bytes2mh (buf: Uint8Array) { | ||
function bytes2mh (buf: Uint8Array): string { | ||
const size = varint.decode(buf) | ||
@@ -208,3 +215,3 @@ const address = buf.slice(varint.decode.bytes) | ||
function onion2bytes (str: string) { | ||
function onion2bytes (str: string): Uint8Array { | ||
const addr = str.split(':') | ||
@@ -230,3 +237,3 @@ if (addr.length !== 2) { | ||
function onion32bytes (str: string) { | ||
function onion32bytes (str: string): Uint8Array { | ||
const addr = str.split(':') | ||
@@ -251,3 +258,3 @@ if (addr.length !== 2) { | ||
function bytes2onion (buf: Uint8Array) { | ||
function bytes2onion (buf: Uint8Array): string { | ||
const addrBytes = buf.slice(0, buf.length - 2) | ||
@@ -254,0 +261,0 @@ const portBytes = buf.slice(buf.length - 2) |
194
src/index.ts
@@ -0,1 +1,15 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* An implementation of a Multiaddr in JavaScript | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const ma = multiaddr('/ip4/127.0.0.1/tcp/1234') | ||
* ``` | ||
*/ | ||
import * as codec from './codec.js' | ||
@@ -24,2 +38,5 @@ import { getProtocol, names } from './protocols-table.js' | ||
/** | ||
* Protocols are present in the protocol table | ||
*/ | ||
export interface Protocol { | ||
@@ -33,2 +50,5 @@ code: number | ||
/** | ||
* A plain JavaScript object representation of a {@link Multiaddr} | ||
*/ | ||
export interface MultiaddrObject { | ||
@@ -41,2 +61,5 @@ family: 4 | 6 | ||
/** | ||
* A NodeAddress is an IPv4/IPv6 address/TCP port combination | ||
*/ | ||
export interface NodeAddress { | ||
@@ -48,10 +71,26 @@ family: 4 | 6 | ||
/** | ||
* These types can be parsed into a {@link Multiaddr} object | ||
*/ | ||
export type MultiaddrInput = string | Multiaddr | Uint8Array | null | ||
/** | ||
* A Resolver is a function that takes a {@link Multiaddr} and resolves it into one | ||
* or more string representations of that {@link Multiaddr}. | ||
*/ | ||
export interface Resolver { (addr: Multiaddr, options?: AbortOptions): Promise<string[]> } | ||
/** | ||
* A code/value pair | ||
*/ | ||
export type Tuple = [number, Uint8Array?] | ||
/** | ||
* A code/value pair with the value as a string | ||
*/ | ||
export type StringTuple = [number, string?] | ||
/** | ||
* Allows aborting long-lived operations | ||
*/ | ||
export interface AbortOptions { | ||
@@ -61,2 +100,5 @@ signal?: AbortSignal | ||
/** | ||
* All configured {@link Resolver}s | ||
*/ | ||
export const resolvers = new Map<string, Resolver>() | ||
@@ -73,3 +115,5 @@ const symbol = Symbol.for('@multiformats/js-multiaddr/multiaddr') | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').toString() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').toString() | ||
* // '/ip4/127.0.0.1/tcp/4001' | ||
@@ -85,3 +129,5 @@ * ``` | ||
* ```js | ||
* JSON.stringify(new Multiaddr('/ip4/127.0.0.1/tcp/4001')) | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* JSON.stringify(multiaddr('/ip4/127.0.0.1/tcp/4001')) | ||
* // '/ip4/127.0.0.1/tcp/4001' | ||
@@ -97,3 +143,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').toOptions() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').toOptions() | ||
* // { family: 4, host: '127.0.0.1', transport: 'tcp', port: 4001 } | ||
@@ -112,3 +160,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').protos() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').protos() | ||
* // [ { code: 4, size: 32, name: 'ip4' }, | ||
@@ -126,3 +176,5 @@ * // { code: 6, size: 16, name: 'tcp' } ] | ||
* ```js | ||
* Multiaddr('/ip4/127.0.0.1/tcp/4001').protoCodes() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').protoCodes() | ||
* // [ 4, 6 ] | ||
@@ -139,3 +191,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').protoNames() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').protoNames() | ||
* // [ 'ip4', 'tcp' ] | ||
@@ -151,3 +205,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr("/ip4/127.0.0.1/tcp/4001").tuples() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').tuples() | ||
* // [ [ 4, <Buffer 7f 00 00 01> ], [ 6, <Buffer 0f a1> ] ] | ||
@@ -165,3 +221,5 @@ * ``` | ||
* ```js | ||
* new Multiaddr("/ip4/127.0.0.1/tcp/4001").stringTuples() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').stringTuples() | ||
* // [ [ 4, '127.0.0.1' ], [ 6, '4001' ] ] | ||
@@ -177,6 +235,8 @@ * ``` | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080> | ||
* | ||
* const mh2 = new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* const mh2 = multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -200,6 +260,8 @@ * | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080> | ||
* | ||
* const mh2 = new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* const mh2 = multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -226,3 +288,5 @@ * | ||
* ```js | ||
* const addr = new Multiaddr('/ip4/0.0.0.0/tcp/8080/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const addr = multiaddr('/ip4/0.0.0.0/tcp/8080/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC') | ||
* // <Multiaddr 0400... - /ip4/0.0.0.0/tcp/8080/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC> | ||
@@ -233,3 +297,3 @@ * | ||
* | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/8080').decapsulateCode(421).toString() | ||
* multiaddr('/ip4/127.0.0.1/tcp/8080').decapsulateCode(421).toString() | ||
* // '/ip4/127.0.0.1/tcp/8080' | ||
@@ -245,3 +309,5 @@ * ``` | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080/ipfs/QmValidBase58string> | ||
@@ -260,3 +326,5 @@ * | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080/unix/tmp/p2p.sock') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080/unix/tmp/p2p.sock') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080/unix/tmp/p2p.sock> | ||
@@ -275,6 +343,8 @@ * | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/8.8.8.8/tcp/1080') | ||
* // <Multiaddr 0408080808060438 - /ip4/8.8.8.8/tcp/1080> | ||
* | ||
* const mh2 = new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* const mh2 = multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -296,4 +366,6 @@ * | ||
* ```js | ||
* Multiaddr.resolvers.set('dnsaddr', resolverFunction) | ||
* const mh1 = new Multiaddr('/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb') | ||
* import { multiaddr, resolvers } from '@multiformats/multiaddr' | ||
* | ||
* resolvers.set('dnsaddr', resolverFunction) | ||
* const mh1 = multiaddr('/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb') | ||
* const resolvedMultiaddrs = await mh1.resolve() | ||
@@ -318,3 +390,5 @@ * // [ | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').nodeAddress() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').nodeAddress() | ||
* // {family: 4, address: '127.0.0.1', port: 4001} | ||
@@ -334,9 +408,11 @@ * ``` | ||
* ```js | ||
* const mh1 = new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const mh1 = multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
* const mh2 = new Multiaddr('/ip4/192.168.2.1/tcp/5001') | ||
* const mh2 = multiaddr('/ip4/192.168.2.1/tcp/5001') | ||
* // <Multiaddr 04c0a80201061389 - /ip4/192.168.2.1/tcp/5001> | ||
* const mh3 = mh1.encapsulate(mh2) | ||
* // <Multiaddr 047f000001060fa104c0a80201061389 - /ip4/127.0.0.1/tcp/4001/ip4/192.168.2.1/tcp/5001> | ||
* const mh4 = new Multiaddr('/ip4/127.0.0.1/tcp/2000/wss/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a') | ||
* const mh4 = multiaddr('/ip4/127.0.0.1/tcp/2000/wss/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a') | ||
* // <Multiaddr 047f0000010607d0de039302a503221220d52ebb89d85b02a284948203a62ff28389c57c9f42beec4ec20db76a64835843 - /ip4/127.0.0.1/tcp/2000/wss/p2p-webrtc-star/p2p/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSooo2a> | ||
@@ -362,3 +438,5 @@ * mh1.isThinWaistAddress() | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001').inspect() | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001').inspect() | ||
* // '<Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001>' | ||
@@ -375,3 +453,5 @@ * ``` | ||
* ```js | ||
* Multiaddr.fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp') | ||
* import { fromNodeAddress } from '@multiformats/multiaddr' | ||
* | ||
* fromNodeAddress({address: '127.0.0.1', port: '4001'}, 'tcp') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -402,3 +482,14 @@ * ``` | ||
/** | ||
* Returns if something is a Multiaddr that is a name | ||
* Returns if something is a {@link Multiaddr} that is a resolvable name | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { isName, multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* isName(multiaddr('/ip4/127.0.0.1')) | ||
* // false | ||
* isName(multiaddr('/dns/ipfs.io')) | ||
* // true | ||
* ``` | ||
*/ | ||
@@ -415,3 +506,14 @@ export function isName (addr: Multiaddr): boolean { | ||
/** | ||
* Check if object is a CID instance | ||
* Check if object is a {@link Multiaddr} instance | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { isMultiaddr, multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* isMultiaddr(5) | ||
* // false | ||
* isMultiaddr(multiaddr('/ip4/127.0.0.1')) | ||
* // true | ||
* ``` | ||
*/ | ||
@@ -423,6 +525,3 @@ export function isMultiaddr (value: any): value is Multiaddr { | ||
/** | ||
* Creates a [multiaddr](https://github.com/multiformats/multiaddr) from | ||
* a Uint8Array, String or another Multiaddr instance | ||
* public key. | ||
* | ||
* Creates a {@link Multiaddr} from a {@link MultiaddrInput} | ||
*/ | ||
@@ -437,11 +536,2 @@ class DefaultMultiaddr implements Multiaddr { | ||
/** | ||
* @example | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
* ``` | ||
* | ||
* @param {MultiaddrInput} [addr] - If String or Uint8Array, needs to adhere to the address format of a [multiaddr](https://github.com/multiformats/multiaddr#string-format) | ||
*/ | ||
constructor (addr?: MultiaddrInput) { | ||
@@ -628,3 +718,3 @@ // default | ||
equals (addr: { bytes: Uint8Array }) { | ||
equals (addr: { bytes: Uint8Array }): boolean { | ||
return uint8ArrayEquals(this.bytes, addr.bytes) | ||
@@ -664,3 +754,3 @@ } | ||
isThinWaistAddress (addr?: Multiaddr) { | ||
isThinWaistAddress (addr?: Multiaddr): boolean { | ||
const protos = (addr ?? this).protos() | ||
@@ -688,14 +778,14 @@ | ||
* ```js | ||
* console.log(new Multiaddr('/ip4/127.0.0.1/tcp/4001')) | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // '<Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001>' | ||
* ``` | ||
*/ | ||
[inspect] () { | ||
[inspect] (): string { | ||
return this.inspect() | ||
} | ||
inspect () { | ||
return '<Multiaddr ' + | ||
uint8ArrayToString(this.bytes, 'base16') + ' - ' + | ||
codec.bytesToString(this.bytes) + '>' | ||
inspect (): string { | ||
return `<Multiaddr ${uint8ArrayToString(this.bytes, 'base16')} - ${codec.bytesToString(this.bytes)}>` | ||
} | ||
@@ -705,7 +795,9 @@ } | ||
/** | ||
* Static factory | ||
* A function that takes a {@link MultiaddrInput} and returns a {@link Multiaddr} | ||
* | ||
* @example | ||
* ```js | ||
* new Multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* import { multiaddr } from '@libp2p/multiaddr' | ||
* | ||
* multiaddr('/ip4/127.0.0.1/tcp/4001') | ||
* // <Multiaddr 047f000001060fa1 - /ip4/127.0.0.1/tcp/4001> | ||
@@ -712,0 +804,0 @@ * ``` |
@@ -1,8 +0,2 @@ | ||
export interface Protocol { | ||
code: number | ||
size: number | ||
name: string | ||
resolvable?: boolean | ||
path?: boolean | ||
} | ||
import type { Protocol } from './index.js' | ||
@@ -70,3 +64,15 @@ const V = -1 | ||
export function getProtocol (proto: number | string) { | ||
/** | ||
* For the passed proto string or number, return a {@link Protocol} | ||
* | ||
* @example | ||
* | ||
* ```js | ||
* import { protocol } from '@multiformats/multiaddr' | ||
* | ||
* console.info(protocol(4)) | ||
* // { code: 4, size: 32, name: 'ip4', resolvable: false, path: false } | ||
* ``` | ||
*/ | ||
export function getProtocol (proto: number | string): Protocol { | ||
if (typeof proto === 'number') { | ||
@@ -73,0 +79,0 @@ if (codes[proto] != null) { |
@@ -0,1 +1,7 @@ | ||
/** | ||
* @packageDocumentation | ||
* | ||
* Provides strategies for resolving multiaddrs. | ||
*/ | ||
import { getProtocol } from '../protocols-table.js' | ||
@@ -9,4 +15,22 @@ import Resolver from './dns.js' | ||
* Resolver for dnsaddr addresses. | ||
* | ||
* @example | ||
* | ||
* ```typescript | ||
* import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers' | ||
* import { multiaddr } from '@multiformats/multiaddr' | ||
* | ||
* const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io') | ||
* const addresses = await dnsaddrResolver(ma) | ||
* | ||
* console.info(addresses) | ||
* //[ | ||
* // '/dnsaddr/am6.bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb', | ||
* // '/dnsaddr/ny5.bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa', | ||
* // '/dnsaddr/sg1.bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt', | ||
* // '/dnsaddr/sv15.bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN' | ||
* //] | ||
* ``` | ||
*/ | ||
export async function dnsaddrResolver (addr: Multiaddr, options: AbortOptions = {}) { | ||
export async function dnsaddrResolver (addr: Multiaddr, options: AbortOptions = {}): Promise<string[]> { | ||
const resolver = new Resolver() | ||
@@ -13,0 +37,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
135867
2849