@metamask-previews/network-controller 23.2.0-preview-28cd3de3 → 23.3.0-preview-f603e07
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 +9 -2
- package/dist/NetworkController.cjs +52 -22
- package/dist/NetworkController.cjs.map +1 -1
- package/dist/NetworkController.d.cts +17 -0
- package/dist/NetworkController.d.cts.map +1 -1
- package/dist/NetworkController.d.mts +17 -0
- package/dist/NetworkController.d.mts.map +1 -1
- package/dist/NetworkController.mjs +53 -23
- package/dist/NetworkController.mjs.map +1 -1
- package/dist/create-auto-managed-network-client.cjs +34 -35
- package/dist/create-auto-managed-network-client.cjs.map +1 -1
- package/dist/create-auto-managed-network-client.d.cts +7 -1
- package/dist/create-auto-managed-network-client.d.cts.map +1 -1
- package/dist/create-auto-managed-network-client.d.mts +7 -1
- package/dist/create-auto-managed-network-client.d.mts.map +1 -1
- package/dist/create-auto-managed-network-client.mjs +34 -35
- package/dist/create-auto-managed-network-client.mjs.map +1 -1
- package/dist/create-network-client.cjs +15 -11
- package/dist/create-network-client.cjs.map +1 -1
- package/dist/create-network-client.d.cts +7 -1
- package/dist/create-network-client.d.cts.map +1 -1
- package/dist/create-network-client.d.mts +7 -1
- package/dist/create-network-client.d.mts.map +1 -1
- package/dist/create-network-client.mjs +15 -11
- package/dist/create-network-client.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +2 -2
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +2 -2
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,14 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [23.3.0]
|
|
11
|
+
|
|
10
12
|
### Added
|
|
11
13
|
|
|
12
14
|
- Add optional `getBlockTrackerOptions` argument to NetworkController constructor ([#5702](https://github.com/MetaMask/core/pull/5702))
|
|
13
|
-
- Add
|
|
15
|
+
- Add optional `rpcFailoverEnabled` option to NetworkController constructor (`false` by default) ([#5668](https://github.com/MetaMask/core/pull/5668))
|
|
16
|
+
- Add `enableRpcFailover` and `disableRpcFailover` methods to NetworkController ([#5668](https://github.com/MetaMask/core/pull/5668))
|
|
14
17
|
|
|
15
18
|
### Changed
|
|
16
19
|
|
|
17
20
|
- Bump `@metamask/base-controller` from ^8.0.0 to ^8.0.1 ([#5722](https://github.com/MetaMask/core/pull/5722))
|
|
21
|
+
- Disable the RPC failover behavior by default ([#5668](https://github.com/MetaMask/core/pull/5668))
|
|
22
|
+
- You are free to set the `failoverUrls` property on an RPC endpoint, but it won't have any effect
|
|
23
|
+
- To enable this behavior, either pass `rpcFailoverEnabled: true` to the constructor or call `enableRpcFailover` after initialization
|
|
18
24
|
|
|
19
25
|
## [23.2.0]
|
|
20
26
|
|
|
@@ -823,7 +829,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
823
829
|
|
|
824
830
|
All changes listed after this point were applied to this package following the monorepo conversion.
|
|
825
831
|
|
|
826
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@23.
|
|
832
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@23.3.0...HEAD
|
|
833
|
+
[23.3.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@23.2.0...@metamask/network-controller@23.3.0
|
|
827
834
|
[23.2.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@23.1.0...@metamask/network-controller@23.2.0
|
|
828
835
|
[23.1.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@23.0.0...@metamask/network-controller@23.1.0
|
|
829
836
|
[23.0.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@22.2.1...@metamask/network-controller@23.0.0
|
|
@@ -36,7 +36,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
36
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
38
|
};
|
|
39
|
-
var _NetworkController_instances, _NetworkController_ethQuery, _NetworkController_infuraProjectId, _NetworkController_previouslySelectedNetworkClientId, _NetworkController_providerProxy, _NetworkController_blockTrackerProxy, _NetworkController_autoManagedNetworkClientRegistry, _NetworkController_autoManagedNetworkClient, _NetworkController_log, _NetworkController_getRpcServiceOptions, _NetworkController_getBlockTrackerOptions, _NetworkController_networkConfigurationsByNetworkClientId, _NetworkController_refreshNetwork, _NetworkController_getLatestBlock, _NetworkController_determineEIP1559Compatibility, _NetworkController_validateNetworkFields, _NetworkController_determineNetworkConfigurationToPersist, _NetworkController_registerNetworkClientsAsNeeded, _NetworkController_unregisterNetworkClientsAsNeeded, _NetworkController_updateNetworkConfigurations, _NetworkController_ensureAutoManagedNetworkClientRegistryPopulated, _NetworkController_createAutoManagedNetworkClientRegistry, _NetworkController_applyNetworkSelection;
|
|
39
|
+
var _NetworkController_instances, _NetworkController_ethQuery, _NetworkController_infuraProjectId, _NetworkController_previouslySelectedNetworkClientId, _NetworkController_providerProxy, _NetworkController_blockTrackerProxy, _NetworkController_autoManagedNetworkClientRegistry, _NetworkController_autoManagedNetworkClient, _NetworkController_log, _NetworkController_getRpcServiceOptions, _NetworkController_getBlockTrackerOptions, _NetworkController_networkConfigurationsByNetworkClientId, _NetworkController_isRpcFailoverEnabled, _NetworkController_updateRpcFailoverEnabled, _NetworkController_refreshNetwork, _NetworkController_getLatestBlock, _NetworkController_determineEIP1559Compatibility, _NetworkController_validateNetworkFields, _NetworkController_determineNetworkConfigurationToPersist, _NetworkController_registerNetworkClientsAsNeeded, _NetworkController_unregisterNetworkClientsAsNeeded, _NetworkController_updateNetworkConfigurations, _NetworkController_ensureAutoManagedNetworkClientRegistryPopulated, _NetworkController_createAutoManagedNetworkClientRegistry, _NetworkController_applyNetworkSelection;
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
41
|
exports.NetworkController = exports.selectAvailableNetworkClientIds = exports.getAvailableNetworkClientIds = exports.selectNetworkConfigurations = exports.getNetworkConfigurations = exports.getDefaultNetworkControllerState = exports.knownKeysOf = exports.RpcEndpointType = void 0;
|
|
42
42
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -161,35 +161,25 @@ function getDefaultInfuraNetworkConfigurationsByChainId() {
|
|
|
161
161
|
* @returns The `networkConfigurationsByChainId` object of all custom networks.
|
|
162
162
|
*/
|
|
163
163
|
function getDefaultCustomNetworkConfigurationsByChainId() {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
// It converts client id to upper case and replace '-' with '_'
|
|
168
|
-
// to match the key in BUILT_IN_CUSTOM_NETWORKS_RPC
|
|
169
|
-
// e.g. 'megaeth-testnet' to 'MEGAETH_TESTNET'
|
|
170
|
-
// e.g. 'monad-testnet' to 'MONAD_TESTNET'
|
|
171
|
-
// TODO: Refactor controller-utils to use the same format as others
|
|
172
|
-
const rpcEndpointUrlKey = customNetworkType
|
|
173
|
-
.toUpperCase()
|
|
174
|
-
.replace('-', '_');
|
|
175
|
-
const networkConfiguration = {
|
|
164
|
+
const { ticker, rpcPrefs } = controller_utils_1.BUILT_IN_NETWORKS[controller_utils_1.BuiltInNetworkName.MegaETHTestnet];
|
|
165
|
+
return {
|
|
166
|
+
[controller_utils_1.ChainId[controller_utils_1.BuiltInNetworkName.MegaETHTestnet]]: {
|
|
176
167
|
blockExplorerUrls: [rpcPrefs.blockExplorerUrl],
|
|
177
|
-
chainId: controller_utils_1.ChainId[
|
|
168
|
+
chainId: controller_utils_1.ChainId[controller_utils_1.BuiltInNetworkName.MegaETHTestnet],
|
|
178
169
|
defaultRpcEndpointIndex: 0,
|
|
179
170
|
defaultBlockExplorerUrlIndex: 0,
|
|
180
|
-
name: controller_utils_1.NetworkNickname[
|
|
171
|
+
name: controller_utils_1.NetworkNickname[controller_utils_1.BuiltInNetworkName.MegaETHTestnet],
|
|
181
172
|
nativeCurrency: ticker,
|
|
182
173
|
rpcEndpoints: [
|
|
183
174
|
{
|
|
184
175
|
failoverUrls: [],
|
|
185
|
-
networkClientId:
|
|
176
|
+
networkClientId: controller_utils_1.BuiltInNetworkName.MegaETHTestnet,
|
|
186
177
|
type: RpcEndpointType.Custom,
|
|
187
|
-
url: controller_utils_1.BUILT_IN_CUSTOM_NETWORKS_RPC
|
|
178
|
+
url: controller_utils_1.BUILT_IN_CUSTOM_NETWORKS_RPC.MEGAETH_TESTNET,
|
|
188
179
|
},
|
|
189
180
|
],
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
}, {});
|
|
181
|
+
},
|
|
182
|
+
};
|
|
193
183
|
}
|
|
194
184
|
/**
|
|
195
185
|
* Constructs properties for the NetworkController state whose values will be
|
|
@@ -352,7 +342,7 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
352
342
|
* @param options - The options; see {@link NetworkControllerOptions}.
|
|
353
343
|
*/
|
|
354
344
|
constructor(options) {
|
|
355
|
-
const { messenger, state, infuraProjectId, log, getRpcServiceOptions, getBlockTrackerOptions, additionalDefaultNetworks, } = options;
|
|
345
|
+
const { messenger, state, infuraProjectId, log, getRpcServiceOptions, getBlockTrackerOptions, additionalDefaultNetworks, isRpcFailoverEnabled = false, } = options;
|
|
356
346
|
const initialState = {
|
|
357
347
|
...getDefaultNetworkControllerState(additionalDefaultNetworks),
|
|
358
348
|
...state,
|
|
@@ -392,10 +382,12 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
392
382
|
_NetworkController_getRpcServiceOptions.set(this, void 0);
|
|
393
383
|
_NetworkController_getBlockTrackerOptions.set(this, void 0);
|
|
394
384
|
_NetworkController_networkConfigurationsByNetworkClientId.set(this, void 0);
|
|
385
|
+
_NetworkController_isRpcFailoverEnabled.set(this, void 0);
|
|
395
386
|
__classPrivateFieldSet(this, _NetworkController_infuraProjectId, infuraProjectId, "f");
|
|
396
387
|
__classPrivateFieldSet(this, _NetworkController_log, log, "f");
|
|
397
388
|
__classPrivateFieldSet(this, _NetworkController_getRpcServiceOptions, getRpcServiceOptions, "f");
|
|
398
389
|
__classPrivateFieldSet(this, _NetworkController_getBlockTrackerOptions, getBlockTrackerOptions, "f");
|
|
390
|
+
__classPrivateFieldSet(this, _NetworkController_isRpcFailoverEnabled, isRpcFailoverEnabled, "f");
|
|
399
391
|
__classPrivateFieldSet(this, _NetworkController_previouslySelectedNetworkClientId, this.state.selectedNetworkClientId, "f");
|
|
400
392
|
__classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
|
|
401
393
|
this.messagingSystem.registerActionHandler(
|
|
@@ -447,6 +439,22 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
447
439
|
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
448
440
|
`${this.name}:updateNetwork`, this.updateNetwork.bind(this));
|
|
449
441
|
}
|
|
442
|
+
/**
|
|
443
|
+
* Enables the RPC failover functionality. That is, if any RPC endpoints are
|
|
444
|
+
* configured with failover URLs, then traffic will automatically be diverted
|
|
445
|
+
* to them if those RPC endpoints are unavailable.
|
|
446
|
+
*/
|
|
447
|
+
enableRpcFailover() {
|
|
448
|
+
__classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateRpcFailoverEnabled).call(this, true);
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Disables the RPC failover functionality. That is, even if any RPC endpoints
|
|
452
|
+
* are configured with failover URLs, then traffic will not automatically be
|
|
453
|
+
* diverted to them if those RPC endpoints are unavailable.
|
|
454
|
+
*/
|
|
455
|
+
disableRpcFailover() {
|
|
456
|
+
__classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateRpcFailoverEnabled).call(this, false);
|
|
457
|
+
}
|
|
450
458
|
/**
|
|
451
459
|
* Accesses the provider and block tracker for the currently selected network.
|
|
452
460
|
* @returns The proxy and block tracker proxies.
|
|
@@ -1187,7 +1195,25 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
1187
1195
|
}
|
|
1188
1196
|
}
|
|
1189
1197
|
exports.NetworkController = NetworkController;
|
|
1190
|
-
_NetworkController_ethQuery = new WeakMap(), _NetworkController_infuraProjectId = new WeakMap(), _NetworkController_previouslySelectedNetworkClientId = new WeakMap(), _NetworkController_providerProxy = new WeakMap(), _NetworkController_blockTrackerProxy = new WeakMap(), _NetworkController_autoManagedNetworkClientRegistry = new WeakMap(), _NetworkController_autoManagedNetworkClient = new WeakMap(), _NetworkController_log = new WeakMap(), _NetworkController_getRpcServiceOptions = new WeakMap(), _NetworkController_getBlockTrackerOptions = new WeakMap(), _NetworkController_networkConfigurationsByNetworkClientId = new WeakMap(), _NetworkController_instances = new WeakSet(),
|
|
1198
|
+
_NetworkController_ethQuery = new WeakMap(), _NetworkController_infuraProjectId = new WeakMap(), _NetworkController_previouslySelectedNetworkClientId = new WeakMap(), _NetworkController_providerProxy = new WeakMap(), _NetworkController_blockTrackerProxy = new WeakMap(), _NetworkController_autoManagedNetworkClientRegistry = new WeakMap(), _NetworkController_autoManagedNetworkClient = new WeakMap(), _NetworkController_log = new WeakMap(), _NetworkController_getRpcServiceOptions = new WeakMap(), _NetworkController_getBlockTrackerOptions = new WeakMap(), _NetworkController_networkConfigurationsByNetworkClientId = new WeakMap(), _NetworkController_isRpcFailoverEnabled = new WeakMap(), _NetworkController_instances = new WeakSet(), _NetworkController_updateRpcFailoverEnabled = function _NetworkController_updateRpcFailoverEnabled(newIsRpcFailoverEnabled) {
|
|
1199
|
+
if (__classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f") === newIsRpcFailoverEnabled) {
|
|
1200
|
+
return;
|
|
1201
|
+
}
|
|
1202
|
+
const autoManagedNetworkClientRegistry = __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_ensureAutoManagedNetworkClientRegistryPopulated).call(this);
|
|
1203
|
+
for (const networkClientsById of Object.values(autoManagedNetworkClientRegistry)) {
|
|
1204
|
+
for (const networkClientId of Object.keys(networkClientsById)) {
|
|
1205
|
+
// Type assertion: We can assume that `networkClientId` is valid here.
|
|
1206
|
+
const networkClient = networkClientsById[networkClientId];
|
|
1207
|
+
if (networkClient.configuration.failoverRpcUrls &&
|
|
1208
|
+
networkClient.configuration.failoverRpcUrls.length > 0) {
|
|
1209
|
+
newIsRpcFailoverEnabled
|
|
1210
|
+
? networkClient.enableRpcFailover()
|
|
1211
|
+
: networkClient.disableRpcFailover();
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
__classPrivateFieldSet(this, _NetworkController_isRpcFailoverEnabled, newIsRpcFailoverEnabled, "f");
|
|
1216
|
+
}, _NetworkController_refreshNetwork =
|
|
1191
1217
|
/**
|
|
1192
1218
|
* Executes a series of steps to switch the network:
|
|
1193
1219
|
*
|
|
@@ -1408,6 +1434,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1408
1434
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1409
1435
|
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1410
1436
|
messenger: this.messagingSystem,
|
|
1437
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1411
1438
|
});
|
|
1412
1439
|
}
|
|
1413
1440
|
else {
|
|
@@ -1422,6 +1449,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1422
1449
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1423
1450
|
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1424
1451
|
messenger: this.messagingSystem,
|
|
1452
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1425
1453
|
});
|
|
1426
1454
|
}
|
|
1427
1455
|
}
|
|
@@ -1480,6 +1508,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1480
1508
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1481
1509
|
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1482
1510
|
messenger: this.messagingSystem,
|
|
1511
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1483
1512
|
}),
|
|
1484
1513
|
];
|
|
1485
1514
|
}
|
|
@@ -1496,6 +1525,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1496
1525
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1497
1526
|
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1498
1527
|
messenger: this.messagingSystem,
|
|
1528
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1499
1529
|
}),
|
|
1500
1530
|
];
|
|
1501
1531
|
});
|