hardhat-deploy
Version:
Hardhat plugin for replicable smart contract deployments and easy testing across multiple EVM chains, with support for proxies, diamonds, named accounts, and deployment fixtures
68 lines • 2.85 kB
JavaScript
import { getConfig } from '../config/get-config.js';
import { validateTypechainUserConfig } from '../config/validation.js';
function addIfNotPresent(array, value) {
if (array.indexOf(value) === -1) {
array.push(value);
}
}
function setupExtraSolcSettings(settings) {
settings.metadata = settings.metadata || {};
settings.metadata.useLiteralContent = true;
if (settings.outputSelection === undefined) {
settings.outputSelection = {
'*': {
'*': [],
'': [],
},
};
}
if (settings.outputSelection['*'] === undefined) {
settings.outputSelection['*'] = {
'*': [],
'': [],
};
}
if (settings.outputSelection['*']['*'] === undefined) {
settings.outputSelection['*']['*'] = [];
}
if (settings.outputSelection['*'][''] === undefined) {
settings.outputSelection['*'][''] = [];
}
addIfNotPresent(settings.outputSelection['*']['*'], 'abi');
// addIfNotPresent(settings.outputSelection['*']['*'], 'evm.bytecode');
// addIfNotPresent(settings.outputSelection['*']['*'], 'evm.deployedBytecode');
addIfNotPresent(settings.outputSelection['*']['*'], 'metadata');
addIfNotPresent(settings.outputSelection['*']['*'], 'devdoc');
addIfNotPresent(settings.outputSelection['*']['*'], 'userdoc');
addIfNotPresent(settings.outputSelection['*']['*'], 'storageLayout');
// addIfNotPresent(settings.outputSelection['*']['*'], 'evm.methodIdentifiers');
addIfNotPresent(settings.outputSelection['*']['*'], 'evm.gasEstimates');
// addIfNotPresent(settings.outputSelection["*"][""], "ir");
// addIfNotPresent(settings.outputSelection["*"][""], "irOptimized");
// addIfNotPresent(settings.outputSelection["*"][""], "ast");
}
export default async () => {
const handlers = {
validateUserConfig: validateTypechainUserConfig,
resolveUserConfig: async (userConfig, resolveConfigurationVariable, next) => {
const resolvedConfig = await next(userConfig, resolveConfigurationVariable);
const solidity = structuredClone(resolvedConfig.solidity);
const profiles = solidity.profiles;
for (const profileName of Object.keys(profiles)) {
const profile = profiles[profileName];
const compilers = profile.compilers;
for (const compiler of compilers) {
const settings = compiler.settings;
setupExtraSolcSettings(settings);
}
}
return {
...resolvedConfig,
solidity,
generateTypedArtifacts: getConfig(userConfig.generateTypedArtifacts),
};
},
};
return handlers;
};
//# sourceMappingURL=config.js.map