@metamask-previews/transaction-controller 39.1.0-preview-fd7ad7de → 40.0.0-preview-e6722625
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 -1
- package/dist/TransactionController.cjs +47 -44
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +8 -8
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +8 -8
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +47 -44
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/constants.cjs +85 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +84 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +84 -0
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs +84 -0
- package/dist/constants.mjs.map +1 -1
- package/dist/helpers/EtherscanRemoteTransactionSource.cjs +157 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.cjs.map +1 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.d.cts +16 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.d.cts.map +1 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.d.mts +16 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.d.mts.map +1 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.mjs +157 -0
- package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +1 -0
- package/dist/helpers/IncomingTransactionHelper.cjs +137 -87
- package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.cts +12 -7
- package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.mts +12 -7
- package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.mjs +137 -87
- package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.cjs +66 -3
- package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.d.cts +14 -1
- package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.d.mts +14 -1
- package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.mjs +66 -3
- package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +8 -11
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +8 -11
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/etherscan.cjs +115 -0
- package/dist/utils/etherscan.cjs.map +1 -0
- package/dist/utils/etherscan.d.cts +74 -0
- package/dist/utils/etherscan.d.cts.map +1 -0
- package/dist/utils/etherscan.d.mts +74 -0
- package/dist/utils/etherscan.d.mts.map +1 -0
- package/dist/utils/etherscan.mjs +109 -0
- package/dist/utils/etherscan.mjs.map +1 -0
- package/package.json +3 -3
- package/dist/api/accounts-api.cjs +0 -66
- package/dist/api/accounts-api.cjs.map +0 -1
- package/dist/api/accounts-api.d.cts +0 -56
- package/dist/api/accounts-api.d.cts.map +0 -1
- package/dist/api/accounts-api.d.mts +0 -56
- package/dist/api/accounts-api.d.mts.map +0 -1
- package/dist/api/accounts-api.mjs +0 -61
- package/dist/api/accounts-api.mjs.map +0 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +0 -132
- package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +0 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts +0 -11
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +0 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts +0 -11
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +0 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +0 -132
- package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [40.0.0]
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **BREAKING:** Bump `@metamask/accounts-controller` peer dependency from `^19.0.0` to `^20.0.0` ([#4195](https://github.com/MetaMask/core/pull/4956))
|
|
15
|
+
|
|
10
16
|
## [39.1.0]
|
|
11
17
|
|
|
12
18
|
### Changed
|
|
@@ -1127,7 +1133,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1127
1133
|
|
|
1128
1134
|
All changes listed after this point were applied to this package following the monorepo conversion.
|
|
1129
1135
|
|
|
1130
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@
|
|
1136
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@40.0.0...HEAD
|
|
1137
|
+
[40.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@39.1.0...@metamask/transaction-controller@40.0.0
|
|
1131
1138
|
[39.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@39.0.0...@metamask/transaction-controller@39.1.0
|
|
1132
1139
|
[39.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.3.0...@metamask/transaction-controller@39.0.0
|
|
1133
1140
|
[38.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@38.2.0...@metamask/transaction-controller@38.3.0
|
|
@@ -36,7 +36,7 @@ const LineaGasFeeFlow_1 = require("./gas-flows/LineaGasFeeFlow.cjs");
|
|
|
36
36
|
const OptimismLayer1GasFeeFlow_1 = require("./gas-flows/OptimismLayer1GasFeeFlow.cjs");
|
|
37
37
|
const ScrollLayer1GasFeeFlow_1 = require("./gas-flows/ScrollLayer1GasFeeFlow.cjs");
|
|
38
38
|
const TestGasFeeFlow_1 = require("./gas-flows/TestGasFeeFlow.cjs");
|
|
39
|
-
const
|
|
39
|
+
const EtherscanRemoteTransactionSource_1 = require("./helpers/EtherscanRemoteTransactionSource.cjs");
|
|
40
40
|
const GasFeePoller_1 = require("./helpers/GasFeePoller.cjs");
|
|
41
41
|
const IncomingTransactionHelper_1 = require("./helpers/IncomingTransactionHelper.cjs");
|
|
42
42
|
const MultichainTrackingHelper_1 = require("./helpers/MultichainTrackingHelper.cjs");
|
|
@@ -70,7 +70,7 @@ const metadata = {
|
|
|
70
70
|
persist: true,
|
|
71
71
|
anonymous: false,
|
|
72
72
|
},
|
|
73
|
-
|
|
73
|
+
lastFetchedBlockNumbers: {
|
|
74
74
|
persist: true,
|
|
75
75
|
anonymous: false,
|
|
76
76
|
},
|
|
@@ -111,7 +111,7 @@ function getDefaultTransactionControllerState() {
|
|
|
111
111
|
return {
|
|
112
112
|
methodData: {},
|
|
113
113
|
transactions: [],
|
|
114
|
-
|
|
114
|
+
lastFetchedBlockNumbers: {},
|
|
115
115
|
submitHistory: [],
|
|
116
116
|
};
|
|
117
117
|
}
|
|
@@ -263,20 +263,30 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
263
263
|
isMultichainEnabled,
|
|
264
264
|
provider,
|
|
265
265
|
nonceTracker: this.nonceTracker,
|
|
266
|
+
incomingTransactionOptions: incomingTransactions,
|
|
266
267
|
findNetworkClientIdByChainId,
|
|
267
268
|
getNetworkClientById: ((networkClientId) => {
|
|
268
269
|
return this.messagingSystem.call(`NetworkController:getNetworkClientById`, networkClientId);
|
|
269
270
|
}),
|
|
270
271
|
getNetworkClientRegistry,
|
|
272
|
+
removeIncomingTransactionHelperListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removeIncomingTransactionHelperListeners).bind(this),
|
|
271
273
|
removePendingTransactionTrackerListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removePendingTransactionTrackerListeners).bind(this),
|
|
272
274
|
createNonceTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createNonceTracker).bind(this),
|
|
275
|
+
createIncomingTransactionHelper: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).bind(this),
|
|
273
276
|
createPendingTransactionTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).bind(this),
|
|
274
277
|
onNetworkStateChange: (listener) => {
|
|
275
278
|
this.messagingSystem.subscribe('NetworkController:stateChange', listener);
|
|
276
279
|
},
|
|
277
280
|
}), "f");
|
|
278
281
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").initialize();
|
|
279
|
-
|
|
282
|
+
const etherscanRemoteTransactionSource = new EtherscanRemoteTransactionSource_1.EtherscanRemoteTransactionSource({
|
|
283
|
+
apiKeysByChainId: incomingTransactions.etherscanApiKeysByChainId,
|
|
284
|
+
includeTokenTransfers: incomingTransactions.includeTokenTransfers,
|
|
285
|
+
});
|
|
286
|
+
this.incomingTransactionHelper = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).call(this, {
|
|
287
|
+
blockTracker,
|
|
288
|
+
etherscanRemoteTransactionSource,
|
|
289
|
+
});
|
|
280
290
|
this.pendingTransactionTracker = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).call(this, {
|
|
281
291
|
provider,
|
|
282
292
|
blockTracker,
|
|
@@ -453,20 +463,27 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
453
463
|
startIncomingTransactionPolling(networkClientIds = []) {
|
|
454
464
|
if (networkClientIds.length === 0) {
|
|
455
465
|
this.incomingTransactionHelper.start();
|
|
466
|
+
return;
|
|
456
467
|
}
|
|
468
|
+
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").startIncomingTransactionPolling(networkClientIds);
|
|
457
469
|
}
|
|
458
470
|
stopIncomingTransactionPolling(networkClientIds = []) {
|
|
459
471
|
if (networkClientIds.length === 0) {
|
|
460
472
|
this.incomingTransactionHelper.stop();
|
|
473
|
+
return;
|
|
461
474
|
}
|
|
475
|
+
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopIncomingTransactionPolling(networkClientIds);
|
|
462
476
|
}
|
|
463
477
|
stopAllIncomingTransactionPolling() {
|
|
464
478
|
this.incomingTransactionHelper.stop();
|
|
479
|
+
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopAllIncomingTransactionPolling();
|
|
465
480
|
}
|
|
466
481
|
async updateIncomingTransactions(networkClientIds = []) {
|
|
467
482
|
if (networkClientIds.length === 0) {
|
|
468
483
|
await this.incomingTransactionHelper.update();
|
|
484
|
+
return;
|
|
469
485
|
}
|
|
486
|
+
await __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").updateIncomingTransactions(networkClientIds);
|
|
470
487
|
}
|
|
471
488
|
/**
|
|
472
489
|
* Attempts to cancel a transaction based on its ID by setting its status to "rejected"
|
|
@@ -594,45 +611,23 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
594
611
|
* wiped on current network.
|
|
595
612
|
*/
|
|
596
613
|
wipeTransactions(ignoreNetwork, address) {
|
|
597
|
-
(0, logger_1.projectLogger)('Wiping transactions', { ignoreNetwork, address });
|
|
598
614
|
/* istanbul ignore next */
|
|
599
615
|
if (ignoreNetwork && !address) {
|
|
600
616
|
this.update((state) => {
|
|
601
617
|
state.transactions = [];
|
|
602
|
-
state.lastFetchedTimestamps = {};
|
|
603
618
|
});
|
|
604
619
|
return;
|
|
605
620
|
}
|
|
606
621
|
const currentChainId = this.getChainId();
|
|
607
|
-
const {
|
|
608
|
-
const newTransactions = transactions.filter((tx) => {
|
|
609
|
-
const { chainId, txParams } = tx;
|
|
622
|
+
const newTransactions = this.state.transactions.filter(({ chainId, txParams }) => {
|
|
610
623
|
const isMatchingNetwork = ignoreNetwork || chainId === currentChainId;
|
|
611
624
|
if (!isMatchingNetwork) {
|
|
612
625
|
return true;
|
|
613
626
|
}
|
|
614
|
-
const isMatchingAddress = !address ||
|
|
615
|
-
txParams.from?.toLowerCase() === address.toLowerCase() ||
|
|
616
|
-
txParams.to?.toLowerCase() === address.toLowerCase();
|
|
617
|
-
if (isMatchingAddress) {
|
|
618
|
-
(0, logger_1.projectLogger)('Removing transaction', tx);
|
|
619
|
-
}
|
|
627
|
+
const isMatchingAddress = !address || txParams.from?.toLowerCase() === address.toLowerCase();
|
|
620
628
|
return !isMatchingAddress;
|
|
621
629
|
});
|
|
622
|
-
const newLastFetchedTimestamps = Object.keys(lastFetchedTimestamps).reduce((acc, key) => {
|
|
623
|
-
const timestamp = lastFetchedTimestamps[key];
|
|
624
|
-
const isMatchingNetwork = ignoreNetwork || key.startsWith(`${currentChainId}#`);
|
|
625
|
-
const isMatchingAddress = !address || key.endsWith(`#${address.toLowerCase()}`);
|
|
626
|
-
if (!isMatchingNetwork || !isMatchingAddress) {
|
|
627
|
-
acc[key] = timestamp;
|
|
628
|
-
}
|
|
629
|
-
else {
|
|
630
|
-
(0, logger_1.projectLogger)('Removing last fetched timestamp', { key, timestamp });
|
|
631
|
-
}
|
|
632
|
-
return acc;
|
|
633
|
-
}, {});
|
|
634
630
|
this.update((state) => {
|
|
635
|
-
state.lastFetchedTimestamps = newLastFetchedTimestamps;
|
|
636
631
|
state.transactions = this.trimTransactionsForState(newTransactions);
|
|
637
632
|
});
|
|
638
633
|
}
|
|
@@ -1523,20 +1518,24 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1523
1518
|
};
|
|
1524
1519
|
return common_1.Common.custom(customChainParams);
|
|
1525
1520
|
}
|
|
1526
|
-
onIncomingTransactions(
|
|
1521
|
+
onIncomingTransactions({ added, updated, }) {
|
|
1527
1522
|
this.update((state) => {
|
|
1528
1523
|
const { transactions: currentTransactions } = state;
|
|
1529
|
-
|
|
1530
|
-
...
|
|
1531
|
-
...currentTransactions
|
|
1532
|
-
|
|
1524
|
+
const updatedTransactions = [
|
|
1525
|
+
...added,
|
|
1526
|
+
...currentTransactions.map((originalTransaction) => {
|
|
1527
|
+
const updatedTransaction = updated.find(({ hash }) => hash === originalTransaction.hash);
|
|
1528
|
+
return updatedTransaction ?? originalTransaction;
|
|
1529
|
+
}),
|
|
1530
|
+
];
|
|
1531
|
+
state.transactions = this.trimTransactionsForState(updatedTransactions);
|
|
1533
1532
|
});
|
|
1534
|
-
this.messagingSystem.publish(`${controllerName}:incomingTransactionsReceived`, incomingTransactions);
|
|
1535
1533
|
}
|
|
1536
|
-
|
|
1534
|
+
onUpdatedLastFetchedBlockNumbers({ lastFetchedBlockNumbers, blockNumber, }) {
|
|
1537
1535
|
this.update((state) => {
|
|
1538
|
-
state.
|
|
1536
|
+
state.lastFetchedBlockNumbers = lastFetchedBlockNumbers;
|
|
1539
1537
|
});
|
|
1538
|
+
this.messagingSystem.publish(`${controllerName}:incomingTransactionBlockReceived`, blockNumber);
|
|
1540
1539
|
}
|
|
1541
1540
|
generateDappSuggestedGasFees(txParams, origin) {
|
|
1542
1541
|
if (!origin || origin === controller_utils_1.ORIGIN_METAMASK) {
|
|
@@ -1863,14 +1862,18 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1863
1862
|
getPendingTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNonceTrackerPendingTransactions).bind(this, chainId),
|
|
1864
1863
|
getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, types_1.TransactionStatus.confirmed),
|
|
1865
1864
|
});
|
|
1866
|
-
}, _TransactionController_createIncomingTransactionHelper = function _TransactionController_createIncomingTransactionHelper({
|
|
1865
|
+
}, _TransactionController_createIncomingTransactionHelper = function _TransactionController_createIncomingTransactionHelper({ blockTracker, etherscanRemoteTransactionSource, chainId, }) {
|
|
1867
1866
|
const incomingTransactionHelper = new IncomingTransactionHelper_1.IncomingTransactionHelper({
|
|
1867
|
+
blockTracker,
|
|
1868
1868
|
getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
|
|
1869
|
-
|
|
1870
|
-
|
|
1869
|
+
getLastFetchedBlockNumbers: () => this.state.lastFetchedBlockNumbers,
|
|
1870
|
+
getLocalTransactions: () => this.state.transactions,
|
|
1871
|
+
getChainId: chainId ? () => chainId : this.getChainId.bind(this),
|
|
1871
1872
|
isEnabled: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").isEnabled,
|
|
1872
|
-
|
|
1873
|
+
queryEntireHistory: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").queryEntireHistory,
|
|
1874
|
+
remoteTransactionSource: etherscanRemoteTransactionSource,
|
|
1873
1875
|
transactionLimit: __classPrivateFieldGet(this, _TransactionController_transactionHistoryLimit, "f"),
|
|
1876
|
+
updateTransactions: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").updateTransactions,
|
|
1874
1877
|
});
|
|
1875
1878
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addIncomingTransactionHelperListeners).call(this, incomingTransactionHelper);
|
|
1876
1879
|
return incomingTransactionHelper;
|
|
@@ -1903,11 +1906,11 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1903
1906
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removeIncomingTransactionHelperListeners).call(this, this.incomingTransactionHelper);
|
|
1904
1907
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopAllTracking();
|
|
1905
1908
|
}, _TransactionController_removeIncomingTransactionHelperListeners = function _TransactionController_removeIncomingTransactionHelperListeners(incomingTransactionHelper) {
|
|
1906
|
-
incomingTransactionHelper.hub.removeAllListeners('
|
|
1907
|
-
incomingTransactionHelper.hub.removeAllListeners('
|
|
1909
|
+
incomingTransactionHelper.hub.removeAllListeners('transactions');
|
|
1910
|
+
incomingTransactionHelper.hub.removeAllListeners('updatedLastFetchedBlockNumbers');
|
|
1908
1911
|
}, _TransactionController_addIncomingTransactionHelperListeners = function _TransactionController_addIncomingTransactionHelperListeners(incomingTransactionHelper) {
|
|
1909
|
-
incomingTransactionHelper.hub.on('
|
|
1910
|
-
incomingTransactionHelper.hub.on('
|
|
1912
|
+
incomingTransactionHelper.hub.on('transactions', this.onIncomingTransactions.bind(this));
|
|
1913
|
+
incomingTransactionHelper.hub.on('updatedLastFetchedBlockNumbers', this.onUpdatedLastFetchedBlockNumbers.bind(this));
|
|
1911
1914
|
}, _TransactionController_removePendingTransactionTrackerListeners = function _TransactionController_removePendingTransactionTrackerListeners(pendingTransactionTracker) {
|
|
1912
1915
|
pendingTransactionTracker.hub.removeAllListeners('transaction-confirmed');
|
|
1913
1916
|
pendingTransactionTracker.hub.removeAllListeners('transaction-dropped');
|