@metamask-previews/transaction-controller 37.3.0-preview-c77aebdb → 37.3.0-preview-8518e617
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 +4 -0
- package/dist/TransactionController.cjs +75 -19
- 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 +77 -21
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/types.cjs +2 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +3 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +3 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +1 -0
- package/dist/types.mjs.map +1 -1
- 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 +10 -1
- package/dist/utils/simulation.cjs.map +1 -1
- package/dist/utils/simulation.d.cts +5 -1
- package/dist/utils/simulation.d.cts.map +1 -1
- package/dist/utils/simulation.d.mts +5 -1
- package/dist/utils/simulation.d.mts.map +1 -1
- package/dist/utils/simulation.mjs +10 -1
- package/dist/utils/simulation.mjs.map +1 -1
- package/dist/utils/utils.cjs +25 -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 +20 -0
- package/dist/utils/utils.mjs.map +1 -1
- package/package.json +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,10 @@ 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
|
+
- **BREAKING:** Bump `@metamask/network-controller` peer dependency from `^21.0.0` to `^22.0.0` ([#4841](https://github.com/MetaMask/core/pull/4841))
|
|
13
|
+
|
|
10
14
|
## [37.3.0]
|
|
11
15
|
|
|
12
16
|
### 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_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_shouldReSimulateDueToThreshold, _TransactionController_shouldReSimulateDueToSecurityAlert, _TransactionController_isSecurityAlertUpdated, _TransactionController_isSimulationUpdated, _TransactionController_shouldReSimulateDueToTxParamUpdate, _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");
|
|
@@ -1932,7 +1932,9 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1932
1932
|
}, _TransactionController_getLayer1GasFeeFlows = function _TransactionController_getLayer1GasFeeFlows() {
|
|
1933
1933
|
return [new OptimismLayer1GasFeeFlow_1.OptimismLayer1GasFeeFlow(), new ScrollLayer1GasFeeFlow_1.ScrollLayer1GasFeeFlow()];
|
|
1934
1934
|
}, _TransactionController_updateTransactionInternal = function _TransactionController_updateTransactionInternal({ transactionId, note, skipHistory, skipValidation, }, callback) {
|
|
1935
|
-
let
|
|
1935
|
+
let isReSimulateNeedDueToTxParamsUpdated = false;
|
|
1936
|
+
let isReSimulateNeedDueToSecurityAlert = false;
|
|
1937
|
+
let isReSimulateNeedDueToThreshold = false;
|
|
1936
1938
|
this.update((state) => {
|
|
1937
1939
|
const index = state.transactions.findIndex(({ id }) => id === transactionId);
|
|
1938
1940
|
let transactionMeta = state.transactions[index];
|
|
@@ -1942,8 +1944,12 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1942
1944
|
transactionMeta.txParams = (0, utils_2.normalizeTransactionParams)(transactionMeta.txParams);
|
|
1943
1945
|
(0, validation_1.validateTxParams)(transactionMeta.txParams);
|
|
1944
1946
|
}
|
|
1945
|
-
|
|
1946
|
-
__classPrivateFieldGet(this, _TransactionController_instances, "m",
|
|
1947
|
+
isReSimulateNeedDueToTxParamsUpdated =
|
|
1948
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_shouldReSimulateDueToTxParamUpdate).call(this, transactionMeta);
|
|
1949
|
+
isReSimulateNeedDueToSecurityAlert =
|
|
1950
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_shouldReSimulateDueToSecurityAlert).call(this, transactionMeta);
|
|
1951
|
+
isReSimulateNeedDueToThreshold =
|
|
1952
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_shouldReSimulateDueToThreshold).call(this, transactionMeta);
|
|
1947
1953
|
const shouldSkipHistory = this.isHistoryDisabled || skipHistory;
|
|
1948
1954
|
if (!shouldSkipHistory) {
|
|
1949
1955
|
transactionMeta = (0, history_1.updateTransactionHistory)(transactionMeta, note ?? 'Transaction updated');
|
|
@@ -1951,31 +1957,73 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1951
1957
|
state.transactions[index] = transactionMeta;
|
|
1952
1958
|
});
|
|
1953
1959
|
const transactionMeta = this.getTransaction(transactionId);
|
|
1954
|
-
if (
|
|
1955
|
-
|
|
1960
|
+
if (isReSimulateNeedDueToTxParamsUpdated ||
|
|
1961
|
+
isReSimulateNeedDueToSecurityAlert ||
|
|
1962
|
+
isReSimulateNeedDueToThreshold) {
|
|
1963
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).call(this, transactionMeta, {
|
|
1964
|
+
isReSimulatedDueToSecurityAlert: isReSimulateNeedDueToSecurityAlert,
|
|
1965
|
+
isReSimulatedDueToThreshold: isReSimulateNeedDueToThreshold,
|
|
1966
|
+
}).catch((error) => {
|
|
1967
|
+
(0, logger_1.projectLogger)('Error updating simulation data', error);
|
|
1968
|
+
throw error;
|
|
1969
|
+
});
|
|
1956
1970
|
}
|
|
1957
1971
|
return transactionMeta;
|
|
1958
|
-
},
|
|
1972
|
+
}, _TransactionController_shouldReSimulateDueToThreshold = function _TransactionController_shouldReSimulateDueToThreshold(transactionMeta) {
|
|
1973
|
+
const isSimulationUpdated = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isSimulationUpdated).call(this, transactionMeta);
|
|
1974
|
+
if (!isSimulationUpdated) {
|
|
1975
|
+
return false;
|
|
1976
|
+
}
|
|
1977
|
+
const { simulationData, txParams: { value }, } = transactionMeta;
|
|
1978
|
+
const isSimulationDataAvailable = Boolean(simulationData);
|
|
1979
|
+
const simulationNativeBalanceDifference = simulationData?.nativeBalanceChange?.difference;
|
|
1980
|
+
const isTxValueAndSimulationNativeBalanceDefined = value !== undefined && simulationNativeBalanceDifference !== undefined;
|
|
1981
|
+
const isTxValueVsBalanceAbovePercentageThreshold = isTxValueAndSimulationNativeBalanceDefined &&
|
|
1982
|
+
!(0, utils_2.isPercentageDifferenceWithinThreshold)(simulationNativeBalanceDifference, value, 5);
|
|
1983
|
+
return (isSimulationDataAvailable && isTxValueVsBalanceAbovePercentageThreshold);
|
|
1984
|
+
}, _TransactionController_shouldReSimulateDueToSecurityAlert = function _TransactionController_shouldReSimulateDueToSecurityAlert(transactionMeta) {
|
|
1985
|
+
const isSecurityAlertUpdated = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isSecurityAlertUpdated).call(this, transactionMeta);
|
|
1986
|
+
if (!isSecurityAlertUpdated) {
|
|
1987
|
+
return false;
|
|
1988
|
+
}
|
|
1989
|
+
const { securityAlertResponse } = transactionMeta;
|
|
1990
|
+
const isMaliciousTransfer = securityAlertResponse?.result_type === types_1.BLOCKAID_RESULT_TYPE_MALICIOUS;
|
|
1991
|
+
return isMaliciousTransfer;
|
|
1992
|
+
}, _TransactionController_isSecurityAlertUpdated = function _TransactionController_isSecurityAlertUpdated(newTransactionMeta) {
|
|
1993
|
+
const { id: transactionId, securityAlertResponse: newSecurityAlertResponse, } = (0, lodash_1.cloneDeep)(newTransactionMeta);
|
|
1994
|
+
const { securityAlertResponse: originalSecurityAlertResponse } = (0, lodash_1.cloneDeep)(this.getTransaction(transactionId));
|
|
1995
|
+
return !(0, lodash_1.isEqual)(originalSecurityAlertResponse, newSecurityAlertResponse);
|
|
1996
|
+
}, _TransactionController_isSimulationUpdated = function _TransactionController_isSimulationUpdated(newTransactionMeta) {
|
|
1997
|
+
const { id: transactionId, simulationData: newSimulationData } = (0, lodash_1.cloneDeep)(newTransactionMeta);
|
|
1998
|
+
const newTransactionProps = {
|
|
1999
|
+
simulationData: newSimulationData,
|
|
2000
|
+
simulationNativeBalanceDifference: newSimulationData?.nativeBalanceChange?.difference,
|
|
2001
|
+
};
|
|
2002
|
+
const { simulationData: originalSimulationData } = (0, lodash_1.cloneDeep)(this.getTransaction(transactionId));
|
|
2003
|
+
const originalTransactionProps = {
|
|
2004
|
+
simulationData: originalSimulationData,
|
|
2005
|
+
simulationNativeBalanceDifference: originalSimulationData?.nativeBalanceChange?.difference,
|
|
2006
|
+
};
|
|
2007
|
+
// Skip the case where simulationData fetch started
|
|
2008
|
+
const shouldSkip = !newTransactionProps.simulationData;
|
|
2009
|
+
if (shouldSkip) {
|
|
2010
|
+
return false;
|
|
2011
|
+
}
|
|
2012
|
+
return !(0, lodash_1.isEqual)(originalTransactionProps, newTransactionProps);
|
|
2013
|
+
}, _TransactionController_shouldReSimulateDueToTxParamUpdate = function _TransactionController_shouldReSimulateDueToTxParamUpdate(newTransactionMeta) {
|
|
1959
2014
|
const { id: transactionId, txParams: newParams } = newTransactionMeta;
|
|
1960
2015
|
const originalParams = this.getTransaction(transactionId)?.txParams;
|
|
1961
2016
|
if (!originalParams || (0, lodash_1.isEqual)(originalParams, newParams)) {
|
|
1962
|
-
return
|
|
2017
|
+
return false;
|
|
1963
2018
|
}
|
|
1964
2019
|
const params = Object.keys(newParams);
|
|
1965
2020
|
const updatedProperties = params.filter((param) => newParams[param] !== originalParams[param]);
|
|
1966
2021
|
(0, logger_1.projectLogger)('Transaction parameters have been updated', transactionId, updatedProperties, originalParams, newParams);
|
|
1967
|
-
return updatedProperties;
|
|
1968
|
-
},
|
|
1969
|
-
|
|
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);
|
|
1973
|
-
throw error;
|
|
1974
|
-
});
|
|
1975
|
-
}
|
|
1976
|
-
}, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { traceContext } = {}) {
|
|
1977
|
-
const { id: transactionId, chainId, txParams } = transactionMeta;
|
|
2022
|
+
return ['to', 'value', 'data'].some((param) => updatedProperties.includes(param));
|
|
2023
|
+
}, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { traceContext, isReSimulatedDueToSecurityAlert, isReSimulatedDueToThreshold, } = {}) {
|
|
2024
|
+
const { id: transactionId, chainId, txParams, simulationData: prevSimulationData, } = transactionMeta;
|
|
1978
2025
|
const { from, to, value, data } = txParams;
|
|
2026
|
+
const isReSimulatedDueToSecurity = Boolean(isReSimulatedDueToSecurityAlert || isReSimulatedDueToThreshold);
|
|
1979
2027
|
let simulationData = {
|
|
1980
2028
|
error: {
|
|
1981
2029
|
code: types_1.SimulationErrorCode.Disabled,
|
|
@@ -1993,7 +2041,15 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1993
2041
|
to: to,
|
|
1994
2042
|
value: value,
|
|
1995
2043
|
data: data,
|
|
2044
|
+
}, {
|
|
2045
|
+
isReSimulatedDueToSecurity,
|
|
1996
2046
|
}));
|
|
2047
|
+
if (prevSimulationData && !(0, lodash_1.isEqual)(simulationData, prevSimulationData)) {
|
|
2048
|
+
simulationData = {
|
|
2049
|
+
...simulationData,
|
|
2050
|
+
isReSimulatedDueToSecurity,
|
|
2051
|
+
};
|
|
2052
|
+
}
|
|
1997
2053
|
}
|
|
1998
2054
|
const finalTransactionMeta = this.getTransaction(transactionId);
|
|
1999
2055
|
/* istanbul ignore if */
|