@metamask-previews/network-controller 32.0.0-preview-834f9ac8f → 32.0.0-preview-92f3bde43

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/NetworkController.cjs +18 -4
  3. package/dist/NetworkController.cjs.map +1 -1
  4. package/dist/NetworkController.d.cts +10 -10
  5. package/dist/NetworkController.d.cts.map +1 -1
  6. package/dist/NetworkController.d.mts +10 -10
  7. package/dist/NetworkController.d.mts.map +1 -1
  8. package/dist/NetworkController.mjs +18 -4
  9. package/dist/NetworkController.mjs.map +1 -1
  10. package/dist/create-auto-managed-network-client.cjs.map +1 -1
  11. package/dist/create-auto-managed-network-client.d.cts +2 -2
  12. package/dist/create-auto-managed-network-client.d.cts.map +1 -1
  13. package/dist/create-auto-managed-network-client.d.mts +2 -2
  14. package/dist/create-auto-managed-network-client.d.mts.map +1 -1
  15. package/dist/create-auto-managed-network-client.mjs.map +1 -1
  16. package/dist/create-network-client.cjs +53 -16
  17. package/dist/create-network-client.cjs.map +1 -1
  18. package/dist/create-network-client.d.cts +2 -2
  19. package/dist/create-network-client.d.cts.map +1 -1
  20. package/dist/create-network-client.d.mts +2 -2
  21. package/dist/create-network-client.d.mts.map +1 -1
  22. package/dist/create-network-client.mjs +54 -17
  23. package/dist/create-network-client.mjs.map +1 -1
  24. package/dist/rpc-service/rpc-service.cjs +2 -0
  25. package/dist/rpc-service/rpc-service.cjs.map +1 -1
  26. package/dist/rpc-service/rpc-service.d.cts +6 -0
  27. package/dist/rpc-service/rpc-service.d.cts.map +1 -1
  28. package/dist/rpc-service/rpc-service.d.mts +6 -0
  29. package/dist/rpc-service/rpc-service.d.mts.map +1 -1
  30. package/dist/rpc-service/rpc-service.mjs +2 -0
  31. package/dist/rpc-service/rpc-service.mjs.map +1 -1
  32. package/dist/selectors.cjs +10 -0
  33. package/dist/selectors.cjs.map +1 -0
  34. package/dist/selectors.d.cts +3 -0
  35. package/dist/selectors.d.cts.map +1 -0
  36. package/dist/selectors.d.mts +3 -0
  37. package/dist/selectors.d.mts.map +1 -0
  38. package/dist/selectors.mjs +6 -0
  39. package/dist/selectors.mjs.map +1 -0
  40. 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
+ ### Added
11
+
12
+ - Add defaults for policy and block tracker options ([#9002](https://github.com/MetaMask/core/pull/9002))
13
+ - The `NetworkController` constructor argument `getRpcServiceOptions` is now optional.
14
+ - The default `policyOptions.maxRetries` is now `3`.
15
+ - The default `policyOptions.maxConsecutiveFailures` is now `12` for regular RPC endpoints and `40` for fallback RPC endpoints.
16
+ - The default `policyOptions.circuitBreakDuration` is now `30` seconds.
17
+ - The default `pollingInterval` for the block tracker is now `20` seconds.
18
+ - The default `retryTimeout` for the block tracker is now `20` seconds.
19
+
20
+ ### Changed
21
+
22
+ - **BREAKING:** Automatically populate `isRpcFailoverEnabled` using `RemoteFeatureFlagController` ([#9013](https://github.com/MetaMask/core/pull/9013))
23
+ - `NetworkController.init` must now be called to fully initialize the controller.
24
+ - The constructor argument `isRpcFailoverEnabled` is no longer available.
25
+ - `RemoteFeatureFlagController:stateChange` and `RemoteFeatureFlagController:getState` are now required.
26
+
27
+ ### Fixed
28
+
29
+ - Add defaults for `fetch`, `btoa` and `isOffline` in `RpcServiceOptions` ([#9000](https://github.com/MetaMask/core/pull/9000))
30
+ - Ensure block explorer URLs are populated for default networks ([#9005](https://github.com/MetaMask/core/pull/9005))
31
+
10
32
  ## [32.0.0]
11
33
 
12
34
  ### Changed
@@ -54,6 +54,7 @@ const uuid_1 = require("uuid");
54
54
  const constants_1 = require("./constants.cjs");
55
55
  const create_auto_managed_network_client_1 = require("./create-auto-managed-network-client.cjs");
56
56
  const logger_1 = require("./logger.cjs");
57
+ const selectors_1 = require("./selectors.cjs");
57
58
  const types_1 = require("./types.cjs");
58
59
  const debugLog = (0, logger_1.createModuleLogger)(logger_1.projectLogger, 'NetworkController');
59
60
  const INFURA_URL_REGEX = /^https:\/\/(?<networkName>[^.]+)\.infura\.io\/v\d+\/(?<apiKey>.+)$/u;
@@ -159,8 +160,10 @@ function getDefaultInfuraNetworkConfigurationsByChainId() {
159
160
  return obj;
160
161
  }
161
162
  const rpcEndpointUrl = `https://${infuraNetworkType}.infura.io/v3/{infuraProjectId}`;
163
+ const { rpcPrefs } = controller_utils_1.BUILT_IN_NETWORKS[infuraNetworkType];
162
164
  const networkConfiguration = {
163
- blockExplorerUrls: [],
165
+ blockExplorerUrls: [rpcPrefs.blockExplorerUrl],
166
+ defaultBlockExplorerUrlIndex: 0,
164
167
  chainId,
165
168
  defaultRpcEndpointIndex: 0,
166
169
  name: controller_utils_1.NetworkNickname[infuraNetworkType],
@@ -401,7 +404,7 @@ class NetworkController extends base_controller_1.BaseController {
401
404
  * @param options - The options; see {@link NetworkControllerOptions}.
402
405
  */
403
406
  constructor(options) {
404
- const { messenger, state, infuraProjectId, log, getRpcServiceOptions, getBlockTrackerOptions, additionalDefaultNetworks, isRpcFailoverEnabled = false, } = options;
407
+ const { messenger, state, infuraProjectId, log, getRpcServiceOptions, getBlockTrackerOptions, additionalDefaultNetworks, } = options;
405
408
  const initialState = {
406
409
  ...getDefaultNetworkControllerState(additionalDefaultNetworks),
407
410
  ...state,
@@ -448,12 +451,11 @@ class NetworkController extends base_controller_1.BaseController {
448
451
  _NetworkController_getRpcServiceOptions.set(this, void 0);
449
452
  _NetworkController_getBlockTrackerOptions.set(this, void 0);
450
453
  _NetworkController_networkConfigurationsByNetworkClientId.set(this, void 0);
451
- _NetworkController_isRpcFailoverEnabled.set(this, void 0);
454
+ _NetworkController_isRpcFailoverEnabled.set(this, false);
452
455
  __classPrivateFieldSet(this, _NetworkController_infuraProjectId, infuraProjectId, "f");
453
456
  __classPrivateFieldSet(this, _NetworkController_log, log, "f");
454
457
  __classPrivateFieldSet(this, _NetworkController_getRpcServiceOptions, getRpcServiceOptions, "f");
455
458
  __classPrivateFieldSet(this, _NetworkController_getBlockTrackerOptions, getBlockTrackerOptions, "f");
456
- __classPrivateFieldSet(this, _NetworkController_isRpcFailoverEnabled, isRpcFailoverEnabled, "f");
457
459
  __classPrivateFieldSet(this, _NetworkController_previouslySelectedNetworkClientId, this.state.selectedNetworkClientId, "f");
458
460
  __classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
459
461
  this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
@@ -472,6 +474,11 @@ class NetworkController extends base_controller_1.BaseController {
472
474
  networkStatus: constants_1.NetworkStatus.Available,
473
475
  });
474
476
  });
477
+ this.messenger.subscribe(
478
+ // eslint-disable-next-line no-restricted-syntax
479
+ 'RemoteFeatureFlagController:stateChange', (isRpcFailoverEnabled) => {
480
+ __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateRpcFailoverEnabled).call(this, isRpcFailoverEnabled);
481
+ }, selectors_1.getIsRpcFailoverEnabled);
475
482
  }
476
483
  /**
477
484
  * Returns the EthQuery instance for the currently selected network.
@@ -566,6 +573,13 @@ class NetworkController extends base_controller_1.BaseController {
566
573
  }
567
574
  return customNetworkClient;
568
575
  }
576
+ /**
577
+ * Initialize the NetworkController, updating the RPC failover feature flag.
578
+ */
579
+ init() {
580
+ const state = this.messenger.call('RemoteFeatureFlagController:getState');
581
+ __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateRpcFailoverEnabled).call(this, (0, selectors_1.getIsRpcFailoverEnabled)(state));
582
+ }
569
583
  initializeProvider({ lookupNetwork = true, } = {}) {
570
584
  __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_applyNetworkSelection).call(this, this.state.selectedNetworkClientId);
571
585
  if (lookupNetwork) {