@metamask-previews/network-controller 33.0.0-preview-a8fd340 → 33.0.0-preview-2b5ec3770

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 (46) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/NetworkController-method-action-types.cjs.map +1 -1
  3. package/dist/NetworkController-method-action-types.d.cts +19 -1
  4. package/dist/NetworkController-method-action-types.d.cts.map +1 -1
  5. package/dist/NetworkController-method-action-types.d.mts +19 -1
  6. package/dist/NetworkController-method-action-types.d.mts.map +1 -1
  7. package/dist/NetworkController-method-action-types.mjs.map +1 -1
  8. package/dist/NetworkController.cjs +52 -4
  9. package/dist/NetworkController.cjs.map +1 -1
  10. package/dist/NetworkController.d.cts +15 -2
  11. package/dist/NetworkController.d.cts.map +1 -1
  12. package/dist/NetworkController.d.mts +15 -2
  13. package/dist/NetworkController.d.mts.map +1 -1
  14. package/dist/NetworkController.mjs +53 -5
  15. package/dist/NetworkController.mjs.map +1 -1
  16. package/dist/create-auto-managed-network-client.cjs +18 -1
  17. package/dist/create-auto-managed-network-client.cjs.map +1 -1
  18. package/dist/create-auto-managed-network-client.d.cts +7 -1
  19. package/dist/create-auto-managed-network-client.d.cts.map +1 -1
  20. package/dist/create-auto-managed-network-client.d.mts +7 -1
  21. package/dist/create-auto-managed-network-client.d.mts.map +1 -1
  22. package/dist/create-auto-managed-network-client.mjs +18 -1
  23. package/dist/create-auto-managed-network-client.mjs.map +1 -1
  24. package/dist/create-network-client.cjs +30 -10
  25. package/dist/create-network-client.cjs.map +1 -1
  26. package/dist/create-network-client.d.cts +5 -1
  27. package/dist/create-network-client.d.cts.map +1 -1
  28. package/dist/create-network-client.d.mts +5 -1
  29. package/dist/create-network-client.d.mts.map +1 -1
  30. package/dist/create-network-client.mjs +30 -10
  31. package/dist/create-network-client.mjs.map +1 -1
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.cts +1 -1
  34. package/dist/index.d.cts.map +1 -1
  35. package/dist/index.d.mts +1 -1
  36. package/dist/index.d.mts.map +1 -1
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/selectors.cjs +7 -1
  39. package/dist/selectors.cjs.map +1 -1
  40. package/dist/selectors.d.cts +1 -0
  41. package/dist/selectors.d.cts.map +1 -1
  42. package/dist/selectors.d.mts +1 -0
  43. package/dist/selectors.d.mts.map +1 -1
  44. package/dist/selectors.mjs +5 -0
  45. package/dist/selectors.mjs.map +1 -1
  46. package/package.json +1 -1
@@ -56,10 +56,13 @@ export function classifyRetryReason(error) {
56
56
  * provided failover endpoints if the primary is unavailable. This effectively
57
57
  * causes the `failoverRpcUrls` property of the network client configuration
58
58
  * to be honored or ignored.
59
+ * @param args.isRpcFailoverForced - Whether or not to force all traffic for
60
+ * Infura endpoints that have failover URLs to those failover URLs, bypassing
61
+ * Infura entirely.
59
62
  * @param args.logger - A `loglevel` logger.
60
63
  * @returns The network client.
61
64
  */
62
- export function createNetworkClient({ id, configuration, getRpcServiceOptions, getBlockTrackerOptions, messenger, isRpcFailoverEnabled, logger, }) {
65
+ export function createNetworkClient({ id, configuration, getRpcServiceOptions, getBlockTrackerOptions, messenger, isRpcFailoverEnabled, isRpcFailoverForced, logger, }) {
63
66
  const primaryEndpointUrl = configuration.type === NetworkClientType.Infura
64
67
  ? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`
65
68
  : configuration.rpcUrl;
@@ -70,6 +73,7 @@ export function createNetworkClient({ id, configuration, getRpcServiceOptions, g
70
73
  getRpcServiceOptions,
71
74
  messenger,
72
75
  isRpcFailoverEnabled,
76
+ isRpcFailoverForced,
73
77
  logger,
74
78
  });
75
79
  let rpcApiMiddleware;
@@ -132,21 +136,37 @@ export function createNetworkClient({ id, configuration, getRpcServiceOptions, g
132
136
  * provided failover endpoints if the primary is unavailable. This effectively
133
137
  * causes the `failoverRpcUrls` property of the network client configuration
134
138
  * to be honored or ignored.
139
+ * @param args.isRpcFailoverForced - Whether or not to force all traffic for
140
+ * Infura endpoints that have failover URLs to those failover URLs, bypassing
141
+ * Infura entirely.
135
142
  * @param args.logger - A `loglevel` logger.
136
143
  * @returns The RPC service chain.
137
144
  */
138
- function createRpcServiceChain({ id, primaryEndpointUrl, configuration, getRpcServiceOptions, messenger, isRpcFailoverEnabled, logger, }) {
145
+ function createRpcServiceChain({ id, primaryEndpointUrl, configuration, getRpcServiceOptions, messenger, isRpcFailoverEnabled, isRpcFailoverForced, logger, }) {
146
+ const failoverEndpoints = (configuration.failoverRpcUrls ?? []).map((url) => ({
147
+ url,
148
+ isFailover: true,
149
+ }));
139
150
  // We explicitly check the URL since some networks have been added with invalid configuration types in the past.
140
151
  const isInfura = new URL(primaryEndpointUrl).hostname.endsWith('.infura.io');
141
- const availableEndpoints = isRpcFailoverEnabled && isInfura
142
- ? [
152
+ let availableEndpoints;
153
+ if (isRpcFailoverForced && isInfura && failoverEndpoints.length > 0) {
154
+ // Force flag is on for an Infura endpoint with failovers: bypass Infura
155
+ // entirely and route all traffic (including block polling) to failovers.
156
+ // The first failover becomes the positional primary of the chain, so
157
+ // availability/degraded events will report that failover URL as the
158
+ // primary endpoint (there is no Infura primary in this mode).
159
+ availableEndpoints = failoverEndpoints;
160
+ }
161
+ else if (isRpcFailoverEnabled && isInfura) {
162
+ availableEndpoints = [
143
163
  { url: primaryEndpointUrl, isFailover: false },
144
- ...(configuration.failoverRpcUrls ?? []).map((url) => ({
145
- url,
146
- isFailover: true,
147
- })),
148
- ]
149
- : [{ url: primaryEndpointUrl, isFailover: false }];
164
+ ...failoverEndpoints,
165
+ ];
166
+ }
167
+ else {
168
+ availableEndpoints = [{ url: primaryEndpointUrl, isFailover: false }];
169
+ }
150
170
  const isOffline = () => {
151
171
  const connectivityState = messenger.call('ConnectivityController:getState');
152
172
  return (connectivityState.connectivityStatus === CONNECTIVITY_STATUSES.Offline);
@@ -1 +1 @@
1
- {"version":3,"file":"create-network-client.mjs","sourceRoot":"","sources":["../src/create-network-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { CONNECTIVITY_STATUSES } from '@metamask/connectivity-controller';\nimport type {\n CockatielFailureReason,\n InfuraNetworkType,\n} from '@metamask/controller-utils';\nimport {\n ChainId,\n DEFAULT_MAX_CONSECUTIVE_FAILURES,\n DEFAULT_MAX_RETRIES,\n} from '@metamask/controller-utils';\nimport type { PollingBlockTrackerOptions } from '@metamask/eth-block-tracker';\nimport { PollingBlockTracker } from '@metamask/eth-block-tracker';\nimport { createInfuraMiddleware } from '@metamask/eth-json-rpc-infura';\nimport {\n createBlockCacheMiddleware,\n createBlockRefMiddleware,\n createBlockRefRewriteMiddleware,\n createBlockTrackerInspectorMiddleware,\n createInflightCacheMiddleware,\n createFetchMiddleware,\n createRetryOnEmptyMiddleware,\n} from '@metamask/eth-json-rpc-middleware';\nimport { InternalProvider } from '@metamask/eth-json-rpc-provider';\nimport { providerFromMiddlewareV2 } from '@metamask/eth-json-rpc-provider';\nimport { asV2Middleware } from '@metamask/json-rpc-engine';\nimport {\n createScaffoldMiddleware,\n JsonRpcEngineV2,\n} from '@metamask/json-rpc-engine/v2';\nimport type {\n JsonRpcMiddleware,\n MiddlewareContext,\n} from '@metamask/json-rpc-engine/v2';\nimport { inMilliseconds, Duration } from '@metamask/utils';\nimport type { Hex, Json, JsonRpcRequest } from '@metamask/utils';\nimport type { Logger } from 'loglevel';\n\nimport type {\n NetworkClientId,\n NetworkControllerMessenger,\n} from './NetworkController';\nimport type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service';\nimport {\n isConnectionError,\n isConnectionResetError,\n isJsonParseError,\n isHttpServerError,\n isTimeoutError,\n} from './rpc-service/rpc-service';\nimport { RpcServiceChain } from './rpc-service/rpc-service-chain';\nimport type {\n BlockTracker,\n NetworkClientConfiguration,\n Provider,\n} from './types';\nimport { NetworkClientType } from './types';\n\nconst SECOND = 1000;\n\n/**\n * Why the degraded event was emitted.\n */\nexport type DegradedEventType = 'slow_success' | 'retries_exhausted';\n\n/**\n * The category of error that was retried until retries were exhausted.\n */\nexport type RetryReason =\n | 'connection_failed'\n | 'response_not_json'\n | 'non_successful_http_status'\n | 'timed_out'\n | 'connection_reset'\n | 'unknown';\n\n/**\n * Classifies the error that was being retried when retries were exhausted.\n *\n * @param error - The error from the last retry attempt.\n * @returns A classification string.\n */\nexport function classifyRetryReason(error: unknown): RetryReason {\n if (!(error instanceof Error)) {\n return 'unknown';\n }\n if (isConnectionError(error)) {\n return 'connection_failed';\n }\n if (isJsonParseError(error)) {\n return 'response_not_json';\n }\n if (isHttpServerError(error)) {\n return 'non_successful_http_status';\n }\n if (isTimeoutError(error)) {\n return 'timed_out';\n }\n if (isConnectionResetError(error)) {\n return 'connection_reset';\n }\n return 'unknown';\n}\n\n/**\n * The pair of provider / block tracker that can be used to interface with the\n * network and respond to new activity.\n */\nexport type NetworkClient = {\n configuration: NetworkClientConfiguration;\n provider: Provider;\n blockTracker: BlockTracker;\n destroy: () => void;\n};\n\ntype RpcApiMiddleware = JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string }>\n>;\n\n/**\n * Create a JSON RPC network client for a specific network.\n *\n * @param args - The arguments.\n * @param args.id - The ID that will be assigned to the new network client in\n * the registry.\n * @param args.configuration - The network configuration.\n * @param args.getRpcServiceOptions - Factory for constructing RPC service\n * options. See {@link NetworkControllerOptions.getRpcServiceOptions}.\n * @param args.getBlockTrackerOptions - Factory for constructing block tracker\n * options. See {@link NetworkControllerOptions.getBlockTrackerOptions}.\n * @param args.messenger - The network controller messenger.\n * @param args.isRpcFailoverEnabled - Whether or not requests sent to the\n * primary RPC endpoint for this network should be automatically diverted to\n * provided failover endpoints if the primary is unavailable. This effectively\n * causes the `failoverRpcUrls` property of the network client configuration\n * to be honored or ignored.\n * @param args.logger - A `loglevel` logger.\n * @returns The network client.\n */\nexport function createNetworkClient({\n id,\n configuration,\n getRpcServiceOptions,\n getBlockTrackerOptions,\n messenger,\n isRpcFailoverEnabled,\n logger,\n}: {\n id: NetworkClientId;\n configuration: NetworkClientConfiguration;\n getRpcServiceOptions?: (\n rpcEndpointUrl: string,\n ) => RpcServiceOptionsWithDefaults;\n getBlockTrackerOptions: (\n rpcEndpointUrl: string,\n ) => Omit<PollingBlockTrackerOptions, 'provider'>;\n messenger: NetworkControllerMessenger;\n isRpcFailoverEnabled: boolean;\n logger?: Logger;\n}): NetworkClient {\n const primaryEndpointUrl =\n configuration.type === NetworkClientType.Infura\n ? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`\n : configuration.rpcUrl;\n const rpcServiceChain = createRpcServiceChain({\n id,\n primaryEndpointUrl,\n configuration,\n getRpcServiceOptions,\n messenger,\n isRpcFailoverEnabled,\n logger,\n });\n\n let rpcApiMiddleware: RpcApiMiddleware;\n if (configuration.type === NetworkClientType.Infura) {\n rpcApiMiddleware = asV2Middleware(\n createInfuraMiddleware({\n rpcService: rpcServiceChain,\n options: {\n source: 'metamask',\n },\n }),\n );\n } else {\n rpcApiMiddleware = createFetchMiddleware({ rpcService: rpcServiceChain });\n }\n\n const rpcProvider = providerFromMiddlewareV2(rpcApiMiddleware);\n\n const blockTracker = createBlockTracker({\n networkClientType: configuration.type,\n endpointUrl: primaryEndpointUrl,\n getOptions: getBlockTrackerOptions,\n provider: rpcProvider,\n });\n\n const networkMiddleware =\n configuration.type === NetworkClientType.Infura\n ? createInfuraNetworkMiddleware({\n blockTracker,\n network: configuration.network,\n rpcProvider,\n rpcApiMiddleware,\n })\n : createCustomNetworkMiddleware({\n blockTracker,\n chainId: configuration.chainId,\n rpcApiMiddleware,\n });\n\n const provider: Provider = new InternalProvider({\n engine: JsonRpcEngineV2.create({\n middleware: [networkMiddleware],\n }),\n });\n\n const destroy = (): void => {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n blockTracker.destroy();\n };\n\n return { configuration, provider, blockTracker, destroy };\n}\n\n/**\n * Creates an RPC service chain, which represents the primary endpoint URL for\n * the network as well as its failover URLs.\n *\n * @param args - The arguments.\n * @param args.id - The ID that will be assigned to the new network client in\n * the registry.\n * @param args.primaryEndpointUrl - The primary endpoint URL.\n * @param args.configuration - The network configuration.\n * @param args.getRpcServiceOptions - Factory for constructing RPC service\n * options. See {@link NetworkControllerOptions.getRpcServiceOptions}.\n * @param args.messenger - The network controller messenger.\n * @param args.isRpcFailoverEnabled - Whether or not requests sent to the\n * primary RPC endpoint for this network should be automatically diverted to\n * provided failover endpoints if the primary is unavailable. This effectively\n * causes the `failoverRpcUrls` property of the network client configuration\n * to be honored or ignored.\n * @param args.logger - A `loglevel` logger.\n * @returns The RPC service chain.\n */\nfunction createRpcServiceChain({\n id,\n primaryEndpointUrl,\n configuration,\n getRpcServiceOptions,\n messenger,\n isRpcFailoverEnabled,\n logger,\n}: {\n id: NetworkClientId;\n primaryEndpointUrl: string;\n configuration: NetworkClientConfiguration;\n getRpcServiceOptions?: (\n rpcEndpointUrl: string,\n ) => RpcServiceOptionsWithDefaults;\n messenger: NetworkControllerMessenger;\n isRpcFailoverEnabled: boolean;\n logger?: Logger;\n}): RpcServiceChain {\n // We explicitly check the URL since some networks have been added with invalid configuration types in the past.\n const isInfura = new URL(primaryEndpointUrl).hostname.endsWith('.infura.io');\n\n const availableEndpoints =\n isRpcFailoverEnabled && isInfura\n ? [\n { url: primaryEndpointUrl, isFailover: false },\n ...(configuration.failoverRpcUrls ?? []).map((url) => ({\n url,\n isFailover: true,\n })),\n ]\n : [{ url: primaryEndpointUrl, isFailover: false }];\n\n const isOffline = (): boolean => {\n const connectivityState = messenger.call('ConnectivityController:getState');\n return (\n connectivityState.connectivityStatus === CONNECTIVITY_STATUSES.Offline\n );\n };\n\n // Ensure that if the endpoint continually responds with errors, we\n // break the circuit relatively fast (but not prematurely).\n //\n // Note that the circuit will break much faster if the errors are\n // retriable (e.g. 503) than if not (e.g. 500), so we attempt to strike\n // a balance here.\n const maxConsecutiveFailures = DEFAULT_MAX_CONSECUTIVE_FAILURES;\n\n // The number of rounds of retries that will break the circuit,\n // triggering a \"cooldown\".\n //\n // When we fail over to QuickNode, we expect it to be down at first\n // while it is being automatically activated, and we don't want to\n // activate the \"cooldown\" accidentally.\n const maxConsecutiveFailuresFailover = (DEFAULT_MAX_RETRIES + 1) * 10;\n\n const rpcServiceConfigurations = availableEndpoints.map((endpoint) => {\n const overriddenOptions = getRpcServiceOptions?.(endpoint.url) ?? {};\n return {\n fetch: globalThis.fetch.bind(globalThis),\n btoa: globalThis.btoa.bind(globalThis),\n isOffline,\n policyOptions: {\n maxRetries: DEFAULT_MAX_RETRIES,\n circuitBreakDuration: inMilliseconds(30, Duration.Second),\n maxConsecutiveFailures: endpoint.isFailover\n ? maxConsecutiveFailuresFailover\n : maxConsecutiveFailures,\n ...(overriddenOptions.policyOptions ?? {}),\n },\n ...overriddenOptions,\n endpointUrl: endpoint.url,\n logger,\n };\n });\n\n /**\n * Extracts the error from Cockatiel's `FailureReason` type received in\n * circuit breaker event handlers.\n *\n * The `FailureReason` object can have two possible shapes:\n * - `{ error: Error }` - When the RPC service throws an error (the common\n * case for RPC failures).\n * - `{ value: T }` - When the RPC service returns a value that the retry\n * filter policy considers a failure.\n *\n * @param value - The event data object from the circuit breaker event\n * listener (after destructuring known properties like `endpointUrl`). This\n * represents Cockatiel's `FailureReason` type.\n * @returns The error or failure value, or `undefined` if neither property\n * exists (which shouldn't happen in practice unless the circuit breaker is\n * manually isolated).\n */\n const getError = (\n value: CockatielFailureReason<unknown> | Record<never, never>,\n ): Error | unknown | undefined => {\n if ('error' in value) {\n return value.error;\n } else if ('value' in value) {\n return value.value;\n }\n return undefined;\n };\n\n const rpcServiceChain = new RpcServiceChain([\n rpcServiceConfigurations[0],\n ...rpcServiceConfigurations.slice(1),\n ]);\n\n rpcServiceChain.onBreak((data) => {\n const error = getError(data);\n\n if (error === undefined) {\n // This error shouldn't happen in practice because we never call `.isolate`\n // on the circuit breaker policy, but we need to appease TypeScript.\n throw new Error('Could not make request to endpoint.');\n }\n\n messenger.publish('NetworkController:rpcEndpointChainUnavailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n error,\n });\n });\n\n rpcServiceChain.onServiceBreak(\n ({\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n ...rest\n }) => {\n const error = getError(rest);\n\n if (error === undefined) {\n // This error shouldn't happen in practice because we never call `.isolate`\n // on the circuit breaker policy, but we need to appease TypeScript.\n throw new Error('Could not make request to endpoint.');\n }\n\n messenger.publish('NetworkController:rpcEndpointUnavailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n error,\n });\n },\n );\n\n rpcServiceChain.onDegraded(\n ({ rpcMethodName, duration, traceId, ...rest }) => {\n const error = getError(rest);\n const type: DegradedEventType =\n error === undefined ? 'slow_success' : 'retries_exhausted';\n messenger.publish('NetworkController:rpcEndpointChainDegraded', {\n chainId: configuration.chainId,\n networkClientId: id,\n error,\n rpcMethodName,\n duration,\n traceId,\n type,\n retryReason:\n error === undefined ? undefined : classifyRetryReason(error),\n });\n },\n );\n\n rpcServiceChain.onServiceDegraded(\n ({\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n rpcMethodName,\n duration,\n traceId,\n ...rest\n }) => {\n const error = getError(rest);\n const type: DegradedEventType =\n error === undefined ? 'slow_success' : 'retries_exhausted';\n\n messenger.publish('NetworkController:rpcEndpointDegraded', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n error,\n rpcMethodName,\n duration,\n traceId,\n type,\n retryReason:\n error === undefined ? undefined : classifyRetryReason(error),\n });\n },\n );\n\n rpcServiceChain.onAvailable(() => {\n messenger.publish('NetworkController:rpcEndpointChainAvailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n });\n });\n\n rpcServiceChain.onServiceRetry(\n ({\n attempt,\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n }) => {\n messenger.publish('NetworkController:rpcEndpointRetried', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n attempt,\n });\n },\n );\n\n return rpcServiceChain;\n}\n\n/**\n * Create the block tracker for the network.\n *\n * @param args - The arguments.\n * @param args.networkClientType - The type of the network client (\"infura\" or\n * \"custom\").\n * @param args.endpointUrl - The URL of the endpoint.\n * @param args.getOptions - Factory for the block tracker options.\n * @param args.provider - The EIP-1193 provider for the network's JSON-RPC\n * middleware stack.\n * @returns The created block tracker.\n */\nfunction createBlockTracker({\n networkClientType,\n endpointUrl,\n getOptions,\n provider,\n}: {\n networkClientType: NetworkClientType;\n endpointUrl: string;\n getOptions: (\n rpcEndpointUrl: string,\n ) => Omit<PollingBlockTrackerOptions, 'provider'>;\n provider: InternalProvider;\n}): PollingBlockTracker {\n const defaultOptions = {\n pollingInterval:\n // Needed for testing.\n // eslint-disable-next-line no-restricted-globals\n process.env.IN_TEST && networkClientType === NetworkClientType.Custom\n ? inMilliseconds(1, Duration.Second)\n : inMilliseconds(20, Duration.Second),\n retryTimeout: inMilliseconds(20, Duration.Second),\n };\n\n return new PollingBlockTracker({\n ...defaultOptions,\n ...getOptions(endpointUrl),\n provider,\n });\n}\n\n/**\n * Create middleware for infura.\n *\n * @param args - The arguments.\n * @param args.blockTracker - The block tracker to use.\n * @param args.network - The Infura network to use.\n * @param args.rpcProvider - The RPC provider to use.\n * @param args.rpcApiMiddleware - Additional middleware.\n * @returns The collection of middleware that makes up the Infura client.\n */\nfunction createInfuraNetworkMiddleware({\n blockTracker,\n network,\n rpcProvider,\n rpcApiMiddleware,\n}: {\n blockTracker: PollingBlockTracker;\n network: InfuraNetworkType;\n rpcProvider: InternalProvider;\n rpcApiMiddleware: RpcApiMiddleware;\n}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string; skipCache: boolean }>\n> {\n return JsonRpcEngineV2.create({\n middleware: [\n createNetworkAndChainIdMiddleware({ network }),\n createBlockCacheMiddleware({ blockTracker }),\n createInflightCacheMiddleware(),\n createBlockRefMiddleware({ blockTracker, provider: rpcProvider }),\n createRetryOnEmptyMiddleware({ blockTracker, provider: rpcProvider }),\n createBlockTrackerInspectorMiddleware({ blockTracker }),\n rpcApiMiddleware,\n ],\n }).asMiddleware();\n}\n\n/**\n * Creates static method middleware.\n *\n * @param args - The Arguments.\n * @param args.network - The Infura network to use.\n * @returns The middleware that implements the eth_chainId method.\n */\nfunction createNetworkAndChainIdMiddleware({\n network,\n}: {\n network: InfuraNetworkType;\n}): JsonRpcMiddleware<JsonRpcRequest> {\n return createScaffoldMiddleware({\n eth_chainId: ChainId[network],\n });\n}\n\nconst createChainIdMiddleware = (\n chainId: Hex,\n): JsonRpcMiddleware<JsonRpcRequest, Json> => {\n return ({ request, next }) => {\n if (request.method === 'eth_chainId') {\n return chainId;\n }\n return next();\n };\n};\n\n/**\n * Creates custom middleware.\n *\n * @param args - The arguments.\n * @param args.blockTracker - The block tracker to use.\n * @param args.chainId - The chain id to use.\n * @param args.rpcApiMiddleware - Additional middleware.\n * @returns The collection of middleware that makes up the Infura client.\n */\nfunction createCustomNetworkMiddleware({\n blockTracker,\n chainId,\n rpcApiMiddleware,\n}: {\n blockTracker: PollingBlockTracker;\n chainId: Hex;\n rpcApiMiddleware: RpcApiMiddleware;\n}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string; skipCache: boolean }>\n> {\n // Needed for testing.\n // eslint-disable-next-line no-restricted-globals\n const testMiddlewares = process.env.IN_TEST\n ? [createEstimateGasDelayTestMiddleware()]\n : [];\n\n return JsonRpcEngineV2.create({\n middleware: [\n ...testMiddlewares,\n createChainIdMiddleware(chainId),\n createBlockRefRewriteMiddleware({ blockTracker }),\n createBlockCacheMiddleware({ blockTracker }),\n createInflightCacheMiddleware(),\n createBlockTrackerInspectorMiddleware({ blockTracker }),\n rpcApiMiddleware,\n ],\n }).asMiddleware();\n}\n\n/**\n * For use in tests only.\n * Adds a delay to `eth_estimateGas` calls.\n *\n * @returns The middleware for delaying gas estimation calls by 2 seconds when in test.\n */\nfunction createEstimateGasDelayTestMiddleware(): JsonRpcMiddleware<\n JsonRpcRequest,\n Json\n> {\n return async ({ request, next }) => {\n if (request.method === 'eth_estimateGas') {\n await new Promise((resolve) => setTimeout(resolve, SECOND * 2));\n }\n return next();\n };\n}\n"]}
1
+ {"version":3,"file":"create-network-client.mjs","sourceRoot":"","sources":["../src/create-network-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { CONNECTIVITY_STATUSES } from '@metamask/connectivity-controller';\nimport type {\n CockatielFailureReason,\n InfuraNetworkType,\n} from '@metamask/controller-utils';\nimport {\n ChainId,\n DEFAULT_MAX_CONSECUTIVE_FAILURES,\n DEFAULT_MAX_RETRIES,\n} from '@metamask/controller-utils';\nimport type { PollingBlockTrackerOptions } from '@metamask/eth-block-tracker';\nimport { PollingBlockTracker } from '@metamask/eth-block-tracker';\nimport { createInfuraMiddleware } from '@metamask/eth-json-rpc-infura';\nimport {\n createBlockCacheMiddleware,\n createBlockRefMiddleware,\n createBlockRefRewriteMiddleware,\n createBlockTrackerInspectorMiddleware,\n createInflightCacheMiddleware,\n createFetchMiddleware,\n createRetryOnEmptyMiddleware,\n} from '@metamask/eth-json-rpc-middleware';\nimport { InternalProvider } from '@metamask/eth-json-rpc-provider';\nimport { providerFromMiddlewareV2 } from '@metamask/eth-json-rpc-provider';\nimport { asV2Middleware } from '@metamask/json-rpc-engine';\nimport {\n createScaffoldMiddleware,\n JsonRpcEngineV2,\n} from '@metamask/json-rpc-engine/v2';\nimport type {\n JsonRpcMiddleware,\n MiddlewareContext,\n} from '@metamask/json-rpc-engine/v2';\nimport { inMilliseconds, Duration } from '@metamask/utils';\nimport type { Hex, Json, JsonRpcRequest } from '@metamask/utils';\nimport type { Logger } from 'loglevel';\n\nimport type {\n NetworkClientId,\n NetworkControllerMessenger,\n} from './NetworkController';\nimport type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service';\nimport {\n isConnectionError,\n isConnectionResetError,\n isJsonParseError,\n isHttpServerError,\n isTimeoutError,\n} from './rpc-service/rpc-service';\nimport { RpcServiceChain } from './rpc-service/rpc-service-chain';\nimport type {\n BlockTracker,\n NetworkClientConfiguration,\n Provider,\n} from './types';\nimport { NetworkClientType } from './types';\n\nconst SECOND = 1000;\n\n/**\n * Why the degraded event was emitted.\n */\nexport type DegradedEventType = 'slow_success' | 'retries_exhausted';\n\n/**\n * The category of error that was retried until retries were exhausted.\n */\nexport type RetryReason =\n | 'connection_failed'\n | 'response_not_json'\n | 'non_successful_http_status'\n | 'timed_out'\n | 'connection_reset'\n | 'unknown';\n\n/**\n * Classifies the error that was being retried when retries were exhausted.\n *\n * @param error - The error from the last retry attempt.\n * @returns A classification string.\n */\nexport function classifyRetryReason(error: unknown): RetryReason {\n if (!(error instanceof Error)) {\n return 'unknown';\n }\n if (isConnectionError(error)) {\n return 'connection_failed';\n }\n if (isJsonParseError(error)) {\n return 'response_not_json';\n }\n if (isHttpServerError(error)) {\n return 'non_successful_http_status';\n }\n if (isTimeoutError(error)) {\n return 'timed_out';\n }\n if (isConnectionResetError(error)) {\n return 'connection_reset';\n }\n return 'unknown';\n}\n\n/**\n * The pair of provider / block tracker that can be used to interface with the\n * network and respond to new activity.\n */\nexport type NetworkClient = {\n configuration: NetworkClientConfiguration;\n provider: Provider;\n blockTracker: BlockTracker;\n destroy: () => void;\n};\n\ntype RpcApiMiddleware = JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string }>\n>;\n\n/**\n * Create a JSON RPC network client for a specific network.\n *\n * @param args - The arguments.\n * @param args.id - The ID that will be assigned to the new network client in\n * the registry.\n * @param args.configuration - The network configuration.\n * @param args.getRpcServiceOptions - Factory for constructing RPC service\n * options. See {@link NetworkControllerOptions.getRpcServiceOptions}.\n * @param args.getBlockTrackerOptions - Factory for constructing block tracker\n * options. See {@link NetworkControllerOptions.getBlockTrackerOptions}.\n * @param args.messenger - The network controller messenger.\n * @param args.isRpcFailoverEnabled - Whether or not requests sent to the\n * primary RPC endpoint for this network should be automatically diverted to\n * provided failover endpoints if the primary is unavailable. This effectively\n * causes the `failoverRpcUrls` property of the network client configuration\n * to be honored or ignored.\n * @param args.isRpcFailoverForced - Whether or not to force all traffic for\n * Infura endpoints that have failover URLs to those failover URLs, bypassing\n * Infura entirely.\n * @param args.logger - A `loglevel` logger.\n * @returns The network client.\n */\nexport function createNetworkClient({\n id,\n configuration,\n getRpcServiceOptions,\n getBlockTrackerOptions,\n messenger,\n isRpcFailoverEnabled,\n isRpcFailoverForced,\n logger,\n}: {\n id: NetworkClientId;\n configuration: NetworkClientConfiguration;\n getRpcServiceOptions?: (\n rpcEndpointUrl: string,\n ) => RpcServiceOptionsWithDefaults;\n getBlockTrackerOptions: (\n rpcEndpointUrl: string,\n ) => Omit<PollingBlockTrackerOptions, 'provider'>;\n messenger: NetworkControllerMessenger;\n isRpcFailoverEnabled: boolean;\n isRpcFailoverForced: boolean;\n logger?: Logger;\n}): NetworkClient {\n const primaryEndpointUrl =\n configuration.type === NetworkClientType.Infura\n ? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`\n : configuration.rpcUrl;\n const rpcServiceChain = createRpcServiceChain({\n id,\n primaryEndpointUrl,\n configuration,\n getRpcServiceOptions,\n messenger,\n isRpcFailoverEnabled,\n isRpcFailoverForced,\n logger,\n });\n\n let rpcApiMiddleware: RpcApiMiddleware;\n if (configuration.type === NetworkClientType.Infura) {\n rpcApiMiddleware = asV2Middleware(\n createInfuraMiddleware({\n rpcService: rpcServiceChain,\n options: {\n source: 'metamask',\n },\n }),\n );\n } else {\n rpcApiMiddleware = createFetchMiddleware({ rpcService: rpcServiceChain });\n }\n\n const rpcProvider = providerFromMiddlewareV2(rpcApiMiddleware);\n\n const blockTracker = createBlockTracker({\n networkClientType: configuration.type,\n endpointUrl: primaryEndpointUrl,\n getOptions: getBlockTrackerOptions,\n provider: rpcProvider,\n });\n\n const networkMiddleware =\n configuration.type === NetworkClientType.Infura\n ? createInfuraNetworkMiddleware({\n blockTracker,\n network: configuration.network,\n rpcProvider,\n rpcApiMiddleware,\n })\n : createCustomNetworkMiddleware({\n blockTracker,\n chainId: configuration.chainId,\n rpcApiMiddleware,\n });\n\n const provider: Provider = new InternalProvider({\n engine: JsonRpcEngineV2.create({\n middleware: [networkMiddleware],\n }),\n });\n\n const destroy = (): void => {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n blockTracker.destroy();\n };\n\n return { configuration, provider, blockTracker, destroy };\n}\n\n/**\n * Creates an RPC service chain, which represents the primary endpoint URL for\n * the network as well as its failover URLs.\n *\n * @param args - The arguments.\n * @param args.id - The ID that will be assigned to the new network client in\n * the registry.\n * @param args.primaryEndpointUrl - The primary endpoint URL.\n * @param args.configuration - The network configuration.\n * @param args.getRpcServiceOptions - Factory for constructing RPC service\n * options. See {@link NetworkControllerOptions.getRpcServiceOptions}.\n * @param args.messenger - The network controller messenger.\n * @param args.isRpcFailoverEnabled - Whether or not requests sent to the\n * primary RPC endpoint for this network should be automatically diverted to\n * provided failover endpoints if the primary is unavailable. This effectively\n * causes the `failoverRpcUrls` property of the network client configuration\n * to be honored or ignored.\n * @param args.isRpcFailoverForced - Whether or not to force all traffic for\n * Infura endpoints that have failover URLs to those failover URLs, bypassing\n * Infura entirely.\n * @param args.logger - A `loglevel` logger.\n * @returns The RPC service chain.\n */\nfunction createRpcServiceChain({\n id,\n primaryEndpointUrl,\n configuration,\n getRpcServiceOptions,\n messenger,\n isRpcFailoverEnabled,\n isRpcFailoverForced,\n logger,\n}: {\n id: NetworkClientId;\n primaryEndpointUrl: string;\n configuration: NetworkClientConfiguration;\n getRpcServiceOptions?: (\n rpcEndpointUrl: string,\n ) => RpcServiceOptionsWithDefaults;\n messenger: NetworkControllerMessenger;\n isRpcFailoverEnabled: boolean;\n isRpcFailoverForced: boolean;\n logger?: Logger;\n}): RpcServiceChain {\n const failoverEndpoints = (configuration.failoverRpcUrls ?? []).map(\n (url) => ({\n url,\n isFailover: true,\n }),\n );\n // We explicitly check the URL since some networks have been added with invalid configuration types in the past.\n const isInfura = new URL(primaryEndpointUrl).hostname.endsWith('.infura.io');\n\n let availableEndpoints: { url: string; isFailover: boolean }[];\n if (isRpcFailoverForced && isInfura && failoverEndpoints.length > 0) {\n // Force flag is on for an Infura endpoint with failovers: bypass Infura\n // entirely and route all traffic (including block polling) to failovers.\n // The first failover becomes the positional primary of the chain, so\n // availability/degraded events will report that failover URL as the\n // primary endpoint (there is no Infura primary in this mode).\n availableEndpoints = failoverEndpoints;\n } else if (isRpcFailoverEnabled && isInfura) {\n availableEndpoints = [\n { url: primaryEndpointUrl, isFailover: false },\n ...failoverEndpoints,\n ];\n } else {\n availableEndpoints = [{ url: primaryEndpointUrl, isFailover: false }];\n }\n\n const isOffline = (): boolean => {\n const connectivityState = messenger.call('ConnectivityController:getState');\n return (\n connectivityState.connectivityStatus === CONNECTIVITY_STATUSES.Offline\n );\n };\n\n // Ensure that if the endpoint continually responds with errors, we\n // break the circuit relatively fast (but not prematurely).\n //\n // Note that the circuit will break much faster if the errors are\n // retriable (e.g. 503) than if not (e.g. 500), so we attempt to strike\n // a balance here.\n const maxConsecutiveFailures = DEFAULT_MAX_CONSECUTIVE_FAILURES;\n\n // The number of rounds of retries that will break the circuit,\n // triggering a \"cooldown\".\n //\n // When we fail over to QuickNode, we expect it to be down at first\n // while it is being automatically activated, and we don't want to\n // activate the \"cooldown\" accidentally.\n const maxConsecutiveFailuresFailover = (DEFAULT_MAX_RETRIES + 1) * 10;\n\n const rpcServiceConfigurations = availableEndpoints.map((endpoint) => {\n const overriddenOptions = getRpcServiceOptions?.(endpoint.url) ?? {};\n return {\n fetch: globalThis.fetch.bind(globalThis),\n btoa: globalThis.btoa.bind(globalThis),\n isOffline,\n policyOptions: {\n maxRetries: DEFAULT_MAX_RETRIES,\n circuitBreakDuration: inMilliseconds(30, Duration.Second),\n maxConsecutiveFailures: endpoint.isFailover\n ? maxConsecutiveFailuresFailover\n : maxConsecutiveFailures,\n ...(overriddenOptions.policyOptions ?? {}),\n },\n ...overriddenOptions,\n endpointUrl: endpoint.url,\n logger,\n };\n });\n\n /**\n * Extracts the error from Cockatiel's `FailureReason` type received in\n * circuit breaker event handlers.\n *\n * The `FailureReason` object can have two possible shapes:\n * - `{ error: Error }` - When the RPC service throws an error (the common\n * case for RPC failures).\n * - `{ value: T }` - When the RPC service returns a value that the retry\n * filter policy considers a failure.\n *\n * @param value - The event data object from the circuit breaker event\n * listener (after destructuring known properties like `endpointUrl`). This\n * represents Cockatiel's `FailureReason` type.\n * @returns The error or failure value, or `undefined` if neither property\n * exists (which shouldn't happen in practice unless the circuit breaker is\n * manually isolated).\n */\n const getError = (\n value: CockatielFailureReason<unknown> | Record<never, never>,\n ): Error | unknown | undefined => {\n if ('error' in value) {\n return value.error;\n } else if ('value' in value) {\n return value.value;\n }\n return undefined;\n };\n\n const rpcServiceChain = new RpcServiceChain([\n rpcServiceConfigurations[0],\n ...rpcServiceConfigurations.slice(1),\n ]);\n\n rpcServiceChain.onBreak((data) => {\n const error = getError(data);\n\n if (error === undefined) {\n // This error shouldn't happen in practice because we never call `.isolate`\n // on the circuit breaker policy, but we need to appease TypeScript.\n throw new Error('Could not make request to endpoint.');\n }\n\n messenger.publish('NetworkController:rpcEndpointChainUnavailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n error,\n });\n });\n\n rpcServiceChain.onServiceBreak(\n ({\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n ...rest\n }) => {\n const error = getError(rest);\n\n if (error === undefined) {\n // This error shouldn't happen in practice because we never call `.isolate`\n // on the circuit breaker policy, but we need to appease TypeScript.\n throw new Error('Could not make request to endpoint.');\n }\n\n messenger.publish('NetworkController:rpcEndpointUnavailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n error,\n });\n },\n );\n\n rpcServiceChain.onDegraded(\n ({ rpcMethodName, duration, traceId, ...rest }) => {\n const error = getError(rest);\n const type: DegradedEventType =\n error === undefined ? 'slow_success' : 'retries_exhausted';\n messenger.publish('NetworkController:rpcEndpointChainDegraded', {\n chainId: configuration.chainId,\n networkClientId: id,\n error,\n rpcMethodName,\n duration,\n traceId,\n type,\n retryReason:\n error === undefined ? undefined : classifyRetryReason(error),\n });\n },\n );\n\n rpcServiceChain.onServiceDegraded(\n ({\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n rpcMethodName,\n duration,\n traceId,\n ...rest\n }) => {\n const error = getError(rest);\n const type: DegradedEventType =\n error === undefined ? 'slow_success' : 'retries_exhausted';\n\n messenger.publish('NetworkController:rpcEndpointDegraded', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n error,\n rpcMethodName,\n duration,\n traceId,\n type,\n retryReason:\n error === undefined ? undefined : classifyRetryReason(error),\n });\n },\n );\n\n rpcServiceChain.onAvailable(() => {\n messenger.publish('NetworkController:rpcEndpointChainAvailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n });\n });\n\n rpcServiceChain.onServiceRetry(\n ({\n attempt,\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n }) => {\n messenger.publish('NetworkController:rpcEndpointRetried', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n attempt,\n });\n },\n );\n\n return rpcServiceChain;\n}\n\n/**\n * Create the block tracker for the network.\n *\n * @param args - The arguments.\n * @param args.networkClientType - The type of the network client (\"infura\" or\n * \"custom\").\n * @param args.endpointUrl - The URL of the endpoint.\n * @param args.getOptions - Factory for the block tracker options.\n * @param args.provider - The EIP-1193 provider for the network's JSON-RPC\n * middleware stack.\n * @returns The created block tracker.\n */\nfunction createBlockTracker({\n networkClientType,\n endpointUrl,\n getOptions,\n provider,\n}: {\n networkClientType: NetworkClientType;\n endpointUrl: string;\n getOptions: (\n rpcEndpointUrl: string,\n ) => Omit<PollingBlockTrackerOptions, 'provider'>;\n provider: InternalProvider;\n}): PollingBlockTracker {\n const defaultOptions = {\n pollingInterval:\n // Needed for testing.\n // eslint-disable-next-line no-restricted-globals\n process.env.IN_TEST && networkClientType === NetworkClientType.Custom\n ? inMilliseconds(1, Duration.Second)\n : inMilliseconds(20, Duration.Second),\n retryTimeout: inMilliseconds(20, Duration.Second),\n };\n\n return new PollingBlockTracker({\n ...defaultOptions,\n ...getOptions(endpointUrl),\n provider,\n });\n}\n\n/**\n * Create middleware for infura.\n *\n * @param args - The arguments.\n * @param args.blockTracker - The block tracker to use.\n * @param args.network - The Infura network to use.\n * @param args.rpcProvider - The RPC provider to use.\n * @param args.rpcApiMiddleware - Additional middleware.\n * @returns The collection of middleware that makes up the Infura client.\n */\nfunction createInfuraNetworkMiddleware({\n blockTracker,\n network,\n rpcProvider,\n rpcApiMiddleware,\n}: {\n blockTracker: PollingBlockTracker;\n network: InfuraNetworkType;\n rpcProvider: InternalProvider;\n rpcApiMiddleware: RpcApiMiddleware;\n}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string; skipCache: boolean }>\n> {\n return JsonRpcEngineV2.create({\n middleware: [\n createNetworkAndChainIdMiddleware({ network }),\n createBlockCacheMiddleware({ blockTracker }),\n createInflightCacheMiddleware(),\n createBlockRefMiddleware({ blockTracker, provider: rpcProvider }),\n createRetryOnEmptyMiddleware({ blockTracker, provider: rpcProvider }),\n createBlockTrackerInspectorMiddleware({ blockTracker }),\n rpcApiMiddleware,\n ],\n }).asMiddleware();\n}\n\n/**\n * Creates static method middleware.\n *\n * @param args - The Arguments.\n * @param args.network - The Infura network to use.\n * @returns The middleware that implements the eth_chainId method.\n */\nfunction createNetworkAndChainIdMiddleware({\n network,\n}: {\n network: InfuraNetworkType;\n}): JsonRpcMiddleware<JsonRpcRequest> {\n return createScaffoldMiddleware({\n eth_chainId: ChainId[network],\n });\n}\n\nconst createChainIdMiddleware = (\n chainId: Hex,\n): JsonRpcMiddleware<JsonRpcRequest, Json> => {\n return ({ request, next }) => {\n if (request.method === 'eth_chainId') {\n return chainId;\n }\n return next();\n };\n};\n\n/**\n * Creates custom middleware.\n *\n * @param args - The arguments.\n * @param args.blockTracker - The block tracker to use.\n * @param args.chainId - The chain id to use.\n * @param args.rpcApiMiddleware - Additional middleware.\n * @returns The collection of middleware that makes up the Infura client.\n */\nfunction createCustomNetworkMiddleware({\n blockTracker,\n chainId,\n rpcApiMiddleware,\n}: {\n blockTracker: PollingBlockTracker;\n chainId: Hex;\n rpcApiMiddleware: RpcApiMiddleware;\n}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string; skipCache: boolean }>\n> {\n // Needed for testing.\n // eslint-disable-next-line no-restricted-globals\n const testMiddlewares = process.env.IN_TEST\n ? [createEstimateGasDelayTestMiddleware()]\n : [];\n\n return JsonRpcEngineV2.create({\n middleware: [\n ...testMiddlewares,\n createChainIdMiddleware(chainId),\n createBlockRefRewriteMiddleware({ blockTracker }),\n createBlockCacheMiddleware({ blockTracker }),\n createInflightCacheMiddleware(),\n createBlockTrackerInspectorMiddleware({ blockTracker }),\n rpcApiMiddleware,\n ],\n }).asMiddleware();\n}\n\n/**\n * For use in tests only.\n * Adds a delay to `eth_estimateGas` calls.\n *\n * @returns The middleware for delaying gas estimation calls by 2 seconds when in test.\n */\nfunction createEstimateGasDelayTestMiddleware(): JsonRpcMiddleware<\n JsonRpcRequest,\n Json\n> {\n return async ({ request, next }) => {\n if (request.method === 'eth_estimateGas') {\n await new Promise((resolve) => setTimeout(resolve, SECOND * 2));\n }\n return next();\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmCA,6DAM6B;AAL3B,qIAAA,gCAAgC,OAAA;AAChC,oIAAA,+BAA+B,OAAA;AAC/B,gHAAA,WAAW,OAAA;AACX,sHAAA,iBAAiB,OAAA;AACjB,oHAAA,eAAe,OAAA;AAEjB,kDAA4B;AAO5B,qCAA4C;AAAnC,0GAAA,iBAAiB,OAAA;AAK1B,qEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,6DAA8D;AAArD,gHAAA,iBAAiB,OAAA","sourcesContent":["export type { AutoManagedNetworkClient } from './create-auto-managed-network-client';\nexport type {\n Block,\n NetworkMetadata,\n NetworkConfiguration,\n BuiltInNetworkClientId,\n CustomNetworkClientId,\n NetworkClientId,\n NetworksMetadata,\n NetworkState,\n BlockTrackerProxy,\n ProviderProxy,\n AddNetworkCustomRpcEndpointFields,\n AddNetworkFields,\n UpdateNetworkFields,\n InfuraRpcEndpoint,\n NetworkControllerStateChangeEvent,\n NetworkControllerNetworkWillChangeEvent,\n NetworkControllerNetworkDidChangeEvent,\n NetworkControllerInfuraIsBlockedEvent,\n NetworkControllerInfuraIsUnblockedEvent,\n NetworkControllerNetworkAddedEvent,\n NetworkControllerNetworkRemovedEvent,\n NetworkControllerEvents,\n NetworkControllerGetStateAction,\n NetworkControllerActions,\n NetworkControllerMessenger,\n NetworkControllerOptions,\n NetworkControllerRpcEndpointChainUnavailableEvent,\n NetworkControllerRpcEndpointUnavailableEvent,\n NetworkControllerRpcEndpointChainDegradedEvent,\n NetworkControllerRpcEndpointDegradedEvent,\n NetworkControllerRpcEndpointChainAvailableEvent,\n NetworkControllerRpcEndpointRetriedEvent,\n} from './NetworkController';\nexport {\n getDefaultNetworkControllerState,\n selectAvailableNetworkClientIds,\n knownKeysOf,\n NetworkController,\n RpcEndpointType,\n} from './NetworkController';\nexport * from './constants';\nexport type { BlockTracker, Provider } from './types';\nexport type {\n NetworkClientConfiguration,\n InfuraNetworkClientConfiguration,\n CustomNetworkClientConfiguration,\n} from './types';\nexport { NetworkClientType } from './types';\nexport type { NetworkClient } from './create-network-client';\nexport type { AbstractRpcService } from './rpc-service/abstract-rpc-service';\nexport type { RpcServiceRequestable } from './rpc-service/rpc-service-requestable';\nexport type { DegradedEventType, RetryReason } from './create-network-client';\nexport { classifyRetryReason } from './create-network-client';\nexport { isConnectionError } from './rpc-service/rpc-service';\nexport type {\n NetworkControllerGetEthQueryAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetSelectedChainIdAction,\n NetworkControllerGetEIP1559CompatibilityAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerSetProviderTypeAction,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerGetNetworkConfigurationByChainIdAction,\n NetworkControllerGetNetworkConfigurationByNetworkClientIdAction,\n NetworkControllerAddNetworkAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerUpdateNetworkAction,\n NetworkControllerEnableRpcFailoverAction,\n NetworkControllerDisableRpcFailoverAction,\n NetworkControllerGetProviderAndBlockTrackerAction,\n NetworkControllerGetNetworkClientRegistryAction,\n NetworkControllerLookupNetworkAction,\n NetworkControllerLookupNetworkByClientIdAction,\n NetworkControllerGet1559CompatibilityWithNetworkClientIdAction,\n NetworkControllerResetConnectionAction,\n NetworkControllerRollbackToPreviousProviderAction,\n NetworkControllerLoadBackupAction,\n} from './NetworkController-method-action-types';\n"]}
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmCA,6DAM6B;AAL3B,qIAAA,gCAAgC,OAAA;AAChC,oIAAA,+BAA+B,OAAA;AAC/B,gHAAA,WAAW,OAAA;AACX,sHAAA,iBAAiB,OAAA;AACjB,oHAAA,eAAe,OAAA;AAEjB,kDAA4B;AAO5B,qCAA4C;AAAnC,0GAAA,iBAAiB,OAAA;AAK1B,qEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,6DAA8D;AAArD,gHAAA,iBAAiB,OAAA","sourcesContent":["export type { AutoManagedNetworkClient } from './create-auto-managed-network-client';\nexport type {\n Block,\n NetworkMetadata,\n NetworkConfiguration,\n BuiltInNetworkClientId,\n CustomNetworkClientId,\n NetworkClientId,\n NetworksMetadata,\n NetworkState,\n BlockTrackerProxy,\n ProviderProxy,\n AddNetworkCustomRpcEndpointFields,\n AddNetworkFields,\n UpdateNetworkFields,\n InfuraRpcEndpoint,\n NetworkControllerStateChangeEvent,\n NetworkControllerNetworkWillChangeEvent,\n NetworkControllerNetworkDidChangeEvent,\n NetworkControllerInfuraIsBlockedEvent,\n NetworkControllerInfuraIsUnblockedEvent,\n NetworkControllerNetworkAddedEvent,\n NetworkControllerNetworkRemovedEvent,\n NetworkControllerEvents,\n NetworkControllerGetStateAction,\n NetworkControllerActions,\n NetworkControllerMessenger,\n NetworkControllerOptions,\n NetworkControllerRpcEndpointChainUnavailableEvent,\n NetworkControllerRpcEndpointUnavailableEvent,\n NetworkControllerRpcEndpointChainDegradedEvent,\n NetworkControllerRpcEndpointDegradedEvent,\n NetworkControllerRpcEndpointChainAvailableEvent,\n NetworkControllerRpcEndpointRetriedEvent,\n} from './NetworkController';\nexport {\n getDefaultNetworkControllerState,\n selectAvailableNetworkClientIds,\n knownKeysOf,\n NetworkController,\n RpcEndpointType,\n} from './NetworkController';\nexport * from './constants';\nexport type { BlockTracker, Provider } from './types';\nexport type {\n NetworkClientConfiguration,\n InfuraNetworkClientConfiguration,\n CustomNetworkClientConfiguration,\n} from './types';\nexport { NetworkClientType } from './types';\nexport type { NetworkClient } from './create-network-client';\nexport type { AbstractRpcService } from './rpc-service/abstract-rpc-service';\nexport type { RpcServiceRequestable } from './rpc-service/rpc-service-requestable';\nexport type { DegradedEventType, RetryReason } from './create-network-client';\nexport { classifyRetryReason } from './create-network-client';\nexport { isConnectionError } from './rpc-service/rpc-service';\nexport type {\n NetworkControllerGetEthQueryAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetSelectedChainIdAction,\n NetworkControllerGetEIP1559CompatibilityAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerSetProviderTypeAction,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerGetNetworkConfigurationByChainIdAction,\n NetworkControllerGetNetworkConfigurationByNetworkClientIdAction,\n NetworkControllerAddNetworkAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerUpdateNetworkAction,\n NetworkControllerEnableRpcFailoverAction,\n NetworkControllerDisableRpcFailoverAction,\n NetworkControllerEnableRpcFailoverForcedAction,\n NetworkControllerDisableRpcFailoverForcedAction,\n NetworkControllerGetProviderAndBlockTrackerAction,\n NetworkControllerGetNetworkClientRegistryAction,\n NetworkControllerLookupNetworkAction,\n NetworkControllerLookupNetworkByClientIdAction,\n NetworkControllerGet1559CompatibilityWithNetworkClientIdAction,\n NetworkControllerResetConnectionAction,\n NetworkControllerRollbackToPreviousProviderAction,\n NetworkControllerLoadBackupAction,\n} from './NetworkController-method-action-types';\n"]}
package/dist/index.d.cts CHANGED
@@ -11,5 +11,5 @@ export type { RpcServiceRequestable } from "./rpc-service/rpc-service-requestabl
11
11
  export type { DegradedEventType, RetryReason } from "./create-network-client.cjs";
12
12
  export { classifyRetryReason } from "./create-network-client.cjs";
13
13
  export { isConnectionError } from "./rpc-service/rpc-service.cjs";
14
- export type { NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetSelectedChainIdAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerGetNetworkConfigurationByChainIdAction, NetworkControllerGetNetworkConfigurationByNetworkClientIdAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerEnableRpcFailoverAction, NetworkControllerDisableRpcFailoverAction, NetworkControllerGetProviderAndBlockTrackerAction, NetworkControllerGetNetworkClientRegistryAction, NetworkControllerLookupNetworkAction, NetworkControllerLookupNetworkByClientIdAction, NetworkControllerGet1559CompatibilityWithNetworkClientIdAction, NetworkControllerResetConnectionAction, NetworkControllerRollbackToPreviousProviderAction, NetworkControllerLoadBackupAction, } from "./NetworkController-method-action-types.cjs";
14
+ export type { NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetSelectedChainIdAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerGetNetworkConfigurationByChainIdAction, NetworkControllerGetNetworkConfigurationByNetworkClientIdAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerEnableRpcFailoverAction, NetworkControllerDisableRpcFailoverAction, NetworkControllerEnableRpcFailoverForcedAction, NetworkControllerDisableRpcFailoverForcedAction, NetworkControllerGetProviderAndBlockTrackerAction, NetworkControllerGetNetworkClientRegistryAction, NetworkControllerLookupNetworkAction, NetworkControllerLookupNetworkByClientIdAction, NetworkControllerGet1559CompatibilityWithNetworkClientIdAction, NetworkControllerResetConnectionAction, NetworkControllerRollbackToPreviousProviderAction, NetworkControllerLoadBackupAction, } from "./NetworkController-method-action-types.cjs";
15
15
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,iDAA6C;AACrF,YAAY,EACV,KAAK,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,iCAAiC,EACjC,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,iDAAiD,EACjD,4CAA4C,EAC5C,8CAA8C,EAC9C,yCAAyC,EACzC,+CAA+C,EAC/C,wCAAwC,GACzC,gCAA4B;AAC7B,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,gCAA4B;AAC7B,gCAA4B;AAC5B,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,oBAAgB;AACtD,YAAY,EACV,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,GACjC,oBAAgB;AACjB,OAAO,EAAE,iBAAiB,EAAE,oBAAgB;AAC5C,YAAY,EAAE,aAAa,EAAE,oCAAgC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,+CAA2C;AAC7E,YAAY,EAAE,qBAAqB,EAAE,kDAA8C;AACnF,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,oCAAgC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,oCAAgC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,sCAAkC;AAC9D,YAAY,EACV,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,yCAAyC,EACzC,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,uDAAuD,EACvD,+DAA+D,EAC/D,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,wCAAwC,EACxC,yCAAyC,EACzC,iDAAiD,EACjD,+CAA+C,EAC/C,oCAAoC,EACpC,8CAA8C,EAC9C,8DAA8D,EAC9D,sCAAsC,EACtC,iDAAiD,EACjD,iCAAiC,GAClC,oDAAgD"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,iDAA6C;AACrF,YAAY,EACV,KAAK,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,iCAAiC,EACjC,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,iDAAiD,EACjD,4CAA4C,EAC5C,8CAA8C,EAC9C,yCAAyC,EACzC,+CAA+C,EAC/C,wCAAwC,GACzC,gCAA4B;AAC7B,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,gCAA4B;AAC7B,gCAA4B;AAC5B,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,oBAAgB;AACtD,YAAY,EACV,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,GACjC,oBAAgB;AACjB,OAAO,EAAE,iBAAiB,EAAE,oBAAgB;AAC5C,YAAY,EAAE,aAAa,EAAE,oCAAgC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,+CAA2C;AAC7E,YAAY,EAAE,qBAAqB,EAAE,kDAA8C;AACnF,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,oCAAgC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,oCAAgC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,sCAAkC;AAC9D,YAAY,EACV,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,yCAAyC,EACzC,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,uDAAuD,EACvD,+DAA+D,EAC/D,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,wCAAwC,EACxC,yCAAyC,EACzC,8CAA8C,EAC9C,+CAA+C,EAC/C,iDAAiD,EACjD,+CAA+C,EAC/C,oCAAoC,EACpC,8CAA8C,EAC9C,8DAA8D,EAC9D,sCAAsC,EACtC,iDAAiD,EACjD,iCAAiC,GAClC,oDAAgD"}
package/dist/index.d.mts CHANGED
@@ -11,5 +11,5 @@ export type { RpcServiceRequestable } from "./rpc-service/rpc-service-requestabl
11
11
  export type { DegradedEventType, RetryReason } from "./create-network-client.mjs";
12
12
  export { classifyRetryReason } from "./create-network-client.mjs";
13
13
  export { isConnectionError } from "./rpc-service/rpc-service.mjs";
14
- export type { NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetSelectedChainIdAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerGetNetworkConfigurationByChainIdAction, NetworkControllerGetNetworkConfigurationByNetworkClientIdAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerEnableRpcFailoverAction, NetworkControllerDisableRpcFailoverAction, NetworkControllerGetProviderAndBlockTrackerAction, NetworkControllerGetNetworkClientRegistryAction, NetworkControllerLookupNetworkAction, NetworkControllerLookupNetworkByClientIdAction, NetworkControllerGet1559CompatibilityWithNetworkClientIdAction, NetworkControllerResetConnectionAction, NetworkControllerRollbackToPreviousProviderAction, NetworkControllerLoadBackupAction, } from "./NetworkController-method-action-types.mjs";
14
+ export type { NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetSelectedChainIdAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerGetNetworkConfigurationByChainIdAction, NetworkControllerGetNetworkConfigurationByNetworkClientIdAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerEnableRpcFailoverAction, NetworkControllerDisableRpcFailoverAction, NetworkControllerEnableRpcFailoverForcedAction, NetworkControllerDisableRpcFailoverForcedAction, NetworkControllerGetProviderAndBlockTrackerAction, NetworkControllerGetNetworkClientRegistryAction, NetworkControllerLookupNetworkAction, NetworkControllerLookupNetworkByClientIdAction, NetworkControllerGet1559CompatibilityWithNetworkClientIdAction, NetworkControllerResetConnectionAction, NetworkControllerRollbackToPreviousProviderAction, NetworkControllerLoadBackupAction, } from "./NetworkController-method-action-types.mjs";
15
15
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,iDAA6C;AACrF,YAAY,EACV,KAAK,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,iCAAiC,EACjC,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,iDAAiD,EACjD,4CAA4C,EAC5C,8CAA8C,EAC9C,yCAAyC,EACzC,+CAA+C,EAC/C,wCAAwC,GACzC,gCAA4B;AAC7B,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,gCAA4B;AAC7B,gCAA4B;AAC5B,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,oBAAgB;AACtD,YAAY,EACV,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,GACjC,oBAAgB;AACjB,OAAO,EAAE,iBAAiB,EAAE,oBAAgB;AAC5C,YAAY,EAAE,aAAa,EAAE,oCAAgC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,+CAA2C;AAC7E,YAAY,EAAE,qBAAqB,EAAE,kDAA8C;AACnF,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,oCAAgC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,oCAAgC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,sCAAkC;AAC9D,YAAY,EACV,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,yCAAyC,EACzC,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,uDAAuD,EACvD,+DAA+D,EAC/D,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,wCAAwC,EACxC,yCAAyC,EACzC,iDAAiD,EACjD,+CAA+C,EAC/C,oCAAoC,EACpC,8CAA8C,EAC9C,8DAA8D,EAC9D,sCAAsC,EACtC,iDAAiD,EACjD,iCAAiC,GAClC,oDAAgD"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,iDAA6C;AACrF,YAAY,EACV,KAAK,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,iCAAiC,EACjC,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,iDAAiD,EACjD,4CAA4C,EAC5C,8CAA8C,EAC9C,yCAAyC,EACzC,+CAA+C,EAC/C,wCAAwC,GACzC,gCAA4B;AAC7B,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,gCAA4B;AAC7B,gCAA4B;AAC5B,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,oBAAgB;AACtD,YAAY,EACV,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,GACjC,oBAAgB;AACjB,OAAO,EAAE,iBAAiB,EAAE,oBAAgB;AAC5C,YAAY,EAAE,aAAa,EAAE,oCAAgC;AAC7D,YAAY,EAAE,kBAAkB,EAAE,+CAA2C;AAC7E,YAAY,EAAE,qBAAqB,EAAE,kDAA8C;AACnF,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,oCAAgC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,oCAAgC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,sCAAkC;AAC9D,YAAY,EACV,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,yCAAyC,EACzC,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,uDAAuD,EACvD,+DAA+D,EAC/D,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,wCAAwC,EACxC,yCAAyC,EACzC,8CAA8C,EAC9C,+CAA+C,EAC/C,iDAAiD,EACjD,+CAA+C,EAC/C,oCAAoC,EACpC,8CAA8C,EAC9C,8DAA8D,EAC9D,sCAAsC,EACtC,iDAAiD,EACjD,iCAAiC,GAClC,oDAAgD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmCA,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,EAChB,gCAA4B;AAC7B,gCAA4B;AAO5B,OAAO,EAAE,iBAAiB,EAAE,oBAAgB;AAK5C,OAAO,EAAE,mBAAmB,EAAE,oCAAgC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,sCAAkC","sourcesContent":["export type { AutoManagedNetworkClient } from './create-auto-managed-network-client';\nexport type {\n Block,\n NetworkMetadata,\n NetworkConfiguration,\n BuiltInNetworkClientId,\n CustomNetworkClientId,\n NetworkClientId,\n NetworksMetadata,\n NetworkState,\n BlockTrackerProxy,\n ProviderProxy,\n AddNetworkCustomRpcEndpointFields,\n AddNetworkFields,\n UpdateNetworkFields,\n InfuraRpcEndpoint,\n NetworkControllerStateChangeEvent,\n NetworkControllerNetworkWillChangeEvent,\n NetworkControllerNetworkDidChangeEvent,\n NetworkControllerInfuraIsBlockedEvent,\n NetworkControllerInfuraIsUnblockedEvent,\n NetworkControllerNetworkAddedEvent,\n NetworkControllerNetworkRemovedEvent,\n NetworkControllerEvents,\n NetworkControllerGetStateAction,\n NetworkControllerActions,\n NetworkControllerMessenger,\n NetworkControllerOptions,\n NetworkControllerRpcEndpointChainUnavailableEvent,\n NetworkControllerRpcEndpointUnavailableEvent,\n NetworkControllerRpcEndpointChainDegradedEvent,\n NetworkControllerRpcEndpointDegradedEvent,\n NetworkControllerRpcEndpointChainAvailableEvent,\n NetworkControllerRpcEndpointRetriedEvent,\n} from './NetworkController';\nexport {\n getDefaultNetworkControllerState,\n selectAvailableNetworkClientIds,\n knownKeysOf,\n NetworkController,\n RpcEndpointType,\n} from './NetworkController';\nexport * from './constants';\nexport type { BlockTracker, Provider } from './types';\nexport type {\n NetworkClientConfiguration,\n InfuraNetworkClientConfiguration,\n CustomNetworkClientConfiguration,\n} from './types';\nexport { NetworkClientType } from './types';\nexport type { NetworkClient } from './create-network-client';\nexport type { AbstractRpcService } from './rpc-service/abstract-rpc-service';\nexport type { RpcServiceRequestable } from './rpc-service/rpc-service-requestable';\nexport type { DegradedEventType, RetryReason } from './create-network-client';\nexport { classifyRetryReason } from './create-network-client';\nexport { isConnectionError } from './rpc-service/rpc-service';\nexport type {\n NetworkControllerGetEthQueryAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetSelectedChainIdAction,\n NetworkControllerGetEIP1559CompatibilityAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerSetProviderTypeAction,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerGetNetworkConfigurationByChainIdAction,\n NetworkControllerGetNetworkConfigurationByNetworkClientIdAction,\n NetworkControllerAddNetworkAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerUpdateNetworkAction,\n NetworkControllerEnableRpcFailoverAction,\n NetworkControllerDisableRpcFailoverAction,\n NetworkControllerGetProviderAndBlockTrackerAction,\n NetworkControllerGetNetworkClientRegistryAction,\n NetworkControllerLookupNetworkAction,\n NetworkControllerLookupNetworkByClientIdAction,\n NetworkControllerGet1559CompatibilityWithNetworkClientIdAction,\n NetworkControllerResetConnectionAction,\n NetworkControllerRollbackToPreviousProviderAction,\n NetworkControllerLoadBackupAction,\n} from './NetworkController-method-action-types';\n"]}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmCA,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,EAChB,gCAA4B;AAC7B,gCAA4B;AAO5B,OAAO,EAAE,iBAAiB,EAAE,oBAAgB;AAK5C,OAAO,EAAE,mBAAmB,EAAE,oCAAgC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,sCAAkC","sourcesContent":["export type { AutoManagedNetworkClient } from './create-auto-managed-network-client';\nexport type {\n Block,\n NetworkMetadata,\n NetworkConfiguration,\n BuiltInNetworkClientId,\n CustomNetworkClientId,\n NetworkClientId,\n NetworksMetadata,\n NetworkState,\n BlockTrackerProxy,\n ProviderProxy,\n AddNetworkCustomRpcEndpointFields,\n AddNetworkFields,\n UpdateNetworkFields,\n InfuraRpcEndpoint,\n NetworkControllerStateChangeEvent,\n NetworkControllerNetworkWillChangeEvent,\n NetworkControllerNetworkDidChangeEvent,\n NetworkControllerInfuraIsBlockedEvent,\n NetworkControllerInfuraIsUnblockedEvent,\n NetworkControllerNetworkAddedEvent,\n NetworkControllerNetworkRemovedEvent,\n NetworkControllerEvents,\n NetworkControllerGetStateAction,\n NetworkControllerActions,\n NetworkControllerMessenger,\n NetworkControllerOptions,\n NetworkControllerRpcEndpointChainUnavailableEvent,\n NetworkControllerRpcEndpointUnavailableEvent,\n NetworkControllerRpcEndpointChainDegradedEvent,\n NetworkControllerRpcEndpointDegradedEvent,\n NetworkControllerRpcEndpointChainAvailableEvent,\n NetworkControllerRpcEndpointRetriedEvent,\n} from './NetworkController';\nexport {\n getDefaultNetworkControllerState,\n selectAvailableNetworkClientIds,\n knownKeysOf,\n NetworkController,\n RpcEndpointType,\n} from './NetworkController';\nexport * from './constants';\nexport type { BlockTracker, Provider } from './types';\nexport type {\n NetworkClientConfiguration,\n InfuraNetworkClientConfiguration,\n CustomNetworkClientConfiguration,\n} from './types';\nexport { NetworkClientType } from './types';\nexport type { NetworkClient } from './create-network-client';\nexport type { AbstractRpcService } from './rpc-service/abstract-rpc-service';\nexport type { RpcServiceRequestable } from './rpc-service/rpc-service-requestable';\nexport type { DegradedEventType, RetryReason } from './create-network-client';\nexport { classifyRetryReason } from './create-network-client';\nexport { isConnectionError } from './rpc-service/rpc-service';\nexport type {\n NetworkControllerGetEthQueryAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetSelectedChainIdAction,\n NetworkControllerGetEIP1559CompatibilityAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerSetProviderTypeAction,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerGetNetworkConfigurationByChainIdAction,\n NetworkControllerGetNetworkConfigurationByNetworkClientIdAction,\n NetworkControllerAddNetworkAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerUpdateNetworkAction,\n NetworkControllerEnableRpcFailoverAction,\n NetworkControllerDisableRpcFailoverAction,\n NetworkControllerEnableRpcFailoverForcedAction,\n NetworkControllerDisableRpcFailoverForcedAction,\n NetworkControllerGetProviderAndBlockTrackerAction,\n NetworkControllerGetNetworkClientRegistryAction,\n NetworkControllerLookupNetworkAction,\n NetworkControllerLookupNetworkByClientIdAction,\n NetworkControllerGet1559CompatibilityWithNetworkClientIdAction,\n NetworkControllerResetConnectionAction,\n NetworkControllerRollbackToPreviousProviderAction,\n NetworkControllerLoadBackupAction,\n} from './NetworkController-method-action-types';\n"]}
@@ -1,10 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getIsRpcFailoverEnabled = void 0;
3
+ exports.getIsRpcFailoverForced = exports.getIsRpcFailoverEnabled = void 0;
4
4
  function getIsRpcFailoverEnabled(state) {
5
5
  const walletFrameworkRpcFailoverEnabled = state.remoteFeatureFlags
6
6
  .walletFrameworkRpcFailoverEnabled;
7
7
  return walletFrameworkRpcFailoverEnabled ?? false;
8
8
  }
9
9
  exports.getIsRpcFailoverEnabled = getIsRpcFailoverEnabled;
10
+ function getIsRpcFailoverForced(state) {
11
+ const corePlatformRpcFailoverForceEnabled = state.remoteFeatureFlags
12
+ .corePlatformRpcFailoverForceEnabled;
13
+ return corePlatformRpcFailoverForceEnabled ?? false;
14
+ }
15
+ exports.getIsRpcFailoverForced = getIsRpcFailoverForced;
10
16
  //# sourceMappingURL=selectors.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.cjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":";;;AAEA,SAAgB,uBAAuB,CACrC,KAAuC;IAEvC,MAAM,iCAAiC,GAAG,KAAK,CAAC,kBAAkB;SAC/D,iCAAwD,CAAC;IAC5D,OAAO,iCAAiC,IAAI,KAAK,CAAC;AACpD,CAAC;AAND,0DAMC","sourcesContent":["import { RemoteFeatureFlagControllerState } from '@metamask/remote-feature-flag-controller';\n\nexport function getIsRpcFailoverEnabled(\n state: RemoteFeatureFlagControllerState,\n): boolean {\n const walletFrameworkRpcFailoverEnabled = state.remoteFeatureFlags\n .walletFrameworkRpcFailoverEnabled as boolean | undefined;\n return walletFrameworkRpcFailoverEnabled ?? false;\n}\n"]}
1
+ {"version":3,"file":"selectors.cjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":";;;AAEA,SAAgB,uBAAuB,CACrC,KAAuC;IAEvC,MAAM,iCAAiC,GAAG,KAAK,CAAC,kBAAkB;SAC/D,iCAAwD,CAAC;IAC5D,OAAO,iCAAiC,IAAI,KAAK,CAAC;AACpD,CAAC;AAND,0DAMC;AAED,SAAgB,sBAAsB,CACpC,KAAuC;IAEvC,MAAM,mCAAmC,GAAG,KAAK,CAAC,kBAAkB;SACjE,mCAA0D,CAAC;IAC9D,OAAO,mCAAmC,IAAI,KAAK,CAAC;AACtD,CAAC;AAND,wDAMC","sourcesContent":["import { RemoteFeatureFlagControllerState } from '@metamask/remote-feature-flag-controller';\n\nexport function getIsRpcFailoverEnabled(\n state: RemoteFeatureFlagControllerState,\n): boolean {\n const walletFrameworkRpcFailoverEnabled = state.remoteFeatureFlags\n .walletFrameworkRpcFailoverEnabled as boolean | undefined;\n return walletFrameworkRpcFailoverEnabled ?? false;\n}\n\nexport function getIsRpcFailoverForced(\n state: RemoteFeatureFlagControllerState,\n): boolean {\n const corePlatformRpcFailoverForceEnabled = state.remoteFeatureFlags\n .corePlatformRpcFailoverForceEnabled as boolean | undefined;\n return corePlatformRpcFailoverForceEnabled ?? false;\n}\n"]}
@@ -1,3 +1,4 @@
1
1
  import { RemoteFeatureFlagControllerState } from "@metamask/remote-feature-flag-controller";
2
2
  export declare function getIsRpcFailoverEnabled(state: RemoteFeatureFlagControllerState): boolean;
3
+ export declare function getIsRpcFailoverForced(state: RemoteFeatureFlagControllerState): boolean;
3
4
  //# sourceMappingURL=selectors.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.d.cts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,iDAAiD;AAE5F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAIT"}
1
+ {"version":3,"file":"selectors.d.cts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,iDAAiD;AAE5F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAIT;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAIT"}
@@ -1,3 +1,4 @@
1
1
  import { RemoteFeatureFlagControllerState } from "@metamask/remote-feature-flag-controller";
2
2
  export declare function getIsRpcFailoverEnabled(state: RemoteFeatureFlagControllerState): boolean;
3
+ export declare function getIsRpcFailoverForced(state: RemoteFeatureFlagControllerState): boolean;
3
4
  //# sourceMappingURL=selectors.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.d.mts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,iDAAiD;AAE5F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAIT"}
1
+ {"version":3,"file":"selectors.d.mts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,iDAAiD;AAE5F,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAIT;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAIT"}
@@ -3,4 +3,9 @@ export function getIsRpcFailoverEnabled(state) {
3
3
  .walletFrameworkRpcFailoverEnabled;
4
4
  return walletFrameworkRpcFailoverEnabled ?? false;
5
5
  }
6
+ export function getIsRpcFailoverForced(state) {
7
+ const corePlatformRpcFailoverForceEnabled = state.remoteFeatureFlags
8
+ .corePlatformRpcFailoverForceEnabled;
9
+ return corePlatformRpcFailoverForceEnabled ?? false;
10
+ }
6
11
  //# sourceMappingURL=selectors.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.mjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CACrC,KAAuC;IAEvC,MAAM,iCAAiC,GAAG,KAAK,CAAC,kBAAkB;SAC/D,iCAAwD,CAAC;IAC5D,OAAO,iCAAiC,IAAI,KAAK,CAAC;AACpD,CAAC","sourcesContent":["import { RemoteFeatureFlagControllerState } from '@metamask/remote-feature-flag-controller';\n\nexport function getIsRpcFailoverEnabled(\n state: RemoteFeatureFlagControllerState,\n): boolean {\n const walletFrameworkRpcFailoverEnabled = state.remoteFeatureFlags\n .walletFrameworkRpcFailoverEnabled as boolean | undefined;\n return walletFrameworkRpcFailoverEnabled ?? false;\n}\n"]}
1
+ {"version":3,"file":"selectors.mjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CACrC,KAAuC;IAEvC,MAAM,iCAAiC,GAAG,KAAK,CAAC,kBAAkB;SAC/D,iCAAwD,CAAC;IAC5D,OAAO,iCAAiC,IAAI,KAAK,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAuC;IAEvC,MAAM,mCAAmC,GAAG,KAAK,CAAC,kBAAkB;SACjE,mCAA0D,CAAC;IAC9D,OAAO,mCAAmC,IAAI,KAAK,CAAC;AACtD,CAAC","sourcesContent":["import { RemoteFeatureFlagControllerState } from '@metamask/remote-feature-flag-controller';\n\nexport function getIsRpcFailoverEnabled(\n state: RemoteFeatureFlagControllerState,\n): boolean {\n const walletFrameworkRpcFailoverEnabled = state.remoteFeatureFlags\n .walletFrameworkRpcFailoverEnabled as boolean | undefined;\n return walletFrameworkRpcFailoverEnabled ?? false;\n}\n\nexport function getIsRpcFailoverForced(\n state: RemoteFeatureFlagControllerState,\n): boolean {\n const corePlatformRpcFailoverForceEnabled = state.remoteFeatureFlags\n .corePlatformRpcFailoverForceEnabled as boolean | undefined;\n return corePlatformRpcFailoverForceEnabled ?? false;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/network-controller",
3
- "version": "33.0.0-preview-a8fd340",
3
+ "version": "33.0.0-preview-2b5ec3770",
4
4
  "description": "Provides an interface to the currently selected network via a MetaMask-compatible provider object",
5
5
  "keywords": [
6
6
  "Ethereum",