hardhat 2.13.0 → 2.14.0

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 (78) hide show
  1. package/internal/constants.d.ts.map +1 -1
  2. package/internal/constants.js +1 -0
  3. package/internal/constants.js.map +1 -1
  4. package/internal/core/config/default-config.js +1 -1
  5. package/internal/core/config/default-config.js.map +1 -1
  6. package/internal/core/jsonrpc/types/output/block.d.ts +24 -0
  7. package/internal/core/jsonrpc/types/output/block.d.ts.map +1 -1
  8. package/internal/core/jsonrpc/types/output/block.js +8 -0
  9. package/internal/core/jsonrpc/types/output/block.js.map +1 -1
  10. package/internal/hardhat-network/provider/BlockchainBase.d.ts +1 -1
  11. package/internal/hardhat-network/provider/BlockchainBase.d.ts.map +1 -1
  12. package/internal/hardhat-network/provider/BlockchainBase.js +16 -9
  13. package/internal/hardhat-network/provider/BlockchainBase.js.map +1 -1
  14. package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
  15. package/internal/hardhat-network/provider/TxPool.js +1 -0
  16. package/internal/hardhat-network/provider/TxPool.js.map +1 -1
  17. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +1 -1
  18. package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
  19. package/internal/hardhat-network/provider/fork/ForkBlockchain.js +24 -14
  20. package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
  21. package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
  22. package/internal/hardhat-network/provider/fork/rpcToBlockData.js +2 -0
  23. package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
  24. package/internal/hardhat-network/provider/modules/eth.d.ts +1 -0
  25. package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
  26. package/internal/hardhat-network/provider/modules/eth.js +28 -3
  27. package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
  28. package/internal/hardhat-network/provider/node.d.ts +2 -0
  29. package/internal/hardhat-network/provider/node.d.ts.map +1 -1
  30. package/internal/hardhat-network/provider/node.js +62 -16
  31. package/internal/hardhat-network/provider/node.js.map +1 -1
  32. package/internal/hardhat-network/provider/output.d.ts +8 -0
  33. package/internal/hardhat-network/provider/output.d.ts.map +1 -1
  34. package/internal/hardhat-network/provider/output.js +9 -0
  35. package/internal/hardhat-network/provider/output.js.map +1 -1
  36. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +1 -1
  37. package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
  38. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +1 -1
  39. package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
  40. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +1 -1
  41. package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
  42. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
  43. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +5 -1
  44. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
  45. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
  46. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +5 -1
  47. package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
  48. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +1 -1
  49. package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
  50. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +1 -1
  51. package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
  52. package/internal/solidity/resolver.d.ts.map +1 -1
  53. package/internal/solidity/resolver.js +18 -2
  54. package/internal/solidity/resolver.js.map +1 -1
  55. package/internal/util/hardforks.d.ts +2 -1
  56. package/internal/util/hardforks.d.ts.map +1 -1
  57. package/internal/util/hardforks.js +2 -0
  58. package/internal/util/hardforks.js.map +1 -1
  59. package/package.json +11 -11
  60. package/src/internal/constants.ts +1 -0
  61. package/src/internal/core/config/default-config.ts +1 -1
  62. package/src/internal/core/jsonrpc/types/output/block.ts +12 -0
  63. package/src/internal/hardhat-network/provider/BlockchainBase.ts +19 -10
  64. package/src/internal/hardhat-network/provider/TxPool.ts +1 -0
  65. package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +28 -18
  66. package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +2 -0
  67. package/src/internal/hardhat-network/provider/modules/eth.ts +40 -3
  68. package/src/internal/hardhat-network/provider/node.ts +73 -14
  69. package/src/internal/hardhat-network/provider/output.ts +20 -0
  70. package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +1 -1
  71. package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +1 -1
  72. package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +1 -1
  73. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +5 -1
  74. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +5 -1
  75. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +1 -1
  76. package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +1 -1
  77. package/src/internal/solidity/resolver.ts +25 -6
  78. package/src/internal/util/hardforks.ts +2 -0
@@ -40,6 +40,8 @@ export interface RpcBlockOutput {
40
40
  transactionsRoot: string;
41
41
  uncles: string[];
42
42
  baseFeePerGas?: string;
43
+ withdrawals?: RpcWithdrawalItem[];
44
+ withdrawalsRoot?: string;
43
45
  }
44
46
 
45
47
  export type RpcTransactionOutput =
@@ -147,6 +149,13 @@ export interface RpcDebugTraceOutput {
147
149
  structLogs: RpcStructLog[];
148
150
  }
149
151
 
152
+ export interface RpcWithdrawalItem {
153
+ index: string;
154
+ validatorIndex: string;
155
+ address: string;
156
+ amount: string;
157
+ }
158
+
150
159
  /* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
151
160
 
152
161
  export function getRpcBlock(
@@ -191,6 +200,17 @@ export function getRpcBlock(
191
200
  output.baseFeePerGas = numberToRpcQuantity(block.header.baseFeePerGas);
192
201
  }
193
202
 
203
+ if (block.header.withdrawalsRoot !== undefined) {
204
+ output.withdrawals = block.withdrawals?.map((withdrawal) => ({
205
+ index: numberToRpcQuantity(withdrawal.index),
206
+ validatorIndex: numberToRpcQuantity(withdrawal.validatorIndex),
207
+ address: bufferToRpcData(withdrawal.address.toBuffer()),
208
+ amount: numberToRpcQuantity(withdrawal.amount),
209
+ }));
210
+
211
+ output.withdrawalsRoot = bufferToRpcData(block.header.withdrawalsRoot);
212
+ }
213
+
194
214
  return output;
195
215
  }
196
216
 
@@ -134,7 +134,7 @@ export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Tra
134
134
  r: data.r ?? fakeSignature.r,
135
135
  s: data.s ?? fakeSignature.s,
136
136
  },
137
- { ...opts, freeze: false }
137
+ { ...opts, freeze: false, disableMaxInitCodeSizeCheck: true }
138
138
  );
139
139
 
140
140
  this.common = this._getCommon(opts?.common);
@@ -133,7 +133,7 @@ export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
133
133
  r: data.r ?? fakeSignature.r,
134
134
  s: data.s ?? fakeSignature.s,
135
135
  },
136
- { ...opts, freeze: false }
136
+ { ...opts, freeze: false, disableMaxInitCodeSizeCheck: true }
137
137
  );
138
138
 
139
139
  this._sender = sender;
@@ -107,7 +107,7 @@ export class FakeSenderTransaction extends Transaction {
107
107
  r: data.r ?? fakeSignature.r,
108
108
  s: data.s ?? fakeSignature.s,
109
109
  },
110
- { ...opts, freeze: false }
110
+ { ...opts, freeze: false, disableMaxInitCodeSizeCheck: true }
111
111
  );
112
112
 
113
113
  this.common = this._getCommon(opts?.common);
@@ -68,7 +68,11 @@ export class ReadOnlyValidEIP1559Transaction extends FeeMarketEIP1559Transaction
68
68
  }
69
69
  );
70
70
 
71
- super(data, { freeze: false, common: fakeCommon });
71
+ super(data, {
72
+ freeze: false,
73
+ disableMaxInitCodeSizeCheck: true,
74
+ common: fakeCommon,
75
+ });
72
76
 
73
77
  this.common = fakeCommon;
74
78
  this._sender = sender;
@@ -67,7 +67,11 @@ export class ReadOnlyValidEIP2930Transaction extends AccessListEIP2930Transactio
67
67
  }
68
68
  );
69
69
 
70
- super(data, { freeze: false, common: fakeCommon });
70
+ super(data, {
71
+ freeze: false,
72
+ disableMaxInitCodeSizeCheck: true,
73
+ common: fakeCommon,
74
+ });
71
75
 
72
76
  this.common = fakeCommon;
73
77
  this._sender = sender;
@@ -56,7 +56,7 @@ export class ReadOnlyValidTransaction extends Transaction {
56
56
  private readonly _sender: Address;
57
57
 
58
58
  constructor(sender: Address, data: TxData = {}) {
59
- super(data, { freeze: false });
59
+ super(data, { freeze: false, disableMaxInitCodeSizeCheck: true });
60
60
 
61
61
  this.common = this._getCommon();
62
62
  this._sender = sender;
@@ -47,7 +47,7 @@ export class ReadOnlyValidUnknownTypeTransaction extends Transaction {
47
47
  private readonly _actualType: number;
48
48
 
49
49
  constructor(sender: Address, type: number, data: TxData = {}) {
50
- super(data, { freeze: false });
50
+ super(data, { freeze: false, disableMaxInitCodeSizeCheck: true });
51
51
 
52
52
  this.common = this._getCommon();
53
53
  this._sender = sender;
@@ -292,11 +292,30 @@ export class Resolver {
292
292
  nodeModulesPath = path.dirname(nodeModulesPath);
293
293
  }
294
294
 
295
- await this._validateSourceNameExistenceAndCasing(
296
- nodeModulesPath,
297
- sourceName,
298
- true
299
- );
295
+ let absolutePath: string;
296
+ if (path.basename(nodeModulesPath) !== NODE_MODULES) {
297
+ // this can happen in monorepos that use PnP, in those
298
+ // cases we handle resolution differently
299
+ const packageRoot = path.dirname(packageJsonPath);
300
+ const pattern = new RegExp(`^${libraryName}/?`);
301
+ const fileName = sourceName.replace(pattern, "");
302
+
303
+ await this._validateSourceNameExistenceAndCasing(
304
+ packageRoot,
305
+ // TODO: this is _not_ a source name; we should handle this scenario in
306
+ // a better way
307
+ fileName,
308
+ true
309
+ );
310
+ absolutePath = path.join(packageRoot, fileName);
311
+ } else {
312
+ await this._validateSourceNameExistenceAndCasing(
313
+ nodeModulesPath,
314
+ sourceName,
315
+ true
316
+ );
317
+ absolutePath = path.join(nodeModulesPath, sourceName);
318
+ }
300
319
 
301
320
  const packageInfo: {
302
321
  name: string;
@@ -307,7 +326,7 @@ export class Resolver {
307
326
  return this._resolveFile(
308
327
  sourceName,
309
328
  // We resolve to the real path here, as we may be resolving a linked library
310
- await getRealPath(path.join(nodeModulesPath, sourceName)),
329
+ await getRealPath(absolutePath),
311
330
  libraryName,
312
331
  libraryVersion
313
332
  );
@@ -16,6 +16,7 @@ export enum HardforkName {
16
16
  ARROW_GLACIER = "arrowGlacier",
17
17
  GRAY_GLACIER = "grayGlacier",
18
18
  MERGE = "merge",
19
+ SHANGHAI = "shanghai",
19
20
  }
20
21
 
21
22
  const HARDFORKS_ORDER: HardforkName[] = [
@@ -34,6 +35,7 @@ const HARDFORKS_ORDER: HardforkName[] = [
34
35
  HardforkName.ARROW_GLACIER,
35
36
  HardforkName.GRAY_GLACIER,
36
37
  HardforkName.MERGE,
38
+ HardforkName.SHANGHAI,
37
39
  ];
38
40
 
39
41
  export function getHardforkName(name: string): HardforkName {