@metamask/network-controller 17.2.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/CHANGELOG.md +113 -2
  2. package/dist/NetworkController.js +16 -921
  3. package/dist/NetworkController.js.map +1 -1
  4. package/dist/NetworkController.mjs +17 -0
  5. package/dist/NetworkController.mjs.map +1 -0
  6. package/dist/chunk-2QJYHWIP.mjs +15 -0
  7. package/dist/chunk-2QJYHWIP.mjs.map +1 -0
  8. package/dist/chunk-D7YSDUFH.mjs +123 -0
  9. package/dist/chunk-D7YSDUFH.mjs.map +1 -0
  10. package/dist/chunk-DMJYDN4Q.js +11 -0
  11. package/dist/chunk-DMJYDN4Q.js.map +1 -0
  12. package/dist/chunk-LTT6WJXC.js +99 -0
  13. package/dist/chunk-LTT6WJXC.js.map +1 -0
  14. package/dist/chunk-NFRLCZQI.js +123 -0
  15. package/dist/chunk-NFRLCZQI.js.map +1 -0
  16. package/dist/chunk-TEO6T2KL.mjs +11 -0
  17. package/dist/chunk-TEO6T2KL.mjs.map +1 -0
  18. package/dist/chunk-VGYLDDJB.js +9 -0
  19. package/dist/chunk-VGYLDDJB.js.map +1 -0
  20. package/dist/chunk-VNCJZRDU.js +999 -0
  21. package/dist/chunk-VNCJZRDU.js.map +1 -0
  22. package/dist/chunk-VTLOAS2R.mjs +9 -0
  23. package/dist/chunk-VTLOAS2R.mjs.map +1 -0
  24. package/dist/chunk-XUI43LEZ.mjs +30 -0
  25. package/dist/chunk-XUI43LEZ.mjs.map +1 -0
  26. package/dist/chunk-XWP6GXMK.mjs +999 -0
  27. package/dist/chunk-XWP6GXMK.mjs.map +1 -0
  28. package/dist/chunk-Z4BLTVTB.js +30 -0
  29. package/dist/chunk-Z4BLTVTB.js.map +1 -0
  30. package/dist/chunk-ZGRSXLW7.mjs +99 -0
  31. package/dist/chunk-ZGRSXLW7.mjs.map +1 -0
  32. package/dist/chunk-ZKNI7MD3.js +15 -0
  33. package/dist/chunk-ZKNI7MD3.js.map +1 -0
  34. package/dist/constants.js +9 -31
  35. package/dist/constants.js.map +1 -1
  36. package/dist/constants.mjs +10 -0
  37. package/dist/constants.mjs.map +1 -0
  38. package/dist/create-auto-managed-network-client.js +9 -131
  39. package/dist/create-auto-managed-network-client.js.map +1 -1
  40. package/dist/create-auto-managed-network-client.mjs +10 -0
  41. package/dist/create-auto-managed-network-client.mjs.map +1 -0
  42. package/dist/create-network-client.js +8 -147
  43. package/dist/create-network-client.js.map +1 -1
  44. package/dist/create-network-client.mjs +9 -0
  45. package/dist/create-network-client.mjs.map +1 -0
  46. package/dist/index.js +24 -21
  47. package/dist/index.js.map +1 -1
  48. package/dist/index.mjs +25 -0
  49. package/dist/index.mjs.map +1 -0
  50. package/dist/logger.js +9 -6
  51. package/dist/logger.js.map +1 -1
  52. package/dist/logger.mjs +10 -0
  53. package/dist/logger.mjs.map +1 -0
  54. package/dist/tsconfig.build.tsbuildinfo +1 -0
  55. package/dist/{NetworkController.d.ts → types/NetworkController.d.ts} +1 -1
  56. package/dist/types/NetworkController.d.ts.map +1 -0
  57. package/dist/types/constants.d.ts.map +1 -0
  58. package/dist/types/create-auto-managed-network-client.d.ts.map +1 -0
  59. package/dist/types/create-network-client.d.ts.map +1 -0
  60. package/dist/types/index.d.ts.map +1 -0
  61. package/dist/types/logger.d.ts.map +1 -0
  62. package/dist/types/types.d.ts.map +1 -0
  63. package/dist/types.js +7 -11
  64. package/dist/types.js.map +1 -1
  65. package/dist/types.mjs +8 -0
  66. package/dist/types.mjs.map +1 -0
  67. package/package.json +18 -8
  68. package/dist/NetworkController.d.ts.map +0 -1
  69. package/dist/constants.d.ts.map +0 -1
  70. package/dist/create-auto-managed-network-client.d.ts.map +0 -1
  71. package/dist/create-network-client.d.ts.map +0 -1
  72. package/dist/index.d.ts.map +0 -1
  73. package/dist/logger.d.ts.map +0 -1
  74. package/dist/types.d.ts.map +0 -1
  75. /package/dist/{constants.d.ts → types/constants.d.ts} +0 -0
  76. /package/dist/{create-auto-managed-network-client.d.ts → types/create-auto-managed-network-client.d.ts} +0 -0
  77. /package/dist/{create-network-client.d.ts → types/create-network-client.d.ts} +0 -0
  78. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  79. /package/dist/{logger.d.ts → types/logger.d.ts} +0 -0
  80. /package/dist/{types.d.ts → types/types.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"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 { 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';\nimport { PollingBlockTracker } from 'eth-block-tracker';\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 // eslint-disable-next-line n/no-process-env\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 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 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 // eslint-disable-next-line n/no-process-env\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"]}
@@ -0,0 +1,11 @@
1
+ // src/types.ts
2
+ var NetworkClientType = /* @__PURE__ */ ((NetworkClientType2) => {
3
+ NetworkClientType2["Custom"] = "custom";
4
+ NetworkClientType2["Infura"] = "infura";
5
+ return NetworkClientType2;
6
+ })(NetworkClientType || {});
7
+
8
+ export {
9
+ NetworkClientType
10
+ };
11
+ //# sourceMappingURL=chunk-TEO6T2KL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { InfuraNetworkType } from '@metamask/controller-utils';\nimport type { SafeEventEmitterProvider } from '@metamask/eth-json-rpc-provider';\nimport type { Hex } from '@metamask/utils';\nimport type { BlockTracker as BaseBlockTracker } from 'eth-block-tracker';\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 custom\n * network.\n */\nexport type CustomNetworkClientConfiguration = {\n chainId: Hex;\n rpcUrl: string;\n ticker: 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 chainId: Hex;\n network: InfuraNetworkType;\n infuraProjectId: string;\n ticker: 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"],"mappings":";AAcO,IAAK,oBAAL,kBAAKA,uBAAL;AACL,EAAAA,mBAAA,YAAS;AACT,EAAAA,mBAAA,YAAS;AAFC,SAAAA;AAAA,GAAA;","names":["NetworkClientType"]}
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/logger.ts
2
+ var _utils = require('@metamask/utils');
3
+ var projectLogger = _utils.createProjectLogger.call(void 0, "network-controller");
4
+
5
+
6
+
7
+
8
+ exports.createModuleLogger = _utils.createModuleLogger; exports.projectLogger = projectLogger;
9
+ //# sourceMappingURL=chunk-VGYLDDJB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/logger.ts"],"names":[],"mappings":";AAAA,SAAS,qBAAqB,0BAA0B;AAEjD,IAAM,gBAAgB,oBAAoB,oBAAoB","sourcesContent":["import { createProjectLogger, createModuleLogger } from '@metamask/utils';\n\nexport const projectLogger = createProjectLogger('network-controller');\n\nexport { createModuleLogger };\n"]}