@fleet-sdk/serializer 0.8.0 → 0.8.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.
- package/CHANGELOG.md +10 -0
- package/dist/index.d.mts +13 -12
- package/dist/index.d.ts +13 -12
- package/dist/index.js +92 -54
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +93 -55
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# @fleet-sdk/serializer
|
2
2
|
|
3
|
+
## 0.8.2
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- 66d6fc9: Fix `ZigZag` encoding for 32-bit integers
|
8
|
+
- 1c8541a: Fix signed `SByte` parsing
|
9
|
+
- Updated dependencies [9a244b5]
|
10
|
+
- Updated dependencies [1b07c4a]
|
11
|
+
- @fleet-sdk/crypto@0.8.2
|
12
|
+
|
3
13
|
## 0.8.0
|
4
14
|
|
5
15
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
@@ -5,32 +5,33 @@ declare class SigmaByteReader {
|
|
5
5
|
#private;
|
6
6
|
get isEmpty(): boolean;
|
7
7
|
constructor(bytes: ByteInput$1);
|
8
|
-
|
8
|
+
readBool(): boolean;
|
9
9
|
readBits(length: number): ArrayLike<boolean>;
|
10
10
|
readByte(): number;
|
11
11
|
readBytes(length: number): Uint8Array;
|
12
12
|
readVlq(): number;
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
readI8(): number;
|
14
|
+
readI16(): number;
|
15
|
+
readI32(): number;
|
16
|
+
readI64(): bigint;
|
17
|
+
readI256(): bigint;
|
17
18
|
}
|
18
19
|
|
19
20
|
declare class SigmaByteWriter {
|
20
21
|
#private;
|
21
22
|
get length(): number;
|
22
23
|
constructor(length: number);
|
23
|
-
|
24
|
+
writeBool(value: boolean): SigmaByteWriter;
|
24
25
|
writeVLQ(value: number): SigmaByteWriter;
|
25
26
|
writeBigVLQ(value: bigint): SigmaByteWriter;
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
writeI16(value: number): SigmaByteWriter;
|
28
|
+
writeI32(value: number): SigmaByteWriter;
|
29
|
+
writeI64(value: bigint): SigmaByteWriter;
|
30
|
+
writeI256(value: bigint): SigmaByteWriter;
|
29
31
|
write(byte: number): SigmaByteWriter;
|
30
32
|
writeBytes(bytes: ArrayLike<number>): SigmaByteWriter;
|
31
33
|
writeHex(bytesHex: string): SigmaByteWriter;
|
32
34
|
writeBits(bits: ArrayLike<boolean>): SigmaByteWriter;
|
33
|
-
writeBigInt(value: bigint): SigmaByteWriter;
|
34
35
|
writeChecksum(length?: number, hashFn?: typeof blake2b256): SigmaByteWriter;
|
35
36
|
encode<T>(coder: Coder<Uint8Array, T>): T;
|
36
37
|
toBytes(): Uint8Array;
|
@@ -94,8 +95,8 @@ declare const SShort: SProxy<SShortType, number, number>;
|
|
94
95
|
declare const SInt: SProxy<SIntType, number, number>;
|
95
96
|
declare const SLong: SProxy<SLongType, BigIntInput, bigint>;
|
96
97
|
declare const SBigInt: SProxy<SBigIntType, BigIntInput, bigint>;
|
97
|
-
declare const SGroupElement: SProxy<SGroupElementType, ByteInput, Uint8Array
|
98
|
-
declare const SSigmaProp: SProxy<SSigmaPropType, SConstant<Uint8Array
|
98
|
+
declare const SGroupElement: SProxy<SGroupElementType, ByteInput, Uint8Array<ArrayBufferLike>>;
|
99
|
+
declare const SSigmaProp: SProxy<SSigmaPropType, SConstant<Uint8Array<ArrayBufferLike>, SType<unknown, unknown>>, SConstant<Uint8Array<ArrayBufferLike>, SType<unknown, unknown>>>;
|
99
100
|
type SUnit = (value?: undefined) => SConstant<undefined, SUnitType>;
|
100
101
|
declare const SUnit: SUnit;
|
101
102
|
type SColl = {
|
package/dist/index.d.ts
CHANGED
@@ -5,32 +5,33 @@ declare class SigmaByteReader {
|
|
5
5
|
#private;
|
6
6
|
get isEmpty(): boolean;
|
7
7
|
constructor(bytes: ByteInput$1);
|
8
|
-
|
8
|
+
readBool(): boolean;
|
9
9
|
readBits(length: number): ArrayLike<boolean>;
|
10
10
|
readByte(): number;
|
11
11
|
readBytes(length: number): Uint8Array;
|
12
12
|
readVlq(): number;
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
readI8(): number;
|
14
|
+
readI16(): number;
|
15
|
+
readI32(): number;
|
16
|
+
readI64(): bigint;
|
17
|
+
readI256(): bigint;
|
17
18
|
}
|
18
19
|
|
19
20
|
declare class SigmaByteWriter {
|
20
21
|
#private;
|
21
22
|
get length(): number;
|
22
23
|
constructor(length: number);
|
23
|
-
|
24
|
+
writeBool(value: boolean): SigmaByteWriter;
|
24
25
|
writeVLQ(value: number): SigmaByteWriter;
|
25
26
|
writeBigVLQ(value: bigint): SigmaByteWriter;
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
writeI16(value: number): SigmaByteWriter;
|
28
|
+
writeI32(value: number): SigmaByteWriter;
|
29
|
+
writeI64(value: bigint): SigmaByteWriter;
|
30
|
+
writeI256(value: bigint): SigmaByteWriter;
|
29
31
|
write(byte: number): SigmaByteWriter;
|
30
32
|
writeBytes(bytes: ArrayLike<number>): SigmaByteWriter;
|
31
33
|
writeHex(bytesHex: string): SigmaByteWriter;
|
32
34
|
writeBits(bits: ArrayLike<boolean>): SigmaByteWriter;
|
33
|
-
writeBigInt(value: bigint): SigmaByteWriter;
|
34
35
|
writeChecksum(length?: number, hashFn?: typeof blake2b256): SigmaByteWriter;
|
35
36
|
encode<T>(coder: Coder<Uint8Array, T>): T;
|
36
37
|
toBytes(): Uint8Array;
|
@@ -94,8 +95,8 @@ declare const SShort: SProxy<SShortType, number, number>;
|
|
94
95
|
declare const SInt: SProxy<SIntType, number, number>;
|
95
96
|
declare const SLong: SProxy<SLongType, BigIntInput, bigint>;
|
96
97
|
declare const SBigInt: SProxy<SBigIntType, BigIntInput, bigint>;
|
97
|
-
declare const SGroupElement: SProxy<SGroupElementType, ByteInput, Uint8Array
|
98
|
-
declare const SSigmaProp: SProxy<SSigmaPropType, SConstant<Uint8Array
|
98
|
+
declare const SGroupElement: SProxy<SGroupElementType, ByteInput, Uint8Array<ArrayBufferLike>>;
|
99
|
+
declare const SSigmaProp: SProxy<SSigmaPropType, SConstant<Uint8Array<ArrayBufferLike>, SType<unknown, unknown>>, SConstant<Uint8Array<ArrayBufferLike>, SType<unknown, unknown>>>;
|
99
100
|
type SUnit = (value?: undefined) => SConstant<undefined, SUnitType>;
|
100
101
|
declare const SUnit: SUnit;
|
101
102
|
type SColl = {
|
package/dist/index.js
CHANGED
@@ -105,18 +105,45 @@ function estimateVLQSize(value) {
|
|
105
105
|
} while (val > common._0n);
|
106
106
|
return size;
|
107
107
|
}
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
108
|
+
var _31n = BigInt(31);
|
109
|
+
var u64 = (v) => BigInt.asUintN(64, v);
|
110
|
+
var i64 = (v) => BigInt.asIntN(64, v);
|
111
|
+
var i32 = (v) => BigInt.asIntN(32, v);
|
112
|
+
var u32 = (v) => BigInt.asUintN(32, v);
|
113
|
+
var zigZag32 = {
|
114
|
+
encode: (input) => {
|
115
|
+
const v = i32(BigInt(input));
|
116
|
+
return u64(i32(v << common._1n) ^ i32(v >> _31n));
|
117
|
+
},
|
118
|
+
decode: (input) => {
|
119
|
+
const v = u32(input);
|
120
|
+
return Number(v >> common._1n ^ -(v & common._1n));
|
121
|
+
}
|
122
|
+
};
|
123
|
+
var zigZag64 = {
|
124
|
+
encode: (input) => {
|
125
|
+
return u64(input << common._1n ^ input >> common._63n);
|
126
|
+
},
|
127
|
+
decode: (input) => {
|
128
|
+
return i64(input >> common._1n ^ -(input & common._1n));
|
129
|
+
}
|
130
|
+
};
|
131
|
+
|
132
|
+
// src/coders/numRanges.ts
|
133
|
+
var MAX_U8 = 255;
|
134
|
+
var MAX_I8 = 127;
|
135
|
+
var MIN_I16 = -32768;
|
136
|
+
var MAX_I16 = 32767;
|
137
|
+
var MIN_I32 = -2147483648;
|
138
|
+
var MAX_I32 = 2147483647;
|
139
|
+
var MIN_I64 = -BigInt("0x8000000000000000");
|
140
|
+
var MAX_I64 = BigInt("0x7fffffffffffffff");
|
141
|
+
var MIN_I256 = -BigInt(
|
142
|
+
"0x8000000000000000000000000000000000000000000000000000000000000000"
|
143
|
+
);
|
144
|
+
var MAX_I256 = BigInt(
|
145
|
+
"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
146
|
+
);
|
120
147
|
|
121
148
|
// src/coders/sigmaByteReader.ts
|
122
149
|
var SigmaByteReader = class {
|
@@ -129,7 +156,7 @@ var SigmaByteReader = class {
|
|
129
156
|
this.#bytes = crypto.ensureBytes(bytes);
|
130
157
|
this.#cursor = 0;
|
131
158
|
}
|
132
|
-
|
159
|
+
readBool() {
|
133
160
|
return this.readByte() === 1;
|
134
161
|
}
|
135
162
|
readBits(length) {
|
@@ -155,16 +182,20 @@ var SigmaByteReader = class {
|
|
155
182
|
readVlq() {
|
156
183
|
return readVLQ(this);
|
157
184
|
}
|
158
|
-
|
159
|
-
|
185
|
+
readI8() {
|
186
|
+
const byte = this.readByte();
|
187
|
+
return byte > MAX_I8 ? byte - (MAX_U8 + 1) : byte;
|
188
|
+
}
|
189
|
+
readI16() {
|
190
|
+
return zigZag32.decode(readBigVLQ(this));
|
160
191
|
}
|
161
|
-
|
162
|
-
return
|
192
|
+
readI32() {
|
193
|
+
return zigZag32.decode(readBigVLQ(this));
|
163
194
|
}
|
164
|
-
|
165
|
-
return
|
195
|
+
readI64() {
|
196
|
+
return zigZag64.decode(readBigVLQ(this));
|
166
197
|
}
|
167
|
-
|
198
|
+
readI256() {
|
168
199
|
const len = readVLQ(this);
|
169
200
|
return hexToBigInt(crypto.hex.encode(this.readBytes(len)));
|
170
201
|
}
|
@@ -179,7 +210,7 @@ var SigmaByteWriter = class {
|
|
179
210
|
this.#bytes = new Uint8Array(length);
|
180
211
|
this.#cursor = 0;
|
181
212
|
}
|
182
|
-
|
213
|
+
writeBool(value) {
|
183
214
|
this.write(value === true ? 1 : 0);
|
184
215
|
return this;
|
185
216
|
}
|
@@ -189,17 +220,31 @@ var SigmaByteWriter = class {
|
|
189
220
|
writeBigVLQ(value) {
|
190
221
|
return writeBigVLQ(this, value);
|
191
222
|
}
|
192
|
-
|
193
|
-
|
223
|
+
writeI16(value) {
|
224
|
+
if (value < MIN_I16 || value > MAX_I16) {
|
225
|
+
throw new RangeError(`Value ${value} is out of range for a 16-bit integer`);
|
226
|
+
}
|
227
|
+
this.writeBigVLQ(zigZag32.encode(value));
|
194
228
|
return this;
|
195
229
|
}
|
196
|
-
|
197
|
-
|
198
|
-
|
230
|
+
writeI32(value) {
|
231
|
+
if (value < MIN_I32 || value > MAX_I32) {
|
232
|
+
throw new RangeError(`Value ${value} is out of range for a 32-bit integer`);
|
233
|
+
}
|
234
|
+
return this.writeBigVLQ(zigZag32.encode(value));
|
199
235
|
}
|
200
|
-
|
201
|
-
|
202
|
-
|
236
|
+
writeI64(value) {
|
237
|
+
if (value < MIN_I64 || value > MAX_I64) {
|
238
|
+
throw new RangeError(`Value ${value} is out of range for a 64-bit integer`);
|
239
|
+
}
|
240
|
+
return this.writeBigVLQ(zigZag64.encode(value));
|
241
|
+
}
|
242
|
+
writeI256(value) {
|
243
|
+
if (value < MIN_I256 || value > MAX_I256) {
|
244
|
+
throw new RangeError(`Value ${value} is out of range for a 256-bit integer`);
|
245
|
+
}
|
246
|
+
const hex6 = bigIntToHex(value);
|
247
|
+
return this.writeVLQ(hex6.length / 2).writeHex(hex6);
|
203
248
|
}
|
204
249
|
write(byte) {
|
205
250
|
this.#bytes[this.#cursor++] = byte;
|
@@ -229,10 +274,6 @@ var SigmaByteWriter = class {
|
|
229
274
|
if (bitOffset > 0) this.#cursor++;
|
230
275
|
return this;
|
231
276
|
}
|
232
|
-
writeBigInt(value) {
|
233
|
-
const hex6 = bigIntToHex(value);
|
234
|
-
return this.writeVLQ(hex6.length / 2).writeHex(hex6);
|
235
|
-
}
|
236
277
|
writeChecksum(length = 4, hashFn = crypto.blake2b256) {
|
237
278
|
const hash = hashFn(this.toBytes());
|
238
279
|
return this.writeBytes(length ? hash.subarray(0, length) : hash);
|
@@ -496,7 +537,7 @@ var SSigmaProp = monoProxy(
|
|
496
537
|
SSigmaPropType,
|
497
538
|
descriptors.sigmaProp
|
498
539
|
);
|
499
|
-
var SUnit = monoProxy(SUnitType,
|
540
|
+
var SUnit = monoProxy(SUnitType, undefined, true);
|
500
541
|
var SColl = genericProxy(SCollType, (target, _, args) => {
|
501
542
|
const [type, elements] = args;
|
502
543
|
const elementsType = type();
|
@@ -522,17 +563,17 @@ var dataSerializer = {
|
|
522
563
|
if (type.embeddable) {
|
523
564
|
switch (type.code) {
|
524
565
|
case descriptors.bool.code:
|
525
|
-
return writer.
|
566
|
+
return writer.writeBool(data);
|
526
567
|
case descriptors.byte.code:
|
527
568
|
return writer.write(data);
|
528
569
|
case descriptors.short.code:
|
529
|
-
return writer.
|
570
|
+
return writer.writeI16(data);
|
530
571
|
case descriptors.int.code:
|
531
|
-
return writer.
|
572
|
+
return writer.writeI32(data);
|
532
573
|
case descriptors.long.code:
|
533
|
-
return writer.
|
574
|
+
return writer.writeI64(data);
|
534
575
|
case descriptors.bigInt.code:
|
535
|
-
return writer.
|
576
|
+
return writer.writeI256(data);
|
536
577
|
case descriptors.groupElement.code:
|
537
578
|
return writer.writeBytes(data);
|
538
579
|
case descriptors.sigmaProp.code: {
|
@@ -590,17 +631,17 @@ var dataSerializer = {
|
|
590
631
|
if (type.embeddable) {
|
591
632
|
switch (type.code) {
|
592
633
|
case descriptors.bool.code:
|
593
|
-
return reader.
|
634
|
+
return reader.readBool();
|
594
635
|
case descriptors.byte.code:
|
595
|
-
return reader.
|
636
|
+
return reader.readI8();
|
596
637
|
case descriptors.short.code:
|
597
|
-
return reader.
|
638
|
+
return reader.readI16();
|
598
639
|
case descriptors.int.code:
|
599
|
-
return reader.
|
640
|
+
return reader.readI32();
|
600
641
|
case descriptors.long.code:
|
601
|
-
return reader.
|
642
|
+
return reader.readI64();
|
602
643
|
case descriptors.bigInt.code:
|
603
|
-
return reader.
|
644
|
+
return reader.readI256();
|
604
645
|
case descriptors.groupElement.code:
|
605
646
|
return reader.readBytes(GROUP_ELEMENT_LENGTH);
|
606
647
|
case descriptors.sigmaProp.code: {
|
@@ -635,7 +676,7 @@ var dataSerializer = {
|
|
635
676
|
);
|
636
677
|
}
|
637
678
|
case descriptors.unit.code:
|
638
|
-
return
|
679
|
+
return undefined;
|
639
680
|
}
|
640
681
|
}
|
641
682
|
throw new Error(`Parsing error: '0x${type.code.toString(16)}' type not implemented.`);
|
@@ -795,7 +836,7 @@ var SConstant = class _SConstant {
|
|
795
836
|
}
|
796
837
|
};
|
797
838
|
function decode(value) {
|
798
|
-
if (value ===
|
839
|
+
if (value === undefined) return;
|
799
840
|
try {
|
800
841
|
return SConstant.from(value);
|
801
842
|
} catch {
|
@@ -910,17 +951,14 @@ function writeExtension(writer, extension) {
|
|
910
951
|
const keys = Object.keys(extension);
|
911
952
|
let length = 0;
|
912
953
|
for (const key of keys) {
|
913
|
-
|
914
|
-
if (common.isDefined(ext)) {
|
915
|
-
length++;
|
916
|
-
}
|
954
|
+
if (common.isDefined(extension[key])) length++;
|
917
955
|
}
|
918
956
|
writer.writeVLQ(length);
|
919
957
|
if (length === 0) return;
|
920
958
|
for (const key of keys) {
|
921
|
-
const
|
922
|
-
if (common.isDefined(
|
923
|
-
writer.writeVLQ(Number(key)).writeHex(
|
959
|
+
const val = extension[key];
|
960
|
+
if (common.isDefined(val)) {
|
961
|
+
writer.writeVLQ(Number(key)).writeHex(val);
|
924
962
|
}
|
925
963
|
}
|
926
964
|
}
|