viem 0.2.0-0-2-0.20230329T025357 → 0.2.0-0-2-0.20230403T055238
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/dist/abi.d.ts +3 -3
- package/dist/abi.js +2 -2
- package/dist/abi.mjs +1 -1
- package/dist/accounts/index.d.ts +5 -14
- package/dist/accounts/index.js +20 -30
- package/dist/accounts/index.js.map +1 -1
- package/dist/accounts/index.mjs +14 -24
- package/dist/accounts/index.mjs.map +1 -1
- package/dist/{chain-5b28fc53.d.ts → chain-5507c6f0.d.ts} +143 -120
- package/dist/{chain-e9b996ff.d.ts → chain-fe47467d.d.ts} +1 -1
- package/dist/chains.d.ts +867 -99
- package/dist/chains.js +115 -63
- package/dist/chains.js.map +1 -1
- package/dist/chains.mjs +58 -6
- package/dist/chains.mjs.map +1 -1
- package/dist/{chunk-7QEOFHC7.mjs → chunk-EMXJKA5P.mjs} +2 -2
- package/dist/{chunk-UCZWRYV5.mjs → chunk-KILBOPDD.mjs} +754 -33
- package/dist/chunk-KILBOPDD.mjs.map +1 -0
- package/dist/{chunk-D3ALNUWN.js → chunk-KQOOAYBY.js} +6 -6
- package/dist/{chunk-564BCC7H.js → chunk-PWUNCH5G.js} +777 -56
- package/dist/chunk-PWUNCH5G.js.map +1 -0
- package/dist/contract.d.ts +8 -8
- package/dist/contract.js +2 -2
- package/dist/contract.mjs +1 -1
- package/dist/{createClient-e52de308.d.ts → createTransport-21a0d2b3.d.ts} +36 -34
- package/dist/{eip1193-9080db42.d.ts → eip1193-2f3a9cd2.d.ts} +1 -1
- package/dist/{encodeFunctionResult-47ad60ed.d.ts → encodeFunctionResult-c5185b98.d.ts} +15 -15
- package/dist/{encodePacked-35c796fb.d.ts → encodePacked-98f67d09.d.ts} +1 -1
- package/dist/ens.d.ts +5 -5
- package/dist/ens.js +8 -3
- package/dist/ens.js.map +1 -1
- package/dist/ens.mjs +7 -2
- package/dist/ens.mjs.map +1 -1
- package/dist/ethers.d.ts +2 -2
- package/dist/ethers.js +4 -4
- package/dist/ethers.mjs +2 -2
- package/dist/{formatAbiItem-d9e801dd.d.ts → formatAbiItem-56dff508.d.ts} +1 -1
- package/dist/{getAbiItem-1d94ae0e.d.ts → getAbiItem-bfba73d1.d.ts} +3 -3
- package/dist/{watchPendingTransactions-468f53f2.d.ts → getEnsResolver-9e26c596.d.ts} +203 -150
- package/dist/index.d.ts +161 -18
- package/dist/index.js +222 -138
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +136 -52
- package/dist/index.mjs.map +1 -1
- package/dist/{parseGwei-f14525ab.d.ts → parseGwei-d2147f8b.d.ts} +5 -5
- package/dist/public.d.ts +5 -5
- package/dist/public.js +2 -2
- package/dist/public.mjs +1 -1
- package/dist/publicKeyToAddress-623eb398.d.ts +16 -0
- package/dist/{test-f3d06763.d.ts → test-b67569fe.d.ts} +3 -3
- package/dist/test.d.ts +5 -5
- package/dist/test.js +2 -2
- package/dist/test.mjs +1 -1
- package/dist/{typedData-42b43450.d.ts → typedData-46b4d81f.d.ts} +1 -1
- package/dist/utils/index.d.ts +15 -15
- package/dist/utils/index.js +4 -2
- package/dist/utils/index.mjs +3 -1
- package/dist/wallet.d.ts +5 -5
- package/dist/wallet.js +2 -2
- package/dist/wallet.mjs +1 -1
- package/dist/window.d.ts +2 -2
- package/package.json +4 -3
- package/dist/chunk-564BCC7H.js.map +0 -1
- package/dist/chunk-BJ5KRDTG.mjs +0 -186
- package/dist/chunk-BJ5KRDTG.mjs.map +0 -1
- package/dist/chunk-CXE4XSMF.js +0 -186
- package/dist/chunk-CXE4XSMF.js.map +0 -1
- package/dist/chunk-UCZWRYV5.mjs.map +0 -1
- package/dist/parseAccount-4209fa24.d.ts +0 -6
- /package/dist/{chunk-7QEOFHC7.mjs.map → chunk-EMXJKA5P.mjs.map} +0 -0
- /package/dist/{chunk-D3ALNUWN.js.map → chunk-KQOOAYBY.js.map} +0 -0
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/decorators/public.ts","../src/clients/decorators/test.ts","../src/clients/decorators/wallet.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"names":["size"],"mappings":"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","sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\nimport { buildRequest } from '../../utils'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The base delay (in ms) between retries. */\n retryDelay?: number\n /** The max number of times to retry. */\n retryCount?: number\n /** The timeout (in ms) for requests. */\n timeout?: number\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = <TChain extends Chain | undefined = Chain>({\n chain,\n}: {\n chain?: TChain\n retryCount?: TransportConfig['retryCount']\n}) => {\n config: TransportConfig<TType>\n request: TRequests\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string,\n TRpcAttributes extends Record<string, any>,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config: { key, name, request, retryCount, retryDelay, timeout, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n provider: TProvider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import { isDeterministicError } from '../../utils/buildRequest'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports: Transport[],\n config: FallbackTransportConfig = {},\n): FallbackTransport {\n const { key = 'fallback', name = 'Fallback', retryCount, retryDelay } = config\n return ({ chain }) =>\n createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain, retryCount: 0 })\n try {\n return await transport.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (isDeterministicError(err as Error)) throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain, retryCount: 0 }) as unknown as Transport,\n ),\n },\n )\n}\n","import { UrlRequiredError } from '../../errors'\nimport type { HttpOptions } from '../../utils'\nimport { rpc } from '../../utils'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpOptions['fetchOptions']\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n retryDelay,\n timeout = 10_000,\n } = config\n return ({ chain, retryCount: defaultRetryCount }) => {\n const retryCount = config.retryCount ?? defaultRetryCount\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n fetchOptions,\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import type WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeParameters = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeReturnType = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeParameters & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeReturnType>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for async WebSocket requests. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: WebSocketTransportConfig = {},\n): WebSocketTransport {\n const {\n key = 'webSocket',\n name = 'WebSocket JSON-RPC',\n retryDelay,\n timeout = 10_000,\n } = config\n return ({ chain, retryCount: defaultRetryCount }) => {\n const retryCount = config.retryCount ?? defaultRetryCount\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n if (data.method !== 'eth_subscription') return\n onData(data.params)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key?: string\n /** A name for the client. */\n name?: string\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number\n /** The RPC transport */\n transport: TTransport\n /** The type of client. */\n type?: string\n}\n\nexport type Client<\n TTransport extends Transport = Transport,\n TRequests extends BaseRpcRequests = Requests,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\n/**\n * @description Creates a base client with the given transport.\n */\nexport function createClient<\n TTransport extends Transport,\n TRequests extends BaseRpcRequests,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain>): Client<TTransport, TRequests, TChain> {\n const { config, request, value } = transport({ chain })\n return {\n chain: chain as TChain,\n key,\n name,\n pollingInterval,\n request,\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { Abi, AbiEvent } from 'abitype'\nimport type {\n GetEnsAddressParameters,\n GetEnsAddressReturnType,\n GetEnsNameParameters,\n GetEnsNameReturnType,\n} from '../../actions/ens'\nimport { getEnsAddress, getEnsName } from '../../actions/ens'\nimport type {\n CallParameters,\n CallReturnType,\n CreateBlockFilterReturnType,\n CreateContractEventFilterParameters,\n CreateContractEventFilterReturnType,\n CreateEventFilterParameters,\n CreateEventFilterReturnType,\n CreatePendingTransactionFilterReturnType,\n EstimateContractGasParameters,\n EstimateContractGasReturnType,\n EstimateGasParameters,\n EstimateGasReturnType,\n GetBalanceParameters,\n GetBalanceReturnType,\n GetBlockNumberParameters,\n GetBlockNumberReturnType,\n GetBlockParameters,\n GetBlockReturnType,\n GetBlockTransactionCountParameters,\n GetBlockTransactionCountReturnType,\n GetBytecodeParameters,\n GetBytecodeReturnType,\n GetChainIdReturnType,\n GetFeeHistoryParameters,\n GetFeeHistoryReturnType,\n GetFilterChangesParameters,\n GetFilterChangesReturnType,\n GetFilterLogsParameters,\n GetFilterLogsReturnType,\n GetGasPriceReturnType,\n GetLogsParameters,\n GetLogsReturnType,\n GetStorageAtParameters,\n GetStorageAtReturnType,\n GetTransactionConfirmationsParameters,\n GetTransactionConfirmationsReturnType,\n GetTransactionCountParameters,\n GetTransactionCountReturnType,\n GetTransactionParameters,\n GetTransactionReceiptParameters,\n GetTransactionReceiptReturnType,\n GetTransactionReturnType,\n MulticallParameters,\n MulticallReturnType,\n ReadContractParameters,\n ReadContractReturnType,\n SimulateContractParameters,\n SimulateContractReturnType,\n UninstallFilterParameters,\n UninstallFilterReturnType,\n WaitForTransactionReceiptParameters,\n WaitForTransactionReceiptReturnType,\n WatchBlockNumberParameters,\n WatchBlockNumberReturnType,\n WatchBlocksParameters,\n WatchBlocksReturnType,\n WatchContractEventParameters,\n WatchContractEventReturnType,\n WatchEventParameters,\n WatchEventReturnType,\n WatchPendingTransactionsParameters,\n WatchPendingTransactionsReturnType,\n} from '../../actions/public'\nimport {\n call,\n createBlockFilter,\n createContractEventFilter,\n createEventFilter,\n createPendingTransactionFilter,\n estimateContractGas,\n estimateGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBlockTransactionCount,\n getBytecode,\n getChainId,\n getFeeHistory,\n getFilterChanges,\n getFilterLogs,\n getGasPrice,\n getLogs,\n getStorageAt,\n getTransaction,\n getTransactionConfirmations,\n getTransactionCount,\n getTransactionReceipt,\n multicall,\n readContract,\n simulateContract,\n uninstallFilter,\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchContractEvent,\n watchEvent,\n watchPendingTransactions,\n} from '../../actions/public'\nimport type {\n Chain,\n ContractConfig,\n FilterType,\n MaybeExtractEventArgsFromAbi,\n} from '../../types'\nimport type { PublicClient } from '../createPublicClient'\nimport type { Transport } from '../transports'\n\nexport type PublicActions<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n call: (args: CallParameters<TChain>) => Promise<CallReturnType>\n createBlockFilter: () => Promise<CreateBlockFilterReturnType>\n createContractEventFilter: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args: CreateContractEventFilterParameters<TAbi, TEventName, TArgs>,\n ) => Promise<CreateContractEventFilterReturnType<TAbi, TEventName, TArgs>>\n createEventFilter: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args?: CreateEventFilterParameters<TAbiEvent, TAbi, TEventName, TArgs>,\n ) => Promise<CreateEventFilterReturnType<TAbiEvent, TAbi, TEventName, TArgs>>\n createPendingTransactionFilter: () => Promise<CreatePendingTransactionFilterReturnType>\n estimateContractGas: <\n TChain extends Chain | undefined,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: EstimateContractGasParameters<TAbi, TFunctionName, TChain>,\n ) => Promise<EstimateContractGasReturnType>\n estimateGas: (\n args: EstimateGasParameters<TChain>,\n ) => Promise<EstimateGasReturnType>\n getBalance: (args: GetBalanceParameters) => Promise<GetBalanceReturnType>\n getBlock: (args?: GetBlockParameters) => Promise<GetBlockReturnType<TChain>>\n getBlockNumber: (\n args?: GetBlockNumberParameters,\n ) => Promise<GetBlockNumberReturnType>\n getBlockTransactionCount: (\n args?: GetBlockTransactionCountParameters,\n ) => Promise<GetBlockTransactionCountReturnType>\n getBytecode: (args: GetBytecodeParameters) => Promise<GetBytecodeReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getEnsAddress: (\n args: GetEnsAddressParameters,\n ) => Promise<GetEnsAddressReturnType>\n getEnsName: (args: GetEnsNameParameters) => Promise<GetEnsNameReturnType>\n getFeeHistory: (\n args: GetFeeHistoryParameters,\n ) => Promise<GetFeeHistoryReturnType>\n getFilterChanges: <\n TFilterType extends FilterType,\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterChangesParameters<TFilterType, TAbiEvent, TAbi, TEventName>,\n ) => Promise<\n GetFilterChangesReturnType<TFilterType, TAbiEvent, TAbi, TEventName>\n >\n getFilterLogs: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterLogsParameters<TAbiEvent, TAbi, TEventName>,\n ) => Promise<GetFilterLogsReturnType<TAbiEvent, TAbi, TEventName>>\n getGasPrice: () => Promise<GetGasPriceReturnType>\n getLogs: <TAbiEvent extends AbiEvent | undefined>(\n args?: GetLogsParameters<TAbiEvent>,\n ) => Promise<GetLogsReturnType<TAbiEvent>>\n getStorageAt: (\n args: GetStorageAtParameters,\n ) => Promise<GetStorageAtReturnType>\n getTransaction: (\n args: GetTransactionParameters,\n ) => Promise<GetTransactionReturnType<TChain>>\n getTransactionConfirmations: (\n args: GetTransactionConfirmationsParameters<TChain>,\n ) => Promise<GetTransactionConfirmationsReturnType>\n getTransactionCount: (\n args: GetTransactionCountParameters,\n ) => Promise<GetTransactionCountReturnType>\n getTransactionReceipt: (\n args: GetTransactionReceiptParameters,\n ) => Promise<GetTransactionReceiptReturnType<TChain>>\n multicall: <\n TContracts extends ContractConfig[],\n TAllowFailure extends boolean = true,\n >(\n args: MulticallParameters<TContracts, TAllowFailure>,\n ) => Promise<MulticallReturnType<TContracts, TAllowFailure>>\n readContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: ReadContractParameters<TAbi, TFunctionName>,\n ) => Promise<ReadContractReturnType<TAbi, TFunctionName>>\n simulateContract: <\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n TChainOverride extends Chain | undefined = undefined,\n >(\n args: SimulateContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TChainOverride\n >,\n ) => Promise<\n SimulateContractReturnType<TAbi, TFunctionName, TChain, TChainOverride>\n >\n uninstallFilter: (\n args: UninstallFilterParameters,\n ) => Promise<UninstallFilterReturnType>\n waitForTransactionReceipt: (\n args: WaitForTransactionReceiptParameters<TChain>,\n ) => Promise<WaitForTransactionReceiptReturnType<TChain>>\n watchBlockNumber: (\n args: WatchBlockNumberParameters,\n ) => WatchBlockNumberReturnType\n watchBlocks: (\n args: WatchBlocksParameters<TTransport, TChain>,\n ) => WatchBlocksReturnType\n watchContractEvent: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string,\n >(\n args: WatchContractEventParameters<TAbi, TEventName>,\n ) => WatchContractEventReturnType\n watchEvent: <TAbiEvent extends AbiEvent | undefined>(\n args: WatchEventParameters<TAbiEvent>,\n ) => WatchEventReturnType\n watchPendingTransactions: (\n args: WatchPendingTransactionsParameters<TTransport>,\n ) => WatchPendingTransactionsReturnType\n}\n\nexport const publicActions = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n>(\n client: PublicClient<TTransport, TChain>,\n): PublicActions<TTransport, TChain> => ({\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getBytecode(client, args),\n getChainId: () => getChainId(client),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) =>\n getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n readContract: (args) => readContract(client, args),\n simulateContract: (args) => simulateContract(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n})\n","import type {\n DropTransactionParameters,\n GetAutomineReturnType,\n GetTxpoolContentReturnType,\n GetTxpoolStatusReturnType,\n ImpersonateAccountParameters,\n IncreaseTimeParameters,\n InspectTxpoolReturnType,\n MineParameters,\n ResetParameters,\n RevertParameters,\n SendUnsignedTransactionParameters,\n SendUnsignedTransactionReturnType,\n SetBalanceParameters,\n SetBlockGasLimitParameters,\n SetBlockTimestampIntervalParameters,\n SetCodeParameters,\n SetCoinbaseParameters,\n SetIntervalMiningParameters,\n SetMinGasPriceParameters,\n SetNextBlockBaseFeePerGasParameters,\n SetNextBlockTimestampParameters,\n SetNonceParameters,\n SetStorageAtParameters,\n StopImpersonatingAccountParameters,\n} from '../../actions/test'\nimport {\n dropTransaction,\n getAutomine,\n getTxpoolContent,\n getTxpoolStatus,\n impersonateAccount,\n increaseTime,\n inspectTxpool,\n mine,\n removeBlockTimestampInterval,\n reset,\n revert,\n sendUnsignedTransaction,\n setAutomine,\n setBalance,\n setBlockGasLimit,\n setBlockTimestampInterval,\n setCode,\n setCoinbase,\n setIntervalMining,\n setLoggingEnabled,\n setMinGasPrice,\n setNextBlockBaseFeePerGas,\n setNextBlockTimestamp,\n setNonce,\n setRpcUrl,\n setStorageAt,\n snapshot,\n stopImpersonatingAccount,\n} from '../../actions/test'\nimport type { Chain, Quantity } from '../../types'\nimport type { TestClient, TestClientMode } from '../createTestClient'\nimport type { Transport } from '../transports'\n\nexport type TestActions = {\n dropTransaction: (args: DropTransactionParameters) => Promise<void>\n getAutomine: () => Promise<GetAutomineReturnType>\n getTxpoolContent: () => Promise<GetTxpoolContentReturnType>\n getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>\n impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>\n increaseTime: (args: IncreaseTimeParameters) => Promise<Quantity>\n inspectTxpool: () => Promise<InspectTxpoolReturnType>\n mine: (args: MineParameters) => Promise<void>\n removeBlockTimestampInterval: () => Promise<void>\n reset: (args?: ResetParameters) => Promise<void>\n revert: (args: RevertParameters) => Promise<void>\n sendUnsignedTransaction: (\n args: SendUnsignedTransactionParameters,\n ) => Promise<SendUnsignedTransactionReturnType>\n setAutomine: (args: boolean) => Promise<void>\n setBalance: (args: SetBalanceParameters) => Promise<void>\n setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>\n setBlockTimestampInterval: (\n args: SetBlockTimestampIntervalParameters,\n ) => Promise<void>\n setCode: (args: SetCodeParameters) => Promise<void>\n setCoinbase: (args: SetCoinbaseParameters) => Promise<void>\n setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>\n setLoggingEnabled: (args: boolean) => Promise<void>\n setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>\n setNextBlockBaseFeePerGas: (\n args: SetNextBlockBaseFeePerGasParameters,\n ) => Promise<void>\n setNextBlockTimestamp: (\n args: SetNextBlockTimestampParameters,\n ) => Promise<void>\n setNonce: (args: SetNonceParameters) => Promise<void>\n setRpcUrl: (args: string) => Promise<void>\n setStorageAt: (args: SetStorageAtParameters) => Promise<void>\n snapshot: () => Promise<Quantity>\n stopImpersonatingAccount: (\n args: StopImpersonatingAccountParameters,\n ) => Promise<void>\n}\n\nexport function testActions<TChain extends Chain | undefined>(\n client: TestClient<TestClientMode, Transport, TChain>,\n): TestActions {\n return {\n dropTransaction: (args) => dropTransaction(client, args),\n getAutomine: () => getAutomine(client),\n getTxpoolContent: () => getTxpoolContent(client),\n getTxpoolStatus: () => getTxpoolStatus(client),\n impersonateAccount: (args) => impersonateAccount(client, args),\n increaseTime: (args) => increaseTime(client, args),\n inspectTxpool: () => inspectTxpool(client),\n mine: (args) => mine(client, args),\n removeBlockTimestampInterval: () => removeBlockTimestampInterval(client),\n reset: (args) => reset(client, args),\n revert: (args) => revert(client, args),\n sendUnsignedTransaction: (args) => sendUnsignedTransaction(client, args),\n setAutomine: (args) => setAutomine(client, args),\n setBalance: (args) => setBalance(client, args),\n setBlockGasLimit: (args) => setBlockGasLimit(client, args),\n setBlockTimestampInterval: (args) =>\n setBlockTimestampInterval(client, args),\n setCode: (args) => setCode(client, args),\n setCoinbase: (args) => setCoinbase(client, args),\n setIntervalMining: (args) => setIntervalMining(client, args),\n setLoggingEnabled: (args) => setLoggingEnabled(client, args),\n setMinGasPrice: (args) => setMinGasPrice(client, args),\n setNextBlockBaseFeePerGas: (args) =>\n setNextBlockBaseFeePerGas(client, args),\n setNextBlockTimestamp: (args) => setNextBlockTimestamp(client, args),\n setNonce: (args) => setNonce(client, args),\n setRpcUrl: (args) => setRpcUrl(client, args),\n setStorageAt: (args) => setStorageAt(client, args),\n snapshot: () => snapshot(client),\n stopImpersonatingAccount: (args) => stopImpersonatingAccount(client, args),\n }\n}\n","import type { Abi, TypedData } from 'abitype'\nimport type {\n AddChainParameters,\n DeployContractParameters,\n DeployContractReturnType,\n GetAddressesReturnType,\n GetChainIdReturnType,\n GetPermissionsReturnType,\n RequestAddressesReturnType,\n RequestPermissionsParameters,\n RequestPermissionsReturnType,\n SendTransactionParameters,\n SendTransactionReturnType,\n SignMessageParameters,\n SignMessageReturnType,\n SignTypedDataParameters,\n SignTypedDataReturnType,\n SwitchChainParameters,\n WatchAssetParameters,\n WatchAssetReturnType,\n WriteContractParameters,\n WriteContractReturnType,\n} from '../../actions/wallet'\nimport {\n addChain,\n deployContract,\n getAddresses,\n getChainId,\n getPermissions,\n requestAddresses,\n requestPermissions,\n sendTransaction,\n signMessage,\n signTypedData,\n switchChain,\n watchAsset,\n writeContract,\n} from '../../actions/wallet'\nimport type { Account, Chain } from '../../types'\nimport type { WalletClient } from '../createWalletClient'\nimport type { Transport } from '../transports'\n\nexport type WalletActions<\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n> = {\n addChain: (args: AddChainParameters) => Promise<void>\n deployContract: <\n TAbi extends Abi | readonly unknown[],\n TChainOverride extends Chain | undefined,\n >(\n args: DeployContractParameters<TAbi, TChain, TAccount, TChainOverride>,\n ) => Promise<DeployContractReturnType>\n getAddresses: () => Promise<GetAddressesReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getPermissions: () => Promise<GetPermissionsReturnType>\n requestAddresses: () => Promise<RequestAddressesReturnType>\n requestPermissions: (\n args: RequestPermissionsParameters,\n ) => Promise<RequestPermissionsReturnType>\n sendTransaction: <TChainOverride extends Chain | undefined>(\n args: SendTransactionParameters<TChain, TAccount, TChainOverride>,\n ) => Promise<SendTransactionReturnType>\n signMessage: (\n args: SignMessageParameters<TAccount>,\n ) => Promise<SignMessageReturnType>\n signTypedData: <\n TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string,\n >(\n args: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>,\n ) => Promise<SignTypedDataReturnType>\n switchChain: (args: SwitchChainParameters) => Promise<void>\n watchAsset: (args: WatchAssetParameters) => Promise<WatchAssetReturnType>\n writeContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n TChainOverride extends Chain | undefined,\n >(\n args: WriteContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TAccount,\n TChainOverride\n >,\n ) => Promise<WriteContractReturnType>\n}\n\nexport const walletActions = <\n TTransport extends Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n>(\n client: WalletClient<TTransport, TChain, TAccount>,\n): WalletActions<TChain, TAccount> => ({\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n})\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { publicActions, PublicActions } from './decorators'\nimport type { Chain, Prettify } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, PublicRequests, TChain> &\n (TIncludeActions extends true ? PublicActions<TTransport, TChain> : unknown)\n>\n\n/**\n * @description Creates a public client with a given transport.\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<\n TTransport,\n TChain,\n true\n> {\n const client = createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n }) as PublicClient<TTransport, TChain>\n return {\n ...client,\n ...publicActions(client),\n }\n}\n","import type { Chain } from '../types'\nimport type { TestRequests } from '../types/eip1193'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { testActions, TestActions } from './decorators'\nimport type { Transport } from './transports/createTransport'\n\nexport type TestClientMode = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n}\n\nexport type TestClient<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TestRequests<TMode>, TChain> &\n (TIncludeActions extends true ? TestActions : unknown) & {\n mode: TMode\n }\n\n/**\n * @description Creates a test client with a given transport.\n */\nexport function createTestClient<\n TMode extends TestClientMode,\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TMode, TTransport, TChain>): TestClient<\n TMode,\n TTransport,\n TChain,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n } as TestClient<TMode, TTransport, TChain>\n return {\n ...client,\n ...testActions(client),\n }\n}\n","import type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport type { Transport } from './transports/createTransport'\nimport type {\n Account,\n Address,\n Chain,\n JsonRpcAccount,\n Prettify,\n} from '../types'\nimport { WalletActions, walletActions } from './decorators'\nimport { parseAccount } from '../utils'\nimport type { Requests } from '../types/eip1193'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** The Account to use for the Wallet Client. This will be used for Actions that require an account as an argument. */\n account?: TAccountOrAddress\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, Requests, TChain> &\n (TIncludeActions extends true\n ? WalletActions<TChain, TAccount>\n : unknown) & {\n /** The Account to use for the Wallet Client. */\n account: TAccount\n }\n>\n\n/**\n * @description Creates a wallet client with a given transport.\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n TAccountOrAddress extends Account | Address | undefined = undefined,\n>({\n account,\n chain,\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain, TAccountOrAddress>): WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? Prettify<JsonRpcAccount<TAccountOrAddress>>\n : TAccountOrAddress,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport: () => transport({ retryCount: 0 }),\n type: 'walletClient',\n }),\n account: account ? parseAccount(account) : undefined,\n } as WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? JsonRpcAccount<TAccountOrAddress>\n : TAccountOrAddress\n >\n return {\n ...client,\n ...walletActions(client),\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/decorators/public.ts","../src/clients/decorators/test.ts","../src/clients/decorators/wallet.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"names":["transport","transports_","sample","size"],"mappings":"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","sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\nimport { buildRequest } from '../../utils'\nimport type { ClientConfig } from '../createClient'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The base delay (in ms) between retries. */\n retryDelay?: number\n /** The max number of times to retry. */\n retryCount?: number\n /** The timeout (in ms) for requests. */\n timeout?: number\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = <TChain extends Chain | undefined = Chain>({\n chain,\n}: {\n chain?: TChain\n pollingInterval?: ClientConfig['pollingInterval']\n retryCount?: TransportConfig['retryCount']\n timeout?: TransportConfig['timeout']\n}) => {\n config: TransportConfig<TType>\n request: TRequests\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string,\n TRpcAttributes extends Record<string, any>,\n>(\n {\n key,\n name,\n request,\n retryCount = 3,\n retryDelay = 150,\n timeout,\n type,\n }: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config: { key, name, request, retryCount, retryDelay, timeout, type },\n request: buildRequest(request, { retryCount, retryDelay }),\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n provider: TProvider,\n config: CustomTransportConfig = {},\n): CustomTransport {\n const { key = 'custom', name = 'Custom Provider', retryDelay } = config\n return ({ retryCount: defaultRetryCount }) =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n retryCount: config.retryCount ?? defaultRetryCount,\n retryDelay,\n type: 'custom',\n })\n}\n","import type { Chain } from '../../types'\nimport { isDeterministicError } from '../../utils/buildRequest'\nimport { wait } from '../../utils/wait'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype RankOptions = {\n /**\n * The polling interval (in ms) at which the ranker should ping the RPC URL.\n * @default client.pollingInterval\n */\n interval?: number\n /**\n * The number of previous samples to perform ranking on.\n * @default 10\n */\n sampleCount?: number\n /**\n * Timeout when sampling transports.\n * @default 1_000\n */\n timeout?: number\n /**\n * Weights to apply to the scores. Weight values are proportional.\n */\n weights?: {\n /**\n * The weight to apply to the latency score.\n * @default 0.3\n */\n latency?: number\n /**\n * The weight to apply to the stability score.\n * @default 0.7\n */\n stability?: number\n }\n}\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n /** Toggle to enable ranking, or rank options. */\n rank?: boolean | RankOptions\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports_: Transport[],\n config: FallbackTransportConfig = {},\n): FallbackTransport {\n const {\n key = 'fallback',\n name = 'Fallback',\n rank = true,\n retryCount,\n retryDelay,\n } = config\n return ({ chain, pollingInterval = 4_000, timeout }) => {\n let transports = transports_\n\n const transport = createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain, retryCount: 0, timeout })\n try {\n return await transport.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (isDeterministicError(err as Error)) throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain, retryCount: 0 }) as unknown as Transport,\n ),\n },\n )\n\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {}) as RankOptions\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n })\n }\n return transport\n }\n}\n\nexport function rankTransports({\n chain,\n interval = 4_000,\n onTransports,\n sampleCount = 10,\n timeout = 1_000,\n transports,\n weights = {},\n}: {\n chain?: Chain\n interval: RankOptions['interval']\n onTransports: (transports: Transport[]) => void\n sampleCount?: RankOptions['sampleCount']\n timeout?: RankOptions['timeout']\n transports: Transport[]\n weights?: RankOptions['weights']\n}) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } =\n weights\n\n type SampleData = { latency: number; success: number }\n type Sample = SampleData[]\n const samples: Sample[] = []\n\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample: Sample = await Promise.all(\n transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout })\n\n const start = Date.now()\n let end\n let success\n try {\n await transport_.request({ method: 'net_listening' })\n success = 1\n } catch {\n success = 0\n } finally {\n end = Date.now()\n }\n const latency = end - start\n return { latency, success }\n }),\n )\n\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample)\n if (samples.length > sampleCount) samples.shift()\n\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(\n ...samples.map((sample) =>\n Math.max(...sample.map(({ latency }) => latency)),\n ),\n )\n\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency)\n const meanLatency =\n latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length\n const latencyScore = 1 - meanLatency / maxLatency\n\n const successes = samples.map((sample) => sample[i].success)\n const stabilityScore =\n successes.reduce((acc, success) => acc + success, 0) /\n successes.length\n\n if (stabilityScore === 0) return [0, i]\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ]\n })\n .sort((a, b) => b[0] - a[0])\n\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]))\n\n // 6. Wait, and then rank again.\n await wait(interval)\n rankTransports_()\n }\n rankTransports_()\n}\n","import { UrlRequiredError } from '../../errors'\nimport type { HttpOptions } from '../../utils'\nimport { rpc } from '../../utils'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /**\n * Request configuration to pass to `fetch`.\n * @link https://developer.mozilla.org/en-US/docs/Web/API/fetch\n */\n fetchOptions?: HttpOptions['fetchOptions']\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for the HTTP request. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: HttpTransportConfig = {},\n): HttpTransport {\n const {\n fetchOptions,\n key = 'http',\n name = 'HTTP JSON-RPC',\n retryDelay,\n } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n fetchOptions,\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import type WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeParameters = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeReturnType = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeParameters & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeReturnType>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n /** The max number of times to retry. */\n retryCount?: TransportConfig['retryCount']\n /** The base delay (in ms) between retries. */\n retryDelay?: TransportConfig['retryDelay']\n /** The timeout (in ms) for async WebSocket requests. Default: 10_000 */\n timeout?: TransportConfig['timeout']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n config: WebSocketTransportConfig = {},\n): WebSocketTransport {\n const { key = 'webSocket', name = 'WebSocket JSON-RPC', retryDelay } = config\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const retryCount = config.retryCount ?? retryCount_\n const timeout = timeout_ ?? config.timeout ?? 10_000\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n timeout,\n })\n return result\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n if (data.method !== 'eth_subscription') return\n onData(data.params)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key?: string\n /** A name for the client. */\n name?: string\n /**\n * Frequency (in ms) for polling enabled actions & events.\n * @default 4_000\n */\n pollingInterval?: number\n /** The RPC transport */\n transport: TTransport\n /** The type of client. */\n type?: string\n}\n\nexport type Client<\n TTransport extends Transport = Transport,\n TRequests extends BaseRpcRequests = Requests,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n /** Chain for the client. */\n chain: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\n/**\n * @description Creates a base client with the given transport.\n */\nexport function createClient<\n TTransport extends Transport,\n TRequests extends BaseRpcRequests,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain>): Client<TTransport, TRequests, TChain> {\n const { config, request, value } = transport({ chain, pollingInterval })\n return {\n chain: chain as TChain,\n key,\n name,\n pollingInterval,\n request,\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { Abi, AbiEvent } from 'abitype'\nimport type {\n GetEnsAddressParameters,\n GetEnsAddressReturnType,\n GetEnsAvatarParameters,\n GetEnsAvatarReturnType,\n GetEnsNameParameters,\n GetEnsNameReturnType,\n GetEnsResolverParameters,\n GetEnsResolverReturnType,\n GetEnsTextParameters,\n GetEnsTextReturnType,\n} from '../../actions/ens'\nimport {\n getEnsAddress,\n getEnsAvatar,\n getEnsName,\n getEnsResolver,\n getEnsText,\n} from '../../actions/ens'\nimport type {\n CallParameters,\n CallReturnType,\n CreateBlockFilterReturnType,\n CreateContractEventFilterParameters,\n CreateContractEventFilterReturnType,\n CreateEventFilterParameters,\n CreateEventFilterReturnType,\n CreatePendingTransactionFilterReturnType,\n EstimateContractGasParameters,\n EstimateContractGasReturnType,\n EstimateGasParameters,\n EstimateGasReturnType,\n GetBalanceParameters,\n GetBalanceReturnType,\n GetBlockNumberParameters,\n GetBlockNumberReturnType,\n GetBlockParameters,\n GetBlockReturnType,\n GetBlockTransactionCountParameters,\n GetBlockTransactionCountReturnType,\n GetBytecodeParameters,\n GetBytecodeReturnType,\n GetChainIdReturnType,\n GetFeeHistoryParameters,\n GetFeeHistoryReturnType,\n GetFilterChangesParameters,\n GetFilterChangesReturnType,\n GetFilterLogsParameters,\n GetFilterLogsReturnType,\n GetGasPriceReturnType,\n GetLogsParameters,\n GetLogsReturnType,\n GetStorageAtParameters,\n GetStorageAtReturnType,\n GetTransactionConfirmationsParameters,\n GetTransactionConfirmationsReturnType,\n GetTransactionCountParameters,\n GetTransactionCountReturnType,\n GetTransactionParameters,\n GetTransactionReceiptParameters,\n GetTransactionReceiptReturnType,\n GetTransactionReturnType,\n MulticallParameters,\n MulticallReturnType,\n ReadContractParameters,\n ReadContractReturnType,\n SimulateContractParameters,\n SimulateContractReturnType,\n UninstallFilterParameters,\n UninstallFilterReturnType,\n WaitForTransactionReceiptParameters,\n WaitForTransactionReceiptReturnType,\n WatchBlockNumberParameters,\n WatchBlockNumberReturnType,\n WatchBlocksParameters,\n WatchBlocksReturnType,\n WatchContractEventParameters,\n WatchContractEventReturnType,\n WatchEventParameters,\n WatchEventReturnType,\n WatchPendingTransactionsParameters,\n WatchPendingTransactionsReturnType,\n} from '../../actions/public'\nimport {\n call,\n createBlockFilter,\n createContractEventFilter,\n createEventFilter,\n createPendingTransactionFilter,\n estimateContractGas,\n estimateGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBlockTransactionCount,\n getBytecode,\n getChainId,\n getFeeHistory,\n getFilterChanges,\n getFilterLogs,\n getGasPrice,\n getLogs,\n getStorageAt,\n getTransaction,\n getTransactionConfirmations,\n getTransactionCount,\n getTransactionReceipt,\n multicall,\n readContract,\n simulateContract,\n uninstallFilter,\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchContractEvent,\n watchEvent,\n watchPendingTransactions,\n} from '../../actions/public'\nimport type {\n Chain,\n ContractFunctionConfig,\n FilterType,\n MaybeExtractEventArgsFromAbi,\n} from '../../types'\nimport type { PublicClient } from '../createPublicClient'\nimport type { Transport } from '../transports'\n\nexport type PublicActions<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = {\n call: (args: CallParameters<TChain>) => Promise<CallReturnType>\n createBlockFilter: () => Promise<CreateBlockFilterReturnType>\n createContractEventFilter: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args: CreateContractEventFilterParameters<TAbi, TEventName, TArgs>,\n ) => Promise<CreateContractEventFilterReturnType<TAbi, TEventName, TArgs>>\n createEventFilter: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName> | undefined,\n >(\n args?: CreateEventFilterParameters<TAbiEvent, TAbi, TEventName, TArgs>,\n ) => Promise<CreateEventFilterReturnType<TAbiEvent, TAbi, TEventName, TArgs>>\n createPendingTransactionFilter: () => Promise<CreatePendingTransactionFilterReturnType>\n estimateContractGas: <\n TChain extends Chain | undefined,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: EstimateContractGasParameters<TAbi, TFunctionName, TChain>,\n ) => Promise<EstimateContractGasReturnType>\n estimateGas: (\n args: EstimateGasParameters<TChain>,\n ) => Promise<EstimateGasReturnType>\n getBalance: (args: GetBalanceParameters) => Promise<GetBalanceReturnType>\n getBlock: (args?: GetBlockParameters) => Promise<GetBlockReturnType<TChain>>\n getBlockNumber: (\n args?: GetBlockNumberParameters,\n ) => Promise<GetBlockNumberReturnType>\n getBlockTransactionCount: (\n args?: GetBlockTransactionCountParameters,\n ) => Promise<GetBlockTransactionCountReturnType>\n getBytecode: (args: GetBytecodeParameters) => Promise<GetBytecodeReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getEnsAddress: (\n args: GetEnsAddressParameters,\n ) => Promise<GetEnsAddressReturnType>\n getEnsAvatar: (\n args: GetEnsAvatarParameters,\n ) => Promise<GetEnsAvatarReturnType>\n getEnsName: (args: GetEnsNameParameters) => Promise<GetEnsNameReturnType>\n getEnsResolver: (\n args: GetEnsResolverParameters,\n ) => Promise<GetEnsResolverReturnType>\n getEnsText: (args: GetEnsTextParameters) => Promise<GetEnsTextReturnType>\n getFeeHistory: (\n args: GetFeeHistoryParameters,\n ) => Promise<GetFeeHistoryReturnType>\n getFilterChanges: <\n TFilterType extends FilterType,\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterChangesParameters<TFilterType, TAbiEvent, TAbi, TEventName>,\n ) => Promise<\n GetFilterChangesReturnType<TFilterType, TAbiEvent, TAbi, TEventName>\n >\n getFilterLogs: <\n TAbiEvent extends AbiEvent | undefined,\n TAbi extends Abi | readonly unknown[],\n TEventName extends string | undefined,\n >(\n args: GetFilterLogsParameters<TAbiEvent, TAbi, TEventName>,\n ) => Promise<GetFilterLogsReturnType<TAbiEvent, TAbi, TEventName>>\n getGasPrice: () => Promise<GetGasPriceReturnType>\n getLogs: <TAbiEvent extends AbiEvent | undefined>(\n args?: GetLogsParameters<TAbiEvent>,\n ) => Promise<GetLogsReturnType<TAbiEvent>>\n getStorageAt: (\n args: GetStorageAtParameters,\n ) => Promise<GetStorageAtReturnType>\n getTransaction: (\n args: GetTransactionParameters,\n ) => Promise<GetTransactionReturnType<TChain>>\n getTransactionConfirmations: (\n args: GetTransactionConfirmationsParameters<TChain>,\n ) => Promise<GetTransactionConfirmationsReturnType>\n getTransactionCount: (\n args: GetTransactionCountParameters,\n ) => Promise<GetTransactionCountReturnType>\n getTransactionReceipt: (\n args: GetTransactionReceiptParameters,\n ) => Promise<GetTransactionReceiptReturnType<TChain>>\n multicall: <\n TContracts extends ContractFunctionConfig[],\n TAllowFailure extends boolean = true,\n >(\n args: MulticallParameters<TContracts, TAllowFailure>,\n ) => Promise<MulticallReturnType<TContracts, TAllowFailure>>\n readContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n >(\n args: ReadContractParameters<TAbi, TFunctionName>,\n ) => Promise<ReadContractReturnType<TAbi, TFunctionName>>\n simulateContract: <\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n TChainOverride extends Chain | undefined = undefined,\n >(\n args: SimulateContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TChainOverride\n >,\n ) => Promise<\n SimulateContractReturnType<TAbi, TFunctionName, TChain, TChainOverride>\n >\n uninstallFilter: (\n args: UninstallFilterParameters,\n ) => Promise<UninstallFilterReturnType>\n waitForTransactionReceipt: (\n args: WaitForTransactionReceiptParameters<TChain>,\n ) => Promise<WaitForTransactionReceiptReturnType<TChain>>\n watchBlockNumber: (\n args: WatchBlockNumberParameters,\n ) => WatchBlockNumberReturnType\n watchBlocks: (\n args: WatchBlocksParameters<TTransport, TChain>,\n ) => WatchBlocksReturnType\n watchContractEvent: <\n TAbi extends Abi | readonly unknown[],\n TEventName extends string,\n >(\n args: WatchContractEventParameters<TAbi, TEventName>,\n ) => WatchContractEventReturnType\n watchEvent: <TAbiEvent extends AbiEvent | undefined>(\n args: WatchEventParameters<TAbiEvent>,\n ) => WatchEventReturnType\n watchPendingTransactions: (\n args: WatchPendingTransactionsParameters<TTransport>,\n ) => WatchPendingTransactionsReturnType\n}\n\nexport const publicActions = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n>(\n client: PublicClient<TTransport, TChain>,\n): PublicActions<TTransport, TChain> => ({\n call: (args) => call(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getBytecode(client, args),\n getChainId: () => getChainId(client),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) =>\n getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n readContract: (args) => readContract(client, args),\n simulateContract: (args) => simulateContract(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n})\n","import type {\n DropTransactionParameters,\n GetAutomineReturnType,\n GetTxpoolContentReturnType,\n GetTxpoolStatusReturnType,\n ImpersonateAccountParameters,\n IncreaseTimeParameters,\n InspectTxpoolReturnType,\n MineParameters,\n ResetParameters,\n RevertParameters,\n SendUnsignedTransactionParameters,\n SendUnsignedTransactionReturnType,\n SetBalanceParameters,\n SetBlockGasLimitParameters,\n SetBlockTimestampIntervalParameters,\n SetCodeParameters,\n SetCoinbaseParameters,\n SetIntervalMiningParameters,\n SetMinGasPriceParameters,\n SetNextBlockBaseFeePerGasParameters,\n SetNextBlockTimestampParameters,\n SetNonceParameters,\n SetStorageAtParameters,\n StopImpersonatingAccountParameters,\n} from '../../actions/test'\nimport {\n dropTransaction,\n getAutomine,\n getTxpoolContent,\n getTxpoolStatus,\n impersonateAccount,\n increaseTime,\n inspectTxpool,\n mine,\n removeBlockTimestampInterval,\n reset,\n revert,\n sendUnsignedTransaction,\n setAutomine,\n setBalance,\n setBlockGasLimit,\n setBlockTimestampInterval,\n setCode,\n setCoinbase,\n setIntervalMining,\n setLoggingEnabled,\n setMinGasPrice,\n setNextBlockBaseFeePerGas,\n setNextBlockTimestamp,\n setNonce,\n setRpcUrl,\n setStorageAt,\n snapshot,\n stopImpersonatingAccount,\n} from '../../actions/test'\nimport type { Chain, Quantity } from '../../types'\nimport type { TestClient, TestClientMode } from '../createTestClient'\nimport type { Transport } from '../transports'\n\nexport type TestActions = {\n dropTransaction: (args: DropTransactionParameters) => Promise<void>\n getAutomine: () => Promise<GetAutomineReturnType>\n getTxpoolContent: () => Promise<GetTxpoolContentReturnType>\n getTxpoolStatus: () => Promise<GetTxpoolStatusReturnType>\n impersonateAccount: (args: ImpersonateAccountParameters) => Promise<void>\n increaseTime: (args: IncreaseTimeParameters) => Promise<Quantity>\n inspectTxpool: () => Promise<InspectTxpoolReturnType>\n mine: (args: MineParameters) => Promise<void>\n removeBlockTimestampInterval: () => Promise<void>\n reset: (args?: ResetParameters) => Promise<void>\n revert: (args: RevertParameters) => Promise<void>\n sendUnsignedTransaction: (\n args: SendUnsignedTransactionParameters,\n ) => Promise<SendUnsignedTransactionReturnType>\n setAutomine: (args: boolean) => Promise<void>\n setBalance: (args: SetBalanceParameters) => Promise<void>\n setBlockGasLimit: (args: SetBlockGasLimitParameters) => Promise<void>\n setBlockTimestampInterval: (\n args: SetBlockTimestampIntervalParameters,\n ) => Promise<void>\n setCode: (args: SetCodeParameters) => Promise<void>\n setCoinbase: (args: SetCoinbaseParameters) => Promise<void>\n setIntervalMining: (args: SetIntervalMiningParameters) => Promise<void>\n setLoggingEnabled: (args: boolean) => Promise<void>\n setMinGasPrice: (args: SetMinGasPriceParameters) => Promise<void>\n setNextBlockBaseFeePerGas: (\n args: SetNextBlockBaseFeePerGasParameters,\n ) => Promise<void>\n setNextBlockTimestamp: (\n args: SetNextBlockTimestampParameters,\n ) => Promise<void>\n setNonce: (args: SetNonceParameters) => Promise<void>\n setRpcUrl: (args: string) => Promise<void>\n setStorageAt: (args: SetStorageAtParameters) => Promise<void>\n snapshot: () => Promise<Quantity>\n stopImpersonatingAccount: (\n args: StopImpersonatingAccountParameters,\n ) => Promise<void>\n}\n\nexport function testActions<TChain extends Chain | undefined>(\n client: TestClient<TestClientMode, Transport, TChain>,\n): TestActions {\n return {\n dropTransaction: (args) => dropTransaction(client, args),\n getAutomine: () => getAutomine(client),\n getTxpoolContent: () => getTxpoolContent(client),\n getTxpoolStatus: () => getTxpoolStatus(client),\n impersonateAccount: (args) => impersonateAccount(client, args),\n increaseTime: (args) => increaseTime(client, args),\n inspectTxpool: () => inspectTxpool(client),\n mine: (args) => mine(client, args),\n removeBlockTimestampInterval: () => removeBlockTimestampInterval(client),\n reset: (args) => reset(client, args),\n revert: (args) => revert(client, args),\n sendUnsignedTransaction: (args) => sendUnsignedTransaction(client, args),\n setAutomine: (args) => setAutomine(client, args),\n setBalance: (args) => setBalance(client, args),\n setBlockGasLimit: (args) => setBlockGasLimit(client, args),\n setBlockTimestampInterval: (args) =>\n setBlockTimestampInterval(client, args),\n setCode: (args) => setCode(client, args),\n setCoinbase: (args) => setCoinbase(client, args),\n setIntervalMining: (args) => setIntervalMining(client, args),\n setLoggingEnabled: (args) => setLoggingEnabled(client, args),\n setMinGasPrice: (args) => setMinGasPrice(client, args),\n setNextBlockBaseFeePerGas: (args) =>\n setNextBlockBaseFeePerGas(client, args),\n setNextBlockTimestamp: (args) => setNextBlockTimestamp(client, args),\n setNonce: (args) => setNonce(client, args),\n setRpcUrl: (args) => setRpcUrl(client, args),\n setStorageAt: (args) => setStorageAt(client, args),\n snapshot: () => snapshot(client),\n stopImpersonatingAccount: (args) => stopImpersonatingAccount(client, args),\n }\n}\n","import type { Abi, TypedData } from 'abitype'\nimport type {\n AddChainParameters,\n DeployContractParameters,\n DeployContractReturnType,\n GetAddressesReturnType,\n GetChainIdReturnType,\n GetPermissionsReturnType,\n RequestAddressesReturnType,\n RequestPermissionsParameters,\n RequestPermissionsReturnType,\n SendTransactionParameters,\n SendTransactionReturnType,\n SignMessageParameters,\n SignMessageReturnType,\n SignTypedDataParameters,\n SignTypedDataReturnType,\n SwitchChainParameters,\n WatchAssetParameters,\n WatchAssetReturnType,\n WriteContractParameters,\n WriteContractReturnType,\n} from '../../actions/wallet'\nimport {\n addChain,\n deployContract,\n getAddresses,\n getChainId,\n getPermissions,\n requestAddresses,\n requestPermissions,\n sendTransaction,\n signMessage,\n signTypedData,\n switchChain,\n watchAsset,\n writeContract,\n} from '../../actions/wallet'\nimport type { Account, Chain } from '../../types'\nimport type { WalletClient } from '../createWalletClient'\nimport type { Transport } from '../transports'\n\nexport type WalletActions<\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n> = {\n addChain: (args: AddChainParameters) => Promise<void>\n deployContract: <\n TAbi extends Abi | readonly unknown[],\n TChainOverride extends Chain | undefined,\n >(\n args: DeployContractParameters<TAbi, TChain, TAccount, TChainOverride>,\n ) => Promise<DeployContractReturnType>\n getAddresses: () => Promise<GetAddressesReturnType>\n getChainId: () => Promise<GetChainIdReturnType>\n getPermissions: () => Promise<GetPermissionsReturnType>\n requestAddresses: () => Promise<RequestAddressesReturnType>\n requestPermissions: (\n args: RequestPermissionsParameters,\n ) => Promise<RequestPermissionsReturnType>\n sendTransaction: <TChainOverride extends Chain | undefined>(\n args: SendTransactionParameters<TChain, TAccount, TChainOverride>,\n ) => Promise<SendTransactionReturnType>\n signMessage: (\n args: SignMessageParameters<TAccount>,\n ) => Promise<SignMessageReturnType>\n signTypedData: <\n TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string,\n >(\n args: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>,\n ) => Promise<SignTypedDataReturnType>\n switchChain: (args: SwitchChainParameters) => Promise<void>\n watchAsset: (args: WatchAssetParameters) => Promise<WatchAssetReturnType>\n writeContract: <\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n TChainOverride extends Chain | undefined,\n >(\n args: WriteContractParameters<\n TAbi,\n TFunctionName,\n TChain,\n TAccount,\n TChainOverride\n >,\n ) => Promise<WriteContractReturnType>\n}\n\nexport const walletActions = <\n TTransport extends Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n>(\n client: WalletClient<TTransport, TChain, TAccount>,\n): WalletActions<TChain, TAccount> => ({\n addChain: (args) => addChain(client, args),\n deployContract: (args) => deployContract(client, args),\n getAddresses: () => getAddresses(client),\n getChainId: () => getChainId(client),\n getPermissions: () => getPermissions(client),\n requestAddresses: () => requestAddresses(client),\n requestPermissions: (args) => requestPermissions(client, args),\n sendTransaction: (args) => sendTransaction(client, args),\n signMessage: (args) => signMessage(client, args),\n signTypedData: (args) => signTypedData(client, args),\n switchChain: (args) => switchChain(client, args),\n watchAsset: (args) => watchAsset(client, args),\n writeContract: (args) => writeContract(client, args),\n})\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { publicActions, PublicActions } from './decorators'\nimport type { Chain, Prettify } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, PublicRequests, TChain> &\n (TIncludeActions extends true ? PublicActions<TTransport, TChain> : unknown)\n>\n\n/**\n * @description Creates a public client with a given transport.\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<\n TTransport,\n TChain,\n true\n> {\n const client = createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n }) as PublicClient<TTransport, TChain>\n return {\n ...client,\n ...publicActions(client),\n }\n}\n","import type { Chain } from '../types'\nimport type { TestRequests } from '../types/eip1193'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { testActions, TestActions } from './decorators'\nimport type { Transport } from './transports/createTransport'\n\nexport type TestClientMode = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n}\n\nexport type TestClient<\n TMode extends TestClientMode = TestClientMode,\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TIncludeActions extends boolean = true,\n> = Client<TTransport, TestRequests<TMode>, TChain> &\n (TIncludeActions extends true ? TestActions : unknown) & {\n mode: TMode\n }\n\n/**\n * @description Creates a test client with a given transport.\n */\nexport function createTestClient<\n TMode extends TestClientMode,\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TMode, TTransport, TChain>): TestClient<\n TMode,\n TTransport,\n TChain,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n } as TestClient<TMode, TTransport, TChain>\n return {\n ...client,\n ...testActions(client),\n }\n}\n","import type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport type { Transport } from './transports/createTransport'\nimport type {\n Account,\n Address,\n Chain,\n JsonRpcAccount,\n Prettify,\n} from '../types'\nimport { WalletActions, walletActions } from './decorators'\nimport { parseAccount } from '../utils'\nimport type { Requests } from '../types/eip1193'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccountOrAddress extends Account | Address | undefined =\n | Account\n | Address\n | undefined,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n> & {\n /** The Account to use for the Wallet Client. This will be used for Actions that require an account as an argument. */\n account?: TAccountOrAddress\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends Account | undefined = Account | undefined,\n TIncludeActions extends boolean = true,\n> = Prettify<\n Client<TTransport, Requests, TChain> &\n (TIncludeActions extends true\n ? WalletActions<TChain, TAccount>\n : unknown) & {\n /** The Account to use for the Wallet Client. */\n account: TAccount\n }\n>\n\n/**\n * @description Creates a wallet client with a given transport.\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain | undefined = undefined,\n TAccountOrAddress extends Account | Address | undefined = undefined,\n>({\n account,\n chain,\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain, TAccountOrAddress>): WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? Prettify<JsonRpcAccount<TAccountOrAddress>>\n : TAccountOrAddress,\n true\n> {\n const client = {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport: () => transport({ retryCount: 0 }),\n type: 'walletClient',\n }),\n account: account ? parseAccount(account) : undefined,\n } as WalletClient<\n TTransport,\n TChain,\n TAccountOrAddress extends Address\n ? JsonRpcAccount<TAccountOrAddress>\n : TAccountOrAddress\n >\n return {\n ...client,\n ...walletActions(client),\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
import {
|
2
|
-
getEnsAddress,
|
3
|
-
getEnsName,
|
4
|
-
labelhash,
|
5
|
-
namehash
|
6
|
-
} from "./chunk-BJ5KRDTG.mjs";
|
7
1
|
import {
|
8
2
|
AbiConstructorNotFoundError,
|
9
3
|
AbiConstructorParamsNotFoundError,
|
@@ -30,6 +24,7 @@ import {
|
|
30
24
|
DataLengthTooLongError,
|
31
25
|
DataLengthTooShortError,
|
32
26
|
DecodeLogTopicsMismatch,
|
27
|
+
EnsAvatarUriResolutionError,
|
33
28
|
EstimateGasExecutionError,
|
34
29
|
ExecutionRevertedError,
|
35
30
|
FeeCapTooHighError,
|
@@ -145,10 +140,16 @@ import {
|
|
145
140
|
getBlockTransactionCount,
|
146
141
|
getBytecode,
|
147
142
|
getChainId,
|
143
|
+
getContract,
|
148
144
|
getContractAddress,
|
149
145
|
getContractError,
|
150
146
|
getCreate2Address,
|
151
147
|
getCreateAddress,
|
148
|
+
getEnsAddress,
|
149
|
+
getEnsAvatar,
|
150
|
+
getEnsName,
|
151
|
+
getEnsResolver,
|
152
|
+
getEnsText,
|
152
153
|
getEventSelector,
|
153
154
|
getFeeHistory,
|
154
155
|
getFilterChanges,
|
@@ -185,9 +186,11 @@ import {
|
|
185
186
|
isHash,
|
186
187
|
isHex,
|
187
188
|
keccak256,
|
189
|
+
labelhash,
|
188
190
|
mine,
|
189
191
|
multicall,
|
190
192
|
multicall3Abi,
|
193
|
+
namehash,
|
191
194
|
numberToBytes,
|
192
195
|
numberToHex,
|
193
196
|
pad,
|
@@ -252,6 +255,7 @@ import {
|
|
252
255
|
validateTypedData,
|
253
256
|
verifyMessage,
|
254
257
|
verifyTypedData,
|
258
|
+
wait,
|
255
259
|
waitForTransactionReceipt,
|
256
260
|
watchAsset,
|
257
261
|
watchBlockNumber,
|
@@ -261,7 +265,7 @@ import {
|
|
261
265
|
watchPendingTransactions,
|
262
266
|
weiUnits,
|
263
267
|
writeContract
|
264
|
-
} from "./chunk-
|
268
|
+
} from "./chunk-KILBOPDD.mjs";
|
265
269
|
|
266
270
|
// src/clients/transports/createTransport.ts
|
267
271
|
function createTransport({
|
@@ -294,40 +298,119 @@ function custom(provider, config = {}) {
|
|
294
298
|
}
|
295
299
|
|
296
300
|
// src/clients/transports/fallback.ts
|
297
|
-
function fallback(
|
298
|
-
const {
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
301
|
+
function fallback(transports_, config = {}) {
|
302
|
+
const {
|
303
|
+
key = "fallback",
|
304
|
+
name = "Fallback",
|
305
|
+
rank = true,
|
306
|
+
retryCount,
|
307
|
+
retryDelay
|
308
|
+
} = config;
|
309
|
+
return ({ chain, pollingInterval = 4e3, timeout }) => {
|
310
|
+
let transports = transports_;
|
311
|
+
const transport = createTransport(
|
312
|
+
{
|
313
|
+
key,
|
314
|
+
name,
|
315
|
+
async request({ method, params }) {
|
316
|
+
const fetch = async (i = 0) => {
|
317
|
+
const transport2 = transports[i]({ chain, retryCount: 0, timeout });
|
318
|
+
try {
|
319
|
+
return await transport2.request({
|
320
|
+
method,
|
321
|
+
params
|
322
|
+
});
|
323
|
+
} catch (err) {
|
324
|
+
if (isDeterministicError(err))
|
325
|
+
throw err;
|
326
|
+
if (i === transports.length - 1)
|
327
|
+
throw err;
|
328
|
+
return fetch(i + 1);
|
329
|
+
}
|
330
|
+
};
|
331
|
+
return fetch();
|
332
|
+
},
|
333
|
+
retryCount,
|
334
|
+
retryDelay,
|
335
|
+
type: "fallback"
|
320
336
|
},
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
337
|
+
{
|
338
|
+
transports: transports.map(
|
339
|
+
(fn) => fn({ chain, retryCount: 0 })
|
340
|
+
)
|
341
|
+
}
|
342
|
+
);
|
343
|
+
if (rank) {
|
344
|
+
const rankOptions = typeof rank === "object" ? rank : {};
|
345
|
+
rankTransports({
|
346
|
+
chain,
|
347
|
+
interval: rankOptions.interval ?? pollingInterval,
|
348
|
+
onTransports: (transports_2) => transports = transports_2,
|
349
|
+
sampleCount: rankOptions.sampleCount,
|
350
|
+
timeout: rankOptions.timeout,
|
351
|
+
transports,
|
352
|
+
weights: rankOptions.weights
|
353
|
+
});
|
329
354
|
}
|
330
|
-
|
355
|
+
return transport;
|
356
|
+
};
|
357
|
+
}
|
358
|
+
function rankTransports({
|
359
|
+
chain,
|
360
|
+
interval = 4e3,
|
361
|
+
onTransports,
|
362
|
+
sampleCount = 10,
|
363
|
+
timeout = 1e3,
|
364
|
+
transports,
|
365
|
+
weights = {}
|
366
|
+
}) {
|
367
|
+
const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } = weights;
|
368
|
+
const samples = [];
|
369
|
+
const rankTransports_ = async () => {
|
370
|
+
const sample = await Promise.all(
|
371
|
+
transports.map(async (transport) => {
|
372
|
+
const transport_ = transport({ chain, retryCount: 0, timeout });
|
373
|
+
const start = Date.now();
|
374
|
+
let end;
|
375
|
+
let success;
|
376
|
+
try {
|
377
|
+
await transport_.request({ method: "net_listening" });
|
378
|
+
success = 1;
|
379
|
+
} catch {
|
380
|
+
success = 0;
|
381
|
+
} finally {
|
382
|
+
end = Date.now();
|
383
|
+
}
|
384
|
+
const latency = end - start;
|
385
|
+
return { latency, success };
|
386
|
+
})
|
387
|
+
);
|
388
|
+
samples.push(sample);
|
389
|
+
if (samples.length > sampleCount)
|
390
|
+
samples.shift();
|
391
|
+
const maxLatency = Math.max(
|
392
|
+
...samples.map(
|
393
|
+
(sample2) => Math.max(...sample2.map(({ latency }) => latency))
|
394
|
+
)
|
395
|
+
);
|
396
|
+
const scores = transports.map((_, i) => {
|
397
|
+
const latencies = samples.map((sample2) => sample2[i].latency);
|
398
|
+
const meanLatency = latencies.reduce((acc, latency) => acc + latency, 0) / latencies.length;
|
399
|
+
const latencyScore = 1 - meanLatency / maxLatency;
|
400
|
+
const successes = samples.map((sample2) => sample2[i].success);
|
401
|
+
const stabilityScore = successes.reduce((acc, success) => acc + success, 0) / successes.length;
|
402
|
+
if (stabilityScore === 0)
|
403
|
+
return [0, i];
|
404
|
+
return [
|
405
|
+
latencyWeight * latencyScore + stabilityWeight * stabilityScore,
|
406
|
+
i
|
407
|
+
];
|
408
|
+
}).sort((a, b) => b[0] - a[0]);
|
409
|
+
onTransports(scores.map(([, i]) => transports[i]));
|
410
|
+
await wait(interval);
|
411
|
+
rankTransports_();
|
412
|
+
};
|
413
|
+
rankTransports_();
|
331
414
|
}
|
332
415
|
|
333
416
|
// src/clients/transports/http.ts
|
@@ -336,11 +419,11 @@ function http(url, config = {}) {
|
|
336
419
|
fetchOptions,
|
337
420
|
key = "http",
|
338
421
|
name = "HTTP JSON-RPC",
|
339
|
-
retryDelay
|
340
|
-
timeout = 1e4
|
422
|
+
retryDelay
|
341
423
|
} = config;
|
342
|
-
return ({ chain, retryCount:
|
343
|
-
const retryCount = config.retryCount ??
|
424
|
+
return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {
|
425
|
+
const retryCount = config.retryCount ?? retryCount_;
|
426
|
+
const timeout = timeout_ ?? config.timeout ?? 1e4;
|
344
427
|
const url_ = url || chain?.rpcUrls.default.http[0];
|
345
428
|
if (!url_)
|
346
429
|
throw new UrlRequiredError();
|
@@ -373,14 +456,10 @@ function http(url, config = {}) {
|
|
373
456
|
|
374
457
|
// src/clients/transports/webSocket.ts
|
375
458
|
function webSocket(url, config = {}) {
|
376
|
-
const {
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
timeout = 1e4
|
381
|
-
} = config;
|
382
|
-
return ({ chain, retryCount: defaultRetryCount }) => {
|
383
|
-
const retryCount = config.retryCount ?? defaultRetryCount;
|
459
|
+
const { key = "webSocket", name = "WebSocket JSON-RPC", retryDelay } = config;
|
460
|
+
return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {
|
461
|
+
const retryCount = config.retryCount ?? retryCount_;
|
462
|
+
const timeout = timeout_ ?? config.timeout ?? 1e4;
|
384
463
|
const url_ = url || chain?.rpcUrls.default.webSocket?.[0];
|
385
464
|
if (!url_)
|
386
465
|
throw new UrlRequiredError();
|
@@ -473,7 +552,7 @@ function createClient({
|
|
473
552
|
transport,
|
474
553
|
type = "base"
|
475
554
|
}) {
|
476
|
-
const { config, request, value } = transport({ chain });
|
555
|
+
const { config, request, value } = transport({ chain, pollingInterval });
|
477
556
|
return {
|
478
557
|
chain,
|
479
558
|
key,
|
@@ -502,7 +581,10 @@ var publicActions = (client) => ({
|
|
502
581
|
getBytecode: (args) => getBytecode(client, args),
|
503
582
|
getChainId: () => getChainId(client),
|
504
583
|
getEnsAddress: (args) => getEnsAddress(client, args),
|
584
|
+
getEnsAvatar: (args) => getEnsAvatar(client, args),
|
505
585
|
getEnsName: (args) => getEnsName(client, args),
|
586
|
+
getEnsResolver: (args) => getEnsResolver(client, args),
|
587
|
+
getEnsText: (args) => getEnsText(client, args),
|
506
588
|
getFeeHistory: (args) => getFeeHistory(client, args),
|
507
589
|
getFilterChanges: (args) => getFilterChanges(client, args),
|
508
590
|
getFilterLogs: (args) => getFilterLogs(client, args),
|
@@ -675,6 +757,7 @@ export {
|
|
675
757
|
DataLengthTooLongError,
|
676
758
|
DataLengthTooShortError,
|
677
759
|
DecodeLogTopicsMismatch,
|
760
|
+
EnsAvatarUriResolutionError,
|
678
761
|
EstimateGasExecutionError,
|
679
762
|
ExecutionRevertedError,
|
680
763
|
FeeCapTooHighError,
|
@@ -778,6 +861,7 @@ export {
|
|
778
861
|
fromRlp,
|
779
862
|
getAbiItem,
|
780
863
|
getAddress,
|
864
|
+
getContract,
|
781
865
|
getContractAddress,
|
782
866
|
getContractError,
|
783
867
|
getCreate2Address,
|