@metamask-previews/transaction-controller 49.0.0-preview-674a490 → 49.0.0-preview-b4d33c51
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 +13 -0
- package/dist/TransactionController.cjs +50 -47
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +0 -11
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +0 -11
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +51 -48
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +21 -12
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +21 -12
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/batch.cjs +24 -12
- package/dist/utils/batch.cjs.map +1 -1
- package/dist/utils/batch.d.cts +1 -3
- package/dist/utils/batch.d.cts.map +1 -1
- package/dist/utils/batch.d.mts +1 -3
- package/dist/utils/batch.d.mts.map +1 -1
- package/dist/utils/batch.mjs +24 -12
- package/dist/utils/batch.mjs.map +1 -1
- package/dist/utils/eip7702.cjs +2 -3
- package/dist/utils/eip7702.cjs.map +1 -1
- package/dist/utils/eip7702.d.cts +1 -2
- package/dist/utils/eip7702.d.cts.map +1 -1
- package/dist/utils/eip7702.d.mts +1 -2
- package/dist/utils/eip7702.d.mts.map +1 -1
- package/dist/utils/eip7702.mjs +2 -3
- package/dist/utils/eip7702.mjs.map +1 -1
- package/dist/utils/feature-flags.cjs +4 -10
- package/dist/utils/feature-flags.cjs.map +1 -1
- package/dist/utils/feature-flags.d.cts +5 -12
- package/dist/utils/feature-flags.d.cts.map +1 -1
- package/dist/utils/feature-flags.d.mts +5 -12
- package/dist/utils/feature-flags.d.mts.map +1 -1
- package/dist/utils/feature-flags.mjs +4 -10
- package/dist/utils/feature-flags.mjs.map +1 -1
- package/package.json +2 -3
- package/dist/utils/signature.cjs +0 -21
- package/dist/utils/signature.cjs.map +0 -1
- package/dist/utils/signature.d.cts +0 -11
- package/dist/utils/signature.d.cts.map +0 -1
- package/dist/utils/signature.d.mts +0 -11
- package/dist/utils/signature.d.mts.map +0 -1
- package/dist/utils/signature.mjs +0 -17
- package/dist/utils/signature.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ 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 additional metadata for batch metrics ([#5488](https://github.com/MetaMask/core/pull/5488))
|
|
13
|
+
- Add `delegationAddress` to `TransactionMetadata`.
|
|
14
|
+
- Add `NestedTransactionMetadata` type containing `BatchTransactionParams` and `type`.
|
|
15
|
+
- Add optional `type` to `TransactionBatchSingleRequest`.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **BREAKING:** Add additional metadata for batch metrics ([#5488](https://github.com/MetaMask/core/pull/5488))
|
|
20
|
+
- Change `error` in `TransactionMetadata` to optional for all statuses.
|
|
21
|
+
- Change `nestedTransactions` in `TransactionMetadata` to array of `NestedTransactionMetadata`.
|
|
22
|
+
|
|
10
23
|
## [49.0.0]
|
|
11
24
|
|
|
12
25
|
### 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_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions,
|
|
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_rejectTransaction, _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, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
|
|
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");
|
|
@@ -156,7 +156,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
156
156
|
* @param options - The controller options.
|
|
157
157
|
*/
|
|
158
158
|
constructor(options) {
|
|
159
|
-
const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {},
|
|
159
|
+
const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
|
|
160
160
|
super({
|
|
161
161
|
name: controllerName,
|
|
162
162
|
metadata,
|
|
@@ -175,7 +175,6 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
175
175
|
_TransactionController_incomingTransactionHelper.set(this, void 0);
|
|
176
176
|
_TransactionController_incomingTransactionOptions.set(this, void 0);
|
|
177
177
|
_TransactionController_pendingTransactionOptions.set(this, void 0);
|
|
178
|
-
_TransactionController_publicKeyEIP7702.set(this, void 0);
|
|
179
178
|
this.signAbortCallbacks = new Map();
|
|
180
179
|
_TransactionController_trace.set(this, void 0);
|
|
181
180
|
_TransactionController_transactionHistoryLimit.set(this, void 0);
|
|
@@ -206,7 +205,6 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
206
205
|
this.securityProviderRequest = securityProviderRequest;
|
|
207
206
|
__classPrivateFieldSet(this, _TransactionController_incomingTransactionOptions, incomingTransactions, "f");
|
|
208
207
|
__classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
|
|
209
|
-
__classPrivateFieldSet(this, _TransactionController_publicKeyEIP7702, publicKeyEIP7702, "f");
|
|
210
208
|
__classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
|
|
211
209
|
this.sign = sign;
|
|
212
210
|
__classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
|
|
@@ -322,7 +320,6 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
322
320
|
getEthQuery: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { networkClientId }),
|
|
323
321
|
getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
|
|
324
322
|
messenger: this.messagingSystem,
|
|
325
|
-
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
326
323
|
request,
|
|
327
324
|
});
|
|
328
325
|
}
|
|
@@ -337,7 +334,6 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
337
334
|
address,
|
|
338
335
|
getEthQuery: (chainId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { chainId }),
|
|
339
336
|
messenger: this.messagingSystem,
|
|
340
|
-
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
341
337
|
});
|
|
342
338
|
}
|
|
343
339
|
/**
|
|
@@ -399,6 +395,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
399
395
|
networkClientId,
|
|
400
396
|
});
|
|
401
397
|
const transactionType = type ?? (await (0, transaction_type_1.determineTransactionType)(txParams, ethQuery)).type;
|
|
398
|
+
const { delegationAddress } = await (0, eip7702_1.isAccountUpgradedToEIP7702)(txParams.from, chainId, this.messagingSystem, ethQuery);
|
|
402
399
|
const existingTransactionMeta = this.getTransactionWithActionId(actionId);
|
|
403
400
|
// If a request to add a transaction with the same actionId is submitted again, a new transaction will not be created for it.
|
|
404
401
|
let addedTransactionMeta = existingTransactionMeta
|
|
@@ -409,6 +406,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
409
406
|
batchId,
|
|
410
407
|
chainId,
|
|
411
408
|
dappSuggestedGasFees,
|
|
409
|
+
delegationAddress,
|
|
412
410
|
deviceConfirmedOn,
|
|
413
411
|
id: (0, uuid_1.v1)(),
|
|
414
412
|
isFirstTimeInteraction: undefined,
|
|
@@ -443,7 +441,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
443
441
|
}
|
|
444
442
|
addedTransactionMeta = (0, swaps_1.updateSwapsTransaction)(addedTransactionMeta, transactionType, swaps, {
|
|
445
443
|
isSwapsDisabled: this.isSwapsDisabled,
|
|
446
|
-
cancelTransaction: this.
|
|
444
|
+
cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
|
|
447
445
|
messenger: this.messagingSystem,
|
|
448
446
|
});
|
|
449
447
|
this.addMetadata(addedTransactionMeta);
|
|
@@ -1243,18 +1241,13 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1243
1241
|
actionId,
|
|
1244
1242
|
});
|
|
1245
1243
|
}
|
|
1246
|
-
// TODO: Replace `any` with type
|
|
1247
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1248
1244
|
}
|
|
1249
|
-
catch (
|
|
1245
|
+
catch (rawError) {
|
|
1246
|
+
const error = rawError;
|
|
1250
1247
|
const { isCompleted: isTxCompleted } = this.isTransactionCompleted(transactionId);
|
|
1251
1248
|
if (!isTxCompleted) {
|
|
1252
|
-
if (
|
|
1253
|
-
this.
|
|
1254
|
-
throw rpc_errors_1.providerErrors.userRejectedRequest({
|
|
1255
|
-
message: 'MetaMask Tx Signature: User denied transaction signature.',
|
|
1256
|
-
data: error?.data,
|
|
1257
|
-
});
|
|
1249
|
+
if (__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isRejectError).call(this, error)) {
|
|
1250
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransactionAndThrow).call(this, transactionId, actionId, error);
|
|
1258
1251
|
}
|
|
1259
1252
|
else {
|
|
1260
1253
|
this.failTransaction(meta, error, actionId);
|
|
@@ -1265,8 +1258,9 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1265
1258
|
const finalMeta = await finishedPromise;
|
|
1266
1259
|
switch (finalMeta?.status) {
|
|
1267
1260
|
case types_1.TransactionStatus.failed:
|
|
1268
|
-
|
|
1269
|
-
|
|
1261
|
+
const error = finalMeta.error;
|
|
1262
|
+
resultCallbacks?.error(error);
|
|
1263
|
+
throw rpc_errors_1.rpcErrors.internal(error.message);
|
|
1270
1264
|
case types_1.TransactionStatus.submitted:
|
|
1271
1265
|
resultCallbacks?.success();
|
|
1272
1266
|
return finalMeta.hash;
|
|
@@ -1393,34 +1387,6 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1393
1387
|
}
|
|
1394
1388
|
return transactionHash;
|
|
1395
1389
|
}
|
|
1396
|
-
/**
|
|
1397
|
-
* Cancels a transaction based on its ID by setting its status to "rejected"
|
|
1398
|
-
* and emitting a `<tx.id>:finished` hub event.
|
|
1399
|
-
*
|
|
1400
|
-
* @param transactionId - The ID of the transaction to cancel.
|
|
1401
|
-
* @param actionId - The actionId passed from UI
|
|
1402
|
-
*/
|
|
1403
|
-
cancelTransaction(transactionId, actionId) {
|
|
1404
|
-
const transactionMeta = this.state.transactions.find(({ id }) => id === transactionId);
|
|
1405
|
-
if (!transactionMeta) {
|
|
1406
|
-
return;
|
|
1407
|
-
}
|
|
1408
|
-
this.update((state) => {
|
|
1409
|
-
const transactions = state.transactions.filter(({ id }) => id !== transactionId);
|
|
1410
|
-
state.transactions = this.trimTransactionsForState(transactions);
|
|
1411
|
-
});
|
|
1412
|
-
const updatedTransactionMeta = {
|
|
1413
|
-
...transactionMeta,
|
|
1414
|
-
status: types_1.TransactionStatus.rejected,
|
|
1415
|
-
};
|
|
1416
|
-
this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1417
|
-
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1418
|
-
this.messagingSystem.publish(`${controllerName}:transactionRejected`, {
|
|
1419
|
-
transactionMeta: updatedTransactionMeta,
|
|
1420
|
-
actionId,
|
|
1421
|
-
});
|
|
1422
|
-
this.onTransactionStatusChange(updatedTransactionMeta);
|
|
1423
|
-
}
|
|
1424
1390
|
/**
|
|
1425
1391
|
* Trim the amount of transactions that are set on the state. Checks
|
|
1426
1392
|
* if the length of the tx history is longer then desired persistence
|
|
@@ -1798,7 +1764,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1798
1764
|
}
|
|
1799
1765
|
}
|
|
1800
1766
|
exports.TransactionController = TransactionController;
|
|
1801
|
-
_TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionChainIds = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(),
|
|
1767
|
+
_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, }) {
|
|
1802
1768
|
// If transaction is found for same action id, do not create a new transaction.
|
|
1803
1769
|
if (this.getTransactionWithActionId(actionId)) {
|
|
1804
1770
|
return;
|
|
@@ -1863,6 +1829,24 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
1863
1829
|
actionId,
|
|
1864
1830
|
});
|
|
1865
1831
|
afterSubmit?.(newTransactionMeta);
|
|
1832
|
+
}, _TransactionController_rejectTransaction = function _TransactionController_rejectTransaction(transactionId, actionId, error) {
|
|
1833
|
+
const transactionMeta = this.getTransaction(transactionId);
|
|
1834
|
+
if (!transactionMeta) {
|
|
1835
|
+
return;
|
|
1836
|
+
}
|
|
1837
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_deleteTransaction).call(this, transactionId);
|
|
1838
|
+
const updatedTransactionMeta = {
|
|
1839
|
+
...transactionMeta,
|
|
1840
|
+
status: types_1.TransactionStatus.rejected,
|
|
1841
|
+
error: (0, utils_2.normalizeTxError)(error ?? rpc_errors_1.providerErrors.userRejectedRequest()),
|
|
1842
|
+
};
|
|
1843
|
+
this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1844
|
+
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1845
|
+
this.messagingSystem.publish(`${controllerName}:transactionRejected`, {
|
|
1846
|
+
transactionMeta: updatedTransactionMeta,
|
|
1847
|
+
actionId,
|
|
1848
|
+
});
|
|
1849
|
+
this.onTransactionStatusChange(updatedTransactionMeta);
|
|
1866
1850
|
}, _TransactionController_getChainId = function _TransactionController_getChainId(networkClientId) {
|
|
1867
1851
|
return __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNetworkClient({ networkClientId })
|
|
1868
1852
|
.configuration.chainId;
|
|
@@ -2110,5 +2094,24 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
2110
2094
|
isCustomNetwork,
|
|
2111
2095
|
txMeta: transactionMeta,
|
|
2112
2096
|
});
|
|
2097
|
+
}, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
|
|
2098
|
+
this.update((state) => {
|
|
2099
|
+
const transactions = state.transactions.filter(({ id }) => id !== transactionId);
|
|
2100
|
+
state.transactions = this.trimTransactionsForState(transactions);
|
|
2101
|
+
});
|
|
2102
|
+
}, _TransactionController_isRejectError = function _TransactionController_isRejectError(error) {
|
|
2103
|
+
return [
|
|
2104
|
+
rpc_errors_1.errorCodes.provider.userRejectedRequest,
|
|
2105
|
+
rpc_errors_1.errorCodes.rpc.methodNotSupported,
|
|
2106
|
+
].includes(error.code);
|
|
2107
|
+
}, _TransactionController_rejectTransactionAndThrow = function _TransactionController_rejectTransactionAndThrow(transactionId, actionId, error) {
|
|
2108
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).call(this, transactionId, actionId, error);
|
|
2109
|
+
if (error.code === rpc_errors_1.errorCodes.provider.userRejectedRequest) {
|
|
2110
|
+
throw rpc_errors_1.providerErrors.userRejectedRequest({
|
|
2111
|
+
message: 'MetaMask Tx Signature: User denied transaction signature.',
|
|
2112
|
+
data: error?.data,
|
|
2113
|
+
});
|
|
2114
|
+
}
|
|
2115
|
+
throw error;
|
|
2113
2116
|
};
|
|
2114
2117
|
//# sourceMappingURL=TransactionController.cjs.map
|