@libp2p/kad-dht 10.0.14 → 10.0.15-0b4a2ee79

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 (113) hide show
  1. package/README.md +1 -5
  2. package/dist/index.min.js +20 -20
  3. package/dist/src/content-fetching/index.d.ts.map +1 -1
  4. package/dist/src/content-fetching/index.js +1 -2
  5. package/dist/src/content-fetching/index.js.map +1 -1
  6. package/dist/src/content-routing/index.d.ts.map +1 -1
  7. package/dist/src/content-routing/index.js +3 -6
  8. package/dist/src/content-routing/index.js.map +1 -1
  9. package/dist/src/dual-kad-dht.d.ts +1 -0
  10. package/dist/src/dual-kad-dht.d.ts.map +1 -1
  11. package/dist/src/dual-kad-dht.js +5 -5
  12. package/dist/src/dual-kad-dht.js.map +1 -1
  13. package/dist/src/index.d.ts +2 -1
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js.map +1 -1
  16. package/dist/src/kad-dht.d.ts.map +1 -1
  17. package/dist/src/kad-dht.js +3 -4
  18. package/dist/src/kad-dht.js.map +1 -1
  19. package/dist/src/message/index.d.ts +2 -0
  20. package/dist/src/message/index.d.ts.map +1 -1
  21. package/dist/src/message/index.js +7 -2
  22. package/dist/src/message/index.js.map +1 -1
  23. package/dist/src/network.d.ts +3 -4
  24. package/dist/src/network.d.ts.map +1 -1
  25. package/dist/src/network.js +11 -25
  26. package/dist/src/network.js.map +1 -1
  27. package/dist/src/peer-routing/index.d.ts +2 -1
  28. package/dist/src/peer-routing/index.d.ts.map +1 -1
  29. package/dist/src/peer-routing/index.js +15 -17
  30. package/dist/src/peer-routing/index.js.map +1 -1
  31. package/dist/src/providers.d.ts +4 -1
  32. package/dist/src/providers.d.ts.map +1 -1
  33. package/dist/src/providers.js +17 -17
  34. package/dist/src/providers.js.map +1 -1
  35. package/dist/src/query/manager.d.ts +5 -2
  36. package/dist/src/query/manager.d.ts.map +1 -1
  37. package/dist/src/query/manager.js +13 -12
  38. package/dist/src/query/manager.js.map +1 -1
  39. package/dist/src/query/query-path.d.ts +1 -1
  40. package/dist/src/query/query-path.d.ts.map +1 -1
  41. package/dist/src/query/query-path.js +2 -59
  42. package/dist/src/query/query-path.js.map +1 -1
  43. package/dist/src/query/utils.d.ts +7 -0
  44. package/dist/src/query/utils.d.ts.map +1 -0
  45. package/dist/src/query/utils.js +53 -0
  46. package/dist/src/query/utils.js.map +1 -0
  47. package/dist/src/query-self.d.ts +3 -1
  48. package/dist/src/query-self.d.ts.map +1 -1
  49. package/dist/src/query-self.js +4 -5
  50. package/dist/src/query-self.js.map +1 -1
  51. package/dist/src/routing-table/index.d.ts +2 -0
  52. package/dist/src/routing-table/index.d.ts.map +1 -1
  53. package/dist/src/routing-table/index.js +1 -2
  54. package/dist/src/routing-table/index.js.map +1 -1
  55. package/dist/src/routing-table/refresh.d.ts +5 -1
  56. package/dist/src/routing-table/refresh.d.ts.map +1 -1
  57. package/dist/src/routing-table/refresh.js +2 -3
  58. package/dist/src/routing-table/refresh.js.map +1 -1
  59. package/dist/src/rpc/handlers/add-provider.d.ts +6 -1
  60. package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
  61. package/dist/src/rpc/handlers/add-provider.js +9 -10
  62. package/dist/src/rpc/handlers/add-provider.js.map +1 -1
  63. package/dist/src/rpc/handlers/find-node.d.ts +5 -1
  64. package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
  65. package/dist/src/rpc/handlers/find-node.js +11 -10
  66. package/dist/src/rpc/handlers/find-node.js.map +1 -1
  67. package/dist/src/rpc/handlers/get-providers.d.ts +4 -1
  68. package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
  69. package/dist/src/rpc/handlers/get-providers.js +8 -9
  70. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  71. package/dist/src/rpc/handlers/get-value.d.ts +5 -1
  72. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  73. package/dist/src/rpc/handlers/get-value.js +16 -15
  74. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  75. package/dist/src/rpc/handlers/ping.d.ts +6 -0
  76. package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
  77. package/dist/src/rpc/handlers/ping.js +5 -3
  78. package/dist/src/rpc/handlers/ping.js.map +1 -1
  79. package/dist/src/rpc/handlers/put-value.d.ts +3 -1
  80. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  81. package/dist/src/rpc/handlers/put-value.js +2 -3
  82. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  83. package/dist/src/rpc/index.d.ts.map +1 -1
  84. package/dist/src/rpc/index.js +3 -4
  85. package/dist/src/rpc/index.js.map +1 -1
  86. package/dist/src/topology-listener.d.ts.map +1 -1
  87. package/dist/src/topology-listener.js +1 -2
  88. package/dist/src/topology-listener.js.map +1 -1
  89. package/package.json +23 -22
  90. package/src/content-fetching/index.ts +2 -4
  91. package/src/content-routing/index.ts +4 -7
  92. package/src/dual-kad-dht.ts +6 -6
  93. package/src/index.ts +2 -1
  94. package/src/kad-dht.ts +4 -4
  95. package/src/message/index.ts +9 -2
  96. package/src/network.ts +14 -44
  97. package/src/peer-routing/index.ts +17 -19
  98. package/src/providers.ts +19 -18
  99. package/src/query/manager.ts +18 -16
  100. package/src/query/query-path.ts +3 -72
  101. package/src/query/utils.ts +65 -0
  102. package/src/query-self.ts +6 -5
  103. package/src/routing-table/index.ts +3 -3
  104. package/src/routing-table/refresh.ts +7 -4
  105. package/src/rpc/handlers/add-provider.ts +13 -10
  106. package/src/rpc/handlers/find-node.ts +13 -11
  107. package/src/rpc/handlers/get-providers.ts +10 -10
  108. package/src/rpc/handlers/get-value.ts +18 -17
  109. package/src/rpc/handlers/ping.ts +11 -3
  110. package/src/rpc/handlers/put-value.ts +4 -3
  111. package/src/rpc/index.ts +4 -4
  112. package/src/topology-listener.ts +2 -3
  113. package/dist/typedoc-urls.json +0 -55
@@ -1,15 +1,14 @@
1
1
  import { TypedEventEmitter } from '@libp2p/interface/events'
2
- import { logger } from '@libp2p/logger'
3
2
  import { PeerSet } from '@libp2p/peer-collections'
4
3
  import Queue from 'p-queue'
5
4
  import * as utils from '../utils.js'
6
5
  import { KBucket, type PingEventDetails } from './k-bucket.js'
6
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
7
7
  import type { Metric, Metrics } from '@libp2p/interface/metrics'
8
8
  import type { PeerId } from '@libp2p/interface/peer-id'
9
9
  import type { PeerStore } from '@libp2p/interface/peer-store'
10
10
  import type { Startable } from '@libp2p/interface/startable'
11
11
  import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
12
- import type { Logger } from '@libp2p/logger'
13
12
 
14
13
  export const KAD_CLOSE_TAG_NAME = 'kad-close'
15
14
  export const KAD_CLOSE_TAG_VALUE = 50
@@ -32,6 +31,7 @@ export interface RoutingTableComponents {
32
31
  peerStore: PeerStore
33
32
  connectionManager: ConnectionManager
34
33
  metrics?: Metrics
34
+ logger: ComponentLogger
35
35
  }
36
36
 
37
37
  export interface RoutingTableEvents {
@@ -69,7 +69,7 @@ export class RoutingTable extends TypedEventEmitter<RoutingTableEvents> implemen
69
69
  const { kBucketSize, pingTimeout, lan, pingConcurrency, protocol, tagName, tagValue } = init
70
70
 
71
71
  this.components = components
72
- this.log = logger(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:routing-table`)
72
+ this.log = components.logger.forComponent(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:routing-table`)
73
73
  this.kBucketSize = kBucketSize ?? KBUCKET_SIZE
74
74
  this.pingTimeout = pingTimeout ?? PING_TIMEOUT
75
75
  this.pingConcurrency = pingConcurrency ?? PING_CONCURRENCY
@@ -1,5 +1,4 @@
1
1
  import { randomBytes } from '@libp2p/crypto'
2
- import { logger } from '@libp2p/logger'
3
2
  import { peerIdFromBytes } from '@libp2p/peer-id'
4
3
  import length from 'it-length'
5
4
  import { sha256 } from 'multiformats/hashes/sha2'
@@ -8,14 +7,18 @@ import { TABLE_REFRESH_INTERVAL, TABLE_REFRESH_QUERY_TIMEOUT } from '../constant
8
7
  import GENERATED_PREFIXES from './generated-prefix-list.js'
9
8
  import type { RoutingTable } from './index.js'
10
9
  import type { PeerRouting } from '../peer-routing/index.js'
10
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
11
11
  import type { PeerId } from '@libp2p/interface/peer-id'
12
- import type { Logger } from '@libp2p/logger'
13
12
 
14
13
  /**
15
14
  * Cannot generate random KadIds longer than this + 1
16
15
  */
17
16
  const MAX_COMMON_PREFIX_LENGTH = 15
18
17
 
18
+ export interface RoutingTableRefreshComponents {
19
+ logger: ComponentLogger
20
+ }
21
+
19
22
  export interface RoutingTableRefreshInit {
20
23
  peerRouting: PeerRouting
21
24
  routingTable: RoutingTable
@@ -37,9 +40,9 @@ export class RoutingTableRefresh {
37
40
  private readonly commonPrefixLengthRefreshedAt: Date[]
38
41
  private refreshTimeoutId?: ReturnType<typeof setTimeout>
39
42
 
40
- constructor (init: RoutingTableRefreshInit) {
43
+ constructor (components: RoutingTableRefreshComponents, init: RoutingTableRefreshInit) {
41
44
  const { peerRouting, routingTable, refreshInterval, refreshQueryTimeout, lan } = init
42
- this.log = logger(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:routing-table:refresh`)
45
+ this.log = components.logger.forComponent(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:routing-table:refresh`)
43
46
  this.peerRouting = peerRouting
44
47
  this.routingTable = routingTable
45
48
  this.refreshInterval = refreshInterval ?? TABLE_REFRESH_INTERVAL
@@ -1,12 +1,14 @@
1
1
  import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
3
2
  import { CID } from 'multiformats/cid'
4
3
  import type { Message } from '../../message/index.js'
5
4
  import type { Providers } from '../../providers'
6
5
  import type { DHTMessageHandler } from '../index.js'
6
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
7
7
  import type { PeerId } from '@libp2p/interface/peer-id'
8
8
 
9
- const log = logger('libp2p:kad-dht:rpc:handlers:add-provider')
9
+ export interface AddProviderComponents {
10
+ logger: ComponentLogger
11
+ }
10
12
 
11
13
  export interface AddProviderHandlerInit {
12
14
  providers: Providers
@@ -14,14 +16,15 @@ export interface AddProviderHandlerInit {
14
16
 
15
17
  export class AddProviderHandler implements DHTMessageHandler {
16
18
  private readonly providers: Providers
19
+ private readonly log: Logger
17
20
 
18
- constructor (init: AddProviderHandlerInit) {
19
- const { providers } = init
20
- this.providers = providers
21
+ constructor (components: AddProviderComponents, init: AddProviderHandlerInit) {
22
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:add-provider')
23
+ this.providers = init.providers
21
24
  }
22
25
 
23
26
  async handle (peerId: PeerId, msg: Message): Promise<Message | undefined> {
24
- log('start')
27
+ this.log('start')
25
28
 
26
29
  if (msg.key == null || msg.key.length === 0) {
27
30
  throw new CodeError('Missing key', 'ERR_MISSING_KEY')
@@ -36,23 +39,23 @@ export class AddProviderHandler implements DHTMessageHandler {
36
39
  }
37
40
 
38
41
  if (msg.providerPeers == null || msg.providerPeers.length === 0) {
39
- log.error('no providers found in message')
42
+ this.log.error('no providers found in message')
40
43
  }
41
44
 
42
45
  await Promise.all(
43
46
  msg.providerPeers.map(async (pi) => {
44
47
  // Ignore providers not from the originator
45
48
  if (!pi.id.equals(peerId)) {
46
- log('invalid provider peer %p from %p', pi.id, peerId)
49
+ this.log('invalid provider peer %p from %p', pi.id, peerId)
47
50
  return
48
51
  }
49
52
 
50
53
  if (pi.multiaddrs.length < 1) {
51
- log('no valid addresses for provider %p. Ignore', peerId)
54
+ this.log('no valid addresses for provider %p. Ignore', peerId)
52
55
  return
53
56
  }
54
57
 
55
- log('received provider %p for %s (addrs %s)', peerId, cid, pi.multiaddrs.map((m) => m.toString()))
58
+ this.log('received provider %p for %s (addrs %s)', peerId, cid, pi.multiaddrs.map((m) => m.toString()))
56
59
 
57
60
  await this.providers.addProvider(cid, pi.id)
58
61
  })
@@ -1,4 +1,3 @@
1
- import { logger } from '@libp2p/logger'
2
1
  import { protocols } from '@multiformats/multiaddr'
3
2
  import { equals as uint8ArrayEquals } from 'uint8arrays'
4
3
  import { Message } from '../../message/index.js'
@@ -8,12 +7,11 @@ import {
8
7
  } from '../../utils.js'
9
8
  import type { PeerRouting } from '../../peer-routing/index.js'
10
9
  import type { DHTMessageHandler } from '../index.js'
10
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
11
11
  import type { PeerId } from '@libp2p/interface/peer-id'
12
12
  import type { PeerInfo } from '@libp2p/interface/peer-info'
13
13
  import type { AddressManager } from '@libp2p/interface-internal/address-manager'
14
14
 
15
- const log = logger('libp2p:kad-dht:rpc:handlers:find-node')
16
-
17
15
  export interface FindNodeHandlerInit {
18
16
  peerRouting: PeerRouting
19
17
  lan: boolean
@@ -22,17 +20,22 @@ export interface FindNodeHandlerInit {
22
20
  export interface FindNodeHandlerComponents {
23
21
  peerId: PeerId
24
22
  addressManager: AddressManager
23
+ logger: ComponentLogger
25
24
  }
26
25
 
27
26
  export class FindNodeHandler implements DHTMessageHandler {
28
27
  private readonly peerRouting: PeerRouting
29
28
  private readonly lan: boolean
30
- private readonly components: FindNodeHandlerComponents
29
+ private readonly peerId: PeerId
30
+ private readonly addressManager: AddressManager
31
+ private readonly log: Logger
31
32
 
32
33
  constructor (components: FindNodeHandlerComponents, init: FindNodeHandlerInit) {
33
34
  const { peerRouting, lan } = init
34
35
 
35
- this.components = components
36
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:find-node')
37
+ this.peerId = components.peerId
38
+ this.addressManager = components.addressManager
36
39
  this.peerRouting = peerRouting
37
40
  this.lan = Boolean(lan)
38
41
  }
@@ -41,15 +44,14 @@ export class FindNodeHandler implements DHTMessageHandler {
41
44
  * Process `FindNode` DHT messages
42
45
  */
43
46
  async handle (peerId: PeerId, msg: Message): Promise<Message> {
44
- log('incoming request from %p for peers closer to %b', peerId, msg.key)
47
+ this.log('incoming request from %p for peers closer to %b', peerId, msg.key)
45
48
 
46
49
  let closer: PeerInfo[] = []
47
50
 
48
- if (uint8ArrayEquals(this.components.peerId.toBytes(), msg.key)) {
51
+ if (uint8ArrayEquals(this.peerId.toBytes(), msg.key)) {
49
52
  closer = [{
50
- id: this.components.peerId,
51
- multiaddrs: this.components.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code)),
52
- protocols: []
53
+ id: this.peerId,
54
+ multiaddrs: this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code))
53
55
  }]
54
56
  } else {
55
57
  closer = await this.peerRouting.getCloserPeersOffline(msg.key, peerId)
@@ -64,7 +66,7 @@ export class FindNodeHandler implements DHTMessageHandler {
64
66
  if (closer.length > 0) {
65
67
  response.closerPeers = closer
66
68
  } else {
67
- log('could not find any peers closer to %b than %p', msg.key, peerId)
69
+ this.log('could not find any peers closer to %b than %p', msg.key, peerId)
68
70
  }
69
71
 
70
72
  return response
@@ -1,5 +1,4 @@
1
1
  import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
3
2
  import { CID } from 'multiformats/cid'
4
3
  import { Message } from '../../message/index.js'
5
4
  import {
@@ -9,13 +8,12 @@ import {
9
8
  import type { PeerRouting } from '../../peer-routing/index.js'
10
9
  import type { Providers } from '../../providers.js'
11
10
  import type { DHTMessageHandler } from '../index.js'
11
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
12
12
  import type { PeerId } from '@libp2p/interface/peer-id'
13
13
  import type { PeerInfo } from '@libp2p/interface/peer-info'
14
14
  import type { PeerStore } from '@libp2p/interface/peer-store'
15
15
  import type { Multiaddr } from '@multiformats/multiaddr'
16
16
 
17
- const log = logger('libp2p:kad-dht:rpc:handlers:get-providers')
18
-
19
17
  export interface GetProvidersHandlerInit {
20
18
  peerRouting: PeerRouting
21
19
  providers: Providers
@@ -24,18 +22,21 @@ export interface GetProvidersHandlerInit {
24
22
 
25
23
  export interface GetProvidersHandlerComponents {
26
24
  peerStore: PeerStore
25
+ logger: ComponentLogger
27
26
  }
28
27
 
29
28
  export class GetProvidersHandler implements DHTMessageHandler {
30
- private readonly components: GetProvidersHandlerComponents
31
29
  private readonly peerRouting: PeerRouting
32
30
  private readonly providers: Providers
33
31
  private readonly lan: boolean
32
+ private readonly peerStore: PeerStore
33
+ private readonly log: Logger
34
34
 
35
35
  constructor (components: GetProvidersHandlerComponents, init: GetProvidersHandlerInit) {
36
36
  const { peerRouting, providers, lan } = init
37
37
 
38
- this.components = components
38
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:get-providers')
39
+ this.peerStore = components.peerStore
39
40
  this.peerRouting = peerRouting
40
41
  this.providers = providers
41
42
  this.lan = Boolean(lan)
@@ -49,7 +50,7 @@ export class GetProvidersHandler implements DHTMessageHandler {
49
50
  throw new CodeError('Invalid CID', 'ERR_INVALID_CID')
50
51
  }
51
52
 
52
- log('%p asking for providers for %s', peerId, cid)
53
+ this.log('%p asking for providers for %s', peerId, cid)
53
54
 
54
55
  const [peers, closer] = await Promise.all([
55
56
  this.providers.getProviders(cid),
@@ -68,7 +69,7 @@ export class GetProvidersHandler implements DHTMessageHandler {
68
69
  response.closerPeers = closerPeers
69
70
  }
70
71
 
71
- log('got %s providers %s closerPeers', providerPeers.length, closerPeers.length)
72
+ this.log('got %s providers %s closerPeers', providerPeers.length, closerPeers.length)
72
73
  return response
73
74
  }
74
75
 
@@ -82,12 +83,11 @@ export class GetProvidersHandler implements DHTMessageHandler {
82
83
 
83
84
  for (const peerId of peerIds) {
84
85
  try {
85
- const peer = await this.components.peerStore.get(peerId)
86
+ const peer = await this.peerStore.get(peerId)
86
87
 
87
88
  const peerAfterFilter = addrFilter({
88
89
  id: peerId,
89
- multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr),
90
- protocols: peer.protocols
90
+ multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
91
91
  })
92
92
 
93
93
  if (peerAfterFilter.multiaddrs.length > 0) {
@@ -1,5 +1,4 @@
1
1
  import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
3
2
  import {
4
3
  MAX_RECORD_AGE
5
4
  } from '../../constants.js'
@@ -8,12 +7,11 @@ import { Libp2pRecord } from '../../record/index.js'
8
7
  import { bufferToRecordKey, isPublicKeyKey, fromPublicKeyKey } from '../../utils.js'
9
8
  import type { PeerRouting } from '../../peer-routing/index.js'
10
9
  import type { DHTMessageHandler } from '../index.js'
10
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
11
11
  import type { PeerId } from '@libp2p/interface/peer-id'
12
12
  import type { PeerStore } from '@libp2p/interface/peer-store'
13
13
  import type { Datastore } from 'interface-datastore'
14
14
 
15
- const log = logger('libp2p:kad-dht:rpc:handlers:get-value')
16
-
17
15
  export interface GetValueHandlerInit {
18
16
  peerRouting: PeerRouting
19
17
  }
@@ -21,23 +19,26 @@ export interface GetValueHandlerInit {
21
19
  export interface GetValueHandlerComponents {
22
20
  peerStore: PeerStore
23
21
  datastore: Datastore
22
+ logger: ComponentLogger
24
23
  }
25
24
 
26
25
  export class GetValueHandler implements DHTMessageHandler {
27
- private readonly components: GetValueHandlerComponents
26
+ private readonly peerStore: PeerStore
27
+ private readonly datastore: Datastore
28
28
  private readonly peerRouting: PeerRouting
29
+ private readonly log: Logger
29
30
 
30
31
  constructor (components: GetValueHandlerComponents, init: GetValueHandlerInit) {
31
- const { peerRouting } = init
32
-
33
- this.components = components
34
- this.peerRouting = peerRouting
32
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:get-value')
33
+ this.peerStore = components.peerStore
34
+ this.datastore = components.datastore
35
+ this.peerRouting = init.peerRouting
35
36
  }
36
37
 
37
38
  async handle (peerId: PeerId, msg: Message): Promise<Message> {
38
39
  const key = msg.key
39
40
 
40
- log('%p asked for key %b', peerId, key)
41
+ this.log('%p asked for key %b', peerId, key)
41
42
 
42
43
  if (key == null || key.length === 0) {
43
44
  throw new CodeError('Invalid key', 'ERR_INVALID_KEY')
@@ -46,12 +47,12 @@ export class GetValueHandler implements DHTMessageHandler {
46
47
  const response = new Message(MESSAGE_TYPE.GET_VALUE, key, msg.clusterLevel)
47
48
 
48
49
  if (isPublicKeyKey(key)) {
49
- log('is public key')
50
+ this.log('is public key')
50
51
  const idFromKey = fromPublicKeyKey(key)
51
52
  let pubKey: Uint8Array | undefined
52
53
 
53
54
  try {
54
- const peer = await this.components.peerStore.get(idFromKey)
55
+ const peer = await this.peerStore.get(idFromKey)
55
56
 
56
57
  if (peer.id.publicKey == null) {
57
58
  throw new CodeError('No public key found in key book', 'ERR_NOT_FOUND')
@@ -65,7 +66,7 @@ export class GetValueHandler implements DHTMessageHandler {
65
66
  }
66
67
 
67
68
  if (pubKey != null) {
68
- log('returning found public key')
69
+ this.log('returning found public key')
69
70
  response.record = new Libp2pRecord(key, pubKey, new Date())
70
71
  return response
71
72
  }
@@ -77,12 +78,12 @@ export class GetValueHandler implements DHTMessageHandler {
77
78
  ])
78
79
 
79
80
  if (record != null) {
80
- log('had record for %b in local datastore', key)
81
+ this.log('had record for %b in local datastore', key)
81
82
  response.record = record
82
83
  }
83
84
 
84
85
  if (closer.length > 0) {
85
- log('had %s closer peers in routing table', closer.length)
86
+ this.log('had %s closer peers in routing table', closer.length)
86
87
  response.closerPeers = closer
87
88
  }
88
89
 
@@ -96,13 +97,13 @@ export class GetValueHandler implements DHTMessageHandler {
96
97
  * - it was received less than `MAX_RECORD_AGE` ago.
97
98
  */
98
99
  async _checkLocalDatastore (key: Uint8Array): Promise<Libp2pRecord | undefined> {
99
- log('checkLocalDatastore looking for %b', key)
100
+ this.log('checkLocalDatastore looking for %b', key)
100
101
  const dsKey = bufferToRecordKey(key)
101
102
 
102
103
  // Fetch value from ds
103
104
  let rawRecord
104
105
  try {
105
- rawRecord = await this.components.datastore.get(dsKey)
106
+ rawRecord = await this.datastore.get(dsKey)
106
107
  } catch (err: any) {
107
108
  if (err.code === 'ERR_NOT_FOUND') {
108
109
  return undefined
@@ -121,7 +122,7 @@ export class GetValueHandler implements DHTMessageHandler {
121
122
  if (record.timeReceived == null ||
122
123
  Date.now() - record.timeReceived.getTime() > MAX_RECORD_AGE) {
123
124
  // If record is bad delete it and return
124
- await this.components.datastore.delete(dsKey)
125
+ await this.datastore.delete(dsKey)
125
126
  return undefined
126
127
  }
127
128
 
@@ -1,13 +1,21 @@
1
- import { logger } from '@libp2p/logger'
2
1
  import type { Message } from '../../message/index.js'
3
2
  import type { DHTMessageHandler } from '../index.js'
3
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
4
4
  import type { PeerId } from '@libp2p/interface/peer-id'
5
5
 
6
- const log = logger('libp2p:kad-dht:rpc:handlers:ping')
6
+ export interface PingComponents {
7
+ logger: ComponentLogger
8
+ }
7
9
 
8
10
  export class PingHandler implements DHTMessageHandler {
11
+ private readonly log: Logger
12
+
13
+ constructor (components: PingComponents) {
14
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:ping')
15
+ }
16
+
9
17
  async handle (peerId: PeerId, msg: Message): Promise<Message> {
10
- log('ping from %p', peerId)
18
+ this.log('ping from %p', peerId)
11
19
  return msg
12
20
  }
13
21
  }
@@ -1,10 +1,10 @@
1
1
  import { CodeError } from '@libp2p/interface/errors'
2
- import { type Logger, logger } from '@libp2p/logger'
3
2
  import { verifyRecord } from '../../record/validators.js'
4
3
  import { bufferToRecordKey } from '../../utils.js'
5
4
  import type { Validators } from '../../index.js'
6
5
  import type { Message } from '../../message/index.js'
7
6
  import type { DHTMessageHandler } from '../index.js'
7
+ import type { ComponentLogger, Logger } from '@libp2p/interface'
8
8
  import type { PeerId } from '@libp2p/interface/peer-id'
9
9
  import type { Datastore } from 'interface-datastore'
10
10
 
@@ -14,18 +14,19 @@ export interface PutValueHandlerInit {
14
14
 
15
15
  export interface PutValueHandlerComponents {
16
16
  datastore: Datastore
17
+ logger: ComponentLogger
17
18
  }
18
19
 
19
20
  export class PutValueHandler implements DHTMessageHandler {
20
- private readonly log: Logger
21
21
  private readonly components: PutValueHandlerComponents
22
22
  private readonly validators: Validators
23
+ private readonly log: Logger
23
24
 
24
25
  constructor (components: PutValueHandlerComponents, init: PutValueHandlerInit) {
25
26
  const { validators } = init
26
27
 
27
28
  this.components = components
28
- this.log = logger('libp2p:kad-dht:rpc:handlers:put-value')
29
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:put-value')
29
30
  this.validators = validators
30
31
  }
31
32
 
package/src/rpc/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { type Logger, logger } from '@libp2p/logger'
2
1
  import * as lp from 'it-length-prefixed'
3
2
  import { pipe } from 'it-pipe'
4
3
  import { Message, MESSAGE_TYPE } from '../message/index.js'
@@ -12,6 +11,7 @@ import type { Validators } from '../index.js'
12
11
  import type { PeerRouting } from '../peer-routing'
13
12
  import type { Providers } from '../providers'
14
13
  import type { RoutingTable } from '../routing-table'
14
+ import type { Logger } from '@libp2p/interface'
15
15
  import type { PeerId } from '@libp2p/interface/peer-id'
16
16
  import type { IncomingStreamData } from '@libp2p/interface-internal/registrar'
17
17
 
@@ -39,15 +39,15 @@ export class RPC {
39
39
  constructor (components: RPCComponents, init: RPCInit) {
40
40
  const { providers, peerRouting, validators, lan } = init
41
41
 
42
- this.log = logger('libp2p:kad-dht:rpc')
42
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc')
43
43
  this.routingTable = init.routingTable
44
44
  this.handlers = {
45
45
  [MESSAGE_TYPE.GET_VALUE]: new GetValueHandler(components, { peerRouting }),
46
46
  [MESSAGE_TYPE.PUT_VALUE]: new PutValueHandler(components, { validators }),
47
47
  [MESSAGE_TYPE.FIND_NODE]: new FindNodeHandler(components, { peerRouting, lan }),
48
- [MESSAGE_TYPE.ADD_PROVIDER]: new AddProviderHandler({ providers }),
48
+ [MESSAGE_TYPE.ADD_PROVIDER]: new AddProviderHandler(components, { providers }),
49
49
  [MESSAGE_TYPE.GET_PROVIDERS]: new GetProvidersHandler(components, { peerRouting, providers, lan }),
50
- [MESSAGE_TYPE.PING]: new PingHandler()
50
+ [MESSAGE_TYPE.PING]: new PingHandler(components)
51
51
  }
52
52
  }
53
53
 
@@ -1,9 +1,8 @@
1
1
  import { CustomEvent, TypedEventEmitter } from '@libp2p/interface/events'
2
- import { logger } from '@libp2p/logger'
3
2
  import type { KadDHTComponents } from '.'
3
+ import type { Logger } from '@libp2p/interface'
4
4
  import type { PeerId } from '@libp2p/interface/peer-id'
5
5
  import type { Startable } from '@libp2p/interface/startable'
6
- import type { Logger } from '@libp2p/logger'
7
6
 
8
7
  export interface TopologyListenerInit {
9
8
  protocol: string
@@ -30,7 +29,7 @@ export class TopologyListener extends TypedEventEmitter<TopologyListenerEvents>
30
29
  const { protocol, lan } = init
31
30
 
32
31
  this.components = components
33
- this.log = logger(`libp2p:kad-dht:topology-listener:${lan ? 'lan' : 'wan'}`)
32
+ this.log = components.logger.forComponent(`libp2p:kad-dht:topology-listener:${lan ? 'lan' : 'wan'}`)
34
33
  this.running = false
35
34
  this.protocol = protocol
36
35
  }
@@ -1,55 +0,0 @@
1
- {
2
- "EventTypes": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.EventTypes.html",
3
- ".:EventTypes": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.EventTypes.html",
4
- "MessageType": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.MessageType.html",
5
- ".:MessageType": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.MessageType.html",
6
- "Record": "https://libp2p.github.io/js-libp2p/classes/_libp2p_kad_dht.Record.html",
7
- "AddPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.AddPeerEvent.html",
8
- ".:AddPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.AddPeerEvent.html",
9
- "DHTRecord": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DHTRecord.html",
10
- ".:DHTRecord": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DHTRecord.html",
11
- "DialPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DialPeerEvent.html",
12
- ".:DialPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DialPeerEvent.html",
13
- "DualKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DualKadDHT.html",
14
- ".:DualKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DualKadDHT.html",
15
- "FinalPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.FinalPeerEvent.html",
16
- ".:FinalPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.FinalPeerEvent.html",
17
- "KadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHT.html",
18
- ".:KadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHT.html",
19
- "KadDHTComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTComponents.html",
20
- ".:KadDHTComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTComponents.html",
21
- "KadDHTInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTInit.html",
22
- ".:KadDHTInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTInit.html",
23
- "PeerResponseEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.PeerResponseEvent.html",
24
- ".:PeerResponseEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.PeerResponseEvent.html",
25
- "ProviderEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ProviderEvent.html",
26
- ".:ProviderEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ProviderEvent.html",
27
- "QueryErrorEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryErrorEvent.html",
28
- ".:QueryErrorEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryErrorEvent.html",
29
- "QueryOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryOptions.html",
30
- ".:QueryOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryOptions.html",
31
- "RoutingTable": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.RoutingTable.html",
32
- ".:RoutingTable": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.RoutingTable.html",
33
- "SelectFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SelectFn.html",
34
- ".:SelectFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SelectFn.html",
35
- "SendQueryEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SendQueryEvent.html",
36
- ".:SendQueryEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SendQueryEvent.html",
37
- "SingleKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SingleKadDHT.html",
38
- ".:SingleKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SingleKadDHT.html",
39
- "ValidateFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValidateFn.html",
40
- ".:ValidateFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValidateFn.html",
41
- "ValueEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValueEvent.html",
42
- ".:ValueEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValueEvent.html",
43
- "DHTProgressEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.DHTProgressEvents.html",
44
- ".:DHTProgressEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.DHTProgressEvents.html",
45
- "MessageName": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.MessageName.html",
46
- ".:MessageName": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.MessageName.html",
47
- "QueryEvent": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.QueryEvent.html",
48
- ".:QueryEvent": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.QueryEvent.html",
49
- "Selectors": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Selectors.html",
50
- ".:Selectors": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Selectors.html",
51
- "Validators": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Validators.html",
52
- ".:Validators": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Validators.html",
53
- "kadDHT": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.kadDHT-1.html",
54
- ".:kadDHT": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.kadDHT-1.html"
55
- }