@libp2p/kad-dht 14.1.3 → 14.1.4-127abe24b

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) 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 +34 -34
  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
  51. 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 [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
@@ -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
- }