@metamask-previews/transaction-controller 69.4.0-preview-b5147cfe0 → 69.4.0-preview-3dcc9952b
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 +8 -0
- package/dist/TransactionController.cjs +77 -58
- 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 -58
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/helpers/ResimulateHelper.cjs +7 -1
- package/dist/helpers/ResimulateHelper.cjs.map +1 -1
- package/dist/helpers/ResimulateHelper.d.cts.map +1 -1
- package/dist/helpers/ResimulateHelper.d.mts.map +1 -1
- package/dist/helpers/ResimulateHelper.mjs +8 -2
- package/dist/helpers/ResimulateHelper.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,14 @@ 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
|
+
- Bump `@metamask/network-controller` from `^35.0.0` to `^35.0.1` ([#9758](https://github.com/MetaMask/core/pull/9758))
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Refresh gas fee token quotes independently of balance changes for enforced-simulation transactions, and prevent stale simulation responses from overwriting newer transaction state. ([#9757](https://github.com/MetaMask/core/pull/9757))
|
|
17
|
+
|
|
10
18
|
## [69.4.0]
|
|
11
19
|
|
|
12
20
|
### Added
|
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_getSimulationConfig, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_isTimeoutEnabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_isBalanceChangesSkipped, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_onGasFeePollerTransactionBatchUpdate, _TransactionController_updateTransactionBatch, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_defaultPublishHook, _TransactionController_getGasFeeTokens;
|
|
13
|
+
var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_getSimulationConfig, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_isTimeoutEnabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_simulationRequestTokens, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_isBalanceChangesSkipped, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_onGasFeePollerTransactionBatchUpdate, _TransactionController_updateTransactionBatch, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_defaultPublishHook, _TransactionController_getGasFeeTokens;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -210,6 +210,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
210
210
|
_TransactionController_publishBatchHook.set(this, void 0);
|
|
211
211
|
_TransactionController_signAbortCallbacks.set(this, new Map());
|
|
212
212
|
_TransactionController_skipSimulationTransactionIds.set(this, new Set());
|
|
213
|
+
_TransactionController_simulationRequestTokens.set(this, new Map());
|
|
213
214
|
_TransactionController_testGasFeeFlows.set(this, void 0);
|
|
214
215
|
_TransactionController_trace.set(this, void 0);
|
|
215
216
|
_TransactionController_checkForPendingTransactionAndStartPolling.set(this, () => {
|
|
@@ -1462,7 +1463,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1462
1463
|
}
|
|
1463
1464
|
}
|
|
1464
1465
|
exports.TransactionController = TransactionController;
|
|
1465
|
-
_TransactionController_afterAdd = new WeakMap(), _TransactionController_approvingTransactionIds = new WeakMap(), _TransactionController_beforeCheckPendingTransaction = new WeakMap(), _TransactionController_beforePublish = new WeakMap(), _TransactionController_beforeSign = new WeakMap(), _TransactionController_gasFeeFlows = new WeakMap(), _TransactionController_getPermittedAccounts = new WeakMap(), _TransactionController_getSavedGasFees = new WeakMap(), _TransactionController_getSimulationConfig = new WeakMap(), _TransactionController_internalEvents = new WeakMap(), _TransactionController_isAutomaticGasFeeUpdateEnabled = new WeakMap(), _TransactionController_isEIP7702GasFeeTokensEnabled = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_isSwapsDisabled = new WeakMap(), _TransactionController_isTimeoutEnabled = new WeakMap(), _TransactionController_layer1GasFeeFlows = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_publish = new WeakMap(), _TransactionController_publishBatchHook = new WeakMap(), _TransactionController_signAbortCallbacks = new WeakMap(), _TransactionController_skipSimulationTransactionIds = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_trace = 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, }) {
|
|
1466
|
+
_TransactionController_afterAdd = new WeakMap(), _TransactionController_approvingTransactionIds = new WeakMap(), _TransactionController_beforeCheckPendingTransaction = new WeakMap(), _TransactionController_beforePublish = new WeakMap(), _TransactionController_beforeSign = new WeakMap(), _TransactionController_gasFeeFlows = new WeakMap(), _TransactionController_getPermittedAccounts = new WeakMap(), _TransactionController_getSavedGasFees = new WeakMap(), _TransactionController_getSimulationConfig = new WeakMap(), _TransactionController_internalEvents = new WeakMap(), _TransactionController_isAutomaticGasFeeUpdateEnabled = new WeakMap(), _TransactionController_isEIP7702GasFeeTokensEnabled = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_isSwapsDisabled = new WeakMap(), _TransactionController_isTimeoutEnabled = new WeakMap(), _TransactionController_layer1GasFeeFlows = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_publish = new WeakMap(), _TransactionController_publishBatchHook = new WeakMap(), _TransactionController_signAbortCallbacks = new WeakMap(), _TransactionController_skipSimulationTransactionIds = new WeakMap(), _TransactionController_simulationRequestTokens = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_trace = 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, }) {
|
|
1466
1467
|
if (gasValues) {
|
|
1467
1468
|
// Not good practice to reassign a parameter but temporarily avoiding a larger refactor.
|
|
1468
1469
|
// eslint-disable-next-line no-param-reassign
|
|
@@ -2207,65 +2208,83 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2207
2208
|
let gasFeeTokens = [];
|
|
2208
2209
|
let isGasFeeSponsored = false;
|
|
2209
2210
|
let simulationRevert;
|
|
2210
|
-
const
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
isGasFeeSponsored = gasFeeTokensResponse?.isGasFeeSponsored ?? false;
|
|
2240
|
-
}
|
|
2241
|
-
const latestTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
|
|
2242
|
-
/* istanbul ignore if */
|
|
2243
|
-
if (!latestTransactionMeta) {
|
|
2244
|
-
(0, logger_js_1.projectLogger)('Cannot update simulation data as transaction not found', transactionId, simulationData);
|
|
2245
|
-
return;
|
|
2246
|
-
}
|
|
2247
|
-
const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
2248
|
-
transactionId,
|
|
2249
|
-
skipResimulateCheck: Boolean(blockTime),
|
|
2250
|
-
}, (txMeta) => {
|
|
2251
|
-
txMeta.gasFeeTokens = gasFeeTokens;
|
|
2252
|
-
txMeta.isGasFeeSponsored =
|
|
2253
|
-
txMeta.isGasFeeSponsored ?? isGasFeeSponsored;
|
|
2254
|
-
if (txMeta.isGasFeeSponsored) {
|
|
2255
|
-
txMeta.isExternalSign = true;
|
|
2256
|
-
}
|
|
2257
|
-
txMeta.gasUsed = gasUsed;
|
|
2258
|
-
if (!__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isBalanceChangesSkipped).call(this, txMeta)) {
|
|
2259
|
-
txMeta.simulationData = simulationData;
|
|
2260
|
-
if (simulationRevert) {
|
|
2261
|
-
txMeta.revert = {
|
|
2262
|
-
...txMeta.revert,
|
|
2263
|
-
simulation: simulationRevert,
|
|
2211
|
+
const simulationRequestToken = Symbol(transactionId);
|
|
2212
|
+
__classPrivateFieldGet(this, _TransactionController_simulationRequestTokens, "f").set(transactionId, simulationRequestToken);
|
|
2213
|
+
try {
|
|
2214
|
+
const isSimulationEnabled = __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this);
|
|
2215
|
+
const isBalanceChangesSkipped = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isBalanceChangesSkipped).call(this, transactionMeta);
|
|
2216
|
+
if (isSimulationEnabled && !isBalanceChangesSkipped) {
|
|
2217
|
+
const balanceChangesResult = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Simulate', parentContext: traceContext }, () => (0, balance_changes_js_1.getBalanceChanges)({
|
|
2218
|
+
blockTime,
|
|
2219
|
+
chainId,
|
|
2220
|
+
messenger: this.messenger,
|
|
2221
|
+
networkClientId,
|
|
2222
|
+
getSimulationConfig: (url, opts) => {
|
|
2223
|
+
return __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f").call(this, url, {
|
|
2224
|
+
txMeta: transactionMeta,
|
|
2225
|
+
...opts,
|
|
2226
|
+
});
|
|
2227
|
+
},
|
|
2228
|
+
nestedTransactions,
|
|
2229
|
+
txParams,
|
|
2230
|
+
}));
|
|
2231
|
+
simulationData = balanceChangesResult.simulationData;
|
|
2232
|
+
gasUsed = balanceChangesResult.gasUsed;
|
|
2233
|
+
simulationRevert = balanceChangesResult.simulationRevert;
|
|
2234
|
+
if (blockTime &&
|
|
2235
|
+
prevSimulationData &&
|
|
2236
|
+
(0, ResimulateHelper_js_1.hasSimulationDataChanged)(prevSimulationData, simulationData)) {
|
|
2237
|
+
simulationData = {
|
|
2238
|
+
...simulationData,
|
|
2239
|
+
isUpdatedAfterSecurityCheck: true,
|
|
2264
2240
|
};
|
|
2265
2241
|
}
|
|
2266
2242
|
}
|
|
2267
|
-
|
|
2268
|
-
|
|
2243
|
+
if (isSimulationEnabled) {
|
|
2244
|
+
const gasFeeTokensResponse = await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getGasFeeTokens).call(this, transactionMeta);
|
|
2245
|
+
gasFeeTokens = gasFeeTokensResponse?.gasFeeTokens ?? [];
|
|
2246
|
+
isGasFeeSponsored = gasFeeTokensResponse?.isGasFeeSponsored ?? false;
|
|
2247
|
+
}
|
|
2248
|
+
if (__classPrivateFieldGet(this, _TransactionController_simulationRequestTokens, "f").get(transactionId) !==
|
|
2249
|
+
simulationRequestToken) {
|
|
2250
|
+
(0, logger_js_1.projectLogger)('Ignoring stale simulation data', transactionId);
|
|
2251
|
+
return;
|
|
2252
|
+
}
|
|
2253
|
+
const latestTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
|
|
2254
|
+
/* istanbul ignore if */
|
|
2255
|
+
if (!latestTransactionMeta) {
|
|
2256
|
+
(0, logger_js_1.projectLogger)('Cannot update simulation data as transaction not found', transactionId, simulationData);
|
|
2257
|
+
return;
|
|
2258
|
+
}
|
|
2259
|
+
const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
2260
|
+
transactionId,
|
|
2261
|
+
skipResimulateCheck: Boolean(blockTime),
|
|
2262
|
+
}, (txMeta) => {
|
|
2263
|
+
txMeta.gasFeeTokens = gasFeeTokens;
|
|
2264
|
+
txMeta.isGasFeeSponsored =
|
|
2265
|
+
txMeta.isGasFeeSponsored ?? isGasFeeSponsored;
|
|
2266
|
+
if (txMeta.isGasFeeSponsored) {
|
|
2267
|
+
txMeta.isExternalSign = true;
|
|
2268
|
+
}
|
|
2269
|
+
if (!__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isBalanceChangesSkipped).call(this, txMeta)) {
|
|
2270
|
+
txMeta.gasUsed = gasUsed;
|
|
2271
|
+
txMeta.simulationData = simulationData;
|
|
2272
|
+
if (simulationRevert) {
|
|
2273
|
+
txMeta.revert = {
|
|
2274
|
+
...txMeta.revert,
|
|
2275
|
+
simulation: simulationRevert,
|
|
2276
|
+
};
|
|
2277
|
+
}
|
|
2278
|
+
}
|
|
2279
|
+
});
|
|
2280
|
+
(0, logger_js_1.projectLogger)('Updated simulation data', transactionId, updatedTransactionMeta);
|
|
2281
|
+
}
|
|
2282
|
+
finally {
|
|
2283
|
+
if (__classPrivateFieldGet(this, _TransactionController_simulationRequestTokens, "f").get(transactionId) ===
|
|
2284
|
+
simulationRequestToken) {
|
|
2285
|
+
__classPrivateFieldGet(this, _TransactionController_simulationRequestTokens, "f").delete(transactionId);
|
|
2286
|
+
}
|
|
2287
|
+
}
|
|
2269
2288
|
}, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
|
|
2270
2289
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, (txMeta) => {
|
|
2271
2290
|
(0, GasFeePoller_js_1.updateTransactionGasProperties)({
|