@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.
Files changed (50) hide show
  1. package/README.md +1 -1
  2. package/dist/index.min.js +6 -3
  3. package/dist/src/content-fetching/index.d.ts +1 -0
  4. package/dist/src/content-fetching/index.d.ts.map +1 -1
  5. package/dist/src/content-fetching/index.js +1 -1
  6. package/dist/src/content-fetching/index.js.map +1 -1
  7. package/dist/src/kad-dht.d.ts.map +1 -1
  8. package/dist/src/kad-dht.js +4 -2
  9. package/dist/src/kad-dht.js.map +1 -1
  10. package/dist/src/peer-routing/index.d.ts +9 -5
  11. package/dist/src/peer-routing/index.d.ts.map +1 -1
  12. package/dist/src/peer-routing/index.js +25 -7
  13. package/dist/src/peer-routing/index.js.map +1 -1
  14. package/dist/src/providers.d.ts.map +1 -1
  15. package/dist/src/providers.js +5 -3
  16. package/dist/src/providers.js.map +1 -1
  17. package/dist/src/reprovider.js +1 -1
  18. package/dist/src/reprovider.js.map +1 -1
  19. package/dist/src/rpc/handlers/add-provider.d.ts +5 -1
  20. package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
  21. package/dist/src/rpc/handlers/add-provider.js +14 -5
  22. package/dist/src/rpc/handlers/add-provider.js.map +1 -1
  23. package/dist/src/rpc/handlers/get-providers.d.ts +3 -2
  24. package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
  25. package/dist/src/rpc/handlers/get-providers.js +16 -28
  26. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  27. package/dist/src/rpc/handlers/get-value.d.ts +1 -0
  28. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  29. package/dist/src/rpc/handlers/get-value.js +1 -1
  30. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  31. package/dist/src/rpc/handlers/put-value.d.ts +1 -0
  32. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  33. package/dist/src/rpc/handlers/put-value.js +1 -1
  34. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  35. package/dist/src/rpc/index.d.ts +1 -0
  36. package/dist/src/rpc/index.d.ts.map +1 -1
  37. package/dist/src/rpc/index.js +0 -6
  38. package/dist/src/rpc/index.js.map +1 -1
  39. package/package.json +33 -33
  40. package/src/content-fetching/index.ts +2 -1
  41. package/src/kad-dht.ts +4 -2
  42. package/src/peer-routing/index.ts +38 -10
  43. package/src/providers.ts +5 -3
  44. package/src/reprovider.ts +1 -1
  45. package/src/rpc/handlers/add-provider.ts +18 -7
  46. package/src/rpc/handlers/get-providers.ts +18 -32
  47. package/src/rpc/handlers/get-value.ts +2 -1
  48. package/src/rpc/handlers/put-value.ts +2 -1
  49. package/src/rpc/index.ts +1 -6
  50. 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 [peers, closer] = await Promise.all([
56
- this.providers.getProviders(cid),
57
- this.peerRouting.getCloserPeersOffline(msg.key, peerId)
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 = `/${init.logPrefix.replaceAll(':', '/')}/record`
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 = `/${init.logPrefix.replaceAll(':', '/')}/record`
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
@@ -1,4 +0,0 @@
1
- This project is dual licensed under MIT and Apache-2.0.
2
-
3
- MIT: https://www.opensource.org/licenses/mit
4
- Apache-2.0: https://www.apache.org/licenses/license-2.0