Skip to content

Commit

Permalink
feat(core): resolve client actions (#3496)
Browse files Browse the repository at this point in the history
* add ability of client to override default actions

* Update packages/core/src/utils/getAction.ts

Co-authored-by: awkweb <tom@meagher.co>

* Add new action overrides

* refactor: getAction

* chore: changeset

* test: getAction

* chore: tweak

* chore: changeset

* chore: up

---------

Co-authored-by: plusminushalf <garvitdelhi@gmail.com>
  • Loading branch information
tmm and plusminushalf committed Jan 23, 2024
1 parent 7ff8322 commit ba7f8a7
Show file tree
Hide file tree
Showing 41 changed files with 260 additions and 73 deletions.
7 changes: 7 additions & 0 deletions .changeset/nine-hornets-accept.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"create-wagmi": patch
"@wagmi/connectors": patch
"wagmi": patch
---

Bumped dependencies.
5 changes: 5 additions & 0 deletions .changeset/sour-queens-joke.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@wagmi/core": minor
---

Updated action internals to resolve Viem Client actions.
4 changes: 3 additions & 1 deletion packages/core/src/actions/call.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { call as viem_call } from 'viem/actions'

import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { getAction } from '../utils/getAction.js'

export type CallParameters<config extends Config = Config> =
viem_CallParameters & ChainIdParameter<config>
Expand All @@ -21,5 +22,6 @@ export async function call<config extends Config,>(
): Promise<CallReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_call(client, rest)
const action = getAction(client, viem_call, 'call')
return action(rest)
}
12 changes: 10 additions & 2 deletions packages/core/src/actions/estimateFeesPerGas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { type ChainIdParameter } from '../types/properties.js'
import { type Unit } from '../types/unit.js'
import { type Evaluate } from '../types/utils.js'
import type { UnionEvaluate, UnionLooseOmit } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'
import { getUnit } from '../utils/getUnit.js'

export type EstimateFeesPerGasParameters<
Expand Down Expand Up @@ -57,9 +58,16 @@ export async function estimateFeesPerGas<
const { chainId, formatUnits: units = 'gwei', ...rest } = parameters

const client = config.getClient({ chainId })
const action = getAction(
client,
viem_estimateFeesPerGas,
'estimateFeesPerGas',
)

const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } =
await viem_estimateFeesPerGas(client, rest)
const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = await action({
...rest,
chain: client.chain,
})

const unit = getUnit(units)
const formatted = {
Expand Down
7 changes: 3 additions & 4 deletions packages/core/src/actions/estimateGas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import type {
ConnectorParameter,
} from '../types/properties.js'
import { type UnionEvaluate, type UnionLooseOmit } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'
import {
type GetConnectorClientErrorType,
getConnectorClient,
Expand Down Expand Up @@ -67,8 +68,6 @@ export async function estimateGas<
}

const client = config.getClient({ chainId })
return viem_estimateGas(client, {
...(rest as viem_EstimateGasParameters),
account,
})
const action = getAction(client, viem_estimateGas, 'estimateGas')
return action({ ...(rest as viem_EstimateGasParameters), account })
}
8 changes: 7 additions & 1 deletion packages/core/src/actions/estimateMaxPriorityFeePerGas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate, type UnionLooseOmit } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type EstimateMaxPriorityFeePerGasParameters<
config extends Config = Config,
Expand Down Expand Up @@ -37,5 +38,10 @@ export async function estimateMaxPriorityFeePerGas<
): Promise<EstimateMaxPriorityFeePerGasReturnType> {
const { chainId } = parameters
const client = config.getClient({ chainId })
return viem_estimateMaxPriorityFeePerGas(client)
const action = getAction(
client,
viem_estimateMaxPriorityFeePerGas,
'estimateMaxPriorityFeePerGas',
)
return action({ chain: client.chain })
}
5 changes: 3 additions & 2 deletions packages/core/src/actions/getBalance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Unit } from '../types/unit.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'
import { getUnit } from '../utils/getUnit.js'
import { readContracts } from './readContracts.js'

Expand Down Expand Up @@ -82,8 +83,8 @@ export async function getBalance<config extends Config>(
}

const client = config.getClient({ chainId })
const value = await viem_getBalance(
client,
const action = getAction(client, viem_getBalance, 'getBalance')
const value = await action(
blockNumber ? { address, blockNumber } : { address, blockTag },
)
const chain = config.chains.find((x) => x.id === chainId) ?? client.chain!
Expand Down
4 changes: 3 additions & 1 deletion packages/core/src/actions/getBlock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { type Config } from '../createConfig.js'
import type { SelectChains } from '../types/chain.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate, type IsNarrowable } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetBlockParameters<
includeTransactions extends boolean = false,
Expand Down Expand Up @@ -58,7 +59,8 @@ export async function getBlock<
): Promise<GetBlockReturnType<includeTransactions, blockTag, config, chainId>> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
const block = await viem_getBlock(client, rest)
const action = getAction(client, viem_getBlock, 'getBlock')
const block = await action(rest)
return {
...(block as GetBlockReturnType<
includeTransactions,
Expand Down
4 changes: 3 additions & 1 deletion packages/core/src/actions/getBlockNumber.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetBlockNumberParameters<
config extends Config = Config,
Expand All @@ -28,5 +29,6 @@ export function getBlockNumber<
): Promise<GetBlockNumberReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getBlockNumber(client, rest)
const action = getAction(client, viem_getBlockNumber, 'getBlockNumber')
return action(rest)
}
8 changes: 7 additions & 1 deletion packages/core/src/actions/getBlockTransactionCount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type UnionEvaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetBlockTransactionCountParameters<
config extends Config = Config,
Expand All @@ -32,5 +33,10 @@ export function getBlockTransactionCount<
): Promise<GetBlockTransactionCountReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getBlockTransactionCount(client, rest)
const action = getAction(
client,
viem_getBlockTransactionCount,
'getBlockTransactionCount',
)
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getBytecode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetBytecodeParameters<config extends Config = Config> = Evaluate<
viem_GetBytecodeParameters & ChainIdParameter<config>
Expand All @@ -24,5 +25,6 @@ export async function getBytecode<config extends Config>(
): Promise<GetBytecodeReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getBytecode(client, rest)
const action = getAction(client, viem_getBytecode, 'getBytecode')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getEnsAddress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetEnsAddressParameters<config extends Config = Config> = Evaluate<
viem_GetEnsAddressParameters & ChainIdParameter<config>
Expand All @@ -24,5 +25,6 @@ export function getEnsAddress<config extends Config>(
): Promise<GetEnsAddressReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getEnsAddress(client, rest)
const action = getAction(client, viem_getEnsAddress, 'getEnsAddress')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getEnsAvatar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetEnsAvatarParameters<config extends Config = Config> = Evaluate<
viem_GetEnsAvatarParameters & ChainIdParameter<config>
Expand All @@ -24,5 +25,6 @@ export function getEnsAvatar<config extends Config>(
): Promise<GetEnsAvatarReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getEnsAvatar(client, rest)
const action = getAction(client, viem_getEnsAvatar, 'getEnsAvatar')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getEnsName.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetEnsNameParameters<config extends Config = Config> = Evaluate<
viem_GetEnsNameParameters & ChainIdParameter<config>
Expand All @@ -24,5 +25,6 @@ export function getEnsName<config extends Config>(
): Promise<GetEnsNameReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getEnsName(client, rest)
const action = getAction(client, viem_getEnsName, 'getEnsName')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getEnsResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetEnsResolverParameters<config extends Config = Config> = Evaluate<
viem_GetEnsResolverParameters & ChainIdParameter<config>
Expand All @@ -24,5 +25,6 @@ export function getEnsResolver<config extends Config>(
): Promise<GetEnsResolverReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getEnsResolver(client, rest)
const action = getAction(client, viem_getEnsResolver, 'getEnsResolver')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getEnsText.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetEnsTextParameters<config extends Config = Config> = Evaluate<
viem_GetEnsTextParameters & ChainIdParameter<config>
Expand All @@ -24,5 +25,6 @@ export function getEnsText<config extends Config>(
): Promise<GetEnsTextReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getEnsText(client, rest)
const action = getAction(client, viem_getEnsText, 'getEnsText')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getFeeHistory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetFeeHistoryParameters<
config extends Config = Config,
Expand All @@ -28,5 +29,6 @@ export function getFeeHistory<
): Promise<GetFeeHistoryReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getFeeHistory(client, rest)
const action = getAction(client, viem_getFeeHistory, 'getFeeHistory')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getGasPrice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetGasPriceParameters<
config extends Config = Config,
Expand All @@ -27,5 +28,6 @@ export function getGasPrice<
): Promise<GetGasPriceReturnType> {
const { chainId } = parameters
const client = config.getClient({ chainId })
return viem_getGasPrice(client)
const action = getAction(client, viem_getGasPrice, 'getGasPrice')
return action({})
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getProof.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetProofParameters<config extends Config = Config> = Evaluate<
viem_GetProofParameters & ChainIdParameter<config>
Expand All @@ -24,5 +25,6 @@ export async function getProof<config extends Config>(
): Promise<GetProofReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getProof(client, rest)
const action = getAction(client, viem_getProof, 'getProof')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getStorageAt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetStorageAtParameters<config extends Config = Config> = Evaluate<
viem_GetStorageAtParameters & ChainIdParameter<config>
Expand All @@ -24,5 +25,6 @@ export async function getStorageAt<config extends Config>(
): Promise<GetStorageAtReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getStorageAt(client, rest)
const action = getAction(client, viem_getStorageAt, 'getStorageAt')
return action(rest)
}
4 changes: 3 additions & 1 deletion packages/core/src/actions/getTransaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { type Config } from '../createConfig.js'
import type { SelectChains } from '../types/chain.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate, type IsNarrowable } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetTransactionParameters<
config extends Config = Config,
Expand Down Expand Up @@ -41,7 +42,8 @@ export function getTransaction<
): Promise<GetTransactionReturnType<config, chainId>> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getTransaction(client, rest) as unknown as Promise<
const action = getAction(client, viem_getTransaction, 'getTransaction')
return action(rest) as unknown as Promise<
GetTransactionReturnType<config, chainId>
>
}
7 changes: 5 additions & 2 deletions packages/core/src/actions/getTransactionConfirmations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
import { type Config } from '../createConfig.js'
import { type SelectChains } from '../types/chain.js'
import { type ChainIdParameter } from '../types/properties.js'
import { getAction } from '../utils/getAction.js'

export type GetTransactionConfirmationsParameters<
config extends Config = Config,
Expand Down Expand Up @@ -42,8 +43,10 @@ export function getTransactionConfirmations<
): Promise<GetTransactionConfirmationsReturnType> {
const { chainId, ...rest } = parameters
const client = config.getClient({ chainId })
return viem_getTransactionConfirmations(
const action = getAction(
client,
rest as viem_GetTransactionConfirmationsParameters,
viem_getTransactionConfirmations,
'getTransactionConfirmations',
)
return action(rest as viem_GetTransactionConfirmationsParameters)
}
7 changes: 5 additions & 2 deletions packages/core/src/actions/getTransactionCount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
import { type Config } from '../createConfig.js'
import { type ChainIdParameter } from '../types/properties.js'
import { type Evaluate } from '../types/utils.js'
import { getAction } from '../utils/getAction.js'

export type GetTransactionCountParameters<config extends Config = Config> =
Evaluate<ChainIdParameter<config> & viem_GetTransactionCountParameters>
Expand All @@ -24,8 +25,10 @@ export async function getTransactionCount<config extends Config>(
const { address, blockNumber, blockTag, chainId } = parameters

const client = config.getClient({ chainId })
return viem_getTransactionCount(
const action = getAction(
client,
blockNumber ? { address, blockNumber } : { address, blockTag },
viem_getTransactionCount,
'getTransactionCount',
)
return action(blockNumber ? { address, blockNumber } : { address, blockTag })
}
Loading

0 comments on commit ba7f8a7

Please sign in to comment.