@libp2p/floodsub 3.0.2 → 3.0.5

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,7 +1,9 @@
1
1
  /* eslint-disable import/export */
2
2
  /* eslint-disable @typescript-eslint/no-namespace */
3
3
 
4
- import { encodeMessage, decodeMessage, message, bool, string, bytes, uint64 } from 'protons-runtime'
4
+ import { encodeMessage, decodeMessage, message } from 'protons-runtime'
5
+ import type { Uint8ArrayList } from 'uint8arraylist'
6
+ import type { Codec } from 'protons-runtime'
5
7
 
6
8
  export interface RPC {
7
9
  subscriptions: RPC.SubOpts[]
@@ -16,21 +18,65 @@ export namespace RPC {
16
18
  }
17
19
 
18
20
  export namespace SubOpts {
19
- export const codec = () => {
20
- return message<SubOpts>({
21
- 1: { name: 'subscribe', codec: bool, optional: true },
22
- 2: { name: 'topic', codec: string, optional: true }
23
- })
21
+ let _codec: Codec<SubOpts>
22
+
23
+ export const codec = (): Codec<SubOpts> => {
24
+ if (_codec == null) {
25
+ _codec = message<SubOpts>((obj, writer, opts = {}) => {
26
+ if (opts.lengthDelimited !== false) {
27
+ writer.fork()
28
+ }
29
+
30
+ if (obj.subscribe != null) {
31
+ writer.uint32(8)
32
+ writer.bool(obj.subscribe)
33
+ }
34
+
35
+ if (obj.topic != null) {
36
+ writer.uint32(18)
37
+ writer.string(obj.topic)
38
+ }
39
+
40
+ if (opts.lengthDelimited !== false) {
41
+ writer.ldelim()
42
+ }
43
+ }, (reader, length) => {
44
+ const obj: any = {}
45
+
46
+ const end = length == null ? reader.len : reader.pos + length
47
+
48
+ while (reader.pos < end) {
49
+ const tag = reader.uint32()
50
+
51
+ switch (tag >>> 3) {
52
+ case 1:
53
+ obj.subscribe = reader.bool()
54
+ break
55
+ case 2:
56
+ obj.topic = reader.string()
57
+ break
58
+ default:
59
+ reader.skipType(tag & 7)
60
+ break
61
+ }
62
+ }
63
+
64
+ return obj
65
+ })
66
+ }
67
+
68
+ return _codec
24
69
  }
25
70
 
26
71
  export const encode = (obj: SubOpts): Uint8Array => {
27
72
  return encodeMessage(obj, SubOpts.codec())
28
73
  }
29
74
 
30
- export const decode = (buf: Uint8Array): SubOpts => {
75
+ export const decode = (buf: Uint8Array | Uint8ArrayList): SubOpts => {
31
76
  return decodeMessage(buf, SubOpts.codec())
32
77
  }
33
78
  }
79
+
34
80
  export interface Message {
35
81
  from?: Uint8Array
36
82
  data?: Uint8Array
@@ -41,39 +87,171 @@ export namespace RPC {
41
87
  }
42
88
 
43
89
  export namespace Message {
44
- export const codec = () => {
45
- return message<Message>({
46
- 1: { name: 'from', codec: bytes, optional: true },
47
- 2: { name: 'data', codec: bytes, optional: true },
48
- 3: { name: 'sequenceNumber', codec: bytes, optional: true },
49
- 4: { name: 'topic', codec: string, optional: true },
50
- 5: { name: 'signature', codec: bytes, optional: true },
51
- 6: { name: 'key', codec: bytes, optional: true }
52
- })
90
+ let _codec: Codec<Message>
91
+
92
+ export const codec = (): Codec<Message> => {
93
+ if (_codec == null) {
94
+ _codec = message<Message>((obj, writer, opts = {}) => {
95
+ if (opts.lengthDelimited !== false) {
96
+ writer.fork()
97
+ }
98
+
99
+ if (obj.from != null) {
100
+ writer.uint32(10)
101
+ writer.bytes(obj.from)
102
+ }
103
+
104
+ if (obj.data != null) {
105
+ writer.uint32(18)
106
+ writer.bytes(obj.data)
107
+ }
108
+
109
+ if (obj.sequenceNumber != null) {
110
+ writer.uint32(26)
111
+ writer.bytes(obj.sequenceNumber)
112
+ }
113
+
114
+ if (obj.topic != null) {
115
+ writer.uint32(34)
116
+ writer.string(obj.topic)
117
+ }
118
+
119
+ if (obj.signature != null) {
120
+ writer.uint32(42)
121
+ writer.bytes(obj.signature)
122
+ }
123
+
124
+ if (obj.key != null) {
125
+ writer.uint32(50)
126
+ writer.bytes(obj.key)
127
+ }
128
+
129
+ if (opts.lengthDelimited !== false) {
130
+ writer.ldelim()
131
+ }
132
+ }, (reader, length) => {
133
+ const obj: any = {}
134
+
135
+ const end = length == null ? reader.len : reader.pos + length
136
+
137
+ while (reader.pos < end) {
138
+ const tag = reader.uint32()
139
+
140
+ switch (tag >>> 3) {
141
+ case 1:
142
+ obj.from = reader.bytes()
143
+ break
144
+ case 2:
145
+ obj.data = reader.bytes()
146
+ break
147
+ case 3:
148
+ obj.sequenceNumber = reader.bytes()
149
+ break
150
+ case 4:
151
+ obj.topic = reader.string()
152
+ break
153
+ case 5:
154
+ obj.signature = reader.bytes()
155
+ break
156
+ case 6:
157
+ obj.key = reader.bytes()
158
+ break
159
+ default:
160
+ reader.skipType(tag & 7)
161
+ break
162
+ }
163
+ }
164
+
165
+ return obj
166
+ })
167
+ }
168
+
169
+ return _codec
53
170
  }
54
171
 
55
172
  export const encode = (obj: Message): Uint8Array => {
56
173
  return encodeMessage(obj, Message.codec())
57
174
  }
58
175
 
59
- export const decode = (buf: Uint8Array): Message => {
176
+ export const decode = (buf: Uint8Array | Uint8ArrayList): Message => {
60
177
  return decodeMessage(buf, Message.codec())
61
178
  }
62
179
  }
63
180
 
64
- export const codec = () => {
65
- return message<RPC>({
66
- 1: { name: 'subscriptions', codec: RPC.SubOpts.codec(), repeats: true },
67
- 2: { name: 'messages', codec: RPC.Message.codec(), repeats: true },
68
- 3: { name: 'control', codec: ControlMessage.codec(), optional: true }
69
- })
181
+ let _codec: Codec<RPC>
182
+
183
+ export const codec = (): Codec<RPC> => {
184
+ if (_codec == null) {
185
+ _codec = message<RPC>((obj, writer, opts = {}) => {
186
+ if (opts.lengthDelimited !== false) {
187
+ writer.fork()
188
+ }
189
+
190
+ if (obj.subscriptions != null) {
191
+ for (const value of obj.subscriptions) {
192
+ writer.uint32(10)
193
+ RPC.SubOpts.codec().encode(value, writer)
194
+ }
195
+ } else {
196
+ throw new Error('Protocol error: required field "subscriptions" was not found in object')
197
+ }
198
+
199
+ if (obj.messages != null) {
200
+ for (const value of obj.messages) {
201
+ writer.uint32(18)
202
+ RPC.Message.codec().encode(value, writer)
203
+ }
204
+ } else {
205
+ throw new Error('Protocol error: required field "messages" was not found in object')
206
+ }
207
+
208
+ if (obj.control != null) {
209
+ writer.uint32(26)
210
+ ControlMessage.codec().encode(obj.control, writer)
211
+ }
212
+
213
+ if (opts.lengthDelimited !== false) {
214
+ writer.ldelim()
215
+ }
216
+ }, (reader, length) => {
217
+ const obj: any = {
218
+ subscriptions: [],
219
+ messages: []
220
+ }
221
+
222
+ const end = length == null ? reader.len : reader.pos + length
223
+
224
+ while (reader.pos < end) {
225
+ const tag = reader.uint32()
226
+
227
+ switch (tag >>> 3) {
228
+ case 1:
229
+ obj.subscriptions.push(RPC.SubOpts.codec().decode(reader, reader.uint32()))
230
+ break
231
+ case 2:
232
+ obj.messages.push(RPC.Message.codec().decode(reader, reader.uint32()))
233
+ break
234
+ case 3:
235
+ obj.control = ControlMessage.codec().decode(reader, reader.uint32())
236
+ break
237
+ default:
238
+ reader.skipType(tag & 7)
239
+ break
240
+ }
241
+ }
242
+
243
+ return obj
244
+ })
245
+ }
246
+
247
+ return _codec
70
248
  }
71
249
 
72
250
  export const encode = (obj: RPC): Uint8Array => {
73
251
  return encodeMessage(obj, RPC.codec())
74
252
  }
75
253
 
76
- export const decode = (buf: Uint8Array): RPC => {
254
+ export const decode = (buf: Uint8Array | Uint8ArrayList): RPC => {
77
255
  return decodeMessage(buf, RPC.codec())
78
256
  }
79
257
  }
@@ -86,20 +264,98 @@ export interface ControlMessage {
86
264
  }
87
265
 
88
266
  export namespace ControlMessage {
89
- export const codec = () => {
90
- return message<ControlMessage>({
91
- 1: { name: 'ihave', codec: ControlIHave.codec(), repeats: true },
92
- 2: { name: 'iwant', codec: ControlIWant.codec(), repeats: true },
93
- 3: { name: 'graft', codec: ControlGraft.codec(), repeats: true },
94
- 4: { name: 'prune', codec: ControlPrune.codec(), repeats: true }
95
- })
267
+ let _codec: Codec<ControlMessage>
268
+
269
+ export const codec = (): Codec<ControlMessage> => {
270
+ if (_codec == null) {
271
+ _codec = message<ControlMessage>((obj, writer, opts = {}) => {
272
+ if (opts.lengthDelimited !== false) {
273
+ writer.fork()
274
+ }
275
+
276
+ if (obj.ihave != null) {
277
+ for (const value of obj.ihave) {
278
+ writer.uint32(10)
279
+ ControlIHave.codec().encode(value, writer)
280
+ }
281
+ } else {
282
+ throw new Error('Protocol error: required field "ihave" was not found in object')
283
+ }
284
+
285
+ if (obj.iwant != null) {
286
+ for (const value of obj.iwant) {
287
+ writer.uint32(18)
288
+ ControlIWant.codec().encode(value, writer)
289
+ }
290
+ } else {
291
+ throw new Error('Protocol error: required field "iwant" was not found in object')
292
+ }
293
+
294
+ if (obj.graft != null) {
295
+ for (const value of obj.graft) {
296
+ writer.uint32(26)
297
+ ControlGraft.codec().encode(value, writer)
298
+ }
299
+ } else {
300
+ throw new Error('Protocol error: required field "graft" was not found in object')
301
+ }
302
+
303
+ if (obj.prune != null) {
304
+ for (const value of obj.prune) {
305
+ writer.uint32(34)
306
+ ControlPrune.codec().encode(value, writer)
307
+ }
308
+ } else {
309
+ throw new Error('Protocol error: required field "prune" was not found in object')
310
+ }
311
+
312
+ if (opts.lengthDelimited !== false) {
313
+ writer.ldelim()
314
+ }
315
+ }, (reader, length) => {
316
+ const obj: any = {
317
+ ihave: [],
318
+ iwant: [],
319
+ graft: [],
320
+ prune: []
321
+ }
322
+
323
+ const end = length == null ? reader.len : reader.pos + length
324
+
325
+ while (reader.pos < end) {
326
+ const tag = reader.uint32()
327
+
328
+ switch (tag >>> 3) {
329
+ case 1:
330
+ obj.ihave.push(ControlIHave.codec().decode(reader, reader.uint32()))
331
+ break
332
+ case 2:
333
+ obj.iwant.push(ControlIWant.codec().decode(reader, reader.uint32()))
334
+ break
335
+ case 3:
336
+ obj.graft.push(ControlGraft.codec().decode(reader, reader.uint32()))
337
+ break
338
+ case 4:
339
+ obj.prune.push(ControlPrune.codec().decode(reader, reader.uint32()))
340
+ break
341
+ default:
342
+ reader.skipType(tag & 7)
343
+ break
344
+ }
345
+ }
346
+
347
+ return obj
348
+ })
349
+ }
350
+
351
+ return _codec
96
352
  }
97
353
 
98
354
  export const encode = (obj: ControlMessage): Uint8Array => {
99
355
  return encodeMessage(obj, ControlMessage.codec())
100
356
  }
101
357
 
102
- export const decode = (buf: Uint8Array): ControlMessage => {
358
+ export const decode = (buf: Uint8Array | Uint8ArrayList): ControlMessage => {
103
359
  return decodeMessage(buf, ControlMessage.codec())
104
360
  }
105
361
  }
@@ -110,18 +366,67 @@ export interface ControlIHave {
110
366
  }
111
367
 
112
368
  export namespace ControlIHave {
113
- export const codec = () => {
114
- return message<ControlIHave>({
115
- 1: { name: 'topic', codec: string, optional: true },
116
- 2: { name: 'messageIDs', codec: bytes, repeats: true }
117
- })
369
+ let _codec: Codec<ControlIHave>
370
+
371
+ export const codec = (): Codec<ControlIHave> => {
372
+ if (_codec == null) {
373
+ _codec = message<ControlIHave>((obj, writer, opts = {}) => {
374
+ if (opts.lengthDelimited !== false) {
375
+ writer.fork()
376
+ }
377
+
378
+ if (obj.topic != null) {
379
+ writer.uint32(10)
380
+ writer.string(obj.topic)
381
+ }
382
+
383
+ if (obj.messageIDs != null) {
384
+ for (const value of obj.messageIDs) {
385
+ writer.uint32(18)
386
+ writer.bytes(value)
387
+ }
388
+ } else {
389
+ throw new Error('Protocol error: required field "messageIDs" was not found in object')
390
+ }
391
+
392
+ if (opts.lengthDelimited !== false) {
393
+ writer.ldelim()
394
+ }
395
+ }, (reader, length) => {
396
+ const obj: any = {
397
+ messageIDs: []
398
+ }
399
+
400
+ const end = length == null ? reader.len : reader.pos + length
401
+
402
+ while (reader.pos < end) {
403
+ const tag = reader.uint32()
404
+
405
+ switch (tag >>> 3) {
406
+ case 1:
407
+ obj.topic = reader.string()
408
+ break
409
+ case 2:
410
+ obj.messageIDs.push(reader.bytes())
411
+ break
412
+ default:
413
+ reader.skipType(tag & 7)
414
+ break
415
+ }
416
+ }
417
+
418
+ return obj
419
+ })
420
+ }
421
+
422
+ return _codec
118
423
  }
119
424
 
120
425
  export const encode = (obj: ControlIHave): Uint8Array => {
121
426
  return encodeMessage(obj, ControlIHave.codec())
122
427
  }
123
428
 
124
- export const decode = (buf: Uint8Array): ControlIHave => {
429
+ export const decode = (buf: Uint8Array | Uint8ArrayList): ControlIHave => {
125
430
  return decodeMessage(buf, ControlIHave.codec())
126
431
  }
127
432
  }
@@ -131,17 +436,59 @@ export interface ControlIWant {
131
436
  }
132
437
 
133
438
  export namespace ControlIWant {
134
- export const codec = () => {
135
- return message<ControlIWant>({
136
- 1: { name: 'messageIDs', codec: bytes, repeats: true }
137
- })
439
+ let _codec: Codec<ControlIWant>
440
+
441
+ export const codec = (): Codec<ControlIWant> => {
442
+ if (_codec == null) {
443
+ _codec = message<ControlIWant>((obj, writer, opts = {}) => {
444
+ if (opts.lengthDelimited !== false) {
445
+ writer.fork()
446
+ }
447
+
448
+ if (obj.messageIDs != null) {
449
+ for (const value of obj.messageIDs) {
450
+ writer.uint32(10)
451
+ writer.bytes(value)
452
+ }
453
+ } else {
454
+ throw new Error('Protocol error: required field "messageIDs" was not found in object')
455
+ }
456
+
457
+ if (opts.lengthDelimited !== false) {
458
+ writer.ldelim()
459
+ }
460
+ }, (reader, length) => {
461
+ const obj: any = {
462
+ messageIDs: []
463
+ }
464
+
465
+ const end = length == null ? reader.len : reader.pos + length
466
+
467
+ while (reader.pos < end) {
468
+ const tag = reader.uint32()
469
+
470
+ switch (tag >>> 3) {
471
+ case 1:
472
+ obj.messageIDs.push(reader.bytes())
473
+ break
474
+ default:
475
+ reader.skipType(tag & 7)
476
+ break
477
+ }
478
+ }
479
+
480
+ return obj
481
+ })
482
+ }
483
+
484
+ return _codec
138
485
  }
139
486
 
140
487
  export const encode = (obj: ControlIWant): Uint8Array => {
141
488
  return encodeMessage(obj, ControlIWant.codec())
142
489
  }
143
490
 
144
- export const decode = (buf: Uint8Array): ControlIWant => {
491
+ export const decode = (buf: Uint8Array | Uint8ArrayList): ControlIWant => {
145
492
  return decodeMessage(buf, ControlIWant.codec())
146
493
  }
147
494
  }
@@ -151,17 +498,53 @@ export interface ControlGraft {
151
498
  }
152
499
 
153
500
  export namespace ControlGraft {
154
- export const codec = () => {
155
- return message<ControlGraft>({
156
- 1: { name: 'topic', codec: string, optional: true }
157
- })
501
+ let _codec: Codec<ControlGraft>
502
+
503
+ export const codec = (): Codec<ControlGraft> => {
504
+ if (_codec == null) {
505
+ _codec = message<ControlGraft>((obj, writer, opts = {}) => {
506
+ if (opts.lengthDelimited !== false) {
507
+ writer.fork()
508
+ }
509
+
510
+ if (obj.topic != null) {
511
+ writer.uint32(10)
512
+ writer.string(obj.topic)
513
+ }
514
+
515
+ if (opts.lengthDelimited !== false) {
516
+ writer.ldelim()
517
+ }
518
+ }, (reader, length) => {
519
+ const obj: any = {}
520
+
521
+ const end = length == null ? reader.len : reader.pos + length
522
+
523
+ while (reader.pos < end) {
524
+ const tag = reader.uint32()
525
+
526
+ switch (tag >>> 3) {
527
+ case 1:
528
+ obj.topic = reader.string()
529
+ break
530
+ default:
531
+ reader.skipType(tag & 7)
532
+ break
533
+ }
534
+ }
535
+
536
+ return obj
537
+ })
538
+ }
539
+
540
+ return _codec
158
541
  }
159
542
 
160
543
  export const encode = (obj: ControlGraft): Uint8Array => {
161
544
  return encodeMessage(obj, ControlGraft.codec())
162
545
  }
163
546
 
164
- export const decode = (buf: Uint8Array): ControlGraft => {
547
+ export const decode = (buf: Uint8Array | Uint8ArrayList): ControlGraft => {
165
548
  return decodeMessage(buf, ControlGraft.codec())
166
549
  }
167
550
  }
@@ -173,19 +556,75 @@ export interface ControlPrune {
173
556
  }
174
557
 
175
558
  export namespace ControlPrune {
176
- export const codec = () => {
177
- return message<ControlPrune>({
178
- 1: { name: 'topic', codec: string, optional: true },
179
- 2: { name: 'peers', codec: PeerInfo.codec(), repeats: true },
180
- 3: { name: 'backoff', codec: uint64, optional: true }
181
- })
559
+ let _codec: Codec<ControlPrune>
560
+
561
+ export const codec = (): Codec<ControlPrune> => {
562
+ if (_codec == null) {
563
+ _codec = message<ControlPrune>((obj, writer, opts = {}) => {
564
+ if (opts.lengthDelimited !== false) {
565
+ writer.fork()
566
+ }
567
+
568
+ if (obj.topic != null) {
569
+ writer.uint32(10)
570
+ writer.string(obj.topic)
571
+ }
572
+
573
+ if (obj.peers != null) {
574
+ for (const value of obj.peers) {
575
+ writer.uint32(18)
576
+ PeerInfo.codec().encode(value, writer)
577
+ }
578
+ } else {
579
+ throw new Error('Protocol error: required field "peers" was not found in object')
580
+ }
581
+
582
+ if (obj.backoff != null) {
583
+ writer.uint32(24)
584
+ writer.uint64(obj.backoff)
585
+ }
586
+
587
+ if (opts.lengthDelimited !== false) {
588
+ writer.ldelim()
589
+ }
590
+ }, (reader, length) => {
591
+ const obj: any = {
592
+ peers: []
593
+ }
594
+
595
+ const end = length == null ? reader.len : reader.pos + length
596
+
597
+ while (reader.pos < end) {
598
+ const tag = reader.uint32()
599
+
600
+ switch (tag >>> 3) {
601
+ case 1:
602
+ obj.topic = reader.string()
603
+ break
604
+ case 2:
605
+ obj.peers.push(PeerInfo.codec().decode(reader, reader.uint32()))
606
+ break
607
+ case 3:
608
+ obj.backoff = reader.uint64()
609
+ break
610
+ default:
611
+ reader.skipType(tag & 7)
612
+ break
613
+ }
614
+ }
615
+
616
+ return obj
617
+ })
618
+ }
619
+
620
+ return _codec
182
621
  }
183
622
 
184
623
  export const encode = (obj: ControlPrune): Uint8Array => {
185
624
  return encodeMessage(obj, ControlPrune.codec())
186
625
  }
187
626
 
188
- export const decode = (buf: Uint8Array): ControlPrune => {
627
+ export const decode = (buf: Uint8Array | Uint8ArrayList): ControlPrune => {
189
628
  return decodeMessage(buf, ControlPrune.codec())
190
629
  }
191
630
  }
@@ -196,18 +635,61 @@ export interface PeerInfo {
196
635
  }
197
636
 
198
637
  export namespace PeerInfo {
199
- export const codec = () => {
200
- return message<PeerInfo>({
201
- 1: { name: 'peerID', codec: bytes, optional: true },
202
- 2: { name: 'signedPeerRecord', codec: bytes, optional: true }
203
- })
638
+ let _codec: Codec<PeerInfo>
639
+
640
+ export const codec = (): Codec<PeerInfo> => {
641
+ if (_codec == null) {
642
+ _codec = message<PeerInfo>((obj, writer, opts = {}) => {
643
+ if (opts.lengthDelimited !== false) {
644
+ writer.fork()
645
+ }
646
+
647
+ if (obj.peerID != null) {
648
+ writer.uint32(10)
649
+ writer.bytes(obj.peerID)
650
+ }
651
+
652
+ if (obj.signedPeerRecord != null) {
653
+ writer.uint32(18)
654
+ writer.bytes(obj.signedPeerRecord)
655
+ }
656
+
657
+ if (opts.lengthDelimited !== false) {
658
+ writer.ldelim()
659
+ }
660
+ }, (reader, length) => {
661
+ const obj: any = {}
662
+
663
+ const end = length == null ? reader.len : reader.pos + length
664
+
665
+ while (reader.pos < end) {
666
+ const tag = reader.uint32()
667
+
668
+ switch (tag >>> 3) {
669
+ case 1:
670
+ obj.peerID = reader.bytes()
671
+ break
672
+ case 2:
673
+ obj.signedPeerRecord = reader.bytes()
674
+ break
675
+ default:
676
+ reader.skipType(tag & 7)
677
+ break
678
+ }
679
+ }
680
+
681
+ return obj
682
+ })
683
+ }
684
+
685
+ return _codec
204
686
  }
205
687
 
206
688
  export const encode = (obj: PeerInfo): Uint8Array => {
207
689
  return encodeMessage(obj, PeerInfo.codec())
208
690
  }
209
691
 
210
- export const decode = (buf: Uint8Array): PeerInfo => {
692
+ export const decode = (buf: Uint8Array | Uint8ArrayList): PeerInfo => {
211
693
  return decodeMessage(buf, PeerInfo.codec())
212
694
  }
213
695
  }