sol-dbg 0.6.15 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/artifacts/helpers.d.ts +3 -3
  2. package/dist/artifacts/helpers.d.ts.map +1 -1
  3. package/dist/artifacts/helpers.js +17 -53
  4. package/dist/artifacts/helpers.js.map +1 -1
  5. package/dist/artifacts/solc.d.ts +1 -8
  6. package/dist/artifacts/solc.d.ts.map +1 -1
  7. package/dist/debug/abi.d.ts +11 -41
  8. package/dist/debug/abi.d.ts.map +1 -1
  9. package/dist/debug/abi.js +60 -294
  10. package/dist/debug/abi.js.map +1 -1
  11. package/dist/debug/artifact_manager/artifact_manager.d.ts +17 -42
  12. package/dist/debug/artifact_manager/artifact_manager.d.ts.map +1 -1
  13. package/dist/debug/artifact_manager/artifact_manager.js +82 -22
  14. package/dist/debug/artifact_manager/artifact_manager.js.map +1 -1
  15. package/dist/debug/artifact_manager/bytecode_templates.d.ts +1 -1
  16. package/dist/debug/artifact_manager/bytecode_templates.d.ts.map +1 -1
  17. package/dist/debug/artifact_manager/bytecode_templates.js +4 -3
  18. package/dist/debug/artifact_manager/bytecode_templates.js.map +1 -1
  19. package/dist/debug/artifact_manager/index.d.ts +1 -0
  20. package/dist/debug/artifact_manager/index.d.ts.map +1 -1
  21. package/dist/debug/artifact_manager/index.js +1 -0
  22. package/dist/debug/artifact_manager/index.js.map +1 -1
  23. package/dist/debug/artifact_manager/types.d.ts +129 -0
  24. package/dist/debug/artifact_manager/types.d.ts.map +1 -0
  25. package/dist/debug/artifact_manager/types.js +12 -0
  26. package/dist/debug/artifact_manager/types.js.map +1 -0
  27. package/dist/debug/decoding/calldata/index.d.ts +2 -0
  28. package/dist/debug/decoding/calldata/index.d.ts.map +1 -0
  29. package/dist/debug/decoding/calldata/index.js +6 -0
  30. package/dist/debug/decoding/calldata/index.js.map +1 -0
  31. package/dist/debug/decoding/calldata/view.d.ts +75 -0
  32. package/dist/debug/decoding/calldata/view.d.ts.map +1 -0
  33. package/dist/debug/decoding/calldata/view.js +400 -0
  34. package/dist/debug/decoding/calldata/view.js.map +1 -0
  35. package/dist/debug/decoding/exp_types.d.ts +46 -0
  36. package/dist/debug/decoding/exp_types.d.ts.map +1 -0
  37. package/dist/debug/decoding/exp_types.js +202 -0
  38. package/dist/debug/decoding/exp_types.js.map +1 -0
  39. package/dist/debug/decoding/general.d.ts +5 -9
  40. package/dist/debug/decoding/general.d.ts.map +1 -1
  41. package/dist/debug/decoding/general.js +25 -103
  42. package/dist/debug/decoding/general.js.map +1 -1
  43. package/dist/debug/decoding/index.d.ts +1 -0
  44. package/dist/debug/decoding/index.d.ts.map +1 -1
  45. package/dist/debug/decoding/index.js +1 -0
  46. package/dist/debug/decoding/index.js.map +1 -1
  47. package/dist/debug/decoding/memory/allocator.d.ts +22 -0
  48. package/dist/debug/decoding/memory/allocator.d.ts.map +1 -0
  49. package/dist/debug/decoding/memory/allocator.js +47 -0
  50. package/dist/debug/decoding/memory/allocator.js.map +1 -0
  51. package/dist/debug/decoding/memory/index.d.ts +2 -0
  52. package/dist/debug/decoding/memory/index.d.ts.map +1 -0
  53. package/dist/debug/decoding/memory/index.js +6 -0
  54. package/dist/debug/decoding/memory/index.js.map +1 -0
  55. package/dist/debug/decoding/memory/view.d.ts +66 -0
  56. package/dist/debug/decoding/memory/view.d.ts.map +1 -0
  57. package/dist/debug/decoding/memory/view.js +283 -0
  58. package/dist/debug/decoding/memory/view.js.map +1 -0
  59. package/dist/debug/decoding/stack/index.d.ts +2 -0
  60. package/dist/debug/decoding/stack/index.d.ts.map +1 -0
  61. package/dist/debug/decoding/stack/index.js +6 -0
  62. package/dist/debug/decoding/stack/index.js.map +1 -0
  63. package/dist/debug/decoding/stack/view.d.ts +36 -0
  64. package/dist/debug/decoding/stack/view.d.ts.map +1 -0
  65. package/dist/debug/decoding/stack/view.js +156 -0
  66. package/dist/debug/decoding/stack/view.js.map +1 -0
  67. package/dist/debug/decoding/storage/index.d.ts +2 -0
  68. package/dist/debug/decoding/storage/index.d.ts.map +1 -0
  69. package/dist/debug/decoding/storage/index.js +6 -0
  70. package/dist/debug/decoding/storage/index.js.map +1 -0
  71. package/dist/debug/decoding/storage/view.d.ts +105 -0
  72. package/dist/debug/decoding/storage/view.d.ts.map +1 -0
  73. package/dist/debug/decoding/storage/view.js +603 -0
  74. package/dist/debug/decoding/storage/view.js.map +1 -0
  75. package/dist/debug/decoding/utils.d.ts +17 -0
  76. package/dist/debug/decoding/utils.d.ts.map +1 -0
  77. package/dist/debug/decoding/utils.js +43 -0
  78. package/dist/debug/decoding/utils.js.map +1 -0
  79. package/dist/debug/decoding/value.d.ts +50 -0
  80. package/dist/debug/decoding/value.d.ts.map +1 -0
  81. package/dist/debug/decoding/value.js +106 -0
  82. package/dist/debug/decoding/value.js.map +1 -0
  83. package/dist/debug/decoding/view.d.ts +24 -0
  84. package/dist/debug/decoding/view.d.ts.map +1 -0
  85. package/dist/debug/decoding/view.js +22 -0
  86. package/dist/debug/decoding/view.js.map +1 -0
  87. package/dist/debug/foundry_cheatcodes.d.ts +15 -15
  88. package/dist/debug/foundry_cheatcodes.d.ts.map +1 -1
  89. package/dist/debug/foundry_cheatcodes.js +17 -16
  90. package/dist/debug/foundry_cheatcodes.js.map +1 -1
  91. package/dist/debug/layout.d.ts +6 -8
  92. package/dist/debug/layout.d.ts.map +1 -1
  93. package/dist/debug/layout.js +14 -78
  94. package/dist/debug/layout.js.map +1 -1
  95. package/dist/debug/opcode_interposing.js +5 -5
  96. package/dist/debug/opcode_interposing.js.map +1 -1
  97. package/dist/debug/tracers/base_tracer.d.ts +4 -4
  98. package/dist/debug/tracers/base_tracer.d.ts.map +1 -1
  99. package/dist/debug/tracers/base_tracer.js +7 -7
  100. package/dist/debug/tracers/base_tracer.js.map +1 -1
  101. package/dist/debug/tracers/sol_debugger.d.ts.map +1 -1
  102. package/dist/debug/tracers/sol_debugger.js +2 -1
  103. package/dist/debug/tracers/sol_debugger.js.map +1 -1
  104. package/dist/debug/tracers/storage_decode_tracer.js +1 -1
  105. package/dist/debug/tracers/storage_decode_tracer.js.map +1 -1
  106. package/dist/debug/tracers/transformers/basic_info.d.ts +2 -2
  107. package/dist/debug/tracers/transformers/basic_info.d.ts.map +1 -1
  108. package/dist/debug/tracers/transformers/basic_info.js +4 -3
  109. package/dist/debug/tracers/transformers/basic_info.js.map +1 -1
  110. package/dist/debug/tracers/transformers/events.js +2 -2
  111. package/dist/debug/tracers/transformers/events.js.map +1 -1
  112. package/dist/debug/tracers/transformers/exc_info.d.ts +15 -0
  113. package/dist/debug/tracers/transformers/exc_info.d.ts.map +1 -0
  114. package/dist/debug/tracers/transformers/exc_info.js +39 -0
  115. package/dist/debug/tracers/transformers/exc_info.js.map +1 -0
  116. package/dist/debug/tracers/transformers/ext_stack.d.ts.map +1 -1
  117. package/dist/debug/tracers/transformers/ext_stack.js +13 -30
  118. package/dist/debug/tracers/transformers/ext_stack.js.map +1 -1
  119. package/dist/debug/tracers/transformers/index.d.ts +1 -0
  120. package/dist/debug/tracers/transformers/index.d.ts.map +1 -1
  121. package/dist/debug/tracers/transformers/index.js +1 -0
  122. package/dist/debug/tracers/transformers/index.js.map +1 -1
  123. package/dist/debug/tracers/transformers/int_stack.d.ts.map +1 -1
  124. package/dist/debug/tracers/transformers/int_stack.js +5 -13
  125. package/dist/debug/tracers/transformers/int_stack.js.map +1 -1
  126. package/dist/debug/tracers/transformers/keccak256_invert.js +4 -4
  127. package/dist/debug/tracers/transformers/keccak256_invert.js.map +1 -1
  128. package/dist/debug/tracers/transformers/ret_info.d.ts +1 -1
  129. package/dist/debug/tracers/transformers/ret_info.d.ts.map +1 -1
  130. package/dist/debug/tracers/transformers/ret_info.js +22 -46
  131. package/dist/debug/tracers/transformers/ret_info.js.map +1 -1
  132. package/dist/debug/types.d.ts +64 -23
  133. package/dist/debug/types.d.ts.map +1 -1
  134. package/dist/debug/types.js.map +1 -1
  135. package/dist/utils/ethereumjs_internal/exceptions.d.ts +2 -2
  136. package/dist/utils/ethereumjs_internal/opcodes.js +1 -1
  137. package/dist/utils/immutable_map.d.ts +2 -0
  138. package/dist/utils/immutable_map.d.ts.map +1 -1
  139. package/dist/utils/immutable_map.js +21 -0
  140. package/dist/utils/immutable_map.js.map +1 -1
  141. package/dist/utils/index.d.ts +1 -0
  142. package/dist/utils/index.d.ts.map +1 -1
  143. package/dist/utils/index.js +1 -0
  144. package/dist/utils/index.js.map +1 -1
  145. package/dist/utils/misc.d.ts +19 -11
  146. package/dist/utils/misc.d.ts.map +1 -1
  147. package/dist/utils/misc.js +61 -53
  148. package/dist/utils/misc.js.map +1 -1
  149. package/dist/utils/pp.d.ts +3 -1
  150. package/dist/utils/pp.d.ts.map +1 -1
  151. package/dist/utils/pp.js +10 -27
  152. package/dist/utils/pp.js.map +1 -1
  153. package/dist/utils/solidity.d.ts +11 -0
  154. package/dist/utils/solidity.d.ts.map +1 -0
  155. package/dist/utils/solidity.js +85 -0
  156. package/dist/utils/solidity.js.map +1 -0
  157. package/dist/utils/test_runner.d.ts +9 -6
  158. package/dist/utils/test_runner.d.ts.map +1 -1
  159. package/dist/utils/test_runner.js +26 -21
  160. package/dist/utils/test_runner.js.map +1 -1
  161. package/dist/utils/trace.d.ts +5 -1
  162. package/dist/utils/trace.d.ts.map +1 -1
  163. package/dist/utils/trace.js +16 -0
  164. package/dist/utils/trace.js.map +1 -1
  165. package/package.json +19 -14
  166. package/dist/debug/decoding/calldata.d.ts +0 -6
  167. package/dist/debug/decoding/calldata.d.ts.map +0 -1
  168. package/dist/debug/decoding/calldata.js +0 -244
  169. package/dist/debug/decoding/calldata.js.map +0 -1
  170. package/dist/debug/decoding/memory.d.ts +0 -4
  171. package/dist/debug/decoding/memory.d.ts.map +0 -1
  172. package/dist/debug/decoding/memory.js +0 -216
  173. package/dist/debug/decoding/memory.js.map +0 -1
  174. package/dist/debug/decoding/stack.d.ts +0 -9
  175. package/dist/debug/decoding/stack.d.ts.map +0 -1
  176. package/dist/debug/decoding/stack.js +0 -84
  177. package/dist/debug/decoding/stack.js.map +0 -1
  178. package/dist/debug/decoding/storage.d.ts +0 -7
  179. package/dist/debug/decoding/storage.d.ts.map +0 -1
  180. package/dist/debug/decoding/storage.js +0 -393
  181. package/dist/debug/decoding/storage.js.map +0 -1
@@ -1,393 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nextWord = nextWord;
4
- exports.roundLocToType = roundLocToType;
5
- exports.stor_decodeMap = stor_decodeMap;
6
- exports.stor_decodeValue = stor_decodeValue;
7
- const util_1 = require("@ethereumjs/util");
8
- const keccak_js_1 = require("ethereum-cryptography/keccak.js");
9
- const solc_typed_ast_1 = require("solc-typed-ast");
10
- const __1 = require("..");
11
- const __2 = require("../..");
12
- /**
13
- * Helper to fetch the word residing at key `key` from `storage`. Note that
14
- * this always succeeds as all uninitialized values in storage are defined to
15
- * contain 0.
16
- */
17
- function fetchWord(key, storage) {
18
- const keyHash = (0, __2.bigEndianBufToBigint)((0, keccak_js_1.keccak256)((0, __2.bigIntToBuf)(key, 32, "big")));
19
- const res = storage.get(keyHash);
20
- if (res === undefined) {
21
- return new Uint8Array(32);
22
- }
23
- return res;
24
- }
25
- /**
26
- * Helper to fetch `numBytes` bytes from `storage` starting at offset `off`.
27
- * Note that this always succeeds as all uninitialized values in storage are
28
- * defined to contain 0.
29
- */
30
- function fetchBytes(wordOff, offInWord, numBytes, storage) {
31
- let curBuf = fetchWord(wordOff, storage);
32
- const res = new Uint8Array(numBytes);
33
- for (let i = 0; i < numBytes; i++) {
34
- res[i] = curBuf[offInWord];
35
- offInWord = (offInWord + 1) % 32;
36
- if (offInWord === 0 && i < numBytes - 1) {
37
- wordOff++;
38
- curBuf = fetchWord(wordOff, storage);
39
- }
40
- }
41
- return res;
42
- }
43
- /**
44
- * Decode a single integer of type `typ` from location `loc` in `storage`.
45
- * Returns pair `[bigint, number]` containing the decoded number and its size
46
- * in bytes in storage. Note: Always succeed as we can decode a valid integer
47
- * in any location in storage.
48
- */
49
- function stor_decodeInt(typ, loc, storage) {
50
- const size = typ.nBits / 8;
51
- (0, solc_typed_ast_1.assert)(loc.endOffsetInWord >= size, `Internal Error: Can't decode {0} starting at offset {1} in word {2}`, typ, loc.endOffsetInWord, loc.address);
52
- const rawBytes = fetchBytes(loc.address, loc.endOffsetInWord - size, size, storage);
53
- let res = (0, __2.bigEndianBufToBigint)(rawBytes);
54
- //console.error(`stor_decodeInt rawBytes=${rawBytes.toString(`hex`)} res=${res}`);
55
- // Convert signed negative 2's complement values
56
- if (typ.signed && (res & (BigInt(1) << BigInt(typ.nBits - 1))) !== BigInt(0)) {
57
- // Mask out any 1's above the number's size
58
- res = res & ((BigInt(1) << BigInt(typ.nBits)) - BigInt(1));
59
- res = -((BigInt(1) << BigInt(typ.nBits)) - res);
60
- }
61
- (0, solc_typed_ast_1.assert)((0, __2.fits)(res, typ), `Decoded value ${res} from ${loc} doesn't fit in expected type ${typ.pp()}`);
62
- const nextEndOff = loc.endOffsetInWord - size;
63
- const nextLoc = {
64
- kind: loc.kind,
65
- endOffsetInWord: nextEndOff === 0 ? 32 : nextEndOff,
66
- address: nextEndOff === 0 ? loc.address + BigInt(1) : loc.address
67
- };
68
- return [res, nextLoc];
69
- }
70
- const byte1 = new solc_typed_ast_1.IntType(8, false);
71
- /**
72
- * Decode a boolean from the given location in storage
73
- */
74
- function stor_decodeBool(loc, storage) {
75
- const [val, nextLoc] = stor_decodeInt(byte1, loc, storage);
76
- return [val !== BigInt(0), nextLoc];
77
- }
78
- /**
79
- * Decode an enum value from storage
80
- */
81
- function stor_decodeEnum(def, loc, storage) {
82
- const typ = (0, solc_typed_ast_1.enumToIntType)(def);
83
- return stor_decodeInt(typ, loc, storage);
84
- }
85
- /**
86
- * Decode a boolean from the given location in storage
87
- */
88
- function stor_decodeFixedBytes(typ, loc, storage) {
89
- (0, solc_typed_ast_1.assert)(loc.endOffsetInWord >= typ.size, `Internal Error: Can't decode {0} starting at offset {1} in word {2}`, typ, loc.endOffsetInWord, loc.address);
90
- const bytes = fetchBytes(loc.address, loc.endOffsetInWord - typ.size, typ.size, storage);
91
- const nextEndOff = loc.endOffsetInWord - typ.size;
92
- const nextLoc = {
93
- kind: loc.kind,
94
- endOffsetInWord: nextEndOff === 0 ? 32 : nextEndOff,
95
- address: nextEndOff === 0 ? loc.address + BigInt(1) : loc.address
96
- };
97
- return [bytes, nextLoc];
98
- }
99
- /**
100
- * Decode a boolean from the given location in storage
101
- */
102
- function stor_decodeAddress(loc, storage) {
103
- (0, solc_typed_ast_1.assert)(loc.endOffsetInWord >= 20, `Internal Error: Can't decode address starting at offset {0} in word {1}`, loc.endOffsetInWord, loc.address);
104
- const bytes = fetchBytes(loc.address, loc.endOffsetInWord - 20, 20, storage);
105
- const nextEndOff = loc.endOffsetInWord - 20;
106
- const nextLoc = {
107
- kind: loc.kind,
108
- endOffsetInWord: nextEndOff === 0 ? 32 : nextEndOff,
109
- address: nextEndOff === 0 ? loc.address + BigInt(1) : loc.address
110
- };
111
- return [new util_1.Address(bytes), nextLoc];
112
- }
113
- /**
114
- * Compute the 'static' size that a variable of type `typ` would take up in storage
115
- */
116
- function typeStaticStorSize(typ, infer) {
117
- if (typ instanceof solc_typed_ast_1.IntType) {
118
- return typ.nBits / 8;
119
- }
120
- if (typ instanceof solc_typed_ast_1.FixedBytesType) {
121
- return typ.size;
122
- }
123
- if (typ instanceof solc_typed_ast_1.BoolType) {
124
- return 1;
125
- }
126
- if (typ instanceof solc_typed_ast_1.AddressType) {
127
- return 20;
128
- }
129
- if (typ instanceof solc_typed_ast_1.UserDefinedType) {
130
- if (typ.definition instanceof solc_typed_ast_1.EnumDefinition) {
131
- return (0, solc_typed_ast_1.enumToIntType)(typ.definition).nBits / 8;
132
- }
133
- if (typ.definition instanceof solc_typed_ast_1.UserDefinedValueTypeDefinition) {
134
- return typeStaticStorSize(infer.typeNameToTypeNode(typ.definition.underlyingType), infer);
135
- }
136
- }
137
- throw new Error(`NYI typStaticStorSize(${typ.pp()})`);
138
- }
139
- function typeFitsInLoc(typ, loc, infer) {
140
- if (typ instanceof solc_typed_ast_1.PointerType) {
141
- if (typ.to instanceof solc_typed_ast_1.ArrayType ||
142
- typ.to instanceof solc_typed_ast_1.BytesType ||
143
- typ.to instanceof solc_typed_ast_1.StringType ||
144
- (typ.to instanceof solc_typed_ast_1.UserDefinedType && typ.to.definition instanceof solc_typed_ast_1.StructDefinition) ||
145
- typ.to instanceof solc_typed_ast_1.MappingType) {
146
- return loc.endOffsetInWord === 32;
147
- }
148
- throw new Error(`NYI typeFitsInLoc(${typ.pp()},...)`);
149
- }
150
- const size = typeStaticStorSize(typ, infer);
151
- (0, solc_typed_ast_1.assert)(size <= 32, `Unexpected type ${typ.pp()} spanning more than a single word`);
152
- return size <= loc.endOffsetInWord;
153
- }
154
- function nextWord(loc) {
155
- return {
156
- kind: loc.kind,
157
- endOffsetInWord: 32,
158
- address: loc.address + BigInt(1)
159
- };
160
- }
161
- function roundLocToType(loc, typ, infer) {
162
- if (typeFitsInLoc(typ, loc, infer)) {
163
- return loc;
164
- }
165
- return nextWord(loc);
166
- }
167
- /**
168
- * Decode a struct of type `typ` from location `loc` in `storage`.
169
- * Returns undefined when it fails decoding, otherwise a pair `[any, number]`
170
- * containing an object with the decoded fields and its size in bytes in storage.
171
- */
172
- function stor_decodeStruct(typ, loc, storage, infer, mapKeys) {
173
- const def = typ.definition;
174
- (0, solc_typed_ast_1.assert)(def instanceof solc_typed_ast_1.StructDefinition, `stor_decodeStruct expects a struct, not {0}`, typ);
175
- (0, solc_typed_ast_1.assert)(loc.endOffsetInWord === 32, `Internal Error: Location of struct of type {0} doesn't start at the end of word {1} - instead at off {2}`, typ, loc.address, loc.endOffsetInWord);
176
- const res = {};
177
- for (const field of def.vMembers) {
178
- let fieldGenT;
179
- try {
180
- fieldGenT = infer.variableDeclarationToTypeNode(field);
181
- }
182
- catch (e) {
183
- return undefined;
184
- }
185
- const fieldT = (0, __1.changeToLocation)(fieldGenT, solc_typed_ast_1.DataLocation.Storage);
186
- loc = roundLocToType(loc, fieldT, infer);
187
- const fieldVal = stor_decodeValue(fieldT, loc, storage, infer, mapKeys);
188
- if (fieldVal === undefined) {
189
- return undefined;
190
- }
191
- [res[field.name], loc] = fieldVal;
192
- }
193
- return [res, loc];
194
- }
195
- function keccakOfAddr(addr) {
196
- const addrBuf = (0, __2.bigIntToBuf)(addr, 32, "big");
197
- const hashBuf = (0, keccak_js_1.keccak256)(addrBuf);
198
- return (0, __2.bigEndianBufToBigint)(hashBuf);
199
- }
200
- function stor_decodeBytes(loc, storage) {
201
- (0, solc_typed_ast_1.assert)(loc.endOffsetInWord === 32, `Internal Error: Decoding bytes in the middle (off {0}) of word {1}`, loc.endOffsetInWord, loc.address);
202
- const word = fetchWord(loc.address, storage);
203
- const lByte = word[31];
204
- if (lByte % 2 === 0) {
205
- /// Less than 31 bytes - length * 2 stored in lowest byte
206
- const len = lByte / 2;
207
- (0, solc_typed_ast_1.assert)(len <= 31, `Unexpected length of more than 31`);
208
- return [word.slice(0, len), nextWord(loc)];
209
- }
210
- let [len] = stor_decodeInt(__2.uint256, loc, storage);
211
- len = (len - BigInt(1)) / BigInt(2);
212
- if (len > __2.MAX_ARR_DECODE_LIMIT) {
213
- return undefined;
214
- }
215
- const numLen = Number(len);
216
- const addr = keccakOfAddr(loc.address);
217
- const res = fetchBytes(addr, 0, numLen, storage);
218
- return [res, nextWord(loc)];
219
- }
220
- function stor_decodeString(loc, storage) {
221
- const res = stor_decodeBytes(loc, storage);
222
- if (res === undefined) {
223
- return undefined;
224
- }
225
- const str = (0, util_1.bytesToUtf8)(res[0]);
226
- return [str, res[1]];
227
- }
228
- function stor_decodeArray(typ, loc, storage, infer, mapKeys) {
229
- let numLen;
230
- let contentsLoc;
231
- const res = [];
232
- if (typ.size === undefined) {
233
- const [len] = stor_decodeInt(__2.uint256, loc, storage);
234
- //console.error(`stor_decodeArray: Decoded len ${len} at loc ${ppLoc(loc)}`);
235
- if (len > __2.MAX_ARR_DECODE_LIMIT) {
236
- return undefined;
237
- }
238
- numLen = Number(len);
239
- contentsLoc = {
240
- kind: loc.kind,
241
- address: keccakOfAddr(loc.address),
242
- endOffsetInWord: 32
243
- };
244
- }
245
- else {
246
- if (typ.size > __2.MAX_ARR_DECODE_LIMIT) {
247
- return undefined;
248
- }
249
- numLen = Number(typ.size);
250
- contentsLoc = loc;
251
- }
252
- for (let i = 0; i < numLen; i++) {
253
- const elRes = stor_decodeValue(typ.elementT, contentsLoc, storage, infer, mapKeys);
254
- if (elRes === undefined) {
255
- return undefined;
256
- }
257
- res.push(elRes[0]);
258
- contentsLoc = roundLocToType(elRes[1], typ.elementT, infer);
259
- }
260
- return [res, nextWord(loc)];
261
- }
262
- /**
263
- * Decode a pointer of type `typ` from location `loc` in `storage`.
264
- * Returns undefined when it fails decoding, otherwise a pair `[any, number]`
265
- * containing the decoded value and its size in bytes in storage.
266
- *
267
- * Pointers are a little tricky in storage, as you never really store pointers in storage.
268
- * Instead the 'pointed to' location is computed depending on the type, and some data or empty values may live
269
- * at the actual poitner location. Here are the possible cases:
270
- *
271
- * 1. Pointer to array - the length of the array is stored at the pointer location, the actual array lives at keccak256(loc.address)
272
- * 2. Pointer to fixed sized array - TODO????
273
- * 3. Pointer to bytes/string - if shorter than 32 bytes, 2*len is stored in the lowest byte of loc.address and the string/bytes in the upper 31 bytes
274
- * Otherwise 2*len+1 is stored at loc.address (TODO little endian? big endian encoded?) and the contents are at keccak256(loc.address)
275
- * 3. Pointer to struct - the struct fields themselves directly starts at the loc.address
276
- */
277
- function stor_decodePointer(typ, loc, storage, infer, mapKeys) {
278
- if (typ.to instanceof solc_typed_ast_1.BytesType) {
279
- return stor_decodeBytes(loc, storage);
280
- }
281
- if (typ.to instanceof solc_typed_ast_1.StringType) {
282
- return stor_decodeString(loc, storage);
283
- }
284
- if (typ.to instanceof solc_typed_ast_1.UserDefinedType) {
285
- if (typ.to.definition instanceof solc_typed_ast_1.StructDefinition) {
286
- return stor_decodeStruct(typ.to, loc, storage, infer, mapKeys);
287
- }
288
- }
289
- if (typ.to instanceof solc_typed_ast_1.ArrayType) {
290
- return stor_decodeArray(typ.to, loc, storage, infer, mapKeys);
291
- }
292
- if (typ.to instanceof solc_typed_ast_1.MappingType) {
293
- return stor_decodeMap(typ.to, loc, storage, infer, mapKeys);
294
- }
295
- throw new Error(`NYI stor_decodePointer(${typ.pp()},...)`);
296
- }
297
- function translateMapKey(key) {
298
- if (typeof key === "bigint") {
299
- return `${key}`;
300
- }
301
- if (typeof key === "number" || typeof key === "string") {
302
- return key;
303
- }
304
- if (key instanceof util_1.Address) {
305
- return key.toString();
306
- }
307
- throw new Error(`Unexpected decoded key value: ${key}`);
308
- }
309
- function decodeMapRefKey(type, data) {
310
- if (!(type instanceof solc_typed_ast_1.StringType || type instanceof solc_typed_ast_1.BytesType)) {
311
- throw new Error(`Invalid map reference key type ${type.pp()}`);
312
- }
313
- return type instanceof solc_typed_ast_1.StringType ? (0, util_1.bytesToUtf8)(data) : (0, util_1.bytesToHex)(data);
314
- }
315
- function stor_decodeMap(typ, loc, storage, infer, mapKeys) {
316
- if (mapKeys === undefined) {
317
- throw new Error(`Cannot decode map ${typ.pp()} without map keys given`);
318
- }
319
- const candidateKeys = mapKeys.get(loc.address);
320
- const res = {};
321
- // No keys
322
- if (candidateKeys === undefined) {
323
- return [res, nextWord(loc)];
324
- }
325
- for (const [candidateKey, candidateSlot] of candidateKeys) {
326
- let decodedKey;
327
- let decodedValue;
328
- try {
329
- if (typ.keyType instanceof solc_typed_ast_1.PointerType) {
330
- decodedKey = [decodeMapRefKey(typ.keyType.to, candidateKey), null];
331
- }
332
- else {
333
- decodedKey = (0, __1.mem_decodeValue)(typ.keyType, { kind: __1.DataLocationKind.Memory, address: BigInt(0) }, candidateKey, infer);
334
- }
335
- }
336
- catch (e) {
337
- continue;
338
- }
339
- try {
340
- decodedValue = stor_decodeValue(typ.valueType, { kind: __1.DataLocationKind.Storage, address: candidateSlot, endOffsetInWord: 32 }, storage, infer, mapKeys);
341
- }
342
- catch (e) {
343
- continue;
344
- }
345
- if (decodedKey !== undefined && decodedValue !== undefined) {
346
- res[translateMapKey(decodedKey[0])] = decodedValue[0];
347
- }
348
- }
349
- return [res, nextWord(loc)];
350
- }
351
- function stor_decodeValue(typ, loc, storage, infer, mapKeys) {
352
- if (typ instanceof solc_typed_ast_1.IntType) {
353
- return stor_decodeInt(typ, loc, storage);
354
- }
355
- if (typ instanceof solc_typed_ast_1.BoolType) {
356
- return stor_decodeBool(loc, storage);
357
- }
358
- if (typ instanceof solc_typed_ast_1.FixedBytesType) {
359
- return stor_decodeFixedBytes(typ, loc, storage);
360
- }
361
- if (typ instanceof solc_typed_ast_1.AddressType) {
362
- return stor_decodeAddress(loc, storage);
363
- }
364
- if (typ instanceof solc_typed_ast_1.PointerType) {
365
- return stor_decodePointer(typ, loc, storage, infer, mapKeys);
366
- }
367
- if (typ instanceof solc_typed_ast_1.BytesType) {
368
- return stor_decodeBytes(loc, storage);
369
- }
370
- if (typ instanceof solc_typed_ast_1.StringType) {
371
- return stor_decodeString(loc, storage);
372
- }
373
- if (typ instanceof solc_typed_ast_1.ArrayType) {
374
- return stor_decodeArray(typ, loc, storage, infer, mapKeys);
375
- }
376
- if (typ instanceof solc_typed_ast_1.UserDefinedType) {
377
- if (typ.definition instanceof solc_typed_ast_1.StructDefinition) {
378
- return stor_decodeStruct(typ, loc, storage, infer, mapKeys);
379
- }
380
- if (typ.definition instanceof solc_typed_ast_1.ContractDefinition) {
381
- return stor_decodeAddress(loc, storage);
382
- }
383
- if (typ.definition instanceof solc_typed_ast_1.EnumDefinition) {
384
- return stor_decodeEnum(typ.definition, loc, storage);
385
- }
386
- if (typ.definition instanceof solc_typed_ast_1.UserDefinedValueTypeDefinition) {
387
- const underlyingType = infer.typeNameToTypeNode(typ.definition.underlyingType);
388
- return stor_decodeValue(underlyingType, loc, storage, infer, mapKeys);
389
- }
390
- }
391
- throw new Error(`NYI storage decode for type ${typ.pp()}`);
392
- }
393
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/debug/decoding/storage.ts"],"names":[],"mappings":"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"}