@libp2p/kad-dht 14.0.2-7383821e1 → 14.0.2-a657bbd2e
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +36 -0
- package/dist/index.min.js +2 -2
- package/dist/src/constants.d.ts +4 -3
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +8 -3
- package/dist/src/constants.js.map +1 -1
- package/dist/src/content-fetching/index.d.ts +1 -0
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +5 -3
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/index.d.ts +107 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +36 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts +14 -1
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +76 -27
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/network.d.ts +1 -0
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +4 -5
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +9 -10
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +21 -50
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +51 -192
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/manager.d.ts +1 -1
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +8 -19
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query-self.d.ts +3 -1
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +17 -16
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/reprovider.d.ts +63 -0
- package/dist/src/reprovider.d.ts.map +1 -0
- package/dist/src/reprovider.js +161 -0
- package/dist/src/reprovider.js.map +1 -0
- package/dist/src/routing-table/closest-peers.d.ts +1 -0
- package/dist/src/routing-table/closest-peers.d.ts.map +1 -1
- package/dist/src/routing-table/closest-peers.js +7 -0
- package/dist/src/routing-table/closest-peers.js.map +1 -1
- package/dist/src/routing-table/index.d.ts +1 -0
- package/dist/src/routing-table/index.d.ts.map +1 -1
- package/dist/src/routing-table/index.js +14 -11
- package/dist/src/routing-table/index.js.map +1 -1
- package/dist/src/rpc/handlers/get-value.d.ts +1 -0
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-value.js +3 -1
- package/dist/src/rpc/handlers/get-value.js.map +1 -1
- package/dist/src/rpc/handlers/put-value.d.ts +1 -0
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/put-value.js +3 -1
- package/dist/src/rpc/handlers/put-value.js.map +1 -1
- package/dist/src/rpc/index.d.ts +1 -0
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +9 -10
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/utils.d.ts +20 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +87 -4
- package/dist/src/utils.js.map +1 -1
- package/package.json +12 -14
- package/src/constants.ts +11 -5
- package/src/content-fetching/index.ts +5 -3
- package/src/index.ts +116 -2
- package/src/kad-dht.ts +94 -41
- package/src/network.ts +5 -5
- package/src/peer-routing/index.ts +9 -11
- package/src/providers.ts +57 -244
- package/src/query/manager.ts +12 -28
- package/src/query-self.ts +20 -17
- package/src/reprovider.ts +226 -0
- package/src/routing-table/closest-peers.ts +9 -0
- package/src/routing-table/index.ts +16 -11
- package/src/rpc/handlers/get-value.ts +3 -1
- package/src/rpc/handlers/put-value.ts +3 -1
- package/src/rpc/index.ts +10 -10
- package/src/utils.ts +102 -4
package/dist/src/constants.d.ts
CHANGED
@@ -3,11 +3,12 @@ export declare const minute: number;
|
|
3
3
|
export declare const hour: number;
|
4
4
|
export declare const MAX_RECORD_AGE: number;
|
5
5
|
export declare const PROTOCOL = "/ipfs/kad/1.0.0";
|
6
|
-
export declare const RECORD_KEY_PREFIX = "/dht/record";
|
7
|
-
export declare const PROVIDER_KEY_PREFIX = "/dht/provider";
|
8
|
-
export declare const PROVIDERS_LRU_CACHE_SIZE = 256;
|
9
6
|
export declare const PROVIDERS_VALIDITY: number;
|
10
7
|
export declare const PROVIDERS_CLEANUP_INTERVAL: number;
|
8
|
+
export declare const REPROVIDE_THRESHOLD: number;
|
9
|
+
export declare const REPROVIDE_CONCURRENCY = 10;
|
10
|
+
export declare const REPROVIDE_MAX_QUEUE_SIZE = 16384;
|
11
|
+
export declare const REPROVIDE_INTERVAL: number;
|
11
12
|
export declare const READ_MESSAGE_TIMEOUT: number;
|
12
13
|
export declare const GET_MANY_RECORD_COUNT = 16;
|
13
14
|
export declare const K = 20;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AASA,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,
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AASA,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,kBAAkB,QAAY,CAAA;AAE3C,eAAO,MAAM,0BAA0B,QAAO,CAAA;AAG9C,eAAO,MAAM,mBAAmB,QAAW,CAAA;AAG3C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAGvC,eAAO,MAAM,wBAAwB,QAAS,CAAA;AAG9C,eAAO,MAAM,kBAAkB,QAAO,CAAA;AAEtC,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,QAAe,CAAA;AAGjD,eAAO,MAAM,cAAc,uBAA0B,CAAA"}
|
package/dist/src/constants.js
CHANGED
@@ -10,11 +10,16 @@ export const minute = 60 * second;
|
|
10
10
|
export const hour = 60 * minute;
|
11
11
|
export const MAX_RECORD_AGE = 36 * hour;
|
12
12
|
export const PROTOCOL = '/ipfs/kad/1.0.0';
|
13
|
-
export const RECORD_KEY_PREFIX = '/dht/record';
|
14
|
-
export const PROVIDER_KEY_PREFIX = '/dht/provider';
|
15
|
-
export const PROVIDERS_LRU_CACHE_SIZE = 256;
|
16
13
|
export const PROVIDERS_VALIDITY = 24 * hour;
|
17
14
|
export const PROVIDERS_CLEANUP_INTERVAL = hour;
|
15
|
+
// Re-run the provide operation when the expiry of our provider records is within this amount
|
16
|
+
export const REPROVIDE_THRESHOLD = 2 * hour;
|
17
|
+
// How many reprovide operations to run at once
|
18
|
+
export const REPROVIDE_CONCURRENCY = 10;
|
19
|
+
// How long to let the reprovide queue grow before we wait for capacity
|
20
|
+
export const REPROVIDE_MAX_QUEUE_SIZE = 16_384;
|
21
|
+
// How often to check if records need reproviding
|
22
|
+
export const REPROVIDE_INTERVAL = hour;
|
18
23
|
export const READ_MESSAGE_TIMEOUT = 10 * second;
|
19
24
|
// The number of records that will be retrieved on a call to getMany()
|
20
25
|
export const GET_MANY_RECORD_COUNT = 16;
|
@@ -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,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,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,
|
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,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,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,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAA;AAE3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAA;AAE9C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAA;AAE3C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEvC,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAA;AAE9C,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAEtC,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,GAAG,GAAG,MAAM,CAAA;AAEjD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,UAAU,UAAU,CAAA"}
|
@@ -20,6 +20,7 @@ export declare class ContentFetching {
|
|
20
20
|
private readonly peerRouting;
|
21
21
|
private readonly queryManager;
|
22
22
|
private readonly network;
|
23
|
+
private readonly datastorePrefix;
|
23
24
|
constructor(components: KadDHTComponents, init: ContentFetchingInit);
|
24
25
|
/**
|
25
26
|
* Attempt to retrieve the value for the given key from
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAiB7C,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;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAiB7C,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;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;gBAE3B,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB;IAapE;;;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"}
|
@@ -19,10 +19,12 @@ export class ContentFetching {
|
|
19
19
|
peerRouting;
|
20
20
|
queryManager;
|
21
21
|
network;
|
22
|
+
datastorePrefix;
|
22
23
|
constructor(components, init) {
|
23
24
|
const { validators, selectors, peerRouting, queryManager, network, logPrefix } = init;
|
24
25
|
this.components = components;
|
25
26
|
this.log = components.logger.forComponent(`${logPrefix}:content-fetching`);
|
27
|
+
this.datastorePrefix = `/${init.logPrefix.replaceAll(':', '/')}/record`;
|
26
28
|
this.validators = validators;
|
27
29
|
this.selectors = selectors;
|
28
30
|
this.peerRouting = peerRouting;
|
@@ -35,7 +37,7 @@ export class ContentFetching {
|
|
35
37
|
*/
|
36
38
|
async getLocal(key) {
|
37
39
|
this.log('getLocal %b', key);
|
38
|
-
const dsKey = bufferToRecordKey(key);
|
40
|
+
const dsKey = bufferToRecordKey(this.datastorePrefix, key);
|
39
41
|
this.log('fetching record for key %k', dsKey);
|
40
42
|
const raw = await this.components.datastore.get(dsKey);
|
41
43
|
this.log('found %k in local datastore', dsKey);
|
@@ -58,7 +60,7 @@ export class ContentFetching {
|
|
58
60
|
// correct ourself
|
59
61
|
if (this.components.peerId.equals(from)) {
|
60
62
|
try {
|
61
|
-
const dsKey = bufferToRecordKey(key);
|
63
|
+
const dsKey = bufferToRecordKey(this.datastorePrefix, key);
|
62
64
|
this.log(`Storing corrected record for key ${dsKey.toString()}`);
|
63
65
|
await this.components.datastore.put(dsKey, fixupRec.subarray());
|
64
66
|
}
|
@@ -94,7 +96,7 @@ export class ContentFetching {
|
|
94
96
|
// create record in the dht format
|
95
97
|
const record = createPutRecord(key, value);
|
96
98
|
// store the record locally
|
97
|
-
const dsKey = bufferToRecordKey(key);
|
99
|
+
const dsKey = bufferToRecordKey(this.datastorePrefix, key);
|
98
100
|
this.log(`storing record for key ${dsKey.toString()}`);
|
99
101
|
await this.components.datastore.put(dsKey, record.subarray());
|
100
102
|
// put record to the closest peers
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,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,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EACL,UAAU,EACV,eAAe,EAChB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAkBhE,MAAM,OAAO,eAAe;IACT,GAAG,CAAQ;IACX,UAAU,CAAkB;IAC5B,UAAU,CAAY;IACtB,SAAS,CAAW;IACpB,WAAW,CAAa;IACxB,YAAY,CAAc;IAC1B,OAAO,CAAS;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-fetching/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
@@ -78,10 +78,45 @@
|
|
78
78
|
*
|
79
79
|
* console.info(peerInfo) // peer id, multiaddrs
|
80
80
|
* ```
|
81
|
+
*
|
82
|
+
* @example Connecting to both a LAN-only DHT and the IPFS Amino DHT
|
83
|
+
*
|
84
|
+
* When using multiple DHTs, you should specify distinct datastore, metrics and
|
85
|
+
* log prefixes to ensure that data is kept separate for each instance.
|
86
|
+
*
|
87
|
+
* ```TypeScript
|
88
|
+
* import { kadDHT, removePublicAddressesMapper, removePrivateAddressesMapper } from '@libp2p/kad-dht'
|
89
|
+
* import { createLibp2p } from 'libp2p'
|
90
|
+
* import { peerIdFromString } from '@libp2p/peer-id'
|
91
|
+
*
|
92
|
+
* const node = await createLibp2p({
|
93
|
+
* services: {
|
94
|
+
* lanDHT: kadDHT({
|
95
|
+
* protocol: '/ipfs/lan/kad/1.0.0',
|
96
|
+
* peerInfoMapper: removePublicAddressesMapper,
|
97
|
+
* clientMode: false,
|
98
|
+
* logPrefix: 'libp2p:dht-lan',
|
99
|
+
* datastorePrefix: '/dht-lan',
|
100
|
+
* metricsPrefix: 'libp2p_dht_lan'
|
101
|
+
* }),
|
102
|
+
* aminoDHT: kadDHT({
|
103
|
+
* protocol: '/ipfs/kad/1.0.0',
|
104
|
+
* peerInfoMapper: removePrivateAddressesMapper,
|
105
|
+
* logPrefix: 'libp2p:dht-amino',
|
106
|
+
* datastorePrefix: '/dht-amino',
|
107
|
+
* metricsPrefix: 'libp2p_dht_amino'
|
108
|
+
* })
|
109
|
+
* }
|
110
|
+
* })
|
111
|
+
*
|
112
|
+
* const peerId = peerIdFromString('QmFoo')
|
113
|
+
* const peerInfo = await node.peerRouting.findPeer(peerId)
|
114
|
+
*
|
115
|
+
* console.info(peerInfo) // peer id, multiaddrs
|
116
|
+
* ```
|
81
117
|
*/
|
82
118
|
import { MessageType } from './message/dht.js';
|
83
119
|
import { removePrivateAddressesMapper, removePublicAddressesMapper, passthroughMapper } from './utils.js';
|
84
|
-
import type { ProvidersInit } from './providers.js';
|
85
120
|
import type { Libp2pEvents, ComponentLogger, TypedEventTarget, Metrics, PeerId, PeerInfo, PeerStore, RoutingOptions, PrivateKey } from '@libp2p/interface';
|
86
121
|
import type { AddressManager, ConnectionManager, Registrar } from '@libp2p/interface-internal';
|
87
122
|
import type { AdaptiveTimeoutInit } from '@libp2p/utils/src/adaptive-timeout.js';
|
@@ -218,6 +253,11 @@ export interface KadDHT {
|
|
218
253
|
* Store provider records for the passed CID on the DHT pointing to us
|
219
254
|
*/
|
220
255
|
provide(key: CID, options?: RoutingOptions): AsyncIterable<QueryEvent>;
|
256
|
+
/**
|
257
|
+
* Provider records must be re-published every 24 hours - pass a previously
|
258
|
+
* provided CID here to not re-publish a record for it any more
|
259
|
+
*/
|
260
|
+
cancelReprovide(key: CID): Promise<void>;
|
221
261
|
/**
|
222
262
|
* Store the passed value under the passed key on the DHT
|
223
263
|
*/
|
@@ -261,7 +301,56 @@ export type Selectors = Record<string, SelectFn>;
|
|
261
301
|
* Validators are a map of key prefixes to validator functions
|
262
302
|
*/
|
263
303
|
export type Validators = Record<string, ValidateFn>;
|
264
|
-
export
|
304
|
+
export interface ProvidersInit {
|
305
|
+
/**
|
306
|
+
* @default 256
|
307
|
+
*/
|
308
|
+
cacheSize?: number;
|
309
|
+
/**
|
310
|
+
* How often invalid records are cleaned. (in seconds)
|
311
|
+
*
|
312
|
+
* @default 5400
|
313
|
+
*/
|
314
|
+
cleanupInterval?: number;
|
315
|
+
/**
|
316
|
+
* How long is a provider valid for. (in seconds)
|
317
|
+
*
|
318
|
+
* @default 86400
|
319
|
+
*/
|
320
|
+
provideValidity?: number;
|
321
|
+
}
|
322
|
+
export interface ReProvideInit {
|
323
|
+
/**
|
324
|
+
* How many re-provide operations to run simultaneously
|
325
|
+
*
|
326
|
+
* @default 10
|
327
|
+
*/
|
328
|
+
concurrency?: number;
|
329
|
+
/**
|
330
|
+
* How long to let the re-provide queue grow
|
331
|
+
*
|
332
|
+
* @default 16384
|
333
|
+
*/
|
334
|
+
maxQueueSize?: number;
|
335
|
+
/**
|
336
|
+
* How long before the record expiry to re-provide in ms
|
337
|
+
*
|
338
|
+
* @default 7200000
|
339
|
+
*/
|
340
|
+
threshold?: number;
|
341
|
+
/**
|
342
|
+
* How often to check which records need reproviding in ms
|
343
|
+
*
|
344
|
+
* @default 3600000
|
345
|
+
*/
|
346
|
+
interval?: number;
|
347
|
+
/**
|
348
|
+
* How long provider records are valid for in ms
|
349
|
+
*
|
350
|
+
* @default 86400000
|
351
|
+
*/
|
352
|
+
validity?: number;
|
353
|
+
}
|
265
354
|
export interface KadDHTInit {
|
266
355
|
/**
|
267
356
|
* How many peers to store in each kBucket. Once there are more than this
|
@@ -346,6 +435,18 @@ export interface KadDHTInit {
|
|
346
435
|
* @default "libp2p:kad-dht"
|
347
436
|
*/
|
348
437
|
logPrefix?: string;
|
438
|
+
/**
|
439
|
+
* The datastore prefix to use
|
440
|
+
*
|
441
|
+
* @default "/dht"
|
442
|
+
*/
|
443
|
+
datastorePrefix?: string;
|
444
|
+
/**
|
445
|
+
* The metrics prefix to use
|
446
|
+
*
|
447
|
+
* @default "libp2p_kad_dht"
|
448
|
+
*/
|
449
|
+
metricsPrefix?: string;
|
349
450
|
/**
|
350
451
|
* Settings for how long to wait in ms when pinging DHT peers to decide if
|
351
452
|
* they should be evicted from the routing table or not.
|
@@ -400,6 +501,10 @@ export interface KadDHTInit {
|
|
400
501
|
* Initialization options for the Providers component
|
401
502
|
*/
|
402
503
|
providers?: ProvidersInit;
|
504
|
+
/**
|
505
|
+
* Initialization options for the Reprovider component
|
506
|
+
*/
|
507
|
+
reprovide?: ReProvideInit;
|
403
508
|
/**
|
404
509
|
* For every incoming and outgoing PeerInfo, override address configuration
|
405
510
|
* with this filter.
|
package/dist/src/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
@@ -78,6 +78,42 @@
|
|
78
78
|
*
|
79
79
|
* console.info(peerInfo) // peer id, multiaddrs
|
80
80
|
* ```
|
81
|
+
*
|
82
|
+
* @example Connecting to both a LAN-only DHT and the IPFS Amino DHT
|
83
|
+
*
|
84
|
+
* When using multiple DHTs, you should specify distinct datastore, metrics and
|
85
|
+
* log prefixes to ensure that data is kept separate for each instance.
|
86
|
+
*
|
87
|
+
* ```TypeScript
|
88
|
+
* import { kadDHT, removePublicAddressesMapper, removePrivateAddressesMapper } from '@libp2p/kad-dht'
|
89
|
+
* import { createLibp2p } from 'libp2p'
|
90
|
+
* import { peerIdFromString } from '@libp2p/peer-id'
|
91
|
+
*
|
92
|
+
* const node = await createLibp2p({
|
93
|
+
* services: {
|
94
|
+
* lanDHT: kadDHT({
|
95
|
+
* protocol: '/ipfs/lan/kad/1.0.0',
|
96
|
+
* peerInfoMapper: removePublicAddressesMapper,
|
97
|
+
* clientMode: false,
|
98
|
+
* logPrefix: 'libp2p:dht-lan',
|
99
|
+
* datastorePrefix: '/dht-lan',
|
100
|
+
* metricsPrefix: 'libp2p_dht_lan'
|
101
|
+
* }),
|
102
|
+
* aminoDHT: kadDHT({
|
103
|
+
* protocol: '/ipfs/kad/1.0.0',
|
104
|
+
* peerInfoMapper: removePrivateAddressesMapper,
|
105
|
+
* logPrefix: 'libp2p:dht-amino',
|
106
|
+
* datastorePrefix: '/dht-amino',
|
107
|
+
* metricsPrefix: 'libp2p_dht_amino'
|
108
|
+
* })
|
109
|
+
* }
|
110
|
+
* })
|
111
|
+
*
|
112
|
+
* const peerId = peerIdFromString('QmFoo')
|
113
|
+
* const peerInfo = await node.peerRouting.findPeer(peerId)
|
114
|
+
*
|
115
|
+
* console.info(peerInfo) // peer id, multiaddrs
|
116
|
+
* ```
|
81
117
|
*/
|
82
118
|
import { KadDHT as KadDHTClass } from './kad-dht.js';
|
83
119
|
import { MessageType } from './message/dht.js';
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoHG;AAEH,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAQzG,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvD,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,OAAO,EAAE,WAAW,EAAE,CAAA;AAoctB;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAE,OAAmB,EAAE;IAC3C,OAAO,CAAC,UAA4B,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAC5E,CAAC"}
|
package/dist/src/kad-dht.d.ts
CHANGED
@@ -4,10 +4,17 @@ 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
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';
|
7
|
+
import type { ContentRouting, CounterGroup, MetricGroup, 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 type Operation = 'GET_VALUE' | 'FIND_PROVIDERS' | 'FIND_PEER' | 'GET_CLOSEST_PEERS' | 'PROVIDE' | 'PUT_VALUE' | 'SELF_QUERY';
|
12
|
+
export interface OperationMetrics {
|
13
|
+
queries?: MetricGroup<Operation>;
|
14
|
+
errors?: CounterGroup<Operation>;
|
15
|
+
queryTime?: MetricGroup<Operation>;
|
16
|
+
errorTime?: MetricGroup<Operation>;
|
17
|
+
}
|
11
18
|
/**
|
12
19
|
* A DHT implementation modelled after Kademlia with S/Kademlia modifications.
|
13
20
|
* Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.
|
@@ -37,6 +44,7 @@ export declare class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> imple
|
|
37
44
|
private readonly dhtContentRouting;
|
38
45
|
private readonly dhtPeerRouting;
|
39
46
|
private readonly peerInfoMapper;
|
47
|
+
private readonly reprovider;
|
40
48
|
/**
|
41
49
|
* Create a new KadDHT
|
42
50
|
*/
|
@@ -81,6 +89,11 @@ export declare class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> imple
|
|
81
89
|
* Announce to the network that we can provide given key's value
|
82
90
|
*/
|
83
91
|
provide(key: CID, options?: RoutingOptions): AsyncGenerator<QueryEvent, void, undefined>;
|
92
|
+
/**
|
93
|
+
* Provider records must be re-published every 24 hours - pass a previously
|
94
|
+
* provided CID here to not re-publish a record for it any more
|
95
|
+
*/
|
96
|
+
cancelReprovide(key: CID): Promise<void>;
|
84
97
|
/**
|
85
98
|
* Search the dht for providers of the given CID
|
86
99
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"kad-dht.d.ts","sourceRoot":"","sources":["../../src/kad-dht.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAe,MAAM,mBAAmB,CAAA;
|
1
|
+
{"version":3,"file":"kad-dht.d.ts","sourceRoot":"","sources":["../../src/kad-dht.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAe,MAAM,mBAAmB,CAAA;AAOzL,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAM1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AASvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAyB,MAAM,IAAI,eAAe,EAAE,UAAU,EAAkB,MAAM,YAAY,CAAA;AAC5I,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAU,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxL,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAwE3C,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAC7C,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,WAAW,GAAG,mBAAmB,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAA;AAEnI,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;IAChC,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAClC,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACnC;AAED;;;GAGG;AACH,qBAAa,MAAO,SAAQ,iBAAiB,CAAC,mBAAmB,CAAE,YAAW,eAAe,EAAE,SAAS;IAC/F,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,iBAAiB,CAAA;IAErC,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,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,CAAsB;IACrD,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,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IAEvC;;OAEG;gBACU,UAAU,EAAE,gBAAgB,EAAE,IAAI,GAAE,UAAe;IAmNhE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAoB;IAEjD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAIvC;IAED,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAK,cAAc,CAE5C;IAED,IAAI,CAAC,iBAAiB,CAAC,IAAK,WAAW,CAEtC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAK,aAAa,CAE1C;IAEK,aAAa,CAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvD;;OAEG;IACH,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACH,OAAO,IAAK,QAAQ,GAAG,QAAQ;IAI/B;;OAEG;IACG,OAAO,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvE;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAyB7B;;;OAGG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAc5B;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;IAIpH;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;IAMxG;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;IAIrG;;;OAGG;IACG,eAAe,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC;IAMxG;;OAEG;IACK,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC;IAIrG;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC;IAI3G,mBAAmB,IAAK,OAAO,CAAC,IAAI,CAAC;CAG5C"}
|