@metamask-previews/network-controller 23.2.0-preview-d11c4815 → 23.2.0-preview-a898873f
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 +12 -0
- package/dist/NetworkController.cjs +63 -8
- 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 +63 -8
- package/dist/NetworkController.mjs.map +1 -1
- package/dist/create-auto-managed-network-client.cjs +46 -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 +46 -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/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ 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 optional `getBlockTrackerOptions` argument to NetworkController constructor ([#5679](https://github.com/MetaMask/core/pull/5679))
|
|
13
|
+
- Add optional `rpcFailoverEnabled` option to NetworkController constructor (`false` by default) ([#5679](https://github.com/MetaMask/core/pull/5679))
|
|
14
|
+
- Add `enableRpcFailover` and `disableRpcFailover` methods to NetworkController ([#5679](https://github.com/MetaMask/core/pull/5679))
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Disable the RPC failover behavior by default ([#5679](https://github.com/MetaMask/core/pull/5679))
|
|
19
|
+
- You are free to set the `failoverUrls` property on an RPC endpoint, but it won't have any effect
|
|
20
|
+
- To enable this behavior, either pass `rpcFailoverEnabled: true` to the constructor or call `enableRpcFailover` after initialization
|
|
21
|
+
|
|
10
22
|
## [23.2.0]
|
|
11
23
|
|
|
12
24
|
### Added
|
|
@@ -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, _NetworkController_setProxies;
|
|
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");
|
|
@@ -342,7 +342,7 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
342
342
|
* @param options - The options; see {@link NetworkControllerOptions}.
|
|
343
343
|
*/
|
|
344
344
|
constructor(options) {
|
|
345
|
-
const { messenger, state, infuraProjectId, log, getRpcServiceOptions, additionalDefaultNetworks, } = options;
|
|
345
|
+
const { messenger, state, infuraProjectId, log, getRpcServiceOptions, getBlockTrackerOptions, additionalDefaultNetworks, isRpcFailoverEnabled = false, } = options;
|
|
346
346
|
const initialState = {
|
|
347
347
|
...getDefaultNetworkControllerState(additionalDefaultNetworks),
|
|
348
348
|
...state,
|
|
@@ -380,10 +380,14 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
380
380
|
_NetworkController_autoManagedNetworkClient.set(this, void 0);
|
|
381
381
|
_NetworkController_log.set(this, void 0);
|
|
382
382
|
_NetworkController_getRpcServiceOptions.set(this, void 0);
|
|
383
|
+
_NetworkController_getBlockTrackerOptions.set(this, void 0);
|
|
383
384
|
_NetworkController_networkConfigurationsByNetworkClientId.set(this, void 0);
|
|
385
|
+
_NetworkController_isRpcFailoverEnabled.set(this, void 0);
|
|
384
386
|
__classPrivateFieldSet(this, _NetworkController_infuraProjectId, infuraProjectId, "f");
|
|
385
387
|
__classPrivateFieldSet(this, _NetworkController_log, log, "f");
|
|
386
388
|
__classPrivateFieldSet(this, _NetworkController_getRpcServiceOptions, getRpcServiceOptions, "f");
|
|
389
|
+
__classPrivateFieldSet(this, _NetworkController_getBlockTrackerOptions, getBlockTrackerOptions, "f");
|
|
390
|
+
__classPrivateFieldSet(this, _NetworkController_isRpcFailoverEnabled, isRpcFailoverEnabled, "f");
|
|
387
391
|
__classPrivateFieldSet(this, _NetworkController_previouslySelectedNetworkClientId, this.state.selectedNetworkClientId, "f");
|
|
388
392
|
__classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
|
|
389
393
|
this.messagingSystem.registerActionHandler(
|
|
@@ -435,6 +439,22 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
435
439
|
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
436
440
|
`${this.name}:updateNetwork`, this.updateNetwork.bind(this));
|
|
437
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
|
+
}
|
|
438
458
|
/**
|
|
439
459
|
* Accesses the provider and block tracker for the currently selected network.
|
|
440
460
|
* @returns The proxy and block tracker proxies.
|
|
@@ -1175,7 +1195,28 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
1175
1195
|
}
|
|
1176
1196
|
}
|
|
1177
1197
|
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(),
|
|
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
|
+
networkClient.destroy();
|
|
1210
|
+
const newNetworkClient = newIsRpcFailoverEnabled
|
|
1211
|
+
? networkClient.withRpcFailoverEnabled()
|
|
1212
|
+
: networkClient.withRpcFailoverDisabled();
|
|
1213
|
+
networkClientsById[networkClientId] = newNetworkClient;
|
|
1214
|
+
__classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_setProxies).call(this, newNetworkClient);
|
|
1215
|
+
}
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
__classPrivateFieldSet(this, _NetworkController_isRpcFailoverEnabled, newIsRpcFailoverEnabled, "f");
|
|
1219
|
+
}, _NetworkController_refreshNetwork =
|
|
1179
1220
|
/**
|
|
1180
1221
|
* Executes a series of steps to switch the network:
|
|
1181
1222
|
*
|
|
@@ -1394,7 +1435,9 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1394
1435
|
ticker: networkFields.nativeCurrency,
|
|
1395
1436
|
},
|
|
1396
1437
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1438
|
+
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1397
1439
|
messenger: this.messagingSystem,
|
|
1440
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1398
1441
|
});
|
|
1399
1442
|
}
|
|
1400
1443
|
else {
|
|
@@ -1407,7 +1450,9 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1407
1450
|
ticker: networkFields.nativeCurrency,
|
|
1408
1451
|
},
|
|
1409
1452
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1453
|
+
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1410
1454
|
messenger: this.messagingSystem,
|
|
1455
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1411
1456
|
});
|
|
1412
1457
|
}
|
|
1413
1458
|
}
|
|
@@ -1464,7 +1509,9 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1464
1509
|
ticker: networkConfiguration.nativeCurrency,
|
|
1465
1510
|
},
|
|
1466
1511
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1512
|
+
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1467
1513
|
messenger: this.messagingSystem,
|
|
1514
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1468
1515
|
}),
|
|
1469
1516
|
];
|
|
1470
1517
|
}
|
|
@@ -1479,7 +1526,9 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1479
1526
|
ticker: networkConfiguration.nativeCurrency,
|
|
1480
1527
|
},
|
|
1481
1528
|
getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
|
|
1529
|
+
getBlockTrackerOptions: __classPrivateFieldGet(this, _NetworkController_getBlockTrackerOptions, "f"),
|
|
1482
1530
|
messenger: this.messagingSystem,
|
|
1531
|
+
isRpcFailoverEnabled: __classPrivateFieldGet(this, _NetworkController_isRpcFailoverEnabled, "f"),
|
|
1483
1532
|
}),
|
|
1484
1533
|
];
|
|
1485
1534
|
});
|
|
@@ -1526,18 +1575,24 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1526
1575
|
}
|
|
1527
1576
|
updateState?.(state);
|
|
1528
1577
|
});
|
|
1578
|
+
const { providerProxy } = __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_setProxies).call(this, __classPrivateFieldGet(this, _NetworkController_autoManagedNetworkClient, "f"));
|
|
1579
|
+
__classPrivateFieldSet(this, _NetworkController_ethQuery, new eth_query_1.default(providerProxy), "f");
|
|
1580
|
+
}, _NetworkController_setProxies = function _NetworkController_setProxies(networkClient) {
|
|
1529
1581
|
if (__classPrivateFieldGet(this, _NetworkController_providerProxy, "f")) {
|
|
1530
|
-
__classPrivateFieldGet(this, _NetworkController_providerProxy, "f").setTarget(
|
|
1582
|
+
__classPrivateFieldGet(this, _NetworkController_providerProxy, "f").setTarget(networkClient.provider);
|
|
1531
1583
|
}
|
|
1532
1584
|
else {
|
|
1533
|
-
__classPrivateFieldSet(this, _NetworkController_providerProxy, (0, swappable_obj_proxy_1.createEventEmitterProxy)(
|
|
1585
|
+
__classPrivateFieldSet(this, _NetworkController_providerProxy, (0, swappable_obj_proxy_1.createEventEmitterProxy)(networkClient.provider), "f");
|
|
1534
1586
|
}
|
|
1535
1587
|
if (__classPrivateFieldGet(this, _NetworkController_blockTrackerProxy, "f")) {
|
|
1536
|
-
__classPrivateFieldGet(this, _NetworkController_blockTrackerProxy, "f").setTarget(
|
|
1588
|
+
__classPrivateFieldGet(this, _NetworkController_blockTrackerProxy, "f").setTarget(networkClient.blockTracker);
|
|
1537
1589
|
}
|
|
1538
1590
|
else {
|
|
1539
|
-
__classPrivateFieldSet(this, _NetworkController_blockTrackerProxy, (0, swappable_obj_proxy_1.createEventEmitterProxy)(
|
|
1591
|
+
__classPrivateFieldSet(this, _NetworkController_blockTrackerProxy, (0, swappable_obj_proxy_1.createEventEmitterProxy)(networkClient.blockTracker, { eventFilter: 'skipInternal' }), "f");
|
|
1540
1592
|
}
|
|
1541
|
-
|
|
1593
|
+
return {
|
|
1594
|
+
providerProxy: __classPrivateFieldGet(this, _NetworkController_providerProxy, "f"),
|
|
1595
|
+
blockTrackerProxy: __classPrivateFieldGet(this, _NetworkController_blockTrackerProxy, "f"),
|
|
1596
|
+
};
|
|
1542
1597
|
};
|
|
1543
1598
|
//# sourceMappingURL=NetworkController.cjs.map
|