@libp2p/daemon-protocol 8.0.3-f88ec96cf → 8.0.4

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/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime'
2
- import type { Codec } from 'protons-runtime'
1
+ import { decodeMessage, encodeMessage, enumeration, MaxLengthError, message, streamMessage } from 'protons-runtime'
2
+ import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc'
3
+ import type { Codec, DecodeOptions } from 'protons-runtime'
3
4
  import type { Uint8ArrayList } from 'uint8arraylist'
4
5
 
5
6
  export interface Request {
@@ -104,7 +105,7 @@ export namespace Request {
104
105
  if (opts.lengthDelimited !== false) {
105
106
  w.ldelim()
106
107
  }
107
- }, (reader, length) => {
108
+ }, (reader, length, opts = {}) => {
108
109
  const obj: any = {}
109
110
 
110
111
  const end = length == null ? reader.len : reader.pos + length
@@ -113,52 +114,297 @@ export namespace Request {
113
114
  const tag = reader.uint32()
114
115
 
115
116
  switch (tag >>> 3) {
116
- case 1:
117
+ case 1: {
117
118
  obj.type = Request.Type.codec().decode(reader)
118
119
  break
119
- case 2:
120
- obj.connect = ConnectRequest.codec().decode(reader, reader.uint32())
120
+ }
121
+ case 2: {
122
+ obj.connect = ConnectRequest.codec().decode(reader, reader.uint32(), {
123
+ limits: opts.limits?.connect
124
+ })
125
+ break
126
+ }
127
+ case 3: {
128
+ obj.streamOpen = StreamOpenRequest.codec().decode(reader, reader.uint32(), {
129
+ limits: opts.limits?.streamOpen
130
+ })
131
+ break
132
+ }
133
+ case 4: {
134
+ obj.streamHandler = StreamHandlerRequest.codec().decode(reader, reader.uint32(), {
135
+ limits: opts.limits?.streamHandler
136
+ })
137
+ break
138
+ }
139
+ case 5: {
140
+ obj.dht = DHTRequest.codec().decode(reader, reader.uint32(), {
141
+ limits: opts.limits?.dht
142
+ })
143
+ break
144
+ }
145
+ case 6: {
146
+ obj.connManager = ConnManagerRequest.codec().decode(reader, reader.uint32(), {
147
+ limits: opts.limits?.connManager
148
+ })
149
+ break
150
+ }
151
+ case 7: {
152
+ obj.disconnect = DisconnectRequest.codec().decode(reader, reader.uint32(), {
153
+ limits: opts.limits?.disconnect
154
+ })
155
+ break
156
+ }
157
+ case 8: {
158
+ obj.pubsub = PSRequest.codec().decode(reader, reader.uint32(), {
159
+ limits: opts.limits?.pubsub
160
+ })
161
+ break
162
+ }
163
+ case 9: {
164
+ obj.peerStore = PeerstoreRequest.codec().decode(reader, reader.uint32(), {
165
+ limits: opts.limits?.peerStore
166
+ })
167
+ break
168
+ }
169
+ default: {
170
+ reader.skipType(tag & 7)
121
171
  break
122
- case 3:
123
- obj.streamOpen = StreamOpenRequest.codec().decode(reader, reader.uint32())
172
+ }
173
+ }
174
+ }
175
+
176
+ return obj
177
+ }, function * (reader, length, prefix, opts = {}) {
178
+ const end = length == null ? reader.len : reader.pos + length
179
+
180
+ while (reader.pos < end) {
181
+ const tag = reader.uint32()
182
+
183
+ switch (tag >>> 3) {
184
+ case 1: {
185
+ yield {
186
+ field: `${prefix}.type`,
187
+ value: Request.Type.codec().decode(reader)
188
+ }
124
189
  break
125
- case 4:
126
- obj.streamHandler = StreamHandlerRequest.codec().decode(reader, reader.uint32())
190
+ }
191
+ case 2: {
192
+ yield * ConnectRequest.codec().stream(reader, reader.uint32(), `${prefix}.connect`, {
193
+ limits: opts.limits?.connect
194
+ })
195
+
127
196
  break
128
- case 5:
129
- obj.dht = DHTRequest.codec().decode(reader, reader.uint32())
197
+ }
198
+ case 3: {
199
+ yield * StreamOpenRequest.codec().stream(reader, reader.uint32(), `${prefix}.streamOpen`, {
200
+ limits: opts.limits?.streamOpen
201
+ })
202
+
130
203
  break
131
- case 6:
132
- obj.connManager = ConnManagerRequest.codec().decode(reader, reader.uint32())
204
+ }
205
+ case 4: {
206
+ yield * StreamHandlerRequest.codec().stream(reader, reader.uint32(), `${prefix}.streamHandler`, {
207
+ limits: opts.limits?.streamHandler
208
+ })
209
+
133
210
  break
134
- case 7:
135
- obj.disconnect = DisconnectRequest.codec().decode(reader, reader.uint32())
211
+ }
212
+ case 5: {
213
+ yield * DHTRequest.codec().stream(reader, reader.uint32(), `${prefix}.dht`, {
214
+ limits: opts.limits?.dht
215
+ })
216
+
136
217
  break
137
- case 8:
138
- obj.pubsub = PSRequest.codec().decode(reader, reader.uint32())
218
+ }
219
+ case 6: {
220
+ yield * ConnManagerRequest.codec().stream(reader, reader.uint32(), `${prefix}.connManager`, {
221
+ limits: opts.limits?.connManager
222
+ })
223
+
139
224
  break
140
- case 9:
141
- obj.peerStore = PeerstoreRequest.codec().decode(reader, reader.uint32())
225
+ }
226
+ case 7: {
227
+ yield * DisconnectRequest.codec().stream(reader, reader.uint32(), `${prefix}.disconnect`, {
228
+ limits: opts.limits?.disconnect
229
+ })
230
+
231
+ break
232
+ }
233
+ case 8: {
234
+ yield * PSRequest.codec().stream(reader, reader.uint32(), `${prefix}.pubsub`, {
235
+ limits: opts.limits?.pubsub
236
+ })
237
+
238
+ break
239
+ }
240
+ case 9: {
241
+ yield * PeerstoreRequest.codec().stream(reader, reader.uint32(), `${prefix}.peerStore`, {
242
+ limits: opts.limits?.peerStore
243
+ })
244
+
142
245
  break
143
- default:
246
+ }
247
+ default: {
144
248
  reader.skipType(tag & 7)
145
249
  break
250
+ }
146
251
  }
147
252
  }
148
-
149
- return obj
150
253
  })
151
254
  }
152
255
 
153
256
  return _codec
154
257
  }
155
258
 
156
- export const encode = (obj: Partial<Request>): Uint8Array => {
259
+ export interface RequestTypeFieldEvent {
260
+ field: '$.type'
261
+ value: Request.Type
262
+ }
263
+
264
+ export interface RequestConnectPeerFieldEvent {
265
+ field: '$.connect.peer'
266
+ value: Uint8Array
267
+ }
268
+
269
+ export interface RequestConnectAddrsFieldEvent {
270
+ field: '$.connect.addrs[]'
271
+ index: number
272
+ value: Uint8Array
273
+ }
274
+
275
+ export interface RequestConnectTimeoutFieldEvent {
276
+ field: '$.connect.timeout'
277
+ value: bigint
278
+ }
279
+
280
+ export interface RequestStreamOpenPeerFieldEvent {
281
+ field: '$.streamOpen.peer'
282
+ value: Uint8Array
283
+ }
284
+
285
+ export interface RequestStreamOpenProtoFieldEvent {
286
+ field: '$.streamOpen.proto[]'
287
+ index: number
288
+ value: string
289
+ }
290
+
291
+ export interface RequestStreamOpenTimeoutFieldEvent {
292
+ field: '$.streamOpen.timeout'
293
+ value: bigint
294
+ }
295
+
296
+ export interface RequestStreamHandlerAddrFieldEvent {
297
+ field: '$.streamHandler.addr'
298
+ value: Uint8Array
299
+ }
300
+
301
+ export interface RequestStreamHandlerProtoFieldEvent {
302
+ field: '$.streamHandler.proto[]'
303
+ index: number
304
+ value: string
305
+ }
306
+
307
+ export interface RequestDhtTypeFieldEvent {
308
+ field: '$.dht.type'
309
+ value: DHTRequest.Type
310
+ }
311
+
312
+ export interface RequestDhtPeerFieldEvent {
313
+ field: '$.dht.peer'
314
+ value: Uint8Array
315
+ }
316
+
317
+ export interface RequestDhtCidFieldEvent {
318
+ field: '$.dht.cid'
319
+ value: Uint8Array
320
+ }
321
+
322
+ export interface RequestDhtKeyFieldEvent {
323
+ field: '$.dht.key'
324
+ value: Uint8Array
325
+ }
326
+
327
+ export interface RequestDhtValueFieldEvent {
328
+ field: '$.dht.value'
329
+ value: Uint8Array
330
+ }
331
+
332
+ export interface RequestDhtCountFieldEvent {
333
+ field: '$.dht.count'
334
+ value: number
335
+ }
336
+
337
+ export interface RequestDhtTimeoutFieldEvent {
338
+ field: '$.dht.timeout'
339
+ value: bigint
340
+ }
341
+
342
+ export interface RequestConnManagerTypeFieldEvent {
343
+ field: '$.connManager.type'
344
+ value: ConnManagerRequest.Type
345
+ }
346
+
347
+ export interface RequestConnManagerPeerFieldEvent {
348
+ field: '$.connManager.peer'
349
+ value: Uint8Array
350
+ }
351
+
352
+ export interface RequestConnManagerTagFieldEvent {
353
+ field: '$.connManager.tag'
354
+ value: string
355
+ }
356
+
357
+ export interface RequestConnManagerWeightFieldEvent {
358
+ field: '$.connManager.weight'
359
+ value: bigint
360
+ }
361
+
362
+ export interface RequestDisconnectPeerFieldEvent {
363
+ field: '$.disconnect.peer'
364
+ value: Uint8Array
365
+ }
366
+
367
+ export interface RequestPubsubTypeFieldEvent {
368
+ field: '$.pubsub.type'
369
+ value: PSRequest.Type
370
+ }
371
+
372
+ export interface RequestPubsubTopicFieldEvent {
373
+ field: '$.pubsub.topic'
374
+ value: string
375
+ }
376
+
377
+ export interface RequestPubsubDataFieldEvent {
378
+ field: '$.pubsub.data'
379
+ value: Uint8Array
380
+ }
381
+
382
+ export interface RequestPeerStoreTypeFieldEvent {
383
+ field: '$.peerStore.type'
384
+ value: PeerstoreRequest.Type
385
+ }
386
+
387
+ export interface RequestPeerStoreIdFieldEvent {
388
+ field: '$.peerStore.id'
389
+ value: Uint8Array
390
+ }
391
+
392
+ export interface RequestPeerStoreProtosFieldEvent {
393
+ field: '$.peerStore.protos[]'
394
+ index: number
395
+ value: string
396
+ }
397
+
398
+ export function encode (obj: Partial<Request>): Uint8Array {
157
399
  return encodeMessage(obj, Request.codec())
158
400
  }
159
401
 
160
- export const decode = (buf: Uint8Array | Uint8ArrayList): Request => {
161
- return decodeMessage(buf, Request.codec())
402
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Request>): Request {
403
+ return decodeMessage(buf, Request.codec(), opts)
404
+ }
405
+
406
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Request>): Generator<RequestTypeFieldEvent | RequestConnectPeerFieldEvent | RequestConnectAddrsFieldEvent | RequestConnectTimeoutFieldEvent | RequestStreamOpenPeerFieldEvent | RequestStreamOpenProtoFieldEvent | RequestStreamOpenTimeoutFieldEvent | RequestStreamHandlerAddrFieldEvent | RequestStreamHandlerProtoFieldEvent | RequestDhtTypeFieldEvent | RequestDhtPeerFieldEvent | RequestDhtCidFieldEvent | RequestDhtKeyFieldEvent | RequestDhtValueFieldEvent | RequestDhtCountFieldEvent | RequestDhtTimeoutFieldEvent | RequestConnManagerTypeFieldEvent | RequestConnManagerPeerFieldEvent | RequestConnManagerTagFieldEvent | RequestConnManagerWeightFieldEvent | RequestDisconnectPeerFieldEvent | RequestPubsubTypeFieldEvent | RequestPubsubTopicFieldEvent | RequestPubsubDataFieldEvent | RequestPeerStoreTypeFieldEvent | RequestPeerStoreIdFieldEvent | RequestPeerStoreProtosFieldEvent> {
407
+ return streamMessage(buf, Request.codec(), opts)
162
408
  }
163
409
  }
164
410
 
@@ -224,7 +470,7 @@ export namespace Response {
224
470
  DHTResponse.codec().encode(obj.dht, w)
225
471
  }
226
472
 
227
- if (obj.peers != null) {
473
+ if (obj.peers != null && obj.peers.length > 0) {
228
474
  for (const value of obj.peers) {
229
475
  w.uint32(50)
230
476
  PeerInfo.codec().encode(value, w)
@@ -244,7 +490,7 @@ export namespace Response {
244
490
  if (opts.lengthDelimited !== false) {
245
491
  w.ldelim()
246
492
  }
247
- }, (reader, length) => {
493
+ }, (reader, length, opts = {}) => {
248
494
  const obj: any = {
249
495
  peers: []
250
496
  }
@@ -255,49 +501,262 @@ export namespace Response {
255
501
  const tag = reader.uint32()
256
502
 
257
503
  switch (tag >>> 3) {
258
- case 1:
504
+ case 1: {
259
505
  obj.type = Response.Type.codec().decode(reader)
260
506
  break
261
- case 2:
262
- obj.error = ErrorResponse.codec().decode(reader, reader.uint32())
507
+ }
508
+ case 2: {
509
+ obj.error = ErrorResponse.codec().decode(reader, reader.uint32(), {
510
+ limits: opts.limits?.error
511
+ })
512
+ break
513
+ }
514
+ case 3: {
515
+ obj.streamInfo = StreamInfo.codec().decode(reader, reader.uint32(), {
516
+ limits: opts.limits?.streamInfo
517
+ })
518
+ break
519
+ }
520
+ case 4: {
521
+ obj.identify = IdentifyResponse.codec().decode(reader, reader.uint32(), {
522
+ limits: opts.limits?.identify
523
+ })
524
+ break
525
+ }
526
+ case 5: {
527
+ obj.dht = DHTResponse.codec().decode(reader, reader.uint32(), {
528
+ limits: opts.limits?.dht
529
+ })
530
+ break
531
+ }
532
+ case 6: {
533
+ if (opts.limits?.peers != null && obj.peers.length === opts.limits.peers) {
534
+ throw new MaxLengthError('Decode error - repeated field "peers" had too many elements')
535
+ }
536
+
537
+ obj.peers.push(PeerInfo.codec().decode(reader, reader.uint32(), {
538
+ limits: opts.limits?.peers$
539
+ }))
540
+ break
541
+ }
542
+ case 7: {
543
+ obj.pubsub = PSResponse.codec().decode(reader, reader.uint32(), {
544
+ limits: opts.limits?.pubsub
545
+ })
546
+ break
547
+ }
548
+ case 8: {
549
+ obj.peerStore = PeerstoreResponse.codec().decode(reader, reader.uint32(), {
550
+ limits: opts.limits?.peerStore
551
+ })
552
+ break
553
+ }
554
+ default: {
555
+ reader.skipType(tag & 7)
263
556
  break
264
- case 3:
265
- obj.streamInfo = StreamInfo.codec().decode(reader, reader.uint32())
557
+ }
558
+ }
559
+ }
560
+
561
+ return obj
562
+ }, function * (reader, length, prefix, opts = {}) {
563
+ const obj = {
564
+ peers: 0
565
+ }
566
+
567
+ const end = length == null ? reader.len : reader.pos + length
568
+
569
+ while (reader.pos < end) {
570
+ const tag = reader.uint32()
571
+
572
+ switch (tag >>> 3) {
573
+ case 1: {
574
+ yield {
575
+ field: `${prefix}.type`,
576
+ value: Response.Type.codec().decode(reader)
577
+ }
266
578
  break
267
- case 4:
268
- obj.identify = IdentifyResponse.codec().decode(reader, reader.uint32())
579
+ }
580
+ case 2: {
581
+ yield * ErrorResponse.codec().stream(reader, reader.uint32(), `${prefix}.error`, {
582
+ limits: opts.limits?.error
583
+ })
584
+
269
585
  break
270
- case 5:
271
- obj.dht = DHTResponse.codec().decode(reader, reader.uint32())
586
+ }
587
+ case 3: {
588
+ yield * StreamInfo.codec().stream(reader, reader.uint32(), `${prefix}.streamInfo`, {
589
+ limits: opts.limits?.streamInfo
590
+ })
591
+
592
+ break
593
+ }
594
+ case 4: {
595
+ yield * IdentifyResponse.codec().stream(reader, reader.uint32(), `${prefix}.identify`, {
596
+ limits: opts.limits?.identify
597
+ })
598
+
272
599
  break
273
- case 6:
274
- obj.peers.push(PeerInfo.codec().decode(reader, reader.uint32()))
600
+ }
601
+ case 5: {
602
+ yield * DHTResponse.codec().stream(reader, reader.uint32(), `${prefix}.dht`, {
603
+ limits: opts.limits?.dht
604
+ })
605
+
275
606
  break
276
- case 7:
277
- obj.pubsub = PSResponse.codec().decode(reader, reader.uint32())
607
+ }
608
+ case 6: {
609
+ if (opts.limits?.peers != null && obj.peers === opts.limits.peers) {
610
+ throw new MaxLengthError('Streaming decode error - repeated field "peers" had too many elements')
611
+ }
612
+
613
+ for (const evt of PeerInfo.codec().stream(reader, reader.uint32(), `${prefix}.peers[]`, {
614
+ limits: opts.limits?.peers$
615
+ })) {
616
+ yield {
617
+ ...evt,
618
+ index: obj.peers
619
+ }
620
+ }
621
+
622
+ obj.peers++
623
+
278
624
  break
279
- case 8:
280
- obj.peerStore = PeerstoreResponse.codec().decode(reader, reader.uint32())
625
+ }
626
+ case 7: {
627
+ yield * PSResponse.codec().stream(reader, reader.uint32(), `${prefix}.pubsub`, {
628
+ limits: opts.limits?.pubsub
629
+ })
630
+
281
631
  break
282
- default:
632
+ }
633
+ case 8: {
634
+ yield * PeerstoreResponse.codec().stream(reader, reader.uint32(), `${prefix}.peerStore`, {
635
+ limits: opts.limits?.peerStore
636
+ })
637
+
638
+ break
639
+ }
640
+ default: {
283
641
  reader.skipType(tag & 7)
284
642
  break
643
+ }
285
644
  }
286
645
  }
287
-
288
- return obj
289
646
  })
290
647
  }
291
648
 
292
649
  return _codec
293
650
  }
294
651
 
295
- export const encode = (obj: Partial<Response>): Uint8Array => {
652
+ export interface ResponseTypeFieldEvent {
653
+ field: '$.type'
654
+ value: Response.Type
655
+ }
656
+
657
+ export interface ResponseErrorMsgFieldEvent {
658
+ field: '$.error.msg'
659
+ value: string
660
+ }
661
+
662
+ export interface ResponseStreamInfoPeerFieldEvent {
663
+ field: '$.streamInfo.peer'
664
+ value: Uint8Array
665
+ }
666
+
667
+ export interface ResponseStreamInfoAddrFieldEvent {
668
+ field: '$.streamInfo.addr'
669
+ value: Uint8Array
670
+ }
671
+
672
+ export interface ResponseStreamInfoProtoFieldEvent {
673
+ field: '$.streamInfo.proto'
674
+ value: string
675
+ }
676
+
677
+ export interface ResponseIdentifyIdFieldEvent {
678
+ field: '$.identify.id'
679
+ value: Uint8Array
680
+ }
681
+
682
+ export interface ResponseIdentifyAddrsFieldEvent {
683
+ field: '$.identify.addrs[]'
684
+ index: number
685
+ value: Uint8Array
686
+ }
687
+
688
+ export interface ResponseDhtTypeFieldEvent {
689
+ field: '$.dht.type'
690
+ value: DHTResponse.Type
691
+ }
692
+
693
+ export interface ResponseDhtPeerIdFieldEvent {
694
+ field: '$.dht.peer.id'
695
+ value: Uint8Array
696
+ }
697
+
698
+ export interface ResponseDhtPeerAddrsFieldEvent {
699
+ field: '$.dht.peer.addrs[]'
700
+ index: number
701
+ value: Uint8Array
702
+ }
703
+
704
+ export interface ResponseDhtValueFieldEvent {
705
+ field: '$.dht.value'
706
+ value: Uint8Array
707
+ }
708
+
709
+ export interface ResponsePeersIdFieldEvent {
710
+ field: '$.peers[].id'
711
+ value: Uint8Array
712
+ index: number
713
+ }
714
+
715
+ export interface ResponsePeersAddrsFieldEvent {
716
+ field: '$.peers[].addrs[]'
717
+ index: number
718
+ value: Uint8Array
719
+ }
720
+
721
+ export interface ResponsePubsubTopicsFieldEvent {
722
+ field: '$.pubsub.topics[]'
723
+ index: number
724
+ value: string
725
+ }
726
+
727
+ export interface ResponsePubsubPeerIDsFieldEvent {
728
+ field: '$.pubsub.peerIDs[]'
729
+ index: number
730
+ value: Uint8Array
731
+ }
732
+
733
+ export interface ResponsePeerStorePeerIdFieldEvent {
734
+ field: '$.peerStore.peer.id'
735
+ value: Uint8Array
736
+ }
737
+
738
+ export interface ResponsePeerStorePeerAddrsFieldEvent {
739
+ field: '$.peerStore.peer.addrs[]'
740
+ index: number
741
+ value: Uint8Array
742
+ }
743
+
744
+ export interface ResponsePeerStoreProtosFieldEvent {
745
+ field: '$.peerStore.protos[]'
746
+ index: number
747
+ value: string
748
+ }
749
+
750
+ export function encode (obj: Partial<Response>): Uint8Array {
296
751
  return encodeMessage(obj, Response.codec())
297
752
  }
298
753
 
299
- export const decode = (buf: Uint8Array | Uint8ArrayList): Response => {
300
- return decodeMessage(buf, Response.codec())
754
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Response>): Response {
755
+ return decodeMessage(buf, Response.codec(), opts)
756
+ }
757
+
758
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Response>): Generator<ResponseTypeFieldEvent | ResponseErrorMsgFieldEvent | ResponseStreamInfoPeerFieldEvent | ResponseStreamInfoAddrFieldEvent | ResponseStreamInfoProtoFieldEvent | ResponseIdentifyIdFieldEvent | ResponseIdentifyAddrsFieldEvent | ResponseDhtTypeFieldEvent | ResponseDhtPeerIdFieldEvent | ResponseDhtPeerAddrsFieldEvent | ResponseDhtValueFieldEvent | ResponsePeersIdFieldEvent | ResponsePeersAddrsFieldEvent | ResponsePubsubTopicsFieldEvent | ResponsePubsubPeerIDsFieldEvent | ResponsePeerStorePeerIdFieldEvent | ResponsePeerStorePeerAddrsFieldEvent | ResponsePeerStoreProtosFieldEvent> {
759
+ return streamMessage(buf, Response.codec(), opts)
301
760
  }
302
761
  }
303
762
 
@@ -321,7 +780,7 @@ export namespace IdentifyResponse {
321
780
  w.bytes(obj.id)
322
781
  }
323
782
 
324
- if (obj.addrs != null) {
783
+ if (obj.addrs != null && obj.addrs.length > 0) {
325
784
  for (const value of obj.addrs) {
326
785
  w.uint32(18)
327
786
  w.bytes(value)
@@ -331,9 +790,9 @@ export namespace IdentifyResponse {
331
790
  if (opts.lengthDelimited !== false) {
332
791
  w.ldelim()
333
792
  }
334
- }, (reader, length) => {
793
+ }, (reader, length, opts = {}) => {
335
794
  const obj: any = {
336
- id: new Uint8Array(0),
795
+ id: uint8ArrayAlloc(0),
337
796
  addrs: []
338
797
  }
339
798
 
@@ -343,31 +802,92 @@ export namespace IdentifyResponse {
343
802
  const tag = reader.uint32()
344
803
 
345
804
  switch (tag >>> 3) {
346
- case 1:
805
+ case 1: {
347
806
  obj.id = reader.bytes()
348
807
  break
349
- case 2:
808
+ }
809
+ case 2: {
810
+ if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {
811
+ throw new MaxLengthError('Decode error - repeated field "addrs" had too many elements')
812
+ }
813
+
350
814
  obj.addrs.push(reader.bytes())
351
815
  break
352
- default:
816
+ }
817
+ default: {
353
818
  reader.skipType(tag & 7)
354
819
  break
820
+ }
355
821
  }
356
822
  }
357
823
 
358
824
  return obj
825
+ }, function * (reader, length, prefix, opts = {}) {
826
+ const obj = {
827
+ addrs: 0
828
+ }
829
+
830
+ const end = length == null ? reader.len : reader.pos + length
831
+
832
+ while (reader.pos < end) {
833
+ const tag = reader.uint32()
834
+
835
+ switch (tag >>> 3) {
836
+ case 1: {
837
+ yield {
838
+ field: `${prefix}.id`,
839
+ value: reader.bytes()
840
+ }
841
+ break
842
+ }
843
+ case 2: {
844
+ if (opts.limits?.addrs != null && obj.addrs === opts.limits.addrs) {
845
+ throw new MaxLengthError('Streaming decode error - repeated field "addrs" had too many elements')
846
+ }
847
+
848
+ yield {
849
+ field: `${prefix}.addrs[]`,
850
+ index: obj.addrs,
851
+ value: reader.bytes()
852
+ }
853
+
854
+ obj.addrs++
855
+
856
+ break
857
+ }
858
+ default: {
859
+ reader.skipType(tag & 7)
860
+ break
861
+ }
862
+ }
863
+ }
359
864
  })
360
865
  }
361
866
 
362
867
  return _codec
363
868
  }
364
869
 
365
- export const encode = (obj: Partial<IdentifyResponse>): Uint8Array => {
870
+ export interface IdentifyResponseIdFieldEvent {
871
+ field: '$.id'
872
+ value: Uint8Array
873
+ }
874
+
875
+ export interface IdentifyResponseAddrsFieldEvent {
876
+ field: '$.addrs[]'
877
+ index: number
878
+ value: Uint8Array
879
+ }
880
+
881
+ export function encode (obj: Partial<IdentifyResponse>): Uint8Array {
366
882
  return encodeMessage(obj, IdentifyResponse.codec())
367
883
  }
368
884
 
369
- export const decode = (buf: Uint8Array | Uint8ArrayList): IdentifyResponse => {
370
- return decodeMessage(buf, IdentifyResponse.codec())
885
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<IdentifyResponse>): IdentifyResponse {
886
+ return decodeMessage(buf, IdentifyResponse.codec(), opts)
887
+ }
888
+
889
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<IdentifyResponse>): Generator<IdentifyResponseIdFieldEvent | IdentifyResponseAddrsFieldEvent> {
890
+ return streamMessage(buf, IdentifyResponse.codec(), opts)
371
891
  }
372
892
  }
373
893
 
@@ -392,7 +912,7 @@ export namespace ConnectRequest {
392
912
  w.bytes(obj.peer)
393
913
  }
394
914
 
395
- if (obj.addrs != null) {
915
+ if (obj.addrs != null && obj.addrs.length > 0) {
396
916
  for (const value of obj.addrs) {
397
917
  w.uint32(18)
398
918
  w.bytes(value)
@@ -407,9 +927,9 @@ export namespace ConnectRequest {
407
927
  if (opts.lengthDelimited !== false) {
408
928
  w.ldelim()
409
929
  }
410
- }, (reader, length) => {
930
+ }, (reader, length, opts = {}) => {
411
931
  const obj: any = {
412
- peer: new Uint8Array(0),
932
+ peer: uint8ArrayAlloc(0),
413
933
  addrs: []
414
934
  }
415
935
 
@@ -419,34 +939,108 @@ export namespace ConnectRequest {
419
939
  const tag = reader.uint32()
420
940
 
421
941
  switch (tag >>> 3) {
422
- case 1:
942
+ case 1: {
423
943
  obj.peer = reader.bytes()
424
944
  break
425
- case 2:
945
+ }
946
+ case 2: {
947
+ if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {
948
+ throw new MaxLengthError('Decode error - repeated field "addrs" had too many elements')
949
+ }
950
+
426
951
  obj.addrs.push(reader.bytes())
427
952
  break
428
- case 3:
953
+ }
954
+ case 3: {
429
955
  obj.timeout = reader.int64()
430
956
  break
431
- default:
957
+ }
958
+ default: {
432
959
  reader.skipType(tag & 7)
433
960
  break
961
+ }
434
962
  }
435
963
  }
436
964
 
437
965
  return obj
966
+ }, function * (reader, length, prefix, opts = {}) {
967
+ const obj = {
968
+ addrs: 0
969
+ }
970
+
971
+ const end = length == null ? reader.len : reader.pos + length
972
+
973
+ while (reader.pos < end) {
974
+ const tag = reader.uint32()
975
+
976
+ switch (tag >>> 3) {
977
+ case 1: {
978
+ yield {
979
+ field: `${prefix}.peer`,
980
+ value: reader.bytes()
981
+ }
982
+ break
983
+ }
984
+ case 2: {
985
+ if (opts.limits?.addrs != null && obj.addrs === opts.limits.addrs) {
986
+ throw new MaxLengthError('Streaming decode error - repeated field "addrs" had too many elements')
987
+ }
988
+
989
+ yield {
990
+ field: `${prefix}.addrs[]`,
991
+ index: obj.addrs,
992
+ value: reader.bytes()
993
+ }
994
+
995
+ obj.addrs++
996
+
997
+ break
998
+ }
999
+ case 3: {
1000
+ yield {
1001
+ field: `${prefix}.timeout`,
1002
+ value: reader.int64()
1003
+ }
1004
+ break
1005
+ }
1006
+ default: {
1007
+ reader.skipType(tag & 7)
1008
+ break
1009
+ }
1010
+ }
1011
+ }
438
1012
  })
439
1013
  }
440
1014
 
441
1015
  return _codec
442
1016
  }
443
1017
 
444
- export const encode = (obj: Partial<ConnectRequest>): Uint8Array => {
1018
+ export interface ConnectRequestPeerFieldEvent {
1019
+ field: '$.peer'
1020
+ value: Uint8Array
1021
+ }
1022
+
1023
+ export interface ConnectRequestAddrsFieldEvent {
1024
+ field: '$.addrs[]'
1025
+ index: number
1026
+ value: Uint8Array
1027
+ }
1028
+
1029
+ export interface ConnectRequestTimeoutFieldEvent {
1030
+ field: '$.timeout'
1031
+ value: bigint
1032
+ }
1033
+
1034
+ export function encode (obj: Partial<ConnectRequest>): Uint8Array {
445
1035
  return encodeMessage(obj, ConnectRequest.codec())
446
1036
  }
447
1037
 
448
- export const decode = (buf: Uint8Array | Uint8ArrayList): ConnectRequest => {
449
- return decodeMessage(buf, ConnectRequest.codec())
1038
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ConnectRequest>): ConnectRequest {
1039
+ return decodeMessage(buf, ConnectRequest.codec(), opts)
1040
+ }
1041
+
1042
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ConnectRequest>): Generator<ConnectRequestPeerFieldEvent | ConnectRequestAddrsFieldEvent | ConnectRequestTimeoutFieldEvent> {
1043
+ return streamMessage(buf, ConnectRequest.codec(), opts)
450
1044
  }
451
1045
  }
452
1046
 
@@ -471,7 +1065,7 @@ export namespace StreamOpenRequest {
471
1065
  w.bytes(obj.peer)
472
1066
  }
473
1067
 
474
- if (obj.proto != null) {
1068
+ if (obj.proto != null && obj.proto.length > 0) {
475
1069
  for (const value of obj.proto) {
476
1070
  w.uint32(18)
477
1071
  w.string(value)
@@ -486,9 +1080,9 @@ export namespace StreamOpenRequest {
486
1080
  if (opts.lengthDelimited !== false) {
487
1081
  w.ldelim()
488
1082
  }
489
- }, (reader, length) => {
1083
+ }, (reader, length, opts = {}) => {
490
1084
  const obj: any = {
491
- peer: new Uint8Array(0),
1085
+ peer: uint8ArrayAlloc(0),
492
1086
  proto: []
493
1087
  }
494
1088
 
@@ -498,34 +1092,108 @@ export namespace StreamOpenRequest {
498
1092
  const tag = reader.uint32()
499
1093
 
500
1094
  switch (tag >>> 3) {
501
- case 1:
1095
+ case 1: {
502
1096
  obj.peer = reader.bytes()
503
1097
  break
504
- case 2:
1098
+ }
1099
+ case 2: {
1100
+ if (opts.limits?.proto != null && obj.proto.length === opts.limits.proto) {
1101
+ throw new MaxLengthError('Decode error - repeated field "proto" had too many elements')
1102
+ }
1103
+
505
1104
  obj.proto.push(reader.string())
506
1105
  break
507
- case 3:
1106
+ }
1107
+ case 3: {
508
1108
  obj.timeout = reader.int64()
509
1109
  break
510
- default:
1110
+ }
1111
+ default: {
511
1112
  reader.skipType(tag & 7)
512
1113
  break
1114
+ }
513
1115
  }
514
1116
  }
515
1117
 
516
1118
  return obj
1119
+ }, function * (reader, length, prefix, opts = {}) {
1120
+ const obj = {
1121
+ proto: 0
1122
+ }
1123
+
1124
+ const end = length == null ? reader.len : reader.pos + length
1125
+
1126
+ while (reader.pos < end) {
1127
+ const tag = reader.uint32()
1128
+
1129
+ switch (tag >>> 3) {
1130
+ case 1: {
1131
+ yield {
1132
+ field: `${prefix}.peer`,
1133
+ value: reader.bytes()
1134
+ }
1135
+ break
1136
+ }
1137
+ case 2: {
1138
+ if (opts.limits?.proto != null && obj.proto === opts.limits.proto) {
1139
+ throw new MaxLengthError('Streaming decode error - repeated field "proto" had too many elements')
1140
+ }
1141
+
1142
+ yield {
1143
+ field: `${prefix}.proto[]`,
1144
+ index: obj.proto,
1145
+ value: reader.string()
1146
+ }
1147
+
1148
+ obj.proto++
1149
+
1150
+ break
1151
+ }
1152
+ case 3: {
1153
+ yield {
1154
+ field: `${prefix}.timeout`,
1155
+ value: reader.int64()
1156
+ }
1157
+ break
1158
+ }
1159
+ default: {
1160
+ reader.skipType(tag & 7)
1161
+ break
1162
+ }
1163
+ }
1164
+ }
517
1165
  })
518
1166
  }
519
1167
 
520
1168
  return _codec
521
1169
  }
522
1170
 
523
- export const encode = (obj: Partial<StreamOpenRequest>): Uint8Array => {
1171
+ export interface StreamOpenRequestPeerFieldEvent {
1172
+ field: '$.peer'
1173
+ value: Uint8Array
1174
+ }
1175
+
1176
+ export interface StreamOpenRequestProtoFieldEvent {
1177
+ field: '$.proto[]'
1178
+ index: number
1179
+ value: string
1180
+ }
1181
+
1182
+ export interface StreamOpenRequestTimeoutFieldEvent {
1183
+ field: '$.timeout'
1184
+ value: bigint
1185
+ }
1186
+
1187
+ export function encode (obj: Partial<StreamOpenRequest>): Uint8Array {
524
1188
  return encodeMessage(obj, StreamOpenRequest.codec())
525
1189
  }
526
1190
 
527
- export const decode = (buf: Uint8Array | Uint8ArrayList): StreamOpenRequest => {
528
- return decodeMessage(buf, StreamOpenRequest.codec())
1191
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<StreamOpenRequest>): StreamOpenRequest {
1192
+ return decodeMessage(buf, StreamOpenRequest.codec(), opts)
1193
+ }
1194
+
1195
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<StreamOpenRequest>): Generator<StreamOpenRequestPeerFieldEvent | StreamOpenRequestProtoFieldEvent | StreamOpenRequestTimeoutFieldEvent> {
1196
+ return streamMessage(buf, StreamOpenRequest.codec(), opts)
529
1197
  }
530
1198
  }
531
1199
 
@@ -549,7 +1217,7 @@ export namespace StreamHandlerRequest {
549
1217
  w.bytes(obj.addr)
550
1218
  }
551
1219
 
552
- if (obj.proto != null) {
1220
+ if (obj.proto != null && obj.proto.length > 0) {
553
1221
  for (const value of obj.proto) {
554
1222
  w.uint32(18)
555
1223
  w.string(value)
@@ -559,9 +1227,9 @@ export namespace StreamHandlerRequest {
559
1227
  if (opts.lengthDelimited !== false) {
560
1228
  w.ldelim()
561
1229
  }
562
- }, (reader, length) => {
1230
+ }, (reader, length, opts = {}) => {
563
1231
  const obj: any = {
564
- addr: new Uint8Array(0),
1232
+ addr: uint8ArrayAlloc(0),
565
1233
  proto: []
566
1234
  }
567
1235
 
@@ -571,31 +1239,92 @@ export namespace StreamHandlerRequest {
571
1239
  const tag = reader.uint32()
572
1240
 
573
1241
  switch (tag >>> 3) {
574
- case 1:
1242
+ case 1: {
575
1243
  obj.addr = reader.bytes()
576
1244
  break
577
- case 2:
1245
+ }
1246
+ case 2: {
1247
+ if (opts.limits?.proto != null && obj.proto.length === opts.limits.proto) {
1248
+ throw new MaxLengthError('Decode error - repeated field "proto" had too many elements')
1249
+ }
1250
+
578
1251
  obj.proto.push(reader.string())
579
1252
  break
580
- default:
1253
+ }
1254
+ default: {
581
1255
  reader.skipType(tag & 7)
582
1256
  break
1257
+ }
583
1258
  }
584
1259
  }
585
1260
 
586
1261
  return obj
1262
+ }, function * (reader, length, prefix, opts = {}) {
1263
+ const obj = {
1264
+ proto: 0
1265
+ }
1266
+
1267
+ const end = length == null ? reader.len : reader.pos + length
1268
+
1269
+ while (reader.pos < end) {
1270
+ const tag = reader.uint32()
1271
+
1272
+ switch (tag >>> 3) {
1273
+ case 1: {
1274
+ yield {
1275
+ field: `${prefix}.addr`,
1276
+ value: reader.bytes()
1277
+ }
1278
+ break
1279
+ }
1280
+ case 2: {
1281
+ if (opts.limits?.proto != null && obj.proto === opts.limits.proto) {
1282
+ throw new MaxLengthError('Streaming decode error - repeated field "proto" had too many elements')
1283
+ }
1284
+
1285
+ yield {
1286
+ field: `${prefix}.proto[]`,
1287
+ index: obj.proto,
1288
+ value: reader.string()
1289
+ }
1290
+
1291
+ obj.proto++
1292
+
1293
+ break
1294
+ }
1295
+ default: {
1296
+ reader.skipType(tag & 7)
1297
+ break
1298
+ }
1299
+ }
1300
+ }
587
1301
  })
588
1302
  }
589
1303
 
590
1304
  return _codec
591
1305
  }
592
1306
 
593
- export const encode = (obj: Partial<StreamHandlerRequest>): Uint8Array => {
1307
+ export interface StreamHandlerRequestAddrFieldEvent {
1308
+ field: '$.addr'
1309
+ value: Uint8Array
1310
+ }
1311
+
1312
+ export interface StreamHandlerRequestProtoFieldEvent {
1313
+ field: '$.proto[]'
1314
+ index: number
1315
+ value: string
1316
+ }
1317
+
1318
+ export function encode (obj: Partial<StreamHandlerRequest>): Uint8Array {
594
1319
  return encodeMessage(obj, StreamHandlerRequest.codec())
595
1320
  }
596
1321
 
597
- export const decode = (buf: Uint8Array | Uint8ArrayList): StreamHandlerRequest => {
598
- return decodeMessage(buf, StreamHandlerRequest.codec())
1322
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<StreamHandlerRequest>): StreamHandlerRequest {
1323
+ return decodeMessage(buf, StreamHandlerRequest.codec(), opts)
1324
+ }
1325
+
1326
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<StreamHandlerRequest>): Generator<StreamHandlerRequestAddrFieldEvent | StreamHandlerRequestProtoFieldEvent> {
1327
+ return streamMessage(buf, StreamHandlerRequest.codec(), opts)
599
1328
  }
600
1329
  }
601
1330
 
@@ -621,7 +1350,7 @@ export namespace ErrorResponse {
621
1350
  if (opts.lengthDelimited !== false) {
622
1351
  w.ldelim()
623
1352
  }
624
- }, (reader, length) => {
1353
+ }, (reader, length, opts = {}) => {
625
1354
  const obj: any = {
626
1355
  msg: ''
627
1356
  }
@@ -632,28 +1361,59 @@ export namespace ErrorResponse {
632
1361
  const tag = reader.uint32()
633
1362
 
634
1363
  switch (tag >>> 3) {
635
- case 1:
1364
+ case 1: {
636
1365
  obj.msg = reader.string()
637
1366
  break
638
- default:
1367
+ }
1368
+ default: {
639
1369
  reader.skipType(tag & 7)
640
1370
  break
1371
+ }
641
1372
  }
642
1373
  }
643
1374
 
644
1375
  return obj
1376
+ }, function * (reader, length, prefix, opts = {}) {
1377
+ const end = length == null ? reader.len : reader.pos + length
1378
+
1379
+ while (reader.pos < end) {
1380
+ const tag = reader.uint32()
1381
+
1382
+ switch (tag >>> 3) {
1383
+ case 1: {
1384
+ yield {
1385
+ field: `${prefix}.msg`,
1386
+ value: reader.string()
1387
+ }
1388
+ break
1389
+ }
1390
+ default: {
1391
+ reader.skipType(tag & 7)
1392
+ break
1393
+ }
1394
+ }
1395
+ }
645
1396
  })
646
1397
  }
647
1398
 
648
1399
  return _codec
649
1400
  }
650
1401
 
651
- export const encode = (obj: Partial<ErrorResponse>): Uint8Array => {
1402
+ export interface ErrorResponseMsgFieldEvent {
1403
+ field: '$.msg'
1404
+ value: string
1405
+ }
1406
+
1407
+ export function encode (obj: Partial<ErrorResponse>): Uint8Array {
652
1408
  return encodeMessage(obj, ErrorResponse.codec())
653
1409
  }
654
1410
 
655
- export const decode = (buf: Uint8Array | Uint8ArrayList): ErrorResponse => {
656
- return decodeMessage(buf, ErrorResponse.codec())
1411
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ErrorResponse>): ErrorResponse {
1412
+ return decodeMessage(buf, ErrorResponse.codec(), opts)
1413
+ }
1414
+
1415
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ErrorResponse>): Generator<ErrorResponseMsgFieldEvent> {
1416
+ return streamMessage(buf, ErrorResponse.codec(), opts)
657
1417
  }
658
1418
  }
659
1419
 
@@ -691,10 +1451,10 @@ export namespace StreamInfo {
691
1451
  if (opts.lengthDelimited !== false) {
692
1452
  w.ldelim()
693
1453
  }
694
- }, (reader, length) => {
1454
+ }, (reader, length, opts = {}) => {
695
1455
  const obj: any = {
696
- peer: new Uint8Array(0),
697
- addr: new Uint8Array(0),
1456
+ peer: uint8ArrayAlloc(0),
1457
+ addr: uint8ArrayAlloc(0),
698
1458
  proto: ''
699
1459
  }
700
1460
 
@@ -704,34 +1464,91 @@ export namespace StreamInfo {
704
1464
  const tag = reader.uint32()
705
1465
 
706
1466
  switch (tag >>> 3) {
707
- case 1:
1467
+ case 1: {
708
1468
  obj.peer = reader.bytes()
709
1469
  break
710
- case 2:
1470
+ }
1471
+ case 2: {
711
1472
  obj.addr = reader.bytes()
712
1473
  break
713
- case 3:
1474
+ }
1475
+ case 3: {
714
1476
  obj.proto = reader.string()
715
1477
  break
716
- default:
1478
+ }
1479
+ default: {
717
1480
  reader.skipType(tag & 7)
718
1481
  break
1482
+ }
719
1483
  }
720
1484
  }
721
1485
 
722
1486
  return obj
1487
+ }, function * (reader, length, prefix, opts = {}) {
1488
+ const end = length == null ? reader.len : reader.pos + length
1489
+
1490
+ while (reader.pos < end) {
1491
+ const tag = reader.uint32()
1492
+
1493
+ switch (tag >>> 3) {
1494
+ case 1: {
1495
+ yield {
1496
+ field: `${prefix}.peer`,
1497
+ value: reader.bytes()
1498
+ }
1499
+ break
1500
+ }
1501
+ case 2: {
1502
+ yield {
1503
+ field: `${prefix}.addr`,
1504
+ value: reader.bytes()
1505
+ }
1506
+ break
1507
+ }
1508
+ case 3: {
1509
+ yield {
1510
+ field: `${prefix}.proto`,
1511
+ value: reader.string()
1512
+ }
1513
+ break
1514
+ }
1515
+ default: {
1516
+ reader.skipType(tag & 7)
1517
+ break
1518
+ }
1519
+ }
1520
+ }
723
1521
  })
724
1522
  }
725
1523
 
726
1524
  return _codec
727
1525
  }
728
1526
 
729
- export const encode = (obj: Partial<StreamInfo>): Uint8Array => {
1527
+ export interface StreamInfoPeerFieldEvent {
1528
+ field: '$.peer'
1529
+ value: Uint8Array
1530
+ }
1531
+
1532
+ export interface StreamInfoAddrFieldEvent {
1533
+ field: '$.addr'
1534
+ value: Uint8Array
1535
+ }
1536
+
1537
+ export interface StreamInfoProtoFieldEvent {
1538
+ field: '$.proto'
1539
+ value: string
1540
+ }
1541
+
1542
+ export function encode (obj: Partial<StreamInfo>): Uint8Array {
730
1543
  return encodeMessage(obj, StreamInfo.codec())
731
1544
  }
732
1545
 
733
- export const decode = (buf: Uint8Array | Uint8ArrayList): StreamInfo => {
734
- return decodeMessage(buf, StreamInfo.codec())
1546
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<StreamInfo>): StreamInfo {
1547
+ return decodeMessage(buf, StreamInfo.codec(), opts)
1548
+ }
1549
+
1550
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<StreamInfo>): Generator<StreamInfoPeerFieldEvent | StreamInfoAddrFieldEvent | StreamInfoProtoFieldEvent> {
1551
+ return streamMessage(buf, StreamInfo.codec(), opts)
735
1552
  }
736
1553
  }
737
1554
 
@@ -823,7 +1640,7 @@ export namespace DHTRequest {
823
1640
  if (opts.lengthDelimited !== false) {
824
1641
  w.ldelim()
825
1642
  }
826
- }, (reader, length) => {
1643
+ }, (reader, length, opts = {}) => {
827
1644
  const obj: any = {}
828
1645
 
829
1646
  const end = length == null ? reader.len : reader.pos + length
@@ -832,46 +1649,155 @@ export namespace DHTRequest {
832
1649
  const tag = reader.uint32()
833
1650
 
834
1651
  switch (tag >>> 3) {
835
- case 1:
1652
+ case 1: {
836
1653
  obj.type = DHTRequest.Type.codec().decode(reader)
837
1654
  break
838
- case 2:
1655
+ }
1656
+ case 2: {
839
1657
  obj.peer = reader.bytes()
840
1658
  break
841
- case 3:
1659
+ }
1660
+ case 3: {
842
1661
  obj.cid = reader.bytes()
843
1662
  break
844
- case 4:
1663
+ }
1664
+ case 4: {
845
1665
  obj.key = reader.bytes()
846
1666
  break
847
- case 5:
1667
+ }
1668
+ case 5: {
848
1669
  obj.value = reader.bytes()
849
1670
  break
850
- case 6:
1671
+ }
1672
+ case 6: {
851
1673
  obj.count = reader.int32()
852
1674
  break
853
- case 7:
1675
+ }
1676
+ case 7: {
854
1677
  obj.timeout = reader.int64()
855
1678
  break
856
- default:
1679
+ }
1680
+ default: {
857
1681
  reader.skipType(tag & 7)
858
1682
  break
1683
+ }
859
1684
  }
860
1685
  }
861
1686
 
862
1687
  return obj
1688
+ }, function * (reader, length, prefix, opts = {}) {
1689
+ const end = length == null ? reader.len : reader.pos + length
1690
+
1691
+ while (reader.pos < end) {
1692
+ const tag = reader.uint32()
1693
+
1694
+ switch (tag >>> 3) {
1695
+ case 1: {
1696
+ yield {
1697
+ field: `${prefix}.type`,
1698
+ value: DHTRequest.Type.codec().decode(reader)
1699
+ }
1700
+ break
1701
+ }
1702
+ case 2: {
1703
+ yield {
1704
+ field: `${prefix}.peer`,
1705
+ value: reader.bytes()
1706
+ }
1707
+ break
1708
+ }
1709
+ case 3: {
1710
+ yield {
1711
+ field: `${prefix}.cid`,
1712
+ value: reader.bytes()
1713
+ }
1714
+ break
1715
+ }
1716
+ case 4: {
1717
+ yield {
1718
+ field: `${prefix}.key`,
1719
+ value: reader.bytes()
1720
+ }
1721
+ break
1722
+ }
1723
+ case 5: {
1724
+ yield {
1725
+ field: `${prefix}.value`,
1726
+ value: reader.bytes()
1727
+ }
1728
+ break
1729
+ }
1730
+ case 6: {
1731
+ yield {
1732
+ field: `${prefix}.count`,
1733
+ value: reader.int32()
1734
+ }
1735
+ break
1736
+ }
1737
+ case 7: {
1738
+ yield {
1739
+ field: `${prefix}.timeout`,
1740
+ value: reader.int64()
1741
+ }
1742
+ break
1743
+ }
1744
+ default: {
1745
+ reader.skipType(tag & 7)
1746
+ break
1747
+ }
1748
+ }
1749
+ }
863
1750
  })
864
1751
  }
865
1752
 
866
1753
  return _codec
867
1754
  }
868
1755
 
869
- export const encode = (obj: Partial<DHTRequest>): Uint8Array => {
1756
+ export interface DHTRequestTypeFieldEvent {
1757
+ field: '$.type'
1758
+ value: DHTRequest.Type
1759
+ }
1760
+
1761
+ export interface DHTRequestPeerFieldEvent {
1762
+ field: '$.peer'
1763
+ value: Uint8Array
1764
+ }
1765
+
1766
+ export interface DHTRequestCidFieldEvent {
1767
+ field: '$.cid'
1768
+ value: Uint8Array
1769
+ }
1770
+
1771
+ export interface DHTRequestKeyFieldEvent {
1772
+ field: '$.key'
1773
+ value: Uint8Array
1774
+ }
1775
+
1776
+ export interface DHTRequestValueFieldEvent {
1777
+ field: '$.value'
1778
+ value: Uint8Array
1779
+ }
1780
+
1781
+ export interface DHTRequestCountFieldEvent {
1782
+ field: '$.count'
1783
+ value: number
1784
+ }
1785
+
1786
+ export interface DHTRequestTimeoutFieldEvent {
1787
+ field: '$.timeout'
1788
+ value: bigint
1789
+ }
1790
+
1791
+ export function encode (obj: Partial<DHTRequest>): Uint8Array {
870
1792
  return encodeMessage(obj, DHTRequest.codec())
871
1793
  }
872
1794
 
873
- export const decode = (buf: Uint8Array | Uint8ArrayList): DHTRequest => {
874
- return decodeMessage(buf, DHTRequest.codec())
1795
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<DHTRequest>): DHTRequest {
1796
+ return decodeMessage(buf, DHTRequest.codec(), opts)
1797
+ }
1798
+
1799
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<DHTRequest>): Generator<DHTRequestTypeFieldEvent | DHTRequestPeerFieldEvent | DHTRequestCidFieldEvent | DHTRequestKeyFieldEvent | DHTRequestValueFieldEvent | DHTRequestCountFieldEvent | DHTRequestTimeoutFieldEvent> {
1800
+ return streamMessage(buf, DHTRequest.codec(), opts)
875
1801
  }
876
1802
  }
877
1803
 
@@ -927,7 +1853,7 @@ export namespace DHTResponse {
927
1853
  if (opts.lengthDelimited !== false) {
928
1854
  w.ldelim()
929
1855
  }
930
- }, (reader, length) => {
1856
+ }, (reader, length, opts = {}) => {
931
1857
  const obj: any = {}
932
1858
 
933
1859
  const end = length == null ? reader.len : reader.pos + length
@@ -936,34 +1862,99 @@ export namespace DHTResponse {
936
1862
  const tag = reader.uint32()
937
1863
 
938
1864
  switch (tag >>> 3) {
939
- case 1:
1865
+ case 1: {
940
1866
  obj.type = DHTResponse.Type.codec().decode(reader)
941
1867
  break
942
- case 2:
943
- obj.peer = PeerInfo.codec().decode(reader, reader.uint32())
1868
+ }
1869
+ case 2: {
1870
+ obj.peer = PeerInfo.codec().decode(reader, reader.uint32(), {
1871
+ limits: opts.limits?.peer
1872
+ })
944
1873
  break
945
- case 3:
1874
+ }
1875
+ case 3: {
946
1876
  obj.value = reader.bytes()
947
1877
  break
948
- default:
1878
+ }
1879
+ default: {
949
1880
  reader.skipType(tag & 7)
950
1881
  break
1882
+ }
951
1883
  }
952
1884
  }
953
1885
 
954
1886
  return obj
1887
+ }, function * (reader, length, prefix, opts = {}) {
1888
+ const end = length == null ? reader.len : reader.pos + length
1889
+
1890
+ while (reader.pos < end) {
1891
+ const tag = reader.uint32()
1892
+
1893
+ switch (tag >>> 3) {
1894
+ case 1: {
1895
+ yield {
1896
+ field: `${prefix}.type`,
1897
+ value: DHTResponse.Type.codec().decode(reader)
1898
+ }
1899
+ break
1900
+ }
1901
+ case 2: {
1902
+ yield * PeerInfo.codec().stream(reader, reader.uint32(), `${prefix}.peer`, {
1903
+ limits: opts.limits?.peer
1904
+ })
1905
+
1906
+ break
1907
+ }
1908
+ case 3: {
1909
+ yield {
1910
+ field: `${prefix}.value`,
1911
+ value: reader.bytes()
1912
+ }
1913
+ break
1914
+ }
1915
+ default: {
1916
+ reader.skipType(tag & 7)
1917
+ break
1918
+ }
1919
+ }
1920
+ }
955
1921
  })
956
1922
  }
957
1923
 
958
1924
  return _codec
959
1925
  }
960
1926
 
961
- export const encode = (obj: Partial<DHTResponse>): Uint8Array => {
1927
+ export interface DHTResponseTypeFieldEvent {
1928
+ field: '$.type'
1929
+ value: DHTResponse.Type
1930
+ }
1931
+
1932
+ export interface DHTResponsePeerIdFieldEvent {
1933
+ field: '$.peer.id'
1934
+ value: Uint8Array
1935
+ }
1936
+
1937
+ export interface DHTResponsePeerAddrsFieldEvent {
1938
+ field: '$.peer.addrs[]'
1939
+ index: number
1940
+ value: Uint8Array
1941
+ }
1942
+
1943
+ export interface DHTResponseValueFieldEvent {
1944
+ field: '$.value'
1945
+ value: Uint8Array
1946
+ }
1947
+
1948
+ export function encode (obj: Partial<DHTResponse>): Uint8Array {
962
1949
  return encodeMessage(obj, DHTResponse.codec())
963
1950
  }
964
1951
 
965
- export const decode = (buf: Uint8Array | Uint8ArrayList): DHTResponse => {
966
- return decodeMessage(buf, DHTResponse.codec())
1952
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<DHTResponse>): DHTResponse {
1953
+ return decodeMessage(buf, DHTResponse.codec(), opts)
1954
+ }
1955
+
1956
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<DHTResponse>): Generator<DHTResponseTypeFieldEvent | DHTResponsePeerIdFieldEvent | DHTResponsePeerAddrsFieldEvent | DHTResponseValueFieldEvent> {
1957
+ return streamMessage(buf, DHTResponse.codec(), opts)
967
1958
  }
968
1959
  }
969
1960
 
@@ -987,7 +1978,7 @@ export namespace PeerInfo {
987
1978
  w.bytes(obj.id)
988
1979
  }
989
1980
 
990
- if (obj.addrs != null) {
1981
+ if (obj.addrs != null && obj.addrs.length > 0) {
991
1982
  for (const value of obj.addrs) {
992
1983
  w.uint32(18)
993
1984
  w.bytes(value)
@@ -997,9 +1988,9 @@ export namespace PeerInfo {
997
1988
  if (opts.lengthDelimited !== false) {
998
1989
  w.ldelim()
999
1990
  }
1000
- }, (reader, length) => {
1991
+ }, (reader, length, opts = {}) => {
1001
1992
  const obj: any = {
1002
- id: new Uint8Array(0),
1993
+ id: uint8ArrayAlloc(0),
1003
1994
  addrs: []
1004
1995
  }
1005
1996
 
@@ -1009,31 +2000,92 @@ export namespace PeerInfo {
1009
2000
  const tag = reader.uint32()
1010
2001
 
1011
2002
  switch (tag >>> 3) {
1012
- case 1:
2003
+ case 1: {
1013
2004
  obj.id = reader.bytes()
1014
2005
  break
1015
- case 2:
2006
+ }
2007
+ case 2: {
2008
+ if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {
2009
+ throw new MaxLengthError('Decode error - repeated field "addrs" had too many elements')
2010
+ }
2011
+
1016
2012
  obj.addrs.push(reader.bytes())
1017
2013
  break
1018
- default:
2014
+ }
2015
+ default: {
1019
2016
  reader.skipType(tag & 7)
1020
2017
  break
2018
+ }
1021
2019
  }
1022
2020
  }
1023
2021
 
1024
2022
  return obj
2023
+ }, function * (reader, length, prefix, opts = {}) {
2024
+ const obj = {
2025
+ addrs: 0
2026
+ }
2027
+
2028
+ const end = length == null ? reader.len : reader.pos + length
2029
+
2030
+ while (reader.pos < end) {
2031
+ const tag = reader.uint32()
2032
+
2033
+ switch (tag >>> 3) {
2034
+ case 1: {
2035
+ yield {
2036
+ field: `${prefix}.id`,
2037
+ value: reader.bytes()
2038
+ }
2039
+ break
2040
+ }
2041
+ case 2: {
2042
+ if (opts.limits?.addrs != null && obj.addrs === opts.limits.addrs) {
2043
+ throw new MaxLengthError('Streaming decode error - repeated field "addrs" had too many elements')
2044
+ }
2045
+
2046
+ yield {
2047
+ field: `${prefix}.addrs[]`,
2048
+ index: obj.addrs,
2049
+ value: reader.bytes()
2050
+ }
2051
+
2052
+ obj.addrs++
2053
+
2054
+ break
2055
+ }
2056
+ default: {
2057
+ reader.skipType(tag & 7)
2058
+ break
2059
+ }
2060
+ }
2061
+ }
1025
2062
  })
1026
2063
  }
1027
2064
 
1028
2065
  return _codec
1029
2066
  }
1030
2067
 
1031
- export const encode = (obj: Partial<PeerInfo>): Uint8Array => {
2068
+ export interface PeerInfoIdFieldEvent {
2069
+ field: '$.id'
2070
+ value: Uint8Array
2071
+ }
2072
+
2073
+ export interface PeerInfoAddrsFieldEvent {
2074
+ field: '$.addrs[]'
2075
+ index: number
2076
+ value: Uint8Array
2077
+ }
2078
+
2079
+ export function encode (obj: Partial<PeerInfo>): Uint8Array {
1032
2080
  return encodeMessage(obj, PeerInfo.codec())
1033
2081
  }
1034
2082
 
1035
- export const decode = (buf: Uint8Array | Uint8ArrayList): PeerInfo => {
1036
- return decodeMessage(buf, PeerInfo.codec())
2083
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerInfo>): PeerInfo {
2084
+ return decodeMessage(buf, PeerInfo.codec(), opts)
2085
+ }
2086
+
2087
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerInfo>): Generator<PeerInfoIdFieldEvent | PeerInfoAddrsFieldEvent> {
2088
+ return streamMessage(buf, PeerInfo.codec(), opts)
1037
2089
  }
1038
2090
  }
1039
2091
 
@@ -1095,7 +2147,7 @@ export namespace ConnManagerRequest {
1095
2147
  if (opts.lengthDelimited !== false) {
1096
2148
  w.ldelim()
1097
2149
  }
1098
- }, (reader, length) => {
2150
+ }, (reader, length, opts = {}) => {
1099
2151
  const obj: any = {}
1100
2152
 
1101
2153
  const end = length == null ? reader.len : reader.pos + length
@@ -1104,37 +2156,107 @@ export namespace ConnManagerRequest {
1104
2156
  const tag = reader.uint32()
1105
2157
 
1106
2158
  switch (tag >>> 3) {
1107
- case 1:
2159
+ case 1: {
1108
2160
  obj.type = ConnManagerRequest.Type.codec().decode(reader)
1109
2161
  break
1110
- case 2:
2162
+ }
2163
+ case 2: {
1111
2164
  obj.peer = reader.bytes()
1112
2165
  break
1113
- case 3:
2166
+ }
2167
+ case 3: {
1114
2168
  obj.tag = reader.string()
1115
2169
  break
1116
- case 4:
2170
+ }
2171
+ case 4: {
1117
2172
  obj.weight = reader.int64()
1118
2173
  break
1119
- default:
2174
+ }
2175
+ default: {
1120
2176
  reader.skipType(tag & 7)
1121
2177
  break
2178
+ }
1122
2179
  }
1123
2180
  }
1124
2181
 
1125
2182
  return obj
2183
+ }, function * (reader, length, prefix, opts = {}) {
2184
+ const end = length == null ? reader.len : reader.pos + length
2185
+
2186
+ while (reader.pos < end) {
2187
+ const tag = reader.uint32()
2188
+
2189
+ switch (tag >>> 3) {
2190
+ case 1: {
2191
+ yield {
2192
+ field: `${prefix}.type`,
2193
+ value: ConnManagerRequest.Type.codec().decode(reader)
2194
+ }
2195
+ break
2196
+ }
2197
+ case 2: {
2198
+ yield {
2199
+ field: `${prefix}.peer`,
2200
+ value: reader.bytes()
2201
+ }
2202
+ break
2203
+ }
2204
+ case 3: {
2205
+ yield {
2206
+ field: `${prefix}.tag`,
2207
+ value: reader.string()
2208
+ }
2209
+ break
2210
+ }
2211
+ case 4: {
2212
+ yield {
2213
+ field: `${prefix}.weight`,
2214
+ value: reader.int64()
2215
+ }
2216
+ break
2217
+ }
2218
+ default: {
2219
+ reader.skipType(tag & 7)
2220
+ break
2221
+ }
2222
+ }
2223
+ }
1126
2224
  })
1127
2225
  }
1128
2226
 
1129
2227
  return _codec
1130
2228
  }
1131
2229
 
1132
- export const encode = (obj: Partial<ConnManagerRequest>): Uint8Array => {
2230
+ export interface ConnManagerRequestTypeFieldEvent {
2231
+ field: '$.type'
2232
+ value: ConnManagerRequest.Type
2233
+ }
2234
+
2235
+ export interface ConnManagerRequestPeerFieldEvent {
2236
+ field: '$.peer'
2237
+ value: Uint8Array
2238
+ }
2239
+
2240
+ export interface ConnManagerRequestTagFieldEvent {
2241
+ field: '$.tag'
2242
+ value: string
2243
+ }
2244
+
2245
+ export interface ConnManagerRequestWeightFieldEvent {
2246
+ field: '$.weight'
2247
+ value: bigint
2248
+ }
2249
+
2250
+ export function encode (obj: Partial<ConnManagerRequest>): Uint8Array {
1133
2251
  return encodeMessage(obj, ConnManagerRequest.codec())
1134
2252
  }
1135
2253
 
1136
- export const decode = (buf: Uint8Array | Uint8ArrayList): ConnManagerRequest => {
1137
- return decodeMessage(buf, ConnManagerRequest.codec())
2254
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ConnManagerRequest>): ConnManagerRequest {
2255
+ return decodeMessage(buf, ConnManagerRequest.codec(), opts)
2256
+ }
2257
+
2258
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<ConnManagerRequest>): Generator<ConnManagerRequestTypeFieldEvent | ConnManagerRequestPeerFieldEvent | ConnManagerRequestTagFieldEvent | ConnManagerRequestWeightFieldEvent> {
2259
+ return streamMessage(buf, ConnManagerRequest.codec(), opts)
1138
2260
  }
1139
2261
  }
1140
2262
 
@@ -1160,9 +2282,9 @@ export namespace DisconnectRequest {
1160
2282
  if (opts.lengthDelimited !== false) {
1161
2283
  w.ldelim()
1162
2284
  }
1163
- }, (reader, length) => {
2285
+ }, (reader, length, opts = {}) => {
1164
2286
  const obj: any = {
1165
- peer: new Uint8Array(0)
2287
+ peer: uint8ArrayAlloc(0)
1166
2288
  }
1167
2289
 
1168
2290
  const end = length == null ? reader.len : reader.pos + length
@@ -1171,28 +2293,59 @@ export namespace DisconnectRequest {
1171
2293
  const tag = reader.uint32()
1172
2294
 
1173
2295
  switch (tag >>> 3) {
1174
- case 1:
2296
+ case 1: {
1175
2297
  obj.peer = reader.bytes()
1176
2298
  break
1177
- default:
2299
+ }
2300
+ default: {
1178
2301
  reader.skipType(tag & 7)
1179
2302
  break
2303
+ }
1180
2304
  }
1181
2305
  }
1182
2306
 
1183
2307
  return obj
2308
+ }, function * (reader, length, prefix, opts = {}) {
2309
+ const end = length == null ? reader.len : reader.pos + length
2310
+
2311
+ while (reader.pos < end) {
2312
+ const tag = reader.uint32()
2313
+
2314
+ switch (tag >>> 3) {
2315
+ case 1: {
2316
+ yield {
2317
+ field: `${prefix}.peer`,
2318
+ value: reader.bytes()
2319
+ }
2320
+ break
2321
+ }
2322
+ default: {
2323
+ reader.skipType(tag & 7)
2324
+ break
2325
+ }
2326
+ }
2327
+ }
1184
2328
  })
1185
2329
  }
1186
2330
 
1187
2331
  return _codec
1188
2332
  }
1189
2333
 
1190
- export const encode = (obj: Partial<DisconnectRequest>): Uint8Array => {
2334
+ export interface DisconnectRequestPeerFieldEvent {
2335
+ field: '$.peer'
2336
+ value: Uint8Array
2337
+ }
2338
+
2339
+ export function encode (obj: Partial<DisconnectRequest>): Uint8Array {
1191
2340
  return encodeMessage(obj, DisconnectRequest.codec())
1192
2341
  }
1193
2342
 
1194
- export const decode = (buf: Uint8Array | Uint8ArrayList): DisconnectRequest => {
1195
- return decodeMessage(buf, DisconnectRequest.codec())
2343
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<DisconnectRequest>): DisconnectRequest {
2344
+ return decodeMessage(buf, DisconnectRequest.codec(), opts)
2345
+ }
2346
+
2347
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<DisconnectRequest>): Generator<DisconnectRequestPeerFieldEvent> {
2348
+ return streamMessage(buf, DisconnectRequest.codec(), opts)
1196
2349
  }
1197
2350
  }
1198
2351
 
@@ -1250,7 +2403,7 @@ export namespace PSRequest {
1250
2403
  if (opts.lengthDelimited !== false) {
1251
2404
  w.ldelim()
1252
2405
  }
1253
- }, (reader, length) => {
2406
+ }, (reader, length, opts = {}) => {
1254
2407
  const obj: any = {}
1255
2408
 
1256
2409
  const end = length == null ? reader.len : reader.pos + length
@@ -1259,34 +2412,91 @@ export namespace PSRequest {
1259
2412
  const tag = reader.uint32()
1260
2413
 
1261
2414
  switch (tag >>> 3) {
1262
- case 1:
2415
+ case 1: {
1263
2416
  obj.type = PSRequest.Type.codec().decode(reader)
1264
2417
  break
1265
- case 2:
2418
+ }
2419
+ case 2: {
1266
2420
  obj.topic = reader.string()
1267
2421
  break
1268
- case 3:
2422
+ }
2423
+ case 3: {
1269
2424
  obj.data = reader.bytes()
1270
2425
  break
1271
- default:
2426
+ }
2427
+ default: {
1272
2428
  reader.skipType(tag & 7)
1273
2429
  break
2430
+ }
1274
2431
  }
1275
2432
  }
1276
2433
 
1277
2434
  return obj
2435
+ }, function * (reader, length, prefix, opts = {}) {
2436
+ const end = length == null ? reader.len : reader.pos + length
2437
+
2438
+ while (reader.pos < end) {
2439
+ const tag = reader.uint32()
2440
+
2441
+ switch (tag >>> 3) {
2442
+ case 1: {
2443
+ yield {
2444
+ field: `${prefix}.type`,
2445
+ value: PSRequest.Type.codec().decode(reader)
2446
+ }
2447
+ break
2448
+ }
2449
+ case 2: {
2450
+ yield {
2451
+ field: `${prefix}.topic`,
2452
+ value: reader.string()
2453
+ }
2454
+ break
2455
+ }
2456
+ case 3: {
2457
+ yield {
2458
+ field: `${prefix}.data`,
2459
+ value: reader.bytes()
2460
+ }
2461
+ break
2462
+ }
2463
+ default: {
2464
+ reader.skipType(tag & 7)
2465
+ break
2466
+ }
2467
+ }
2468
+ }
1278
2469
  })
1279
2470
  }
1280
2471
 
1281
2472
  return _codec
1282
2473
  }
1283
2474
 
1284
- export const encode = (obj: Partial<PSRequest>): Uint8Array => {
2475
+ export interface PSRequestTypeFieldEvent {
2476
+ field: '$.type'
2477
+ value: PSRequest.Type
2478
+ }
2479
+
2480
+ export interface PSRequestTopicFieldEvent {
2481
+ field: '$.topic'
2482
+ value: string
2483
+ }
2484
+
2485
+ export interface PSRequestDataFieldEvent {
2486
+ field: '$.data'
2487
+ value: Uint8Array
2488
+ }
2489
+
2490
+ export function encode (obj: Partial<PSRequest>): Uint8Array {
1285
2491
  return encodeMessage(obj, PSRequest.codec())
1286
2492
  }
1287
2493
 
1288
- export const decode = (buf: Uint8Array | Uint8ArrayList): PSRequest => {
1289
- return decodeMessage(buf, PSRequest.codec())
2494
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PSRequest>): PSRequest {
2495
+ return decodeMessage(buf, PSRequest.codec(), opts)
2496
+ }
2497
+
2498
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PSRequest>): Generator<PSRequestTypeFieldEvent | PSRequestTopicFieldEvent | PSRequestDataFieldEvent> {
2499
+ return streamMessage(buf, PSRequest.codec(), opts)
1290
2500
  }
1291
2501
  }
1292
2502
 
@@ -1324,7 +2534,7 @@ export namespace PSMessage {
1324
2534
  w.bytes(obj.seqno)
1325
2535
  }
1326
2536
 
1327
- if (obj.topicIDs != null) {
2537
+ if (obj.topicIDs != null && obj.topicIDs.length > 0) {
1328
2538
  for (const value of obj.topicIDs) {
1329
2539
  w.uint32(34)
1330
2540
  w.string(value)
@@ -1344,7 +2554,7 @@ export namespace PSMessage {
1344
2554
  if (opts.lengthDelimited !== false) {
1345
2555
  w.ldelim()
1346
2556
  }
1347
- }, (reader, length) => {
2557
+ }, (reader, length, opts = {}) => {
1348
2558
  const obj: any = {
1349
2559
  topicIDs: []
1350
2560
  }
@@ -1355,43 +2565,156 @@ export namespace PSMessage {
1355
2565
  const tag = reader.uint32()
1356
2566
 
1357
2567
  switch (tag >>> 3) {
1358
- case 1:
2568
+ case 1: {
1359
2569
  obj.from = reader.bytes()
1360
2570
  break
1361
- case 2:
2571
+ }
2572
+ case 2: {
1362
2573
  obj.data = reader.bytes()
1363
2574
  break
1364
- case 3:
2575
+ }
2576
+ case 3: {
1365
2577
  obj.seqno = reader.bytes()
1366
2578
  break
1367
- case 4:
2579
+ }
2580
+ case 4: {
2581
+ if (opts.limits?.topicIDs != null && obj.topicIDs.length === opts.limits.topicIDs) {
2582
+ throw new MaxLengthError('Decode error - repeated field "topicIDs" had too many elements')
2583
+ }
2584
+
1368
2585
  obj.topicIDs.push(reader.string())
1369
2586
  break
1370
- case 5:
2587
+ }
2588
+ case 5: {
1371
2589
  obj.signature = reader.bytes()
1372
2590
  break
1373
- case 6:
2591
+ }
2592
+ case 6: {
1374
2593
  obj.key = reader.bytes()
1375
2594
  break
1376
- default:
2595
+ }
2596
+ default: {
1377
2597
  reader.skipType(tag & 7)
1378
2598
  break
2599
+ }
1379
2600
  }
1380
2601
  }
1381
2602
 
1382
2603
  return obj
2604
+ }, function * (reader, length, prefix, opts = {}) {
2605
+ const obj = {
2606
+ topicIDs: 0
2607
+ }
2608
+
2609
+ const end = length == null ? reader.len : reader.pos + length
2610
+
2611
+ while (reader.pos < end) {
2612
+ const tag = reader.uint32()
2613
+
2614
+ switch (tag >>> 3) {
2615
+ case 1: {
2616
+ yield {
2617
+ field: `${prefix}.from`,
2618
+ value: reader.bytes()
2619
+ }
2620
+ break
2621
+ }
2622
+ case 2: {
2623
+ yield {
2624
+ field: `${prefix}.data`,
2625
+ value: reader.bytes()
2626
+ }
2627
+ break
2628
+ }
2629
+ case 3: {
2630
+ yield {
2631
+ field: `${prefix}.seqno`,
2632
+ value: reader.bytes()
2633
+ }
2634
+ break
2635
+ }
2636
+ case 4: {
2637
+ if (opts.limits?.topicIDs != null && obj.topicIDs === opts.limits.topicIDs) {
2638
+ throw new MaxLengthError('Streaming decode error - repeated field "topicIDs" had too many elements')
2639
+ }
2640
+
2641
+ yield {
2642
+ field: `${prefix}.topicIDs[]`,
2643
+ index: obj.topicIDs,
2644
+ value: reader.string()
2645
+ }
2646
+
2647
+ obj.topicIDs++
2648
+
2649
+ break
2650
+ }
2651
+ case 5: {
2652
+ yield {
2653
+ field: `${prefix}.signature`,
2654
+ value: reader.bytes()
2655
+ }
2656
+ break
2657
+ }
2658
+ case 6: {
2659
+ yield {
2660
+ field: `${prefix}.key`,
2661
+ value: reader.bytes()
2662
+ }
2663
+ break
2664
+ }
2665
+ default: {
2666
+ reader.skipType(tag & 7)
2667
+ break
2668
+ }
2669
+ }
2670
+ }
1383
2671
  })
1384
2672
  }
1385
2673
 
1386
2674
  return _codec
1387
2675
  }
1388
2676
 
1389
- export const encode = (obj: Partial<PSMessage>): Uint8Array => {
2677
+ export interface PSMessageFromFieldEvent {
2678
+ field: '$.from'
2679
+ value: Uint8Array
2680
+ }
2681
+
2682
+ export interface PSMessageDataFieldEvent {
2683
+ field: '$.data'
2684
+ value: Uint8Array
2685
+ }
2686
+
2687
+ export interface PSMessageSeqnoFieldEvent {
2688
+ field: '$.seqno'
2689
+ value: Uint8Array
2690
+ }
2691
+
2692
+ export interface PSMessageTopicIDsFieldEvent {
2693
+ field: '$.topicIDs[]'
2694
+ index: number
2695
+ value: string
2696
+ }
2697
+
2698
+ export interface PSMessageSignatureFieldEvent {
2699
+ field: '$.signature'
2700
+ value: Uint8Array
2701
+ }
2702
+
2703
+ export interface PSMessageKeyFieldEvent {
2704
+ field: '$.key'
2705
+ value: Uint8Array
2706
+ }
2707
+
2708
+ export function encode (obj: Partial<PSMessage>): Uint8Array {
1390
2709
  return encodeMessage(obj, PSMessage.codec())
1391
2710
  }
1392
2711
 
1393
- export const decode = (buf: Uint8Array | Uint8ArrayList): PSMessage => {
1394
- return decodeMessage(buf, PSMessage.codec())
2712
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PSMessage>): PSMessage {
2713
+ return decodeMessage(buf, PSMessage.codec(), opts)
2714
+ }
2715
+
2716
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PSMessage>): Generator<PSMessageFromFieldEvent | PSMessageDataFieldEvent | PSMessageSeqnoFieldEvent | PSMessageTopicIDsFieldEvent | PSMessageSignatureFieldEvent | PSMessageKeyFieldEvent> {
2717
+ return streamMessage(buf, PSMessage.codec(), opts)
1395
2718
  }
1396
2719
  }
1397
2720
 
@@ -1410,14 +2733,14 @@ export namespace PSResponse {
1410
2733
  w.fork()
1411
2734
  }
1412
2735
 
1413
- if (obj.topics != null) {
2736
+ if (obj.topics != null && obj.topics.length > 0) {
1414
2737
  for (const value of obj.topics) {
1415
2738
  w.uint32(10)
1416
2739
  w.string(value)
1417
2740
  }
1418
2741
  }
1419
2742
 
1420
- if (obj.peerIDs != null) {
2743
+ if (obj.peerIDs != null && obj.peerIDs.length > 0) {
1421
2744
  for (const value of obj.peerIDs) {
1422
2745
  w.uint32(18)
1423
2746
  w.bytes(value)
@@ -1427,7 +2750,7 @@ export namespace PSResponse {
1427
2750
  if (opts.lengthDelimited !== false) {
1428
2751
  w.ldelim()
1429
2752
  }
1430
- }, (reader, length) => {
2753
+ }, (reader, length, opts = {}) => {
1431
2754
  const obj: any = {
1432
2755
  topics: [],
1433
2756
  peerIDs: []
@@ -1439,31 +2762,106 @@ export namespace PSResponse {
1439
2762
  const tag = reader.uint32()
1440
2763
 
1441
2764
  switch (tag >>> 3) {
1442
- case 1:
2765
+ case 1: {
2766
+ if (opts.limits?.topics != null && obj.topics.length === opts.limits.topics) {
2767
+ throw new MaxLengthError('Decode error - repeated field "topics" had too many elements')
2768
+ }
2769
+
1443
2770
  obj.topics.push(reader.string())
1444
2771
  break
1445
- case 2:
2772
+ }
2773
+ case 2: {
2774
+ if (opts.limits?.peerIDs != null && obj.peerIDs.length === opts.limits.peerIDs) {
2775
+ throw new MaxLengthError('Decode error - repeated field "peerIDs" had too many elements')
2776
+ }
2777
+
1446
2778
  obj.peerIDs.push(reader.bytes())
1447
2779
  break
1448
- default:
2780
+ }
2781
+ default: {
1449
2782
  reader.skipType(tag & 7)
1450
2783
  break
2784
+ }
1451
2785
  }
1452
2786
  }
1453
2787
 
1454
2788
  return obj
2789
+ }, function * (reader, length, prefix, opts = {}) {
2790
+ const obj = {
2791
+ topics: 0,
2792
+ peerIDs: 0
2793
+ }
2794
+
2795
+ const end = length == null ? reader.len : reader.pos + length
2796
+
2797
+ while (reader.pos < end) {
2798
+ const tag = reader.uint32()
2799
+
2800
+ switch (tag >>> 3) {
2801
+ case 1: {
2802
+ if (opts.limits?.topics != null && obj.topics === opts.limits.topics) {
2803
+ throw new MaxLengthError('Streaming decode error - repeated field "topics" had too many elements')
2804
+ }
2805
+
2806
+ yield {
2807
+ field: `${prefix}.topics[]`,
2808
+ index: obj.topics,
2809
+ value: reader.string()
2810
+ }
2811
+
2812
+ obj.topics++
2813
+
2814
+ break
2815
+ }
2816
+ case 2: {
2817
+ if (opts.limits?.peerIDs != null && obj.peerIDs === opts.limits.peerIDs) {
2818
+ throw new MaxLengthError('Streaming decode error - repeated field "peerIDs" had too many elements')
2819
+ }
2820
+
2821
+ yield {
2822
+ field: `${prefix}.peerIDs[]`,
2823
+ index: obj.peerIDs,
2824
+ value: reader.bytes()
2825
+ }
2826
+
2827
+ obj.peerIDs++
2828
+
2829
+ break
2830
+ }
2831
+ default: {
2832
+ reader.skipType(tag & 7)
2833
+ break
2834
+ }
2835
+ }
2836
+ }
1455
2837
  })
1456
2838
  }
1457
2839
 
1458
2840
  return _codec
1459
2841
  }
1460
2842
 
1461
- export const encode = (obj: Partial<PSResponse>): Uint8Array => {
2843
+ export interface PSResponseTopicsFieldEvent {
2844
+ field: '$.topics[]'
2845
+ index: number
2846
+ value: string
2847
+ }
2848
+
2849
+ export interface PSResponsePeerIDsFieldEvent {
2850
+ field: '$.peerIDs[]'
2851
+ index: number
2852
+ value: Uint8Array
2853
+ }
2854
+
2855
+ export function encode (obj: Partial<PSResponse>): Uint8Array {
1462
2856
  return encodeMessage(obj, PSResponse.codec())
1463
2857
  }
1464
2858
 
1465
- export const decode = (buf: Uint8Array | Uint8ArrayList): PSResponse => {
1466
- return decodeMessage(buf, PSResponse.codec())
2859
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PSResponse>): PSResponse {
2860
+ return decodeMessage(buf, PSResponse.codec(), opts)
2861
+ }
2862
+
2863
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PSResponse>): Generator<PSResponseTopicsFieldEvent | PSResponsePeerIDsFieldEvent> {
2864
+ return streamMessage(buf, PSResponse.codec(), opts)
1467
2865
  }
1468
2866
  }
1469
2867
 
@@ -1511,7 +2909,7 @@ export namespace PeerstoreRequest {
1511
2909
  w.bytes(obj.id)
1512
2910
  }
1513
2911
 
1514
- if (obj.protos != null) {
2912
+ if (obj.protos != null && obj.protos.length > 0) {
1515
2913
  for (const value of obj.protos) {
1516
2914
  w.uint32(26)
1517
2915
  w.string(value)
@@ -1521,7 +2919,7 @@ export namespace PeerstoreRequest {
1521
2919
  if (opts.lengthDelimited !== false) {
1522
2920
  w.ldelim()
1523
2921
  }
1524
- }, (reader, length) => {
2922
+ }, (reader, length, opts = {}) => {
1525
2923
  const obj: any = {
1526
2924
  protos: []
1527
2925
  }
@@ -1532,34 +2930,108 @@ export namespace PeerstoreRequest {
1532
2930
  const tag = reader.uint32()
1533
2931
 
1534
2932
  switch (tag >>> 3) {
1535
- case 1:
2933
+ case 1: {
1536
2934
  obj.type = PeerstoreRequest.Type.codec().decode(reader)
1537
2935
  break
1538
- case 2:
2936
+ }
2937
+ case 2: {
1539
2938
  obj.id = reader.bytes()
1540
2939
  break
1541
- case 3:
2940
+ }
2941
+ case 3: {
2942
+ if (opts.limits?.protos != null && obj.protos.length === opts.limits.protos) {
2943
+ throw new MaxLengthError('Decode error - repeated field "protos" had too many elements')
2944
+ }
2945
+
1542
2946
  obj.protos.push(reader.string())
1543
2947
  break
1544
- default:
2948
+ }
2949
+ default: {
1545
2950
  reader.skipType(tag & 7)
1546
2951
  break
2952
+ }
1547
2953
  }
1548
2954
  }
1549
2955
 
1550
2956
  return obj
2957
+ }, function * (reader, length, prefix, opts = {}) {
2958
+ const obj = {
2959
+ protos: 0
2960
+ }
2961
+
2962
+ const end = length == null ? reader.len : reader.pos + length
2963
+
2964
+ while (reader.pos < end) {
2965
+ const tag = reader.uint32()
2966
+
2967
+ switch (tag >>> 3) {
2968
+ case 1: {
2969
+ yield {
2970
+ field: `${prefix}.type`,
2971
+ value: PeerstoreRequest.Type.codec().decode(reader)
2972
+ }
2973
+ break
2974
+ }
2975
+ case 2: {
2976
+ yield {
2977
+ field: `${prefix}.id`,
2978
+ value: reader.bytes()
2979
+ }
2980
+ break
2981
+ }
2982
+ case 3: {
2983
+ if (opts.limits?.protos != null && obj.protos === opts.limits.protos) {
2984
+ throw new MaxLengthError('Streaming decode error - repeated field "protos" had too many elements')
2985
+ }
2986
+
2987
+ yield {
2988
+ field: `${prefix}.protos[]`,
2989
+ index: obj.protos,
2990
+ value: reader.string()
2991
+ }
2992
+
2993
+ obj.protos++
2994
+
2995
+ break
2996
+ }
2997
+ default: {
2998
+ reader.skipType(tag & 7)
2999
+ break
3000
+ }
3001
+ }
3002
+ }
1551
3003
  })
1552
3004
  }
1553
3005
 
1554
3006
  return _codec
1555
3007
  }
1556
3008
 
1557
- export const encode = (obj: Partial<PeerstoreRequest>): Uint8Array => {
3009
+ export interface PeerstoreRequestTypeFieldEvent {
3010
+ field: '$.type'
3011
+ value: PeerstoreRequest.Type
3012
+ }
3013
+
3014
+ export interface PeerstoreRequestIdFieldEvent {
3015
+ field: '$.id'
3016
+ value: Uint8Array
3017
+ }
3018
+
3019
+ export interface PeerstoreRequestProtosFieldEvent {
3020
+ field: '$.protos[]'
3021
+ index: number
3022
+ value: string
3023
+ }
3024
+
3025
+ export function encode (obj: Partial<PeerstoreRequest>): Uint8Array {
1558
3026
  return encodeMessage(obj, PeerstoreRequest.codec())
1559
3027
  }
1560
3028
 
1561
- export const decode = (buf: Uint8Array | Uint8ArrayList): PeerstoreRequest => {
1562
- return decodeMessage(buf, PeerstoreRequest.codec())
3029
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerstoreRequest>): PeerstoreRequest {
3030
+ return decodeMessage(buf, PeerstoreRequest.codec(), opts)
3031
+ }
3032
+
3033
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerstoreRequest>): Generator<PeerstoreRequestTypeFieldEvent | PeerstoreRequestIdFieldEvent | PeerstoreRequestProtosFieldEvent> {
3034
+ return streamMessage(buf, PeerstoreRequest.codec(), opts)
1563
3035
  }
1564
3036
  }
1565
3037
 
@@ -1583,7 +3055,7 @@ export namespace PeerstoreResponse {
1583
3055
  PeerInfo.codec().encode(obj.peer, w)
1584
3056
  }
1585
3057
 
1586
- if (obj.protos != null) {
3058
+ if (obj.protos != null && obj.protos.length > 0) {
1587
3059
  for (const value of obj.protos) {
1588
3060
  w.uint32(18)
1589
3061
  w.string(value)
@@ -1593,7 +3065,7 @@ export namespace PeerstoreResponse {
1593
3065
  if (opts.lengthDelimited !== false) {
1594
3066
  w.ldelim()
1595
3067
  }
1596
- }, (reader, length) => {
3068
+ }, (reader, length, opts = {}) => {
1597
3069
  const obj: any = {
1598
3070
  protos: []
1599
3071
  }
@@ -1604,30 +3076,99 @@ export namespace PeerstoreResponse {
1604
3076
  const tag = reader.uint32()
1605
3077
 
1606
3078
  switch (tag >>> 3) {
1607
- case 1:
1608
- obj.peer = PeerInfo.codec().decode(reader, reader.uint32())
3079
+ case 1: {
3080
+ obj.peer = PeerInfo.codec().decode(reader, reader.uint32(), {
3081
+ limits: opts.limits?.peer
3082
+ })
1609
3083
  break
1610
- case 2:
3084
+ }
3085
+ case 2: {
3086
+ if (opts.limits?.protos != null && obj.protos.length === opts.limits.protos) {
3087
+ throw new MaxLengthError('Decode error - repeated field "protos" had too many elements')
3088
+ }
3089
+
1611
3090
  obj.protos.push(reader.string())
1612
3091
  break
1613
- default:
3092
+ }
3093
+ default: {
1614
3094
  reader.skipType(tag & 7)
1615
3095
  break
3096
+ }
1616
3097
  }
1617
3098
  }
1618
3099
 
1619
3100
  return obj
3101
+ }, function * (reader, length, prefix, opts = {}) {
3102
+ const obj = {
3103
+ protos: 0
3104
+ }
3105
+
3106
+ const end = length == null ? reader.len : reader.pos + length
3107
+
3108
+ while (reader.pos < end) {
3109
+ const tag = reader.uint32()
3110
+
3111
+ switch (tag >>> 3) {
3112
+ case 1: {
3113
+ yield * PeerInfo.codec().stream(reader, reader.uint32(), `${prefix}.peer`, {
3114
+ limits: opts.limits?.peer
3115
+ })
3116
+
3117
+ break
3118
+ }
3119
+ case 2: {
3120
+ if (opts.limits?.protos != null && obj.protos === opts.limits.protos) {
3121
+ throw new MaxLengthError('Streaming decode error - repeated field "protos" had too many elements')
3122
+ }
3123
+
3124
+ yield {
3125
+ field: `${prefix}.protos[]`,
3126
+ index: obj.protos,
3127
+ value: reader.string()
3128
+ }
3129
+
3130
+ obj.protos++
3131
+
3132
+ break
3133
+ }
3134
+ default: {
3135
+ reader.skipType(tag & 7)
3136
+ break
3137
+ }
3138
+ }
3139
+ }
1620
3140
  })
1621
3141
  }
1622
3142
 
1623
3143
  return _codec
1624
3144
  }
1625
3145
 
1626
- export const encode = (obj: Partial<PeerstoreResponse>): Uint8Array => {
3146
+ export interface PeerstoreResponsePeerIdFieldEvent {
3147
+ field: '$.peer.id'
3148
+ value: Uint8Array
3149
+ }
3150
+
3151
+ export interface PeerstoreResponsePeerAddrsFieldEvent {
3152
+ field: '$.peer.addrs[]'
3153
+ index: number
3154
+ value: Uint8Array
3155
+ }
3156
+
3157
+ export interface PeerstoreResponseProtosFieldEvent {
3158
+ field: '$.protos[]'
3159
+ index: number
3160
+ value: string
3161
+ }
3162
+
3163
+ export function encode (obj: Partial<PeerstoreResponse>): Uint8Array {
1627
3164
  return encodeMessage(obj, PeerstoreResponse.codec())
1628
3165
  }
1629
3166
 
1630
- export const decode = (buf: Uint8Array | Uint8ArrayList): PeerstoreResponse => {
1631
- return decodeMessage(buf, PeerstoreResponse.codec())
3167
+ export function decode (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerstoreResponse>): PeerstoreResponse {
3168
+ return decodeMessage(buf, PeerstoreResponse.codec(), opts)
3169
+ }
3170
+
3171
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<PeerstoreResponse>): Generator<PeerstoreResponsePeerIdFieldEvent | PeerstoreResponsePeerAddrsFieldEvent | PeerstoreResponseProtosFieldEvent> {
3172
+ return streamMessage(buf, PeerstoreResponse.codec(), opts)
1632
3173
  }
1633
3174
  }