@metamask-previews/network-controller 33.0.0-preview-e0ee14da7 → 33.0.0-preview-9291f33a8

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 CHANGED
@@ -7,20 +7,11 @@ 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 `analytics` constructor option that makes `NetworkController` emit `RPC Service Unavailable` and `RPC Service Degraded` analytics events via the `AnalyticsController:trackEvent` action when an RPC endpoint becomes unavailable or degraded ([#9270](https://github.com/MetaMask/core/pull/9270))
13
- - The option takes `isRpcEndpointUrlPublic` (decides whether an endpoint URL is safe to report verbatim or as `'custom'`) and `rpcServiceEventsSampleRate` (the proportion of events to emit, between `0` and `1`).
14
- - No analytics are emitted when the option is omitted.
15
- - Adds the `NetworkControllerAnalyticsOptions` and `RpcServiceEventName` types.
16
-
17
10
  ### Changed
18
11
 
19
12
  - **BREAKING:** Drive RPC failover from the single `corePlatformRpcFailoverMode` remote feature flag ([#9175](https://github.com/MetaMask/core/pull/9175))
20
13
  - The flag is a string with three values: `disabled` (failover off), `enabled` (divert to failover URLs when the primary endpoint is unavailable), and `forced` (Infura endpoints that have failover URLs route all traffic to those URLs, bypassing Infura entirely). Custom endpoints are unaffected, and the value defaults to `disabled` when the flag is absent or unrecognized.
21
14
  - `NetworkController` no longer reads the `walletFrameworkRpcFailoverEnabled` flag; the `enabled` mode replaces it. Update your remote feature flag configuration to set `corePlatformRpcFailoverMode`.
22
- - **BREAKING:** The `NetworkControllerMessenger` now allows the `AnalyticsController:getState` and `AnalyticsController:trackEvent` actions ([#9270](https://github.com/MetaMask/core/pull/9270))
23
- - Consumers that pass the `analytics` option must delegate these actions to the network controller messenger.
24
15
 
25
16
  ### Removed
26
17
 
@@ -36,13 +36,12 @@ 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_failoverUrls, _NetworkController_previouslySelectedNetworkClientId, _NetworkController_providerProxy, _NetworkController_blockTrackerProxy, _NetworkController_autoManagedNetworkClientRegistry, _NetworkController_autoManagedNetworkClient, _NetworkController_log, _NetworkController_getRpcServiceOptions, _NetworkController_getBlockTrackerOptions, _NetworkController_analytics, _NetworkController_networkConfigurationsByNetworkClientId, _NetworkController_rpcFailoverMode, _NetworkController_trackRpcServiceEvent, _NetworkController_updateRpcFailover, _NetworkController_refreshNetwork, _NetworkController_determineNetworkMetadata, _NetworkController_lookupGivenNetwork, _NetworkController_lookupSelectedNetwork, _NetworkController_updateMetadataForNetwork, _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_failoverUrls, _NetworkController_previouslySelectedNetworkClientId, _NetworkController_providerProxy, _NetworkController_blockTrackerProxy, _NetworkController_autoManagedNetworkClientRegistry, _NetworkController_autoManagedNetworkClient, _NetworkController_log, _NetworkController_getRpcServiceOptions, _NetworkController_getBlockTrackerOptions, _NetworkController_networkConfigurationsByNetworkClientId, _NetworkController_rpcFailoverMode, _NetworkController_updateRpcFailover, _NetworkController_refreshNetwork, _NetworkController_determineNetworkMetadata, _NetworkController_lookupGivenNetwork, _NetworkController_lookupSelectedNetwork, _NetworkController_updateMetadataForNetwork, _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");
43
43
  const controller_utils_1 = require("@metamask/controller-utils");
44
44
  const eth_query_1 = __importDefault(require("@metamask/eth-query"));
45
- const remote_feature_flag_controller_1 = require("@metamask/remote-feature-flag-controller");
46
45
  const rpc_errors_1 = require("@metamask/rpc-errors");
47
46
  const swappable_obj_proxy_1 = require("@metamask/swappable-obj-proxy");
48
47
  const utils_1 = require("@metamask/utils");
@@ -55,8 +54,6 @@ const uuid_1 = require("uuid");
55
54
  const constants_1 = require("./constants.cjs");
56
55
  const create_auto_managed_network_client_1 = require("./create-auto-managed-network-client.cjs");
57
56
  const logger_1 = require("./logger.cjs");
58
- const rpc_service_events_1 = require("./rpc-service-events.cjs");
59
- const rpc_service_1 = require("./rpc-service/rpc-service.cjs");
60
57
  const selectors_1 = require("./selectors.cjs");
61
58
  const types_1 = require("./types.cjs");
62
59
  const debugLog = (0, logger_1.createModuleLogger)(logger_1.projectLogger, 'NetworkController');
@@ -394,7 +391,7 @@ class NetworkController extends base_controller_1.BaseController {
394
391
  * @param options - The options; see {@link NetworkControllerOptions}.
395
392
  */
396
393
  constructor(options) {
397
- const { messenger, state, infuraProjectId, failoverUrls, log, getRpcServiceOptions, getBlockTrackerOptions, analytics, } = options;
394
+ const { messenger, state, infuraProjectId, failoverUrls, log, getRpcServiceOptions, getBlockTrackerOptions, } = options;
398
395
  const initialState = {
399
396
  ...getDefaultNetworkControllerState(),
400
397
  ...state,
@@ -441,7 +438,6 @@ class NetworkController extends base_controller_1.BaseController {
441
438
  _NetworkController_log.set(this, void 0);
442
439
  _NetworkController_getRpcServiceOptions.set(this, void 0);
443
440
  _NetworkController_getBlockTrackerOptions.set(this, void 0);
444
- _NetworkController_analytics.set(this, void 0);
445
441
  _NetworkController_networkConfigurationsByNetworkClientId.set(this, void 0);
446
442
  _NetworkController_rpcFailoverMode.set(this, 'disabled');
447
443
  __classPrivateFieldSet(this, _NetworkController_infuraProjectId, infuraProjectId, "f");
@@ -449,7 +445,6 @@ class NetworkController extends base_controller_1.BaseController {
449
445
  __classPrivateFieldSet(this, _NetworkController_log, log, "f");
450
446
  __classPrivateFieldSet(this, _NetworkController_getRpcServiceOptions, getRpcServiceOptions, "f");
451
447
  __classPrivateFieldSet(this, _NetworkController_getBlockTrackerOptions, getBlockTrackerOptions, "f");
452
- __classPrivateFieldSet(this, _NetworkController_analytics, analytics, "f");
453
448
  __classPrivateFieldSet(this, _NetworkController_previouslySelectedNetworkClientId, this.state.selectedNetworkClientId, "f");
454
449
  __classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
455
450
  this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
@@ -468,28 +463,6 @@ class NetworkController extends base_controller_1.BaseController {
468
463
  networkStatus: constants_1.NetworkStatus.Available,
469
464
  });
470
465
  });
471
- if (__classPrivateFieldGet(this, _NetworkController_analytics, "f")) {
472
- const analyticsOptions = __classPrivateFieldGet(this, _NetworkController_analytics, "f");
473
- this.messenger.subscribe(`${this.name}:rpcEndpointUnavailable`, ({ chainId, endpointUrl, error }) => {
474
- __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_trackRpcServiceEvent).call(this, analyticsOptions, 'RPC Service Unavailable', {
475
- chainId,
476
- endpointUrl,
477
- error,
478
- });
479
- });
480
- this.messenger.subscribe(`${this.name}:rpcEndpointDegraded`, ({ chainId, duration, endpointUrl, error, retryReason, rpcMethodName, traceId, type, }) => {
481
- __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_trackRpcServiceEvent).call(this, analyticsOptions, 'RPC Service Degraded', {
482
- chainId,
483
- duration,
484
- endpointUrl,
485
- error,
486
- retryReason,
487
- rpcMethodName,
488
- traceId,
489
- type,
490
- });
491
- });
492
- }
493
466
  this.messenger.subscribe(
494
467
  // eslint-disable-next-line no-restricted-syntax
495
468
  'RemoteFeatureFlagController:stateChange', (rpcFailoverMode) => {
@@ -1073,36 +1046,7 @@ class NetworkController extends base_controller_1.BaseController {
1073
1046
  }
1074
1047
  }
1075
1048
  exports.NetworkController = NetworkController;
1076
- _NetworkController_ethQuery = new WeakMap(), _NetworkController_infuraProjectId = new WeakMap(), _NetworkController_failoverUrls = 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_analytics = new WeakMap(), _NetworkController_networkConfigurationsByNetworkClientId = new WeakMap(), _NetworkController_rpcFailoverMode = new WeakMap(), _NetworkController_instances = new WeakSet(), _NetworkController_trackRpcServiceEvent = function _NetworkController_trackRpcServiceEvent(analytics, name, payload) {
1077
- try {
1078
- if ((0, rpc_service_1.isConnectionError)(payload.error)) {
1079
- return;
1080
- }
1081
- const { analyticsId } = this.messenger.call('AnalyticsController:getState');
1082
- if (!analyticsId) {
1083
- return;
1084
- }
1085
- if ((0, remote_feature_flag_controller_1.generateDeterministicRandomNumber)(analyticsId) >=
1086
- analytics.rpcServiceEventsSampleRate) {
1087
- return;
1088
- }
1089
- const properties = (0, rpc_service_events_1.buildRpcServiceEventProperties)({
1090
- chainId: payload.chainId,
1091
- endpointUrl: payload.endpointUrl,
1092
- error: payload.error,
1093
- isRpcEndpointUrlPublic: analytics.isRpcEndpointUrlPublic,
1094
- duration: payload.duration,
1095
- retryReason: payload.retryReason,
1096
- rpcMethodName: payload.rpcMethodName,
1097
- traceId: payload.traceId,
1098
- type: payload.type,
1099
- });
1100
- this.messenger.call('AnalyticsController:trackEvent', (0, rpc_service_events_1.toAnalyticsTrackingEvent)(name, properties));
1101
- }
1102
- catch (error) {
1103
- this.messenger.captureException?.(error);
1104
- }
1105
- }, _NetworkController_updateRpcFailover = function _NetworkController_updateRpcFailover(newMode) {
1049
+ _NetworkController_ethQuery = new WeakMap(), _NetworkController_infuraProjectId = new WeakMap(), _NetworkController_failoverUrls = 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_rpcFailoverMode = new WeakMap(), _NetworkController_instances = new WeakSet(), _NetworkController_updateRpcFailover = function _NetworkController_updateRpcFailover(newMode) {
1106
1050
  if (__classPrivateFieldGet(this, _NetworkController_rpcFailoverMode, "f") === newMode) {
1107
1051
  return;
1108
1052
  }