@metamask/transaction-controller 56.0.0 → 56.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.
- package/CHANGELOG.md +32 -1
- package/dist/TransactionController.cjs +64 -18
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +10 -2
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +10 -2
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +66 -20
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/api/accounts-api.cjs +3 -2
- package/dist/api/accounts-api.cjs.map +1 -1
- package/dist/api/accounts-api.d.cts +1 -0
- package/dist/api/accounts-api.d.cts.map +1 -1
- package/dist/api/accounts-api.d.mts +1 -0
- package/dist/api/accounts-api.d.mts.map +1 -1
- package/dist/api/accounts-api.mjs +3 -2
- package/dist/api/accounts-api.mjs.map +1 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +2 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +1 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +1 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +1 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +2 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +1 -1
- package/dist/helpers/GasFeePoller.cjs +76 -48
- package/dist/helpers/GasFeePoller.cjs.map +1 -1
- package/dist/helpers/GasFeePoller.d.cts +15 -3
- package/dist/helpers/GasFeePoller.d.cts.map +1 -1
- package/dist/helpers/GasFeePoller.d.mts +15 -3
- package/dist/helpers/GasFeePoller.d.mts.map +1 -1
- package/dist/helpers/GasFeePoller.mjs +73 -46
- package/dist/helpers/GasFeePoller.mjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.cjs +22 -4
- package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.cts +5 -2
- package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.mts +5 -2
- package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.mjs +22 -4
- package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
- package/dist/helpers/PendingTransactionTracker.cjs +34 -3
- package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
- package/dist/helpers/PendingTransactionTracker.d.cts +12 -0
- package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
- package/dist/helpers/PendingTransactionTracker.d.mts +12 -0
- package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
- package/dist/helpers/PendingTransactionTracker.mjs +34 -3
- package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
- package/dist/hooks/SequentialPublishBatchHook.cjs +114 -0
- package/dist/hooks/SequentialPublishBatchHook.cjs.map +1 -0
- package/dist/hooks/SequentialPublishBatchHook.d.cts +24 -0
- package/dist/hooks/SequentialPublishBatchHook.d.cts.map +1 -0
- package/dist/hooks/SequentialPublishBatchHook.d.mts +24 -0
- package/dist/hooks/SequentialPublishBatchHook.d.mts.map +1 -0
- package/dist/hooks/SequentialPublishBatchHook.mjs +110 -0
- package/dist/hooks/SequentialPublishBatchHook.mjs.map +1 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +4 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +4 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/batch.cjs +12 -6
- package/dist/utils/batch.cjs.map +1 -1
- package/dist/utils/batch.d.cts +3 -0
- package/dist/utils/batch.d.cts.map +1 -1
- package/dist/utils/batch.d.mts +3 -0
- package/dist/utils/batch.d.mts.map +1 -1
- package/dist/utils/batch.mjs +12 -6
- package/dist/utils/batch.mjs.map +1 -1
- package/dist/utils/gas-fees.cjs +3 -7
- package/dist/utils/gas-fees.cjs.map +1 -1
- package/dist/utils/gas-fees.d.cts.map +1 -1
- package/dist/utils/gas-fees.d.mts.map +1 -1
- package/dist/utils/gas-fees.mjs +3 -7
- package/dist/utils/gas-fees.mjs.map +1 -1
- package/dist/utils/transaction-type.cjs +4 -1
- package/dist/utils/transaction-type.cjs.map +1 -1
- package/dist/utils/transaction-type.d.cts.map +1 -1
- package/dist/utils/transaction-type.d.mts.map +1 -1
- package/dist/utils/transaction-type.mjs +4 -1
- package/dist/utils/transaction-type.mjs.map +1 -1
- package/dist/utils/validation.cjs +1 -0
- package/dist/utils/validation.cjs.map +1 -1
- package/dist/utils/validation.d.cts +2 -1
- package/dist/utils/validation.d.cts.map +1 -1
- package/dist/utils/validation.d.mts +2 -1
- package/dist/utils/validation.d.mts.map +1 -1
- package/dist/utils/validation.mjs +1 -0
- package/dist/utils/validation.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [56.2.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add sequential batch support when `publishBatchHook` is not defined ([#5762](https://github.com/MetaMask/core/pull/5762))
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Fix `userFeeLevel` as `dappSuggested` initially when dApp suggested gas values for legacy transactions ([#5821](https://github.com/MetaMask/core/pull/5821))
|
|
19
|
+
- Fix `addTransaction` function to correctly identify a transaction as a `simpleSend` type when the recipient is a smart account ([#5822](https://github.com/MetaMask/core/pull/5822))
|
|
20
|
+
- Fix gas fee randomisation with many decimal places ([#5839](https://github.com/MetaMask/core/pull/5839))
|
|
21
|
+
|
|
22
|
+
## [56.1.0]
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Automatically update gas fee properties in `txParams` when `updateTransactionGasFees` method is called with `userFeeLevel` ([#5800](https://github.com/MetaMask/core/pull/5800))
|
|
27
|
+
- Support additional debug of incoming transaction requests ([#5803](https://github.com/MetaMask/core/pull/5803))
|
|
28
|
+
- Add optional `incomingTransactions.client` constructor property.
|
|
29
|
+
- Add optional `tags` property to `updateIncomingTransactions` method.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- Bump `@metamask/controller-utils` to `^11.9.0` ([#5812](https://github.com/MetaMask/core/pull/5812))
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Throw correct error code if upgrade rejected ([#5814](https://github.com/MetaMask/core/pull/5814))
|
|
38
|
+
|
|
10
39
|
## [56.0.0]
|
|
11
40
|
|
|
12
41
|
### Changed
|
|
@@ -1584,7 +1613,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1584
1613
|
|
|
1585
1614
|
All changes listed after this point were applied to this package following the monorepo conversion.
|
|
1586
1615
|
|
|
1587
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@56.
|
|
1616
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@56.2.0...HEAD
|
|
1617
|
+
[56.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@56.1.0...@metamask/transaction-controller@56.2.0
|
|
1618
|
+
[56.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@56.0.0...@metamask/transaction-controller@56.1.0
|
|
1588
1619
|
[56.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@55.0.2...@metamask/transaction-controller@56.0.0
|
|
1589
1620
|
[55.0.2]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@55.0.1...@metamask/transaction-controller@55.0.2
|
|
1590
1621
|
[55.0.1]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@55.0.0...@metamask/transaction-controller@55.0.1
|
|
@@ -259,6 +259,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
259
259
|
});
|
|
260
260
|
};
|
|
261
261
|
__classPrivateFieldSet(this, _TransactionController_incomingTransactionHelper, new IncomingTransactionHelper_1.IncomingTransactionHelper({
|
|
262
|
+
client: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").client,
|
|
262
263
|
getCache: () => this.state.lastFetchedBlockNumbers,
|
|
263
264
|
getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
|
|
264
265
|
getLocalTransactions: () => this.state.transactions,
|
|
@@ -309,6 +310,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
309
310
|
* @returns Result object containing the generated batch ID.
|
|
310
311
|
*/
|
|
311
312
|
async addTransactionBatch(request) {
|
|
313
|
+
const { blockTracker } = this.messagingSystem.call(`NetworkController:getNetworkClientById`, request.networkClientId);
|
|
312
314
|
return await (0, batch_1.addTransactionBatch)({
|
|
313
315
|
addTransaction: this.addTransaction.bind(this),
|
|
314
316
|
getChainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).bind(this),
|
|
@@ -320,6 +322,13 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
320
322
|
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
321
323
|
request,
|
|
322
324
|
updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
|
|
325
|
+
publishTransaction: (ethQuery, transactionMeta) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, ethQuery, transactionMeta),
|
|
326
|
+
getPendingTransactionTracker: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).call(this, {
|
|
327
|
+
provider: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getProvider).call(this, { networkClientId }),
|
|
328
|
+
blockTracker,
|
|
329
|
+
chainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId),
|
|
330
|
+
networkClientId,
|
|
331
|
+
}),
|
|
323
332
|
});
|
|
324
333
|
}
|
|
325
334
|
/**
|
|
@@ -494,8 +503,14 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
494
503
|
stopIncomingTransactionPolling() {
|
|
495
504
|
__classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").stop();
|
|
496
505
|
}
|
|
497
|
-
|
|
498
|
-
|
|
506
|
+
/**
|
|
507
|
+
* Update the incoming transactions by polling the remote transaction source.
|
|
508
|
+
*
|
|
509
|
+
* @param request - Request object.
|
|
510
|
+
* @param request.tags - Additional tags to identify the source of the request.
|
|
511
|
+
*/
|
|
512
|
+
async updateIncomingTransactions({ tags } = {}) {
|
|
513
|
+
await __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").update({ tags });
|
|
499
514
|
}
|
|
500
515
|
/**
|
|
501
516
|
* Attempts to cancel a transaction based on its ID by setting its status to "rejected"
|
|
@@ -736,35 +751,66 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
736
751
|
* @param gasValues.userFeeLevel - Estimate level user selected.
|
|
737
752
|
* @returns The updated transactionMeta.
|
|
738
753
|
*/
|
|
739
|
-
updateTransactionGasFees(transactionId, { defaultGasEstimates, estimateUsed, estimateSuggested, gas, gasLimit, gasPrice, maxPriorityFeePerGas, maxFeePerGas, originalGasEstimate, userEditedGasLimit, userFeeLevel, }) {
|
|
754
|
+
updateTransactionGasFees(transactionId, { defaultGasEstimates, estimateUsed, estimateSuggested, gas, gasLimit, gasPrice, maxPriorityFeePerGas, maxFeePerGas, originalGasEstimate, userEditedGasLimit, userFeeLevel: userFeeLevelParam, }) {
|
|
740
755
|
const transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
|
|
741
756
|
if (!transactionMeta) {
|
|
742
757
|
throw new Error(`Cannot update transaction as no transaction metadata found`);
|
|
743
758
|
}
|
|
744
759
|
(0, utils_2.validateIfTransactionUnapproved)(transactionMeta, 'updateTransactionGasFees');
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
760
|
+
const clonedTransactionMeta = (0, lodash_1.cloneDeep)(transactionMeta);
|
|
761
|
+
const isTransactionGasFeeEstimatesExists = transactionMeta.gasFeeEstimates;
|
|
762
|
+
const isAutomaticGasFeeUpdateEnabled = __classPrivateFieldGet(this, _TransactionController_isAutomaticGasFeeUpdateEnabled, "f").call(this, transactionMeta);
|
|
763
|
+
const userFeeLevel = userFeeLevelParam;
|
|
764
|
+
const isOneOfFeeLevelSelected = Object.values(types_1.GasFeeEstimateLevel).includes(userFeeLevel);
|
|
765
|
+
const shouldUpdateTxParamsGasFees = isTransactionGasFeeEstimatesExists &&
|
|
766
|
+
isAutomaticGasFeeUpdateEnabled &&
|
|
767
|
+
isOneOfFeeLevelSelected;
|
|
768
|
+
if (shouldUpdateTxParamsGasFees) {
|
|
769
|
+
(0, GasFeePoller_1.updateTransactionGasEstimates)({
|
|
770
|
+
txMeta: clonedTransactionMeta,
|
|
771
|
+
userFeeLevel,
|
|
772
|
+
});
|
|
773
|
+
}
|
|
774
|
+
const txParamsUpdate = {
|
|
775
|
+
gas,
|
|
776
|
+
gasLimit,
|
|
777
|
+
};
|
|
778
|
+
if (shouldUpdateTxParamsGasFees) {
|
|
779
|
+
// Get updated values from clonedTransactionMeta if we're using automated fee updates
|
|
780
|
+
Object.assign(txParamsUpdate, {
|
|
781
|
+
gasPrice: clonedTransactionMeta.txParams.gasPrice,
|
|
782
|
+
maxPriorityFeePerGas: clonedTransactionMeta.txParams.maxPriorityFeePerGas,
|
|
783
|
+
maxFeePerGas: clonedTransactionMeta.txParams.maxFeePerGas,
|
|
784
|
+
});
|
|
785
|
+
}
|
|
786
|
+
else {
|
|
787
|
+
Object.assign(txParamsUpdate, {
|
|
749
788
|
gasPrice,
|
|
750
789
|
maxPriorityFeePerGas,
|
|
751
790
|
maxFeePerGas,
|
|
752
|
-
}
|
|
791
|
+
});
|
|
792
|
+
}
|
|
793
|
+
const transactionGasFees = {
|
|
794
|
+
txParams: (0, lodash_1.pickBy)(txParamsUpdate),
|
|
753
795
|
defaultGasEstimates,
|
|
754
796
|
estimateUsed,
|
|
755
797
|
estimateSuggested,
|
|
756
798
|
originalGasEstimate,
|
|
757
799
|
userEditedGasLimit,
|
|
758
800
|
userFeeLevel,
|
|
759
|
-
// TODO: Replace `any` with type
|
|
760
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
761
801
|
};
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
802
|
+
const filteredTransactionGasFees = (0, lodash_1.pickBy)(transactionGasFees);
|
|
803
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
804
|
+
transactionId,
|
|
805
|
+
note: `${controllerName}:updateTransactionGasFees - gas values updated`,
|
|
806
|
+
skipResimulateCheck: true,
|
|
807
|
+
}, (draftTxMeta) => {
|
|
808
|
+
const { txParams, ...otherProps } = filteredTransactionGasFees;
|
|
809
|
+
Object.assign(draftTxMeta, otherProps);
|
|
810
|
+
if (txParams) {
|
|
811
|
+
Object.assign(draftTxMeta.txParams, txParams);
|
|
812
|
+
}
|
|
813
|
+
});
|
|
768
814
|
return __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
|
|
769
815
|
}
|
|
770
816
|
/**
|
|
@@ -2042,7 +2088,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2042
2088
|
(0, logger_1.projectLogger)('Updated simulation data', transactionId, simulationData);
|
|
2043
2089
|
}, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
|
|
2044
2090
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
|
|
2045
|
-
(0, GasFeePoller_1.
|
|
2091
|
+
(0, GasFeePoller_1.updateTransactionGasProperties)({
|
|
2046
2092
|
txMeta,
|
|
2047
2093
|
gasFeeEstimates,
|
|
2048
2094
|
gasFeeEstimatesLoaded,
|
|
@@ -2105,7 +2151,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2105
2151
|
}, _TransactionController_isRejectError = function _TransactionController_isRejectError(error) {
|
|
2106
2152
|
return [
|
|
2107
2153
|
rpc_errors_1.errorCodes.provider.userRejectedRequest,
|
|
2108
|
-
|
|
2154
|
+
validation_1.ErrorCode.RejectedUpgrade,
|
|
2109
2155
|
].includes(error.code);
|
|
2110
2156
|
}, _TransactionController_rejectTransactionAndThrow = function _TransactionController_rejectTransactionAndThrow(transactionId, actionId, error) {
|
|
2111
2157
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).call(this, transactionId, actionId, error);
|