hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
49 lines • 2.42 kB
JavaScript
import { DEFAULT_NETWORK_NAME } from "../../../constants.js";
export default async () => ({
created: async (context, hre) => {
let networkManager;
hre.network = {
async create(networkConnectionParams) {
if (networkManager === undefined) {
networkManager = await createNetworkManager(hre, context);
}
return await networkManager.create(networkConnectionParams);
},
async connect(networkConnectionParams) {
if (networkManager === undefined) {
networkManager = await createNetworkManager(hre, context);
}
return await networkManager.connect(networkConnectionParams);
},
async getOrCreate(networkOrParams) {
if (networkManager === undefined) {
networkManager = await createNetworkManager(hre, context);
}
return await networkManager.getOrCreate(networkOrParams);
},
async createServer(...params) {
if (networkManager === undefined) {
networkManager = await createNetworkManager(hre, context);
}
return await networkManager.createServer(...params);
},
};
// To avoid adding `wasConnectCalled` to the public interface of
// `NetworkManager`, we add this pass through method that is only
// called from the `main` function.
Object.defineProperty(hre.network, "wasConnectCalled", {
value: () => networkManager !== undefined &&
"wasConnectCalled" in networkManager &&
typeof networkManager.wasConnectCalled === "function" &&
networkManager.wasConnectCalled(),
enumerable: false,
});
},
});
async function createNetworkManager(hre, context) {
const { NetworkManagerImplementation } = await import("../network-manager.js");
return new NetworkManagerImplementation(hre.globalOptions.network !== undefined
? hre.globalOptions.network
: DEFAULT_NETWORK_NAME, hre.config.defaultChainType, hre.config.networks, context.hooks, context.artifacts, hre.userConfig, hre.config.chainDescriptors, hre.globalOptions.config, hre.config.paths.root, hre.globalOptions.verbosity);
}
//# sourceMappingURL=hre.js.map