@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.
- package/README.md +10 -12
- package/dist/src/content-fetching/index.d.ts +4 -5
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +8 -12
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts +4 -5
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +7 -11
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/dual-kad-dht.d.ts +6 -7
- package/dist/src/dual-kad-dht.d.ts.map +1 -1
- package/dist/src/dual-kad-dht.js +3 -9
- package/dist/src/dual-kad-dht.js.map +1 -1
- package/dist/src/index.d.ts +16 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts +4 -6
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +16 -31
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/network.d.ts +4 -5
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +4 -8
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts +4 -5
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +12 -16
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +7 -5
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +6 -10
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/manager.d.ts +8 -5
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +5 -9
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query-self.d.ts +4 -5
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +3 -7
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/routing-table/index.d.ts +12 -5
- package/dist/src/routing-table/index.d.ts.map +1 -1
- package/dist/src/routing-table/index.js +11 -15
- package/dist/src/routing-table/index.js.map +1 -1
- package/dist/src/routing-table/refresh.d.ts +1 -3
- package/dist/src/routing-table/refresh.d.ts.map +1 -1
- package/dist/src/routing-table/refresh.js +0 -2
- package/dist/src/routing-table/refresh.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +1 -3
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/add-provider.js +0 -2
- package/dist/src/rpc/handlers/add-provider.js.map +1 -1
- package/dist/src/rpc/handlers/find-node.d.ts +8 -6
- package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
- package/dist/src/rpc/handlers/find-node.js +5 -9
- package/dist/src/rpc/handlers/find-node.js.map +1 -1
- package/dist/src/rpc/handlers/get-providers.d.ts +7 -5
- package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +3 -7
- package/dist/src/rpc/handlers/get-providers.js.map +1 -1
- package/dist/src/rpc/handlers/get-value.d.ts +9 -5
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-value.js +5 -9
- package/dist/src/rpc/handlers/get-value.js.map +1 -1
- package/dist/src/rpc/handlers/ping.d.ts +1 -3
- package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
- package/dist/src/rpc/handlers/ping.js +0 -2
- package/dist/src/rpc/handlers/ping.js.map +1 -1
- package/dist/src/rpc/handlers/put-value.d.ts +7 -5
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/put-value.js +3 -7
- package/dist/src/rpc/handlers/put-value.js.map +1 -1
- package/dist/src/rpc/index.d.ts +9 -5
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +5 -10
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/topology-listener.d.ts +4 -5
- package/dist/src/topology-listener.d.ts.map +1 -1
- package/dist/src/topology-listener.js +4 -8
- package/dist/src/topology-listener.js.map +1 -1
- package/package.json +8 -8
- package/src/content-fetching/index.ts +12 -14
- package/src/content-routing/index.ts +10 -13
- package/src/dual-kad-dht.ts +8 -13
- package/src/index.ts +25 -4
- package/src/kad-dht.ts +19 -35
- package/src/network.ts +7 -10
- package/src/peer-routing/index.ts +15 -18
- package/src/providers.ts +12 -12
- package/src/query/manager.ts +14 -11
- package/src/query-self.ts +6 -9
- package/src/routing-table/index.ts +23 -17
- package/src/routing-table/refresh.ts +1 -6
- package/src/rpc/handlers/add-provider.ts +1 -6
- package/src/rpc/handlers/find-node.ts +14 -12
- package/src/rpc/handlers/get-providers.ts +10 -9
- package/src/rpc/handlers/get-value.ts +14 -11
- package/src/rpc/handlers/ping.ts +1 -6
- package/src/rpc/handlers/put-value.ts +10 -9
- package/src/rpc/index.ts +15 -19
- 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
|
|
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
|
|
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
|
*/
|
package/src/topology-listener.ts
CHANGED
|
@@ -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 {
|
|
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
|
|
21
|
+
export class TopologyListener extends EventEmitter<TopologyListenerEvents> implements Startable {
|
|
22
22
|
private readonly log: Logger
|
|
23
|
-
private 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.
|
|
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.
|
|
73
|
+
this.components.registrar.unregister(this.registrarId)
|
|
77
74
|
this.registrarId = undefined
|
|
78
75
|
}
|
|
79
76
|
}
|