@metamask-previews/transaction-controller 48.0.0-preview-22387993 → 48.2.0-preview-c37ee1c7

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 (50) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/TransactionController.cjs +14 -17
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +5 -3
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +5 -3
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +14 -17
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs +1 -2
  11. package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs.map +1 -1
  12. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.cts.map +1 -1
  13. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts.map +1 -1
  14. package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs +1 -3
  15. package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs.map +1 -1
  16. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +3 -8
  17. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +1 -1
  18. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +1 -1
  19. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +1 -1
  20. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +3 -8
  21. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +1 -1
  22. package/dist/helpers/IncomingTransactionHelper.cjs +4 -12
  23. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
  24. package/dist/helpers/IncomingTransactionHelper.d.cts +1 -3
  25. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
  26. package/dist/helpers/IncomingTransactionHelper.d.mts +1 -3
  27. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
  28. package/dist/helpers/IncomingTransactionHelper.mjs +4 -12
  29. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  30. package/dist/types.cjs.map +1 -1
  31. package/dist/types.d.cts +14 -7
  32. package/dist/types.d.cts.map +1 -1
  33. package/dist/types.d.mts +14 -7
  34. package/dist/types.d.mts.map +1 -1
  35. package/dist/types.mjs.map +1 -1
  36. package/dist/utils/batch.cjs +15 -3
  37. package/dist/utils/batch.cjs.map +1 -1
  38. package/dist/utils/batch.d.cts +2 -2
  39. package/dist/utils/batch.d.cts.map +1 -1
  40. package/dist/utils/batch.d.mts +2 -2
  41. package/dist/utils/batch.d.mts.map +1 -1
  42. package/dist/utils/batch.mjs +16 -4
  43. package/dist/utils/batch.mjs.map +1 -1
  44. package/dist/utils/utils.cjs +3 -0
  45. package/dist/utils/utils.cjs.map +1 -1
  46. package/dist/utils/utils.d.cts.map +1 -1
  47. package/dist/utils/utils.d.mts.map +1 -1
  48. package/dist/utils/utils.mjs +3 -0
  49. package/dist/utils/utils.mjs.map +1 -1
  50. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,31 @@ 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
+ - Add optional batch ID to metadata ([#5462](https://github.com/MetaMask/core/pull/5462))
13
+ - Add optional `batchId` property to `TransactionMeta`.
14
+ - Add optional `transactionHash` to `TransactionReceipt`.
15
+ - Add optional `data` to `Log`.
16
+ - Add optional `batchId` to `TransactionBatchRequest`.
17
+ - Add optional `batchId` to `addTransaction` options.
18
+ - Throw if `batchId` already exists on a transaction.
19
+
20
+ ### Changed
21
+
22
+ - **BREAKING:** Add optional batch ID to metadata ([#5462](https://github.com/MetaMask/core/pull/5462))
23
+ - Change `batchId` in `TransactionBatchResult` to `Hex`.
24
+ - Return `batchId` from `addTransactionBatch` if provided.
25
+ - Generate random batch ID if no `batchId` provided.
26
+
27
+ ## [48.2.0]
28
+
29
+ ### Changed
30
+
31
+ - Normalize gas limit using `gas` and `gasLimit` properties ([#5396](https://github.com/MetaMask/core/pull/5396))
32
+
33
+ ## [48.1.0]
34
+
10
35
  ### Changed
11
36
 
12
37
  - Prevent external transactions to internal accounts if `data` included ([#5418](https://github.com/MetaMask/core/pull/5418))
@@ -1330,7 +1355,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1330
1355
 
1331
1356
  All changes listed after this point were applied to this package following the monorepo conversion.
1332
1357
 
1333
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.0.0...HEAD
1358
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.2.0...HEAD
1359
+ [48.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.1.0...@metamask/transaction-controller@48.2.0
1360
+ [48.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.0.0...@metamask/transaction-controller@48.1.0
1334
1361
  [48.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@47.0.0...@metamask/transaction-controller@48.0.0
1335
1362
  [47.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@46.0.0...@metamask/transaction-controller@47.0.0
1336
1363
  [46.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@45.1.0...@metamask/transaction-controller@46.0.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_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _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;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _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;
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");
@@ -171,7 +171,6 @@ class TransactionController extends base_controller_1.BaseController {
171
171
  this.approvingTransactionIds = new Set();
172
172
  _TransactionController_methodDataHelper.set(this, void 0);
173
173
  this.mutex = new async_mutex_1.Mutex();
174
- _TransactionController_incomingTransactionChainIds.set(this, new Set());
175
174
  _TransactionController_incomingTransactionHelper.set(this, void 0);
176
175
  _TransactionController_incomingTransactionOptions.set(this, void 0);
177
176
  _TransactionController_pendingTransactionOptions.set(this, void 0);
@@ -266,7 +265,6 @@ class TransactionController extends base_controller_1.BaseController {
266
265
  };
267
266
  __classPrivateFieldSet(this, _TransactionController_incomingTransactionHelper, new IncomingTransactionHelper_1.IncomingTransactionHelper({
268
267
  getCache: () => this.state.lastFetchedBlockNumbers,
269
- getChainIds: () => [...__classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f")],
270
268
  getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
271
269
  getLocalTransactions: () => this.state.transactions,
272
270
  includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
@@ -344,6 +342,7 @@ class TransactionController extends base_controller_1.BaseController {
344
342
  * @param txParams - Standard parameters for an Ethereum transaction.
345
343
  * @param options - Additional options to control how the transaction is added.
346
344
  * @param options.actionId - Unique ID to prevent duplicate requests.
345
+ * @param options.batchId - A custom ID for the batch this transaction belongs to.
347
346
  * @param options.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.
348
347
  * @param options.method - RPC method that requested the transaction.
349
348
  * @param options.nestedTransactions - Params for any nested transactions encoded in the data.
@@ -361,7 +360,7 @@ class TransactionController extends base_controller_1.BaseController {
361
360
  */
362
361
  async addTransaction(txParams, options) {
363
362
  (0, logger_1.projectLogger)('Adding transaction', txParams, options);
364
- const { actionId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
363
+ const { actionId, batchId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
365
364
  txParams = (0, utils_2.normalizeTransactionParams)(txParams);
366
365
  if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
367
366
  throw new Error(`Network client not found - ${networkClientId}`);
@@ -383,6 +382,11 @@ class TransactionController extends base_controller_1.BaseController {
383
382
  });
384
383
  const isEIP1559Compatible = await this.getEIP1559Compatibility(networkClientId);
385
384
  (0, validation_1.validateTxParams)(txParams, isEIP1559Compatible);
385
+ const isDuplicateBatchId = batchId?.length &&
386
+ this.state.transactions.some((tx) => tx.batchId?.toLowerCase() === batchId?.toLowerCase());
387
+ if (isDuplicateBatchId) {
388
+ throw rpc_errors_1.rpcErrors.invalidInput('Batch ID already exists');
389
+ }
386
390
  const dappSuggestedGasFees = this.generateDappSuggestedGasFees(txParams, origin);
387
391
  const chainId = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId);
388
392
  const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
@@ -396,6 +400,7 @@ class TransactionController extends base_controller_1.BaseController {
396
400
  : {
397
401
  // Add actionId to txMeta to check if same actionId is seen again
398
402
  actionId,
403
+ batchId,
399
404
  chainId,
400
405
  dappSuggestedGasFees,
401
406
  deviceConfirmedOn,
@@ -464,21 +469,13 @@ class TransactionController extends base_controller_1.BaseController {
464
469
  transactionMeta: addedTransactionMeta,
465
470
  };
466
471
  }
467
- startIncomingTransactionPolling(chainIds) {
468
- chainIds.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").add(chainId));
472
+ startIncomingTransactionPolling() {
469
473
  __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").start();
470
474
  }
471
- stopIncomingTransactionPolling(chainIds) {
472
- chainIds?.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").delete(chainId));
473
- if (!chainIds) {
474
- __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").clear();
475
- }
476
- if (__classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").size === 0) {
477
- __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").stop();
478
- }
475
+ stopIncomingTransactionPolling() {
476
+ __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").stop();
479
477
  }
480
- async updateIncomingTransactions(chainIds) {
481
- chainIds.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").add(chainId));
478
+ async updateIncomingTransactions() {
482
479
  await __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").update();
483
480
  }
484
481
  /**
@@ -1787,7 +1784,7 @@ class TransactionController extends base_controller_1.BaseController {
1787
1784
  }
1788
1785
  }
1789
1786
  exports.TransactionController = TransactionController;
1790
- _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionChainIds = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1787
+ _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1791
1788
  // If transaction is found for same action id, do not create a new transaction.
1792
1789
  if (this.getTransactionWithActionId(actionId)) {
1793
1790
  return;