UNPKG

@openzeppelin/hardhat-upgrades

Version:

[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/upgrades-plugins/hardhat-upgrades) [![NPM Package](https://img.shields.io/npm/v/@openzeppelin/hardhat-upgrades.svg)](https://www.npmjs.org/package/@openzeppelin/h

45 lines (37 loc) • 1.66 kB
import type { ConfigHooks } from 'hardhat/types/hooks'; export default async (): Promise<Partial<ConfigHooks>> => { return { async resolveUserConfig(userConfig, resolveConfigurationVariable, next) { // First, let other plugins resolve the config const config = await next(userConfig, resolveConfigurationVariable); // Iterate through all profiles for (const profile of Object.values(config.solidity.profiles)) { // Accumulate references to all the compiler settings, including overrides const settings = []; for (const compiler of profile.compilers) { compiler.settings ??= {}; settings.push(compiler.settings); } for (const compilerOverride of Object.values(profile.overrides)) { compilerOverride.settings ??= {}; settings.push(compilerOverride.settings); } // Enable storage layout output for upgrade safety validations. // Also enable metadata, which downstream consumers (Defender license detection, // Foundry-bridge artifact injection) read from the build-info. for (const setting of settings) { setting.outputSelection ??= {}; setting.outputSelection['*'] ??= {}; setting.outputSelection['*']['*'] ??= []; if (!setting.outputSelection['*']['*'].includes('storageLayout')) { setting.outputSelection['*']['*'].push('storageLayout'); } if (!setting.outputSelection['*']['*'].includes('metadata')) { setting.outputSelection['*']['*'].push('metadata'); } } } return config; }, }; };