@libp2p/gossipsub 15.0.15 → 15.0.16-4580b64fa

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.
@@ -1,6 +1,4 @@
1
- /* eslint-disable complexity */
2
-
3
- import { decodeMessage, encodeMessage, MaxLengthError, message } from 'protons-runtime'
1
+ import { decodeMessage, encodeMessage, MaxLengthError, message, streamMessage } from 'protons-runtime'
4
2
  import type { Codec, DecodeOptions } from 'protons-runtime'
5
3
  import type { Uint8ArrayList } from 'uint8arraylist'
6
4
 
@@ -64,19 +62,60 @@ export namespace RPC {
64
62
  }
65
63
 
66
64
  return obj
65
+ }, function * (reader, length, prefix, opts = {}) {
66
+ const end = length == null ? reader.len : reader.pos + length
67
+
68
+ while (reader.pos < end) {
69
+ const tag = reader.uint32()
70
+
71
+ switch (tag >>> 3) {
72
+ case 1: {
73
+ yield {
74
+ field: `${prefix}.subscribe`,
75
+ value: reader.bool()
76
+ }
77
+ break
78
+ }
79
+ case 2: {
80
+ yield {
81
+ field: `${prefix}.topic`,
82
+ value: reader.string()
83
+ }
84
+ break
85
+ }
86
+ default: {
87
+ reader.skipType(tag & 7)
88
+ break
89
+ }
90
+ }
91
+ }
67
92
  })
68
93
  }
69
94
 
70
95
  return _codec
71
96
  }
72
97
 
73
- export const encode = (obj: Partial<SubOpts>): Uint8Array => {
98
+ export interface SubOptsSubscribeFieldEvent {
99
+ field: '$.subscribe'
100
+ value: boolean
101
+ }
102
+
103
+ export interface SubOptsTopicFieldEvent {
104
+ field: '$.topic'
105
+ value: string
106
+ }
107
+
108
+ export function encode (obj: Partial<SubOpts>): Uint8Array {
74
109
  return encodeMessage(obj, SubOpts.codec())
75
110
  }
76
111
 
77
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<SubOpts>): SubOpts => {
112
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<SubOpts>): SubOpts {
78
113
  return decodeMessage(buf, SubOpts.codec(), opts)
79
114
  }
115
+
116
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<SubOpts>): Generator<SubOptsSubscribeFieldEvent | SubOptsTopicFieldEvent> {
117
+ return streamMessage(buf, SubOpts.codec(), opts)
118
+ }
80
119
  }
81
120
 
82
121
  export interface Message {
@@ -174,19 +213,108 @@ export namespace RPC {
174
213
  }
175
214
 
176
215
  return obj
216
+ }, function * (reader, length, prefix, opts = {}) {
217
+ const end = length == null ? reader.len : reader.pos + length
218
+
219
+ while (reader.pos < end) {
220
+ const tag = reader.uint32()
221
+
222
+ switch (tag >>> 3) {
223
+ case 1: {
224
+ yield {
225
+ field: `${prefix}.from`,
226
+ value: reader.bytes()
227
+ }
228
+ break
229
+ }
230
+ case 2: {
231
+ yield {
232
+ field: `${prefix}.data`,
233
+ value: reader.bytes()
234
+ }
235
+ break
236
+ }
237
+ case 3: {
238
+ yield {
239
+ field: `${prefix}.seqno`,
240
+ value: reader.bytes()
241
+ }
242
+ break
243
+ }
244
+ case 4: {
245
+ yield {
246
+ field: `${prefix}.topic`,
247
+ value: reader.string()
248
+ }
249
+ break
250
+ }
251
+ case 5: {
252
+ yield {
253
+ field: `${prefix}.signature`,
254
+ value: reader.bytes()
255
+ }
256
+ break
257
+ }
258
+ case 6: {
259
+ yield {
260
+ field: `${prefix}.key`,
261
+ value: reader.bytes()
262
+ }
263
+ break
264
+ }
265
+ default: {
266
+ reader.skipType(tag & 7)
267
+ break
268
+ }
269
+ }
270
+ }
177
271
  })
178
272
  }
179
273
 
180
274
  return _codec
181
275
  }
182
276
 
183
- export const encode = (obj: Partial<Message>): Uint8Array => {
277
+ export interface MessageFromFieldEvent {
278
+ field: '$.from'
279
+ value: Uint8Array
280
+ }
281
+
282
+ export interface MessageDataFieldEvent {
283
+ field: '$.data'
284
+ value: Uint8Array
285
+ }
286
+
287
+ export interface MessageSeqnoFieldEvent {
288
+ field: '$.seqno'
289
+ value: Uint8Array
290
+ }
291
+
292
+ export interface MessageTopicFieldEvent {
293
+ field: '$.topic'
294
+ value: string
295
+ }
296
+
297
+ export interface MessageSignatureFieldEvent {
298
+ field: '$.signature'
299
+ value: Uint8Array
300
+ }
301
+
302
+ export interface MessageKeyFieldEvent {
303
+ field: '$.key'
304
+ value: Uint8Array
305
+ }
306
+
307
+ export function encode (obj: Partial<Message>): Uint8Array {
184
308
  return encodeMessage(obj, Message.codec())
185
309
  }
186
310
 
187
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Message>): Message => {
311
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Message>): Message {
188
312
  return decodeMessage(buf, Message.codec(), opts)
189
313
  }
314
+
315
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Message>): Generator<MessageFromFieldEvent | MessageDataFieldEvent | MessageSeqnoFieldEvent | MessageTopicFieldEvent | MessageSignatureFieldEvent | MessageKeyFieldEvent> {
316
+ return streamMessage(buf, Message.codec(), opts)
317
+ }
190
318
  }
191
319
 
192
320
  export interface ControlMessage {
@@ -207,35 +335,35 @@ export namespace RPC {
207
335
  w.fork()
208
336
  }
209
337
 
210
- if (obj.ihave != null) {
338
+ if (obj.ihave != null && obj.ihave.length > 0) {
211
339
  for (const value of obj.ihave) {
212
340
  w.uint32(10)
213
341
  RPC.ControlIHave.codec().encode(value, w)
214
342
  }
215
343
  }
216
344
 
217
- if (obj.iwant != null) {
345
+ if (obj.iwant != null && obj.iwant.length > 0) {
218
346
  for (const value of obj.iwant) {
219
347
  w.uint32(18)
220
348
  RPC.ControlIWant.codec().encode(value, w)
221
349
  }
222
350
  }
223
351
 
224
- if (obj.graft != null) {
352
+ if (obj.graft != null && obj.graft.length > 0) {
225
353
  for (const value of obj.graft) {
226
354
  w.uint32(26)
227
355
  RPC.ControlGraft.codec().encode(value, w)
228
356
  }
229
357
  }
230
358
 
231
- if (obj.prune != null) {
359
+ if (obj.prune != null && obj.prune.length > 0) {
232
360
  for (const value of obj.prune) {
233
361
  w.uint32(34)
234
362
  RPC.ControlPrune.codec().encode(value, w)
235
363
  }
236
364
  }
237
365
 
238
- if (obj.idontwant != null) {
366
+ if (obj.idontwant != null && obj.idontwant.length > 0) {
239
367
  for (const value of obj.idontwant) {
240
368
  w.uint32(42)
241
369
  RPC.ControlIDontWant.codec().encode(value, w)
@@ -262,7 +390,7 @@ export namespace RPC {
262
390
  switch (tag >>> 3) {
263
391
  case 1: {
264
392
  if (opts.limits?.ihave != null && obj.ihave.length === opts.limits.ihave) {
265
- throw new MaxLengthError('Decode error - map field "ihave" had too many elements')
393
+ throw new MaxLengthError('Decode error - repeated field "ihave" had too many elements')
266
394
  }
267
395
 
268
396
  obj.ihave.push(RPC.ControlIHave.codec().decode(reader, reader.uint32(), {
@@ -272,7 +400,7 @@ export namespace RPC {
272
400
  }
273
401
  case 2: {
274
402
  if (opts.limits?.iwant != null && obj.iwant.length === opts.limits.iwant) {
275
- throw new MaxLengthError('Decode error - map field "iwant" had too many elements')
403
+ throw new MaxLengthError('Decode error - repeated field "iwant" had too many elements')
276
404
  }
277
405
 
278
406
  obj.iwant.push(RPC.ControlIWant.codec().decode(reader, reader.uint32(), {
@@ -282,7 +410,7 @@ export namespace RPC {
282
410
  }
283
411
  case 3: {
284
412
  if (opts.limits?.graft != null && obj.graft.length === opts.limits.graft) {
285
- throw new MaxLengthError('Decode error - map field "graft" had too many elements')
413
+ throw new MaxLengthError('Decode error - repeated field "graft" had too many elements')
286
414
  }
287
415
 
288
416
  obj.graft.push(RPC.ControlGraft.codec().decode(reader, reader.uint32(), {
@@ -292,7 +420,7 @@ export namespace RPC {
292
420
  }
293
421
  case 4: {
294
422
  if (opts.limits?.prune != null && obj.prune.length === opts.limits.prune) {
295
- throw new MaxLengthError('Decode error - map field "prune" had too many elements')
423
+ throw new MaxLengthError('Decode error - repeated field "prune" had too many elements')
296
424
  }
297
425
 
298
426
  obj.prune.push(RPC.ControlPrune.codec().decode(reader, reader.uint32(), {
@@ -302,7 +430,7 @@ export namespace RPC {
302
430
  }
303
431
  case 5: {
304
432
  if (opts.limits?.idontwant != null && obj.idontwant.length === opts.limits.idontwant) {
305
- throw new MaxLengthError('Decode error - map field "idontwant" had too many elements')
433
+ throw new MaxLengthError('Decode error - repeated field "idontwant" had too many elements')
306
434
  }
307
435
 
308
436
  obj.idontwant.push(RPC.ControlIDontWant.codec().decode(reader, reader.uint32(), {
@@ -318,19 +446,188 @@ export namespace RPC {
318
446
  }
319
447
 
320
448
  return obj
449
+ }, function * (reader, length, prefix, opts = {}) {
450
+ const obj = {
451
+ ihave: 0,
452
+ iwant: 0,
453
+ graft: 0,
454
+ prune: 0,
455
+ idontwant: 0
456
+ }
457
+
458
+ const end = length == null ? reader.len : reader.pos + length
459
+
460
+ while (reader.pos < end) {
461
+ const tag = reader.uint32()
462
+
463
+ switch (tag >>> 3) {
464
+ case 1: {
465
+ if (opts.limits?.ihave != null && obj.ihave === opts.limits.ihave) {
466
+ throw new MaxLengthError('Streaming decode error - repeated field "ihave" had too many elements')
467
+ }
468
+
469
+ for (const evt of RPC.ControlIHave.codec().stream(reader, reader.uint32(), `${prefix}.ihave[]`, {
470
+ limits: opts.limits?.ihave$
471
+ })) {
472
+ yield {
473
+ ...evt,
474
+ index: obj.ihave
475
+ }
476
+ }
477
+
478
+ obj.ihave++
479
+
480
+ break
481
+ }
482
+ case 2: {
483
+ if (opts.limits?.iwant != null && obj.iwant === opts.limits.iwant) {
484
+ throw new MaxLengthError('Streaming decode error - repeated field "iwant" had too many elements')
485
+ }
486
+
487
+ for (const evt of RPC.ControlIWant.codec().stream(reader, reader.uint32(), `${prefix}.iwant[]`, {
488
+ limits: opts.limits?.iwant$
489
+ })) {
490
+ yield {
491
+ ...evt,
492
+ index: obj.iwant
493
+ }
494
+ }
495
+
496
+ obj.iwant++
497
+
498
+ break
499
+ }
500
+ case 3: {
501
+ if (opts.limits?.graft != null && obj.graft === opts.limits.graft) {
502
+ throw new MaxLengthError('Streaming decode error - repeated field "graft" had too many elements')
503
+ }
504
+
505
+ for (const evt of RPC.ControlGraft.codec().stream(reader, reader.uint32(), `${prefix}.graft[]`, {
506
+ limits: opts.limits?.graft$
507
+ })) {
508
+ yield {
509
+ ...evt,
510
+ index: obj.graft
511
+ }
512
+ }
513
+
514
+ obj.graft++
515
+
516
+ break
517
+ }
518
+ case 4: {
519
+ if (opts.limits?.prune != null && obj.prune === opts.limits.prune) {
520
+ throw new MaxLengthError('Streaming decode error - repeated field "prune" had too many elements')
521
+ }
522
+
523
+ for (const evt of RPC.ControlPrune.codec().stream(reader, reader.uint32(), `${prefix}.prune[]`, {
524
+ limits: opts.limits?.prune$
525
+ })) {
526
+ yield {
527
+ ...evt,
528
+ index: obj.prune
529
+ }
530
+ }
531
+
532
+ obj.prune++
533
+
534
+ break
535
+ }
536
+ case 5: {
537
+ if (opts.limits?.idontwant != null && obj.idontwant === opts.limits.idontwant) {
538
+ throw new MaxLengthError('Streaming decode error - repeated field "idontwant" had too many elements')
539
+ }
540
+
541
+ for (const evt of RPC.ControlIDontWant.codec().stream(reader, reader.uint32(), `${prefix}.idontwant[]`, {
542
+ limits: opts.limits?.idontwant$
543
+ })) {
544
+ yield {
545
+ ...evt,
546
+ index: obj.idontwant
547
+ }
548
+ }
549
+
550
+ obj.idontwant++
551
+
552
+ break
553
+ }
554
+ default: {
555
+ reader.skipType(tag & 7)
556
+ break
557
+ }
558
+ }
559
+ }
321
560
  })
322
561
  }
323
562
 
324
563
  return _codec
325
564
  }
326
565
 
327
- export const encode = (obj: Partial<ControlMessage>): Uint8Array => {
566
+ export interface ControlMessageIhaveTopicIDFieldEvent {
567
+ field: '$.ihave[].topicID'
568
+ value: string
569
+ index: number
570
+ }
571
+
572
+ export interface ControlMessageIhaveMessageIDsFieldEvent {
573
+ field: '$.ihave[].messageIDs[]'
574
+ index: number
575
+ value: Uint8Array
576
+ }
577
+
578
+ export interface ControlMessageIwantMessageIDsFieldEvent {
579
+ field: '$.iwant[].messageIDs[]'
580
+ index: number
581
+ value: Uint8Array
582
+ }
583
+
584
+ export interface ControlMessageGraftTopicIDFieldEvent {
585
+ field: '$.graft[].topicID'
586
+ value: string
587
+ index: number
588
+ }
589
+
590
+ export interface ControlMessagePruneTopicIDFieldEvent {
591
+ field: '$.prune[].topicID'
592
+ value: string
593
+ index: number
594
+ }
595
+
596
+ export interface ControlMessagePrunePeersPeerIDFieldEvent {
597
+ field: '$.prune[].peers[].peerID'
598
+ value: Uint8Array
599
+ index: number
600
+ }
601
+
602
+ export interface ControlMessagePrunePeersSignedPeerRecordFieldEvent {
603
+ field: '$.prune[].peers[].signedPeerRecord'
604
+ value: Uint8Array
605
+ index: number
606
+ }
607
+
608
+ export interface ControlMessagePruneBackoffFieldEvent {
609
+ field: '$.prune[].backoff'
610
+ value: number
611
+ index: number
612
+ }
613
+
614
+ export interface ControlMessageIdontwantMessageIDsFieldEvent {
615
+ field: '$.idontwant[].messageIDs[]'
616
+ index: number
617
+ value: Uint8Array
618
+ }
619
+
620
+ export function encode (obj: Partial<ControlMessage>): Uint8Array {
328
621
  return encodeMessage(obj, ControlMessage.codec())
329
622
  }
330
623
 
331
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlMessage>): ControlMessage => {
624
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlMessage>): ControlMessage {
332
625
  return decodeMessage(buf, ControlMessage.codec(), opts)
333
626
  }
627
+
628
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlMessage>): Generator<ControlMessageIhaveTopicIDFieldEvent | ControlMessageIhaveMessageIDsFieldEvent | ControlMessageIwantMessageIDsFieldEvent | ControlMessageGraftTopicIDFieldEvent | ControlMessagePruneTopicIDFieldEvent | ControlMessagePrunePeersPeerIDFieldEvent | ControlMessagePrunePeersSignedPeerRecordFieldEvent | ControlMessagePruneBackoffFieldEvent | ControlMessageIdontwantMessageIDsFieldEvent> {
629
+ return streamMessage(buf, ControlMessage.codec(), opts)
630
+ }
334
631
  }
335
632
 
336
633
  export interface ControlIHave {
@@ -353,7 +650,7 @@ export namespace RPC {
353
650
  w.string(obj.topicID)
354
651
  }
355
652
 
356
- if (obj.messageIDs != null) {
653
+ if (obj.messageIDs != null && obj.messageIDs.length > 0) {
357
654
  for (const value of obj.messageIDs) {
358
655
  w.uint32(18)
359
656
  w.bytes(value)
@@ -380,7 +677,7 @@ export namespace RPC {
380
677
  }
381
678
  case 2: {
382
679
  if (opts.limits?.messageIDs != null && obj.messageIDs.length === opts.limits.messageIDs) {
383
- throw new MaxLengthError('Decode error - map field "messageIDs" had too many elements')
680
+ throw new MaxLengthError('Decode error - repeated field "messageIDs" had too many elements')
384
681
  }
385
682
 
386
683
  obj.messageIDs.push(reader.bytes())
@@ -394,19 +691,73 @@ export namespace RPC {
394
691
  }
395
692
 
396
693
  return obj
694
+ }, function * (reader, length, prefix, opts = {}) {
695
+ const obj = {
696
+ messageIDs: 0
697
+ }
698
+
699
+ const end = length == null ? reader.len : reader.pos + length
700
+
701
+ while (reader.pos < end) {
702
+ const tag = reader.uint32()
703
+
704
+ switch (tag >>> 3) {
705
+ case 1: {
706
+ yield {
707
+ field: `${prefix}.topicID`,
708
+ value: reader.string()
709
+ }
710
+ break
711
+ }
712
+ case 2: {
713
+ if (opts.limits?.messageIDs != null && obj.messageIDs === opts.limits.messageIDs) {
714
+ throw new MaxLengthError('Streaming decode error - repeated field "messageIDs" had too many elements')
715
+ }
716
+
717
+ yield {
718
+ field: `${prefix}.messageIDs[]`,
719
+ index: obj.messageIDs,
720
+ value: reader.bytes()
721
+ }
722
+
723
+ obj.messageIDs++
724
+
725
+ break
726
+ }
727
+ default: {
728
+ reader.skipType(tag & 7)
729
+ break
730
+ }
731
+ }
732
+ }
397
733
  })
398
734
  }
399
735
 
400
736
  return _codec
401
737
  }
402
738
 
403
- export const encode = (obj: Partial<ControlIHave>): Uint8Array => {
739
+ export interface ControlIHaveTopicIDFieldEvent {
740
+ field: '$.topicID'
741
+ value: string
742
+ }
743
+
744
+ export interface ControlIHaveMessageIDsFieldEvent {
745
+ field: '$.messageIDs[]'
746
+ index: number
747
+ value: Uint8Array
748
+ }
749
+
750
+ export function encode (obj: Partial<ControlIHave>): Uint8Array {
404
751
  return encodeMessage(obj, ControlIHave.codec())
405
752
  }
406
753
 
407
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIHave>): ControlIHave => {
754
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIHave>): ControlIHave {
408
755
  return decodeMessage(buf, ControlIHave.codec(), opts)
409
756
  }
757
+
758
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIHave>): Generator<ControlIHaveTopicIDFieldEvent | ControlIHaveMessageIDsFieldEvent> {
759
+ return streamMessage(buf, ControlIHave.codec(), opts)
760
+ }
410
761
  }
411
762
 
412
763
  export interface ControlIWant {
@@ -423,7 +774,7 @@ export namespace RPC {
423
774
  w.fork()
424
775
  }
425
776
 
426
- if (obj.messageIDs != null) {
777
+ if (obj.messageIDs != null && obj.messageIDs.length > 0) {
427
778
  for (const value of obj.messageIDs) {
428
779
  w.uint32(10)
429
780
  w.bytes(value)
@@ -446,7 +797,7 @@ export namespace RPC {
446
797
  switch (tag >>> 3) {
447
798
  case 1: {
448
799
  if (opts.limits?.messageIDs != null && obj.messageIDs.length === opts.limits.messageIDs) {
449
- throw new MaxLengthError('Decode error - map field "messageIDs" had too many elements')
800
+ throw new MaxLengthError('Decode error - repeated field "messageIDs" had too many elements')
450
801
  }
451
802
 
452
803
  obj.messageIDs.push(reader.bytes())
@@ -460,19 +811,61 @@ export namespace RPC {
460
811
  }
461
812
 
462
813
  return obj
814
+ }, function * (reader, length, prefix, opts = {}) {
815
+ const obj = {
816
+ messageIDs: 0
817
+ }
818
+
819
+ const end = length == null ? reader.len : reader.pos + length
820
+
821
+ while (reader.pos < end) {
822
+ const tag = reader.uint32()
823
+
824
+ switch (tag >>> 3) {
825
+ case 1: {
826
+ if (opts.limits?.messageIDs != null && obj.messageIDs === opts.limits.messageIDs) {
827
+ throw new MaxLengthError('Streaming decode error - repeated field "messageIDs" had too many elements')
828
+ }
829
+
830
+ yield {
831
+ field: `${prefix}.messageIDs[]`,
832
+ index: obj.messageIDs,
833
+ value: reader.bytes()
834
+ }
835
+
836
+ obj.messageIDs++
837
+
838
+ break
839
+ }
840
+ default: {
841
+ reader.skipType(tag & 7)
842
+ break
843
+ }
844
+ }
845
+ }
463
846
  })
464
847
  }
465
848
 
466
849
  return _codec
467
850
  }
468
851
 
469
- export const encode = (obj: Partial<ControlIWant>): Uint8Array => {
852
+ export interface ControlIWantMessageIDsFieldEvent {
853
+ field: '$.messageIDs[]'
854
+ index: number
855
+ value: Uint8Array
856
+ }
857
+
858
+ export function encode (obj: Partial<ControlIWant>): Uint8Array {
470
859
  return encodeMessage(obj, ControlIWant.codec())
471
860
  }
472
861
 
473
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIWant>): ControlIWant => {
862
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIWant>): ControlIWant {
474
863
  return decodeMessage(buf, ControlIWant.codec(), opts)
475
864
  }
865
+
866
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIWant>): Generator<ControlIWantMessageIDsFieldEvent> {
867
+ return streamMessage(buf, ControlIWant.codec(), opts)
868
+ }
476
869
  }
477
870
 
478
871
  export interface ControlGraft {
@@ -518,19 +911,48 @@ export namespace RPC {
518
911
  }
519
912
 
520
913
  return obj
914
+ }, function * (reader, length, prefix, opts = {}) {
915
+ const end = length == null ? reader.len : reader.pos + length
916
+
917
+ while (reader.pos < end) {
918
+ const tag = reader.uint32()
919
+
920
+ switch (tag >>> 3) {
921
+ case 1: {
922
+ yield {
923
+ field: `${prefix}.topicID`,
924
+ value: reader.string()
925
+ }
926
+ break
927
+ }
928
+ default: {
929
+ reader.skipType(tag & 7)
930
+ break
931
+ }
932
+ }
933
+ }
521
934
  })
522
935
  }
523
936
 
524
937
  return _codec
525
938
  }
526
939
 
527
- export const encode = (obj: Partial<ControlGraft>): Uint8Array => {
940
+ export interface ControlGraftTopicIDFieldEvent {
941
+ field: '$.topicID'
942
+ value: string
943
+ }
944
+
945
+ export function encode (obj: Partial<ControlGraft>): Uint8Array {
528
946
  return encodeMessage(obj, ControlGraft.codec())
529
947
  }
530
948
 
531
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlGraft>): ControlGraft => {
949
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlGraft>): ControlGraft {
532
950
  return decodeMessage(buf, ControlGraft.codec(), opts)
533
951
  }
952
+
953
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlGraft>): Generator<ControlGraftTopicIDFieldEvent> {
954
+ return streamMessage(buf, ControlGraft.codec(), opts)
955
+ }
534
956
  }
535
957
 
536
958
  export interface ControlPrune {
@@ -554,7 +976,7 @@ export namespace RPC {
554
976
  w.string(obj.topicID)
555
977
  }
556
978
 
557
- if (obj.peers != null) {
979
+ if (obj.peers != null && obj.peers.length > 0) {
558
980
  for (const value of obj.peers) {
559
981
  w.uint32(18)
560
982
  RPC.PeerInfo.codec().encode(value, w)
@@ -586,7 +1008,7 @@ export namespace RPC {
586
1008
  }
587
1009
  case 2: {
588
1010
  if (opts.limits?.peers != null && obj.peers.length === opts.limits.peers) {
589
- throw new MaxLengthError('Decode error - map field "peers" had too many elements')
1011
+ throw new MaxLengthError('Decode error - repeated field "peers" had too many elements')
590
1012
  }
591
1013
 
592
1014
  obj.peers.push(RPC.PeerInfo.codec().decode(reader, reader.uint32(), {
@@ -606,19 +1028,94 @@ export namespace RPC {
606
1028
  }
607
1029
 
608
1030
  return obj
1031
+ }, function * (reader, length, prefix, opts = {}) {
1032
+ const obj = {
1033
+ peers: 0
1034
+ }
1035
+
1036
+ const end = length == null ? reader.len : reader.pos + length
1037
+
1038
+ while (reader.pos < end) {
1039
+ const tag = reader.uint32()
1040
+
1041
+ switch (tag >>> 3) {
1042
+ case 1: {
1043
+ yield {
1044
+ field: `${prefix}.topicID`,
1045
+ value: reader.string()
1046
+ }
1047
+ break
1048
+ }
1049
+ case 2: {
1050
+ if (opts.limits?.peers != null && obj.peers === opts.limits.peers) {
1051
+ throw new MaxLengthError('Streaming decode error - repeated field "peers" had too many elements')
1052
+ }
1053
+
1054
+ for (const evt of RPC.PeerInfo.codec().stream(reader, reader.uint32(), `${prefix}.peers[]`, {
1055
+ limits: opts.limits?.peers$
1056
+ })) {
1057
+ yield {
1058
+ ...evt,
1059
+ index: obj.peers
1060
+ }
1061
+ }
1062
+
1063
+ obj.peers++
1064
+
1065
+ break
1066
+ }
1067
+ case 3: {
1068
+ yield {
1069
+ field: `${prefix}.backoff`,
1070
+ value: reader.uint64Number()
1071
+ }
1072
+ break
1073
+ }
1074
+ default: {
1075
+ reader.skipType(tag & 7)
1076
+ break
1077
+ }
1078
+ }
1079
+ }
609
1080
  })
610
1081
  }
611
1082
 
612
1083
  return _codec
613
1084
  }
614
1085
 
615
- export const encode = (obj: Partial<ControlPrune>): Uint8Array => {
1086
+ export interface ControlPruneTopicIDFieldEvent {
1087
+ field: '$.topicID'
1088
+ value: string
1089
+ }
1090
+
1091
+ export interface ControlPrunePeersPeerIDFieldEvent {
1092
+ field: '$.peers[].peerID'
1093
+ value: Uint8Array
1094
+ index: number
1095
+ }
1096
+
1097
+ export interface ControlPrunePeersSignedPeerRecordFieldEvent {
1098
+ field: '$.peers[].signedPeerRecord'
1099
+ value: Uint8Array
1100
+ index: number
1101
+ }
1102
+
1103
+ export interface ControlPruneBackoffFieldEvent {
1104
+ field: '$.backoff'
1105
+ value: number
1106
+ }
1107
+
1108
+ export function encode (obj: Partial<ControlPrune>): Uint8Array {
616
1109
  return encodeMessage(obj, ControlPrune.codec())
617
1110
  }
618
1111
 
619
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlPrune>): ControlPrune => {
1112
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlPrune>): ControlPrune {
620
1113
  return decodeMessage(buf, ControlPrune.codec(), opts)
621
1114
  }
1115
+
1116
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlPrune>): Generator<ControlPruneTopicIDFieldEvent | ControlPrunePeersPeerIDFieldEvent | ControlPrunePeersSignedPeerRecordFieldEvent | ControlPruneBackoffFieldEvent> {
1117
+ return streamMessage(buf, ControlPrune.codec(), opts)
1118
+ }
622
1119
  }
623
1120
 
624
1121
  export interface PeerInfo {
@@ -674,19 +1171,60 @@ export namespace RPC {
674
1171
  }
675
1172
 
676
1173
  return obj
1174
+ }, function * (reader, length, prefix, opts = {}) {
1175
+ const end = length == null ? reader.len : reader.pos + length
1176
+
1177
+ while (reader.pos < end) {
1178
+ const tag = reader.uint32()
1179
+
1180
+ switch (tag >>> 3) {
1181
+ case 1: {
1182
+ yield {
1183
+ field: `${prefix}.peerID`,
1184
+ value: reader.bytes()
1185
+ }
1186
+ break
1187
+ }
1188
+ case 2: {
1189
+ yield {
1190
+ field: `${prefix}.signedPeerRecord`,
1191
+ value: reader.bytes()
1192
+ }
1193
+ break
1194
+ }
1195
+ default: {
1196
+ reader.skipType(tag & 7)
1197
+ break
1198
+ }
1199
+ }
1200
+ }
677
1201
  })
678
1202
  }
679
1203
 
680
1204
  return _codec
681
1205
  }
682
1206
 
683
- export const encode = (obj: Partial<PeerInfo>): Uint8Array => {
1207
+ export interface PeerInfoPeerIDFieldEvent {
1208
+ field: '$.peerID'
1209
+ value: Uint8Array
1210
+ }
1211
+
1212
+ export interface PeerInfoSignedPeerRecordFieldEvent {
1213
+ field: '$.signedPeerRecord'
1214
+ value: Uint8Array
1215
+ }
1216
+
1217
+ export function encode (obj: Partial<PeerInfo>): Uint8Array {
684
1218
  return encodeMessage(obj, PeerInfo.codec())
685
1219
  }
686
1220
 
687
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerInfo>): PeerInfo => {
1221
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerInfo>): PeerInfo {
688
1222
  return decodeMessage(buf, PeerInfo.codec(), opts)
689
1223
  }
1224
+
1225
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerInfo>): Generator<PeerInfoPeerIDFieldEvent | PeerInfoSignedPeerRecordFieldEvent> {
1226
+ return streamMessage(buf, PeerInfo.codec(), opts)
1227
+ }
690
1228
  }
691
1229
 
692
1230
  export interface ControlIDontWant {
@@ -703,7 +1241,7 @@ export namespace RPC {
703
1241
  w.fork()
704
1242
  }
705
1243
 
706
- if (obj.messageIDs != null) {
1244
+ if (obj.messageIDs != null && obj.messageIDs.length > 0) {
707
1245
  for (const value of obj.messageIDs) {
708
1246
  w.uint32(10)
709
1247
  w.bytes(value)
@@ -726,7 +1264,7 @@ export namespace RPC {
726
1264
  switch (tag >>> 3) {
727
1265
  case 1: {
728
1266
  if (opts.limits?.messageIDs != null && obj.messageIDs.length === opts.limits.messageIDs) {
729
- throw new MaxLengthError('Decode error - map field "messageIDs" had too many elements')
1267
+ throw new MaxLengthError('Decode error - repeated field "messageIDs" had too many elements')
730
1268
  }
731
1269
 
732
1270
  obj.messageIDs.push(reader.bytes())
@@ -740,19 +1278,61 @@ export namespace RPC {
740
1278
  }
741
1279
 
742
1280
  return obj
1281
+ }, function * (reader, length, prefix, opts = {}) {
1282
+ const obj = {
1283
+ messageIDs: 0
1284
+ }
1285
+
1286
+ const end = length == null ? reader.len : reader.pos + length
1287
+
1288
+ while (reader.pos < end) {
1289
+ const tag = reader.uint32()
1290
+
1291
+ switch (tag >>> 3) {
1292
+ case 1: {
1293
+ if (opts.limits?.messageIDs != null && obj.messageIDs === opts.limits.messageIDs) {
1294
+ throw new MaxLengthError('Streaming decode error - repeated field "messageIDs" had too many elements')
1295
+ }
1296
+
1297
+ yield {
1298
+ field: `${prefix}.messageIDs[]`,
1299
+ index: obj.messageIDs,
1300
+ value: reader.bytes()
1301
+ }
1302
+
1303
+ obj.messageIDs++
1304
+
1305
+ break
1306
+ }
1307
+ default: {
1308
+ reader.skipType(tag & 7)
1309
+ break
1310
+ }
1311
+ }
1312
+ }
743
1313
  })
744
1314
  }
745
1315
 
746
1316
  return _codec
747
1317
  }
748
1318
 
749
- export const encode = (obj: Partial<ControlIDontWant>): Uint8Array => {
1319
+ export interface ControlIDontWantMessageIDsFieldEvent {
1320
+ field: '$.messageIDs[]'
1321
+ index: number
1322
+ value: Uint8Array
1323
+ }
1324
+
1325
+ export function encode (obj: Partial<ControlIDontWant>): Uint8Array {
750
1326
  return encodeMessage(obj, ControlIDontWant.codec())
751
1327
  }
752
1328
 
753
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIDontWant>): ControlIDontWant => {
1329
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIDontWant>): ControlIDontWant {
754
1330
  return decodeMessage(buf, ControlIDontWant.codec(), opts)
755
1331
  }
1332
+
1333
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ControlIDontWant>): Generator<ControlIDontWantMessageIDsFieldEvent> {
1334
+ return streamMessage(buf, ControlIDontWant.codec(), opts)
1335
+ }
756
1336
  }
757
1337
 
758
1338
  let _codec: Codec<RPC>
@@ -764,14 +1344,14 @@ export namespace RPC {
764
1344
  w.fork()
765
1345
  }
766
1346
 
767
- if (obj.subscriptions != null) {
1347
+ if (obj.subscriptions != null && obj.subscriptions.length > 0) {
768
1348
  for (const value of obj.subscriptions) {
769
1349
  w.uint32(10)
770
1350
  RPC.SubOpts.codec().encode(value, w)
771
1351
  }
772
1352
  }
773
1353
 
774
- if (obj.messages != null) {
1354
+ if (obj.messages != null && obj.messages.length > 0) {
775
1355
  for (const value of obj.messages) {
776
1356
  w.uint32(18)
777
1357
  RPC.Message.codec().encode(value, w)
@@ -800,7 +1380,7 @@ export namespace RPC {
800
1380
  switch (tag >>> 3) {
801
1381
  case 1: {
802
1382
  if (opts.limits?.subscriptions != null && obj.subscriptions.length === opts.limits.subscriptions) {
803
- throw new MaxLengthError('Decode error - map field "subscriptions" had too many elements')
1383
+ throw new MaxLengthError('Decode error - repeated field "subscriptions" had too many elements')
804
1384
  }
805
1385
 
806
1386
  obj.subscriptions.push(RPC.SubOpts.codec().decode(reader, reader.uint32(), {
@@ -810,7 +1390,7 @@ export namespace RPC {
810
1390
  }
811
1391
  case 2: {
812
1392
  if (opts.limits?.messages != null && obj.messages.length === opts.limits.messages) {
813
- throw new MaxLengthError('Decode error - map field "messages" had too many elements')
1393
+ throw new MaxLengthError('Decode error - repeated field "messages" had too many elements')
814
1394
  }
815
1395
 
816
1396
  obj.messages.push(RPC.Message.codec().decode(reader, reader.uint32(), {
@@ -832,17 +1412,184 @@ export namespace RPC {
832
1412
  }
833
1413
 
834
1414
  return obj
1415
+ }, function * (reader, length, prefix, opts = {}) {
1416
+ const obj = {
1417
+ subscriptions: 0,
1418
+ messages: 0
1419
+ }
1420
+
1421
+ const end = length == null ? reader.len : reader.pos + length
1422
+
1423
+ while (reader.pos < end) {
1424
+ const tag = reader.uint32()
1425
+
1426
+ switch (tag >>> 3) {
1427
+ case 1: {
1428
+ if (opts.limits?.subscriptions != null && obj.subscriptions === opts.limits.subscriptions) {
1429
+ throw new MaxLengthError('Streaming decode error - repeated field "subscriptions" had too many elements')
1430
+ }
1431
+
1432
+ for (const evt of RPC.SubOpts.codec().stream(reader, reader.uint32(), `${prefix}.subscriptions[]`, {
1433
+ limits: opts.limits?.subscriptions$
1434
+ })) {
1435
+ yield {
1436
+ ...evt,
1437
+ index: obj.subscriptions
1438
+ }
1439
+ }
1440
+
1441
+ obj.subscriptions++
1442
+
1443
+ break
1444
+ }
1445
+ case 2: {
1446
+ if (opts.limits?.messages != null && obj.messages === opts.limits.messages) {
1447
+ throw new MaxLengthError('Streaming decode error - repeated field "messages" had too many elements')
1448
+ }
1449
+
1450
+ for (const evt of RPC.Message.codec().stream(reader, reader.uint32(), `${prefix}.messages[]`, {
1451
+ limits: opts.limits?.messages$
1452
+ })) {
1453
+ yield {
1454
+ ...evt,
1455
+ index: obj.messages
1456
+ }
1457
+ }
1458
+
1459
+ obj.messages++
1460
+
1461
+ break
1462
+ }
1463
+ case 3: {
1464
+ yield * RPC.ControlMessage.codec().stream(reader, reader.uint32(), `${prefix}.control`, {
1465
+ limits: opts.limits?.control
1466
+ })
1467
+
1468
+ break
1469
+ }
1470
+ default: {
1471
+ reader.skipType(tag & 7)
1472
+ break
1473
+ }
1474
+ }
1475
+ }
835
1476
  })
836
1477
  }
837
1478
 
838
1479
  return _codec
839
1480
  }
840
1481
 
841
- export const encode = (obj: Partial<RPC>): Uint8Array => {
1482
+ export interface RPCSubscriptionsSubscribeFieldEvent {
1483
+ field: '$.subscriptions[].subscribe'
1484
+ value: boolean
1485
+ index: number
1486
+ }
1487
+
1488
+ export interface RPCSubscriptionsTopicFieldEvent {
1489
+ field: '$.subscriptions[].topic'
1490
+ value: string
1491
+ index: number
1492
+ }
1493
+
1494
+ export interface RPCMessagesFromFieldEvent {
1495
+ field: '$.messages[].from'
1496
+ value: Uint8Array
1497
+ index: number
1498
+ }
1499
+
1500
+ export interface RPCMessagesDataFieldEvent {
1501
+ field: '$.messages[].data'
1502
+ value: Uint8Array
1503
+ index: number
1504
+ }
1505
+
1506
+ export interface RPCMessagesSeqnoFieldEvent {
1507
+ field: '$.messages[].seqno'
1508
+ value: Uint8Array
1509
+ index: number
1510
+ }
1511
+
1512
+ export interface RPCMessagesTopicFieldEvent {
1513
+ field: '$.messages[].topic'
1514
+ value: string
1515
+ index: number
1516
+ }
1517
+
1518
+ export interface RPCMessagesSignatureFieldEvent {
1519
+ field: '$.messages[].signature'
1520
+ value: Uint8Array
1521
+ index: number
1522
+ }
1523
+
1524
+ export interface RPCMessagesKeyFieldEvent {
1525
+ field: '$.messages[].key'
1526
+ value: Uint8Array
1527
+ index: number
1528
+ }
1529
+
1530
+ export interface RPCControlIhaveTopicIDFieldEvent {
1531
+ field: '$.control.ihave[].topicID'
1532
+ value: string
1533
+ index: number
1534
+ }
1535
+
1536
+ export interface RPCControlIhaveMessageIDsFieldEvent {
1537
+ field: '$.control.ihave[].messageIDs[]'
1538
+ index: number
1539
+ value: Uint8Array
1540
+ }
1541
+
1542
+ export interface RPCControlIwantMessageIDsFieldEvent {
1543
+ field: '$.control.iwant[].messageIDs[]'
1544
+ index: number
1545
+ value: Uint8Array
1546
+ }
1547
+
1548
+ export interface RPCControlGraftTopicIDFieldEvent {
1549
+ field: '$.control.graft[].topicID'
1550
+ value: string
1551
+ index: number
1552
+ }
1553
+
1554
+ export interface RPCControlPruneTopicIDFieldEvent {
1555
+ field: '$.control.prune[].topicID'
1556
+ value: string
1557
+ index: number
1558
+ }
1559
+
1560
+ export interface RPCControlPrunePeersPeerIDFieldEvent {
1561
+ field: '$.control.prune[].peers[].peerID'
1562
+ value: Uint8Array
1563
+ index: number
1564
+ }
1565
+
1566
+ export interface RPCControlPrunePeersSignedPeerRecordFieldEvent {
1567
+ field: '$.control.prune[].peers[].signedPeerRecord'
1568
+ value: Uint8Array
1569
+ index: number
1570
+ }
1571
+
1572
+ export interface RPCControlPruneBackoffFieldEvent {
1573
+ field: '$.control.prune[].backoff'
1574
+ value: number
1575
+ index: number
1576
+ }
1577
+
1578
+ export interface RPCControlIdontwantMessageIDsFieldEvent {
1579
+ field: '$.control.idontwant[].messageIDs[]'
1580
+ index: number
1581
+ value: Uint8Array
1582
+ }
1583
+
1584
+ export function encode (obj: Partial<RPC>): Uint8Array {
842
1585
  return encodeMessage(obj, RPC.codec())
843
1586
  }
844
1587
 
845
- export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<RPC>): RPC => {
1588
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<RPC>): RPC {
846
1589
  return decodeMessage(buf, RPC.codec(), opts)
847
1590
  }
1591
+
1592
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<RPC>): Generator<RPCSubscriptionsSubscribeFieldEvent | RPCSubscriptionsTopicFieldEvent | RPCMessagesFromFieldEvent | RPCMessagesDataFieldEvent | RPCMessagesSeqnoFieldEvent | RPCMessagesTopicFieldEvent | RPCMessagesSignatureFieldEvent | RPCMessagesKeyFieldEvent | RPCControlIhaveTopicIDFieldEvent | RPCControlIhaveMessageIDsFieldEvent | RPCControlIwantMessageIDsFieldEvent | RPCControlGraftTopicIDFieldEvent | RPCControlPruneTopicIDFieldEvent | RPCControlPrunePeersPeerIDFieldEvent | RPCControlPrunePeersSignedPeerRecordFieldEvent | RPCControlPruneBackoffFieldEvent | RPCControlIdontwantMessageIDsFieldEvent> {
1593
+ return streamMessage(buf, RPC.codec(), opts)
1594
+ }
848
1595
  }