@peerbit/stream-interface 6.0.1-dac5207 → 6.0.2

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,5 +1,6 @@
1
+ import { BinaryWriter } from "@dao-xyz/borsh";
1
2
  import type { PeerId } from "@libp2p/interface";
2
- import { PublicSignKey, SignatureWithKey } from "@peerbit/crypto";
3
+ import { PreHash, PublicSignKey, SignatureWithKey } from "@peerbit/crypto";
3
4
  import { Uint8ArrayList } from "uint8arraylist";
4
5
  import { type PeerRefs } from "./keys.js";
5
6
  export declare const ID_LENGTH = 32;
@@ -13,6 +14,11 @@ export declare const deliveryModeHasReceiver: (mode: DeliveryMode) => mode is {
13
14
  };
14
15
  export declare abstract class DeliveryMode {
15
16
  }
17
+ export declare const isAcknowledgedDeliveryMode: (mode: DeliveryMode) => mode is AcknowledgeDelivery | AcknowledgeAnyWhere;
18
+ export declare const getDeliveryHopTrace: (mode: DeliveryMode) => string[];
19
+ export declare const hasDeliveryHop: (mode: DeliveryMode, hash: string) => boolean;
20
+ export declare const setDeliveryOriginHop: (mode: DeliveryMode, hash: string) => DeliveryMode;
21
+ export declare const appendDeliveryHop: (mode: DeliveryMode, hash: string) => DeliveryMode;
16
22
  /**
17
23
  * when you just want to deliver at paths, but does not expect acknowledgement
18
24
  */
@@ -30,9 +36,11 @@ export declare class SilentDelivery extends DeliveryMode {
30
36
  export declare class AcknowledgeDelivery extends DeliveryMode {
31
37
  to: string[];
32
38
  redundancy: number;
39
+ hops: string[];
33
40
  constructor(properties: {
34
41
  to: PeerRefs;
35
42
  redundancy: number;
43
+ hops?: string[];
36
44
  });
37
45
  }
38
46
  /**
@@ -43,8 +51,10 @@ export declare class AcknowledgeDelivery extends DeliveryMode {
43
51
  */
44
52
  export declare class AcknowledgeAnyWhere extends DeliveryMode {
45
53
  redundancy: number;
54
+ hops: string[];
46
55
  constructor(properties: {
47
56
  redundancy: number;
57
+ hops?: string[];
48
58
  });
49
59
  }
50
60
  /**
@@ -90,6 +100,7 @@ export type IdOptions = {
90
100
  export type WithExtraSigners = {
91
101
  extraSigners?: ((data: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey)[];
92
102
  };
103
+ export declare const ACK_CONTROL_PRIORITY = 3;
93
104
  export declare class MessageHeader<T extends DeliveryMode = DeliveryMode> {
94
105
  private _id;
95
106
  timestamp: bigint;
@@ -111,12 +122,20 @@ export declare class MessageHeader<T extends DeliveryMode = DeliveryMode> {
111
122
  });
112
123
  get id(): Uint8Array<ArrayBufferLike>;
113
124
  get origin(): MultiAddrinfo | undefined;
125
+ writeBytes(writer: BinaryWriter, properties: {
126
+ includeMode: boolean;
127
+ includeSignatures: boolean;
128
+ }): void;
114
129
  verify(): boolean;
115
130
  }
116
131
  export declare abstract class Message<T extends DeliveryMode = DeliveryMode> {
117
- static from(bytes: Uint8ArrayList): DataMessage<SilentDelivery | AcknowledgeDelivery | AcknowledgeAnyWhere | AnyWhere> | ACK | Hello | Goodbye;
132
+ protected _cachedSignableBytes?: Uint8Array;
133
+ protected _cachedPreparedSignableBytes?: Map<number, Uint8Array>;
134
+ static from(bytes: Uint8ArrayList): DataMessage<AcknowledgeDelivery | AcknowledgeAnyWhere | SilentDelivery | AnyWhere> | ACK | Hello | Goodbye;
118
135
  abstract get header(): MessageHeader<T>;
119
136
  sign(signer: (bytes: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey): Promise<this>;
137
+ getSignableBytes(): Uint8Array;
138
+ getPreparedSignableBytes(prehash: PreHash): Promise<Uint8Array>;
120
139
  abstract bytes(): Uint8ArrayList | Uint8Array;
121
140
  _verified: boolean;
122
141
  verify(expectSignatures: boolean): Promise<boolean>;
@@ -124,15 +143,21 @@ export declare abstract class Message<T extends DeliveryMode = DeliveryMode> {
124
143
  export declare class DataMessage<T extends SilentDelivery | AcknowledgeDelivery | AcknowledgeAnyWhere | AnyWhere = SilentDelivery | AcknowledgeDelivery | AcknowledgeAnyWhere | AnyWhere> extends Message<T> {
125
144
  private _header;
126
145
  private _data?;
146
+ private _dataBytes?;
127
147
  constructor(properties: {
128
148
  header: MessageHeader<T>;
129
- data?: Uint8Array;
149
+ data?: Uint8Array | Uint8ArrayList;
130
150
  });
131
151
  get id(): Uint8Array;
132
152
  get header(): MessageHeader<T>;
133
153
  get data(): Uint8Array | undefined;
154
+ get dataByteLength(): number;
155
+ get hasData(): boolean;
134
156
  /** Manually ser/der for performance gains */
135
- bytes(): Uint8Array<ArrayBufferLike>;
157
+ bytes(): Uint8ArrayList | Uint8Array<ArrayBufferLike>;
158
+ getSignableBytes(): Uint8Array;
159
+ private setDataSource;
160
+ private serializeBytes;
136
161
  static from(bytes: Uint8ArrayList): DataMessage;
137
162
  }
138
163
  export declare const getMessageExpiresAt: (message: Message | DataMessage) => number;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"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"}
@@ -32,8 +32,8 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
32
32
  }
33
33
  return useValue ? value : void 0;
34
34
  };
35
- import { deserialize, field, fixedArray, option, serialize, variant, vec, } from "@dao-xyz/borsh";
36
- import { PublicSignKey, SignatureWithKey, randomBytes, toBase64, verify, } from "@peerbit/crypto";
35
+ import { BinaryWriter, deserialize, field, fixedArray, option, serialize, variant, vec, } from "@dao-xyz/borsh";
36
+ import { PreHash, PublicSignKey, SignatureWithKey, prehashFn, randomBytes, toBase64, verifyPrepared, } from "@peerbit/crypto";
37
37
  import { Uint8ArrayList } from "uint8arraylist";
38
38
  import { coercePeerRefsToHashes } from "./keys.js";
39
39
  export const ID_LENGTH = 32;
@@ -59,6 +59,25 @@ export const deliveryModeHasReceiver = (mode) => {
59
59
  };
60
60
  export class DeliveryMode {
61
61
  }
62
+ export const isAcknowledgedDeliveryMode = (mode) => mode instanceof AcknowledgeDelivery || mode instanceof AcknowledgeAnyWhere;
63
+ export const getDeliveryHopTrace = (mode) => isAcknowledgedDeliveryMode(mode) ? mode.hops : [];
64
+ export const hasDeliveryHop = (mode, hash) => isAcknowledgedDeliveryMode(mode) && mode.hops.includes(hash);
65
+ export const setDeliveryOriginHop = (mode, hash) => {
66
+ if (isAcknowledgedDeliveryMode(mode)) {
67
+ mode.hops = [hash];
68
+ }
69
+ return mode;
70
+ };
71
+ export const appendDeliveryHop = (mode, hash) => {
72
+ if (!isAcknowledgedDeliveryMode(mode)) {
73
+ return mode;
74
+ }
75
+ if (mode.hops.includes(hash)) {
76
+ return mode;
77
+ }
78
+ mode.hops = [...mode.hops, hash];
79
+ return mode;
80
+ };
62
81
  /**
63
82
  * when you just want to deliver at paths, but does not expect acknowledgement
64
83
  */
@@ -114,14 +133,19 @@ let AcknowledgeDelivery = (() => {
114
133
  let _redundancy_decorators;
115
134
  let _redundancy_initializers = [];
116
135
  let _redundancy_extraInitializers = [];
136
+ let _hops_decorators;
137
+ let _hops_initializers = [];
138
+ let _hops_extraInitializers = [];
117
139
  var AcknowledgeDelivery = class extends _classSuper {
118
140
  static { _classThis = this; }
119
141
  static {
120
142
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
121
143
  _to_decorators = [field({ type: vec("string") })];
122
144
  _redundancy_decorators = [field({ type: "u8" })];
145
+ _hops_decorators = [field({ type: vec("string") })];
123
146
  __esDecorate(null, null, _to_decorators, { kind: "field", name: "to", static: false, private: false, access: { has: obj => "to" in obj, get: obj => obj.to, set: (obj, value) => { obj.to = value; } }, metadata: _metadata }, _to_initializers, _to_extraInitializers);
124
147
  __esDecorate(null, null, _redundancy_decorators, { kind: "field", name: "redundancy", static: false, private: false, access: { has: obj => "redundancy" in obj, get: obj => obj.redundancy, set: (obj, value) => { obj.redundancy = value; } }, metadata: _metadata }, _redundancy_initializers, _redundancy_extraInitializers);
148
+ __esDecorate(null, null, _hops_decorators, { kind: "field", name: "hops", static: false, private: false, access: { has: obj => "hops" in obj, get: obj => obj.hops, set: (obj, value) => { obj.hops = value; } }, metadata: _metadata }, _hops_initializers, _hops_extraInitializers);
125
149
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
126
150
  AcknowledgeDelivery = _classThis = _classDescriptor.value;
127
151
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -129,15 +153,17 @@ let AcknowledgeDelivery = (() => {
129
153
  }
130
154
  to = __runInitializers(this, _to_initializers, void 0);
131
155
  redundancy = (__runInitializers(this, _to_extraInitializers), __runInitializers(this, _redundancy_initializers, void 0));
156
+ hops = (__runInitializers(this, _redundancy_extraInitializers), __runInitializers(this, _hops_initializers, void 0));
132
157
  constructor(properties) {
133
158
  super();
134
- __runInitializers(this, _redundancy_extraInitializers);
159
+ __runInitializers(this, _hops_extraInitializers);
135
160
  const to = coercePeerRefsToHashes(properties.to);
136
161
  if (to.length === 0) {
137
162
  throw new Error("Invalud value of property 'to', expecting either undefined or an array with more than one element");
138
163
  }
139
164
  this.to = to;
140
165
  this.redundancy = properties.redundancy;
166
+ this.hops = properties.hops ?? [];
141
167
  }
142
168
  };
143
169
  return AcknowledgeDelivery = _classThis;
@@ -158,22 +184,29 @@ let AcknowledgeAnyWhere = (() => {
158
184
  let _redundancy_decorators;
159
185
  let _redundancy_initializers = [];
160
186
  let _redundancy_extraInitializers = [];
187
+ let _hops_decorators;
188
+ let _hops_initializers = [];
189
+ let _hops_extraInitializers = [];
161
190
  var AcknowledgeAnyWhere = class extends _classSuper {
162
191
  static { _classThis = this; }
163
192
  static {
164
193
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
165
194
  _redundancy_decorators = [field({ type: "u8" })];
195
+ _hops_decorators = [field({ type: vec("string") })];
166
196
  __esDecorate(null, null, _redundancy_decorators, { kind: "field", name: "redundancy", static: false, private: false, access: { has: obj => "redundancy" in obj, get: obj => obj.redundancy, set: (obj, value) => { obj.redundancy = value; } }, metadata: _metadata }, _redundancy_initializers, _redundancy_extraInitializers);
197
+ __esDecorate(null, null, _hops_decorators, { kind: "field", name: "hops", static: false, private: false, access: { has: obj => "hops" in obj, get: obj => obj.hops, set: (obj, value) => { obj.hops = value; } }, metadata: _metadata }, _hops_initializers, _hops_extraInitializers);
167
198
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
168
199
  AcknowledgeAnyWhere = _classThis = _classDescriptor.value;
169
200
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
170
201
  __runInitializers(_classThis, _classExtraInitializers);
171
202
  }
172
203
  redundancy = __runInitializers(this, _redundancy_initializers, void 0);
204
+ hops = (__runInitializers(this, _redundancy_extraInitializers), __runInitializers(this, _hops_initializers, void 0));
173
205
  constructor(properties) {
174
206
  super();
175
- __runInitializers(this, _redundancy_extraInitializers);
207
+ __runInitializers(this, _hops_extraInitializers);
176
208
  this.redundancy = properties.redundancy;
209
+ this.hops = properties.hops ?? [];
177
210
  }
178
211
  };
179
212
  return AcknowledgeAnyWhere = _classThis;
@@ -299,6 +332,8 @@ let MultiAddrinfo = (() => {
299
332
  return MultiAddrinfo = _classThis;
300
333
  })();
301
334
  export { MultiAddrinfo };
335
+ // Control-path responses like ACKs should be able to cut through congested data lanes.
336
+ export const ACK_CONTROL_PRIORITY = 3;
302
337
  const getDefaultPriorityFromMode = (mode) => {
303
338
  if (mode instanceof SilentDelivery) {
304
339
  return 0;
@@ -313,10 +348,17 @@ const getDefaultPriorityFromMode = (mode) => {
313
348
  return 1;
314
349
  }
315
350
  if (mode instanceof TracedDelivery) {
316
- return 1;
351
+ return ACK_CONTROL_PRIORITY;
317
352
  }
318
353
  throw new Error("Unexpected mode: " + mode.constructor.name);
319
354
  };
355
+ const getDefaultResponsePriorityFromMode = (mode) => {
356
+ if (mode instanceof AcknowledgeAnyWhere ||
357
+ mode instanceof AcknowledgeDelivery) {
358
+ return ACK_CONTROL_PRIORITY;
359
+ }
360
+ return undefined;
361
+ };
320
362
  let MessageHeader = (() => {
321
363
  let _classDecorators = [variant(0)];
322
364
  let _classDescriptor;
@@ -403,7 +445,10 @@ let MessageHeader = (() => {
403
445
  properties.priority != null
404
446
  ? properties.priority
405
447
  : getDefaultPriorityFromMode(this.mode);
406
- this.responsePriority = properties.responsePriority;
448
+ this.responsePriority =
449
+ properties.responsePriority != null
450
+ ? properties.responsePriority
451
+ : getDefaultResponsePriorityFromMode(this.mode);
407
452
  }
408
453
  get id() {
409
454
  return this._id;
@@ -411,6 +456,48 @@ let MessageHeader = (() => {
411
456
  get origin() {
412
457
  return this._origin;
413
458
  }
459
+ writeBytes(writer, properties) {
460
+ writer.u8(0);
461
+ BinaryWriter.uint8ArrayFixed(this._id, writer);
462
+ writer.u64(this.timestamp);
463
+ writer.u64(this.session);
464
+ writer.u64(this.expires);
465
+ if (this.priority != null) {
466
+ writer.u8(1);
467
+ writer.u32(this.priority);
468
+ }
469
+ else {
470
+ writer.u8(0);
471
+ }
472
+ if (this.responsePriority != null) {
473
+ writer.u8(1);
474
+ writer.u32(this.responsePriority);
475
+ }
476
+ else {
477
+ writer.u8(0);
478
+ }
479
+ if (this._origin != null) {
480
+ writer.u8(1);
481
+ serialize(this._origin, writer);
482
+ }
483
+ else {
484
+ writer.u8(0);
485
+ }
486
+ if (properties.includeMode && this.mode != null) {
487
+ writer.u8(1);
488
+ serialize(this.mode, writer);
489
+ }
490
+ else {
491
+ writer.u8(0);
492
+ }
493
+ if (properties.includeSignatures && this.signatures != null) {
494
+ writer.u8(1);
495
+ serialize(this.signatures, writer);
496
+ }
497
+ else {
498
+ writer.u8(0);
499
+ }
500
+ }
414
501
  verify() {
415
502
  return this.expires >= +new Date();
416
503
  }
@@ -418,18 +505,21 @@ let MessageHeader = (() => {
418
505
  return MessageHeader = _classThis;
419
506
  })();
420
507
  export { MessageHeader };
421
- const sign = async (obj, signer) => {
508
+ const serializeUnsigned = (obj) => {
422
509
  const mode = obj.header.mode;
423
510
  obj.header.mode = undefined;
424
511
  const signatures = obj.header.signatures;
425
512
  obj.header.signatures = undefined;
426
513
  const bytes = serialize(obj);
427
- // reassign properties if some other process expects them
428
514
  obj.header.signatures = signatures;
429
515
  obj.header.mode = mode;
516
+ return bytes;
517
+ };
518
+ const sign = async (obj, signer) => {
519
+ const bytes = obj instanceof Message ? obj.getSignableBytes() : serializeUnsigned(obj);
520
+ const signatures = obj.header.signatures;
430
521
  const signature = await signer(bytes);
431
522
  obj.header.signatures = new Signatures(signatures ? [...signatures.signatures, signature] : [signature]);
432
- obj.header.mode = mode;
433
523
  return obj;
434
524
  };
435
525
  const verifyMultiSig = async (message, expectSignatures) => {
@@ -437,20 +527,28 @@ const verifyMultiSig = async (message, expectSignatures) => {
437
527
  if (!signatures || signatures.signatures.length === 0) {
438
528
  return !expectSignatures;
439
529
  }
440
- const to = message.header.mode;
441
- message.header.mode = undefined;
442
- message.header.signatures = undefined;
443
- const bytes = serialize(message);
444
- message.header.mode = to;
445
- message.header.signatures = signatures;
530
+ const bytes = message instanceof Message
531
+ ? message.getSignableBytes()
532
+ : serializeUnsigned(message);
533
+ const preparedByPrehash = new Map();
446
534
  for (const signature of signatures.signatures) {
447
- if (!(await verify(signature, bytes))) {
535
+ let prepared = preparedByPrehash.get(signature.prehash);
536
+ if (!prepared) {
537
+ prepared =
538
+ signature.prehash === PreHash.NONE
539
+ ? bytes
540
+ : await prehashFn(bytes, signature.prehash);
541
+ preparedByPrehash.set(signature.prehash, prepared);
542
+ }
543
+ if (!(await verifyPrepared(signature, prepared))) {
448
544
  return false;
449
545
  }
450
546
  }
451
547
  return true;
452
548
  };
453
549
  export class Message {
550
+ _cachedSignableBytes;
551
+ _cachedPreparedSignableBytes;
454
552
  static from(bytes) {
455
553
  if (bytes.get(0) === DATA_VARIANT) {
456
554
  // Data
@@ -470,6 +568,25 @@ export class Message {
470
568
  async sign(signer) {
471
569
  return sign(this, signer);
472
570
  }
571
+ getSignableBytes() {
572
+ return (this._cachedSignableBytes ??
573
+ (this._cachedSignableBytes = serializeUnsigned(this)));
574
+ }
575
+ async getPreparedSignableBytes(prehash) {
576
+ if (prehash === PreHash.NONE) {
577
+ return this.getSignableBytes();
578
+ }
579
+ let prepared = this._cachedPreparedSignableBytes?.get(prehash);
580
+ if (prepared) {
581
+ return prepared;
582
+ }
583
+ prepared = await prehashFn(this.getSignableBytes(), prehash);
584
+ if (!this._cachedPreparedSignableBytes) {
585
+ this._cachedPreparedSignableBytes = new Map();
586
+ }
587
+ this._cachedPreparedSignableBytes.set(prehash, prepared);
588
+ return prepared;
589
+ }
473
590
  /* abstract equals(other: Message): boolean; */
474
591
  _verified;
475
592
  async verify(expectSignatures) {
@@ -482,6 +599,131 @@ export class Message {
482
599
  }
483
600
  // I pack data with this message
484
601
  const DATA_VARIANT = 0;
602
+ const readU8At = (bytes, offset) => bytes.get(offset);
603
+ const readU32LEAt = (bytes, offset) => bytes.getUint32(offset, true);
604
+ const skipBorshBytes = (bytes, offset) => {
605
+ const length = readU32LEAt(bytes, offset);
606
+ return offset + 4 + length;
607
+ };
608
+ const skipBorshString = (bytes, offset) => skipBorshBytes(bytes, offset);
609
+ const skipStringVec = (bytes, offset) => {
610
+ const length = readU32LEAt(bytes, offset);
611
+ offset += 4;
612
+ for (let i = 0; i < length; i++) {
613
+ offset = skipBorshString(bytes, offset);
614
+ }
615
+ return offset;
616
+ };
617
+ const skipPeerInfo = (bytes, offset) => {
618
+ const variant = readU8At(bytes, offset);
619
+ offset += 1;
620
+ if (variant === 0) {
621
+ return skipStringVec(bytes, offset);
622
+ }
623
+ throw new Error(`Unsupported peer info variant: ${variant}`);
624
+ };
625
+ const skipDeliveryMode = (bytes, offset) => {
626
+ const variant = readU8At(bytes, offset);
627
+ offset += 1;
628
+ if (variant === 0) {
629
+ offset = skipStringVec(bytes, offset);
630
+ return offset + 1;
631
+ }
632
+ if (variant === 1) {
633
+ offset = skipStringVec(bytes, offset);
634
+ offset += 1;
635
+ return skipStringVec(bytes, offset);
636
+ }
637
+ if (variant === 5) {
638
+ offset += 1;
639
+ return skipStringVec(bytes, offset);
640
+ }
641
+ if (variant === 3) {
642
+ return skipStringVec(bytes, offset);
643
+ }
644
+ if (variant === 4) {
645
+ return offset;
646
+ }
647
+ throw new Error(`Unsupported delivery mode variant: ${variant}`);
648
+ };
649
+ const skipPublicSignKey = (bytes, offset) => {
650
+ const variant = readU8At(bytes, offset);
651
+ offset += 1;
652
+ if (variant === 0) {
653
+ return offset + 32;
654
+ }
655
+ if (variant === 1) {
656
+ return offset + 33;
657
+ }
658
+ throw new Error(`Unsupported public sign key variant: ${variant}`);
659
+ };
660
+ const skipSignatureWithKey = (bytes, offset) => {
661
+ const variant = readU8At(bytes, offset);
662
+ if (variant !== 0) {
663
+ throw new Error(`Unsupported signature variant: ${variant}`);
664
+ }
665
+ offset += 1;
666
+ offset = skipBorshBytes(bytes, offset);
667
+ offset = skipPublicSignKey(bytes, offset);
668
+ return offset + 1;
669
+ };
670
+ const skipSignatures = (bytes, offset) => {
671
+ const variant = readU8At(bytes, offset);
672
+ if (variant !== 0) {
673
+ throw new Error(`Unsupported signatures variant: ${variant}`);
674
+ }
675
+ offset += 1;
676
+ const length = readU8At(bytes, offset);
677
+ offset += 1;
678
+ for (let i = 0; i < length; i++) {
679
+ offset = skipSignatureWithKey(bytes, offset);
680
+ }
681
+ return offset;
682
+ };
683
+ const getDataMessageDataFlagOffset = (bytes) => {
684
+ let offset = 0;
685
+ if (readU8At(bytes, offset) !== DATA_VARIANT) {
686
+ throw new Error("Unsupported");
687
+ }
688
+ offset += 1;
689
+ if (readU8At(bytes, offset) !== 0) {
690
+ throw new Error("Unsupported message header variant");
691
+ }
692
+ offset += 1;
693
+ offset += ID_LENGTH;
694
+ offset += 8 * 3;
695
+ if (readU8At(bytes, offset) === 1) {
696
+ offset += 5;
697
+ }
698
+ else {
699
+ offset += 1;
700
+ }
701
+ if (readU8At(bytes, offset) === 1) {
702
+ offset += 5;
703
+ }
704
+ else {
705
+ offset += 1;
706
+ }
707
+ if (readU8At(bytes, offset) === 1) {
708
+ offset = skipPeerInfo(bytes, offset + 1);
709
+ }
710
+ else {
711
+ offset += 1;
712
+ }
713
+ if (readU8At(bytes, offset) === 1) {
714
+ offset = skipDeliveryMode(bytes, offset + 1);
715
+ }
716
+ else {
717
+ offset += 1;
718
+ }
719
+ if (readU8At(bytes, offset) === 1) {
720
+ offset = skipSignatures(bytes, offset + 1);
721
+ }
722
+ else {
723
+ offset += 1;
724
+ }
725
+ return offset;
726
+ };
485
727
  let DataMessage = (() => {
486
728
  let _classDecorators = [variant(DATA_VARIANT)];
487
729
  let _classDescriptor;
@@ -509,11 +751,11 @@ let DataMessage = (() => {
509
751
  }
510
752
  _header = __runInitializers(this, __header_initializers, void 0);
511
753
  _data = (__runInitializers(this, __header_extraInitializers), __runInitializers(this, __data_initializers, void 0));
754
+ _dataBytes = __runInitializers(this, __data_extraInitializers);
512
755
  constructor(properties) {
513
756
  super();
514
- __runInitializers(this, __data_extraInitializers);
515
- this._data = properties.data;
516
757
  this._header = properties.header;
758
+ this.setDataSource(properties.data);
517
759
  }
518
760
  get id() {
519
761
  return this._header.id;
@@ -522,18 +764,70 @@ let DataMessage = (() => {
522
764
  return this._header;
523
765
  }
524
766
  get data() {
767
+ if (this._data == null && this._dataBytes instanceof Uint8ArrayList) {
768
+ this._data = this._dataBytes.subarray();
769
+ }
525
770
  return this._data;
526
771
  }
772
+ get dataByteLength() {
773
+ return this._dataBytes?.byteLength ?? this._data?.byteLength ?? 0;
774
+ }
775
+ get hasData() {
776
+ return this.dataByteLength > 0;
777
+ }
527
778
  /** Manually ser/der for performance gains */
528
779
  bytes() {
529
- return serialize(this);
780
+ return this.serializeBytes({
781
+ includeMode: true,
782
+ includeSignatures: true,
783
+ });
784
+ }
785
+ getSignableBytes() {
786
+ return (this._cachedSignableBytes ??
787
+ (this._cachedSignableBytes = this.serializeBytes({
788
+ includeMode: false,
789
+ includeSignatures: false,
790
+ }).subarray()));
791
+ }
792
+ setDataSource(data) {
793
+ this._dataBytes = data;
794
+ this._data = data instanceof Uint8Array ? data : undefined;
795
+ this._cachedSignableBytes = undefined;
796
+ this._cachedPreparedSignableBytes = undefined;
797
+ }
798
+ serializeBytes(properties) {
799
+ const writer = new BinaryWriter();
800
+ writer.u8(DATA_VARIANT);
801
+ this._header.writeBytes(writer, properties);
802
+ const data = this._dataBytes ?? this._data;
803
+ if (data != null) {
804
+ writer.u8(1);
805
+ writer.u32(data.byteLength);
806
+ return new Uint8ArrayList(writer.finalize(), data);
807
+ }
808
+ else {
809
+ writer.u8(0);
810
+ }
811
+ return writer.finalize();
530
812
  }
531
813
  static from(bytes) {
532
- if (bytes.get(0) !== 0) {
533
- throw new Error("Unsupported");
814
+ const dataFlagOffset = getDataMessageDataFlagOffset(bytes);
815
+ const hasData = readU8At(bytes, dataFlagOffset) === 1;
816
+ const headerOnlyBytes = hasData
817
+ ? (() => {
818
+ const prefix = bytes.subarray(0, dataFlagOffset);
819
+ const out = new Uint8Array(prefix.byteLength + 1);
820
+ out.set(prefix, 0);
821
+ out[prefix.byteLength] = 0;
822
+ return out;
823
+ })()
824
+ : bytes.subarray();
825
+ const ret = deserialize(headerOnlyBytes, DataMessage);
826
+ if (hasData) {
827
+ const dataLength = readU32LEAt(bytes, dataFlagOffset + 1);
828
+ const dataStart = dataFlagOffset + 5;
829
+ ret.setDataSource(bytes.sublist(dataStart, dataStart + dataLength));
534
830
  }
535
- const arr = bytes.subarray();
536
- const ret = deserialize(arr, DataMessage);
537
831
  return ret;
538
832
  }
539
833
  };
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EACN,WAAW,EACX,KAAK,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,GAAG,GACH,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACN,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,MAAM,GACN,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAiB,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAElE,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAE5B,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC,MAAM,wBAAwB,GAAG,IAAI,CAAC,CAAC,uEAAuE;AAE9G;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAgC,EAAE,EAAE;IAClE,iCAAiC;IACjC,gCAAgC;IAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gCAAgC;AACvE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,IAAkB,EACS,EAAE;IAC7B,IAAI,IAAI,YAAY,cAAc,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,IAAI,YAAY,mBAAmB,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,OAAgB,YAAY;CAAG;AAErC;;GAEG;IAEU,cAAc;4BAD1B,OAAO,CAAC,CAAC,CAAC;;;;sBACyB,YAAY;;;;;;;8BAApB,SAAQ,WAAY;;;;8BAC9C,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;sCAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAFtB,wJAAA,EAAE,6BAAF,EAAE,+EAAW;YAGb,gLAAA,UAAU,6BAAV,UAAU,+FAAS;YALpB,6KAYC;;;YAZY,uDAAc;;QAE1B,EAAE,qDAAW;QAGb,UAAU,+GAAS;QAEnB,YAAY,UAAgD;YAC3D,KAAK,EAAE,CAAC;;YACR,IAAI,CAAC,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;SACxC;;;;SAXW,cAAc;AAc3B;;GAEG;IAEU,mBAAmB;4BAD/B,OAAO,CAAC,CAAC,CAAC;;;;sBAC8B,YAAY;;;;;;;mCAApB,SAAQ,WAAY;;;;8BACnD,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;sCAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAFtB,wJAAA,EAAE,6BAAF,EAAE,+EAAW;YAGb,gLAAA,UAAU,6BAAV,UAAU,+FAAS;YALpB,6KAkBC;;;YAlBY,uDAAmB;;QAE/B,EAAE,qDAAW;QAGb,UAAU,+GAAS;QAEnB,YAAY,UAAgD;YAC3D,KAAK,EAAE,CAAC;;YACR,MAAM,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACd,mGAAmG,CACnG,CAAC;YACH,CAAC;YACD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;SACxC;;;;SAjBW,mBAAmB;AAoBhC;;;;;GAKG;IAEU,mBAAmB;4BAD/B,OAAO,CAAC,CAAC,CAAC;;;;sBAC8B,YAAY;;;;mCAApB,SAAQ,WAAY;;;;sCACnD,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACtB,gLAAA,UAAU,6BAAV,UAAU,+FAAS;YAFpB,6KAQC;;;YARY,uDAAmB;;QAE/B,UAAU,6DAAS;QAEnB,YAAY,UAAkC;YAC7C,KAAK,EAAE,CAAC;;YACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;SACxC;;;;SAPW,mBAAmB;AAUhC;;;GAGG;IAEU,cAAc;4BAD1B,OAAO,CAAC,CAAC,CAAC;;;;sBACyB,YAAY;;;;8BAApB,SAAQ,WAAY;;;;iCAC9C,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,iKAAA,KAAK,6BAAL,KAAK,qFAAW;YAFjB,6KAQC;;;YARY,uDAAc;;QAE1B,KAAK,wDAAW;QAEhB,YAAY,KAAe;YAC1B,KAAK,EAAE,CAAC;;YACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACnB;;;;SAPW,cAAc;IAWd,QAAQ;4BADpB,OAAO,CAAC,CAAC,CAAC;;;;sBACmB,YAAY;wBAApB,SAAQ,WAAY;;;;YAA1C,6KAA6C;;;YAAhC,uDAAQ;;;;;SAAR,QAAQ;IAGR,UAAU;4BADtB,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;sCAET,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,EAAE,CAAC;YACjE,gLAAA,UAAU,6BAAV,UAAU,+FAAqB;YAFhC,6KAkBC;;;YAlBY,uDAAU;;QAEtB,UAAU,6DAAqB;QAE/B,YAAY,aAAiC,EAAE;;YAC9C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC7B;QAED,MAAM,CAAC,KAAiB;YACvB,OAAO,CACN,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM;gBAClD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACtE,CAAC;QACH,CAAC;QAED,IAAI,UAAU;YACb,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;;;;SAjBW,UAAU;AAoBvB,MAAe,QAAQ;CAAG;IAGb,aAAa;4BADzB,OAAO,CAAC,CAAC,CAAC;;;;sBACwB,QAAQ;;;;6BAAhB,SAAQ,WAAQ;;;;sCACzC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,gLAAA,UAAU,6BAAV,UAAU,+FAAW;YAFtB,6KAQC;;;YARY,uDAAa;;QAEzB,UAAU,6DAAW;QAErB,YAAY,UAAoB;YAC/B,KAAK,EAAE,CAAC;;YACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC7B;;;;SAPW,aAAa;AAwC1B,MAAM,0BAA0B,GAAG,CAAC,IAAkB,EAAE,EAAE;IACzD,IAAI,IAAI,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,IAAI,YAAY,mBAAmB,EAAE,CAAC;QACzC,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,IAAI,YAAY,mBAAmB,EAAE,CAAC;QACzC,OAAO,CAAC,CAAC;IACV,CAAC;IACD,IAAI,IAAI,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACV,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC;IAGW,aAAa;4BADzB,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAET,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;qCAG5C,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;mCAGtB,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;mCAGtB,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;oCAItB,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;4CAK9B,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;mCAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAIjC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;sCAIrC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YA5BpC,2JAAQ,GAAG,6BAAH,GAAG,iFAAa;YAGxB,6KAAA,SAAS,6BAAT,SAAS,6FAAS;YAGlB,uKAAA,OAAO,6BAAP,OAAO,yFAAS;YAGhB,uKAAA,OAAO,6BAAP,OAAO,yFAAS;YAIhB,0KAAA,QAAQ,6BAAR,QAAQ,2FAAU;YAKlB,kMAAA,gBAAgB,6BAAhB,gBAAgB,2GAAU;YAG1B,uKAAQ,OAAO,6BAAP,OAAO,yFAAiB;YAIhC,8JAAA,IAAI,6BAAJ,IAAI,mFAAI;YAIR,gLAAA,UAAU,6BAAV,UAAU,+FAAyB;YA/BpC,6KAmEC;;;YAnEY,uDAAa;;QAEjB,GAAG,sDAAa;QAGxB,SAAS,+GAAS;QAGlB,OAAO,mHAAS;QAGhB,OAAO,iHAAS;QAEhB,sFAAsF;QAEtF,QAAQ,kHAAU;QAElB,+EAA+E;QAC/E,yDAAyD;QAEzD,gBAAgB,2HAAU;QAGlB,OAAO,0HAAiB;QAEhC,8DAA8D;QAE9D,IAAI,8GAAI;QAER,8DAA8D;QAE9D,UAAU,iHAAyB;QAEnC,YAAY,UAQX;;YACA,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,UAAU,EAAE,MAAM,CAAC;YAClC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,QAAQ;gBACZ,UAAU,CAAC,QAAQ,IAAI,IAAI;oBAC1B,CAAC,CAAC,UAAU,CAAC,QAAQ;oBACrB,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC;SACpD;QAED,IAAI,EAAE;YACL,OAAO,IAAI,CAAC,GAAG,CAAC;QACjB,CAAC;QAED,IAAI,MAAM;YACT,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QAED,MAAM;YACL,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,CAAC;;;;SAlEW,aAAa;AAyE1B,MAAM,IAAI,GAAG,KAAK,EACjB,GAAM,EACN,MAA2E,EAC9D,EAAE;IACf,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,SAAgB,CAAC;IACnC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;IACzC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,yDAAyD;IACzD,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACnC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IAEvB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,UAAU,CACrC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAChE,CAAC;IACF,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAC3B,OAAmB,EACnB,gBAAyB,EACxB,EAAE;IACH,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;IAC7C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,SAAgB,CAAC;IACvC,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACtC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;IACzB,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IAEvC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC/C,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,OAAgB,OAAO;IAC5B,MAAM,CAAC,IAAI,CAAC,KAAqB;QAChC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;YACnC,OAAO;YACP,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,mBAAmB,EAAE,CAAC;YACjD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC;YAC7C,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IAID,KAAK,CAAC,IAAI,CACT,MAA2E;QAE3E,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,+CAA+C;IAC/C,SAAS,CAAU;IAEnB,KAAK,CAAC,MAAM,CAAC,gBAAyB;QACrC,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI;YAC5B,CAAC,CAAC,IAAI,CAAC,SAAS;YAChB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;gBACf,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC5B,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;CACD;AAED,gCAAgC;AAChC,MAAM,YAAY,GAAG,CAAC,CAAC;IAGV,WAAW;4BADvB,OAAO,CAAC,YAAY,CAAC;;;;sBAWZ,OAAO;;;;;;;2BAAf,SAAQ,WAAU;;;;mCAClB,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;iCAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAFpC,uKAAQ,OAAO,6BAAP,OAAO,yFAAmB;YAGlC,iKAAQ,KAAK,6BAAL,KAAK,qFAAc;YAf5B,6KAgDC;;;YAhDY,uDAAW;;QAYf,OAAO,0DAAmB;QAG1B,KAAK,+GAAc;QAE3B,YAAY,UAA2D;YACtE,KAAK,EAAE,CAAC;;YACR,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;SACjC;QAED,IAAI,EAAE;YACL,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,MAAM;YACT,OAAO,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;QAED,IAAI,IAAI;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC;QAED,6CAA6C;QAC7C,KAAK;YACJ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAqB;YAChC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC1C,OAAO,GAAG,CAAC;QACZ,CAAC;;;;SA/CW,WAAW;AAkDxB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA8B,EAAE,EAAE,CACrE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,OAA8B,EAC9B,MAAc,IAAI,CAAC,GAAG,EAAE,EACvB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,OAA8B,EAAE,EAAE,CAChF,OAAO,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAY5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC5C,OAA8B,EACJ,EAAE,CAAC,CAAC;IAC9B,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;IACxC,gBAAgB,EAAE,8BAA8B,CAAC,OAAO,CAAC;IACzD,aAAa,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC;IACtE,mBAAmB,EAAE,CACpB,OAAwD,EACvD,EAAE,CAAC,CAAC;QACL,GAAG,OAAO;QACV,GAAG,+BAA+B,CAAC,OAAO,EAAE,OAAO,CAAC;KACpD,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC9C,OAA8B,EAC9B,SAA8C,EACT,EAAE,CAAC,CAAC;IACzC,QAAQ,EACP,SAAS,EAAE,QAAQ,IAAI,IAAI;QAC1B,CAAC,CAAC,SAAS,CAAC,QAAQ;QACpB,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC;IAC3C,SAAS,EACR,SAAS,EAAE,SAAS,IAAI,IAAI;QAC3B,CAAC,CAAC,SAAS,CAAC,SAAS;QACrB,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC;IAGjB,GAAG;4BADf,OAAO,CAAC,mBAAmB,CAAC;;;;sBACJ,OAAO;;;;;;;;;;mBAAf,SAAQ,WAAO;;;;kCAC9B,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;kDAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;uCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YALtB,oKAAA,MAAM,6BAAN,MAAM,uFAAgC;YAGtC,oNAAA,sBAAsB,6BAAtB,sBAAsB,uHAAa;YAGnC,mLAAA,WAAW,6BAAX,WAAW,iGAAS;YARrB,6KAuCC;;;YAvCY,uDAAG;;QAEf,MAAM,yDAAgC;QAGtC,sBAAsB,+HAAa;QAGnC,WAAW,oIAAS,CAAC,wEAAwE;QAE7F,YAAY,UAIX;YACA,KAAK,EAAE,CAAC;;YACR,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,sBAAsB,CAAC;YAChE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;SACzD;QAED,IAAI,EAAE;YACL,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,CAAC;QAED,KAAK;YACJ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAqB;YAChC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;YAClD,IACC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;gBACzB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAC/C,CAAC;gBACF,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;;;;SAtCW,GAAG;AAyChB,MAAM,aAAa,GAAG,CAAC,CAAC;IAGX,KAAK;4BADjB,OAAO,CAAC,aAAa,CAAC;;;;sBACI,OAAO;;;;;;;qBAAf,SAAQ,WAAO;;;;kCAChC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;kCAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAF/B,oKAAA,MAAM,6BAAN,MAAM,uFAAgB;YAGtB,oKAAA,MAAM,6BAAN,MAAM,uFAAW;YALlB,6KA8BC;;;YA9BY,uDAAK;;QAEjB,MAAM,yDAAgB;QAGtB,MAAM,+GAAW;QAEjB,YAAY,UAAgC;YAC3C,KAAK,EAAE,CAAC;;YACR,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;SAChC;QAED,IAAI,EAAE;YACL,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,CAAC;QAED,KAAK;YACJ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAqB;YAChC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;YACpD,IACC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;gBACzB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAC/C,CAAC;gBACF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;;;;SA7BW,KAAK;AAgClB,MAAM,eAAe,GAAG,CAAC,CAAC;IAGb,OAAO;4BADnB,OAAO,CAAC,eAAe,CAAC;;;;sBACI,OAAO;;;;;;;uBAAf,SAAQ,WAAO;;;;kCAClC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;mCAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAF/B,oKAAA,MAAM,6BAAN,MAAM,uFAAsD;YAG5D,uKAAA,OAAO,6BAAP,OAAO,yFAAW;YALnB,6KAiCC;;;YAjCY,uDAAO;;QAEnB,MAAM,yDAAsD;QAG5D,OAAO,gHAAW;QAElB,YAAY,UAGX;YACA,KAAK,EAAE,CAAC;;YACR,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;SAClC;QACD,IAAI,EAAE;YACL,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,CAAC;QAED,KAAK;YACJ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAqB;YAChC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;YACtD,IACC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU;gBACzB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAC/C,CAAC;gBACF,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;;;;SAhCW,OAAO"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/stream-interface",
3
- "version": "6.0.1-dac5207",
3
+ "version": "6.0.2",
4
4
  "description": "Block store streaming",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -71,7 +71,7 @@
71
71
  "@dao-xyz/borsh": "^6.0.0",
72
72
  "@libp2p/interface": "^3.1.0",
73
73
  "uint8arraylist": "^2.4.8",
74
- "@peerbit/crypto": "3.0.0-dac5207"
74
+ "@peerbit/crypto": "3.0.0"
75
75
  },
76
76
  "scripts": {
77
77
  "clean": "aegir clean",
package/src/messages.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import {
2
+ BinaryWriter,
2
3
  deserialize,
3
4
  field,
4
5
  fixedArray,
@@ -9,11 +10,13 @@ import {
9
10
  } from "@dao-xyz/borsh";
10
11
  import type { PeerId } from "@libp2p/interface";
11
12
  import {
13
+ PreHash,
12
14
  PublicSignKey,
13
15
  SignatureWithKey,
16
+ prehashFn,
14
17
  randomBytes,
15
18
  toBase64,
16
- verify,
19
+ verifyPrepared,
17
20
  } from "@peerbit/crypto";
18
21
  import { Uint8ArrayList } from "uint8arraylist";
19
22
  import { type PeerRefs, coercePeerRefsToHashes } from "./keys.js";
@@ -48,6 +51,35 @@ export const deliveryModeHasReceiver = (
48
51
 
49
52
  export abstract class DeliveryMode {}
50
53
 
54
+ export const isAcknowledgedDeliveryMode = (
55
+ mode: DeliveryMode,
56
+ ): mode is AcknowledgeDelivery | AcknowledgeAnyWhere =>
57
+ mode instanceof AcknowledgeDelivery || mode instanceof AcknowledgeAnyWhere;
58
+
59
+ export const getDeliveryHopTrace = (mode: DeliveryMode): string[] =>
60
+ isAcknowledgedDeliveryMode(mode) ? mode.hops : [];
61
+
62
+ export const hasDeliveryHop = (mode: DeliveryMode, hash: string) =>
63
+ isAcknowledgedDeliveryMode(mode) && mode.hops.includes(hash);
64
+
65
+ export const setDeliveryOriginHop = (mode: DeliveryMode, hash: string) => {
66
+ if (isAcknowledgedDeliveryMode(mode)) {
67
+ mode.hops = [hash];
68
+ }
69
+ return mode;
70
+ };
71
+
72
+ export const appendDeliveryHop = (mode: DeliveryMode, hash: string) => {
73
+ if (!isAcknowledgedDeliveryMode(mode)) {
74
+ return mode;
75
+ }
76
+ if (mode.hops.includes(hash)) {
77
+ return mode;
78
+ }
79
+ mode.hops = [...mode.hops, hash];
80
+ return mode;
81
+ };
82
+
51
83
  /**
52
84
  * when you just want to deliver at paths, but does not expect acknowledgement
53
85
  */
@@ -77,7 +109,14 @@ export class AcknowledgeDelivery extends DeliveryMode {
77
109
  @field({ type: "u8" })
78
110
  redundancy: number;
79
111
 
80
- constructor(properties: { to: PeerRefs; redundancy: number }) {
112
+ @field({ type: vec("string") })
113
+ hops: string[];
114
+
115
+ constructor(properties: {
116
+ to: PeerRefs;
117
+ redundancy: number;
118
+ hops?: string[];
119
+ }) {
81
120
  super();
82
121
  const to = coercePeerRefsToHashes(properties.to);
83
122
  if (to.length === 0) {
@@ -87,6 +126,7 @@ export class AcknowledgeDelivery extends DeliveryMode {
87
126
  }
88
127
  this.to = to;
89
128
  this.redundancy = properties.redundancy;
129
+ this.hops = properties.hops ?? [];
90
130
  }
91
131
  }
92
132
 
@@ -101,9 +141,13 @@ export class AcknowledgeAnyWhere extends DeliveryMode {
101
141
  @field({ type: "u8" })
102
142
  redundancy: number;
103
143
 
104
- constructor(properties: { redundancy: number }) {
144
+ @field({ type: vec("string") })
145
+ hops: string[];
146
+
147
+ constructor(properties: { redundancy: number; hops?: string[] }) {
105
148
  super();
106
149
  this.redundancy = properties.redundancy;
150
+ this.hops = properties.hops ?? [];
107
151
  }
108
152
  }
109
153
 
@@ -189,6 +233,9 @@ export type WithExtraSigners = {
189
233
  ) => Promise<SignatureWithKey> | SignatureWithKey)[];
190
234
  };
191
235
 
236
+ // Control-path responses like ACKs should be able to cut through congested data lanes.
237
+ export const ACK_CONTROL_PRIORITY = 3;
238
+
192
239
  const getDefaultPriorityFromMode = (mode: DeliveryMode) => {
193
240
  if (mode instanceof SilentDelivery) {
194
241
  return 0;
@@ -204,11 +251,21 @@ const getDefaultPriorityFromMode = (mode: DeliveryMode) => {
204
251
  return 1;
205
252
  }
206
253
  if (mode instanceof TracedDelivery) {
207
- return 1;
254
+ return ACK_CONTROL_PRIORITY;
208
255
  }
209
256
  throw new Error("Unexpected mode: " + mode.constructor.name);
210
257
  };
211
258
 
259
+ const getDefaultResponsePriorityFromMode = (mode: DeliveryMode) => {
260
+ if (
261
+ mode instanceof AcknowledgeAnyWhere ||
262
+ mode instanceof AcknowledgeDelivery
263
+ ) {
264
+ return ACK_CONTROL_PRIORITY;
265
+ }
266
+ return undefined;
267
+ };
268
+
212
269
  @variant(0)
213
270
  export class MessageHeader<T extends DeliveryMode = DeliveryMode> {
214
271
  @field({ type: fixedArray("u8", ID_LENGTH) })
@@ -263,7 +320,10 @@ export class MessageHeader<T extends DeliveryMode = DeliveryMode> {
263
320
  properties.priority != null
264
321
  ? properties.priority
265
322
  : getDefaultPriorityFromMode(this.mode);
266
- this.responsePriority = properties.responsePriority;
323
+ this.responsePriority =
324
+ properties.responsePriority != null
325
+ ? properties.responsePriority
326
+ : getDefaultResponsePriorityFromMode(this.mode);
267
327
  }
268
328
 
269
329
  get id() {
@@ -274,6 +334,47 @@ export class MessageHeader<T extends DeliveryMode = DeliveryMode> {
274
334
  return this._origin;
275
335
  }
276
336
 
337
+ writeBytes(
338
+ writer: BinaryWriter,
339
+ properties: { includeMode: boolean; includeSignatures: boolean },
340
+ ) {
341
+ writer.u8(0);
342
+ BinaryWriter.uint8ArrayFixed(this._id, writer);
343
+ writer.u64(this.timestamp);
344
+ writer.u64(this.session);
345
+ writer.u64(this.expires);
346
+ if (this.priority != null) {
347
+ writer.u8(1);
348
+ writer.u32(this.priority);
349
+ } else {
350
+ writer.u8(0);
351
+ }
352
+ if (this.responsePriority != null) {
353
+ writer.u8(1);
354
+ writer.u32(this.responsePriority);
355
+ } else {
356
+ writer.u8(0);
357
+ }
358
+ if (this._origin != null) {
359
+ writer.u8(1);
360
+ serialize(this._origin, writer);
361
+ } else {
362
+ writer.u8(0);
363
+ }
364
+ if (properties.includeMode && this.mode != null) {
365
+ writer.u8(1);
366
+ serialize(this.mode, writer);
367
+ } else {
368
+ writer.u8(0);
369
+ }
370
+ if (properties.includeSignatures && this.signatures != null) {
371
+ writer.u8(1);
372
+ serialize(this.signatures, writer);
373
+ } else {
374
+ writer.u8(0);
375
+ }
376
+ }
377
+
277
378
  verify() {
278
379
  return this.expires >= +new Date();
279
380
  }
@@ -283,24 +384,29 @@ interface WithHeader {
283
384
  header: MessageHeader;
284
385
  }
285
386
 
286
- const sign = async <T extends WithHeader>(
287
- obj: T,
288
- signer: (bytes: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey,
289
- ): Promise<T> => {
387
+ const serializeUnsigned = (obj: WithHeader): Uint8Array => {
290
388
  const mode = obj.header.mode;
291
389
  obj.header.mode = undefined as any;
292
390
  const signatures = obj.header.signatures;
293
391
  obj.header.signatures = undefined;
294
392
  const bytes = serialize(obj);
295
- // reassign properties if some other process expects them
296
393
  obj.header.signatures = signatures;
297
394
  obj.header.mode = mode;
395
+ return bytes;
396
+ };
397
+
398
+ const sign = async <T extends WithHeader>(
399
+ obj: T,
400
+ signer: (bytes: Uint8Array) => Promise<SignatureWithKey> | SignatureWithKey,
401
+ ): Promise<T> => {
402
+ const bytes =
403
+ obj instanceof Message ? obj.getSignableBytes() : serializeUnsigned(obj);
404
+ const signatures = obj.header.signatures;
298
405
 
299
406
  const signature = await signer(bytes);
300
407
  obj.header.signatures = new Signatures(
301
408
  signatures ? [...signatures.signatures, signature] : [signature],
302
409
  );
303
- obj.header.mode = mode;
304
410
  return obj;
305
411
  };
306
412
 
@@ -312,15 +418,22 @@ const verifyMultiSig = async (
312
418
  if (!signatures || signatures.signatures.length === 0) {
313
419
  return !expectSignatures;
314
420
  }
315
- const to = message.header.mode;
316
- message.header.mode = undefined as any;
317
- message.header.signatures = undefined;
318
- const bytes = serialize(message);
319
- message.header.mode = to;
320
- message.header.signatures = signatures;
421
+ const bytes =
422
+ message instanceof Message
423
+ ? message.getSignableBytes()
424
+ : serializeUnsigned(message);
425
+ const preparedByPrehash = new Map<number, Uint8Array>();
321
426
 
322
427
  for (const signature of signatures.signatures) {
323
- if (!(await verify(signature, bytes))) {
428
+ let prepared = preparedByPrehash.get(signature.prehash);
429
+ if (!prepared) {
430
+ prepared =
431
+ signature.prehash === PreHash.NONE
432
+ ? bytes
433
+ : await prehashFn(bytes, signature.prehash);
434
+ preparedByPrehash.set(signature.prehash, prepared);
435
+ }
436
+ if (!(await verifyPrepared(signature, prepared))) {
324
437
  return false;
325
438
  }
326
439
  }
@@ -328,6 +441,9 @@ const verifyMultiSig = async (
328
441
  };
329
442
 
330
443
  export abstract class Message<T extends DeliveryMode = DeliveryMode> {
444
+ protected _cachedSignableBytes?: Uint8Array;
445
+ protected _cachedPreparedSignableBytes?: Map<number, Uint8Array>;
446
+
331
447
  static from(bytes: Uint8ArrayList) {
332
448
  if (bytes.get(0) === DATA_VARIANT) {
333
449
  // Data
@@ -349,6 +465,30 @@ export abstract class Message<T extends DeliveryMode = DeliveryMode> {
349
465
  ): Promise<this> {
350
466
  return sign(this, signer);
351
467
  }
468
+
469
+ getSignableBytes(): Uint8Array {
470
+ return (
471
+ this._cachedSignableBytes ??
472
+ (this._cachedSignableBytes = serializeUnsigned(this))
473
+ );
474
+ }
475
+
476
+ async getPreparedSignableBytes(prehash: PreHash): Promise<Uint8Array> {
477
+ if (prehash === PreHash.NONE) {
478
+ return this.getSignableBytes();
479
+ }
480
+ let prepared = this._cachedPreparedSignableBytes?.get(prehash);
481
+ if (prepared) {
482
+ return prepared;
483
+ }
484
+ prepared = await prehashFn(this.getSignableBytes(), prehash);
485
+ if (!this._cachedPreparedSignableBytes) {
486
+ this._cachedPreparedSignableBytes = new Map();
487
+ }
488
+ this._cachedPreparedSignableBytes.set(prehash, prepared);
489
+ return prepared;
490
+ }
491
+
352
492
  abstract bytes(): Uint8ArrayList | Uint8Array;
353
493
  /* abstract equals(other: Message): boolean; */
354
494
  _verified: boolean;
@@ -365,6 +505,139 @@ export abstract class Message<T extends DeliveryMode = DeliveryMode> {
365
505
  // I pack data with this message
366
506
  const DATA_VARIANT = 0;
367
507
 
508
+ const readU8At = (bytes: Uint8ArrayList, offset: number) => bytes.get(offset);
509
+
510
+ const readU32LEAt = (bytes: Uint8ArrayList, offset: number) =>
511
+ bytes.getUint32(offset, true);
512
+
513
+ const skipBorshBytes = (bytes: Uint8ArrayList, offset: number) => {
514
+ const length = readU32LEAt(bytes, offset);
515
+ return offset + 4 + length;
516
+ };
517
+
518
+ const skipBorshString = (bytes: Uint8ArrayList, offset: number) =>
519
+ skipBorshBytes(bytes, offset);
520
+
521
+ const skipStringVec = (bytes: Uint8ArrayList, offset: number) => {
522
+ const length = readU32LEAt(bytes, offset);
523
+ offset += 4;
524
+ for (let i = 0; i < length; i++) {
525
+ offset = skipBorshString(bytes, offset);
526
+ }
527
+ return offset;
528
+ };
529
+
530
+ const skipPeerInfo = (bytes: Uint8ArrayList, offset: number) => {
531
+ const variant = readU8At(bytes, offset);
532
+ offset += 1;
533
+ if (variant === 0) {
534
+ return skipStringVec(bytes, offset);
535
+ }
536
+ throw new Error(`Unsupported peer info variant: ${variant}`);
537
+ };
538
+
539
+ const skipDeliveryMode = (bytes: Uint8ArrayList, offset: number) => {
540
+ const variant = readU8At(bytes, offset);
541
+ offset += 1;
542
+ if (variant === 0) {
543
+ offset = skipStringVec(bytes, offset);
544
+ return offset + 1;
545
+ }
546
+ if (variant === 1) {
547
+ offset = skipStringVec(bytes, offset);
548
+ offset += 1;
549
+ return skipStringVec(bytes, offset);
550
+ }
551
+ if (variant === 5) {
552
+ offset += 1;
553
+ return skipStringVec(bytes, offset);
554
+ }
555
+ if (variant === 3) {
556
+ return skipStringVec(bytes, offset);
557
+ }
558
+ if (variant === 4) {
559
+ return offset;
560
+ }
561
+ throw new Error(`Unsupported delivery mode variant: ${variant}`);
562
+ };
563
+
564
+ const skipPublicSignKey = (bytes: Uint8ArrayList, offset: number) => {
565
+ const variant = readU8At(bytes, offset);
566
+ offset += 1;
567
+ if (variant === 0) {
568
+ return offset + 32;
569
+ }
570
+ if (variant === 1) {
571
+ return offset + 33;
572
+ }
573
+ throw new Error(`Unsupported public sign key variant: ${variant}`);
574
+ };
575
+
576
+ const skipSignatureWithKey = (bytes: Uint8ArrayList, offset: number) => {
577
+ const variant = readU8At(bytes, offset);
578
+ if (variant !== 0) {
579
+ throw new Error(`Unsupported signature variant: ${variant}`);
580
+ }
581
+ offset += 1;
582
+ offset = skipBorshBytes(bytes, offset);
583
+ offset = skipPublicSignKey(bytes, offset);
584
+ return offset + 1;
585
+ };
586
+
587
+ const skipSignatures = (bytes: Uint8ArrayList, offset: number) => {
588
+ const variant = readU8At(bytes, offset);
589
+ if (variant !== 0) {
590
+ throw new Error(`Unsupported signatures variant: ${variant}`);
591
+ }
592
+ offset += 1;
593
+ const length = readU8At(bytes, offset);
594
+ offset += 1;
595
+ for (let i = 0; i < length; i++) {
596
+ offset = skipSignatureWithKey(bytes, offset);
597
+ }
598
+ return offset;
599
+ };
600
+
601
+ const getDataMessageDataFlagOffset = (bytes: Uint8ArrayList) => {
602
+ let offset = 0;
603
+ if (readU8At(bytes, offset) !== DATA_VARIANT) {
604
+ throw new Error("Unsupported");
605
+ }
606
+ offset += 1;
607
+ if (readU8At(bytes, offset) !== 0) {
608
+ throw new Error("Unsupported message header variant");
609
+ }
610
+ offset += 1;
611
+ offset += ID_LENGTH;
612
+ offset += 8 * 3;
613
+ if (readU8At(bytes, offset) === 1) {
614
+ offset += 5;
615
+ } else {
616
+ offset += 1;
617
+ }
618
+ if (readU8At(bytes, offset) === 1) {
619
+ offset += 5;
620
+ } else {
621
+ offset += 1;
622
+ }
623
+ if (readU8At(bytes, offset) === 1) {
624
+ offset = skipPeerInfo(bytes, offset + 1);
625
+ } else {
626
+ offset += 1;
627
+ }
628
+ if (readU8At(bytes, offset) === 1) {
629
+ offset = skipDeliveryMode(bytes, offset + 1);
630
+ } else {
631
+ offset += 1;
632
+ }
633
+ if (readU8At(bytes, offset) === 1) {
634
+ offset = skipSignatures(bytes, offset + 1);
635
+ } else {
636
+ offset += 1;
637
+ }
638
+ return offset;
639
+ };
640
+
368
641
  @variant(DATA_VARIANT)
369
642
  export class DataMessage<
370
643
  T extends
@@ -383,10 +656,15 @@ export class DataMessage<
383
656
  @field({ type: option(Uint8Array) })
384
657
  private _data?: Uint8Array;
385
658
 
386
- constructor(properties: { header: MessageHeader<T>; data?: Uint8Array }) {
659
+ private _dataBytes?: Uint8Array | Uint8ArrayList;
660
+
661
+ constructor(properties: {
662
+ header: MessageHeader<T>;
663
+ data?: Uint8Array | Uint8ArrayList;
664
+ }) {
387
665
  super();
388
- this._data = properties.data;
389
666
  this._header = properties.header;
667
+ this.setDataSource(properties.data);
390
668
  }
391
669
 
392
670
  get id(): Uint8Array {
@@ -398,20 +676,81 @@ export class DataMessage<
398
676
  }
399
677
 
400
678
  get data(): Uint8Array | undefined {
679
+ if (this._data == null && this._dataBytes instanceof Uint8ArrayList) {
680
+ this._data = this._dataBytes.subarray();
681
+ }
401
682
  return this._data;
402
683
  }
403
684
 
685
+ get dataByteLength(): number {
686
+ return this._dataBytes?.byteLength ?? this._data?.byteLength ?? 0;
687
+ }
688
+
689
+ get hasData(): boolean {
690
+ return this.dataByteLength > 0;
691
+ }
692
+
404
693
  /** Manually ser/der for performance gains */
405
694
  bytes() {
406
- return serialize(this);
695
+ return this.serializeBytes({
696
+ includeMode: true,
697
+ includeSignatures: true,
698
+ });
699
+ }
700
+
701
+ override getSignableBytes(): Uint8Array {
702
+ return (
703
+ this._cachedSignableBytes ??
704
+ (this._cachedSignableBytes = this.serializeBytes({
705
+ includeMode: false,
706
+ includeSignatures: false,
707
+ }).subarray())
708
+ );
709
+ }
710
+
711
+ private setDataSource(data?: Uint8Array | Uint8ArrayList) {
712
+ this._dataBytes = data;
713
+ this._data = data instanceof Uint8Array ? data : undefined;
714
+ this._cachedSignableBytes = undefined;
715
+ this._cachedPreparedSignableBytes = undefined;
716
+ }
717
+
718
+ private serializeBytes(properties: {
719
+ includeMode: boolean;
720
+ includeSignatures: boolean;
721
+ }) {
722
+ const writer = new BinaryWriter();
723
+ writer.u8(DATA_VARIANT);
724
+ this._header.writeBytes(writer, properties);
725
+ const data = this._dataBytes ?? this._data;
726
+ if (data != null) {
727
+ writer.u8(1);
728
+ writer.u32(data.byteLength);
729
+ return new Uint8ArrayList(writer.finalize(), data);
730
+ } else {
731
+ writer.u8(0);
732
+ }
733
+ return writer.finalize();
407
734
  }
408
735
 
409
736
  static from(bytes: Uint8ArrayList): DataMessage {
410
- if (bytes.get(0) !== 0) {
411
- throw new Error("Unsupported");
737
+ const dataFlagOffset = getDataMessageDataFlagOffset(bytes);
738
+ const hasData = readU8At(bytes, dataFlagOffset) === 1;
739
+ const headerOnlyBytes = hasData
740
+ ? (() => {
741
+ const prefix = bytes.subarray(0, dataFlagOffset);
742
+ const out = new Uint8Array(prefix.byteLength + 1);
743
+ out.set(prefix, 0);
744
+ out[prefix.byteLength] = 0;
745
+ return out;
746
+ })()
747
+ : bytes.subarray();
748
+ const ret = deserialize(headerOnlyBytes, DataMessage);
749
+ if (hasData) {
750
+ const dataLength = readU32LEAt(bytes, dataFlagOffset + 1);
751
+ const dataStart = dataFlagOffset + 5;
752
+ ret.setDataSource(bytes.sublist(dataStart, dataStart + dataLength));
412
753
  }
413
- const arr = bytes.subarray();
414
- const ret = deserialize(arr, DataMessage);
415
754
  return ret;
416
755
  }
417
756
  }