sol-dbg 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +105 -0
  3. package/dist/artifacts/helpers.d.ts +14 -0
  4. package/dist/artifacts/helpers.d.ts.map +1 -0
  5. package/dist/artifacts/helpers.js +111 -0
  6. package/dist/artifacts/helpers.js.map +1 -0
  7. package/dist/artifacts/index.d.ts +3 -0
  8. package/dist/artifacts/index.d.ts.map +1 -0
  9. package/dist/artifacts/index.js +19 -0
  10. package/dist/artifacts/index.js.map +1 -0
  11. package/dist/artifacts/solc.d.ts +44 -0
  12. package/dist/artifacts/solc.d.ts.map +1 -0
  13. package/dist/artifacts/solc.js +3 -0
  14. package/dist/artifacts/solc.js.map +1 -0
  15. package/dist/debug/abi.d.ts +30 -0
  16. package/dist/debug/abi.d.ts.map +1 -0
  17. package/dist/debug/abi.js +183 -0
  18. package/dist/debug/abi.js.map +1 -0
  19. package/dist/debug/artifact_manager.d.ts +68 -0
  20. package/dist/debug/artifact_manager.d.ts.map +1 -0
  21. package/dist/debug/artifact_manager.js +182 -0
  22. package/dist/debug/artifact_manager.js.map +1 -0
  23. package/dist/debug/decoding/calldata.d.ts +6 -0
  24. package/dist/debug/decoding/calldata.d.ts.map +1 -0
  25. package/dist/debug/decoding/calldata.js +228 -0
  26. package/dist/debug/decoding/calldata.js.map +1 -0
  27. package/dist/debug/decoding/general.d.ts +9 -0
  28. package/dist/debug/decoding/general.d.ts.map +1 -0
  29. package/dist/debug/decoding/general.js +114 -0
  30. package/dist/debug/decoding/general.js.map +1 -0
  31. package/dist/debug/decoding/index.d.ts +6 -0
  32. package/dist/debug/decoding/index.d.ts.map +1 -0
  33. package/dist/debug/decoding/index.js +22 -0
  34. package/dist/debug/decoding/index.js.map +1 -0
  35. package/dist/debug/decoding/memory.d.ts +4 -0
  36. package/dist/debug/decoding/memory.d.ts.map +1 -0
  37. package/dist/debug/decoding/memory.js +216 -0
  38. package/dist/debug/decoding/memory.js.map +1 -0
  39. package/dist/debug/decoding/stack.d.ts +9 -0
  40. package/dist/debug/decoding/stack.d.ts.map +1 -0
  41. package/dist/debug/decoding/stack.js +85 -0
  42. package/dist/debug/decoding/stack.js.map +1 -0
  43. package/dist/debug/decoding/storage.d.ts +4 -0
  44. package/dist/debug/decoding/storage.d.ts.map +1 -0
  45. package/dist/debug/decoding/storage.js +333 -0
  46. package/dist/debug/decoding/storage.js.map +1 -0
  47. package/dist/debug/index.d.ts +7 -0
  48. package/dist/debug/index.d.ts.map +1 -0
  49. package/dist/debug/index.js +23 -0
  50. package/dist/debug/index.js.map +1 -0
  51. package/dist/debug/opcodes.d.ts +302 -0
  52. package/dist/debug/opcodes.d.ts.map +1 -0
  53. package/dist/debug/opcodes.js +2909 -0
  54. package/dist/debug/opcodes.js.map +1 -0
  55. package/dist/debug/sol_debugger.d.ts +247 -0
  56. package/dist/debug/sol_debugger.d.ts.map +1 -0
  57. package/dist/debug/sol_debugger.js +443 -0
  58. package/dist/debug/sol_debugger.js.map +1 -0
  59. package/dist/debug/types.d.ts +33 -0
  60. package/dist/debug/types.d.ts.map +1 -0
  61. package/dist/debug/types.js +3 -0
  62. package/dist/debug/types.js.map +1 -0
  63. package/dist/index.d.ts +4 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +20 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/utils/immutable_map.d.ts +13 -0
  68. package/dist/utils/immutable_map.d.ts.map +1 -0
  69. package/dist/utils/immutable_map.js +56 -0
  70. package/dist/utils/immutable_map.js.map +1 -0
  71. package/dist/utils/index.d.ts +4 -0
  72. package/dist/utils/index.d.ts.map +1 -0
  73. package/dist/utils/index.js +20 -0
  74. package/dist/utils/index.js.map +1 -0
  75. package/dist/utils/misc.d.ts +48 -0
  76. package/dist/utils/misc.d.ts.map +1 -0
  77. package/dist/utils/misc.js +221 -0
  78. package/dist/utils/misc.js.map +1 -0
  79. package/dist/utils/srcmap.d.ts +8 -0
  80. package/dist/utils/srcmap.d.ts.map +1 -0
  81. package/dist/utils/srcmap.js +28 -0
  82. package/dist/utils/srcmap.js.map +1 -0
  83. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,2CAAyB;AACzB,kDAAgC"}
@@ -0,0 +1,48 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="bn.js" />
3
+ import { Transaction, TxData } from "@ethereumjs/tx";
4
+ import { Address, BN } from "ethereumjs-util";
5
+ import { ContractDefinition, FunctionDefinition, IntType, SourceUnit } from "solc-typed-ast";
6
+ import { ABIEncoderVersion } from "solc-typed-ast/dist/types/abi";
7
+ import { HexString, UnprefixedHexString } from "..";
8
+ import { DataLocation, DataView, Stack, Storage } from "../debug/sol_debugger";
9
+ export declare const ZERO_ADDRESS_STRING: HexString;
10
+ export declare const ZERO_ADDRESS: Address;
11
+ export declare const uint256: IntType;
12
+ export declare const MAX_ARR_DECODE_LIMIT: bigint;
13
+ export declare function toHexString(n: number | bigint | Uint8Array, padding?: number): HexString;
14
+ export declare function bigIntToBuf(n: bigint, size: number, endianness?: "big" | "little"): Buffer;
15
+ export declare function hexStrToBuf32(v: UnprefixedHexString): Buffer;
16
+ export declare function padStart(buf: Buffer, toSize: number, filler: number): Buffer;
17
+ export declare function makeFakeTransaction(txData: TxData, from: string): Transaction;
18
+ export declare function findContractDef(units: SourceUnit[], fileName: string, contractName: string): ContractDefinition | undefined;
19
+ export declare function resolveConstructor(contract: ContractDefinition): FunctionDefinition | undefined;
20
+ export declare function ls(dir: string, ext: string): string[];
21
+ export declare function lsJson(path: string): string[];
22
+ export declare function isDir(path: string): boolean;
23
+ export declare function isFile(path: string): boolean;
24
+ /**
25
+ * Return the (inclusive) limits of a 2's complement int type as a pair `[min, max]` `bigint`s
26
+ */
27
+ export declare function limits(typ: IntType): [bigint, bigint];
28
+ export declare function fits(val: bigint, typ: IntType): boolean;
29
+ export declare function ppLoc(loc: DataLocation): string;
30
+ export declare function ppView(view: DataView): string;
31
+ export declare function ppStorage(storage: Storage): string;
32
+ export declare function ppEvmStack(stack: Stack): string;
33
+ /**
34
+ * Given an `offset` into some memory `buf` check that its in-bounds.
35
+ * Since `offset` may be a bigint we must check that it can be cast to Number without
36
+ * loss of precision and afterwards, whether it fits into the buf.
37
+ */
38
+ export declare function checkAddrOoB(offset: bigint | number, buf: Buffer): number | undefined;
39
+ export declare function wordToAddress(word: Buffer): Address;
40
+ export declare const LOWER8_MASK: bigint;
41
+ /**
42
+ * Convert a big-endian 2's complement encoding to a bigint
43
+ */
44
+ export declare function bigEndianBufToBigint(buf: Buffer): bigint;
45
+ export declare function bnToBigInt(n: BN): bigint;
46
+ export declare function stripOx(s: HexString): UnprefixedHexString;
47
+ export declare function getFunctionSelector(f: FunctionDefinition, encoderVersion?: ABIEncoderVersion): UnprefixedHexString | undefined;
48
+ //# sourceMappingURL=misc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getFunctionSelector = exports.stripOx = exports.bnToBigInt = exports.bigEndianBufToBigint = exports.LOWER8_MASK = exports.wordToAddress = exports.checkAddrOoB = exports.ppEvmStack = exports.ppStorage = exports.ppView = exports.ppLoc = exports.fits = exports.limits = exports.isFile = exports.isDir = exports.lsJson = exports.ls = exports.resolveConstructor = exports.findContractDef = exports.makeFakeTransaction = exports.padStart = exports.hexStrToBuf32 = exports.bigIntToBuf = exports.toHexString = exports.MAX_ARR_DECODE_LIMIT = exports.uint256 = exports.ZERO_ADDRESS = exports.ZERO_ADDRESS_STRING = void 0;
7
+ const tx_1 = require("@ethereumjs/tx");
8
+ const ethereumjs_util_1 = require("ethereumjs-util");
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ const path_1 = require("path");
11
+ const solc_typed_ast_1 = require("solc-typed-ast");
12
+ const abi_1 = require("solc-typed-ast/dist/types/abi");
13
+ const sol_debugger_1 = require("../debug/sol_debugger");
14
+ exports.ZERO_ADDRESS_STRING = "0x0000000000000000000000000000000000000000";
15
+ exports.ZERO_ADDRESS = ethereumjs_util_1.Address.fromString(exports.ZERO_ADDRESS_STRING);
16
+ exports.uint256 = new solc_typed_ast_1.IntType(256, false);
17
+ exports.MAX_ARR_DECODE_LIMIT = BigInt(1000);
18
+ function toHexString(n, padding = 0) {
19
+ let hex;
20
+ if (n instanceof Uint8Array) {
21
+ hex = Buffer.from(n).toString("hex");
22
+ }
23
+ else {
24
+ hex = n.toString(16);
25
+ }
26
+ if (hex.length < padding) {
27
+ hex = hex.padStart(padding, "0");
28
+ }
29
+ return "0x" + hex;
30
+ }
31
+ exports.toHexString = toHexString;
32
+ function bigIntToBuf(n, size, endianness = "little") {
33
+ const res = Buffer.alloc(size, 0);
34
+ let i = endianness === "big" ? size - 1 : 0;
35
+ const dir = endianness === "big" ? -1 : 1;
36
+ const zero = BigInt(0);
37
+ while (n !== zero && i >= 0 && i < size) {
38
+ res[i] = Number(n & BigInt(255));
39
+ n = n >> BigInt(8);
40
+ i += dir;
41
+ }
42
+ (0, solc_typed_ast_1.assert)(n === zero, `Word contains garbage beyond ${size} bytes - ${n}`);
43
+ return res;
44
+ }
45
+ exports.bigIntToBuf = bigIntToBuf;
46
+ function hexStrToBuf32(v) {
47
+ return Buffer.from(v.padStart(64, "0"), "hex");
48
+ }
49
+ exports.hexStrToBuf32 = hexStrToBuf32;
50
+ function padStart(buf, toSize, filler) {
51
+ if (buf.length >= toSize) {
52
+ return buf;
53
+ }
54
+ const res = Buffer.alloc(toSize, filler);
55
+ for (let i = toSize - buf.length, j = 0; i < toSize; i++, j++) {
56
+ res[i] = buf[j];
57
+ }
58
+ return res;
59
+ }
60
+ exports.padStart = padStart;
61
+ function makeFakeTransaction(txData, from) {
62
+ const fromAddr = ethereumjs_util_1.Address.fromString(from);
63
+ const tx = new tx_1.Transaction(txData, { freeze: false });
64
+ /**
65
+ * Intentionally override getSenderAddress() method
66
+ */
67
+ tx.getSenderAddress = () => {
68
+ return fromAddr;
69
+ };
70
+ return tx;
71
+ }
72
+ exports.makeFakeTransaction = makeFakeTransaction;
73
+ function findContractDef(units, fileName, contractName) {
74
+ for (const unit of units) {
75
+ if (unit.sourceEntryKey !== fileName) {
76
+ continue;
77
+ }
78
+ for (const contract of unit.vContracts) {
79
+ if (contract.name === contractName) {
80
+ return contract;
81
+ }
82
+ }
83
+ }
84
+ return undefined;
85
+ }
86
+ exports.findContractDef = findContractDef;
87
+ function resolveConstructor(contract) {
88
+ for (const contr of contract.vLinearizedBaseContracts) {
89
+ if (contr.vConstructor) {
90
+ return contr.vConstructor;
91
+ }
92
+ }
93
+ return undefined;
94
+ }
95
+ exports.resolveConstructor = resolveConstructor;
96
+ function ls(dir, ext) {
97
+ return fs_extra_1.default
98
+ .readdirSync(dir)
99
+ .filter((name) => name.endsWith(ext))
100
+ .map((name) => (0, path_1.join)(dir, name));
101
+ }
102
+ exports.ls = ls;
103
+ function lsJson(path) {
104
+ return ls(path, ".json");
105
+ }
106
+ exports.lsJson = lsJson;
107
+ function isDir(path) {
108
+ try {
109
+ return fs_extra_1.default.statSync(path).isDirectory();
110
+ }
111
+ catch (e) {
112
+ return false;
113
+ }
114
+ }
115
+ exports.isDir = isDir;
116
+ function isFile(path) {
117
+ try {
118
+ return fs_extra_1.default.statSync(path).isFile();
119
+ }
120
+ catch (e) {
121
+ return false;
122
+ }
123
+ }
124
+ exports.isFile = isFile;
125
+ /**
126
+ * Return the (inclusive) limits of a 2's complement int type as a pair `[min, max]` `bigint`s
127
+ */
128
+ function limits(typ) {
129
+ if (typ.signed) {
130
+ const min = -(BigInt(2) << BigInt(typ.nBits - 1));
131
+ const max = BigInt(2) << (BigInt(typ.nBits - 1) - BigInt(1));
132
+ return [min, max];
133
+ }
134
+ return [BigInt(0), (BigInt(2) << BigInt(typ.nBits)) - BigInt(1)];
135
+ }
136
+ exports.limits = limits;
137
+ function fits(val, typ) {
138
+ const [min, max] = limits(typ);
139
+ return val >= min && val <= max;
140
+ }
141
+ exports.fits = fits;
142
+ function ppLoc(loc) {
143
+ return `{kind: ${loc.kind}, ${loc.kind === sol_debugger_1.DataLocationKind.Stack ? "offsetFromTop" : "address"}: ${loc.kind === sol_debugger_1.DataLocationKind.Stack ? loc.offsetFromTop : loc.address.toString(16)}}${loc.kind === sol_debugger_1.DataLocationKind.Storage ? `, offsetInWord: ${loc.endOffsetInWord}` : ""}`;
144
+ }
145
+ exports.ppLoc = ppLoc;
146
+ function ppView(view) {
147
+ return `{type: ${view.type.pp()}, originalType: ${view.originalType ? view.originalType.pp() : "undefined"}, loc: ${ppLoc(view.loc)}}`;
148
+ }
149
+ exports.ppView = ppView;
150
+ function ppStorage(storage) {
151
+ const data = {};
152
+ for (const [k, v] of storage.entries()) {
153
+ data[k.toString(16)] = v.toString("hex");
154
+ }
155
+ return JSON.stringify(data, undefined, 4) + "\n";
156
+ }
157
+ exports.ppStorage = ppStorage;
158
+ function ppEvmStack(stack) {
159
+ return stack.map((frame) => frame.toString("hex")).join("\n");
160
+ }
161
+ exports.ppEvmStack = ppEvmStack;
162
+ /**
163
+ * Given an `offset` into some memory `buf` check that its in-bounds.
164
+ * Since `offset` may be a bigint we must check that it can be cast to Number without
165
+ * loss of precision and afterwards, whether it fits into the buf.
166
+ */
167
+ function checkAddrOoB(offset, buf) {
168
+ let numOff;
169
+ if (typeof offset === "bigint") {
170
+ // Check that the bigint address fits in a normal number
171
+ (0, solc_typed_ast_1.assert)(BigInt(Number(offset)) === offset, `Internal Error: address ${offset} doesn't fit in number`);
172
+ numOff = Number(offset);
173
+ }
174
+ else {
175
+ numOff = offset;
176
+ }
177
+ // OoB access
178
+ if (numOff < 0 || numOff + 32 > buf.length) {
179
+ return undefined;
180
+ }
181
+ return numOff;
182
+ }
183
+ exports.checkAddrOoB = checkAddrOoB;
184
+ function wordToAddress(word) {
185
+ return new ethereumjs_util_1.Address(word.slice(12));
186
+ }
187
+ exports.wordToAddress = wordToAddress;
188
+ exports.LOWER8_MASK = (BigInt(1) << BigInt(8)) - BigInt(1);
189
+ /**
190
+ * Convert a big-endian 2's complement encoding to a bigint
191
+ */
192
+ function bigEndianBufToBigint(buf) {
193
+ let res = BigInt(0);
194
+ for (let i = 0; i < buf.length; i++) {
195
+ res = res << BigInt(8);
196
+ res += BigInt(buf[i]);
197
+ }
198
+ return res;
199
+ }
200
+ exports.bigEndianBufToBigint = bigEndianBufToBigint;
201
+ function bnToBigInt(n) {
202
+ return BigInt("0x" + n.toString(16));
203
+ }
204
+ exports.bnToBigInt = bnToBigInt;
205
+ function stripOx(s) {
206
+ return s.startsWith("0x") ? s.slice(2) : s;
207
+ }
208
+ exports.stripOx = stripOx;
209
+ function getFunctionSelector(f, encoderVersion = abi_1.ABIEncoderVersion.V2) {
210
+ if (f.raw !== undefined && f.raw.functionSelector !== undefined) {
211
+ return f.raw.functionSelector;
212
+ }
213
+ try {
214
+ return f.canonicalSignatureHash(encoderVersion);
215
+ }
216
+ catch (e) {
217
+ return undefined;
218
+ }
219
+ }
220
+ exports.getFunctionSelector = getFunctionSelector;
221
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAqD;AACrD,qDAA8C;AAC9C,wDAA2B;AAC3B,+BAA4B;AAC5B,mDAMwB;AACxB,uDAAkE;AAElE,wDAAiG;AAEpF,QAAA,mBAAmB,GAAc,4CAA4C,CAAC;AAC9E,QAAA,YAAY,GAAG,yBAAO,CAAC,UAAU,CAAC,2BAAmB,CAAC,CAAC;AAEvD,QAAA,OAAO,GAAG,IAAI,wBAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,QAAA,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAEjD,SAAgB,WAAW,CAAC,CAA+B,EAAE,OAAO,GAAG,CAAC;IACpE,IAAI,GAAW,CAAC;IAEhB,IAAI,CAAC,YAAY,UAAU,EAAE;QACzB,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACxC;SAAM;QACH,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACxB;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,OAAO,EAAE;QACtB,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KACpC;IAED,OAAO,IAAI,GAAG,GAAG,CAAC;AACtB,CAAC;AAdD,kCAcC;AAED,SAAgB,WAAW,CACvB,CAAS,EACT,IAAY,EACZ,aAA+B,QAAQ;IAEvC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAElC,IAAI,CAAC,GAAG,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,IAAI,GAAG,CAAC;KACZ;IAED,IAAA,uBAAM,EAAC,CAAC,KAAK,IAAI,EAAE,gCAAgC,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;IAExE,OAAO,GAAG,CAAC;AACf,CAAC;AApBD,kCAoBC;AAED,SAAgB,aAAa,CAAC,CAAsB;IAChD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC;AAFD,sCAEC;AAED,SAAgB,QAAQ,CAAC,GAAW,EAAE,MAAc,EAAE,MAAc;IAChE,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE;QACtB,OAAO,GAAG,CAAC;KACd;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC3D,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAZD,4BAYC;AAED,SAAgB,mBAAmB,CAAC,MAAc,EAAE,IAAY;IAC5D,MAAM,QAAQ,GAAG,yBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,IAAI,gBAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAEtD;;OAEG;IACF,EAAqB,CAAC,gBAAgB,GAAG,GAAG,EAAE;QAC3C,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,EAAE,CAAC;AACd,CAAC;AAZD,kDAYC;AAED,SAAgB,eAAe,CAC3B,KAAmB,EACnB,QAAgB,EAChB,YAAoB;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACtB,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YAClC,SAAS;SACZ;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;gBAChC,OAAO,QAAQ,CAAC;aACnB;SACJ;KACJ;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAlBD,0CAkBC;AAED,SAAgB,kBAAkB,CAAC,QAA4B;IAC3D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,wBAAwB,EAAE;QACnD,IAAI,KAAK,CAAC,YAAY,EAAE;YACpB,OAAO,KAAK,CAAC,YAAY,CAAC;SAC7B;KACJ;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AARD,gDAQC;AAED,SAAgB,EAAE,CAAC,GAAW,EAAE,GAAW;IACvC,OAAO,kBAAG;SACL,WAAW,CAAC,GAAG,CAAC;SAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACpC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC;AALD,gBAKC;AAED,SAAgB,MAAM,CAAC,IAAY;IAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AAFD,wBAEC;AAED,SAAgB,KAAK,CAAC,IAAY;IAC9B,IAAI;QACA,OAAO,kBAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;KAC3C;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,KAAK,CAAC;KAChB;AACL,CAAC;AAND,sBAMC;AAED,SAAgB,MAAM,CAAC,IAAY;IAC/B,IAAI;QACA,OAAO,kBAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;KACtC;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,KAAK,CAAC;KAChB;AACL,CAAC;AAND,wBAMC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,GAAY;IAC/B,IAAI,GAAG,CAAC,MAAM,EAAE;QACZ,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACrB;IAED,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AATD,wBASC;AAED,SAAgB,IAAI,CAAC,GAAW,EAAE,GAAY;IAC1C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC;AACpC,CAAC;AAJD,oBAIC;AAED,SAAgB,KAAK,CAAC,GAAiB;IACnC,OAAO,UAAU,GAAG,CAAC,IAAI,KACrB,GAAG,CAAC,IAAI,KAAK,+BAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAC5D,KAAK,GAAG,CAAC,IAAI,KAAK,+BAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IACnF,GAAG,CAAC,IAAI,KAAK,+BAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EACvF,EAAE,CAAC;AACP,CAAC;AAND,sBAMC;AAED,SAAgB,MAAM,CAAC,IAAc;IACjC,OAAO,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,mBAC3B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WACjD,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,CAAC;AAJD,wBAIC;AAED,SAAgB,SAAS,CAAC,OAAgB;IACtC,MAAM,IAAI,GAAwD,EAAE,CAAC;IAErE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;QACpC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC5C;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACrD,CAAC;AARD,8BAQC;AAED,SAAgB,UAAU,CAAC,KAAY;IACnC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAFD,gCAEC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,MAAuB,EAAE,GAAW;IAC7D,IAAI,MAAc,CAAC;IAEnB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC5B,wDAAwD;QACxD,IAAA,uBAAM,EACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,EACjC,2BAA2B,MAAM,wBAAwB,CAC5D,CAAC;QAEF,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;KAC3B;SAAM;QACH,MAAM,GAAG,MAAM,CAAC;KACnB;IAED,aAAa;IACb,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE;QACxC,OAAO,SAAS,CAAC;KACpB;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AArBD,oCAqBC;AAED,SAAgB,aAAa,CAAC,IAAY;IACtC,OAAO,IAAI,yBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAFD,sCAEC;AAEY,QAAA,WAAW,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEhE;;GAEG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC5C,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACzB;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AATD,oDASC;AAED,SAAgB,UAAU,CAAC,CAAK;IAC5B,OAAO,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,gCAEC;AAED,SAAgB,OAAO,CAAC,CAAY;IAChC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAFD,0BAEC;AAED,SAAgB,mBAAmB,CAC/B,CAAqB,EACrB,cAAc,GAAG,uBAAiB,CAAC,EAAE;IAErC,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,KAAK,SAAS,EAAE;QAC7D,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;KACjC;IAED,IAAI;QACA,OAAO,CAAC,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;KACnD;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAbD,kDAaC"}
@@ -0,0 +1,8 @@
1
+ export declare type DecodedBytecodeSourceMapEntry = {
2
+ start: number;
3
+ length: number;
4
+ sourceIndex: number;
5
+ jump: "i" | "o" | "-" | undefined;
6
+ };
7
+ export declare function parseBytecodeSourceMapping(sourceMap: string): DecodedBytecodeSourceMapEntry[];
8
+ //# sourceMappingURL=srcmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srcmap.d.ts","sourceRoot":"","sources":["../../src/utils/srcmap.ts"],"names":[],"mappings":"AACA,oBAAY,6BAA6B,GAAG;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,6BAA6B,EAAE,CAyB7F"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseBytecodeSourceMapping = void 0;
4
+ function parseBytecodeSourceMapping(sourceMap) {
5
+ return sourceMap
6
+ .split(";")
7
+ .map((chunk) => chunk.split(":"))
8
+ .map(([start, length, sourceIndex, jump]) => ({
9
+ start: start === "" ? undefined : start,
10
+ length: length === "" ? undefined : length,
11
+ sourceIndex: sourceIndex === "" ? undefined : sourceIndex,
12
+ jump: jump === "" ? undefined : jump
13
+ }))
14
+ .reduce(([previous, ...all], entry) => [
15
+ {
16
+ start: parseInt(entry.start || previous.start, 10),
17
+ length: parseInt(entry.length || previous.length, 10),
18
+ sourceIndex: parseInt(entry.sourceIndex || previous.sourceIndex, 10),
19
+ jump: entry.jump || previous.jump
20
+ },
21
+ previous,
22
+ ...all
23
+ ], [{}])
24
+ .reverse()
25
+ .slice(1);
26
+ }
27
+ exports.parseBytecodeSourceMapping = parseBytecodeSourceMapping;
28
+ //# sourceMappingURL=srcmap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srcmap.js","sourceRoot":"","sources":["../../src/utils/srcmap.ts"],"names":[],"mappings":";;;AAQA,SAAgB,0BAA0B,CAAC,SAAiB;IACxD,OAAO,SAAS;SACX,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,KAAK,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;QACvC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QAC1C,WAAW,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QACzD,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;KACvC,CAAC,CAAC;SACF,MAAM,CACH,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3B;YACI,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YACpE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;SACpC;QACD,QAAQ;QACR,GAAG,GAAG;KACT,EACD,CAAC,EAAS,CAAC,CACd;SACA,OAAO,EAAE;SACT,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAzBD,gEAyBC"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "sol-dbg",
3
+ "version": "0.0.0",
4
+ "description": "Small (experimental) Solidity-level debugger built around EthereumJS",
5
+ "keywords": [],
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "main": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "scripts": {
12
+ "clean": "rm -rf dist/",
13
+ "transpile": "tsc",
14
+ "build": "npm run clean && npm run transpile",
15
+ "lint": "eslint src/ test/ --ext=ts",
16
+ "lint:fix": "eslint src/ test/ --ext=ts --fix",
17
+ "test": "nyc mocha",
18
+ "prepare": "npm run build"
19
+ },
20
+ "dependencies": {
21
+ "@ethereumjs/block": "^3.6.2",
22
+ "@ethereumjs/common": "^2.6.4",
23
+ "@ethereumjs/tx": "^3.5.2",
24
+ "@ethereumjs/vm": "^5.9.2",
25
+ "@remix-project/remix-simulator": "^0.2.14",
26
+ "cbor": "^8.1.0",
27
+ "ethereumjs-util": "^7.1.5",
28
+ "semver": "^7.3.7",
29
+ "solc-typed-ast": "^10.1.2",
30
+ "src-location": "^1.1.0"
31
+ },
32
+ "devDependencies": {
33
+ "@types/debug": "^4.1.7",
34
+ "@types/fs-extra": "^9.0.13",
35
+ "@types/lru-cache": "^5.1.1",
36
+ "@types/minimist": "^1.2.2",
37
+ "@types/mocha": "^9.1.1",
38
+ "@types/node": "^12.20.55",
39
+ "@types/semver": "^7.3.9",
40
+ "@typescript-eslint/eslint-plugin": "^5.27.1",
41
+ "@typescript-eslint/parser": "^5.27.1",
42
+ "codecov": "^3.8.3",
43
+ "eslint": "^8.17.0",
44
+ "eslint-config-prettier": "^8.5.0",
45
+ "eslint-plugin-prettier": "^4.0.0",
46
+ "expect": "^28.1.1",
47
+ "fs-extra": "^10.1.0",
48
+ "minimist": "^1.2.6",
49
+ "mocha": "^10.0.0",
50
+ "nyc": "^15.1.0",
51
+ "prettier": "^2.6.2",
52
+ "ts-node": "^10.8.1",
53
+ "ts-pegjs": "^1.2.2",
54
+ "typedoc": "^0.22.17",
55
+ "typescript": "^4.7.3"
56
+ },
57
+ "homepage": "https://github.com/ConsenSys/sol-dbg",
58
+ "bugs": "https://github.com/ConsenSys/sol-dbg/issues",
59
+ "repository": "https://github.com/ConsenSys/sol-dbg",
60
+ "license": "See LICENCE file."
61
+ }