@libp2p/kad-dht 1.0.0 → 1.0.3
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/dist/src/content-fetching/index.d.ts +6 -9
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +14 -11
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts +6 -9
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +15 -13
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/dual-kad-dht.d.ts +6 -6
- package/dist/src/dual-kad-dht.d.ts.map +1 -1
- package/dist/src/dual-kad-dht.js +9 -4
- package/dist/src/dual-kad-dht.js.map +1 -1
- package/dist/src/index.d.ts +14 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +14 -12
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts +14 -54
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +45 -48
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/message/index.d.ts +3 -3
- package/dist/src/network.d.ts +9 -9
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +10 -6
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-list/index.d.ts +1 -1
- package/dist/src/peer-list/index.js +1 -1
- package/dist/src/peer-routing/index.d.ts +8 -10
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +18 -16
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +6 -6
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +11 -7
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/events.d.ts +5 -5
- package/dist/src/query/manager.d.ts +6 -8
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +10 -7
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query/query-path.d.ts.map +1 -1
- package/dist/src/query/query-path.js +2 -3
- package/dist/src/query/query-path.js.map +1 -1
- package/dist/src/query-self.d.ts +6 -6
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +8 -4
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/routing-table/index.d.ts +10 -14
- package/dist/src/routing-table/index.d.ts.map +1 -1
- package/dist/src/routing-table/index.js +12 -10
- package/dist/src/routing-table/index.js.map +1 -1
- package/dist/src/routing-table/refresh.d.ts +5 -3
- package/dist/src/routing-table/refresh.d.ts.map +1 -1
- package/dist/src/routing-table/refresh.js +4 -2
- package/dist/src/routing-table/refresh.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +5 -3
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/add-provider.js +4 -2
- package/dist/src/rpc/handlers/add-provider.js.map +1 -1
- package/dist/src/rpc/handlers/find-node.d.ts +5 -3
- package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
- package/dist/src/rpc/handlers/find-node.js +4 -2
- package/dist/src/rpc/handlers/find-node.js.map +1 -1
- package/dist/src/rpc/handlers/get-providers.d.ts +8 -8
- package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +8 -4
- package/dist/src/rpc/handlers/get-providers.js.map +1 -1
- package/dist/src/rpc/handlers/get-value.d.ts +6 -9
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-value.js +10 -7
- package/dist/src/rpc/handlers/get-value.js.map +1 -1
- package/dist/src/rpc/handlers/ping.d.ts +3 -1
- package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
- package/dist/src/rpc/handlers/ping.js +2 -0
- package/dist/src/rpc/handlers/ping.js.map +1 -1
- package/dist/src/rpc/handlers/put-value.d.ts +7 -8
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/put-value.js +10 -7
- package/dist/src/rpc/handlers/put-value.js.map +1 -1
- package/dist/src/rpc/index.d.ts +6 -10
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +14 -9
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/topology-listener.d.ts +6 -6
- package/dist/src/topology-listener.d.ts.map +1 -1
- package/dist/src/topology-listener.js +9 -5
- package/dist/src/topology-listener.js.map +1 -1
- package/dist/src/utils.d.ts +3 -3
- package/package.json +21 -21
- package/src/content-fetching/index.ts +17 -19
- package/src/content-routing/index.ts +20 -23
- package/src/dual-kad-dht.ts +12 -9
- package/src/index.ts +22 -14
- package/src/kad-dht.ts +61 -119
- package/src/message/index.ts +4 -4
- package/src/network.ts +16 -14
- package/src/peer-list/index.ts +1 -1
- package/src/peer-routing/index.ts +23 -25
- package/src/providers.ts +14 -11
- package/src/query/events.ts +5 -5
- package/src/query/manager.ts +13 -14
- package/src/query/query-path.ts +2 -3
- package/src/query-self.ts +11 -9
- package/src/routing-table/index.ts +20 -23
- package/src/routing-table/refresh.ts +9 -4
- package/src/rpc/handlers/add-provider.ts +9 -4
- package/src/rpc/handlers/find-node.ts +9 -4
- package/src/rpc/handlers/get-providers.ts +13 -11
- package/src/rpc/handlers/get-value.ts +13 -15
- package/src/rpc/handlers/ping.ts +6 -1
- package/src/rpc/handlers/put-value.ts +14 -15
- package/src/rpc/index.ts +19 -18
- package/src/topology-listener.ts +12 -10
- package/src/utils.ts +3 -3
package/src/rpc/index.ts
CHANGED
|
@@ -11,49 +11,50 @@ import { GetValueHandler } from './handlers/get-value.js'
|
|
|
11
11
|
import { PingHandler } from './handlers/ping.js'
|
|
12
12
|
import { PutValueHandler } from './handlers/put-value.js'
|
|
13
13
|
import type { IncomingStreamData } from '@libp2p/interfaces/registrar'
|
|
14
|
-
import type { KeyBook, AddressBook } from '@libp2p/interfaces/peer-store'
|
|
15
14
|
import type { Providers } from '../providers'
|
|
16
15
|
import type { PeerRouting } from '../peer-routing'
|
|
17
|
-
import type { Datastore } from 'interface-datastore'
|
|
18
16
|
import type { Validators } from '@libp2p/interfaces/dht'
|
|
17
|
+
import type { Components, Initializable } from '@libp2p/interfaces/components'
|
|
19
18
|
|
|
20
19
|
export interface DHTMessageHandler {
|
|
21
20
|
handle: (peerId: PeerId, msg: Message) => Promise<Message | undefined>
|
|
22
21
|
}
|
|
23
22
|
|
|
24
|
-
export interface
|
|
25
|
-
peerId: PeerId
|
|
23
|
+
export interface RPCInit {
|
|
26
24
|
routingTable: RoutingTable
|
|
27
|
-
keyBook: KeyBook
|
|
28
|
-
addressBook: AddressBook
|
|
29
25
|
providers: Providers
|
|
30
26
|
peerRouting: PeerRouting
|
|
31
|
-
datastore: Datastore
|
|
32
27
|
validators: Validators
|
|
33
28
|
lan: boolean
|
|
34
29
|
}
|
|
35
30
|
|
|
36
|
-
export class RPC {
|
|
37
|
-
private readonly handlers: Record<number, DHTMessageHandler>
|
|
31
|
+
export class RPC implements Initializable {
|
|
32
|
+
private readonly handlers: Record<number, DHTMessageHandler & Initializable>
|
|
38
33
|
private readonly routingTable: RoutingTable
|
|
39
34
|
private readonly log: Logger
|
|
40
35
|
|
|
41
|
-
constructor (
|
|
42
|
-
const {
|
|
36
|
+
constructor (init: RPCInit) {
|
|
37
|
+
const { providers, peerRouting, validators, lan } = init
|
|
43
38
|
|
|
44
|
-
this.log = logger('libp2p:kad-dht:rpc
|
|
39
|
+
this.log = logger('libp2p:kad-dht:rpc')
|
|
45
40
|
|
|
46
|
-
this.routingTable =
|
|
41
|
+
this.routingTable = init.routingTable
|
|
47
42
|
this.handlers = {
|
|
48
|
-
[MESSAGE_TYPE.GET_VALUE]: new GetValueHandler({
|
|
49
|
-
[MESSAGE_TYPE.PUT_VALUE]: new PutValueHandler({
|
|
43
|
+
[MESSAGE_TYPE.GET_VALUE]: new GetValueHandler({ peerRouting }),
|
|
44
|
+
[MESSAGE_TYPE.PUT_VALUE]: new PutValueHandler({ validators }),
|
|
50
45
|
[MESSAGE_TYPE.FIND_NODE]: new FindNodeHandler({ peerRouting, lan }),
|
|
51
46
|
[MESSAGE_TYPE.ADD_PROVIDER]: new AddProviderHandler({ providers }),
|
|
52
|
-
[MESSAGE_TYPE.GET_PROVIDERS]: new GetProvidersHandler({ peerRouting, providers,
|
|
47
|
+
[MESSAGE_TYPE.GET_PROVIDERS]: new GetProvidersHandler({ peerRouting, providers, lan }),
|
|
53
48
|
[MESSAGE_TYPE.PING]: new PingHandler()
|
|
54
49
|
}
|
|
55
50
|
}
|
|
56
51
|
|
|
52
|
+
init (components: Components): void {
|
|
53
|
+
for (const handler of Object.values(this.handlers)) {
|
|
54
|
+
handler.init(components)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
57
58
|
/**
|
|
58
59
|
* Process incoming DHT messages
|
|
59
60
|
*/
|
|
@@ -78,9 +79,9 @@ export class RPC {
|
|
|
78
79
|
/**
|
|
79
80
|
* Handle incoming streams on the dht protocol
|
|
80
81
|
*/
|
|
81
|
-
onIncomingStream (
|
|
82
|
+
onIncomingStream (data: IncomingStreamData) {
|
|
82
83
|
Promise.resolve().then(async () => {
|
|
83
|
-
const { stream, connection } =
|
|
84
|
+
const { stream, connection } = data
|
|
84
85
|
const peerId = connection.remotePeer
|
|
85
86
|
|
|
86
87
|
try {
|
package/src/topology-listener.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { createTopology } from '@libp2p/topology'
|
|
2
2
|
import { CustomEvent, EventEmitter } from '@libp2p/interfaces'
|
|
3
3
|
import { logger } from '@libp2p/logger'
|
|
4
|
-
import type { Registrar } from '@libp2p/interfaces/registrar'
|
|
5
4
|
import type { Logger } from '@libp2p/logger'
|
|
6
5
|
import type { Startable } from '@libp2p/interfaces'
|
|
7
6
|
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
|
7
|
+
import { Components, Initializable } from '@libp2p/interfaces/components'
|
|
8
8
|
|
|
9
|
-
export interface
|
|
10
|
-
registrar: Registrar
|
|
9
|
+
export interface TopologyListenerInit {
|
|
11
10
|
protocol: string
|
|
12
11
|
lan: boolean
|
|
13
12
|
}
|
|
@@ -19,24 +18,27 @@ export interface TopologyListenerEvents {
|
|
|
19
18
|
/**
|
|
20
19
|
* Receives notifications of new peers joining the network that support the DHT protocol
|
|
21
20
|
*/
|
|
22
|
-
export class TopologyListener extends EventEmitter<TopologyListenerEvents> implements Startable {
|
|
21
|
+
export class TopologyListener extends EventEmitter<TopologyListenerEvents> implements Startable, Initializable {
|
|
23
22
|
private readonly log: Logger
|
|
24
|
-
private
|
|
23
|
+
private components: Components = new Components()
|
|
25
24
|
private readonly protocol: string
|
|
26
25
|
private running: boolean
|
|
27
26
|
private registrarId?: string
|
|
28
27
|
|
|
29
|
-
constructor (
|
|
28
|
+
constructor (init: TopologyListenerInit) {
|
|
30
29
|
super()
|
|
31
30
|
|
|
32
|
-
const {
|
|
31
|
+
const { protocol, lan } = init
|
|
33
32
|
|
|
34
33
|
this.log = logger(`libp2p:kad-dht:topology-listener:${lan ? 'lan' : 'wan'}`)
|
|
35
34
|
this.running = false
|
|
36
|
-
this.registrar = registrar
|
|
37
35
|
this.protocol = protocol
|
|
38
36
|
}
|
|
39
37
|
|
|
38
|
+
init (components: Components): void {
|
|
39
|
+
this.components = components
|
|
40
|
+
}
|
|
41
|
+
|
|
40
42
|
isStarted () {
|
|
41
43
|
return this.running
|
|
42
44
|
}
|
|
@@ -60,7 +62,7 @@ export class TopologyListener extends EventEmitter<TopologyListenerEvents> imple
|
|
|
60
62
|
}))
|
|
61
63
|
}
|
|
62
64
|
})
|
|
63
|
-
this.registrarId = await this.
|
|
65
|
+
this.registrarId = await this.components.getRegistrar().register(this.protocol, topology)
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
/**
|
|
@@ -71,7 +73,7 @@ export class TopologyListener extends EventEmitter<TopologyListenerEvents> imple
|
|
|
71
73
|
|
|
72
74
|
// unregister protocol and handlers
|
|
73
75
|
if (this.registrarId != null) {
|
|
74
|
-
this.
|
|
76
|
+
this.components.getRegistrar().unregister(this.registrarId)
|
|
75
77
|
this.registrarId = undefined
|
|
76
78
|
}
|
|
77
79
|
}
|
package/src/utils.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
|
5
5
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
|
6
6
|
import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
|
|
7
7
|
import isPrivateIp from 'private-ip'
|
|
8
|
-
import type {
|
|
8
|
+
import type { PeerInfo } from '@libp2p/interfaces/peer-info'
|
|
9
9
|
import { peerIdFromBytes } from '@libp2p/peer-id'
|
|
10
10
|
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
|
11
11
|
import { RECORD_KEY_PREFIX } from './constants.js'
|
|
@@ -13,7 +13,7 @@ import { RECORD_KEY_PREFIX } from './constants.js'
|
|
|
13
13
|
// const IPNS_PREFIX = uint8ArrayFromString('/ipns/')
|
|
14
14
|
const PK_PREFIX = uint8ArrayFromString('/pk/')
|
|
15
15
|
|
|
16
|
-
export function removePrivateAddresses (peer:
|
|
16
|
+
export function removePrivateAddresses (peer: PeerInfo): PeerInfo {
|
|
17
17
|
return {
|
|
18
18
|
...peer,
|
|
19
19
|
multiaddrs: peer.multiaddrs.filter(multiaddr => {
|
|
@@ -29,7 +29,7 @@ export function removePrivateAddresses (peer: PeerData): PeerData {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export function removePublicAddresses (peer:
|
|
32
|
+
export function removePublicAddresses (peer: PeerInfo): PeerInfo {
|
|
33
33
|
return {
|
|
34
34
|
...peer,
|
|
35
35
|
multiaddrs: peer.multiaddrs.filter(multiaddr => {
|