@libp2p/kad-dht 4.0.2 → 5.0.0

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 (102) hide show
  1. package/README.md +10 -12
  2. package/dist/src/content-fetching/index.d.ts +4 -5
  3. package/dist/src/content-fetching/index.d.ts.map +1 -1
  4. package/dist/src/content-fetching/index.js +8 -12
  5. package/dist/src/content-fetching/index.js.map +1 -1
  6. package/dist/src/content-routing/index.d.ts +4 -5
  7. package/dist/src/content-routing/index.d.ts.map +1 -1
  8. package/dist/src/content-routing/index.js +7 -11
  9. package/dist/src/content-routing/index.js.map +1 -1
  10. package/dist/src/dual-kad-dht.d.ts +6 -7
  11. package/dist/src/dual-kad-dht.d.ts.map +1 -1
  12. package/dist/src/dual-kad-dht.js +3 -9
  13. package/dist/src/dual-kad-dht.js.map +1 -1
  14. package/dist/src/index.d.ts +16 -2
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +7 -4
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/kad-dht.d.ts +4 -6
  19. package/dist/src/kad-dht.d.ts.map +1 -1
  20. package/dist/src/kad-dht.js +16 -31
  21. package/dist/src/kad-dht.js.map +1 -1
  22. package/dist/src/network.d.ts +4 -5
  23. package/dist/src/network.d.ts.map +1 -1
  24. package/dist/src/network.js +4 -8
  25. package/dist/src/network.js.map +1 -1
  26. package/dist/src/peer-routing/index.d.ts +4 -5
  27. package/dist/src/peer-routing/index.d.ts.map +1 -1
  28. package/dist/src/peer-routing/index.js +12 -16
  29. package/dist/src/peer-routing/index.js.map +1 -1
  30. package/dist/src/providers.d.ts +7 -5
  31. package/dist/src/providers.d.ts.map +1 -1
  32. package/dist/src/providers.js +6 -10
  33. package/dist/src/providers.js.map +1 -1
  34. package/dist/src/query/manager.d.ts +8 -5
  35. package/dist/src/query/manager.d.ts.map +1 -1
  36. package/dist/src/query/manager.js +5 -9
  37. package/dist/src/query/manager.js.map +1 -1
  38. package/dist/src/query-self.d.ts +4 -5
  39. package/dist/src/query-self.d.ts.map +1 -1
  40. package/dist/src/query-self.js +3 -7
  41. package/dist/src/query-self.js.map +1 -1
  42. package/dist/src/routing-table/index.d.ts +12 -5
  43. package/dist/src/routing-table/index.d.ts.map +1 -1
  44. package/dist/src/routing-table/index.js +11 -15
  45. package/dist/src/routing-table/index.js.map +1 -1
  46. package/dist/src/routing-table/refresh.d.ts +1 -3
  47. package/dist/src/routing-table/refresh.d.ts.map +1 -1
  48. package/dist/src/routing-table/refresh.js +0 -2
  49. package/dist/src/routing-table/refresh.js.map +1 -1
  50. package/dist/src/rpc/handlers/add-provider.d.ts +1 -3
  51. package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
  52. package/dist/src/rpc/handlers/add-provider.js +0 -2
  53. package/dist/src/rpc/handlers/add-provider.js.map +1 -1
  54. package/dist/src/rpc/handlers/find-node.d.ts +8 -6
  55. package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
  56. package/dist/src/rpc/handlers/find-node.js +5 -9
  57. package/dist/src/rpc/handlers/find-node.js.map +1 -1
  58. package/dist/src/rpc/handlers/get-providers.d.ts +7 -5
  59. package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
  60. package/dist/src/rpc/handlers/get-providers.js +3 -7
  61. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  62. package/dist/src/rpc/handlers/get-value.d.ts +9 -5
  63. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  64. package/dist/src/rpc/handlers/get-value.js +5 -9
  65. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  66. package/dist/src/rpc/handlers/ping.d.ts +1 -3
  67. package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
  68. package/dist/src/rpc/handlers/ping.js +0 -2
  69. package/dist/src/rpc/handlers/ping.js.map +1 -1
  70. package/dist/src/rpc/handlers/put-value.d.ts +7 -5
  71. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  72. package/dist/src/rpc/handlers/put-value.js +3 -7
  73. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  74. package/dist/src/rpc/index.d.ts +9 -5
  75. package/dist/src/rpc/index.d.ts.map +1 -1
  76. package/dist/src/rpc/index.js +5 -10
  77. package/dist/src/rpc/index.js.map +1 -1
  78. package/dist/src/topology-listener.d.ts +4 -5
  79. package/dist/src/topology-listener.d.ts.map +1 -1
  80. package/dist/src/topology-listener.js +4 -8
  81. package/dist/src/topology-listener.js.map +1 -1
  82. package/package.json +8 -8
  83. package/src/content-fetching/index.ts +12 -14
  84. package/src/content-routing/index.ts +10 -13
  85. package/src/dual-kad-dht.ts +8 -13
  86. package/src/index.ts +25 -4
  87. package/src/kad-dht.ts +19 -35
  88. package/src/network.ts +7 -10
  89. package/src/peer-routing/index.ts +15 -18
  90. package/src/providers.ts +12 -12
  91. package/src/query/manager.ts +14 -11
  92. package/src/query-self.ts +6 -9
  93. package/src/routing-table/index.ts +23 -17
  94. package/src/routing-table/refresh.ts +1 -6
  95. package/src/rpc/handlers/add-provider.ts +1 -6
  96. package/src/rpc/handlers/find-node.ts +14 -12
  97. package/src/rpc/handlers/get-providers.ts +10 -9
  98. package/src/rpc/handlers/get-value.ts +14 -11
  99. package/src/rpc/handlers/ping.ts +1 -6
  100. package/src/rpc/handlers/put-value.ts +10 -9
  101. package/src/rpc/index.ts +15 -19
  102. package/src/topology-listener.ts +7 -10
package/src/rpc/index.ts CHANGED
@@ -5,18 +5,17 @@ import type { RoutingTable } from '../routing-table'
5
5
  import type { PeerId } from '@libp2p/interface-peer-id'
6
6
  import { Message, MESSAGE_TYPE } from '../message/index.js'
7
7
  import { AddProviderHandler } from './handlers/add-provider.js'
8
- import { FindNodeHandler } from './handlers/find-node.js'
9
- import { GetProvidersHandler } from './handlers/get-providers.js'
10
- import { GetValueHandler } from './handlers/get-value.js'
8
+ import { FindNodeHandler, FindNodeHandlerComponents } from './handlers/find-node.js'
9
+ import { GetProvidersHandler, GetProvidersHandlerComponents } from './handlers/get-providers.js'
10
+ import { GetValueHandler, GetValueHandlerComponents } from './handlers/get-value.js'
11
11
  import { PingHandler } from './handlers/ping.js'
12
- import { PutValueHandler } from './handlers/put-value.js'
12
+ import { PutValueHandler, PutValueHandlerComponents } from './handlers/put-value.js'
13
13
  import type { IncomingStreamData } from '@libp2p/interface-registrar'
14
14
  import type { Providers } from '../providers'
15
15
  import type { PeerRouting } from '../peer-routing'
16
16
  import type { Validators } from '@libp2p/interface-dht'
17
- import type { Components, Initializable } from '@libp2p/components'
18
17
 
19
- export interface DHTMessageHandler extends Initializable {
18
+ export interface DHTMessageHandler {
20
19
  handle: (peerId: PeerId, msg: Message) => Promise<Message | undefined>
21
20
  }
22
21
 
@@ -28,33 +27,30 @@ export interface RPCInit {
28
27
  lan: boolean
29
28
  }
30
29
 
31
- export class RPC implements Initializable {
30
+ export interface RPCComponents extends GetValueHandlerComponents, PutValueHandlerComponents, FindNodeHandlerComponents, GetProvidersHandlerComponents {
31
+
32
+ }
33
+
34
+ export class RPC {
32
35
  private readonly handlers: Record<string, DHTMessageHandler>
33
36
  private readonly routingTable: RoutingTable
34
37
  private readonly log: Logger
35
38
 
36
- constructor (init: RPCInit) {
39
+ constructor (components: RPCComponents, init: RPCInit) {
37
40
  const { providers, peerRouting, validators, lan } = init
38
41
 
39
42
  this.log = logger('libp2p:kad-dht:rpc')
40
-
41
43
  this.routingTable = init.routingTable
42
44
  this.handlers = {
43
- [MESSAGE_TYPE.GET_VALUE]: new GetValueHandler({ peerRouting }),
44
- [MESSAGE_TYPE.PUT_VALUE]: new PutValueHandler({ validators }),
45
- [MESSAGE_TYPE.FIND_NODE]: new FindNodeHandler({ peerRouting, lan }),
45
+ [MESSAGE_TYPE.GET_VALUE]: new GetValueHandler(components, { peerRouting }),
46
+ [MESSAGE_TYPE.PUT_VALUE]: new PutValueHandler(components, { validators }),
47
+ [MESSAGE_TYPE.FIND_NODE]: new FindNodeHandler(components, { peerRouting, lan }),
46
48
  [MESSAGE_TYPE.ADD_PROVIDER]: new AddProviderHandler({ providers }),
47
- [MESSAGE_TYPE.GET_PROVIDERS]: new GetProvidersHandler({ peerRouting, providers, lan }),
49
+ [MESSAGE_TYPE.GET_PROVIDERS]: new GetProvidersHandler(components, { peerRouting, providers, lan }),
48
50
  [MESSAGE_TYPE.PING]: new PingHandler()
49
51
  }
50
52
  }
51
53
 
52
- init (components: Components): void {
53
- for (const handler of Object.values(this.handlers)) {
54
- handler.init(components)
55
- }
56
- }
57
-
58
54
  /**
59
55
  * Process incoming DHT messages
60
56
  */
@@ -4,7 +4,7 @@ import { logger } from '@libp2p/logger'
4
4
  import type { Logger } from '@libp2p/logger'
5
5
  import type { Startable } from '@libp2p/interfaces/startable'
6
6
  import type { PeerId } from '@libp2p/interface-peer-id'
7
- import { Components, Initializable } from '@libp2p/components'
7
+ import type { KadDHTComponents } from '.'
8
8
 
9
9
  export interface TopologyListenerInit {
10
10
  protocol: string
@@ -18,27 +18,24 @@ export interface TopologyListenerEvents {
18
18
  /**
19
19
  * Receives notifications of new peers joining the network that support the DHT protocol
20
20
  */
21
- export class TopologyListener extends EventEmitter<TopologyListenerEvents> implements Startable, Initializable {
21
+ export class TopologyListener extends EventEmitter<TopologyListenerEvents> implements Startable {
22
22
  private readonly log: Logger
23
- private components: Components = new Components()
23
+ private readonly components: KadDHTComponents
24
24
  private readonly protocol: string
25
25
  private running: boolean
26
26
  private registrarId?: string
27
27
 
28
- constructor (init: TopologyListenerInit) {
28
+ constructor (components: KadDHTComponents, init: TopologyListenerInit) {
29
29
  super()
30
30
 
31
31
  const { protocol, lan } = init
32
32
 
33
+ this.components = components
33
34
  this.log = logger(`libp2p:kad-dht:topology-listener:${lan ? 'lan' : 'wan'}`)
34
35
  this.running = false
35
36
  this.protocol = protocol
36
37
  }
37
38
 
38
- init (components: Components): void {
39
- this.components = components
40
- }
41
-
42
39
  isStarted () {
43
40
  return this.running
44
41
  }
@@ -62,7 +59,7 @@ export class TopologyListener extends EventEmitter<TopologyListenerEvents> imple
62
59
  }))
63
60
  }
64
61
  })
65
- this.registrarId = await this.components.getRegistrar().register(this.protocol, topology)
62
+ this.registrarId = await this.components.registrar.register(this.protocol, topology)
66
63
  }
67
64
 
68
65
  /**
@@ -73,7 +70,7 @@ export class TopologyListener extends EventEmitter<TopologyListenerEvents> imple
73
70
 
74
71
  // unregister protocol and handlers
75
72
  if (this.registrarId != null) {
76
- this.components.getRegistrar().unregister(this.registrarId)
73
+ this.components.registrar.unregister(this.registrarId)
77
74
  this.registrarId = undefined
78
75
  }
79
76
  }