@libp2p/kad-dht 0.28.6
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/LICENSE +4 -0
- package/README.md +105 -0
- package/dist/src/constants.d.ts +20 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +34 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/content-fetching/index.d.ts +55 -0
- package/dist/src/content-fetching/index.d.ts.map +1 -0
- package/dist/src/content-fetching/index.js +190 -0
- package/dist/src/content-fetching/index.js.map +1 -0
- package/dist/src/content-routing/index.d.ts +42 -0
- package/dist/src/content-routing/index.d.ts.map +1 -0
- package/dist/src/content-routing/index.js +129 -0
- package/dist/src/content-routing/index.js.map +1 -0
- package/dist/src/dual-kad-dht.d.ts +65 -0
- package/dist/src/dual-kad-dht.d.ts.map +1 -0
- package/dist/src/dual-kad-dht.js +191 -0
- package/dist/src/dual-kad-dht.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +15 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kad-dht.d.ts +131 -0
- package/dist/src/kad-dht.d.ts.map +1 -0
- package/dist/src/kad-dht.js +268 -0
- package/dist/src/kad-dht.js.map +1 -0
- package/dist/src/message/dht.d.ts +297 -0
- package/dist/src/message/dht.js +921 -0
- package/dist/src/message/index.d.ts +32 -0
- package/dist/src/message/index.d.ts.map +1 -0
- package/dist/src/message/index.js +81 -0
- package/dist/src/message/index.js.map +1 -0
- package/dist/src/network.d.ts +60 -0
- package/dist/src/network.d.ts.map +1 -0
- package/dist/src/network.js +124 -0
- package/dist/src/network.js.map +1 -0
- package/dist/src/peer-list/index.d.ts +29 -0
- package/dist/src/peer-list/index.d.ts.map +1 -0
- package/dist/src/peer-list/index.js +44 -0
- package/dist/src/peer-list/index.js.map +1 -0
- package/dist/src/peer-list/peer-distance-list.d.ts +34 -0
- package/dist/src/peer-list/peer-distance-list.d.ts.map +1 -0
- package/dist/src/peer-list/peer-distance-list.js +64 -0
- package/dist/src/peer-list/peer-distance-list.js.map +1 -0
- package/dist/src/peer-routing/index.d.ts +71 -0
- package/dist/src/peer-routing/index.d.ts.map +1 -0
- package/dist/src/peer-routing/index.js +256 -0
- package/dist/src/peer-routing/index.js.map +1 -0
- package/dist/src/providers.d.ts +64 -0
- package/dist/src/providers.d.ts.map +1 -0
- package/dist/src/providers.js +208 -0
- package/dist/src/providers.js.map +1 -0
- package/dist/src/query/events.d.ts +46 -0
- package/dist/src/query/events.d.ts.map +1 -0
- package/dist/src/query/events.js +73 -0
- package/dist/src/query/events.js.map +1 -0
- package/dist/src/query/manager.d.ts +40 -0
- package/dist/src/query/manager.d.ts.map +1 -0
- package/dist/src/query/manager.js +140 -0
- package/dist/src/query/manager.js.map +1 -0
- package/dist/src/query/query-path.d.ts +58 -0
- package/dist/src/query/query-path.d.ts.map +1 -0
- package/dist/src/query/query-path.js +171 -0
- package/dist/src/query/query-path.js.map +1 -0
- package/dist/src/query/types.d.ts +16 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/types.js +2 -0
- package/dist/src/query/types.js.map +1 -0
- package/dist/src/query-self.d.ts +31 -0
- package/dist/src/query-self.d.ts.map +1 -0
- package/dist/src/query-self.js +73 -0
- package/dist/src/query-self.js.map +1 -0
- package/dist/src/routing-table/generated-prefix-list-browser.d.ts +3 -0
- package/dist/src/routing-table/generated-prefix-list-browser.d.ts.map +1 -0
- package/dist/src/routing-table/generated-prefix-list-browser.js +1027 -0
- package/dist/src/routing-table/generated-prefix-list-browser.js.map +1 -0
- package/dist/src/routing-table/generated-prefix-list.d.ts +3 -0
- package/dist/src/routing-table/generated-prefix-list.d.ts.map +1 -0
- package/dist/src/routing-table/generated-prefix-list.js +4099 -0
- package/dist/src/routing-table/generated-prefix-list.js.map +1 -0
- package/dist/src/routing-table/index.d.ts +91 -0
- package/dist/src/routing-table/index.d.ts.map +1 -0
- package/dist/src/routing-table/index.js +183 -0
- package/dist/src/routing-table/index.js.map +1 -0
- package/dist/src/routing-table/refresh.d.ts +50 -0
- package/dist/src/routing-table/refresh.d.ts.map +1 -0
- package/dist/src/routing-table/refresh.js +204 -0
- package/dist/src/routing-table/refresh.js.map +1 -0
- package/dist/src/routing-table/types.d.ts +24 -0
- package/dist/src/routing-table/types.d.ts.map +1 -0
- package/dist/src/rpc/handlers/add-provider.d.ts +13 -0
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -0
- package/dist/src/rpc/handlers/add-provider.js +42 -0
- package/dist/src/rpc/handlers/add-provider.js.map +1 -0
- package/dist/src/rpc/handlers/find-node.d.ts +18 -0
- package/dist/src/rpc/handlers/find-node.d.ts.map +1 -0
- package/dist/src/rpc/handlers/find-node.js +32 -0
- package/dist/src/rpc/handlers/find-node.js.map +1 -0
- package/dist/src/rpc/handlers/get-providers.d.ts +24 -0
- package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -0
- package/dist/src/rpc/handlers/get-providers.js +60 -0
- package/dist/src/rpc/handlers/get-providers.js.map +1 -0
- package/dist/src/rpc/handlers/get-value.d.ts +27 -0
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -0
- package/dist/src/rpc/handlers/get-value.js +94 -0
- package/dist/src/rpc/handlers/get-value.js.map +1 -0
- package/dist/src/rpc/handlers/index.d.ts +13 -0
- package/dist/src/rpc/handlers/index.d.ts.map +1 -0
- package/dist/src/rpc/handlers/ping.d.ts +7 -0
- package/dist/src/rpc/handlers/ping.d.ts.map +1 -0
- package/dist/src/rpc/handlers/ping.js +9 -0
- package/dist/src/rpc/handlers/ping.js.map +1 -0
- package/dist/src/rpc/handlers/put-value.d.ts +18 -0
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -0
- package/dist/src/rpc/handlers/put-value.js +35 -0
- package/dist/src/rpc/handlers/put-value.js.map +1 -0
- package/dist/src/rpc/index.d.ts +38 -0
- package/dist/src/rpc/index.d.ts.map +1 -0
- package/dist/src/rpc/index.js +75 -0
- package/dist/src/rpc/index.js.map +1 -0
- package/dist/src/rpc/types.d.ts +6 -0
- package/dist/src/rpc/types.d.ts.map +1 -0
- package/dist/src/topology-listener.d.ts +33 -0
- package/dist/src/topology-listener.d.ts.map +1 -0
- package/dist/src/topology-listener.js +50 -0
- package/dist/src/topology-listener.js.map +1 -0
- package/dist/src/types.d.ts +143 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils.d.ts +33 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +89 -0
- package/dist/src/utils.js.map +1 -0
- package/package.json +200 -0
- package/src/constants.ts +50 -0
- package/src/content-fetching/index.ts +276 -0
- package/src/content-routing/index.ts +202 -0
- package/src/dual-kad-dht.ts +257 -0
- package/src/index.ts +21 -0
- package/src/kad-dht.ts +396 -0
- package/src/message/dht.d.ts +297 -0
- package/src/message/dht.js +921 -0
- package/src/message/dht.proto +75 -0
- package/src/message/index.ts +111 -0
- package/src/network.ts +185 -0
- package/src/peer-list/index.ts +54 -0
- package/src/peer-list/peer-distance-list.ts +93 -0
- package/src/peer-routing/index.ts +332 -0
- package/src/providers.ts +278 -0
- package/src/query/events.ts +126 -0
- package/src/query/manager.ts +188 -0
- package/src/query/query-path.ts +263 -0
- package/src/query/types.ts +22 -0
- package/src/query-self.ts +106 -0
- package/src/routing-table/generated-prefix-list-browser.ts +1026 -0
- package/src/routing-table/generated-prefix-list.ts +4098 -0
- package/src/routing-table/index.ts +265 -0
- package/src/routing-table/refresh.ts +263 -0
- package/src/rpc/handlers/add-provider.ts +63 -0
- package/src/rpc/handlers/find-node.ts +57 -0
- package/src/rpc/handlers/get-providers.ts +95 -0
- package/src/rpc/handlers/get-value.ts +130 -0
- package/src/rpc/handlers/ping.ts +13 -0
- package/src/rpc/handlers/put-value.ts +58 -0
- package/src/rpc/index.ts +118 -0
- package/src/topology-listener.ts +78 -0
- package/src/utils.ts +108 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topology-listener.js","sourceRoot":"","sources":["../../src/topology-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAgBvC;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAoC;IAOxE,YAAa,OAAgC;QAC3C,KAAK,EAAE,CAAA;QAEP,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;QAE5C,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,oCAAoC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QAC5E,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAM;SACP;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;gBACpB,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBACpE,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE;oBACzC,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC,CAAA;YACL,CAAC;SACF,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC3E,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QAEpB,mCAAmC;QACnC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAC3C,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;SAC7B;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type PeerId from 'peer-id';
|
|
2
|
+
import type { Multiaddr } from 'multiaddr';
|
|
3
|
+
import type { CID } from 'multiformats/cid';
|
|
4
|
+
import type { MuxedStream } from 'libp2p/src/upgrader';
|
|
5
|
+
import type { PublicKey } from 'libp2p-crypto';
|
|
6
|
+
import type { Message } from './message/dht';
|
|
7
|
+
export declare enum EventTypes {
|
|
8
|
+
SENDING_QUERY = 0,
|
|
9
|
+
PEER_RESPONSE = 1,
|
|
10
|
+
FINAL_PEER = 2,
|
|
11
|
+
QUERY_ERROR = 3,
|
|
12
|
+
PROVIDER = 4,
|
|
13
|
+
VALUE = 5,
|
|
14
|
+
ADDING_PEER = 6,
|
|
15
|
+
DIALING_PEER = 7
|
|
16
|
+
}
|
|
17
|
+
export declare type MessageName = keyof typeof Message.MessageType;
|
|
18
|
+
export interface PeerData {
|
|
19
|
+
id: PeerId;
|
|
20
|
+
multiaddrs: Multiaddr[];
|
|
21
|
+
}
|
|
22
|
+
export interface DHTRecord {
|
|
23
|
+
key: Uint8Array;
|
|
24
|
+
value: Uint8Array;
|
|
25
|
+
timeReceived?: Date;
|
|
26
|
+
}
|
|
27
|
+
export interface AbortOptions {
|
|
28
|
+
signal?: AbortSignal;
|
|
29
|
+
}
|
|
30
|
+
export interface QueryOptions extends AbortOptions {
|
|
31
|
+
queryFuncTimeout?: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Emitted when sending queries to remote peers
|
|
35
|
+
*/
|
|
36
|
+
export interface SendingQueryEvent {
|
|
37
|
+
to: PeerId;
|
|
38
|
+
type: EventTypes.SENDING_QUERY;
|
|
39
|
+
name: 'SENDING_QUERY';
|
|
40
|
+
messageName: keyof typeof Message.MessageType;
|
|
41
|
+
messageType: Message.MessageType;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Emitted when query responses are received form remote peers. Depending on the query
|
|
45
|
+
* these events may be followed by a `FinalPeerEvent`, a `ValueEvent` or a `ProviderEvent`.
|
|
46
|
+
*/
|
|
47
|
+
export interface PeerResponseEvent {
|
|
48
|
+
from: PeerId;
|
|
49
|
+
type: EventTypes.PEER_RESPONSE;
|
|
50
|
+
name: 'PEER_RESPONSE';
|
|
51
|
+
messageName: keyof typeof Message.MessageType;
|
|
52
|
+
messageType: Message.MessageType;
|
|
53
|
+
closer: PeerData[];
|
|
54
|
+
providers: PeerData[];
|
|
55
|
+
record?: DHTRecord;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Emitted at the end of a `findPeer` query
|
|
59
|
+
*/
|
|
60
|
+
export interface FinalPeerEvent {
|
|
61
|
+
from: PeerId;
|
|
62
|
+
peer: PeerData;
|
|
63
|
+
type: EventTypes.FINAL_PEER;
|
|
64
|
+
name: 'FINAL_PEER';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Something went wrong with the query
|
|
68
|
+
*/
|
|
69
|
+
export interface QueryErrorEvent {
|
|
70
|
+
from: PeerId;
|
|
71
|
+
type: EventTypes.QUERY_ERROR;
|
|
72
|
+
name: 'QUERY_ERROR';
|
|
73
|
+
error: Error;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Emitted when providers are found
|
|
77
|
+
*/
|
|
78
|
+
export interface ProviderEvent {
|
|
79
|
+
from: PeerId;
|
|
80
|
+
type: EventTypes.PROVIDER;
|
|
81
|
+
name: 'PROVIDER';
|
|
82
|
+
providers: PeerData[];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Emitted when values are found
|
|
86
|
+
*/
|
|
87
|
+
export interface ValueEvent {
|
|
88
|
+
from: PeerId;
|
|
89
|
+
type: EventTypes.VALUE;
|
|
90
|
+
name: 'VALUE';
|
|
91
|
+
value: Uint8Array;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Emitted when peers are added to a query
|
|
95
|
+
*/
|
|
96
|
+
export interface AddingPeerEvent {
|
|
97
|
+
type: EventTypes.ADDING_PEER;
|
|
98
|
+
name: 'ADDING_PEER';
|
|
99
|
+
peer: PeerId;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Emitted when peers are dialled as part of a query
|
|
103
|
+
*/
|
|
104
|
+
export interface DialingPeerEvent {
|
|
105
|
+
peer: PeerId;
|
|
106
|
+
type: EventTypes.DIALING_PEER;
|
|
107
|
+
name: 'DIALING_PEER';
|
|
108
|
+
}
|
|
109
|
+
export declare type QueryEvent = SendingQueryEvent | PeerResponseEvent | FinalPeerEvent | QueryErrorEvent | ProviderEvent | ValueEvent | AddingPeerEvent | DialingPeerEvent;
|
|
110
|
+
export interface DHT {
|
|
111
|
+
/**
|
|
112
|
+
* Get a value from the DHT, the final ValueEvent will be the best value
|
|
113
|
+
*/
|
|
114
|
+
get: (key: Uint8Array, options?: QueryOptions) => AsyncIterable<QueryEvent>;
|
|
115
|
+
findProviders: (key: CID, options?: QueryOptions) => AsyncIterable<QueryEvent>;
|
|
116
|
+
findPeer: (id: PeerId, options?: QueryOptions) => AsyncIterable<QueryEvent>;
|
|
117
|
+
getClosestPeers: (key: Uint8Array, options?: QueryOptions) => AsyncIterable<QueryEvent>;
|
|
118
|
+
getPublicKey: (peer: PeerId, options?: QueryOptions) => Promise<PublicKey>;
|
|
119
|
+
provide: (key: CID, options?: QueryOptions) => AsyncIterable<QueryEvent>;
|
|
120
|
+
put: (key: Uint8Array, value: Uint8Array, options?: QueryOptions) => AsyncIterable<QueryEvent>;
|
|
121
|
+
enableServerMode: () => Promise<void>;
|
|
122
|
+
enableClientMode: () => Promise<void>;
|
|
123
|
+
refreshRoutingTable: () => Promise<void>;
|
|
124
|
+
on: (event: 'peer', handler: (peerData: PeerData) => void) => this;
|
|
125
|
+
}
|
|
126
|
+
export interface Dialer {
|
|
127
|
+
dialProtocol: (peer: PeerId, protocol: string, options?: {
|
|
128
|
+
signal?: AbortSignal;
|
|
129
|
+
}) => Promise<{
|
|
130
|
+
stream: MuxedStream;
|
|
131
|
+
}>;
|
|
132
|
+
}
|
|
133
|
+
export interface Addressable {
|
|
134
|
+
multiaddrs: Multiaddr[];
|
|
135
|
+
}
|
|
136
|
+
export interface Metrics {
|
|
137
|
+
updateComponentMetric: (options: {
|
|
138
|
+
component: string;
|
|
139
|
+
metric: string;
|
|
140
|
+
value: number;
|
|
141
|
+
}) => void;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Key } from 'interface-datastore/key';
|
|
2
|
+
import type { PeerData } from '@libp2p/interfaces/peer-data';
|
|
3
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
4
|
+
export declare function removePrivateAddresses(peer: PeerData): PeerData;
|
|
5
|
+
export declare function removePublicAddresses(peer: PeerData): PeerData;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a DHT ID by hashing a given Uint8Array
|
|
8
|
+
*/
|
|
9
|
+
export declare function convertBuffer(buf: Uint8Array): Promise<Uint8Array>;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a DHT ID by hashing a Peer ID
|
|
12
|
+
*/
|
|
13
|
+
export declare function convertPeerId(peerId: PeerId): Promise<Uint8Array>;
|
|
14
|
+
/**
|
|
15
|
+
* Convert a Uint8Array to their SHA2-256 hash
|
|
16
|
+
*/
|
|
17
|
+
export declare function bufferToKey(buf: Uint8Array): Key;
|
|
18
|
+
/**
|
|
19
|
+
* Convert a Uint8Array to their SHA2-256 hash
|
|
20
|
+
*/
|
|
21
|
+
export declare function bufferToRecordKey(buf: Uint8Array): Key;
|
|
22
|
+
/**
|
|
23
|
+
* Generate the key for a public key.
|
|
24
|
+
*/
|
|
25
|
+
export declare function keyForPublicKey(peer: PeerId): Uint8Array;
|
|
26
|
+
export declare function isPublicKeyKey(key: Uint8Array): boolean;
|
|
27
|
+
export declare function isIPNSKey(key: Uint8Array): boolean;
|
|
28
|
+
export declare function fromPublicKeyKey(key: Uint8Array): PeerId;
|
|
29
|
+
/**
|
|
30
|
+
* Create a new put record, encodes and signs it if enabled
|
|
31
|
+
*/
|
|
32
|
+
export declare function createPutRecord(key: Uint8Array, value: Uint8Array): Uint8Array;
|
|
33
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAM7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAMxD,wBAAgB,sBAAsB,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAchE;AAED,wBAAgB,qBAAqB,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAc/D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAE,GAAG,EAAE,UAAU,uBAInD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAE,MAAM,EAAE,MAAM,uBAElD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAE,UAAU,OAE3C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,UAAU,OAEjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAE,IAAI,EAAE,MAAM,cAK5C;AAED,wBAAgB,cAAc,CAAE,GAAG,EAAE,UAAU,WAE9C;AAED,wBAAgB,SAAS,CAAE,GAAG,EAAE,UAAU,WAEzC;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,UAAU,UAEhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,cAKlE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { sha256 } from 'multiformats/hashes/sha2';
|
|
2
|
+
import { Key } from 'interface-datastore/key';
|
|
3
|
+
import { Libp2pRecord } from '@libp2p/record';
|
|
4
|
+
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
5
|
+
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
6
|
+
import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
|
|
7
|
+
import isPrivateIp from 'private-ip';
|
|
8
|
+
import { peerIdFromBytes } from '@libp2p/peer-id';
|
|
9
|
+
import { RECORD_KEY_PREFIX } from './constants.js';
|
|
10
|
+
// const IPNS_PREFIX = uint8ArrayFromString('/ipns/')
|
|
11
|
+
const PK_PREFIX = uint8ArrayFromString('/pk/');
|
|
12
|
+
export function removePrivateAddresses(peer) {
|
|
13
|
+
return {
|
|
14
|
+
...peer,
|
|
15
|
+
multiaddrs: peer.multiaddrs.filter(multiaddr => {
|
|
16
|
+
const [[type, addr]] = multiaddr.stringTuples();
|
|
17
|
+
if (type !== 4 && type !== 6) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
// @ts-expect-error types are wrong https://github.com/frenchbread/private-ip/issues/18
|
|
21
|
+
return !isPrivateIp(addr);
|
|
22
|
+
})
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function removePublicAddresses(peer) {
|
|
26
|
+
return {
|
|
27
|
+
...peer,
|
|
28
|
+
multiaddrs: peer.multiaddrs.filter(multiaddr => {
|
|
29
|
+
const [[type, addr]] = multiaddr.stringTuples();
|
|
30
|
+
if (type !== 4 && type !== 6) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
// @ts-expect-error types are wrong https://github.com/frenchbread/private-ip/issues/18
|
|
34
|
+
return isPrivateIp(addr);
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates a DHT ID by hashing a given Uint8Array
|
|
40
|
+
*/
|
|
41
|
+
export async function convertBuffer(buf) {
|
|
42
|
+
const multihash = await sha256.digest(buf);
|
|
43
|
+
return multihash.digest;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Creates a DHT ID by hashing a Peer ID
|
|
47
|
+
*/
|
|
48
|
+
export async function convertPeerId(peerId) {
|
|
49
|
+
return await convertBuffer(peerId.toBytes());
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert a Uint8Array to their SHA2-256 hash
|
|
53
|
+
*/
|
|
54
|
+
export function bufferToKey(buf) {
|
|
55
|
+
return new Key('/' + uint8ArrayToString(buf, 'base32'), false);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Convert a Uint8Array to their SHA2-256 hash
|
|
59
|
+
*/
|
|
60
|
+
export function bufferToRecordKey(buf) {
|
|
61
|
+
return new Key(`${RECORD_KEY_PREFIX}/${uint8ArrayToString(buf, 'base32')}`, false);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate the key for a public key.
|
|
65
|
+
*/
|
|
66
|
+
export function keyForPublicKey(peer) {
|
|
67
|
+
return uint8ArrayConcat([
|
|
68
|
+
PK_PREFIX,
|
|
69
|
+
peer.toBytes()
|
|
70
|
+
]);
|
|
71
|
+
}
|
|
72
|
+
export function isPublicKeyKey(key) {
|
|
73
|
+
return uint8ArrayToString(key.slice(0, 4)) === '/pk/';
|
|
74
|
+
}
|
|
75
|
+
export function isIPNSKey(key) {
|
|
76
|
+
return uint8ArrayToString(key.slice(0, 4)) === '/ipns/';
|
|
77
|
+
}
|
|
78
|
+
export function fromPublicKeyKey(key) {
|
|
79
|
+
return peerIdFromBytes(key.slice(4));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Create a new put record, encodes and signs it if enabled
|
|
83
|
+
*/
|
|
84
|
+
export function createPutRecord(key, value) {
|
|
85
|
+
const timeReceived = new Date();
|
|
86
|
+
const rec = new Libp2pRecord(key, value, timeReceived);
|
|
87
|
+
return rec.serialize();
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@libp2p/kad-dht",
|
|
3
|
+
"version": "0.28.6",
|
|
4
|
+
"description": "JavaScript implementation of the Kad-DHT for libp2p",
|
|
5
|
+
"license": "Apache-2.0 OR MIT",
|
|
6
|
+
"homepage": "https://github.com/libp2p/js-libp2p-kad-dht#readme",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/libp2p/js-libp2p-kad-dht.git"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/libp2p/js-libp2p-kad-dht/issues"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"IPFS"
|
|
16
|
+
],
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=16.0.0",
|
|
19
|
+
"npm": ">=7.0.0"
|
|
20
|
+
},
|
|
21
|
+
"type": "module",
|
|
22
|
+
"types": "./dist/src/index.d.ts",
|
|
23
|
+
"files": [
|
|
24
|
+
"src",
|
|
25
|
+
"dist/src",
|
|
26
|
+
"!dist/test",
|
|
27
|
+
"!**/*.tsbuildinfo"
|
|
28
|
+
],
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"import": "./dist/src/index.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"eslintConfig": {
|
|
35
|
+
"extends": "ipfs",
|
|
36
|
+
"parserOptions": {
|
|
37
|
+
"sourceType": "module"
|
|
38
|
+
},
|
|
39
|
+
"ignorePatterns": [
|
|
40
|
+
"src/message/dht.d.ts"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
"release": {
|
|
44
|
+
"branches": [
|
|
45
|
+
"master"
|
|
46
|
+
],
|
|
47
|
+
"plugins": [
|
|
48
|
+
[
|
|
49
|
+
"@semantic-release/commit-analyzer",
|
|
50
|
+
{
|
|
51
|
+
"preset": "conventionalcommits",
|
|
52
|
+
"releaseRules": [
|
|
53
|
+
{
|
|
54
|
+
"breaking": true,
|
|
55
|
+
"release": "major"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"revert": true,
|
|
59
|
+
"release": "patch"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"type": "feat",
|
|
63
|
+
"release": "minor"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"type": "fix",
|
|
67
|
+
"release": "patch"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"type": "chore",
|
|
71
|
+
"release": "patch"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"type": "docs",
|
|
75
|
+
"release": "patch"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"type": "test",
|
|
79
|
+
"release": "patch"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"scope": "no-release",
|
|
83
|
+
"release": false
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
[
|
|
89
|
+
"@semantic-release/release-notes-generator",
|
|
90
|
+
{
|
|
91
|
+
"preset": "conventionalcommits",
|
|
92
|
+
"presetConfig": {
|
|
93
|
+
"types": [
|
|
94
|
+
{
|
|
95
|
+
"type": "feat",
|
|
96
|
+
"section": "Features"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"type": "fix",
|
|
100
|
+
"section": "Bug Fixes"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"type": "chore",
|
|
104
|
+
"section": "Trivial Changes"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"type": "docs",
|
|
108
|
+
"section": "Trivial Changes"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"type": "test",
|
|
112
|
+
"section": "Tests"
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"@semantic-release/changelog",
|
|
119
|
+
"@semantic-release/npm",
|
|
120
|
+
"@semantic-release/github",
|
|
121
|
+
"@semantic-release/git"
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
"scripts": {
|
|
125
|
+
"lint": "aegir lint",
|
|
126
|
+
"build": "tsc",
|
|
127
|
+
"postbuild": "npm run build:copy-proto-files",
|
|
128
|
+
"generate": "npm run generate:proto && npm run generate:proto-types",
|
|
129
|
+
"generate:proto": "pbjs -t static-module -w es6 -r libp2p-dht-message --force-number --no-verify --no-delimited --no-create --no-beautify --no-defaults --lint eslint-disable -o src/message/dht.js ./src/message/dht.proto",
|
|
130
|
+
"generate:proto-types": "pbts -o src/message/dht.d.ts src/message/dht.js",
|
|
131
|
+
"build:copy-proto-files": "cp src/message/dht.js src/message/dht.d.ts dist/src/message",
|
|
132
|
+
"pretest": "npm run build",
|
|
133
|
+
"test": "aegir test -t node -f ./dist/test",
|
|
134
|
+
"test:node": "aegir test -t node -f ./dist/test",
|
|
135
|
+
"dep-check": "aegir dep-check",
|
|
136
|
+
"release": "semantic-release"
|
|
137
|
+
},
|
|
138
|
+
"dependencies": {
|
|
139
|
+
"@libp2p/crypto": "^0.22.7",
|
|
140
|
+
"@libp2p/interfaces": "^1.3.2",
|
|
141
|
+
"@libp2p/logger": "^1.0.2",
|
|
142
|
+
"@libp2p/peer-id": "^1.0.4",
|
|
143
|
+
"@libp2p/record": "^0.10.6",
|
|
144
|
+
"@libp2p/topology": "^1.0.3",
|
|
145
|
+
"@multiformats/multiaddr": "^10.0.0",
|
|
146
|
+
"any-signal": "^3.0.0",
|
|
147
|
+
"datastore-core": "^7.0.0",
|
|
148
|
+
"err-code": "^3.0.0",
|
|
149
|
+
"hashlru": "^2.3.0",
|
|
150
|
+
"interface-datastore": "^6.0.2",
|
|
151
|
+
"it-all": "^1.0.5",
|
|
152
|
+
"it-drain": "^1.0.4",
|
|
153
|
+
"it-first": "^1.0.4",
|
|
154
|
+
"it-length": "^1.0.3",
|
|
155
|
+
"it-length-prefixed": "^6.0.1",
|
|
156
|
+
"it-map": "^1.0.5",
|
|
157
|
+
"it-merge": "^1.0.3",
|
|
158
|
+
"it-parallel": "^2.0.1",
|
|
159
|
+
"it-pipe": "^2.0.3",
|
|
160
|
+
"it-stream-types": "^1.0.4",
|
|
161
|
+
"it-take": "^1.0.2",
|
|
162
|
+
"k-bucket": "^5.1.0",
|
|
163
|
+
"multiformats": "^9.4.5",
|
|
164
|
+
"p-defer": "^4.0.0",
|
|
165
|
+
"p-map": "^5.3.0",
|
|
166
|
+
"p-queue": "^7.2.0",
|
|
167
|
+
"private-ip": "^2.3.3",
|
|
168
|
+
"protobufjs": "^6.10.2",
|
|
169
|
+
"streaming-iterables": "^6.0.0",
|
|
170
|
+
"timeout-abort-controller": "^3.0.0",
|
|
171
|
+
"uint8arrays": "^3.0.0",
|
|
172
|
+
"varint": "^6.0.0"
|
|
173
|
+
},
|
|
174
|
+
"devDependencies": {
|
|
175
|
+
"@libp2p/interface-compliance-tests": "^1.1.3",
|
|
176
|
+
"@libp2p/peer-id-factory": "^1.0.4",
|
|
177
|
+
"@libp2p/peer-store": "^1.0.1",
|
|
178
|
+
"@types/lodash.random": "^3.2.6",
|
|
179
|
+
"@types/lodash.range": "^3.2.6",
|
|
180
|
+
"@types/node": "^16.11.7",
|
|
181
|
+
"@types/varint": "^6.0.0",
|
|
182
|
+
"@types/which": "^2.0.1",
|
|
183
|
+
"aegir": "^36.1.3",
|
|
184
|
+
"datastore-level": "^8.0.0",
|
|
185
|
+
"delay": "^5.0.0",
|
|
186
|
+
"execa": "^6.0.0",
|
|
187
|
+
"it-filter": "^1.0.3",
|
|
188
|
+
"it-last": "^1.0.6",
|
|
189
|
+
"it-pair": "^2.0.2",
|
|
190
|
+
"libp2p": "^0.36.2",
|
|
191
|
+
"lodash.random": "^3.2.0",
|
|
192
|
+
"lodash.range": "^3.2.0",
|
|
193
|
+
"p-retry": "^5.0.0",
|
|
194
|
+
"sinon": "^13.0.1",
|
|
195
|
+
"which": "^2.0.2"
|
|
196
|
+
},
|
|
197
|
+
"browser": {
|
|
198
|
+
"./dist/src/routing-table/generated-prefix-list.js": "./dist/src/routing-table/generated-prefix-list-browser.js"
|
|
199
|
+
}
|
|
200
|
+
}
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// MaxRecordAge specifies the maximum time that any node will hold onto a record
|
|
2
|
+
// from the time its received. This does not apply to any other forms of validity that
|
|
3
|
+
// the record may contain.
|
|
4
|
+
// For example, a record may contain an ipns entry with an EOL saying its valid
|
|
5
|
+
// until the year 2020 (a great time in the future). For that record to stick around
|
|
6
|
+
// it must be rebroadcasted more frequently than once every 'MaxRecordAge'
|
|
7
|
+
|
|
8
|
+
export const second = 1000
|
|
9
|
+
export const minute = 60 * second
|
|
10
|
+
export const hour = 60 * minute
|
|
11
|
+
|
|
12
|
+
export const MAX_RECORD_AGE = 36 * hour
|
|
13
|
+
|
|
14
|
+
export const PROTOCOL_DHT = '/kad/1.0.0'
|
|
15
|
+
|
|
16
|
+
export const RECORD_KEY_PREFIX = '/dht/record'
|
|
17
|
+
|
|
18
|
+
export const PROVIDER_KEY_PREFIX = '/dht/provider'
|
|
19
|
+
|
|
20
|
+
export const PROVIDERS_LRU_CACHE_SIZE = 256
|
|
21
|
+
|
|
22
|
+
export const PROVIDERS_VALIDITY = 24 * hour
|
|
23
|
+
|
|
24
|
+
export const PROVIDERS_CLEANUP_INTERVAL = hour
|
|
25
|
+
|
|
26
|
+
export const READ_MESSAGE_TIMEOUT = 10 * second
|
|
27
|
+
|
|
28
|
+
// The number of records that will be retrieved on a call to getMany()
|
|
29
|
+
export const GET_MANY_RECORD_COUNT = 16
|
|
30
|
+
|
|
31
|
+
// K is the maximum number of requests to perform before returning failure
|
|
32
|
+
export const K = 20
|
|
33
|
+
|
|
34
|
+
// Alpha is the concurrency for asynchronous requests
|
|
35
|
+
export const ALPHA = 3
|
|
36
|
+
|
|
37
|
+
// How often we look for our closest DHT neighbours
|
|
38
|
+
export const QUERY_SELF_INTERVAL = Number(5 * minute)
|
|
39
|
+
|
|
40
|
+
// How long to look for our closest DHT neighbours for
|
|
41
|
+
export const QUERY_SELF_TIMEOUT = Number(30 * second)
|
|
42
|
+
|
|
43
|
+
// How often we try to find new peers
|
|
44
|
+
export const TABLE_REFRESH_INTERVAL = Number(5 * minute)
|
|
45
|
+
|
|
46
|
+
// How how long to look for new peers for
|
|
47
|
+
export const TABLE_REFRESH_QUERY_TIMEOUT = Number(30 * second)
|
|
48
|
+
|
|
49
|
+
// When a timeout is not specified, run a query for this long
|
|
50
|
+
export const DEFAULT_QUERY_TIMEOUT = Number(30 * second)
|