@metamask-previews/transaction-controller 65.0.0-preview-95a687acf → 65.0.0-preview-4e0ae1bc9

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 (66) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/TransactionController.cjs +32 -1
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts.map +1 -1
  5. package/dist/TransactionController.d.mts.map +1 -1
  6. package/dist/TransactionController.mjs +32 -1
  7. package/dist/TransactionController.mjs.map +1 -1
  8. package/dist/api/simulation-api.cjs.map +1 -1
  9. package/dist/api/simulation-api.d.cts +2 -0
  10. package/dist/api/simulation-api.d.cts.map +1 -1
  11. package/dist/api/simulation-api.d.mts +2 -0
  12. package/dist/api/simulation-api.d.mts.map +1 -1
  13. package/dist/api/simulation-api.mjs.map +1 -1
  14. package/dist/helpers/PendingTransactionTracker.cjs +13 -2
  15. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  16. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  17. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  18. package/dist/helpers/PendingTransactionTracker.mjs +13 -2
  19. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  20. package/dist/index.cjs +3 -1
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.cts +1 -0
  23. package/dist/index.d.cts.map +1 -1
  24. package/dist/index.d.mts +1 -0
  25. package/dist/index.d.mts.map +1 -1
  26. package/dist/index.mjs +1 -0
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/types.cjs.map +1 -1
  29. package/dist/types.d.cts +22 -0
  30. package/dist/types.d.cts.map +1 -1
  31. package/dist/types.d.mts +22 -0
  32. package/dist/types.d.mts.map +1 -1
  33. package/dist/types.mjs.map +1 -1
  34. package/dist/utils/balance-changes.cjs +21 -1
  35. package/dist/utils/balance-changes.cjs.map +1 -1
  36. package/dist/utils/balance-changes.d.cts +2 -1
  37. package/dist/utils/balance-changes.d.cts.map +1 -1
  38. package/dist/utils/balance-changes.d.mts +2 -1
  39. package/dist/utils/balance-changes.d.mts.map +1 -1
  40. package/dist/utils/balance-changes.mjs +21 -1
  41. package/dist/utils/balance-changes.mjs.map +1 -1
  42. package/dist/utils/eip7702.cjs +33 -8
  43. package/dist/utils/eip7702.cjs.map +1 -1
  44. package/dist/utils/eip7702.d.cts +12 -0
  45. package/dist/utils/eip7702.d.cts.map +1 -1
  46. package/dist/utils/eip7702.d.mts +12 -0
  47. package/dist/utils/eip7702.d.mts.map +1 -1
  48. package/dist/utils/eip7702.mjs +31 -7
  49. package/dist/utils/eip7702.mjs.map +1 -1
  50. package/dist/utils/gas.cjs +12 -5
  51. package/dist/utils/gas.cjs.map +1 -1
  52. package/dist/utils/gas.d.cts +2 -1
  53. package/dist/utils/gas.d.cts.map +1 -1
  54. package/dist/utils/gas.d.mts +2 -1
  55. package/dist/utils/gas.d.mts.map +1 -1
  56. package/dist/utils/gas.mjs +12 -5
  57. package/dist/utils/gas.mjs.map +1 -1
  58. package/dist/utils/revert-reason.cjs +192 -0
  59. package/dist/utils/revert-reason.cjs.map +1 -0
  60. package/dist/utils/revert-reason.d.cts +57 -0
  61. package/dist/utils/revert-reason.d.cts.map +1 -0
  62. package/dist/utils/revert-reason.d.mts +57 -0
  63. package/dist/utils/revert-reason.d.mts.map +1 -0
  64. package/dist/utils/revert-reason.mjs +186 -0
  65. package/dist/utils/revert-reason.mjs.map +1 -0
  66. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -7,8 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - Export `decodeAuthorizationSignature` utility that decodes a 65-byte EIP-7702 authorization signature into RLP-canonical `r`, `s`, and `yParity` ([#8656](https://github.com/MetaMask/core/pull/8656))
13
+ - All `eth_sendRawTransaction` failures are prefixed `RPC submit:` for failure-surface attribution in error metrics
14
+ - Add `revert?: RevertData` field to `TransactionMeta` exposing decoded revert reason and raw data from gas estimation, simulation, and receipt replay ([#8589](https://github.com/MetaMask/core/pull/8589))
15
+
10
16
  ### Changed
11
17
 
18
+ - Bump `@metamask/accounts-controller` from `^37.2.0` to `^38.0.0` ([#8665](https://github.com/MetaMask/core/pull/8665))
12
19
  - Bump `@metamask/messenger` from `^1.1.1` to `^1.2.0` ([#8632](https://github.com/MetaMask/core/pull/8632))
13
20
  - Bump `@metamask/network-controller` from `^30.0.1` to `^30.1.0` ([#8636](https://github.com/MetaMask/core/pull/8636))
14
21
 
@@ -1338,6 +1338,13 @@ class TransactionController extends base_controller_1.BaseController {
1338
1338
  transactionMeta.txParams.gas = draftTransaction.txParams.gas;
1339
1339
  transactionMeta.simulationFails = draftTransaction.simulationFails;
1340
1340
  transactionMeta.gasLimitNoBuffer = draftTransaction.gasLimitNoBuffer;
1341
+ const draftGasRevert = draftTransaction.revert?.gas;
1342
+ if (draftGasRevert) {
1343
+ transactionMeta.revert = {
1344
+ ...transactionMeta.revert,
1345
+ gas: draftGasRevert,
1346
+ };
1347
+ }
1341
1348
  });
1342
1349
  return updatedTransactionMeta.txParams.data;
1343
1350
  }
@@ -1813,7 +1820,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1813
1820
  catch (error) {
1814
1821
  const errorObject = error;
1815
1822
  const errorMessage = errorObject?.data?.message ?? errorObject?.message ?? String(error);
1816
- throw new Error(errorMessage);
1823
+ throw new Error(`RPC submit: ${errorMessage}`);
1817
1824
  }
1818
1825
  }, _TransactionController_rejectTransaction = function _TransactionController_rejectTransaction(transactionId, actionId, error) {
1819
1826
  const transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
@@ -2269,6 +2276,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2269
2276
  let gasUsed;
2270
2277
  let gasFeeTokens = [];
2271
2278
  let isGasFeeSponsored = false;
2279
+ let simulationRevert;
2272
2280
  const isBalanceChangesSkipped = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isBalanceChangesSkipped).call(this, transactionMeta);
2273
2281
  if (__classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this) && !isBalanceChangesSkipped) {
2274
2282
  const balanceChangesResult = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Simulate', parentContext: traceContext }, () => (0, balance_changes_1.getBalanceChanges)({
@@ -2287,6 +2295,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2287
2295
  }));
2288
2296
  simulationData = balanceChangesResult.simulationData;
2289
2297
  gasUsed = balanceChangesResult.gasUsed;
2298
+ simulationRevert = balanceChangesResult.simulationRevert;
2290
2299
  if (blockTime &&
2291
2300
  prevSimulationData &&
2292
2301
  (0, ResimulateHelper_1.hasSimulationDataChanged)(prevSimulationData, simulationData)) {
@@ -2314,6 +2323,12 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2314
2323
  txMeta.gasUsed = gasUsed;
2315
2324
  if (!__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isBalanceChangesSkipped).call(this, txMeta)) {
2316
2325
  txMeta.simulationData = simulationData;
2326
+ if (simulationRevert) {
2327
+ txMeta.revert = {
2328
+ ...txMeta.revert,
2329
+ simulation: simulationRevert,
2330
+ };
2331
+ }
2317
2332
  }
2318
2333
  });
2319
2334
  (0, logger_1.projectLogger)('Updated simulation data', transactionId, updatedTransactionMeta);
@@ -2409,6 +2424,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2409
2424
  throw error;
2410
2425
  }, _TransactionController_failTransaction = function _TransactionController_failTransaction(transactionMeta, error, actionId) {
2411
2426
  let newTransactionMeta;
2427
+ const { revert: receiptRevert } = error;
2412
2428
  try {
2413
2429
  newTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2414
2430
  transactionId: transactionMeta.id,
@@ -2416,6 +2432,13 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2416
2432
  }, (draftTransactionMeta) => {
2417
2433
  draftTransactionMeta.status = types_1.TransactionStatus.failed;
2418
2434
  draftTransactionMeta.error = (0, utils_2.normalizeTxError)(error);
2435
+ if (receiptRevert === undefined) {
2436
+ return;
2437
+ }
2438
+ draftTransactionMeta.revert = {
2439
+ ...draftTransactionMeta.revert,
2440
+ receipt: receiptRevert,
2441
+ };
2419
2442
  });
2420
2443
  }
2421
2444
  catch (caughtError) {
@@ -2424,6 +2447,14 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2424
2447
  ...transactionMeta,
2425
2448
  status: types_1.TransactionStatus.failed,
2426
2449
  error: (0, utils_2.normalizeTxError)(error),
2450
+ ...(receiptRevert === undefined
2451
+ ? {}
2452
+ : {
2453
+ revert: {
2454
+ ...transactionMeta.revert,
2455
+ receipt: receiptRevert,
2456
+ },
2457
+ }),
2427
2458
  };
2428
2459
  }
2429
2460
  this.messenger.publish(`${controllerName}:transactionFailed`, {