@libp2p/kad-dht 16.1.6 → 16.1.7
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/README.md +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/message/dht.d.ts +88 -6
- package/dist/src/message/dht.d.ts.map +1 -1
- package/dist/src/message/dht.js +196 -19
- package/dist/src/message/dht.js.map +1 -1
- package/package.json +13 -13
- package/src/message/dht.ts +300 -13
package/src/message/dht.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { decodeMessage, encodeMessage, enumeration, MaxLengthError, message } from 'protons-runtime'
|
|
1
|
+
import { decodeMessage, encodeMessage, enumeration, MaxLengthError, message, streamMessage } from 'protons-runtime'
|
|
2
2
|
import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc'
|
|
3
3
|
import type { Codec, DecodeOptions } from 'protons-runtime'
|
|
4
4
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
|
@@ -86,19 +86,96 @@ export namespace Record {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
return obj
|
|
89
|
+
}, function * (reader, length, prefix, opts = {}) {
|
|
90
|
+
const end = length == null ? reader.len : reader.pos + length
|
|
91
|
+
|
|
92
|
+
while (reader.pos < end) {
|
|
93
|
+
const tag = reader.uint32()
|
|
94
|
+
|
|
95
|
+
switch (tag >>> 3) {
|
|
96
|
+
case 1: {
|
|
97
|
+
yield {
|
|
98
|
+
field: `${prefix}.key`,
|
|
99
|
+
value: reader.bytes()
|
|
100
|
+
}
|
|
101
|
+
break
|
|
102
|
+
}
|
|
103
|
+
case 2: {
|
|
104
|
+
yield {
|
|
105
|
+
field: `${prefix}.value`,
|
|
106
|
+
value: reader.bytes()
|
|
107
|
+
}
|
|
108
|
+
break
|
|
109
|
+
}
|
|
110
|
+
case 3: {
|
|
111
|
+
yield {
|
|
112
|
+
field: `${prefix}.author`,
|
|
113
|
+
value: reader.bytes()
|
|
114
|
+
}
|
|
115
|
+
break
|
|
116
|
+
}
|
|
117
|
+
case 4: {
|
|
118
|
+
yield {
|
|
119
|
+
field: `${prefix}.signature`,
|
|
120
|
+
value: reader.bytes()
|
|
121
|
+
}
|
|
122
|
+
break
|
|
123
|
+
}
|
|
124
|
+
case 5: {
|
|
125
|
+
yield {
|
|
126
|
+
field: `${prefix}.timeReceived`,
|
|
127
|
+
value: reader.string()
|
|
128
|
+
}
|
|
129
|
+
break
|
|
130
|
+
}
|
|
131
|
+
default: {
|
|
132
|
+
reader.skipType(tag & 7)
|
|
133
|
+
break
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
89
137
|
})
|
|
90
138
|
}
|
|
91
139
|
|
|
92
140
|
return _codec
|
|
93
141
|
}
|
|
94
142
|
|
|
95
|
-
export
|
|
143
|
+
export interface RecordKeyFieldEvent {
|
|
144
|
+
field: '$.key'
|
|
145
|
+
value: Uint8Array
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface RecordValueFieldEvent {
|
|
149
|
+
field: '$.value'
|
|
150
|
+
value: Uint8Array
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export interface RecordAuthorFieldEvent {
|
|
154
|
+
field: '$.author'
|
|
155
|
+
value: Uint8Array
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export interface RecordSignatureFieldEvent {
|
|
159
|
+
field: '$.signature'
|
|
160
|
+
value: Uint8Array
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export interface RecordTimeReceivedFieldEvent {
|
|
164
|
+
field: '$.timeReceived'
|
|
165
|
+
value: string
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export function encode (obj: Partial<Record>): Uint8Array {
|
|
96
169
|
return encodeMessage(obj, Record.codec())
|
|
97
170
|
}
|
|
98
171
|
|
|
99
|
-
export
|
|
172
|
+
export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Record>): Record {
|
|
100
173
|
return decodeMessage(buf, Record.codec(), opts)
|
|
101
174
|
}
|
|
175
|
+
|
|
176
|
+
export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Record>): Generator<RecordKeyFieldEvent | RecordValueFieldEvent | RecordAuthorFieldEvent | RecordSignatureFieldEvent | RecordTimeReceivedFieldEvent> {
|
|
177
|
+
return streamMessage(buf, Record.codec(), opts)
|
|
178
|
+
}
|
|
102
179
|
}
|
|
103
180
|
|
|
104
181
|
export enum MessageType {
|
|
@@ -124,6 +201,7 @@ export namespace MessageType {
|
|
|
124
201
|
return enumeration<MessageType>(__MessageTypeValues)
|
|
125
202
|
}
|
|
126
203
|
}
|
|
204
|
+
|
|
127
205
|
export enum ConnectionType {
|
|
128
206
|
NOT_CONNECTED = 'NOT_CONNECTED',
|
|
129
207
|
CONNECTED = 'CONNECTED',
|
|
@@ -143,6 +221,7 @@ export namespace ConnectionType {
|
|
|
143
221
|
return enumeration<ConnectionType>(__ConnectionTypeValues)
|
|
144
222
|
}
|
|
145
223
|
}
|
|
224
|
+
|
|
146
225
|
export interface PeerInfo {
|
|
147
226
|
id: Uint8Array
|
|
148
227
|
multiaddrs: Uint8Array[]
|
|
@@ -164,7 +243,7 @@ export namespace PeerInfo {
|
|
|
164
243
|
w.bytes(obj.id)
|
|
165
244
|
}
|
|
166
245
|
|
|
167
|
-
if (obj.multiaddrs != null) {
|
|
246
|
+
if (obj.multiaddrs != null && obj.multiaddrs.length > 0) {
|
|
168
247
|
for (const value of obj.multiaddrs) {
|
|
169
248
|
w.uint32(18)
|
|
170
249
|
w.bytes(value)
|
|
@@ -197,7 +276,7 @@ export namespace PeerInfo {
|
|
|
197
276
|
}
|
|
198
277
|
case 2: {
|
|
199
278
|
if (opts.limits?.multiaddrs != null && obj.multiaddrs.length === opts.limits.multiaddrs) {
|
|
200
|
-
throw new MaxLengthError('Decode error -
|
|
279
|
+
throw new MaxLengthError('Decode error - repeated field "multiaddrs" had too many elements')
|
|
201
280
|
}
|
|
202
281
|
|
|
203
282
|
obj.multiaddrs.push(reader.bytes())
|
|
@@ -215,19 +294,85 @@ export namespace PeerInfo {
|
|
|
215
294
|
}
|
|
216
295
|
|
|
217
296
|
return obj
|
|
297
|
+
}, function * (reader, length, prefix, opts = {}) {
|
|
298
|
+
const obj = {
|
|
299
|
+
multiaddrs: 0
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
const end = length == null ? reader.len : reader.pos + length
|
|
303
|
+
|
|
304
|
+
while (reader.pos < end) {
|
|
305
|
+
const tag = reader.uint32()
|
|
306
|
+
|
|
307
|
+
switch (tag >>> 3) {
|
|
308
|
+
case 1: {
|
|
309
|
+
yield {
|
|
310
|
+
field: `${prefix}.id`,
|
|
311
|
+
value: reader.bytes()
|
|
312
|
+
}
|
|
313
|
+
break
|
|
314
|
+
}
|
|
315
|
+
case 2: {
|
|
316
|
+
if (opts.limits?.multiaddrs != null && obj.multiaddrs === opts.limits.multiaddrs) {
|
|
317
|
+
throw new MaxLengthError('Streaming decode error - repeated field "multiaddrs" had too many elements')
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
yield {
|
|
321
|
+
field: `${prefix}.multiaddrs[]`,
|
|
322
|
+
index: obj.multiaddrs,
|
|
323
|
+
value: reader.bytes()
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
obj.multiaddrs++
|
|
327
|
+
|
|
328
|
+
break
|
|
329
|
+
}
|
|
330
|
+
case 3: {
|
|
331
|
+
yield {
|
|
332
|
+
field: `${prefix}.connection`,
|
|
333
|
+
value: ConnectionType.codec().decode(reader)
|
|
334
|
+
}
|
|
335
|
+
break
|
|
336
|
+
}
|
|
337
|
+
default: {
|
|
338
|
+
reader.skipType(tag & 7)
|
|
339
|
+
break
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
218
343
|
})
|
|
219
344
|
}
|
|
220
345
|
|
|
221
346
|
return _codec
|
|
222
347
|
}
|
|
223
348
|
|
|
224
|
-
export
|
|
349
|
+
export interface PeerInfoIdFieldEvent {
|
|
350
|
+
field: '$.id'
|
|
351
|
+
value: Uint8Array
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export interface PeerInfoMultiaddrsFieldEvent {
|
|
355
|
+
field: '$.multiaddrs[]'
|
|
356
|
+
index: number
|
|
357
|
+
value: Uint8Array
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
export interface PeerInfoConnectionFieldEvent {
|
|
361
|
+
field: '$.connection'
|
|
362
|
+
value: ConnectionType
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export function encode (obj: Partial<PeerInfo>): Uint8Array {
|
|
225
366
|
return encodeMessage(obj, PeerInfo.codec())
|
|
226
367
|
}
|
|
227
368
|
|
|
228
|
-
export
|
|
369
|
+
export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerInfo>): PeerInfo {
|
|
229
370
|
return decodeMessage(buf, PeerInfo.codec(), opts)
|
|
230
371
|
}
|
|
372
|
+
|
|
373
|
+
export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerInfo>): Generator<PeerInfoIdFieldEvent | PeerInfoMultiaddrsFieldEvent | PeerInfoConnectionFieldEvent> {
|
|
374
|
+
return streamMessage(buf, PeerInfo.codec(), opts)
|
|
375
|
+
}
|
|
231
376
|
}
|
|
232
377
|
|
|
233
378
|
export interface Message {
|
|
@@ -269,14 +414,14 @@ export namespace Message {
|
|
|
269
414
|
w.bytes(obj.record)
|
|
270
415
|
}
|
|
271
416
|
|
|
272
|
-
if (obj.closer != null) {
|
|
417
|
+
if (obj.closer != null && obj.closer.length > 0) {
|
|
273
418
|
for (const value of obj.closer) {
|
|
274
419
|
w.uint32(66)
|
|
275
420
|
PeerInfo.codec().encode(value, w)
|
|
276
421
|
}
|
|
277
422
|
}
|
|
278
423
|
|
|
279
|
-
if (obj.providers != null) {
|
|
424
|
+
if (obj.providers != null && obj.providers.length > 0) {
|
|
280
425
|
for (const value of obj.providers) {
|
|
281
426
|
w.uint32(74)
|
|
282
427
|
PeerInfo.codec().encode(value, w)
|
|
@@ -317,7 +462,7 @@ export namespace Message {
|
|
|
317
462
|
}
|
|
318
463
|
case 8: {
|
|
319
464
|
if (opts.limits?.closer != null && obj.closer.length === opts.limits.closer) {
|
|
320
|
-
throw new MaxLengthError('Decode error -
|
|
465
|
+
throw new MaxLengthError('Decode error - repeated field "closer" had too many elements')
|
|
321
466
|
}
|
|
322
467
|
|
|
323
468
|
obj.closer.push(PeerInfo.codec().decode(reader, reader.uint32(), {
|
|
@@ -327,7 +472,7 @@ export namespace Message {
|
|
|
327
472
|
}
|
|
328
473
|
case 9: {
|
|
329
474
|
if (opts.limits?.providers != null && obj.providers.length === opts.limits.providers) {
|
|
330
|
-
throw new MaxLengthError('Decode error -
|
|
475
|
+
throw new MaxLengthError('Decode error - repeated field "providers" had too many elements')
|
|
331
476
|
}
|
|
332
477
|
|
|
333
478
|
obj.providers.push(PeerInfo.codec().decode(reader, reader.uint32(), {
|
|
@@ -343,17 +488,159 @@ export namespace Message {
|
|
|
343
488
|
}
|
|
344
489
|
|
|
345
490
|
return obj
|
|
491
|
+
}, function * (reader, length, prefix, opts = {}) {
|
|
492
|
+
const obj = {
|
|
493
|
+
closer: 0,
|
|
494
|
+
providers: 0
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
const end = length == null ? reader.len : reader.pos + length
|
|
498
|
+
|
|
499
|
+
while (reader.pos < end) {
|
|
500
|
+
const tag = reader.uint32()
|
|
501
|
+
|
|
502
|
+
switch (tag >>> 3) {
|
|
503
|
+
case 1: {
|
|
504
|
+
yield {
|
|
505
|
+
field: `${prefix}.type`,
|
|
506
|
+
value: MessageType.codec().decode(reader)
|
|
507
|
+
}
|
|
508
|
+
break
|
|
509
|
+
}
|
|
510
|
+
case 10: {
|
|
511
|
+
yield {
|
|
512
|
+
field: `${prefix}.clusterLevel`,
|
|
513
|
+
value: reader.int32()
|
|
514
|
+
}
|
|
515
|
+
break
|
|
516
|
+
}
|
|
517
|
+
case 2: {
|
|
518
|
+
yield {
|
|
519
|
+
field: `${prefix}.key`,
|
|
520
|
+
value: reader.bytes()
|
|
521
|
+
}
|
|
522
|
+
break
|
|
523
|
+
}
|
|
524
|
+
case 3: {
|
|
525
|
+
yield {
|
|
526
|
+
field: `${prefix}.record`,
|
|
527
|
+
value: reader.bytes()
|
|
528
|
+
}
|
|
529
|
+
break
|
|
530
|
+
}
|
|
531
|
+
case 8: {
|
|
532
|
+
if (opts.limits?.closer != null && obj.closer === opts.limits.closer) {
|
|
533
|
+
throw new MaxLengthError('Streaming decode error - repeated field "closer" had too many elements')
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
for (const evt of PeerInfo.codec().stream(reader, reader.uint32(), `${prefix}.closer[]`, {
|
|
537
|
+
limits: opts.limits?.closer$
|
|
538
|
+
})) {
|
|
539
|
+
yield {
|
|
540
|
+
...evt,
|
|
541
|
+
index: obj.closer
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
obj.closer++
|
|
546
|
+
|
|
547
|
+
break
|
|
548
|
+
}
|
|
549
|
+
case 9: {
|
|
550
|
+
if (opts.limits?.providers != null && obj.providers === opts.limits.providers) {
|
|
551
|
+
throw new MaxLengthError('Streaming decode error - repeated field "providers" had too many elements')
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
for (const evt of PeerInfo.codec().stream(reader, reader.uint32(), `${prefix}.providers[]`, {
|
|
555
|
+
limits: opts.limits?.providers$
|
|
556
|
+
})) {
|
|
557
|
+
yield {
|
|
558
|
+
...evt,
|
|
559
|
+
index: obj.providers
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
obj.providers++
|
|
564
|
+
|
|
565
|
+
break
|
|
566
|
+
}
|
|
567
|
+
default: {
|
|
568
|
+
reader.skipType(tag & 7)
|
|
569
|
+
break
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
346
573
|
})
|
|
347
574
|
}
|
|
348
575
|
|
|
349
576
|
return _codec
|
|
350
577
|
}
|
|
351
578
|
|
|
352
|
-
export
|
|
579
|
+
export interface MessageTypeFieldEvent {
|
|
580
|
+
field: '$.type'
|
|
581
|
+
value: MessageType
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
export interface MessageClusterLevelFieldEvent {
|
|
585
|
+
field: '$.clusterLevel'
|
|
586
|
+
value: number
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
export interface MessageKeyFieldEvent {
|
|
590
|
+
field: '$.key'
|
|
591
|
+
value: Uint8Array
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
export interface MessageRecordFieldEvent {
|
|
595
|
+
field: '$.record'
|
|
596
|
+
value: Uint8Array
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
export interface MessageCloserIdFieldEvent {
|
|
600
|
+
field: '$.closer[].id'
|
|
601
|
+
value: Uint8Array
|
|
602
|
+
index: number
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
export interface MessageCloserMultiaddrsFieldEvent {
|
|
606
|
+
field: '$.closer[].multiaddrs[]'
|
|
607
|
+
index: number
|
|
608
|
+
value: Uint8Array
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
export interface MessageCloserConnectionFieldEvent {
|
|
612
|
+
field: '$.closer[].connection'
|
|
613
|
+
value: ConnectionType
|
|
614
|
+
index: number
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
export interface MessageProvidersIdFieldEvent {
|
|
618
|
+
field: '$.providers[].id'
|
|
619
|
+
value: Uint8Array
|
|
620
|
+
index: number
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
export interface MessageProvidersMultiaddrsFieldEvent {
|
|
624
|
+
field: '$.providers[].multiaddrs[]'
|
|
625
|
+
index: number
|
|
626
|
+
value: Uint8Array
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
export interface MessageProvidersConnectionFieldEvent {
|
|
630
|
+
field: '$.providers[].connection'
|
|
631
|
+
value: ConnectionType
|
|
632
|
+
index: number
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
export function encode (obj: Partial<Message>): Uint8Array {
|
|
353
636
|
return encodeMessage(obj, Message.codec())
|
|
354
637
|
}
|
|
355
638
|
|
|
356
|
-
export
|
|
639
|
+
export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Message>): Message {
|
|
357
640
|
return decodeMessage(buf, Message.codec(), opts)
|
|
358
641
|
}
|
|
642
|
+
|
|
643
|
+
export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Message>): Generator<MessageTypeFieldEvent | MessageClusterLevelFieldEvent | MessageKeyFieldEvent | MessageRecordFieldEvent | MessageCloserIdFieldEvent | MessageCloserMultiaddrsFieldEvent | MessageCloserConnectionFieldEvent | MessageProvidersIdFieldEvent | MessageProvidersMultiaddrsFieldEvent | MessageProvidersConnectionFieldEvent> {
|
|
644
|
+
return streamMessage(buf, Message.codec(), opts)
|
|
645
|
+
}
|
|
359
646
|
}
|