@metamask-previews/transaction-controller 52.3.0-preview-cff14565 → 52.3.0-preview-8365901

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 (38) hide show
  1. package/CHANGELOG.md +0 -5
  2. package/dist/TransactionController.cjs +32 -18
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +17 -16
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +17 -16
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +32 -18
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/helpers/PendingTransactionTracker.cjs +7 -7
  11. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  12. package/dist/helpers/PendingTransactionTracker.d.cts +1 -2
  13. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  14. package/dist/helpers/PendingTransactionTracker.d.mts +1 -2
  15. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  16. package/dist/helpers/PendingTransactionTracker.mjs +7 -7
  17. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +1 -1
  20. package/dist/index.d.cts.map +1 -1
  21. package/dist/index.d.mts +1 -1
  22. package/dist/index.d.mts.map +1 -1
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/types.cjs.map +1 -1
  25. package/dist/types.d.cts +25 -11
  26. package/dist/types.d.cts.map +1 -1
  27. package/dist/types.d.mts +25 -11
  28. package/dist/types.d.mts.map +1 -1
  29. package/dist/types.mjs.map +1 -1
  30. package/dist/utils/validation.cjs +11 -10
  31. package/dist/utils/validation.cjs.map +1 -1
  32. package/dist/utils/validation.d.cts +1 -3
  33. package/dist/utils/validation.d.cts.map +1 -1
  34. package/dist/utils/validation.d.mts +1 -3
  35. package/dist/utils/validation.d.mts.map +1 -1
  36. package/dist/utils/validation.mjs +11 -10
  37. package/dist/utils/validation.mjs.map +1 -1
  38. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,11 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Changed
11
-
12
- - Throw if `chainId` in `TransactionParams` does not match `networkClientId` when calling `addTransaction` ([#5511](https://github.com/MetaMask/core/pull/5569))
13
- - Mark `chainId` in `TransactionParams` as deprecated.
14
-
15
10
  ## [52.3.0]
16
11
 
17
12
  ### Added
@@ -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_methodDataHelper, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publishBatchHook, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_rejectTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publishBatchHook, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_rejectTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -215,10 +215,9 @@ class TransactionController extends base_controller_1.BaseController {
215
215
  __classPrivateFieldSet(this, _TransactionController_trace, trace ?? ((_request, fn) => fn?.()), "f");
216
216
  this.afterSign = hooks?.afterSign ?? (() => true);
217
217
  this.beforeCheckPendingTransaction =
218
- hooks?.beforeCheckPendingTransaction ??
219
- /* istanbul ignore next */
220
- (() => true);
221
- this.beforePublish = hooks?.beforePublish ?? (() => true);
218
+ /* istanbul ignore next */
219
+ hooks?.beforeCheckPendingTransaction ?? (() => Promise.resolve(true));
220
+ this.beforePublish = hooks?.beforePublish ?? (() => Promise.resolve(true));
222
221
  this.getAdditionalSignArguments =
223
222
  hooks?.getAdditionalSignArguments ?? (() => []);
224
223
  this.publish =
@@ -294,6 +293,7 @@ class TransactionController extends base_controller_1.BaseController {
294
293
  });
295
294
  this.onBootCleanup();
296
295
  __classPrivateFieldGet(this, _TransactionController_checkForPendingTransactionAndStartPolling, "f").call(this);
296
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_registerActionHandlers).call(this);
297
297
  }
298
298
  /**
299
299
  * Stops polling and removes listeners to prepare the controller for garbage collection.
@@ -399,7 +399,7 @@ class TransactionController extends base_controller_1.BaseController {
399
399
  });
400
400
  const delegationAddressPromise = (0, eip7702_1.getDelegationAddress)(txParams.from, ethQuery).catch(() => undefined);
401
401
  const isEIP1559Compatible = await this.getEIP1559Compatibility(networkClientId);
402
- (0, validation_1.validateTxParams)(txParams, isEIP1559Compatible, chainId);
402
+ (0, validation_1.validateTxParams)(txParams, isEIP1559Compatible);
403
403
  if (!txParams.type) {
404
404
  // Determine transaction type based on transaction parameters and network compatibility
405
405
  (0, utils_2.setEnvelopeType)(txParams, isEIP1559Compatible);
@@ -682,6 +682,7 @@ class TransactionController extends base_controller_1.BaseController {
682
682
  this.onTransactionStatusChange(updatedTransactionMeta);
683
683
  // Intentional given potential duration of process.
684
684
  this.updatePostBalance(updatedTransactionMeta).catch((error) => {
685
+ /* istanbul ignore next */
685
686
  (0, logger_1.projectLogger)('Error while updating post balance', error);
686
687
  throw error;
687
688
  });
@@ -930,20 +931,16 @@ class TransactionController extends base_controller_1.BaseController {
930
931
  /**
931
932
  * Update a custodial transaction.
932
933
  *
933
- * @param transactionId - The ID of the transaction to update.
934
- * @param options - The custodial transaction options to update.
935
- * @param options.errorMessage - The error message to be assigned in case transaction status update to failed.
936
- * @param options.hash - The new hash value to be assigned.
937
- * @param options.status - The new status value to be assigned.
934
+ * @param request - The custodial transaction update request.
935
+ *
936
+ * @returns The updated transaction metadata.
938
937
  */
939
- updateCustodialTransaction(transactionId, { errorMessage, hash, status, }) {
938
+ updateCustodialTransaction(request) {
939
+ const { transactionId, errorMessage, hash, status, gasLimit, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, type, } = request;
940
940
  const transactionMeta = this.getTransaction(transactionId);
941
941
  if (!transactionMeta) {
942
942
  throw new Error(`Cannot update custodial transaction as no transaction metadata found`);
943
943
  }
944
- if (!transactionMeta.custodyId) {
945
- throw new Error('Transaction must be a custodian transaction');
946
- }
947
944
  if (status &&
948
945
  ![
949
946
  types_1.TransactionStatus.submitted,
@@ -959,11 +956,27 @@ class TransactionController extends base_controller_1.BaseController {
959
956
  if (updatedTransactionMeta.status === types_1.TransactionStatus.failed) {
960
957
  updatedTransactionMeta.error = (0, utils_2.normalizeTxError)(new Error(errorMessage));
961
958
  }
959
+ // Update txParams properties with a single pickBy operation
960
+ updatedTransactionMeta.txParams = (0, lodash_1.merge)({}, updatedTransactionMeta.txParams, (0, lodash_1.pickBy)({
961
+ gasLimit,
962
+ gasPrice,
963
+ maxFeePerGas,
964
+ maxPriorityFeePerGas,
965
+ nonce,
966
+ type,
967
+ }));
968
+ // Special case for type change to legacy
969
+ if (type === types_1.TransactionEnvelopeType.legacy) {
970
+ delete updatedTransactionMeta.txParams.maxFeePerGas;
971
+ delete updatedTransactionMeta.txParams.maxPriorityFeePerGas;
972
+ }
962
973
  this.updateTransaction(updatedTransactionMeta, `${controllerName}:updateCustodialTransaction - Custodial transaction updated`);
963
- if ([types_1.TransactionStatus.submitted, types_1.TransactionStatus.failed].includes(status)) {
974
+ if (status &&
975
+ [types_1.TransactionStatus.submitted, types_1.TransactionStatus.failed].includes(status)) {
964
976
  this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
965
977
  __classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${updatedTransactionMeta.id}:finished`, updatedTransactionMeta);
966
978
  }
979
+ return updatedTransactionMeta;
967
980
  }
968
981
  /**
969
982
  * Search transaction metadata for matching entries.
@@ -1380,7 +1393,7 @@ class TransactionController extends base_controller_1.BaseController {
1380
1393
  });
1381
1394
  this.onTransactionStatusChange(transactionMeta);
1382
1395
  const rawTx = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Sign', parentContext: traceContext }, () => this.signTransaction(transactionMeta));
1383
- if (!this.beforePublish(transactionMeta)) {
1396
+ if (!(await this.beforePublish(transactionMeta))) {
1384
1397
  (0, logger_1.projectLogger)('Skipping publishing transaction based on hook');
1385
1398
  this.messagingSystem.publish(`${controllerName}:transactionPublishingSkipped`, transactionMeta);
1386
1399
  return ApprovalState.SkippedViaBeforePublishHook;
@@ -1966,7 +1979,6 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1966
1979
  }),
1967
1980
  hooks: {
1968
1981
  beforeCheckPendingTransaction: this.beforeCheckPendingTransaction.bind(this),
1969
- beforePublish: this.beforePublish.bind(this),
1970
1982
  },
1971
1983
  });
1972
1984
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addPendingTransactionTrackerListeners).call(this, pendingTransactionTracker);
@@ -2184,6 +2196,8 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2184
2196
  isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
2185
2197
  txMeta: transactionMeta,
2186
2198
  });
2199
+ }, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
2200
+ this.messagingSystem.registerActionHandler(`${controllerName}:updateCustodialTransaction`, this.updateCustodialTransaction.bind(this));
2187
2201
  }, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
2188
2202
  this.update((state) => {
2189
2203
  const transactions = state.transactions.filter(({ id }) => id !== transactionId);