@metamask/network-controller 22.2.1 → 23.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.
- package/CHANGELOG.md +69 -2
- package/dist/NetworkController.cjs +63 -30
- package/dist/NetworkController.cjs.map +1 -1
- package/dist/NetworkController.d.cts +90 -5
- package/dist/NetworkController.d.cts.map +1 -1
- package/dist/NetworkController.d.mts +90 -5
- package/dist/NetworkController.d.mts.map +1 -1
- package/dist/NetworkController.mjs +63 -30
- package/dist/NetworkController.mjs.map +1 -1
- package/dist/create-auto-managed-network-client.cjs +26 -6
- package/dist/create-auto-managed-network-client.cjs.map +1 -1
- package/dist/create-auto-managed-network-client.d.cts +12 -2
- package/dist/create-auto-managed-network-client.d.cts.map +1 -1
- package/dist/create-auto-managed-network-client.d.mts +12 -2
- package/dist/create-auto-managed-network-client.d.mts.map +1 -1
- package/dist/create-auto-managed-network-client.mjs +26 -6
- package/dist/create-auto-managed-network-client.mjs.map +1 -1
- package/dist/create-network-client.cjs +57 -17
- package/dist/create-network-client.cjs.map +1 -1
- package/dist/create-network-client.d.cts +13 -2
- package/dist/create-network-client.d.cts.map +1 -1
- package/dist/create-network-client.d.mts +13 -2
- package/dist/create-network-client.d.mts.map +1 -1
- package/dist/create-network-client.mjs +57 -17
- package/dist/create-network-client.mjs.map +1 -1
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.cjs.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.d.cts +5 -39
- package/dist/rpc-service/abstract-rpc-service.d.cts.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.d.mts +5 -39
- package/dist/rpc-service/abstract-rpc-service.d.mts.map +1 -1
- package/dist/rpc-service/abstract-rpc-service.mjs.map +1 -1
- package/dist/rpc-service/rpc-service-chain.cjs +10 -23
- package/dist/rpc-service/rpc-service-chain.cjs.map +1 -1
- package/dist/rpc-service/rpc-service-chain.d.cts +10 -35
- package/dist/rpc-service/rpc-service-chain.d.cts.map +1 -1
- package/dist/rpc-service/rpc-service-chain.d.mts +10 -35
- package/dist/rpc-service/rpc-service-chain.d.mts.map +1 -1
- package/dist/rpc-service/rpc-service-chain.mjs +10 -23
- package/dist/rpc-service/rpc-service-chain.mjs.map +1 -1
- package/dist/rpc-service/rpc-service-requestable.cjs +3 -0
- package/dist/rpc-service/rpc-service-requestable.cjs.map +1 -0
- package/dist/rpc-service/rpc-service-requestable.d.cts +47 -0
- package/dist/rpc-service/rpc-service-requestable.d.cts.map +1 -0
- package/dist/rpc-service/rpc-service-requestable.d.mts +47 -0
- package/dist/rpc-service/rpc-service-requestable.d.mts.map +1 -0
- package/dist/rpc-service/rpc-service-requestable.mjs +2 -0
- package/dist/rpc-service/rpc-service-requestable.mjs.map +1 -0
- package/dist/rpc-service/rpc-service.cjs +108 -47
- package/dist/rpc-service/rpc-service.cjs.map +1 -1
- package/dist/rpc-service/rpc-service.d.cts +63 -27
- package/dist/rpc-service/rpc-service.d.cts.map +1 -1
- package/dist/rpc-service/rpc-service.d.mts +63 -27
- package/dist/rpc-service/rpc-service.d.mts.map +1 -1
- package/dist/rpc-service/rpc-service.mjs +106 -45
- package/dist/rpc-service/rpc-service.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +11 -6
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +11 -6
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +7 -5
|
@@ -4,45 +4,85 @@ import { createInfuraMiddleware } from "@metamask/eth-json-rpc-infura";
|
|
|
4
4
|
import { createBlockCacheMiddleware, createBlockRefMiddleware, createBlockRefRewriteMiddleware, createBlockTrackerInspectorMiddleware, createInflightCacheMiddleware, createFetchMiddleware, createRetryOnEmptyMiddleware } from "@metamask/eth-json-rpc-middleware";
|
|
5
5
|
import { providerFromEngine, providerFromMiddleware } from "@metamask/eth-json-rpc-provider";
|
|
6
6
|
import { createAsyncMiddleware, createScaffoldMiddleware, JsonRpcEngine, mergeMiddleware } from "@metamask/json-rpc-engine";
|
|
7
|
+
import { RpcServiceChain } from "./rpc-service/rpc-service-chain.mjs";
|
|
7
8
|
import { NetworkClientType } from "./types.mjs";
|
|
8
9
|
const SECOND = 1000;
|
|
9
10
|
/**
|
|
10
11
|
* Create a JSON RPC network client for a specific network.
|
|
11
12
|
*
|
|
12
|
-
* @param
|
|
13
|
+
* @param args - The arguments.
|
|
14
|
+
* @param args.configuration - The network configuration.
|
|
15
|
+
* @param args.getRpcServiceOptions - Factory for constructing RPC service
|
|
16
|
+
* options. See {@link NetworkControllerOptions.getRpcServiceOptions}.
|
|
17
|
+
* @param args.messenger - The network controller messenger.
|
|
18
|
+
* See {@link NetworkControllerOptions.getRpcServiceOptions}.
|
|
13
19
|
* @returns The network client.
|
|
14
20
|
*/
|
|
15
|
-
export function createNetworkClient(
|
|
16
|
-
const
|
|
21
|
+
export function createNetworkClient({ configuration, getRpcServiceOptions, messenger, }) {
|
|
22
|
+
const primaryEndpointUrl = configuration.type === NetworkClientType.Infura
|
|
23
|
+
? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`
|
|
24
|
+
: configuration.rpcUrl;
|
|
25
|
+
const availableEndpointUrls = [
|
|
26
|
+
primaryEndpointUrl,
|
|
27
|
+
...configuration.failoverRpcUrls,
|
|
28
|
+
];
|
|
29
|
+
const rpcService = new RpcServiceChain(availableEndpointUrls.map((endpointUrl) => ({
|
|
30
|
+
...getRpcServiceOptions(endpointUrl),
|
|
31
|
+
endpointUrl,
|
|
32
|
+
})));
|
|
33
|
+
rpcService.onBreak(({ endpointUrl, failoverEndpointUrl, ...rest }) => {
|
|
34
|
+
let error;
|
|
35
|
+
if ('error' in rest) {
|
|
36
|
+
error = rest.error;
|
|
37
|
+
}
|
|
38
|
+
else if ('value' in rest) {
|
|
39
|
+
error = rest.value;
|
|
40
|
+
}
|
|
41
|
+
messenger.publish('NetworkController:rpcEndpointUnavailable', {
|
|
42
|
+
chainId: configuration.chainId,
|
|
43
|
+
endpointUrl,
|
|
44
|
+
failoverEndpointUrl,
|
|
45
|
+
error,
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
rpcService.onDegraded(({ endpointUrl }) => {
|
|
49
|
+
messenger.publish('NetworkController:rpcEndpointDegraded', {
|
|
50
|
+
chainId: configuration.chainId,
|
|
51
|
+
endpointUrl,
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
rpcService.onRetry(({ endpointUrl, attempt }) => {
|
|
55
|
+
messenger.publish('NetworkController:rpcEndpointRequestRetried', {
|
|
56
|
+
endpointUrl,
|
|
57
|
+
attempt,
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
const rpcApiMiddleware = configuration.type === NetworkClientType.Infura
|
|
17
61
|
? createInfuraMiddleware({
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
62
|
+
rpcService,
|
|
63
|
+
options: {
|
|
64
|
+
source: 'metamask',
|
|
65
|
+
},
|
|
22
66
|
})
|
|
23
|
-
: createFetchMiddleware({
|
|
24
|
-
btoa: global.btoa,
|
|
25
|
-
fetch: global.fetch,
|
|
26
|
-
rpcUrl: networkConfig.rpcUrl,
|
|
27
|
-
});
|
|
67
|
+
: createFetchMiddleware({ rpcService });
|
|
28
68
|
const rpcProvider = providerFromMiddleware(rpcApiMiddleware);
|
|
29
|
-
const blockTrackerOpts = process.env.IN_TEST &&
|
|
69
|
+
const blockTrackerOpts = process.env.IN_TEST && configuration.type === NetworkClientType.Custom
|
|
30
70
|
? { pollingInterval: SECOND }
|
|
31
71
|
: {};
|
|
32
72
|
const blockTracker = new PollingBlockTracker({
|
|
33
73
|
...blockTrackerOpts,
|
|
34
74
|
provider: rpcProvider,
|
|
35
75
|
});
|
|
36
|
-
const networkMiddleware =
|
|
76
|
+
const networkMiddleware = configuration.type === NetworkClientType.Infura
|
|
37
77
|
? createInfuraNetworkMiddleware({
|
|
38
78
|
blockTracker,
|
|
39
|
-
network:
|
|
79
|
+
network: configuration.network,
|
|
40
80
|
rpcProvider,
|
|
41
81
|
rpcApiMiddleware,
|
|
42
82
|
})
|
|
43
83
|
: createCustomNetworkMiddleware({
|
|
44
84
|
blockTracker,
|
|
45
|
-
chainId:
|
|
85
|
+
chainId: configuration.chainId,
|
|
46
86
|
rpcApiMiddleware,
|
|
47
87
|
});
|
|
48
88
|
const engine = new JsonRpcEngine();
|
|
@@ -53,7 +93,7 @@ export function createNetworkClient(networkConfig) {
|
|
|
53
93
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
54
94
|
blockTracker.destroy();
|
|
55
95
|
};
|
|
56
|
-
return { configuration
|
|
96
|
+
return { configuration, provider, blockTracker, destroy };
|
|
57
97
|
}
|
|
58
98
|
/**
|
|
59
99
|
* Create middleware for infura.
|
|
@@ -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 type { InfuraNetworkType } from '@metamask/controller-utils';\nimport { ChainId } from '@metamask/controller-utils';\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 type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';\nimport {\n providerFromEngine,\n providerFromMiddleware,\n} from '@metamask/eth-json-rpc-provider';\nimport {\n createAsyncMiddleware,\n createScaffoldMiddleware,\n JsonRpcEngine,\n mergeMiddleware,\n} from '@metamask/json-rpc-engine';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport type { Hex, Json, JsonRpcParams } from '@metamask/utils';\n\nimport type {\n BlockTracker,\n NetworkClientConfiguration,\n Provider,\n} from './types';\nimport { NetworkClientType } from './types';\n\nconst SECOND = 1000;\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\n/**\n * Create a JSON RPC network client for a specific network.\n *\n * @param networkConfig - The network configuration.\n * @returns The network client.\n */\nexport function createNetworkClient(\n networkConfig: NetworkClientConfiguration,\n): NetworkClient {\n const rpcApiMiddleware =\n networkConfig.type === NetworkClientType.Infura\n ? createInfuraMiddleware({\n network: networkConfig.network,\n projectId: networkConfig.infuraProjectId,\n maxAttempts: 5,\n source: 'metamask',\n })\n : createFetchMiddleware({\n btoa: global.btoa,\n fetch: global.fetch,\n rpcUrl: networkConfig.rpcUrl,\n });\n\n const rpcProvider = providerFromMiddleware(rpcApiMiddleware);\n\n const blockTrackerOpts =\n process.env.IN_TEST && networkConfig.type === 'custom'\n ? { pollingInterval: SECOND }\n : {};\n const blockTracker = new PollingBlockTracker({\n ...blockTrackerOpts,\n provider: rpcProvider,\n });\n\n const networkMiddleware =\n networkConfig.type === NetworkClientType.Infura\n ? createInfuraNetworkMiddleware({\n blockTracker,\n network: networkConfig.network,\n rpcProvider,\n rpcApiMiddleware,\n })\n : createCustomNetworkMiddleware({\n blockTracker,\n chainId: networkConfig.chainId,\n rpcApiMiddleware,\n });\n\n const engine = new JsonRpcEngine();\n\n engine.push(networkMiddleware);\n\n const provider = providerFromEngine(engine);\n\n const destroy = () => {\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: networkConfig, provider, blockTracker, destroy };\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: SafeEventEmitterProvider;\n rpcApiMiddleware: JsonRpcMiddleware<JsonRpcParams, Json>;\n}) {\n return mergeMiddleware([\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}\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}) {\n return createScaffoldMiddleware({\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/naming-convention\n eth_chainId: ChainId[network],\n });\n}\n\nconst createChainIdMiddleware = (\n chainId: Hex,\n): JsonRpcMiddleware<JsonRpcParams, Json> => {\n return (req, res, next, end) => {\n if (req.method === 'eth_chainId') {\n res.result = chainId;\n return end();\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: JsonRpcMiddleware<JsonRpcParams, Json>;\n}): JsonRpcMiddleware<JsonRpcParams, Json> {\n const testMiddlewares = process.env.IN_TEST\n ? [createEstimateGasDelayTestMiddleware()]\n : [];\n\n return mergeMiddleware([\n ...testMiddlewares,\n createChainIdMiddleware(chainId),\n createBlockRefRewriteMiddleware({ blockTracker }),\n createBlockCacheMiddleware({ blockTracker }),\n createInflightCacheMiddleware(),\n createBlockTrackerInspectorMiddleware({ blockTracker }),\n rpcApiMiddleware,\n ]);\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() {\n return createAsyncMiddleware(async (req, _, next) => {\n if (req.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 type { InfuraNetworkType } from '@metamask/controller-utils';\nimport { ChainId } from '@metamask/controller-utils';\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 type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';\nimport {\n providerFromEngine,\n providerFromMiddleware,\n} from '@metamask/eth-json-rpc-provider';\nimport {\n createAsyncMiddleware,\n createScaffoldMiddleware,\n JsonRpcEngine,\n mergeMiddleware,\n} from '@metamask/json-rpc-engine';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport type { Hex, Json, JsonRpcParams } from '@metamask/utils';\n\nimport type { NetworkControllerMessenger } from './NetworkController';\nimport type { RpcServiceOptions } 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 * 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\n/**\n * Create a JSON RPC network client for a specific network.\n *\n * @param args - The arguments.\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 * See {@link NetworkControllerOptions.getRpcServiceOptions}.\n * @returns The network client.\n */\nexport function createNetworkClient({\n configuration,\n getRpcServiceOptions,\n messenger,\n}: {\n configuration: NetworkClientConfiguration;\n getRpcServiceOptions: (\n rpcEndpointUrl: string,\n ) => Omit<RpcServiceOptions, 'failoverService' | 'endpointUrl'>;\n messenger: NetworkControllerMessenger;\n}): NetworkClient {\n const primaryEndpointUrl =\n configuration.type === NetworkClientType.Infura\n ? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`\n : configuration.rpcUrl;\n const availableEndpointUrls = [\n primaryEndpointUrl,\n ...configuration.failoverRpcUrls,\n ];\n const rpcService = new RpcServiceChain(\n availableEndpointUrls.map((endpointUrl) => ({\n ...getRpcServiceOptions(endpointUrl),\n endpointUrl,\n })),\n );\n rpcService.onBreak(({ endpointUrl, failoverEndpointUrl, ...rest }) => {\n let error: unknown;\n if ('error' in rest) {\n error = rest.error;\n } else if ('value' in rest) {\n error = rest.value;\n }\n\n messenger.publish('NetworkController:rpcEndpointUnavailable', {\n chainId: configuration.chainId,\n endpointUrl,\n failoverEndpointUrl,\n error,\n });\n });\n rpcService.onDegraded(({ endpointUrl }) => {\n messenger.publish('NetworkController:rpcEndpointDegraded', {\n chainId: configuration.chainId,\n endpointUrl,\n });\n });\n rpcService.onRetry(({ endpointUrl, attempt }) => {\n messenger.publish('NetworkController:rpcEndpointRequestRetried', {\n endpointUrl,\n attempt,\n });\n });\n\n const rpcApiMiddleware =\n configuration.type === NetworkClientType.Infura\n ? createInfuraMiddleware({\n rpcService,\n options: {\n source: 'metamask',\n },\n })\n : createFetchMiddleware({ rpcService });\n\n const rpcProvider = providerFromMiddleware(rpcApiMiddleware);\n\n const blockTrackerOpts =\n process.env.IN_TEST && configuration.type === NetworkClientType.Custom\n ? { pollingInterval: SECOND }\n : {};\n const blockTracker = new PollingBlockTracker({\n ...blockTrackerOpts,\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 engine = new JsonRpcEngine();\n\n engine.push(networkMiddleware);\n\n const provider = providerFromEngine(engine);\n\n const destroy = () => {\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 * 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: SafeEventEmitterProvider;\n rpcApiMiddleware: JsonRpcMiddleware<JsonRpcParams, Json>;\n}) {\n return mergeMiddleware([\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}\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}) {\n return createScaffoldMiddleware({\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/naming-convention\n eth_chainId: ChainId[network],\n });\n}\n\nconst createChainIdMiddleware = (\n chainId: Hex,\n): JsonRpcMiddleware<JsonRpcParams, Json> => {\n return (req, res, next, end) => {\n if (req.method === 'eth_chainId') {\n res.result = chainId;\n return end();\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: JsonRpcMiddleware<JsonRpcParams, Json>;\n}): JsonRpcMiddleware<JsonRpcParams, Json> {\n const testMiddlewares = process.env.IN_TEST\n ? [createEstimateGasDelayTestMiddleware()]\n : [];\n\n return mergeMiddleware([\n ...testMiddlewares,\n createChainIdMiddleware(chainId),\n createBlockRefRewriteMiddleware({ blockTracker }),\n createBlockCacheMiddleware({ blockTracker }),\n createInflightCacheMiddleware(),\n createBlockTrackerInspectorMiddleware({ blockTracker }),\n rpcApiMiddleware,\n ]);\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() {\n return createAsyncMiddleware(async (req, _, next) => {\n if (req.method === 'eth_estimateGas') {\n await new Promise((resolve) => setTimeout(resolve, SECOND * 2));\n }\n return next();\n });\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.NetworkClientType = exports.RpcEndpointType = exports.NetworkController = exports.knownKeysOf = exports.selectAvailableNetworkClientIds = exports.getDefaultNetworkControllerState = void 0;
|
|
17
|
+
exports.isConnectionError = exports.NetworkClientType = exports.RpcEndpointType = exports.NetworkController = exports.knownKeysOf = exports.selectAvailableNetworkClientIds = exports.getDefaultNetworkControllerState = void 0;
|
|
18
18
|
var NetworkController_1 = require("./NetworkController.cjs");
|
|
19
19
|
Object.defineProperty(exports, "getDefaultNetworkControllerState", { enumerable: true, get: function () { return NetworkController_1.getDefaultNetworkControllerState; } });
|
|
20
20
|
Object.defineProperty(exports, "selectAvailableNetworkClientIds", { enumerable: true, get: function () { return NetworkController_1.selectAvailableNetworkClientIds; } });
|
|
@@ -24,4 +24,6 @@ Object.defineProperty(exports, "RpcEndpointType", { enumerable: true, get: funct
|
|
|
24
24
|
__exportStar(require("./constants.cjs"), exports);
|
|
25
25
|
var types_1 = require("./types.cjs");
|
|
26
26
|
Object.defineProperty(exports, "NetworkClientType", { enumerable: true, get: function () { return types_1.NetworkClientType; } });
|
|
27
|
+
var rpc_service_1 = require("./rpc-service/rpc-service.cjs");
|
|
28
|
+
Object.defineProperty(exports, "isConnectionError", { enumerable: true, get: function () { return rpc_service_1.isConnectionError; } });
|
|
27
29
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAyCA,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;AAI1B,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 AddNetworkFields,\n UpdateNetworkFields,\n NetworkControllerStateChangeEvent,\n NetworkControllerNetworkWillChangeEvent,\n NetworkControllerNetworkDidChangeEvent,\n NetworkControllerInfuraIsBlockedEvent,\n NetworkControllerInfuraIsUnblockedEvent,\n NetworkControllerNetworkAddedEvent,\n NetworkControllerNetworkRemovedEvent,\n NetworkControllerEvents,\n NetworkControllerGetStateAction,\n NetworkControllerGetEthQueryAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetEIP1559CompatibilityAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerSetProviderTypeAction,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerAddNetworkAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerUpdateNetworkAction,\n NetworkControllerGetNetworkConfigurationByNetworkClientId,\n NetworkControllerActions,\n NetworkControllerMessenger,\n NetworkControllerOptions,\n NetworkControllerRpcEndpointUnavailableEvent,\n NetworkControllerRpcEndpointDegradedEvent,\n NetworkControllerRpcEndpointRequestRetriedEvent,\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 { isConnectionError } from './rpc-service/rpc-service';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { AutoManagedNetworkClient } from "./create-auto-managed-network-client.cjs";
|
|
2
|
-
export type { Block, NetworkMetadata, NetworkConfiguration, BuiltInNetworkClientId, CustomNetworkClientId, NetworkClientId, NetworksMetadata, NetworkState, BlockTrackerProxy, ProviderProxy, AddNetworkFields, UpdateNetworkFields, NetworkControllerStateChangeEvent, NetworkControllerNetworkWillChangeEvent, NetworkControllerNetworkDidChangeEvent, NetworkControllerInfuraIsBlockedEvent, NetworkControllerInfuraIsUnblockedEvent, NetworkControllerNetworkAddedEvent, NetworkControllerNetworkRemovedEvent, NetworkControllerEvents, NetworkControllerGetStateAction, NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerGetNetworkConfigurationByNetworkClientId, NetworkControllerActions, NetworkControllerMessenger, NetworkControllerOptions, } from "./NetworkController.cjs";
|
|
2
|
+
export type { Block, NetworkMetadata, NetworkConfiguration, BuiltInNetworkClientId, CustomNetworkClientId, NetworkClientId, NetworksMetadata, NetworkState, BlockTrackerProxy, ProviderProxy, AddNetworkFields, UpdateNetworkFields, NetworkControllerStateChangeEvent, NetworkControllerNetworkWillChangeEvent, NetworkControllerNetworkDidChangeEvent, NetworkControllerInfuraIsBlockedEvent, NetworkControllerInfuraIsUnblockedEvent, NetworkControllerNetworkAddedEvent, NetworkControllerNetworkRemovedEvent, NetworkControllerEvents, NetworkControllerGetStateAction, NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerGetNetworkConfigurationByNetworkClientId, NetworkControllerActions, NetworkControllerMessenger, NetworkControllerOptions, NetworkControllerRpcEndpointUnavailableEvent, NetworkControllerRpcEndpointDegradedEvent, NetworkControllerRpcEndpointRequestRetriedEvent, } from "./NetworkController.cjs";
|
|
3
3
|
export { getDefaultNetworkControllerState, selectAvailableNetworkClientIds, knownKeysOf, NetworkController, RpcEndpointType, } from "./NetworkController.cjs";
|
|
4
4
|
export * from "./constants.cjs";
|
|
5
5
|
export type { BlockTracker, Provider } from "./types.cjs";
|
|
@@ -7,4 +7,6 @@ export type { NetworkClientConfiguration, InfuraNetworkClientConfiguration, Cust
|
|
|
7
7
|
export { NetworkClientType } from "./types.cjs";
|
|
8
8
|
export type { NetworkClient } from "./create-network-client.cjs";
|
|
9
9
|
export type { AbstractRpcService } from "./rpc-service/abstract-rpc-service.cjs";
|
|
10
|
+
export type { RpcServiceRequestable } from "./rpc-service/rpc-service-requestable.cjs";
|
|
11
|
+
export { isConnectionError } from "./rpc-service/rpc-service.cjs";
|
|
10
12
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -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,gBAAgB,EAChB,mBAAmB,EACnB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,yDAAyD,EACzD,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,
|
|
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,gBAAgB,EAChB,mBAAmB,EACnB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,yDAAyD,EACzD,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,4CAA4C,EAC5C,yCAAyC,EACzC,+CAA+C,GAChD,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,OAAO,EAAE,iBAAiB,EAAE,sCAAkC"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { AutoManagedNetworkClient } from "./create-auto-managed-network-client.mjs";
|
|
2
|
-
export type { Block, NetworkMetadata, NetworkConfiguration, BuiltInNetworkClientId, CustomNetworkClientId, NetworkClientId, NetworksMetadata, NetworkState, BlockTrackerProxy, ProviderProxy, AddNetworkFields, UpdateNetworkFields, NetworkControllerStateChangeEvent, NetworkControllerNetworkWillChangeEvent, NetworkControllerNetworkDidChangeEvent, NetworkControllerInfuraIsBlockedEvent, NetworkControllerInfuraIsUnblockedEvent, NetworkControllerNetworkAddedEvent, NetworkControllerNetworkRemovedEvent, NetworkControllerEvents, NetworkControllerGetStateAction, NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerGetNetworkConfigurationByNetworkClientId, NetworkControllerActions, NetworkControllerMessenger, NetworkControllerOptions, } from "./NetworkController.mjs";
|
|
2
|
+
export type { Block, NetworkMetadata, NetworkConfiguration, BuiltInNetworkClientId, CustomNetworkClientId, NetworkClientId, NetworksMetadata, NetworkState, BlockTrackerProxy, ProviderProxy, AddNetworkFields, UpdateNetworkFields, NetworkControllerStateChangeEvent, NetworkControllerNetworkWillChangeEvent, NetworkControllerNetworkDidChangeEvent, NetworkControllerInfuraIsBlockedEvent, NetworkControllerInfuraIsUnblockedEvent, NetworkControllerNetworkAddedEvent, NetworkControllerNetworkRemovedEvent, NetworkControllerEvents, NetworkControllerGetStateAction, NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerGetNetworkConfigurationByNetworkClientId, NetworkControllerActions, NetworkControllerMessenger, NetworkControllerOptions, NetworkControllerRpcEndpointUnavailableEvent, NetworkControllerRpcEndpointDegradedEvent, NetworkControllerRpcEndpointRequestRetriedEvent, } from "./NetworkController.mjs";
|
|
3
3
|
export { getDefaultNetworkControllerState, selectAvailableNetworkClientIds, knownKeysOf, NetworkController, RpcEndpointType, } from "./NetworkController.mjs";
|
|
4
4
|
export * from "./constants.mjs";
|
|
5
5
|
export type { BlockTracker, Provider } from "./types.mjs";
|
|
@@ -7,4 +7,6 @@ export type { NetworkClientConfiguration, InfuraNetworkClientConfiguration, Cust
|
|
|
7
7
|
export { NetworkClientType } from "./types.mjs";
|
|
8
8
|
export type { NetworkClient } from "./create-network-client.mjs";
|
|
9
9
|
export type { AbstractRpcService } from "./rpc-service/abstract-rpc-service.mjs";
|
|
10
|
+
export type { RpcServiceRequestable } from "./rpc-service/rpc-service-requestable.mjs";
|
|
11
|
+
export { isConnectionError } from "./rpc-service/rpc-service.mjs";
|
|
10
12
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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,gBAAgB,EAChB,mBAAmB,EACnB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,yDAAyD,EACzD,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,
|
|
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,gBAAgB,EAChB,mBAAmB,EACnB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,yDAAyD,EACzD,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,4CAA4C,EAC5C,yCAAyC,EACzC,+CAA+C,GAChD,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,OAAO,EAAE,iBAAiB,EAAE,sCAAkC"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { getDefaultNetworkControllerState, selectAvailableNetworkClientIds, knownKeysOf, NetworkController, RpcEndpointType } from "./NetworkController.mjs";
|
|
2
2
|
export * from "./constants.mjs";
|
|
3
3
|
export { NetworkClientType } from "./types.mjs";
|
|
4
|
+
export { isConnectionError } from "./rpc-service/rpc-service.mjs";
|
|
4
5
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyCA,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,EAChB,gCAA4B;AAC7B,gCAA4B;AAO5B,OAAO,EAAE,iBAAiB,EAAE,oBAAgB;AAI5C,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 AddNetworkFields,\n UpdateNetworkFields,\n NetworkControllerStateChangeEvent,\n NetworkControllerNetworkWillChangeEvent,\n NetworkControllerNetworkDidChangeEvent,\n NetworkControllerInfuraIsBlockedEvent,\n NetworkControllerInfuraIsUnblockedEvent,\n NetworkControllerNetworkAddedEvent,\n NetworkControllerNetworkRemovedEvent,\n NetworkControllerEvents,\n NetworkControllerGetStateAction,\n NetworkControllerGetEthQueryAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetEIP1559CompatibilityAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerSetProviderTypeAction,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerAddNetworkAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerUpdateNetworkAction,\n NetworkControllerGetNetworkConfigurationByNetworkClientId,\n NetworkControllerActions,\n NetworkControllerMessenger,\n NetworkControllerOptions,\n NetworkControllerRpcEndpointUnavailableEvent,\n NetworkControllerRpcEndpointDegradedEvent,\n NetworkControllerRpcEndpointRequestRetriedEvent,\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 { isConnectionError } from './rpc-service/rpc-service';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-rpc-service.cjs","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"","sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"abstract-rpc-service.cjs","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"","sourcesContent":["import type { RpcServiceRequestable } from './rpc-service-requestable';\n\n/**\n * The interface for a service class responsible for making a request to an RPC\n * endpoint or a group of RPC endpoints.\n */\nexport type AbstractRpcService = RpcServiceRequestable & {\n /**\n * The URL of the RPC endpoint.\n */\n endpointUrl: URL;\n};\n"]}
|
|
@@ -1,46 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Json, JsonRpcParams, JsonRpcRequest, JsonRpcResponse } from "@metamask/utils";
|
|
3
|
-
import type { AddToCockatielEventData, FetchOptions } from "./shared.cjs";
|
|
1
|
+
import type { RpcServiceRequestable } from "./rpc-service-requestable.cjs";
|
|
4
2
|
/**
|
|
5
3
|
* The interface for a service class responsible for making a request to an RPC
|
|
6
|
-
* endpoint.
|
|
4
|
+
* endpoint or a group of RPC endpoints.
|
|
7
5
|
*/
|
|
8
|
-
export type AbstractRpcService = {
|
|
6
|
+
export type AbstractRpcService = RpcServiceRequestable & {
|
|
9
7
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @param listener - The callback to be called when the retry occurs.
|
|
13
|
-
* @returns What {@link ServicePolicy.onRetry} returns.
|
|
14
|
-
* @see {@link createServicePolicy}
|
|
8
|
+
* The URL of the RPC endpoint.
|
|
15
9
|
*/
|
|
16
|
-
|
|
17
|
-
endpointUrl: string;
|
|
18
|
-
}>): ReturnType<ServicePolicy['onRetry']>;
|
|
19
|
-
/**
|
|
20
|
-
* Listens for when the RPC service retries the request too many times in a
|
|
21
|
-
* row.
|
|
22
|
-
*
|
|
23
|
-
* @param listener - The callback to be called when the circuit is broken.
|
|
24
|
-
* @returns What {@link ServicePolicy.onBreak} returns.
|
|
25
|
-
* @see {@link createServicePolicy}
|
|
26
|
-
*/
|
|
27
|
-
onBreak(listener: AddToCockatielEventData<Parameters<ServicePolicy['onBreak']>[0], {
|
|
28
|
-
endpointUrl: string;
|
|
29
|
-
}>): ReturnType<ServicePolicy['onBreak']>;
|
|
30
|
-
/**
|
|
31
|
-
* Listens for when the policy underlying this RPC service detects a slow
|
|
32
|
-
* request.
|
|
33
|
-
*
|
|
34
|
-
* @param listener - The callback to be called when the request is slow.
|
|
35
|
-
* @returns What {@link ServicePolicy.onDegraded} returns.
|
|
36
|
-
* @see {@link createServicePolicy}
|
|
37
|
-
*/
|
|
38
|
-
onDegraded(listener: AddToCockatielEventData<Parameters<ServicePolicy['onDegraded']>[0], {
|
|
39
|
-
endpointUrl: string;
|
|
40
|
-
}>): ReturnType<ServicePolicy['onDegraded']>;
|
|
41
|
-
/**
|
|
42
|
-
* Makes a request to the RPC endpoint.
|
|
43
|
-
*/
|
|
44
|
-
request<Params extends JsonRpcParams, Result extends Json>(jsonRpcRequest: JsonRpcRequest<Params>, fetchOptions?: FetchOptions): Promise<JsonRpcResponse<Result | null>>;
|
|
10
|
+
endpointUrl: URL;
|
|
45
11
|
};
|
|
46
12
|
//# sourceMappingURL=abstract-rpc-service.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-rpc-service.d.cts","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"abstract-rpc-service.d.cts","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAkC;AAEvE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG;IACvD;;OAEG;IACH,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC"}
|
|
@@ -1,46 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Json, JsonRpcParams, JsonRpcRequest, JsonRpcResponse } from "@metamask/utils";
|
|
3
|
-
import type { AddToCockatielEventData, FetchOptions } from "./shared.mjs";
|
|
1
|
+
import type { RpcServiceRequestable } from "./rpc-service-requestable.mjs";
|
|
4
2
|
/**
|
|
5
3
|
* The interface for a service class responsible for making a request to an RPC
|
|
6
|
-
* endpoint.
|
|
4
|
+
* endpoint or a group of RPC endpoints.
|
|
7
5
|
*/
|
|
8
|
-
export type AbstractRpcService = {
|
|
6
|
+
export type AbstractRpcService = RpcServiceRequestable & {
|
|
9
7
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* @param listener - The callback to be called when the retry occurs.
|
|
13
|
-
* @returns What {@link ServicePolicy.onRetry} returns.
|
|
14
|
-
* @see {@link createServicePolicy}
|
|
8
|
+
* The URL of the RPC endpoint.
|
|
15
9
|
*/
|
|
16
|
-
|
|
17
|
-
endpointUrl: string;
|
|
18
|
-
}>): ReturnType<ServicePolicy['onRetry']>;
|
|
19
|
-
/**
|
|
20
|
-
* Listens for when the RPC service retries the request too many times in a
|
|
21
|
-
* row.
|
|
22
|
-
*
|
|
23
|
-
* @param listener - The callback to be called when the circuit is broken.
|
|
24
|
-
* @returns What {@link ServicePolicy.onBreak} returns.
|
|
25
|
-
* @see {@link createServicePolicy}
|
|
26
|
-
*/
|
|
27
|
-
onBreak(listener: AddToCockatielEventData<Parameters<ServicePolicy['onBreak']>[0], {
|
|
28
|
-
endpointUrl: string;
|
|
29
|
-
}>): ReturnType<ServicePolicy['onBreak']>;
|
|
30
|
-
/**
|
|
31
|
-
* Listens for when the policy underlying this RPC service detects a slow
|
|
32
|
-
* request.
|
|
33
|
-
*
|
|
34
|
-
* @param listener - The callback to be called when the request is slow.
|
|
35
|
-
* @returns What {@link ServicePolicy.onDegraded} returns.
|
|
36
|
-
* @see {@link createServicePolicy}
|
|
37
|
-
*/
|
|
38
|
-
onDegraded(listener: AddToCockatielEventData<Parameters<ServicePolicy['onDegraded']>[0], {
|
|
39
|
-
endpointUrl: string;
|
|
40
|
-
}>): ReturnType<ServicePolicy['onDegraded']>;
|
|
41
|
-
/**
|
|
42
|
-
* Makes a request to the RPC endpoint.
|
|
43
|
-
*/
|
|
44
|
-
request<Params extends JsonRpcParams, Result extends Json>(jsonRpcRequest: JsonRpcRequest<Params>, fetchOptions?: FetchOptions): Promise<JsonRpcResponse<Result | null>>;
|
|
10
|
+
endpointUrl: URL;
|
|
45
11
|
};
|
|
46
12
|
//# sourceMappingURL=abstract-rpc-service.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-rpc-service.d.mts","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"abstract-rpc-service.d.mts","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAkC;AAEvE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG;IACvD;;OAEG;IACH,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-rpc-service.mjs","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"","sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"abstract-rpc-service.mjs","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"","sourcesContent":["import type { RpcServiceRequestable } from './rpc-service-requestable';\n\n/**\n * The interface for a service class responsible for making a request to an RPC\n * endpoint or a group of RPC endpoints.\n */\nexport type AbstractRpcService = RpcServiceRequestable & {\n /**\n * The URL of the RPC endpoint.\n */\n endpointUrl: URL;\n};\n"]}
|
|
@@ -16,33 +16,22 @@ exports.RpcServiceChain = void 0;
|
|
|
16
16
|
const rpc_service_1 = require("./rpc-service.cjs");
|
|
17
17
|
/**
|
|
18
18
|
* This class constructs a chain of RpcService objects which represent a
|
|
19
|
-
* particular network. The first object in the chain is intended to be the
|
|
20
|
-
* way of reaching the network and the remaining objects are used as
|
|
19
|
+
* particular network. The first object in the chain is intended to be the
|
|
20
|
+
* primary way of reaching the network and the remaining objects are used as
|
|
21
|
+
* failovers.
|
|
21
22
|
*/
|
|
22
23
|
class RpcServiceChain {
|
|
23
24
|
/**
|
|
24
25
|
* Constructs a new RpcServiceChain object.
|
|
25
26
|
*
|
|
26
|
-
* @param
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* want to pass that; otherwise you can pass an equivalent (such as `fetch`
|
|
30
|
-
* via `node-fetch`).
|
|
31
|
-
* @param args.btoa - A function that can be used to convert a binary string
|
|
32
|
-
* into base-64. Used to encode authorization credentials.
|
|
33
|
-
* @param args.serviceConfigurations - The options for the RPC services that
|
|
34
|
-
* you want to construct. This class takes a set of configuration objects and
|
|
35
|
-
* not literal `RpcService`s to account for the possibility that we may want
|
|
36
|
-
* to send request headers to official Infura endpoints and not failovers.
|
|
27
|
+
* @param rpcServiceConfigurations - The options for the RPC services
|
|
28
|
+
* that you want to construct. Each object in this array is the same as
|
|
29
|
+
* {@link RpcServiceOptions}.
|
|
37
30
|
*/
|
|
38
|
-
constructor(
|
|
31
|
+
constructor(rpcServiceConfigurations) {
|
|
39
32
|
_RpcServiceChain_instances.add(this);
|
|
40
33
|
_RpcServiceChain_services.set(this, void 0);
|
|
41
|
-
__classPrivateFieldSet(this, _RpcServiceChain_services, __classPrivateFieldGet(this, _RpcServiceChain_instances, "m", _RpcServiceChain_buildRpcServiceChain).call(this,
|
|
42
|
-
serviceConfigurations,
|
|
43
|
-
fetch: givenFetch,
|
|
44
|
-
btoa: givenBtoa,
|
|
45
|
-
}), "f");
|
|
34
|
+
__classPrivateFieldSet(this, _RpcServiceChain_services, __classPrivateFieldGet(this, _RpcServiceChain_instances, "m", _RpcServiceChain_buildRpcServiceChain).call(this, rpcServiceConfigurations), "f");
|
|
46
35
|
}
|
|
47
36
|
/**
|
|
48
37
|
* Listens for when any of the RPC services retry a request.
|
|
@@ -92,14 +81,12 @@ class RpcServiceChain {
|
|
|
92
81
|
}
|
|
93
82
|
}
|
|
94
83
|
exports.RpcServiceChain = RpcServiceChain;
|
|
95
|
-
_RpcServiceChain_services = new WeakMap(), _RpcServiceChain_instances = new WeakSet(), _RpcServiceChain_buildRpcServiceChain = function _RpcServiceChain_buildRpcServiceChain(
|
|
96
|
-
return [...
|
|
84
|
+
_RpcServiceChain_services = new WeakMap(), _RpcServiceChain_instances = new WeakSet(), _RpcServiceChain_buildRpcServiceChain = function _RpcServiceChain_buildRpcServiceChain(rpcServiceConfigurations) {
|
|
85
|
+
return [...rpcServiceConfigurations]
|
|
97
86
|
.reverse()
|
|
98
87
|
.reduce((workingServices, serviceConfiguration, index) => {
|
|
99
88
|
const failoverService = index > 0 ? workingServices[0] : undefined;
|
|
100
89
|
const service = new rpc_service_1.RpcService({
|
|
101
|
-
fetch: givenFetch,
|
|
102
|
-
btoa: givenBtoa,
|
|
103
90
|
...serviceConfiguration,
|
|
104
91
|
failoverService,
|
|
105
92
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-service-chain.cjs","sourceRoot":"","sources":["../../src/rpc-service/rpc-service-chain.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"rpc-service-chain.cjs","sourceRoot":"","sources":["../../src/rpc-service/rpc-service-chain.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAOA,mDAA2C;AAK3C;;;;;GAKG;AACH,MAAa,eAAe;IAG1B;;;;;;OAMG;IACH,YACE,wBAAsE;;QAV/D,4CAAwB;QAY/B,uBAAA,IAAI,6BAAa,uBAAA,IAAI,yEAAsB,MAA1B,IAAI,EAAuB,wBAAwB,CAAC,MAAA,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,QAA8C;QACpD,MAAM,WAAW,GAAG,uBAAA,IAAI,iCAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACjD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC1B,CAAC;QAEF,OAAO;YACL,OAAO;gBACL,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,QAA8C;QACpD,MAAM,WAAW,GAAG,uBAAA,IAAI,iCAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACjD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC1B,CAAC;QAEF,OAAO;YACL,OAAO;gBACL,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,QAAiD;QAC1D,MAAM,WAAW,GAAG,uBAAA,IAAI,iCAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACjD,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAC7B,CAAC;QAEF,OAAO;YACL,OAAO;gBACL,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;SACF,CAAC;IACJ,CAAC;IAgDD,KAAK,CAAC,OAAO,CACX,cAAsC,EACtC,eAA6B,EAAE;QAE/B,OAAO,uBAAA,IAAI,iCAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;CA0BF;AApJD,0CAoJC;8KAbG,wBAAsE;IAEtE,OAAO,CAAC,GAAG,wBAAwB,CAAC;SACjC,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,eAA6B,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE;QACrE,MAAM,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,wBAAU,CAAC;YAC7B,GAAG,oBAAoB;YACvB,eAAe;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["import type {\n Json,\n JsonRpcParams,\n JsonRpcRequest,\n JsonRpcResponse,\n} from '@metamask/utils';\n\nimport { RpcService } from './rpc-service';\nimport type { RpcServiceOptions } from './rpc-service';\nimport type { RpcServiceRequestable } from './rpc-service-requestable';\nimport type { FetchOptions } from './shared';\n\n/**\n * This class constructs a chain of RpcService objects which represent a\n * particular network. The first object in the chain is intended to be the\n * primary way of reaching the network and the remaining objects are used as\n * failovers.\n */\nexport class RpcServiceChain implements RpcServiceRequestable {\n readonly #services: RpcService[];\n\n /**\n * Constructs a new RpcServiceChain object.\n *\n * @param rpcServiceConfigurations - The options for the RPC services\n * that you want to construct. Each object in this array is the same as\n * {@link RpcServiceOptions}.\n */\n constructor(\n rpcServiceConfigurations: Omit<RpcServiceOptions, 'failoverService'>[],\n ) {\n this.#services = this.#buildRpcServiceChain(rpcServiceConfigurations);\n }\n\n /**\n * Listens for when any of the RPC services retry a request.\n *\n * @param listener - The callback to be called when the retry occurs.\n * @returns What {@link RpcService.onRetry} returns.\n */\n onRetry(listener: Parameters<RpcService['onRetry']>[0]) {\n const disposables = this.#services.map((service) =>\n service.onRetry(listener),\n );\n\n return {\n dispose() {\n disposables.forEach((disposable) => disposable.dispose());\n },\n };\n }\n\n /**\n * Listens for when any of the RPC services retry the request too many times\n * in a row.\n *\n * @param listener - The callback to be called when the retry occurs.\n * @returns What {@link RpcService.onBreak} returns.\n */\n onBreak(listener: Parameters<RpcService['onBreak']>[0]) {\n const disposables = this.#services.map((service) =>\n service.onBreak(listener),\n );\n\n return {\n dispose() {\n disposables.forEach((disposable) => disposable.dispose());\n },\n };\n }\n\n /**\n * Listens for when any of the RPC services send a slow request.\n *\n * @param listener - The callback to be called when the retry occurs.\n * @returns What {@link RpcService.onRetry} returns.\n */\n onDegraded(listener: Parameters<RpcService['onDegraded']>[0]) {\n const disposables = this.#services.map((service) =>\n service.onDegraded(listener),\n );\n\n return {\n dispose() {\n disposables.forEach((disposable) => disposable.dispose());\n },\n };\n }\n\n /**\n * Makes a request to the first RPC service in the chain. If this service is\n * down, then the request is forwarded to the next service in the chain, etc.\n *\n * This overload is specifically designed for `eth_getBlockByNumber`, which\n * can return a `result` of `null` despite an expected `Result` being\n * provided.\n *\n * @param jsonRpcRequest - The JSON-RPC request to send to the endpoint.\n * @param fetchOptions - An options bag for {@link fetch} which further\n * specifies the request.\n * @returns The decoded JSON-RPC response from the endpoint.\n * @throws A \"method not found\" error if the response status is 405.\n * @throws A rate limiting error if the response HTTP status is 429.\n * @throws A timeout error if the response HTTP status is 503 or 504.\n * @throws A generic error if the response HTTP status is not 2xx but also not\n * 405, 429, 503, or 504.\n */\n async request<Params extends JsonRpcParams, Result extends Json>(\n jsonRpcRequest: JsonRpcRequest<Params> & { method: 'eth_getBlockByNumber' },\n fetchOptions?: FetchOptions,\n ): Promise<JsonRpcResponse<Result> | JsonRpcResponse<null>>;\n\n /**\n * Makes a request to the first RPC service in the chain. If this service is\n * down, then the request is forwarded to the next service in the chain, etc.\n *\n * This overload is designed for all RPC methods except for\n * `eth_getBlockByNumber`, which are expected to return a `result` of the\n * expected `Result`.\n *\n * @param jsonRpcRequest - The JSON-RPC request to send to the endpoint.\n * @param fetchOptions - An options bag for {@link fetch} which further\n * specifies the request.\n * @returns The decoded JSON-RPC response from the endpoint.\n * @throws A \"method not found\" error if the response status is 405.\n * @throws A rate limiting error if the response HTTP status is 429.\n * @throws A timeout error if the response HTTP status is 503 or 504.\n * @throws A generic error if the response HTTP status is not 2xx but also not\n * 405, 429, 503, or 504.\n */\n async request<Params extends JsonRpcParams, Result extends Json>(\n jsonRpcRequest: JsonRpcRequest<Params>,\n fetchOptions?: FetchOptions,\n ): Promise<JsonRpcResponse<Result>>;\n\n async request<Params extends JsonRpcParams, Result extends Json>(\n jsonRpcRequest: JsonRpcRequest<Params>,\n fetchOptions: FetchOptions = {},\n ): Promise<JsonRpcResponse<Result | null>> {\n return this.#services[0].request(jsonRpcRequest, fetchOptions);\n }\n\n /**\n * Constructs the chain of RPC services. The second RPC service is\n * configured as the failover for the first, the third service is\n * configured as the failover for the second, etc.\n *\n * @param rpcServiceConfigurations - The options for the RPC services that\n * you want to construct. Each object in this array is the same as\n * {@link RpcServiceOptions}.\n * @returns The constructed chain of RPC services.\n */\n #buildRpcServiceChain(\n rpcServiceConfigurations: Omit<RpcServiceOptions, 'failoverService'>[],\n ): RpcService[] {\n return [...rpcServiceConfigurations]\n .reverse()\n .reduce((workingServices: RpcService[], serviceConfiguration, index) => {\n const failoverService = index > 0 ? workingServices[0] : undefined;\n const service = new RpcService({\n ...serviceConfiguration,\n failoverService,\n });\n return [service, ...workingServices];\n }, []);\n }\n}\n"]}
|
|
@@ -1,48 +1,24 @@
|
|
|
1
1
|
import type { Json, JsonRpcParams, JsonRpcRequest, JsonRpcResponse } from "@metamask/utils";
|
|
2
|
-
import type { AbstractRpcService } from "./abstract-rpc-service.cjs";
|
|
3
2
|
import { RpcService } from "./rpc-service.cjs";
|
|
3
|
+
import type { RpcServiceOptions } from "./rpc-service.cjs";
|
|
4
|
+
import type { RpcServiceRequestable } from "./rpc-service-requestable.cjs";
|
|
4
5
|
import type { FetchOptions } from "./shared.cjs";
|
|
5
|
-
/**
|
|
6
|
-
* The subset of options accepted by the RpcServiceChain constructor which
|
|
7
|
-
* represent a single endpoint.
|
|
8
|
-
*/
|
|
9
|
-
type RpcServiceConfiguration = {
|
|
10
|
-
/**
|
|
11
|
-
* The URL of the endpoint.
|
|
12
|
-
*/
|
|
13
|
-
endpointUrl: URL | string;
|
|
14
|
-
/**
|
|
15
|
-
* The options to pass to `fetch` when making the request to the endpoint.
|
|
16
|
-
*/
|
|
17
|
-
fetchOptions?: FetchOptions;
|
|
18
|
-
};
|
|
19
6
|
/**
|
|
20
7
|
* This class constructs a chain of RpcService objects which represent a
|
|
21
|
-
* particular network. The first object in the chain is intended to be the
|
|
22
|
-
* way of reaching the network and the remaining objects are used as
|
|
8
|
+
* particular network. The first object in the chain is intended to be the
|
|
9
|
+
* primary way of reaching the network and the remaining objects are used as
|
|
10
|
+
* failovers.
|
|
23
11
|
*/
|
|
24
|
-
export declare class RpcServiceChain implements
|
|
12
|
+
export declare class RpcServiceChain implements RpcServiceRequestable {
|
|
25
13
|
#private;
|
|
26
14
|
/**
|
|
27
15
|
* Constructs a new RpcServiceChain object.
|
|
28
16
|
*
|
|
29
|
-
* @param
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* want to pass that; otherwise you can pass an equivalent (such as `fetch`
|
|
33
|
-
* via `node-fetch`).
|
|
34
|
-
* @param args.btoa - A function that can be used to convert a binary string
|
|
35
|
-
* into base-64. Used to encode authorization credentials.
|
|
36
|
-
* @param args.serviceConfigurations - The options for the RPC services that
|
|
37
|
-
* you want to construct. This class takes a set of configuration objects and
|
|
38
|
-
* not literal `RpcService`s to account for the possibility that we may want
|
|
39
|
-
* to send request headers to official Infura endpoints and not failovers.
|
|
17
|
+
* @param rpcServiceConfigurations - The options for the RPC services
|
|
18
|
+
* that you want to construct. Each object in this array is the same as
|
|
19
|
+
* {@link RpcServiceOptions}.
|
|
40
20
|
*/
|
|
41
|
-
constructor(
|
|
42
|
-
fetch: typeof fetch;
|
|
43
|
-
btoa: typeof btoa;
|
|
44
|
-
serviceConfigurations: RpcServiceConfiguration[];
|
|
45
|
-
});
|
|
21
|
+
constructor(rpcServiceConfigurations: Omit<RpcServiceOptions, 'failoverService'>[]);
|
|
46
22
|
/**
|
|
47
23
|
* Listens for when any of the RPC services retry a request.
|
|
48
24
|
*
|
|
@@ -112,5 +88,4 @@ export declare class RpcServiceChain implements AbstractRpcService {
|
|
|
112
88
|
*/
|
|
113
89
|
request<Params extends JsonRpcParams, Result extends Json>(jsonRpcRequest: JsonRpcRequest<Params>, fetchOptions?: FetchOptions): Promise<JsonRpcResponse<Result>>;
|
|
114
90
|
}
|
|
115
|
-
export {};
|
|
116
91
|
//# sourceMappingURL=rpc-service-chain.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-service-chain.d.cts","sourceRoot":"","sources":["../../src/rpc-service/rpc-service-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,cAAc,EACd,eAAe,EAChB,wBAAwB;AAEzB,OAAO,
|
|
1
|
+
{"version":3,"file":"rpc-service-chain.d.cts","sourceRoot":"","sources":["../../src/rpc-service/rpc-service-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,cAAc,EACd,eAAe,EAChB,wBAAwB;AAEzB,OAAO,EAAE,UAAU,EAAE,0BAAsB;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,0BAAsB;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAkC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAiB;AAE7C;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,qBAAqB;;IAG3D;;;;;;OAMG;gBAED,wBAAwB,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE;IAKxE;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;;;IAYtD;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;;;IAYtD;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;;;IAY5D;;;;;;;;;;;;;;;;;OAiBG;IACG,OAAO,CAAC,MAAM,SAAS,aAAa,EAAE,MAAM,SAAS,IAAI,EAC7D,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG;QAAE,MAAM,EAAE,sBAAsB,CAAA;KAAE,EAC3E,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAE3D;;;;;;;;;;;;;;;;;OAiBG;IACG,OAAO,CAAC,MAAM,SAAS,aAAa,EAAE,MAAM,SAAS,IAAI,EAC7D,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,EACtC,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;CAiCpC"}
|