@subsquid/evm-codec 0.0.0 → 0.1.0
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/lib/codec.d.ts +8 -5
- package/lib/codec.d.ts.map +1 -1
- package/lib/codecs/primitives.d.ts +100 -47
- package/lib/codecs/primitives.d.ts.map +1 -1
- package/lib/codecs/primitives.js +67 -13
- package/lib/codecs/primitives.js.map +1 -1
- package/lib/codecs/struct.d.ts +4 -4
- package/lib/codecs/struct.d.ts.map +1 -1
- package/lib/codecs/struct.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/safeToNumber.d.ts +2 -0
- package/lib/safeToNumber.d.ts.map +1 -0
- package/lib/safeToNumber.js +11 -0
- package/lib/safeToNumber.js.map +1 -0
- package/lib/sink.d.ts +1 -0
- package/lib/sink.d.ts.map +1 -1
- package/lib/sink.js +30 -9
- package/lib/sink.js.map +1 -1
- package/package.json +4 -3
- package/src/codec.ts +9 -5
- package/src/codecs/primitives.ts +93 -36
- package/src/codecs/struct.ts +6 -6
- package/src/index.ts +1 -1
- package/src/safeToNumber.ts +6 -0
- package/src/sink.ts +35 -7
package/lib/codec.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Sink } from './sink';
|
|
2
2
|
import type { Src } from './src';
|
|
3
3
|
export declare const WORD_SIZE = 32;
|
|
4
|
-
export interface Codec<
|
|
5
|
-
encode(sink: Sink, val:
|
|
6
|
-
decode(src: Src):
|
|
4
|
+
export interface Codec<TIn, TOut = TIn> {
|
|
5
|
+
encode(sink: Sink, val: TIn): void;
|
|
6
|
+
decode(src: Src): TOut;
|
|
7
7
|
isDynamic: boolean;
|
|
8
8
|
slotsCount?: number;
|
|
9
9
|
}
|
|
@@ -13,8 +13,11 @@ export type Struct = {
|
|
|
13
13
|
type Pretty<T> = {
|
|
14
14
|
[K in keyof T]: T[K];
|
|
15
15
|
} & unknown;
|
|
16
|
-
export type
|
|
17
|
-
[K in keyof T]: T[K] extends Codec<infer U> ? U : never;
|
|
16
|
+
export type DecodedStruct<T extends Struct> = Pretty<{
|
|
17
|
+
[K in keyof T]: T[K] extends Codec<any, infer U> ? U : never;
|
|
18
|
+
}>;
|
|
19
|
+
export type EncodedStruct<T extends Struct> = Pretty<{
|
|
20
|
+
[K in keyof T]: T[K] extends Codec<infer U, any> ? U : never;
|
|
18
21
|
}>;
|
|
19
22
|
export {};
|
|
20
23
|
//# sourceMappingURL=codec.d.ts.map
|
package/lib/codec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,eAAO,MAAM,SAAS,KAAK,CAAA;AAE3B,MAAM,WAAW,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,eAAO,MAAM,SAAS,KAAK,CAAA;AAE3B,MAAM,WAAW,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG;IACpC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAA;IAClC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;CAC1B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,OAAO,CAAA;AAEnD,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC;KAClD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC7D,CAAC,CAAA;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC;KAClD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;CAC7D,CAAC,CAAA"}
|
|
@@ -2,19 +2,20 @@ import { Codec } from '../codec';
|
|
|
2
2
|
import { Sink } from '../sink';
|
|
3
3
|
import { Src } from '../src';
|
|
4
4
|
import { StructCodec } from './struct';
|
|
5
|
+
type Numberish = number | bigint;
|
|
5
6
|
export declare const bool: Codec<boolean>;
|
|
6
|
-
export declare const uint8: Codec<number>;
|
|
7
|
-
export declare const int8: Codec<number>;
|
|
8
|
-
export declare const uint16: Codec<number>;
|
|
9
|
-
export declare const int16: Codec<number>;
|
|
10
|
-
export declare const uint32: Codec<number>;
|
|
11
|
-
export declare const int32: Codec<number>;
|
|
12
|
-
export declare const uint64: Codec<bigint>;
|
|
13
|
-
export declare const int64: Codec<bigint>;
|
|
14
|
-
export declare const uint128: Codec<bigint>;
|
|
15
|
-
export declare const int128: Codec<bigint>;
|
|
16
|
-
export declare const uint256: Codec<bigint>;
|
|
17
|
-
export declare const int256: Codec<bigint>;
|
|
7
|
+
export declare const uint8: Codec<Numberish, number>;
|
|
8
|
+
export declare const int8: Codec<Numberish, number>;
|
|
9
|
+
export declare const uint16: Codec<Numberish, number>;
|
|
10
|
+
export declare const int16: Codec<Numberish, number>;
|
|
11
|
+
export declare const uint32: Codec<Numberish, number>;
|
|
12
|
+
export declare const int32: Codec<Numberish, number>;
|
|
13
|
+
export declare const uint64: Codec<Numberish, bigint>;
|
|
14
|
+
export declare const int64: Codec<Numberish, bigint>;
|
|
15
|
+
export declare const uint128: Codec<Numberish, bigint>;
|
|
16
|
+
export declare const int128: Codec<Numberish, bigint>;
|
|
17
|
+
export declare const uint256: Codec<Numberish, bigint>;
|
|
18
|
+
export declare const int256: Codec<Numberish, bigint>;
|
|
18
19
|
export declare const string: {
|
|
19
20
|
readonly encode: (sink: Sink, val: string) => void;
|
|
20
21
|
readonly decode: (src: Src) => string;
|
|
@@ -25,46 +26,98 @@ export declare const bytes: {
|
|
|
25
26
|
readonly decode: (src: Src) => Uint8Array;
|
|
26
27
|
readonly isDynamic: true;
|
|
27
28
|
};
|
|
28
|
-
export declare const bytes0: Codec<Uint8Array>;
|
|
29
|
-
export declare const bytes1: Codec<Uint8Array>;
|
|
30
|
-
export declare const bytes2: Codec<Uint8Array>;
|
|
31
|
-
export declare const bytes3: Codec<Uint8Array>;
|
|
32
|
-
export declare const bytes4: Codec<Uint8Array>;
|
|
33
|
-
export declare const bytes5: Codec<Uint8Array>;
|
|
34
|
-
export declare const bytes6: Codec<Uint8Array>;
|
|
35
|
-
export declare const bytes7: Codec<Uint8Array>;
|
|
36
|
-
export declare const bytes8: Codec<Uint8Array>;
|
|
37
|
-
export declare const bytes9: Codec<Uint8Array>;
|
|
38
|
-
export declare const bytes10: Codec<Uint8Array>;
|
|
39
|
-
export declare const bytes11: Codec<Uint8Array>;
|
|
40
|
-
export declare const bytes12: Codec<Uint8Array>;
|
|
41
|
-
export declare const bytes13: Codec<Uint8Array>;
|
|
42
|
-
export declare const bytes14: Codec<Uint8Array>;
|
|
43
|
-
export declare const bytes15: Codec<Uint8Array>;
|
|
44
|
-
export declare const bytes16: Codec<Uint8Array>;
|
|
45
|
-
export declare const bytes17: Codec<Uint8Array>;
|
|
46
|
-
export declare const bytes18: Codec<Uint8Array>;
|
|
47
|
-
export declare const bytes19: Codec<Uint8Array>;
|
|
48
|
-
export declare const bytes20: Codec<Uint8Array>;
|
|
49
|
-
export declare const bytes21: Codec<Uint8Array>;
|
|
50
|
-
export declare const bytes22: Codec<Uint8Array>;
|
|
51
|
-
export declare const bytes23: Codec<Uint8Array>;
|
|
52
|
-
export declare const bytes24: Codec<Uint8Array>;
|
|
53
|
-
export declare const bytes25: Codec<Uint8Array>;
|
|
54
|
-
export declare const bytes26: Codec<Uint8Array>;
|
|
55
|
-
export declare const bytes27: Codec<Uint8Array>;
|
|
56
|
-
export declare const bytes28: Codec<Uint8Array>;
|
|
57
|
-
export declare const bytes29: Codec<Uint8Array>;
|
|
58
|
-
export declare const bytes30: Codec<Uint8Array>;
|
|
59
|
-
export declare const bytes31: Codec<Uint8Array>;
|
|
60
|
-
export declare const bytes32: Codec<Uint8Array>;
|
|
29
|
+
export declare const bytes0: Codec<Uint8Array, Uint8Array>;
|
|
30
|
+
export declare const bytes1: Codec<Uint8Array, Uint8Array>;
|
|
31
|
+
export declare const bytes2: Codec<Uint8Array, Uint8Array>;
|
|
32
|
+
export declare const bytes3: Codec<Uint8Array, Uint8Array>;
|
|
33
|
+
export declare const bytes4: Codec<Uint8Array, Uint8Array>;
|
|
34
|
+
export declare const bytes5: Codec<Uint8Array, Uint8Array>;
|
|
35
|
+
export declare const bytes6: Codec<Uint8Array, Uint8Array>;
|
|
36
|
+
export declare const bytes7: Codec<Uint8Array, Uint8Array>;
|
|
37
|
+
export declare const bytes8: Codec<Uint8Array, Uint8Array>;
|
|
38
|
+
export declare const bytes9: Codec<Uint8Array, Uint8Array>;
|
|
39
|
+
export declare const bytes10: Codec<Uint8Array, Uint8Array>;
|
|
40
|
+
export declare const bytes11: Codec<Uint8Array, Uint8Array>;
|
|
41
|
+
export declare const bytes12: Codec<Uint8Array, Uint8Array>;
|
|
42
|
+
export declare const bytes13: Codec<Uint8Array, Uint8Array>;
|
|
43
|
+
export declare const bytes14: Codec<Uint8Array, Uint8Array>;
|
|
44
|
+
export declare const bytes15: Codec<Uint8Array, Uint8Array>;
|
|
45
|
+
export declare const bytes16: Codec<Uint8Array, Uint8Array>;
|
|
46
|
+
export declare const bytes17: Codec<Uint8Array, Uint8Array>;
|
|
47
|
+
export declare const bytes18: Codec<Uint8Array, Uint8Array>;
|
|
48
|
+
export declare const bytes19: Codec<Uint8Array, Uint8Array>;
|
|
49
|
+
export declare const bytes20: Codec<Uint8Array, Uint8Array>;
|
|
50
|
+
export declare const bytes21: Codec<Uint8Array, Uint8Array>;
|
|
51
|
+
export declare const bytes22: Codec<Uint8Array, Uint8Array>;
|
|
52
|
+
export declare const bytes23: Codec<Uint8Array, Uint8Array>;
|
|
53
|
+
export declare const bytes24: Codec<Uint8Array, Uint8Array>;
|
|
54
|
+
export declare const bytes25: Codec<Uint8Array, Uint8Array>;
|
|
55
|
+
export declare const bytes26: Codec<Uint8Array, Uint8Array>;
|
|
56
|
+
export declare const bytes27: Codec<Uint8Array, Uint8Array>;
|
|
57
|
+
export declare const bytes28: Codec<Uint8Array, Uint8Array>;
|
|
58
|
+
export declare const bytes29: Codec<Uint8Array, Uint8Array>;
|
|
59
|
+
export declare const bytes30: Codec<Uint8Array, Uint8Array>;
|
|
60
|
+
export declare const bytes31: Codec<Uint8Array, Uint8Array>;
|
|
61
|
+
export declare const bytes32: Codec<Uint8Array, Uint8Array>;
|
|
61
62
|
export declare const address: Codec<string>;
|
|
62
|
-
export declare const fixedSizeArray: <T>(item: Codec<T>, size: number) => Codec<T[]>;
|
|
63
|
-
export declare const array: <T>(item: Codec<T>) => Codec<T[]>;
|
|
63
|
+
export declare const fixedSizeArray: <T>(item: Codec<T, T>, size: number) => Codec<T[], T[]>;
|
|
64
|
+
export declare const array: <T>(item: Codec<T, T>) => Codec<T[], T[]>;
|
|
64
65
|
type Struct = {
|
|
65
66
|
[key: string]: Codec<any>;
|
|
66
67
|
};
|
|
67
68
|
export declare const struct: <const T extends Struct>(components: T) => StructCodec<T>;
|
|
68
69
|
export declare const tuple: <const T extends Struct>(components: T) => StructCodec<T>;
|
|
70
|
+
export declare const uint24: Codec<Numberish, number>;
|
|
71
|
+
export declare const int24: Codec<Numberish, number>;
|
|
72
|
+
export declare const uint40: Codec<Numberish, bigint>;
|
|
73
|
+
export declare const int40: Codec<Numberish, bigint>;
|
|
74
|
+
export declare const uint48: Codec<Numberish, bigint>;
|
|
75
|
+
export declare const int48: Codec<Numberish, bigint>;
|
|
76
|
+
export declare const uint56: Codec<Numberish, bigint>;
|
|
77
|
+
export declare const int56: Codec<Numberish, bigint>;
|
|
78
|
+
export declare const uint72: Codec<Numberish, bigint>;
|
|
79
|
+
export declare const int72: Codec<Numberish, bigint>;
|
|
80
|
+
export declare const uint80: Codec<Numberish, bigint>;
|
|
81
|
+
export declare const int80: Codec<Numberish, bigint>;
|
|
82
|
+
export declare const uint88: Codec<Numberish, bigint>;
|
|
83
|
+
export declare const int88: Codec<Numberish, bigint>;
|
|
84
|
+
export declare const uint96: Codec<Numberish, bigint>;
|
|
85
|
+
export declare const int96: Codec<Numberish, bigint>;
|
|
86
|
+
export declare const uint104: Codec<Numberish, bigint>;
|
|
87
|
+
export declare const int104: Codec<Numberish, bigint>;
|
|
88
|
+
export declare const uint112: Codec<Numberish, bigint>;
|
|
89
|
+
export declare const int112: Codec<Numberish, bigint>;
|
|
90
|
+
export declare const uint120: Codec<Numberish, bigint>;
|
|
91
|
+
export declare const int120: Codec<Numberish, bigint>;
|
|
92
|
+
export declare const uint136: Codec<Numberish, bigint>;
|
|
93
|
+
export declare const int136: Codec<Numberish, bigint>;
|
|
94
|
+
export declare const uint144: Codec<Numberish, bigint>;
|
|
95
|
+
export declare const int144: Codec<Numberish, bigint>;
|
|
96
|
+
export declare const uint152: Codec<Numberish, bigint>;
|
|
97
|
+
export declare const int152: Codec<Numberish, bigint>;
|
|
98
|
+
export declare const uint160: Codec<Numberish, bigint>;
|
|
99
|
+
export declare const int160: Codec<Numberish, bigint>;
|
|
100
|
+
export declare const uint168: Codec<Numberish, bigint>;
|
|
101
|
+
export declare const int168: Codec<Numberish, bigint>;
|
|
102
|
+
export declare const uint176: Codec<Numberish, bigint>;
|
|
103
|
+
export declare const int176: Codec<Numberish, bigint>;
|
|
104
|
+
export declare const uint184: Codec<Numberish, bigint>;
|
|
105
|
+
export declare const int184: Codec<Numberish, bigint>;
|
|
106
|
+
export declare const uint192: Codec<Numberish, bigint>;
|
|
107
|
+
export declare const int192: Codec<Numberish, bigint>;
|
|
108
|
+
export declare const uint200: Codec<Numberish, bigint>;
|
|
109
|
+
export declare const int200: Codec<Numberish, bigint>;
|
|
110
|
+
export declare const uint208: Codec<Numberish, bigint>;
|
|
111
|
+
export declare const int208: Codec<Numberish, bigint>;
|
|
112
|
+
export declare const uint216: Codec<Numberish, bigint>;
|
|
113
|
+
export declare const int216: Codec<Numberish, bigint>;
|
|
114
|
+
export declare const uint224: Codec<Numberish, bigint>;
|
|
115
|
+
export declare const int224: Codec<Numberish, bigint>;
|
|
116
|
+
export declare const uint232: Codec<Numberish, bigint>;
|
|
117
|
+
export declare const int232: Codec<Numberish, bigint>;
|
|
118
|
+
export declare const uint240: Codec<Numberish, bigint>;
|
|
119
|
+
export declare const int240: Codec<Numberish, bigint>;
|
|
120
|
+
export declare const uint248: Codec<Numberish, bigint>;
|
|
121
|
+
export declare const int248: Codec<Numberish, bigint>;
|
|
69
122
|
export {};
|
|
70
123
|
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/codecs/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/codecs/primitives.ts"],"names":[],"mappings":"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"}
|
package/lib/codecs/primitives.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fixedSizeArray = exports.address = exports.bytes32 = exports.bytes31 = exports.bytes30 = exports.bytes29 = exports.bytes28 = exports.bytes27 = exports.bytes26 = exports.bytes25 = exports.bytes24 = exports.bytes23 = exports.bytes22 = exports.bytes21 = exports.bytes20 = exports.bytes19 = exports.bytes18 = exports.bytes17 = exports.bytes16 = exports.bytes15 = exports.bytes14 = exports.bytes13 = exports.bytes12 = exports.bytes11 = exports.bytes10 = exports.bytes9 = exports.bytes8 = exports.bytes7 = exports.bytes6 = exports.bytes5 = exports.bytes4 = exports.bytes3 = exports.bytes2 = exports.bytes1 = exports.bytes0 = exports.bytes = exports.string = exports.int256 = exports.uint256 = exports.int128 = exports.uint128 = exports.int64 = exports.uint64 = exports.int32 = exports.uint32 = exports.int16 = exports.uint16 = exports.int8 = exports.uint8 = exports.bool = void 0;
|
|
4
|
-
exports.tuple = exports.struct = exports.array = void 0;
|
|
4
|
+
exports.uint232 = exports.int224 = exports.uint224 = exports.int216 = exports.uint216 = exports.int208 = exports.uint208 = exports.int200 = exports.uint200 = exports.int192 = exports.uint192 = exports.int184 = exports.uint184 = exports.int176 = exports.uint176 = exports.int168 = exports.uint168 = exports.int160 = exports.uint160 = exports.int152 = exports.uint152 = exports.int144 = exports.uint144 = exports.int136 = exports.uint136 = exports.int120 = exports.uint120 = exports.int112 = exports.uint112 = exports.int104 = exports.uint104 = exports.int96 = exports.uint96 = exports.int88 = exports.uint88 = exports.int80 = exports.uint80 = exports.int72 = exports.uint72 = exports.int56 = exports.uint56 = exports.int48 = exports.uint48 = exports.int40 = exports.uint40 = exports.int24 = exports.uint24 = exports.tuple = exports.struct = exports.array = void 0;
|
|
5
|
+
exports.int248 = exports.uint248 = exports.int240 = exports.uint240 = exports.int232 = void 0;
|
|
5
6
|
const array_1 = require("./array");
|
|
6
7
|
const struct_1 = require("./struct");
|
|
8
|
+
const safeToNumber_1 = require("../safeToNumber");
|
|
7
9
|
exports.bool = {
|
|
8
10
|
encode: function (sink, val) {
|
|
9
11
|
sink.bool(val);
|
|
@@ -15,7 +17,7 @@ exports.bool = {
|
|
|
15
17
|
};
|
|
16
18
|
exports.uint8 = {
|
|
17
19
|
encode(sink, val) {
|
|
18
|
-
sink.u8(val);
|
|
20
|
+
sink.u8((0, safeToNumber_1.safeToNumber)(val));
|
|
19
21
|
},
|
|
20
22
|
decode(src) {
|
|
21
23
|
return src.u8();
|
|
@@ -24,7 +26,7 @@ exports.uint8 = {
|
|
|
24
26
|
};
|
|
25
27
|
exports.int8 = {
|
|
26
28
|
encode(sink, val) {
|
|
27
|
-
sink.i8(val);
|
|
29
|
+
sink.i8((0, safeToNumber_1.safeToNumber)(val));
|
|
28
30
|
},
|
|
29
31
|
decode(src) {
|
|
30
32
|
return src.i8();
|
|
@@ -33,7 +35,7 @@ exports.int8 = {
|
|
|
33
35
|
};
|
|
34
36
|
exports.uint16 = {
|
|
35
37
|
encode(sink, val) {
|
|
36
|
-
sink.u16(val);
|
|
38
|
+
sink.u16((0, safeToNumber_1.safeToNumber)(val));
|
|
37
39
|
},
|
|
38
40
|
decode(src) {
|
|
39
41
|
return src.u16();
|
|
@@ -42,7 +44,7 @@ exports.uint16 = {
|
|
|
42
44
|
};
|
|
43
45
|
exports.int16 = {
|
|
44
46
|
encode(sink, val) {
|
|
45
|
-
sink.i16(val);
|
|
47
|
+
sink.i16((0, safeToNumber_1.safeToNumber)(val));
|
|
46
48
|
},
|
|
47
49
|
decode(src) {
|
|
48
50
|
return src.i16();
|
|
@@ -51,7 +53,7 @@ exports.int16 = {
|
|
|
51
53
|
};
|
|
52
54
|
exports.uint32 = {
|
|
53
55
|
encode(sink, val) {
|
|
54
|
-
sink.u32(val);
|
|
56
|
+
sink.u32((0, safeToNumber_1.safeToNumber)(val));
|
|
55
57
|
},
|
|
56
58
|
decode(src) {
|
|
57
59
|
return src.u32();
|
|
@@ -60,7 +62,7 @@ exports.uint32 = {
|
|
|
60
62
|
};
|
|
61
63
|
exports.int32 = {
|
|
62
64
|
encode(sink, val) {
|
|
63
|
-
sink.i32(val);
|
|
65
|
+
sink.i32((0, safeToNumber_1.safeToNumber)(val));
|
|
64
66
|
},
|
|
65
67
|
decode(src) {
|
|
66
68
|
return src.i32();
|
|
@@ -69,7 +71,7 @@ exports.int32 = {
|
|
|
69
71
|
};
|
|
70
72
|
exports.uint64 = {
|
|
71
73
|
encode(sink, val) {
|
|
72
|
-
sink.u64(val);
|
|
74
|
+
sink.u64(BigInt(val));
|
|
73
75
|
},
|
|
74
76
|
decode(src) {
|
|
75
77
|
return src.u64();
|
|
@@ -78,7 +80,7 @@ exports.uint64 = {
|
|
|
78
80
|
};
|
|
79
81
|
exports.int64 = {
|
|
80
82
|
encode(sink, val) {
|
|
81
|
-
sink.i64(val);
|
|
83
|
+
sink.i64(BigInt(val));
|
|
82
84
|
},
|
|
83
85
|
decode(src) {
|
|
84
86
|
return src.i64();
|
|
@@ -87,7 +89,7 @@ exports.int64 = {
|
|
|
87
89
|
};
|
|
88
90
|
exports.uint128 = {
|
|
89
91
|
encode(sink, val) {
|
|
90
|
-
sink.u128(val);
|
|
92
|
+
sink.u128(BigInt(val));
|
|
91
93
|
},
|
|
92
94
|
decode(src) {
|
|
93
95
|
return src.u128();
|
|
@@ -96,7 +98,7 @@ exports.uint128 = {
|
|
|
96
98
|
};
|
|
97
99
|
exports.int128 = {
|
|
98
100
|
encode(sink, val) {
|
|
99
|
-
sink.i128(val);
|
|
101
|
+
sink.i128(BigInt(val));
|
|
100
102
|
},
|
|
101
103
|
decode(src) {
|
|
102
104
|
return src.i128();
|
|
@@ -105,7 +107,7 @@ exports.int128 = {
|
|
|
105
107
|
};
|
|
106
108
|
exports.uint256 = {
|
|
107
109
|
encode(sink, val) {
|
|
108
|
-
sink.u256(val);
|
|
110
|
+
sink.u256(BigInt(val));
|
|
109
111
|
},
|
|
110
112
|
decode(src) {
|
|
111
113
|
return src.u256();
|
|
@@ -114,7 +116,7 @@ exports.uint256 = {
|
|
|
114
116
|
};
|
|
115
117
|
exports.int256 = {
|
|
116
118
|
encode(sink, val) {
|
|
117
|
-
sink.i256(val);
|
|
119
|
+
sink.i256(BigInt(val));
|
|
118
120
|
},
|
|
119
121
|
decode(src) {
|
|
120
122
|
return src.i256();
|
|
@@ -201,4 +203,56 @@ exports.array = array;
|
|
|
201
203
|
const struct = (components) => new struct_1.StructCodec(components);
|
|
202
204
|
exports.struct = struct;
|
|
203
205
|
exports.tuple = exports.struct;
|
|
206
|
+
exports.uint24 = exports.uint32;
|
|
207
|
+
exports.int24 = exports.int32;
|
|
208
|
+
exports.uint40 = exports.uint64;
|
|
209
|
+
exports.int40 = exports.int64;
|
|
210
|
+
exports.uint48 = exports.uint64;
|
|
211
|
+
exports.int48 = exports.int64;
|
|
212
|
+
exports.uint56 = exports.uint64;
|
|
213
|
+
exports.int56 = exports.int64;
|
|
214
|
+
exports.uint72 = exports.uint128;
|
|
215
|
+
exports.int72 = exports.int128;
|
|
216
|
+
exports.uint80 = exports.uint128;
|
|
217
|
+
exports.int80 = exports.int128;
|
|
218
|
+
exports.uint88 = exports.uint128;
|
|
219
|
+
exports.int88 = exports.int128;
|
|
220
|
+
exports.uint96 = exports.uint128;
|
|
221
|
+
exports.int96 = exports.int128;
|
|
222
|
+
exports.uint104 = exports.uint128;
|
|
223
|
+
exports.int104 = exports.int128;
|
|
224
|
+
exports.uint112 = exports.uint128;
|
|
225
|
+
exports.int112 = exports.int128;
|
|
226
|
+
exports.uint120 = exports.uint128;
|
|
227
|
+
exports.int120 = exports.int128;
|
|
228
|
+
exports.uint136 = exports.uint256;
|
|
229
|
+
exports.int136 = exports.int256;
|
|
230
|
+
exports.uint144 = exports.uint256;
|
|
231
|
+
exports.int144 = exports.int256;
|
|
232
|
+
exports.uint152 = exports.uint256;
|
|
233
|
+
exports.int152 = exports.int256;
|
|
234
|
+
exports.uint160 = exports.uint256;
|
|
235
|
+
exports.int160 = exports.int256;
|
|
236
|
+
exports.uint168 = exports.uint256;
|
|
237
|
+
exports.int168 = exports.int256;
|
|
238
|
+
exports.uint176 = exports.uint256;
|
|
239
|
+
exports.int176 = exports.int256;
|
|
240
|
+
exports.uint184 = exports.uint256;
|
|
241
|
+
exports.int184 = exports.int256;
|
|
242
|
+
exports.uint192 = exports.uint256;
|
|
243
|
+
exports.int192 = exports.int256;
|
|
244
|
+
exports.uint200 = exports.uint256;
|
|
245
|
+
exports.int200 = exports.int256;
|
|
246
|
+
exports.uint208 = exports.uint256;
|
|
247
|
+
exports.int208 = exports.int256;
|
|
248
|
+
exports.uint216 = exports.uint256;
|
|
249
|
+
exports.int216 = exports.int256;
|
|
250
|
+
exports.uint224 = exports.uint256;
|
|
251
|
+
exports.int224 = exports.int256;
|
|
252
|
+
exports.uint232 = exports.uint256;
|
|
253
|
+
exports.int232 = exports.int256;
|
|
254
|
+
exports.uint240 = exports.uint256;
|
|
255
|
+
exports.int240 = exports.int256;
|
|
256
|
+
exports.uint248 = exports.uint256;
|
|
257
|
+
exports.int248 = exports.int256;
|
|
204
258
|
//# sourceMappingURL=primitives.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/codecs/primitives.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/codecs/primitives.ts"],"names":[],"mappings":"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"}
|
package/lib/codecs/struct.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Codec, Struct,
|
|
1
|
+
import { Codec, Struct, DecodedStruct, EncodedStruct } from '../codec';
|
|
2
2
|
import { Sink } from '../sink';
|
|
3
3
|
import { Src } from '../src';
|
|
4
|
-
export declare class StructCodec<const T extends Struct> implements Codec<
|
|
4
|
+
export declare class StructCodec<const T extends Struct> implements Codec<EncodedStruct<T>, DecodedStruct<T>> {
|
|
5
5
|
readonly isDynamic: boolean;
|
|
6
6
|
readonly slotsCount: number;
|
|
7
7
|
private readonly childrenSlotsCount;
|
|
8
8
|
private readonly components;
|
|
9
9
|
constructor(components: T);
|
|
10
|
-
encode(sink: Sink, val:
|
|
10
|
+
encode(sink: Sink, val: EncodedStruct<T>): void;
|
|
11
11
|
private encodeDynamic;
|
|
12
|
-
decode(src: Src):
|
|
12
|
+
decode(src: Src): DecodedStruct<T>;
|
|
13
13
|
private decodeDynamic;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=struct.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"struct.d.ts","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAU5B,qBAAa,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACnG,SAAgB,SAAS,EAAE,OAAO,CAAA;IAClC,SAAgB,UAAU,EAAE,MAAM,CAAA;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAG;gBAElB,UAAU,EAAE,CAAC;IAYlB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAWtD,OAAO,CAAC,aAAa;IASd,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC;IAYzC,OAAO,CAAC,aAAa;CAWtB"}
|
package/lib/codecs/struct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":";;;AAIA,SAAS,UAAU,CAAC,MAA6B;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAa,WAAW;IAMtB,YAAY,UAAa;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACxC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACxD,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAA;QAC3C,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,IAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Src } from './src';
|
|
2
2
|
export { Sink } from './sink';
|
|
3
|
-
export type { Codec, Struct,
|
|
3
|
+
export type { Codec, Struct, DecodedStruct, EncodedStruct } from './codec';
|
|
4
4
|
export * from './codecs/primitives';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC1E,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safeToNumber.d.ts","sourceRoot":"","sources":["../src/safeToNumber.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAK3D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.safeToNumber = void 0;
|
|
4
|
+
function safeToNumber(value) {
|
|
5
|
+
if (!Number.isSafeInteger(value)) {
|
|
6
|
+
throw new Error(`${value} is not a safe integer`);
|
|
7
|
+
}
|
|
8
|
+
return Number(value);
|
|
9
|
+
}
|
|
10
|
+
exports.safeToNumber = safeToNumber;
|
|
11
|
+
//# sourceMappingURL=safeToNumber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safeToNumber.js","sourceRoot":"","sources":["../src/safeToNumber.ts"],"names":[],"mappings":";;;AAAA,SAAgB,YAAY,CAAC,KAAsB;IACjD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wBAAwB,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AALD,oCAKC"}
|
package/lib/sink.d.ts
CHANGED
package/lib/sink.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":";AAGA,qBAAa,IAAI;;IACf,OAAO,CAAC,GAAG,CAAI;IACf,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,KAAK,CAA6D;gBAC9D,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAa;IAUnD,MAAM,IAAI,MAAM;IAKhB,QAAQ;IAIR,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMjC,IAAI;IAIJ,OAAO,CAAC,SAAS;IAQjB,EAAE,CAAC,GAAG,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"sink.d.ts","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":";AAGA,qBAAa,IAAI;;IACf,OAAO,CAAC,GAAG,CAAI;IACf,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,KAAK,CAA6D;gBAC9D,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAa;IAUnD,MAAM,IAAI,MAAM;IAKhB,QAAQ;IAIR,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMjC,IAAI;IAIJ,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,iBAAiB;IAMzB,EAAE,CAAC,GAAG,EAAE,MAAM;IAQd,EAAE,CAAC,GAAG,EAAE,MAAM;IAKd,GAAG,CAAC,GAAG,EAAE,MAAM;IAQf,GAAG,CAAC,GAAG,EAAE,MAAM;IAKf,GAAG,CAAC,GAAG,EAAE,MAAM;IAQf,GAAG,CAAC,GAAG,EAAE,MAAM;IAKf,GAAG,CAAC,GAAG,EAAE,MAAM;IAQf,GAAG,CAAC,GAAG,EAAE,MAAM;IAUf,IAAI,CAAC,GAAG,EAAE,MAAM;IAQhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAWhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAOhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAiBhB,KAAK,CAAC,GAAG,EAAE,UAAU;IAWrB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAaxC,OAAO,CAAC,GAAG,EAAE,MAAM;IAInB,MAAM,CAAC,GAAG,EAAE,MAAM;IAWlB,IAAI,CAAC,GAAG,EAAE,OAAO;IAIjB;;;OAGG;IACH,iBAAiB,CAAC,UAAU,SAAI;IAShC,kBAAkB,CAAC,UAAU,EAAE,MAAM;IASrC,OAAO,CAAC,oBAAoB;IAIrB,2BAA2B,CAAC,MAAM,EAAE,MAAM;IAIjD,OAAO,CAAC,YAAY;IAUb,kBAAkB;CAM1B"}
|
package/lib/sink.js
CHANGED
|
@@ -7,7 +7,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
7
7
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
8
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
9
|
};
|
|
10
|
-
var _Sink_instances, _Sink_u64, _Sink_u128;
|
|
10
|
+
var _Sink_instances, _Sink_u64, _Sink_u128, _Sink_i256;
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Sink = void 0;
|
|
13
13
|
const node_assert_1 = __importDefault(require("node:assert"));
|
|
@@ -47,60 +47,75 @@ class Sink {
|
|
|
47
47
|
this.buf = buf;
|
|
48
48
|
this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength);
|
|
49
49
|
}
|
|
50
|
+
checkNumberBounds(val, min, max, typeName) {
|
|
51
|
+
if (val < min || val > max) {
|
|
52
|
+
throw new Error(`${val} is out of bounds for ${typeName}[${min}, ${max}]`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
50
55
|
u8(val) {
|
|
56
|
+
this.checkNumberBounds(val, 0n, 255n, 'uint8');
|
|
51
57
|
this.reserve(codec_1.WORD_SIZE);
|
|
52
58
|
this.pos += codec_1.WORD_SIZE - 1;
|
|
53
59
|
this.view.setUint8(this.pos, val);
|
|
54
60
|
this.pos += 1;
|
|
55
61
|
}
|
|
56
62
|
i8(val) {
|
|
57
|
-
this.
|
|
63
|
+
this.checkNumberBounds(val, -128n, 127n, 'int8');
|
|
64
|
+
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, BigInt(val));
|
|
58
65
|
}
|
|
59
66
|
u16(val) {
|
|
67
|
+
this.checkNumberBounds(val, 0n, 65535n, 'uint16');
|
|
60
68
|
this.reserve(codec_1.WORD_SIZE);
|
|
61
69
|
this.pos += codec_1.WORD_SIZE - 2;
|
|
62
70
|
this.view.setUint16(this.pos, val, false);
|
|
63
71
|
this.pos += 2;
|
|
64
72
|
}
|
|
65
73
|
i16(val) {
|
|
66
|
-
this.
|
|
74
|
+
this.checkNumberBounds(val, -32768n, 32767n, 'int16');
|
|
75
|
+
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, BigInt(val));
|
|
67
76
|
}
|
|
68
77
|
u32(val) {
|
|
78
|
+
this.checkNumberBounds(val, 0n, 4294967295n, 'uint32');
|
|
69
79
|
this.reserve(codec_1.WORD_SIZE);
|
|
70
80
|
this.pos += codec_1.WORD_SIZE - 4;
|
|
71
81
|
this.view.setUint32(this.pos, val, false);
|
|
72
82
|
this.pos += 4;
|
|
73
83
|
}
|
|
74
84
|
i32(val) {
|
|
75
|
-
this.
|
|
85
|
+
this.checkNumberBounds(val, -2147483648n, 2147483647n, 'int32');
|
|
86
|
+
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, BigInt(val));
|
|
76
87
|
}
|
|
77
88
|
u64(val) {
|
|
89
|
+
this.checkNumberBounds(val, 0n, 18446744073709551615n, 'uint64');
|
|
78
90
|
this.reserve(codec_1.WORD_SIZE);
|
|
79
91
|
this.pos += codec_1.WORD_SIZE - 8;
|
|
80
92
|
this.view.setBigUint64(this.pos, val, false);
|
|
81
93
|
this.pos += 8;
|
|
82
94
|
}
|
|
83
95
|
i64(val) {
|
|
84
|
-
this.
|
|
96
|
+
this.checkNumberBounds(val, -9223372036854775808n, 9223372036854775807n, 'int64');
|
|
97
|
+
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, val);
|
|
85
98
|
}
|
|
86
99
|
u128(val) {
|
|
100
|
+
this.checkNumberBounds(val, 0n, 340282366920938463463374607431768211455n, 'uint128');
|
|
87
101
|
this.reserve(codec_1.WORD_SIZE);
|
|
88
102
|
this.pos += codec_1.WORD_SIZE - 16;
|
|
89
103
|
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u64).call(this, val & 0xffffffffffffffffn);
|
|
90
104
|
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u64).call(this, val >> 64n);
|
|
91
105
|
}
|
|
92
106
|
i128(val) {
|
|
93
|
-
this.
|
|
107
|
+
this.checkNumberBounds(val, -170141183460469231731687303715884105728n, 170141183460469231731687303715884105727n, 'int128');
|
|
108
|
+
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, val);
|
|
94
109
|
}
|
|
95
110
|
u256(val) {
|
|
111
|
+
this.checkNumberBounds(val, 0n, 115792089237316195423570985008687907853269984665640564039457584007913129639935n, 'uint256');
|
|
96
112
|
this.reserve(codec_1.WORD_SIZE);
|
|
97
113
|
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u128).call(this, val >> 128n);
|
|
98
114
|
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u128).call(this, val & (2n ** 128n - 1n));
|
|
99
115
|
}
|
|
100
116
|
i256(val) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this.u256(val);
|
|
117
|
+
this.checkNumberBounds(val, -57896044618658097711785492504343953926634992332820282019728792003956564819968n, 57896044618658097711785492504343953926634992332820282019728792003956564819967n, 'int256');
|
|
118
|
+
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, val);
|
|
104
119
|
}
|
|
105
120
|
bytes(val) {
|
|
106
121
|
const size = Buffer.byteLength(val);
|
|
@@ -190,5 +205,11 @@ _Sink_instances = new WeakSet(), _Sink_u64 = function _Sink_u64(val) {
|
|
|
190
205
|
this.reserve(codec_1.WORD_SIZE);
|
|
191
206
|
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u64).call(this, val >> 64n);
|
|
192
207
|
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u64).call(this, val & 0xffffffffffffffffn);
|
|
208
|
+
}, _Sink_i256 = function _Sink_i256(val) {
|
|
209
|
+
let base = 2n ** 256n;
|
|
210
|
+
const uval = (val + base) % base;
|
|
211
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
212
|
+
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u128).call(this, uval >> 128n);
|
|
213
|
+
__classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u128).call(this, uval & (2n ** 128n - 1n));
|
|
193
214
|
};
|
|
194
215
|
//# sourceMappingURL=sink.js.map
|
package/lib/sink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sink.js","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8DAAgC;AAChC,mCAAmC;AAEnC,MAAa,IAAI;IAKf,YAAY,MAAc,EAAE,WAAmB,IAAI;;QAJ3C,QAAG,GAAG,CAAC,CAAA;QAGP,UAAK,GAA2D,EAAE,CAAA;QAExE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,CAAC;YACR,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,MAAM,GAAG,iBAAS;SACzB,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACrF,CAAC;IAED,MAAM;QACJ,IAAA,qBAAM,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,2CAA2C,CAAC,CAAA;QAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO,CAAC,UAAkB;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/C,CAAC;IAEO,SAAS,CAAC,GAAW;QAC3B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxC,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC3B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACrF,CAAC;IAED,EAAE,CAAC,GAAW;QACZ,IAAI,CAAC,OAAO,CAAC,iBAAS,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,IAAI,iBAAS,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACf,CAAC;IAED,EAAE,CAAC,GAAW;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"sink.js","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subsquid/evm-codec",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "EVM encoder/decoder tools",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"repository": "git@github.com:subsquid/squid.git",
|
|
@@ -15,12 +15,13 @@
|
|
|
15
15
|
"dependencies": {},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@types/node": "^18.18.14",
|
|
18
|
-
"ethers": "^
|
|
18
|
+
"ethers": "^6.9.0",
|
|
19
19
|
"typescript": "~5.3.2",
|
|
20
20
|
"viem": "^2.8.14",
|
|
21
21
|
"vitest": "^1.4.0"
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
|
-
"build": "rm -rf lib && tsc -p tsconfig.build.json"
|
|
24
|
+
"build": "rm -rf lib && tsc -p tsconfig.build.json",
|
|
25
|
+
"test": "vitest --run"
|
|
25
26
|
}
|
|
26
27
|
}
|
package/src/codec.ts
CHANGED
|
@@ -3,9 +3,9 @@ import type { Src } from './src'
|
|
|
3
3
|
|
|
4
4
|
export const WORD_SIZE = 32
|
|
5
5
|
|
|
6
|
-
export interface Codec<
|
|
7
|
-
encode(sink: Sink, val:
|
|
8
|
-
decode(src: Src):
|
|
6
|
+
export interface Codec<TIn, TOut = TIn> {
|
|
7
|
+
encode(sink: Sink, val: TIn): void
|
|
8
|
+
decode(src: Src): TOut
|
|
9
9
|
isDynamic: boolean
|
|
10
10
|
slotsCount?: number
|
|
11
11
|
}
|
|
@@ -16,6 +16,10 @@ export type Struct = {
|
|
|
16
16
|
|
|
17
17
|
type Pretty<T> = { [K in keyof T]: T[K] } & unknown
|
|
18
18
|
|
|
19
|
-
export type
|
|
20
|
-
[K in keyof T]: T[K] extends Codec<infer U> ? U : never
|
|
19
|
+
export type DecodedStruct<T extends Struct> = Pretty<{
|
|
20
|
+
[K in keyof T]: T[K] extends Codec<any, infer U> ? U : never
|
|
21
|
+
}>
|
|
22
|
+
|
|
23
|
+
export type EncodedStruct<T extends Struct> = Pretty<{
|
|
24
|
+
[K in keyof T]: T[K] extends Codec<infer U, any> ? U : never
|
|
21
25
|
}>
|
package/src/codecs/primitives.ts
CHANGED
|
@@ -3,6 +3,9 @@ import { Sink } from '../sink'
|
|
|
3
3
|
import { Src } from '../src'
|
|
4
4
|
import { ArrayCodec, FixedSizeArrayCodec } from './array'
|
|
5
5
|
import { StructCodec } from './struct'
|
|
6
|
+
import { safeToNumber } from "../safeToNumber";
|
|
7
|
+
|
|
8
|
+
type Numberish = number | bigint
|
|
6
9
|
|
|
7
10
|
export const bool: Codec<boolean> = {
|
|
8
11
|
encode: function (sink: Sink, val: boolean) {
|
|
@@ -14,9 +17,9 @@ export const bool: Codec<boolean> = {
|
|
|
14
17
|
isDynamic: false,
|
|
15
18
|
}
|
|
16
19
|
|
|
17
|
-
export const uint8: Codec<number> = {
|
|
18
|
-
encode(sink: Sink, val:
|
|
19
|
-
sink.u8(val)
|
|
20
|
+
export const uint8: Codec<Numberish, number> = {
|
|
21
|
+
encode(sink: Sink, val: Numberish) {
|
|
22
|
+
sink.u8(safeToNumber(val))
|
|
20
23
|
},
|
|
21
24
|
decode(src: Src): number {
|
|
22
25
|
return src.u8()
|
|
@@ -24,9 +27,9 @@ export const uint8: Codec<number> = {
|
|
|
24
27
|
isDynamic: false,
|
|
25
28
|
}
|
|
26
29
|
|
|
27
|
-
export const int8: Codec<number> = {
|
|
28
|
-
encode(sink: Sink, val:
|
|
29
|
-
sink.i8(val)
|
|
30
|
+
export const int8: Codec<Numberish, number> = {
|
|
31
|
+
encode(sink: Sink, val: Numberish) {
|
|
32
|
+
sink.i8(safeToNumber(val))
|
|
30
33
|
},
|
|
31
34
|
decode(src: Src): number {
|
|
32
35
|
return src.i8()
|
|
@@ -34,9 +37,9 @@ export const int8: Codec<number> = {
|
|
|
34
37
|
isDynamic: false,
|
|
35
38
|
}
|
|
36
39
|
|
|
37
|
-
export const uint16: Codec<number> = {
|
|
38
|
-
encode(sink: Sink, val:
|
|
39
|
-
sink.u16(val)
|
|
40
|
+
export const uint16: Codec<Numberish, number> = {
|
|
41
|
+
encode(sink: Sink, val: Numberish) {
|
|
42
|
+
sink.u16(safeToNumber(val))
|
|
40
43
|
},
|
|
41
44
|
decode(src: Src): number {
|
|
42
45
|
return src.u16()
|
|
@@ -44,9 +47,9 @@ export const uint16: Codec<number> = {
|
|
|
44
47
|
isDynamic: false,
|
|
45
48
|
}
|
|
46
49
|
|
|
47
|
-
export const int16: Codec<number> = {
|
|
48
|
-
encode(sink: Sink, val:
|
|
49
|
-
sink.i16(val)
|
|
50
|
+
export const int16: Codec<Numberish, number> = {
|
|
51
|
+
encode(sink: Sink, val: Numberish) {
|
|
52
|
+
sink.i16(safeToNumber(val))
|
|
50
53
|
},
|
|
51
54
|
decode(src: Src): number {
|
|
52
55
|
return src.i16()
|
|
@@ -54,9 +57,9 @@ export const int16: Codec<number> = {
|
|
|
54
57
|
isDynamic: false,
|
|
55
58
|
}
|
|
56
59
|
|
|
57
|
-
export const uint32: Codec<number> = {
|
|
58
|
-
encode(sink: Sink, val:
|
|
59
|
-
sink.u32(val)
|
|
60
|
+
export const uint32: Codec<Numberish, number> = {
|
|
61
|
+
encode(sink: Sink, val: Numberish) {
|
|
62
|
+
sink.u32(safeToNumber(val))
|
|
60
63
|
},
|
|
61
64
|
decode(src: Src): number {
|
|
62
65
|
return src.u32()
|
|
@@ -64,9 +67,9 @@ export const uint32: Codec<number> = {
|
|
|
64
67
|
isDynamic: false,
|
|
65
68
|
}
|
|
66
69
|
|
|
67
|
-
export const int32: Codec<number> = {
|
|
68
|
-
encode(sink: Sink, val:
|
|
69
|
-
sink.i32(val)
|
|
70
|
+
export const int32: Codec<Numberish, number> = {
|
|
71
|
+
encode(sink: Sink, val: Numberish) {
|
|
72
|
+
sink.i32(safeToNumber(val))
|
|
70
73
|
},
|
|
71
74
|
decode(src: Src): number {
|
|
72
75
|
return src.i32()
|
|
@@ -74,9 +77,9 @@ export const int32: Codec<number> = {
|
|
|
74
77
|
isDynamic: false,
|
|
75
78
|
}
|
|
76
79
|
|
|
77
|
-
export const uint64: Codec<bigint> = {
|
|
78
|
-
encode(sink: Sink, val:
|
|
79
|
-
sink.u64(val)
|
|
80
|
+
export const uint64: Codec<Numberish, bigint> = {
|
|
81
|
+
encode(sink: Sink, val: Numberish) {
|
|
82
|
+
sink.u64(BigInt(val))
|
|
80
83
|
},
|
|
81
84
|
decode(src: Src): bigint {
|
|
82
85
|
return src.u64()
|
|
@@ -84,9 +87,9 @@ export const uint64: Codec<bigint> = {
|
|
|
84
87
|
isDynamic: false,
|
|
85
88
|
}
|
|
86
89
|
|
|
87
|
-
export const int64: Codec<bigint> = {
|
|
88
|
-
encode(sink: Sink, val:
|
|
89
|
-
sink.i64(val)
|
|
90
|
+
export const int64: Codec<Numberish, bigint> = {
|
|
91
|
+
encode(sink: Sink, val: Numberish) {
|
|
92
|
+
sink.i64(BigInt(val))
|
|
90
93
|
},
|
|
91
94
|
decode(src: Src): bigint {
|
|
92
95
|
return src.i64()
|
|
@@ -94,9 +97,9 @@ export const int64: Codec<bigint> = {
|
|
|
94
97
|
isDynamic: false,
|
|
95
98
|
}
|
|
96
99
|
|
|
97
|
-
export const uint128: Codec<bigint> = {
|
|
98
|
-
encode(sink: Sink, val:
|
|
99
|
-
sink.u128(val)
|
|
100
|
+
export const uint128: Codec<Numberish, bigint> = {
|
|
101
|
+
encode(sink: Sink, val: Numberish) {
|
|
102
|
+
sink.u128(BigInt(val))
|
|
100
103
|
},
|
|
101
104
|
decode(src: Src): bigint {
|
|
102
105
|
return src.u128()
|
|
@@ -104,9 +107,9 @@ export const uint128: Codec<bigint> = {
|
|
|
104
107
|
isDynamic: false,
|
|
105
108
|
}
|
|
106
109
|
|
|
107
|
-
export const int128: Codec<bigint> = {
|
|
108
|
-
encode(sink: Sink, val:
|
|
109
|
-
sink.i128(val)
|
|
110
|
+
export const int128: Codec<Numberish, bigint> = {
|
|
111
|
+
encode(sink: Sink, val: Numberish) {
|
|
112
|
+
sink.i128(BigInt(val))
|
|
110
113
|
},
|
|
111
114
|
decode(src: Src): bigint {
|
|
112
115
|
return src.i128()
|
|
@@ -114,9 +117,9 @@ export const int128: Codec<bigint> = {
|
|
|
114
117
|
isDynamic: false,
|
|
115
118
|
}
|
|
116
119
|
|
|
117
|
-
export const uint256: Codec<bigint> = {
|
|
118
|
-
encode(sink: Sink, val:
|
|
119
|
-
sink.u256(val)
|
|
120
|
+
export const uint256: Codec<Numberish, bigint> = {
|
|
121
|
+
encode(sink: Sink, val: Numberish) {
|
|
122
|
+
sink.u256(BigInt(val))
|
|
120
123
|
},
|
|
121
124
|
decode(src: Src): bigint {
|
|
122
125
|
return src.u256()
|
|
@@ -124,9 +127,9 @@ export const uint256: Codec<bigint> = {
|
|
|
124
127
|
isDynamic: false,
|
|
125
128
|
}
|
|
126
129
|
|
|
127
|
-
export const int256: Codec<bigint> = {
|
|
128
|
-
encode(sink: Sink, val:
|
|
129
|
-
sink.i256(val)
|
|
130
|
+
export const int256: Codec<Numberish, bigint> = {
|
|
131
|
+
encode(sink: Sink, val: Numberish) {
|
|
132
|
+
sink.i256(BigInt(val))
|
|
130
133
|
},
|
|
131
134
|
decode(src: Src): bigint {
|
|
132
135
|
return src.i256()
|
|
@@ -223,3 +226,57 @@ type Struct = {
|
|
|
223
226
|
export const struct = <const T extends Struct>(components: T) => new StructCodec<T>(components)
|
|
224
227
|
|
|
225
228
|
export const tuple = struct
|
|
229
|
+
|
|
230
|
+
export const uint24 = uint32
|
|
231
|
+
export const int24 = int32
|
|
232
|
+
export const uint40 = uint64
|
|
233
|
+
export const int40 = int64
|
|
234
|
+
export const uint48 = uint64
|
|
235
|
+
export const int48 = int64
|
|
236
|
+
export const uint56 = uint64
|
|
237
|
+
export const int56 = int64
|
|
238
|
+
export const uint72 = uint128
|
|
239
|
+
export const int72 = int128
|
|
240
|
+
export const uint80 = uint128
|
|
241
|
+
export const int80 = int128
|
|
242
|
+
export const uint88 = uint128
|
|
243
|
+
export const int88 = int128
|
|
244
|
+
export const uint96 = uint128
|
|
245
|
+
export const int96 = int128
|
|
246
|
+
export const uint104 = uint128
|
|
247
|
+
export const int104 = int128
|
|
248
|
+
export const uint112 = uint128
|
|
249
|
+
export const int112 = int128
|
|
250
|
+
export const uint120 = uint128
|
|
251
|
+
export const int120 = int128
|
|
252
|
+
export const uint136 = uint256
|
|
253
|
+
export const int136 = int256
|
|
254
|
+
export const uint144 = uint256
|
|
255
|
+
export const int144 = int256
|
|
256
|
+
export const uint152 = uint256
|
|
257
|
+
export const int152 = int256
|
|
258
|
+
export const uint160 = uint256
|
|
259
|
+
export const int160 = int256
|
|
260
|
+
export const uint168 = uint256
|
|
261
|
+
export const int168 = int256
|
|
262
|
+
export const uint176 = uint256
|
|
263
|
+
export const int176 = int256
|
|
264
|
+
export const uint184 = uint256
|
|
265
|
+
export const int184 = int256
|
|
266
|
+
export const uint192 = uint256
|
|
267
|
+
export const int192 = int256
|
|
268
|
+
export const uint200 = uint256
|
|
269
|
+
export const int200 = int256
|
|
270
|
+
export const uint208 = uint256
|
|
271
|
+
export const int208 = int256
|
|
272
|
+
export const uint216 = uint256
|
|
273
|
+
export const int216 = int256
|
|
274
|
+
export const uint224 = uint256
|
|
275
|
+
export const int224 = int256
|
|
276
|
+
export const uint232 = uint256
|
|
277
|
+
export const int232 = int256
|
|
278
|
+
export const uint240 = uint256
|
|
279
|
+
export const int240 = int256
|
|
280
|
+
export const uint248 = uint256
|
|
281
|
+
export const int248 = int256
|
|
282
|
+
|
package/src/codecs/struct.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {Codec, Struct, DecodedStruct, EncodedStruct} from '../codec'
|
|
2
2
|
import { Sink } from '../sink'
|
|
3
3
|
import { Src } from '../src'
|
|
4
4
|
|
|
@@ -10,7 +10,7 @@ function slotsCount(codecs: readonly Codec<any>[]) {
|
|
|
10
10
|
return count
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export class StructCodec<const T extends Struct> implements Codec<
|
|
13
|
+
export class StructCodec<const T extends Struct> implements Codec<EncodedStruct<T>, DecodedStruct<T>> {
|
|
14
14
|
public readonly isDynamic: boolean
|
|
15
15
|
public readonly slotsCount: number
|
|
16
16
|
private readonly childrenSlotsCount: number
|
|
@@ -28,7 +28,7 @@ export class StructCodec<const T extends Struct> implements Codec<StructTypes<T>
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
public encode(sink: Sink, val:
|
|
31
|
+
public encode(sink: Sink, val: EncodedStruct<T>): void {
|
|
32
32
|
if (this.isDynamic) {
|
|
33
33
|
this.encodeDynamic(sink, val)
|
|
34
34
|
return
|
|
@@ -39,7 +39,7 @@ export class StructCodec<const T extends Struct> implements Codec<StructTypes<T>
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
private encodeDynamic(sink: Sink, val:
|
|
42
|
+
private encodeDynamic(sink: Sink, val: EncodedStruct<T>): void {
|
|
43
43
|
sink.newStaticDataArea(this.childrenSlotsCount)
|
|
44
44
|
for (let i in this.components) {
|
|
45
45
|
let prop = this.components[i]
|
|
@@ -48,7 +48,7 @@ export class StructCodec<const T extends Struct> implements Codec<StructTypes<T>
|
|
|
48
48
|
sink.endCurrentDataArea()
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
public decode(src: Src):
|
|
51
|
+
public decode(src: Src): DecodedStruct<T> {
|
|
52
52
|
if (this.isDynamic) {
|
|
53
53
|
return this.decodeDynamic(src)
|
|
54
54
|
}
|
|
@@ -60,7 +60,7 @@ export class StructCodec<const T extends Struct> implements Codec<StructTypes<T>
|
|
|
60
60
|
return result
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
private decodeDynamic(src: Src):
|
|
63
|
+
private decodeDynamic(src: Src): DecodedStruct<T> {
|
|
64
64
|
let result: any = {}
|
|
65
65
|
|
|
66
66
|
const offset = src.u32()
|
package/src/index.ts
CHANGED
package/src/sink.ts
CHANGED
|
@@ -43,7 +43,14 @@ export class Sink {
|
|
|
43
43
|
this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength)
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
private checkNumberBounds(val: bigint | number, min: bigint, max: bigint, typeName: string) {
|
|
47
|
+
if (val < min || val > max) {
|
|
48
|
+
throw new Error(`${val} is out of bounds for ${typeName}[${min}, ${max}]`)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
46
52
|
u8(val: number) {
|
|
53
|
+
this.checkNumberBounds(val, 0n, 255n, 'uint8')
|
|
47
54
|
this.reserve(WORD_SIZE)
|
|
48
55
|
this.pos += WORD_SIZE - 1
|
|
49
56
|
this.view.setUint8(this.pos, val)
|
|
@@ -51,10 +58,12 @@ export class Sink {
|
|
|
51
58
|
}
|
|
52
59
|
|
|
53
60
|
i8(val: number) {
|
|
54
|
-
this.
|
|
61
|
+
this.checkNumberBounds(val, -128n, 127n, 'int8')
|
|
62
|
+
this.#i256(BigInt(val))
|
|
55
63
|
}
|
|
56
64
|
|
|
57
65
|
u16(val: number) {
|
|
66
|
+
this.checkNumberBounds(val, 0n, 65535n, 'uint16')
|
|
58
67
|
this.reserve(WORD_SIZE)
|
|
59
68
|
this.pos += WORD_SIZE - 2
|
|
60
69
|
this.view.setUint16(this.pos, val, false)
|
|
@@ -62,10 +71,12 @@ export class Sink {
|
|
|
62
71
|
}
|
|
63
72
|
|
|
64
73
|
i16(val: number) {
|
|
65
|
-
this.
|
|
74
|
+
this.checkNumberBounds(val, -32768n, 32767n, 'int16')
|
|
75
|
+
this.#i256(BigInt(val))
|
|
66
76
|
}
|
|
67
77
|
|
|
68
78
|
u32(val: number) {
|
|
79
|
+
this.checkNumberBounds(val, 0n, 4294967295n, 'uint32')
|
|
69
80
|
this.reserve(WORD_SIZE)
|
|
70
81
|
this.pos += WORD_SIZE - 4
|
|
71
82
|
this.view.setUint32(this.pos, val, false)
|
|
@@ -73,10 +84,12 @@ export class Sink {
|
|
|
73
84
|
}
|
|
74
85
|
|
|
75
86
|
i32(val: number) {
|
|
76
|
-
this.
|
|
87
|
+
this.checkNumberBounds(val, -2147483648n, 2147483647n, 'int32')
|
|
88
|
+
this.#i256(BigInt(val))
|
|
77
89
|
}
|
|
78
90
|
|
|
79
91
|
u64(val: bigint) {
|
|
92
|
+
this.checkNumberBounds(val, 0n, 18446744073709551615n, 'uint64')
|
|
80
93
|
this.reserve(WORD_SIZE)
|
|
81
94
|
this.pos += WORD_SIZE - 8
|
|
82
95
|
this.view.setBigUint64(this.pos, val, false)
|
|
@@ -84,7 +97,8 @@ export class Sink {
|
|
|
84
97
|
}
|
|
85
98
|
|
|
86
99
|
i64(val: bigint) {
|
|
87
|
-
this.
|
|
100
|
+
this.checkNumberBounds(val, -9223372036854775808n, 9223372036854775807n, 'int64')
|
|
101
|
+
this.#i256(val)
|
|
88
102
|
}
|
|
89
103
|
|
|
90
104
|
#u64(val: bigint) {
|
|
@@ -93,6 +107,7 @@ export class Sink {
|
|
|
93
107
|
}
|
|
94
108
|
|
|
95
109
|
u128(val: bigint) {
|
|
110
|
+
this.checkNumberBounds(val, 0n, 340282366920938463463374607431768211455n, 'uint128')
|
|
96
111
|
this.reserve(WORD_SIZE)
|
|
97
112
|
this.pos += WORD_SIZE - 16
|
|
98
113
|
this.#u64(val & 0xffffffffffffffffn)
|
|
@@ -100,7 +115,8 @@ export class Sink {
|
|
|
100
115
|
}
|
|
101
116
|
|
|
102
117
|
i128(val: bigint) {
|
|
103
|
-
this.
|
|
118
|
+
this.checkNumberBounds(val, -170141183460469231731687303715884105728n, 170141183460469231731687303715884105727n, 'int128')
|
|
119
|
+
this.#i256(val)
|
|
104
120
|
}
|
|
105
121
|
|
|
106
122
|
#u128(val: bigint) {
|
|
@@ -110,15 +126,27 @@ export class Sink {
|
|
|
110
126
|
}
|
|
111
127
|
|
|
112
128
|
u256(val: bigint) {
|
|
129
|
+
this.checkNumberBounds(val, 0n, 115792089237316195423570985008687907853269984665640564039457584007913129639935n, 'uint256')
|
|
113
130
|
this.reserve(WORD_SIZE)
|
|
114
131
|
this.#u128(val >> 128n)
|
|
115
132
|
this.#u128(val & (2n ** 128n - 1n))
|
|
116
133
|
}
|
|
117
134
|
|
|
118
135
|
i256(val: bigint) {
|
|
136
|
+
this.checkNumberBounds(val,
|
|
137
|
+
-57896044618658097711785492504343953926634992332820282019728792003956564819968n,
|
|
138
|
+
57896044618658097711785492504343953926634992332820282019728792003956564819967n,
|
|
139
|
+
'int256'
|
|
140
|
+
)
|
|
141
|
+
this.#i256(val)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
#i256(val: bigint) {
|
|
119
145
|
let base = 2n ** 256n
|
|
120
|
-
|
|
121
|
-
this.
|
|
146
|
+
const uval = (val + base) % base
|
|
147
|
+
this.reserve(WORD_SIZE)
|
|
148
|
+
this.#u128(uval >> 128n)
|
|
149
|
+
this.#u128(uval & (2n ** 128n - 1n))
|
|
122
150
|
}
|
|
123
151
|
|
|
124
152
|
bytes(val: Uint8Array) {
|