@metamask-previews/transaction-controller 49.0.0-preview-9b02be34 → 50.0.0-preview-39c90ec
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 +24 -1
- package/dist/TransactionController.cjs +81 -51
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +7 -11
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +7 -11
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +82 -52
- 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 +26 -12
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +26 -12
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/batch.cjs +32 -6
- package/dist/utils/batch.cjs.map +1 -1
- package/dist/utils/batch.d.cts +3 -1
- package/dist/utils/batch.d.cts.map +1 -1
- package/dist/utils/batch.d.mts +3 -1
- package/dist/utils/batch.d.mts.map +1 -1
- package/dist/utils/batch.mjs +33 -7
- package/dist/utils/batch.mjs.map +1 -1
- package/dist/utils/eip7702.cjs +21 -9
- package/dist/utils/eip7702.cjs.map +1 -1
- package/dist/utils/eip7702.d.cts +10 -1
- package/dist/utils/eip7702.d.cts.map +1 -1
- package/dist/utils/eip7702.d.mts +10 -1
- package/dist/utils/eip7702.d.mts.map +1 -1
- package/dist/utils/eip7702.mjs +19 -8
- package/dist/utils/eip7702.mjs.map +1 -1
- package/dist/utils/feature-flags.cjs +26 -5
- package/dist/utils/feature-flags.cjs.map +1 -1
- package/dist/utils/feature-flags.d.cts +27 -7
- package/dist/utils/feature-flags.d.cts.map +1 -1
- package/dist/utils/feature-flags.d.mts +27 -7
- package/dist/utils/feature-flags.d.mts.map +1 -1
- package/dist/utils/feature-flags.mjs +24 -4
- package/dist/utils/feature-flags.mjs.map +1 -1
- package/dist/utils/signature.cjs +26 -0
- package/dist/utils/signature.cjs.map +1 -0
- package/dist/utils/signature.d.cts +11 -0
- package/dist/utils/signature.d.cts.map +1 -0
- package/dist/utils/signature.d.mts +11 -0
- package/dist/utils/signature.d.mts.map +1 -0
- package/dist/utils/signature.mjs +22 -0
- package/dist/utils/signature.mjs.map +1 -0
- package/dist/utils/validation.cjs +5 -1
- package/dist/utils/validation.cjs.map +1 -1
- package/dist/utils/validation.d.cts +3 -1
- package/dist/utils/validation.d.cts.map +1 -1
- package/dist/utils/validation.d.mts +3 -1
- package/dist/utils/validation.d.mts.map +1 -1
- package/dist/utils/validation.mjs +5 -1
- package/dist/utils/validation.mjs.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [50.0.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add additional metadata for batch metrics ([#5488](https://github.com/MetaMask/core/pull/5488))
|
|
15
|
+
- Add `delegationAddress` to `TransactionMetadata`.
|
|
16
|
+
- Add `NestedTransactionMetadata` type containing `BatchTransactionParams` and `type`.
|
|
17
|
+
- Add optional `type` to `TransactionBatchSingleRequest`.
|
|
18
|
+
- Verify EIP-7702 contract address using signatures ([#5472](https://github.com/MetaMask/core/pull/5472))
|
|
19
|
+
- Add optional `publicKeyEIP7702` property to constructor.
|
|
20
|
+
- Add dependency on `^5.7.0` of `@ethersproject/wallet`.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **BREAKING:** Bump `@metamask/accounts-controller` peer dependency to `^26.1.0` ([#5481](https://github.com/MetaMask/core/pull/5481))
|
|
25
|
+
- **BREAKING:** Add additional metadata for batch metrics ([#5488](https://github.com/MetaMask/core/pull/5488))
|
|
26
|
+
- Change `error` in `TransactionMetadata` to optional for all statuses.
|
|
27
|
+
- Change `nestedTransactions` in `TransactionMetadata` to array of `NestedTransactionMetadata`.
|
|
28
|
+
- Throw if `addTransactionBatch` called with external origin and size limit exceeded ([#5489](https://github.com/MetaMask/core/pull/5489))
|
|
29
|
+
- Verify EIP-7702 contract address using signatures ([#5472](https://github.com/MetaMask/core/pull/5472))
|
|
30
|
+
- Use new `contracts` property from feature flags instead of `contractAddresses`.
|
|
31
|
+
|
|
10
32
|
## [49.0.0]
|
|
11
33
|
|
|
12
34
|
### Added
|
|
@@ -1358,7 +1380,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1358
1380
|
|
|
1359
1381
|
All changes listed after this point were applied to this package following the monorepo conversion.
|
|
1360
1382
|
|
|
1361
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@
|
|
1383
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@50.0.0...HEAD
|
|
1384
|
+
[50.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@49.0.0...@metamask/transaction-controller@50.0.0
|
|
1362
1385
|
[49.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.2.0...@metamask/transaction-controller@49.0.0
|
|
1363
1386
|
[48.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.1.0...@metamask/transaction-controller@48.2.0
|
|
1364
1387
|
[48.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.0.0...@metamask/transaction-controller@48.1.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_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _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;
|
|
16
|
+
var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_afterSimulate, _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 = {}, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
|
|
159
|
+
const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, publicKeyEIP7702, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
|
|
160
160
|
super({
|
|
161
161
|
name: controllerName,
|
|
162
162
|
metadata,
|
|
@@ -175,12 +175,14 @@ 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);
|
|
178
179
|
this.signAbortCallbacks = new Map();
|
|
179
180
|
_TransactionController_trace.set(this, void 0);
|
|
180
181
|
_TransactionController_transactionHistoryLimit.set(this, void 0);
|
|
181
182
|
_TransactionController_isFirstTimeInteractionEnabled.set(this, void 0);
|
|
182
183
|
_TransactionController_isSimulationEnabled.set(this, void 0);
|
|
183
184
|
_TransactionController_testGasFeeFlows.set(this, void 0);
|
|
185
|
+
_TransactionController_afterSimulate.set(this, void 0);
|
|
184
186
|
_TransactionController_multichainTrackingHelper.set(this, void 0);
|
|
185
187
|
_TransactionController_checkForPendingTransactionAndStartPolling.set(this, () => {
|
|
186
188
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").checkForPendingTransactionAndStartPolling();
|
|
@@ -205,11 +207,13 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
205
207
|
this.securityProviderRequest = securityProviderRequest;
|
|
206
208
|
__classPrivateFieldSet(this, _TransactionController_incomingTransactionOptions, incomingTransactions, "f");
|
|
207
209
|
__classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
|
|
210
|
+
__classPrivateFieldSet(this, _TransactionController_publicKeyEIP7702, publicKeyEIP7702, "f");
|
|
208
211
|
__classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
|
|
209
212
|
this.sign = sign;
|
|
210
213
|
__classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
|
|
211
214
|
__classPrivateFieldSet(this, _TransactionController_trace, trace ?? ((_request, fn) => fn?.()), "f");
|
|
212
215
|
this.afterSign = hooks?.afterSign ?? (() => true);
|
|
216
|
+
__classPrivateFieldSet(this, _TransactionController_afterSimulate, hooks?.afterSimulate ?? (() => Promise.resolve(undefined)), "f");
|
|
213
217
|
this.beforeCheckPendingTransaction =
|
|
214
218
|
hooks?.beforeCheckPendingTransaction ??
|
|
215
219
|
/* istanbul ignore next */
|
|
@@ -320,6 +324,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
320
324
|
getEthQuery: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { networkClientId }),
|
|
321
325
|
getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
|
|
322
326
|
messenger: this.messagingSystem,
|
|
327
|
+
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
323
328
|
request,
|
|
324
329
|
});
|
|
325
330
|
}
|
|
@@ -334,6 +339,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
334
339
|
address,
|
|
335
340
|
getEthQuery: (chainId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { chainId }),
|
|
336
341
|
messenger: this.messagingSystem,
|
|
342
|
+
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
337
343
|
});
|
|
338
344
|
}
|
|
339
345
|
/**
|
|
@@ -367,6 +373,10 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
367
373
|
if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
|
|
368
374
|
throw new Error(`Network client not found - ${networkClientId}`);
|
|
369
375
|
}
|
|
376
|
+
const chainId = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId);
|
|
377
|
+
const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
|
|
378
|
+
networkClientId,
|
|
379
|
+
});
|
|
370
380
|
const permittedAddresses = origin === undefined
|
|
371
381
|
? undefined
|
|
372
382
|
: await this.getPermittedAccounts?.(origin);
|
|
@@ -382,6 +392,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
382
392
|
txParams,
|
|
383
393
|
type,
|
|
384
394
|
});
|
|
395
|
+
const delegationAddressPromise = (0, eip7702_1.getDelegationAddress)(txParams.from, ethQuery).catch(() => undefined);
|
|
385
396
|
const isEIP1559Compatible = await this.getEIP1559Compatibility(networkClientId);
|
|
386
397
|
(0, validation_1.validateTxParams)(txParams, isEIP1559Compatible);
|
|
387
398
|
const isDuplicateBatchId = batchId?.length &&
|
|
@@ -390,11 +401,8 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
390
401
|
throw rpc_errors_1.rpcErrors.invalidInput('Batch ID already exists');
|
|
391
402
|
}
|
|
392
403
|
const dappSuggestedGasFees = this.generateDappSuggestedGasFees(txParams, origin);
|
|
393
|
-
const chainId = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId);
|
|
394
|
-
const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
|
|
395
|
-
networkClientId,
|
|
396
|
-
});
|
|
397
404
|
const transactionType = type ?? (await (0, transaction_type_1.determineTransactionType)(txParams, ethQuery)).type;
|
|
405
|
+
const delegationAddress = await delegationAddressPromise;
|
|
398
406
|
const existingTransactionMeta = this.getTransactionWithActionId(actionId);
|
|
399
407
|
// If a request to add a transaction with the same actionId is submitted again, a new transaction will not be created for it.
|
|
400
408
|
let addedTransactionMeta = existingTransactionMeta
|
|
@@ -405,6 +413,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
405
413
|
batchId,
|
|
406
414
|
chainId,
|
|
407
415
|
dappSuggestedGasFees,
|
|
416
|
+
delegationAddress,
|
|
408
417
|
deviceConfirmedOn,
|
|
409
418
|
id: (0, uuid_1.v1)(),
|
|
410
419
|
isFirstTimeInteraction: undefined,
|
|
@@ -439,12 +448,13 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
439
448
|
}
|
|
440
449
|
addedTransactionMeta = (0, swaps_1.updateSwapsTransaction)(addedTransactionMeta, transactionType, swaps, {
|
|
441
450
|
isSwapsDisabled: this.isSwapsDisabled,
|
|
442
|
-
cancelTransaction: this.
|
|
451
|
+
cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
|
|
443
452
|
messenger: this.messagingSystem,
|
|
444
453
|
});
|
|
445
454
|
this.addMetadata(addedTransactionMeta);
|
|
446
455
|
if (requireApproval !== false) {
|
|
447
456
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).call(this, addedTransactionMeta, {
|
|
457
|
+
ethQuery,
|
|
448
458
|
traceContext,
|
|
449
459
|
}).catch((error) => {
|
|
450
460
|
(0, logger_1.projectLogger)('Error while updating simulation data', error);
|
|
@@ -1239,18 +1249,13 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1239
1249
|
actionId,
|
|
1240
1250
|
});
|
|
1241
1251
|
}
|
|
1242
|
-
// TODO: Replace `any` with type
|
|
1243
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1244
1252
|
}
|
|
1245
|
-
catch (
|
|
1253
|
+
catch (rawError) {
|
|
1254
|
+
const error = rawError;
|
|
1246
1255
|
const { isCompleted: isTxCompleted } = this.isTransactionCompleted(transactionId);
|
|
1247
1256
|
if (!isTxCompleted) {
|
|
1248
|
-
if (
|
|
1249
|
-
this.
|
|
1250
|
-
throw rpc_errors_1.providerErrors.userRejectedRequest({
|
|
1251
|
-
message: 'MetaMask Tx Signature: User denied transaction signature.',
|
|
1252
|
-
data: error?.data,
|
|
1253
|
-
});
|
|
1257
|
+
if (__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isRejectError).call(this, error)) {
|
|
1258
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransactionAndThrow).call(this, transactionId, actionId, error);
|
|
1254
1259
|
}
|
|
1255
1260
|
else {
|
|
1256
1261
|
this.failTransaction(meta, error, actionId);
|
|
@@ -1261,8 +1266,9 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1261
1266
|
const finalMeta = await finishedPromise;
|
|
1262
1267
|
switch (finalMeta?.status) {
|
|
1263
1268
|
case types_1.TransactionStatus.failed:
|
|
1264
|
-
|
|
1265
|
-
|
|
1269
|
+
const error = finalMeta.error;
|
|
1270
|
+
resultCallbacks?.error(error);
|
|
1271
|
+
throw rpc_errors_1.rpcErrors.internal(error.message);
|
|
1266
1272
|
case types_1.TransactionStatus.submitted:
|
|
1267
1273
|
resultCallbacks?.success();
|
|
1268
1274
|
return finalMeta.hash;
|
|
@@ -1389,34 +1395,6 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1389
1395
|
}
|
|
1390
1396
|
return transactionHash;
|
|
1391
1397
|
}
|
|
1392
|
-
/**
|
|
1393
|
-
* Cancels a transaction based on its ID by setting its status to "rejected"
|
|
1394
|
-
* and emitting a `<tx.id>:finished` hub event.
|
|
1395
|
-
*
|
|
1396
|
-
* @param transactionId - The ID of the transaction to cancel.
|
|
1397
|
-
* @param actionId - The actionId passed from UI
|
|
1398
|
-
*/
|
|
1399
|
-
cancelTransaction(transactionId, actionId) {
|
|
1400
|
-
const transactionMeta = this.state.transactions.find(({ id }) => id === transactionId);
|
|
1401
|
-
if (!transactionMeta) {
|
|
1402
|
-
return;
|
|
1403
|
-
}
|
|
1404
|
-
this.update((state) => {
|
|
1405
|
-
const transactions = state.transactions.filter(({ id }) => id !== transactionId);
|
|
1406
|
-
state.transactions = this.trimTransactionsForState(transactions);
|
|
1407
|
-
});
|
|
1408
|
-
const updatedTransactionMeta = {
|
|
1409
|
-
...transactionMeta,
|
|
1410
|
-
status: types_1.TransactionStatus.rejected,
|
|
1411
|
-
};
|
|
1412
|
-
this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1413
|
-
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1414
|
-
this.messagingSystem.publish(`${controllerName}:transactionRejected`, {
|
|
1415
|
-
transactionMeta: updatedTransactionMeta,
|
|
1416
|
-
actionId,
|
|
1417
|
-
});
|
|
1418
|
-
this.onTransactionStatusChange(updatedTransactionMeta);
|
|
1419
|
-
}
|
|
1420
1398
|
/**
|
|
1421
1399
|
* Trim the amount of transactions that are set on the state. Checks
|
|
1422
1400
|
* if the length of the tx history is longer then desired persistence
|
|
@@ -1794,7 +1772,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1794
1772
|
}
|
|
1795
1773
|
}
|
|
1796
1774
|
exports.TransactionController = TransactionController;
|
|
1797
|
-
_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, }) {
|
|
1775
|
+
_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_publicKeyEIP7702 = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_afterSimulate = 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, }) {
|
|
1798
1776
|
// If transaction is found for same action id, do not create a new transaction.
|
|
1799
1777
|
if (this.getTransactionWithActionId(actionId)) {
|
|
1800
1778
|
return;
|
|
@@ -1859,6 +1837,24 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
1859
1837
|
actionId,
|
|
1860
1838
|
});
|
|
1861
1839
|
afterSubmit?.(newTransactionMeta);
|
|
1840
|
+
}, _TransactionController_rejectTransaction = function _TransactionController_rejectTransaction(transactionId, actionId, error) {
|
|
1841
|
+
const transactionMeta = this.getTransaction(transactionId);
|
|
1842
|
+
if (!transactionMeta) {
|
|
1843
|
+
return;
|
|
1844
|
+
}
|
|
1845
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_deleteTransaction).call(this, transactionId);
|
|
1846
|
+
const updatedTransactionMeta = {
|
|
1847
|
+
...transactionMeta,
|
|
1848
|
+
status: types_1.TransactionStatus.rejected,
|
|
1849
|
+
error: (0, utils_2.normalizeTxError)(error ?? rpc_errors_1.providerErrors.userRejectedRequest()),
|
|
1850
|
+
};
|
|
1851
|
+
this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1852
|
+
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1853
|
+
this.messagingSystem.publish(`${controllerName}:transactionRejected`, {
|
|
1854
|
+
transactionMeta: updatedTransactionMeta,
|
|
1855
|
+
actionId,
|
|
1856
|
+
});
|
|
1857
|
+
this.onTransactionStatusChange(updatedTransactionMeta);
|
|
1862
1858
|
}, _TransactionController_getChainId = function _TransactionController_getChainId(networkClientId) {
|
|
1863
1859
|
return __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNetworkClient({ networkClientId })
|
|
1864
1860
|
.configuration.chainId;
|
|
@@ -2008,7 +2004,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
2008
2004
|
catch (error) {
|
|
2009
2005
|
(0, logger_1.projectLogger)('Error fetching account address relationship, skipping first time interaction update', error);
|
|
2010
2006
|
}
|
|
2011
|
-
}, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, traceContext, } = {}) {
|
|
2007
|
+
}, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, ethQuery, traceContext, } = {}) {
|
|
2012
2008
|
const { id: transactionId, chainId, txParams, simulationData: prevSimulationData, } = transactionMeta;
|
|
2013
2009
|
const { from, to, value, data } = txParams;
|
|
2014
2010
|
let simulationData = {
|
|
@@ -2037,20 +2033,35 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
2037
2033
|
};
|
|
2038
2034
|
}
|
|
2039
2035
|
}
|
|
2040
|
-
|
|
2036
|
+
let finalTransactionMeta = this.getTransaction(transactionId);
|
|
2041
2037
|
/* istanbul ignore if */
|
|
2042
2038
|
if (!finalTransactionMeta) {
|
|
2043
2039
|
(0, logger_1.projectLogger)('Cannot update simulation data as transaction not found', transactionId, simulationData);
|
|
2044
2040
|
return;
|
|
2045
2041
|
}
|
|
2046
|
-
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
2042
|
+
finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
2047
2043
|
transactionId,
|
|
2048
2044
|
note: 'TransactionController#updateSimulationData - Update simulation data',
|
|
2049
2045
|
skipResimulateCheck: Boolean(blockTime),
|
|
2050
2046
|
}, (txMeta) => {
|
|
2051
2047
|
txMeta.simulationData = simulationData;
|
|
2052
2048
|
});
|
|
2053
|
-
(
|
|
2049
|
+
if (ethQuery) {
|
|
2050
|
+
(0, logger_1.projectLogger)('Calling afterSimulate hook', finalTransactionMeta);
|
|
2051
|
+
const result = await __classPrivateFieldGet(this, _TransactionController_afterSimulate, "f").call(this, {
|
|
2052
|
+
transactionMeta: finalTransactionMeta,
|
|
2053
|
+
});
|
|
2054
|
+
if (result?.updateTransaction) {
|
|
2055
|
+
(0, logger_1.projectLogger)('Updating transaction with afterSimulate data');
|
|
2056
|
+
finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, result.updateTransaction);
|
|
2057
|
+
const { estimatedGas } = await (0, gas_1.estimateGas)({ ...finalTransactionMeta.txParams, gas: undefined }, ethQuery);
|
|
2058
|
+
(0, logger_1.projectLogger)('Updating gas following afterSimulate hook', estimatedGas);
|
|
2059
|
+
finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, (txMeta) => {
|
|
2060
|
+
txMeta.txParams.gas = estimatedGas;
|
|
2061
|
+
});
|
|
2062
|
+
}
|
|
2063
|
+
}
|
|
2064
|
+
(0, logger_1.projectLogger)('Updated simulation data', transactionId, finalTransactionMeta);
|
|
2054
2065
|
}, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
|
|
2055
2066
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
|
|
2056
2067
|
if (gasFeeEstimates) {
|
|
@@ -2106,5 +2117,24 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
2106
2117
|
isCustomNetwork,
|
|
2107
2118
|
txMeta: transactionMeta,
|
|
2108
2119
|
});
|
|
2120
|
+
}, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
|
|
2121
|
+
this.update((state) => {
|
|
2122
|
+
const transactions = state.transactions.filter(({ id }) => id !== transactionId);
|
|
2123
|
+
state.transactions = this.trimTransactionsForState(transactions);
|
|
2124
|
+
});
|
|
2125
|
+
}, _TransactionController_isRejectError = function _TransactionController_isRejectError(error) {
|
|
2126
|
+
return [
|
|
2127
|
+
rpc_errors_1.errorCodes.provider.userRejectedRequest,
|
|
2128
|
+
rpc_errors_1.errorCodes.rpc.methodNotSupported,
|
|
2129
|
+
].includes(error.code);
|
|
2130
|
+
}, _TransactionController_rejectTransactionAndThrow = function _TransactionController_rejectTransactionAndThrow(transactionId, actionId, error) {
|
|
2131
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).call(this, transactionId, actionId, error);
|
|
2132
|
+
if (error.code === rpc_errors_1.errorCodes.provider.userRejectedRequest) {
|
|
2133
|
+
throw rpc_errors_1.providerErrors.userRejectedRequest({
|
|
2134
|
+
message: 'MetaMask Tx Signature: User denied transaction signature.',
|
|
2135
|
+
data: error?.data,
|
|
2136
|
+
});
|
|
2137
|
+
}
|
|
2138
|
+
throw error;
|
|
2109
2139
|
};
|
|
2110
2140
|
//# sourceMappingURL=TransactionController.cjs.map
|