@metamask-previews/transaction-controller 52.3.0-preview-cff14565 → 52.3.0-preview-8ea9b81f

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 (45) hide show
  1. package/dist/TransactionController.cjs +34 -17
  2. package/dist/TransactionController.cjs.map +1 -1
  3. package/dist/TransactionController.d.cts +17 -16
  4. package/dist/TransactionController.d.cts.map +1 -1
  5. package/dist/TransactionController.d.mts +17 -16
  6. package/dist/TransactionController.d.mts.map +1 -1
  7. package/dist/TransactionController.mjs +34 -17
  8. package/dist/TransactionController.mjs.map +1 -1
  9. package/dist/helpers/PendingTransactionTracker.cjs +7 -7
  10. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  11. package/dist/helpers/PendingTransactionTracker.d.cts +1 -2
  12. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  13. package/dist/helpers/PendingTransactionTracker.d.mts +1 -2
  14. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  15. package/dist/helpers/PendingTransactionTracker.mjs +7 -7
  16. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +1 -1
  19. package/dist/index.d.cts.map +1 -1
  20. package/dist/index.d.mts +1 -1
  21. package/dist/index.d.mts.map +1 -1
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/types.cjs.map +1 -1
  24. package/dist/types.d.cts +25 -8
  25. package/dist/types.d.cts.map +1 -1
  26. package/dist/types.d.mts +25 -8
  27. package/dist/types.d.mts.map +1 -1
  28. package/dist/types.mjs.map +1 -1
  29. package/dist/utils/feature-flags.cjs +21 -1
  30. package/dist/utils/feature-flags.cjs.map +1 -1
  31. package/dist/utils/feature-flags.d.cts +35 -0
  32. package/dist/utils/feature-flags.d.cts.map +1 -1
  33. package/dist/utils/feature-flags.d.mts +35 -0
  34. package/dist/utils/feature-flags.d.mts.map +1 -1
  35. package/dist/utils/feature-flags.mjs +19 -0
  36. package/dist/utils/feature-flags.mjs.map +1 -1
  37. package/dist/utils/gas.cjs +10 -4
  38. package/dist/utils/gas.cjs.map +1 -1
  39. package/dist/utils/gas.d.cts +5 -2
  40. package/dist/utils/gas.d.cts.map +1 -1
  41. package/dist/utils/gas.d.mts +5 -2
  42. package/dist/utils/gas.d.mts.map +1 -1
  43. package/dist/utils/gas.mjs +10 -4
  44. package/dist/utils/gas.mjs.map +1 -1
  45. package/package.json +1 -1
@@ -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.
@@ -568,6 +568,7 @@ class TransactionController extends base_controller_1.BaseController {
568
568
  chainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId),
569
569
  ethQuery,
570
570
  isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
571
+ messenger: this.messagingSystem,
571
572
  txParams: transaction,
572
573
  });
573
574
  return { gas: estimatedGas, simulationFails };
@@ -588,6 +589,7 @@ class TransactionController extends base_controller_1.BaseController {
588
589
  chainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId),
589
590
  ethQuery,
590
591
  isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
592
+ messenger: this.messagingSystem,
591
593
  txParams: transaction,
592
594
  });
593
595
  const gas = (0, gas_1.addGasBuffer)(estimatedGas, blockGasLimit, multiplier);
@@ -682,6 +684,7 @@ class TransactionController extends base_controller_1.BaseController {
682
684
  this.onTransactionStatusChange(updatedTransactionMeta);
683
685
  // Intentional given potential duration of process.
684
686
  this.updatePostBalance(updatedTransactionMeta).catch((error) => {
687
+ /* istanbul ignore next */
685
688
  (0, logger_1.projectLogger)('Error while updating post balance', error);
686
689
  throw error;
687
690
  });
@@ -930,20 +933,16 @@ class TransactionController extends base_controller_1.BaseController {
930
933
  /**
931
934
  * Update a custodial transaction.
932
935
  *
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.
936
+ * @param request - The custodial transaction update request.
937
+ *
938
+ * @returns The updated transaction metadata.
938
939
  */
939
- updateCustodialTransaction(transactionId, { errorMessage, hash, status, }) {
940
+ updateCustodialTransaction(request) {
941
+ const { transactionId, errorMessage, hash, status, gasLimit, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, type, } = request;
940
942
  const transactionMeta = this.getTransaction(transactionId);
941
943
  if (!transactionMeta) {
942
944
  throw new Error(`Cannot update custodial transaction as no transaction metadata found`);
943
945
  }
944
- if (!transactionMeta.custodyId) {
945
- throw new Error('Transaction must be a custodian transaction');
946
- }
947
946
  if (status &&
948
947
  ![
949
948
  types_1.TransactionStatus.submitted,
@@ -959,11 +958,27 @@ class TransactionController extends base_controller_1.BaseController {
959
958
  if (updatedTransactionMeta.status === types_1.TransactionStatus.failed) {
960
959
  updatedTransactionMeta.error = (0, utils_2.normalizeTxError)(new Error(errorMessage));
961
960
  }
961
+ // Update txParams properties with a single pickBy operation
962
+ updatedTransactionMeta.txParams = (0, lodash_1.merge)({}, updatedTransactionMeta.txParams, (0, lodash_1.pickBy)({
963
+ gasLimit,
964
+ gasPrice,
965
+ maxFeePerGas,
966
+ maxPriorityFeePerGas,
967
+ nonce,
968
+ type,
969
+ }));
970
+ // Special case for type change to legacy
971
+ if (type === types_1.TransactionEnvelopeType.legacy) {
972
+ delete updatedTransactionMeta.txParams.maxFeePerGas;
973
+ delete updatedTransactionMeta.txParams.maxPriorityFeePerGas;
974
+ }
962
975
  this.updateTransaction(updatedTransactionMeta, `${controllerName}:updateCustodialTransaction - Custodial transaction updated`);
963
- if ([types_1.TransactionStatus.submitted, types_1.TransactionStatus.failed].includes(status)) {
976
+ if (status &&
977
+ [types_1.TransactionStatus.submitted, types_1.TransactionStatus.failed].includes(status)) {
964
978
  this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
965
979
  __classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${updatedTransactionMeta.id}:finished`, updatedTransactionMeta);
966
980
  }
981
+ return updatedTransactionMeta;
967
982
  }
968
983
  /**
969
984
  * Search transaction metadata for matching entries.
@@ -1380,7 +1395,7 @@ class TransactionController extends base_controller_1.BaseController {
1380
1395
  });
1381
1396
  this.onTransactionStatusChange(transactionMeta);
1382
1397
  const rawTx = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Sign', parentContext: traceContext }, () => this.signTransaction(transactionMeta));
1383
- if (!this.beforePublish(transactionMeta)) {
1398
+ if (!(await this.beforePublish(transactionMeta))) {
1384
1399
  (0, logger_1.projectLogger)('Skipping publishing transaction based on hook');
1385
1400
  this.messagingSystem.publish(`${controllerName}:transactionPublishingSkipped`, transactionMeta);
1386
1401
  return ApprovalState.SkippedViaBeforePublishHook;
@@ -1966,7 +1981,6 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1966
1981
  }),
1967
1982
  hooks: {
1968
1983
  beforeCheckPendingTransaction: this.beforeCheckPendingTransaction.bind(this),
1969
- beforePublish: this.beforePublish.bind(this),
1970
1984
  },
1971
1985
  });
1972
1986
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addPendingTransactionTrackerListeners).call(this, pendingTransactionTracker);
@@ -2182,8 +2196,11 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2182
2196
  ethQuery,
2183
2197
  isCustomNetwork,
2184
2198
  isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
2199
+ messenger: this.messagingSystem,
2185
2200
  txMeta: transactionMeta,
2186
2201
  });
2202
+ }, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
2203
+ this.messagingSystem.registerActionHandler(`${controllerName}:updateCustodialTransaction`, this.updateCustodialTransaction.bind(this));
2187
2204
  }, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
2188
2205
  this.update((state) => {
2189
2206
  const transactions = state.transactions.filter(({ id }) => id !== transactionId);