sol-dbg 0.6.13 → 0.7.1

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 (169) 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 -21
  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 +3 -2
  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 +74 -0
  32. package/dist/debug/decoding/calldata/view.d.ts.map +1 -0
  33. package/dist/debug/decoding/calldata/view.js +397 -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/index.d.ts +2 -0
  48. package/dist/debug/decoding/memory/index.d.ts.map +1 -0
  49. package/dist/debug/decoding/memory/index.js +6 -0
  50. package/dist/debug/decoding/memory/index.js.map +1 -0
  51. package/dist/debug/decoding/memory/view.d.ts +44 -0
  52. package/dist/debug/decoding/memory/view.d.ts.map +1 -0
  53. package/dist/debug/decoding/memory/view.js +183 -0
  54. package/dist/debug/decoding/memory/view.js.map +1 -0
  55. package/dist/debug/decoding/stack/index.d.ts +2 -0
  56. package/dist/debug/decoding/stack/index.d.ts.map +1 -0
  57. package/dist/debug/decoding/stack/index.js +6 -0
  58. package/dist/debug/decoding/stack/index.js.map +1 -0
  59. package/dist/debug/decoding/stack/view.d.ts +29 -0
  60. package/dist/debug/decoding/stack/view.d.ts.map +1 -0
  61. package/dist/debug/decoding/stack/view.js +116 -0
  62. package/dist/debug/decoding/stack/view.js.map +1 -0
  63. package/dist/debug/decoding/storage/index.d.ts +2 -0
  64. package/dist/debug/decoding/storage/index.d.ts.map +1 -0
  65. package/dist/debug/decoding/storage/index.js +6 -0
  66. package/dist/debug/decoding/storage/index.js.map +1 -0
  67. package/dist/debug/decoding/storage/view.d.ts +90 -0
  68. package/dist/debug/decoding/storage/view.d.ts.map +1 -0
  69. package/dist/debug/decoding/storage/view.js +465 -0
  70. package/dist/debug/decoding/storage/view.js.map +1 -0
  71. package/dist/debug/decoding/utils.d.ts +17 -0
  72. package/dist/debug/decoding/utils.d.ts.map +1 -0
  73. package/dist/debug/decoding/utils.js +43 -0
  74. package/dist/debug/decoding/utils.js.map +1 -0
  75. package/dist/debug/decoding/value.d.ts +50 -0
  76. package/dist/debug/decoding/value.d.ts.map +1 -0
  77. package/dist/debug/decoding/value.js +106 -0
  78. package/dist/debug/decoding/value.js.map +1 -0
  79. package/dist/debug/decoding/view.d.ts +20 -0
  80. package/dist/debug/decoding/view.d.ts.map +1 -0
  81. package/dist/debug/decoding/view.js +15 -0
  82. package/dist/debug/decoding/view.js.map +1 -0
  83. package/dist/debug/foundry_cheatcodes.js +6 -6
  84. package/dist/debug/foundry_cheatcodes.js.map +1 -1
  85. package/dist/debug/layout.d.ts +4 -6
  86. package/dist/debug/layout.d.ts.map +1 -1
  87. package/dist/debug/layout.js +13 -77
  88. package/dist/debug/layout.js.map +1 -1
  89. package/dist/debug/opcode_interposing.js +3 -3
  90. package/dist/debug/opcode_interposing.js.map +1 -1
  91. package/dist/debug/opcodes.d.ts.map +1 -1
  92. package/dist/debug/opcodes.js +3 -1
  93. package/dist/debug/opcodes.js.map +1 -1
  94. package/dist/debug/tracers/sol_debugger.d.ts.map +1 -1
  95. package/dist/debug/tracers/sol_debugger.js +2 -1
  96. package/dist/debug/tracers/sol_debugger.js.map +1 -1
  97. package/dist/debug/tracers/transformers/basic_info.d.ts.map +1 -1
  98. package/dist/debug/tracers/transformers/basic_info.js +4 -3
  99. package/dist/debug/tracers/transformers/basic_info.js.map +1 -1
  100. package/dist/debug/tracers/transformers/events.js +2 -2
  101. package/dist/debug/tracers/transformers/events.js.map +1 -1
  102. package/dist/debug/tracers/transformers/exc_info.d.ts +15 -0
  103. package/dist/debug/tracers/transformers/exc_info.d.ts.map +1 -0
  104. package/dist/debug/tracers/transformers/exc_info.js +39 -0
  105. package/dist/debug/tracers/transformers/exc_info.js.map +1 -0
  106. package/dist/debug/tracers/transformers/ext_stack.d.ts.map +1 -1
  107. package/dist/debug/tracers/transformers/ext_stack.js +11 -26
  108. package/dist/debug/tracers/transformers/ext_stack.js.map +1 -1
  109. package/dist/debug/tracers/transformers/index.d.ts +1 -0
  110. package/dist/debug/tracers/transformers/index.d.ts.map +1 -1
  111. package/dist/debug/tracers/transformers/index.js +1 -0
  112. package/dist/debug/tracers/transformers/index.js.map +1 -1
  113. package/dist/debug/tracers/transformers/int_stack.d.ts.map +1 -1
  114. package/dist/debug/tracers/transformers/int_stack.js +5 -13
  115. package/dist/debug/tracers/transformers/int_stack.js.map +1 -1
  116. package/dist/debug/tracers/transformers/keccak256_invert.js +4 -4
  117. package/dist/debug/tracers/transformers/keccak256_invert.js.map +1 -1
  118. package/dist/debug/tracers/transformers/ret_info.d.ts +1 -1
  119. package/dist/debug/tracers/transformers/ret_info.d.ts.map +1 -1
  120. package/dist/debug/tracers/transformers/ret_info.js +46 -32
  121. package/dist/debug/tracers/transformers/ret_info.js.map +1 -1
  122. package/dist/debug/types.d.ts +63 -22
  123. package/dist/debug/types.d.ts.map +1 -1
  124. package/dist/debug/types.js.map +1 -1
  125. package/dist/utils/index.d.ts +1 -0
  126. package/dist/utils/index.d.ts.map +1 -1
  127. package/dist/utils/index.js +1 -0
  128. package/dist/utils/index.js.map +1 -1
  129. package/dist/utils/misc.d.ts +16 -11
  130. package/dist/utils/misc.d.ts.map +1 -1
  131. package/dist/utils/misc.js +37 -49
  132. package/dist/utils/misc.js.map +1 -1
  133. package/dist/utils/pp.d.ts +3 -1
  134. package/dist/utils/pp.d.ts.map +1 -1
  135. package/dist/utils/pp.js +10 -27
  136. package/dist/utils/pp.js.map +1 -1
  137. package/dist/utils/solidity.d.ts +11 -0
  138. package/dist/utils/solidity.d.ts.map +1 -0
  139. package/dist/utils/solidity.js +69 -0
  140. package/dist/utils/solidity.js.map +1 -0
  141. package/dist/utils/test_runner.d.ts +5 -2
  142. package/dist/utils/test_runner.d.ts.map +1 -1
  143. package/dist/utils/test_runner.js +11 -7
  144. package/dist/utils/test_runner.js.map +1 -1
  145. package/dist/utils/trace.d.ts +5 -1
  146. package/dist/utils/trace.d.ts.map +1 -1
  147. package/dist/utils/trace.js +16 -0
  148. package/dist/utils/trace.js.map +1 -1
  149. package/dist/utils/types.d.ts +9 -0
  150. package/dist/utils/types.d.ts.map +1 -0
  151. package/dist/utils/types.js +3 -0
  152. package/dist/utils/types.js.map +1 -0
  153. package/package.json +8 -4
  154. package/dist/debug/decoding/calldata.d.ts +0 -6
  155. package/dist/debug/decoding/calldata.d.ts.map +0 -1
  156. package/dist/debug/decoding/calldata.js +0 -244
  157. package/dist/debug/decoding/calldata.js.map +0 -1
  158. package/dist/debug/decoding/memory.d.ts +0 -4
  159. package/dist/debug/decoding/memory.d.ts.map +0 -1
  160. package/dist/debug/decoding/memory.js +0 -216
  161. package/dist/debug/decoding/memory.js.map +0 -1
  162. package/dist/debug/decoding/stack.d.ts +0 -9
  163. package/dist/debug/decoding/stack.d.ts.map +0 -1
  164. package/dist/debug/decoding/stack.js +0 -84
  165. package/dist/debug/decoding/stack.js.map +0 -1
  166. package/dist/debug/decoding/storage.d.ts +0 -7
  167. package/dist/debug/decoding/storage.d.ts.map +0 -1
  168. package/dist/debug/decoding/storage.js +0 -393
  169. package/dist/debug/decoding/storage.js.map +0 -1
@@ -1,84 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.st_decodeInt = st_decodeInt;
4
- exports.st_decodeValue = st_decodeValue;
5
- const solc_typed_ast_1 = require("solc-typed-ast");
6
- const utils_1 = require("../../utils");
7
- function fetchStackWord(offsetFromTop, stack) {
8
- return stack.length <= offsetFromTop ? undefined : stack[stack.length - offsetFromTop - 1];
9
- }
10
- function st_decodeInt(typ, loc, stack) {
11
- const word = fetchStackWord(loc.offsetFromTop, stack);
12
- if (word === undefined) {
13
- return undefined;
14
- }
15
- let res = (0, utils_1.bigEndianBufToBigint)(word);
16
- if (typ.signed && (res & (BigInt(1) << BigInt(typ.nBits - 1))) !== BigInt(0)) {
17
- // Mask out any 1's above the number's size
18
- res = res & ((BigInt(1) << BigInt(typ.nBits)) - BigInt(1));
19
- res = -((BigInt(1) << BigInt(typ.nBits)) - res);
20
- }
21
- // Convert signed negative 2's complement values
22
- (0, solc_typed_ast_1.assert)((0, utils_1.fits)(res, typ), `Decoded value ${res} from ${loc} doesn't fit in expected type ${typ.pp()}`);
23
- return res;
24
- }
25
- function st_decodeAddress(loc, stack) {
26
- const addrWord = fetchStackWord(loc.offsetFromTop, stack);
27
- if (addrWord === undefined) {
28
- return undefined;
29
- }
30
- return (0, utils_1.wordToAddress)(addrWord);
31
- }
32
- function st_decodeFixedBytes(typ, loc, stack) {
33
- const addrWord = fetchStackWord(loc.offsetFromTop, stack);
34
- if (addrWord === undefined) {
35
- return undefined;
36
- }
37
- return addrWord.slice(0, typ.size);
38
- }
39
- function st_decodeBool(loc, stack) {
40
- const addrWord = fetchStackWord(loc.offsetFromTop, stack);
41
- if (addrWord === undefined) {
42
- return undefined;
43
- }
44
- return (0, utils_1.bigEndianBufToBigint)(addrWord) !== BigInt(0);
45
- }
46
- function st_decodeEnum(def, loc, stack) {
47
- const intType = (0, solc_typed_ast_1.enumToIntType)(def);
48
- return st_decodeInt(intType, loc, stack);
49
- }
50
- /**
51
- * Decode a single value from a stack location. All values in the stack span exactly
52
- * one slot (32 bytes). Returns the decoded value or undefined (if it failed decoding for some reason)
53
- */
54
- function st_decodeValue(typ, loc, stack, infer) {
55
- //console.error(`st_decodeValue(${typ.pp()}, ${ppLoc(loc)})`);
56
- if (typ instanceof solc_typed_ast_1.IntType) {
57
- return st_decodeInt(typ, loc, stack);
58
- }
59
- if (typ instanceof solc_typed_ast_1.AddressType) {
60
- return st_decodeAddress(loc, stack);
61
- }
62
- if (typ instanceof solc_typed_ast_1.FixedBytesType) {
63
- return st_decodeFixedBytes(typ, loc, stack);
64
- }
65
- if (typ instanceof solc_typed_ast_1.BoolType) {
66
- return st_decodeBool(loc, stack);
67
- }
68
- if (typ instanceof solc_typed_ast_1.UserDefinedType) {
69
- const def = typ.definition;
70
- if (def instanceof solc_typed_ast_1.EnumDefinition) {
71
- return st_decodeEnum(def, loc, stack);
72
- }
73
- if (def instanceof solc_typed_ast_1.ContractDefinition) {
74
- return st_decodeAddress(loc, stack);
75
- }
76
- if (def instanceof solc_typed_ast_1.UserDefinedValueTypeDefinition) {
77
- const underlyingType = infer.typeNameToTypeNode(def.underlyingType);
78
- return st_decodeValue(underlyingType, loc, stack, infer);
79
- }
80
- throw new Error(`NYI decoding user defined type ${typ.pp()} from the stack`);
81
- }
82
- throw new Error(`NYI decoding ${typ.pp()} from the stack`);
83
- }
84
- //# sourceMappingURL=stack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/debug/decoding/stack.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { InferType, MappingType, TypeNode } from "solc-typed-ast";
2
- import { MapKeys, Storage, StorageLocation } from "..";
3
- export declare function nextWord(loc: StorageLocation): StorageLocation;
4
- export declare function roundLocToType(loc: StorageLocation, typ: TypeNode, infer: InferType): StorageLocation;
5
- export declare function stor_decodeMap(typ: MappingType, loc: StorageLocation, storage: Storage, infer: InferType, mapKeys?: MapKeys): undefined | [any, StorageLocation];
6
- export declare function stor_decodeValue(typ: TypeNode, loc: StorageLocation, storage: Storage, infer: InferType, mapKeys?: MapKeys): undefined | [any, StorageLocation];
7
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/debug/decoding/storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAQH,SAAS,EAET,WAAW,EAKX,QAAQ,EAKX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEH,OAAO,EACP,OAAO,EACP,eAAe,EAGlB,MAAM,IAAI,CAAC;AA2OZ,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAM9D;AAED,wBAAgB,cAAc,CAC1B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,SAAS,GACjB,eAAe,CAMjB;AA2OD,wBAAgB,cAAc,CAC1B,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,OAAO,GAClB,SAAS,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAkDpC;AAED,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,OAAO,GAClB,SAAS,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAsDpC"}
@@ -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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"}