@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.
- package/README.md +78 -0
- package/dist/index.min.js +20 -20
- package/dist/src/constants.d.ts +2 -4
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +7 -9
- package/dist/src/constants.js.map +1 -1
- package/dist/src/content-fetching/index.d.ts +7 -7
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +13 -7
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts +5 -4
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +23 -13
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/index.d.ts +142 -28
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +87 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts +20 -21
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +181 -35
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/message/dht.d.ts +35 -35
- package/dist/src/message/dht.d.ts.map +1 -1
- package/dist/src/message/dht.js +150 -130
- package/dist/src/message/dht.js.map +1 -1
- package/dist/src/message/utils.d.ts +5 -0
- package/dist/src/message/utils.d.ts.map +1 -0
- package/dist/src/message/utils.js +20 -0
- package/dist/src/message/utils.js.map +1 -0
- package/dist/src/network.d.ts +8 -8
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +30 -18
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts +6 -6
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +48 -35
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +7 -0
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/events.d.ts +13 -12
- package/dist/src/query/events.d.ts.map +1 -1
- package/dist/src/query/events.js +2 -2
- package/dist/src/query/events.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 +6 -6
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query/query-path.d.ts +3 -3
- package/dist/src/query/query-path.d.ts.map +1 -1
- package/dist/src/query-self.d.ts +1 -1
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +2 -2
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/routing-table/index.d.ts +5 -6
- package/dist/src/routing-table/index.d.ts.map +1 -1
- package/dist/src/routing-table/index.js +72 -58
- package/dist/src/routing-table/index.js.map +1 -1
- package/dist/src/routing-table/refresh.d.ts +1 -1
- package/dist/src/routing-table/refresh.d.ts.map +1 -1
- package/dist/src/routing-table/refresh.js +2 -2
- package/dist/src/routing-table/refresh.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +2 -1
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/add-provider.js +8 -6
- 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 +22 -14
- package/dist/src/rpc/handlers/find-node.js.map +1 -1
- package/dist/src/rpc/handlers/get-providers.d.ts +5 -3
- package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +29 -16
- package/dist/src/rpc/handlers/get-providers.js.map +1 -1
- package/dist/src/rpc/handlers/get-value.d.ts +2 -1
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-value.js +16 -7
- package/dist/src/rpc/handlers/get-value.js.map +1 -1
- package/dist/src/rpc/handlers/ping.d.ts +5 -2
- package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
- package/dist/src/rpc/handlers/ping.js +2 -2
- package/dist/src/rpc/handlers/ping.js.map +1 -1
- package/dist/src/rpc/handlers/put-value.d.ts +2 -1
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/put-value.js +8 -7
- package/dist/src/rpc/handlers/put-value.js.map +1 -1
- package/dist/src/rpc/index.d.ts +4 -3
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +11 -11
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/topology-listener.d.ts +1 -1
- package/dist/src/topology-listener.d.ts.map +1 -1
- package/dist/src/topology-listener.js +2 -2
- package/dist/src/topology-listener.js.map +1 -1
- package/dist/src/utils.d.ts +5 -2
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +32 -2
- package/dist/src/utils.js.map +1 -1
- package/package.json +13 -11
- package/src/constants.ts +7 -11
- package/src/content-fetching/index.ts +21 -14
- package/src/content-routing/index.ts +29 -18
- package/src/index.ts +148 -32
- package/src/kad-dht.ts +225 -56
- package/src/message/dht.proto +32 -32
- package/src/message/dht.ts +155 -138
- package/src/message/utils.ts +25 -0
- package/src/network.ts +41 -25
- package/src/peer-routing/index.ts +57 -42
- package/src/providers.ts +7 -0
- package/src/query/events.ts +14 -14
- package/src/query/manager.ts +14 -10
- package/src/query/query-path.ts +3 -3
- package/src/query-self.ts +3 -3
- package/src/routing-table/index.ts +86 -64
- package/src/routing-table/refresh.ts +4 -4
- package/src/rpc/handlers/add-provider.ts +10 -7
- package/src/rpc/handlers/find-node.ts +27 -18
- package/src/rpc/handlers/get-providers.ts +33 -20
- package/src/rpc/handlers/get-value.ts +18 -7
- package/src/rpc/handlers/ping.ts +7 -3
- package/src/rpc/handlers/put-value.ts +11 -9
- package/src/rpc/index.ts +14 -13
- package/src/topology-listener.ts +3 -3
- package/src/utils.ts +41 -2
- package/dist/src/dual-kad-dht.d.ts +0 -69
- package/dist/src/dual-kad-dht.d.ts.map +0 -1
- package/dist/src/dual-kad-dht.js +0 -304
- package/dist/src/dual-kad-dht.js.map +0 -1
- package/dist/src/message/index.d.ts +0 -35
- package/dist/src/message/index.d.ts.map +0 -1
- package/dist/src/message/index.js +0 -92
- package/dist/src/message/index.js.map +0 -1
- package/dist/typedoc-urls.json +0 -55
- package/src/dual-kad-dht.ts +0 -384
- package/src/message/index.ts +0 -117
package/dist/src/constants.d.ts
CHANGED
|
@@ -2,9 +2,7 @@ export declare const second = 1000;
|
|
|
2
2
|
export declare const minute: number;
|
|
3
3
|
export declare const hour: number;
|
|
4
4
|
export declare const MAX_RECORD_AGE: number;
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const PROTOCOL_PREFIX = "/ipfs";
|
|
7
|
-
export declare const PROTOCOL_DHT = "/kad/1.0.0";
|
|
5
|
+
export declare const PROTOCOL = "/ipfs/kad/1.0.0";
|
|
8
6
|
export declare const RECORD_KEY_PREFIX = "/dht/record";
|
|
9
7
|
export declare const PROVIDER_KEY_PREFIX = "/dht/provider";
|
|
10
8
|
export declare const PROVIDERS_LRU_CACHE_SIZE = 256;
|
|
@@ -15,7 +13,7 @@ export declare const GET_MANY_RECORD_COUNT = 16;
|
|
|
15
13
|
export declare const K = 20;
|
|
16
14
|
export declare const ALPHA = 3;
|
|
17
15
|
export declare const QUERY_SELF_INTERVAL: number;
|
|
18
|
-
export declare const QUERY_SELF_INITIAL_INTERVAL
|
|
16
|
+
export declare const QUERY_SELF_INITIAL_INTERVAL = 1000;
|
|
19
17
|
export declare const QUERY_SELF_TIMEOUT: number;
|
|
20
18
|
export declare const TABLE_REFRESH_INTERVAL: number;
|
|
21
19
|
export declare const TABLE_REFRESH_QUERY_TIMEOUT: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,MAAM,OAAO,CAAA;AAC1B,eAAO,MAAM,MAAM,QAAc,CAAA;AACjC,eAAO,MAAM,IAAI,QAAc,CAAA;AAE/B,eAAO,MAAM,cAAc,QAAY,CAAA;AAEvC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,MAAM,OAAO,CAAA;AAC1B,eAAO,MAAM,MAAM,QAAc,CAAA;AACjC,eAAO,MAAM,IAAI,QAAc,CAAA;AAE/B,eAAO,MAAM,cAAc,QAAY,CAAA;AAEvC,eAAO,MAAM,QAAQ,oBAAoB,CAAA;AAEzC,eAAO,MAAM,iBAAiB,gBAAgB,CAAA;AAE9C,eAAO,MAAM,mBAAmB,kBAAkB,CAAA;AAElD,eAAO,MAAM,wBAAwB,MAAM,CAAA;AAE3C,eAAO,MAAM,kBAAkB,QAAY,CAAA;AAE3C,eAAO,MAAM,0BAA0B,QAAO,CAAA;AAE9C,eAAO,MAAM,oBAAoB,QAAc,CAAA;AAG/C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAGvC,eAAO,MAAM,CAAC,KAAK,CAAA;AAGnB,eAAO,MAAM,KAAK,IAAI,CAAA;AAGtB,eAAO,MAAM,mBAAmB,QAAa,CAAA;AAG7C,eAAO,MAAM,2BAA2B,OAAS,CAAA;AAGjD,eAAO,MAAM,kBAAkB,QAAa,CAAA;AAG5C,eAAO,MAAM,sBAAsB,QAAa,CAAA;AAGhD,eAAO,MAAM,2BAA2B,QAAc,CAAA;AAGtD,eAAO,MAAM,qBAAqB,QAAc,CAAA"}
|
package/dist/src/constants.js
CHANGED
|
@@ -8,9 +8,7 @@ export const second = 1000;
|
|
|
8
8
|
export const minute = 60 * second;
|
|
9
9
|
export const hour = 60 * minute;
|
|
10
10
|
export const MAX_RECORD_AGE = 36 * hour;
|
|
11
|
-
export const
|
|
12
|
-
export const PROTOCOL_PREFIX = '/ipfs';
|
|
13
|
-
export const PROTOCOL_DHT = '/kad/1.0.0';
|
|
11
|
+
export const PROTOCOL = '/ipfs/kad/1.0.0';
|
|
14
12
|
export const RECORD_KEY_PREFIX = '/dht/record';
|
|
15
13
|
export const PROVIDER_KEY_PREFIX = '/dht/provider';
|
|
16
14
|
export const PROVIDERS_LRU_CACHE_SIZE = 256;
|
|
@@ -24,15 +22,15 @@ export const K = 20;
|
|
|
24
22
|
// Alpha is the concurrency for asynchronous requests
|
|
25
23
|
export const ALPHA = 3;
|
|
26
24
|
// How often we look for our closest DHT neighbours
|
|
27
|
-
export const QUERY_SELF_INTERVAL =
|
|
25
|
+
export const QUERY_SELF_INTERVAL = 5 * minute;
|
|
28
26
|
// How often we look for the first set of our closest DHT neighbours
|
|
29
|
-
export const QUERY_SELF_INITIAL_INTERVAL =
|
|
27
|
+
export const QUERY_SELF_INITIAL_INTERVAL = second;
|
|
30
28
|
// How long to look for our closest DHT neighbours for
|
|
31
|
-
export const QUERY_SELF_TIMEOUT =
|
|
29
|
+
export const QUERY_SELF_TIMEOUT = 5 * second;
|
|
32
30
|
// How often we try to find new peers
|
|
33
|
-
export const TABLE_REFRESH_INTERVAL =
|
|
31
|
+
export const TABLE_REFRESH_INTERVAL = 5 * minute;
|
|
34
32
|
// How how long to look for new peers for
|
|
35
|
-
export const TABLE_REFRESH_QUERY_TIMEOUT =
|
|
33
|
+
export const TABLE_REFRESH_QUERY_TIMEOUT = 30 * second;
|
|
36
34
|
// When a timeout is not specified, run a query for this long
|
|
37
|
-
export const DEFAULT_QUERY_TIMEOUT =
|
|
35
|
+
export const DEFAULT_QUERY_TIMEOUT = 30 * second;
|
|
38
36
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,sFAAsF;AACtF,0BAA0B;AAC1B,+EAA+E;AAC/E,oFAAoF;AACpF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAA;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvC,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,sFAAsF;AACtF,0BAA0B;AAC1B,+EAA+E;AAC/E,oFAAoF;AACpF,0EAA0E;AAE1E,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAA;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAA;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,iBAAiB,CAAA;AAEzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAA;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAA;AAElD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAA;AAE3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAA;AAE9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/C,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEvC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;AAEnB,qDAAqD;AACrD,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;AAEtB,mDAAmD;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,MAAM,CAAA;AAE7C,oEAAoE;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAA;AAEjD,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAA;AAE5C,qCAAqC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAA;AAEhD,yCAAyC;AACzC,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,MAAM,CAAA;AAEtD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,MAAM,CAAA"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Libp2pRecord } from '../record/index.js';
|
|
2
|
-
import type { KadDHTComponents, Validators, Selectors, ValueEvent,
|
|
2
|
+
import type { KadDHTComponents, Validators, Selectors, ValueEvent, QueryEvent } from '../index.js';
|
|
3
3
|
import type { Network } from '../network.js';
|
|
4
4
|
import type { PeerRouting } from '../peer-routing/index.js';
|
|
5
5
|
import type { QueryManager } from '../query/manager.js';
|
|
6
|
-
import type {
|
|
6
|
+
import type { RoutingOptions } from '@libp2p/interface';
|
|
7
7
|
export interface ContentFetchingInit {
|
|
8
8
|
validators: Validators;
|
|
9
9
|
selectors: Selectors;
|
|
10
10
|
peerRouting: PeerRouting;
|
|
11
11
|
queryManager: QueryManager;
|
|
12
12
|
network: Network;
|
|
13
|
-
|
|
13
|
+
logPrefix: string;
|
|
14
14
|
}
|
|
15
15
|
export declare class ContentFetching {
|
|
16
16
|
private readonly log;
|
|
@@ -30,18 +30,18 @@ export declare class ContentFetching {
|
|
|
30
30
|
/**
|
|
31
31
|
* Send the best record found to any peers that have an out of date record
|
|
32
32
|
*/
|
|
33
|
-
sendCorrectionRecord(key: Uint8Array, vals: ValueEvent[], best: Uint8Array, options?:
|
|
33
|
+
sendCorrectionRecord(key: Uint8Array, vals: ValueEvent[], best: Uint8Array, options?: RoutingOptions): AsyncGenerator<QueryEvent>;
|
|
34
34
|
/**
|
|
35
35
|
* Store the given key/value pair in the DHT
|
|
36
36
|
*/
|
|
37
|
-
put(key: Uint8Array, value: Uint8Array, options?:
|
|
37
|
+
put(key: Uint8Array, value: Uint8Array, options?: RoutingOptions): AsyncGenerator<unknown, void, undefined>;
|
|
38
38
|
/**
|
|
39
39
|
* Get the value to the given key
|
|
40
40
|
*/
|
|
41
|
-
get(key: Uint8Array, options?:
|
|
41
|
+
get(key: Uint8Array, options?: RoutingOptions): AsyncGenerator<QueryEvent | ValueEvent>;
|
|
42
42
|
/**
|
|
43
43
|
* Get the `n` values to the given key without sorting
|
|
44
44
|
*/
|
|
45
|
-
getMany(key: Uint8Array, options?:
|
|
45
|
+
getMany(key: Uint8Array, options?: RoutingOptions): AsyncGenerator<QueryEvent>;
|
|
46
46
|
}
|
|
47
47
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAElG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE/D,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAEpB,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB;IAY9D,QAAQ,CAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE;;;OAGG;IACG,QAAQ,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBvD;;OAEG;IACK,oBAAoB,CAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,CAAC;IAgD9I;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;IAwDxH;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,GAAG,UAAU,CAAC;IAyCpG;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,CAAC;CA6B5F"}
|
|
@@ -4,7 +4,7 @@ import parallel from 'it-parallel';
|
|
|
4
4
|
import { pipe } from 'it-pipe';
|
|
5
5
|
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
6
6
|
import { ALPHA } from '../constants.js';
|
|
7
|
-
import {
|
|
7
|
+
import { MessageType } from '../message/dht.js';
|
|
8
8
|
import { valueEvent, queryErrorEvent } from '../query/events.js';
|
|
9
9
|
import { Libp2pRecord } from '../record/index.js';
|
|
10
10
|
import { bestRecord } from '../record/selectors.js';
|
|
@@ -19,9 +19,9 @@ export class ContentFetching {
|
|
|
19
19
|
queryManager;
|
|
20
20
|
network;
|
|
21
21
|
constructor(components, init) {
|
|
22
|
-
const { validators, selectors, peerRouting, queryManager, network,
|
|
22
|
+
const { validators, selectors, peerRouting, queryManager, network, logPrefix } = init;
|
|
23
23
|
this.components = components;
|
|
24
|
-
this.log = components.logger.forComponent(
|
|
24
|
+
this.log = components.logger.forComponent(`${logPrefix}:content-fetching`);
|
|
25
25
|
this.validators = validators;
|
|
26
26
|
this.selectors = selectors;
|
|
27
27
|
this.peerRouting = peerRouting;
|
|
@@ -72,8 +72,11 @@ export class ContentFetching {
|
|
|
72
72
|
}
|
|
73
73
|
// send correction
|
|
74
74
|
let sentCorrection = false;
|
|
75
|
-
const request =
|
|
76
|
-
|
|
75
|
+
const request = {
|
|
76
|
+
type: MessageType.PUT_VALUE,
|
|
77
|
+
key,
|
|
78
|
+
record: fixupRec
|
|
79
|
+
};
|
|
77
80
|
for await (const event of this.network.sendRequest(from, request, options)) {
|
|
78
81
|
if (event.name === 'PEER_RESPONSE' && (event.record != null) && uint8ArrayEquals(event.record.value, Libp2pRecord.deserialize(fixupRec).value)) {
|
|
79
82
|
sentCorrection = true;
|
|
@@ -104,8 +107,11 @@ export class ContentFetching {
|
|
|
104
107
|
return [event];
|
|
105
108
|
}
|
|
106
109
|
const events = [];
|
|
107
|
-
const msg =
|
|
108
|
-
|
|
110
|
+
const msg = {
|
|
111
|
+
type: MessageType.PUT_VALUE,
|
|
112
|
+
key,
|
|
113
|
+
record
|
|
114
|
+
};
|
|
109
115
|
this.log('send put to %p', event.peer.id);
|
|
110
116
|
for await (const putEvent of this.network.sendRequest(event.peer.id, msg, options)) {
|
|
111
117
|
events.push(putEvent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,QAAQ,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACL,KAAK,EACN,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { KadDHTComponents, PeerResponseEvent, ProviderEvent, QueryEvent
|
|
1
|
+
import type { KadDHTComponents, PeerResponseEvent, ProviderEvent, QueryEvent } from '../index.js';
|
|
2
2
|
import type { Network } from '../network.js';
|
|
3
3
|
import type { PeerRouting } from '../peer-routing/index.js';
|
|
4
4
|
import type { Providers } from '../providers.js';
|
|
5
5
|
import type { QueryManager } from '../query/manager.js';
|
|
6
6
|
import type { RoutingTable } from '../routing-table/index.js';
|
|
7
|
+
import type { RoutingOptions } from '@libp2p/interface';
|
|
7
8
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
8
9
|
import type { CID } from 'multiformats/cid';
|
|
9
10
|
export interface ContentRoutingInit {
|
|
@@ -12,7 +13,7 @@ export interface ContentRoutingInit {
|
|
|
12
13
|
queryManager: QueryManager;
|
|
13
14
|
routingTable: RoutingTable;
|
|
14
15
|
providers: Providers;
|
|
15
|
-
|
|
16
|
+
logPrefix: string;
|
|
16
17
|
}
|
|
17
18
|
export declare class ContentRouting {
|
|
18
19
|
private readonly log;
|
|
@@ -27,10 +28,10 @@ export declare class ContentRouting {
|
|
|
27
28
|
* Announce to the network that we can provide the value for a given key and
|
|
28
29
|
* are contactable on the given multiaddrs
|
|
29
30
|
*/
|
|
30
|
-
provide(key: CID, multiaddrs: Multiaddr[], options?:
|
|
31
|
+
provide(key: CID, multiaddrs: Multiaddr[], options?: RoutingOptions): AsyncGenerator<QueryEvent, void, undefined>;
|
|
31
32
|
/**
|
|
32
33
|
* Search the dht for up to `K` providers of the given CID.
|
|
33
34
|
*/
|
|
34
|
-
findProviders(key: CID, options:
|
|
35
|
+
findProviders(key: CID, options: RoutingOptions): AsyncGenerator<PeerResponseEvent | ProviderEvent | QueryEvent>;
|
|
35
36
|
}
|
|
36
37
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEjG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;gBAExB,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB;IAYnE;;;OAGG;IACK,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;IAmE9H;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,GAAG,cAAc,CAAC,iBAAiB,GAAG,aAAa,GAAG,UAAU,CAAC;CAmF1H"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { PeerSet } from '@libp2p/peer-collections';
|
|
1
2
|
import map from 'it-map';
|
|
2
3
|
import parallel from 'it-parallel';
|
|
3
4
|
import { pipe } from 'it-pipe';
|
|
4
5
|
import { ALPHA } from '../constants.js';
|
|
5
|
-
import {
|
|
6
|
+
import { MessageType } from '../message/dht.js';
|
|
7
|
+
import { toPbPeerInfo } from '../message/utils.js';
|
|
6
8
|
import { queryErrorEvent, peerResponseEvent, providerEvent } from '../query/events.js';
|
|
7
9
|
export class ContentRouting {
|
|
8
10
|
log;
|
|
@@ -13,9 +15,9 @@ export class ContentRouting {
|
|
|
13
15
|
routingTable;
|
|
14
16
|
providers;
|
|
15
17
|
constructor(components, init) {
|
|
16
|
-
const { network, peerRouting, queryManager, routingTable, providers,
|
|
18
|
+
const { network, peerRouting, queryManager, routingTable, providers, logPrefix } = init;
|
|
17
19
|
this.components = components;
|
|
18
|
-
this.log = components.logger.forComponent(
|
|
20
|
+
this.log = components.logger.forComponent(`${logPrefix}:content-routing`);
|
|
19
21
|
this.network = network;
|
|
20
22
|
this.peerRouting = peerRouting;
|
|
21
23
|
this.queryManager = queryManager;
|
|
@@ -30,11 +32,16 @@ export class ContentRouting {
|
|
|
30
32
|
this.log('provide %s', key);
|
|
31
33
|
// Add peer as provider
|
|
32
34
|
await this.providers.addProvider(key, this.components.peerId);
|
|
33
|
-
const msg =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
const msg = {
|
|
36
|
+
type: MessageType.ADD_PROVIDER,
|
|
37
|
+
key: key.multihash.bytes,
|
|
38
|
+
providers: [
|
|
39
|
+
toPbPeerInfo({
|
|
40
|
+
id: this.components.peerId,
|
|
41
|
+
multiaddrs
|
|
42
|
+
})
|
|
43
|
+
]
|
|
44
|
+
};
|
|
38
45
|
let sent = 0;
|
|
39
46
|
const maybeNotifyPeer = (event) => {
|
|
40
47
|
return async () => {
|
|
@@ -98,7 +105,7 @@ export class ContentRouting {
|
|
|
98
105
|
this.log('no peer store entry for %p', peerId);
|
|
99
106
|
}
|
|
100
107
|
}
|
|
101
|
-
yield peerResponseEvent({ from: this.components.peerId, messageType:
|
|
108
|
+
yield peerResponseEvent({ from: this.components.peerId, messageType: MessageType.GET_PROVIDERS, providers }, options);
|
|
102
109
|
yield providerEvent({ from: this.components.peerId, providers }, options);
|
|
103
110
|
}
|
|
104
111
|
// All done
|
|
@@ -109,23 +116,26 @@ export class ContentRouting {
|
|
|
109
116
|
* The query function to use on this particular disjoint path
|
|
110
117
|
*/
|
|
111
118
|
const findProvidersQuery = async function* ({ peer, signal }) {
|
|
112
|
-
const request =
|
|
119
|
+
const request = {
|
|
120
|
+
type: MessageType.GET_PROVIDERS,
|
|
121
|
+
key: target
|
|
122
|
+
};
|
|
113
123
|
yield* self.network.sendRequest(peer, request, {
|
|
114
124
|
...options,
|
|
115
125
|
signal
|
|
116
126
|
});
|
|
117
127
|
};
|
|
118
|
-
const providers = new
|
|
128
|
+
const providers = new PeerSet(provs);
|
|
119
129
|
for await (const event of this.queryManager.run(target, findProvidersQuery, options)) {
|
|
120
130
|
yield event;
|
|
121
131
|
if (event.name === 'PEER_RESPONSE') {
|
|
122
132
|
this.log('Found %d provider entries for %c and %d closer peers', event.providers.length, key, event.closer.length);
|
|
123
133
|
const newProviders = [];
|
|
124
134
|
for (const peer of event.providers) {
|
|
125
|
-
if (providers.has(peer.id
|
|
135
|
+
if (providers.has(peer.id)) {
|
|
126
136
|
continue;
|
|
127
137
|
}
|
|
128
|
-
providers.add(peer.id
|
|
138
|
+
providers.add(peer.id);
|
|
129
139
|
newProviders.push(peer);
|
|
130
140
|
}
|
|
131
141
|
if (newProviders.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,QAAQ,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,10 +1,91 @@
|
|
|
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 { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper } from './utils.js';
|
|
1
81
|
import type { ProvidersInit } from './providers.js';
|
|
2
|
-
import type { Libp2pEvents,
|
|
82
|
+
import type { Libp2pEvents, ComponentLogger, TypedEventTarget, Metrics, PeerId, PeerInfo, PeerStore, RoutingOptions } from '@libp2p/interface';
|
|
3
83
|
import type { AddressManager, ConnectionManager, Registrar } from '@libp2p/interface-internal';
|
|
4
84
|
import type { Datastore } from 'interface-datastore';
|
|
5
85
|
import type { CID } from 'multiformats/cid';
|
|
6
|
-
import type {
|
|
86
|
+
import type { ProgressEvent } from 'progress-events';
|
|
7
87
|
export { Libp2pRecord as Record } from './record/index.js';
|
|
88
|
+
export { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper };
|
|
8
89
|
/**
|
|
9
90
|
* The types of events emitted during DHT queries
|
|
10
91
|
*/
|
|
@@ -36,9 +117,6 @@ export interface DHTRecord {
|
|
|
36
117
|
timeReceived?: Date;
|
|
37
118
|
}
|
|
38
119
|
export type DHTProgressEvents = ProgressEvent<'kad-dht:query:send-query', SendQueryEvent> | ProgressEvent<'kad-dht:query:peer-response', PeerResponseEvent> | ProgressEvent<'kad-dht:query:final-peer', FinalPeerEvent> | ProgressEvent<'kad-dht:query:query-error', QueryErrorEvent> | ProgressEvent<'kad-dht:query:provider', ProviderEvent> | ProgressEvent<'kad-dht:query:value', ValueEvent> | ProgressEvent<'kad-dht:query:add-peer', AddPeerEvent> | ProgressEvent<'kad-dht:query:dial-peer', DialPeerEvent>;
|
|
39
|
-
export interface QueryOptions extends AbortOptions, ProgressOptions {
|
|
40
|
-
queryFuncTimeout?: number;
|
|
41
|
-
}
|
|
42
120
|
/**
|
|
43
121
|
* Emitted when sending queries to remote peers
|
|
44
122
|
*/
|
|
@@ -119,37 +197,41 @@ export type QueryEvent = SendQueryEvent | PeerResponseEvent | FinalPeerEvent | Q
|
|
|
119
197
|
export interface RoutingTable {
|
|
120
198
|
size: number;
|
|
121
199
|
}
|
|
200
|
+
export interface PeerInfoMapper {
|
|
201
|
+
(peer: PeerInfo): PeerInfo;
|
|
202
|
+
}
|
|
122
203
|
export interface KadDHT {
|
|
123
204
|
/**
|
|
124
205
|
* Get a value from the DHT, the final ValueEvent will be the best value
|
|
125
206
|
*/
|
|
126
|
-
get(key: Uint8Array, options?:
|
|
207
|
+
get(key: Uint8Array, options?: RoutingOptions): AsyncIterable<QueryEvent>;
|
|
127
208
|
/**
|
|
128
209
|
* Find providers of a given CID
|
|
129
210
|
*/
|
|
130
|
-
findProviders(key: CID, options?:
|
|
211
|
+
findProviders(key: CID, options?: RoutingOptions): AsyncIterable<QueryEvent>;
|
|
131
212
|
/**
|
|
132
213
|
* Find a peer on the DHT
|
|
133
214
|
*/
|
|
134
|
-
findPeer(id: PeerId, options?:
|
|
215
|
+
findPeer(id: PeerId, options?: RoutingOptions): AsyncIterable<QueryEvent>;
|
|
135
216
|
/**
|
|
136
217
|
* Find the closest peers to the passed key
|
|
137
218
|
*/
|
|
138
|
-
getClosestPeers(key: Uint8Array, options?:
|
|
219
|
+
getClosestPeers(key: Uint8Array, options?: RoutingOptions): AsyncIterable<QueryEvent>;
|
|
139
220
|
/**
|
|
140
221
|
* Store provider records for the passed CID on the DHT pointing to us
|
|
141
222
|
*/
|
|
142
|
-
provide(key: CID, options?:
|
|
223
|
+
provide(key: CID, options?: RoutingOptions): AsyncIterable<QueryEvent>;
|
|
143
224
|
/**
|
|
144
225
|
* Store the passed value under the passed key on the DHT
|
|
145
226
|
*/
|
|
146
|
-
put(key: Uint8Array, value: Uint8Array, options?:
|
|
227
|
+
put(key: Uint8Array, value: Uint8Array, options?: RoutingOptions): AsyncIterable<QueryEvent>;
|
|
147
228
|
/**
|
|
148
229
|
* Returns the mode this node is in
|
|
149
230
|
*/
|
|
150
|
-
getMode():
|
|
231
|
+
getMode(): 'client' | 'server';
|
|
151
232
|
/**
|
|
152
|
-
* If 'server' this node will respond to DHT queries, if 'client' this node
|
|
233
|
+
* If 'server' this node will respond to DHT queries, if 'client' this node
|
|
234
|
+
* will not.
|
|
153
235
|
*/
|
|
154
236
|
setMode(mode: 'client' | 'server'): Promise<void>;
|
|
155
237
|
/**
|
|
@@ -160,10 +242,6 @@ export interface KadDHT {
|
|
|
160
242
|
export interface SingleKadDHT extends KadDHT {
|
|
161
243
|
routingTable: RoutingTable;
|
|
162
244
|
}
|
|
163
|
-
export interface DualKadDHT extends KadDHT {
|
|
164
|
-
wan: SingleKadDHT;
|
|
165
|
-
lan: SingleKadDHT;
|
|
166
|
-
}
|
|
167
245
|
/**
|
|
168
246
|
* A selector function takes a DHT key and a list of records and returns the
|
|
169
247
|
* index of the best record in the list
|
|
@@ -188,11 +266,16 @@ export type Selectors = Record<string, SelectFn>;
|
|
|
188
266
|
export type Validators = Record<string, ValidateFn>;
|
|
189
267
|
export interface KadDHTInit {
|
|
190
268
|
/**
|
|
191
|
-
* How many peers to store in each kBucket
|
|
269
|
+
* How many peers to store in each kBucket
|
|
270
|
+
*
|
|
271
|
+
* @default 20
|
|
192
272
|
*/
|
|
193
273
|
kBucketSize?: number;
|
|
194
274
|
/**
|
|
195
|
-
*
|
|
275
|
+
* If true, only ever be a DHT client. If false, be a DHT client until told
|
|
276
|
+
* to be a DHT server via `setMode`.
|
|
277
|
+
*
|
|
278
|
+
* @default false
|
|
196
279
|
*/
|
|
197
280
|
clientMode?: boolean;
|
|
198
281
|
/**
|
|
@@ -211,42 +294,69 @@ export interface KadDHTInit {
|
|
|
211
294
|
/**
|
|
212
295
|
* During startup we run the self-query at a shorter interval to ensure
|
|
213
296
|
* the containing node can respond to queries quickly. Set this interval
|
|
214
|
-
* here in ms
|
|
297
|
+
* here in ms.
|
|
298
|
+
*
|
|
299
|
+
* @default 1000
|
|
215
300
|
*/
|
|
216
301
|
initialQuerySelfInterval?: number;
|
|
217
302
|
/**
|
|
218
303
|
* After startup by default all queries will be paused until the initial
|
|
219
304
|
* self-query has run and there are some peers in the routing table.
|
|
220
305
|
*
|
|
221
|
-
* Pass true here to disable this behaviour.
|
|
306
|
+
* Pass true here to disable this behaviour.
|
|
307
|
+
*
|
|
308
|
+
* @default false
|
|
222
309
|
*/
|
|
223
310
|
allowQueryWithZeroPeers?: boolean;
|
|
224
311
|
/**
|
|
225
|
-
*
|
|
312
|
+
* The network protocol to use
|
|
313
|
+
*
|
|
314
|
+
* @default "/ipfs/kad/1.0.0"
|
|
226
315
|
*/
|
|
227
|
-
|
|
316
|
+
protocol?: string;
|
|
317
|
+
/**
|
|
318
|
+
* The logging prefix to use
|
|
319
|
+
*
|
|
320
|
+
* @default "libp2p:kad-dht"
|
|
321
|
+
*/
|
|
322
|
+
logPrefix?: string;
|
|
228
323
|
/**
|
|
229
324
|
* How long to wait in ms when pinging DHT peers to decide if they
|
|
230
|
-
* should be evicted from the routing table or not
|
|
325
|
+
* should be evicted from the routing table or not.
|
|
326
|
+
*
|
|
327
|
+
* @default 10000
|
|
231
328
|
*/
|
|
232
329
|
pingTimeout?: number;
|
|
233
330
|
/**
|
|
234
331
|
* How many peers to ping in parallel when deciding if they should
|
|
235
|
-
* be evicted from the routing table or not
|
|
332
|
+
* be evicted from the routing table or not
|
|
333
|
+
*
|
|
334
|
+
* @default 10
|
|
236
335
|
*/
|
|
237
336
|
pingConcurrency?: number;
|
|
238
337
|
/**
|
|
239
|
-
* How many parallel incoming streams to allow on the DHT protocol per
|
|
338
|
+
* How many parallel incoming streams to allow on the DHT protocol per
|
|
339
|
+
* connection
|
|
340
|
+
*
|
|
341
|
+
* @default 32
|
|
240
342
|
*/
|
|
241
343
|
maxInboundStreams?: number;
|
|
242
344
|
/**
|
|
243
|
-
* How many parallel outgoing streams to allow on the DHT protocol per
|
|
345
|
+
* How many parallel outgoing streams to allow on the DHT protocol per
|
|
346
|
+
* connection
|
|
347
|
+
*
|
|
348
|
+
* @default 64
|
|
244
349
|
*/
|
|
245
350
|
maxOutboundStreams?: number;
|
|
246
351
|
/**
|
|
247
352
|
* Initialization options for the Providers component
|
|
248
353
|
*/
|
|
249
354
|
providers?: ProvidersInit;
|
|
355
|
+
/**
|
|
356
|
+
* For every incoming and outgoing PeerInfo, override address configuration
|
|
357
|
+
* with this filter.
|
|
358
|
+
*/
|
|
359
|
+
peerInfoMapper?(peer: PeerInfo): PeerInfo;
|
|
250
360
|
}
|
|
251
361
|
export interface KadDHTComponents {
|
|
252
362
|
peerId: PeerId;
|
|
@@ -259,5 +369,9 @@ export interface KadDHTComponents {
|
|
|
259
369
|
events: TypedEventTarget<Libp2pEvents>;
|
|
260
370
|
logger: ComponentLogger;
|
|
261
371
|
}
|
|
262
|
-
|
|
372
|
+
/**
|
|
373
|
+
* Creates a custom DHT implementation, please ensure you pass a `protocol`
|
|
374
|
+
* string as an option.
|
|
375
|
+
*/
|
|
376
|
+
export declare function kadDHT(init: KadDHTInit): (components: KadDHTComponents) => KadDHT;
|
|
263
377
|
//# sourceMappingURL=index.d.ts.map
|