@subsquid/evm-codec 0.3.0 → 1.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.
Files changed (79) hide show
  1. package/lib/codec.d.ts +57 -12
  2. package/lib/codec.d.ts.map +1 -1
  3. package/lib/codec.js.map +1 -1
  4. package/lib/codecs/array.d.ts +1 -3
  5. package/lib/codecs/array.d.ts.map +1 -1
  6. package/lib/codecs/array.js +13 -9
  7. package/lib/codecs/array.js.map +1 -1
  8. package/lib/codecs/primitives.d.ts +2 -17
  9. package/lib/codecs/primitives.d.ts.map +1 -1
  10. package/lib/codecs/primitives.js +46 -152
  11. package/lib/codecs/primitives.js.map +1 -1
  12. package/lib/codecs/struct.d.ts +16 -9
  13. package/lib/codecs/struct.d.ts.map +1 -1
  14. package/lib/codecs/struct.js +53 -40
  15. package/lib/codecs/struct.js.map +1 -1
  16. package/lib/dsl.d.ts +11 -0
  17. package/lib/dsl.d.ts.map +1 -0
  18. package/lib/dsl.js +33 -0
  19. package/lib/dsl.js.map +1 -0
  20. package/lib/index.d.ts +7 -4
  21. package/lib/index.d.ts.map +1 -1
  22. package/lib/index.js +7 -6
  23. package/lib/index.js.map +1 -1
  24. package/lib/sink/bounds.d.ts +21 -0
  25. package/lib/sink/bounds.d.ts.map +1 -0
  26. package/lib/sink/bounds.js +24 -0
  27. package/lib/sink/bounds.js.map +1 -0
  28. package/lib/sink/bytes.d.ts +41 -0
  29. package/lib/sink/bytes.d.ts.map +1 -0
  30. package/lib/sink/bytes.js +261 -0
  31. package/lib/sink/bytes.js.map +1 -0
  32. package/lib/sink/hex.d.ts +33 -0
  33. package/lib/sink/hex.d.ts.map +1 -0
  34. package/lib/sink/hex.js +289 -0
  35. package/lib/sink/hex.js.map +1 -0
  36. package/lib/{src.d.ts → src/bytes.d.ts} +7 -5
  37. package/lib/src/bytes.d.ts.map +1 -0
  38. package/lib/src/bytes.js +161 -0
  39. package/lib/src/bytes.js.map +1 -0
  40. package/lib/src/hex.d.ts +33 -0
  41. package/lib/src/hex.d.ts.map +1 -0
  42. package/lib/src/hex.js +164 -0
  43. package/lib/src/hex.js.map +1 -0
  44. package/lib/util.d.ts +6 -0
  45. package/lib/util.d.ts.map +1 -0
  46. package/lib/util.js +20 -0
  47. package/lib/util.js.map +1 -0
  48. package/package.json +6 -8
  49. package/src/codec.ts +65 -19
  50. package/src/codecs/array.test.ts +87 -0
  51. package/src/codecs/array.ts +6 -11
  52. package/src/codecs/primitives.test.ts +27 -0
  53. package/src/codecs/primitives.ts +87 -208
  54. package/src/codecs/struct.test.ts +69 -0
  55. package/src/codecs/struct.ts +80 -61
  56. package/src/dsl.ts +16 -0
  57. package/src/index.ts +7 -4
  58. package/src/sink/bounds.ts +26 -0
  59. package/src/sink/bytes.test.ts +92 -0
  60. package/src/sink/bytes.ts +290 -0
  61. package/src/sink/hex.ts +311 -0
  62. package/src/src/bytes.test.ts +114 -0
  63. package/src/src/bytes.ts +187 -0
  64. package/src/src/hex.ts +191 -0
  65. package/src/util.ts +19 -0
  66. package/lib/safeToNumber.d.ts +0 -2
  67. package/lib/safeToNumber.d.ts.map +0 -1
  68. package/lib/safeToNumber.js +0 -11
  69. package/lib/safeToNumber.js.map +0 -1
  70. package/lib/sink.d.ts +0 -43
  71. package/lib/sink.d.ts.map +0 -1
  72. package/lib/sink.js +0 -215
  73. package/lib/sink.js.map +0 -1
  74. package/lib/src.d.ts.map +0 -1
  75. package/lib/src.js +0 -141
  76. package/lib/src.js.map +0 -1
  77. package/src/safeToNumber.ts +0 -6
  78. package/src/sink.ts +0 -241
  79. package/src/src.ts +0 -158
package/lib/sink.js DELETED
@@ -1,215 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var __importDefault = (this && this.__importDefault) || function (mod) {
8
- return (mod && mod.__esModule) ? mod : { "default": mod };
9
- };
10
- var _Sink_instances, _Sink_u64, _Sink_u128, _Sink_i256;
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Sink = void 0;
13
- const node_assert_1 = __importDefault(require("node:assert"));
14
- const codec_1 = require("./codec");
15
- class Sink {
16
- constructor(fields, capacity = 1280) {
17
- _Sink_instances.add(this);
18
- this.pos = 0;
19
- this.stack = [];
20
- this.stack.push({
21
- start: 0,
22
- jumpBackPtr: 0,
23
- size: fields * codec_1.WORD_SIZE,
24
- });
25
- this.buf = Buffer.alloc(capacity);
26
- this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength);
27
- }
28
- result() {
29
- (0, node_assert_1.default)(this.stack.length === 1, 'Cannot get result during dynamic encoding');
30
- return this.buf.subarray(0, this.size());
31
- }
32
- toString() {
33
- return '0x' + this.result().toString('hex');
34
- }
35
- reserve(additional) {
36
- if (this.buf.length - this.pos < additional) {
37
- this._allocate(this.pos + additional);
38
- }
39
- }
40
- size() {
41
- return this.stack[this.stack.length - 1].size;
42
- }
43
- _allocate(cap) {
44
- cap = Math.max(cap, this.buf.length * 2);
45
- let buf = Buffer.alloc(cap);
46
- buf.set(this.buf);
47
- this.buf = buf;
48
- this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength);
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
- }
55
- u8(val) {
56
- this.checkNumberBounds(val, 0n, 255n, 'uint8');
57
- this.reserve(codec_1.WORD_SIZE);
58
- this.pos += codec_1.WORD_SIZE - 1;
59
- this.view.setUint8(this.pos, val);
60
- this.pos += 1;
61
- }
62
- i8(val) {
63
- this.checkNumberBounds(val, -128n, 127n, 'int8');
64
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, BigInt(val));
65
- }
66
- u16(val) {
67
- this.checkNumberBounds(val, 0n, 65535n, 'uint16');
68
- this.reserve(codec_1.WORD_SIZE);
69
- this.pos += codec_1.WORD_SIZE - 2;
70
- this.view.setUint16(this.pos, val, false);
71
- this.pos += 2;
72
- }
73
- i16(val) {
74
- this.checkNumberBounds(val, -32768n, 32767n, 'int16');
75
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, BigInt(val));
76
- }
77
- u32(val) {
78
- this.checkNumberBounds(val, 0n, 4294967295n, 'uint32');
79
- this.reserve(codec_1.WORD_SIZE);
80
- this.pos += codec_1.WORD_SIZE - 4;
81
- this.view.setUint32(this.pos, val, false);
82
- this.pos += 4;
83
- }
84
- i32(val) {
85
- this.checkNumberBounds(val, -2147483648n, 2147483647n, 'int32');
86
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, BigInt(val));
87
- }
88
- u64(val) {
89
- this.checkNumberBounds(val, 0n, 18446744073709551615n, 'uint64');
90
- this.reserve(codec_1.WORD_SIZE);
91
- this.pos += codec_1.WORD_SIZE - 8;
92
- this.view.setBigUint64(this.pos, val, false);
93
- this.pos += 8;
94
- }
95
- i64(val) {
96
- this.checkNumberBounds(val, -9223372036854775808n, 9223372036854775807n, 'int64');
97
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, val);
98
- }
99
- u128(val) {
100
- this.checkNumberBounds(val, 0n, 340282366920938463463374607431768211455n, 'uint128');
101
- this.reserve(codec_1.WORD_SIZE);
102
- this.pos += codec_1.WORD_SIZE - 16;
103
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u64).call(this, val & 0xffffffffffffffffn);
104
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u64).call(this, val >> 64n);
105
- }
106
- i128(val) {
107
- this.checkNumberBounds(val, -170141183460469231731687303715884105728n, 170141183460469231731687303715884105727n, 'int128');
108
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, val);
109
- }
110
- u256(val) {
111
- this.checkNumberBounds(val, 0n, 115792089237316195423570985008687907853269984665640564039457584007913129639935n, 'uint256');
112
- this.reserve(codec_1.WORD_SIZE);
113
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u128).call(this, val >> 128n);
114
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u128).call(this, val & (2n ** 128n - 1n));
115
- }
116
- i256(val) {
117
- this.checkNumberBounds(val, -57896044618658097711785492504343953926634992332820282019728792003956564819968n, 57896044618658097711785492504343953926634992332820282019728792003956564819967n, 'int256');
118
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_i256).call(this, val);
119
- }
120
- bytes(val) {
121
- const size = Buffer.byteLength(val);
122
- this.u32(size);
123
- const wordsCount = Math.ceil(size / codec_1.WORD_SIZE);
124
- const reservedSize = codec_1.WORD_SIZE * wordsCount;
125
- this.reserve(reservedSize);
126
- this.buf.set(val, this.pos);
127
- this.pos += reservedSize;
128
- this.increaseCurrentDataAreaSize(reservedSize + codec_1.WORD_SIZE);
129
- }
130
- staticBytes(len, val) {
131
- if (len > 32) {
132
- throw new Error(`bytes${len} is not a valid type`);
133
- }
134
- const size = Buffer.byteLength(val);
135
- if (size > len) {
136
- throw new Error(`invalid data size for bytes${len}`);
137
- }
138
- this.reserve(codec_1.WORD_SIZE);
139
- this.buf.set(val, this.pos);
140
- this.pos += codec_1.WORD_SIZE;
141
- }
142
- address(val) {
143
- this.u256(BigInt(val));
144
- }
145
- string(val) {
146
- const size = Buffer.byteLength(val);
147
- this.u32(size);
148
- const wordsCount = Math.ceil(size / codec_1.WORD_SIZE);
149
- const reservedSize = codec_1.WORD_SIZE * wordsCount;
150
- this.reserve(reservedSize);
151
- this.buf.write(val, this.pos);
152
- this.pos += reservedSize;
153
- this.increaseCurrentDataAreaSize(reservedSize + codec_1.WORD_SIZE);
154
- }
155
- bool(val) {
156
- this.u8(val ? 1 : 0);
157
- }
158
- /**
159
- * @example
160
- * @link [Solidity docs](https://docs.soliditylang.org/en/latest/abi-spec.html#use-of-dynamic-types)
161
- */
162
- newStaticDataArea(slotsCount = 0) {
163
- const offset = this.size();
164
- this.u32(offset);
165
- const dataAreaStart = this.currentDataAreaStart();
166
- this.pushDataArea(dataAreaStart + offset, slotsCount);
167
- this.pos = dataAreaStart + offset;
168
- }
169
- // Adds elements count before the data area in an additional slot
170
- newDynamicDataArea(slotsCount) {
171
- const offset = this.size();
172
- this.u32(offset);
173
- const dataAreaStart = this.currentDataAreaStart();
174
- this.pushDataArea(dataAreaStart + offset + codec_1.WORD_SIZE, slotsCount);
175
- this.pos = dataAreaStart + offset;
176
- this.u32(slotsCount);
177
- }
178
- currentDataAreaStart() {
179
- return this.stack[this.stack.length - 1].start;
180
- }
181
- increaseCurrentDataAreaSize(amount) {
182
- this.stack[this.stack.length - 1].size += amount;
183
- }
184
- pushDataArea(dataAreaStart, slotsCount) {
185
- const size = slotsCount * codec_1.WORD_SIZE;
186
- this.reserve(dataAreaStart + size);
187
- this.stack.push({
188
- start: dataAreaStart,
189
- jumpBackPtr: this.pos,
190
- size,
191
- });
192
- }
193
- endCurrentDataArea() {
194
- (0, node_assert_1.default)(this.stack.length > 1, 'No dynamic encoding started');
195
- const { jumpBackPtr, size } = this.stack.pop();
196
- this.increaseCurrentDataAreaSize(size);
197
- this.pos = jumpBackPtr;
198
- }
199
- }
200
- exports.Sink = Sink;
201
- _Sink_instances = new WeakSet(), _Sink_u64 = function _Sink_u64(val) {
202
- this.view.setBigUint64(this.pos, val, false);
203
- this.pos += 8;
204
- }, _Sink_u128 = function _Sink_u128(val) {
205
- this.reserve(codec_1.WORD_SIZE);
206
- __classPrivateFieldGet(this, _Sink_instances, "m", _Sink_u64).call(this, val >> 64n);
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));
214
- };
215
- //# sourceMappingURL=sink.js.map
package/lib/sink.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"sink.js","sourceRoot":"","sources":["../src/sink.ts"],"names":[],"mappings":"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"}
package/lib/src.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"src.d.ts","sourceRoot":"","sources":["../src/src.ts"],"names":[],"mappings":"AAEA,qBAAa,GAAG;;IAIF,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,GAAG,CAAI;IACf,OAAO,CAAC,MAAM,CAAI;gBACE,GAAG,EAAE,UAAU;IAInC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG;IAIvC,EAAE,IAAI,MAAM;IAOZ,EAAE,IAAI,MAAM;IAIZ,GAAG,IAAI,MAAM;IAOb,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAOb,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAWb,GAAG,IAAI,MAAM;IAWb,IAAI,IAAI,MAAM;IAWd,IAAI,IAAI,MAAM;IAWd,IAAI,IAAI,MAAM;IAMd,IAAI,IAAI,MAAM;IAMd,OAAO,IAAI,MAAM;IAIjB,KAAK,IAAI,UAAU;IAUnB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IASpC,MAAM,IAAI,MAAM;IAUhB,IAAI,IAAI,OAAO;IAIf,OAAO,CAAC,YAAY;IAMb,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ7C,QAAQ,IAAI,IAAI;CAGxB"}
package/lib/src.js DELETED
@@ -1,141 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var _Src_instances, _Src_u64, _Src_i64, _Src_u128, _Src_i128;
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.Src = void 0;
10
- const codec_1 = require("./codec");
11
- class Src {
12
- constructor(buf) {
13
- _Src_instances.add(this);
14
- this.buf = buf;
15
- this.pos = 0;
16
- this.oldPos = 0;
17
- this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
18
- }
19
- slice(start, end) {
20
- return new Src(this.buf.subarray(start, end));
21
- }
22
- u8() {
23
- this.pos += codec_1.WORD_SIZE - 1;
24
- let val = this.view.getUint8(this.pos);
25
- this.pos += 1;
26
- return val;
27
- }
28
- i8() {
29
- return Number(this.i256());
30
- }
31
- u16() {
32
- this.pos += codec_1.WORD_SIZE - 2;
33
- let val = this.view.getUint16(this.pos, false);
34
- this.pos += 2;
35
- return val;
36
- }
37
- i16() {
38
- return Number(this.i256());
39
- }
40
- u32() {
41
- this.pos += codec_1.WORD_SIZE - 4;
42
- let val = this.view.getUint32(this.pos, false);
43
- this.pos += 4;
44
- return val;
45
- }
46
- i32() {
47
- return Number(this.i256());
48
- }
49
- u64() {
50
- this.pos += codec_1.WORD_SIZE - 8;
51
- return __classPrivateFieldGet(this, _Src_instances, "m", _Src_u64).call(this);
52
- }
53
- i64() {
54
- this.pos += codec_1.WORD_SIZE - 8;
55
- return __classPrivateFieldGet(this, _Src_instances, "m", _Src_i64).call(this);
56
- }
57
- u128() {
58
- this.pos += codec_1.WORD_SIZE - 16;
59
- return __classPrivateFieldGet(this, _Src_instances, "m", _Src_u128).call(this);
60
- }
61
- i128() {
62
- this.pos += codec_1.WORD_SIZE - 16;
63
- return __classPrivateFieldGet(this, _Src_instances, "m", _Src_i128).call(this);
64
- }
65
- u256() {
66
- let hi = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u128).call(this);
67
- let lo = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u128).call(this);
68
- return lo + (hi << 128n);
69
- }
70
- i256() {
71
- let hi = __classPrivateFieldGet(this, _Src_instances, "m", _Src_i128).call(this);
72
- let lo = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u128).call(this);
73
- return lo + (hi << 128n);
74
- }
75
- address() {
76
- return '0x' + this.u256().toString(16).padStart(40, '0');
77
- }
78
- bytes() {
79
- const ptr = this.u32();
80
- this.safeJump(ptr, 'bytes');
81
- const len = Number(this.u256());
82
- this.assertLength(len, 'bytes');
83
- const val = this.buf.subarray(this.pos, this.pos + len);
84
- this.jumpBack();
85
- return val;
86
- }
87
- staticBytes(len) {
88
- if (len > 32) {
89
- throw new Error(`bytes${len} is not a valid type`);
90
- }
91
- const val = this.buf.subarray(this.pos, this.pos + len);
92
- this.pos += codec_1.WORD_SIZE;
93
- return val;
94
- }
95
- string() {
96
- const ptr = this.u32();
97
- this.safeJump(ptr, 'string');
98
- const len = Number(this.u256());
99
- this.assertLength(len, 'string');
100
- const val = Buffer.from(this.buf.buffer, this.buf.byteOffset + this.pos, len).toString('utf-8');
101
- this.jumpBack();
102
- return val;
103
- }
104
- bool() {
105
- return !!this.u8();
106
- }
107
- assertLength(len, typeName) {
108
- if (this.buf.length - this.pos < len) {
109
- throw new RangeError(`Unexpected end of input. Attempting to read ${typeName} of length ${len} from 0x${Buffer.from(this.buf).toString('hex')}`);
110
- }
111
- }
112
- safeJump(pos, typeName) {
113
- if (pos < 0 || pos >= this.buf.length) {
114
- throw new RangeError(`Unexpected pointer location: 0x${pos.toString(16)}. Attempting to read ${typeName} from 0x${Buffer.from(this.buf).toString('hex')}`);
115
- }
116
- this.oldPos = this.pos;
117
- this.pos = pos;
118
- }
119
- jumpBack() {
120
- this.pos = this.oldPos;
121
- }
122
- }
123
- exports.Src = Src;
124
- _Src_instances = new WeakSet(), _Src_u64 = function _Src_u64() {
125
- let val = this.view.getBigUint64(this.pos, false);
126
- this.pos += 8;
127
- return val;
128
- }, _Src_i64 = function _Src_i64() {
129
- let val = this.view.getBigInt64(this.pos, false);
130
- this.pos += 8;
131
- return val;
132
- }, _Src_u128 = function _Src_u128() {
133
- let hi = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u64).call(this);
134
- let lo = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u64).call(this);
135
- return lo + (hi << 64n);
136
- }, _Src_i128 = function _Src_i128() {
137
- let hi = __classPrivateFieldGet(this, _Src_instances, "m", _Src_i64).call(this);
138
- let lo = __classPrivateFieldGet(this, _Src_instances, "m", _Src_u64).call(this);
139
- return lo + (hi << 64n);
140
- };
141
- //# sourceMappingURL=src.js.map
package/lib/src.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"src.js","sourceRoot":"","sources":["../src/src.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export function safeToNumber(value: number | bigint): number {
2
- if ( value < Number.MIN_SAFE_INTEGER || value > Number.MAX_SAFE_INTEGER) {
3
- throw new Error(`${value} is not a safe integer`)
4
- }
5
- return Number(value)
6
- }
package/src/sink.ts DELETED
@@ -1,241 +0,0 @@
1
- import assert from 'node:assert'
2
- import { WORD_SIZE } from './codec'
3
-
4
- export class Sink {
5
- private pos = 0
6
- private buf: Buffer
7
- private view: DataView
8
- private stack: { start: number; jumpBackPtr: number; size: number }[] = []
9
- constructor(fields: number, capacity: number = 1280) {
10
- this.stack.push({
11
- start: 0,
12
- jumpBackPtr: 0,
13
- size: fields * WORD_SIZE,
14
- })
15
- this.buf = Buffer.alloc(capacity)
16
- this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength)
17
- }
18
-
19
- result(): Buffer {
20
- assert(this.stack.length === 1, 'Cannot get result during dynamic encoding')
21
- return this.buf.subarray(0, this.size())
22
- }
23
-
24
- toString() {
25
- return '0x' + this.result().toString('hex')
26
- }
27
-
28
- reserve(additional: number): void {
29
- if (this.buf.length - this.pos < additional) {
30
- this._allocate(this.pos + additional)
31
- }
32
- }
33
-
34
- size() {
35
- return this.stack[this.stack.length - 1].size
36
- }
37
-
38
- private _allocate(cap: number): void {
39
- cap = Math.max(cap, this.buf.length * 2)
40
- let buf = Buffer.alloc(cap)
41
- buf.set(this.buf)
42
- this.buf = buf
43
- this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength)
44
- }
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
-
52
- u8(val: number) {
53
- this.checkNumberBounds(val, 0n, 255n, 'uint8')
54
- this.reserve(WORD_SIZE)
55
- this.pos += WORD_SIZE - 1
56
- this.view.setUint8(this.pos, val)
57
- this.pos += 1
58
- }
59
-
60
- i8(val: number) {
61
- this.checkNumberBounds(val, -128n, 127n, 'int8')
62
- this.#i256(BigInt(val))
63
- }
64
-
65
- u16(val: number) {
66
- this.checkNumberBounds(val, 0n, 65535n, 'uint16')
67
- this.reserve(WORD_SIZE)
68
- this.pos += WORD_SIZE - 2
69
- this.view.setUint16(this.pos, val, false)
70
- this.pos += 2
71
- }
72
-
73
- i16(val: number) {
74
- this.checkNumberBounds(val, -32768n, 32767n, 'int16')
75
- this.#i256(BigInt(val))
76
- }
77
-
78
- u32(val: number) {
79
- this.checkNumberBounds(val, 0n, 4294967295n, 'uint32')
80
- this.reserve(WORD_SIZE)
81
- this.pos += WORD_SIZE - 4
82
- this.view.setUint32(this.pos, val, false)
83
- this.pos += 4
84
- }
85
-
86
- i32(val: number) {
87
- this.checkNumberBounds(val, -2147483648n, 2147483647n, 'int32')
88
- this.#i256(BigInt(val))
89
- }
90
-
91
- u64(val: bigint) {
92
- this.checkNumberBounds(val, 0n, 18446744073709551615n, 'uint64')
93
- this.reserve(WORD_SIZE)
94
- this.pos += WORD_SIZE - 8
95
- this.view.setBigUint64(this.pos, val, false)
96
- this.pos += 8
97
- }
98
-
99
- i64(val: bigint) {
100
- this.checkNumberBounds(val, -9223372036854775808n, 9223372036854775807n, 'int64')
101
- this.#i256(val)
102
- }
103
-
104
- #u64(val: bigint) {
105
- this.view.setBigUint64(this.pos, val, false)
106
- this.pos += 8
107
- }
108
-
109
- u128(val: bigint) {
110
- this.checkNumberBounds(val, 0n, 340282366920938463463374607431768211455n, 'uint128')
111
- this.reserve(WORD_SIZE)
112
- this.pos += WORD_SIZE - 16
113
- this.#u64(val & 0xffffffffffffffffn)
114
- this.#u64(val >> 64n)
115
- }
116
-
117
- i128(val: bigint) {
118
- this.checkNumberBounds(val, -170141183460469231731687303715884105728n, 170141183460469231731687303715884105727n, 'int128')
119
- this.#i256(val)
120
- }
121
-
122
- #u128(val: bigint) {
123
- this.reserve(WORD_SIZE)
124
- this.#u64(val >> 64n)
125
- this.#u64(val & 0xffffffffffffffffn)
126
- }
127
-
128
- u256(val: bigint) {
129
- this.checkNumberBounds(val, 0n, 115792089237316195423570985008687907853269984665640564039457584007913129639935n, 'uint256')
130
- this.reserve(WORD_SIZE)
131
- this.#u128(val >> 128n)
132
- this.#u128(val & (2n ** 128n - 1n))
133
- }
134
-
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) {
145
- let base = 2n ** 256n
146
- const uval = (val + base) % base
147
- this.reserve(WORD_SIZE)
148
- this.#u128(uval >> 128n)
149
- this.#u128(uval & (2n ** 128n - 1n))
150
- }
151
-
152
- bytes(val: Uint8Array) {
153
- const size = Buffer.byteLength(val)
154
- this.u32(size)
155
- const wordsCount = Math.ceil(size / WORD_SIZE)
156
- const reservedSize = WORD_SIZE * wordsCount
157
- this.reserve(reservedSize)
158
- this.buf.set(val, this.pos)
159
- this.pos += reservedSize
160
- this.increaseCurrentDataAreaSize(reservedSize + WORD_SIZE)
161
- }
162
-
163
- staticBytes(len: number, val: Uint8Array) {
164
- if (len > 32) {
165
- throw new Error(`bytes${len} is not a valid type`)
166
- }
167
- const size = Buffer.byteLength(val)
168
- if (size > len) {
169
- throw new Error(`invalid data size for bytes${len}`)
170
- }
171
- this.reserve(WORD_SIZE)
172
- this.buf.set(val, this.pos)
173
- this.pos += WORD_SIZE
174
- }
175
-
176
- address(val: string) {
177
- this.u256(BigInt(val))
178
- }
179
-
180
- string(val: string) {
181
- const size = Buffer.byteLength(val)
182
- this.u32(size)
183
- const wordsCount = Math.ceil(size / WORD_SIZE)
184
- const reservedSize = WORD_SIZE * wordsCount
185
- this.reserve(reservedSize)
186
- this.buf.write(val, this.pos)
187
- this.pos += reservedSize
188
- this.increaseCurrentDataAreaSize(reservedSize + WORD_SIZE)
189
- }
190
-
191
- bool(val: boolean) {
192
- this.u8(val ? 1 : 0)
193
- }
194
-
195
- /**
196
- * @example
197
- * @link [Solidity docs](https://docs.soliditylang.org/en/latest/abi-spec.html#use-of-dynamic-types)
198
- */
199
- newStaticDataArea(slotsCount = 0) {
200
- const offset = this.size()
201
- this.u32(offset)
202
- const dataAreaStart = this.currentDataAreaStart()
203
- this.pushDataArea(dataAreaStart + offset, slotsCount)
204
- this.pos = dataAreaStart + offset
205
- }
206
-
207
- // Adds elements count before the data area in an additional slot
208
- newDynamicDataArea(slotsCount: number) {
209
- const offset = this.size()
210
- this.u32(offset)
211
- const dataAreaStart = this.currentDataAreaStart()
212
- this.pushDataArea(dataAreaStart + offset + WORD_SIZE, slotsCount)
213
- this.pos = dataAreaStart + offset
214
- this.u32(slotsCount)
215
- }
216
-
217
- private currentDataAreaStart() {
218
- return this.stack[this.stack.length - 1].start
219
- }
220
-
221
- public increaseCurrentDataAreaSize(amount: number) {
222
- this.stack[this.stack.length - 1].size += amount
223
- }
224
-
225
- private pushDataArea(dataAreaStart: number, slotsCount: number) {
226
- const size = slotsCount * WORD_SIZE
227
- this.reserve(dataAreaStart + size)
228
- this.stack.push({
229
- start: dataAreaStart,
230
- jumpBackPtr: this.pos,
231
- size,
232
- })
233
- }
234
-
235
- public endCurrentDataArea() {
236
- assert(this.stack.length > 1, 'No dynamic encoding started')
237
- const { jumpBackPtr, size } = this.stack.pop()!
238
- this.increaseCurrentDataAreaSize(size)
239
- this.pos = jumpBackPtr
240
- }
241
- }