hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
43 lines • 1.91 kB
JavaScript
import { readFile } from "node:fs/promises";
import { findClosestPackageRoot, findDependencyPackageJson, readClosestPackageJson, } from "@nomicfoundation/hardhat-utils/package";
let cachedHardhatVersion;
let cachedLatestHardhatVersion;
let cachedEdrVersion;
export async function getHardhatVersion() {
if (cachedHardhatVersion !== undefined) {
return cachedHardhatVersion;
}
const packageJson = await readClosestPackageJson(import.meta.url);
cachedHardhatVersion = packageJson.version;
return packageJson.version;
}
export async function getEdrVersion() {
if (cachedEdrVersion !== undefined) {
return cachedEdrVersion;
}
const hardhatRoot = await findClosestPackageRoot(import.meta.url);
const edrPackageJsonPath = await findDependencyPackageJson(hardhatRoot, "@nomicfoundation/edr");
if (edrPackageJsonPath === undefined) {
return "";
}
const rawPackageJson = await readFile(edrPackageJsonPath, "utf-8");
const edrPackageJson = JSON.parse(rawPackageJson);
cachedEdrVersion = edrPackageJson.version;
return cachedEdrVersion;
}
export async function getLatestHardhatVersion() {
const { getRequest } = await import("@nomicfoundation/hardhat-utils/request");
if (cachedLatestHardhatVersion !== undefined) {
return cachedLatestHardhatVersion;
}
const packageJson = await readClosestPackageJson(import.meta.url);
const packageName = packageJson.name;
const latestHardhat = await getRequest(`https://registry.npmjs.org/${packageName}/latest`).then(({ body }) => {
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
-- Cast to PackageJson because that's what we expect from the registry */
return body.json();
});
cachedLatestHardhatVersion = latestHardhat.version;
return cachedLatestHardhatVersion;
}
//# sourceMappingURL=package.js.map