@metamask/transaction-controller 38.0.0 → 38.1.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 +18 -1
- package/dist/TransactionController.cjs +27 -29
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +28 -30
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +2 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +2 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/resimulate.cjs +172 -0
- package/dist/utils/resimulate.cjs.map +1 -0
- package/dist/utils/resimulate.d.cts +27 -0
- package/dist/utils/resimulate.d.cts.map +1 -0
- package/dist/utils/resimulate.d.mts +27 -0
- package/dist/utils/resimulate.d.mts.map +1 -0
- package/dist/utils/resimulate.mjs +168 -0
- package/dist/utils/resimulate.mjs.map +1 -0
- package/dist/utils/simulation-api.cjs.map +1 -1
- package/dist/utils/simulation-api.d.cts +3 -0
- package/dist/utils/simulation-api.d.cts.map +1 -1
- package/dist/utils/simulation-api.d.mts +3 -0
- package/dist/utils/simulation-api.d.mts.map +1 -1
- package/dist/utils/simulation-api.mjs.map +1 -1
- package/dist/utils/simulation.cjs +19 -3
- package/dist/utils/simulation.cjs.map +1 -1
- package/dist/utils/simulation.d.cts +7 -2
- package/dist/utils/simulation.d.cts.map +1 -1
- package/dist/utils/simulation.d.mts +7 -2
- package/dist/utils/simulation.d.mts.map +1 -1
- package/dist/utils/simulation.mjs +19 -3
- package/dist/utils/simulation.mjs.map +1 -1
- package/dist/utils/utils.cjs +27 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.d.cts +10 -0
- package/dist/utils/utils.d.cts.map +1 -1
- package/dist/utils/utils.d.mts +10 -0
- package/dist/utils/utils.d.mts.map +1 -1
- package/dist/utils/utils.mjs +29 -0
- package/dist/utils/utils.mjs.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [38.1.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Automatically re-simulate transactions based on security criteria ([#4792](https://github.com/MetaMask/core/pull/4792))
|
|
15
|
+
- If the security provider marks the transaction as malicious.
|
|
16
|
+
- If the simulated native balance change does not match the `value`.
|
|
17
|
+
- Set new `isUpdatedAfterSecurityCheck` property to `true` if the subsequent simulation response has changed.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Bump `@metamask/eth-json-rpc-provider` from `^4.1.5` to `^4.1.6` ([#4862](https://github.com/MetaMask/core/pull/4862))
|
|
22
|
+
- Bump `@metamask/approval-controller` from `^7.1.0` to `^7.1.1` ([#4862](https://github.com/MetaMask/core/pull/4862))
|
|
23
|
+
- Bump `@metamask/controller-utils` from `^11.4.0` to `^11.4.1` ([#4862](https://github.com/MetaMask/core/pull/4862))
|
|
24
|
+
- Bump `@metamask/base-controller` from `7.0.1` to `^7.0.2` ([#4862](https://github.com/MetaMask/core/pull/4862))
|
|
25
|
+
|
|
10
26
|
## [38.0.0]
|
|
11
27
|
|
|
12
28
|
### Changed
|
|
@@ -1072,7 +1088,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1072
1088
|
|
|
1073
1089
|
All changes listed after this point were applied to this package following the monorepo conversion.
|
|
1074
1090
|
|
|
1075
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.
|
|
1091
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.1.0...HEAD
|
|
1092
|
+
[38.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.0.0...@metamask/transaction-controller@38.1.0
|
|
1076
1093
|
[38.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@37.3.0...@metamask/transaction-controller@38.0.0
|
|
1077
1094
|
[37.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@37.2.0...@metamask/transaction-controller@37.3.0
|
|
1078
1095
|
[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,
|
|
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
|
|
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
|
-
|
|
1946
|
-
|
|
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 (
|
|
1955
|
-
__classPrivateFieldGet(this, _TransactionController_instances, "m",
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
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
|
-
|
|
1977
|
-
|
|
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
|
});
|