@libp2p/kad-dht 10.0.15 → 11.0.0-06e6d235f

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 (150) hide show
  1. package/README.md +1 -5
  2. package/dist/index.min.js +18 -18
  3. package/dist/src/content-fetching/index.d.ts.map +1 -1
  4. package/dist/src/content-fetching/index.js +2 -3
  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 +6 -8
  10. package/dist/src/dual-kad-dht.d.ts.map +1 -1
  11. package/dist/src/dual-kad-dht.js +9 -13
  12. package/dist/src/dual-kad-dht.js.map +1 -1
  13. package/dist/src/index.d.ts +3 -9
  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 +2 -4
  17. package/dist/src/kad-dht.d.ts.map +1 -1
  18. package/dist/src/kad-dht.js +4 -5
  19. package/dist/src/kad-dht.js.map +1 -1
  20. package/dist/src/message/dht.js.map +1 -1
  21. package/dist/src/message/index.d.ts +3 -1
  22. package/dist/src/message/index.d.ts.map +1 -1
  23. package/dist/src/message/index.js +7 -2
  24. package/dist/src/message/index.js.map +1 -1
  25. package/dist/src/network.d.ts +4 -9
  26. package/dist/src/network.d.ts.map +1 -1
  27. package/dist/src/network.js +12 -26
  28. package/dist/src/network.js.map +1 -1
  29. package/dist/src/peer-list/index.d.ts +1 -1
  30. package/dist/src/peer-list/index.d.ts.map +1 -1
  31. package/dist/src/peer-list/index.js.map +1 -1
  32. package/dist/src/peer-list/peer-distance-list.d.ts +1 -1
  33. package/dist/src/peer-list/peer-distance-list.d.ts.map +1 -1
  34. package/dist/src/peer-list/peer-distance-list.js.map +1 -1
  35. package/dist/src/peer-routing/index.d.ts +3 -4
  36. package/dist/src/peer-routing/index.d.ts.map +1 -1
  37. package/dist/src/peer-routing/index.js +16 -18
  38. package/dist/src/peer-routing/index.js.map +1 -1
  39. package/dist/src/providers.d.ts +4 -3
  40. package/dist/src/providers.d.ts.map +1 -1
  41. package/dist/src/providers.js +17 -17
  42. package/dist/src/providers.js.map +1 -1
  43. package/dist/src/query/events.d.ts +1 -2
  44. package/dist/src/query/events.d.ts.map +1 -1
  45. package/dist/src/query/events.js +1 -1
  46. package/dist/src/query/events.js.map +1 -1
  47. package/dist/src/query/manager.d.ts +5 -5
  48. package/dist/src/query/manager.d.ts.map +1 -1
  49. package/dist/src/query/manager.js +14 -14
  50. package/dist/src/query/manager.js.map +1 -1
  51. package/dist/src/query/query-path.d.ts +1 -3
  52. package/dist/src/query/query-path.d.ts.map +1 -1
  53. package/dist/src/query/query-path.js.map +1 -1
  54. package/dist/src/query/types.d.ts +1 -1
  55. package/dist/src/query/types.d.ts.map +1 -1
  56. package/dist/src/query/utils.d.ts +1 -2
  57. package/dist/src/query/utils.d.ts.map +1 -1
  58. package/dist/src/query/utils.js +1 -1
  59. package/dist/src/query/utils.js.map +1 -1
  60. package/dist/src/query-self.d.ts +3 -3
  61. package/dist/src/query-self.d.ts.map +1 -1
  62. package/dist/src/query-self.js +5 -6
  63. package/dist/src/query-self.js.map +1 -1
  64. package/dist/src/record/index.js.map +1 -1
  65. package/dist/src/record/record.js.map +1 -1
  66. package/dist/src/record/selectors.js +1 -1
  67. package/dist/src/record/selectors.js.map +1 -1
  68. package/dist/src/record/utils.js.map +1 -1
  69. package/dist/src/record/validators.js +1 -1
  70. package/dist/src/record/validators.js.map +1 -1
  71. package/dist/src/routing-table/index.d.ts +4 -6
  72. package/dist/src/routing-table/index.d.ts.map +1 -1
  73. package/dist/src/routing-table/index.js +2 -3
  74. package/dist/src/routing-table/index.js.map +1 -1
  75. package/dist/src/routing-table/k-bucket.d.ts +2 -2
  76. package/dist/src/routing-table/k-bucket.d.ts.map +1 -1
  77. package/dist/src/routing-table/k-bucket.js +1 -1
  78. package/dist/src/routing-table/k-bucket.js.map +1 -1
  79. package/dist/src/routing-table/refresh.d.ts +5 -2
  80. package/dist/src/routing-table/refresh.d.ts.map +1 -1
  81. package/dist/src/routing-table/refresh.js +2 -3
  82. package/dist/src/routing-table/refresh.js.map +1 -1
  83. package/dist/src/rpc/handlers/add-provider.d.ts +6 -2
  84. package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
  85. package/dist/src/rpc/handlers/add-provider.js +10 -11
  86. package/dist/src/rpc/handlers/add-provider.js.map +1 -1
  87. package/dist/src/rpc/handlers/find-node.d.ts +6 -3
  88. package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
  89. package/dist/src/rpc/handlers/find-node.js +11 -10
  90. package/dist/src/rpc/handlers/find-node.js.map +1 -1
  91. package/dist/src/rpc/handlers/get-providers.d.ts +4 -4
  92. package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
  93. package/dist/src/rpc/handlers/get-providers.js +9 -10
  94. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  95. package/dist/src/rpc/handlers/get-value.d.ts +5 -3
  96. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  97. package/dist/src/rpc/handlers/get-value.js +17 -16
  98. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  99. package/dist/src/rpc/handlers/ping.d.ts +6 -1
  100. package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
  101. package/dist/src/rpc/handlers/ping.js +5 -3
  102. package/dist/src/rpc/handlers/ping.js.map +1 -1
  103. package/dist/src/rpc/handlers/put-value.d.ts +3 -2
  104. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  105. package/dist/src/rpc/handlers/put-value.js +3 -4
  106. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  107. package/dist/src/rpc/index.d.ts +2 -2
  108. package/dist/src/rpc/index.d.ts.map +1 -1
  109. package/dist/src/rpc/index.js +3 -4
  110. package/dist/src/rpc/index.js.map +1 -1
  111. package/dist/src/topology-listener.d.ts +2 -3
  112. package/dist/src/topology-listener.d.ts.map +1 -1
  113. package/dist/src/topology-listener.js +2 -3
  114. package/dist/src/topology-listener.js.map +1 -1
  115. package/dist/src/utils.d.ts +1 -2
  116. package/dist/src/utils.d.ts.map +1 -1
  117. package/dist/src/utils.js.map +1 -1
  118. package/package.json +26 -23
  119. package/src/content-fetching/index.ts +3 -5
  120. package/src/content-routing/index.ts +4 -8
  121. package/src/dual-kad-dht.ts +10 -16
  122. package/src/index.ts +3 -9
  123. package/src/kad-dht.ts +5 -8
  124. package/src/message/index.ts +10 -3
  125. package/src/network.ts +15 -49
  126. package/src/peer-list/index.ts +1 -1
  127. package/src/peer-list/peer-distance-list.ts +1 -1
  128. package/src/peer-routing/index.ts +17 -22
  129. package/src/providers.ts +19 -20
  130. package/src/query/events.ts +2 -3
  131. package/src/query/manager.ts +19 -21
  132. package/src/query/query-path.ts +1 -3
  133. package/src/query/types.ts +1 -1
  134. package/src/query/utils.ts +2 -3
  135. package/src/query-self.ts +7 -8
  136. package/src/record/selectors.ts +1 -1
  137. package/src/record/validators.ts +1 -1
  138. package/src/routing-table/index.ts +5 -9
  139. package/src/routing-table/k-bucket.ts +2 -2
  140. package/src/routing-table/refresh.ts +7 -5
  141. package/src/rpc/handlers/add-provider.ts +14 -12
  142. package/src/rpc/handlers/find-node.ts +14 -14
  143. package/src/rpc/handlers/get-providers.ts +11 -14
  144. package/src/rpc/handlers/get-value.ts +19 -20
  145. package/src/rpc/handlers/ping.ts +11 -4
  146. package/src/rpc/handlers/put-value.ts +5 -5
  147. package/src/rpc/index.ts +5 -6
  148. package/src/topology-listener.ts +3 -6
  149. package/src/utils.ts +1 -2
  150. package/dist/typedoc-urls.json +0 -55
@@ -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,17 @@ 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'
11
- import type { PeerId } from '@libp2p/interface/peer-id'
12
- import type { Logger } from '@libp2p/logger'
10
+ import type { ComponentLogger, Logger, PeerId } from '@libp2p/interface'
13
11
 
14
12
  /**
15
13
  * Cannot generate random KadIds longer than this + 1
16
14
  */
17
15
  const MAX_COMMON_PREFIX_LENGTH = 15
18
16
 
17
+ export interface RoutingTableRefreshComponents {
18
+ logger: ComponentLogger
19
+ }
20
+
19
21
  export interface RoutingTableRefreshInit {
20
22
  peerRouting: PeerRouting
21
23
  routingTable: RoutingTable
@@ -37,9 +39,9 @@ export class RoutingTableRefresh {
37
39
  private readonly commonPrefixLengthRefreshedAt: Date[]
38
40
  private refreshTimeoutId?: ReturnType<typeof setTimeout>
39
41
 
40
- constructor (init: RoutingTableRefreshInit) {
42
+ constructor (components: RoutingTableRefreshComponents, init: RoutingTableRefreshInit) {
41
43
  const { peerRouting, routingTable, refreshInterval, refreshQueryTimeout, lan } = init
42
- this.log = logger(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:routing-table:refresh`)
44
+ this.log = components.logger.forComponent(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:routing-table:refresh`)
43
45
  this.peerRouting = peerRouting
44
46
  this.routingTable = routingTable
45
47
  this.refreshInterval = refreshInterval ?? TABLE_REFRESH_INTERVAL
@@ -1,12 +1,13 @@
1
- import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
1
+ import { CodeError } from '@libp2p/interface'
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'
7
- import type { PeerId } from '@libp2p/interface/peer-id'
6
+ import type { ComponentLogger, Logger, PeerId } from '@libp2p/interface'
8
7
 
9
- const log = logger('libp2p:kad-dht:rpc:handlers:add-provider')
8
+ export interface AddProviderComponents {
9
+ logger: ComponentLogger
10
+ }
10
11
 
11
12
  export interface AddProviderHandlerInit {
12
13
  providers: Providers
@@ -14,14 +15,15 @@ export interface AddProviderHandlerInit {
14
15
 
15
16
  export class AddProviderHandler implements DHTMessageHandler {
16
17
  private readonly providers: Providers
18
+ private readonly log: Logger
17
19
 
18
- constructor (init: AddProviderHandlerInit) {
19
- const { providers } = init
20
- this.providers = providers
20
+ constructor (components: AddProviderComponents, init: AddProviderHandlerInit) {
21
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:add-provider')
22
+ this.providers = init.providers
21
23
  }
22
24
 
23
25
  async handle (peerId: PeerId, msg: Message): Promise<Message | undefined> {
24
- log('start')
26
+ this.log('start')
25
27
 
26
28
  if (msg.key == null || msg.key.length === 0) {
27
29
  throw new CodeError('Missing key', 'ERR_MISSING_KEY')
@@ -36,23 +38,23 @@ export class AddProviderHandler implements DHTMessageHandler {
36
38
  }
37
39
 
38
40
  if (msg.providerPeers == null || msg.providerPeers.length === 0) {
39
- log.error('no providers found in message')
41
+ this.log.error('no providers found in message')
40
42
  }
41
43
 
42
44
  await Promise.all(
43
45
  msg.providerPeers.map(async (pi) => {
44
46
  // Ignore providers not from the originator
45
47
  if (!pi.id.equals(peerId)) {
46
- log('invalid provider peer %p from %p', pi.id, peerId)
48
+ this.log('invalid provider peer %p from %p', pi.id, peerId)
47
49
  return
48
50
  }
49
51
 
50
52
  if (pi.multiaddrs.length < 1) {
51
- log('no valid addresses for provider %p. Ignore', peerId)
53
+ this.log('no valid addresses for provider %p. Ignore', peerId)
52
54
  return
53
55
  }
54
56
 
55
- log('received provider %p for %s (addrs %s)', peerId, cid, pi.multiaddrs.map((m) => m.toString()))
57
+ this.log('received provider %p for %s (addrs %s)', peerId, cid, pi.multiaddrs.map((m) => m.toString()))
56
58
 
57
59
  await this.providers.addProvider(cid, pi.id)
58
60
  })
@@ -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,11 +7,8 @@ import {
8
7
  } from '../../utils.js'
9
8
  import type { PeerRouting } from '../../peer-routing/index.js'
10
9
  import type { DHTMessageHandler } from '../index.js'
11
- import type { PeerId } from '@libp2p/interface/peer-id'
12
- import type { PeerInfo } from '@libp2p/interface/peer-info'
13
- import type { AddressManager } from '@libp2p/interface-internal/address-manager'
14
-
15
- const log = logger('libp2p:kad-dht:rpc:handlers:find-node')
10
+ import type { ComponentLogger, Logger, PeerId, PeerInfo } from '@libp2p/interface'
11
+ import type { AddressManager } from '@libp2p/interface-internal'
16
12
 
17
13
  export interface FindNodeHandlerInit {
18
14
  peerRouting: PeerRouting
@@ -22,17 +18,22 @@ export interface FindNodeHandlerInit {
22
18
  export interface FindNodeHandlerComponents {
23
19
  peerId: PeerId
24
20
  addressManager: AddressManager
21
+ logger: ComponentLogger
25
22
  }
26
23
 
27
24
  export class FindNodeHandler implements DHTMessageHandler {
28
25
  private readonly peerRouting: PeerRouting
29
26
  private readonly lan: boolean
30
- private readonly components: FindNodeHandlerComponents
27
+ private readonly peerId: PeerId
28
+ private readonly addressManager: AddressManager
29
+ private readonly log: Logger
31
30
 
32
31
  constructor (components: FindNodeHandlerComponents, init: FindNodeHandlerInit) {
33
32
  const { peerRouting, lan } = init
34
33
 
35
- this.components = components
34
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:find-node')
35
+ this.peerId = components.peerId
36
+ this.addressManager = components.addressManager
36
37
  this.peerRouting = peerRouting
37
38
  this.lan = Boolean(lan)
38
39
  }
@@ -41,15 +42,14 @@ export class FindNodeHandler implements DHTMessageHandler {
41
42
  * Process `FindNode` DHT messages
42
43
  */
43
44
  async handle (peerId: PeerId, msg: Message): Promise<Message> {
44
- log('incoming request from %p for peers closer to %b', peerId, msg.key)
45
+ this.log('incoming request from %p for peers closer to %b', peerId, msg.key)
45
46
 
46
47
  let closer: PeerInfo[] = []
47
48
 
48
- if (uint8ArrayEquals(this.components.peerId.toBytes(), msg.key)) {
49
+ if (uint8ArrayEquals(this.peerId.toBytes(), msg.key)) {
49
50
  closer = [{
50
- id: this.components.peerId,
51
- multiaddrs: this.components.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code)),
52
- protocols: []
51
+ id: this.peerId,
52
+ multiaddrs: this.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code))
53
53
  }]
54
54
  } else {
55
55
  closer = await this.peerRouting.getCloserPeersOffline(msg.key, peerId)
@@ -64,7 +64,7 @@ export class FindNodeHandler implements DHTMessageHandler {
64
64
  if (closer.length > 0) {
65
65
  response.closerPeers = closer
66
66
  } else {
67
- log('could not find any peers closer to %b than %p', msg.key, peerId)
67
+ this.log('could not find any peers closer to %b than %p', msg.key, peerId)
68
68
  }
69
69
 
70
70
  return response
@@ -1,5 +1,4 @@
1
- import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
1
+ import { CodeError } from '@libp2p/interface'
3
2
  import { CID } from 'multiformats/cid'
4
3
  import { Message } from '../../message/index.js'
5
4
  import {
@@ -9,13 +8,9 @@ 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'
12
- import type { PeerId } from '@libp2p/interface/peer-id'
13
- import type { PeerInfo } from '@libp2p/interface/peer-info'
14
- import type { PeerStore } from '@libp2p/interface/peer-store'
11
+ import type { ComponentLogger, Logger, PeerId, PeerInfo, PeerStore } from '@libp2p/interface'
15
12
  import type { Multiaddr } from '@multiformats/multiaddr'
16
13
 
17
- const log = logger('libp2p:kad-dht:rpc:handlers:get-providers')
18
-
19
14
  export interface GetProvidersHandlerInit {
20
15
  peerRouting: PeerRouting
21
16
  providers: Providers
@@ -24,18 +19,21 @@ export interface GetProvidersHandlerInit {
24
19
 
25
20
  export interface GetProvidersHandlerComponents {
26
21
  peerStore: PeerStore
22
+ logger: ComponentLogger
27
23
  }
28
24
 
29
25
  export class GetProvidersHandler implements DHTMessageHandler {
30
- private readonly components: GetProvidersHandlerComponents
31
26
  private readonly peerRouting: PeerRouting
32
27
  private readonly providers: Providers
33
28
  private readonly lan: boolean
29
+ private readonly peerStore: PeerStore
30
+ private readonly log: Logger
34
31
 
35
32
  constructor (components: GetProvidersHandlerComponents, init: GetProvidersHandlerInit) {
36
33
  const { peerRouting, providers, lan } = init
37
34
 
38
- this.components = components
35
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:get-providers')
36
+ this.peerStore = components.peerStore
39
37
  this.peerRouting = peerRouting
40
38
  this.providers = providers
41
39
  this.lan = Boolean(lan)
@@ -49,7 +47,7 @@ export class GetProvidersHandler implements DHTMessageHandler {
49
47
  throw new CodeError('Invalid CID', 'ERR_INVALID_CID')
50
48
  }
51
49
 
52
- log('%p asking for providers for %s', peerId, cid)
50
+ this.log('%p asking for providers for %s', peerId, cid)
53
51
 
54
52
  const [peers, closer] = await Promise.all([
55
53
  this.providers.getProviders(cid),
@@ -68,7 +66,7 @@ export class GetProvidersHandler implements DHTMessageHandler {
68
66
  response.closerPeers = closerPeers
69
67
  }
70
68
 
71
- log('got %s providers %s closerPeers', providerPeers.length, closerPeers.length)
69
+ this.log('got %s providers %s closerPeers', providerPeers.length, closerPeers.length)
72
70
  return response
73
71
  }
74
72
 
@@ -82,12 +80,11 @@ export class GetProvidersHandler implements DHTMessageHandler {
82
80
 
83
81
  for (const peerId of peerIds) {
84
82
  try {
85
- const peer = await this.components.peerStore.get(peerId)
83
+ const peer = await this.peerStore.get(peerId)
86
84
 
87
85
  const peerAfterFilter = addrFilter({
88
86
  id: peerId,
89
- multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr),
90
- protocols: peer.protocols
87
+ multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
91
88
  })
92
89
 
93
90
  if (peerAfterFilter.multiaddrs.length > 0) {
@@ -1,5 +1,4 @@
1
- import { CodeError } from '@libp2p/interface/errors'
2
- import { logger } from '@libp2p/logger'
1
+ import { CodeError } from '@libp2p/interface'
3
2
  import {
4
3
  MAX_RECORD_AGE
5
4
  } from '../../constants.js'
@@ -8,12 +7,9 @@ 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'
11
- import type { PeerId } from '@libp2p/interface/peer-id'
12
- import type { PeerStore } from '@libp2p/interface/peer-store'
10
+ import type { ComponentLogger, Logger, PeerId, PeerStore } from '@libp2p/interface'
13
11
  import type { Datastore } from 'interface-datastore'
14
12
 
15
- const log = logger('libp2p:kad-dht:rpc:handlers:get-value')
16
-
17
13
  export interface GetValueHandlerInit {
18
14
  peerRouting: PeerRouting
19
15
  }
@@ -21,23 +17,26 @@ export interface GetValueHandlerInit {
21
17
  export interface GetValueHandlerComponents {
22
18
  peerStore: PeerStore
23
19
  datastore: Datastore
20
+ logger: ComponentLogger
24
21
  }
25
22
 
26
23
  export class GetValueHandler implements DHTMessageHandler {
27
- private readonly components: GetValueHandlerComponents
24
+ private readonly peerStore: PeerStore
25
+ private readonly datastore: Datastore
28
26
  private readonly peerRouting: PeerRouting
27
+ private readonly log: Logger
29
28
 
30
29
  constructor (components: GetValueHandlerComponents, init: GetValueHandlerInit) {
31
- const { peerRouting } = init
32
-
33
- this.components = components
34
- this.peerRouting = peerRouting
30
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:get-value')
31
+ this.peerStore = components.peerStore
32
+ this.datastore = components.datastore
33
+ this.peerRouting = init.peerRouting
35
34
  }
36
35
 
37
36
  async handle (peerId: PeerId, msg: Message): Promise<Message> {
38
37
  const key = msg.key
39
38
 
40
- log('%p asked for key %b', peerId, key)
39
+ this.log('%p asked for key %b', peerId, key)
41
40
 
42
41
  if (key == null || key.length === 0) {
43
42
  throw new CodeError('Invalid key', 'ERR_INVALID_KEY')
@@ -46,12 +45,12 @@ export class GetValueHandler implements DHTMessageHandler {
46
45
  const response = new Message(MESSAGE_TYPE.GET_VALUE, key, msg.clusterLevel)
47
46
 
48
47
  if (isPublicKeyKey(key)) {
49
- log('is public key')
48
+ this.log('is public key')
50
49
  const idFromKey = fromPublicKeyKey(key)
51
50
  let pubKey: Uint8Array | undefined
52
51
 
53
52
  try {
54
- const peer = await this.components.peerStore.get(idFromKey)
53
+ const peer = await this.peerStore.get(idFromKey)
55
54
 
56
55
  if (peer.id.publicKey == null) {
57
56
  throw new CodeError('No public key found in key book', 'ERR_NOT_FOUND')
@@ -65,7 +64,7 @@ export class GetValueHandler implements DHTMessageHandler {
65
64
  }
66
65
 
67
66
  if (pubKey != null) {
68
- log('returning found public key')
67
+ this.log('returning found public key')
69
68
  response.record = new Libp2pRecord(key, pubKey, new Date())
70
69
  return response
71
70
  }
@@ -77,12 +76,12 @@ export class GetValueHandler implements DHTMessageHandler {
77
76
  ])
78
77
 
79
78
  if (record != null) {
80
- log('had record for %b in local datastore', key)
79
+ this.log('had record for %b in local datastore', key)
81
80
  response.record = record
82
81
  }
83
82
 
84
83
  if (closer.length > 0) {
85
- log('had %s closer peers in routing table', closer.length)
84
+ this.log('had %s closer peers in routing table', closer.length)
86
85
  response.closerPeers = closer
87
86
  }
88
87
 
@@ -96,13 +95,13 @@ export class GetValueHandler implements DHTMessageHandler {
96
95
  * - it was received less than `MAX_RECORD_AGE` ago.
97
96
  */
98
97
  async _checkLocalDatastore (key: Uint8Array): Promise<Libp2pRecord | undefined> {
99
- log('checkLocalDatastore looking for %b', key)
98
+ this.log('checkLocalDatastore looking for %b', key)
100
99
  const dsKey = bufferToRecordKey(key)
101
100
 
102
101
  // Fetch value from ds
103
102
  let rawRecord
104
103
  try {
105
- rawRecord = await this.components.datastore.get(dsKey)
104
+ rawRecord = await this.datastore.get(dsKey)
106
105
  } catch (err: any) {
107
106
  if (err.code === 'ERR_NOT_FOUND') {
108
107
  return undefined
@@ -121,7 +120,7 @@ export class GetValueHandler implements DHTMessageHandler {
121
120
  if (record.timeReceived == null ||
122
121
  Date.now() - record.timeReceived.getTime() > MAX_RECORD_AGE) {
123
122
  // If record is bad delete it and return
124
- await this.components.datastore.delete(dsKey)
123
+ await this.datastore.delete(dsKey)
125
124
  return undefined
126
125
  }
127
126
 
@@ -1,13 +1,20 @@
1
- import { logger } from '@libp2p/logger'
2
1
  import type { Message } from '../../message/index.js'
3
2
  import type { DHTMessageHandler } from '../index.js'
4
- import type { PeerId } from '@libp2p/interface/peer-id'
3
+ import type { ComponentLogger, Logger, PeerId } from '@libp2p/interface'
5
4
 
6
- const log = logger('libp2p:kad-dht:rpc:handlers:ping')
5
+ export interface PingComponents {
6
+ logger: ComponentLogger
7
+ }
7
8
 
8
9
  export class PingHandler implements DHTMessageHandler {
10
+ private readonly log: Logger
11
+
12
+ constructor (components: PingComponents) {
13
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:ping')
14
+ }
15
+
9
16
  async handle (peerId: PeerId, msg: Message): Promise<Message> {
10
- log('ping from %p', peerId)
17
+ this.log('ping from %p', peerId)
11
18
  return msg
12
19
  }
13
20
  }
@@ -1,11 +1,10 @@
1
- import { CodeError } from '@libp2p/interface/errors'
2
- import { type Logger, logger } from '@libp2p/logger'
1
+ import { CodeError } from '@libp2p/interface'
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'
8
- import type { PeerId } from '@libp2p/interface/peer-id'
7
+ import type { ComponentLogger, Logger, PeerId } from '@libp2p/interface'
9
8
  import type { Datastore } from 'interface-datastore'
10
9
 
11
10
  export interface PutValueHandlerInit {
@@ -14,18 +13,19 @@ export interface PutValueHandlerInit {
14
13
 
15
14
  export interface PutValueHandlerComponents {
16
15
  datastore: Datastore
16
+ logger: ComponentLogger
17
17
  }
18
18
 
19
19
  export class PutValueHandler implements DHTMessageHandler {
20
- private readonly log: Logger
21
20
  private readonly components: PutValueHandlerComponents
22
21
  private readonly validators: Validators
22
+ private readonly log: Logger
23
23
 
24
24
  constructor (components: PutValueHandlerComponents, init: PutValueHandlerInit) {
25
25
  const { validators } = init
26
26
 
27
27
  this.components = components
28
- this.log = logger('libp2p:kad-dht:rpc:handlers:put-value')
28
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc:handlers:put-value')
29
29
  this.validators = validators
30
30
  }
31
31
 
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,8 +11,8 @@ 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'
15
- import type { PeerId } from '@libp2p/interface/peer-id'
16
- import type { IncomingStreamData } from '@libp2p/interface-internal/registrar'
14
+ import type { Logger, PeerId } from '@libp2p/interface'
15
+ import type { IncomingStreamData } from '@libp2p/interface-internal'
17
16
 
18
17
  export interface DHTMessageHandler {
19
18
  handle(peerId: PeerId, msg: Message): Promise<Message | undefined>
@@ -39,15 +38,15 @@ export class RPC {
39
38
  constructor (components: RPCComponents, init: RPCInit) {
40
39
  const { providers, peerRouting, validators, lan } = init
41
40
 
42
- this.log = logger('libp2p:kad-dht:rpc')
41
+ this.log = components.logger.forComponent('libp2p:kad-dht:rpc')
43
42
  this.routingTable = init.routingTable
44
43
  this.handlers = {
45
44
  [MESSAGE_TYPE.GET_VALUE]: new GetValueHandler(components, { peerRouting }),
46
45
  [MESSAGE_TYPE.PUT_VALUE]: new PutValueHandler(components, { validators }),
47
46
  [MESSAGE_TYPE.FIND_NODE]: new FindNodeHandler(components, { peerRouting, lan }),
48
- [MESSAGE_TYPE.ADD_PROVIDER]: new AddProviderHandler({ providers }),
47
+ [MESSAGE_TYPE.ADD_PROVIDER]: new AddProviderHandler(components, { providers }),
49
48
  [MESSAGE_TYPE.GET_PROVIDERS]: new GetProvidersHandler(components, { peerRouting, providers, lan }),
50
- [MESSAGE_TYPE.PING]: new PingHandler()
49
+ [MESSAGE_TYPE.PING]: new PingHandler(components)
51
50
  }
52
51
  }
53
52
 
@@ -1,9 +1,6 @@
1
- import { CustomEvent, TypedEventEmitter } from '@libp2p/interface/events'
2
- import { logger } from '@libp2p/logger'
1
+ import { CustomEvent, TypedEventEmitter } from '@libp2p/interface'
3
2
  import type { KadDHTComponents } from '.'
4
- import type { PeerId } from '@libp2p/interface/peer-id'
5
- import type { Startable } from '@libp2p/interface/startable'
6
- import type { Logger } from '@libp2p/logger'
3
+ import type { Logger, PeerId, Startable } from '@libp2p/interface'
7
4
 
8
5
  export interface TopologyListenerInit {
9
6
  protocol: string
@@ -30,7 +27,7 @@ export class TopologyListener extends TypedEventEmitter<TopologyListenerEvents>
30
27
  const { protocol, lan } = init
31
28
 
32
29
  this.components = components
33
- this.log = logger(`libp2p:kad-dht:topology-listener:${lan ? 'lan' : 'wan'}`)
30
+ this.log = components.logger.forComponent(`libp2p:kad-dht:topology-listener:${lan ? 'lan' : 'wan'}`)
34
31
  this.running = false
35
32
  this.protocol = protocol
36
33
  }
package/src/utils.ts CHANGED
@@ -7,8 +7,7 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
7
7
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
8
8
  import { RECORD_KEY_PREFIX } from './constants.js'
9
9
  import { Libp2pRecord } from './record/index.js'
10
- import type { PeerId } from '@libp2p/interface/peer-id'
11
- import type { PeerInfo } from '@libp2p/interface/peer-info'
10
+ import type { PeerId, PeerInfo } from '@libp2p/interface'
12
11
 
13
12
  // const IPNS_PREFIX = uint8ArrayFromString('/ipns/')
14
13
  const PK_PREFIX = uint8ArrayFromString('/pk/')
@@ -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
- }