UNPKG

@solarity/hardhat-migrate

Version:
101 lines 3.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fillParameters = fillParameters; exports.getInterfaceOnlyWithConstructor = getInterfaceOnlyWithConstructor; exports.bytecodeHash = bytecodeHash; exports.createKeyDeploymentFieldsHash = createKeyDeploymentFieldsHash; exports.createKeyTxFieldsHash = createKeyTxFieldsHash; exports.bytecodeToString = bytecodeToString; exports.getMethodString = getMethodString; const ethers_1 = require("ethers"); const bytes_1 = require("@ethersproject/bytes"); const network_1 = require("./network"); const common_1 = require("./common"); const errors_1 = require("../errors"); const constants_1 = require("../constants"); async function fillParameters(parameters) { if (parameters.chainId === undefined) { parameters.chainId = await (0, network_1.getChainId)(); } if (parameters.value === undefined) { parameters.value = 0; } return parameters; } function getInterfaceOnlyWithConstructor(fragments) { let abi; if (typeof fragments === "string") { abi = JSON.parse(fragments); } else { abi = fragments; } const fragment = abi.find((a) => a.type === "constructor"); if (fragment !== undefined) { return ethers_1.Interface.from([fragment]); } return new ethers_1.Interface([ethers_1.ConstructorFragment.from("constructor()")]); } function bytecodeHash(bytecode) { return (0, ethers_1.id)(bytecodeToString(bytecode)); } function createKeyDeploymentFieldsHash(keyTxFields) { const obj = { name: keyTxFields.name, data: keyTxFields.data, from: keyTxFields.from, chainId: keyTxFields.chainId, value: keyTxFields.value, }; return (0, ethers_1.id)((0, common_1.toJSON)(obj)); } function createKeyTxFieldsHash(keyTxFields) { const obj = { data: keyTxFields.data, from: keyTxFields.from, chainId: keyTxFields.chainId, to: keyTxFields.to, value: keyTxFields.value, name: keyTxFields.name, }; return (0, ethers_1.id)((0, common_1.toJSON)(obj)); } function bytecodeToString(bytecode) { let bytecodeHex; if (typeof bytecode === "string") { bytecodeHex = bytecode; } else if ((0, bytes_1.isBytes)(bytecode)) { bytecodeHex = (0, ethers_1.hexlify)(bytecode); } else { throw new errors_1.MigrateError(`Invalid bytecode: ${bytecode}`); } // Make sure it is 0x prefixed if (bytecodeHex.substring(0, 2) !== "0x") { bytecodeHex = "0x" + bytecodeHex; } return bytecodeHex; } function getMethodString(contractName, methodName, methodFragment = {}, args = []) { if (contractName === constants_1.UNKNOWN_CONTRACT_NAME) { contractName = "Unidentified Contract"; } const copyOfArgs = (0, common_1.deepCopy)(args); if (methodFragment.inputs.length + 1 === copyOfArgs.length) { copyOfArgs.pop(); } if (methodFragment.inputs === undefined) { return `${contractName}.${methodName}()`; } const argsString = methodFragment.inputs.map((input, i) => `${input.name}:${copyOfArgs[i]}`).join(", "); const methodSting = `${contractName}.${methodName}(${argsString})`; if (methodSting.length > 60) { const shortenMethodString = `${contractName}.${methodName}(${copyOfArgs.length} arguments)`; if (shortenMethodString.length > 60) { return `${contractName.split(":").pop()}.${methodName}(${copyOfArgs.length} arguments)`; } } return methodSting; } //# sourceMappingURL=migration.js.map