@libp2p/kad-dht 0.28.7 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/src/content-fetching/index.d.ts +6 -9
  2. package/dist/src/content-fetching/index.d.ts.map +1 -1
  3. package/dist/src/content-fetching/index.js +14 -11
  4. package/dist/src/content-fetching/index.js.map +1 -1
  5. package/dist/src/content-routing/index.d.ts +6 -9
  6. package/dist/src/content-routing/index.d.ts.map +1 -1
  7. package/dist/src/content-routing/index.js +15 -13
  8. package/dist/src/content-routing/index.js.map +1 -1
  9. package/dist/src/dual-kad-dht.d.ts +6 -6
  10. package/dist/src/dual-kad-dht.d.ts.map +1 -1
  11. package/dist/src/dual-kad-dht.js +9 -4
  12. package/dist/src/dual-kad-dht.js.map +1 -1
  13. package/dist/src/index.d.ts +14 -3
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +14 -12
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/kad-dht.d.ts +12 -52
  18. package/dist/src/kad-dht.d.ts.map +1 -1
  19. package/dist/src/kad-dht.js +45 -48
  20. package/dist/src/kad-dht.js.map +1 -1
  21. package/dist/src/network.d.ts +7 -7
  22. package/dist/src/network.d.ts.map +1 -1
  23. package/dist/src/network.js +10 -6
  24. package/dist/src/network.js.map +1 -1
  25. package/dist/src/peer-routing/index.d.ts +6 -8
  26. package/dist/src/peer-routing/index.d.ts.map +1 -1
  27. package/dist/src/peer-routing/index.js +18 -16
  28. package/dist/src/peer-routing/index.js.map +1 -1
  29. package/dist/src/providers.d.ts +6 -6
  30. package/dist/src/providers.d.ts.map +1 -1
  31. package/dist/src/providers.js +11 -7
  32. package/dist/src/providers.js.map +1 -1
  33. package/dist/src/query/manager.d.ts +6 -8
  34. package/dist/src/query/manager.d.ts.map +1 -1
  35. package/dist/src/query/manager.js +10 -7
  36. package/dist/src/query/manager.js.map +1 -1
  37. package/dist/src/query/query-path.d.ts.map +1 -1
  38. package/dist/src/query/query-path.js +2 -3
  39. package/dist/src/query/query-path.js.map +1 -1
  40. package/dist/src/query-self.d.ts +6 -6
  41. package/dist/src/query-self.d.ts.map +1 -1
  42. package/dist/src/query-self.js +8 -4
  43. package/dist/src/query-self.js.map +1 -1
  44. package/dist/src/routing-table/index.d.ts +10 -14
  45. package/dist/src/routing-table/index.d.ts.map +1 -1
  46. package/dist/src/routing-table/index.js +12 -10
  47. package/dist/src/routing-table/index.js.map +1 -1
  48. package/dist/src/routing-table/refresh.d.ts +5 -3
  49. package/dist/src/routing-table/refresh.d.ts.map +1 -1
  50. package/dist/src/routing-table/refresh.js +4 -2
  51. package/dist/src/routing-table/refresh.js.map +1 -1
  52. package/dist/src/rpc/handlers/add-provider.d.ts +5 -3
  53. package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
  54. package/dist/src/rpc/handlers/add-provider.js +4 -2
  55. package/dist/src/rpc/handlers/add-provider.js.map +1 -1
  56. package/dist/src/rpc/handlers/find-node.d.ts +5 -3
  57. package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
  58. package/dist/src/rpc/handlers/find-node.js +4 -2
  59. package/dist/src/rpc/handlers/find-node.js.map +1 -1
  60. package/dist/src/rpc/handlers/get-providers.d.ts +6 -6
  61. package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
  62. package/dist/src/rpc/handlers/get-providers.js +8 -4
  63. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  64. package/dist/src/rpc/handlers/get-value.d.ts +6 -9
  65. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  66. package/dist/src/rpc/handlers/get-value.js +10 -7
  67. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  68. package/dist/src/rpc/handlers/ping.d.ts +3 -1
  69. package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
  70. package/dist/src/rpc/handlers/ping.js +2 -0
  71. package/dist/src/rpc/handlers/ping.js.map +1 -1
  72. package/dist/src/rpc/handlers/put-value.d.ts +7 -8
  73. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  74. package/dist/src/rpc/handlers/put-value.js +10 -7
  75. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  76. package/dist/src/rpc/index.d.ts +6 -10
  77. package/dist/src/rpc/index.d.ts.map +1 -1
  78. package/dist/src/rpc/index.js +14 -9
  79. package/dist/src/rpc/index.js.map +1 -1
  80. package/dist/src/topology-listener.d.ts +6 -6
  81. package/dist/src/topology-listener.d.ts.map +1 -1
  82. package/dist/src/topology-listener.js +9 -5
  83. package/dist/src/topology-listener.js.map +1 -1
  84. package/package.json +21 -21
  85. package/src/content-fetching/index.ts +17 -19
  86. package/src/content-routing/index.ts +18 -21
  87. package/src/dual-kad-dht.ts +12 -9
  88. package/src/index.ts +22 -14
  89. package/src/kad-dht.ts +59 -117
  90. package/src/network.ts +14 -12
  91. package/src/peer-routing/index.ts +21 -23
  92. package/src/providers.ts +14 -11
  93. package/src/query/manager.ts +13 -14
  94. package/src/query/query-path.ts +2 -3
  95. package/src/query-self.ts +11 -9
  96. package/src/routing-table/index.ts +20 -23
  97. package/src/routing-table/refresh.ts +9 -4
  98. package/src/rpc/handlers/add-provider.ts +9 -4
  99. package/src/rpc/handlers/find-node.ts +9 -4
  100. package/src/rpc/handlers/get-providers.ts +11 -9
  101. package/src/rpc/handlers/get-value.ts +13 -15
  102. package/src/rpc/handlers/ping.ts +6 -1
  103. package/src/rpc/handlers/put-value.ts +14 -15
  104. package/src/rpc/index.ts +19 -18
  105. package/src/topology-listener.ts +12 -10
  106. package/dist/src/routing-table/types.d.ts +0 -24
  107. package/dist/src/routing-table/types.d.ts.map +0 -1
  108. package/dist/src/rpc/handlers/index.d.ts +0 -13
  109. package/dist/src/rpc/handlers/index.d.ts.map +0 -1
  110. package/dist/src/rpc/types.d.ts +0 -6
  111. package/dist/src/rpc/types.d.ts.map +0 -1
  112. package/dist/src/types.d.ts +0 -143
  113. package/dist/src/types.d.ts.map +0 -1
@@ -1,24 +0,0 @@
1
- import type PeerId from 'peer-id';
2
- export interface KBucketPeer {
3
- id: Uint8Array;
4
- peer: PeerId;
5
- }
6
- export interface KBucket {
7
- id: Uint8Array;
8
- contacts: KBucketPeer[];
9
- dontSplit: boolean;
10
- left: KBucket;
11
- right: KBucket;
12
- }
13
- export interface KBucketTree {
14
- root: KBucket;
15
- localNodeId: Uint8Array;
16
- on: (event: 'ping', callback: (oldContacts: KBucketPeer[], newContact: KBucketPeer) => void) => void;
17
- closest: (key: Uint8Array, count: number) => KBucketPeer[];
18
- closestPeer: (key: Uint8Array) => KBucketPeer;
19
- remove: (key: Uint8Array) => void;
20
- add: (peer: KBucketPeer) => void;
21
- count: () => number;
22
- toIterable: () => Iterable<KBucket>;
23
- }
24
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routing-table/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,SAAS,CAAA;AAEjC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,UAAU,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,UAAU,CAAA;IACd,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,UAAU,CAAA;IACvB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,WAAW,KAAK,IAAI,KAAK,IAAI,CAAA;IACpG,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAA;IAC1D,WAAW,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,WAAW,CAAA;IAC7C,MAAM,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAA;IACjC,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IAChC,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;CACpC"}
@@ -1,13 +0,0 @@
1
- declare function _exports({ peerId, providers, peerStore, addressable, peerRouting, records, validators, lan }: {
2
- peerId: import('peer-id');
3
- providers: import('../../providers').Providers;
4
- peerStore: import('libp2p/src/peer-store/types').PeerStore;
5
- addressable: import('../../types').Addressable;
6
- peerRouting: import('../../peer-routing').PeerRouting;
7
- records: import('interface-datastore').Datastore;
8
- validators: import('libp2p-interfaces/src/types').DhtValidators;
9
- lan?: boolean | undefined;
10
- }): (type: number) => import("../types").DHTMessageHandler;
11
- export = _exports;
12
- export type DHTMessageHandler = import('../types').DHTMessageHandler;
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/rpc/handlers/index.js"],"names":[],"mappings":"AAyBiB;IAToB,MAAM,EAAhC,OAAO,SAAS,CAAC;IAC2B,SAAS,EAArD,OAAO,iBAAiB,EAAE,SAAS;IACqB,SAAS,EAAjE,OAAO,6BAA6B,EAAE,SAAS;IACL,WAAW,EAArD,OAAO,aAAa,EAAE,WAAW;IACgB,WAAW,EAA5D,OAAO,oBAAoB,EAAE,WAAW;IACQ,OAAO,EAAvD,OAAO,qBAAqB,EAAE,SAAS;IACqB,UAAU,EAAtE,OAAO,6BAA6B,EAAE,aAAa;IAClC,GAAG;WAgBlB,MAAM,0CAOlB;;gCAnCY,OAAO,UAAU,EAAE,iBAAiB"}
@@ -1,6 +0,0 @@
1
- import type PeerId from 'peer-id';
2
- import type { Message } from '../message';
3
- export interface DHTMessageHandler {
4
- handle: (peerId: PeerId, msg: Message) => Promise<Message | undefined>;
5
- }
6
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/rpc/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,SAAS,CAAA;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;CACvE"}
@@ -1,143 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}