UNPKG

hardhat-tracer

Version:

Hardhat Tracer plugin

65 lines 2.41 kB
"use strict"; 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