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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../src/debug/decoding/stack/view.ts"],"names":[],"mappings":";;;AAkIA,sCAsBC;AAxJD,mDASwB;AAExB,oCAAkD;AAClD,kCAA+B;AAC/B,0CAAyF;AAEzF,wCAA6C;AAC7C,oCAA0D;AAC1D,2CAA4E;AAC5E,sCAA2C;AAE3C,MAAsB,aAAwD,SAAQ,WAKrF;IACG,cAAc,CAAC,aAAqB,EAAE,KAAY;QAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QAEzB,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,uBAAe,CAAC,GAAG,aAAa,2BAA2B,GAAG,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,OAAO,KAAK,CAAC,GAAG,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,WAAW,CAAC,aAAqB,EAAE,GAAY,EAAE,KAAY;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAEvD,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,GAAG,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QACrC,gDAAgD;QAChD,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,2CAA2C;YAC3C,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,IAAA,YAAI,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,IAAI,uBAAe,CAAC,GAAG,GAAG,uBAAuB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,EAAE;QACE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,YAAY,CAAC;IACtD,CAAC;CACJ;AAzCD,sCAyCC;AAED,MAAa,YAAa,SAAQ,aAA8B;IAC5D,MAAM,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;CACJ;AAJD,oCAIC;AAED,MAAa,aAAc,SAAQ,aAAgC;IAC/D,MAAM,CAAC,KAAY;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,eAAO,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;IAC7C,CAAC;CACJ;AALD,sCAKC;AAED,MAAa,gBAAiB,SAAQ,aAAmC;IACrE,MAAM,CAAC,KAAY;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,qBAAa,EAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;CACJ;AALD,4CAKC;AAED,MAAa,mBAAoB,SAAQ,aAAyC;IAC9E,MAAM,CAAC,KAAY;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;CACJ;AALD,kDAKC;AAID,MAAa,gBAAiB,SAAQ,aAAwC;IAC1E,MAAM,CAAC,KAAY;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,eAAO,EAAE,KAAK,CAAC,CAAC;QAEvD,IAAI,IAAA,iBAAS,EAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC;QACf,CAAC;QAED,IAAI,IAAA,2BAAmB,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,kDAAkD;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,eAAO,EAAE,KAAK,CAAC,CAAC;YAE3D,IAAI,IAAA,iBAAS,EAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,GAAG,CAAC;YACf,CAAC;YAED,OAAO,IAAI,6BAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAe,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAAY,CAAC,QAAQ,EAAE,CAAC;YAC/C,OAAO,IAAA,uBAAgB,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAAY,CAAC,MAAM,EAAE,CAAC;YAC7C,OAAO,IAAA,uBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,IACI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAAY,CAAC,OAAO;YAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAAY,CAAC,SAAS,EAC/C,CAAC;YACC,OAAO,IAAA,yBAAe,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,IAAA,WAAG,EAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,CAAC;CACJ;AApCD,4CAoCC;AAED,SAAgB,aAAa,CAAC,IAAc,EAAE,GAAW;IACrD,IAAI,IAAI,YAAY,wBAAO,EAAE,CAAC;QAC1B,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,IAAI,YAAY,4BAAW,EAAE,CAAC;QAC9B,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI,YAAY,+BAAc,EAAE,CAAC;QACjC,OAAO,IAAI,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,YAAY,yBAAQ,EAAE,CAAC;QAC3B,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,IAAI,YAAY,4BAAW,EAAE,CAAC;QAC9B,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,IAAA,WAAG,EAAC,iBAAiB,IAAI,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { makeStorageView } from "./view";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/debug/decoding/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeStorageView = void 0;
4
+ var view_1 = require("./view");
5
+ Object.defineProperty(exports, "makeStorageView", { enumerable: true, get: function () { return view_1.makeStorageView; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/debug/decoding/storage/index.ts"],"names":[],"mappings":";;;AAAA,+BAAyC;AAAhC,uGAAA,eAAe,OAAA"}
@@ -0,0 +1,90 @@
1
+ import { AddressType, ArrayType, BoolType, BytesType, FixedBytesType, IntType, MappingType, PointerType, StringType, TypeNode } from "solc-typed-ast";
2
+ import { DecodingFailure, Struct, Value } from "../value";
3
+ import { View } from "../view";
4
+ import { Storage } from "../../types";
5
+ import { Address } from "@ethereumjs/util";
6
+ import { ExpStructType, MissingType } from "../exp_types";
7
+ import { MapKeys } from "../../tracers";
8
+ type StorageLocation = [bigint, number];
9
+ export declare abstract class BaseStorageView<Val extends Value, Type extends TypeNode = TypeNode> extends View<Storage, Val, [bigint, number], Type> {
10
+ key: bigint;
11
+ endOffsetInWord: number;
12
+ constructor(type: Type, loc: [bigint, number]);
13
+ /**
14
+ * Helper to fetch the word residing at key `key` from `storage`. If the key is missing return an all-0 value.
15
+ */
16
+ protected fetchWord(key: bigint, storage: Storage): Uint8Array;
17
+ /**
18
+ * Helper to fetch `numBytes` bytes from `storage` starting at offset `off`.
19
+ */
20
+ protected fetchBytes(wordOff: bigint, offInWord: number, numBytes: number, state: Storage): Uint8Array;
21
+ /**
22
+ * Helper to decode an int type at a given location in storage.
23
+ */
24
+ protected decodeIntAt(key: bigint, endOffsetInWord: number, type: IntType, state: Storage): bigint | DecodingFailure;
25
+ pp(): string;
26
+ /**
27
+ * The first location after the end of this view
28
+ */
29
+ abstract nextLoc(): StorageLocation | undefined;
30
+ abstract decode(state: Storage, mapKeys?: MapKeys): Val | DecodingFailure;
31
+ }
32
+ export declare class IntStorageView extends BaseStorageView<bigint, IntType> {
33
+ decode(state: Storage): bigint | DecodingFailure;
34
+ nextLoc(): StorageLocation;
35
+ }
36
+ export declare class BoolStorageView extends BaseStorageView<boolean, BoolType> {
37
+ decode(state: Storage): boolean | DecodingFailure;
38
+ nextLoc(): StorageLocation;
39
+ }
40
+ export declare class AddressStorageView extends BaseStorageView<Address, AddressType> {
41
+ decode(state: Storage): Address | DecodingFailure;
42
+ nextLoc(): StorageLocation;
43
+ }
44
+ export declare class FixedBytesStorageView extends BaseStorageView<Uint8Array, FixedBytesType> {
45
+ decode(state: Storage): Uint8Array | DecodingFailure;
46
+ nextLoc(): StorageLocation;
47
+ }
48
+ export declare class PointerStorageView extends BaseStorageView<Value, PointerType> {
49
+ innerView: BaseStorageView<Value, TypeNode>;
50
+ constructor(type: PointerType, loc: [bigint, number]);
51
+ decode(state: Storage, mapKeys?: MapKeys): Value;
52
+ nextLoc(): StorageLocation | undefined;
53
+ }
54
+ export declare class ArrayStorageView extends BaseStorageView<Value[], ArrayType> {
55
+ private _nextLoc;
56
+ constructor(type: ArrayType, loc: [bigint, number]);
57
+ nextLoc(): StorageLocation | undefined;
58
+ decode(state: Storage, mapKeys?: MapKeys): Value[] | DecodingFailure;
59
+ }
60
+ export declare class StructStorageView extends BaseStorageView<Struct, ExpStructType> {
61
+ fieldViews: Array<[string, BaseStorageView<Value, TypeNode>]>;
62
+ private _nextLoc;
63
+ constructor(type: ExpStructType, loc: StorageLocation);
64
+ nextLoc(): StorageLocation | undefined;
65
+ decode(state: Storage, mapKeys?: MapKeys): Struct;
66
+ }
67
+ export declare class MapStorageView extends BaseStorageView<Map<Value, Value>, MappingType> {
68
+ constructor(type: MappingType, loc: StorageLocation);
69
+ nextLoc(): StorageLocation;
70
+ decode(state: Storage, mapKeys?: MapKeys): Map<Value, Value>;
71
+ }
72
+ export declare abstract class PackedArrayStorageView<V extends Value, T extends TypeNode> extends BaseStorageView<V, T> {
73
+ nextLoc(): StorageLocation;
74
+ decodeBytes(state: Storage): Uint8Array | DecodingFailure;
75
+ }
76
+ export declare class BytesStorageView extends PackedArrayStorageView<Uint8Array, BytesType> {
77
+ decode(state: Storage): Uint8Array | DecodingFailure;
78
+ }
79
+ export declare class StringStorageView extends PackedArrayStorageView<string, StringType> {
80
+ decode(state: Storage): string | DecodingFailure;
81
+ }
82
+ export declare class MissingStorageView extends BaseStorageView<DecodingFailure, MissingType> {
83
+ constructor(type: MissingType, loc: StorageLocation);
84
+ decode(): DecodingFailure;
85
+ nextLoc(): StorageLocation | undefined;
86
+ }
87
+ export declare function nextWord(loc: StorageLocation): StorageLocation;
88
+ export declare function makeStorageView(type: TypeNode, loc: StorageLocation): BaseStorageView<Value, TypeNode>;
89
+ export {};
90
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../../src/debug/decoding/storage/view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,465 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MissingStorageView = exports.StringStorageView = exports.BytesStorageView = exports.PackedArrayStorageView = exports.MapStorageView = exports.StructStorageView = exports.ArrayStorageView = exports.PointerStorageView = exports.FixedBytesStorageView = exports.AddressStorageView = exports.BoolStorageView = exports.IntStorageView = exports.BaseStorageView = void 0;
4
+ exports.nextWord = nextWord;
5
+ exports.makeStorageView = makeStorageView;
6
+ const solc_typed_ast_1 = require("solc-typed-ast");
7
+ const value_1 = require("../value");
8
+ const view_1 = require("../view");
9
+ const utils_1 = require("../../../utils");
10
+ const keccak_1 = require("ethereum-cryptography/keccak");
11
+ const util_1 = require("@ethereumjs/util");
12
+ const exp_types_1 = require("../exp_types");
13
+ const memory_1 = require("../memory");
14
+ const utils_2 = require("../utils");
15
+ const utils_3 = require("ethereum-cryptography/utils");
16
+ function move(loc, byBytes) {
17
+ const [key, endOffsetInWord] = loc;
18
+ (0, solc_typed_ast_1.assert)(endOffsetInWord >= byBytes, ``);
19
+ return endOffsetInWord === byBytes ? [key + 1n, 32] : [key, endOffsetInWord - byBytes];
20
+ }
21
+ class BaseStorageView extends view_1.View {
22
+ constructor(type, loc) {
23
+ super(type, loc);
24
+ [this.key, this.endOffsetInWord] = loc;
25
+ }
26
+ /**
27
+ * Helper to fetch the word residing at key `key` from `storage`. If the key is missing return an all-0 value.
28
+ */
29
+ fetchWord(key, storage) {
30
+ const keyHash = (0, utils_1.bigEndianBufToBigint)((0, keccak_1.keccak256)((0, utils_1.bigIntToBuf)(key, 32, "big")));
31
+ const res = storage.get(keyHash);
32
+ if (res === undefined) {
33
+ return new Uint8Array(32);
34
+ }
35
+ return res;
36
+ }
37
+ /**
38
+ * Helper to fetch `numBytes` bytes from `storage` starting at offset `off`.
39
+ */
40
+ fetchBytes(wordOff, offInWord, numBytes, state) {
41
+ let curBuf = this.fetchWord(wordOff, state);
42
+ const res = new Uint8Array(numBytes);
43
+ /**
44
+ * @todo(dimo) One byte at a time copying is inefficient.
45
+ * See if we can copy slices
46
+ */
47
+ for (let i = 0; i < numBytes; i++) {
48
+ res[i] = curBuf[offInWord];
49
+ offInWord = (offInWord + 1) % 32;
50
+ if (offInWord === 0 && i < numBytes - 1) {
51
+ wordOff++;
52
+ curBuf = this.fetchWord(wordOff, state);
53
+ }
54
+ }
55
+ return res;
56
+ }
57
+ /**
58
+ * Helper to decode an int type at a given location in storage.
59
+ */
60
+ decodeIntAt(key, endOffsetInWord, type, state) {
61
+ const size = type.nBits / 8;
62
+ if (endOffsetInWord < size) {
63
+ return new value_1.DecodingFailure(`Internal Error: Can't decode ${type.pp()} starting at offset ${endOffsetInWord} in word ${key}`);
64
+ }
65
+ const rawBytes = this.fetchBytes(key, endOffsetInWord - size, size, state);
66
+ let res = (0, utils_1.bigEndianBufToBigint)(rawBytes);
67
+ // Convert signed negative 2's complement values
68
+ if (type.signed && (res & (BigInt(1) << BigInt(type.nBits - 1))) !== BigInt(0)) {
69
+ // Mask out any 1's above the number's size
70
+ res = res & ((BigInt(1) << BigInt(type.nBits)) - BigInt(1));
71
+ res = -((BigInt(1) << BigInt(type.nBits)) - res);
72
+ }
73
+ if (!(0, utils_1.fits)(res, type)) {
74
+ return new value_1.DecodingFailure(`Decoded value ${res} from ${[key, endOffsetInWord]} doesn't fit in expected typee ${type.pp()}`);
75
+ }
76
+ return res;
77
+ }
78
+ pp() {
79
+ return `<${this.type.pp()}@${this.loc} in storage>`;
80
+ }
81
+ }
82
+ exports.BaseStorageView = BaseStorageView;
83
+ class IntStorageView extends BaseStorageView {
84
+ decode(state) {
85
+ return this.decodeIntAt(this.key, this.endOffsetInWord, this.type, state);
86
+ }
87
+ nextLoc() {
88
+ return move(this.loc, this.type.nBits / 8);
89
+ }
90
+ }
91
+ exports.IntStorageView = IntStorageView;
92
+ class BoolStorageView extends BaseStorageView {
93
+ decode(state) {
94
+ const byte = this.decodeIntAt(this.key, this.endOffsetInWord, utils_1.uint8, state);
95
+ if ((0, utils_2.isFailure)(byte)) {
96
+ return byte;
97
+ }
98
+ return byte !== BigInt(0);
99
+ }
100
+ nextLoc() {
101
+ return move(this.loc, 1);
102
+ }
103
+ }
104
+ exports.BoolStorageView = BoolStorageView;
105
+ class AddressStorageView extends BaseStorageView {
106
+ decode(state) {
107
+ if (this.endOffsetInWord < 20) {
108
+ return new value_1.DecodingFailure(`Unalighed read: Can't decode ${this.type.pp()} starting at offset ${this.endOffsetInWord} in word ${this.key}`);
109
+ }
110
+ const bytes = this.fetchBytes(this.key, this.endOffsetInWord - 20, 20, state);
111
+ return new util_1.Address(bytes);
112
+ }
113
+ nextLoc() {
114
+ return move(this.loc, 20);
115
+ }
116
+ }
117
+ exports.AddressStorageView = AddressStorageView;
118
+ class FixedBytesStorageView extends BaseStorageView {
119
+ decode(state) {
120
+ if (this.endOffsetInWord < this.type.size) {
121
+ return new value_1.DecodingFailure(`Unalighed Read: Can't decode ${this.type.pp()} starting at offset ${this.endOffsetInWord} in word ${this.key}`);
122
+ }
123
+ return this.fetchBytes(this.key, this.endOffsetInWord - this.type.size, this.type.size, state);
124
+ }
125
+ nextLoc() {
126
+ return move(this.loc, this.type.size);
127
+ }
128
+ }
129
+ exports.FixedBytesStorageView = FixedBytesStorageView;
130
+ class PointerStorageView extends BaseStorageView {
131
+ constructor(type, loc) {
132
+ super(type, loc);
133
+ this.innerView = makeStorageView(type.to, loc);
134
+ }
135
+ decode(state, mapKeys) {
136
+ return this.innerView.decode(state, mapKeys);
137
+ }
138
+ nextLoc() {
139
+ return this.innerView.nextLoc();
140
+ }
141
+ }
142
+ exports.PointerStorageView = PointerStorageView;
143
+ function keccakOfAddr(addr) {
144
+ const addrBuf = (0, utils_1.bigIntToBuf)(addr, 32, "big");
145
+ const hashBuf = (0, keccak_1.keccak256)(addrBuf);
146
+ return (0, utils_1.bigEndianBufToBigint)(hashBuf);
147
+ }
148
+ class ArrayStorageView extends BaseStorageView {
149
+ constructor(type, loc) {
150
+ super(type, loc);
151
+ if (type.size === undefined) {
152
+ this._nextLoc = nextWord(loc);
153
+ }
154
+ else {
155
+ // Dirty way to compute how many elements fit in how many words
156
+ let tmpL = [0n, 32];
157
+ let nEls = 0n;
158
+ while (typeFitsInLoc(type.elementT, tmpL) && tmpL[0] === 0n) {
159
+ nEls++;
160
+ const elView = makeStorageView(type.elementT, tmpL);
161
+ tmpL = elView.nextLoc();
162
+ if (tmpL === undefined) {
163
+ break;
164
+ }
165
+ }
166
+ if (tmpL === undefined) {
167
+ this._nextLoc = undefined;
168
+ }
169
+ else {
170
+ // Number of words needed for nEls elementsgmai
171
+ const nWords = tmpL[0] + (tmpL[1] === 32 ? 0n : 1n);
172
+ // Number of groups of "nEls" needed to fit in size
173
+ const nGroups = type.size / nEls + (type.size % nEls === 0n ? 0n : 1n);
174
+ // Number of words for the entire fixed sized array.
175
+ // Note that the last groups may have fewer than nEls elements.
176
+ // But it will still consume the same number of words. Its either 1 word,
177
+ // Or its a 1-element group that takes multiple words.
178
+ const nWordsPerArray = nGroups * nWords;
179
+ this._nextLoc = [this.loc[0] + nWordsPerArray, 32];
180
+ }
181
+ }
182
+ }
183
+ nextLoc() {
184
+ return this._nextLoc;
185
+ }
186
+ decode(state, mapKeys) {
187
+ let sizeBigint;
188
+ let contentsKey;
189
+ const contentsOff = 32;
190
+ if (this.type.size) {
191
+ sizeBigint = this.type.size;
192
+ contentsKey = this.key;
193
+ }
194
+ else {
195
+ sizeBigint = this.decodeIntAt(this.key, this.endOffsetInWord, utils_1.uint256, state);
196
+ if ((0, utils_2.isFailure)(sizeBigint)) {
197
+ return sizeBigint;
198
+ }
199
+ contentsKey = keccakOfAddr(this.key);
200
+ }
201
+ if (sizeBigint > utils_1.MAX_ARR_DECODE_LIMIT) {
202
+ return new value_1.DecodingFailure(`Array too large to decode ${sizeBigint}`);
203
+ }
204
+ const size = Number(sizeBigint);
205
+ const res = [];
206
+ let elLoc = [contentsKey, contentsOff];
207
+ const elT = this.type.elementT;
208
+ for (let i = 0; i < size; i++) {
209
+ if (elLoc === undefined) {
210
+ res.push(new value_1.DecodingFailure(`Failed earlier in array`));
211
+ }
212
+ else {
213
+ const view = makeStorageView(elT, elLoc);
214
+ res.push(view.decode(state, mapKeys));
215
+ elLoc = view.nextLoc();
216
+ }
217
+ }
218
+ return res;
219
+ }
220
+ }
221
+ exports.ArrayStorageView = ArrayStorageView;
222
+ class StructStorageView extends BaseStorageView {
223
+ constructor(type, loc) {
224
+ super(type, loc);
225
+ this.fieldViews = [];
226
+ (0, solc_typed_ast_1.assert)(this.endOffsetInWord === 32, `Structs must start at 32 byte boundaries`);
227
+ let fieldLoc = this.loc;
228
+ for (const [name, fieldT] of this.type.fields) {
229
+ const fieldView = fieldLoc === undefined
230
+ ? new MissingStorageView(new exp_types_1.MissingType(undefined), [-1n, 32])
231
+ : makeStorageView(fieldT, fieldLoc);
232
+ this.fieldViews.push([name, fieldView]);
233
+ fieldLoc = fieldView.nextLoc();
234
+ }
235
+ this._nextLoc =
236
+ fieldLoc === undefined ? undefined : fieldLoc[1] === 32 ? fieldLoc : nextWord(fieldLoc);
237
+ }
238
+ nextLoc() {
239
+ return this._nextLoc;
240
+ }
241
+ decode(state, mapKeys) {
242
+ const entries = this.fieldViews.map(([name, view]) => [
243
+ name,
244
+ view.decode(state, mapKeys)
245
+ ]);
246
+ return new value_1.Struct(entries);
247
+ }
248
+ }
249
+ exports.StructStorageView = StructStorageView;
250
+ function decodeMapRefKey(type, data) {
251
+ if (!(type instanceof solc_typed_ast_1.StringType || type instanceof solc_typed_ast_1.BytesType)) {
252
+ throw new Error(`Invalid map reference key type ${type.pp()}`);
253
+ }
254
+ return type instanceof solc_typed_ast_1.StringType ? (0, util_1.bytesToUtf8)(data) : (0, utils_3.bytesToHex)(data);
255
+ }
256
+ class MapStorageView extends BaseStorageView {
257
+ constructor(type, loc) {
258
+ super(type, loc);
259
+ }
260
+ nextLoc() {
261
+ return nextWord(this.loc);
262
+ }
263
+ decode(state, mapKeys) {
264
+ if (mapKeys === undefined) {
265
+ return new Map();
266
+ }
267
+ const candidateKeys = mapKeys.get(this.loc[0]);
268
+ const res = new Map();
269
+ if (candidateKeys === undefined) {
270
+ return res;
271
+ }
272
+ let keyView;
273
+ if (!(this.type.keyType instanceof solc_typed_ast_1.PointerType)) {
274
+ keyView = (0, memory_1.makeMemoryView)(this.type.keyType, 0n);
275
+ }
276
+ // @todo(dimo) Would it be better here to check that `candidateSlot` is an explicitly defined in storage, and not just a 0 by default?
277
+ for (const [candidateKey, candidateSlot] of candidateKeys) {
278
+ let decodedKey;
279
+ if (keyView !== undefined) {
280
+ decodedKey = keyView.decode(candidateKey);
281
+ }
282
+ else {
283
+ decodedKey = decodeMapRefKey(this.type.keyType.to, candidateKey);
284
+ }
285
+ const valueView = makeStorageView(this.type.valueType, [candidateSlot, 32]);
286
+ const decodedValue = valueView.decode(state, mapKeys);
287
+ if (!(0, utils_2.isFailure)(decodedKey) && !(0, utils_2.isFailure)(decodedValue)) {
288
+ res.set(decodedKey, decodedValue);
289
+ }
290
+ }
291
+ return res;
292
+ }
293
+ }
294
+ exports.MapStorageView = MapStorageView;
295
+ class PackedArrayStorageView extends BaseStorageView {
296
+ nextLoc() {
297
+ return nextWord(this.loc);
298
+ }
299
+ decodeBytes(state) {
300
+ const word = this.fetchWord(this.key, state);
301
+ const lByte = word[31];
302
+ if (lByte % 2 === 0) {
303
+ /// Less than 31 bytes - length * 2 stored in lowest byte
304
+ const len = lByte / 2;
305
+ (0, solc_typed_ast_1.assert)(len <= 31, `Unexpected length of more than 31`);
306
+ return word.slice(0, len);
307
+ }
308
+ let len = this.decodeIntAt(this.key, this.endOffsetInWord, utils_1.uint256, state);
309
+ if ((0, utils_2.isFailure)(len)) {
310
+ return len;
311
+ }
312
+ len = (len - 1n) / 2n;
313
+ if (len > utils_1.MAX_ARR_DECODE_LIMIT) {
314
+ return new value_1.DecodingFailure(`${this.type.pp()} too large - ${len}`);
315
+ }
316
+ const numLen = Number(len);
317
+ const addr = keccakOfAddr(this.key);
318
+ return this.fetchBytes(addr, 0, numLen, state);
319
+ }
320
+ }
321
+ exports.PackedArrayStorageView = PackedArrayStorageView;
322
+ class BytesStorageView extends PackedArrayStorageView {
323
+ decode(state) {
324
+ return this.decodeBytes(state);
325
+ }
326
+ }
327
+ exports.BytesStorageView = BytesStorageView;
328
+ class StringStorageView extends PackedArrayStorageView {
329
+ decode(state) {
330
+ const bytes = this.decodeBytes(state);
331
+ if ((0, utils_2.isFailure)(bytes)) {
332
+ return bytes;
333
+ }
334
+ return (0, util_1.bytesToUtf8)(bytes);
335
+ }
336
+ }
337
+ exports.StringStorageView = StringStorageView;
338
+ class MissingStorageView extends BaseStorageView {
339
+ constructor(type, loc) {
340
+ super(type, loc);
341
+ if (this.type.rawTypeName !== undefined) {
342
+ const typeString = this.type.rawTypeName.typeString;
343
+ if ((0, utils_2.isTypeStringStatic32BytesInStorage)(typeString)) {
344
+ (0, solc_typed_ast_1.assert)(this.endOffsetInWord === 32, `Unexpected non-word aligned {0} in storage`, typeString);
345
+ }
346
+ }
347
+ }
348
+ decode() {
349
+ return new value_1.DecodingFailure(`missing ${this.type.rawTypeName ? this.type.rawTypeName.type : "<unknown>"}`);
350
+ }
351
+ nextLoc() {
352
+ if (this.type.rawTypeName === undefined) {
353
+ return undefined;
354
+ }
355
+ const typeString = this.type.rawTypeName.typeString;
356
+ // If we can guess this is a dynamic array or mapping from the typestring, then we know the nextLoc
357
+ if ((0, utils_2.isTypeStringStatic32BytesInStorage)(typeString)) {
358
+ return nextWord(this.loc);
359
+ }
360
+ return undefined;
361
+ }
362
+ }
363
+ exports.MissingStorageView = MissingStorageView;
364
+ /**
365
+ * Return true if the given type `typ` fits in the storage word location pointed by
366
+ * `loc`. This checks that the type actually fits, and that its not one of the types
367
+ * that need to start in their own word (Arrays and Structs)
368
+ * @param typ
369
+ * @param loc
370
+ * @param infer
371
+ * @returns
372
+ */
373
+ function typeFitsInLoc(typ, loc) {
374
+ const [, endOffsetInWord] = loc;
375
+ if (typeStartsInNewWord(typ)) {
376
+ return endOffsetInWord == 32;
377
+ }
378
+ return staticSize(typ) <= endOffsetInWord;
379
+ }
380
+ function nextWord(loc) {
381
+ return [loc[0] + 1n, 32];
382
+ }
383
+ function typeStartsInNewWord(t) {
384
+ if (t instanceof solc_typed_ast_1.PointerType) {
385
+ return typeStartsInNewWord(t.to);
386
+ }
387
+ return t instanceof solc_typed_ast_1.ArrayType || t instanceof solc_typed_ast_1.MappingType || t instanceof exp_types_1.ExpStructType;
388
+ }
389
+ /**
390
+ * Compute the 'static' size that a variable of primitive type `typ` would take
391
+ * up in storage. Primitive here means not an array, struct or a map. Those
392
+ * have special layout rules (always start in a new word, next item in layout
393
+ * starts in own word too).
394
+ */
395
+ function staticSize(typ) {
396
+ if (typ instanceof solc_typed_ast_1.IntType) {
397
+ return typ.nBits / 8;
398
+ }
399
+ if (typ instanceof solc_typed_ast_1.FixedBytesType) {
400
+ return typ.size;
401
+ }
402
+ if (typ instanceof solc_typed_ast_1.BoolType) {
403
+ return 1;
404
+ }
405
+ if (typ instanceof solc_typed_ast_1.AddressType) {
406
+ return 20;
407
+ }
408
+ if (typ instanceof solc_typed_ast_1.BytesType || typ instanceof solc_typed_ast_1.StringType) {
409
+ return 32;
410
+ }
411
+ if (typ instanceof solc_typed_ast_1.PointerType) {
412
+ return staticSize(typ.to);
413
+ }
414
+ if (typ instanceof exp_types_1.MissingType &&
415
+ typ.rawTypeName !== undefined &&
416
+ (0, utils_2.isTypeStringStatic32BytesInStorage)(typ.rawTypeName.typeString)) {
417
+ return 32;
418
+ }
419
+ (0, utils_1.nyi)(`NYI staticSize(${typ.pp()})`);
420
+ }
421
+ function makeStorageView(type, loc) {
422
+ if (type instanceof exp_types_1.MissingType) {
423
+ if (type.rawTypeName !== undefined) {
424
+ if ((0, utils_2.isTypeStringStatic32BytesInStorage)(type.rawTypeName.typeString)) {
425
+ loc = loc[1] === 32 ? loc : nextWord(loc);
426
+ }
427
+ }
428
+ return new MissingStorageView(type, loc);
429
+ }
430
+ if (!typeFitsInLoc(type, loc)) {
431
+ loc = nextWord(loc);
432
+ }
433
+ if (type instanceof solc_typed_ast_1.IntType) {
434
+ return new IntStorageView(type, loc);
435
+ }
436
+ if (type instanceof solc_typed_ast_1.BoolType) {
437
+ return new BoolStorageView(utils_1.bool, loc);
438
+ }
439
+ if (type instanceof solc_typed_ast_1.AddressType) {
440
+ return new AddressStorageView(utils_1.address, loc);
441
+ }
442
+ if (type instanceof solc_typed_ast_1.FixedBytesType) {
443
+ return new FixedBytesStorageView(type, loc);
444
+ }
445
+ if (type instanceof solc_typed_ast_1.BytesType) {
446
+ return new BytesStorageView(type, loc);
447
+ }
448
+ if (type instanceof solc_typed_ast_1.StringType) {
449
+ return new StringStorageView(type, loc);
450
+ }
451
+ if (type instanceof solc_typed_ast_1.ArrayType) {
452
+ return new ArrayStorageView(type, loc);
453
+ }
454
+ if (type instanceof solc_typed_ast_1.PointerType) {
455
+ return new PointerStorageView(type, loc);
456
+ }
457
+ if (type instanceof exp_types_1.ExpStructType) {
458
+ return new StructStorageView(type, loc);
459
+ }
460
+ if (type instanceof solc_typed_ast_1.MappingType) {
461
+ return new MapStorageView(type, loc);
462
+ }
463
+ (0, utils_1.nyi)(`makeStoragView(${type.pp()})`);
464
+ }
465
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../src/debug/decoding/storage/view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { TypeNode } from "solc-typed-ast";
2
+ import { DecodingFailure, Value } from "./value";
3
+ export declare function isCalldataArrayType(typ: TypeNode): boolean;
4
+ /**
5
+ * Returns true IFF the n >= min && n <= max
6
+ *
7
+ * @param n
8
+ * @param min
9
+ * @param max
10
+ */
11
+ export declare function inRange(n: number | bigint, min: number | bigint, max: number | bigint): boolean;
12
+ export declare function isFailure(t: Value): t is DecodingFailure;
13
+ export declare function isTypeStringDynamicArray(t: string): boolean;
14
+ export declare function isTypeStringMapping(t: string): boolean;
15
+ export declare function isTypeStringStruct(t: string): boolean;
16
+ export declare function isTypeStringStatic32BytesInStorage(t: string): boolean;
17
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/debug/decoding/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,QAAQ,EACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAO1D;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAE/F;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,eAAe,CAExD;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,kCAAkC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAErE"}