@metamask-previews/network-controller 22.2.1-preview-03c4c9c3 → 22.2.1-preview-e744341c

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 (64) hide show
  1. package/CHANGELOG.md +9 -25
  2. package/dist/NetworkController.cjs +15 -19
  3. package/dist/NetworkController.cjs.map +1 -1
  4. package/dist/NetworkController.d.cts +8 -72
  5. package/dist/NetworkController.d.cts.map +1 -1
  6. package/dist/NetworkController.d.mts +8 -72
  7. package/dist/NetworkController.d.mts.map +1 -1
  8. package/dist/NetworkController.mjs +15 -19
  9. package/dist/NetworkController.mjs.map +1 -1
  10. package/dist/create-auto-managed-network-client.cjs +13 -12
  11. package/dist/create-auto-managed-network-client.cjs.map +1 -1
  12. package/dist/create-auto-managed-network-client.d.cts +7 -8
  13. package/dist/create-auto-managed-network-client.d.cts.map +1 -1
  14. package/dist/create-auto-managed-network-client.d.mts +7 -8
  15. package/dist/create-auto-managed-network-client.d.mts.map +1 -1
  16. package/dist/create-auto-managed-network-client.mjs +13 -12
  17. package/dist/create-auto-managed-network-client.mjs.map +1 -1
  18. package/dist/create-network-client.cjs +10 -33
  19. package/dist/create-network-client.cjs.map +1 -1
  20. package/dist/create-network-client.d.cts +7 -9
  21. package/dist/create-network-client.d.cts.map +1 -1
  22. package/dist/create-network-client.d.mts +7 -9
  23. package/dist/create-network-client.d.mts.map +1 -1
  24. package/dist/create-network-client.mjs +10 -33
  25. package/dist/create-network-client.mjs.map +1 -1
  26. package/dist/index.cjs +1 -3
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +1 -3
  29. package/dist/index.d.cts.map +1 -1
  30. package/dist/index.d.mts +1 -3
  31. package/dist/index.d.mts.map +1 -1
  32. package/dist/index.mjs +0 -1
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/rpc-service/abstract-rpc-service.cjs.map +1 -1
  35. package/dist/rpc-service/abstract-rpc-service.d.cts +39 -5
  36. package/dist/rpc-service/abstract-rpc-service.d.cts.map +1 -1
  37. package/dist/rpc-service/abstract-rpc-service.d.mts +39 -5
  38. package/dist/rpc-service/abstract-rpc-service.d.mts.map +1 -1
  39. package/dist/rpc-service/abstract-rpc-service.mjs.map +1 -1
  40. package/dist/rpc-service/rpc-service-chain.cjs +23 -10
  41. package/dist/rpc-service/rpc-service-chain.cjs.map +1 -1
  42. package/dist/rpc-service/rpc-service-chain.d.cts +35 -10
  43. package/dist/rpc-service/rpc-service-chain.d.cts.map +1 -1
  44. package/dist/rpc-service/rpc-service-chain.d.mts +35 -10
  45. package/dist/rpc-service/rpc-service-chain.d.mts.map +1 -1
  46. package/dist/rpc-service/rpc-service-chain.mjs +23 -10
  47. package/dist/rpc-service/rpc-service-chain.mjs.map +1 -1
  48. package/dist/rpc-service/rpc-service.cjs +31 -34
  49. package/dist/rpc-service/rpc-service.cjs.map +1 -1
  50. package/dist/rpc-service/rpc-service.d.cts +23 -56
  51. package/dist/rpc-service/rpc-service.d.cts.map +1 -1
  52. package/dist/rpc-service/rpc-service.d.mts +23 -56
  53. package/dist/rpc-service/rpc-service.d.mts.map +1 -1
  54. package/dist/rpc-service/rpc-service.mjs +30 -33
  55. package/dist/rpc-service/rpc-service.mjs.map +1 -1
  56. package/package.json +1 -1
  57. package/dist/rpc-service/rpc-service-requestable.cjs +0 -3
  58. package/dist/rpc-service/rpc-service-requestable.cjs.map +0 -1
  59. package/dist/rpc-service/rpc-service-requestable.d.cts +0 -47
  60. package/dist/rpc-service/rpc-service-requestable.d.cts.map +0 -1
  61. package/dist/rpc-service/rpc-service-requestable.d.mts +0 -47
  62. package/dist/rpc-service/rpc-service-requestable.d.mts.map +0 -1
  63. package/dist/rpc-service/rpc-service-requestable.mjs +0 -2
  64. package/dist/rpc-service/rpc-service-requestable.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -10,39 +10,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
10
10
  ### Added
11
11
 
12
12
  - Implement circuit breaker pattern when retrying requests to Infura and custom RPC endpoints ([#5290](https://github.com/MetaMask/core/pull/5290))
13
- - If the network is perceived to be unavailable after 5 attempts, further retries will be paused for 30 seconds.
14
- - "Unavailable" means the following:
13
+ - If the network is perceived to be down after 5 attempts, further retries will be paused for 30 seconds
14
+ - "Down" means the following:
15
15
  - A failure to reach the network (exact error depending on platform / HTTP client)
16
16
  - The request responds with a non-JSON-parseable or non-JSON-RPC-compatible body
17
17
  - The request returns a non-200 response
18
18
  - Use exponential backoff / jitter when retrying requests to Infura and custom RPC endpoints ([#5290](https://github.com/MetaMask/core/pull/5290))
19
- - As requests are retried, the delay between retries will increase exponentially (using random variance to prevent bursts).
20
- - Add support for automatic failover when Infura is unavailable ([#5630](https://github.com/MetaMask/core/pull/5630))
19
+ - As requests are retried, the delay between retries will increase exponentially (using random variance to prevent bursts)
20
+ - Add support for automatic failover when Infura is down ([#5630](https://github.com/MetaMask/core/pull/5630))
21
21
  - An Infura RPC endpoint can now be configured with a list of failover URLs via `failoverUrls`.
22
22
  - If, after many attempts, an Infura network is perceived to be down, the list of failover URLs will be tried in turn.
23
- - Add messenger action `NetworkController:rpcEndpointUnavailable` for responding to when a RPC endpoint becomes unavailable (see above) ([#5492](https://github.com/MetaMask/core/pull/5492), [#5501](https://github.com/MetaMask/core/pull/5501))
24
- - Also add associated type `NetworkControllerRpcEndpointUnavailableEvent`.
25
- - Add messenger action `NetworkController:rpcEndpointDegraded` for responding to when a RPC endpoint becomes degraded ([#5492](https://github.com/MetaMask/core/pull/5492))
26
- - Also add associated type `NetworkControllerRpcEndpointDegradedEvent`.
27
- - Add messenger action `NetworkController:rpcEndpointRequestRetried` for responding to when a RPC endpoint is retried following a retriable error ([#5492](https://github.com/MetaMask/core/pull/5492))
28
- - Also add associated type `NetworkControllerRpcEndpointRequestRetriedEvent`.
29
- - This is mainly useful for tests when mocking timers.
30
- - Export `RpcServiceRequestable` type, which was previously named `AbstractRpcService` ([#5492](https://github.com/MetaMask/core/pull/5492))
31
- - Export `isConnectionError` utility function ([#5501](https://github.com/MetaMask/core/pull/5501))
32
-
33
- ### Changed
34
-
35
- - **BREAKING:** `NetworkController` constructor now takes a new required option, `getRpcServiceOptions` ([#5290](https://github.com/MetaMask/core/pull/5290), [#5492](https://github.com/MetaMask/core/pull/5492))
36
- - This can be used to customize how RPC services (which eventually hit RPC endpoints) are constructed.
37
- - For instance, you could set one `circuitBreakDuration` for one class of endpoints, and another `circuitBreakDuration` for another class.
38
- - At minimum you will need to pass `fetch` and `btoa`.
39
- - The `NetworkControllerOptions` also reflects this change.
23
+
24
+ ### Changed
25
+
26
+ - **BREAKING:** `NetworkController` constructor now takes two required options, `fetch` and `btoa` ([#5290](https://github.com/MetaMask/core/pull/5290))
27
+ - These are passed along to functions that create the JSON-RPC middleware.
40
28
  - **BREAKING:** Add required property `failoverUrls` to `RpcEndpoint` ([#5630](https://github.com/MetaMask/core/pull/5630))
41
- - The `NetworkControllerState` and the `state` option to `NetworkController` also reflect this change
42
29
  - **BREAKING:** Add required property `failoverRpcUrls` to `NetworkClientConfiguration` ([#5630](https://github.com/MetaMask/core/pull/5630))
43
- - The `configuration` property in the `AutoManagedNetworkClient` and `NetworkClient` types also reflect this change
44
- - **BREAKING:** The `AbstractRpcService` type now has a non-optional `endpointUrl` property ([#5492](https://github.com/MetaMask/core/pull/5492))
45
- - The old version of `AbstractRpcService` is now called `RpcServiceRequestable`
46
30
  - Synchronize retry logic and error handling behavior between Infura and custom RPC endpoints ([#5290](https://github.com/MetaMask/core/pull/5290))
47
31
  - A request to a custom endpoint that returns a 418 response will no longer return a JSON-RPC response with the error "Request is being rate limited"
48
32
  - A request to a custom endpoint that returns a 429 response now returns a JSON-RPC response with the error "Request is being rate limited"
@@ -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_fetch, _NetworkController_btoa, _NetworkController_networkConfigurationsByNetworkClientId, _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");
@@ -287,13 +287,7 @@ function buildNetworkConfigurationsByNetworkClientId(networkConfigurationsByChai
287
287
  * Controller that creates and manages an Ethereum network provider.
288
288
  */
289
289
  class NetworkController extends base_controller_1.BaseController {
290
- /**
291
- * Constructs a NetworkController.
292
- *
293
- * @param options - The options; see {@link NetworkControllerOptions}.
294
- */
295
- constructor(options) {
296
- const { messenger, state, infuraProjectId, log, getRpcServiceOptions } = options;
290
+ constructor({ messenger, state, infuraProjectId, log, fetch: givenFetch, btoa: givenBtoa, }) {
297
291
  const initialState = { ...getDefaultNetworkControllerState(), ...state };
298
292
  validateNetworkControllerState(initialState);
299
293
  if (!infuraProjectId || typeof infuraProjectId !== 'string') {
@@ -327,11 +321,13 @@ class NetworkController extends base_controller_1.BaseController {
327
321
  _NetworkController_autoManagedNetworkClientRegistry.set(this, void 0);
328
322
  _NetworkController_autoManagedNetworkClient.set(this, void 0);
329
323
  _NetworkController_log.set(this, void 0);
330
- _NetworkController_getRpcServiceOptions.set(this, void 0);
324
+ _NetworkController_fetch.set(this, void 0);
325
+ _NetworkController_btoa.set(this, void 0);
331
326
  _NetworkController_networkConfigurationsByNetworkClientId.set(this, void 0);
332
327
  __classPrivateFieldSet(this, _NetworkController_infuraProjectId, infuraProjectId, "f");
333
328
  __classPrivateFieldSet(this, _NetworkController_log, log, "f");
334
- __classPrivateFieldSet(this, _NetworkController_getRpcServiceOptions, getRpcServiceOptions, "f");
329
+ __classPrivateFieldSet(this, _NetworkController_fetch, givenFetch, "f");
330
+ __classPrivateFieldSet(this, _NetworkController_btoa, givenBtoa, "f");
335
331
  __classPrivateFieldSet(this, _NetworkController_previouslySelectedNetworkClientId, this.state.selectedNetworkClientId, "f");
336
332
  __classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
337
333
  this.messagingSystem.registerActionHandler(
@@ -1116,7 +1112,7 @@ class NetworkController extends base_controller_1.BaseController {
1116
1112
  }
1117
1113
  }
1118
1114
  exports.NetworkController = NetworkController;
1119
- _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(), _NetworkController_refreshNetwork =
1115
+ _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_fetch = new WeakMap(), _NetworkController_btoa = new WeakMap(), _NetworkController_networkConfigurationsByNetworkClientId = new WeakMap(), _NetworkController_instances = new WeakSet(), _NetworkController_refreshNetwork =
1120
1116
  /**
1121
1117
  * Executes a series of steps to switch the network:
1122
1118
  *
@@ -1334,8 +1330,8 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1334
1330
  infuraProjectId: __classPrivateFieldGet(this, _NetworkController_infuraProjectId, "f"),
1335
1331
  ticker: networkFields.nativeCurrency,
1336
1332
  },
1337
- getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
1338
- messenger: this.messagingSystem,
1333
+ fetch: __classPrivateFieldGet(this, _NetworkController_fetch, "f"),
1334
+ btoa: __classPrivateFieldGet(this, _NetworkController_btoa, "f"),
1339
1335
  });
1340
1336
  }
1341
1337
  else {
@@ -1347,8 +1343,8 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1347
1343
  rpcUrl: addedRpcEndpoint.url,
1348
1344
  ticker: networkFields.nativeCurrency,
1349
1345
  },
1350
- getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
1351
- messenger: this.messagingSystem,
1346
+ fetch: __classPrivateFieldGet(this, _NetworkController_fetch, "f"),
1347
+ btoa: __classPrivateFieldGet(this, _NetworkController_btoa, "f"),
1352
1348
  });
1353
1349
  }
1354
1350
  }
@@ -1404,8 +1400,8 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1404
1400
  chainId: networkConfiguration.chainId,
1405
1401
  ticker: networkConfiguration.nativeCurrency,
1406
1402
  },
1407
- getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
1408
- messenger: this.messagingSystem,
1403
+ fetch: __classPrivateFieldGet(this, _NetworkController_fetch, "f"),
1404
+ btoa: __classPrivateFieldGet(this, _NetworkController_btoa, "f"),
1409
1405
  }),
1410
1406
  ];
1411
1407
  }
@@ -1419,8 +1415,8 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1419
1415
  rpcUrl: rpcEndpoint.url,
1420
1416
  ticker: networkConfiguration.nativeCurrency,
1421
1417
  },
1422
- getRpcServiceOptions: __classPrivateFieldGet(this, _NetworkController_getRpcServiceOptions, "f"),
1423
- messenger: this.messagingSystem,
1418
+ fetch: __classPrivateFieldGet(this, _NetworkController_fetch, "f"),
1419
+ btoa: __classPrivateFieldGet(this, _NetworkController_btoa, "f"),
1424
1420
  }),
1425
1421
  ];
1426
1422
  });