libp2p 2.8.11 → 2.8.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +7 -7
- package/dist/index.min.js.map +4 -4
- package/dist/src/config.js +1 -1
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-manager/constants.defaults.d.ts +4 -0
- package/dist/src/connection-manager/constants.defaults.d.ts.map +1 -1
- package/dist/src/connection-manager/constants.defaults.js +4 -0
- package/dist/src/connection-manager/constants.defaults.js.map +1 -1
- package/dist/src/connection-manager/dial-queue.d.ts +4 -3
- package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
- package/dist/src/connection-manager/dial-queue.js +7 -9
- package/dist/src/connection-manager/dial-queue.js.map +1 -1
- package/dist/src/connection-manager/index.d.ts +3 -3
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +1 -1
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/connection-manager/resolvers/dnsaddr.d.ts +11 -0
- package/dist/src/connection-manager/resolvers/dnsaddr.d.ts.map +1 -0
- package/dist/src/connection-manager/resolvers/dnsaddr.js +52 -0
- package/dist/src/connection-manager/resolvers/dnsaddr.js.map +1 -0
- package/dist/src/connection-manager/resolvers/index.d.ts +23 -0
- package/dist/src/connection-manager/resolvers/index.d.ts.map +1 -0
- package/dist/src/connection-manager/resolvers/index.js +31 -0
- package/dist/src/connection-manager/resolvers/index.js.map +1 -0
- package/dist/src/connection-manager/utils.d.ts +1 -6
- package/dist/src/connection-manager/utils.d.ts.map +1 -1
- package/dist/src/connection-manager/utils.js +4 -23
- package/dist/src/connection-manager/utils.js.map +1 -1
- package/dist/src/errors.d.ts +3 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +6 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/typedoc-urls.json +1 -0
- package/package.json +10 -10
- package/src/config.ts +1 -1
- package/src/connection-manager/constants.defaults.ts +5 -0
- package/src/connection-manager/dial-queue.ts +10 -13
- package/src/connection-manager/index.ts +4 -4
- package/src/connection-manager/resolvers/dnsaddr.ts +69 -0
- package/src/connection-manager/resolvers/index.ts +59 -0
- package/src/connection-manager/utils.ts +6 -32
- package/src/errors.ts +7 -0
- package/src/index.ts +2 -0
- package/src/version.ts +1 -1
package/dist/src/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export type ServiceFactoryMap<T extends ServiceMap = ServiceMap> = {
|
|
|
26
26
|
[Property in keyof T]: (components: Components & T) => T[Property];
|
|
27
27
|
};
|
|
28
28
|
export type { AddressManagerInit, AddressFilter };
|
|
29
|
+
export { dnsaddrResolver } from './connection-manager/resolvers/index.ts';
|
|
29
30
|
/**
|
|
30
31
|
* For Libp2p configurations and modules details read the [Configuration Document](https://github.com/libp2p/js-libp2p/tree/main/doc/CONFIGURATION.md).
|
|
31
32
|
*/
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -17,6 +17,7 @@ import { generateKeyPair } from '@libp2p/crypto/keys';
|
|
|
17
17
|
import { peerIdFromPrivateKey } from '@libp2p/peer-id';
|
|
18
18
|
import { validateConfig } from './config.js';
|
|
19
19
|
import { Libp2p as Libp2pClass } from './libp2p.js';
|
|
20
|
+
export { dnsaddrResolver } from "./connection-manager/resolvers/index.js";
|
|
20
21
|
/**
|
|
21
22
|
* Returns a new instance of the Libp2p interface, generating a new PeerId
|
|
22
23
|
* if one is not passed as part of the options.
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AAiBnD,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AA0IzE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAsC,UAA4B,EAAE;IACpG,OAAO,CAAC,UAAU,KAAK,MAAM,eAAe,CAAC,SAAS,CAAC,CAAA;IAEvD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC;QAC3B,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC;QAChC,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC;KACjD,CAAC,CAAA;IAEF,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/src/version.d.ts
CHANGED
package/dist/src/version.js
CHANGED
package/dist/typedoc-urls.json
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
".:Libp2pOptions": "https://libp2p.github.io/js-libp2p/types/libp2p.index.Libp2pOptions.html",
|
|
11
11
|
"ServiceFactoryMap": "https://libp2p.github.io/js-libp2p/types/libp2p.index.ServiceFactoryMap.html",
|
|
12
12
|
".:ServiceFactoryMap": "https://libp2p.github.io/js-libp2p/types/libp2p.index.ServiceFactoryMap.html",
|
|
13
|
+
"dnsaddrResolver": "https://libp2p.github.io/js-libp2p/variables/libp2p.index.dnsaddrResolver.html",
|
|
13
14
|
"createLibp2p": "https://libp2p.github.io/js-libp2p/functions/libp2p.index.createLibp2p.html",
|
|
14
15
|
".:createLibp2p": "https://libp2p.github.io/js-libp2p/functions/libp2p.index.createLibp2p.html",
|
|
15
16
|
"userAgent": "https://libp2p.github.io/js-libp2p/functions/libp2p.user-agent.userAgent.html",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libp2p",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.12",
|
|
4
4
|
"description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/libp2p#readme",
|
|
@@ -80,15 +80,15 @@
|
|
|
80
80
|
"dependencies": {
|
|
81
81
|
"@chainsafe/is-ip": "^2.1.0",
|
|
82
82
|
"@chainsafe/netmask": "^2.0.0",
|
|
83
|
-
"@libp2p/crypto": "^5.1.
|
|
84
|
-
"@libp2p/interface": "^2.10.
|
|
85
|
-
"@libp2p/interface-internal": "^2.3.
|
|
86
|
-
"@libp2p/logger": "^5.1.
|
|
87
|
-
"@libp2p/multistream-select": "^6.0.
|
|
88
|
-
"@libp2p/peer-collections": "^6.0.
|
|
89
|
-
"@libp2p/peer-id": "^5.1.
|
|
90
|
-
"@libp2p/peer-store": "^11.2.
|
|
91
|
-
"@libp2p/utils": "^6.7.
|
|
83
|
+
"@libp2p/crypto": "^5.1.7",
|
|
84
|
+
"@libp2p/interface": "^2.10.5",
|
|
85
|
+
"@libp2p/interface-internal": "^2.3.18",
|
|
86
|
+
"@libp2p/logger": "^5.1.21",
|
|
87
|
+
"@libp2p/multistream-select": "^6.0.28",
|
|
88
|
+
"@libp2p/peer-collections": "^6.0.34",
|
|
89
|
+
"@libp2p/peer-id": "^5.1.8",
|
|
90
|
+
"@libp2p/peer-store": "^11.2.6",
|
|
91
|
+
"@libp2p/utils": "^6.7.1",
|
|
92
92
|
"@multiformats/dns": "^1.0.6",
|
|
93
93
|
"@multiformats/multiaddr": "^12.4.4",
|
|
94
94
|
"@multiformats/multiaddr-matcher": "^1.7.2",
|
package/src/config.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FaultTolerance, InvalidParametersError } from '@libp2p/interface'
|
|
2
2
|
import { mergeOptions } from '@libp2p/utils/merge-options'
|
|
3
|
-
import { dnsaddrResolver } from '
|
|
3
|
+
import { dnsaddrResolver } from './connection-manager/resolvers/dnsaddr.ts'
|
|
4
4
|
import type { Libp2pInit } from './index.js'
|
|
5
5
|
import type { ServiceMap } from '@libp2p/interface'
|
|
6
6
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
@@ -54,3 +54,8 @@ export const LAST_DIAL_SUCCESS_KEY = 'last-dial-success'
|
|
|
54
54
|
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxDialQueueLength
|
|
55
55
|
*/
|
|
56
56
|
export const MAX_DIAL_QUEUE_LENGTH = 500
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxRecursiveDepth
|
|
60
|
+
*/
|
|
61
|
+
export const MAX_RECURSIVE_DEPTH = 32
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
import { TimeoutError, DialError, AbortError } from '@libp2p/interface'
|
|
3
3
|
import { PeerMap } from '@libp2p/peer-collections'
|
|
4
4
|
import { PriorityQueue } from '@libp2p/utils/priority-queue'
|
|
5
|
-
import {
|
|
6
|
-
import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'
|
|
5
|
+
import { multiaddr } from '@multiformats/multiaddr'
|
|
7
6
|
import { Circuit } from '@multiformats/multiaddr-matcher'
|
|
8
7
|
import { anySignal } from 'any-signal'
|
|
9
8
|
import { setMaxListeners } from 'main-event'
|
|
@@ -20,13 +19,13 @@ import {
|
|
|
20
19
|
MAX_DIAL_QUEUE_LENGTH,
|
|
21
20
|
LAST_DIAL_SUCCESS_KEY
|
|
22
21
|
} from './constants.js'
|
|
23
|
-
import {
|
|
22
|
+
import { resolveMultiaddr, dnsaddrResolver } from './resolvers/index.js'
|
|
24
23
|
import { DEFAULT_DIAL_PRIORITY } from './index.js'
|
|
25
|
-
import type { AddressSorter, ComponentLogger, Logger, Connection, ConnectionGater, Metrics, PeerId, Address, PeerStore, PeerRouting, IsDialableOptions, OpenConnectionProgressEvents } from '@libp2p/interface'
|
|
24
|
+
import type { AddressSorter, ComponentLogger, Logger, Connection, ConnectionGater, Metrics, PeerId, Address, PeerStore, PeerRouting, IsDialableOptions, OpenConnectionProgressEvents, MultiaddrResolver } from '@libp2p/interface'
|
|
26
25
|
import type { OpenConnectionOptions, TransportManager } from '@libp2p/interface-internal'
|
|
27
26
|
import type { PriorityQueueJobOptions } from '@libp2p/utils/priority-queue'
|
|
28
27
|
import type { DNS } from '@multiformats/dns'
|
|
29
|
-
import type { Multiaddr
|
|
28
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
30
29
|
import type { ProgressOptions } from 'progress-events'
|
|
31
30
|
|
|
32
31
|
export interface PendingDialTarget {
|
|
@@ -45,7 +44,7 @@ interface DialerInit {
|
|
|
45
44
|
maxDialQueueLength?: number
|
|
46
45
|
maxPeerAddrsToDial?: number
|
|
47
46
|
dialTimeout?: number
|
|
48
|
-
resolvers?: Record<string,
|
|
47
|
+
resolvers?: Record<string, MultiaddrResolver>
|
|
49
48
|
connections?: PeerMap<Connection[]>
|
|
50
49
|
}
|
|
51
50
|
|
|
@@ -80,6 +79,7 @@ export class DialQueue {
|
|
|
80
79
|
private shutDownController: AbortController
|
|
81
80
|
private readonly connections: PeerMap<Connection[]>
|
|
82
81
|
private readonly log: Logger
|
|
82
|
+
private readonly resolvers: Record<string, MultiaddrResolver>
|
|
83
83
|
|
|
84
84
|
constructor (components: DialQueueComponents, init: DialerInit = {}) {
|
|
85
85
|
this.addressSorter = init.addressSorter
|
|
@@ -89,14 +89,11 @@ export class DialQueue {
|
|
|
89
89
|
this.connections = init.connections ?? new PeerMap()
|
|
90
90
|
this.log = components.logger.forComponent('libp2p:connection-manager:dial-queue')
|
|
91
91
|
this.components = components
|
|
92
|
+
this.resolvers = init.resolvers ?? defaultOptions.resolvers
|
|
92
93
|
|
|
93
94
|
this.shutDownController = new AbortController()
|
|
94
95
|
setMaxListeners(Infinity, this.shutDownController.signal)
|
|
95
96
|
|
|
96
|
-
for (const [key, value] of Object.entries(init.resolvers ?? {})) {
|
|
97
|
-
resolvers.set(key, value)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
97
|
// controls dial concurrency
|
|
101
98
|
this.queue = new PriorityQueue({
|
|
102
99
|
concurrency: init.maxParallelDials ?? defaultOptions.maxParallelDials,
|
|
@@ -415,10 +412,10 @@ export class DialQueue {
|
|
|
415
412
|
// dnsaddrs are resolved
|
|
416
413
|
let resolvedAddresses = (await Promise.all(
|
|
417
414
|
addrs.map(async addr => {
|
|
418
|
-
const result = await
|
|
415
|
+
const result = await resolveMultiaddr(addr.multiaddr, this.resolvers, {
|
|
419
416
|
dns: this.components.dns,
|
|
420
|
-
|
|
421
|
-
|
|
417
|
+
log: this.log,
|
|
418
|
+
...options
|
|
422
419
|
})
|
|
423
420
|
|
|
424
421
|
if (result.length === 1 && result[0].equals(addr.multiaddr)) {
|
|
@@ -2,19 +2,19 @@ import { ConnectionClosedError, InvalidMultiaddrError, InvalidParametersError, I
|
|
|
2
2
|
import { PeerMap } from '@libp2p/peer-collections'
|
|
3
3
|
import { RateLimiter } from '@libp2p/utils/rate-limiter'
|
|
4
4
|
import { multiaddr } from '@multiformats/multiaddr'
|
|
5
|
-
import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'
|
|
6
5
|
import { CustomProgressEvent } from 'progress-events'
|
|
7
6
|
import { getPeerAddress } from '../get-peer.js'
|
|
8
7
|
import { ConnectionPruner } from './connection-pruner.js'
|
|
9
8
|
import { DIAL_TIMEOUT, INBOUND_CONNECTION_THRESHOLD, MAX_CONNECTIONS, MAX_DIAL_QUEUE_LENGTH, MAX_INCOMING_PENDING_CONNECTIONS, MAX_PARALLEL_DIALS, MAX_PEER_ADDRS_TO_DIAL } from './constants.js'
|
|
10
9
|
import { DialQueue } from './dial-queue.js'
|
|
11
10
|
import { ReconnectQueue } from './reconnect-queue.js'
|
|
11
|
+
import { dnsaddrResolver } from './resolvers/index.ts'
|
|
12
12
|
import { multiaddrToIpNet } from './utils.js'
|
|
13
13
|
import type { IpNet } from '@chainsafe/netmask'
|
|
14
|
-
import type { PendingDial, AddressSorter, Libp2pEvents, AbortOptions, ComponentLogger, Logger, Connection, MultiaddrConnection, ConnectionGater, Metrics, PeerId, PeerStore, Startable, PendingDialStatus, PeerRouting, IsDialableOptions } from '@libp2p/interface'
|
|
14
|
+
import type { PendingDial, AddressSorter, Libp2pEvents, AbortOptions, ComponentLogger, Logger, Connection, MultiaddrConnection, ConnectionGater, Metrics, PeerId, PeerStore, Startable, PendingDialStatus, PeerRouting, IsDialableOptions, MultiaddrResolver } from '@libp2p/interface'
|
|
15
15
|
import type { ConnectionManager, OpenConnectionOptions, TransportManager } from '@libp2p/interface-internal'
|
|
16
16
|
import type { JobStatus } from '@libp2p/utils/queue'
|
|
17
|
-
import type { Multiaddr
|
|
17
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
18
18
|
import type { TypedEventTarget } from 'main-event'
|
|
19
19
|
|
|
20
20
|
export const DEFAULT_DIAL_PRIORITY = 50
|
|
@@ -112,7 +112,7 @@ export interface ConnectionManagerInit {
|
|
|
112
112
|
/**
|
|
113
113
|
* Multiaddr resolvers to use when dialling
|
|
114
114
|
*/
|
|
115
|
-
resolvers?: Record<string,
|
|
115
|
+
resolvers?: Record<string, MultiaddrResolver>
|
|
116
116
|
|
|
117
117
|
/**
|
|
118
118
|
* A list of multiaddrs that will always be allowed (except if they are in the
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { dns, RecordType } from '@multiformats/dns'
|
|
2
|
+
import { multiaddr } from '@multiformats/multiaddr'
|
|
3
|
+
import type { MultiaddrResolver, MultiaddrResolveOptions } from '@libp2p/interface'
|
|
4
|
+
import type { DNS } from '@multiformats/dns'
|
|
5
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
6
|
+
|
|
7
|
+
class DNSAddrResolver implements MultiaddrResolver {
|
|
8
|
+
private dns?: DNS
|
|
9
|
+
|
|
10
|
+
canResolve (ma: Multiaddr): boolean {
|
|
11
|
+
return ma.getComponents().some(({ name }) => name === 'dnsaddr')
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async resolve (ma: Multiaddr, options: MultiaddrResolveOptions): Promise<Multiaddr[]> {
|
|
15
|
+
const hostname = ma.getComponents()
|
|
16
|
+
.find(component => component.name === 'dnsaddr')
|
|
17
|
+
?.value
|
|
18
|
+
|
|
19
|
+
if (hostname == null) {
|
|
20
|
+
return [ma]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const resolver = this.getDNS(options)
|
|
24
|
+
const result = await resolver.query(`_dnsaddr.${hostname}`, {
|
|
25
|
+
signal: options?.signal,
|
|
26
|
+
types: [
|
|
27
|
+
RecordType.TXT
|
|
28
|
+
]
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
const peerId = ma.getComponents()
|
|
32
|
+
.find(component => component.name === 'p2p')
|
|
33
|
+
?.value
|
|
34
|
+
const output: Multiaddr[] = []
|
|
35
|
+
|
|
36
|
+
for (const answer of result.Answer) {
|
|
37
|
+
const addr = answer.data
|
|
38
|
+
.replace(/["']/g, '')
|
|
39
|
+
.trim()
|
|
40
|
+
.split('=')[1]
|
|
41
|
+
|
|
42
|
+
if (addr == null) {
|
|
43
|
+
continue
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (peerId != null && !addr.includes(peerId)) {
|
|
47
|
+
continue
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
output.push(multiaddr(addr))
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return output
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private getDNS (options: MultiaddrResolveOptions): DNS {
|
|
57
|
+
if (options.dns != null) {
|
|
58
|
+
return options.dns
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (this.dns == null) {
|
|
62
|
+
this.dns = dns()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return this.dns
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const dnsaddrResolver = new DNSAddrResolver()
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { RecursionLimitError } from '../../errors.ts'
|
|
2
|
+
import { MAX_RECURSIVE_DEPTH } from '../constants.defaults.ts'
|
|
3
|
+
import type { MultiaddrResolveOptions, MultiaddrResolver } from '@libp2p/interface'
|
|
4
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
5
|
+
|
|
6
|
+
export interface ResolveOptions extends MultiaddrResolveOptions {
|
|
7
|
+
/**
|
|
8
|
+
* When resolving DNSADDR Multiaddrs that resolve to other DNSADDR Multiaddrs,
|
|
9
|
+
* limit how many times we will recursively resolve them.
|
|
10
|
+
*
|
|
11
|
+
* @default 32
|
|
12
|
+
*/
|
|
13
|
+
maxRecursiveDepth?: number
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The current recursive depth
|
|
17
|
+
*
|
|
18
|
+
* @default 0
|
|
19
|
+
*/
|
|
20
|
+
depth?: number
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Recursively resolve multiaddrs
|
|
25
|
+
*/
|
|
26
|
+
export async function resolveMultiaddr (address: Multiaddr, resolvers: Record<string, MultiaddrResolver>, options: ResolveOptions): Promise<Multiaddr[]> {
|
|
27
|
+
const depth = options.depth ?? 0
|
|
28
|
+
|
|
29
|
+
if (depth > (options.maxRecursiveDepth ?? MAX_RECURSIVE_DEPTH)) {
|
|
30
|
+
throw new RecursionLimitError('Max recursive depth reached')
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
let resolved = false
|
|
34
|
+
const output: Multiaddr[] = []
|
|
35
|
+
|
|
36
|
+
for (const resolver of Object.values(resolvers)) {
|
|
37
|
+
if (resolver.canResolve(address)) {
|
|
38
|
+
resolved = true
|
|
39
|
+
const addresses = await resolver.resolve(address, options)
|
|
40
|
+
|
|
41
|
+
for (const address of addresses) {
|
|
42
|
+
output.push(
|
|
43
|
+
...(await resolveMultiaddr(address, resolvers, {
|
|
44
|
+
...options,
|
|
45
|
+
depth: depth + 1
|
|
46
|
+
}))
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (resolved === false) {
|
|
53
|
+
output.push(address)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return output
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { dnsaddrResolver } from './dnsaddr.js'
|
|
@@ -1,35 +1,7 @@
|
|
|
1
|
-
import { multiaddr
|
|
1
|
+
import { multiaddr } from '@multiformats/multiaddr'
|
|
2
2
|
import { convertToIpNet } from '@multiformats/multiaddr/convert'
|
|
3
3
|
import type { IpNet } from '@chainsafe/netmask'
|
|
4
|
-
import type {
|
|
5
|
-
import type { Multiaddr, ResolveOptions } from '@multiformats/multiaddr'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Recursively resolve DNSADDR multiaddrs
|
|
9
|
-
*/
|
|
10
|
-
export async function resolveMultiaddrs (ma: Multiaddr, options: ResolveOptions & LoggerOptions): Promise<Multiaddr[]> {
|
|
11
|
-
// check multiaddr resolvers
|
|
12
|
-
let resolvable = false
|
|
13
|
-
|
|
14
|
-
for (const key of resolvers.keys()) {
|
|
15
|
-
resolvable = ma.protoNames().includes(key)
|
|
16
|
-
|
|
17
|
-
if (resolvable) {
|
|
18
|
-
break
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// return multiaddr if it is not resolvable
|
|
23
|
-
if (!resolvable) {
|
|
24
|
-
return [ma]
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const output = await ma.resolve(options)
|
|
28
|
-
|
|
29
|
-
options.log('resolved %s to', ma, output.map(ma => ma.toString()))
|
|
30
|
-
|
|
31
|
-
return output
|
|
32
|
-
}
|
|
4
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
33
5
|
|
|
34
6
|
/**
|
|
35
7
|
* Converts a multiaddr string or object to an IpNet object.
|
|
@@ -50,9 +22,11 @@ export function multiaddrToIpNet (ma: string | Multiaddr): IpNet {
|
|
|
50
22
|
parsedMa = ma
|
|
51
23
|
}
|
|
52
24
|
|
|
25
|
+
const protoNames = new Set([...parsedMa.getComponents().map(component => component.name)])
|
|
26
|
+
|
|
53
27
|
// Check if /ipcidr is already present
|
|
54
|
-
if (!
|
|
55
|
-
const isIPv6 =
|
|
28
|
+
if (!protoNames.has('ipcidr')) {
|
|
29
|
+
const isIPv6 = protoNames.has('ip6')
|
|
56
30
|
const cidr = isIPv6 ? '/ipcidr/128' : '/ipcidr/32'
|
|
57
31
|
parsedMa = parsedMa.encapsulate(cidr)
|
|
58
32
|
}
|
package/src/errors.ts
CHANGED
|
@@ -114,3 +114,10 @@ export class TransportUnavailableError extends Error {
|
|
|
114
114
|
this.name = 'TransportUnavailableError'
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
+
|
|
118
|
+
export class RecursionLimitError extends Error {
|
|
119
|
+
constructor (message = 'Max recursive depth reached') {
|
|
120
|
+
super(message)
|
|
121
|
+
this.name = 'RecursionLimitError'
|
|
122
|
+
}
|
|
123
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -34,6 +34,8 @@ export type ServiceFactoryMap<T extends ServiceMap = ServiceMap> = {
|
|
|
34
34
|
|
|
35
35
|
export type { AddressManagerInit, AddressFilter }
|
|
36
36
|
|
|
37
|
+
export { dnsaddrResolver } from './connection-manager/resolvers/index.ts'
|
|
38
|
+
|
|
37
39
|
/**
|
|
38
40
|
* For Libp2p configurations and modules details read the [Configuration Document](https://github.com/libp2p/js-libp2p/tree/main/doc/CONFIGURATION.md).
|
|
39
41
|
*/
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '2.8.
|
|
1
|
+
export const version = '2.8.12'
|
|
2
2
|
export const name = 'js-libp2p'
|