@libp2p/kad-dht 14.1.3 → 14.1.4-5c4a79e5a
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -1
- package/dist/index.min.js +6 -3
- package/dist/src/content-fetching/index.d.ts +1 -0
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +1 -1
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +4 -2
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts +9 -5
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +25 -7
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +5 -3
- package/dist/src/providers.js.map +1 -1
- package/dist/src/reprovider.js +1 -1
- package/dist/src/reprovider.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +5 -1
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/add-provider.js +14 -5
- package/dist/src/rpc/handlers/add-provider.js.map +1 -1
- package/dist/src/rpc/handlers/get-providers.d.ts +3 -2
- package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +16 -28
- package/dist/src/rpc/handlers/get-providers.js.map +1 -1
- package/dist/src/rpc/handlers/get-value.d.ts +1 -0
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-value.js +1 -1
- package/dist/src/rpc/handlers/get-value.js.map +1 -1
- package/dist/src/rpc/handlers/put-value.d.ts +1 -0
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/put-value.js +1 -1
- package/dist/src/rpc/handlers/put-value.js.map +1 -1
- package/dist/src/rpc/index.d.ts +1 -0
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +0 -6
- package/dist/src/rpc/index.js.map +1 -1
- package/package.json +34 -34
- package/src/content-fetching/index.ts +2 -1
- package/src/kad-dht.ts +4 -2
- package/src/peer-routing/index.ts +38 -10
- package/src/providers.ts +5 -3
- package/src/reprovider.ts +1 -1
- package/src/rpc/handlers/add-provider.ts +18 -7
- package/src/rpc/handlers/get-providers.ts +18 -32
- package/src/rpc/handlers/get-value.ts +2 -1
- package/src/rpc/handlers/put-value.ts +2 -1
- package/src/rpc/index.ts +1 -6
- package/LICENSE +0 -4
- package/dist/typedoc-urls.json +0 -59
@@ -1,4 +1,6 @@
|
|
1
1
|
import { InvalidMessageError } from '@libp2p/interface'
|
2
|
+
import all from 'it-all'
|
3
|
+
import map from 'it-map'
|
2
4
|
import { CID } from 'multiformats/cid'
|
3
5
|
import { MessageType } from '../../message/dht.js'
|
4
6
|
import type { PeerInfoMapper } from '../../index.js'
|
@@ -17,11 +19,13 @@ export interface GetProvidersHandlerInit {
|
|
17
19
|
}
|
18
20
|
|
19
21
|
export interface GetProvidersHandlerComponents {
|
22
|
+
peerId: PeerId
|
20
23
|
peerStore: PeerStore
|
21
24
|
logger: ComponentLogger
|
22
25
|
}
|
23
26
|
|
24
27
|
export class GetProvidersHandler implements DHTMessageHandler {
|
28
|
+
private readonly peerId: PeerId
|
25
29
|
private readonly peerRouting: PeerRouting
|
26
30
|
private readonly providers: Providers
|
27
31
|
private readonly peerStore: PeerStore
|
@@ -32,6 +36,7 @@ export class GetProvidersHandler implements DHTMessageHandler {
|
|
32
36
|
const { peerRouting, providers, logPrefix } = init
|
33
37
|
|
34
38
|
this.log = components.logger.forComponent(`${logPrefix}:rpc:handlers:get-providers`)
|
39
|
+
this.peerId = components.peerId
|
35
40
|
this.peerStore = components.peerStore
|
36
41
|
this.peerRouting = peerRouting
|
37
42
|
this.providers = providers
|
@@ -52,27 +57,33 @@ export class GetProvidersHandler implements DHTMessageHandler {
|
|
52
57
|
|
53
58
|
this.log('%p asking for providers for %s', peerId, cid)
|
54
59
|
|
55
|
-
const [
|
56
|
-
this.providers.getProviders(cid),
|
57
|
-
|
60
|
+
const [providerPeers, closerPeers] = await Promise.all([
|
61
|
+
all(map(await this.providers.getProviders(cid), async (peerId) => {
|
62
|
+
const peer = await this.peerStore.get(peerId)
|
63
|
+
const info: PeerInfo = {
|
64
|
+
id: peer.id,
|
65
|
+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
66
|
+
}
|
67
|
+
|
68
|
+
return info
|
69
|
+
})),
|
70
|
+
this.peerRouting.getCloserPeersOffline(msg.key, this.peerId)
|
58
71
|
])
|
59
72
|
|
60
|
-
const providerPeers = await this._getPeers(peers)
|
61
|
-
const closerPeers = await this._getPeers(closer.map(({ id }) => id))
|
62
73
|
const response: Message = {
|
63
74
|
type: MessageType.GET_PROVIDERS,
|
64
75
|
key: msg.key,
|
65
76
|
clusterLevel: msg.clusterLevel,
|
66
77
|
closer: closerPeers
|
67
78
|
.map(this.peerInfoMapper)
|
68
|
-
.filter(({ multiaddrs }) => multiaddrs.length)
|
79
|
+
.filter(({ id, multiaddrs }) => multiaddrs.length > 0)
|
69
80
|
.map(peerInfo => ({
|
70
81
|
id: peerInfo.id.toMultihash().bytes,
|
71
82
|
multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)
|
72
83
|
})),
|
73
84
|
providers: providerPeers
|
74
85
|
.map(this.peerInfoMapper)
|
75
|
-
.filter(({ multiaddrs }) => multiaddrs.length)
|
86
|
+
.filter(({ id, multiaddrs }) => multiaddrs.length > 0)
|
76
87
|
.map(peerInfo => ({
|
77
88
|
id: peerInfo.id.toMultihash().bytes,
|
78
89
|
multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)
|
@@ -87,29 +98,4 @@ export class GetProvidersHandler implements DHTMessageHandler {
|
|
87
98
|
async _getAddresses (peerId: PeerId): Promise<Multiaddr[]> {
|
88
99
|
return []
|
89
100
|
}
|
90
|
-
|
91
|
-
async _getPeers (peerIds: PeerId[]): Promise<PeerInfo[]> {
|
92
|
-
const output: PeerInfo[] = []
|
93
|
-
|
94
|
-
for (const peerId of peerIds) {
|
95
|
-
try {
|
96
|
-
const peer = await this.peerStore.get(peerId)
|
97
|
-
|
98
|
-
const peerAfterFilter = this.peerInfoMapper({
|
99
|
-
id: peerId,
|
100
|
-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
101
|
-
})
|
102
|
-
|
103
|
-
if (peerAfterFilter.multiaddrs.length > 0) {
|
104
|
-
output.push(peerAfterFilter)
|
105
|
-
}
|
106
|
-
} catch (err: any) {
|
107
|
-
if (err.name !== 'NotFoundError') {
|
108
|
-
throw err
|
109
|
-
}
|
110
|
-
}
|
111
|
-
}
|
112
|
-
|
113
|
-
return output
|
114
|
-
}
|
115
101
|
}
|
@@ -15,6 +15,7 @@ import type { Datastore } from 'interface-datastore'
|
|
15
15
|
export interface GetValueHandlerInit {
|
16
16
|
peerRouting: PeerRouting
|
17
17
|
logPrefix: string
|
18
|
+
datastorePrefix: string
|
18
19
|
}
|
19
20
|
|
20
21
|
export interface GetValueHandlerComponents {
|
@@ -32,7 +33,7 @@ export class GetValueHandler implements DHTMessageHandler {
|
|
32
33
|
|
33
34
|
constructor (components: GetValueHandlerComponents, init: GetValueHandlerInit) {
|
34
35
|
this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:get-value`)
|
35
|
-
this.datastorePrefix =
|
36
|
+
this.datastorePrefix = `${init.datastorePrefix}/record`
|
36
37
|
this.peerStore = components.peerStore
|
37
38
|
this.datastore = components.datastore
|
38
39
|
this.peerRouting = init.peerRouting
|
@@ -11,6 +11,7 @@ import type { Datastore } from 'interface-datastore'
|
|
11
11
|
export interface PutValueHandlerInit {
|
12
12
|
validators: Validators
|
13
13
|
logPrefix: string
|
14
|
+
datastorePrefix: string
|
14
15
|
}
|
15
16
|
|
16
17
|
export interface PutValueHandlerComponents {
|
@@ -29,7 +30,7 @@ export class PutValueHandler implements DHTMessageHandler {
|
|
29
30
|
|
30
31
|
this.components = components
|
31
32
|
this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:put-value`)
|
32
|
-
this.datastorePrefix =
|
33
|
+
this.datastorePrefix = `${init.datastorePrefix}/record`
|
33
34
|
this.validators = validators
|
34
35
|
}
|
35
36
|
|
package/src/rpc/index.ts
CHANGED
@@ -25,6 +25,7 @@ export interface RPCInit {
|
|
25
25
|
validators: Validators
|
26
26
|
logPrefix: string
|
27
27
|
metricsPrefix: string
|
28
|
+
datastorePrefix: string
|
28
29
|
peerInfoMapper: PeerInfoMapper
|
29
30
|
}
|
30
31
|
|
@@ -94,12 +95,6 @@ export class RPC {
|
|
94
95
|
const { stream, connection } = data
|
95
96
|
const peerId = connection.remotePeer
|
96
97
|
|
97
|
-
try {
|
98
|
-
await this.routingTable.add(peerId)
|
99
|
-
} catch (err: any) {
|
100
|
-
this.log.error(err)
|
101
|
-
}
|
102
|
-
|
103
98
|
const self = this // eslint-disable-line @typescript-eslint/no-this-alias
|
104
99
|
|
105
100
|
await pipe(
|
package/LICENSE
DELETED
package/dist/typedoc-urls.json
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"codec": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.MessageType.codec.html",
|
3
|
-
"EventTypes": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.EventTypes.html",
|
4
|
-
".:EventTypes": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.EventTypes.html",
|
5
|
-
"MessageType": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.MessageType-1.html",
|
6
|
-
"AddPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.AddPeerEvent.html",
|
7
|
-
".:AddPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.AddPeerEvent.html",
|
8
|
-
"DHTRecord": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DHTRecord.html",
|
9
|
-
".:DHTRecord": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DHTRecord.html",
|
10
|
-
"DialPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DialPeerEvent.html",
|
11
|
-
".:DialPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DialPeerEvent.html",
|
12
|
-
"FinalPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.FinalPeerEvent.html",
|
13
|
-
".:FinalPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.FinalPeerEvent.html",
|
14
|
-
"KadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHT.html",
|
15
|
-
".:KadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHT.html",
|
16
|
-
"KadDHTComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTComponents.html",
|
17
|
-
".:KadDHTComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTComponents.html",
|
18
|
-
"KadDHTInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTInit.html",
|
19
|
-
".:KadDHTInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTInit.html",
|
20
|
-
"PeerInfoMapper": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.PeerInfoMapper.html",
|
21
|
-
".:PeerInfoMapper": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.PeerInfoMapper.html",
|
22
|
-
"PeerResponseEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.PeerResponseEvent.html",
|
23
|
-
".:PeerResponseEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.PeerResponseEvent.html",
|
24
|
-
"ProviderEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ProviderEvent.html",
|
25
|
-
".:ProviderEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ProviderEvent.html",
|
26
|
-
"ProvidersInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ProvidersInit.html",
|
27
|
-
".:ProvidersInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ProvidersInit.html",
|
28
|
-
"QueryErrorEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryErrorEvent.html",
|
29
|
-
".:QueryErrorEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryErrorEvent.html",
|
30
|
-
"ReProvideInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ReProvideInit.html",
|
31
|
-
".:ReProvideInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ReProvideInit.html",
|
32
|
-
"RoutingTable": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.RoutingTable.html",
|
33
|
-
".:RoutingTable": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.RoutingTable.html",
|
34
|
-
"SelectFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SelectFn.html",
|
35
|
-
".:SelectFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SelectFn.html",
|
36
|
-
"SendQueryEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SendQueryEvent.html",
|
37
|
-
".:SendQueryEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SendQueryEvent.html",
|
38
|
-
"SingleKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SingleKadDHT.html",
|
39
|
-
".:SingleKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SingleKadDHT.html",
|
40
|
-
"ValidateFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValidateFn.html",
|
41
|
-
".:ValidateFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValidateFn.html",
|
42
|
-
"ValueEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValueEvent.html",
|
43
|
-
".:ValueEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValueEvent.html",
|
44
|
-
"DHTProgressEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.DHTProgressEvents.html",
|
45
|
-
".:DHTProgressEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.DHTProgressEvents.html",
|
46
|
-
"MessageName": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.MessageName.html",
|
47
|
-
".:MessageName": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.MessageName.html",
|
48
|
-
"QueryEvent": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.QueryEvent.html",
|
49
|
-
".:QueryEvent": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.QueryEvent.html",
|
50
|
-
"Selectors": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Selectors.html",
|
51
|
-
".:Selectors": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Selectors.html",
|
52
|
-
"Validators": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Validators.html",
|
53
|
-
".:Validators": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Validators.html",
|
54
|
-
"kadDHT": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.kadDHT-1.html",
|
55
|
-
".:kadDHT": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.kadDHT-1.html",
|
56
|
-
"passthroughMapper": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.passthroughMapper.html",
|
57
|
-
"removePrivateAddressesMapper": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.removePrivateAddressesMapper.html",
|
58
|
-
"removePublicAddressesMapper": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.removePublicAddressesMapper.html"
|
59
|
-
}
|