@metamask/network-controller 26.0.0 → 27.1.0

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 (74) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/dist/NetworkController.cjs +61 -38
  3. package/dist/NetworkController.cjs.map +1 -1
  4. package/dist/NetworkController.d.cts +137 -14
  5. package/dist/NetworkController.d.cts.map +1 -1
  6. package/dist/NetworkController.d.mts +137 -14
  7. package/dist/NetworkController.d.mts.map +1 -1
  8. package/dist/NetworkController.mjs +61 -38
  9. package/dist/NetworkController.mjs.map +1 -1
  10. package/dist/constants.cjs +18 -10
  11. package/dist/constants.cjs.map +1 -1
  12. package/dist/constants.d.cts +18 -10
  13. package/dist/constants.d.cts.map +1 -1
  14. package/dist/constants.d.mts +18 -10
  15. package/dist/constants.d.mts.map +1 -1
  16. package/dist/constants.mjs +18 -10
  17. package/dist/constants.mjs.map +1 -1
  18. package/dist/create-auto-managed-network-client.cjs +4 -9
  19. package/dist/create-auto-managed-network-client.cjs.map +1 -1
  20. package/dist/create-auto-managed-network-client.d.cts +5 -2
  21. package/dist/create-auto-managed-network-client.d.cts.map +1 -1
  22. package/dist/create-auto-managed-network-client.d.mts +5 -2
  23. package/dist/create-auto-managed-network-client.d.mts.map +1 -1
  24. package/dist/create-auto-managed-network-client.mjs +4 -9
  25. package/dist/create-auto-managed-network-client.mjs.map +1 -1
  26. package/dist/create-network-client.cjs +138 -43
  27. package/dist/create-network-client.cjs.map +1 -1
  28. package/dist/create-network-client.d.cts +5 -2
  29. package/dist/create-network-client.d.cts.map +1 -1
  30. package/dist/create-network-client.d.mts +5 -2
  31. package/dist/create-network-client.d.mts.map +1 -1
  32. package/dist/create-network-client.mjs +138 -43
  33. package/dist/create-network-client.mjs.map +1 -1
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +1 -1
  36. package/dist/index.d.cts.map +1 -1
  37. package/dist/index.d.mts +1 -1
  38. package/dist/index.d.mts.map +1 -1
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/rpc-service/rpc-service-chain.cjs +247 -39
  41. package/dist/rpc-service/rpc-service-chain.cjs.map +1 -1
  42. package/dist/rpc-service/rpc-service-chain.d.cts +107 -29
  43. package/dist/rpc-service/rpc-service-chain.d.cts.map +1 -1
  44. package/dist/rpc-service/rpc-service-chain.d.mts +107 -29
  45. package/dist/rpc-service/rpc-service-chain.d.mts.map +1 -1
  46. package/dist/rpc-service/rpc-service-chain.mjs +247 -39
  47. package/dist/rpc-service/rpc-service-chain.mjs.map +1 -1
  48. package/dist/rpc-service/rpc-service-requestable.cjs.map +1 -1
  49. package/dist/rpc-service/rpc-service-requestable.d.cts +15 -5
  50. package/dist/rpc-service/rpc-service-requestable.d.cts.map +1 -1
  51. package/dist/rpc-service/rpc-service-requestable.d.mts +15 -5
  52. package/dist/rpc-service/rpc-service-requestable.d.mts.map +1 -1
  53. package/dist/rpc-service/rpc-service-requestable.mjs.map +1 -1
  54. package/dist/rpc-service/rpc-service.cjs +66 -33
  55. package/dist/rpc-service/rpc-service.cjs.map +1 -1
  56. package/dist/rpc-service/rpc-service.d.cts +35 -26
  57. package/dist/rpc-service/rpc-service.d.cts.map +1 -1
  58. package/dist/rpc-service/rpc-service.d.mts +35 -26
  59. package/dist/rpc-service/rpc-service.d.mts.map +1 -1
  60. package/dist/rpc-service/rpc-service.mjs +67 -34
  61. package/dist/rpc-service/rpc-service.mjs.map +1 -1
  62. package/dist/rpc-service/shared.cjs.map +1 -1
  63. package/dist/rpc-service/shared.d.cts +25 -3
  64. package/dist/rpc-service/shared.d.cts.map +1 -1
  65. package/dist/rpc-service/shared.d.mts +25 -3
  66. package/dist/rpc-service/shared.d.mts.map +1 -1
  67. package/dist/rpc-service/shared.mjs.map +1 -1
  68. package/dist/types.cjs.map +1 -1
  69. package/dist/types.d.cts +1 -1
  70. package/dist/types.d.cts.map +1 -1
  71. package/dist/types.d.mts +1 -1
  72. package/dist/types.d.mts.map +1 -1
  73. package/dist/types.mjs.map +1 -1
  74. package/package.json +5 -7
@@ -141,6 +141,7 @@ function getDefaultCustomNetworkConfigurationsByChainId() {
141
141
  // default networks.
142
142
  return {
143
143
  [ChainId['megaeth-testnet']]: getCustomNetworkConfiguration(CustomNetworkType['megaeth-testnet']),
144
+ [ChainId['megaeth-testnet-v2']]: getCustomNetworkConfiguration(CustomNetworkType['megaeth-testnet-v2']),
144
145
  [ChainId['monad-testnet']]: getCustomNetworkConfiguration(CustomNetworkType['monad-testnet']),
145
146
  };
146
147
  }
@@ -420,6 +421,21 @@ export class NetworkController extends BaseController {
420
421
  this.messenger.registerActionHandler(`${this.name}:addNetwork`, this.addNetwork.bind(this));
421
422
  this.messenger.registerActionHandler(`${this.name}:removeNetwork`, this.removeNetwork.bind(this));
422
423
  this.messenger.registerActionHandler(`${this.name}:updateNetwork`, this.updateNetwork.bind(this));
424
+ this.messenger.subscribe(`${this.name}:rpcEndpointChainUnavailable`, ({ networkClientId }) => {
425
+ __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateMetadataForNetwork).call(this, networkClientId, {
426
+ networkStatus: NetworkStatus.Unavailable,
427
+ });
428
+ });
429
+ this.messenger.subscribe(`${this.name}:rpcEndpointChainDegraded`, ({ networkClientId }) => {
430
+ __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateMetadataForNetwork).call(this, networkClientId, {
431
+ networkStatus: NetworkStatus.Degraded,
432
+ });
433
+ });
434
+ this.messenger.subscribe(`${this.name}:rpcEndpointChainAvailable`, ({ networkClientId }) => {
435
+ __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateMetadataForNetwork).call(this, networkClientId, {
436
+ networkStatus: NetworkStatus.Available,
437
+ });
438
+ });
423
439
  }
424
440
  /**
425
441
  * Enables the RPC failover functionality. That is, if any RPC endpoints are
@@ -612,7 +628,7 @@ export class NetworkController extends BaseController {
612
628
  }
613
629
  async get1559CompatibilityWithNetworkClientId(networkClientId) {
614
630
  let metadata = this.state.networksMetadata[networkClientId];
615
- if (metadata === undefined) {
631
+ if (metadata?.EIPS[1559] === undefined) {
616
632
  await this.lookupNetwork(networkClientId);
617
633
  metadata = this.state.networksMetadata[networkClientId];
618
634
  }
@@ -787,7 +803,17 @@ export class NetworkController extends BaseController {
787
803
  rpcEndpoint: newRpcEndpoint,
788
804
  });
789
805
  }
790
- else if (existingRpcEndpointForReplaceWhenChainNotChanged !== undefined) {
806
+ else if (existingRpcEndpointForReplaceWhenChainNotChanged === undefined) {
807
+ const newRpcEndpoint = newRpcEndpointFields.type === RpcEndpointType.Infura
808
+ ? newRpcEndpointFields
809
+ : { ...newRpcEndpointFields, networkClientId: uuidV4() };
810
+ const networkClientOperation = {
811
+ type: 'add',
812
+ rpcEndpoint: newRpcEndpoint,
813
+ };
814
+ networkClientOperations.push(networkClientOperation);
815
+ }
816
+ else {
791
817
  let newRpcEndpoint;
792
818
  /* istanbul ignore if */
793
819
  if (newRpcEndpointFields.type === RpcEndpointType.Infura) {
@@ -810,16 +836,6 @@ export class NetworkController extends BaseController {
810
836
  newRpcEndpoint,
811
837
  });
812
838
  }
813
- else {
814
- const newRpcEndpoint = newRpcEndpointFields.type === RpcEndpointType.Infura
815
- ? newRpcEndpointFields
816
- : { ...newRpcEndpointFields, networkClientId: uuidV4() };
817
- const networkClientOperation = {
818
- type: 'add',
819
- rpcEndpoint: newRpcEndpoint,
820
- };
821
- networkClientOperations.push(networkClientOperation);
822
- }
823
839
  }
824
840
  for (const existingRpcEndpoint of existingNetworkConfiguration.rpcEndpoints) {
825
841
  if (!networkClientOperations.some((networkClientOperation) => {
@@ -1119,7 +1135,10 @@ async function _NetworkController_determineNetworkMetadata(networkClientId) {
1119
1135
  */
1120
1136
  async function _NetworkController_lookupGivenNetwork(networkClientId) {
1121
1137
  const { networkStatus, isEIP1559Compatible } = await __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_determineNetworkMetadata).call(this, networkClientId);
1122
- __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateMetadataForNetwork).call(this, networkClientId, networkStatus, isEIP1559Compatible);
1138
+ __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateMetadataForNetwork).call(this, networkClientId, {
1139
+ networkStatus,
1140
+ isEIP1559Compatible,
1141
+ });
1123
1142
  }, _NetworkController_lookupSelectedNetwork =
1124
1143
  /**
1125
1144
  * Uses a request for the latest block to gather the following information on
@@ -1179,7 +1198,10 @@ async function _NetworkController_lookupSelectedNetwork() {
1179
1198
  throw error;
1180
1199
  }
1181
1200
  }
1182
- __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateMetadataForNetwork).call(this, this.state.selectedNetworkClientId, networkStatus, isEIP1559Compatible);
1201
+ __classPrivateFieldGet(this, _NetworkController_instances, "m", _NetworkController_updateMetadataForNetwork).call(this, this.state.selectedNetworkClientId, {
1202
+ networkStatus,
1203
+ isEIP1559Compatible,
1204
+ });
1183
1205
  if (isInfura) {
1184
1206
  if (networkStatus === NetworkStatus.Available) {
1185
1207
  this.messenger.publish('NetworkController:infuraIsUnblocked');
@@ -1194,27 +1216,25 @@ async function _NetworkController_lookupSelectedNetwork() {
1194
1216
  // previously connected to an Infura network that was blocked
1195
1217
  this.messenger.publish('NetworkController:infuraIsUnblocked');
1196
1218
  }
1197
- }, _NetworkController_updateMetadataForNetwork = function _NetworkController_updateMetadataForNetwork(networkClientId, networkStatus, isEIP1559Compatible) {
1219
+ }, _NetworkController_updateMetadataForNetwork = function _NetworkController_updateMetadataForNetwork(networkClientId, metadata) {
1198
1220
  this.update((state) => {
1199
- if (state.networksMetadata[networkClientId] === undefined) {
1200
- state.networksMetadata[networkClientId] = {
1201
- status: NetworkStatus.Unknown,
1202
- EIPS: {},
1203
- };
1204
- }
1205
- const meta = state.networksMetadata[networkClientId];
1206
- meta.status = networkStatus;
1207
- if (isEIP1559Compatible === undefined) {
1208
- delete meta.EIPS[1559];
1209
- }
1210
- else {
1211
- meta.EIPS[1559] = isEIP1559Compatible;
1221
+ var _a;
1222
+ (_a = state.networksMetadata)[networkClientId] ?? (_a[networkClientId] = {
1223
+ status: NetworkStatus.Unknown,
1224
+ EIPS: {},
1225
+ });
1226
+ const newMetadata = state.networksMetadata[networkClientId];
1227
+ newMetadata.status = metadata.networkStatus;
1228
+ if ('isEIP1559Compatible' in metadata) {
1229
+ if (metadata.isEIP1559Compatible === undefined) {
1230
+ delete newMetadata.EIPS[1559];
1231
+ }
1232
+ else {
1233
+ newMetadata.EIPS[1559] = metadata.isEIP1559Compatible;
1234
+ }
1212
1235
  }
1213
1236
  });
1214
- }, _NetworkController_getLatestBlock = function _NetworkController_getLatestBlock(networkClientId) {
1215
- if (networkClientId === undefined) {
1216
- networkClientId = this.state.selectedNetworkClientId;
1217
- }
1237
+ }, _NetworkController_getLatestBlock = function _NetworkController_getLatestBlock(networkClientId = this.state.selectedNetworkClientId) {
1218
1238
  const networkClient = this.getNetworkClientById(networkClientId);
1219
1239
  const ethQuery = new EthQuery(networkClient.provider);
1220
1240
  return new Promise((resolve, reject) => {
@@ -1374,6 +1394,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1374
1394
  for (const addedRpcEndpoint of addedRpcEndpoints) {
1375
1395
  if (addedRpcEndpoint.type === RpcEndpointType.Infura) {
1376
1396
  autoManagedNetworkClientRegistry[NetworkClientType.Infura][addedRpcEndpoint.networkClientId] = createAutoManagedNetworkClient({
1397
+ networkClientId: addedRpcEndpoint.networkClientId,
1377
1398
  networkClientConfiguration: {
1378
1399
  type: NetworkClientType.Infura,
1379
1400
  chainId: networkFields.chainId,
@@ -1391,6 +1412,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1391
1412
  }
1392
1413
  else {
1393
1414
  autoManagedNetworkClientRegistry[NetworkClientType.Custom][addedRpcEndpoint.networkClientId] = createAutoManagedNetworkClient({
1415
+ networkClientId: addedRpcEndpoint.networkClientId,
1394
1416
  networkClientConfiguration: {
1395
1417
  type: NetworkClientType.Custom,
1396
1418
  chainId: networkFields.chainId,
@@ -1450,6 +1472,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1450
1472
  return [
1451
1473
  rpcEndpoint.networkClientId,
1452
1474
  createAutoManagedNetworkClient({
1475
+ networkClientId: rpcEndpoint.networkClientId,
1453
1476
  networkClientConfiguration: {
1454
1477
  type: NetworkClientType.Infura,
1455
1478
  network: infuraNetworkName,
@@ -1469,6 +1492,7 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1469
1492
  return [
1470
1493
  rpcEndpoint.networkClientId,
1471
1494
  createAutoManagedNetworkClient({
1495
+ networkClientId: rpcEndpoint.networkClientId,
1472
1496
  networkClientConfiguration: {
1473
1497
  type: NetworkClientType.Custom,
1474
1498
  chainId: networkConfiguration.chainId,
@@ -1518,13 +1542,12 @@ async function _NetworkController_determineEIP1559Compatibility(networkClientId)
1518
1542
  }
1519
1543
  __classPrivateFieldSet(this, _NetworkController_autoManagedNetworkClient, autoManagedNetworkClient, "f");
1520
1544
  this.update((state) => {
1545
+ var _a;
1521
1546
  state.selectedNetworkClientId = networkClientId;
1522
- if (state.networksMetadata[networkClientId] === undefined) {
1523
- state.networksMetadata[networkClientId] = {
1524
- status: NetworkStatus.Unknown,
1525
- EIPS: {},
1526
- };
1527
- }
1547
+ (_a = state.networksMetadata)[networkClientId] ?? (_a[networkClientId] = {
1548
+ status: NetworkStatus.Unknown,
1549
+ EIPS: {},
1550
+ });
1528
1551
  updateState?.(state);
1529
1552
  });
1530
1553
  if (__classPrivateFieldGet(this, _NetworkController_providerProxy, "f")) {