@libp2p/kad-dht 11.0.8 → 12.0.0-4e0135c7d

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 (137) hide show
  1. package/README.md +78 -0
  2. package/dist/index.min.js +23 -23
  3. package/dist/src/constants.d.ts +2 -4
  4. package/dist/src/constants.d.ts.map +1 -1
  5. package/dist/src/constants.js +7 -9
  6. package/dist/src/constants.js.map +1 -1
  7. package/dist/src/content-fetching/index.d.ts +7 -7
  8. package/dist/src/content-fetching/index.d.ts.map +1 -1
  9. package/dist/src/content-fetching/index.js +13 -7
  10. package/dist/src/content-fetching/index.js.map +1 -1
  11. package/dist/src/content-routing/index.d.ts +5 -4
  12. package/dist/src/content-routing/index.d.ts.map +1 -1
  13. package/dist/src/content-routing/index.js +23 -13
  14. package/dist/src/content-routing/index.js.map +1 -1
  15. package/dist/src/index.d.ts +142 -28
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +87 -2
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/src/kad-dht.d.ts +20 -21
  20. package/dist/src/kad-dht.d.ts.map +1 -1
  21. package/dist/src/kad-dht.js +181 -35
  22. package/dist/src/kad-dht.js.map +1 -1
  23. package/dist/src/message/dht.d.ts +35 -35
  24. package/dist/src/message/dht.d.ts.map +1 -1
  25. package/dist/src/message/dht.js +150 -130
  26. package/dist/src/message/dht.js.map +1 -1
  27. package/dist/src/message/utils.d.ts +5 -0
  28. package/dist/src/message/utils.d.ts.map +1 -0
  29. package/dist/src/message/utils.js +20 -0
  30. package/dist/src/message/utils.js.map +1 -0
  31. package/dist/src/network.d.ts +8 -8
  32. package/dist/src/network.d.ts.map +1 -1
  33. package/dist/src/network.js +30 -18
  34. package/dist/src/network.js.map +1 -1
  35. package/dist/src/peer-routing/index.d.ts +6 -6
  36. package/dist/src/peer-routing/index.d.ts.map +1 -1
  37. package/dist/src/peer-routing/index.js +48 -35
  38. package/dist/src/peer-routing/index.js.map +1 -1
  39. package/dist/src/providers.d.ts +7 -0
  40. package/dist/src/providers.d.ts.map +1 -1
  41. package/dist/src/providers.js.map +1 -1
  42. package/dist/src/query/events.d.ts +13 -12
  43. package/dist/src/query/events.d.ts.map +1 -1
  44. package/dist/src/query/events.js +2 -2
  45. package/dist/src/query/events.js.map +1 -1
  46. package/dist/src/query/manager.d.ts +8 -5
  47. package/dist/src/query/manager.d.ts.map +1 -1
  48. package/dist/src/query/manager.js +6 -6
  49. package/dist/src/query/manager.js.map +1 -1
  50. package/dist/src/query/query-path.d.ts +3 -3
  51. package/dist/src/query/query-path.d.ts.map +1 -1
  52. package/dist/src/query-self.d.ts +1 -1
  53. package/dist/src/query-self.d.ts.map +1 -1
  54. package/dist/src/query-self.js +2 -2
  55. package/dist/src/query-self.js.map +1 -1
  56. package/dist/src/routing-table/index.d.ts +5 -6
  57. package/dist/src/routing-table/index.d.ts.map +1 -1
  58. package/dist/src/routing-table/index.js +72 -58
  59. package/dist/src/routing-table/index.js.map +1 -1
  60. package/dist/src/routing-table/refresh.d.ts +1 -1
  61. package/dist/src/routing-table/refresh.d.ts.map +1 -1
  62. package/dist/src/routing-table/refresh.js +2 -2
  63. package/dist/src/routing-table/refresh.js.map +1 -1
  64. package/dist/src/rpc/handlers/add-provider.d.ts +2 -1
  65. package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
  66. package/dist/src/rpc/handlers/add-provider.js +8 -6
  67. package/dist/src/rpc/handlers/add-provider.js.map +1 -1
  68. package/dist/src/rpc/handlers/find-node.d.ts +5 -3
  69. package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
  70. package/dist/src/rpc/handlers/find-node.js +22 -14
  71. package/dist/src/rpc/handlers/find-node.js.map +1 -1
  72. package/dist/src/rpc/handlers/get-providers.d.ts +5 -3
  73. package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
  74. package/dist/src/rpc/handlers/get-providers.js +29 -16
  75. package/dist/src/rpc/handlers/get-providers.js.map +1 -1
  76. package/dist/src/rpc/handlers/get-value.d.ts +2 -1
  77. package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
  78. package/dist/src/rpc/handlers/get-value.js +16 -7
  79. package/dist/src/rpc/handlers/get-value.js.map +1 -1
  80. package/dist/src/rpc/handlers/ping.d.ts +5 -2
  81. package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
  82. package/dist/src/rpc/handlers/ping.js +2 -2
  83. package/dist/src/rpc/handlers/ping.js.map +1 -1
  84. package/dist/src/rpc/handlers/put-value.d.ts +2 -1
  85. package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
  86. package/dist/src/rpc/handlers/put-value.js +8 -7
  87. package/dist/src/rpc/handlers/put-value.js.map +1 -1
  88. package/dist/src/rpc/index.d.ts +4 -3
  89. package/dist/src/rpc/index.d.ts.map +1 -1
  90. package/dist/src/rpc/index.js +11 -11
  91. package/dist/src/rpc/index.js.map +1 -1
  92. package/dist/src/topology-listener.d.ts +1 -1
  93. package/dist/src/topology-listener.d.ts.map +1 -1
  94. package/dist/src/topology-listener.js +2 -2
  95. package/dist/src/topology-listener.js.map +1 -1
  96. package/dist/src/utils.d.ts +5 -2
  97. package/dist/src/utils.d.ts.map +1 -1
  98. package/dist/src/utils.js +32 -2
  99. package/dist/src/utils.js.map +1 -1
  100. package/package.json +13 -11
  101. package/src/constants.ts +7 -11
  102. package/src/content-fetching/index.ts +21 -14
  103. package/src/content-routing/index.ts +29 -18
  104. package/src/index.ts +148 -32
  105. package/src/kad-dht.ts +225 -56
  106. package/src/message/dht.proto +32 -32
  107. package/src/message/dht.ts +155 -138
  108. package/src/message/utils.ts +25 -0
  109. package/src/network.ts +41 -25
  110. package/src/peer-routing/index.ts +57 -42
  111. package/src/providers.ts +7 -0
  112. package/src/query/events.ts +14 -14
  113. package/src/query/manager.ts +14 -10
  114. package/src/query/query-path.ts +3 -3
  115. package/src/query-self.ts +3 -3
  116. package/src/routing-table/index.ts +86 -64
  117. package/src/routing-table/refresh.ts +4 -4
  118. package/src/rpc/handlers/add-provider.ts +10 -7
  119. package/src/rpc/handlers/find-node.ts +27 -18
  120. package/src/rpc/handlers/get-providers.ts +33 -20
  121. package/src/rpc/handlers/get-value.ts +18 -7
  122. package/src/rpc/handlers/ping.ts +7 -3
  123. package/src/rpc/handlers/put-value.ts +11 -9
  124. package/src/rpc/index.ts +14 -13
  125. package/src/topology-listener.ts +3 -3
  126. package/src/utils.ts +41 -2
  127. package/dist/src/dual-kad-dht.d.ts +0 -69
  128. package/dist/src/dual-kad-dht.d.ts.map +0 -1
  129. package/dist/src/dual-kad-dht.js +0 -304
  130. package/dist/src/dual-kad-dht.js.map +0 -1
  131. package/dist/src/message/index.d.ts +0 -35
  132. package/dist/src/message/index.d.ts.map +0 -1
  133. package/dist/src/message/index.js +0 -92
  134. package/dist/src/message/index.js.map +0 -1
  135. package/dist/typedoc-urls.json +0 -55
  136. package/src/dual-kad-dht.ts +0 -384
  137. package/src/message/index.ts +0 -117
@@ -1 +0,0 @@
1
- {"version":3,"file":"dual-kad-dht.d.ts","sourceRoot":"","sources":["../../src/dual-kad-dht.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAa,iBAAiB,EAAe,MAAM,mBAAmB,CAAA;AAI3I,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,KAAK,EAAE,UAAU,EAAU,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5G,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAU,MAAM,EAAY,MAAM,mBAAmB,CAAA;AAElI,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAsG3C;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,iBAAiB,CAAC,mBAAmB,CAAE,YAAW,UAAU,EAAE,aAAa;IAChH,SAAgB,GAAG,EAAE,aAAa,CAAA;IAClC,SAAgB,GAAG,EAAE,aAAa,CAAA;IAClC,SAAgB,UAAU,EAAE,gBAAgB,CAAA;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,gBAAgB,EAAE,IAAI,GAAE,UAAe;IAwDhE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,0BAAyB;IAEtD,IAAI,CAAC,oBAAoB,CAAC,IAAK,cAAc,CAE5C;IAED,IAAI,CAAC,iBAAiB,CAAC,IAAK,WAAW,CAEtC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAK,aAAa,CAE1C;IAED;;OAEG;IACH,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,OAAO,IAAK,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAI9C;;OAEG;IACG,OAAO,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAO7B;;;OAGG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;IASxG;;OAEG;IACK,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;IAyCrF;;OAEG;IACK,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;IAuClF;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;IASzG;;OAEG;IACK,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;IAmBrF;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC;IAO5G,mBAAmB,IAAK,OAAO,CAAC,IAAI,CAAC;CAM5C"}
@@ -1,304 +0,0 @@
1
- import { contentRoutingSymbol, peerDiscoverySymbol, peerRoutingSymbol, CodeError, TypedEventEmitter, CustomEvent } from '@libp2p/interface';
2
- import drain from 'it-drain';
3
- import merge from 'it-merge';
4
- import isPrivate from 'private-ip';
5
- import { DefaultKadDHT } from './kad-dht.js';
6
- import { queryErrorEvent } from './query/events.js';
7
- /**
8
- * Wrapper class to convert events into returned values
9
- */
10
- class DHTContentRouting {
11
- dht;
12
- constructor(dht) {
13
- this.dht = dht;
14
- }
15
- async provide(cid, options = {}) {
16
- await drain(this.dht.provide(cid, options));
17
- }
18
- async *findProviders(cid, options = {}) {
19
- for await (const event of this.dht.findProviders(cid, options)) {
20
- if (event.name === 'PROVIDER') {
21
- yield* event.providers;
22
- }
23
- }
24
- }
25
- async put(key, value, options) {
26
- await drain(this.dht.put(key, value, options));
27
- }
28
- async get(key, options) {
29
- for await (const event of this.dht.get(key, options)) {
30
- if (event.name === 'VALUE') {
31
- return event.value;
32
- }
33
- }
34
- throw new CodeError('Not found', 'ERR_NOT_FOUND');
35
- }
36
- }
37
- /**
38
- * Wrapper class to convert events into returned values
39
- */
40
- class DHTPeerRouting {
41
- dht;
42
- constructor(dht) {
43
- this.dht = dht;
44
- }
45
- async findPeer(peerId, options = {}) {
46
- for await (const event of this.dht.findPeer(peerId, options)) {
47
- if (event.name === 'FINAL_PEER') {
48
- return event.peer;
49
- }
50
- }
51
- throw new CodeError('Not found', 'ERR_NOT_FOUND');
52
- }
53
- async *getClosestPeers(key, options = {}) {
54
- for await (const event of this.dht.getClosestPeers(key, options)) {
55
- if (event.name === 'FINAL_PEER') {
56
- yield event.peer;
57
- }
58
- }
59
- }
60
- }
61
- // see https://github.com/multiformats/multiaddr/blob/master/protocols.csv
62
- const P2P_CIRCUIT_CODE = 290;
63
- const DNS4_CODE = 54;
64
- const DNS6_CODE = 55;
65
- const DNSADDR_CODE = 56;
66
- const IP4_CODE = 4;
67
- const IP6_CODE = 41;
68
- function multiaddrIsPublic(multiaddr) {
69
- const tuples = multiaddr.stringTuples();
70
- // p2p-circuit should not enable server mode
71
- for (const tuple of tuples) {
72
- if (tuple[0] === P2P_CIRCUIT_CODE) {
73
- return false;
74
- }
75
- }
76
- // dns4 or dns6 or dnsaddr
77
- if (tuples[0][0] === DNS4_CODE || tuples[0][0] === DNS6_CODE || tuples[0][0] === DNSADDR_CODE) {
78
- return true;
79
- }
80
- // ip4 or ip6
81
- if (tuples[0][0] === IP4_CODE || tuples[0][0] === IP6_CODE) {
82
- const result = isPrivate(`${tuples[0][1]}`);
83
- const isPublic = result == null || !result;
84
- return isPublic;
85
- }
86
- return false;
87
- }
88
- /**
89
- * A DHT implementation modelled after Kademlia with S/Kademlia modifications.
90
- * Original implementation in go: https://github.com/libp2p/go-libp2p-kad-dht.
91
- */
92
- export class DefaultDualKadDHT extends TypedEventEmitter {
93
- wan;
94
- lan;
95
- components;
96
- contentRouting;
97
- peerRouting;
98
- log;
99
- constructor(components, init = {}) {
100
- super();
101
- this.components = components;
102
- this.log = components.logger.forComponent('libp2p:kad-dht');
103
- this.wan = new DefaultKadDHT(components, {
104
- protocolPrefix: '/ipfs',
105
- ...init,
106
- lan: false
107
- });
108
- this.lan = new DefaultKadDHT(components, {
109
- protocolPrefix: '/ipfs',
110
- ...init,
111
- clientMode: false,
112
- lan: true
113
- });
114
- this.contentRouting = new DHTContentRouting(this);
115
- this.peerRouting = new DHTPeerRouting(this);
116
- // handle peers being discovered during processing of DHT messages
117
- this.wan.addEventListener('peer', (evt) => {
118
- this.dispatchEvent(new CustomEvent('peer', {
119
- detail: evt.detail
120
- }));
121
- });
122
- this.lan.addEventListener('peer', (evt) => {
123
- this.dispatchEvent(new CustomEvent('peer', {
124
- detail: evt.detail
125
- }));
126
- });
127
- // if client mode has not been explicitly specified, auto-switch to server
128
- // mode when the node's peer data is updated with publicly dialable addresses
129
- if (init.clientMode == null) {
130
- components.events.addEventListener('self:peer:update', (evt) => {
131
- this.log('received update of self-peer info');
132
- const hasPublicAddress = evt.detail.peer.addresses
133
- .some(({ multiaddr }) => multiaddrIsPublic(multiaddr));
134
- this.getMode()
135
- .then(async (mode) => {
136
- if (hasPublicAddress && mode === 'client') {
137
- await this.setMode('server');
138
- }
139
- else if (mode === 'server' && !hasPublicAddress) {
140
- await this.setMode('client');
141
- }
142
- })
143
- .catch(err => {
144
- this.log.error('error setting dht server mode', err);
145
- });
146
- });
147
- }
148
- }
149
- [Symbol.toStringTag] = '@libp2p/dual-kad-dht';
150
- get [contentRoutingSymbol]() {
151
- return this.contentRouting;
152
- }
153
- get [peerRoutingSymbol]() {
154
- return this.peerRouting;
155
- }
156
- get [peerDiscoverySymbol]() {
157
- return this;
158
- }
159
- /**
160
- * Is this DHT running.
161
- */
162
- isStarted() {
163
- return this.wan.isStarted() && this.lan.isStarted();
164
- }
165
- /**
166
- * If 'server' this node will respond to DHT queries, if 'client' this node will not
167
- */
168
- async getMode() {
169
- return this.wan.getMode();
170
- }
171
- /**
172
- * If 'server' this node will respond to DHT queries, if 'client' this node will not
173
- */
174
- async setMode(mode) {
175
- await this.wan.setMode(mode);
176
- }
177
- /**
178
- * Start listening to incoming connections.
179
- */
180
- async start() {
181
- await Promise.all([
182
- this.lan.start(),
183
- this.wan.start()
184
- ]);
185
- }
186
- /**
187
- * Stop accepting incoming connections and sending outgoing
188
- * messages.
189
- */
190
- async stop() {
191
- await Promise.all([
192
- this.lan.stop(),
193
- this.wan.stop()
194
- ]);
195
- }
196
- /**
197
- * Store the given key/value pair in the DHT
198
- */
199
- async *put(key, value, options = {}) {
200
- for await (const event of merge(this.lan.put(key, value, options), this.wan.put(key, value, options))) {
201
- yield event;
202
- }
203
- }
204
- /**
205
- * Get the value that corresponds to the passed key
206
- */
207
- async *get(key, options = {}) {
208
- let queriedPeers = false;
209
- let foundValue = false;
210
- for await (const event of merge(this.lan.get(key, options), this.wan.get(key, options))) {
211
- yield event;
212
- if (event.name === 'DIAL_PEER') {
213
- queriedPeers = true;
214
- }
215
- if (event.name === 'VALUE') {
216
- queriedPeers = true;
217
- if (event.value != null) {
218
- foundValue = true;
219
- }
220
- }
221
- if (event.name === 'SEND_QUERY') {
222
- queriedPeers = true;
223
- }
224
- }
225
- if (!queriedPeers) {
226
- throw new CodeError('No peers found in routing table!', 'ERR_NO_PEERS_IN_ROUTING_TABLE');
227
- }
228
- if (!foundValue) {
229
- yield queryErrorEvent({
230
- from: this.components.peerId,
231
- error: new CodeError('Not found', 'ERR_NOT_FOUND')
232
- }, options);
233
- }
234
- }
235
- // ----------- Content Routing
236
- /**
237
- * Announce to the network that we can provide given key's value
238
- */
239
- async *provide(key, options = {}) {
240
- let sent = 0;
241
- let success = 0;
242
- const errors = [];
243
- const dhts = [this.lan];
244
- // only run provide on the wan if we are in server mode
245
- if ((await this.wan.getMode()) === 'server') {
246
- dhts.push(this.wan);
247
- }
248
- for await (const event of merge(...dhts.map(dht => dht.provide(key, options)))) {
249
- yield event;
250
- if (event.name === 'SEND_QUERY') {
251
- sent++;
252
- }
253
- if (event.name === 'QUERY_ERROR') {
254
- errors.push(event.error);
255
- }
256
- if (event.name === 'PEER_RESPONSE' && event.messageName === 'ADD_PROVIDER') {
257
- this.log('sent provider record for %s to %p', key, event.from);
258
- success++;
259
- }
260
- }
261
- if (success === 0) {
262
- if (errors.length > 0) {
263
- // if all sends failed, throw an error to inform the caller
264
- throw new CodeError(`Failed to provide to ${errors.length} of ${sent} peers`, 'ERR_PROVIDES_FAILED', { errors });
265
- }
266
- throw new CodeError('Failed to provide - no peers found', 'ERR_PROVIDES_FAILED');
267
- }
268
- }
269
- /**
270
- * Search the dht for up to `K` providers of the given CID
271
- */
272
- async *findProviders(key, options = {}) {
273
- yield* merge(this.lan.findProviders(key, options), this.wan.findProviders(key, options));
274
- }
275
- // ----------- Peer Routing -----------
276
- /**
277
- * Search for a peer with the given ID
278
- */
279
- async *findPeer(id, options = {}) {
280
- let queriedPeers = false;
281
- for await (const event of merge(this.lan.findPeer(id, options), this.wan.findPeer(id, options))) {
282
- yield event;
283
- if (event.name === 'SEND_QUERY' || event.name === 'FINAL_PEER') {
284
- queriedPeers = true;
285
- }
286
- }
287
- if (!queriedPeers) {
288
- throw new CodeError('Peer lookup failed', 'ERR_LOOKUP_FAILED');
289
- }
290
- }
291
- /**
292
- * Kademlia 'node lookup' operation
293
- */
294
- async *getClosestPeers(key, options = {}) {
295
- yield* merge(this.lan.getClosestPeers(key, options), this.wan.getClosestPeers(key, options));
296
- }
297
- async refreshRoutingTable() {
298
- await Promise.all([
299
- this.lan.refreshRoutingTable(),
300
- this.wan.refreshRoutingTable()
301
- ]);
302
- }
303
- }
304
- //# sourceMappingURL=dual-kad-dht.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dual-kad-dht.js","sourceRoot":"","sources":["../../src/dual-kad-dht.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import { Libp2pRecord } from '../record/index.js';
2
- import { Message as PBMessage } from './dht.js';
3
- import type { PeerInfo } from '@libp2p/interface';
4
- import type { Uint8ArrayList } from 'uint8arraylist';
5
- export declare const MESSAGE_TYPE: typeof PBMessage.MessageType;
6
- export declare const CONNECTION_TYPE: typeof PBMessage.ConnectionType;
7
- export declare const MESSAGE_TYPE_LOOKUP: string[];
8
- /**
9
- * Represents a single DHT control message.
10
- */
11
- export declare class Message {
12
- type: PBMessage.MessageType;
13
- key: Uint8Array;
14
- private clusterLevelRaw;
15
- closerPeers: PeerInfo[];
16
- providerPeers: PeerInfo[];
17
- record?: Libp2pRecord;
18
- constructor(type: PBMessage.MessageType, key: Uint8Array, level: number);
19
- /**
20
- * @type {number}
21
- */
22
- get clusterLevel(): number;
23
- set clusterLevel(level: number);
24
- /**
25
- * Encode into protobuf
26
- */
27
- serialize(): Uint8Array;
28
- /**
29
- * Decode from protobuf
30
- */
31
- static deserialize(raw: Uint8ArrayList | Uint8Array): Message;
32
- static encode(message: Message): Uint8Array;
33
- static decode(buf: Uint8Array | Uint8ArrayList): Message;
34
- }
35
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/message/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,eAAO,MAAM,YAAY,8BAAwB,CAAA;AACjD,eAAO,MAAM,eAAe,iCAA2B,CAAA;AACvD,eAAO,MAAM,mBAAmB,UAA4B,CAAA;AAQ5D;;GAEG;AACH,qBAAa,OAAO;IACX,IAAI,EAAE,SAAS,CAAC,WAAW,CAAA;IAC3B,GAAG,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,eAAe,CAAQ;IACxB,WAAW,EAAE,QAAQ,EAAE,CAAA;IACvB,aAAa,EAAE,QAAQ,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,YAAY,CAAA;gBAEf,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;IAaxE;;OAEG;IACH,IAAI,YAAY,IAAK,MAAM,CAO1B;IAED,IAAI,YAAY,CAAE,KAAK,EATF,MASE,EAEtB;IAED;;OAEG;IACH,SAAS,IAAK,UAAU;IAWxB;;OAEG;IACH,MAAM,CAAC,WAAW,CAAE,GAAG,EAAE,cAAc,GAAG,UAAU,GAAG,OAAO;IAc9D,MAAM,CAAC,MAAM,CAAE,OAAO,EAAE,OAAO,GAAG,UAAU;IAI5C,MAAM,CAAC,MAAM,CAAE,GAAG,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO;CAG1D"}
@@ -1,92 +0,0 @@
1
- import { peerIdFromBytes } from '@libp2p/peer-id';
2
- import { multiaddr } from '@multiformats/multiaddr';
3
- import { Libp2pRecord } from '../record/index.js';
4
- import { Message as PBMessage } from './dht.js';
5
- export const MESSAGE_TYPE = PBMessage.MessageType;
6
- export const CONNECTION_TYPE = PBMessage.ConnectionType;
7
- export const MESSAGE_TYPE_LOOKUP = Object.keys(MESSAGE_TYPE);
8
- /**
9
- * Represents a single DHT control message.
10
- */
11
- export class Message {
12
- type;
13
- key;
14
- clusterLevelRaw;
15
- closerPeers;
16
- providerPeers;
17
- record;
18
- constructor(type, key, level) {
19
- if (!(key instanceof Uint8Array)) {
20
- throw new Error('Key must be a Uint8Array');
21
- }
22
- this.type = type;
23
- this.key = key;
24
- this.clusterLevelRaw = level;
25
- this.closerPeers = [];
26
- this.providerPeers = [];
27
- this.record = undefined;
28
- }
29
- /**
30
- * @type {number}
31
- */
32
- get clusterLevel() {
33
- const level = this.clusterLevelRaw - 1;
34
- if (level < 0) {
35
- return 0;
36
- }
37
- return level;
38
- }
39
- set clusterLevel(level) {
40
- this.clusterLevelRaw = level;
41
- }
42
- /**
43
- * Encode into protobuf
44
- */
45
- serialize() {
46
- return PBMessage.encode({
47
- key: this.key,
48
- type: this.type,
49
- clusterLevelRaw: this.clusterLevelRaw,
50
- closerPeers: this.closerPeers.map(toPbPeer),
51
- providerPeers: this.providerPeers.map(toPbPeer),
52
- record: this.record == null ? undefined : this.record.serialize().subarray()
53
- });
54
- }
55
- /**
56
- * Decode from protobuf
57
- */
58
- static deserialize(raw) {
59
- const dec = PBMessage.decode(raw);
60
- const msg = new Message(dec.type ?? PBMessage.MessageType.PUT_VALUE, dec.key ?? Uint8Array.from([]), dec.clusterLevelRaw ?? 0);
61
- msg.closerPeers = dec.closerPeers.map(fromPbPeer);
62
- msg.providerPeers = dec.providerPeers.map(fromPbPeer);
63
- if (dec.record?.length != null) {
64
- msg.record = Libp2pRecord.deserialize(dec.record);
65
- }
66
- return msg;
67
- }
68
- static encode(message) {
69
- return message.serialize();
70
- }
71
- static decode(buf) {
72
- return Message.deserialize(buf);
73
- }
74
- }
75
- function toPbPeer(peer) {
76
- const output = {
77
- id: peer.id.toBytes(),
78
- addrs: (peer.multiaddrs ?? []).map((m) => m.bytes),
79
- connection: CONNECTION_TYPE.CONNECTED
80
- };
81
- return output;
82
- }
83
- function fromPbPeer(peer) {
84
- if (peer.id == null) {
85
- throw new Error('Invalid peer in message');
86
- }
87
- return {
88
- id: peerIdFromBytes(peer.id),
89
- multiaddrs: (peer.addrs ?? []).map((a) => multiaddr(a))
90
- };
91
- }
92
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/message/index.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- {
2
- "EventTypes": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.EventTypes.html",
3
- ".:EventTypes": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.EventTypes.html",
4
- "MessageType": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.MessageType.html",
5
- ".:MessageType": "https://libp2p.github.io/js-libp2p/enums/_libp2p_kad_dht.MessageType.html",
6
- "Record": "https://libp2p.github.io/js-libp2p/classes/_libp2p_kad_dht.Record.html",
7
- "AddPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.AddPeerEvent.html",
8
- ".:AddPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.AddPeerEvent.html",
9
- "DHTRecord": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DHTRecord.html",
10
- ".:DHTRecord": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DHTRecord.html",
11
- "DialPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DialPeerEvent.html",
12
- ".:DialPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DialPeerEvent.html",
13
- "DualKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DualKadDHT.html",
14
- ".:DualKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.DualKadDHT.html",
15
- "FinalPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.FinalPeerEvent.html",
16
- ".:FinalPeerEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.FinalPeerEvent.html",
17
- "KadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHT.html",
18
- ".:KadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHT.html",
19
- "KadDHTComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTComponents.html",
20
- ".:KadDHTComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTComponents.html",
21
- "KadDHTInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTInit.html",
22
- ".:KadDHTInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.KadDHTInit.html",
23
- "PeerResponseEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.PeerResponseEvent.html",
24
- ".:PeerResponseEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.PeerResponseEvent.html",
25
- "ProviderEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ProviderEvent.html",
26
- ".:ProviderEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ProviderEvent.html",
27
- "QueryErrorEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryErrorEvent.html",
28
- ".:QueryErrorEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryErrorEvent.html",
29
- "QueryOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryOptions.html",
30
- ".:QueryOptions": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.QueryOptions.html",
31
- "RoutingTable": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.RoutingTable.html",
32
- ".:RoutingTable": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.RoutingTable.html",
33
- "SelectFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SelectFn.html",
34
- ".:SelectFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SelectFn.html",
35
- "SendQueryEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SendQueryEvent.html",
36
- ".:SendQueryEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SendQueryEvent.html",
37
- "SingleKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SingleKadDHT.html",
38
- ".:SingleKadDHT": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.SingleKadDHT.html",
39
- "ValidateFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValidateFn.html",
40
- ".:ValidateFn": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValidateFn.html",
41
- "ValueEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValueEvent.html",
42
- ".:ValueEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_kad_dht.ValueEvent.html",
43
- "DHTProgressEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.DHTProgressEvents.html",
44
- ".:DHTProgressEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.DHTProgressEvents.html",
45
- "MessageName": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.MessageName.html",
46
- ".:MessageName": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.MessageName.html",
47
- "QueryEvent": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.QueryEvent.html",
48
- ".:QueryEvent": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.QueryEvent.html",
49
- "Selectors": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Selectors.html",
50
- ".:Selectors": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Selectors.html",
51
- "Validators": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Validators.html",
52
- ".:Validators": "https://libp2p.github.io/js-libp2p/types/_libp2p_kad_dht.Validators.html",
53
- "kadDHT": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.kadDHT-1.html",
54
- ".:kadDHT": "https://libp2p.github.io/js-libp2p/functions/_libp2p_kad_dht.kadDHT-1.html"
55
- }