@subsquid/evm-codec 0.0.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/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @subsquid/evm-codec
2
+
3
+ Encoder and decoder for EVM arguments
package/lib/codec.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { Sink } from './sink';
2
+ import type { Src } from './src';
3
+ export declare const WORD_SIZE = 32;
4
+ export interface Codec<T> {
5
+ encode(sink: Sink, val: T): void;
6
+ decode(src: Src): T;
7
+ isDynamic: boolean;
8
+ slotsCount?: number;
9
+ }
10
+ export type Struct = {
11
+ [key: string]: Codec<any>;
12
+ };
13
+ type Pretty<T> = {
14
+ [K in keyof T]: T[K];
15
+ } & unknown;
16
+ export type StructTypes<T extends Struct> = Pretty<{
17
+ [K in keyof T]: T[K] extends Codec<infer U> ? U : never;
18
+ }>;
19
+ export {};
20
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +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"}
package/lib/codec.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WORD_SIZE = void 0;
4
+ exports.WORD_SIZE = 32;
5
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":";;;AAGa,QAAA,SAAS,GAAG,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { Codec } from '../codec';
2
+ import { Sink } from '../sink';
3
+ import { Src } from '../src';
4
+ export declare class ArrayCodec<const T> implements Codec<readonly T[]> {
5
+ readonly item: Codec<T>;
6
+ readonly isDynamic = true;
7
+ constructor(item: Codec<T>);
8
+ encode(sink: Sink, val: T[]): void;
9
+ decode(src: Src): T[];
10
+ }
11
+ export declare class FixedSizeArrayCodec<const T> implements Codec<readonly T[]> {
12
+ readonly item: Codec<T>;
13
+ readonly size: number;
14
+ isDynamic: boolean;
15
+ slotsCount: number;
16
+ constructor(item: Codec<T>, size: number);
17
+ encode(sink: Sink, val: T[]): void;
18
+ private encodeDynamic;
19
+ decode(src: Src): T[];
20
+ private decodeDynamic;
21
+ }
22
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/codecs/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAE5B,qBAAa,UAAU,CAAC,KAAK,CAAC,CAAC,CAAE,YAAW,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;aAGjC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAF1C,SAAgB,SAAS,QAAO;gBAEJ,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1C,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;IAS3B,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;CActB;AAED,qBAAa,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAE,YAAW,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;aAG1C,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAAkB,IAAI,EAAE,MAAM;IAFjE,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;gBACG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAkB,IAAI,EAAE,MAAM;IAKxE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;IAY3B,OAAO,CAAC,aAAa;IAQrB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE;IAWrB,OAAO,CAAC,aAAa;CAStB"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FixedSizeArrayCodec = exports.ArrayCodec = void 0;
4
+ const codec_1 = require("../codec");
5
+ class ArrayCodec {
6
+ constructor(item) {
7
+ this.item = item;
8
+ this.isDynamic = true;
9
+ }
10
+ encode(sink, val) {
11
+ sink.newDynamicDataArea(val.length);
12
+ for (let i = 0; i < val.length; i++) {
13
+ this.item.encode(sink, val[i]);
14
+ }
15
+ sink.increaseCurrentDataAreaSize(codec_1.WORD_SIZE);
16
+ sink.endCurrentDataArea();
17
+ }
18
+ decode(src) {
19
+ const offset = src.u32();
20
+ src.safeJump(offset);
21
+ const len = src.u32();
22
+ const tmpSrc = src.slice(offset + codec_1.WORD_SIZE);
23
+ const val = new Array(len);
24
+ for (let i = 0; i < val.length; i++) {
25
+ val[i] = this.item.decode(tmpSrc);
26
+ }
27
+ src.jumpBack();
28
+ return val;
29
+ }
30
+ }
31
+ exports.ArrayCodec = ArrayCodec;
32
+ class FixedSizeArrayCodec {
33
+ constructor(item, size) {
34
+ this.item = item;
35
+ this.size = size;
36
+ this.isDynamic = item.isDynamic && size > 0;
37
+ this.slotsCount = this.isDynamic ? 1 : size;
38
+ }
39
+ encode(sink, val) {
40
+ if (val.length !== this.size) {
41
+ throw new Error(`invalid array length: ${val.length}. Expected: ${this.size}`);
42
+ }
43
+ if (this.isDynamic) {
44
+ return this.encodeDynamic(sink, val);
45
+ }
46
+ for (let i = 0; i < this.size; i++) {
47
+ this.item.encode(sink, val[i]);
48
+ }
49
+ }
50
+ encodeDynamic(sink, val) {
51
+ sink.newStaticDataArea(this.size);
52
+ for (let i = 0; i < val.length; i++) {
53
+ this.item.encode(sink, val[i]);
54
+ }
55
+ sink.endCurrentDataArea();
56
+ }
57
+ decode(src) {
58
+ if (this.isDynamic) {
59
+ return this.decodeDynamic(src);
60
+ }
61
+ let val = new Array(this.size);
62
+ for (let i = 0; i < val.length; i++) {
63
+ val[i] = this.item.decode(src);
64
+ }
65
+ return val;
66
+ }
67
+ decodeDynamic(src) {
68
+ const offset = src.u32();
69
+ const tmpSrc = src.slice(offset);
70
+ let val = new Array(this.size);
71
+ for (let i = 0; i < val.length; i++) {
72
+ val[i] = this.item.decode(tmpSrc);
73
+ }
74
+ return val;
75
+ }
76
+ }
77
+ exports.FixedSizeArrayCodec = FixedSizeArrayCodec;
78
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/codecs/array.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { Codec } from '../codec';
2
+ import { Sink } from '../sink';
3
+ import { Src } from '../src';
4
+ import { StructCodec } from './struct';
5
+ 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>;
18
+ export declare const string: {
19
+ readonly encode: (sink: Sink, val: string) => void;
20
+ readonly decode: (src: Src) => string;
21
+ readonly isDynamic: true;
22
+ };
23
+ export declare const bytes: {
24
+ readonly encode: (sink: Sink, val: Uint8Array) => void;
25
+ readonly decode: (src: Src) => Uint8Array;
26
+ readonly isDynamic: true;
27
+ };
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>;
61
+ 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[]>;
64
+ type Struct = {
65
+ [key: string]: Codec<any>;
66
+ };
67
+ export declare const struct: <const T extends Struct>(components: T) => StructCodec<T>;
68
+ export declare const tuple: <const T extends Struct>(components: T) => StructCodec<T>;
69
+ export {};
70
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +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;AAEtC,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,OAAO,CAQ/B,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,CAQ/B,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,MAAM,CAQ9B,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,MAAM,CAQhC,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,CAQ/B,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,MAAM,CAQhC,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,CAQ/B,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,MAAM,CAQhC,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,CAQ/B,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,MAAM,CAQjC,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,MAAM,CAQhC,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,MAAM,CAQjC,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,MAAM,CAQhC,CAAA;AAED,eAAO,MAAM,MAAM;4BACJ,IAAI,OAAO,MAAM;2BAKlB,GAAG,KAAG,MAAM;;CAIzB,CAAA;AAED,eAAO,MAAM,KAAK;4BACH,IAAI,OAAO,UAAU;2BAKtB,GAAG,KAAG,UAAU;;CAI7B,CAAA;AAYD,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,mBAAY,CAAA;AAC/B,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AACjC,eAAO,MAAM,OAAO,mBAAa,CAAA;AAEjC,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,MAAM,CAQjC,CAAA;AAED,eAAO,MAAM,cAAc,4BAA6B,MAAM,eAAoD,CAAA;AAElH,eAAO,MAAM,KAAK,mCAA0D,CAAA;AAE5E,KAAK,MAAM,GAAG;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,MAAM,2DAA4E,CAAA;AAE/F,eAAO,MAAM,KAAK,2DAAS,CAAA"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
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;
5
+ const array_1 = require("./array");
6
+ const struct_1 = require("./struct");
7
+ exports.bool = {
8
+ encode: function (sink, val) {
9
+ sink.bool(val);
10
+ },
11
+ decode(src) {
12
+ return src.bool();
13
+ },
14
+ isDynamic: false,
15
+ };
16
+ exports.uint8 = {
17
+ encode(sink, val) {
18
+ sink.u8(val);
19
+ },
20
+ decode(src) {
21
+ return src.u8();
22
+ },
23
+ isDynamic: false,
24
+ };
25
+ exports.int8 = {
26
+ encode(sink, val) {
27
+ sink.i8(val);
28
+ },
29
+ decode(src) {
30
+ return src.i8();
31
+ },
32
+ isDynamic: false,
33
+ };
34
+ exports.uint16 = {
35
+ encode(sink, val) {
36
+ sink.u16(val);
37
+ },
38
+ decode(src) {
39
+ return src.u16();
40
+ },
41
+ isDynamic: false,
42
+ };
43
+ exports.int16 = {
44
+ encode(sink, val) {
45
+ sink.i16(val);
46
+ },
47
+ decode(src) {
48
+ return src.i16();
49
+ },
50
+ isDynamic: false,
51
+ };
52
+ exports.uint32 = {
53
+ encode(sink, val) {
54
+ sink.u32(val);
55
+ },
56
+ decode(src) {
57
+ return src.u32();
58
+ },
59
+ isDynamic: false,
60
+ };
61
+ exports.int32 = {
62
+ encode(sink, val) {
63
+ sink.i32(val);
64
+ },
65
+ decode(src) {
66
+ return src.i32();
67
+ },
68
+ isDynamic: false,
69
+ };
70
+ exports.uint64 = {
71
+ encode(sink, val) {
72
+ sink.u64(val);
73
+ },
74
+ decode(src) {
75
+ return src.u64();
76
+ },
77
+ isDynamic: false,
78
+ };
79
+ exports.int64 = {
80
+ encode(sink, val) {
81
+ sink.i64(val);
82
+ },
83
+ decode(src) {
84
+ return src.i64();
85
+ },
86
+ isDynamic: false,
87
+ };
88
+ exports.uint128 = {
89
+ encode(sink, val) {
90
+ sink.u128(val);
91
+ },
92
+ decode(src) {
93
+ return src.u128();
94
+ },
95
+ isDynamic: false,
96
+ };
97
+ exports.int128 = {
98
+ encode(sink, val) {
99
+ sink.i128(val);
100
+ },
101
+ decode(src) {
102
+ return src.i128();
103
+ },
104
+ isDynamic: false,
105
+ };
106
+ exports.uint256 = {
107
+ encode(sink, val) {
108
+ sink.u256(val);
109
+ },
110
+ decode(src) {
111
+ return src.u256();
112
+ },
113
+ isDynamic: false,
114
+ };
115
+ exports.int256 = {
116
+ encode(sink, val) {
117
+ sink.i256(val);
118
+ },
119
+ decode(src) {
120
+ return src.i256();
121
+ },
122
+ isDynamic: false,
123
+ };
124
+ exports.string = {
125
+ encode(sink, val) {
126
+ sink.newStaticDataArea();
127
+ sink.string(val);
128
+ sink.endCurrentDataArea();
129
+ },
130
+ decode(src) {
131
+ return src.string();
132
+ },
133
+ isDynamic: true,
134
+ };
135
+ exports.bytes = {
136
+ encode(sink, val) {
137
+ sink.newStaticDataArea();
138
+ sink.bytes(val);
139
+ sink.endCurrentDataArea();
140
+ },
141
+ decode(src) {
142
+ return src.bytes();
143
+ },
144
+ isDynamic: true,
145
+ };
146
+ const bytesN = (size) => ({
147
+ encode(sink, val) {
148
+ sink.staticBytes(size, val);
149
+ },
150
+ decode(src) {
151
+ return src.staticBytes(size);
152
+ },
153
+ isDynamic: false,
154
+ });
155
+ exports.bytes0 = bytesN(0);
156
+ exports.bytes1 = bytesN(1);
157
+ exports.bytes2 = bytesN(2);
158
+ exports.bytes3 = bytesN(3);
159
+ exports.bytes4 = bytesN(4);
160
+ exports.bytes5 = bytesN(5);
161
+ exports.bytes6 = bytesN(6);
162
+ exports.bytes7 = bytesN(7);
163
+ exports.bytes8 = bytesN(8);
164
+ exports.bytes9 = bytesN(9);
165
+ exports.bytes10 = bytesN(10);
166
+ exports.bytes11 = bytesN(11);
167
+ exports.bytes12 = bytesN(12);
168
+ exports.bytes13 = bytesN(13);
169
+ exports.bytes14 = bytesN(14);
170
+ exports.bytes15 = bytesN(15);
171
+ exports.bytes16 = bytesN(16);
172
+ exports.bytes17 = bytesN(17);
173
+ exports.bytes18 = bytesN(18);
174
+ exports.bytes19 = bytesN(19);
175
+ exports.bytes20 = bytesN(20);
176
+ exports.bytes21 = bytesN(21);
177
+ exports.bytes22 = bytesN(22);
178
+ exports.bytes23 = bytesN(23);
179
+ exports.bytes24 = bytesN(24);
180
+ exports.bytes25 = bytesN(25);
181
+ exports.bytes26 = bytesN(26);
182
+ exports.bytes27 = bytesN(27);
183
+ exports.bytes28 = bytesN(28);
184
+ exports.bytes29 = bytesN(29);
185
+ exports.bytes30 = bytesN(30);
186
+ exports.bytes31 = bytesN(31);
187
+ exports.bytes32 = bytesN(32);
188
+ exports.address = {
189
+ encode(sink, val) {
190
+ sink.address(val);
191
+ },
192
+ decode(src) {
193
+ return src.address();
194
+ },
195
+ isDynamic: false,
196
+ };
197
+ const fixedSizeArray = (item, size) => new array_1.FixedSizeArrayCodec(item, size);
198
+ exports.fixedSizeArray = fixedSizeArray;
199
+ const array = (item) => new array_1.ArrayCodec(item);
200
+ exports.array = array;
201
+ const struct = (components) => new struct_1.StructCodec(components);
202
+ exports.struct = struct;
203
+ exports.tuple = exports.struct;
204
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ import { Codec, Struct, StructTypes } from '../codec';
2
+ import { Sink } from '../sink';
3
+ import { Src } from '../src';
4
+ export declare class StructCodec<const T extends Struct> implements Codec<StructTypes<T>> {
5
+ readonly isDynamic: boolean;
6
+ readonly slotsCount: number;
7
+ private readonly childrenSlotsCount;
8
+ private readonly components;
9
+ constructor(components: T);
10
+ encode(sink: Sink, val: StructTypes<T>): void;
11
+ private encodeDynamic;
12
+ decode(src: Src): StructTypes<T>;
13
+ private decodeDynamic;
14
+ }
15
+ //# sourceMappingURL=struct.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StructCodec = void 0;
4
+ function slotsCount(codecs) {
5
+ let count = 0;
6
+ for (const codec of codecs) {
7
+ count += codec.slotsCount ?? 1;
8
+ }
9
+ return count;
10
+ }
11
+ class StructCodec {
12
+ constructor(components) {
13
+ this.components = components;
14
+ const codecs = Object.values(components);
15
+ this.isDynamic = codecs.some((codec) => codec.isDynamic);
16
+ this.childrenSlotsCount = slotsCount(codecs);
17
+ if (this.isDynamic) {
18
+ this.slotsCount = 1;
19
+ }
20
+ else {
21
+ this.slotsCount = this.childrenSlotsCount;
22
+ }
23
+ }
24
+ encode(sink, val) {
25
+ if (this.isDynamic) {
26
+ this.encodeDynamic(sink, val);
27
+ return;
28
+ }
29
+ for (let i in this.components) {
30
+ let prop = this.components[i];
31
+ prop.encode(sink, val[i]);
32
+ }
33
+ }
34
+ encodeDynamic(sink, val) {
35
+ sink.newStaticDataArea(this.childrenSlotsCount);
36
+ for (let i in this.components) {
37
+ let prop = this.components[i];
38
+ prop.encode(sink, val[i]);
39
+ }
40
+ sink.endCurrentDataArea();
41
+ }
42
+ decode(src) {
43
+ if (this.isDynamic) {
44
+ return this.decodeDynamic(src);
45
+ }
46
+ let result = {};
47
+ for (let i in this.components) {
48
+ let prop = this.components[i];
49
+ result[i] = prop.decode(src);
50
+ }
51
+ return result;
52
+ }
53
+ decodeDynamic(src) {
54
+ let result = {};
55
+ const offset = src.u32();
56
+ const tmpSrc = src.slice(offset);
57
+ for (let i in this.components) {
58
+ let prop = this.components[i];
59
+ result[i] = prop.decode(tmpSrc);
60
+ }
61
+ return result;
62
+ }
63
+ }
64
+ exports.StructCodec = StructCodec;
65
+ //# sourceMappingURL=struct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"struct.js","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export { Src } from './src';
2
+ export { Sink } from './sink';
3
+ export type { Codec, Struct, StructTypes } from './codec';
4
+ export * from './codecs/primitives';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
package/lib/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Sink = exports.Src = void 0;
18
+ var src_1 = require("./src");
19
+ Object.defineProperty(exports, "Src", { enumerable: true, get: function () { return src_1.Src; } });
20
+ var sink_1 = require("./sink");
21
+ Object.defineProperty(exports, "Sink", { enumerable: true, get: function () { return sink_1.Sink; } });
22
+ __exportStar(require("./codecs/primitives"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AAEb,sDAAmC"}
package/lib/sink.d.ts ADDED
@@ -0,0 +1,42 @@
1
+ /// <reference types="node" />
2
+ export declare class Sink {
3
+ #private;
4
+ private pos;
5
+ private buf;
6
+ private view;
7
+ private stack;
8
+ constructor(fields: number, capacity?: number);
9
+ result(): Buffer;
10
+ toString(): string;
11
+ reserve(additional: number): void;
12
+ size(): number;
13
+ private _allocate;
14
+ u8(val: number): void;
15
+ i8(val: number): void;
16
+ u16(val: number): void;
17
+ i16(val: number): void;
18
+ u32(val: number): void;
19
+ i32(val: number): void;
20
+ u64(val: bigint): void;
21
+ i64(val: bigint): void;
22
+ u128(val: bigint): void;
23
+ i128(val: bigint): void;
24
+ u256(val: bigint): void;
25
+ i256(val: bigint): void;
26
+ bytes(val: Uint8Array): void;
27
+ staticBytes(len: number, val: Uint8Array): void;
28
+ address(val: string): void;
29
+ string(val: string): void;
30
+ bool(val: boolean): void;
31
+ /**
32
+ * @example
33
+ * @link [Solidity docs](https://docs.soliditylang.org/en/latest/abi-spec.html#use-of-dynamic-types)
34
+ */
35
+ newStaticDataArea(slotsCount?: number): void;
36
+ newDynamicDataArea(slotsCount: number): void;
37
+ private currentDataAreaStart;
38
+ increaseCurrentDataAreaSize(amount: number): void;
39
+ private pushDataArea;
40
+ endCurrentDataArea(): void;
41
+ }
42
+ //# sourceMappingURL=sink.d.ts.map
@@ -0,0 +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"}