@helia/bitswap 4.0.14 → 4.0.15

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/bitswap",
3
- "version": "4.0.14",
3
+ "version": "4.0.15",
4
4
  "description": "JavaScript implementation of the Bitswap data exchange protocol used by Helia",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia/tree/main/packages/bitswap#readme",
@@ -73,7 +73,7 @@
73
73
  "multiformats": "^14.0.0",
74
74
  "p-defer": "^4.0.1",
75
75
  "progress-events": "^1.1.0",
76
- "protons-runtime": "^7.0.0",
76
+ "protons-runtime": "^7.1.0",
77
77
  "race-event": "^1.6.1",
78
78
  "uint8-varint": "^3.0.0",
79
79
  "uint8arraylist": "^3.0.2",
@@ -89,7 +89,7 @@
89
89
  "p-event": "^7.1.0",
90
90
  "p-retry": "^8.0.0",
91
91
  "p-wait-for": "^6.0.0",
92
- "protons": "^9.0.1",
92
+ "protons": "^9.1.0",
93
93
  "sinon": "^22.0.0",
94
94
  "sinon-ts": "^2.0.0"
95
95
  },
package/src/pb/message.ts CHANGED
@@ -105,44 +105,52 @@ export namespace WantlistEntry {
105
105
  }
106
106
 
107
107
  return obj
108
- }, function * (reader, length, prefix, opts = {}) {
108
+ }, function * (reader, prefix, length, opts = {}) {
109
109
  const end = length == null ? reader.len : reader.pos + length
110
110
 
111
+ if (prefix !== '.') {
112
+ yield {
113
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
114
+ type: 'start',
115
+ message: 'WantlistEntry'
116
+ }
117
+ }
118
+
111
119
  while (reader.pos < end) {
112
120
  const tag = reader.uint32()
113
121
 
114
122
  switch (tag >>> 3) {
115
123
  case 1: {
116
124
  yield {
117
- field: `${prefix}.cid`,
125
+ field: `${prefix}cid`,
118
126
  value: reader.bytes()
119
127
  }
120
128
  break
121
129
  }
122
130
  case 2: {
123
131
  yield {
124
- field: `${prefix}.priority`,
132
+ field: `${prefix}priority`,
125
133
  value: reader.int32()
126
134
  }
127
135
  break
128
136
  }
129
137
  case 3: {
130
138
  yield {
131
- field: `${prefix}.cancel`,
139
+ field: `${prefix}cancel`,
132
140
  value: reader.bool()
133
141
  }
134
142
  break
135
143
  }
136
144
  case 4: {
137
145
  yield {
138
- field: `${prefix}.wantType`,
146
+ field: `${prefix}wantType`,
139
147
  value: WantType.codec().decode(reader)
140
148
  }
141
149
  break
142
150
  }
143
151
  case 5: {
144
152
  yield {
145
- field: `${prefix}.sendDontHave`,
153
+ field: `${prefix}sendDontHave`,
146
154
  value: reader.bool()
147
155
  }
148
156
  break
@@ -153,6 +161,14 @@ export namespace WantlistEntry {
153
161
  }
154
162
  }
155
163
  }
164
+
165
+ if (prefix !== '.') {
166
+ yield {
167
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
168
+ type: 'end',
169
+ message: 'WantlistEntry'
170
+ }
171
+ }
156
172
  })
157
173
  }
158
174
 
@@ -160,27 +176,27 @@ export namespace WantlistEntry {
160
176
  }
161
177
 
162
178
  export interface WantlistEntryCidFieldEvent {
163
- field: '$.cid'
179
+ field: '.cid'
164
180
  value: Uint8Array<ArrayBuffer>
165
181
  }
166
182
 
167
183
  export interface WantlistEntryPriorityFieldEvent {
168
- field: '$.priority'
184
+ field: '.priority'
169
185
  value: number
170
186
  }
171
187
 
172
188
  export interface WantlistEntryCancelFieldEvent {
173
- field: '$.cancel'
189
+ field: '.cancel'
174
190
  value: boolean
175
191
  }
176
192
 
177
193
  export interface WantlistEntryWantTypeFieldEvent {
178
- field: '$.wantType'
194
+ field: '.wantType'
179
195
  value: WantType
180
196
  }
181
197
 
182
198
  export interface WantlistEntrySendDontHaveFieldEvent {
183
- field: '$.sendDontHave'
199
+ field: '.sendDontHave'
184
200
  value: boolean
185
201
  }
186
202
 
@@ -260,13 +276,21 @@ export namespace Wantlist {
260
276
  }
261
277
 
262
278
  return obj
263
- }, function * (reader, length, prefix, opts = {}) {
279
+ }, function * (reader, prefix, length, opts = {}) {
264
280
  const obj = {
265
281
  entries: 0
266
282
  }
267
283
 
268
284
  const end = length == null ? reader.len : reader.pos + length
269
285
 
286
+ if (prefix !== '.') {
287
+ yield {
288
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
289
+ type: 'start',
290
+ message: 'Wantlist'
291
+ }
292
+ }
293
+
270
294
  while (reader.pos < end) {
271
295
  const tag = reader.uint32()
272
296
 
@@ -276,7 +300,7 @@ export namespace Wantlist {
276
300
  throw new MaxLengthError('Streaming decode error - repeated field "entries" had too many elements')
277
301
  }
278
302
 
279
- for (const evt of WantlistEntry.codec().stream(reader, reader.uint32(), `${prefix}.entries[]`, {
303
+ for (const evt of WantlistEntry.codec().stream(reader, `${prefix}entries[].`, reader.uint32(), {
280
304
  limits: opts.limits?.entries$
281
305
  })) {
282
306
  yield {
@@ -291,7 +315,7 @@ export namespace Wantlist {
291
315
  }
292
316
  case 2: {
293
317
  yield {
294
- field: `${prefix}.full`,
318
+ field: `${prefix}full`,
295
319
  value: reader.bool()
296
320
  }
297
321
  break
@@ -302,6 +326,14 @@ export namespace Wantlist {
302
326
  }
303
327
  }
304
328
  }
329
+
330
+ if (prefix !== '.') {
331
+ yield {
332
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
333
+ type: 'end',
334
+ message: 'Wantlist'
335
+ }
336
+ }
305
337
  })
306
338
  }
307
339
 
@@ -309,37 +341,51 @@ export namespace Wantlist {
309
341
  }
310
342
 
311
343
  export interface WantlistEntriesCidFieldEvent {
312
- field: '$.entries[].cid'
344
+ field: '.entries[].cid'
313
345
  value: Uint8Array<ArrayBuffer>
314
346
  index: number
315
347
  }
316
348
 
317
349
  export interface WantlistEntriesPriorityFieldEvent {
318
- field: '$.entries[].priority'
350
+ field: '.entries[].priority'
319
351
  value: number
320
352
  index: number
321
353
  }
322
354
 
323
355
  export interface WantlistEntriesCancelFieldEvent {
324
- field: '$.entries[].cancel'
356
+ field: '.entries[].cancel'
325
357
  value: boolean
326
358
  index: number
327
359
  }
328
360
 
329
361
  export interface WantlistEntriesWantTypeFieldEvent {
330
- field: '$.entries[].wantType'
362
+ field: '.entries[].wantType'
331
363
  value: WantType
332
364
  index: number
333
365
  }
334
366
 
335
367
  export interface WantlistEntriesSendDontHaveFieldEvent {
336
- field: '$.entries[].sendDontHave'
368
+ field: '.entries[].sendDontHave'
337
369
  value: boolean
338
370
  index: number
339
371
  }
340
372
 
373
+ export interface WantlistEntriesMessageStartEvent {
374
+ field: '.entries[]'
375
+ index: number
376
+ type: 'start'
377
+ message: string
378
+ }
379
+
380
+ export interface WantlistEntriesMessageEndEvent {
381
+ field: '.entries[]'
382
+ index: number
383
+ type: 'end'
384
+ message: string
385
+ }
386
+
341
387
  export interface WantlistFullFieldEvent {
342
- field: '$.full'
388
+ field: '.full'
343
389
  value: boolean
344
390
  }
345
391
 
@@ -351,7 +397,7 @@ export namespace Wantlist {
351
397
  return decodeMessage(buf, Wantlist.codec(), opts)
352
398
  }
353
399
 
354
- export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Wantlist>): Generator<WantlistEntriesCidFieldEvent | WantlistEntriesPriorityFieldEvent | WantlistEntriesCancelFieldEvent | WantlistEntriesWantTypeFieldEvent | WantlistEntriesSendDontHaveFieldEvent | WantlistFullFieldEvent> {
400
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Wantlist>): Generator<WantlistEntriesCidFieldEvent | WantlistEntriesPriorityFieldEvent | WantlistEntriesCancelFieldEvent | WantlistEntriesWantTypeFieldEvent | WantlistEntriesSendDontHaveFieldEvent | WantlistEntriesMessageStartEvent | WantlistEntriesMessageEndEvent | WantlistFullFieldEvent> {
355
401
  return streamMessage(buf, Wantlist.codec(), opts)
356
402
  }
357
403
  }
@@ -412,23 +458,31 @@ export namespace Block {
412
458
  }
413
459
 
414
460
  return obj
415
- }, function * (reader, length, prefix, opts = {}) {
461
+ }, function * (reader, prefix, length, opts = {}) {
416
462
  const end = length == null ? reader.len : reader.pos + length
417
463
 
464
+ if (prefix !== '.') {
465
+ yield {
466
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
467
+ type: 'start',
468
+ message: 'Block'
469
+ }
470
+ }
471
+
418
472
  while (reader.pos < end) {
419
473
  const tag = reader.uint32()
420
474
 
421
475
  switch (tag >>> 3) {
422
476
  case 1: {
423
477
  yield {
424
- field: `${prefix}.prefix`,
478
+ field: `${prefix}prefix`,
425
479
  value: reader.bytes()
426
480
  }
427
481
  break
428
482
  }
429
483
  case 2: {
430
484
  yield {
431
- field: `${prefix}.data`,
485
+ field: `${prefix}data`,
432
486
  value: reader.bytes()
433
487
  }
434
488
  break
@@ -439,6 +493,14 @@ export namespace Block {
439
493
  }
440
494
  }
441
495
  }
496
+
497
+ if (prefix !== '.') {
498
+ yield {
499
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
500
+ type: 'end',
501
+ message: 'Block'
502
+ }
503
+ }
442
504
  })
443
505
  }
444
506
 
@@ -446,12 +508,12 @@ export namespace Block {
446
508
  }
447
509
 
448
510
  export interface BlockPrefixFieldEvent {
449
- field: '$.prefix'
511
+ field: '.prefix'
450
512
  value: Uint8Array<ArrayBuffer>
451
513
  }
452
514
 
453
515
  export interface BlockDataFieldEvent {
454
- field: '$.data'
516
+ field: '.data'
455
517
  value: Uint8Array<ArrayBuffer>
456
518
  }
457
519
 
@@ -540,23 +602,31 @@ export namespace BlockPresence {
540
602
  }
541
603
 
542
604
  return obj
543
- }, function * (reader, length, prefix, opts = {}) {
605
+ }, function * (reader, prefix, length, opts = {}) {
544
606
  const end = length == null ? reader.len : reader.pos + length
545
607
 
608
+ if (prefix !== '.') {
609
+ yield {
610
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
611
+ type: 'start',
612
+ message: 'BlockPresence'
613
+ }
614
+ }
615
+
546
616
  while (reader.pos < end) {
547
617
  const tag = reader.uint32()
548
618
 
549
619
  switch (tag >>> 3) {
550
620
  case 1: {
551
621
  yield {
552
- field: `${prefix}.cid`,
622
+ field: `${prefix}cid`,
553
623
  value: reader.bytes()
554
624
  }
555
625
  break
556
626
  }
557
627
  case 2: {
558
628
  yield {
559
- field: `${prefix}.type`,
629
+ field: `${prefix}type`,
560
630
  value: BlockPresenceType.codec().decode(reader)
561
631
  }
562
632
  break
@@ -567,6 +637,14 @@ export namespace BlockPresence {
567
637
  }
568
638
  }
569
639
  }
640
+
641
+ if (prefix !== '.') {
642
+ yield {
643
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
644
+ type: 'end',
645
+ message: 'BlockPresence'
646
+ }
647
+ }
570
648
  })
571
649
  }
572
650
 
@@ -574,12 +652,12 @@ export namespace BlockPresence {
574
652
  }
575
653
 
576
654
  export interface BlockPresenceCidFieldEvent {
577
- field: '$.cid'
655
+ field: '.cid'
578
656
  value: Uint8Array<ArrayBuffer>
579
657
  }
580
658
 
581
659
  export interface BlockPresenceTypeFieldEvent {
582
- field: '$.type'
660
+ field: '.type'
583
661
  value: BlockPresenceType
584
662
  }
585
663
 
@@ -691,7 +769,7 @@ export namespace BitswapMessage {
691
769
  }
692
770
 
693
771
  return obj
694
- }, function * (reader, length, prefix, opts = {}) {
772
+ }, function * (reader, prefix, length, opts = {}) {
695
773
  const obj = {
696
774
  blocks: 0,
697
775
  blockPresences: 0
@@ -699,12 +777,20 @@ export namespace BitswapMessage {
699
777
 
700
778
  const end = length == null ? reader.len : reader.pos + length
701
779
 
780
+ if (prefix !== '.') {
781
+ yield {
782
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
783
+ type: 'start',
784
+ message: 'BitswapMessage'
785
+ }
786
+ }
787
+
702
788
  while (reader.pos < end) {
703
789
  const tag = reader.uint32()
704
790
 
705
791
  switch (tag >>> 3) {
706
792
  case 1: {
707
- yield * Wantlist.codec().stream(reader, reader.uint32(), `${prefix}.wantlist`, {
793
+ yield * Wantlist.codec().stream(reader, `${prefix}wantlist.`, reader.uint32(), {
708
794
  limits: opts.limits?.wantlist
709
795
  })
710
796
 
@@ -715,7 +801,7 @@ export namespace BitswapMessage {
715
801
  throw new MaxLengthError('Streaming decode error - repeated field "blocks" had too many elements')
716
802
  }
717
803
 
718
- for (const evt of Block.codec().stream(reader, reader.uint32(), `${prefix}.blocks[]`, {
804
+ for (const evt of Block.codec().stream(reader, `${prefix}blocks[].`, reader.uint32(), {
719
805
  limits: opts.limits?.blocks$
720
806
  })) {
721
807
  yield {
@@ -733,7 +819,7 @@ export namespace BitswapMessage {
733
819
  throw new MaxLengthError('Streaming decode error - repeated field "blockPresences" had too many elements')
734
820
  }
735
821
 
736
- for (const evt of BlockPresence.codec().stream(reader, reader.uint32(), `${prefix}.blockPresences[]`, {
822
+ for (const evt of BlockPresence.codec().stream(reader, `${prefix}blockPresences[].`, reader.uint32(), {
737
823
  limits: opts.limits?.blockPresences$
738
824
  })) {
739
825
  yield {
@@ -748,7 +834,7 @@ export namespace BitswapMessage {
748
834
  }
749
835
  case 5: {
750
836
  yield {
751
- field: `${prefix}.pendingBytes`,
837
+ field: `${prefix}pendingBytes`,
752
838
  value: reader.int32()
753
839
  }
754
840
  break
@@ -759,73 +845,133 @@ export namespace BitswapMessage {
759
845
  }
760
846
  }
761
847
  }
848
+
849
+ if (prefix !== '.') {
850
+ yield {
851
+ field: prefix.endsWith('.') ? prefix.substring(0, prefix.length - 1) : prefix,
852
+ type: 'end',
853
+ message: 'BitswapMessage'
854
+ }
855
+ }
762
856
  })
763
857
  }
764
858
 
765
859
  return _codec
766
860
  }
767
861
 
862
+ export interface BitswapMessageWantlistMessageStart {
863
+ field: '.wantlist'
864
+ type: 'start'
865
+ }
866
+
867
+ export interface BitswapMessageWantlistMessageEnd {
868
+ field: '.wantlist'
869
+ type: 'end'
870
+ }
871
+
768
872
  export interface BitswapMessageWantlistEntriesCidFieldEvent {
769
- field: '$.wantlist.entries[].cid'
873
+ field: '.wantlist.entries[].cid'
770
874
  value: Uint8Array<ArrayBuffer>
771
875
  index: number
772
876
  }
773
877
 
774
878
  export interface BitswapMessageWantlistEntriesPriorityFieldEvent {
775
- field: '$.wantlist.entries[].priority'
879
+ field: '.wantlist.entries[].priority'
776
880
  value: number
777
881
  index: number
778
882
  }
779
883
 
780
884
  export interface BitswapMessageWantlistEntriesCancelFieldEvent {
781
- field: '$.wantlist.entries[].cancel'
885
+ field: '.wantlist.entries[].cancel'
782
886
  value: boolean
783
887
  index: number
784
888
  }
785
889
 
786
890
  export interface BitswapMessageWantlistEntriesWantTypeFieldEvent {
787
- field: '$.wantlist.entries[].wantType'
891
+ field: '.wantlist.entries[].wantType'
788
892
  value: WantType
789
893
  index: number
790
894
  }
791
895
 
792
896
  export interface BitswapMessageWantlistEntriesSendDontHaveFieldEvent {
793
- field: '$.wantlist.entries[].sendDontHave'
897
+ field: '.wantlist.entries[].sendDontHave'
794
898
  value: boolean
795
899
  index: number
796
900
  }
797
901
 
902
+ export interface BitswapMessageWantlistEntriesMessageStartEvent {
903
+ field: '.wantlist.entries[]'
904
+ index: number
905
+ type: 'start'
906
+ message: string
907
+ }
908
+
909
+ export interface BitswapMessageWantlistEntriesMessageEndEvent {
910
+ field: '.wantlist.entries[]'
911
+ index: number
912
+ type: 'end'
913
+ message: string
914
+ }
915
+
798
916
  export interface BitswapMessageWantlistFullFieldEvent {
799
- field: '$.wantlist.full'
917
+ field: '.wantlist.full'
800
918
  value: boolean
801
919
  }
802
920
 
803
921
  export interface BitswapMessageBlocksPrefixFieldEvent {
804
- field: '$.blocks[].prefix'
922
+ field: '.blocks[].prefix'
805
923
  value: Uint8Array<ArrayBuffer>
806
924
  index: number
807
925
  }
808
926
 
809
927
  export interface BitswapMessageBlocksDataFieldEvent {
810
- field: '$.blocks[].data'
928
+ field: '.blocks[].data'
811
929
  value: Uint8Array<ArrayBuffer>
812
930
  index: number
813
931
  }
814
932
 
933
+ export interface BitswapMessageBlocksMessageStartEvent {
934
+ field: '.blocks[]'
935
+ index: number
936
+ type: 'start'
937
+ message: string
938
+ }
939
+
940
+ export interface BitswapMessageBlocksMessageEndEvent {
941
+ field: '.blocks[]'
942
+ index: number
943
+ type: 'end'
944
+ message: string
945
+ }
946
+
815
947
  export interface BitswapMessageBlockPresencesCidFieldEvent {
816
- field: '$.blockPresences[].cid'
948
+ field: '.blockPresences[].cid'
817
949
  value: Uint8Array<ArrayBuffer>
818
950
  index: number
819
951
  }
820
952
 
821
953
  export interface BitswapMessageBlockPresencesTypeFieldEvent {
822
- field: '$.blockPresences[].type'
954
+ field: '.blockPresences[].type'
823
955
  value: BlockPresenceType
824
956
  index: number
825
957
  }
826
958
 
959
+ export interface BitswapMessageBlockPresencesMessageStartEvent {
960
+ field: '.blockPresences[]'
961
+ index: number
962
+ type: 'start'
963
+ message: string
964
+ }
965
+
966
+ export interface BitswapMessageBlockPresencesMessageEndEvent {
967
+ field: '.blockPresences[]'
968
+ index: number
969
+ type: 'end'
970
+ message: string
971
+ }
972
+
827
973
  export interface BitswapMessagePendingBytesFieldEvent {
828
- field: '$.pendingBytes'
974
+ field: '.pendingBytes'
829
975
  value: number
830
976
  }
831
977
 
@@ -837,7 +983,7 @@ export namespace BitswapMessage {
837
983
  return decodeMessage(buf, BitswapMessage.codec(), opts)
838
984
  }
839
985
 
840
- export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<BitswapMessage>): Generator<BitswapMessageWantlistEntriesCidFieldEvent | BitswapMessageWantlistEntriesPriorityFieldEvent | BitswapMessageWantlistEntriesCancelFieldEvent | BitswapMessageWantlistEntriesWantTypeFieldEvent | BitswapMessageWantlistEntriesSendDontHaveFieldEvent | BitswapMessageWantlistFullFieldEvent | BitswapMessageBlocksPrefixFieldEvent | BitswapMessageBlocksDataFieldEvent | BitswapMessageBlockPresencesCidFieldEvent | BitswapMessageBlockPresencesTypeFieldEvent | BitswapMessagePendingBytesFieldEvent> {
986
+ export function stream (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<BitswapMessage>): Generator<BitswapMessageWantlistMessageStart | BitswapMessageWantlistMessageEnd | BitswapMessageWantlistEntriesCidFieldEvent | BitswapMessageWantlistEntriesPriorityFieldEvent | BitswapMessageWantlistEntriesCancelFieldEvent | BitswapMessageWantlistEntriesWantTypeFieldEvent | BitswapMessageWantlistEntriesSendDontHaveFieldEvent | BitswapMessageWantlistEntriesMessageStartEvent | BitswapMessageWantlistEntriesMessageEndEvent | BitswapMessageWantlistFullFieldEvent | BitswapMessageBlocksPrefixFieldEvent | BitswapMessageBlocksDataFieldEvent | BitswapMessageBlocksMessageStartEvent | BitswapMessageBlocksMessageEndEvent | BitswapMessageBlockPresencesCidFieldEvent | BitswapMessageBlockPresencesTypeFieldEvent | BitswapMessageBlockPresencesMessageStartEvent | BitswapMessageBlockPresencesMessageEndEvent | BitswapMessagePendingBytesFieldEvent> {
841
987
  return streamMessage(buf, BitswapMessage.codec(), opts)
842
988
  }
843
989
  }