hardhat 3.0.9 → 3.0.10

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 (108) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/src/internal/builtin-plugins/coverage/coverage-manager.d.ts +30 -0
  3. package/dist/src/internal/builtin-plugins/coverage/coverage-manager.d.ts.map +1 -1
  4. package/dist/src/internal/builtin-plugins/coverage/coverage-manager.js +47 -39
  5. package/dist/src/internal/builtin-plugins/coverage/coverage-manager.js.map +1 -1
  6. package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts +2 -0
  7. package/dist/src/internal/builtin-plugins/gas-analytics/exports.d.ts.map +1 -0
  8. package/dist/src/internal/builtin-plugins/gas-analytics/exports.js +2 -0
  9. package/dist/src/internal/builtin-plugins/gas-analytics/exports.js.map +1 -0
  10. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts +59 -0
  11. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.d.ts.map +1 -0
  12. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js +230 -0
  13. package/dist/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.js.map +1 -0
  14. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts +11 -0
  15. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.d.ts.map +1 -0
  16. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js +31 -0
  17. package/dist/src/internal/builtin-plugins/gas-analytics/helpers.js.map +1 -0
  18. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.d.ts +4 -0
  19. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.d.ts.map +1 -0
  20. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js +22 -0
  21. package/dist/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.js.map +1 -0
  22. package/dist/src/internal/builtin-plugins/gas-analytics/index.d.ts +5 -0
  23. package/dist/src/internal/builtin-plugins/gas-analytics/index.d.ts.map +1 -0
  24. package/dist/src/internal/builtin-plugins/gas-analytics/index.js +18 -0
  25. package/dist/src/internal/builtin-plugins/gas-analytics/index.js.map +1 -0
  26. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.d.ts +7 -0
  27. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.d.ts.map +1 -0
  28. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.js +2 -0
  29. package/dist/src/internal/builtin-plugins/gas-analytics/type-extensions.js.map +1 -0
  30. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts +21 -0
  31. package/dist/src/internal/builtin-plugins/gas-analytics/types.d.ts.map +1 -0
  32. package/dist/src/internal/builtin-plugins/gas-analytics/types.js +2 -0
  33. package/dist/src/internal/builtin-plugins/gas-analytics/types.js.map +1 -0
  34. package/dist/src/internal/builtin-plugins/index.d.ts +1 -0
  35. package/dist/src/internal/builtin-plugins/index.d.ts.map +1 -1
  36. package/dist/src/internal/builtin-plugins/index.js +2 -0
  37. package/dist/src/internal/builtin-plugins/index.js.map +1 -1
  38. package/dist/src/internal/builtin-plugins/network-manager/chain-descriptors.js +1 -1
  39. package/dist/src/internal/builtin-plugins/network-manager/chain-descriptors.js.map +1 -1
  40. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts +4 -3
  41. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.d.ts.map +1 -1
  42. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js +4 -3
  43. package/dist/src/internal/builtin-plugins/network-manager/edr/edr-provider.js.map +1 -1
  44. package/dist/src/internal/builtin-plugins/network-manager/edr/types/hardfork.d.ts +2 -1
  45. package/dist/src/internal/builtin-plugins/network-manager/edr/types/hardfork.d.ts.map +1 -1
  46. package/dist/src/internal/builtin-plugins/network-manager/edr/types/hardfork.js +1 -0
  47. package/dist/src/internal/builtin-plugins/network-manager/edr/types/hardfork.js.map +1 -1
  48. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts +7 -1
  49. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.d.ts.map +1 -1
  50. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js +40 -1
  51. package/dist/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.js.map +1 -1
  52. package/dist/src/internal/builtin-plugins/network-manager/network-manager.d.ts.map +1 -1
  53. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js +14 -0
  54. package/dist/src/internal/builtin-plugins/network-manager/network-manager.js.map +1 -1
  55. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hooks.d.ts +8 -0
  56. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hooks.d.ts.map +1 -1
  57. package/dist/src/internal/builtin-plugins/network-manager/type-extensions/hooks.js.map +1 -1
  58. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts +11 -1
  59. package/dist/src/internal/builtin-plugins/solidity-test/helpers.d.ts.map +1 -1
  60. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js +2 -1
  61. package/dist/src/internal/builtin-plugins/solidity-test/helpers.js.map +1 -1
  62. package/dist/src/internal/builtin-plugins/solidity-test/index.d.ts.map +1 -1
  63. package/dist/src/internal/builtin-plugins/solidity-test/index.js +1 -0
  64. package/dist/src/internal/builtin-plugins/solidity-test/index.js.map +1 -1
  65. package/dist/src/internal/builtin-plugins/solidity-test/reporter.d.ts.map +1 -1
  66. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js +4 -1
  67. package/dist/src/internal/builtin-plugins/solidity-test/reporter.js.map +1 -1
  68. package/dist/src/internal/builtin-plugins/solidity-test/runner.d.ts.map +1 -1
  69. package/dist/src/internal/builtin-plugins/solidity-test/runner.js +14 -3
  70. package/dist/src/internal/builtin-plugins/solidity-test/runner.js.map +1 -1
  71. package/dist/src/internal/builtin-plugins/solidity-test/task-action.d.ts.map +1 -1
  72. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js +45 -13
  73. package/dist/src/internal/builtin-plugins/solidity-test/task-action.js.map +1 -1
  74. package/dist/src/internal/builtin-plugins/solidity-test/types.d.ts +7 -4
  75. package/dist/src/internal/builtin-plugins/solidity-test/types.d.ts.map +1 -1
  76. package/dist/src/internal/builtin-plugins/test/task-action.d.ts.map +1 -1
  77. package/dist/src/internal/builtin-plugins/test/task-action.js +3 -1
  78. package/dist/src/internal/builtin-plugins/test/task-action.js.map +1 -1
  79. package/dist/src/internal/core/hre.d.ts +2 -0
  80. package/dist/src/internal/core/hre.d.ts.map +1 -1
  81. package/dist/src/internal/core/hre.js +6 -2
  82. package/dist/src/internal/core/hre.js.map +1 -1
  83. package/package.json +4 -3
  84. package/src/internal/builtin-plugins/coverage/coverage-manager.ts +56 -47
  85. package/src/internal/builtin-plugins/gas-analytics/exports.ts +5 -0
  86. package/src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts +339 -0
  87. package/src/internal/builtin-plugins/gas-analytics/helpers.ts +44 -0
  88. package/src/internal/builtin-plugins/gas-analytics/hook-handlers/hre.ts +33 -0
  89. package/src/internal/builtin-plugins/gas-analytics/index.ts +23 -0
  90. package/src/internal/builtin-plugins/gas-analytics/type-extensions.ts +6 -0
  91. package/src/internal/builtin-plugins/gas-analytics/types.ts +24 -0
  92. package/src/internal/builtin-plugins/index.ts +3 -0
  93. package/src/internal/builtin-plugins/network-manager/chain-descriptors.ts +1 -1
  94. package/src/internal/builtin-plugins/network-manager/edr/edr-provider.ts +6 -0
  95. package/src/internal/builtin-plugins/network-manager/edr/types/hardfork.ts +1 -0
  96. package/src/internal/builtin-plugins/network-manager/edr/utils/convert-to-edr.ts +51 -0
  97. package/src/internal/builtin-plugins/network-manager/network-manager.ts +25 -1
  98. package/src/internal/builtin-plugins/network-manager/type-extensions/hooks.ts +12 -0
  99. package/src/internal/builtin-plugins/solidity-test/helpers.ts +20 -8
  100. package/src/internal/builtin-plugins/solidity-test/index.ts +1 -0
  101. package/src/internal/builtin-plugins/solidity-test/reporter.ts +4 -1
  102. package/src/internal/builtin-plugins/solidity-test/runner.ts +16 -3
  103. package/src/internal/builtin-plugins/solidity-test/task-action.ts +67 -29
  104. package/src/internal/builtin-plugins/solidity-test/types.ts +10 -6
  105. package/src/internal/builtin-plugins/test/task-action.ts +3 -1
  106. package/src/internal/core/hre.ts +7 -2
  107. package/templates/hardhat-3/01-node-test-runner-viem/package.json +2 -2
  108. package/templates/hardhat-3/02-mocha-ethers/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # hardhat
2
2
 
3
+ ## 3.0.10
4
+
5
+ ### Patch Changes
6
+
7
+ - fe28daf: Added support for showing gas statistics after running tests ([#7472](https://github.com/NomicFoundation/hardhat/issues/7428) and [#7503](https://github.com/NomicFoundation/hardhat/issues/7503))
8
+ - 1ab6b75: Optimism ISTHMUS hardfork support added to Hardhat ([#7517](https://github.com/NomicFoundation/hardhat/issues/7517))
9
+ - 5e64246: Improved JS/TS test tasks to not compile Solidity tests ([#7626](https://github.com/NomicFoundation/hardhat/pull/7626))
10
+ - 217a1a8: Fix arbitrum sepolia chain id in chain descriptors (thanks @aelmanaa!)
11
+ - 8a03bd0: Fixed gas calculation for EIP-7702 refunds ([#7606](https://github.com/NomicFoundation/hardhat/pull/7606))
12
+ - 8a03bd0: Make all parameters of `eth_feeHistory` rpc call required ([#7606](https://github.com/NomicFoundation/hardhat/pull/7606))
13
+
3
14
  ## 3.0.9
4
15
 
5
16
  ### Patch Changes
@@ -1,6 +1,9 @@
1
1
  import type { CoverageData, CoverageManager, CoverageMetadata, Tag } from "./types.js";
2
2
  type Line = number;
3
3
  type Branch = [Line, Tag];
4
+ /**
5
+ * @private exposed for testing purposes only
6
+ */
4
7
  export interface Report {
5
8
  [relativePath: string]: {
6
9
  tagExecutionCounts: Map<Tag, number>;
@@ -15,7 +18,13 @@ export interface Report {
15
18
  }
16
19
  export declare class CoverageManagerImplementation implements CoverageManager {
17
20
  #private;
21
+ /**
22
+ * @private exposed for testing purposes only
23
+ */
18
24
  metadata: CoverageMetadata;
25
+ /**
26
+ * @private exposed for testing purposes only
27
+ */
19
28
  data: CoverageData;
20
29
  constructor(coveragePath: string);
21
30
  addData(data: CoverageData): Promise<void>;
@@ -25,12 +34,33 @@ export declare class CoverageManagerImplementation implements CoverageManager {
25
34
  report(...ids: string[]): Promise<void>;
26
35
  enableReport(): void;
27
36
  disableReport(): void;
37
+ /**
38
+ * @private exposed for testing purposes only
39
+ */
28
40
  loadData(...ids: string[]): Promise<void>;
41
+ /**
42
+ * @private exposed for testing purposes only
43
+ */
29
44
  getReport(): Report;
45
+ /**
46
+ * @private exposed for testing purposes only
47
+ */
30
48
  formatLcovReport(report: Report): string;
49
+ /**
50
+ * @private exposed for testing purposes only
51
+ */
31
52
  formatRelativePath(relativePath: string): string;
53
+ /**
54
+ * @private exposed for testing purposes only
55
+ */
32
56
  formatCoverage(coverage: number): string;
57
+ /**
58
+ * @private exposed for testing purposes only
59
+ */
33
60
  formatLines(lines: Set<number>): string;
61
+ /**
62
+ * @private exposed for testing purposes only
63
+ */
34
64
  formatMarkdownReport(report: Report): string;
35
65
  }
36
66
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-manager.d.ts","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/coverage/coverage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAEhB,GAAG,EACJ,MAAM,YAAY,CAAC;AAmBpB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAG1B,MAAM,WAAW,MAAM;IACrB,CAAC,YAAY,EAAE,MAAM,GAAG;QACtB,kBAAkB,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,mBAAmB,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE3C,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,EAAE,MAAM,CAAC;QAE9B,sBAAsB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KAC5B,CAAC;CACH;AAED,qBAAa,6BAA8B,YAAW,eAAe;;IAE5D,QAAQ,EAAE,gBAAgB,CAAM;IAChC,IAAI,EAAE,YAAY,CAAM;gBAMnB,YAAY,EAAE,MAAM;IAUnB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnC,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7C,YAAY,IAAI,IAAI;IAIpB,aAAa,IAAI,IAAI;IAKf,QAAQ,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/C,SAAS,IAAI,MAAM;IA4InB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAuExC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAkChD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAKxC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;IA6DvC,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAmGpD"}
1
+ {"version":3,"file":"coverage-manager.d.ts","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/coverage/coverage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAEhB,GAAG,EACJ,MAAM,YAAY,CAAC;AAsBpB,KAAK,IAAI,GAAG,MAAM,CAAC;AACnB,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,CAAC,YAAY,EAAE,MAAM,GAAG;QACtB,kBAAkB,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,mBAAmB,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE3C,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,EAAE,MAAM,CAAC;QAE9B,sBAAsB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KAC5B,CAAC;CACH;AAED,qBAAa,6BAA8B,YAAW,eAAe;;IACnE;;OAEG;IACI,QAAQ,EAAE,gBAAgB,CAAM;IACvC;;OAEG;IACI,IAAI,EAAE,YAAY,CAAM;gBAMnB,YAAY,EAAE,MAAM;IAUnB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnC,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB7C,YAAY,IAAI,IAAI;IAIpB,aAAa,IAAI,IAAI;IAI5B;;OAEG;IACU,QAAQ,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAetD;;OAEG;IACI,SAAS,IAAI,MAAM;IA2I1B;;OAEG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAsE/C;;OAEG;IACI,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAiCvD;;OAEG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI/C;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;IA4D9C;;OAEG;IACI,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAmFpD"}
@@ -1,12 +1,19 @@
1
1
  import path from "node:path";
2
2
  import { assertHardhatInvariant } from "@nomicfoundation/hardhat-errors";
3
+ import { divider, formatTable } from "@nomicfoundation/hardhat-utils/format";
3
4
  import { ensureDir, getAllFilesMatching, readJsonFile, remove, writeJsonFile, writeUtf8File, } from "@nomicfoundation/hardhat-utils/fs";
5
+ import chalk from "chalk";
4
6
  import debug from "debug";
5
7
  const log = debug("hardhat:core:coverage:coverage-manager");
6
8
  const MAX_COLUMN_WIDTH = 80;
7
9
  export class CoverageManagerImplementation {
8
- // NOTE: These are exposed for testing only
10
+ /**
11
+ * @private exposed for testing purposes only
12
+ */
9
13
  metadata = [];
14
+ /**
15
+ * @private exposed for testing purposes only
16
+ */
10
17
  data = [];
11
18
  #coveragePath;
12
19
  #reportEnabled = true;
@@ -57,6 +64,7 @@ export class CoverageManagerImplementation {
57
64
  await writeUtf8File(lcovReportPath, lcovReport);
58
65
  log(`Saved lcov report to ${lcovReportPath}`);
59
66
  console.log(markdownReport);
67
+ console.log();
60
68
  log("Printed markdown report");
61
69
  }
62
70
  enableReport() {
@@ -65,7 +73,9 @@ export class CoverageManagerImplementation {
65
73
  disableReport() {
66
74
  this.#reportEnabled = false;
67
75
  }
68
- // NOTE: This is exposed for testing only
76
+ /**
77
+ * @private exposed for testing purposes only
78
+ */
69
79
  async loadData(...ids) {
70
80
  this.data = [];
71
81
  for (const id of ids) {
@@ -80,7 +90,9 @@ export class CoverageManagerImplementation {
80
90
  }
81
91
  }
82
92
  }
83
- // NOTE: This is exposed for testing only
93
+ /**
94
+ * @private exposed for testing purposes only
95
+ */
84
96
  getReport() {
85
97
  const report = {};
86
98
  const relativePaths = this.metadata.map(({ relativePath }) => relativePath);
@@ -168,7 +180,9 @@ export class CoverageManagerImplementation {
168
180
  }
169
181
  return report;
170
182
  }
171
- // NOTE: This is exposed for testing only
183
+ /**
184
+ * @private exposed for testing purposes only
185
+ */
172
186
  formatLcovReport(report) {
173
187
  // NOTE: Format follows the guidelines set out in:
174
188
  // https://github.com/linux-test-project/lcov/blob/df03ba434eee724bfc2b27716f794d0122951404/man/geninfo.1#L1409
@@ -216,7 +230,9 @@ export class CoverageManagerImplementation {
216
230
  }
217
231
  return lcov;
218
232
  }
219
- // NOTE: This is exposed for testing only
233
+ /**
234
+ * @private exposed for testing purposes only
235
+ */
220
236
  formatRelativePath(relativePath) {
221
237
  if (relativePath.length <= MAX_COLUMN_WIDTH) {
222
238
  return relativePath;
@@ -242,11 +258,15 @@ export class CoverageManagerImplementation {
242
258
  parts.push(prefix);
243
259
  return parts.reverse().join(path.sep);
244
260
  }
245
- // NOTE: This is exposed for testing only
261
+ /**
262
+ * @private exposed for testing purposes only
263
+ */
246
264
  formatCoverage(coverage) {
247
265
  return coverage.toFixed(2).toString();
248
266
  }
249
- // NOTE: This is exposed for testing only
267
+ /**
268
+ * @private exposed for testing purposes only
269
+ */
250
270
  formatLines(lines) {
251
271
  if (lines.size === 0) {
252
272
  return "-";
@@ -298,20 +318,25 @@ export class CoverageManagerImplementation {
298
318
  }
299
319
  return [intervals.join(sep), suffix].join(suffixSep);
300
320
  }
301
- // NOTE: This is exposed for testing only
321
+ /**
322
+ * @private exposed for testing purposes only
323
+ */
302
324
  formatMarkdownReport(report) {
303
325
  let totalExecutedLines = 0;
304
326
  let totalExecutableLines = 0;
305
327
  let totalExecutedStatements = 0;
306
328
  let totalExecutableStatements = 0;
307
- const headerRow = [
308
- "File Path 📦",
309
- "Line % 📈",
310
- "Statement % 📈",
311
- "Uncovered Lines 🔍",
312
- "Partially Covered Lines 🔍",
313
- ];
314
- const rows = Object.entries(report).map(([relativePath, { tagExecutionCounts, lineExecutionCounts, executedTagsCount, executedLinesCount, unexecutedLines, partiallyExecutedLines, },]) => {
329
+ const rows = [];
330
+ rows.push([chalk.bold("Coverage Report")]);
331
+ rows.push(divider);
332
+ rows.push([
333
+ "File Path",
334
+ "Line %",
335
+ "Statement %",
336
+ "Uncovered Lines",
337
+ "Partially Covered Lines",
338
+ ].map((s) => chalk.yellow(s)));
339
+ const bodyRows = Object.entries(report).map(([relativePath, { tagExecutionCounts, lineExecutionCounts, executedTagsCount, executedLinesCount, unexecutedLines, partiallyExecutedLines, },]) => {
315
340
  const lineCoverage = lineExecutionCounts.size === 0
316
341
  ? 0
317
342
  : (executedLinesCount * 100.0) / lineExecutionCounts.size;
@@ -331,39 +356,22 @@ export class CoverageManagerImplementation {
331
356
  ];
332
357
  return row;
333
358
  });
359
+ rows.push(...bodyRows);
334
360
  const totalLineCoverage = totalExecutableLines === 0
335
361
  ? 0
336
362
  : (totalExecutedLines * 100.0) / totalExecutableLines;
337
363
  const totalStatementCoverage = totalExecutableStatements === 0
338
364
  ? 0
339
365
  : (totalExecutedStatements * 100.0) / totalExecutableStatements;
340
- const footerRow = [
341
- "Total",
366
+ rows.push(divider);
367
+ rows.push([
368
+ chalk.yellow("Total"),
342
369
  this.formatCoverage(totalLineCoverage),
343
370
  this.formatCoverage(totalStatementCoverage),
344
371
  "",
345
372
  "",
346
- ];
347
- const widths = headerRow.map((header) => header.length);
348
- for (const row of rows) {
349
- for (let i = 0; i < row.length; i++) {
350
- widths[i] = Math.max(widths[i], row[i].length);
351
- }
352
- }
353
- for (let i = 0; i < footerRow.length; i++) {
354
- widths[i] = Math.max(widths[i], footerRow[i].length);
355
- }
356
- const dividerRow = widths.map((width) => "-".repeat(width));
357
- rows.unshift(dividerRow);
358
- rows.unshift(headerRow);
359
- rows.push(dividerRow);
360
- rows.push(footerRow);
361
- rows.forEach((row) => {
362
- for (let i = 0; i < row.length; i++) {
363
- row[i] = row[i].padEnd(widths[i]);
364
- }
365
- });
366
- return rows.map((row) => `| ${row.join(" | ")} |`).join("\n");
373
+ ]);
374
+ return formatTable(rows);
367
375
  }
368
376
  }
369
377
  //# sourceMappingURL=coverage-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-manager.js","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/coverage/coverage-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage-manager.js","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/coverage/coverage-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { markTestRunStart, markTestRunDone, markTestWorkerDone, } from "./helpers.js";
2
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/gas-analytics/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { markTestRunStart, markTestRunDone, markTestWorkerDone, } from "./helpers.js";
2
+ //# sourceMappingURL=exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/gas-analytics/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { GasAnalyticsManager, GasMeasurement } from "./types.js";
2
+ interface ContractGasStats {
3
+ deployment?: {
4
+ gas: number;
5
+ size: number;
6
+ };
7
+ functions: Map<string, // function name or signature (if overloaded)
8
+ GasStats>;
9
+ }
10
+ type GasStatsByContract = Map<string, ContractGasStats>;
11
+ interface GasStats {
12
+ min: number;
13
+ max: number;
14
+ avg: number;
15
+ median: number;
16
+ calls: number;
17
+ }
18
+ type GasMeasurementsByContract = Map<string, ContractGasMeasurements>;
19
+ interface ContractGasMeasurements {
20
+ deployment?: {
21
+ gas: number;
22
+ size: number;
23
+ };
24
+ functions: Map<string, // functionSig
25
+ number[]>;
26
+ }
27
+ export declare class GasAnalyticsManagerImplementation implements GasAnalyticsManager {
28
+ #private;
29
+ gasMeasurements: GasMeasurement[];
30
+ constructor(gasStatsRootPath: string);
31
+ addGasMeasurement(gasMeasurement: GasMeasurement): void;
32
+ clearGasMeasurements(id: string): Promise<void>;
33
+ saveGasMeasurements(id: string): Promise<void>;
34
+ reportGasStats(...ids: string[]): Promise<void>;
35
+ /**
36
+ * @private exposed for testing purposes only
37
+ */
38
+ _loadGasMeasurements(...ids: string[]): Promise<void>;
39
+ /**
40
+ * @private exposed for testing purposes only
41
+ */
42
+ _calculateGasStats(): GasStatsByContract;
43
+ /**
44
+ * @private exposed for testing purposes only
45
+ */
46
+ _aggregateGasMeasurements(): GasMeasurementsByContract;
47
+ /**
48
+ * @private exposed for testing purposes only
49
+ */
50
+ _generateGasStatsReport(gasStatsByContract: GasStatsByContract): string;
51
+ }
52
+ export declare function avg(values: number[]): number;
53
+ export declare function median(values: number[]): number;
54
+ export declare function getUserFqn(inputFqn: string): string;
55
+ export declare function getFunctionName(signature: string): string;
56
+ export declare function findDuplicates<T>(arr: T[]): T[];
57
+ export declare function roundTo(value: number, decimals: number): number;
58
+ export {};
59
+ //# sourceMappingURL=gas-analytics-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gas-analytics-manager.d.ts","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAqBtE,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,SAAS,EAAE,GAAG,CACZ,MAAM,EAAE,6CAA6C;IACrD,QAAQ,CACT,CAAC;CACH;AAED,KAAK,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAExD,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,KAAK,yBAAyB,GAAG,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAEtE,UAAU,uBAAuB;IAC/B,UAAU,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,SAAS,EAAE,GAAG,CACZ,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,CACT,CAAC;CACH;AAED,qBAAa,iCAAkC,YAAW,mBAAmB;;IACpE,eAAe,EAAE,cAAc,EAAE,CAAM;gBAGlC,gBAAgB,EAAE,MAAM;IAI7B,iBAAiB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAIjD,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,cAAc,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5D;;OAEG;IACU,oBAAoB,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAelE;;OAEG;IACI,kBAAkB,IAAI,kBAAkB;IA4C/C;;OAEG;IACI,yBAAyB,IAAI,yBAAyB;IAyC7D;;OAEG;IACI,uBAAuB,CAC5B,kBAAkB,EAAE,kBAAkB,GACrC,MAAM;CAyEV;AAED,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAE5C;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAO/C;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBnD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAa/C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG/D"}
@@ -0,0 +1,230 @@
1
+ import crypto from "node:crypto";
2
+ import path from "node:path";
3
+ import { formatTableV2 } from "@nomicfoundation/hardhat-utils/format";
4
+ import { ensureDir, getAllFilesMatching, readJsonFile, remove, writeJsonFile, } from "@nomicfoundation/hardhat-utils/fs";
5
+ import chalk from "chalk";
6
+ import debug from "debug";
7
+ const gasStatsLog = debug("hardhat:core:gas-analytics:gas-analytics-manager:gas-stats");
8
+ export class GasAnalyticsManagerImplementation {
9
+ gasMeasurements = [];
10
+ #gasStatsPath;
11
+ constructor(gasStatsRootPath) {
12
+ this.#gasStatsPath = path.join(gasStatsRootPath, "gas-stats");
13
+ }
14
+ addGasMeasurement(gasMeasurement) {
15
+ this.gasMeasurements.push(gasMeasurement);
16
+ }
17
+ async clearGasMeasurements(id) {
18
+ const gasMeasurementsPath = await this.#getGasMeasurementsPath(id);
19
+ await remove(gasMeasurementsPath);
20
+ this.gasMeasurements = [];
21
+ gasStatsLog("Cleared gas measurements from disk and memory");
22
+ }
23
+ async saveGasMeasurements(id) {
24
+ const gasMeasurementsPath = await this.#getGasMeasurementsPath(id);
25
+ const filePath = path.join(gasMeasurementsPath, `${crypto.randomUUID()}.json`);
26
+ await writeJsonFile(filePath, this.gasMeasurements);
27
+ gasStatsLog("Saved gas measurements", id, filePath);
28
+ }
29
+ async reportGasStats(...ids) {
30
+ await this._loadGasMeasurements(...ids);
31
+ const gasStatsByContract = this._calculateGasStats();
32
+ const report = this._generateGasStatsReport(gasStatsByContract);
33
+ console.log(report);
34
+ console.log();
35
+ gasStatsLog("Printed markdown report");
36
+ }
37
+ async #getGasMeasurementsPath(id) {
38
+ const gasMeasurementsPath = path.join(this.#gasStatsPath, id);
39
+ await ensureDir(gasMeasurementsPath);
40
+ return gasMeasurementsPath;
41
+ }
42
+ /**
43
+ * @private exposed for testing purposes only
44
+ */
45
+ async _loadGasMeasurements(...ids) {
46
+ this.gasMeasurements = [];
47
+ for (const id of ids) {
48
+ const gasMeasurementsPath = await this.#getGasMeasurementsPath(id);
49
+ const filePaths = await getAllFilesMatching(gasMeasurementsPath);
50
+ for (const filePath of filePaths) {
51
+ const entries = await readJsonFile(filePath);
52
+ for (const entry of entries) {
53
+ this.gasMeasurements.push(entry);
54
+ }
55
+ gasStatsLog("Loaded gas measurements", id, filePath);
56
+ }
57
+ }
58
+ }
59
+ /**
60
+ * @private exposed for testing purposes only
61
+ */
62
+ _calculateGasStats() {
63
+ const gasStatsByContract = new Map();
64
+ const measurementsByContract = this._aggregateGasMeasurements();
65
+ for (const [contractFqn, measurements] of measurementsByContract) {
66
+ const contractGasStats = {
67
+ functions: new Map(),
68
+ };
69
+ if (measurements.deployment !== undefined) {
70
+ contractGasStats.deployment = {
71
+ gas: measurements.deployment.gas,
72
+ size: measurements.deployment.size,
73
+ };
74
+ }
75
+ const overloadedFnNames = new Set(findDuplicates([...measurements.functions.keys()].map(getFunctionName)));
76
+ for (const [functionSig, gasValues] of measurements.functions) {
77
+ const functionName = getFunctionName(functionSig);
78
+ const isOverloaded = overloadedFnNames.has(functionName);
79
+ const stats = {
80
+ min: Math.min(...gasValues),
81
+ max: Math.max(...gasValues),
82
+ avg: roundTo(avg(gasValues), 2),
83
+ median: roundTo(median(gasValues), 2),
84
+ calls: gasValues.length,
85
+ };
86
+ contractGasStats.functions.set(isOverloaded ? functionSig : functionName, stats);
87
+ }
88
+ gasStatsByContract.set(contractFqn, contractGasStats);
89
+ }
90
+ return gasStatsByContract;
91
+ }
92
+ /**
93
+ * @private exposed for testing purposes only
94
+ */
95
+ _aggregateGasMeasurements() {
96
+ const measurementsByContract = new Map();
97
+ for (const currentMeasurement of this.gasMeasurements) {
98
+ let contractMeasurements = measurementsByContract.get(currentMeasurement.contractFqn);
99
+ if (contractMeasurements === undefined) {
100
+ contractMeasurements = {
101
+ functions: new Map(),
102
+ };
103
+ measurementsByContract.set(currentMeasurement.contractFqn, contractMeasurements);
104
+ }
105
+ if (currentMeasurement.type === "deployment") {
106
+ contractMeasurements.deployment = {
107
+ gas: currentMeasurement.gas,
108
+ size: currentMeasurement.size,
109
+ };
110
+ }
111
+ else {
112
+ let measurements = contractMeasurements.functions.get(currentMeasurement.functionSig);
113
+ if (measurements === undefined) {
114
+ measurements = [];
115
+ contractMeasurements.functions.set(currentMeasurement.functionSig, measurements);
116
+ }
117
+ measurements.push(currentMeasurement.gas);
118
+ }
119
+ }
120
+ return measurementsByContract;
121
+ }
122
+ /**
123
+ * @private exposed for testing purposes only
124
+ */
125
+ _generateGasStatsReport(gasStatsByContract) {
126
+ const rows = [];
127
+ if (gasStatsByContract.size > 0) {
128
+ rows.push({ type: "title", text: chalk.bold("Gas Usage Statistics") });
129
+ }
130
+ // Sort contracts alphabetically for consistent output
131
+ const sortedContracts = [...gasStatsByContract.entries()].sort(([a], [b]) => a.localeCompare(b));
132
+ for (const [contractFqn, contractGasStats] of sortedContracts) {
133
+ rows.push({
134
+ type: "section-header",
135
+ text: chalk.cyan.bold(getUserFqn(contractFqn)),
136
+ });
137
+ if (contractGasStats.functions.size > 0) {
138
+ rows.push({
139
+ type: "header",
140
+ cells: [
141
+ "Function name",
142
+ "Min",
143
+ "Average",
144
+ "Median",
145
+ "Max",
146
+ "#calls",
147
+ ].map((s) => chalk.yellow(s)),
148
+ });
149
+ }
150
+ // Sort functions by removing trailing ) and comparing alphabetically.
151
+ // This ensures that overloaded functions with fewer params come first
152
+ // (e.g., foo(uint256) comes before foo(uint256,uint256)). In other
153
+ // scenarios, removing the trailing ) has no effect on the order.
154
+ const sortedFunctions = [...contractGasStats.functions.entries()].sort(([a], [b]) => a.split(")")[0].localeCompare(b.split(")")[0]));
155
+ for (const [functionDisplayName, gasStats] of sortedFunctions) {
156
+ rows.push({
157
+ type: "row",
158
+ cells: [
159
+ functionDisplayName,
160
+ `${gasStats.min}`,
161
+ `${gasStats.avg}`,
162
+ `${gasStats.median}`,
163
+ `${gasStats.max}`,
164
+ `${gasStats.calls}`,
165
+ ],
166
+ });
167
+ }
168
+ if (contractGasStats.deployment !== undefined) {
169
+ rows.push({
170
+ type: "header",
171
+ cells: ["Deployment Cost", "Deployment Size"].map((s) => chalk.yellow(s)),
172
+ });
173
+ rows.push({
174
+ type: "row",
175
+ cells: [
176
+ `${contractGasStats.deployment.gas}`,
177
+ `${contractGasStats.deployment.size}`,
178
+ ],
179
+ });
180
+ }
181
+ }
182
+ return formatTableV2(rows);
183
+ }
184
+ }
185
+ export function avg(values) {
186
+ return values.reduce((a, c) => a + c, 0) / values.length;
187
+ }
188
+ export function median(values) {
189
+ const sorted = [...values].sort((a, b) => a - b);
190
+ const mid = Math.floor(sorted.length / 2);
191
+ return sorted.length % 2 === 1
192
+ ? sorted[mid]
193
+ : (sorted[mid - 1] + sorted[mid]) / 2;
194
+ }
195
+ export function getUserFqn(inputFqn) {
196
+ if (inputFqn.startsWith("project/")) {
197
+ return inputFqn.slice("project/".length);
198
+ }
199
+ if (inputFqn.startsWith("npm/")) {
200
+ const withoutPrefix = inputFqn.slice("npm/".length);
201
+ // Match "<pkg>@<version>/<rest>", where <pkg> may be scoped (@scope/pkg)
202
+ const match = withoutPrefix.match(/^(@?[^@/]+(?:\/[^@/]+)*)@[^/]+\/(.*)$/);
203
+ if (match !== null) {
204
+ return `${match[1]}/${match[2]}`;
205
+ }
206
+ return withoutPrefix;
207
+ }
208
+ return inputFqn;
209
+ }
210
+ export function getFunctionName(signature) {
211
+ return signature.split("(")[0];
212
+ }
213
+ export function findDuplicates(arr) {
214
+ const seen = new Set();
215
+ const duplicates = new Set();
216
+ for (const item of arr) {
217
+ if (seen.has(item)) {
218
+ duplicates.add(item);
219
+ }
220
+ else {
221
+ seen.add(item);
222
+ }
223
+ }
224
+ return [...duplicates];
225
+ }
226
+ export function roundTo(value, decimals) {
227
+ const factor = 10 ** decimals;
228
+ return Math.round(value * factor) / factor;
229
+ }
230
+ //# sourceMappingURL=gas-analytics-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gas-analytics-manager.js","sourceRoot":"","sources":["../../../../../src/internal/builtin-plugins/gas-analytics/gas-analytics-manager.ts"],"names":[],"mappings":"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"}