@libp2p/kad-dht 11.0.8 → 12.0.0-28587d24f

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 (137) hide show
  1. package/README.md +78 -0
  2. package/dist/index.min.js +20 -20
  3. package/dist/src/constants.d.ts +2 -4
  4. package/dist/src/constants.d.ts.map +1 -1
  5. package/dist/src/constants.js +7 -9
  6. package/dist/src/constants.js.map +1 -1
  7. package/dist/src/content-fetching/index.d.ts +7 -7
  8. package/dist/src/content-fetching/index.d.ts.map +1 -1
  9. package/dist/src/content-fetching/index.js +13 -7
  10. package/dist/src/content-fetching/index.js.map +1 -1
  11. package/dist/src/content-routing/index.d.ts +5 -4
  12. package/dist/src/content-routing/index.d.ts.map +1 -1
  13. package/dist/src/content-routing/index.js +23 -13
  14. package/dist/src/content-routing/index.js.map +1 -1
  15. package/dist/src/index.d.ts +142 -28
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +87 -2
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/src/kad-dht.d.ts +20 -21
  20. package/dist/src/kad-dht.d.ts.map +1 -1
  21. package/dist/src/kad-dht.js +181 -35
  22. package/dist/src/kad-dht.js.map +1 -1
  23. package/dist/src/message/dht.d.ts +35 -35
  24. package/dist/src/message/dht.d.ts.map +1 -1
  25. package/dist/src/message/dht.js +150 -130
  26. package/dist/src/message/dht.js.map +1 -1
  27. package/dist/src/message/utils.d.ts +5 -0
  28. package/dist/src/message/utils.d.ts.map +1 -0
  29. package/dist/src/message/utils.js +20 -0
  30. package/dist/src/message/utils.js.map +1 -0
  31. package/dist/src/network.d.ts +8 -8
  32. package/dist/src/network.d.ts.map +1 -1
  33. package/dist/src/network.js +30 -18
  34. package/dist/src/network.js.map +1 -1
  35. package/dist/src/peer-routing/index.d.ts +6 -6
  36. package/dist/src/peer-routing/index.d.ts.map +1 -1
  37. package/dist/src/peer-routing/index.js +48 -35
  38. package/dist/src/peer-routing/index.js.map +1 -1
  39. package/dist/src/providers.d.ts +7 -0
  40. package/dist/src/providers.d.ts.map +1 -1
  41. package/dist/src/providers.js.map +1 -1
  42. package/dist/src/query/events.d.ts +13 -12
  43. package/dist/src/query/events.d.ts.map +1 -1
  44. package/dist/src/query/events.js +2 -2
  45. package/dist/src/query/events.js.map +1 -1
  46. package/dist/src/query/manager.d.ts +8 -5
  47. package/dist/src/query/manager.d.ts.map +1 -1
  48. package/dist/src/query/manager.js +6 -6
  49. package/dist/src/query/manager.js.map +1 -1
  50. package/dist/src/query/query-path.d.ts +3 -3
  51. package/dist/src/query/query-path.d.ts.map +1 -1
  52. package/dist/src/query-self.d.ts +1 -1
  53. package/dist/src/query-self.d.ts.map +1 -1
  54. package/dist/src/query-self.js +2 -2
  55. package/dist/src/query-self.js.map +1 -1
  56. package/dist/src/routing-table/index.d.ts +5 -6
  57. package/dist/src/routing-table/index.d.ts.map +1 -1
  58. package/dist/src/routing-table/index.js +72 -58
  59. package/dist/src/routing-table/index.js.map +1 -1
  60. package/dist/src/routing-table/refresh.d.ts +1 -1
  61. package/dist/src/routing-table/refresh.d.ts.map +1 -1
  62. package/dist/src/routing-table/refresh.js +2 -2
  63. package/dist/src/routing-table/refresh.js.map +1 -1
  64. package/dist/src/rpc/handlers/add-provider.d.ts +2 -1
  65. package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
  66. package/dist/src/rpc/handlers/add-provider.js +8 -6
  67. package/dist/src/rpc/handlers/add-provider.js.map +1 -1
  68. package/dist/src/rpc/handlers/find-node.d.ts +5 -3
  69. package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
  70. package/dist/src/rpc/handlers/find-node.js +22 -14
  71. package/dist/src/rpc/handlers/find-node.js.map +1 -1
  72. package/dist/src/rpc/handlers/get-providers.d.ts +5 -3
  73. package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
  74. package/dist/src/rpc/handlers/get-providers.js +29 -16
  75. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  76. package/dist/src/rpc/handlers/get-value.d.ts +2 -1
  77. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  78. package/dist/src/rpc/handlers/get-value.js +16 -7
  79. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  80. package/dist/src/rpc/handlers/ping.d.ts +5 -2
  81. package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
  82. package/dist/src/rpc/handlers/ping.js +2 -2
  83. package/dist/src/rpc/handlers/ping.js.map +1 -1
  84. package/dist/src/rpc/handlers/put-value.d.ts +2 -1
  85. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  86. package/dist/src/rpc/handlers/put-value.js +8 -7
  87. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  88. package/dist/src/rpc/index.d.ts +4 -3
  89. package/dist/src/rpc/index.d.ts.map +1 -1
  90. package/dist/src/rpc/index.js +11 -11
  91. package/dist/src/rpc/index.js.map +1 -1
  92. package/dist/src/topology-listener.d.ts +1 -1
  93. package/dist/src/topology-listener.d.ts.map +1 -1
  94. package/dist/src/topology-listener.js +2 -2
  95. package/dist/src/topology-listener.js.map +1 -1
  96. package/dist/src/utils.d.ts +5 -2
  97. package/dist/src/utils.d.ts.map +1 -1
  98. package/dist/src/utils.js +32 -2
  99. package/dist/src/utils.js.map +1 -1
  100. package/package.json +13 -11
  101. package/src/constants.ts +7 -11
  102. package/src/content-fetching/index.ts +21 -14
  103. package/src/content-routing/index.ts +29 -18
  104. package/src/index.ts +148 -32
  105. package/src/kad-dht.ts +225 -56
  106. package/src/message/dht.proto +32 -32
  107. package/src/message/dht.ts +155 -138
  108. package/src/message/utils.ts +25 -0
  109. package/src/network.ts +41 -25
  110. package/src/peer-routing/index.ts +57 -42
  111. package/src/providers.ts +7 -0
  112. package/src/query/events.ts +14 -14
  113. package/src/query/manager.ts +14 -10
  114. package/src/query/query-path.ts +3 -3
  115. package/src/query-self.ts +3 -3
  116. package/src/routing-table/index.ts +86 -64
  117. package/src/routing-table/refresh.ts +4 -4
  118. package/src/rpc/handlers/add-provider.ts +10 -7
  119. package/src/rpc/handlers/find-node.ts +27 -18
  120. package/src/rpc/handlers/get-providers.ts +33 -20
  121. package/src/rpc/handlers/get-value.ts +18 -7
  122. package/src/rpc/handlers/ping.ts +7 -3
  123. package/src/rpc/handlers/put-value.ts +11 -9
  124. package/src/rpc/index.ts +14 -13
  125. package/src/topology-listener.ts +3 -3
  126. package/src/utils.ts +41 -2
  127. package/dist/src/dual-kad-dht.d.ts +0 -69
  128. package/dist/src/dual-kad-dht.d.ts.map +0 -1
  129. package/dist/src/dual-kad-dht.js +0 -304
  130. package/dist/src/dual-kad-dht.js.map +0 -1
  131. package/dist/src/message/index.d.ts +0 -35
  132. package/dist/src/message/index.d.ts.map +0 -1
  133. package/dist/src/message/index.js +0 -92
  134. package/dist/src/message/index.js.map +0 -1
  135. package/dist/typedoc-urls.json +0 -55
  136. package/src/dual-kad-dht.ts +0 -384
  137. package/src/message/index.ts +0 -117
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -1,5 +1,86 @@
1
- import { DefaultDualKadDHT } from './dual-kad-dht.js';
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * This module implements the [libp2p Kademlia spec](https://github.com/libp2p/specs/blob/master/kad-dht/README.md) in TypeScript.
5
+ *
6
+ * The Kademlia DHT allow for several operations such as finding peers, searching for providers of DHT records, etc.
7
+ *
8
+ * @example Using with libp2p
9
+ *
10
+ * ```TypeScript
11
+ * import { kadDHT } from '@libp2p/kad-dht'
12
+ * import { createLibp2p } from 'libp2p'
13
+ * import { peerIdFromString } from '@libp2p/peer-id'
14
+ *
15
+ * const node = await createLibp2p({
16
+ * services: {
17
+ * dht: kadDHT()
18
+ * }
19
+ * })
20
+ *
21
+ * const peerId = peerIdFromString('QmFoo')
22
+ * const peerInfo = await libp2p.peerRouting.findPeer(peerId)
23
+ *
24
+ * console.info(peerInfo) // peer id, multiaddrs
25
+ * ```
26
+ *
27
+ * @example Connecting to the IPFS Amino DHT
28
+ *
29
+ * The [Amino DHT](https://blog.ipfs.tech/2023-09-amino-refactoring/) is a public-good DHT used by IPFS to fetch content, find peers, etc.
30
+ *
31
+ * If you are trying to access content on the public internet, this is the implementation you want.
32
+ *
33
+ * ```TypeScript
34
+ * import { kadDHT, removePrivateAddressesMapper } from '@libp2p/kad-dht'
35
+ * import { createLibp2p } from 'libp2p'
36
+ * import { peerIdFromString } from '@libp2p/peer-id'
37
+ *
38
+ * const node = await createLibp2p({
39
+ * services: {
40
+ * aminoDHT: kadDHT({
41
+ * protocol: '/ipfs/kad/1.0.0',
42
+ * addressFilter: removePrivateAddressesMapper
43
+ * })
44
+ * }
45
+ * })
46
+ *
47
+ * const peerId = peerIdFromString('QmFoo')
48
+ * const peerInfo = await libp2p.peerRouting.findPeer(peerId)
49
+ *
50
+ * console.info(peerInfo) // peer id, multiaddrs
51
+ * ```
52
+ *
53
+ * @example Connecting to a LAN-only DHT
54
+ *
55
+ * This DHT only works with privately dialable peers.
56
+ *
57
+ * This is for use when peers are on the local area network.
58
+ *
59
+ * ```TypeScript
60
+ * import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht'
61
+ * import { createLibp2p } from 'libp2p'
62
+ * import { peerIdFromString } from '@libp2p/peer-id'
63
+ *
64
+ * const node = await createLibp2p({
65
+ * services: {
66
+ * lanDHT: kadDHT({
67
+ * protocol: '/ipfs/lan/kad/1.0.0',
68
+ * addressFilter: removePublicAddressesMapper,
69
+ * clientMode: false
70
+ * })
71
+ * }
72
+ * })
73
+ *
74
+ * const peerId = peerIdFromString('QmFoo')
75
+ * const peerInfo = await libp2p.peerRouting.findPeer(peerId)
76
+ *
77
+ * console.info(peerInfo) // peer id, multiaddrs
78
+ * ```
79
+ */
80
+ import { KadDHT as KadDHTClass } from './kad-dht.js';
81
+ import { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper } from './utils.js';
2
82
  export { Libp2pRecord as Record } from './record/index.js';
83
+ export { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper };
3
84
  /**
4
85
  * The types of events emitted during DHT queries
5
86
  */
@@ -26,7 +107,11 @@ export var MessageType;
26
107
  MessageType[MessageType["FIND_NODE"] = 4] = "FIND_NODE";
27
108
  MessageType[MessageType["PING"] = 5] = "PING";
28
109
  })(MessageType || (MessageType = {}));
110
+ /**
111
+ * Creates a custom DHT implementation, please ensure you pass a `protocol`
112
+ * string as an option.
113
+ */
29
114
  export function kadDHT(init) {
30
- return (components) => new DefaultDualKadDHT(components, init);
115
+ return (components) => new KadDHTClass(components, init);
31
116
  }
32
117
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQrD,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1D;;GAEG;AACH,MAAM,CAAN,IAAY,UASX;AATD,WAAY,UAAU;IACpB,uDAAc,CAAA;IACd,6DAAa,CAAA;IACb,uDAAU,CAAA;IACV,yDAAW,CAAA;IACX,mDAAQ,CAAA;IACR,6CAAK,CAAA;IACL,mDAAQ,CAAA;IACR,qDAAS,CAAA;AACX,CAAC,EATW,UAAU,KAAV,UAAU,QASrB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,uDAAa,CAAA;IACb,uDAAS,CAAA;IACT,6DAAY,CAAA;IACZ,+DAAa,CAAA;IACb,uDAAS,CAAA;IACT,6CAAI,CAAA;AACN,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB;AAuRD,MAAM,UAAU,MAAM,CAAE,IAAiB;IACvC,OAAO,CAAC,UAA4B,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAClF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AAEH,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAQzG,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,CAAA;AAEvF;;GAEG;AACH,MAAM,CAAN,IAAY,UASX;AATD,WAAY,UAAU;IACpB,uDAAc,CAAA;IACd,6DAAa,CAAA;IACb,uDAAU,CAAA;IACV,yDAAW,CAAA;IACX,mDAAQ,CAAA;IACR,6CAAK,CAAA;IACL,mDAAQ,CAAA;IACR,qDAAS,CAAA;AACX,CAAC,EATW,UAAU,KAAV,UAAU,QASrB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,uDAAa,CAAA;IACb,uDAAS,CAAA;IACT,6DAAY,CAAA;IACZ,+DAAa,CAAA;IACb,uDAAS,CAAA;IACT,6CAAI,CAAA;AACN,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB;AAqTD;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAE,IAAgB;IACtC,OAAO,CAAC,UAA4B,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAC5E,CAAC"}
@@ -1,35 +1,28 @@
1
- import { TypedEventEmitter } from '@libp2p/interface';
1
+ import { TypedEventEmitter, contentRoutingSymbol, peerDiscoverySymbol, peerRoutingSymbol } from '@libp2p/interface';
2
2
  import { Network } from './network.js';
3
- import { PeerRouting } from './peer-routing/index.js';
3
+ import { PeerRouting as KADDHTPeerRouting } from './peer-routing/index.js';
4
4
  import { Providers } from './providers.js';
5
5
  import { RoutingTable } from './routing-table/index.js';
6
- import type { KadDHTComponents, KadDHTInit, QueryOptions, KadDHT, QueryEvent } from './index.js';
7
- import type { PeerDiscoveryEvents, PeerId, PeerInfo } from '@libp2p/interface';
6
+ import type { KadDHTComponents, KadDHTInit, KadDHT as KadDHTInterface, QueryEvent } from './index.js';
7
+ import type { ContentRouting, PeerDiscovery, PeerDiscoveryEvents, PeerId, PeerInfo, PeerRouting, RoutingOptions, Startable } from '@libp2p/interface';
8
8
  import type { CID } from 'multiformats/cid';
9
9
  export declare const DEFAULT_MAX_INBOUND_STREAMS = 32;
10
10
  export declare const DEFAULT_MAX_OUTBOUND_STREAMS = 64;
11
- export interface SingleKadDHTInit extends KadDHTInit {
12
- /**
13
- * Whether to start up in lan or wan mode
14
- */
15
- lan?: boolean;
16
- }
17
11
  /**
18
12
  * A DHT implementation modelled after Kademlia with S/Kademlia modifications.
19
13
  * Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.
20
14
  */
21
- export declare class DefaultKadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements KadDHT {
15
+ export declare class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements KadDHTInterface, Startable {
22
16
  protocol: string;
23
17
  routingTable: RoutingTable;
24
18
  providers: Providers;
25
19
  network: Network;
26
- peerRouting: PeerRouting;
20
+ peerRouting: KADDHTPeerRouting;
27
21
  readonly components: KadDHTComponents;
28
22
  private readonly log;
29
23
  private running;
30
24
  private readonly kBucketSize;
31
25
  private clientMode;
32
- private readonly lan;
33
26
  private readonly validators;
34
27
  private readonly selectors;
35
28
  private readonly queryManager;
@@ -41,10 +34,16 @@ export declare class DefaultKadDHT extends TypedEventEmitter<PeerDiscoveryEvents
41
34
  private readonly querySelf;
42
35
  private readonly maxInboundStreams;
43
36
  private readonly maxOutboundStreams;
37
+ private readonly dhtContentRouting;
38
+ private readonly dhtPeerRouting;
39
+ private readonly peerInfoMapper;
44
40
  /**
45
41
  * Create a new KadDHT
46
42
  */
47
- constructor(components: KadDHTComponents, init: SingleKadDHTInit);
43
+ constructor(components: KadDHTComponents, init: KadDHTInit);
44
+ get [contentRoutingSymbol](): ContentRouting;
45
+ get [peerRoutingSymbol](): PeerRouting;
46
+ get [peerDiscoverySymbol](): PeerDiscovery;
48
47
  onPeerConnect(peerData: PeerInfo): Promise<void>;
49
48
  /**
50
49
  * Is this DHT running.
@@ -53,7 +52,7 @@ export declare class DefaultKadDHT extends TypedEventEmitter<PeerDiscoveryEvents
53
52
  /**
54
53
  * If 'server' this node will respond to DHT queries, if 'client' this node will not
55
54
  */
56
- getMode(): Promise<'client' | 'server'>;
55
+ getMode(): 'client' | 'server';
57
56
  /**
58
57
  * If 'server' this node will respond to DHT queries, if 'client' this node will not
59
58
  */
@@ -70,27 +69,27 @@ export declare class DefaultKadDHT extends TypedEventEmitter<PeerDiscoveryEvents
70
69
  /**
71
70
  * Store the given key/value pair in the DHT
72
71
  */
73
- put(key: Uint8Array, value: Uint8Array, options?: QueryOptions): AsyncGenerator<any, void, undefined>;
72
+ put(key: Uint8Array, value: Uint8Array, options?: RoutingOptions): AsyncGenerator<any, void, undefined>;
74
73
  /**
75
74
  * Get the value that corresponds to the passed key
76
75
  */
77
- get(key: Uint8Array, options?: QueryOptions): AsyncGenerator<QueryEvent, void, undefined>;
76
+ get(key: Uint8Array, options?: RoutingOptions): AsyncGenerator<QueryEvent, void, undefined>;
78
77
  /**
79
78
  * Announce to the network that we can provide given key's value
80
79
  */
81
- provide(key: CID, options?: QueryOptions): AsyncGenerator<QueryEvent, void, undefined>;
80
+ provide(key: CID, options?: RoutingOptions): AsyncGenerator<QueryEvent, void, undefined>;
82
81
  /**
83
82
  * Search the dht for providers of the given CID
84
83
  */
85
- findProviders(key: CID, options?: QueryOptions): AsyncGenerator<QueryEvent, any, unknown>;
84
+ findProviders(key: CID, options?: RoutingOptions): AsyncGenerator<QueryEvent, any, unknown>;
86
85
  /**
87
86
  * Search for a peer with the given ID
88
87
  */
89
- findPeer(id: PeerId, options?: QueryOptions): AsyncGenerator<QueryEvent, any, unknown>;
88
+ findPeer(id: PeerId, options?: RoutingOptions): AsyncGenerator<QueryEvent, any, unknown>;
90
89
  /**
91
90
  * Kademlia 'node lookup' operation
92
91
  */
93
- getClosestPeers(key: Uint8Array, options?: QueryOptions): AsyncGenerator<QueryEvent, any, unknown>;
92
+ getClosestPeers(key: Uint8Array, options?: RoutingOptions): AsyncGenerator<QueryEvent, any, unknown>;
94
93
  refreshRoutingTable(): Promise<void>;
95
94
  }
96
95
  //# sourceMappingURL=kad-dht.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kad-dht.d.ts","sourceRoot":"","sources":["../../src/kad-dht.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAKlE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAQvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAyB,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvH,OAAO,KAAK,EAAU,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAC7C,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,iBAAiB,CAAC,mBAAmB,CAAE,YAAW,MAAM;IAClF,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IAE/B,SAAgB,UAAU,EAAE,gBAAgB,CAAA;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAE3C;;OAEG;gBACU,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB;IAsJ3D,aAAa,CAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBvD;;OAEG;IACH,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,OAAO,IAAK,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAI9C;;OAEG;IACG,OAAO,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxD;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAmB7B;;;OAGG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAe5B;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;IAIlH;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;IAMtG;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;IAInG;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC;IAMtG;;OAEG;IACK,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC;IAInG;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC;IAIzG,mBAAmB,IAAK,OAAO,CAAC,IAAI,CAAC;CAG5C"}
1
+ {"version":3,"file":"kad-dht.d.ts","sourceRoot":"","sources":["../../src/kad-dht.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
- import { CustomEvent, TypedEventEmitter } from '@libp2p/interface';
1
+ import { CodeError, CustomEvent, TypedEventEmitter, contentRoutingSymbol, peerDiscoverySymbol, peerRoutingSymbol } from '@libp2p/interface';
2
+ import drain from 'it-drain';
3
+ import map from 'it-map';
4
+ import parallel from 'it-parallel';
2
5
  import pDefer from 'p-defer';
3
- import { PROTOCOL_DHT, PROTOCOL_PREFIX, LAN_PREFIX } from './constants.js';
6
+ import { PROTOCOL } from './constants.js';
4
7
  import { ContentFetching } from './content-fetching/index.js';
5
- import { ContentRouting } from './content-routing/index.js';
8
+ import { ContentRouting as KADDHTContentRouting } from './content-routing/index.js';
6
9
  import { Network } from './network.js';
7
- import { PeerRouting } from './peer-routing/index.js';
10
+ import { PeerRouting as KADDHTPeerRouting } from './peer-routing/index.js';
8
11
  import { Providers } from './providers.js';
9
12
  import { QueryManager } from './query/manager.js';
10
13
  import { QuerySelf } from './query-self.js';
@@ -14,14 +17,125 @@ import { RoutingTable } from './routing-table/index.js';
14
17
  import { RoutingTableRefresh } from './routing-table/refresh.js';
15
18
  import { RPC } from './rpc/index.js';
16
19
  import { TopologyListener } from './topology-listener.js';
17
- import { removePrivateAddresses, removePublicAddresses } from './utils.js';
20
+ import { multiaddrIsPublic, removePrivateAddressesMapper } from './utils.js';
21
+ async function* ensurePeerInfoHasMultiaddrs(source, peerRouting, log, options = {}) {
22
+ yield* map(source, prov => {
23
+ return async () => {
24
+ if (prov.multiaddrs.length > 0) {
25
+ return prov;
26
+ }
27
+ try {
28
+ return await peerRouting.findPeer(prov.id, {
29
+ ...options,
30
+ useCache: false
31
+ });
32
+ }
33
+ catch (err) {
34
+ log.error('could not find peer', err);
35
+ }
36
+ };
37
+ });
38
+ }
39
+ /**
40
+ * Wrapper class to convert events into returned values
41
+ */
42
+ class DHTContentRouting {
43
+ dht;
44
+ peerInfoMapper;
45
+ peerRouting;
46
+ log;
47
+ constructor(dht, peerInfoMapper, peerRouting, log) {
48
+ this.dht = dht;
49
+ this.peerInfoMapper = peerInfoMapper;
50
+ this.peerRouting = peerRouting;
51
+ this.log = log;
52
+ }
53
+ async provide(cid, options = {}) {
54
+ await drain(this.dht.provide(cid, options));
55
+ }
56
+ async *findProviders(cid, options = {}) {
57
+ const self = this;
58
+ const source = async function* () {
59
+ for await (const event of self.dht.findProviders(cid, options)) {
60
+ if (event.name === 'PROVIDER') {
61
+ yield* event.providers;
62
+ }
63
+ }
64
+ };
65
+ for await (let peerInfo of parallel(ensurePeerInfoHasMultiaddrs(source(), this.peerRouting, this.log, options))) {
66
+ if (peerInfo == null) {
67
+ continue;
68
+ }
69
+ peerInfo = this.peerInfoMapper(peerInfo);
70
+ if (peerInfo.multiaddrs.length === 0) {
71
+ continue;
72
+ }
73
+ yield peerInfo;
74
+ }
75
+ }
76
+ async put(key, value, options) {
77
+ await drain(this.dht.put(key, value, options));
78
+ }
79
+ async get(key, options) {
80
+ for await (const event of this.dht.get(key, options)) {
81
+ if (event.name === 'VALUE') {
82
+ return event.value;
83
+ }
84
+ }
85
+ throw new CodeError('Not found', 'ERR_NOT_FOUND');
86
+ }
87
+ }
88
+ /**
89
+ * Wrapper class to convert events into returned values
90
+ */
91
+ class DHTPeerRouting {
92
+ dht;
93
+ peerInfoMapper;
94
+ log;
95
+ constructor(dht, peerInfoMapper, log) {
96
+ this.dht = dht;
97
+ this.peerInfoMapper = peerInfoMapper;
98
+ this.log = log;
99
+ }
100
+ async findPeer(peerId, options = {}) {
101
+ for await (const event of this.dht.findPeer(peerId, options)) {
102
+ if (event.name === 'FINAL_PEER') {
103
+ const peer = this.peerInfoMapper(event.peer);
104
+ if (peer.multiaddrs.length > 0) {
105
+ return event.peer;
106
+ }
107
+ }
108
+ }
109
+ throw new CodeError('Not found', 'ERR_NOT_FOUND');
110
+ }
111
+ async *getClosestPeers(key, options = {}) {
112
+ const self = this;
113
+ const source = async function* () {
114
+ for await (const event of self.dht.getClosestPeers(key, options)) {
115
+ if (event.name === 'FINAL_PEER') {
116
+ yield event.peer;
117
+ }
118
+ }
119
+ };
120
+ for await (let peerInfo of parallel(ensurePeerInfoHasMultiaddrs(source(), this, this.log, options))) {
121
+ if (peerInfo == null) {
122
+ continue;
123
+ }
124
+ peerInfo = this.peerInfoMapper(peerInfo);
125
+ if (peerInfo.multiaddrs.length === 0) {
126
+ continue;
127
+ }
128
+ yield peerInfo;
129
+ }
130
+ }
131
+ }
18
132
  export const DEFAULT_MAX_INBOUND_STREAMS = 32;
19
133
  export const DEFAULT_MAX_OUTBOUND_STREAMS = 64;
20
134
  /**
21
135
  * A DHT implementation modelled after Kademlia with S/Kademlia modifications.
22
136
  * Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.
23
137
  */
24
- export class DefaultKadDHT extends TypedEventEmitter {
138
+ export class KadDHT extends TypedEventEmitter {
25
139
  protocol;
26
140
  routingTable;
27
141
  providers;
@@ -32,7 +146,6 @@ export class DefaultKadDHT extends TypedEventEmitter {
32
146
  running;
33
147
  kBucketSize;
34
148
  clientMode;
35
- lan;
36
149
  validators;
37
150
  selectors;
38
151
  queryManager;
@@ -44,27 +157,31 @@ export class DefaultKadDHT extends TypedEventEmitter {
44
157
  querySelf;
45
158
  maxInboundStreams;
46
159
  maxOutboundStreams;
160
+ dhtContentRouting;
161
+ dhtPeerRouting;
162
+ peerInfoMapper;
47
163
  /**
48
164
  * Create a new KadDHT
49
165
  */
50
166
  constructor(components, init) {
51
167
  super();
52
- const { kBucketSize, clientMode, validators, selectors, querySelfInterval, lan, protocolPrefix, pingTimeout, pingConcurrency, maxInboundStreams, maxOutboundStreams, providers: providersInit } = init;
168
+ const { kBucketSize, clientMode, validators, selectors, querySelfInterval, protocol, logPrefix, pingTimeout, pingConcurrency, maxInboundStreams, maxOutboundStreams, providers: providersInit } = init;
169
+ const loggingPrefix = logPrefix ?? 'libp2p:kad-dht';
53
170
  this.running = false;
54
171
  this.components = components;
55
- this.lan = Boolean(lan);
56
- this.log = components.logger.forComponent(`libp2p:kad-dht:${lan === true ? 'lan' : 'wan'}`);
57
- this.protocol = `${protocolPrefix ?? PROTOCOL_PREFIX}${lan === true ? LAN_PREFIX : ''}${PROTOCOL_DHT}`;
172
+ this.log = components.logger.forComponent(loggingPrefix);
173
+ this.protocol = protocol ?? PROTOCOL;
58
174
  this.kBucketSize = kBucketSize ?? 20;
59
175
  this.clientMode = clientMode ?? true;
60
176
  this.maxInboundStreams = maxInboundStreams ?? DEFAULT_MAX_INBOUND_STREAMS;
61
177
  this.maxOutboundStreams = maxOutboundStreams ?? DEFAULT_MAX_OUTBOUND_STREAMS;
178
+ this.peerInfoMapper = init.peerInfoMapper ?? removePrivateAddressesMapper;
62
179
  this.routingTable = new RoutingTable(components, {
63
180
  kBucketSize,
64
- lan: this.lan,
65
181
  pingTimeout,
66
182
  pingConcurrency,
67
- protocol: this.protocol
183
+ protocol: this.protocol,
184
+ logPrefix: loggingPrefix
68
185
  });
69
186
  this.providers = new Providers(components, providersInit ?? {});
70
187
  this.validators = {
@@ -77,7 +194,7 @@ export class DefaultKadDHT extends TypedEventEmitter {
77
194
  };
78
195
  this.network = new Network(components, {
79
196
  protocol: this.protocol,
80
- lan: this.lan
197
+ logPrefix: loggingPrefix
81
198
  });
82
199
  // all queries should wait for the initial query-self query to run so we have
83
200
  // some peers and don't force consumers to use arbitrary timeouts
@@ -90,17 +207,17 @@ export class DefaultKadDHT extends TypedEventEmitter {
90
207
  this.queryManager = new QueryManager(components, {
91
208
  // Number of disjoint query paths to use - This is set to `kBucketSize/2` per the S/Kademlia paper
92
209
  disjointPaths: Math.ceil(this.kBucketSize / 2),
93
- lan,
210
+ logPrefix: loggingPrefix,
94
211
  initialQuerySelfHasRun,
95
212
  routingTable: this.routingTable
96
213
  });
97
214
  // DHT components
98
- this.peerRouting = new PeerRouting(components, {
215
+ this.peerRouting = new KADDHTPeerRouting(components, {
99
216
  routingTable: this.routingTable,
100
217
  network: this.network,
101
218
  validators: this.validators,
102
219
  queryManager: this.queryManager,
103
- lan: this.lan
220
+ logPrefix: loggingPrefix
104
221
  });
105
222
  this.contentFetching = new ContentFetching(components, {
106
223
  validators: this.validators,
@@ -108,37 +225,38 @@ export class DefaultKadDHT extends TypedEventEmitter {
108
225
  peerRouting: this.peerRouting,
109
226
  queryManager: this.queryManager,
110
227
  network: this.network,
111
- lan: this.lan
228
+ logPrefix: loggingPrefix
112
229
  });
113
- this.contentRouting = new ContentRouting(components, {
230
+ this.contentRouting = new KADDHTContentRouting(components, {
114
231
  network: this.network,
115
232
  peerRouting: this.peerRouting,
116
233
  queryManager: this.queryManager,
117
234
  routingTable: this.routingTable,
118
235
  providers: this.providers,
119
- lan: this.lan
236
+ logPrefix: loggingPrefix
120
237
  });
121
238
  this.routingTableRefresh = new RoutingTableRefresh(components, {
122
239
  peerRouting: this.peerRouting,
123
240
  routingTable: this.routingTable,
124
- lan: this.lan
241
+ logPrefix: loggingPrefix
125
242
  });
126
243
  this.rpc = new RPC(components, {
127
244
  routingTable: this.routingTable,
128
245
  providers: this.providers,
129
246
  peerRouting: this.peerRouting,
130
247
  validators: this.validators,
131
- lan: this.lan
248
+ logPrefix: loggingPrefix,
249
+ peerInfoMapper: this.peerInfoMapper
132
250
  });
133
251
  this.topologyListener = new TopologyListener(components, {
134
252
  protocol: this.protocol,
135
- lan: this.lan
253
+ logPrefix: loggingPrefix
136
254
  });
137
255
  this.querySelf = new QuerySelf(components, {
138
256
  peerRouting: this.peerRouting,
139
257
  interval: querySelfInterval,
140
258
  initialInterval: init.initialQuerySelfInterval,
141
- lan: this.lan,
259
+ logPrefix: loggingPrefix,
142
260
  initialQuerySelfHasRun,
143
261
  routingTable: this.routingTable
144
262
  });
@@ -167,17 +285,45 @@ export class DefaultKadDHT extends TypedEventEmitter {
167
285
  this.log.error('could not add %p to routing table', peerId, err);
168
286
  });
169
287
  });
288
+ this.dhtPeerRouting = new DHTPeerRouting(this, this.peerInfoMapper, this.log);
289
+ this.dhtContentRouting = new DHTContentRouting(this, this.peerInfoMapper, this.dhtPeerRouting, this.log);
290
+ // if client mode has not been explicitly specified, auto-switch to server
291
+ // mode when the node's peer data is updated with publicly dialable
292
+ // addresses
293
+ if (init.clientMode == null) {
294
+ components.events.addEventListener('self:peer:update', (evt) => {
295
+ this.log('received update of self-peer info');
296
+ void Promise.resolve().then(async () => {
297
+ const hasPublicAddress = evt.detail.peer.addresses
298
+ .some(({ multiaddr }) => multiaddrIsPublic(multiaddr));
299
+ const mode = this.getMode();
300
+ if (hasPublicAddress && mode === 'client') {
301
+ await this.setMode('server');
302
+ }
303
+ else if (mode === 'server' && !hasPublicAddress) {
304
+ await this.setMode('client');
305
+ }
306
+ })
307
+ .catch(err => {
308
+ this.log.error('error setting dht server mode', err);
309
+ });
310
+ });
311
+ }
312
+ }
313
+ get [contentRoutingSymbol]() {
314
+ return this.dhtContentRouting;
315
+ }
316
+ get [peerRoutingSymbol]() {
317
+ return this.dhtPeerRouting;
318
+ }
319
+ get [peerDiscoverySymbol]() {
320
+ return this;
170
321
  }
171
322
  async onPeerConnect(peerData) {
172
323
  this.log('peer %p connected', peerData.id);
173
- if (this.lan) {
174
- peerData = removePublicAddresses(peerData);
175
- }
176
- else {
177
- peerData = removePrivateAddresses(peerData);
178
- }
324
+ peerData = this.peerInfoMapper(peerData);
179
325
  if (peerData.multiaddrs.length === 0) {
180
- this.log('ignoring %p as they do not have any %s addresses in %s', peerData.id, this.lan ? 'private' : 'public', peerData.multiaddrs.map(addr => addr.toString()));
326
+ this.log('ignoring %p as there were no valid addresses in %s after filtering', peerData.id, peerData.multiaddrs.map(addr => addr.toString()));
181
327
  return;
182
328
  }
183
329
  try {
@@ -196,7 +342,7 @@ export class DefaultKadDHT extends TypedEventEmitter {
196
342
  /**
197
343
  * If 'server' this node will respond to DHT queries, if 'client' this node will not
198
344
  */
199
- async getMode() {
345
+ getMode() {
200
346
  return this.clientMode ? 'client' : 'server';
201
347
  }
202
348
  /**
@@ -224,15 +370,15 @@ export class DefaultKadDHT extends TypedEventEmitter {
224
370
  this.running = true;
225
371
  // Only respond to queries when not in client mode
226
372
  await this.setMode(this.clientMode ? 'client' : 'server');
373
+ this.querySelf.start();
227
374
  await Promise.all([
228
375
  this.providers.start(),
229
376
  this.queryManager.start(),
230
377
  this.network.start(),
231
378
  this.routingTable.start(),
232
- this.topologyListener.start()
379
+ this.topologyListener.start(),
380
+ this.routingTableRefresh.start()
233
381
  ]);
234
- this.querySelf.start();
235
- await this.routingTableRefresh.start();
236
382
  }
237
383
  /**
238
384
  * Stop accepting incoming connections and sending outgoing
@@ -1 +1 @@
1
- {"version":3,"file":"kad-dht.js","sourceRoot":"","sources":["../../src/kad-dht.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kad-dht.js","sourceRoot":"","sources":["../../src/kad-dht.ts"],"names":[],"mappings":"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"}