@multiformats/multiaddr
Advanced tools
Comparing version 10.3.2 to 10.3.3
@@ -103,8 +103,29 @@ import * as codec from './codec.js'; | ||
toOptions() { | ||
const parsed = this.toString().split('/'); | ||
const codes = this.protoCodes(); | ||
const parts = this.toString().split('/').slice(1); | ||
let transport; | ||
let port; | ||
if (parts.length > 2) { | ||
// default to https when protocol & port are omitted from DNS addrs | ||
if (DNS_CODES.includes(codes[0]) && P2P_CODES.includes(codes[1])) { | ||
transport = getProtocol('tcp').name; | ||
port = 443; | ||
} | ||
else { | ||
transport = getProtocol(parts[2]).name; | ||
port = parseInt(parts[3]); | ||
} | ||
} | ||
else if (DNS_CODES.includes(codes[0])) { | ||
transport = getProtocol('tcp').name; | ||
port = 443; | ||
} | ||
else { | ||
throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".'); | ||
} | ||
const opts = { | ||
family: parsed[1] === 'ip4' ? 4 : 6, | ||
host: parsed[2], | ||
transport: parsed[3], | ||
port: parseInt(parsed[4]) | ||
family: (codes[0] === 41 || codes[0] === 55) ? 6 : 4, | ||
host: parts[1], | ||
transport, | ||
port | ||
}; | ||
@@ -111,0 +132,0 @@ return opts; |
{ | ||
"name": "@multiformats/multiaddr", | ||
"version": "10.3.2", | ||
"version": "10.3.3", | ||
"description": "multiaddr implementation (binary + string representation of network addresses)", | ||
@@ -5,0 +5,0 @@ "license": "Apache-2.0 OR MIT", |
@@ -144,9 +144,28 @@ import * as codec from './codec.js' | ||
toOptions (): MultiaddrObject { | ||
const parsed = this.toString().split('/') | ||
const codes = this.protoCodes() | ||
const parts = this.toString().split('/').slice(1) | ||
let transport: string | ||
let port: number | ||
if (parts.length > 2) { | ||
// default to https when protocol & port are omitted from DNS addrs | ||
if (DNS_CODES.includes(codes[0]) && P2P_CODES.includes(codes[1])) { | ||
transport = getProtocol('tcp').name | ||
port = 443 | ||
} else { | ||
transport = getProtocol(parts[2]).name | ||
port = parseInt(parts[3]) | ||
} | ||
} else if (DNS_CODES.includes(codes[0])) { | ||
transport = getProtocol('tcp').name | ||
port = 443 | ||
} else { | ||
throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".') | ||
} | ||
const opts: MultiaddrObject = { | ||
family: parsed[1] === 'ip4' ? 4 : 6, | ||
host: parsed[2], | ||
transport: parsed[3], | ||
port: parseInt(parsed[4]) | ||
family: (codes[0] === 41 || codes[0] === 55) ? 6 : 4, | ||
host: parts[1], | ||
transport, | ||
port | ||
} | ||
@@ -153,0 +172,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
133298
2696
0