@metamask/network-controller 22.1.1 → 22.2.1
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 +31 -1
- package/dist/NetworkController.cjs +61 -10
- package/dist/NetworkController.cjs.map +1 -1
- package/dist/NetworkController.d.cts +61 -5
- package/dist/NetworkController.d.cts.map +1 -1
- package/dist/NetworkController.d.mts +61 -5
- package/dist/NetworkController.d.mts.map +1 -1
- package/dist/NetworkController.mjs +61 -9
- package/dist/NetworkController.mjs.map +1 -1
- package/dist/create-network-client.cjs +1 -4
- package/dist/create-network-client.cjs.map +1 -1
- package/dist/create-network-client.d.cts.map +1 -1
- package/dist/create-network-client.d.mts.map +1 -1
- package/dist/create-network-client.mjs +1 -4
- package/dist/create-network-client.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.cjs +3 -0
- package/dist/rpc-service/abstract-rpc-service.cjs.map +1 -0
- package/dist/rpc-service/abstract-rpc-service.d.cts +46 -0
- package/dist/rpc-service/abstract-rpc-service.d.cts.map +1 -0
- package/dist/rpc-service/abstract-rpc-service.d.mts +46 -0
- package/dist/rpc-service/abstract-rpc-service.d.mts.map +1 -0
- package/dist/rpc-service/abstract-rpc-service.mjs +2 -0
- package/dist/rpc-service/abstract-rpc-service.mjs.map +1 -0
- package/dist/rpc-service/rpc-service-chain.cjs +109 -0
- package/dist/rpc-service/rpc-service-chain.cjs.map +1 -0
- package/dist/rpc-service/rpc-service-chain.d.cts +116 -0
- package/dist/rpc-service/rpc-service-chain.d.cts.map +1 -0
- package/dist/rpc-service/rpc-service-chain.d.mts +116 -0
- package/dist/rpc-service/rpc-service-chain.d.mts.map +1 -0
- package/dist/rpc-service/rpc-service-chain.mjs +105 -0
- package/dist/rpc-service/rpc-service-chain.mjs.map +1 -0
- package/dist/rpc-service/rpc-service.cjs +279 -0
- package/dist/rpc-service/rpc-service.cjs.map +1 -0
- package/dist/rpc-service/rpc-service.d.cts +134 -0
- package/dist/rpc-service/rpc-service.d.cts.map +1 -0
- package/dist/rpc-service/rpc-service.d.mts +134 -0
- package/dist/rpc-service/rpc-service.d.mts.map +1 -0
- package/dist/rpc-service/rpc-service.mjs +278 -0
- package/dist/rpc-service/rpc-service.mjs.map +1 -0
- package/dist/rpc-service/shared.cjs +3 -0
- package/dist/rpc-service/shared.cjs.map +1 -0
- package/dist/rpc-service/shared.d.cts +12 -0
- package/dist/rpc-service/shared.d.cts.map +1 -0
- package/dist/rpc-service/shared.d.mts +12 -0
- package/dist/rpc-service/shared.d.mts.map +1 -0
- package/dist/rpc-service/shared.mjs +2 -0
- package/dist/rpc-service/shared.mjs.map +1 -0
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [22.2.1]
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Bump `@metamask/base-controller` from `^7.1.1` to `^8.0.0` [#5305](https://github.com/MetaMask/core/pull/5305))
|
|
15
|
+
|
|
16
|
+
## [22.2.0]
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Export `AbstractRpcService` type ([#5263](https://github.com/MetaMask/core/pull/5263))
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Bump `@metamask/base-controller` from `^7.0.0` to `^7.1.1` ([#5079](https://github.com/MetaMask/core/pull/5079), [#5135](https://github.com/MetaMask/core/pull/5135))
|
|
25
|
+
- Bump `@metamask/controller-utils` from `^11.4.4` to `^11.5.0` ([#5135](https://github.com/MetaMask/core/pull/5135), [#5272](https://github.com/MetaMask/core/pull/5272))
|
|
26
|
+
- Bump `@metamask/eth-json-rpc-provider` from `^4.1.6` to `^4.1.8` ([#5082](https://github.com/MetaMask/core/pull/5082), [#5272](https://github.com/MetaMask/core/pull/5272))
|
|
27
|
+
- Bump `@metamask/json-rpc-engine` from `^10.0.1` to `^10.0.3` ([#5082](https://github.com/MetaMask/core/pull/5082), [#5272](https://github.com/MetaMask/core/pull/5272))
|
|
28
|
+
- Bump `@metamask/rpc-errors` from `^7.0.1` to `^7.0.2` ([#5080](https://github.com/MetaMask/core/pull/5080))
|
|
29
|
+
- Bump `@metamask/utils` from `^10.0.0` to `^11.1.0` ([#5080](https://github.com/MetaMask/core/pull/5080), [#5223](https://github.com/MetaMask/core/pull/5223))
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- Fix `lookupNetwork` so that it will no longer throw an error if `networkDidChange` subscriptions have been removed before it returns ([#5116](https://github.com/MetaMask/core/pull/5116))
|
|
34
|
+
- This error could occur if the NetworkController's messenger is cleared of subscriptions, as in a "destroy" step.
|
|
35
|
+
- Fix race condition so that after adding a new RPC endpoint to a network, it is possible to access the new endpoint inside of a `stateChange` event listener via `getNetworkConfigurationByNetworkClientId` ([#5122](https://github.com/MetaMask/core/pull/5122))
|
|
36
|
+
- Fix `selectAvailableNetworkClientIds` so that it is properly memoized ([#5193](https://github.com/MetaMask/core/pull/5193))
|
|
37
|
+
|
|
10
38
|
## [22.1.1]
|
|
11
39
|
|
|
12
40
|
### Changed
|
|
@@ -694,7 +722,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
694
722
|
|
|
695
723
|
All changes listed after this point were applied to this package following the monorepo conversion.
|
|
696
724
|
|
|
697
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@22.
|
|
725
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@22.2.1...HEAD
|
|
726
|
+
[22.2.1]: https://github.com/MetaMask/core/compare/@metamask/network-controller@22.2.0...@metamask/network-controller@22.2.1
|
|
727
|
+
[22.2.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@22.1.1...@metamask/network-controller@22.2.0
|
|
698
728
|
[22.1.1]: https://github.com/MetaMask/core/compare/@metamask/network-controller@22.1.0...@metamask/network-controller@22.1.1
|
|
699
729
|
[22.1.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@22.0.2...@metamask/network-controller@22.1.0
|
|
700
730
|
[22.0.2]: https://github.com/MetaMask/core/compare/@metamask/network-controller@22.0.1...@metamask/network-controller@22.0.2
|
|
@@ -38,7 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
};
|
|
39
39
|
var _NetworkController_instances, _NetworkController_ethQuery, _NetworkController_infuraProjectId, _NetworkController_previouslySelectedNetworkClientId, _NetworkController_providerProxy, _NetworkController_blockTrackerProxy, _NetworkController_autoManagedNetworkClientRegistry, _NetworkController_autoManagedNetworkClient, _NetworkController_log, _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
|
-
exports.NetworkController = exports.selectAvailableNetworkClientIds = exports.getAvailableNetworkClientIds = exports.getNetworkConfigurations = exports.getDefaultNetworkControllerState = exports.knownKeysOf = exports.RpcEndpointType = void 0;
|
|
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"));
|
|
@@ -46,6 +46,7 @@ const rpc_errors_1 = require("@metamask/rpc-errors");
|
|
|
46
46
|
const swappable_obj_proxy_1 = require("@metamask/swappable-obj-proxy");
|
|
47
47
|
const utils_1 = require("@metamask/utils");
|
|
48
48
|
const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
|
|
49
|
+
const lodash_1 = require("lodash");
|
|
49
50
|
const reselect_1 = require("reselect");
|
|
50
51
|
const URI = __importStar(require("uri-js"));
|
|
51
52
|
const uuid_1 = require("uuid");
|
|
@@ -147,6 +148,14 @@ function getDefaultNetworkControllerState() {
|
|
|
147
148
|
};
|
|
148
149
|
}
|
|
149
150
|
exports.getDefaultNetworkControllerState = getDefaultNetworkControllerState;
|
|
151
|
+
/**
|
|
152
|
+
* Redux selector for getting all network configurations from NetworkController
|
|
153
|
+
* state, keyed by chain ID.
|
|
154
|
+
*
|
|
155
|
+
* @param state - NetworkController state
|
|
156
|
+
* @returns All registered network configurations, keyed by chain ID.
|
|
157
|
+
*/
|
|
158
|
+
const selectNetworkConfigurationsByChainId = (state) => state.networkConfigurationsByChainId;
|
|
150
159
|
/**
|
|
151
160
|
* Get a list of all network configurations.
|
|
152
161
|
*
|
|
@@ -158,8 +167,17 @@ function getNetworkConfigurations(state) {
|
|
|
158
167
|
}
|
|
159
168
|
exports.getNetworkConfigurations = getNetworkConfigurations;
|
|
160
169
|
/**
|
|
161
|
-
*
|
|
162
|
-
*
|
|
170
|
+
* Redux selector for getting a list of all network configurations from
|
|
171
|
+
* NetworkController state.
|
|
172
|
+
*
|
|
173
|
+
* @param state - NetworkController state
|
|
174
|
+
* @returns A list of all available network configurations
|
|
175
|
+
*/
|
|
176
|
+
exports.selectNetworkConfigurations = (0, reselect_1.createSelector)(selectNetworkConfigurationsByChainId, (networkConfigurationsByChainId) => Object.values(networkConfigurationsByChainId));
|
|
177
|
+
/**
|
|
178
|
+
* Get a list of all available network client IDs from a list of network
|
|
179
|
+
* configurations.
|
|
180
|
+
*
|
|
163
181
|
* @param networkConfigurations - The array of network configurations
|
|
164
182
|
* @returns A list of all available client IDs
|
|
165
183
|
*/
|
|
@@ -167,7 +185,14 @@ function getAvailableNetworkClientIds(networkConfigurations) {
|
|
|
167
185
|
return networkConfigurations.flatMap((networkConfiguration) => networkConfiguration.rpcEndpoints.map((rpcEndpoint) => rpcEndpoint.networkClientId));
|
|
168
186
|
}
|
|
169
187
|
exports.getAvailableNetworkClientIds = getAvailableNetworkClientIds;
|
|
170
|
-
|
|
188
|
+
/**
|
|
189
|
+
* Redux selector for getting a list of all available network client IDs
|
|
190
|
+
* from NetworkController state.
|
|
191
|
+
*
|
|
192
|
+
* @param state - NetworkController state
|
|
193
|
+
* @returns A list of all available network client IDs.
|
|
194
|
+
*/
|
|
195
|
+
exports.selectAvailableNetworkClientIds = (0, reselect_1.createSelector)(exports.selectNetworkConfigurations, getAvailableNetworkClientIds);
|
|
171
196
|
/**
|
|
172
197
|
* Determines whether the given URL is valid by attempting to parse it.
|
|
173
198
|
*
|
|
@@ -213,7 +238,7 @@ function deriveInfuraNetworkNameFromRpcEndpointUrl(rpcEndpointUrl) {
|
|
|
213
238
|
*/
|
|
214
239
|
function validateNetworkControllerState(state) {
|
|
215
240
|
const networkConfigurationEntries = Object.entries(state.networkConfigurationsByChainId);
|
|
216
|
-
const networkClientIds = (
|
|
241
|
+
const networkClientIds = getAvailableNetworkClientIds(getNetworkConfigurations(state));
|
|
217
242
|
if (networkConfigurationEntries.length === 0) {
|
|
218
243
|
throw new Error('NetworkController state is invalid: `networkConfigurationsByChainId` cannot be empty');
|
|
219
244
|
}
|
|
@@ -525,7 +550,26 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
525
550
|
let networkChanged = false;
|
|
526
551
|
const listener = () => {
|
|
527
552
|
networkChanged = true;
|
|
528
|
-
|
|
553
|
+
try {
|
|
554
|
+
this.messagingSystem.unsubscribe('NetworkController:networkDidChange', listener);
|
|
555
|
+
}
|
|
556
|
+
catch (error) {
|
|
557
|
+
// In theory, this `catch` should not be necessary given that this error
|
|
558
|
+
// would occur "inside" of the call to `#determineEIP1559Compatibility`
|
|
559
|
+
// below and so it should be caught by the `try`/`catch` below (it is
|
|
560
|
+
// impossible to reproduce in tests for that reason). However, somehow
|
|
561
|
+
// it occurs within Mobile and so we have to add our own `try`/`catch`
|
|
562
|
+
// here.
|
|
563
|
+
/* istanbul ignore next */
|
|
564
|
+
if (!(error instanceof Error) ||
|
|
565
|
+
error.message !==
|
|
566
|
+
'Subscription not found for event: NetworkController:networkDidChange') {
|
|
567
|
+
// Again, this error should not happen and is impossible to reproduce
|
|
568
|
+
// in tests.
|
|
569
|
+
/* istanbul ignore next */
|
|
570
|
+
throw error;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
529
573
|
};
|
|
530
574
|
this.messagingSystem.subscribe('NetworkController:networkDidChange', listener);
|
|
531
575
|
let updatedNetworkStatus;
|
|
@@ -575,7 +619,16 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
575
619
|
// in the process of being called, so we don't need to go further.
|
|
576
620
|
return;
|
|
577
621
|
}
|
|
578
|
-
|
|
622
|
+
try {
|
|
623
|
+
this.messagingSystem.unsubscribe('NetworkController:networkDidChange', listener);
|
|
624
|
+
}
|
|
625
|
+
catch (error) {
|
|
626
|
+
if (!(error instanceof Error) ||
|
|
627
|
+
error.message !==
|
|
628
|
+
'Subscription not found for event: NetworkController:networkDidChange') {
|
|
629
|
+
throw error;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
579
632
|
this.update((state) => {
|
|
580
633
|
const meta = state.networksMetadata[state.selectedNetworkClientId];
|
|
581
634
|
meta.status = updatedNetworkStatus;
|
|
@@ -748,7 +801,6 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
748
801
|
networkConfigurationToPersist: newNetworkConfiguration,
|
|
749
802
|
});
|
|
750
803
|
});
|
|
751
|
-
__classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
|
|
752
804
|
this.messagingSystem.publish(`${controllerName}:networkAdded`, newNetworkConfiguration);
|
|
753
805
|
return newNetworkConfiguration;
|
|
754
806
|
}
|
|
@@ -959,7 +1011,6 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
959
1011
|
});
|
|
960
1012
|
});
|
|
961
1013
|
}
|
|
962
|
-
__classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
|
|
963
1014
|
__classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_unregisterNetworkClientsAsNeeded).call(this, {
|
|
964
1015
|
networkClientOperations,
|
|
965
1016
|
autoManagedNetworkClientRegistry,
|
|
@@ -1001,7 +1052,6 @@ class NetworkController extends base_controller_1.BaseController {
|
|
|
1001
1052
|
existingNetworkConfiguration,
|
|
1002
1053
|
});
|
|
1003
1054
|
});
|
|
1004
|
-
__classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId(this.state.networkConfigurationsByChainId), "f");
|
|
1005
1055
|
this.messagingSystem.publish('NetworkController:networkRemoved', existingNetworkConfiguration);
|
|
1006
1056
|
}
|
|
1007
1057
|
/**
|
|
@@ -1310,6 +1360,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
|
|
|
1310
1360
|
state.networkConfigurationsByChainId[args.networkFields.chainId] =
|
|
1311
1361
|
args.networkConfigurationToPersist;
|
|
1312
1362
|
}
|
|
1363
|
+
__classPrivateFieldSet(this, _NetworkController_networkConfigurationsByNetworkClientId, buildNetworkConfigurationsByNetworkClientId((0, lodash_1.cloneDeep)(state.networkConfigurationsByChainId)), "f");
|
|
1313
1364
|
}, _NetworkController_ensureAutoManagedNetworkClientRegistryPopulated = function _NetworkController_ensureAutoManagedNetworkClientRegistryPopulated() {
|
|
1314
1365
|
return (__classPrivateFieldSet(this, _NetworkController_autoManagedNetworkClientRegistry, __classPrivateFieldGet(this, _NetworkController_autoManagedNetworkClientRegistry, "f") ?? __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_createAutoManagedNetworkClientRegistry).call(this), "f"));
|
|
1315
1366
|
}, _NetworkController_createAutoManagedNetworkClientRegistry = function _NetworkController_createAutoManagedNetworkClientRegistry() {
|