@libp2p/kad-dht 14.1.3 → 14.1.4
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/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 +33 -33
- 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
|
@@ -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