hardhat-tracer
Version:
Hardhat Tracer plugin
65 lines • 2.41 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addRecorder = void 0;
const debug_1 = __importDefault(require("debug"));
const config_1 = require("hardhat/config");
require("hardhat/types/config");
const decoder_1 = require("../decoder");
const trace_recorder_1 = require("../trace-recorder");
const utils_1 = require("../utils");
const switch_1 = require("../switch");
const debug = (0, debug_1.default)("hardhat-tracer:extend:hre");
(0, config_1.extendEnvironment)((hre) => {
debug("extending environment...");
// copy reference of config.tracer to tracer
// TODO take this properly, env can contain things that config does not need to.
hre.tracer = hre.config.tracer;
hre.tracer.decoder = new decoder_1.Decoder(hre.artifacts, hre.tracer._internal.cache, hre.tracer.use4bytesDirectory);
// @ts-ignore
global.tracerEnv = hre.tracer;
// @ts-ignore
global.hreArtifacts = hre.artifacts;
debug("getting hardhat base provider");
(0, utils_1.getHardhatBaseProvider)(hre)
.then((provider) => {
hre.tracer.switch = new switch_1.Switch(provider);
debug("tracer.switch created");
})
.then(() => {
addRecorder(hre)
.then(() => {
debug("trace recorder added");
})
.catch(console.error);
});
debug("environment extended!");
});
async function addRecorder(hre) {
// wait for VM to be initialized
try {
const vm = await (0, utils_1.getVMFromBaseProvider)(hre.tracer.switch.edrProvider);
if (!hre.tracer.recorder) {
hre.tracer.recorder = new trace_recorder_1.TraceRecorder(vm, hre.tracer);
}
else {
hre.tracer.recorder.vm = vm;
}
if (hre.tracer.stateOverrides) {
try {
await (0, utils_1.applyStateOverrides)(hre.tracer.stateOverrides, vm, hre.artifacts);
}
catch { }
}
}
catch (e) {
debug("Could not get VM, hardhat tracer is disabled. Error: " +
e.message);
// if for some reason we can't get the vm, disable hardhat-tracer
hre.tracer.enabled = false;
}
}
exports.addRecorder = addRecorder;
//# sourceMappingURL=hre.js.map