hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
40 lines • 1.77 kB
JavaScript
// Sentry's reporter loads a large number of modules, so we only load it if
// needed.
let sentryReporterModule;
// We cache the `setCliHardhatConfigPath` to avoid loading the reporter just
// for this setting. We load it and set the config path if needed.
let cliHardhatConfigPath;
/**
* Reports an error if telemetry is authorized by the user.
*
* While this function is async, it's expected to always complete quickly,
* delegating the actual reporting to a subprocess.
*
* @param error - The error to report.
* @param hint - Optional metadata describing how the error was captured, used
* to tag the event in Sentry so unhandled crashes can be distinguished from
* errors caught and reported by the CLI.
* @param hint.unhandled - Whether the error reached a global handler without
* being caught (e.g. an uncaught exception or unhandled promise rejection).
* Defaults to `false` (i.e. the error was handled).
* @param hint.mechanismType - The Sentry mechanism type, used as a tag on the
* event. Common values are `"onuncaughtexception"`, `"onunhandledrejection"`,
* `"instrument"`, and `"generic"`. Defaults to `"generic"`.
*/
export async function sendErrorTelemetry(error, hint) {
if (sentryReporterModule === undefined) {
sentryReporterModule = await import("../sentry/reporter.js");
}
if (cliHardhatConfigPath !== undefined) {
sentryReporterModule.setCliHardhatConfigPath(cliHardhatConfigPath);
}
await sentryReporterModule.sendErrorTelemetry(error, hint);
}
/**
* Sets the config path used in the Hardhat CLI. This is used for better
* anonymization of errors.
*/
export function setCliHardhatConfigPath(configPath) {
cliHardhatConfigPath = configPath;
}
//# sourceMappingURL=reporter.js.map