@metamask/transaction-controller 38.0.0 → 38.2.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 (46) hide show
  1. package/CHANGELOG.md +34 -1
  2. package/dist/TransactionController.cjs +27 -29
  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 +28 -30
  7. package/dist/TransactionController.mjs.map +1 -1
  8. package/dist/types.cjs +13 -44
  9. package/dist/types.cjs.map +1 -1
  10. package/dist/types.d.cts +14 -0
  11. package/dist/types.d.cts.map +1 -1
  12. package/dist/types.d.mts +14 -0
  13. package/dist/types.d.mts.map +1 -1
  14. package/dist/types.mjs +13 -44
  15. package/dist/types.mjs.map +1 -1
  16. package/dist/utils/resimulate.cjs +172 -0
  17. package/dist/utils/resimulate.cjs.map +1 -0
  18. package/dist/utils/resimulate.d.cts +27 -0
  19. package/dist/utils/resimulate.d.cts.map +1 -0
  20. package/dist/utils/resimulate.d.mts +27 -0
  21. package/dist/utils/resimulate.d.mts.map +1 -0
  22. package/dist/utils/resimulate.mjs +168 -0
  23. package/dist/utils/resimulate.mjs.map +1 -0
  24. package/dist/utils/simulation-api.cjs.map +1 -1
  25. package/dist/utils/simulation-api.d.cts +3 -0
  26. package/dist/utils/simulation-api.d.cts.map +1 -1
  27. package/dist/utils/simulation-api.d.mts +3 -0
  28. package/dist/utils/simulation-api.d.mts.map +1 -1
  29. package/dist/utils/simulation-api.mjs.map +1 -1
  30. package/dist/utils/simulation.cjs +19 -3
  31. package/dist/utils/simulation.cjs.map +1 -1
  32. package/dist/utils/simulation.d.cts +7 -2
  33. package/dist/utils/simulation.d.cts.map +1 -1
  34. package/dist/utils/simulation.d.mts +7 -2
  35. package/dist/utils/simulation.d.mts.map +1 -1
  36. package/dist/utils/simulation.mjs +19 -3
  37. package/dist/utils/simulation.mjs.map +1 -1
  38. package/dist/utils/utils.cjs +27 -1
  39. package/dist/utils/utils.cjs.map +1 -1
  40. package/dist/utils/utils.d.cts +10 -0
  41. package/dist/utils/utils.d.cts.map +1 -1
  42. package/dist/utils/utils.d.mts +10 -0
  43. package/dist/utils/utils.d.mts.map +1 -1
  44. package/dist/utils/utils.mjs +29 -0
  45. package/dist/utils/utils.mjs.map +1 -1
  46. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -7,6 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [38.2.0]
11
+
12
+ ### Added
13
+
14
+ - Add staking transaction types ([#4874](https://github.com/MetaMask/core/pull/4874))
15
+ - `stakingClaim`
16
+ - `stakingDeposit`
17
+ - `stakingUnstake`
18
+
19
+ ### Changed
20
+
21
+ - Bump `@metamask/controller-utils` from `^11.4.1` to `^11.4.2` ([#4870](https://github.com/MetaMask/core/pull/4870))
22
+ - Bump `@metamask/accounts-controller` from `^18.2.2` to `^18.2.3` ([#4870](https://github.com/MetaMask/core/pull/4870))
23
+ - Bump `@metamask/network-controller` from `^22.0.0` to `^22.0.1` ([#4870](https://github.com/MetaMask/core/pull/4870))
24
+
25
+ ## [38.1.0]
26
+
27
+ ### Added
28
+
29
+ - Automatically re-simulate transactions based on security criteria ([#4792](https://github.com/MetaMask/core/pull/4792))
30
+ - If the security provider marks the transaction as malicious.
31
+ - If the simulated native balance change does not match the `value`.
32
+ - Set new `isUpdatedAfterSecurityCheck` property to `true` if the subsequent simulation response has changed.
33
+
34
+ ### Changed
35
+
36
+ - Bump `@metamask/eth-json-rpc-provider` from `^4.1.5` to `^4.1.6` ([#4862](https://github.com/MetaMask/core/pull/4862))
37
+ - Bump `@metamask/approval-controller` from `^7.1.0` to `^7.1.1` ([#4862](https://github.com/MetaMask/core/pull/4862))
38
+ - Bump `@metamask/controller-utils` from `^11.4.0` to `^11.4.1` ([#4862](https://github.com/MetaMask/core/pull/4862))
39
+ - Bump `@metamask/base-controller` from `7.0.1` to `^7.0.2` ([#4862](https://github.com/MetaMask/core/pull/4862))
40
+
10
41
  ## [38.0.0]
11
42
 
12
43
  ### Changed
@@ -1072,7 +1103,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1072
1103
 
1073
1104
  All changes listed after this point were applied to this package following the monorepo conversion.
1074
1105
 
1075
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.0.0...HEAD
1106
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.2.0...HEAD
1107
+ [38.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.1.0...@metamask/transaction-controller@38.2.0
1108
+ [38.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.0.0...@metamask/transaction-controller@38.1.0
1076
1109
  [38.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@37.3.0...@metamask/transaction-controller@38.0.0
1077
1110
  [37.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@37.2.0...@metamask/transaction-controller@37.3.0
1078
1111
  [37.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@37.1.0...@metamask/transaction-controller@37.2.0
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_createNonceTracker, _TransactionController_createIncomingTransactionHelper, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removeIncomingTransactionHelperListeners, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_checkIfTransactionParamsUpdated, _TransactionController_onTransactionParamsUpdated, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getNetworkClientId, _TransactionController_getGlobalNetworkClientId, _TransactionController_getGlobalChainId, _TransactionController_isCustomNetwork, _TransactionController_getSelectedAccount, _TransactionController_updateSubmitHistory;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_createNonceTracker, _TransactionController_createIncomingTransactionHelper, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removeIncomingTransactionHelperListeners, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getNetworkClientId, _TransactionController_getGlobalNetworkClientId, _TransactionController_getGlobalChainId, _TransactionController_isCustomNetwork, _TransactionController_getSelectedAccount, _TransactionController_updateSubmitHistory;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = exports.HARDFORK = void 0;
19
19
  const common_1 = require("@ethereumjs/common");
@@ -50,6 +50,7 @@ const gas_flow_1 = require("./utils/gas-flow.cjs");
50
50
  const history_1 = require("./utils/history.cjs");
51
51
  const layer1_gas_fee_flow_1 = require("./utils/layer1-gas-fee-flow.cjs");
52
52
  const nonce_1 = require("./utils/nonce.cjs");
53
+ const resimulate_1 = require("./utils/resimulate.cjs");
53
54
  const retry_1 = require("./utils/retry.cjs");
54
55
  const simulation_1 = require("./utils/simulation.cjs");
55
56
  const swaps_1 = require("./utils/swaps.cjs");
@@ -1931,19 +1932,21 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
1931
1932
  return [new LineaGasFeeFlow_1.LineaGasFeeFlow(), new DefaultGasFeeFlow_1.DefaultGasFeeFlow()];
1932
1933
  }, _TransactionController_getLayer1GasFeeFlows = function _TransactionController_getLayer1GasFeeFlows() {
1933
1934
  return [new OptimismLayer1GasFeeFlow_1.OptimismLayer1GasFeeFlow(), new ScrollLayer1GasFeeFlow_1.ScrollLayer1GasFeeFlow()];
1934
- }, _TransactionController_updateTransactionInternal = function _TransactionController_updateTransactionInternal({ transactionId, note, skipHistory, skipValidation, }, callback) {
1935
- let updatedTransactionParams = [];
1935
+ }, _TransactionController_updateTransactionInternal = function _TransactionController_updateTransactionInternal({ transactionId, note, skipHistory, skipValidation, skipResimulateCheck, }, callback) {
1936
+ let resimulateResponse;
1936
1937
  this.update((state) => {
1937
1938
  const index = state.transactions.findIndex(({ id }) => id === transactionId);
1938
1939
  let transactionMeta = state.transactions[index];
1940
+ const originalTransactionMeta = (0, lodash_1.cloneDeep)(transactionMeta);
1939
1941
  // eslint-disable-next-line n/callback-return
1940
1942
  transactionMeta = callback(transactionMeta) ?? transactionMeta;
1941
1943
  if (skipValidation !== true) {
1942
1944
  transactionMeta.txParams = (0, utils_2.normalizeTransactionParams)(transactionMeta.txParams);
1943
1945
  (0, validation_1.validateTxParams)(transactionMeta.txParams);
1944
1946
  }
1945
- updatedTransactionParams =
1946
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_checkIfTransactionParamsUpdated).call(this, transactionMeta);
1947
+ if (!skipResimulateCheck && __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this)) {
1948
+ resimulateResponse = (0, resimulate_1.shouldResimulate)(originalTransactionMeta, transactionMeta);
1949
+ }
1947
1950
  const shouldSkipHistory = this.isHistoryDisabled || skipHistory;
1948
1951
  if (!shouldSkipHistory) {
1949
1952
  transactionMeta = (0, history_1.updateTransactionHistory)(transactionMeta, note ?? 'Transaction updated');
@@ -1951,30 +1954,17 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
1951
1954
  state.transactions[index] = transactionMeta;
1952
1955
  });
1953
1956
  const transactionMeta = this.getTransaction(transactionId);
1954
- if (updatedTransactionParams.length > 0) {
1955
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionParamsUpdated).call(this, transactionMeta, updatedTransactionParams);
1956
- }
1957
- return transactionMeta;
1958
- }, _TransactionController_checkIfTransactionParamsUpdated = function _TransactionController_checkIfTransactionParamsUpdated(newTransactionMeta) {
1959
- const { id: transactionId, txParams: newParams } = newTransactionMeta;
1960
- const originalParams = this.getTransaction(transactionId)?.txParams;
1961
- if (!originalParams || (0, lodash_1.isEqual)(originalParams, newParams)) {
1962
- return [];
1963
- }
1964
- const params = Object.keys(newParams);
1965
- const updatedProperties = params.filter((param) => newParams[param] !== originalParams[param]);
1966
- (0, logger_1.projectLogger)('Transaction parameters have been updated', transactionId, updatedProperties, originalParams, newParams);
1967
- return updatedProperties;
1968
- }, _TransactionController_onTransactionParamsUpdated = function _TransactionController_onTransactionParamsUpdated(transactionMeta, updatedParams) {
1969
- if (['to', 'value', 'data'].some((param) => updatedParams.includes(param))) {
1970
- (0, logger_1.projectLogger)('Updating simulation data due to transaction parameter update');
1971
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).call(this, transactionMeta).catch((error) => {
1972
- (0, logger_1.projectLogger)('Error updating simulation data', error);
1957
+ if (resimulateResponse?.resimulate) {
1958
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).call(this, transactionMeta, {
1959
+ blockTime: resimulateResponse.blockTime,
1960
+ }).catch((error) => {
1961
+ (0, logger_1.projectLogger)('Error during re-simulation', error);
1973
1962
  throw error;
1974
1963
  });
1975
1964
  }
1976
- }, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { traceContext } = {}) {
1977
- const { id: transactionId, chainId, txParams } = transactionMeta;
1965
+ return transactionMeta;
1966
+ }, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, traceContext, } = {}) {
1967
+ const { id: transactionId, chainId, txParams, simulationData: prevSimulationData, } = transactionMeta;
1978
1968
  const { from, to, value, data } = txParams;
1979
1969
  let simulationData = {
1980
1970
  error: {
@@ -1984,16 +1974,23 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
1984
1974
  tokenBalanceChanges: [],
1985
1975
  };
1986
1976
  if (__classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this)) {
1987
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
1988
- txMeta.simulationData = undefined;
1989
- });
1990
1977
  simulationData = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Simulate', parentContext: traceContext }, () => (0, simulation_1.getSimulationData)({
1991
1978
  chainId,
1992
1979
  from: from,
1993
1980
  to: to,
1994
1981
  value: value,
1995
1982
  data: data,
1983
+ }, {
1984
+ blockTime,
1996
1985
  }));
1986
+ if (blockTime &&
1987
+ prevSimulationData &&
1988
+ (0, resimulate_1.hasSimulationDataChanged)(prevSimulationData, simulationData)) {
1989
+ simulationData = {
1990
+ ...simulationData,
1991
+ isUpdatedAfterSecurityCheck: true,
1992
+ };
1993
+ }
1997
1994
  }
1998
1995
  const finalTransactionMeta = this.getTransaction(transactionId);
1999
1996
  /* istanbul ignore if */
@@ -2004,6 +2001,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
2004
2001
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2005
2002
  transactionId,
2006
2003
  note: 'TransactionController#updateSimulationData - Update simulation data',
2004
+ skipResimulateCheck: Boolean(blockTime),
2007
2005
  }, (txMeta) => {
2008
2006
  txMeta.simulationData = simulationData;
2009
2007
  });