@libp2p/kad-dht 14.1.2 → 14.1.3-6ddc1b80e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +2 -2
- 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 +1 -1
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +4 -2
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts +9 -5
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +25 -7
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +5 -3
- package/dist/src/providers.js.map +1 -1
- package/dist/src/reprovider.js +1 -1
- package/dist/src/reprovider.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +5 -1
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/add-provider.js +14 -5
- package/dist/src/rpc/handlers/add-provider.js.map +1 -1
- package/dist/src/rpc/handlers/get-providers.d.ts +3 -2
- package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +16 -28
- package/dist/src/rpc/handlers/get-providers.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 +1 -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 +1 -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.map +1 -1
- package/package.json +12 -12
- package/src/content-fetching/index.ts +2 -1
- package/src/kad-dht.ts +4 -2
- package/src/peer-routing/index.ts +38 -10
- package/src/providers.ts +5 -3
- package/src/reprovider.ts +1 -1
- package/src/rpc/handlers/add-provider.ts +18 -7
- package/src/rpc/handlers/get-providers.ts +18 -32
- package/src/rpc/handlers/get-value.ts +2 -1
- package/src/rpc/handlers/put-value.ts +2 -1
- package/src/rpc/index.ts +1 -0
- package/dist/typedoc-urls.json +0 -59
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { InvalidMessageError } from '@libp2p/interface';
|
|
2
|
+
import all from 'it-all';
|
|
3
|
+
import map from 'it-map';
|
|
2
4
|
import { CID } from 'multiformats/cid';
|
|
3
5
|
import { MessageType } from '../../message/dht.js';
|
|
4
6
|
export class GetProvidersHandler {
|
|
7
|
+
peerId;
|
|
5
8
|
peerRouting;
|
|
6
9
|
providers;
|
|
7
10
|
peerStore;
|
|
@@ -10,6 +13,7 @@ export class GetProvidersHandler {
|
|
|
10
13
|
constructor(components, init) {
|
|
11
14
|
const { peerRouting, providers, logPrefix } = init;
|
|
12
15
|
this.log = components.logger.forComponent(`${logPrefix}:rpc:handlers:get-providers`);
|
|
16
|
+
this.peerId = components.peerId;
|
|
13
17
|
this.peerStore = components.peerStore;
|
|
14
18
|
this.peerRouting = peerRouting;
|
|
15
19
|
this.providers = providers;
|
|
@@ -27,26 +31,31 @@ export class GetProvidersHandler {
|
|
|
27
31
|
throw new InvalidMessageError('Invalid CID');
|
|
28
32
|
}
|
|
29
33
|
this.log('%p asking for providers for %s', peerId, cid);
|
|
30
|
-
const [
|
|
31
|
-
this.providers.getProviders(cid),
|
|
32
|
-
|
|
34
|
+
const [providerPeers, closerPeers] = await Promise.all([
|
|
35
|
+
all(map(await this.providers.getProviders(cid), async (peerId) => {
|
|
36
|
+
const peer = await this.peerStore.get(peerId);
|
|
37
|
+
const info = {
|
|
38
|
+
id: peer.id,
|
|
39
|
+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
40
|
+
};
|
|
41
|
+
return info;
|
|
42
|
+
})),
|
|
43
|
+
this.peerRouting.getCloserPeersOffline(msg.key, this.peerId)
|
|
33
44
|
]);
|
|
34
|
-
const providerPeers = await this._getPeers(peers);
|
|
35
|
-
const closerPeers = await this._getPeers(closer.map(({ id }) => id));
|
|
36
45
|
const response = {
|
|
37
46
|
type: MessageType.GET_PROVIDERS,
|
|
38
47
|
key: msg.key,
|
|
39
48
|
clusterLevel: msg.clusterLevel,
|
|
40
49
|
closer: closerPeers
|
|
41
50
|
.map(this.peerInfoMapper)
|
|
42
|
-
.filter(({ multiaddrs }) => multiaddrs.length)
|
|
51
|
+
.filter(({ id, multiaddrs }) => multiaddrs.length > 0)
|
|
43
52
|
.map(peerInfo => ({
|
|
44
53
|
id: peerInfo.id.toMultihash().bytes,
|
|
45
54
|
multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)
|
|
46
55
|
})),
|
|
47
56
|
providers: providerPeers
|
|
48
57
|
.map(this.peerInfoMapper)
|
|
49
|
-
.filter(({ multiaddrs }) => multiaddrs.length)
|
|
58
|
+
.filter(({ id, multiaddrs }) => multiaddrs.length > 0)
|
|
50
59
|
.map(peerInfo => ({
|
|
51
60
|
id: peerInfo.id.toMultihash().bytes,
|
|
52
61
|
multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)
|
|
@@ -58,26 +67,5 @@ export class GetProvidersHandler {
|
|
|
58
67
|
async _getAddresses(peerId) {
|
|
59
68
|
return [];
|
|
60
69
|
}
|
|
61
|
-
async _getPeers(peerIds) {
|
|
62
|
-
const output = [];
|
|
63
|
-
for (const peerId of peerIds) {
|
|
64
|
-
try {
|
|
65
|
-
const peer = await this.peerStore.get(peerId);
|
|
66
|
-
const peerAfterFilter = this.peerInfoMapper({
|
|
67
|
-
id: peerId,
|
|
68
|
-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
69
|
-
});
|
|
70
|
-
if (peerAfterFilter.multiaddrs.length > 0) {
|
|
71
|
-
output.push(peerAfterFilter);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch (err) {
|
|
75
|
-
if (err.name !== 'NotFoundError') {
|
|
76
|
-
throw err;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return output;
|
|
81
|
-
}
|
|
82
70
|
}
|
|
83
71
|
//# sourceMappingURL=get-providers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-providers.js","sourceRoot":"","sources":["../../../../src/rpc/handlers/get-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"get-providers.js","sourceRoot":"","sources":["../../../../src/rpc/handlers/get-providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-value.d.ts","sourceRoot":"","sources":["../../../../src/rpc/handlers/get-value.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAM7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"get-value.d.ts","sourceRoot":"","sources":["../../../../src/rpc/handlers/get-value.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAM7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;gBAE3B,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,mBAAmB;IAQvE,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAgE7D;;;;;OAKG;IACG,oBAAoB,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CA6BhF"}
|
|
@@ -12,7 +12,7 @@ export class GetValueHandler {
|
|
|
12
12
|
datastorePrefix;
|
|
13
13
|
constructor(components, init) {
|
|
14
14
|
this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:get-value`);
|
|
15
|
-
this.datastorePrefix =
|
|
15
|
+
this.datastorePrefix = `${init.datastorePrefix}/record`;
|
|
16
16
|
this.peerStore = components.peerStore;
|
|
17
17
|
this.datastore = components.datastore;
|
|
18
18
|
this.peerRouting = init.peerRouting;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-value.js","sourceRoot":"","sources":["../../../../src/rpc/handlers/get-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EACL,cAAc,EACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"get-value.js","sourceRoot":"","sources":["../../../../src/rpc/handlers/get-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put-value.d.ts","sourceRoot":"","sources":["../../../../src/rpc/handlers/put-value.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"put-value.d.ts","sourceRoot":"","sources":["../../../../src/rpc/handlers/put-value.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;gBAE3B,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,mBAAmB;IASvE,MAAM,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CA0B9D"}
|
|
@@ -11,7 +11,7 @@ export class PutValueHandler {
|
|
|
11
11
|
const { validators } = init;
|
|
12
12
|
this.components = components;
|
|
13
13
|
this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:put-value`);
|
|
14
|
-
this.datastorePrefix =
|
|
14
|
+
this.datastorePrefix = `${init.datastorePrefix}/record`;
|
|
15
15
|
this.validators = validators;
|
|
16
16
|
}
|
|
17
17
|
async handle(peerId, msg) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put-value.js","sourceRoot":"","sources":["../../../../src/rpc/handlers/put-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"put-value.js","sourceRoot":"","sources":["../../../../src/rpc/handlers/put-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAkBlD,MAAM,OAAO,eAAe;IACT,UAAU,CAA2B;IACrC,UAAU,CAAY;IACtB,GAAG,CAAQ;IACX,eAAe,CAAQ;IAExC,YAAa,UAAqC,EAAE,IAAyB;QAC3E,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;QAE3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,yBAAyB,CAAC,CAAA;QACrF,IAAI,CAAC,eAAe,GAAG,GAAG,IAAI,CAAC,eAAe,SAAS,CAAA;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,MAAc,EAAE,GAAY;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,GAAG,CAAC,uCAAuC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;QAE9D,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,sBAAsB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;YAExD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACtB,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAE/D,MAAM,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;YAEvD,kBAAkB,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAA;YAC5C,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAA;YACjF,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;YACzF,IAAI,CAAC,GAAG,CAAC,+CAA+C,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;QAC3E,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,iDAAiD,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QACvE,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
|
package/dist/src/rpc/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export interface RPCInit {
|
|
|
19
19
|
validators: Validators;
|
|
20
20
|
logPrefix: string;
|
|
21
21
|
metricsPrefix: string;
|
|
22
|
+
datastorePrefix: string;
|
|
22
23
|
peerInfoMapper: PeerInfoMapper;
|
|
23
24
|
}
|
|
24
25
|
export interface RPCComponents extends GetValueHandlerComponents, PutValueHandlerComponents, FindNodeHandlerComponents, GetProvidersHandlerComponents {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAmB,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAuB,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AACrG,OAAO,EAAmB,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAEzF,OAAO,EAAmB,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAwB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAEpE,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;CACnE;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,MAAM,WAAW,aAAc,SAAQ,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,6BAA6B;IACnJ,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGvB;gBAEY,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO;IAkBrD;;OAEG;IACG,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAsBhF;;OAEG;IACH,gBAAgB,CAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;CAwClD"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rpc/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAA;AAExD,OAAO,EAAmB,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAuB,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AACrG,OAAO,EAAmB,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAEzF,OAAO,EAAmB,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAwB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAEpE,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;CACnE;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,MAAM,WAAW,aAAc,SAAQ,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,6BAA6B;IACnJ,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGvB;gBAEY,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO;IAkBrD;;OAEG;IACG,aAAa,CAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAsBhF;;OAEG;IACH,gBAAgB,CAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;CAwClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAkC,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAsC,MAAM,6BAA6B,CAAA;AACrG,OAAO,EAAE,eAAe,EAAkC,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAkC,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rpc/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/kad-dht",
|
|
3
|
-
"version": "14.1.
|
|
3
|
+
"version": "14.1.3-6ddc1b80e",
|
|
4
4
|
"description": "JavaScript implementation of the Kad-DHT for libp2p",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/kad-dht#readme",
|
|
@@ -57,16 +57,17 @@
|
|
|
57
57
|
"doc-check": "aegir doc-check"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@libp2p/crypto": "
|
|
61
|
-
"@libp2p/interface": "
|
|
62
|
-
"@libp2p/interface-internal": "
|
|
63
|
-
"@libp2p/peer-collections": "
|
|
64
|
-
"@libp2p/peer-id": "
|
|
65
|
-
"@libp2p/record": "
|
|
66
|
-
"@libp2p/utils": "
|
|
60
|
+
"@libp2p/crypto": "5.0.7-6ddc1b80e",
|
|
61
|
+
"@libp2p/interface": "2.2.1-6ddc1b80e",
|
|
62
|
+
"@libp2p/interface-internal": "2.1.1-6ddc1b80e",
|
|
63
|
+
"@libp2p/peer-collections": "6.0.12-6ddc1b80e",
|
|
64
|
+
"@libp2p/peer-id": "5.0.8-6ddc1b80e",
|
|
65
|
+
"@libp2p/record": "4.0.4-6ddc1b80e",
|
|
66
|
+
"@libp2p/utils": "6.2.1-6ddc1b80e",
|
|
67
67
|
"@multiformats/multiaddr": "^12.2.3",
|
|
68
68
|
"any-signal": "^4.1.1",
|
|
69
69
|
"interface-datastore": "^8.3.0",
|
|
70
|
+
"it-all": "^3.0.6",
|
|
70
71
|
"it-drain": "^3.0.7",
|
|
71
72
|
"it-length": "^3.0.6",
|
|
72
73
|
"it-length-prefixed": "^9.0.4",
|
|
@@ -88,9 +89,9 @@
|
|
|
88
89
|
"uint8arrays": "^5.1.0"
|
|
89
90
|
},
|
|
90
91
|
"devDependencies": {
|
|
91
|
-
"@libp2p/interface-compliance-tests": "
|
|
92
|
-
"@libp2p/logger": "
|
|
93
|
-
"@libp2p/peer-store": "
|
|
92
|
+
"@libp2p/interface-compliance-tests": "6.1.11-6ddc1b80e",
|
|
93
|
+
"@libp2p/logger": "5.1.4-6ddc1b80e",
|
|
94
|
+
"@libp2p/peer-store": "11.0.12-6ddc1b80e",
|
|
94
95
|
"@types/lodash.random": "^3.2.9",
|
|
95
96
|
"@types/lodash.range": "^3.2.9",
|
|
96
97
|
"@types/sinon": "^17.0.3",
|
|
@@ -99,7 +100,6 @@
|
|
|
99
100
|
"datastore-core": "^10.0.0",
|
|
100
101
|
"delay": "^6.0.0",
|
|
101
102
|
"execa": "^9.1.0",
|
|
102
|
-
"it-all": "^3.0.6",
|
|
103
103
|
"it-filter": "^3.1.0",
|
|
104
104
|
"it-last": "^3.0.6",
|
|
105
105
|
"it-pair": "^2.0.6",
|
|
@@ -31,6 +31,7 @@ export interface ContentFetchingInit {
|
|
|
31
31
|
queryManager: QueryManager
|
|
32
32
|
network: Network
|
|
33
33
|
logPrefix: string
|
|
34
|
+
datastorePrefix: string
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
export class ContentFetching {
|
|
@@ -48,7 +49,7 @@ export class ContentFetching {
|
|
|
48
49
|
|
|
49
50
|
this.components = components
|
|
50
51
|
this.log = components.logger.forComponent(`${logPrefix}:content-fetching`)
|
|
51
|
-
this.datastorePrefix =
|
|
52
|
+
this.datastorePrefix = `${init.datastorePrefix}/record`
|
|
52
53
|
this.validators = validators
|
|
53
54
|
this.selectors = selectors
|
|
54
55
|
this.peerRouting = peerRouting
|
package/src/kad-dht.ts
CHANGED
|
@@ -240,7 +240,8 @@ export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements Ka
|
|
|
240
240
|
peerRouting: this.peerRouting,
|
|
241
241
|
queryManager: this.queryManager,
|
|
242
242
|
network: this.network,
|
|
243
|
-
logPrefix
|
|
243
|
+
logPrefix,
|
|
244
|
+
datastorePrefix
|
|
244
245
|
})
|
|
245
246
|
this.contentRouting = new KADDHTContentRouting(components, {
|
|
246
247
|
network: this.network,
|
|
@@ -262,6 +263,7 @@ export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements Ka
|
|
|
262
263
|
validators: this.validators,
|
|
263
264
|
logPrefix,
|
|
264
265
|
metricsPrefix,
|
|
266
|
+
datastorePrefix,
|
|
265
267
|
peerInfoMapper: this.peerInfoMapper
|
|
266
268
|
})
|
|
267
269
|
this.topologyListener = new TopologyListener(components, {
|
|
@@ -315,7 +317,7 @@ export class KadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implements Ka
|
|
|
315
317
|
|
|
316
318
|
await this.onPeerConnect(peerData)
|
|
317
319
|
}).catch(err => {
|
|
318
|
-
this.log.error('could not add %p to routing table', peerId, err)
|
|
320
|
+
this.log.error('could not add %p to routing table - %e', peerId, err)
|
|
319
321
|
})
|
|
320
322
|
})
|
|
321
323
|
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { publicKeyFromProtobuf } from '@libp2p/crypto/keys'
|
|
2
2
|
import { InvalidPublicKeyError, NotFoundError } from '@libp2p/interface'
|
|
3
|
-
import { peerIdFromPublicKey } from '@libp2p/peer-id'
|
|
3
|
+
import { peerIdFromPublicKey, peerIdFromMultihash } from '@libp2p/peer-id'
|
|
4
4
|
import { Libp2pRecord } from '@libp2p/record'
|
|
5
|
+
import * as Digest from 'multiformats/hashes/digest'
|
|
5
6
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
|
7
|
+
import { xor as uint8ArrayXor } from 'uint8arrays/xor'
|
|
8
|
+
import { xorCompare as uint8ArrayXorCompare } from 'uint8arrays/xor-compare'
|
|
6
9
|
import { QueryError, InvalidRecordError } from '../errors.js'
|
|
7
10
|
import { MessageType } from '../message/dht.js'
|
|
8
11
|
import { PeerDistanceList } from '../peer-distance-list.js'
|
|
@@ -12,14 +15,20 @@ import {
|
|
|
12
15
|
valueEvent
|
|
13
16
|
} from '../query/events.js'
|
|
14
17
|
import { verifyRecord } from '../record/validators.js'
|
|
15
|
-
import { convertBuffer, keyForPublicKey } from '../utils.js'
|
|
16
|
-
import type {
|
|
18
|
+
import { convertBuffer, convertPeerId, keyForPublicKey } from '../utils.js'
|
|
19
|
+
import type { DHTRecord, FinalPeerEvent, QueryEvent, Validators } from '../index.js'
|
|
17
20
|
import type { Message } from '../message/dht.js'
|
|
18
21
|
import type { Network } from '../network.js'
|
|
19
22
|
import type { QueryManager, QueryOptions } from '../query/manager.js'
|
|
20
23
|
import type { QueryFunc } from '../query/types.js'
|
|
21
24
|
import type { RoutingTable } from '../routing-table/index.js'
|
|
22
|
-
import type { Logger, PeerId, PeerInfo, PeerStore, RoutingOptions } from '@libp2p/interface'
|
|
25
|
+
import type { ComponentLogger, Logger, PeerId, PeerInfo, PeerStore, RoutingOptions } from '@libp2p/interface'
|
|
26
|
+
|
|
27
|
+
export interface PeerRoutingComponents {
|
|
28
|
+
peerId: PeerId
|
|
29
|
+
peerStore: PeerStore
|
|
30
|
+
logger: ComponentLogger
|
|
31
|
+
}
|
|
23
32
|
|
|
24
33
|
export interface PeerRoutingInit {
|
|
25
34
|
routingTable: RoutingTable
|
|
@@ -38,7 +47,7 @@ export class PeerRouting {
|
|
|
38
47
|
private readonly peerStore: PeerStore
|
|
39
48
|
private readonly peerId: PeerId
|
|
40
49
|
|
|
41
|
-
constructor (components:
|
|
50
|
+
constructor (components: PeerRoutingComponents, init: PeerRoutingInit) {
|
|
42
51
|
this.routingTable = init.routingTable
|
|
43
52
|
this.network = init.network
|
|
44
53
|
this.validators = init.validators
|
|
@@ -283,16 +292,35 @@ export class PeerRouting {
|
|
|
283
292
|
}
|
|
284
293
|
|
|
285
294
|
/**
|
|
286
|
-
* Get the nearest peers to the given query, but if closer
|
|
287
|
-
* than self
|
|
295
|
+
* Get the nearest peers to the given query, but if closer than self
|
|
288
296
|
*/
|
|
289
297
|
async getCloserPeersOffline (key: Uint8Array, closerThan: PeerId): Promise<PeerInfo[]> {
|
|
290
|
-
const id = await convertBuffer(key)
|
|
291
|
-
const ids = this.routingTable.closestPeers(id)
|
|
292
298
|
const output: PeerInfo[] = []
|
|
293
299
|
|
|
300
|
+
// try getting the peer directly
|
|
301
|
+
try {
|
|
302
|
+
const multihash = Digest.decode(key)
|
|
303
|
+
const targetPeerId = peerIdFromMultihash(multihash)
|
|
304
|
+
|
|
305
|
+
const peer = await this.peerStore.get(targetPeerId)
|
|
306
|
+
|
|
307
|
+
output.push({
|
|
308
|
+
id: peer.id,
|
|
309
|
+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
310
|
+
})
|
|
311
|
+
} catch {}
|
|
312
|
+
|
|
313
|
+
const keyKadId = await convertBuffer(key)
|
|
314
|
+
const ids = this.routingTable.closestPeers(keyKadId)
|
|
315
|
+
const closerThanKadId = await convertPeerId(closerThan)
|
|
316
|
+
const requesterXor = uint8ArrayXor(closerThanKadId, keyKadId)
|
|
317
|
+
|
|
294
318
|
for (const peerId of ids) {
|
|
295
|
-
|
|
319
|
+
const peerKadId = await convertPeerId(peerId)
|
|
320
|
+
const peerXor = uint8ArrayXor(peerKadId, keyKadId)
|
|
321
|
+
|
|
322
|
+
// only include if peer is closer than requester
|
|
323
|
+
if (uint8ArrayXorCompare(peerXor, requesterXor) !== -1) {
|
|
296
324
|
continue
|
|
297
325
|
}
|
|
298
326
|
|
package/src/providers.ts
CHANGED
|
@@ -29,7 +29,7 @@ export class Providers {
|
|
|
29
29
|
|
|
30
30
|
constructor (components: ProvidersComponents, init: ProvidersInit) {
|
|
31
31
|
this.log = components.logger.forComponent(`${init.logPrefix}:providers`)
|
|
32
|
-
this.datastorePrefix =
|
|
32
|
+
this.datastorePrefix = `${init.datastorePrefix}/provider`
|
|
33
33
|
this.datastore = components.datastore
|
|
34
34
|
this.lock = init.lock
|
|
35
35
|
}
|
|
@@ -70,8 +70,9 @@ export class Providers {
|
|
|
70
70
|
const release = await this.lock.readLock()
|
|
71
71
|
|
|
72
72
|
try {
|
|
73
|
-
this.log('get providers for %
|
|
73
|
+
this.log('get providers for %c', cid)
|
|
74
74
|
const provs = await this.loadProviders(cid)
|
|
75
|
+
this.log('got %d providers for %c', provs.size, cid)
|
|
75
76
|
|
|
76
77
|
return [...provs.keys()]
|
|
77
78
|
} finally {
|
|
@@ -94,8 +95,9 @@ export class Providers {
|
|
|
94
95
|
*/
|
|
95
96
|
private async loadProviders (cid: CID): Promise<PeerMap<Date>> {
|
|
96
97
|
const providers = new PeerMap<Date>()
|
|
98
|
+
const key = toProviderKey(this.datastorePrefix, cid)
|
|
97
99
|
|
|
98
|
-
for await (const entry of this.datastore.query({ prefix:
|
|
100
|
+
for await (const entry of this.datastore.query({ prefix: key.toString() })) {
|
|
99
101
|
const { peerId } = parseProviderKey(entry.key)
|
|
100
102
|
providers.set(peerId, readProviderTime(entry.value))
|
|
101
103
|
}
|
package/src/reprovider.ts
CHANGED
|
@@ -80,7 +80,7 @@ export class Reprovider extends TypedEventEmitter<ReprovideEvents> {
|
|
|
80
80
|
})
|
|
81
81
|
this.datastore = components.datastore
|
|
82
82
|
this.addressManager = components.addressManager
|
|
83
|
-
this.datastorePrefix =
|
|
83
|
+
this.datastorePrefix = `${init.datastorePrefix}/provider`
|
|
84
84
|
this.reprovideThreshold = init.threshold ?? REPROVIDE_THRESHOLD
|
|
85
85
|
this.maxQueueSize = init.maxQueueSize ?? REPROVIDE_MAX_QUEUE_SIZE
|
|
86
86
|
this.validity = init.validity ?? PROVIDERS_VALIDITY
|
|
@@ -6,9 +6,11 @@ import * as Digest from 'multiformats/hashes/digest'
|
|
|
6
6
|
import type { Message } from '../../message/dht.js'
|
|
7
7
|
import type { Providers } from '../../providers'
|
|
8
8
|
import type { DHTMessageHandler } from '../index.js'
|
|
9
|
-
import type { ComponentLogger, Logger, PeerId } from '@libp2p/interface'
|
|
9
|
+
import type { ComponentLogger, Logger, PeerId, PeerStore } from '@libp2p/interface'
|
|
10
10
|
|
|
11
11
|
export interface AddProviderComponents {
|
|
12
|
+
peerId: PeerId
|
|
13
|
+
peerStore: PeerStore
|
|
12
14
|
logger: ComponentLogger
|
|
13
15
|
}
|
|
14
16
|
|
|
@@ -18,12 +20,16 @@ export interface AddProviderHandlerInit {
|
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
export class AddProviderHandler implements DHTMessageHandler {
|
|
23
|
+
private readonly peerId: PeerId
|
|
21
24
|
private readonly providers: Providers
|
|
25
|
+
private readonly peerStore: PeerStore
|
|
22
26
|
private readonly log: Logger
|
|
23
27
|
|
|
24
28
|
constructor (components: AddProviderComponents, init: AddProviderHandlerInit) {
|
|
25
29
|
this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:add-provider`)
|
|
30
|
+
this.peerId = components.peerId
|
|
26
31
|
this.providers = init.providers
|
|
32
|
+
this.peerStore = components.peerStore
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
async handle (peerId: PeerId, msg: Message): Promise<Message | undefined> {
|
|
@@ -43,12 +49,16 @@ export class AddProviderHandler implements DHTMessageHandler {
|
|
|
43
49
|
this.log.error('no providers found in message')
|
|
44
50
|
}
|
|
45
51
|
|
|
46
|
-
this.log('%p asked us to store provider record for for %c', peerId, cid)
|
|
52
|
+
this.log('%p asked us, %p to store provider record for for %c', peerId, this.peerId, cid)
|
|
47
53
|
|
|
48
54
|
await Promise.all(
|
|
49
55
|
msg.providers.map(async (pi) => {
|
|
56
|
+
const digest = Digest.decode(pi.id)
|
|
57
|
+
const providerId = peerIdFromMultihash(digest)
|
|
58
|
+
const providerMultiaddrs = pi.multiaddrs.map(buf => multiaddr(buf))
|
|
59
|
+
|
|
50
60
|
// Ignore providers not from the originator
|
|
51
|
-
if (!peerId.equals(
|
|
61
|
+
if (!peerId.equals(providerId)) {
|
|
52
62
|
this.log('invalid provider peer %p from %p', pi.id, peerId)
|
|
53
63
|
return
|
|
54
64
|
}
|
|
@@ -58,11 +68,12 @@ export class AddProviderHandler implements DHTMessageHandler {
|
|
|
58
68
|
return
|
|
59
69
|
}
|
|
60
70
|
|
|
61
|
-
this.log.trace('received provider %p for %s (addrs %s)', peerId, cid,
|
|
62
|
-
|
|
63
|
-
const multihash = Digest.decode(pi.id)
|
|
71
|
+
this.log.trace('received provider %p for %s (addrs %s)', peerId, cid, providerMultiaddrs)
|
|
64
72
|
|
|
65
|
-
await this.providers.addProvider(cid,
|
|
73
|
+
await this.providers.addProvider(cid, providerId)
|
|
74
|
+
await this.peerStore.merge(providerId, {
|
|
75
|
+
multiaddrs: providerMultiaddrs
|
|
76
|
+
})
|
|
66
77
|
})
|
|
67
78
|
)
|
|
68
79
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { InvalidMessageError } from '@libp2p/interface'
|
|
2
|
+
import all from 'it-all'
|
|
3
|
+
import map from 'it-map'
|
|
2
4
|
import { CID } from 'multiformats/cid'
|
|
3
5
|
import { MessageType } from '../../message/dht.js'
|
|
4
6
|
import type { PeerInfoMapper } from '../../index.js'
|
|
@@ -17,11 +19,13 @@ export interface GetProvidersHandlerInit {
|
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
export interface GetProvidersHandlerComponents {
|
|
22
|
+
peerId: PeerId
|
|
20
23
|
peerStore: PeerStore
|
|
21
24
|
logger: ComponentLogger
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
export class GetProvidersHandler implements DHTMessageHandler {
|
|
28
|
+
private readonly peerId: PeerId
|
|
25
29
|
private readonly peerRouting: PeerRouting
|
|
26
30
|
private readonly providers: Providers
|
|
27
31
|
private readonly peerStore: PeerStore
|
|
@@ -32,6 +36,7 @@ export class GetProvidersHandler implements DHTMessageHandler {
|
|
|
32
36
|
const { peerRouting, providers, logPrefix } = init
|
|
33
37
|
|
|
34
38
|
this.log = components.logger.forComponent(`${logPrefix}:rpc:handlers:get-providers`)
|
|
39
|
+
this.peerId = components.peerId
|
|
35
40
|
this.peerStore = components.peerStore
|
|
36
41
|
this.peerRouting = peerRouting
|
|
37
42
|
this.providers = providers
|
|
@@ -52,27 +57,33 @@ export class GetProvidersHandler implements DHTMessageHandler {
|
|
|
52
57
|
|
|
53
58
|
this.log('%p asking for providers for %s', peerId, cid)
|
|
54
59
|
|
|
55
|
-
const [
|
|
56
|
-
this.providers.getProviders(cid),
|
|
57
|
-
|
|
60
|
+
const [providerPeers, closerPeers] = await Promise.all([
|
|
61
|
+
all(map(await this.providers.getProviders(cid), async (peerId) => {
|
|
62
|
+
const peer = await this.peerStore.get(peerId)
|
|
63
|
+
const info: PeerInfo = {
|
|
64
|
+
id: peer.id,
|
|
65
|
+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return info
|
|
69
|
+
})),
|
|
70
|
+
this.peerRouting.getCloserPeersOffline(msg.key, this.peerId)
|
|
58
71
|
])
|
|
59
72
|
|
|
60
|
-
const providerPeers = await this._getPeers(peers)
|
|
61
|
-
const closerPeers = await this._getPeers(closer.map(({ id }) => id))
|
|
62
73
|
const response: Message = {
|
|
63
74
|
type: MessageType.GET_PROVIDERS,
|
|
64
75
|
key: msg.key,
|
|
65
76
|
clusterLevel: msg.clusterLevel,
|
|
66
77
|
closer: closerPeers
|
|
67
78
|
.map(this.peerInfoMapper)
|
|
68
|
-
.filter(({ multiaddrs }) => multiaddrs.length)
|
|
79
|
+
.filter(({ id, multiaddrs }) => multiaddrs.length > 0)
|
|
69
80
|
.map(peerInfo => ({
|
|
70
81
|
id: peerInfo.id.toMultihash().bytes,
|
|
71
82
|
multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)
|
|
72
83
|
})),
|
|
73
84
|
providers: providerPeers
|
|
74
85
|
.map(this.peerInfoMapper)
|
|
75
|
-
.filter(({ multiaddrs }) => multiaddrs.length)
|
|
86
|
+
.filter(({ id, multiaddrs }) => multiaddrs.length > 0)
|
|
76
87
|
.map(peerInfo => ({
|
|
77
88
|
id: peerInfo.id.toMultihash().bytes,
|
|
78
89
|
multiaddrs: peerInfo.multiaddrs.map(ma => ma.bytes)
|
|
@@ -87,29 +98,4 @@ export class GetProvidersHandler implements DHTMessageHandler {
|
|
|
87
98
|
async _getAddresses (peerId: PeerId): Promise<Multiaddr[]> {
|
|
88
99
|
return []
|
|
89
100
|
}
|
|
90
|
-
|
|
91
|
-
async _getPeers (peerIds: PeerId[]): Promise<PeerInfo[]> {
|
|
92
|
-
const output: PeerInfo[] = []
|
|
93
|
-
|
|
94
|
-
for (const peerId of peerIds) {
|
|
95
|
-
try {
|
|
96
|
-
const peer = await this.peerStore.get(peerId)
|
|
97
|
-
|
|
98
|
-
const peerAfterFilter = this.peerInfoMapper({
|
|
99
|
-
id: peerId,
|
|
100
|
-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
if (peerAfterFilter.multiaddrs.length > 0) {
|
|
104
|
-
output.push(peerAfterFilter)
|
|
105
|
-
}
|
|
106
|
-
} catch (err: any) {
|
|
107
|
-
if (err.name !== 'NotFoundError') {
|
|
108
|
-
throw err
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return output
|
|
114
|
-
}
|
|
115
101
|
}
|
|
@@ -15,6 +15,7 @@ import type { Datastore } from 'interface-datastore'
|
|
|
15
15
|
export interface GetValueHandlerInit {
|
|
16
16
|
peerRouting: PeerRouting
|
|
17
17
|
logPrefix: string
|
|
18
|
+
datastorePrefix: string
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
export interface GetValueHandlerComponents {
|
|
@@ -32,7 +33,7 @@ export class GetValueHandler implements DHTMessageHandler {
|
|
|
32
33
|
|
|
33
34
|
constructor (components: GetValueHandlerComponents, init: GetValueHandlerInit) {
|
|
34
35
|
this.log = components.logger.forComponent(`${init.logPrefix}:rpc:handlers:get-value`)
|
|
35
|
-
this.datastorePrefix =
|
|
36
|
+
this.datastorePrefix = `${init.datastorePrefix}/record`
|
|
36
37
|
this.peerStore = components.peerStore
|
|
37
38
|
this.datastore = components.datastore
|
|
38
39
|
this.peerRouting = init.peerRouting
|