hardhat 3.0.6 → 3.0.7

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.
Files changed (114) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.d.ts.map +1 -1
  3. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js +1 -2
  4. package/dist/src/internal/builtin-plugins/coverage/hook-handlers/solidity.js.map +1 -1
  5. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts +1 -0
  6. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts.map +1 -1
  7. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +9 -2
  8. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
  9. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.d.ts.map +1 -1
  10. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js +13 -5
  11. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/hre.js.map +1 -1
  12. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js +1 -1
  13. package/dist/src/internal/builtin-plugins/network-manager/hook-handlers/network.js.map +1 -1
  14. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts +4 -3
  15. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
  16. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +79 -37
  17. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
  18. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js +2 -2
  19. package/dist/src/internal/builtin-plugins/network-manager/type-validation.js.map +1 -1
  20. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.d.ts +25 -0
  21. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.d.ts.map +1 -0
  22. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js +56 -0
  23. package/dist/src/internal/builtin-plugins/node/artifacts/build-info-watcher.js.map +1 -0
  24. package/dist/src/internal/builtin-plugins/node/helpers.d.ts +12 -0
  25. package/dist/src/internal/builtin-plugins/node/helpers.d.ts.map +1 -1
  26. package/dist/src/internal/builtin-plugins/node/helpers.js +32 -0
  27. package/dist/src/internal/builtin-plugins/node/helpers.js.map +1 -1
  28. package/dist/src/internal/builtin-plugins/node/json-rpc/server.d.ts +3 -10
  29. package/dist/src/internal/builtin-plugins/node/json-rpc/server.d.ts.map +1 -1
  30. package/dist/src/internal/builtin-plugins/node/json-rpc/server.js +1 -1
  31. package/dist/src/internal/builtin-plugins/node/json-rpc/server.js.map +1 -1
  32. package/dist/src/internal/builtin-plugins/node/task-action.d.ts.map +1 -1
  33. package/dist/src/internal/builtin-plugins/node/task-action.js +14 -4
  34. package/dist/src/internal/builtin-plugins/node/task-action.js.map +1 -1
  35. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts +13 -5
  36. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.d.ts.map +1 -1
  37. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js +126 -58
  38. package/dist/src/internal/builtin-plugins/solidity/build-system/build-system.js.map +1 -1
  39. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts +1 -1
  40. package/dist/src/internal/builtin-plugins/solidity/build-system/cache.d.ts.map +1 -1
  41. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.d.ts.map +1 -1
  42. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.js +14 -6
  43. package/dist/src/internal/builtin-plugins/solidity/hook-handlers/hre.js.map +1 -1
  44. package/dist/src/internal/builtin-plugins/solidity/index.d.ts.map +1 -1
  45. package/dist/src/internal/builtin-plugins/solidity/index.js +8 -0
  46. package/dist/src/internal/builtin-plugins/solidity/index.js.map +1 -1
  47. package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts +4 -2
  48. package/dist/src/internal/builtin-plugins/solidity/tasks/build.d.ts.map +1 -1
  49. package/dist/src/internal/builtin-plugins/solidity/tasks/build.js +37 -10
  50. package/dist/src/internal/builtin-plugins/solidity/tasks/build.js.map +1 -1
  51. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts +4 -2
  52. package/dist/src/internal/builtin-plugins/solidity-test/config.d.ts.map +1 -1
  53. package/dist/src/internal/builtin-plugins/solidity-test/config.js +24 -4
  54. package/dist/src/internal/builtin-plugins/solidity-test/config.js.map +1 -1
  55. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +1 -1
  56. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
  57. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +12 -3
  58. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
  59. package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/config.d.ts.map +1 -1
  60. package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/config.js +1 -1
  61. package/dist/src/internal/builtin-plugins/solidity-test/hook-handlers/config.js.map +1 -1
  62. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
  63. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +16 -39
  64. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
  65. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts +17 -7
  66. package/dist/src/internal/builtin-plugins/solidity-test/type-extensions.d.ts.map +1 -1
  67. package/dist/src/internal/core/hre.d.ts +29 -1
  68. package/dist/src/internal/core/hre.d.ts.map +1 -1
  69. package/dist/src/internal/core/hre.js +57 -20
  70. package/dist/src/internal/core/hre.js.map +1 -1
  71. package/dist/src/internal/core/plugins/resolve-plugin-list.js +40 -3
  72. package/dist/src/internal/core/plugins/resolve-plugin-list.js.map +1 -1
  73. package/dist/src/internal/utils/package.d.ts +1 -0
  74. package/dist/src/internal/utils/package.d.ts.map +1 -1
  75. package/dist/src/internal/utils/package.js +17 -1
  76. package/dist/src/internal/utils/package.js.map +1 -1
  77. package/dist/src/types/hre.d.ts +4 -0
  78. package/dist/src/types/hre.d.ts.map +1 -1
  79. package/dist/src/types/network.d.ts +40 -0
  80. package/dist/src/types/network.d.ts.map +1 -1
  81. package/dist/src/types/plugins.d.ts +8 -0
  82. package/dist/src/types/plugins.d.ts.map +1 -1
  83. package/dist/src/types/solidity/build-system.d.ts +23 -8
  84. package/dist/src/types/solidity/build-system.d.ts.map +1 -1
  85. package/package.json +4 -3
  86. package/src/internal/builtin-plugins/coverage/hook-handlers/solidity.ts +2 -3
  87. package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +20 -1
  88. package/src/internal/builtin-plugins/network-manager/hook-handlers/hre.ts +36 -18
  89. package/src/internal/builtin-plugins/network-manager/hook-handlers/network.ts +1 -1
  90. package/src/internal/builtin-plugins/network-manager/network-manager.ts +137 -60
  91. package/src/internal/builtin-plugins/network-manager/type-validation.ts +2 -2
  92. package/src/internal/builtin-plugins/node/artifacts/build-info-watcher.ts +82 -0
  93. package/src/internal/builtin-plugins/node/helpers.ts +64 -0
  94. package/src/internal/builtin-plugins/node/json-rpc/server.ts +3 -10
  95. package/src/internal/builtin-plugins/node/task-action.ts +31 -5
  96. package/src/internal/builtin-plugins/solidity/build-system/build-system.ts +203 -98
  97. package/src/internal/builtin-plugins/solidity/build-system/cache.ts +1 -1
  98. package/src/internal/builtin-plugins/solidity/hook-handlers/hre.ts +22 -5
  99. package/src/internal/builtin-plugins/solidity/index.ts +8 -0
  100. package/src/internal/builtin-plugins/solidity/tasks/build.ts +59 -16
  101. package/src/internal/builtin-plugins/solidity-test/config.ts +46 -3
  102. package/src/internal/builtin-plugins/solidity-test/helpers.ts +17 -4
  103. package/src/internal/builtin-plugins/solidity-test/hook-handlers/config.ts +5 -1
  104. package/src/internal/builtin-plugins/solidity-test/task-action.ts +21 -48
  105. package/src/internal/builtin-plugins/solidity-test/type-extensions.ts +23 -9
  106. package/src/internal/core/hre.ts +102 -32
  107. package/src/internal/core/plugins/resolve-plugin-list.ts +57 -3
  108. package/src/internal/utils/package.ts +31 -1
  109. package/src/types/hre.ts +4 -0
  110. package/src/types/network.ts +45 -0
  111. package/src/types/plugins.ts +5 -0
  112. package/src/types/solidity/build-system.ts +23 -7
  113. package/templates/hardhat-3/01-node-test-runner-viem/package.json +3 -3
  114. package/templates/hardhat-3/02-mocha-ethers/package.json +4 -4
@@ -1,6 +1,7 @@
1
1
  import { HardhatError } from "@nomicfoundation/hardhat-errors";
2
2
  import { findClosestPackageRoot } from "@nomicfoundation/hardhat-utils/package";
3
3
  import { resolveFromRoot } from "@nomicfoundation/hardhat-utils/path";
4
+ import { getEdrVersion, getHardhatVersion } from "../utils/package.js";
4
5
  import { validateUserConfig } from "./config-validation.js";
5
6
  import { resolveConfigurationVariable } from "./configuration-variables.js";
6
7
  import { buildGlobalOptionDefinitions, resolveGlobalOptions, } from "./global-options.js";
@@ -14,6 +15,7 @@ export class HardhatRuntimeEnvironmentImplementation {
14
15
  hooks;
15
16
  interruptions;
16
17
  globalOptions;
18
+ versions;
17
19
  // NOTE: This is a small architectural violation, as these shouldn't be needed
18
20
  // here, because they are added by plugins. But as those plugins are builtin,
19
21
  // their type extensions also affect this module.
@@ -27,37 +29,31 @@ export class HardhatRuntimeEnvironmentImplementation {
27
29
  const resolvedProjectRoot = await resolveProjectRoot(projectRoot);
28
30
  const resolvedPlugins = unsafeOptions?.resolvedPlugins ??
29
31
  (await resolvePluginList(resolvedProjectRoot, inputUserConfig.plugins));
32
+ const [hardhatVersion, edrVersion] = await Promise.all([
33
+ getHardhatVersion(),
34
+ getEdrVersion(),
35
+ ]);
36
+ const versions = {
37
+ hardhat: hardhatVersion,
38
+ edr: edrVersion,
39
+ };
30
40
  const hooks = new HookManagerImplementation(resolvedProjectRoot, resolvedPlugins);
31
- // extend user config:
32
- const extendedUserConfig = await runUserConfigExtensions(hooks, inputUserConfig);
33
- // validate config
34
- const userConfigValidationErrors = await validateUserConfig(hooks, extendedUserConfig);
35
- if (userConfigValidationErrors.length > 0) {
41
+ const configResolutionResult = await resolveUserConfigToHardhatConfig(inputUserConfig, hooks, resolvedProjectRoot, userProvidedGlobalOptions.config, resolvedPlugins);
42
+ if (!configResolutionResult.success) {
36
43
  throw new HardhatError(HardhatError.ERRORS.CORE.GENERAL.INVALID_CONFIG, {
37
- errors: `\t${userConfigValidationErrors
44
+ errors: `\t${configResolutionResult.userConfigValidationErrors
38
45
  .map((error) => `* Config error in config.${error.path.join(".")}: ${error.message}`)
39
46
  .join("\n\t")}`,
40
47
  });
41
48
  }
42
- // Resolve config
43
- const resolvedConfig = await resolveUserConfig(resolvedProjectRoot, userProvidedGlobalOptions.config, hooks, resolvedPlugins, extendedUserConfig);
44
- // We override the plugins and the project root, as we want to prevent
45
- // the plugins from changing them
46
- const config = {
47
- ...resolvedConfig,
48
- paths: {
49
- ...resolvedConfig.paths,
50
- root: resolvedProjectRoot,
51
- },
52
- plugins: resolvedPlugins,
53
- };
49
+ const { config, extendedUserConfig } = configResolutionResult;
54
50
  const globalOptionDefinitions = unsafeOptions?.globalOptionDefinitions ??
55
51
  buildGlobalOptionDefinitions(resolvedPlugins);
56
52
  const globalOptions = resolveGlobalOptions(userProvidedGlobalOptions, globalOptionDefinitions);
57
53
  // Set the HookContext in the hook manager so that non-config hooks can
58
54
  // use it
59
55
  const interruptions = new UserInterruptionManagerImplementation(hooks);
60
- const hre = new HardhatRuntimeEnvironmentImplementation(extendedUserConfig, config, hooks, interruptions, globalOptions, globalOptionDefinitions);
56
+ const hre = new HardhatRuntimeEnvironmentImplementation(extendedUserConfig, config, hooks, interruptions, globalOptions, versions, globalOptionDefinitions);
61
57
  // We create an object with the HRE as its prototype, and overwrite the
62
58
  // tasks property with undefined, so that hooks don't have access to the
63
59
  // task runner.
@@ -73,12 +69,13 @@ export class HardhatRuntimeEnvironmentImplementation {
73
69
  return hre;
74
70
  }
75
71
  tasks;
76
- constructor(userConfig, config, hooks, interruptions, globalOptions, globalOptionDefinitions) {
72
+ constructor(userConfig, config, hooks, interruptions, globalOptions, versions, globalOptionDefinitions) {
77
73
  this.userConfig = userConfig;
78
74
  this.config = config;
79
75
  this.hooks = hooks;
80
76
  this.interruptions = interruptions;
81
77
  this.globalOptions = globalOptions;
78
+ this.versions = versions;
82
79
  this.tasks = new TaskManagerImplementation(this, globalOptionDefinitions);
83
80
  }
84
81
  }
@@ -93,6 +90,46 @@ export class HardhatRuntimeEnvironmentImplementation {
93
90
  export async function resolveProjectRoot(absolutePathWithinProject) {
94
91
  return findClosestPackageRoot(absolutePathWithinProject ?? process.cwd());
95
92
  }
93
+ /**
94
+ * Runs the provided Hardhat user config through the resolution process,
95
+ * invoking relevant plugin hooks (both internal and external) to extend
96
+ * and transform the config into a full HardhatConfig.
97
+ *
98
+ * @param hooks - The HookManager used to run config extension and validation
99
+ * hooks.
100
+ * @param inputUserConfig - The initial user provided Hardhat config object.
101
+ * @param resolvedProjectRoot - The project root path.
102
+ * @param userProvidedConfigPath - The user provided Hardhat config file path.
103
+ * @param resolvedPlugins - The list of plugins, we do not want the plugins
104
+ * overwriting them so we re-add them to the final HardhatConfig.
105
+ * @returns Either an object containing the resolved HardhatConfig and the
106
+ * extended version of the user config, or a list of validation errors.
107
+ */
108
+ export async function resolveUserConfigToHardhatConfig(inputUserConfig, hooks, resolvedProjectRoot, userProvidedConfigPath, resolvedPlugins) {
109
+ // extend user config:
110
+ const extendedUserConfig = await runUserConfigExtensions(hooks, inputUserConfig);
111
+ // validate config
112
+ const userConfigValidationErrors = await validateUserConfig(hooks, extendedUserConfig);
113
+ if (userConfigValidationErrors.length > 0) {
114
+ return {
115
+ success: false,
116
+ userConfigValidationErrors,
117
+ };
118
+ }
119
+ // Resolve config
120
+ const resolvedConfig = await resolveUserConfig(resolvedProjectRoot, userProvidedConfigPath, hooks, resolvedPlugins, extendedUserConfig);
121
+ // We override the plugins and the project root, as we want to prevent
122
+ // the plugins from changing them
123
+ const config = {
124
+ ...resolvedConfig,
125
+ paths: {
126
+ ...resolvedConfig.paths,
127
+ root: resolvedProjectRoot,
128
+ },
129
+ plugins: resolvedPlugins,
130
+ };
131
+ return { success: true, config, extendedUserConfig };
132
+ }
96
133
  async function runUserConfigExtensions(hooks, config) {
97
134
  return hooks.runHandlerChain("config", "extendUserConfig", [config], async (c) => {
98
135
  return c;
@@ -1 +1 @@
1
- {"version":3,"file":"hre.js","sourceRoot":"","sources":["../../../../src/internal/core/hre.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hre.js","sourceRoot":"","sources":["../../../../src/internal/core/hre.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,qCAAqC,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,OAAO,uCAAuC;IAyGhC;IACA;IACA;IACA;IACA;IACA;IA3GlB,8EAA8E;IAC9E,6EAA6E;IAC7E,iDAAiD;IAC1C,OAAO,CAAkB;IACzB,SAAS,CAAmB;IAC5B,QAAQ,CAAuB;IAEtC,4EAA4E;IAC5E,gFAAgF;IACzE,SAAS,CAAmB;IAE5B,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,eAAkC,EAClC,yBAAiD,EACjD,WAAoB,EACpB,aAAsD;QAEtD,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAElE,MAAM,eAAe,GACnB,aAAa,EAAE,eAAe;YAC9B,CAAC,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAE1E,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrD,iBAAiB,EAAE;YACnB,aAAa,EAAE;SAChB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,cAAc;YACvB,GAAG,EAAE,UAAU;SAChB,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,yBAAyB,CACzC,mBAAmB,EACnB,eAAe,CAChB,CAAC;QAEF,MAAM,sBAAsB,GAAG,MAAM,gCAAgC,CACnE,eAAe,EACf,KAAK,EACL,mBAAmB,EACnB,yBAAyB,CAAC,MAAM,EAChC,eAAe,CAChB,CAAC;QAEF,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;gBACtE,MAAM,EAAE,KAAK,sBAAsB,CAAC,0BAA0B;qBAC3D,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CACvE;qBACA,IAAI,CAAC,MAAM,CAAC,EAAE;aAClB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,sBAAsB,CAAC;QAE9D,MAAM,uBAAuB,GAC3B,aAAa,EAAE,uBAAuB;YACtC,4BAA4B,CAAC,eAAe,CAAC,CAAC;QAEhD,MAAM,aAAa,GAAG,oBAAoB,CACxC,yBAAyB,EACzB,uBAAuB,CACxB,CAAC;QAEF,uEAAuE;QACvE,SAAS;QACT,MAAM,aAAa,GAAG,IAAI,qCAAqC,CAAC,KAAK,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,IAAI,uCAAuC,CACrD,kBAAkB,EAClB,MAAM,EACN,KAAK,EACL,aAAa,EACb,aAAa,EACb,QAAQ,EACR,uBAAuB,CACxB,CAAC;QAEF,uEAAuE;QACvE,wEAAwE;QACxE,eAAe;QACf,EAAE;QACF,2EAA2E;QAC3E,wEAAwE;QACxE,8DAA8D;QAC9D,MAAM,WAAW,GAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YAClD,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;SAC5B,CAAC,CAAC;QAEH,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAE9B,MAAM,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,OAAO,GAAG,CAAC;IACb,CAAC;IAEe,KAAK,CAAc;IAEnC,YACkB,UAA6B,EAC7B,MAAqB,EACrB,KAAkB,EAClB,aAAsC,EACtC,aAA4B,EAC5B,QAGf,EACD,uBAAgD;QAThC,eAAU,GAAV,UAAU,CAAmB;QAC7B,WAAM,GAAN,MAAM,CAAe;QACrB,UAAK,GAAL,KAAK,CAAa;QAClB,kBAAa,GAAb,aAAa,CAAyB;QACtC,kBAAa,GAAb,aAAa,CAAe;QAC5B,aAAQ,GAAR,QAAQ,CAGvB;QAGD,IAAI,CAAC,KAAK,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;IAC5E,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,yBAA6C;IAE7C,OAAO,sBAAsB,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,eAAkC,EAClC,KAAkB,EAClB,mBAA2B,EAC3B,sBAA0C,EAC1C,eAAgC;IAYhC,sBAAsB;IACtB,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CACtD,KAAK,EACL,eAAe,CAChB,CAAC;IAEF,kBAAkB;IAClB,MAAM,0BAA0B,GAAG,MAAM,kBAAkB,CACzD,KAAK,EACL,kBAAkB,CACnB,CAAC;IAEF,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,0BAA0B;SAC3B,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAC5C,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,EACL,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,sEAAsE;IACtE,iCAAiC;IACjC,MAAM,MAAM,GAAkB;QAC5B,GAAG,cAAc;QACjB,KAAK,EAAE;YACL,GAAG,cAAc,CAAC,KAAK;YACvB,IAAI,EAAE,mBAAmB;SAC1B;QACD,OAAO,EAAE,eAAe;KACzB,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,KAAkB,EAClB,MAAyB;IAEzB,OAAO,KAAK,CAAC,eAAe,CAC1B,QAAQ,EACR,kBAAkB,EAClB,CAAC,MAAM,CAAC,EACR,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,OAAO,CAAC,CAAC;IACX,CAAC,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,WAAmB,EACnB,UAA8B,EAC9B,KAAkB,EAClB,aAA8B,EAC9B,MAAyB;IAEzB;;;;+DAI2D;IAC3D,MAAM,qBAAqB,GAAG;QAC5B,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;QACzB,KAAK,EAAE,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC;KAC1C,CAAC;IAEnB,OAAO,KAAK,CAAC,eAAe,CAC1B,QAAQ,EACR,mBAAmB,EACnB,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EACrE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;QACd,OAAO,qBAAqB,CAAC;IAC/B,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,WAAmB,EACnB,UAA8B,EAC9B,oBAA4C,EAAE;IAE9C,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,MAAM,EACJ,UAAU,KAAK,SAAS;YACtB,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC;YAC1C,CAAC,CAAC,SAAS;QACf,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,iBAAiB,CAAC,KAAK,IAAI,OAAO,CAAC;QACvE,SAAS,EAAE,eAAe,CACxB,WAAW,EACX,iBAAiB,CAAC,SAAS,IAAI,WAAW,CAC3C;QACD;;;8BAGsB;QACtB,KAAK,EAAE,EAAqB;QAC5B;oCAC4B;QAC5B,OAAO,EAAE,EAAuB;KACjC,CAAC;AACJ,CAAC"}
@@ -17,7 +17,7 @@ export async function resolvePluginList(projectRoot, userConfigPluginList = [])
17
17
  */
18
18
  async function reverseTopologicalSort(projectRoot, plugins) {
19
19
  const visitedPlugins = new Map();
20
- const result = [];
20
+ const resolvedPlugins = [];
21
21
  async function dfs(plugin) {
22
22
  const visited = visitedPlugins.get(plugin.id);
23
23
  if (visited !== undefined) {
@@ -43,11 +43,48 @@ async function reverseTopologicalSort(projectRoot, plugins) {
43
43
  await dfs(dependencyModule.default);
44
44
  }
45
45
  }
46
- result.push(plugin);
46
+ resolvedPlugins.push(plugin);
47
47
  }
48
48
  for (const plugin of plugins) {
49
49
  await dfs(plugin);
50
50
  }
51
- return result;
51
+ // Resolve conditional dependencies iteratively
52
+ let lastResolvedCount = -1;
53
+ while (resolvedPlugins.length !== lastResolvedCount) {
54
+ lastResolvedCount = resolvedPlugins.length;
55
+ for (const plugin of resolvedPlugins) {
56
+ if (plugin.conditionalDependencies === undefined) {
57
+ continue;
58
+ }
59
+ for (const conditionalDependency of plugin.conditionalDependencies) {
60
+ // Check all condition plugins are installed
61
+ let conditionModules;
62
+ try {
63
+ conditionModules = await Promise.all(conditionalDependency.condition());
64
+ }
65
+ catch (_error) {
66
+ continue;
67
+ }
68
+ // Check all condition plugins are loaded
69
+ if (conditionModules.some((conditionPlugin) => !resolvedPlugins.includes(conditionPlugin.default))) {
70
+ continue;
71
+ }
72
+ // Load the conditional dependency
73
+ let pluginModule;
74
+ try {
75
+ pluginModule = await conditionalDependency.plugin();
76
+ }
77
+ catch (error) {
78
+ ensureError(error);
79
+ await detectPluginNpmDependencyProblems(projectRoot, plugin);
80
+ throw new HardhatError(HardhatError.ERRORS.CORE.PLUGINS.PLUGIN_DEPENDENCY_FAILED_LOAD, {
81
+ pluginId: plugin.id,
82
+ }, error);
83
+ }
84
+ await dfs(pluginModule.default);
85
+ }
86
+ }
87
+ }
88
+ return resolvedPlugins;
52
89
  }
53
90
  //# sourceMappingURL=resolve-plugin-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-plugin-list.js","sourceRoot":"","sources":["../../../../../src/internal/core/plugins/resolve-plugin-list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAE/F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,uBAAwC,EAAE;IAE1C,OAAO,sBAAsB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,sBAAsB,CACnC,WAAmB,EACnB,OAAwB;IAExB,MAAM,cAAc,GAA+B,IAAI,GAAG,EAAE,CAAC;IAC7D,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,UAAU,GAAG,CAAC,MAAqB;QACtC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,IAAI,YAAY,CACpB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EACrD,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAClB,CAAC;YACJ,CAAC;YAED,OAAO;QACT,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,iBAAoD,CAAC;YAEzD,IAAI,CAAC;gBACH,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnB,MAAM,iCAAiC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAE7D,MAAM,IAAI,YAAY,CACpB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAC9D;oBACE,QAAQ,EAAE,MAAM,CAAC,EAAE;iBACpB,EACD,KAAK,CACN,CAAC;YACJ,CAAC;YAED,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;gBACjD,MAAM,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"resolve-plugin-list.js","sourceRoot":"","sources":["../../../../../src/internal/core/plugins/resolve-plugin-list.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export declare function getHardhatVersion(): Promise<string>;
2
+ export declare function getEdrVersion(): Promise<string>;
2
3
  export declare function getLatestHardhatVersion(): Promise<string>;
3
4
  //# sourceMappingURL=package.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/package.ts"],"names":[],"mappings":"AAOA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAYzD;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAwB/D"}
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/package.ts"],"names":[],"mappings":"AAcA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAYzD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAqBrD;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAwB/D"}
@@ -1,6 +1,8 @@
1
- import { readClosestPackageJson } from "@nomicfoundation/hardhat-utils/package";
1
+ import { readFile } from "node:fs/promises";
2
+ import { findClosestPackageRoot, findDependencyPackageJson, readClosestPackageJson, } from "@nomicfoundation/hardhat-utils/package";
2
3
  let cachedHardhatVersion;
3
4
  let cachedLatestHardhatVersion;
5
+ let cachedEdrVersion;
4
6
  export async function getHardhatVersion() {
5
7
  if (cachedHardhatVersion !== undefined) {
6
8
  return cachedHardhatVersion;
@@ -9,6 +11,20 @@ export async function getHardhatVersion() {
9
11
  cachedHardhatVersion = packageJson.version;
10
12
  return packageJson.version;
11
13
  }
14
+ export async function getEdrVersion() {
15
+ if (cachedEdrVersion !== undefined) {
16
+ return cachedEdrVersion;
17
+ }
18
+ const hardhatRoot = await findClosestPackageRoot(import.meta.url);
19
+ const edrPackageJsonPath = await findDependencyPackageJson(hardhatRoot, "@nomicfoundation/edr");
20
+ if (edrPackageJsonPath === undefined) {
21
+ return "";
22
+ }
23
+ const rawPackageJson = await readFile(edrPackageJsonPath, "utf-8");
24
+ const edrPackageJson = JSON.parse(rawPackageJson);
25
+ cachedEdrVersion = edrPackageJson.version;
26
+ return cachedEdrVersion;
27
+ }
12
28
  export async function getLatestHardhatVersion() {
13
29
  const { getRequest } = await import("@nomicfoundation/hardhat-utils/request");
14
30
  if (cachedLatestHardhatVersion !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/internal/utils/package.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,IAAI,oBAAwC,CAAC;AAC7C,IAAI,0BAA8C,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAgB,MAAM,sBAAsB,CAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;IAEF,oBAAoB,GAAG,WAAW,CAAC,OAAO,CAAC;IAE3C,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,wCAAwC,CAAC,CAAC;IAE9E,IAAI,0BAA0B,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,MAAM,WAAW,GAAgB,MAAM,sBAAsB,CAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;IAErC,MAAM,aAAa,GAAG,MAAM,UAAU,CACpC,8BAA8B,WAAW,SAAS,CACnD,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAClB;iFACyE;QACzE,OAAO,IAAI,CAAC,IAAI,EAA0B,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,0BAA0B,GAAG,aAAa,CAAC,OAAO,CAAC;IAEnD,OAAO,0BAA0B,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/internal/utils/package.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,wCAAwC,CAAC;AAEhD,IAAI,oBAAwC,CAAC;AAC7C,IAAI,0BAA8C,CAAC;AACnD,IAAI,gBAAoC,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAgB,MAAM,sBAAsB,CAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;IAEF,oBAAoB,GAAG,WAAW,CAAC,OAAO,CAAC;IAE3C,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElE,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,CACxD,WAAW,EACX,sBAAsB,CACvB,CAAC;IAEF,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,cAAc,GAAgB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC/D,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC;IAE1C,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,wCAAwC,CAAC,CAAC;IAE9E,IAAI,0BAA0B,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,MAAM,WAAW,GAAgB,MAAM,sBAAsB,CAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;IAErC,MAAM,aAAa,GAAG,MAAM,UAAU,CACpC,8BAA8B,WAAW,SAAS,CACnD,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAClB;iFACyE;QACzE,OAAO,IAAI,CAAC,IAAI,EAA0B,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,0BAA0B,GAAG,aAAa,CAAC,OAAO,CAAC;IAEnD,OAAO,0BAA0B,CAAC;AACpC,CAAC"}
@@ -10,5 +10,9 @@ export interface HardhatRuntimeEnvironment {
10
10
  readonly userConfig: HardhatUserConfig;
11
11
  readonly globalOptions: GlobalOptions;
12
12
  readonly interruptions: UserInterruptionManager;
13
+ readonly versions: {
14
+ readonly hardhat: string;
15
+ readonly edr: string;
16
+ };
13
17
  }
14
18
  //# sourceMappingURL=hre.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hre.d.ts","sourceRoot":"","sources":["../../../src/types/hre.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;CAKjD"}
1
+ {"version":3,"file":"hre.d.ts","sourceRoot":"","sources":["../../../src/types/hre.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE3E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC;CAKH"}
@@ -37,6 +37,16 @@ export interface NetworkConnectionParams<ChainTypeT extends ChainType | string =
37
37
  }
38
38
  export interface NetworkManager {
39
39
  connect<ChainTypeT extends ChainType | string = DefaultChainType>(networkOrParams?: NetworkConnectionParams<ChainTypeT> | string): Promise<NetworkConnection<ChainTypeT>>;
40
+ /**
41
+ * Spawns an Ethereum JSON-RPC server listening on HTTP and Websocket.
42
+ *
43
+ * @param networkOrParams The network name or connection parameters.
44
+ * @param hostname Hostname to bind the server to. Defaults to localhost or 0.0.0.0 on docker.
45
+ * @param port Port to listen on. Defaults to a random available port.
46
+ *
47
+ * @return A `JsonRpcServer` instance that can be started with {@link JsonRpcServer.listen}.
48
+ */
49
+ createServer(networkOrParams?: NetworkConnectionParams | string, hostname?: string, port?: number): Promise<JsonRpcServer>;
40
50
  }
41
51
  export interface NetworkConnection<ChainTypeT extends ChainType | string = DefaultChainType> {
42
52
  readonly id: number;
@@ -46,4 +56,34 @@ export interface NetworkConnection<ChainTypeT extends ChainType | string = Defau
46
56
  readonly provider: EthereumProvider;
47
57
  close(): Promise<void>;
48
58
  }
59
+ /**
60
+ * An Ethereum JSON-RPC server that accepts connections via HTTP and websocket.
61
+ */
62
+ export interface JsonRpcServer {
63
+ /**
64
+ * Starts the Ethereum JSON-RPC server.
65
+ *
66
+ * @returns returns the address and port the server is listening on.
67
+ */
68
+ listen(): Promise<{
69
+ address: string;
70
+ port: number;
71
+ }>;
72
+ /**
73
+ * Closes the Ethereum JSON-RPC server.
74
+ *
75
+ * @returns A promise that resolves once shutdown is finished.
76
+ */
77
+ close(): Promise<void>;
78
+ /**
79
+ * Resolves once the Ethereum JSON-RPC server has been
80
+ * closed, including its underlying HTTP and Websocket sockets.
81
+ *
82
+ * Useful for awaiting a shutdown that was initiated elsewhere.
83
+ *
84
+ * @returns A promise that resolves once the server and
85
+ * its sockets have been closed.
86
+ */
87
+ afterClosed(): Promise<void>;
88
+ }
49
89
  //# sourceMappingURL=network.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/types/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GAAG,eAAe,SAAS;IACrD,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAC3B,GACG,CAAC,SAAS,SAAS,GACjB,CAAC,GACD,gBAAgB,GAClB,gBAAgB,CAAC;AAIrB,MAAM,WAAW,eAAe;CAAG;AAEnC,MAAM,WAAW,uBAAuB,CACtC,UAAU,SAAS,SAAS,GAAG,MAAM,GAAG,gBAAgB;IAExD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,GAAG,gBAAgB,EAC9D,eAAe,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,GAAG,MAAM,GAC7D,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB,CAChC,UAAU,SAAS,SAAS,GAAG,MAAM,GAAG,gBAAgB;IAExD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/types/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GAAG,eAAe,SAAS;IACrD,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAC3B,GACG,CAAC,SAAS,SAAS,GACjB,CAAC,GACD,gBAAgB,GAClB,gBAAgB,CAAC;AAIrB,MAAM,WAAW,eAAe;CAAG;AAEnC,MAAM,WAAW,uBAAuB,CACtC,UAAU,SAAS,SAAS,GAAG,MAAM,GAAG,gBAAgB;IAExD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,GAAG,gBAAgB,EAC9D,eAAe,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,GAAG,MAAM,GAC7D,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1C;;;;;;;;OAQG;IACH,YAAY,CACV,eAAe,CAAC,EAAE,uBAAuB,GAAG,MAAM,EAClD,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB,CAChC,UAAU,SAAS,SAAS,GAAG,MAAM,GAAG,gBAAgB;IAExD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,MAAM,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAErD;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;;;;;OAQG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B"}
@@ -28,6 +28,14 @@ export interface HardhatPlugin {
28
28
  dependencies?: () => Array<Promise<{
29
29
  default: HardhatPlugin;
30
30
  }>>;
31
+ conditionalDependencies?: Array<{
32
+ condition: () => Array<Promise<{
33
+ default: HardhatPlugin;
34
+ }>>;
35
+ plugin: () => Promise<{
36
+ default: HardhatPlugin;
37
+ }>;
38
+ }>;
31
39
  /**
32
40
  * An object with the different hook handlers that this plugin defines.
33
41
  *
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/types/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,OAAO,sCAAsC,CAAC;AAK9C,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAiB,iBAAiB;QAChC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;KAC3B;IAED,UAAiB,aAAa;QAE5B,OAAO,EAAE,aAAa,EAAE,CAAC;KAC1B;CACF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC,CAAC;IAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAE5C;;OAEG;IACH,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEnC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG;KACxC,iBAAiB,IAAI,MAAM,YAAY,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC;QACxD,OAAO,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;KACxD,CAAC;CACH,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,CACpC,aAAa,SAAS,MAAM,YAAY,IACtC,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/types/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,OAAO,sCAAsC,CAAC;AAK9C,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAiB,iBAAiB;QAChC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;KAC3B;IAED,UAAiB,aAAa;QAE5B,OAAO,EAAE,aAAa,EAAE,CAAC;KAC1B;CACF;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC,CAAC;IAEhE,uBAAuB,CAAC,EAAE,KAAK,CAAC;QAC9B,SAAS,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,aAAa,CAAA;SAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,EAAE,MAAM,OAAO,CAAC;YAAE,OAAO,EAAE,aAAa,CAAA;SAAE,CAAC,CAAC;KACnD,CAAC,CAAC;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAE5C;;OAEG;IACH,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEnC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG;KACxC,iBAAiB,IAAI,MAAM,YAAY,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC;QACxD,OAAO,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;KACxD,CAAC;CACH,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,CACpC,aAAa,SAAS,MAAM,YAAY,IACtC,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC"}
@@ -32,17 +32,17 @@ export interface BuildOptions {
32
32
  * Default: The number of CPU cores - 1.
33
33
  */
34
34
  concurrency?: number;
35
- /**
36
- * An array of remappings provided by the user.
37
- */
38
- userProvidedRemappings?: string[];
39
35
  /**
40
36
  * If `true`, the build process doesn't print any output.
41
37
  */
42
38
  quiet?: boolean;
39
+ /**
40
+ * Whether to compile contracts or tests. Defaults to contracts
41
+ */
42
+ scope?: BuildScope;
43
43
  }
44
44
  /**
45
- * The options of the `getBuildInfos` method.
45
+ * The options of the `getCompilationJobs` method.
46
46
  *
47
47
  * Note that this option object includes a `quiet` property, as this process
48
48
  * may require downloading compilers, and potentially printing some output.
@@ -149,7 +149,13 @@ export interface SolidityBuildSystem {
149
149
  *
150
150
  * @returns An array of root file paths.
151
151
  */
152
- getRootFilePaths(): Promise<string[]>;
152
+ getRootFilePaths(options?: {
153
+ scope?: BuildScope;
154
+ }): Promise<string[]>;
155
+ /**
156
+ * Given the filesystem path for a source file, returns the build scope
157
+ */
158
+ getScope(fsPath: string): Promise<BuildScope>;
153
159
  /**
154
160
  * Builds the provided files, generating their compilation artifacts.
155
161
  *
@@ -204,7 +210,9 @@ export interface SolidityBuildSystem {
204
210
  * @returns A map from user source name to the absolute paths of the
205
211
  * artifacts that were emitted for it.
206
212
  */
207
- emitArtifacts(compilationJob: CompilationJob, compilerOutput: CompilerOutput): Promise<EmitArtifactsResult>;
213
+ emitArtifacts(compilationJob: CompilationJob, compilerOutput: CompilerOutput, options?: {
214
+ scope?: BuildScope;
215
+ }): Promise<EmitArtifactsResult>;
208
216
  /**
209
217
  * Analyzes the project and cleans up the artifacts by:
210
218
  * - Removing any existing artifact of non-existent contracts.
@@ -218,7 +226,9 @@ export interface SolidityBuildSystem {
218
226
 
219
227
  * @param rootFilePaths All the root files of the project.
220
228
  */
221
- cleanupArtifacts(rootFilePaths: string[]): Promise<void>;
229
+ cleanupArtifacts(rootFilePaths: string[], options?: {
230
+ scope?: BuildScope;
231
+ }): Promise<void>;
222
232
  /**
223
233
  * Compiles a build info, returning the output of the compilation, verbatim,
224
234
  * as `solc` returns it.
@@ -228,5 +238,10 @@ export interface SolidityBuildSystem {
228
238
  * @returns The output of the compilation.
229
239
  */
230
240
  compileBuildInfo(buildInfo: SolidityBuildInfo, options?: CompileBuildInfoOptions): Promise<CompilerOutput>;
241
+ /**
242
+ * Gets the artifacts directory for a given target (contracts/tests)
243
+ */
244
+ getArtifactsDirectory(scope: BuildScope): Promise<string>;
231
245
  }
246
+ export type BuildScope = "contracts" | "tests";
232
247
  //# sourceMappingURL=build-system.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-system.d.ts","sourceRoot":"","sources":["../../../../src/types/solidity/build-system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-system.d.ts","sourceRoot":"","sources":["../../../../src/types/solidity/build-system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2EAA2E,CAAC;AAE1G;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,YAAY,EACZ,uBAAuB,CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,YAAY,EACZ,OAAO,GAAG,cAAc,CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,oBAAY,iCAAiC;IAC3C,gCAAgC,qCAAqC;IACrE,oCAAoC,yCAAyC;IAC7E,oCAAoC,yCAAyC;IAC7E,2BAA2B,gCAAgC;CAC5D;AAED,MAAM,WAAW,+BAA+B;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uDACf,SAAQ,+BAA+B;IACvC,MAAM,EAAE,iCAAiC,CAAC,oCAAoC,CAAC;CAChF;AAED,MAAM,WAAW,4DACf,SAAQ,+BAA+B;IACvC,MAAM,EAAE,iCAAiC,CAAC,oCAAoC,CAAC;CAChF;AAED,MAAM,WAAW,4DACf,SAAQ,+BAA+B;IACvC,MAAM,EAAE,iCAAiC,CAAC,oCAAoC,CAAC;CAChF;AAED,MAAM,WAAW,kDACf,SAAQ,+BAA+B;IACvC,MAAM,EAAE,iCAAiC,CAAC,2BAA2B,CAAC;IAGtE,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,4BACf,SAAQ,+BAA+B;IACvC,MAAM,EAAE,iCAAiC,CAAC,gCAAgC,CAAC;CAC5E;AAED,MAAM,MAAM,2BAA2B,GACnC,uDAAuD,GACvD,kDAAkD,GAClD,4DAA4D,GAC5D,4BAA4B,CAAC;AAEjC;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAChC;AAED,MAAM,MAAM,eAAe,GACvB,uBAAuB,GACvB,yBAAyB,GACzB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,0BAA0B,EAAE,MAAM,EAAE,CAAC;IACrC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,mBAAmB,CAAC,aAAa,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,0BAA0B,EAAE,MAAM,EAAE,CAAC;IACrC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC,aAAa,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACpD,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,gBAAgB,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEtE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE9C;;;;;;;;OAQG;IACH,KAAK,CACH,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,2BAA2B,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAEvE;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAChB,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,2BAA2B,GAAG,wBAAwB,CAAC,CAAC;IAEnE;;;;;;;;;;;OAWG;IACH,iBAAiB,CACf,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEpC;;;;;;;OAOG;IACH,kBAAkB,CAChB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,mBAAmB,EAC1B,kBAAkB,CAAC,EAAE,OAAO,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;OAOG;IACH,aAAa,CACX,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;;;;;;OAYG;IACH,gBAAgB,CACd,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;OAOG;IACH,gBAAgB,CACd,SAAS,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,cAAc,CAAC,CAAC;IAE3B;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3D;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hardhat",
3
- "version": "3.0.6",
3
+ "version": "3.0.7",
4
4
  "description": "Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.",
5
5
  "homepage": "https://github.com/nomicfoundation/hardhat/tree/v-next/v-next/hardhat",
6
6
  "repository": {
@@ -70,14 +70,15 @@
70
70
  "@nomicfoundation/hardhat-test-utils": "^2.0.1"
71
71
  },
72
72
  "dependencies": {
73
- "@nomicfoundation/edr": "0.12.0-next.5",
73
+ "@nomicfoundation/edr": "0.12.0-next.7",
74
74
  "@nomicfoundation/hardhat-errors": "^3.0.2",
75
- "@nomicfoundation/hardhat-utils": "^3.0.2",
75
+ "@nomicfoundation/hardhat-utils": "^3.0.3",
76
76
  "@nomicfoundation/hardhat-zod-utils": "^3.0.1",
77
77
  "@nomicfoundation/solidity-analyzer": "^0.1.1",
78
78
  "@sentry/core": "^9.4.0",
79
79
  "adm-zip": "^0.4.16",
80
80
  "chalk": "^5.3.0",
81
+ "chokidar": "^4.0.3",
81
82
  "debug": "^4.3.2",
82
83
  "enquirer": "^2.3.0",
83
84
  "ethereum-cryptography": "^2.2.1",
@@ -30,9 +30,8 @@ export default async (): Promise<Partial<SolidityHooks>> => ({
30
30
  ) => {
31
31
  // NOTE: We do not want to instrument the test project files as we don't
32
32
  // want to report coverage for them.
33
- const isTestSource =
34
- fsPath.startsWith(context.config.paths.tests.solidity) ||
35
- fsPath.endsWith(".t.sol");
33
+
34
+ const isTestSource = (await context.solidity.getScope(fsPath)) === "tests";
36
35
 
37
36
  if (context.globalOptions.coverage && !isTestSource) {
38
37
  try {
@@ -30,6 +30,7 @@ import {
30
30
  opHardforkFromString,
31
31
  l1GenesisState,
32
32
  l1HardforkFromString,
33
+ ContractDecoder,
33
34
  } from "@nomicfoundation/edr";
34
35
  import {
35
36
  assertHardhatInvariant,
@@ -174,6 +175,8 @@ export class EdrProvider extends BaseProvider {
174
175
  // We need to catch errors here, as the provider creation can panic unexpectedly,
175
176
  // and we want to make sure such a crash is propagated as a ProviderError.
176
177
  try {
178
+ const contractDecoder = ContractDecoder.withContracts(tracingConfig);
179
+
177
180
  const context = await getGlobalEdrContext();
178
181
  const provider = await context.createProvider(
179
182
  hardhatChainTypeToEdrChainType(networkConfig.chainType),
@@ -200,7 +203,7 @@ export class EdrProvider extends BaseProvider {
200
203
  edrProvider.onSubscriptionEvent(event);
201
204
  },
202
205
  },
203
- tracingConfig,
206
+ contractDecoder,
204
207
  );
205
208
 
206
209
  edrProvider = new EdrProvider(provider, jsonRpcRequestWrapper);
@@ -301,6 +304,22 @@ export class EdrProvider extends BaseProvider {
301
304
  this.#provider = undefined;
302
305
  }
303
306
 
307
+ public async addCompilationResult(
308
+ solcVersion: string,
309
+ compilerInput: any,
310
+ compilerOutput: any,
311
+ ): Promise<void> {
312
+ if (this.#provider === undefined) {
313
+ throw new HardhatError(HardhatError.ERRORS.CORE.NETWORK.PROVIDER_CLOSED);
314
+ }
315
+
316
+ await this.#provider.addCompilationResult(
317
+ solcVersion,
318
+ compilerInput,
319
+ compilerOutput,
320
+ );
321
+ }
322
+
304
323
  async #handleEdrResponse(
305
324
  edrResponse: Response,
306
325
  ): Promise<SuccessfulJsonRpcResponse> {
@@ -1,4 +1,8 @@
1
- import type { HardhatRuntimeEnvironmentHooks } from "../../../../types/hooks.js";
1
+ import type {
2
+ HardhatRuntimeEnvironmentHooks,
3
+ HookContext,
4
+ } from "../../../../types/hooks.js";
5
+ import type { HardhatRuntimeEnvironment } from "../../../../types/hre.js";
2
6
  import type { NetworkManager } from "../../../../types/network.js";
3
7
 
4
8
  import { DEFAULT_NETWORK_NAME } from "../../../constants.js";
@@ -7,30 +11,44 @@ export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({
7
11
  created: async (context, hre) => {
8
12
  let networkManager: NetworkManager | undefined;
9
13
 
10
- const userConfigNetworks = hre.userConfig.networks;
11
-
12
14
  hre.network = {
13
15
  async connect(networkConnectionParams) {
14
- const { NetworkManagerImplementation } = await import(
15
- "../network-manager.js"
16
- );
17
-
18
16
  if (networkManager === undefined) {
19
- networkManager = new NetworkManagerImplementation(
20
- hre.globalOptions.network !== undefined
21
- ? hre.globalOptions.network
22
- : DEFAULT_NETWORK_NAME,
23
- hre.config.defaultChainType,
24
- hre.config.networks,
25
- context.hooks,
26
- context.artifacts,
27
- userConfigNetworks,
28
- hre.config.chainDescriptors,
29
- );
17
+ networkManager = await createNetworkManager(hre, context);
30
18
  }
31
19
 
32
20
  return networkManager.connect(networkConnectionParams);
33
21
  },
22
+ async createServer(...params) {
23
+ if (networkManager === undefined) {
24
+ networkManager = await createNetworkManager(hre, context);
25
+ }
26
+
27
+ return networkManager.createServer(...params);
28
+ },
34
29
  };
35
30
  },
36
31
  });
32
+
33
+ async function createNetworkManager(
34
+ hre: HardhatRuntimeEnvironment,
35
+ context: HookContext,
36
+ ): Promise<NetworkManager> {
37
+ const { NetworkManagerImplementation } = await import(
38
+ "../network-manager.js"
39
+ );
40
+
41
+ return new NetworkManagerImplementation(
42
+ hre.globalOptions.network !== undefined
43
+ ? hre.globalOptions.network
44
+ : DEFAULT_NETWORK_NAME,
45
+ hre.config.defaultChainType,
46
+ hre.config.networks,
47
+ context.hooks,
48
+ context.artifacts,
49
+ hre.userConfig,
50
+ hre.config.chainDescriptors,
51
+ hre.globalOptions.config,
52
+ hre.config.paths.root,
53
+ );
54
+ }
@@ -23,7 +23,7 @@ export default async (): Promise<Partial<NetworkHooks>> => {
23
23
  const requestHandlersPerConnection: WeakMap<
24
24
  NetworkConnection<ChainType | string>,
25
25
  RequestHandler[]
26
- > = new Map();
26
+ > = new WeakMap();
27
27
 
28
28
  const initializationMutex = new AsyncMutex();
29
29