@metamask/network-controller 10.2.0 → 10.3.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 CHANGED
@@ -6,6 +6,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [10.3.1]
10
+ ### Changed
11
+ - Bump `@metamask/eth-json-rpc-infura` dependency from ^8.0.0 to ^8.1.0
12
+ - This extends the types that this package recognizes to include Linea networks
13
+
14
+ ## [10.3.0]
15
+ ### Added
16
+ - Add `getNetworkClientsById` method ([#1439](https://github.com/MetaMask/core/pull/1439))
17
+ - This method returns a registry of available built-in and custom networks, allowing consumers to access multiple networks simultaneously if desired
18
+
19
+ ### Changed
20
+ - Network clients are retained and will no longer be destroyed or recreated whenever the network is initialized or switched ([#1439](https://github.com/MetaMask/core/pull/1439))
21
+ - This means that cached responses for a network will no longer disappear when a different network is selected
22
+ - Update `upsertNetworkConfiguration` to keep the network client registry up to date with changes to the set of network configurations ([#1439](https://github.com/MetaMask/core/pull/1439))
23
+ - If a new network configuration is added, the information in it will be used to create and register a new network client
24
+ - If an existing network configuration is updated, its information will be used to recreate the client for the corresponding network
25
+
9
26
  ## [10.2.0]
10
27
  ### Added
11
28
  - Expose `BlockTracker` type ([#1443](https://github.com/MetaMask/core/pull/1443))
@@ -188,7 +205,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
188
205
 
189
206
  All changes listed after this point were applied to this package following the monorepo conversion.
190
207
 
191
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@10.2.0...HEAD
208
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/network-controller@10.3.1...HEAD
209
+ [10.3.1]: https://github.com/MetaMask/core/compare/@metamask/network-controller@10.3.0...@metamask/network-controller@10.3.1
210
+ [10.3.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@10.2.0...@metamask/network-controller@10.3.0
192
211
  [10.2.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@10.1.0...@metamask/network-controller@10.2.0
193
212
  [10.1.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@10.0.0...@metamask/network-controller@10.1.0
194
213
  [10.0.0]: https://github.com/MetaMask/core/compare/@metamask/network-controller@9.0.0...@metamask/network-controller@10.0.0
@@ -5,7 +5,9 @@ import type { Patch } from 'immer';
5
5
  import { InfuraNetworkType, NetworkType } from '@metamask/controller-utils';
6
6
  import { Hex } from '@metamask/utils';
7
7
  import { NetworkStatus } from './constants';
8
+ import { CustomNetworkClientConfiguration, InfuraNetworkClientConfiguration } from './types';
8
9
  import type { BlockTracker, Provider } from './types';
10
+ import { AutoManagedNetworkClient, ProxyWithAccessibleTarget } from './create-auto-managed-network-client';
9
11
  /**
10
12
  * @type ProviderConfig
11
13
  *
@@ -61,6 +63,26 @@ export declare type NetworkConfiguration = {
61
63
  blockExplorerUrl: string;
62
64
  };
63
65
  };
66
+ /**
67
+ * The collection of network configurations in state.
68
+ */
69
+ declare type NetworkConfigurations = Record<NetworkConfigurationId, NetworkConfiguration & {
70
+ id: NetworkConfigurationId;
71
+ }>;
72
+ /**
73
+ * `Object.keys()` is intentionally generic: it returns the keys of an object,
74
+ * but it cannot make guarantees about the contents of that object, so the type
75
+ * of the keys is merely `string[]`. While this is technically accurate, it is
76
+ * also unnecessary if we have an object that we own and whose contents are
77
+ * known exactly.
78
+ *
79
+ * TODO: Move to @metamask/utils.
80
+ *
81
+ * @param object - The object.
82
+ * @returns The keys of an object, typed according to the type of the object
83
+ * itself.
84
+ */
85
+ export declare function knownKeysOf<K extends PropertyKey>(object: Partial<Record<K, any>>): K[];
64
86
  /**
65
87
  * The network ID of a network.
66
88
  */
@@ -79,13 +101,25 @@ export declare type NetworkState = {
79
101
  networkStatus: NetworkStatus;
80
102
  providerConfig: ProviderConfig;
81
103
  networkDetails: NetworkDetails;
82
- networkConfigurations: Record<string, NetworkConfiguration & {
83
- id: string;
84
- }>;
104
+ networkConfigurations: NetworkConfigurations;
85
105
  };
86
106
  declare const name = "NetworkController";
87
- export declare type BlockTrackerProxy = SwappableProxy<BlockTracker>;
88
- export declare type ProviderProxy = SwappableProxy<Provider>;
107
+ /**
108
+ * Represents the block tracker for the currently selected network. (Note that
109
+ * this is a proxy around a proxy: the inner one exists so that the block
110
+ * tracker doesn't have to exist until it's used, and the outer one exists so
111
+ * that the currently selected network can change without consumers needing to
112
+ * refresh the object reference to that network.)
113
+ */
114
+ export declare type BlockTrackerProxy = SwappableProxy<ProxyWithAccessibleTarget<BlockTracker>>;
115
+ /**
116
+ * Represents the provider for the currently selected network. (Note that this
117
+ * is a proxy around a proxy: the inner one exists so that the provider doesn't
118
+ * have to exist until it's used, and the outer one exists so that the currently
119
+ * selected network can change without consumers needing to refresh the object
120
+ * reference to that network.)
121
+ */
122
+ export declare type ProviderProxy = SwappableProxy<ProxyWithAccessibleTarget<Provider>>;
89
123
  export declare type NetworkControllerStateChangeEvent = {
90
124
  type: `NetworkController:stateChange`;
91
125
  payload: [NetworkState, Patch[]];
@@ -148,21 +182,49 @@ export declare type NetworkControllerOptions = {
148
182
  };
149
183
  export declare const defaultState: NetworkState;
150
184
  declare type NetworkConfigurationId = string;
185
+ /**
186
+ * The string that uniquely identifies an Infura network client.
187
+ */
188
+ declare type BuiltInNetworkClientId = InfuraNetworkType;
189
+ /**
190
+ * The string that uniquely identifies a custom network client.
191
+ */
192
+ declare type CustomNetworkClientId = string;
193
+ /**
194
+ * The collection of auto-managed network clients that map to Infura networks.
195
+ */
196
+ declare type AutoManagedBuiltInNetworkClientRegistry = Record<BuiltInNetworkClientId, AutoManagedNetworkClient<InfuraNetworkClientConfiguration>>;
197
+ /**
198
+ * The collection of auto-managed network clients that map to Infura networks.
199
+ */
200
+ declare type AutoManagedCustomNetworkClientRegistry = Record<CustomNetworkClientId, AutoManagedNetworkClient<CustomNetworkClientConfiguration>>;
151
201
  /**
152
202
  * Controller that creates and manages an Ethereum network provider.
153
203
  */
154
204
  export declare class NetworkController extends BaseControllerV2<typeof name, NetworkState, NetworkControllerMessenger> {
155
205
  #private;
156
206
  constructor({ messenger, state, infuraProjectId, trackMetaMetricsEvent, }: NetworkControllerOptions);
207
+ /**
208
+ * Accesses the provider and block tracker for the currently selected network.
209
+ *
210
+ * @returns The proxy and block tracker proxies.
211
+ */
157
212
  getProviderAndBlockTracker(): {
158
- provider: SwappableProxy<Provider> | undefined;
159
- blockTracker: SwappableProxy<BlockTracker> | undefined;
213
+ provider: SwappableProxy<ProxyWithAccessibleTarget<Provider>> | undefined;
214
+ blockTracker: SwappableProxy<ProxyWithAccessibleTarget<BlockTracker>> | undefined;
160
215
  };
161
216
  /**
162
- * Method to inilialize the provider,
163
- * Creates the provider and block tracker for the configured network,
164
- * using the provider to gather details about the network.
217
+ * Returns all of the network clients that have been created so far, keyed by
218
+ * their identifier in the network client registry. This collection represents
219
+ * not only built-in networks but also any custom networks that consumers have
220
+ * added.
165
221
  *
222
+ * @returns The list of known network clients.
223
+ */
224
+ getNetworkClientsById(): AutoManagedBuiltInNetworkClientRegistry & AutoManagedCustomNetworkClientRegistry;
225
+ /**
226
+ * Populates the network clients and establishes the initial network based on
227
+ * the provider configuration in state.
166
228
  */
167
229
  initializeProvider(): Promise<void>;
168
230
  /**
@@ -203,36 +265,49 @@ export declare class NetworkController extends BaseControllerV2<typeof name, Net
203
265
  */
204
266
  resetConnection(): Promise<void>;
205
267
  /**
206
- * Adds a network configuration if the rpcUrl is not already present on an
207
- * existing network configuration. Otherwise updates the entry with the matching rpcUrl.
268
+ * Adds a new custom network or updates the information for an existing
269
+ * network.
270
+ *
271
+ * This may involve updating the `networkConfigurations` property in
272
+ * state as well and/or adding a new network client to the network client
273
+ * registry. The `rpcUrl` and `chainId` of the given object are used to
274
+ * determine which action to take:
275
+ *
276
+ * - If the `rpcUrl` corresponds to an existing network configuration
277
+ * (case-insensitively), then it is overwritten with the object. Furthermore,
278
+ * if the `chainId` is different from the existing network configuration, then
279
+ * the existing network client is replaced with a new one.
280
+ * - If the `rpcUrl` does not correspond to an existing network configuration
281
+ * (case-insensitively), then the object is used to add a new network
282
+ * configuration along with a new network client.
208
283
  *
209
- * @param networkConfiguration - The network configuration to add or, if rpcUrl matches an existing entry, to modify.
210
- * @param networkConfiguration.rpcUrl - RPC provider url.
211
- * @param networkConfiguration.chainId - Network ID as per EIP-155.
212
- * @param networkConfiguration.ticker - Currency ticker.
213
- * @param networkConfiguration.nickname - Personalized network name.
214
- * @param networkConfiguration.rpcPrefs - Personalized preferences (i.e. preferred blockExplorer)
215
- * @param options - additional configuration options.
216
- * @param options.setActive - An option to set the newly added networkConfiguration as the active provider.
217
- * @param options.referrer - The site from which the call originated, or 'metamask' for internal calls - used for event metrics.
218
- * @param options.source - Where the upsertNetwork event originated (i.e. from a dapp or from the network form) - used for event metrics.
219
- * @returns id for the added or updated network configuration
284
+ * @param networkConfiguration - The network configuration to add or update.
285
+ * @param options - Additional configuration options.
286
+ * @param options.referrer - Used to create a metrics event; the site from which the call originated, or 'metamask' for internal calls.
287
+ * @param options.source - Used to create a metrics event; where the event originated (i.e. from a dapp or from the network form).
288
+ * @param options.setActive - If true, switches to the network upon adding or updating it (default: false).
289
+ * @returns The ID for the added or updated network configuration.
220
290
  */
221
- upsertNetworkConfiguration({ rpcUrl, chainId, ticker, nickname, rpcPrefs }: NetworkConfiguration, { setActive, referrer, source, }: {
222
- setActive?: boolean;
291
+ upsertNetworkConfiguration(networkConfiguration: NetworkConfiguration, { referrer, source, setActive, }: {
223
292
  referrer: string;
224
293
  source: string;
294
+ setActive?: boolean;
225
295
  }): Promise<string>;
226
296
  /**
227
- * Removes network configuration from state.
297
+ * Removes a custom network from state.
298
+ *
299
+ * This involves updating the `networkConfigurations` property in state as
300
+ * well and removing the network client that corresponds to the network from
301
+ * the client registry.
228
302
  *
229
- * @param networkConfigurationId - The networkConfigurationId of an existing network configuration
303
+ * @param networkConfigurationId - The ID of an existing network
304
+ * configuration.
230
305
  */
231
306
  removeNetworkConfiguration(networkConfigurationId: string): void;
232
307
  /**
233
- * Switches to the previous network, assuming that the current network is
234
- * different than the initial network (if it is, then this is equivalent to
235
- * calling `resetConnection`).
308
+ * Switches to the previously selected network, assuming that there is one
309
+ * (if not and `initializeProvider` has not been previously called, then this
310
+ * method is equivalent to calling `resetConnection`).
236
311
  */
237
312
  rollbackToPreviousProvider(): Promise<void>;
238
313
  /**
@@ -251,5 +326,5 @@ export declare class NetworkController extends BaseControllerV2<typeof name, Net
251
326
  networkConfigurations: NetworkState['networkConfigurations'];
252
327
  }): void;
253
328
  }
254
- export default NetworkController;
329
+ export {};
255
330
  //# sourceMappingURL=NetworkController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkController.d.ts","sourceRoot":"","sources":["../src/NetworkController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NetworkController.d.ts","sourceRoot":"","sources":["../src/NetworkController.ts"],"names":[],"mappings":"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"}