sol-dbg 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/trace.d.ts +18 -0
- package/dist/utils/trace.d.ts.map +1 -0
- package/dist/utils/trace.js +87 -0
- package/dist/utils/trace.js.map +1 -0
- package/package.json +1 -1
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,wCAAsB;AACtB,yCAAuB;AACvB,uCAAqB;AACrB,wCAAsB;AACtB,2CAAyB;AACzB,gDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,wCAAsB;AACtB,yCAAuB;AACvB,uCAAqB;AACrB,wCAAsB;AACtB,2CAAyB;AACzB,gDAA8B;AAC9B,0CAAwB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { StepState } from "../debug";
|
|
2
|
+
/**
|
|
3
|
+
* Find the last step in the non-internal code, before trace step i
|
|
4
|
+
*/
|
|
5
|
+
export declare function findLastNonInternalStepBeforeStepI(trace: StepState[], i: number): StepState | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Find the last step in the non-internal code, that leads to the first revert
|
|
8
|
+
*/
|
|
9
|
+
export declare function findLastNonInternalStepBeforeRevert(trace: StepState[]): StepState | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Find the last step in the non-internal code, that leads to the last revert
|
|
12
|
+
*/
|
|
13
|
+
export declare function findLastNonInternalStepBeforeLastRevert(trace: StepState[]): StepState | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Find the last step before calling the foundry cheatcode fail()
|
|
16
|
+
*/
|
|
17
|
+
export declare function findFirstCallToFail(trace: StepState[]): StepState | undefined;
|
|
18
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/utils/trace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAKrC;;GAEG;AACH,wBAAgB,kCAAkC,CAC9C,KAAK,EAAE,SAAS,EAAE,EAClB,CAAC,EAAE,MAAM,GACV,SAAS,GAAG,SAAS,CAcvB;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,CAc7F;AAED;;GAEG;AACH,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,CAcjG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,CAmC7E"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findLastNonInternalStepBeforeStepI = findLastNonInternalStepBeforeStepI;
|
|
4
|
+
exports.findLastNonInternalStepBeforeRevert = findLastNonInternalStepBeforeRevert;
|
|
5
|
+
exports.findLastNonInternalStepBeforeLastRevert = findLastNonInternalStepBeforeLastRevert;
|
|
6
|
+
exports.findFirstCallToFail = findFirstCallToFail;
|
|
7
|
+
const utils_1 = require("ethereum-cryptography/utils");
|
|
8
|
+
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
9
|
+
const foundry_cheatcodes_1 = require("../debug/foundry_cheatcodes");
|
|
10
|
+
const misc_1 = require("./misc");
|
|
11
|
+
const pp_1 = require("./pp");
|
|
12
|
+
/**
|
|
13
|
+
* Find the last step in the non-internal code, before trace step i
|
|
14
|
+
*/
|
|
15
|
+
function findLastNonInternalStepBeforeStepI(trace, i) {
|
|
16
|
+
const stack = (0, pp_1.flattenStack)(trace[i].stack);
|
|
17
|
+
for (let j = stack.length - 1; j >= 0; j--) {
|
|
18
|
+
if (stack[j].callee instanceof solc_typed_ast_1.FunctionDefinition) {
|
|
19
|
+
if (j === stack.length - 1) {
|
|
20
|
+
return trace[i];
|
|
21
|
+
}
|
|
22
|
+
return trace[stack[j + 1].startStep - 1];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Find the last step in the non-internal code, that leads to the first revert
|
|
29
|
+
*/
|
|
30
|
+
function findLastNonInternalStepBeforeRevert(trace) {
|
|
31
|
+
let i = 0;
|
|
32
|
+
for (; i < trace.length; i++) {
|
|
33
|
+
if (trace[i].op.opcode === 0xfd) {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (i === trace.length) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
return findLastNonInternalStepBeforeStepI(trace, i);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Find the last step in the non-internal code, that leads to the last revert
|
|
44
|
+
*/
|
|
45
|
+
function findLastNonInternalStepBeforeLastRevert(trace) {
|
|
46
|
+
let i = trace.length - 1;
|
|
47
|
+
for (; i >= 0; i--) {
|
|
48
|
+
if (trace[i].op.opcode === 0xfd) {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (i < 0) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return findLastNonInternalStepBeforeStepI(trace, i);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Find the last step before calling the foundry cheatcode fail()
|
|
59
|
+
*/
|
|
60
|
+
function findFirstCallToFail(trace) {
|
|
61
|
+
let i = 0;
|
|
62
|
+
for (; i < trace.length; i++) {
|
|
63
|
+
// Look for CALL to FoundryCheatcodesAddress with the FAIL_SELECTOR
|
|
64
|
+
if (trace[i].op.mnemonic === "CALL") {
|
|
65
|
+
const stackLen = trace[i].evmStack.length;
|
|
66
|
+
const addr = (0, misc_1.wordToAddress)(trace[i].evmStack[stackLen - 2]);
|
|
67
|
+
if (!addr.equals(foundry_cheatcodes_1.FoundryCheatcodesAddress)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const argOffset = (0, misc_1.bigEndianBufToNumber)(trace[i].evmStack[stackLen - 4]);
|
|
71
|
+
const argSize = (0, misc_1.bigEndianBufToNumber)(trace[i].evmStack[stackLen - 5]);
|
|
72
|
+
if (argSize < 4) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const msgData = (0, utils_1.bytesToHex)(trace[i].memory.slice(argOffset, argOffset + argSize));
|
|
76
|
+
if (msgData === foundry_cheatcodes_1.FAIL_MSG_DATA) {
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (i === trace.length) {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
//console.error(`Error step: ${i}`);
|
|
85
|
+
return trace[i];
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/utils/trace.ts"],"names":[],"mappings":"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"}
|