@metamask-previews/network-controller 22.2.1-preview-52c28555 → 22.2.1-preview-e2b3b183
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 +6 -0
- package/dist/NetworkController.cjs +3 -0
- package/dist/NetworkController.cjs.map +1 -1
- package/dist/NetworkController.d.cts +16 -0
- package/dist/NetworkController.d.cts.map +1 -1
- package/dist/NetworkController.d.mts +16 -0
- package/dist/NetworkController.d.mts.map +1 -1
- package/dist/NetworkController.mjs +4 -1
- package/dist/NetworkController.mjs.map +1 -1
- package/dist/constants.cjs +5 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +4 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +4 -0
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs +4 -0
- package/dist/constants.mjs.map +1 -1
- package/dist/create-network-client.cjs +12 -12
- package/dist/create-network-client.cjs.map +1 -1
- package/dist/create-network-client.d.cts.map +1 -1
- package/dist/create-network-client.d.mts.map +1 -1
- package/dist/create-network-client.mjs +12 -12
- package/dist/create-network-client.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +17 -6
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +17 -6
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +2 -2
package/dist/constants.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.INFURA_BLOCKED_KEY = exports.NetworkStatus = void 0;
|
|
3
|
+
exports.DEFAULT_INFURA_FAILOVER_URL = exports.INFURA_BLOCKED_KEY = exports.NetworkStatus = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Represents the availability state of the currently selected network.
|
|
6
6
|
*/
|
|
@@ -29,4 +29,8 @@ var NetworkStatus;
|
|
|
29
29
|
NetworkStatus["Blocked"] = "blocked";
|
|
30
30
|
})(NetworkStatus || (exports.NetworkStatus = NetworkStatus = {}));
|
|
31
31
|
exports.INFURA_BLOCKED_KEY = 'countryBlocked';
|
|
32
|
+
/**
|
|
33
|
+
* The default endpoint URL to hit when Infura is down.
|
|
34
|
+
*/
|
|
35
|
+
exports.DEFAULT_INFURA_FAILOVER_URL = 'https://quicknode.com';
|
|
32
36
|
//# sourceMappingURL=constants.cjs.map
|
package/dist/constants.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,aAsBX;AAtBD,WAAY,aAAa;IACvB;;;;OAIG;IACH,oCAAmB,CAAA;IACnB;;OAEG;IACH,wCAAuB,CAAA;IACvB;;;OAGG;IACH,4CAA2B,CAAA;IAC3B;;;;OAIG;IACH,oCAAmB,CAAA;AACrB,CAAC,EAtBW,aAAa,6BAAb,aAAa,QAsBxB;AAEY,QAAA,kBAAkB,GAAG,gBAAgB,CAAC","sourcesContent":["/**\n * Represents the availability state of the currently selected network.\n */\nexport enum NetworkStatus {\n /**\n * The network may or may not be able to receive requests, but either no\n * attempt has been made to determine this, or an attempt was made but was\n * unsuccessful.\n */\n Unknown = 'unknown',\n /**\n * The network is able to receive and respond to requests.\n */\n Available = 'available',\n /**\n * The network was unable to receive and respond to requests for unknown\n * reasons.\n */\n Unavailable = 'unavailable',\n /**\n * The network is not only unavailable, but is also inaccessible for the user\n * specifically based on their location. This state only applies to Infura\n * networks.\n */\n Blocked = 'blocked',\n}\n\nexport const INFURA_BLOCKED_KEY = 'countryBlocked';\n"]}
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,aAsBX;AAtBD,WAAY,aAAa;IACvB;;;;OAIG;IACH,oCAAmB,CAAA;IACnB;;OAEG;IACH,wCAAuB,CAAA;IACvB;;;OAGG;IACH,4CAA2B,CAAA;IAC3B;;;;OAIG;IACH,oCAAmB,CAAA;AACrB,CAAC,EAtBW,aAAa,6BAAb,aAAa,QAsBxB;AAEY,QAAA,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;GAEG;AACU,QAAA,2BAA2B,GAAG,uBAAuB,CAAC","sourcesContent":["/**\n * Represents the availability state of the currently selected network.\n */\nexport enum NetworkStatus {\n /**\n * The network may or may not be able to receive requests, but either no\n * attempt has been made to determine this, or an attempt was made but was\n * unsuccessful.\n */\n Unknown = 'unknown',\n /**\n * The network is able to receive and respond to requests.\n */\n Available = 'available',\n /**\n * The network was unable to receive and respond to requests for unknown\n * reasons.\n */\n Unavailable = 'unavailable',\n /**\n * The network is not only unavailable, but is also inaccessible for the user\n * specifically based on their location. This state only applies to Infura\n * networks.\n */\n Blocked = 'blocked',\n}\n\nexport const INFURA_BLOCKED_KEY = 'countryBlocked';\n\n/**\n * The default endpoint URL to hit when Infura is down.\n */\nexport const DEFAULT_INFURA_FAILOVER_URL = 'https://quicknode.com';\n"]}
|
package/dist/constants.d.cts
CHANGED
|
@@ -25,4 +25,8 @@ export declare enum NetworkStatus {
|
|
|
25
25
|
Blocked = "blocked"
|
|
26
26
|
}
|
|
27
27
|
export declare const INFURA_BLOCKED_KEY = "countryBlocked";
|
|
28
|
+
/**
|
|
29
|
+
* The default endpoint URL to hit when Infura is down.
|
|
30
|
+
*/
|
|
31
|
+
export declare const DEFAULT_INFURA_FAILOVER_URL = "https://quicknode.com";
|
|
28
32
|
//# sourceMappingURL=constants.d.cts.map
|
package/dist/constants.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa;IACvB;;;;OAIG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,SAAS,cAAc;IACvB;;;OAGG;IACH,WAAW,gBAAgB;IAC3B;;;;OAIG;IACH,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,kBAAkB,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa;IACvB;;;;OAIG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,SAAS,cAAc;IACvB;;;OAGG;IACH,WAAW,gBAAgB;IAC3B;;;;OAIG;IACH,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,2BAA2B,0BAA0B,CAAC"}
|
package/dist/constants.d.mts
CHANGED
|
@@ -25,4 +25,8 @@ export declare enum NetworkStatus {
|
|
|
25
25
|
Blocked = "blocked"
|
|
26
26
|
}
|
|
27
27
|
export declare const INFURA_BLOCKED_KEY = "countryBlocked";
|
|
28
|
+
/**
|
|
29
|
+
* The default endpoint URL to hit when Infura is down.
|
|
30
|
+
*/
|
|
31
|
+
export declare const DEFAULT_INFURA_FAILOVER_URL = "https://quicknode.com";
|
|
28
32
|
//# sourceMappingURL=constants.d.mts.map
|
package/dist/constants.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa;IACvB;;;;OAIG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,SAAS,cAAc;IACvB;;;OAGG;IACH,WAAW,gBAAgB;IAC3B;;;;OAIG;IACH,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,kBAAkB,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa;IACvB;;;;OAIG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,SAAS,cAAc;IACvB;;;OAGG;IACH,WAAW,gBAAgB;IAC3B;;;;OAIG;IACH,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,2BAA2B,0BAA0B,CAAC"}
|
package/dist/constants.mjs
CHANGED
|
@@ -26,4 +26,8 @@ export var NetworkStatus;
|
|
|
26
26
|
NetworkStatus["Blocked"] = "blocked";
|
|
27
27
|
})(NetworkStatus || (NetworkStatus = {}));
|
|
28
28
|
export const INFURA_BLOCKED_KEY = 'countryBlocked';
|
|
29
|
+
/**
|
|
30
|
+
* The default endpoint URL to hit when Infura is down.
|
|
31
|
+
*/
|
|
32
|
+
export const DEFAULT_INFURA_FAILOVER_URL = 'https://quicknode.com';
|
|
29
33
|
//# sourceMappingURL=constants.mjs.map
|
package/dist/constants.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,aAsBX;AAtBD,WAAY,aAAa;IACvB;;;;OAIG;IACH,oCAAmB,CAAA;IACnB;;OAEG;IACH,wCAAuB,CAAA;IACvB;;;OAGG;IACH,4CAA2B,CAAA;IAC3B;;;;OAIG;IACH,oCAAmB,CAAA;AACrB,CAAC,EAtBW,aAAa,KAAb,aAAa,QAsBxB;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC","sourcesContent":["/**\n * Represents the availability state of the currently selected network.\n */\nexport enum NetworkStatus {\n /**\n * The network may or may not be able to receive requests, but either no\n * attempt has been made to determine this, or an attempt was made but was\n * unsuccessful.\n */\n Unknown = 'unknown',\n /**\n * The network is able to receive and respond to requests.\n */\n Available = 'available',\n /**\n * The network was unable to receive and respond to requests for unknown\n * reasons.\n */\n Unavailable = 'unavailable',\n /**\n * The network is not only unavailable, but is also inaccessible for the user\n * specifically based on their location. This state only applies to Infura\n * networks.\n */\n Blocked = 'blocked',\n}\n\nexport const INFURA_BLOCKED_KEY = 'countryBlocked';\n"]}
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,aAsBX;AAtBD,WAAY,aAAa;IACvB;;;;OAIG;IACH,oCAAmB,CAAA;IACnB;;OAEG;IACH,wCAAuB,CAAA;IACvB;;;OAGG;IACH,4CAA2B,CAAA;IAC3B;;;;OAIG;IACH,oCAAmB,CAAA;AACrB,CAAC,EAtBW,aAAa,KAAb,aAAa,QAsBxB;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAuB,CAAC","sourcesContent":["/**\n * Represents the availability state of the currently selected network.\n */\nexport enum NetworkStatus {\n /**\n * The network may or may not be able to receive requests, but either no\n * attempt has been made to determine this, or an attempt was made but was\n * unsuccessful.\n */\n Unknown = 'unknown',\n /**\n * The network is able to receive and respond to requests.\n */\n Available = 'available',\n /**\n * The network was unable to receive and respond to requests for unknown\n * reasons.\n */\n Unavailable = 'unavailable',\n /**\n * The network is not only unavailable, but is also inaccessible for the user\n * specifically based on their location. This state only applies to Infura\n * networks.\n */\n Blocked = 'blocked',\n}\n\nexport const INFURA_BLOCKED_KEY = 'countryBlocked';\n\n/**\n * The default endpoint URL to hit when Infura is down.\n */\nexport const DEFAULT_INFURA_FAILOVER_URL = 'https://quicknode.com';\n"]}
|
|
@@ -7,7 +7,7 @@ const eth_json_rpc_infura_1 = require("@metamask/eth-json-rpc-infura");
|
|
|
7
7
|
const eth_json_rpc_middleware_1 = require("@metamask/eth-json-rpc-middleware");
|
|
8
8
|
const eth_json_rpc_provider_1 = require("@metamask/eth-json-rpc-provider");
|
|
9
9
|
const json_rpc_engine_1 = require("@metamask/json-rpc-engine");
|
|
10
|
-
const
|
|
10
|
+
const rpc_service_chain_1 = require("./rpc-service/rpc-service-chain.cjs");
|
|
11
11
|
const types_1 = require("./types.cjs");
|
|
12
12
|
const SECOND = 1000;
|
|
13
13
|
/**
|
|
@@ -22,17 +22,17 @@ const SECOND = 1000;
|
|
|
22
22
|
* @returns The network client.
|
|
23
23
|
*/
|
|
24
24
|
function createNetworkClient({ configuration, fetch: givenFetch, btoa: givenBtoa, }) {
|
|
25
|
-
const
|
|
26
|
-
?
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
const primaryEndpointUrl = configuration.type === types_1.NetworkClientType.Infura
|
|
26
|
+
? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`
|
|
27
|
+
: configuration.rpcUrl;
|
|
28
|
+
const failoverEndpointUrls = configuration.type === types_1.NetworkClientType.Infura
|
|
29
|
+
? configuration.failoverEndpointUrls
|
|
30
|
+
: [];
|
|
31
|
+
const rpcService = new rpc_service_chain_1.RpcServiceChain({
|
|
32
|
+
fetch: givenFetch,
|
|
33
|
+
btoa: givenBtoa,
|
|
34
|
+
serviceConfigurations: [primaryEndpointUrl, ...failoverEndpointUrls].map((endpointUrl) => ({ endpointUrl })),
|
|
35
|
+
});
|
|
36
36
|
const rpcApiMiddleware = configuration.type === types_1.NetworkClientType.Infura
|
|
37
37
|
? (0, eth_json_rpc_infura_1.createInfuraMiddleware)({
|
|
38
38
|
rpcService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-network-client.cjs","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 { RpcService } from './rpc-service/rpc-service';\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.fetch - A function that can be used to make an HTTP request,\n * compatible with the Fetch API.\n * @param args.btoa - A function that can be used to convert a binary string\n * into base-64.\n * @returns The network client.\n */\nexport function createNetworkClient({\n configuration,\n fetch: givenFetch,\n btoa: givenBtoa,\n}: {\n configuration: NetworkClientConfiguration;\n fetch: typeof fetch;\n btoa: typeof btoa;\n}): NetworkClient {\n const rpcService =\n configuration.type === NetworkClientType.Infura\n ? new RpcService({\n fetch: givenFetch,\n btoa: givenBtoa,\n endpointUrl: `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`,\n })\n : new RpcService({\n fetch: givenFetch,\n btoa: givenBtoa,\n endpointUrl: configuration.rpcUrl,\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"]}
|
|
1
|
+
{"version":3,"file":"create-network-client.cjs","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 { 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.fetch - A function that can be used to make an HTTP request,\n * compatible with the Fetch API.\n * @param args.btoa - A function that can be used to convert a binary string\n * into base-64.\n * @returns The network client.\n */\nexport function createNetworkClient({\n configuration,\n fetch: givenFetch,\n btoa: givenBtoa,\n}: {\n configuration: NetworkClientConfiguration;\n fetch: typeof fetch;\n btoa: typeof btoa;\n}): NetworkClient {\n const primaryEndpointUrl =\n configuration.type === NetworkClientType.Infura\n ? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`\n : configuration.rpcUrl;\n const failoverEndpointUrls =\n configuration.type === NetworkClientType.Infura\n ? configuration.failoverEndpointUrls\n : [];\n const rpcService = new RpcServiceChain({\n fetch: givenFetch,\n btoa: givenBtoa,\n serviceConfigurations: [primaryEndpointUrl, ...failoverEndpointUrls].map(\n (endpointUrl) => ({ endpointUrl }),\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-network-client.d.cts","sourceRoot":"","sources":["../src/create-network-client.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,QAAQ,EACT,oBAAgB;AAKjB;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,SAAS,GAChB,EAAE;IACD,aAAa,EAAE,0BAA0B,CAAC;IAC1C,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,IAAI,EAAE,OAAO,IAAI,CAAC;CACnB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"create-network-client.d.cts","sourceRoot":"","sources":["../src/create-network-client.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,QAAQ,EACT,oBAAgB;AAKjB;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,SAAS,GAChB,EAAE;IACD,aAAa,EAAE,0BAA0B,CAAC;IAC1C,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,IAAI,EAAE,OAAO,IAAI,CAAC;CACnB,GAAG,aAAa,CAiEhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-network-client.d.mts","sourceRoot":"","sources":["../src/create-network-client.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,QAAQ,EACT,oBAAgB;AAKjB;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,SAAS,GAChB,EAAE;IACD,aAAa,EAAE,0BAA0B,CAAC;IAC1C,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,IAAI,EAAE,OAAO,IAAI,CAAC;CACnB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"create-network-client.d.mts","sourceRoot":"","sources":["../src/create-network-client.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,YAAY,EACZ,0BAA0B,EAC1B,QAAQ,EACT,oBAAgB;AAKjB;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,SAAS,GAChB,EAAE;IACD,aAAa,EAAE,0BAA0B,CAAC;IAC1C,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,IAAI,EAAE,OAAO,IAAI,CAAC;CACnB,GAAG,aAAa,CAiEhB"}
|
|
@@ -4,7 +4,7 @@ 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 {
|
|
7
|
+
import { RpcServiceChain } from "./rpc-service/rpc-service-chain.mjs";
|
|
8
8
|
import { NetworkClientType } from "./types.mjs";
|
|
9
9
|
const SECOND = 1000;
|
|
10
10
|
/**
|
|
@@ -19,17 +19,17 @@ const SECOND = 1000;
|
|
|
19
19
|
* @returns The network client.
|
|
20
20
|
*/
|
|
21
21
|
export function createNetworkClient({ configuration, fetch: givenFetch, btoa: givenBtoa, }) {
|
|
22
|
-
const
|
|
23
|
-
?
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
const primaryEndpointUrl = configuration.type === NetworkClientType.Infura
|
|
23
|
+
? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`
|
|
24
|
+
: configuration.rpcUrl;
|
|
25
|
+
const failoverEndpointUrls = configuration.type === NetworkClientType.Infura
|
|
26
|
+
? configuration.failoverEndpointUrls
|
|
27
|
+
: [];
|
|
28
|
+
const rpcService = new RpcServiceChain({
|
|
29
|
+
fetch: givenFetch,
|
|
30
|
+
btoa: givenBtoa,
|
|
31
|
+
serviceConfigurations: [primaryEndpointUrl, ...failoverEndpointUrls].map((endpointUrl) => ({ endpointUrl })),
|
|
32
|
+
});
|
|
33
33
|
const rpcApiMiddleware = configuration.type === NetworkClientType.Infura
|
|
34
34
|
? createInfuraMiddleware({
|
|
35
35
|
rpcService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-network-client.mjs","sourceRoot":"","sources":["../src/create-network-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,mCAAmC;AACrD,OAAO,EAAE,mBAAmB,EAAE,oCAAoC;AAClE,OAAO,EAAE,sBAAsB,EAAE,sCAAsC;AACvE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,+BAA+B,EAC/B,qCAAqC,EACrC,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC7B,0CAA0C;AAE3C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACvB,wCAAwC;AACzC,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EACb,eAAe,EAChB,kCAAkC;AAInC,OAAO,EAAE,UAAU,EAAE,sCAAkC;AAMvD,OAAO,EAAE,iBAAiB,EAAE,oBAAgB;AAE5C,MAAM,MAAM,GAAG,IAAI,CAAC;AAapB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,aAAa,EACb,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,SAAS,GAKhB;IACC,MAAM,UAAU,GACd,aAAa,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;QAC7C,CAAC,CAAC,IAAI,UAAU,CAAC;YACb,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,WAAW,aAAa,CAAC,OAAO,iBAAiB,aAAa,CAAC,eAAe,EAAE;SAC9F,CAAC;QACJ,CAAC,CAAC,IAAI,UAAU,CAAC;YACb,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,aAAa,CAAC,MAAM;SAClC,CAAC,CAAC;IAET,MAAM,gBAAgB,GACpB,aAAa,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;QAC7C,CAAC,CAAC,sBAAsB,CAAC;YACrB,UAAU;YACV,OAAO,EAAE;gBACP,MAAM,EAAE,UAAU;aACnB;SACF,CAAC;QACJ,CAAC,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE7D,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;QACpE,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;QAC7B,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC;QAC3C,GAAG,gBAAgB;QACnB,QAAQ,EAAE,WAAW;KACtB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GACrB,aAAa,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;QAC7C,CAAC,CAAC,6BAA6B,CAAC;YAC5B,YAAY;YACZ,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,WAAW;YACX,gBAAgB;SACjB,CAAC;QACJ,CAAC,CAAC,6BAA6B,CAAC;YAC5B,YAAY;YACZ,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,gBAAgB;SACjB,CAAC,CAAC;IAET,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IAEnC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,gFAAgF;QAChF,mEAAmE;QACnE,YAAY,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,6BAA6B,CAAC,EACrC,YAAY,EACZ,OAAO,EACP,WAAW,EACX,gBAAgB,GAMjB;IACC,OAAO,eAAe,CAAC;QACrB,iCAAiC,CAAC,EAAE,OAAO,EAAE,CAAC;QAC9C,0BAA0B,CAAC,EAAE,YAAY,EAAE,CAAC;QAC5C,6BAA6B,EAAE;QAC/B,wBAAwB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QACjE,4BAA4B,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QACrE,qCAAqC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iCAAiC,CAAC,EACzC,OAAO,GAGR;IACC,OAAO,wBAAwB,CAAC;QAC9B,gFAAgF;QAChF,gEAAgE;QAChE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,uBAAuB,GAAG,CAC9B,OAAY,EAC4B,EAAE;IAC1C,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE;YAChC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC;YACrB,OAAO,GAAG,EAAE,CAAC;SACd;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAS,6BAA6B,CAAC,EACrC,YAAY,EACZ,OAAO,EACP,gBAAgB,GAKjB;IACC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO;QACzC,CAAC,CAAC,CAAC,oCAAoC,EAAE,CAAC;QAC1C,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,eAAe,CAAC;QACrB,GAAG,eAAe;QAClB,uBAAuB,CAAC,OAAO,CAAC;QAChC,+BAA+B,CAAC,EAAE,YAAY,EAAE,CAAC;QACjD,0BAA0B,CAAC,EAAE,YAAY,EAAE,CAAC;QAC5C,6BAA6B,EAAE;QAC/B,qCAAqC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,gBAAgB;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,oCAAoC;IAC3C,OAAO,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAClD,IAAI,GAAG,CAAC,MAAM,KAAK,iBAAiB,EAAE;YACpC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;SACjE;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC","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 { RpcService } from './rpc-service/rpc-service';\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.fetch - A function that can be used to make an HTTP request,\n * compatible with the Fetch API.\n * @param args.btoa - A function that can be used to convert a binary string\n * into base-64.\n * @returns The network client.\n */\nexport function createNetworkClient({\n configuration,\n fetch: givenFetch,\n btoa: givenBtoa,\n}: {\n configuration: NetworkClientConfiguration;\n fetch: typeof fetch;\n btoa: typeof btoa;\n}): NetworkClient {\n const rpcService =\n configuration.type === NetworkClientType.Infura\n ? new RpcService({\n fetch: givenFetch,\n btoa: givenBtoa,\n endpointUrl: `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`,\n })\n : new RpcService({\n fetch: givenFetch,\n btoa: givenBtoa,\n endpointUrl: configuration.rpcUrl,\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"]}
|
|
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 { 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.fetch - A function that can be used to make an HTTP request,\n * compatible with the Fetch API.\n * @param args.btoa - A function that can be used to convert a binary string\n * into base-64.\n * @returns The network client.\n */\nexport function createNetworkClient({\n configuration,\n fetch: givenFetch,\n btoa: givenBtoa,\n}: {\n configuration: NetworkClientConfiguration;\n fetch: typeof fetch;\n btoa: typeof btoa;\n}): NetworkClient {\n const primaryEndpointUrl =\n configuration.type === NetworkClientType.Infura\n ? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`\n : configuration.rpcUrl;\n const failoverEndpointUrls =\n configuration.type === NetworkClientType.Infura\n ? configuration.failoverEndpointUrls\n : [];\n const rpcService = new RpcServiceChain({\n fetch: givenFetch,\n btoa: givenBtoa,\n serviceConfigurations: [primaryEndpointUrl, ...failoverEndpointUrls].map(\n (endpointUrl) => ({ endpointUrl }),\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/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAWA;;GAEG;AACH,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B","sourcesContent":["import type { InfuraNetworkType } from '@metamask/controller-utils';\nimport type { BlockTracker as BaseBlockTracker } from '@metamask/eth-block-tracker';\nimport type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';\nimport type { Hex } from '@metamask/utils';\n\nexport type Provider = SafeEventEmitterProvider;\n\nexport type BlockTracker = BaseBlockTracker & {\n checkForLatestBlock(): Promise<string>;\n};\n\n/**\n * The type of network client that can be created.\n */\nexport enum NetworkClientType {\n Custom = 'custom',\n Infura = 'infura',\n}\n\n/**\n * A configuration object that can be used to create a client for a
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAWA;;GAEG;AACH,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B","sourcesContent":["import type { InfuraNetworkType } from '@metamask/controller-utils';\nimport type { BlockTracker as BaseBlockTracker } from '@metamask/eth-block-tracker';\nimport type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';\nimport type { Hex } from '@metamask/utils';\n\nexport type Provider = SafeEventEmitterProvider;\n\nexport type BlockTracker = BaseBlockTracker & {\n checkForLatestBlock(): Promise<string>;\n};\n\n/**\n * The type of network client that can be created.\n */\nexport enum NetworkClientType {\n Custom = 'custom',\n Infura = 'infura',\n}\n\n/**\n * A configuration object that can be used to create a client for a network.\n */\ntype CommonNetworkClientConfiguration = {\n /**\n * The chain ID of the network.\n */\n chainId: Hex;\n /**\n * The name of the currency to use for the chain.\n */\n ticker: string;\n};\n\n/**\n * A configuration object that can be used to create a client for a custom\n * network.\n */\nexport type CustomNetworkClientConfiguration =\n CommonNetworkClientConfiguration & {\n rpcUrl: string;\n type: NetworkClientType.Custom;\n };\n\n/**\n * A configuration object that can be used to create a client for an Infura\n * network.\n */\nexport type InfuraNetworkClientConfiguration =\n CommonNetworkClientConfiguration & {\n network: InfuraNetworkType;\n infuraProjectId: string;\n failoverEndpointUrls: string[];\n type: NetworkClientType.Infura;\n };\n\n/**\n * A configuration object that can be used to create a client for a network.\n */\nexport type NetworkClientConfiguration =\n | CustomNetworkClientConfiguration\n | InfuraNetworkClientConfiguration;\n"]}
|
package/dist/types.d.cts
CHANGED
|
@@ -13,29 +13,40 @@ export declare enum NetworkClientType {
|
|
|
13
13
|
Custom = "custom",
|
|
14
14
|
Infura = "infura"
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* A configuration object that can be used to create a client for a network.
|
|
18
|
+
*/
|
|
19
|
+
type CommonNetworkClientConfiguration = {
|
|
20
|
+
/**
|
|
21
|
+
* The chain ID of the network.
|
|
22
|
+
*/
|
|
23
|
+
chainId: Hex;
|
|
24
|
+
/**
|
|
25
|
+
* The name of the currency to use for the chain.
|
|
26
|
+
*/
|
|
27
|
+
ticker: string;
|
|
28
|
+
};
|
|
16
29
|
/**
|
|
17
30
|
* A configuration object that can be used to create a client for a custom
|
|
18
31
|
* network.
|
|
19
32
|
*/
|
|
20
|
-
export type CustomNetworkClientConfiguration = {
|
|
21
|
-
chainId: Hex;
|
|
33
|
+
export type CustomNetworkClientConfiguration = CommonNetworkClientConfiguration & {
|
|
22
34
|
rpcUrl: string;
|
|
23
|
-
ticker: string;
|
|
24
35
|
type: NetworkClientType.Custom;
|
|
25
36
|
};
|
|
26
37
|
/**
|
|
27
38
|
* A configuration object that can be used to create a client for an Infura
|
|
28
39
|
* network.
|
|
29
40
|
*/
|
|
30
|
-
export type InfuraNetworkClientConfiguration = {
|
|
31
|
-
chainId: Hex;
|
|
41
|
+
export type InfuraNetworkClientConfiguration = CommonNetworkClientConfiguration & {
|
|
32
42
|
network: InfuraNetworkType;
|
|
33
43
|
infuraProjectId: string;
|
|
34
|
-
|
|
44
|
+
failoverEndpointUrls: string[];
|
|
35
45
|
type: NetworkClientType.Infura;
|
|
36
46
|
};
|
|
37
47
|
/**
|
|
38
48
|
* A configuration object that can be used to create a client for a network.
|
|
39
49
|
*/
|
|
40
50
|
export type NetworkClientConfiguration = CustomNetworkClientConfiguration | InfuraNetworkClientConfiguration;
|
|
51
|
+
export {};
|
|
41
52
|
//# sourceMappingURL=types.d.cts.map
|
package/dist/types.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mCAAmC;AACpE,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,oCAAoC;AACpF,OAAO,KAAK,EAAE,wBAAwB,EAAE,wCAAwC;AAChF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,MAAM,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mCAAmC;AACpE,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,oCAAoC;AACpF,OAAO,KAAK,EAAE,wBAAwB,EAAE,wCAAwC;AAChF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,MAAM,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,KAAK,gCAAgC,GAAG;IACtC;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gCAAgC,GAC1C,gCAAgC,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;CAChC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,gCAAgC,GAC1C,gCAAgC,GAAG;IACjC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;CAChC,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAClC,gCAAgC,GAChC,gCAAgC,CAAC"}
|
package/dist/types.d.mts
CHANGED
|
@@ -13,29 +13,40 @@ export declare enum NetworkClientType {
|
|
|
13
13
|
Custom = "custom",
|
|
14
14
|
Infura = "infura"
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* A configuration object that can be used to create a client for a network.
|
|
18
|
+
*/
|
|
19
|
+
type CommonNetworkClientConfiguration = {
|
|
20
|
+
/**
|
|
21
|
+
* The chain ID of the network.
|
|
22
|
+
*/
|
|
23
|
+
chainId: Hex;
|
|
24
|
+
/**
|
|
25
|
+
* The name of the currency to use for the chain.
|
|
26
|
+
*/
|
|
27
|
+
ticker: string;
|
|
28
|
+
};
|
|
16
29
|
/**
|
|
17
30
|
* A configuration object that can be used to create a client for a custom
|
|
18
31
|
* network.
|
|
19
32
|
*/
|
|
20
|
-
export type CustomNetworkClientConfiguration = {
|
|
21
|
-
chainId: Hex;
|
|
33
|
+
export type CustomNetworkClientConfiguration = CommonNetworkClientConfiguration & {
|
|
22
34
|
rpcUrl: string;
|
|
23
|
-
ticker: string;
|
|
24
35
|
type: NetworkClientType.Custom;
|
|
25
36
|
};
|
|
26
37
|
/**
|
|
27
38
|
* A configuration object that can be used to create a client for an Infura
|
|
28
39
|
* network.
|
|
29
40
|
*/
|
|
30
|
-
export type InfuraNetworkClientConfiguration = {
|
|
31
|
-
chainId: Hex;
|
|
41
|
+
export type InfuraNetworkClientConfiguration = CommonNetworkClientConfiguration & {
|
|
32
42
|
network: InfuraNetworkType;
|
|
33
43
|
infuraProjectId: string;
|
|
34
|
-
|
|
44
|
+
failoverEndpointUrls: string[];
|
|
35
45
|
type: NetworkClientType.Infura;
|
|
36
46
|
};
|
|
37
47
|
/**
|
|
38
48
|
* A configuration object that can be used to create a client for a network.
|
|
39
49
|
*/
|
|
40
50
|
export type NetworkClientConfiguration = CustomNetworkClientConfiguration | InfuraNetworkClientConfiguration;
|
|
51
|
+
export {};
|
|
41
52
|
//# sourceMappingURL=types.d.mts.map
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mCAAmC;AACpE,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,oCAAoC;AACpF,OAAO,KAAK,EAAE,wBAAwB,EAAE,wCAAwC;AAChF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,MAAM,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mCAAmC;AACpE,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,oCAAoC;AACpF,OAAO,KAAK,EAAE,wBAAwB,EAAE,wCAAwC;AAChF,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,MAAM,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC5C,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,KAAK,gCAAgC,GAAG;IACtC;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gCAAgC,GAC1C,gCAAgC,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;CAChC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,gCAAgC,GAC1C,gCAAgC,GAAG;IACjC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;CAChC,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAClC,gCAAgC,GAChC,gCAAgC,CAAC"}
|
package/dist/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B","sourcesContent":["import type { InfuraNetworkType } from '@metamask/controller-utils';\nimport type { BlockTracker as BaseBlockTracker } from '@metamask/eth-block-tracker';\nimport type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';\nimport type { Hex } from '@metamask/utils';\n\nexport type Provider = SafeEventEmitterProvider;\n\nexport type BlockTracker = BaseBlockTracker & {\n checkForLatestBlock(): Promise<string>;\n};\n\n/**\n * The type of network client that can be created.\n */\nexport enum NetworkClientType {\n Custom = 'custom',\n Infura = 'infura',\n}\n\n/**\n * A configuration object that can be used to create a client for a
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B","sourcesContent":["import type { InfuraNetworkType } from '@metamask/controller-utils';\nimport type { BlockTracker as BaseBlockTracker } from '@metamask/eth-block-tracker';\nimport type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';\nimport type { Hex } from '@metamask/utils';\n\nexport type Provider = SafeEventEmitterProvider;\n\nexport type BlockTracker = BaseBlockTracker & {\n checkForLatestBlock(): Promise<string>;\n};\n\n/**\n * The type of network client that can be created.\n */\nexport enum NetworkClientType {\n Custom = 'custom',\n Infura = 'infura',\n}\n\n/**\n * A configuration object that can be used to create a client for a network.\n */\ntype CommonNetworkClientConfiguration = {\n /**\n * The chain ID of the network.\n */\n chainId: Hex;\n /**\n * The name of the currency to use for the chain.\n */\n ticker: string;\n};\n\n/**\n * A configuration object that can be used to create a client for a custom\n * network.\n */\nexport type CustomNetworkClientConfiguration =\n CommonNetworkClientConfiguration & {\n rpcUrl: string;\n type: NetworkClientType.Custom;\n };\n\n/**\n * A configuration object that can be used to create a client for an Infura\n * network.\n */\nexport type InfuraNetworkClientConfiguration =\n CommonNetworkClientConfiguration & {\n network: InfuraNetworkType;\n infuraProjectId: string;\n failoverEndpointUrls: string[];\n type: NetworkClientType.Infura;\n };\n\n/**\n * A configuration object that can be used to create a client for a network.\n */\nexport type NetworkClientConfiguration =\n | CustomNetworkClientConfiguration\n | InfuraNetworkClientConfiguration;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/network-controller",
|
|
3
|
-
"version": "22.2.1-preview-
|
|
3
|
+
"version": "22.2.1-preview-e2b3b183",
|
|
4
4
|
"description": "Provides an interface to the currently selected network via a MetaMask-compatible provider object",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@metamask/json-rpc-engine": "^10.0.3",
|
|
58
58
|
"@metamask/rpc-errors": "^7.0.2",
|
|
59
59
|
"@metamask/swappable-obj-proxy": "^2.3.0",
|
|
60
|
-
"@metamask/utils": "^11.
|
|
60
|
+
"@metamask/utils": "^11.2.0",
|
|
61
61
|
"async-mutex": "^0.5.0",
|
|
62
62
|
"fast-deep-equal": "^3.1.3",
|
|
63
63
|
"immer": "^9.0.6",
|