@metamask/network-controller 23.2.1-backport → 23.4.0
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 +898 -0
- package/dist/NetworkController.cjs +80 -20
- package/dist/NetworkController.cjs.map +1 -1
- package/dist/NetworkController.d.cts +29 -5
- package/dist/NetworkController.d.cts.map +1 -1
- package/dist/NetworkController.d.mts +29 -5
- package/dist/NetworkController.d.mts.map +1 -1
- package/dist/NetworkController.mjs +81 -21
- package/dist/NetworkController.mjs.map +1 -1
- package/dist/create-auto-managed-network-client.cjs +36 -31
- package/dist/create-auto-managed-network-client.cjs.map +1 -1
- package/dist/create-auto-managed-network-client.d.cts +11 -1
- package/dist/create-auto-managed-network-client.d.cts.map +1 -1
- package/dist/create-auto-managed-network-client.d.mts +11 -1
- package/dist/create-auto-managed-network-client.d.mts.map +1 -1
- package/dist/create-auto-managed-network-client.mjs +36 -31
- package/dist/create-auto-managed-network-client.mjs.map +1 -1
- package/dist/create-network-client.cjs +43 -17
- package/dist/create-network-client.cjs.map +1 -1
- package/dist/create-network-client.d.cts +11 -2
- package/dist/create-network-client.d.cts.map +1 -1
- package/dist/create-network-client.d.mts +11 -2
- package/dist/create-network-client.d.mts.map +1 -1
- package/dist/create-network-client.mjs +43 -17
- package/dist/create-network-client.mjs.map +1 -1
- package/dist/rpc-service/rpc-service.cjs +46 -36
- package/dist/rpc-service/rpc-service.cjs.map +1 -1
- package/dist/rpc-service/rpc-service.d.cts.map +1 -1
- package/dist/rpc-service/rpc-service.d.mts.map +1 -1
- package/dist/rpc-service/rpc-service.mjs +47 -37
- package/dist/rpc-service/rpc-service.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 +4 -4
|
@@ -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_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,24 +161,38 @@ function getDefaultInfuraNetworkConfigurationsByChainId() {
|
|
|
161
161
|
* @returns The `networkConfigurationsByChainId` object of all custom networks.
|
|
162
162
|
*/
|
|
163
163
|
function getDefaultCustomNetworkConfigurationsByChainId() {
|
|
164
|
-
|
|
164
|
+
// Create the `networkConfigurationsByChainId` objects explicitly,
|
|
165
|
+
// Because it is not always guaranteed that the custom networks are included in the
|
|
166
|
+
// default networks.
|
|
165
167
|
return {
|
|
166
|
-
[controller_utils_1.ChainId[
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
168
|
+
[controller_utils_1.ChainId['megaeth-testnet']]: getCustomNetworkConfiguration(controller_utils_1.CustomNetworkType['megaeth-testnet']),
|
|
169
|
+
[controller_utils_1.ChainId['monad-testnet']]: getCustomNetworkConfiguration(controller_utils_1.CustomNetworkType['monad-testnet']),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Constructs a `NetworkConfiguration` object by `CustomNetworkType`.
|
|
174
|
+
*
|
|
175
|
+
* @param customNetworkType - The type of the custom network.
|
|
176
|
+
* @returns The `NetworkConfiguration` object.
|
|
177
|
+
*/
|
|
178
|
+
function getCustomNetworkConfiguration(customNetworkType) {
|
|
179
|
+
const { ticker, rpcPrefs } = controller_utils_1.BUILT_IN_NETWORKS[customNetworkType];
|
|
180
|
+
const rpcEndpointUrl = controller_utils_1.BUILT_IN_CUSTOM_NETWORKS_RPC[customNetworkType];
|
|
181
|
+
return {
|
|
182
|
+
blockExplorerUrls: [rpcPrefs.blockExplorerUrl],
|
|
183
|
+
chainId: controller_utils_1.ChainId[customNetworkType],
|
|
184
|
+
defaultRpcEndpointIndex: 0,
|
|
185
|
+
defaultBlockExplorerUrlIndex: 0,
|
|
186
|
+
name: controller_utils_1.NetworkNickname[customNetworkType],
|
|
187
|
+
nativeCurrency: ticker,
|
|
188
|
+
rpcEndpoints: [
|
|
189
|
+
{
|
|
190
|
+
failoverUrls: [],
|
|
191
|
+
networkClientId: customNetworkType,
|
|
192
|
+
type: RpcEndpointType.Custom,
|
|
193
|
+
url: rpcEndpointUrl,
|
|
194
|
+
},
|
|
195
|
+
],
|
|
182
196
|
};
|
|
183
197
|
}
|
|
184
198
|
/**
|
|
@@ -342,7 +356,7 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
342
356
|
* @param options - The options; see {@link NetworkControllerOptions}.
|
|
343
357
|
*/
|
|
344
358
|
constructor(options) {
|
|
345
|
-
const { messenger, state, infuraProjectId, log, getRpcServiceOptions, additionalDefaultNetworks, } = options;
|
|
359
|
+
const { messenger, state, infuraProjectId, log, getRpcServiceOptions, getBlockTrackerOptions, additionalDefaultNetworks, isRpcFailoverEnabled = false, } = options;
|
|
346
360
|
const initialState = {
|
|
347
361
|
...getDefaultNetworkControllerState(additionalDefaultNetworks),
|
|
348
362
|
...state,
|
|
@@ -380,10 +394,14 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
380
394
|
_NetworkController_autoManagedNetworkClient.set(this, void 0);
|
|
381
395
|
_NetworkController_log.set(this, void 0);
|
|
382
396
|
_NetworkController_getRpcServiceOptions.set(this, void 0);
|
|
397
|
+
_NetworkController_getBlockTrackerOptions.set(this, void 0);
|
|
383
398
|
_NetworkController_networkConfigurationsByNetworkClientId.set(this, void 0);
|
|
399
|
+
_NetworkController_isRpcFailoverEnabled.set(this, void 0);
|
|
384
400
|
__classPrivateFieldSet(this, _NetworkController_infuraProjectId, infuraProjectId, "f");
|
|
385
401
|
__classPrivateFieldSet(this, _NetworkController_log, log, "f");
|
|
386
402
|
__classPrivateFieldSet(this, _NetworkController_getRpcServiceOptions, getRpcServiceOptions, "f");
|
|
403
|
+
__classPrivateFieldSet(this, _NetworkController_getBlockTrackerOptions, getBlockTrackerOptions, "f");
|
|
404
|
+
__classPrivateFieldSet(this, _NetworkController_isRpcFailoverEnabled, isRpcFailoverEnabled, "f");
|
|
387
405
|
__classPrivateFieldSet(this, _NetworkController_previouslySelectedNetworkClientId, this.state.selectedNetworkClientId, "f");
|
|
388
406
|
__classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
|
|
389
407
|
this.messagingSystem.registerActionHandler(
|
|
@@ -435,6 +453,22 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
435
453
|
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
436
454
|
`${this.name}:updateNetwork`, this.updateNetwork.bind(this));
|
|
437
455
|
}
|
|
456
|
+
/**
|
|
457
|
+
* Enables the RPC failover functionality. That is, if any RPC endpoints are
|
|
458
|
+
* configured with failover URLs, then traffic will automatically be diverted
|
|
459
|
+
* to them if those RPC endpoints are unavailable.
|
|
460
|
+
*/
|
|
461
|
+
enableRpcFailover() {
|
|
462
|
+
__classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateRpcFailoverEnabled).call(this, true);
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Disables the RPC failover functionality. That is, even if any RPC endpoints
|
|
466
|
+
* are configured with failover URLs, then traffic will not automatically be
|
|
467
|
+
* diverted to them if those RPC endpoints are unavailable.
|
|
468
|
+
*/
|
|
469
|
+
disableRpcFailover() {
|
|
470
|
+
__classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateRpcFailoverEnabled).call(this, false);
|
|
471
|
+
}
|
|
438
472
|
/**
|
|
439
473
|
* Accesses the provider and block tracker for the currently selected network.
|
|
440
474
|
* @returns The proxy and block tracker proxies.
|
|
@@ -1175,7 +1209,25 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
1175
1209
|
}
|
|
1176
1210
|
}
|
|
1177
1211
|
exports.NetworkController = NetworkController;
|
|
1178
|
-
_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_networkConfigurationsByNetworkClientId = new WeakMap(), _NetworkController_instances = new WeakSet(),
|
|
1212
|
+
_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) {
|
|
1213
|
+
if (__classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f") === newIsRpcFailoverEnabled) {
|
|
1214
|
+
return;
|
|
1215
|
+
}
|
|
1216
|
+
const autoManagedNetworkClientRegistry = __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_ensureAutoManagedNetworkClientRegistryPopulated).call(this);
|
|
1217
|
+
for (const networkClientsById of Object.values(autoManagedNetworkClientRegistry)) {
|
|
1218
|
+
for (const networkClientId of Object.keys(networkClientsById)) {
|
|
1219
|
+
// Type assertion: We can assume that `networkClientId` is valid here.
|
|
1220
|
+
const networkClient = networkClientsById[networkClientId];
|
|
1221
|
+
if (networkClient.configuration.failoverRpcUrls &&
|
|
1222
|
+
networkClient.configuration.failoverRpcUrls.length > 0) {
|
|
1223
|
+
newIsRpcFailoverEnabled
|
|
1224
|
+
? networkClient.enableRpcFailover()
|
|
1225
|
+
: networkClient.disableRpcFailover();
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
__classPrivateFieldSet(this, _NetworkController_isRpcFailoverEnabled, newIsRpcFailoverEnabled, "f");
|
|
1230
|
+
}, _NetworkController_refreshNetwork =
|
|
1179
1231
|
/**
|
|
1180
1232
|
* Executes a series of steps to switch the network:
|
|
1181
1233
|
*
|
|
@@ -1394,7 +1446,9 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1394
1446
|
ticker: networkFields.nativeCurrency,
|
|
1395
1447
|
},
|
|
1396
1448
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1449
|
+
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1397
1450
|
messenger: this.messagingSystem,
|
|
1451
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1398
1452
|
});
|
|
1399
1453
|
}
|
|
1400
1454
|
else {
|
|
@@ -1407,7 +1461,9 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1407
1461
|
ticker: networkFields.nativeCurrency,
|
|
1408
1462
|
},
|
|
1409
1463
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1464
|
+
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1410
1465
|
messenger: this.messagingSystem,
|
|
1466
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1411
1467
|
});
|
|
1412
1468
|
}
|
|
1413
1469
|
}
|
|
@@ -1464,7 +1520,9 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1464
1520
|
ticker: networkConfiguration.nativeCurrency,
|
|
1465
1521
|
},
|
|
1466
1522
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1523
|
+
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1467
1524
|
messenger: this.messagingSystem,
|
|
1525
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1468
1526
|
}),
|
|
1469
1527
|
];
|
|
1470
1528
|
}
|
|
@@ -1479,7 +1537,9 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1479
1537
|
ticker: networkConfiguration.nativeCurrency,
|
|
1480
1538
|
},
|
|
1481
1539
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1540
|
+
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1482
1541
|
messenger: this.messagingSystem,
|
|
1542
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1483
1543
|
}),
|
|
1484
1544
|
];
|
|
1485
1545
|
});
|