@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 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<T> {
5
- encode(sink: Sink, val: T): void;
6
- decode(src: Src): T;
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 StructTypes<T extends Struct> = Pretty<{
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
@@ -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,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAA;IAChC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAA;IACnB,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,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC;KAChD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACxD,CAAC,CAAA"}
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":"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"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/codecs/primitives.ts"],"names":[],"mappings":"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"}
@@ -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":"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CAAC,CAAA;AAClB,QAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,QAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,QAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,QAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,QAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,QAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,QAAA,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AAEpB,QAAA,OAAO,GAAkB;IACpC,MAAM,CAAC,IAAU,EAAE,GAAW;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC;IACD,MAAM,CAAC,GAAQ;QACb,OAAO,GAAG,CAAC,OAAO,EAAE,CAAA;IACtB,CAAC;IACD,SAAS,EAAE,KAAK;CACjB,CAAA;AAEM,MAAM,cAAc,GAAG,CAAI,IAAc,EAAE,IAAY,EAAc,EAAE,CAAC,IAAI,2BAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAArG,QAAA,cAAc,kBAAuF;AAE3G,MAAM,KAAK,GAAG,CAAI,IAAc,EAAc,EAAE,CAAC,IAAI,kBAAU,CAAC,IAAI,CAAC,CAAA;AAA/D,QAAA,KAAK,SAA0D;AAMrE,MAAM,MAAM,GAAG,CAAyB,UAAa,EAAE,EAAE,CAAC,IAAI,oBAAW,CAAI,UAAU,CAAC,CAAA;AAAlF,QAAA,MAAM,UAA4E;AAElF,QAAA,KAAK,GAAG,cAAM,CAAA"}
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/codecs/primitives.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
- import { Codec, Struct, StructTypes } from '../codec';
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<StructTypes<T>> {
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: StructTypes<T>): void;
10
+ encode(sink: Sink, val: EncodedStruct<T>): void;
11
11
  private encodeDynamic;
12
- decode(src: Src): StructTypes<T>;
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,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACrD,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,WAAW,CAAC,CAAC,CAAC,CAAC;IAC/E,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,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAWpD,OAAO,CAAC,aAAa;IASd,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;IAYvC,OAAO,CAAC,aAAa;CAWtB"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"struct.js","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":"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"}
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, StructTypes } from './codec';
3
+ export type { Codec, Struct, DecodedStruct, EncodedStruct } from './codec';
4
4
  export * from './codecs/primitives';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -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,WAAW,EAAE,MAAM,SAAS,CAAA;AACzD,cAAc,qBAAqB,CAAA"}
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,2 @@
1
+ export declare function safeToNumber(value: number | bigint): number;
2
+ //# sourceMappingURL=safeToNumber.d.ts.map
@@ -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
@@ -11,6 +11,7 @@ export declare class Sink {
11
11
  reserve(additional: number): void;
12
12
  size(): number;
13
13
  private _allocate;
14
+ private checkNumberBounds;
14
15
  u8(val: number): void;
15
16
  i8(val: number): void;
16
17
  u16(val: number): void;
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;IAOd,EAAE,CAAC,GAAG,EAAE,MAAM;IAId,GAAG,CAAC,GAAG,EAAE,MAAM;IAOf,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,GAAG,CAAC,GAAG,EAAE,MAAM;IAOf,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,GAAG,CAAC,GAAG,EAAE,MAAM;IAOf,GAAG,CAAC,GAAG,EAAE,MAAM;IASf,IAAI,CAAC,GAAG,EAAE,MAAM;IAOhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAUhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAMhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAMhB,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"}
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.i256(BigInt(val));
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.i256(BigInt(val));
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.i256(BigInt(val));
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.i256(val);
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.i256(BigInt(val));
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
- let base = 2n ** 256n;
102
- val = (val + base) % base;
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;IACxB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,OAAO,CAAC,iBAAS,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,IAAI,iBAAS,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACf,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,OAAO,CAAC,iBAAS,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,IAAI,iBAAS,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACf,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,OAAO,CAAC,iBAAS,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,IAAI,iBAAS,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACf,CAAC;IAED,GAAG,CAAC,GAAW;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChB,CAAC;IAOD,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,OAAO,CAAC,iBAAS,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,IAAI,iBAAS,GAAG,EAAE,CAAA;QAC1B,uBAAA,IAAI,kCAAK,MAAT,IAAI,EAAM,GAAG,GAAG,mBAAmB,CAAC,CAAA;QACpC,uBAAA,IAAI,kCAAK,MAAT,IAAI,EAAM,GAAG,IAAI,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACxB,CAAC;IAQD,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,OAAO,CAAC,iBAAS,CAAC,CAAA;QACvB,uBAAA,IAAI,mCAAM,MAAV,IAAI,EAAO,GAAG,IAAI,IAAI,CAAC,CAAA;QACvB,uBAAA,IAAI,mCAAM,MAAV,IAAI,EAAO,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,CAAA;QACrB,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,GAAe;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,iBAAS,CAAC,CAAA;QAC9C,MAAM,YAAY,GAAG,iBAAS,GAAG,UAAU,CAAA;QAC3C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,GAAG,IAAI,YAAY,CAAA;QACxB,IAAI,CAAC,2BAA2B,CAAC,YAAY,GAAG,iBAAS,CAAC,CAAA;IAC5D,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,GAAe;QACtC,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,sBAAsB,CAAC,CAAA;QACpD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,iBAAS,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,GAAG,IAAI,iBAAS,CAAA;IACvB,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,iBAAS,CAAC,CAAA;QAC9C,MAAM,YAAY,GAAG,iBAAS,GAAG,UAAU,CAAA;QAC3C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG,IAAI,YAAY,CAAA;QACxB,IAAI,CAAC,2BAA2B,CAAC,YAAY,GAAG,iBAAS,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,CAAC,GAAY;QACf,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,UAAU,GAAG,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACjD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,EAAE,UAAU,CAAC,CAAA;QACrD,IAAI,CAAC,GAAG,GAAG,aAAa,GAAG,MAAM,CAAA;IACnC,CAAC;IAED,iEAAiE;IACjE,kBAAkB,CAAC,UAAkB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACjD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,GAAG,iBAAS,EAAE,UAAU,CAAC,CAAA;QACjE,IAAI,CAAC,GAAG,GAAG,aAAa,GAAG,MAAM,CAAA;QACjC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACtB,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;IAChD,CAAC;IAEM,2BAA2B,CAAC,MAAc;QAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAA;IAClD,CAAC;IAEO,YAAY,CAAC,aAAqB,EAAE,UAAkB;QAC5D,MAAM,IAAI,GAAG,UAAU,GAAG,iBAAS,CAAA;QACnC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAEM,kBAAkB;QACvB,IAAA,qBAAM,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAA;QAC5D,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAG,CAAA;QAC/C,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,GAAG,GAAG,WAAW,CAAA;IACxB,CAAC;CACF;AAjND,oBAiNC;gEA3HM,GAAW;IACd,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IAC5C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;AACf,CAAC,mCAaK,GAAW;IACf,IAAI,CAAC,OAAO,CAAC,iBAAS,CAAC,CAAA;IACvB,uBAAA,IAAI,kCAAK,MAAT,IAAI,EAAM,GAAG,IAAI,GAAG,CAAC,CAAA;IACrB,uBAAA,IAAI,kCAAK,MAAT,IAAI,EAAM,GAAG,GAAG,mBAAmB,CAAC,CAAA;AACtC,CAAC"}
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.0.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": "^5.7.2",
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<T> {
7
- encode(sink: Sink, val: T): void
8
- decode(src: Src): T
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 StructTypes<T extends Struct> = Pretty<{
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
  }>
@@ -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: number) {
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: number) {
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: number) {
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: number) {
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: number) {
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: number) {
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: bigint) {
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: bigint) {
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: bigint) {
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: bigint) {
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: bigint) {
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: bigint) {
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
+
@@ -1,4 +1,4 @@
1
- import { Codec, Struct, StructTypes } from '../codec'
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<StructTypes<T>> {
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: StructTypes<T>): void {
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: StructTypes<T>): void {
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): StructTypes<T> {
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): StructTypes<T> {
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
@@ -1,4 +1,4 @@
1
1
  export { Src } from './src'
2
2
  export { Sink } from './sink'
3
- export type { Codec, Struct, StructTypes } from './codec'
3
+ export type { Codec, Struct, DecodedStruct, EncodedStruct } from './codec'
4
4
  export * from './codecs/primitives'
@@ -0,0 +1,6 @@
1
+ export function safeToNumber(value: number | bigint): number {
2
+ if (!Number.isSafeInteger(value)) {
3
+ throw new Error(`${value} is not a safe integer`)
4
+ }
5
+ return Number(value)
6
+ }
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.i256(BigInt(val))
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.i256(BigInt(val))
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.i256(BigInt(val))
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.i256(val)
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.i256(BigInt(val))
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
- val = (val + base) % base
121
- this.u256(val)
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) {