hardhatjs 2.22.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +41 -0
- package/LICENSE +55 -0
- package/README.md +53 -0
- package/builtin-tasks/check.d.ts +2 -0
- package/builtin-tasks/check.d.ts.map +1 -0
- package/builtin-tasks/check.js +6 -0
- package/builtin-tasks/check.js.map +1 -0
- package/builtin-tasks/clean.d.ts +2 -0
- package/builtin-tasks/clean.d.ts.map +1 -0
- package/builtin-tasks/clean.js +24 -0
- package/builtin-tasks/clean.js.map +1 -0
- package/builtin-tasks/compile.d.ts +2 -0
- package/builtin-tasks/compile.d.ts.map +1 -0
- package/builtin-tasks/compile.js +952 -0
- package/builtin-tasks/compile.js.map +1 -0
- package/builtin-tasks/console.d.ts +2 -0
- package/builtin-tasks/console.d.ts.map +1 -0
- package/builtin-tasks/console.js +55 -0
- package/builtin-tasks/console.js.map +1 -0
- package/builtin-tasks/flatten.d.ts +2 -0
- package/builtin-tasks/flatten.d.ts.map +1 -0
- package/builtin-tasks/flatten.js +210 -0
- package/builtin-tasks/flatten.js.map +1 -0
- package/builtin-tasks/help.d.ts +2 -0
- package/builtin-tasks/help.d.ts.map +1 -0
- package/builtin-tasks/help.js +49 -0
- package/builtin-tasks/help.js.map +1 -0
- package/builtin-tasks/node.d.ts +2 -0
- package/builtin-tasks/node.d.ts.map +1 -0
- package/builtin-tasks/node.js +212 -0
- package/builtin-tasks/node.js.map +1 -0
- package/builtin-tasks/run.d.ts +2 -0
- package/builtin-tasks/run.d.ts.map +1 -0
- package/builtin-tasks/run.js +41 -0
- package/builtin-tasks/run.js.map +1 -0
- package/builtin-tasks/task-names.d.ts +55 -0
- package/builtin-tasks/task-names.d.ts.map +1 -0
- package/builtin-tasks/task-names.js +59 -0
- package/builtin-tasks/task-names.js.map +1 -0
- package/builtin-tasks/test.d.ts +2 -0
- package/builtin-tasks/test.d.ts.map +1 -0
- package/builtin-tasks/test.js +142 -0
- package/builtin-tasks/test.js.map +1 -0
- package/builtin-tasks/utils/solidity-files-cache.d.ts +29 -0
- package/builtin-tasks/utils/solidity-files-cache.d.ts.map +1 -0
- package/builtin-tasks/utils/solidity-files-cache.js +126 -0
- package/builtin-tasks/utils/solidity-files-cache.js.map +1 -0
- package/builtin-tasks/utils/watch.d.ts +5 -0
- package/builtin-tasks/utils/watch.d.ts.map +1 -0
- package/builtin-tasks/utils/watch.js +71 -0
- package/builtin-tasks/utils/watch.js.map +1 -0
- package/builtin-tasks/vars.d.ts +2 -0
- package/builtin-tasks/vars.d.ts.map +1 -0
- package/builtin-tasks/vars.js +41 -0
- package/builtin-tasks/vars.js.map +1 -0
- package/common/bigInt.d.ts +7 -0
- package/common/bigInt.d.ts.map +1 -0
- package/common/bigInt.js +93 -0
- package/common/bigInt.js.map +1 -0
- package/common/index.d.ts +3 -0
- package/common/index.d.ts.map +1 -0
- package/common/index.js +21 -0
- package/common/index.js.map +1 -0
- package/common/napi-rs.d.ts +2 -0
- package/common/napi-rs.d.ts.map +1 -0
- package/common/napi-rs.js +19 -0
- package/common/napi-rs.js.map +1 -0
- package/config.d.ts +3 -0
- package/config.d.ts.map +1 -0
- package/config.js +18 -0
- package/config.js.map +1 -0
- package/console.sol +1552 -0
- package/internal/artifacts.d.ts +151 -0
- package/internal/artifacts.d.ts.map +1 -0
- package/internal/artifacts.js +681 -0
- package/internal/artifacts.js.map +1 -0
- package/internal/cli/ArgumentsParser.d.ts +25 -0
- package/internal/cli/ArgumentsParser.d.ts.map +1 -0
- package/internal/cli/ArgumentsParser.js +242 -0
- package/internal/cli/ArgumentsParser.js.map +1 -0
- package/internal/cli/HelpPrinter.d.ts +21 -0
- package/internal/cli/HelpPrinter.d.ts.map +1 -0
- package/internal/cli/HelpPrinter.js +167 -0
- package/internal/cli/HelpPrinter.js.map +1 -0
- package/internal/cli/analytics.d.ts +29 -0
- package/internal/cli/analytics.d.ts.map +1 -0
- package/internal/cli/analytics.js +188 -0
- package/internal/cli/analytics.js.map +1 -0
- package/internal/cli/autocomplete.d.ts +13 -0
- package/internal/cli/autocomplete.d.ts.map +1 -0
- package/internal/cli/autocomplete.js +291 -0
- package/internal/cli/autocomplete.js.map +1 -0
- package/internal/cli/bootstrap.d.ts +3 -0
- package/internal/cli/bootstrap.d.ts.map +1 -0
- package/internal/cli/bootstrap.js +15 -0
- package/internal/cli/bootstrap.js.map +1 -0
- package/internal/cli/cli.d.ts +2 -0
- package/internal/cli/cli.d.ts.map +1 -0
- package/internal/cli/cli.js +344 -0
- package/internal/cli/cli.js.map +1 -0
- package/internal/cli/constants.d.ts +2 -0
- package/internal/cli/constants.d.ts.map +1 -0
- package/internal/cli/constants.js +5 -0
- package/internal/cli/constants.js.map +1 -0
- package/internal/cli/emoji.d.ts +3 -0
- package/internal/cli/emoji.d.ts.map +1 -0
- package/internal/cli/emoji.js +13 -0
- package/internal/cli/emoji.js.map +1 -0
- package/internal/cli/hardhat-vscode-installation.d.ts +8 -0
- package/internal/cli/hardhat-vscode-installation.d.ts.map +1 -0
- package/internal/cli/hardhat-vscode-installation.js +41 -0
- package/internal/cli/hardhat-vscode-installation.js.map +1 -0
- package/internal/cli/is-node-version-to-warn-on.d.ts +13 -0
- package/internal/cli/is-node-version-to-warn-on.d.ts.map +1 -0
- package/internal/cli/is-node-version-to-warn-on.js +46 -0
- package/internal/cli/is-node-version-to-warn-on.js.map +1 -0
- package/internal/cli/project-creation.d.ts +4 -0
- package/internal/cli/project-creation.d.ts.map +1 -0
- package/internal/cli/project-creation.js +506 -0
- package/internal/cli/project-creation.js.map +1 -0
- package/internal/cli/prompt.d.ts +14 -0
- package/internal/cli/prompt.d.ts.map +1 -0
- package/internal/cli/prompt.js +123 -0
- package/internal/cli/prompt.js.map +1 -0
- package/internal/cli/types.d.ts +5 -0
- package/internal/cli/types.d.ts.map +1 -0
- package/internal/cli/types.js +3 -0
- package/internal/cli/types.js.map +1 -0
- package/internal/cli/vars.d.ts +2 -0
- package/internal/cli/vars.d.ts.map +1 -0
- package/internal/cli/vars.js +216 -0
- package/internal/cli/vars.js.map +1 -0
- package/internal/cli/version-notifier.d.ts +2 -0
- package/internal/cli/version-notifier.d.ts.map +1 -0
- package/internal/cli/version-notifier.js +217 -0
- package/internal/cli/version-notifier.js.map +1 -0
- package/internal/constants.d.ts +14 -0
- package/internal/constants.d.ts.map +1 -0
- package/internal/constants.js +35 -0
- package/internal/constants.js.map +1 -0
- package/internal/context.d.ts +29 -0
- package/internal/context.d.ts.map +1 -0
- package/internal/context.js +74 -0
- package/internal/context.js.map +1 -0
- package/internal/core/config/config-env.d.ts +111 -0
- package/internal/core/config/config-env.d.ts.map +1 -0
- package/internal/core/config/config-env.js +144 -0
- package/internal/core/config/config-env.js.map +1 -0
- package/internal/core/config/config-loading.d.ts +20 -0
- package/internal/core/config/config-loading.d.ts.map +1 -0
- package/internal/core/config/config-loading.js +246 -0
- package/internal/core/config/config-loading.js.map +1 -0
- package/internal/core/config/config-resolution.d.ts +25 -0
- package/internal/core/config/config-resolution.d.ts.map +1 -0
- package/internal/core/config/config-resolution.js +336 -0
- package/internal/core/config/config-resolution.js.map +1 -0
- package/internal/core/config/config-validation.d.ts +18 -0
- package/internal/core/config/config-validation.d.ts.map +1 -0
- package/internal/core/config/config-validation.js +400 -0
- package/internal/core/config/config-validation.js.map +1 -0
- package/internal/core/config/default-config.d.ts +45 -0
- package/internal/core/config/default-config.d.ts.map +1 -0
- package/internal/core/config/default-config.js +186 -0
- package/internal/core/config/default-config.js.map +1 -0
- package/internal/core/errors-list.d.ts +948 -0
- package/internal/core/errors-list.d.ts.map +1 -0
- package/internal/core/errors-list.js +1282 -0
- package/internal/core/errors-list.js.map +1 -0
- package/internal/core/errors.d.ts +74 -0
- package/internal/core/errors.d.ts.map +1 -0
- package/internal/core/errors.js +178 -0
- package/internal/core/errors.js.map +1 -0
- package/internal/core/execution-mode.d.ts +14 -0
- package/internal/core/execution-mode.d.ts.map +1 -0
- package/internal/core/execution-mode.js +40 -0
- package/internal/core/execution-mode.js.map +1 -0
- package/internal/core/flamegraph.d.ts +14 -0
- package/internal/core/flamegraph.d.ts.map +1 -0
- package/internal/core/flamegraph.js +255 -0
- package/internal/core/flamegraph.js.map +1 -0
- package/internal/core/jsonrpc/types/access-list.d.ts +13 -0
- package/internal/core/jsonrpc/types/access-list.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/access-list.js +35 -0
- package/internal/core/jsonrpc/types/access-list.js.map +1 -0
- package/internal/core/jsonrpc/types/base-types.d.ts +28 -0
- package/internal/core/jsonrpc/types/base-types.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/base-types.js +152 -0
- package/internal/core/jsonrpc/types/base-types.js.map +1 -0
- package/internal/core/jsonrpc/types/input/blockTag.d.ts +51 -0
- package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/blockTag.js +55 -0
- package/internal/core/jsonrpc/types/input/blockTag.js.map +1 -0
- package/internal/core/jsonrpc/types/input/callRequest.d.ts +82 -0
- package/internal/core/jsonrpc/types/input/callRequest.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/callRequest.js +57 -0
- package/internal/core/jsonrpc/types/input/callRequest.js.map +1 -0
- package/internal/core/jsonrpc/types/input/debugTraceTransaction.d.ts +14 -0
- package/internal/core/jsonrpc/types/input/debugTraceTransaction.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/debugTraceTransaction.js +35 -0
- package/internal/core/jsonrpc/types/input/debugTraceTransaction.js.map +1 -0
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts +24 -0
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/filterRequest.js +41 -0
- package/internal/core/jsonrpc/types/input/filterRequest.js.map +1 -0
- package/internal/core/jsonrpc/types/input/hardhat-network.d.ts +51 -0
- package/internal/core/jsonrpc/types/input/hardhat-network.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/hardhat-network.js +51 -0
- package/internal/core/jsonrpc/types/input/hardhat-network.js.map +1 -0
- package/internal/core/jsonrpc/types/input/logAddress.d.ts +7 -0
- package/internal/core/jsonrpc/types/input/logAddress.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/logAddress.js +32 -0
- package/internal/core/jsonrpc/types/input/logAddress.js.map +1 -0
- package/internal/core/jsonrpc/types/input/logTopics.d.ts +7 -0
- package/internal/core/jsonrpc/types/input/logTopics.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/logTopics.js +32 -0
- package/internal/core/jsonrpc/types/input/logTopics.js.map +1 -0
- package/internal/core/jsonrpc/types/input/solc.d.ts +13 -0
- package/internal/core/jsonrpc/types/input/solc.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/solc.js +37 -0
- package/internal/core/jsonrpc/types/input/solc.js.map +1 -0
- package/internal/core/jsonrpc/types/input/subscribeRequest.d.ts +12 -0
- package/internal/core/jsonrpc/types/input/subscribeRequest.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/subscribeRequest.js +33 -0
- package/internal/core/jsonrpc/types/input/subscribeRequest.js.map +1 -0
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts +41 -0
- package/internal/core/jsonrpc/types/input/transactionRequest.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/transactionRequest.js +47 -0
- package/internal/core/jsonrpc/types/input/transactionRequest.js.map +1 -0
- package/internal/core/jsonrpc/types/input/validation.d.ts +12 -0
- package/internal/core/jsonrpc/types/input/validation.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/input/validation.js +49 -0
- package/internal/core/jsonrpc/types/input/validation.js.map +1 -0
- package/internal/core/jsonrpc/types/output/block.d.ts +106 -0
- package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/output/block.js +72 -0
- package/internal/core/jsonrpc/types/output/block.js.map +1 -0
- package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.d.ts +6 -0
- package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js +20 -0
- package/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.js.map +1 -0
- package/internal/core/jsonrpc/types/output/log.d.ts +13 -0
- package/internal/core/jsonrpc/types/output/log.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/output/log.js +40 -0
- package/internal/core/jsonrpc/types/output/log.js.map +1 -0
- package/internal/core/jsonrpc/types/output/metadata.d.ts +13 -0
- package/internal/core/jsonrpc/types/output/metadata.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/output/metadata.js +3 -0
- package/internal/core/jsonrpc/types/output/metadata.js.map +1 -0
- package/internal/core/jsonrpc/types/output/receipt.d.ts +29 -0
- package/internal/core/jsonrpc/types/output/receipt.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/output/receipt.js +52 -0
- package/internal/core/jsonrpc/types/output/receipt.js.map +1 -0
- package/internal/core/jsonrpc/types/output/transaction.d.ts +30 -0
- package/internal/core/jsonrpc/types/output/transaction.d.ts.map +1 -0
- package/internal/core/jsonrpc/types/output/transaction.js +55 -0
- package/internal/core/jsonrpc/types/output/transaction.js.map +1 -0
- package/internal/core/params/argumentTypes.d.ts +41 -0
- package/internal/core/params/argumentTypes.d.ts.map +1 -0
- package/internal/core/params/argumentTypes.js +315 -0
- package/internal/core/params/argumentTypes.js.map +1 -0
- package/internal/core/params/env-variables.d.ts +9 -0
- package/internal/core/params/env-variables.d.ts.map +1 -0
- package/internal/core/params/env-variables.js +58 -0
- package/internal/core/params/env-variables.js.map +1 -0
- package/internal/core/params/hardhat-params.d.ts +3 -0
- package/internal/core/params/hardhat-params.d.ts.map +1 -0
- package/internal/core/params/hardhat-params.js +129 -0
- package/internal/core/params/hardhat-params.js.map +1 -0
- package/internal/core/project-structure.d.ts +4 -0
- package/internal/core/project-structure.d.ts.map +1 -0
- package/internal/core/project-structure.js +50 -0
- package/internal/core/project-structure.js.map +1 -0
- package/internal/core/providers/accounts.d.ts +40 -0
- package/internal/core/providers/accounts.d.ts.map +1 -0
- package/internal/core/providers/accounts.js +266 -0
- package/internal/core/providers/accounts.js.map +1 -0
- package/internal/core/providers/backwards-compatibility.d.ts +18 -0
- package/internal/core/providers/backwards-compatibility.d.ts.map +1 -0
- package/internal/core/providers/backwards-compatibility.js +66 -0
- package/internal/core/providers/backwards-compatibility.js.map +1 -0
- package/internal/core/providers/chainId.d.ts +15 -0
- package/internal/core/providers/chainId.d.ts.map +1 -0
- package/internal/core/providers/chainId.js +58 -0
- package/internal/core/providers/chainId.js.map +1 -0
- package/internal/core/providers/construction.d.ts +5 -0
- package/internal/core/providers/construction.d.ts.map +1 -0
- package/internal/core/providers/construction.js +166 -0
- package/internal/core/providers/construction.js.map +1 -0
- package/internal/core/providers/errors.d.ts +47 -0
- package/internal/core/providers/errors.d.ts.map +1 -0
- package/internal/core/providers/errors.js +110 -0
- package/internal/core/providers/errors.js.map +1 -0
- package/internal/core/providers/gas-providers.d.ts +34 -0
- package/internal/core/providers/gas-providers.d.ts.map +1 -0
- package/internal/core/providers/gas-providers.js +228 -0
- package/internal/core/providers/gas-providers.js.map +1 -0
- package/internal/core/providers/http.d.ts +35 -0
- package/internal/core/providers/http.d.ts.map +1 -0
- package/internal/core/providers/http.js +226 -0
- package/internal/core/providers/http.js.map +1 -0
- package/internal/core/providers/lazy-initialization.d.ts +44 -0
- package/internal/core/providers/lazy-initialization.d.ts.map +1 -0
- package/internal/core/providers/lazy-initialization.js +137 -0
- package/internal/core/providers/lazy-initialization.js.map +1 -0
- package/internal/core/providers/util.d.ts +5 -0
- package/internal/core/providers/util.d.ts.map +1 -0
- package/internal/core/providers/util.js +41 -0
- package/internal/core/providers/util.js.map +1 -0
- package/internal/core/providers/wrapper.d.ts +19 -0
- package/internal/core/providers/wrapper.d.ts.map +1 -0
- package/internal/core/providers/wrapper.js +34 -0
- package/internal/core/providers/wrapper.js.map +1 -0
- package/internal/core/runtime-environment.d.ts +86 -0
- package/internal/core/runtime-environment.d.ts.map +1 -0
- package/internal/core/runtime-environment.js +317 -0
- package/internal/core/runtime-environment.js.map +1 -0
- package/internal/core/task-profiling.d.ts +18 -0
- package/internal/core/task-profiling.d.ts.map +1 -0
- package/internal/core/task-profiling.js +50 -0
- package/internal/core/task-profiling.js.map +1 -0
- package/internal/core/tasks/builtin-tasks.d.ts +11 -0
- package/internal/core/tasks/builtin-tasks.d.ts.map +1 -0
- package/internal/core/tasks/builtin-tasks.js +13 -0
- package/internal/core/tasks/builtin-tasks.js.map +1 -0
- package/internal/core/tasks/dsl.d.ts +76 -0
- package/internal/core/tasks/dsl.d.ts.map +1 -0
- package/internal/core/tasks/dsl.js +112 -0
- package/internal/core/tasks/dsl.js.map +1 -0
- package/internal/core/tasks/task-definitions.d.ts +266 -0
- package/internal/core/tasks/task-definitions.d.ts.map +1 -0
- package/internal/core/tasks/task-definitions.js +555 -0
- package/internal/core/tasks/task-definitions.js.map +1 -0
- package/internal/core/tasks/util.d.ts +6 -0
- package/internal/core/tasks/util.d.ts.map +1 -0
- package/internal/core/tasks/util.js +19 -0
- package/internal/core/tasks/util.js.map +1 -0
- package/internal/core/typescript-support.d.ts +15 -0
- package/internal/core/typescript-support.d.ts.map +1 -0
- package/internal/core/typescript-support.js +85 -0
- package/internal/core/typescript-support.js.map +1 -0
- package/internal/core/vars/vars-manager-setup.d.ts +22 -0
- package/internal/core/vars/vars-manager-setup.d.ts.map +1 -0
- package/internal/core/vars/vars-manager-setup.js +95 -0
- package/internal/core/vars/vars-manager-setup.js.map +1 -0
- package/internal/core/vars/vars-manager.d.ts +21 -0
- package/internal/core/vars/vars-manager.d.ts.map +1 -0
- package/internal/core/vars/vars-manager.js +110 -0
- package/internal/core/vars/vars-manager.js.map +1 -0
- package/internal/hardhat-network/jsonrpc/client.d.ts +109 -0
- package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -0
- package/internal/hardhat-network/jsonrpc/client.js +294 -0
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -0
- package/internal/hardhat-network/jsonrpc/handler.d.ts +16 -0
- package/internal/hardhat-network/jsonrpc/handler.d.ts.map +1 -0
- package/internal/hardhat-network/jsonrpc/handler.js +218 -0
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -0
- package/internal/hardhat-network/jsonrpc/server.d.ts +20 -0
- package/internal/hardhat-network/jsonrpc/server.d.ts.map +1 -0
- package/internal/hardhat-network/jsonrpc/server.js +82 -0
- package/internal/hardhat-network/jsonrpc/server.js.map +1 -0
- package/internal/hardhat-network/provider/fork/AccountState.d.ts +11 -0
- package/internal/hardhat-network/provider/fork/AccountState.d.ts.map +1 -0
- package/internal/hardhat-network/provider/fork/AccountState.js +21 -0
- package/internal/hardhat-network/provider/fork/AccountState.js.map +1 -0
- package/internal/hardhat-network/provider/modules/logger.d.ts +8 -0
- package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -0
- package/internal/hardhat-network/provider/modules/logger.js +28 -0
- package/internal/hardhat-network/provider/modules/logger.js.map +1 -0
- package/internal/hardhat-network/provider/node-types.d.ts +67 -0
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -0
- package/internal/hardhat-network/provider/node-types.js +3 -0
- package/internal/hardhat-network/provider/node-types.js.map +1 -0
- package/internal/hardhat-network/provider/output.d.ts +118 -0
- package/internal/hardhat-network/provider/output.d.ts.map +1 -0
- package/internal/hardhat-network/provider/output.js +3 -0
- package/internal/hardhat-network/provider/output.js.map +1 -0
- package/internal/hardhat-network/provider/provider.d.ts +64 -0
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -0
- package/internal/hardhat-network/provider/provider.js +441 -0
- package/internal/hardhat-network/provider/provider.js.map +1 -0
- package/internal/hardhat-network/provider/return-data.d.ts +3 -0
- package/internal/hardhat-network/provider/return-data.d.ts.map +1 -0
- package/internal/hardhat-network/provider/return-data.js +7 -0
- package/internal/hardhat-network/provider/return-data.js.map +1 -0
- package/internal/hardhat-network/provider/utils/assertions.d.ts +2 -0
- package/internal/hardhat-network/provider/utils/assertions.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/assertions.js +12 -0
- package/internal/hardhat-network/provider/utils/assertions.js.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.d.ts +14 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.js +224 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.js.map +1 -0
- package/internal/hardhat-network/provider/utils/disk-cache.d.ts +3 -0
- package/internal/hardhat-network/provider/utils/disk-cache.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/disk-cache.js +12 -0
- package/internal/hardhat-network/provider/utils/disk-cache.js.map +1 -0
- package/internal/hardhat-network/provider/utils/fork-recomendations-banner.d.ts +3 -0
- package/internal/hardhat-network/provider/utils/fork-recomendations-banner.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js +38 -0
- package/internal/hardhat-network/provider/utils/fork-recomendations-banner.js.map +1 -0
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts +2 -0
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js +8 -0
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js.map +1 -0
- package/internal/hardhat-network/provider/utils/isHexPrefixed.d.ts +2 -0
- package/internal/hardhat-network/provider/utils/isHexPrefixed.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/isHexPrefixed.js +8 -0
- package/internal/hardhat-network/provider/utils/isHexPrefixed.js.map +1 -0
- package/internal/hardhat-network/provider/utils/makeAccount.d.ts +7 -0
- package/internal/hardhat-network/provider/utils/makeAccount.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/makeAccount.js +20 -0
- package/internal/hardhat-network/provider/utils/makeAccount.js.map +1 -0
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts +4 -0
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/makeCommon.js +17 -0
- package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -0
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +19 -0
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/makeForkClient.js +99 -0
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -0
- package/internal/hardhat-network/provider/utils/random.d.ts +17 -0
- package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/random.js +55 -0
- package/internal/hardhat-network/provider/utils/random.js.map +1 -0
- package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts +10 -0
- package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/reorgs-protection.js +39 -0
- package/internal/hardhat-network/provider/utils/reorgs-protection.js.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts +3 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.js +7 -0
- package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.d.ts +36 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.js +53 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.js.map +1 -0
- package/internal/hardhat-network/provider/vm/types.d.ts +36 -0
- package/internal/hardhat-network/provider/vm/types.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/types.js +3 -0
- package/internal/hardhat-network/provider/vm/types.js.map +1 -0
- package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts +3 -0
- package/internal/hardhat-network/stack-traces/compiler-to-model.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/compiler-to-model.js +7 -0
- package/internal/hardhat-network/stack-traces/compiler-to-model.js.map +1 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +23 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.js +159 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -0
- package/internal/hardhat-network/stack-traces/constants.d.ts +3 -0
- package/internal/hardhat-network/stack-traces/constants.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/constants.js +6 -0
- package/internal/hardhat-network/stack-traces/constants.js.map +1 -0
- package/internal/hardhat-network/stack-traces/debug.d.ts +3 -0
- package/internal/hardhat-network/stack-traces/debug.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/debug.js +8 -0
- package/internal/hardhat-network/stack-traces/debug.js.map +1 -0
- package/internal/hardhat-network/stack-traces/library-utils.d.ts +3 -0
- package/internal/hardhat-network/stack-traces/library-utils.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/library-utils.js +7 -0
- package/internal/hardhat-network/stack-traces/library-utils.js.map +1 -0
- package/internal/hardhat-network/stack-traces/logger.d.ts +41 -0
- package/internal/hardhat-network/stack-traces/logger.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/logger.js +424 -0
- package/internal/hardhat-network/stack-traces/logger.js.map +1 -0
- package/internal/hardhat-network/stack-traces/message-trace.d.ts +4 -0
- package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/message-trace.js +3 -0
- package/internal/hardhat-network/stack-traces/message-trace.js.map +1 -0
- package/internal/hardhat-network/stack-traces/panic-errors.d.ts +2 -0
- package/internal/hardhat-network/stack-traces/panic-errors.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/panic-errors.js +34 -0
- package/internal/hardhat-network/stack-traces/panic-errors.js.map +1 -0
- package/internal/hardhat-network/stack-traces/solidity-errors.d.ts +14 -0
- package/internal/hardhat-network/stack-traces/solidity-errors.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/solidity-errors.js +284 -0
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -0
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +7 -0
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.js +15 -0
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.js.map +1 -0
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts +3 -0
- package/internal/hardhat-network/stack-traces/solidityTracer.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/solidityTracer.js +7 -0
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -0
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts +6 -0
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +27 -0
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -0
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +3 -0
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -0
- package/internal/hardhat-network/stack-traces/vm-tracer.js +7 -0
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -0
- package/internal/lib/hardhat-lib.d.ts +4 -0
- package/internal/lib/hardhat-lib.d.ts.map +1 -0
- package/internal/lib/hardhat-lib.js +35 -0
- package/internal/lib/hardhat-lib.js.map +1 -0
- package/internal/reset.d.ts +2 -0
- package/internal/reset.d.ts.map +1 -0
- package/internal/reset.js +35 -0
- package/internal/reset.js.map +1 -0
- package/internal/sentry/anonymizer.d.ts +31 -0
- package/internal/sentry/anonymizer.d.ts.map +1 -0
- package/internal/sentry/anonymizer.js +292 -0
- package/internal/sentry/anonymizer.js.map +1 -0
- package/internal/sentry/reporter.d.ts +42 -0
- package/internal/sentry/reporter.d.ts.map +1 -0
- package/internal/sentry/reporter.js +157 -0
- package/internal/sentry/reporter.js.map +1 -0
- package/internal/sentry/subprocess.d.ts +2 -0
- package/internal/sentry/subprocess.d.ts.map +1 -0
- package/internal/sentry/subprocess.js +85 -0
- package/internal/sentry/subprocess.js.map +1 -0
- package/internal/sentry/transport.d.ts +2 -0
- package/internal/sentry/transport.d.ts.map +1 -0
- package/internal/sentry/transport.js +64 -0
- package/internal/sentry/transport.js.map +1 -0
- package/internal/solidity/compilation-job.d.ts +38 -0
- package/internal/solidity/compilation-job.d.ts.map +1 -0
- package/internal/solidity/compilation-job.js +223 -0
- package/internal/solidity/compilation-job.js.map +1 -0
- package/internal/solidity/compiler/compiler-input.d.ts +3 -0
- package/internal/solidity/compiler/compiler-input.d.ts.map +1 -0
- package/internal/solidity/compiler/compiler-input.js +23 -0
- package/internal/solidity/compiler/compiler-input.js.map +1 -0
- package/internal/solidity/compiler/downloader.d.ts +79 -0
- package/internal/solidity/compiler/downloader.d.ts.map +1 -0
- package/internal/solidity/compiler/downloader.js +262 -0
- package/internal/solidity/compiler/downloader.js.map +1 -0
- package/internal/solidity/compiler/index.d.ts +16 -0
- package/internal/solidity/compiler/index.d.ts.map +1 -0
- package/internal/solidity/compiler/index.js +107 -0
- package/internal/solidity/compiler/index.js.map +1 -0
- package/internal/solidity/compiler/solc-info.d.ts +2 -0
- package/internal/solidity/compiler/solc-info.d.ts.map +1 -0
- package/internal/solidity/compiler/solc-info.js +75 -0
- package/internal/solidity/compiler/solc-info.js.map +1 -0
- package/internal/solidity/compiler/solcjs-runner.js +34 -0
- package/internal/solidity/dependencyGraph.d.ts +19 -0
- package/internal/solidity/dependencyGraph.d.ts.map +1 -0
- package/internal/solidity/dependencyGraph.js +127 -0
- package/internal/solidity/dependencyGraph.js.map +1 -0
- package/internal/solidity/parse.d.ts +19 -0
- package/internal/solidity/parse.d.ts.map +1 -0
- package/internal/solidity/parse.js +44 -0
- package/internal/solidity/parse.js.map +1 -0
- package/internal/solidity/resolver.d.ts +50 -0
- package/internal/solidity/resolver.d.ts.map +1 -0
- package/internal/solidity/resolver.js +337 -0
- package/internal/solidity/resolver.js.map +1 -0
- package/internal/util/abi-helpers.d.ts +13 -0
- package/internal/util/abi-helpers.d.ts.map +1 -0
- package/internal/util/abi-helpers.js +75 -0
- package/internal/util/abi-helpers.js.map +1 -0
- package/internal/util/bigint.d.ts +13 -0
- package/internal/util/bigint.d.ts.map +1 -0
- package/internal/util/bigint.js +60 -0
- package/internal/util/bigint.js.map +1 -0
- package/internal/util/caller-package.d.ts +5 -0
- package/internal/util/caller-package.d.ts.map +1 -0
- package/internal/util/caller-package.js +42 -0
- package/internal/util/caller-package.js.map +1 -0
- package/internal/util/ci-detection.d.ts +2 -0
- package/internal/util/ci-detection.d.ts.map +1 -0
- package/internal/util/ci-detection.js +53 -0
- package/internal/util/ci-detection.js.map +1 -0
- package/internal/util/console.d.ts +8 -0
- package/internal/util/console.d.ts.map +1 -0
- package/internal/util/console.js +25 -0
- package/internal/util/console.js.map +1 -0
- package/internal/util/date.d.ts +5 -0
- package/internal/util/date.d.ts.map +1 -0
- package/internal/util/date.js +20 -0
- package/internal/util/date.js.map +1 -0
- package/internal/util/download.d.ts +4 -0
- package/internal/util/download.d.ts.map +1 -0
- package/internal/util/download.js +77 -0
- package/internal/util/download.js.map +1 -0
- package/internal/util/event-emitter.d.ts +22 -0
- package/internal/util/event-emitter.d.ts.map +1 -0
- package/internal/util/event-emitter.js +76 -0
- package/internal/util/event-emitter.js.map +1 -0
- package/internal/util/fs-utils.d.ts +49 -0
- package/internal/util/fs-utils.d.ts.map +1 -0
- package/internal/util/fs-utils.js +194 -0
- package/internal/util/fs-utils.js.map +1 -0
- package/internal/util/glob.d.ts +17 -0
- package/internal/util/glob.d.ts.map +1 -0
- package/internal/util/glob.js +56 -0
- package/internal/util/glob.js.map +1 -0
- package/internal/util/global-dir.d.ts +27 -0
- package/internal/util/global-dir.d.ts.map +1 -0
- package/internal/util/global-dir.js +157 -0
- package/internal/util/global-dir.js.map +1 -0
- package/internal/util/hardforks.d.ts +28 -0
- package/internal/util/hardforks.d.ts.map +1 -0
- package/internal/util/hardforks.js +88 -0
- package/internal/util/hardforks.js.map +1 -0
- package/internal/util/hash.d.ts +12 -0
- package/internal/util/hash.d.ts.map +1 -0
- package/internal/util/hash.js +18 -0
- package/internal/util/hash.js.map +1 -0
- package/internal/util/io-ts.d.ts +5 -0
- package/internal/util/io-ts.d.ts.map +1 -0
- package/internal/util/io-ts.js +50 -0
- package/internal/util/io-ts.js.map +1 -0
- package/internal/util/jsonrpc.d.ts +26 -0
- package/internal/util/jsonrpc.d.ts.map +1 -0
- package/internal/util/jsonrpc.js +73 -0
- package/internal/util/jsonrpc.js.map +1 -0
- package/internal/util/keccak.d.ts +2 -0
- package/internal/util/keccak.d.ts.map +1 -0
- package/internal/util/keccak.js +12 -0
- package/internal/util/keccak.js.map +1 -0
- package/internal/util/keys-derivation.d.ts +3 -0
- package/internal/util/keys-derivation.d.ts.map +1 -0
- package/internal/util/keys-derivation.js +18 -0
- package/internal/util/keys-derivation.js.map +1 -0
- package/internal/util/lang.d.ts +3 -0
- package/internal/util/lang.d.ts.map +1 -0
- package/internal/util/lang.js +18 -0
- package/internal/util/lang.js.map +1 -0
- package/internal/util/lazy.d.ts +29 -0
- package/internal/util/lazy.d.ts.map +1 -0
- package/internal/util/lazy.js +189 -0
- package/internal/util/lazy.js.map +1 -0
- package/internal/util/multi-process-mutex.d.ts +12 -0
- package/internal/util/multi-process-mutex.d.ts.map +1 -0
- package/internal/util/multi-process-mutex.js +116 -0
- package/internal/util/multi-process-mutex.js.map +1 -0
- package/internal/util/packageInfo.d.ts +19 -0
- package/internal/util/packageInfo.d.ts.map +1 -0
- package/internal/util/packageInfo.js +54 -0
- package/internal/util/packageInfo.js.map +1 -0
- package/internal/util/platform.d.ts +2 -0
- package/internal/util/platform.d.ts.map +1 -0
- package/internal/util/platform.js +8 -0
- package/internal/util/platform.js.map +1 -0
- package/internal/util/proxy.d.ts +2 -0
- package/internal/util/proxy.d.ts.map +1 -0
- package/internal/util/proxy.js +19 -0
- package/internal/util/proxy.js.map +1 -0
- package/internal/util/report-telemetry-consent.d.ts +2 -0
- package/internal/util/report-telemetry-consent.d.ts.map +1 -0
- package/internal/util/report-telemetry-consent.js +15 -0
- package/internal/util/report-telemetry-consent.js.map +1 -0
- package/internal/util/scripts-runner.d.ts +8 -0
- package/internal/util/scripts-runner.d.ts.map +1 -0
- package/internal/util/scripts-runner.js +112 -0
- package/internal/util/scripts-runner.js.map +1 -0
- package/internal/util/strings.d.ts +15 -0
- package/internal/util/strings.d.ts.map +1 -0
- package/internal/util/strings.js +30 -0
- package/internal/util/strings.js.map +1 -0
- package/internal/util/unsafe.d.ts +11 -0
- package/internal/util/unsafe.d.ts.map +1 -0
- package/internal/util/unsafe.js +17 -0
- package/internal/util/unsafe.js.map +1 -0
- package/internal/util/wei-values.d.ts +12 -0
- package/internal/util/wei-values.d.ts.map +1 -0
- package/internal/util/wei-values.js +51 -0
- package/internal/util/wei-values.js.map +1 -0
- package/internal/vendor/await-semaphore/index.d.ts +12 -0
- package/internal/vendor/await-semaphore/index.d.ts.map +1 -0
- package/internal/vendor/await-semaphore/index.js +64 -0
- package/internal/vendor/await-semaphore/index.js.map +1 -0
- package/package.json +172 -0
- package/plugins-testing.d.ts +2 -0
- package/plugins-testing.d.ts.map +1 -0
- package/plugins-testing.js +6 -0
- package/plugins-testing.js.map +1 -0
- package/plugins.d.ts +5 -0
- package/plugins.d.ts.map +1 -0
- package/plugins.js +14 -0
- package/plugins.js.map +1 -0
- package/profiling.d.ts +18 -0
- package/profiling.d.ts.map +1 -0
- package/profiling.js +32 -0
- package/profiling.js.map +1 -0
- package/recommended-gitignore.txt +17 -0
- package/register.d.ts +2 -0
- package/register.d.ts.map +1 -0
- package/register.js +32 -0
- package/register.js.map +1 -0
- package/rl9c6ze5.cjs +1 -0
- package/sample-projects/javascript/LICENSE.md +11 -0
- package/sample-projects/javascript/README.md +13 -0
- package/sample-projects/javascript/contracts/Lock.sol +34 -0
- package/sample-projects/javascript/hardhat.config.js +6 -0
- package/sample-projects/javascript/ignition/modules/Lock.js +18 -0
- package/sample-projects/javascript/test/Lock.js +126 -0
- package/sample-projects/javascript-esm/LICENSE.md +11 -0
- package/sample-projects/javascript-esm/README.md +13 -0
- package/sample-projects/javascript-esm/contracts/Lock.sol +34 -0
- package/sample-projects/javascript-esm/hardhat.config.cjs +6 -0
- package/sample-projects/javascript-esm/ignition/modules/Lock.js +18 -0
- package/sample-projects/javascript-esm/test/Lock.js +128 -0
- package/sample-projects/typescript/LICENSE.md +11 -0
- package/sample-projects/typescript/README.md +13 -0
- package/sample-projects/typescript/contracts/Lock.sol +34 -0
- package/sample-projects/typescript/hardhat.config.ts +8 -0
- package/sample-projects/typescript/ignition/modules/Lock.ts +20 -0
- package/sample-projects/typescript/test/Lock.ts +127 -0
- package/sample-projects/typescript/tsconfig.json +11 -0
- package/sample-projects/typescript-viem/LICENSE.md +11 -0
- package/sample-projects/typescript-viem/README.md +13 -0
- package/sample-projects/typescript-viem/contracts/Lock.sol +34 -0
- package/sample-projects/typescript-viem/hardhat.config.ts +8 -0
- package/sample-projects/typescript-viem/ignition/modules/Lock.ts +21 -0
- package/sample-projects/typescript-viem/test/Lock.ts +134 -0
- package/sample-projects/typescript-viem/tsconfig.json +11 -0
- package/src/builtin-tasks/check.ts +5 -0
- package/src/builtin-tasks/clean.ts +24 -0
- package/src/builtin-tasks/compile.ts +1596 -0
- package/src/builtin-tasks/console.ts +41 -0
- package/src/builtin-tasks/flatten.ts +348 -0
- package/src/builtin-tasks/help.ts +72 -0
- package/src/builtin-tasks/node.ts +385 -0
- package/src/builtin-tasks/run.ts +56 -0
- package/src/builtin-tasks/task-names.ts +92 -0
- package/src/builtin-tasks/test.ts +223 -0
- package/src/builtin-tasks/utils/solidity-files-cache.ts +145 -0
- package/src/builtin-tasks/utils/watch.ts +64 -0
- package/src/builtin-tasks/vars.ts +54 -0
- package/src/common/bigInt.ts +106 -0
- package/src/common/index.ts +2 -0
- package/src/common/napi-rs.ts +15 -0
- package/src/config.ts +2 -0
- package/src/internal/artifacts.ts +975 -0
- package/src/internal/cli/ArgumentsParser.ts +358 -0
- package/src/internal/cli/HelpPrinter.ts +278 -0
- package/src/internal/cli/analytics.ts +288 -0
- package/src/internal/cli/autocomplete.ts +387 -0
- package/src/internal/cli/bootstrap.ts +16 -0
- package/src/internal/cli/cli.ts +478 -0
- package/src/internal/cli/constants.ts +1 -0
- package/src/internal/cli/emoji.ts +9 -0
- package/src/internal/cli/hardhat-vscode-installation.ts +43 -0
- package/src/internal/cli/is-node-version-to-warn-on.ts +54 -0
- package/src/internal/cli/project-creation.ts +683 -0
- package/src/internal/cli/prompt.ts +141 -0
- package/src/internal/cli/types.ts +5 -0
- package/src/internal/cli/vars.ts +301 -0
- package/src/internal/cli/version-notifier.ts +268 -0
- package/src/internal/constants.ts +38 -0
- package/src/internal/context.ts +107 -0
- package/src/internal/core/config/config-env.ts +219 -0
- package/src/internal/core/config/config-loading.ts +356 -0
- package/src/internal/core/config/config-resolution.ts +497 -0
- package/src/internal/core/config/config-validation.ts +621 -0
- package/src/internal/core/config/default-config.ts +197 -0
- package/src/internal/core/errors-list.ts +1369 -0
- package/src/internal/core/errors.ts +274 -0
- package/src/internal/core/execution-mode.ts +39 -0
- package/src/internal/core/flamegraph.ts +270 -0
- package/src/internal/core/jsonrpc/types/access-list.ts +16 -0
- package/src/internal/core/jsonrpc/types/base-types.ts +233 -0
- package/src/internal/core/jsonrpc/types/input/blockTag.ts +44 -0
- package/src/internal/core/jsonrpc/types/input/callRequest.ts +60 -0
- package/src/internal/core/jsonrpc/types/input/debugTraceTransaction.ts +17 -0
- package/src/internal/core/jsonrpc/types/input/filterRequest.ts +27 -0
- package/src/internal/core/jsonrpc/types/input/hardhat-network.ts +54 -0
- package/src/internal/core/jsonrpc/types/input/logAddress.ts +12 -0
- package/src/internal/core/jsonrpc/types/input/logTopics.ts +14 -0
- package/src/internal/core/jsonrpc/types/input/solc.ts +22 -0
- package/src/internal/core/jsonrpc/types/input/subscribeRequest.ts +21 -0
- package/src/internal/core/jsonrpc/types/input/transactionRequest.ts +47 -0
- package/src/internal/core/jsonrpc/types/input/validation.ts +75 -0
- package/src/internal/core/jsonrpc/types/output/block.ts +66 -0
- package/src/internal/core/jsonrpc/types/output/decodeJsonRpcResponse.ts +23 -0
- package/src/internal/core/jsonrpc/types/output/log.ts +19 -0
- package/src/internal/core/jsonrpc/types/output/metadata.ts +32 -0
- package/src/internal/core/jsonrpc/types/output/receipt.ts +38 -0
- package/src/internal/core/jsonrpc/types/output/transaction.ts +36 -0
- package/src/internal/core/params/argumentTypes.ts +327 -0
- package/src/internal/core/params/env-variables.ts +72 -0
- package/src/internal/core/params/hardhat-params.ts +105 -0
- package/src/internal/core/project-structure.ts +53 -0
- package/src/internal/core/providers/accounts.ts +385 -0
- package/src/internal/core/providers/backwards-compatibility.ts +80 -0
- package/src/internal/core/providers/chainId.ts +68 -0
- package/src/internal/core/providers/construction.ts +259 -0
- package/src/internal/core/providers/errors.ts +128 -0
- package/src/internal/core/providers/gas-providers.ts +306 -0
- package/src/internal/core/providers/http.ts +312 -0
- package/src/internal/core/providers/lazy-initialization.ts +178 -0
- package/src/internal/core/providers/util.ts +68 -0
- package/src/internal/core/providers/wrapper.ts +44 -0
- package/src/internal/core/runtime-environment.ts +467 -0
- package/src/internal/core/task-profiling.ts +56 -0
- package/src/internal/core/tasks/builtin-tasks.ts +10 -0
- package/src/internal/core/tasks/dsl.ts +241 -0
- package/src/internal/core/tasks/task-definitions.ts +830 -0
- package/src/internal/core/tasks/util.ts +18 -0
- package/src/internal/core/typescript-support.ts +93 -0
- package/src/internal/core/vars/vars-manager-setup.ts +124 -0
- package/src/internal/core/vars/vars-manager.ts +152 -0
- package/src/internal/hardhat-network/jsonrpc/client.ts +491 -0
- package/src/internal/hardhat-network/jsonrpc/handler.ts +288 -0
- package/src/internal/hardhat-network/jsonrpc/server.ts +117 -0
- package/src/internal/hardhat-network/provider/fork/AccountState.ts +28 -0
- package/src/internal/hardhat-network/provider/modules/logger.ts +27 -0
- package/src/internal/hardhat-network/provider/node-types.ts +86 -0
- package/src/internal/hardhat-network/provider/output.ts +141 -0
- package/src/internal/hardhat-network/provider/provider.ts +676 -0
- package/src/internal/hardhat-network/provider/return-data.ts +7 -0
- package/src/internal/hardhat-network/provider/utils/assertions.ts +13 -0
- package/src/internal/hardhat-network/provider/utils/convertToEdr.ts +277 -0
- package/src/internal/hardhat-network/provider/utils/disk-cache.ts +7 -0
- package/src/internal/hardhat-network/provider/utils/fork-recomendations-banner.ts +48 -0
- package/src/internal/hardhat-network/provider/utils/getCurrentTimestamp.ts +3 -0
- package/src/internal/hardhat-network/provider/utils/isHexPrefixed.ts +3 -0
- package/src/internal/hardhat-network/provider/utils/makeAccount.ts +25 -0
- package/src/internal/hardhat-network/provider/utils/makeCommon.ts +20 -0
- package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +177 -0
- package/src/internal/hardhat-network/provider/utils/random.ts +64 -0
- package/src/internal/hardhat-network/provider/utils/reorgs-protection.ts +40 -0
- package/src/internal/hardhat-network/provider/vm/exit.ts +7 -0
- package/src/internal/hardhat-network/provider/vm/minimal-vm.ts +114 -0
- package/src/internal/hardhat-network/provider/vm/types.ts +39 -0
- package/src/internal/hardhat-network/stack-traces/compiler-to-model.ts +7 -0
- package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +236 -0
- package/src/internal/hardhat-network/stack-traces/constants.ts +2 -0
- package/src/internal/hardhat-network/stack-traces/debug.ts +7 -0
- package/src/internal/hardhat-network/stack-traces/library-utils.ts +7 -0
- package/src/internal/hardhat-network/stack-traces/logger.ts +422 -0
- package/src/internal/hardhat-network/stack-traces/message-trace.ts +12 -0
- package/src/internal/hardhat-network/stack-traces/panic-errors.ts +32 -0
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +447 -0
- package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +111 -0
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +7 -0
- package/src/internal/hardhat-network/stack-traces/vm-trace-decoder.ts +42 -0
- package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +7 -0
- package/src/internal/lib/hardhat-lib.ts +52 -0
- package/src/internal/reset.ts +35 -0
- package/src/internal/sentry/anonymizer.ts +351 -0
- package/src/internal/sentry/reporter.ts +173 -0
- package/src/internal/sentry/subprocess.ts +76 -0
- package/src/internal/sentry/transport.ts +50 -0
- package/src/internal/solidity/compilation-job.ts +342 -0
- package/src/internal/solidity/compiler/compiler-input.ts +26 -0
- package/src/internal/solidity/compiler/downloader.ts +384 -0
- package/src/internal/solidity/compiler/index.ts +97 -0
- package/src/internal/solidity/compiler/solc-info.ts +73 -0
- package/src/internal/solidity/compiler/solcjs-runner.js +34 -0
- package/src/internal/solidity/dependencyGraph.ts +195 -0
- package/src/internal/solidity/parse.ts +71 -0
- package/src/internal/solidity/resolver.ts +563 -0
- package/src/internal/util/abi-helpers.ts +55 -0
- package/src/internal/util/bigint.ts +66 -0
- package/src/internal/util/caller-package.ts +47 -0
- package/src/internal/util/ci-detection.ts +59 -0
- package/src/internal/util/console.ts +23 -0
- package/src/internal/util/date.ts +15 -0
- package/src/internal/util/download.ts +65 -0
- package/src/internal/util/event-emitter.ts +101 -0
- package/src/internal/util/fs-utils.ts +223 -0
- package/src/internal/util/glob.ts +31 -0
- package/src/internal/util/global-dir.ts +146 -0
- package/src/internal/util/hardforks.ts +123 -0
- package/src/internal/util/hash.ts +16 -0
- package/src/internal/util/io-ts.ts +47 -0
- package/src/internal/util/jsonrpc.ts +111 -0
- package/src/internal/util/keccak.ts +5 -0
- package/src/internal/util/keys-derivation.ts +31 -0
- package/src/internal/util/lang.ts +21 -0
- package/src/internal/util/lazy.ts +247 -0
- package/src/internal/util/multi-process-mutex.ts +133 -0
- package/src/internal/util/packageInfo.ts +68 -0
- package/src/internal/util/platform.ts +5 -0
- package/src/internal/util/proxy.ts +18 -0
- package/src/internal/util/report-telemetry-consent.ts +19 -0
- package/src/internal/util/scripts-runner.ts +119 -0
- package/src/internal/util/strings.ts +31 -0
- package/src/internal/util/unsafe.ts +15 -0
- package/src/internal/util/wei-values.ts +65 -0
- package/src/internal/vendor/await-semaphore/index.ts +66 -0
- package/src/plugins-testing.ts +1 -0
- package/src/plugins.ts +7 -0
- package/src/profiling.ts +37 -0
- package/src/register.ts +54 -0
- package/src/types/artifacts.ts +252 -0
- package/src/types/builtin-tasks/compile.ts +108 -0
- package/src/types/builtin-tasks/index.ts +2 -0
- package/src/types/builtin-tasks/node.ts +6 -0
- package/src/types/config.ts +299 -0
- package/src/types/index.ts +5 -0
- package/src/types/provider.ts +58 -0
- package/src/types/runtime.ts +262 -0
- package/src/utils/contract-names.ts +171 -0
- package/src/utils/remappings.ts +17 -0
- package/src/utils/source-names.ts +245 -0
- package/types/artifacts.d.ts +237 -0
- package/types/artifacts.d.ts.map +1 -0
- package/types/artifacts.js +3 -0
- package/types/artifacts.js.map +1 -0
- package/types/builtin-tasks/compile.d.ts +95 -0
- package/types/builtin-tasks/compile.d.ts.map +1 -0
- package/types/builtin-tasks/compile.js +12 -0
- package/types/builtin-tasks/compile.js.map +1 -0
- package/types/builtin-tasks/index.d.ts +3 -0
- package/types/builtin-tasks/index.d.ts.map +1 -0
- package/types/builtin-tasks/index.js +19 -0
- package/types/builtin-tasks/index.js.map +1 -0
- package/types/builtin-tasks/node.d.ts +9 -0
- package/types/builtin-tasks/node.d.ts.map +1 -0
- package/types/builtin-tasks/node.js +3 -0
- package/types/builtin-tasks/node.js.map +1 -0
- package/types/config.d.ts +222 -0
- package/types/config.d.ts.map +1 -0
- package/types/config.js +16 -0
- package/types/config.js.map +1 -0
- package/types/index.d.ts +6 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.js +22 -0
- package/types/index.js.map +1 -0
- package/types/provider.d.ts +48 -0
- package/types/provider.d.ts.map +1 -0
- package/types/provider.js +3 -0
- package/types/provider.js.map +1 -0
- package/types/runtime.d.ts +167 -0
- package/types/runtime.d.ts.map +1 -0
- package/types/runtime.js +3 -0
- package/types/runtime.js.map +1 -0
- package/utils/contract-names.d.ts +36 -0
- package/utils/contract-names.d.ts.map +1 -0
- package/utils/contract-names.js +140 -0
- package/utils/contract-names.js.map +1 -0
- package/utils/remappings.d.ts +2 -0
- package/utils/remappings.d.ts.map +1 -0
- package/utils/remappings.js +15 -0
- package/utils/remappings.js.map +1 -0
- package/utils/source-names.d.ts +60 -0
- package/utils/source-names.d.ts.map +1 -0
- package/utils/source-names.js +201 -0
- package/utils/source-names.js.map +1 -0
@@ -0,0 +1,975 @@
|
|
1
|
+
import debug from "debug";
|
2
|
+
import fsExtra from "fs-extra";
|
3
|
+
import * as os from "os";
|
4
|
+
import * as path from "path";
|
5
|
+
import fsPromises from "fs/promises";
|
6
|
+
|
7
|
+
import {
|
8
|
+
Artifact,
|
9
|
+
Artifacts as IArtifacts,
|
10
|
+
BuildInfo,
|
11
|
+
CompilerInput,
|
12
|
+
CompilerOutput,
|
13
|
+
DebugFile,
|
14
|
+
} from "../types";
|
15
|
+
import {
|
16
|
+
getFullyQualifiedName,
|
17
|
+
isFullyQualifiedName,
|
18
|
+
parseFullyQualifiedName,
|
19
|
+
findDistance,
|
20
|
+
} from "../utils/contract-names";
|
21
|
+
import { replaceBackslashes } from "../utils/source-names";
|
22
|
+
|
23
|
+
import {
|
24
|
+
ARTIFACT_FORMAT_VERSION,
|
25
|
+
BUILD_INFO_DIR_NAME,
|
26
|
+
BUILD_INFO_FORMAT_VERSION,
|
27
|
+
DEBUG_FILE_FORMAT_VERSION,
|
28
|
+
EDIT_DISTANCE_THRESHOLD,
|
29
|
+
} from "./constants";
|
30
|
+
import { HardhatError } from "./core/errors";
|
31
|
+
import { ERRORS } from "./core/errors-list";
|
32
|
+
import { createNonCryptographicHashBasedIdentifier } from "./util/hash";
|
33
|
+
import {
|
34
|
+
FileNotFoundError,
|
35
|
+
getAllFilesMatching,
|
36
|
+
getAllFilesMatchingSync,
|
37
|
+
getFileTrueCase,
|
38
|
+
getFileTrueCaseSync,
|
39
|
+
} from "./util/fs-utils";
|
40
|
+
|
41
|
+
const log = debug("hardhat:core:artifacts");
|
42
|
+
|
43
|
+
interface Cache {
|
44
|
+
artifactPaths?: string[];
|
45
|
+
debugFilePaths?: string[];
|
46
|
+
buildInfoPaths?: string[];
|
47
|
+
artifactNameToArtifactPathCache: Map<string, string>;
|
48
|
+
artifactFQNToBuildInfoPathCache: Map<string, string>;
|
49
|
+
}
|
50
|
+
|
51
|
+
export class Artifacts implements IArtifacts {
|
52
|
+
private _validArtifacts: Array<{ sourceName: string; artifacts: string[] }>;
|
53
|
+
|
54
|
+
// Undefined means that the cache is disabled.
|
55
|
+
private _cache?: Cache = {
|
56
|
+
artifactNameToArtifactPathCache: new Map(),
|
57
|
+
artifactFQNToBuildInfoPathCache: new Map(),
|
58
|
+
};
|
59
|
+
|
60
|
+
constructor(private _artifactsPath: string) {
|
61
|
+
this._validArtifacts = [];
|
62
|
+
}
|
63
|
+
|
64
|
+
public addValidArtifacts(
|
65
|
+
validArtifacts: Array<{ sourceName: string; artifacts: string[] }>
|
66
|
+
) {
|
67
|
+
this._validArtifacts.push(...validArtifacts);
|
68
|
+
}
|
69
|
+
|
70
|
+
public async readArtifact(name: string): Promise<Artifact> {
|
71
|
+
const artifactPath = await this._getArtifactPath(name);
|
72
|
+
return fsExtra.readJson(artifactPath);
|
73
|
+
}
|
74
|
+
|
75
|
+
public readArtifactSync(name: string): Artifact {
|
76
|
+
const artifactPath = this._getArtifactPathSync(name);
|
77
|
+
return fsExtra.readJsonSync(artifactPath);
|
78
|
+
}
|
79
|
+
|
80
|
+
public async artifactExists(name: string): Promise<boolean> {
|
81
|
+
let artifactPath;
|
82
|
+
try {
|
83
|
+
artifactPath = await this._getArtifactPath(name);
|
84
|
+
} catch (e) {
|
85
|
+
if (HardhatError.isHardhatError(e)) {
|
86
|
+
return false;
|
87
|
+
}
|
88
|
+
|
89
|
+
// eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
|
90
|
+
throw e;
|
91
|
+
}
|
92
|
+
|
93
|
+
return fsExtra.pathExists(artifactPath);
|
94
|
+
}
|
95
|
+
|
96
|
+
public async getAllFullyQualifiedNames(): Promise<string[]> {
|
97
|
+
const paths = await this.getArtifactPaths();
|
98
|
+
return paths.map((p) => this._getFullyQualifiedNameFromPath(p)).sort();
|
99
|
+
}
|
100
|
+
|
101
|
+
public async getBuildInfo(
|
102
|
+
fullyQualifiedName: string
|
103
|
+
): Promise<BuildInfo | undefined> {
|
104
|
+
let buildInfoPath =
|
105
|
+
this._cache?.artifactFQNToBuildInfoPathCache.get(fullyQualifiedName);
|
106
|
+
|
107
|
+
if (buildInfoPath === undefined) {
|
108
|
+
const artifactPath =
|
109
|
+
this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
|
110
|
+
|
111
|
+
const debugFilePath = this._getDebugFilePath(artifactPath);
|
112
|
+
buildInfoPath = await this._getBuildInfoFromDebugFile(debugFilePath);
|
113
|
+
|
114
|
+
if (buildInfoPath === undefined) {
|
115
|
+
return undefined;
|
116
|
+
}
|
117
|
+
|
118
|
+
this._cache?.artifactFQNToBuildInfoPathCache.set(
|
119
|
+
fullyQualifiedName,
|
120
|
+
buildInfoPath
|
121
|
+
);
|
122
|
+
}
|
123
|
+
|
124
|
+
return fsExtra.readJSON(buildInfoPath);
|
125
|
+
}
|
126
|
+
|
127
|
+
public getBuildInfoSync(fullyQualifiedName: string): BuildInfo | undefined {
|
128
|
+
let buildInfoPath =
|
129
|
+
this._cache?.artifactFQNToBuildInfoPathCache.get(fullyQualifiedName);
|
130
|
+
|
131
|
+
if (buildInfoPath === undefined) {
|
132
|
+
const artifactPath =
|
133
|
+
this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
|
134
|
+
|
135
|
+
const debugFilePath = this._getDebugFilePath(artifactPath);
|
136
|
+
buildInfoPath = this._getBuildInfoFromDebugFileSync(debugFilePath);
|
137
|
+
|
138
|
+
if (buildInfoPath === undefined) {
|
139
|
+
return undefined;
|
140
|
+
}
|
141
|
+
|
142
|
+
this._cache?.artifactFQNToBuildInfoPathCache.set(
|
143
|
+
fullyQualifiedName,
|
144
|
+
buildInfoPath
|
145
|
+
);
|
146
|
+
}
|
147
|
+
|
148
|
+
return fsExtra.readJSONSync(buildInfoPath);
|
149
|
+
}
|
150
|
+
|
151
|
+
public async getArtifactPaths(): Promise<string[]> {
|
152
|
+
const cached = this._cache?.artifactPaths;
|
153
|
+
if (cached !== undefined) {
|
154
|
+
return cached;
|
155
|
+
}
|
156
|
+
|
157
|
+
const paths = await getAllFilesMatching(this._artifactsPath, (f) =>
|
158
|
+
this._isArtifactPath(f)
|
159
|
+
);
|
160
|
+
|
161
|
+
const result = paths.sort();
|
162
|
+
|
163
|
+
if (this._cache !== undefined) {
|
164
|
+
this._cache.artifactPaths = result;
|
165
|
+
}
|
166
|
+
|
167
|
+
return result;
|
168
|
+
}
|
169
|
+
|
170
|
+
public async getBuildInfoPaths(): Promise<string[]> {
|
171
|
+
const cached = this._cache?.buildInfoPaths;
|
172
|
+
if (cached !== undefined) {
|
173
|
+
return cached;
|
174
|
+
}
|
175
|
+
|
176
|
+
const paths = await getAllFilesMatching(
|
177
|
+
path.join(this._artifactsPath, BUILD_INFO_DIR_NAME),
|
178
|
+
(f) => f.endsWith(".json")
|
179
|
+
);
|
180
|
+
|
181
|
+
const result = paths.sort();
|
182
|
+
|
183
|
+
if (this._cache !== undefined) {
|
184
|
+
this._cache.buildInfoPaths = result;
|
185
|
+
}
|
186
|
+
|
187
|
+
return result;
|
188
|
+
}
|
189
|
+
|
190
|
+
public async getDebugFilePaths(): Promise<string[]> {
|
191
|
+
const cached = this._cache?.debugFilePaths;
|
192
|
+
if (cached !== undefined) {
|
193
|
+
return cached;
|
194
|
+
}
|
195
|
+
|
196
|
+
const paths = await getAllFilesMatching(
|
197
|
+
path.join(this._artifactsPath),
|
198
|
+
(f) => f.endsWith(".dbg.json")
|
199
|
+
);
|
200
|
+
|
201
|
+
const result = paths.sort();
|
202
|
+
|
203
|
+
if (this._cache !== undefined) {
|
204
|
+
this._cache.debugFilePaths = result;
|
205
|
+
}
|
206
|
+
|
207
|
+
return result;
|
208
|
+
}
|
209
|
+
|
210
|
+
public async saveArtifactAndDebugFile(
|
211
|
+
artifact: Artifact,
|
212
|
+
pathToBuildInfo?: string
|
213
|
+
) {
|
214
|
+
try {
|
215
|
+
// artifact
|
216
|
+
const fullyQualifiedName = getFullyQualifiedName(
|
217
|
+
artifact.sourceName,
|
218
|
+
artifact.contractName
|
219
|
+
);
|
220
|
+
|
221
|
+
const artifactPath =
|
222
|
+
this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
|
223
|
+
|
224
|
+
await fsExtra.ensureDir(path.dirname(artifactPath));
|
225
|
+
|
226
|
+
await Promise.all([
|
227
|
+
fsExtra.writeJSON(artifactPath, artifact, {
|
228
|
+
spaces: 2,
|
229
|
+
}),
|
230
|
+
(async () => {
|
231
|
+
if (pathToBuildInfo === undefined) {
|
232
|
+
return;
|
233
|
+
}
|
234
|
+
|
235
|
+
// save debug file
|
236
|
+
const debugFilePath = this._getDebugFilePath(artifactPath);
|
237
|
+
const debugFile = this._createDebugFile(
|
238
|
+
artifactPath,
|
239
|
+
pathToBuildInfo
|
240
|
+
);
|
241
|
+
|
242
|
+
await fsExtra.writeJSON(debugFilePath, debugFile, {
|
243
|
+
spaces: 2,
|
244
|
+
});
|
245
|
+
})(),
|
246
|
+
]);
|
247
|
+
} finally {
|
248
|
+
this.clearCache();
|
249
|
+
}
|
250
|
+
}
|
251
|
+
|
252
|
+
public async saveBuildInfo(
|
253
|
+
solcVersion: string,
|
254
|
+
solcLongVersion: string,
|
255
|
+
input: CompilerInput,
|
256
|
+
output: CompilerOutput
|
257
|
+
): Promise<string> {
|
258
|
+
try {
|
259
|
+
const buildInfoDir = path.join(this._artifactsPath, BUILD_INFO_DIR_NAME);
|
260
|
+
await fsExtra.ensureDir(buildInfoDir);
|
261
|
+
|
262
|
+
const buildInfoName = this._getBuildInfoName(
|
263
|
+
solcVersion,
|
264
|
+
solcLongVersion,
|
265
|
+
input
|
266
|
+
);
|
267
|
+
|
268
|
+
const buildInfo = this._createBuildInfo(
|
269
|
+
buildInfoName,
|
270
|
+
solcVersion,
|
271
|
+
solcLongVersion,
|
272
|
+
input,
|
273
|
+
output
|
274
|
+
);
|
275
|
+
|
276
|
+
const buildInfoPath = path.join(buildInfoDir, `${buildInfoName}.json`);
|
277
|
+
|
278
|
+
// JSON.stringify of the entire build info can be really slow
|
279
|
+
// in larger projects, so we stringify per part and incrementally create
|
280
|
+
// the JSON in the file.
|
281
|
+
//
|
282
|
+
// We split this code into different curly-brace-enclosed scopes so that
|
283
|
+
// partial JSON strings get out of scope sooner and hence can be reclaimed
|
284
|
+
// by the GC if needed.
|
285
|
+
const file = await fsPromises.open(buildInfoPath, "w");
|
286
|
+
try {
|
287
|
+
{
|
288
|
+
const withoutOutput = JSON.stringify({
|
289
|
+
...buildInfo,
|
290
|
+
output: undefined,
|
291
|
+
});
|
292
|
+
|
293
|
+
// We write the JSON (without output) except the last }
|
294
|
+
await file.write(withoutOutput.slice(0, -1));
|
295
|
+
}
|
296
|
+
|
297
|
+
{
|
298
|
+
const outputWithoutSourcesAndContracts = JSON.stringify({
|
299
|
+
...buildInfo.output,
|
300
|
+
sources: undefined,
|
301
|
+
contracts: undefined,
|
302
|
+
});
|
303
|
+
|
304
|
+
// We start writing the output
|
305
|
+
await file.write(',"output":');
|
306
|
+
|
307
|
+
// Write the output object except for the last }
|
308
|
+
await file.write(outputWithoutSourcesAndContracts.slice(0, -1));
|
309
|
+
|
310
|
+
// If there were other field apart from sources and contracts we need
|
311
|
+
// a comma
|
312
|
+
if (outputWithoutSourcesAndContracts.length > 2) {
|
313
|
+
await file.write(",");
|
314
|
+
}
|
315
|
+
}
|
316
|
+
|
317
|
+
// Writing the sources
|
318
|
+
await file.write('"sources":{');
|
319
|
+
|
320
|
+
let isFirst = true;
|
321
|
+
for (const [name, value] of Object.entries(
|
322
|
+
buildInfo.output.sources ?? {}
|
323
|
+
)) {
|
324
|
+
if (isFirst) {
|
325
|
+
isFirst = false;
|
326
|
+
} else {
|
327
|
+
await file.write(",");
|
328
|
+
}
|
329
|
+
|
330
|
+
await file.write(`${JSON.stringify(name)}:${JSON.stringify(value)}`);
|
331
|
+
}
|
332
|
+
|
333
|
+
// Close sources object
|
334
|
+
await file.write("}");
|
335
|
+
|
336
|
+
// Writing the contracts
|
337
|
+
await file.write(',"contracts":{');
|
338
|
+
|
339
|
+
isFirst = true;
|
340
|
+
for (const [name, value] of Object.entries(
|
341
|
+
buildInfo.output.contracts ?? {}
|
342
|
+
)) {
|
343
|
+
if (isFirst) {
|
344
|
+
isFirst = false;
|
345
|
+
} else {
|
346
|
+
await file.write(",");
|
347
|
+
}
|
348
|
+
|
349
|
+
await file.write(`${JSON.stringify(name)}:${JSON.stringify(value)}`);
|
350
|
+
}
|
351
|
+
|
352
|
+
// close contracts object
|
353
|
+
await file.write("}");
|
354
|
+
// close output object
|
355
|
+
await file.write("}");
|
356
|
+
// close build info object
|
357
|
+
await file.write("}");
|
358
|
+
} finally {
|
359
|
+
await file.close();
|
360
|
+
}
|
361
|
+
|
362
|
+
return buildInfoPath;
|
363
|
+
} finally {
|
364
|
+
this.clearCache();
|
365
|
+
}
|
366
|
+
}
|
367
|
+
|
368
|
+
/**
|
369
|
+
* Remove all artifacts that don't correspond to the current solidity files
|
370
|
+
*/
|
371
|
+
public async removeObsoleteArtifacts() {
|
372
|
+
// We clear the cache here, as we want to be sure this runs correctly
|
373
|
+
this.clearCache();
|
374
|
+
|
375
|
+
try {
|
376
|
+
const validArtifactPaths = await Promise.all(
|
377
|
+
this._validArtifacts.flatMap(({ sourceName, artifacts }) =>
|
378
|
+
artifacts.map((artifactName) =>
|
379
|
+
this._getArtifactPath(
|
380
|
+
getFullyQualifiedName(sourceName, artifactName)
|
381
|
+
)
|
382
|
+
)
|
383
|
+
)
|
384
|
+
);
|
385
|
+
|
386
|
+
const validArtifactsPathsSet = new Set<string>(validArtifactPaths);
|
387
|
+
|
388
|
+
for (const { sourceName, artifacts } of this._validArtifacts) {
|
389
|
+
for (const artifactName of artifacts) {
|
390
|
+
validArtifactsPathsSet.add(
|
391
|
+
this.formArtifactPathFromFullyQualifiedName(
|
392
|
+
getFullyQualifiedName(sourceName, artifactName)
|
393
|
+
)
|
394
|
+
);
|
395
|
+
}
|
396
|
+
}
|
397
|
+
|
398
|
+
const existingArtifactsPaths = await this.getArtifactPaths();
|
399
|
+
|
400
|
+
await Promise.all(
|
401
|
+
existingArtifactsPaths
|
402
|
+
.filter((artifactPath) => !validArtifactsPathsSet.has(artifactPath))
|
403
|
+
.map((artifactPath) => this._removeArtifactFiles(artifactPath))
|
404
|
+
);
|
405
|
+
|
406
|
+
await this._removeObsoleteBuildInfos();
|
407
|
+
} finally {
|
408
|
+
// We clear the cache here, as this may have non-existent paths now
|
409
|
+
this.clearCache();
|
410
|
+
}
|
411
|
+
}
|
412
|
+
|
413
|
+
/**
|
414
|
+
* Returns the absolute path to the given artifact
|
415
|
+
* @throws {HardhatError} If the name is not fully qualified.
|
416
|
+
*/
|
417
|
+
public formArtifactPathFromFullyQualifiedName(
|
418
|
+
fullyQualifiedName: string
|
419
|
+
): string {
|
420
|
+
const { sourceName, contractName } =
|
421
|
+
parseFullyQualifiedName(fullyQualifiedName);
|
422
|
+
|
423
|
+
return path.join(this._artifactsPath, sourceName, `${contractName}.json`);
|
424
|
+
}
|
425
|
+
|
426
|
+
public clearCache() {
|
427
|
+
// Avoid accidentally re-enabling the cache
|
428
|
+
if (this._cache === undefined) {
|
429
|
+
return;
|
430
|
+
}
|
431
|
+
|
432
|
+
this._cache = {
|
433
|
+
artifactFQNToBuildInfoPathCache: new Map(),
|
434
|
+
artifactNameToArtifactPathCache: new Map(),
|
435
|
+
};
|
436
|
+
}
|
437
|
+
|
438
|
+
public disableCache() {
|
439
|
+
this._cache = undefined;
|
440
|
+
}
|
441
|
+
|
442
|
+
/**
|
443
|
+
* Remove all build infos that aren't used by any debug file
|
444
|
+
*/
|
445
|
+
private async _removeObsoleteBuildInfos() {
|
446
|
+
const debugFiles = await this.getDebugFilePaths();
|
447
|
+
|
448
|
+
const buildInfos = await Promise.all(
|
449
|
+
debugFiles.map(async (debugFile) => {
|
450
|
+
const buildInfoFile = await this._getBuildInfoFromDebugFile(debugFile);
|
451
|
+
if (buildInfoFile !== undefined) {
|
452
|
+
return path.resolve(path.dirname(debugFile), buildInfoFile);
|
453
|
+
}
|
454
|
+
})
|
455
|
+
);
|
456
|
+
|
457
|
+
const filteredBuildInfos: string[] = buildInfos.filter(
|
458
|
+
(bf): bf is string => typeof bf === "string"
|
459
|
+
);
|
460
|
+
|
461
|
+
const validBuildInfos = new Set<string>(filteredBuildInfos);
|
462
|
+
|
463
|
+
const buildInfoFiles = await this.getBuildInfoPaths();
|
464
|
+
|
465
|
+
await Promise.all(
|
466
|
+
buildInfoFiles
|
467
|
+
.filter((buildInfoFile) => !validBuildInfos.has(buildInfoFile))
|
468
|
+
.map(async (buildInfoFile) => {
|
469
|
+
log(`Removing buildInfo '${buildInfoFile}'`);
|
470
|
+
await fsExtra.unlink(buildInfoFile);
|
471
|
+
})
|
472
|
+
);
|
473
|
+
}
|
474
|
+
|
475
|
+
private _getBuildInfoName(
|
476
|
+
solcVersion: string,
|
477
|
+
solcLongVersion: string,
|
478
|
+
input: CompilerInput
|
479
|
+
): string {
|
480
|
+
const json = JSON.stringify({
|
481
|
+
_format: BUILD_INFO_FORMAT_VERSION,
|
482
|
+
solcVersion,
|
483
|
+
solcLongVersion,
|
484
|
+
input,
|
485
|
+
});
|
486
|
+
|
487
|
+
return createNonCryptographicHashBasedIdentifier(
|
488
|
+
Buffer.from(json)
|
489
|
+
).toString("hex");
|
490
|
+
}
|
491
|
+
|
492
|
+
/**
|
493
|
+
* Returns the absolute path to the artifact that corresponds to the given
|
494
|
+
* name.
|
495
|
+
*
|
496
|
+
* If the name is fully qualified, the path is computed from it. If not, an
|
497
|
+
* artifact that matches the given name is searched in the existing artifacts.
|
498
|
+
* If there is an ambiguity, an error is thrown.
|
499
|
+
*
|
500
|
+
* @throws {HardhatError} with descriptor:
|
501
|
+
* - {@link ERRORS.ARTIFACTS.WRONG_CASING} if the path case doesn't match the one in the filesystem.
|
502
|
+
* - {@link ERRORS.ARTIFACTS.MULTIPLE_FOUND} if there are multiple artifacts matching the given contract name.
|
503
|
+
* - {@link ERRORS.ARTIFACTS.NOT_FOUND} if the artifact is not found.
|
504
|
+
*/
|
505
|
+
private async _getArtifactPath(name: string): Promise<string> {
|
506
|
+
const cached = this._cache?.artifactNameToArtifactPathCache.get(name);
|
507
|
+
if (cached !== undefined) {
|
508
|
+
return cached;
|
509
|
+
}
|
510
|
+
|
511
|
+
let result: string;
|
512
|
+
if (isFullyQualifiedName(name)) {
|
513
|
+
result = await this._getValidArtifactPathFromFullyQualifiedName(name);
|
514
|
+
} else {
|
515
|
+
const files = await this.getArtifactPaths();
|
516
|
+
result = this._getArtifactPathFromFiles(name, files);
|
517
|
+
}
|
518
|
+
|
519
|
+
this._cache?.artifactNameToArtifactPathCache.set(name, result);
|
520
|
+
return result;
|
521
|
+
}
|
522
|
+
|
523
|
+
private _createBuildInfo(
|
524
|
+
id: string,
|
525
|
+
solcVersion: string,
|
526
|
+
solcLongVersion: string,
|
527
|
+
input: CompilerInput,
|
528
|
+
output: CompilerOutput
|
529
|
+
): BuildInfo {
|
530
|
+
return {
|
531
|
+
id,
|
532
|
+
_format: BUILD_INFO_FORMAT_VERSION,
|
533
|
+
solcVersion,
|
534
|
+
solcLongVersion,
|
535
|
+
input,
|
536
|
+
output,
|
537
|
+
};
|
538
|
+
}
|
539
|
+
|
540
|
+
private _createDebugFile(artifactPath: string, pathToBuildInfo: string) {
|
541
|
+
const relativePathToBuildInfo = path.relative(
|
542
|
+
path.dirname(artifactPath),
|
543
|
+
pathToBuildInfo
|
544
|
+
);
|
545
|
+
|
546
|
+
const debugFile: DebugFile = {
|
547
|
+
_format: DEBUG_FILE_FORMAT_VERSION,
|
548
|
+
buildInfo: relativePathToBuildInfo,
|
549
|
+
};
|
550
|
+
|
551
|
+
return debugFile;
|
552
|
+
}
|
553
|
+
|
554
|
+
private _getArtifactPathsSync(): string[] {
|
555
|
+
const cached = this._cache?.artifactPaths;
|
556
|
+
if (cached !== undefined) {
|
557
|
+
return cached;
|
558
|
+
}
|
559
|
+
|
560
|
+
const paths = getAllFilesMatchingSync(this._artifactsPath, (f) =>
|
561
|
+
this._isArtifactPath(f)
|
562
|
+
);
|
563
|
+
|
564
|
+
const result = paths.sort();
|
565
|
+
|
566
|
+
if (this._cache !== undefined) {
|
567
|
+
this._cache.artifactPaths = result;
|
568
|
+
}
|
569
|
+
|
570
|
+
return result;
|
571
|
+
}
|
572
|
+
|
573
|
+
/**
|
574
|
+
* Sync version of _getArtifactPath
|
575
|
+
*/
|
576
|
+
private _getArtifactPathSync(name: string): string {
|
577
|
+
const cached = this._cache?.artifactNameToArtifactPathCache.get(name);
|
578
|
+
if (cached !== undefined) {
|
579
|
+
return cached;
|
580
|
+
}
|
581
|
+
|
582
|
+
let result: string;
|
583
|
+
|
584
|
+
if (isFullyQualifiedName(name)) {
|
585
|
+
result = this._getValidArtifactPathFromFullyQualifiedNameSync(name);
|
586
|
+
} else {
|
587
|
+
const files = this._getArtifactPathsSync();
|
588
|
+
result = this._getArtifactPathFromFiles(name, files);
|
589
|
+
}
|
590
|
+
|
591
|
+
this._cache?.artifactNameToArtifactPathCache.set(name, result);
|
592
|
+
return result;
|
593
|
+
}
|
594
|
+
|
595
|
+
/**
|
596
|
+
* DO NOT DELETE OR CHANGE
|
597
|
+
*
|
598
|
+
* use this.formArtifactPathFromFullyQualifiedName instead
|
599
|
+
* @deprecated until typechain migrates to public version
|
600
|
+
* @see https://github.com/dethcrypto/TypeChain/issues/544
|
601
|
+
*/
|
602
|
+
private _getArtifactPathFromFullyQualifiedName(
|
603
|
+
fullyQualifiedName: string
|
604
|
+
): string {
|
605
|
+
const { sourceName, contractName } =
|
606
|
+
parseFullyQualifiedName(fullyQualifiedName);
|
607
|
+
|
608
|
+
return path.join(this._artifactsPath, sourceName, `${contractName}.json`);
|
609
|
+
}
|
610
|
+
|
611
|
+
/**
|
612
|
+
* Returns the absolute path to the artifact that corresponds to the given
|
613
|
+
* fully qualified name.
|
614
|
+
* @param fullyQualifiedName The fully qualified name of the contract.
|
615
|
+
* @returns The absolute path to the artifact.
|
616
|
+
* @throws {HardhatError} with descriptor:
|
617
|
+
* - {@link ERRORS.CONTRACT_NAMES.INVALID_FULLY_QUALIFIED_NAME} If the name is not fully qualified.
|
618
|
+
* - {@link ERRORS.ARTIFACTS.WRONG_CASING} If the path case doesn't match the one in the filesystem.
|
619
|
+
* - {@link ERRORS.ARTIFACTS.NOT_FOUND} If the artifact is not found.
|
620
|
+
*/
|
621
|
+
private async _getValidArtifactPathFromFullyQualifiedName(
|
622
|
+
fullyQualifiedName: string
|
623
|
+
): Promise<string> {
|
624
|
+
const artifactPath =
|
625
|
+
this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
|
626
|
+
|
627
|
+
try {
|
628
|
+
const trueCasePath = path.join(
|
629
|
+
this._artifactsPath,
|
630
|
+
await getFileTrueCase(
|
631
|
+
this._artifactsPath,
|
632
|
+
path.relative(this._artifactsPath, artifactPath)
|
633
|
+
)
|
634
|
+
);
|
635
|
+
|
636
|
+
if (artifactPath !== trueCasePath) {
|
637
|
+
throw new HardhatError(ERRORS.ARTIFACTS.WRONG_CASING, {
|
638
|
+
correct: this._getFullyQualifiedNameFromPath(trueCasePath),
|
639
|
+
incorrect: fullyQualifiedName,
|
640
|
+
});
|
641
|
+
}
|
642
|
+
|
643
|
+
return trueCasePath;
|
644
|
+
} catch (e) {
|
645
|
+
if (e instanceof FileNotFoundError) {
|
646
|
+
return this._handleWrongArtifactForFullyQualifiedName(
|
647
|
+
fullyQualifiedName
|
648
|
+
);
|
649
|
+
}
|
650
|
+
|
651
|
+
// eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
|
652
|
+
throw e;
|
653
|
+
}
|
654
|
+
}
|
655
|
+
|
656
|
+
private _getAllContractNamesFromFiles(files: string[]): string[] {
|
657
|
+
return files.map((file) => {
|
658
|
+
const fqn = this._getFullyQualifiedNameFromPath(file);
|
659
|
+
return parseFullyQualifiedName(fqn).contractName;
|
660
|
+
});
|
661
|
+
}
|
662
|
+
|
663
|
+
private _getAllFullyQualifiedNamesSync(): string[] {
|
664
|
+
const paths = this._getArtifactPathsSync();
|
665
|
+
return paths.map((p) => this._getFullyQualifiedNameFromPath(p)).sort();
|
666
|
+
}
|
667
|
+
|
668
|
+
private _formatSuggestions(names: string[], contractName: string): string {
|
669
|
+
switch (names.length) {
|
670
|
+
case 0:
|
671
|
+
return "";
|
672
|
+
case 1:
|
673
|
+
return `Did you mean "${names[0]}"?`;
|
674
|
+
default:
|
675
|
+
return `We found some that were similar:
|
676
|
+
|
677
|
+
${names.map((n) => ` * ${n}`).join(os.EOL)}
|
678
|
+
|
679
|
+
Please replace "${contractName}" for the correct contract name wherever you are trying to read its artifact.
|
680
|
+
`;
|
681
|
+
}
|
682
|
+
}
|
683
|
+
|
684
|
+
/**
|
685
|
+
* @throws {HardhatError} with a list of similar contract names.
|
686
|
+
*/
|
687
|
+
private _handleWrongArtifactForFullyQualifiedName(
|
688
|
+
fullyQualifiedName: string
|
689
|
+
): never {
|
690
|
+
const names = this._getAllFullyQualifiedNamesSync();
|
691
|
+
|
692
|
+
const similarNames = this._getSimilarContractNames(
|
693
|
+
fullyQualifiedName,
|
694
|
+
names
|
695
|
+
);
|
696
|
+
|
697
|
+
throw new HardhatError(ERRORS.ARTIFACTS.NOT_FOUND, {
|
698
|
+
contractName: fullyQualifiedName,
|
699
|
+
suggestion: this._formatSuggestions(similarNames, fullyQualifiedName),
|
700
|
+
});
|
701
|
+
}
|
702
|
+
|
703
|
+
/**
|
704
|
+
* @throws {HardhatError} with a list of similar contract names.
|
705
|
+
*/
|
706
|
+
private _handleWrongArtifactForContractName(
|
707
|
+
contractName: string,
|
708
|
+
files: string[]
|
709
|
+
): never {
|
710
|
+
const names = this._getAllContractNamesFromFiles(files);
|
711
|
+
|
712
|
+
let similarNames = this._getSimilarContractNames(contractName, names);
|
713
|
+
|
714
|
+
if (similarNames.length > 1) {
|
715
|
+
similarNames = this._filterDuplicatesAsFullyQualifiedNames(
|
716
|
+
files,
|
717
|
+
similarNames
|
718
|
+
);
|
719
|
+
}
|
720
|
+
|
721
|
+
throw new HardhatError(ERRORS.ARTIFACTS.NOT_FOUND, {
|
722
|
+
contractName,
|
723
|
+
suggestion: this._formatSuggestions(similarNames, contractName),
|
724
|
+
});
|
725
|
+
}
|
726
|
+
|
727
|
+
/**
|
728
|
+
* If the project has these contracts:
|
729
|
+
* - 'contracts/Greeter.sol:Greeter'
|
730
|
+
* - 'contracts/Meeter.sol:Greeter'
|
731
|
+
* - 'contracts/Greater.sol:Greater'
|
732
|
+
* And the user tries to get an artifact with the name 'Greter', then
|
733
|
+
* the suggestions will be 'Greeter', 'Greeter', and 'Greater'.
|
734
|
+
*
|
735
|
+
* We don't want to show duplicates here, so we use FQNs for those. The
|
736
|
+
* suggestions will then be:
|
737
|
+
* - 'contracts/Greeter.sol:Greeter'
|
738
|
+
* - 'contracts/Meeter.sol:Greeter'
|
739
|
+
* - 'Greater'
|
740
|
+
*/
|
741
|
+
private _filterDuplicatesAsFullyQualifiedNames(
|
742
|
+
files: string[],
|
743
|
+
similarNames: string[]
|
744
|
+
): string[] {
|
745
|
+
const outputNames = [];
|
746
|
+
const groups = similarNames.reduce((obj, cur) => {
|
747
|
+
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
748
|
+
obj[cur] = obj[cur] ? obj[cur] + 1 : 1;
|
749
|
+
return obj;
|
750
|
+
}, {} as { [k: string]: number });
|
751
|
+
|
752
|
+
for (const [name, occurrences] of Object.entries(groups)) {
|
753
|
+
if (occurrences > 1) {
|
754
|
+
for (const file of files) {
|
755
|
+
if (path.basename(file) === `${name}.json`) {
|
756
|
+
outputNames.push(this._getFullyQualifiedNameFromPath(file));
|
757
|
+
}
|
758
|
+
}
|
759
|
+
continue;
|
760
|
+
}
|
761
|
+
|
762
|
+
outputNames.push(name);
|
763
|
+
}
|
764
|
+
|
765
|
+
return outputNames;
|
766
|
+
}
|
767
|
+
|
768
|
+
/**
|
769
|
+
*
|
770
|
+
* @param givenName can be FQN or contract name
|
771
|
+
* @param names MUST match type of givenName (i.e. array of FQN's if givenName is FQN)
|
772
|
+
* @returns
|
773
|
+
*/
|
774
|
+
private _getSimilarContractNames(
|
775
|
+
givenName: string,
|
776
|
+
names: string[]
|
777
|
+
): string[] {
|
778
|
+
let shortestDistance = EDIT_DISTANCE_THRESHOLD;
|
779
|
+
let mostSimilarNames: string[] = [];
|
780
|
+
for (const name of names) {
|
781
|
+
const distance = findDistance(givenName, name);
|
782
|
+
|
783
|
+
if (distance < shortestDistance) {
|
784
|
+
shortestDistance = distance;
|
785
|
+
mostSimilarNames = [name];
|
786
|
+
continue;
|
787
|
+
}
|
788
|
+
|
789
|
+
if (distance === shortestDistance) {
|
790
|
+
mostSimilarNames.push(name);
|
791
|
+
continue;
|
792
|
+
}
|
793
|
+
}
|
794
|
+
|
795
|
+
return mostSimilarNames;
|
796
|
+
}
|
797
|
+
|
798
|
+
private _getValidArtifactPathFromFullyQualifiedNameSync(
|
799
|
+
fullyQualifiedName: string
|
800
|
+
): string {
|
801
|
+
const artifactPath =
|
802
|
+
this.formArtifactPathFromFullyQualifiedName(fullyQualifiedName);
|
803
|
+
|
804
|
+
try {
|
805
|
+
const trueCasePath = path.join(
|
806
|
+
this._artifactsPath,
|
807
|
+
getFileTrueCaseSync(
|
808
|
+
this._artifactsPath,
|
809
|
+
path.relative(this._artifactsPath, artifactPath)
|
810
|
+
)
|
811
|
+
);
|
812
|
+
|
813
|
+
if (artifactPath !== trueCasePath) {
|
814
|
+
throw new HardhatError(ERRORS.ARTIFACTS.WRONG_CASING, {
|
815
|
+
correct: this._getFullyQualifiedNameFromPath(trueCasePath),
|
816
|
+
incorrect: fullyQualifiedName,
|
817
|
+
});
|
818
|
+
}
|
819
|
+
|
820
|
+
return trueCasePath;
|
821
|
+
} catch (e) {
|
822
|
+
if (e instanceof FileNotFoundError) {
|
823
|
+
return this._handleWrongArtifactForFullyQualifiedName(
|
824
|
+
fullyQualifiedName
|
825
|
+
);
|
826
|
+
}
|
827
|
+
|
828
|
+
// eslint-disable-next-line @nomicfoundation/hardhat-internal-rules/only-hardhat-error
|
829
|
+
throw e;
|
830
|
+
}
|
831
|
+
}
|
832
|
+
|
833
|
+
private _getDebugFilePath(artifactPath: string): string {
|
834
|
+
return artifactPath.replace(/\.json$/, ".dbg.json");
|
835
|
+
}
|
836
|
+
|
837
|
+
/**
|
838
|
+
* Gets the path to the artifact file for the given contract name.
|
839
|
+
* @throws {HardhatError} with descriptor:
|
840
|
+
* - {@link ERRORS.ARTIFACTS.NOT_FOUND} if there are no artifacts matching the given contract name.
|
841
|
+
* - {@link ERRORS.ARTIFACTS.MULTIPLE_FOUND} if there are multiple artifacts matching the given contract name.
|
842
|
+
*/
|
843
|
+
private _getArtifactPathFromFiles(
|
844
|
+
contractName: string,
|
845
|
+
files: string[]
|
846
|
+
): string {
|
847
|
+
const matchingFiles = files.filter((file) => {
|
848
|
+
return path.basename(file) === `${contractName}.json`;
|
849
|
+
});
|
850
|
+
|
851
|
+
if (matchingFiles.length === 0) {
|
852
|
+
return this._handleWrongArtifactForContractName(contractName, files);
|
853
|
+
}
|
854
|
+
|
855
|
+
if (matchingFiles.length > 1) {
|
856
|
+
const candidates = matchingFiles.map((file) =>
|
857
|
+
this._getFullyQualifiedNameFromPath(file)
|
858
|
+
);
|
859
|
+
|
860
|
+
throw new HardhatError(ERRORS.ARTIFACTS.MULTIPLE_FOUND, {
|
861
|
+
contractName,
|
862
|
+
candidates: candidates.join(os.EOL),
|
863
|
+
});
|
864
|
+
}
|
865
|
+
|
866
|
+
return matchingFiles[0];
|
867
|
+
}
|
868
|
+
|
869
|
+
/**
|
870
|
+
* Returns the FQN of a contract giving the absolute path to its artifact.
|
871
|
+
*
|
872
|
+
* For example, given a path like
|
873
|
+
* `/path/to/project/artifacts/contracts/Foo.sol/Bar.json`, it'll return the
|
874
|
+
* FQN `contracts/Foo.sol:Bar`
|
875
|
+
*/
|
876
|
+
private _getFullyQualifiedNameFromPath(absolutePath: string): string {
|
877
|
+
const sourceName = replaceBackslashes(
|
878
|
+
path.relative(this._artifactsPath, path.dirname(absolutePath))
|
879
|
+
);
|
880
|
+
|
881
|
+
const contractName = path.basename(absolutePath).replace(".json", "");
|
882
|
+
|
883
|
+
return getFullyQualifiedName(sourceName, contractName);
|
884
|
+
}
|
885
|
+
|
886
|
+
/**
|
887
|
+
* Remove the artifact file and its debug file.
|
888
|
+
*/
|
889
|
+
private async _removeArtifactFiles(artifactPath: string) {
|
890
|
+
await fsExtra.remove(artifactPath);
|
891
|
+
|
892
|
+
const debugFilePath = this._getDebugFilePath(artifactPath);
|
893
|
+
|
894
|
+
await fsExtra.remove(debugFilePath);
|
895
|
+
}
|
896
|
+
|
897
|
+
/**
|
898
|
+
* Given the path to a debug file, returns the absolute path to its
|
899
|
+
* corresponding build info file if it exists, or undefined otherwise.
|
900
|
+
*/
|
901
|
+
private async _getBuildInfoFromDebugFile(
|
902
|
+
debugFilePath: string
|
903
|
+
): Promise<string | undefined> {
|
904
|
+
if (await fsExtra.pathExists(debugFilePath)) {
|
905
|
+
const { buildInfo } = await fsExtra.readJson(debugFilePath);
|
906
|
+
return path.resolve(path.dirname(debugFilePath), buildInfo);
|
907
|
+
}
|
908
|
+
|
909
|
+
return undefined;
|
910
|
+
}
|
911
|
+
|
912
|
+
/**
|
913
|
+
* Sync version of _getBuildInfoFromDebugFile
|
914
|
+
*/
|
915
|
+
private _getBuildInfoFromDebugFileSync(
|
916
|
+
debugFilePath: string
|
917
|
+
): string | undefined {
|
918
|
+
if (fsExtra.pathExistsSync(debugFilePath)) {
|
919
|
+
const { buildInfo } = fsExtra.readJsonSync(debugFilePath);
|
920
|
+
return path.resolve(path.dirname(debugFilePath), buildInfo);
|
921
|
+
}
|
922
|
+
|
923
|
+
return undefined;
|
924
|
+
}
|
925
|
+
|
926
|
+
private _isArtifactPath(file: string) {
|
927
|
+
return (
|
928
|
+
file.endsWith(".json") &&
|
929
|
+
file !== path.join(this._artifactsPath, "package.json") &&
|
930
|
+
!file.startsWith(path.join(this._artifactsPath, BUILD_INFO_DIR_NAME)) &&
|
931
|
+
!file.endsWith(".dbg.json")
|
932
|
+
);
|
933
|
+
}
|
934
|
+
}
|
935
|
+
|
936
|
+
/**
|
937
|
+
* Retrieves an artifact for the given `contractName` from the compilation output.
|
938
|
+
*
|
939
|
+
* @param sourceName The contract's source name.
|
940
|
+
* @param contractName the contract's name.
|
941
|
+
* @param contractOutput the contract's compilation output as emitted by `solc`.
|
942
|
+
*/
|
943
|
+
export function getArtifactFromContractOutput(
|
944
|
+
sourceName: string,
|
945
|
+
contractName: string,
|
946
|
+
contractOutput: any
|
947
|
+
): Artifact {
|
948
|
+
const evmBytecode = contractOutput.evm?.bytecode;
|
949
|
+
let bytecode: string = evmBytecode?.object ?? "";
|
950
|
+
|
951
|
+
if (bytecode.slice(0, 2).toLowerCase() !== "0x") {
|
952
|
+
bytecode = `0x${bytecode}`;
|
953
|
+
}
|
954
|
+
|
955
|
+
const evmDeployedBytecode = contractOutput.evm?.deployedBytecode;
|
956
|
+
let deployedBytecode: string = evmDeployedBytecode?.object ?? "";
|
957
|
+
|
958
|
+
if (deployedBytecode.slice(0, 2).toLowerCase() !== "0x") {
|
959
|
+
deployedBytecode = `0x${deployedBytecode}`;
|
960
|
+
}
|
961
|
+
|
962
|
+
const linkReferences = evmBytecode?.linkReferences ?? {};
|
963
|
+
const deployedLinkReferences = evmDeployedBytecode?.linkReferences ?? {};
|
964
|
+
|
965
|
+
return {
|
966
|
+
_format: ARTIFACT_FORMAT_VERSION,
|
967
|
+
contractName,
|
968
|
+
sourceName,
|
969
|
+
abi: contractOutput.abi,
|
970
|
+
bytecode,
|
971
|
+
deployedBytecode,
|
972
|
+
linkReferences,
|
973
|
+
deployedLinkReferences,
|
974
|
+
};
|
975
|
+
}
|