@metamask-previews/network-controller 22.2.1-preview-03c4c9c3 → 22.2.1-preview-86cafc23
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 +9 -25
- package/dist/NetworkController.cjs +52 -19
- package/dist/NetworkController.cjs.map +1 -1
- package/dist/NetworkController.d.cts +8 -72
- package/dist/NetworkController.d.cts.map +1 -1
- package/dist/NetworkController.d.mts +8 -72
- package/dist/NetworkController.d.mts.map +1 -1
- package/dist/NetworkController.mjs +53 -20
- package/dist/NetworkController.mjs.map +1 -1
- package/dist/create-auto-managed-network-client.cjs +13 -12
- package/dist/create-auto-managed-network-client.cjs.map +1 -1
- package/dist/create-auto-managed-network-client.d.cts +7 -8
- package/dist/create-auto-managed-network-client.d.cts.map +1 -1
- package/dist/create-auto-managed-network-client.d.mts +7 -8
- package/dist/create-auto-managed-network-client.d.mts.map +1 -1
- package/dist/create-auto-managed-network-client.mjs +13 -12
- package/dist/create-auto-managed-network-client.mjs.map +1 -1
- package/dist/create-network-client.cjs +10 -33
- package/dist/create-network-client.cjs.map +1 -1
- package/dist/create-network-client.d.cts +7 -9
- package/dist/create-network-client.d.cts.map +1 -1
- package/dist/create-network-client.d.mts +7 -9
- package/dist/create-network-client.d.mts.map +1 -1
- package/dist/create-network-client.mjs +10 -33
- package/dist/create-network-client.mjs.map +1 -1
- package/dist/index.cjs +1 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.cjs.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.d.cts +39 -5
- package/dist/rpc-service/abstract-rpc-service.d.cts.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.d.mts +39 -5
- package/dist/rpc-service/abstract-rpc-service.d.mts.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.mjs.map +1 -1
- package/dist/rpc-service/rpc-service-chain.cjs +23 -10
- package/dist/rpc-service/rpc-service-chain.cjs.map +1 -1
- package/dist/rpc-service/rpc-service-chain.d.cts +35 -10
- package/dist/rpc-service/rpc-service-chain.d.cts.map +1 -1
- package/dist/rpc-service/rpc-service-chain.d.mts +35 -10
- package/dist/rpc-service/rpc-service-chain.d.mts.map +1 -1
- package/dist/rpc-service/rpc-service-chain.mjs +23 -10
- package/dist/rpc-service/rpc-service-chain.mjs.map +1 -1
- package/dist/rpc-service/rpc-service.cjs +31 -34
- package/dist/rpc-service/rpc-service.cjs.map +1 -1
- package/dist/rpc-service/rpc-service.d.cts +23 -56
- package/dist/rpc-service/rpc-service.d.cts.map +1 -1
- package/dist/rpc-service/rpc-service.d.mts +23 -56
- package/dist/rpc-service/rpc-service.d.mts.map +1 -1
- package/dist/rpc-service/rpc-service.mjs +30 -33
- package/dist/rpc-service/rpc-service.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/rpc-service/rpc-service-requestable.cjs +0 -3
- package/dist/rpc-service/rpc-service-requestable.cjs.map +0 -1
- package/dist/rpc-service/rpc-service-requestable.d.cts +0 -47
- package/dist/rpc-service/rpc-service-requestable.d.cts.map +0 -1
- package/dist/rpc-service/rpc-service-requestable.d.mts +0 -47
- package/dist/rpc-service/rpc-service-requestable.d.mts.map +0 -1
- package/dist/rpc-service/rpc-service-requestable.mjs +0 -2
- 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
|
|
14
|
-
- "
|
|
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
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
-
|
|
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,
|
|
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");
|
|
@@ -109,6 +109,17 @@ const controllerName = 'NetworkController';
|
|
|
109
109
|
* @returns The default value for `networkConfigurationsByChainId`.
|
|
110
110
|
*/
|
|
111
111
|
function getDefaultNetworkConfigurationsByChainId() {
|
|
112
|
+
return {
|
|
113
|
+
...getDefaultInfuraNetworkConfigurationsByChainId(),
|
|
114
|
+
...getDefaultCustomNetworkConfigurationsByChainId(),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Constructs a `networkConfigurationsByChainId` object for all default Infura networks.
|
|
119
|
+
*
|
|
120
|
+
* @returns The `networkConfigurationsByChainId` object of all Infura networks.
|
|
121
|
+
*/
|
|
122
|
+
function getDefaultInfuraNetworkConfigurationsByChainId() {
|
|
112
123
|
return Object.values(controller_utils_1.InfuraNetworkType).reduce((obj, infuraNetworkType) => {
|
|
113
124
|
const chainId = controller_utils_1.ChainId[infuraNetworkType];
|
|
114
125
|
const rpcEndpointUrl =
|
|
@@ -133,6 +144,32 @@ function getDefaultNetworkConfigurationsByChainId() {
|
|
|
133
144
|
return { ...obj, [chainId]: networkConfiguration };
|
|
134
145
|
}, {});
|
|
135
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Constructs a `networkConfigurationsByChainId` object for all default custom networks.
|
|
149
|
+
*
|
|
150
|
+
* @returns The `networkConfigurationsByChainId` object of all custom networks.
|
|
151
|
+
*/
|
|
152
|
+
function getDefaultCustomNetworkConfigurationsByChainId() {
|
|
153
|
+
const { ticker, rpcPrefs } = controller_utils_1.BUILT_IN_NETWORKS[controller_utils_1.BuiltInNetworkName.MegaETHTestnet];
|
|
154
|
+
return {
|
|
155
|
+
[controller_utils_1.ChainId[controller_utils_1.BuiltInNetworkName.MegaETHTestnet]]: {
|
|
156
|
+
blockExplorerUrls: [rpcPrefs.blockExplorerUrl],
|
|
157
|
+
chainId: controller_utils_1.ChainId[controller_utils_1.BuiltInNetworkName.MegaETHTestnet],
|
|
158
|
+
defaultRpcEndpointIndex: 0,
|
|
159
|
+
defaultBlockExplorerUrlIndex: 0,
|
|
160
|
+
name: controller_utils_1.NetworkNickname[controller_utils_1.BuiltInNetworkName.MegaETHTestnet],
|
|
161
|
+
nativeCurrency: ticker,
|
|
162
|
+
rpcEndpoints: [
|
|
163
|
+
{
|
|
164
|
+
failoverUrls: [],
|
|
165
|
+
networkClientId: controller_utils_1.BuiltInNetworkName.MegaETHTestnet,
|
|
166
|
+
type: RpcEndpointType.Custom,
|
|
167
|
+
url: controller_utils_1.BUILT_IN_CUSTOM_NETWORKS_RPC.MEGAETH_TESTNET,
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
136
173
|
/**
|
|
137
174
|
* Constructs properties for the NetworkController state whose values will be
|
|
138
175
|
* used if not provided to the constructor.
|
|
@@ -287,13 +324,7 @@ function buildNetworkConfigurationsByNetworkClientId(networkConfigurationsByChai
|
|
|
287
324
|
* Controller that creates and manages an Ethereum network provider.
|
|
288
325
|
*/
|
|
289
326
|
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;
|
|
327
|
+
constructor({ messenger, state, infuraProjectId, log, fetch: givenFetch, btoa: givenBtoa, }) {
|
|
297
328
|
const initialState = { ...getDefaultNetworkControllerState(), ...state };
|
|
298
329
|
validateNetworkControllerState(initialState);
|
|
299
330
|
if (!infuraProjectId || typeof infuraProjectId !== 'string') {
|
|
@@ -327,11 +358,13 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
327
358
|
_NetworkController_autoManagedNetworkClientRegistry.set(this, void 0);
|
|
328
359
|
_NetworkController_autoManagedNetworkClient.set(this, void 0);
|
|
329
360
|
_NetworkController_log.set(this, void 0);
|
|
330
|
-
|
|
361
|
+
_NetworkController_fetch.set(this, void 0);
|
|
362
|
+
_NetworkController_btoa.set(this, void 0);
|
|
331
363
|
_NetworkController_networkConfigurationsByNetworkClientId.set(this, void 0);
|
|
332
364
|
__classPrivateFieldSet(this, _NetworkController_infuraProjectId, infuraProjectId, "f");
|
|
333
365
|
__classPrivateFieldSet(this, _NetworkController_log, log, "f");
|
|
334
|
-
__classPrivateFieldSet(this,
|
|
366
|
+
__classPrivateFieldSet(this, _NetworkController_fetch, givenFetch, "f");
|
|
367
|
+
__classPrivateFieldSet(this, _NetworkController_btoa, givenBtoa, "f");
|
|
335
368
|
__classPrivateFieldSet(this, _NetworkController_previouslySelectedNetworkClientId, this.state.selectedNetworkClientId, "f");
|
|
336
369
|
__classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
|
|
337
370
|
this.messagingSystem.registerActionHandler(
|
|
@@ -1116,7 +1149,7 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
1116
1149
|
}
|
|
1117
1150
|
}
|
|
1118
1151
|
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(),
|
|
1152
|
+
_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
1153
|
/**
|
|
1121
1154
|
* Executes a series of steps to switch the network:
|
|
1122
1155
|
*
|
|
@@ -1334,8 +1367,8 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1334
1367
|
infuraProjectId: __classPrivateFieldGet(this, _NetworkController_infuraProjectId, "f"),
|
|
1335
1368
|
ticker: networkFields.nativeCurrency,
|
|
1336
1369
|
},
|
|
1337
|
-
|
|
1338
|
-
|
|
1370
|
+
fetch: __classPrivateFieldGet(this, _NetworkController_fetch, "f"),
|
|
1371
|
+
btoa: __classPrivateFieldGet(this, _NetworkController_btoa, "f"),
|
|
1339
1372
|
});
|
|
1340
1373
|
}
|
|
1341
1374
|
else {
|
|
@@ -1347,8 +1380,8 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1347
1380
|
rpcUrl: addedRpcEndpoint.url,
|
|
1348
1381
|
ticker: networkFields.nativeCurrency,
|
|
1349
1382
|
},
|
|
1350
|
-
|
|
1351
|
-
|
|
1383
|
+
fetch: __classPrivateFieldGet(this, _NetworkController_fetch, "f"),
|
|
1384
|
+
btoa: __classPrivateFieldGet(this, _NetworkController_btoa, "f"),
|
|
1352
1385
|
});
|
|
1353
1386
|
}
|
|
1354
1387
|
}
|
|
@@ -1404,8 +1437,8 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1404
1437
|
chainId: networkConfiguration.chainId,
|
|
1405
1438
|
ticker: networkConfiguration.nativeCurrency,
|
|
1406
1439
|
},
|
|
1407
|
-
|
|
1408
|
-
|
|
1440
|
+
fetch: __classPrivateFieldGet(this, _NetworkController_fetch, "f"),
|
|
1441
|
+
btoa: __classPrivateFieldGet(this, _NetworkController_btoa, "f"),
|
|
1409
1442
|
}),
|
|
1410
1443
|
];
|
|
1411
1444
|
}
|
|
@@ -1419,8 +1452,8 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1419
1452
|
rpcUrl: rpcEndpoint.url,
|
|
1420
1453
|
ticker: networkConfiguration.nativeCurrency,
|
|
1421
1454
|
},
|
|
1422
|
-
|
|
1423
|
-
|
|
1455
|
+
fetch: __classPrivateFieldGet(this, _NetworkController_fetch, "f"),
|
|
1456
|
+
btoa: __classPrivateFieldGet(this, _NetworkController_btoa, "f"),
|
|
1424
1457
|
}),
|
|
1425
1458
|
];
|
|
1426
1459
|
});
|