Skip to content

Commit

Permalink
wip: config types
Browse files Browse the repository at this point in the history
  • Loading branch information
tmm committed Aug 22, 2023
1 parent b615acf commit 67c3481
Show file tree
Hide file tree
Showing 25 changed files with 140 additions and 99 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"rome": "^12.1.3",
"simple-git-hooks": "^2.8.1",
"typescript": "5.0.4",
"viem": "0.0.0-w-20230821171049",
"viem": "0.0.0-w-20230822145918",
"vite": "^4.3.9",
"vitest": "^0.34.1"
},
Expand All @@ -60,7 +60,7 @@
"overrides": {
"@wagmi/connectors": "workspace:*",
"@wagmi/core": "workspace:*",
"viem": "0.0.0-w-20230821171049"
"viem": "0.0.0-w-20230822145918"
},
"patchedDependencies": {
"vitepress@1.0.0-rc.4": "patches/vitepress@1.0.0-rc.4.patch"
Expand Down
7 changes: 4 additions & 3 deletions packages/core/src/actions/switchChain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@ export type SwitchChainParameters<
export type SwitchChainReturnType<
config extends Config = Config,
chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
> = chainId extends config['chains'][number]['id']
? Extract<config['chains'][number], { id: chainId }>
: config['chains'][number]
> = Extract<
config['chains'][number],
{ id: Config extends config ? number : chainId }
>

export type SwitchChainError =
| ProviderNotFoundError
Expand Down
18 changes: 2 additions & 16 deletions packages/core/src/query/switchChain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,12 @@ export function switchChainMutationOptions<config extends Config>(
export type SwitchChainData<
config extends Config,
chainId extends config['chains'][number]['id'],
> = Evaluate<
SwitchChainReturnType<
config,
number extends config['chains'][number]['id']
? config['chains'][number]['id']
: chainId
>
>
> = Evaluate<SwitchChainReturnType<config, chainId>>

export type SwitchChainVariables<
config extends Config,
chainId extends config['chains'][number]['id'],
> = Evaluate<
SwitchChainParameters<
config,
chainId extends config['chains'][number]['id']
? chainId
: config['chains'][number]['id']
>
>
> = Evaluate<SwitchChainParameters<config, chainId>>

export type SwitchChainMutate<config extends Config, context = unknown> = <
chainId extends config['chains'][number]['id'],
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useAccount.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { useSyncExternalStoreWithTracked } from './useSyncExternalStoreWithTracked.js'
import {
type GetAccountReturnType,
getAccount,
Expand All @@ -7,6 +6,7 @@ import {

import type { ConfigParameter } from '../types/properties.js'
import { useConfig } from './useConfig.js'
import { useSyncExternalStoreWithTracked } from './useSyncExternalStoreWithTracked.js'

export type UseAccountParameters = ConfigParameter

Expand Down
7 changes: 5 additions & 2 deletions packages/react/src/hooks/useBalance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { useChainId } from './useChainId.js'
import { useConfig } from './useConfig.js'

export type UseBalanceParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = GetBalanceData,
> = Evaluate<
GetBalanceOptions<config> &
Expand All @@ -41,7 +41,10 @@ export type UseBalanceReturnType<selectData = GetBalanceData> = UseQueryResult<
>

/** https://wagmi.sh/react/hooks/useBalance */
export function useBalance<config extends Config, selectData = GetBalanceData>(
export function useBalance<
config extends Config = ResolvedRegister['config'],
selectData = GetBalanceData,
>(
parameters: UseBalanceParameters<config, selectData> = {},
): UseBalanceReturnType<selectData> {
const { address, ...query } = parameters
Expand Down
4 changes: 2 additions & 2 deletions packages/react/src/hooks/useBlockNumber.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { useChainId } from './useChainId.js'
import { useConfig } from './useConfig.js'

export type UseBlockNumberParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = GetBlockNumberData,
> = Evaluate<
GetBlockNumberOptions<config> &
Expand All @@ -43,7 +43,7 @@ export type UseBlockNumberReturnType<selectData = GetBlockNumberData> =

/** https://wagmi.sh/react/hooks/useBlockNumber */
export function useBlockNumber<
config extends Config,
config extends Config = ResolvedRegister['config'],
selectData = GetBlockNumberData,
>(
parameters: UseBlockNumberParameters<config, selectData> = {},
Expand Down
12 changes: 5 additions & 7 deletions packages/react/src/hooks/useChainId.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,14 @@ import { useSyncExternalStore } from 'react'
import type { ConfigParameter } from '../types/properties.js'
import { useConfig } from './useConfig.js'

export type UseChainIdParameters<
config extends Config = ResolvedRegister['config'],
> = ConfigParameter<config>
export type UseChainIdParameters<config extends Config = Config,> =
ConfigParameter<config>

export type UseChainIdReturnType<
config extends Config = ResolvedRegister['config'],
> = GetChainIdReturnType<config>
export type UseChainIdReturnType<config extends Config = Config,> =
GetChainIdReturnType<config>

/** https://wagmi.sh/react/hooks/useChainId */
export function useChainId<config extends Config>(
export function useChainId<config extends Config = ResolvedRegister['config']>(
parameters: UseChainIdParameters<config> = {},
): UseChainIdReturnType<config> {
const config = useConfig(parameters)
Expand Down
11 changes: 4 additions & 7 deletions packages/react/src/hooks/useConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@ import { WagmiContext } from '../context.js'
import { WagmiProviderNotFoundError } from '../errors/context.js'
import type { ConfigParameter } from '../types/properties.js'

export type UseConfigParameters<
config extends Config = ResolvedRegister['config'],
> = ConfigParameter<config>
export type UseConfigParameters<config extends Config = Config> =
ConfigParameter<config>

export type UseConfigReturnType<
config extends Config = ResolvedRegister['config'],
> = Config extends config ? ResolvedRegister['config'] : config
export type UseConfigReturnType<config extends Config = Config> = config

/** https://wagmi.sh/react/hooks/useConfig */
export function useConfig<config extends Config>(
export function useConfig<config extends Config = ResolvedRegister['config']>(
parameters: UseConfigParameters<config> = {},
): UseConfigReturnType<config> {
const config = parameters.config ?? useContext(WagmiContext)
Expand Down
9 changes: 6 additions & 3 deletions packages/react/src/hooks/useConnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import type { UseMutationOptions, UseMutationResult } from '../utils/query.js'
import { useConfig } from './useConfig.js'

export type UseConnectParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
context = unknown,
> = Evaluate<
UseMutationOptions<
Expand All @@ -31,7 +31,7 @@ export type UseConnectParameters<
>

export type UseConnectReturnType<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
context = unknown,
> = Evaluate<
UseMutationResult<
Expand All @@ -47,7 +47,10 @@ export type UseConnectReturnType<
>

/** https://wagmi.sh/react/hooks/useConnect */
export function useConnect<config extends Config, context = unknown>(
export function useConnect<
config extends Config = ResolvedRegister['config'],
context = unknown,
>(
parameters: UseConnectParameters<config, context> = {},
): UseConnectReturnType<config, context> {
const config = useConfig(parameters)
Expand Down
14 changes: 6 additions & 8 deletions packages/react/src/hooks/useConnectorClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,9 @@ import { useAccount } from './useAccount.js'
import { useChainId } from './useChainId.js'
import { useConfig } from './useConfig.js'

type ChainId = ResolvedRegister['config']['chains'][number]['id']

export type UseConnectorClientParameters<
config extends Config = ResolvedRegister['config'],
chainId extends config['chains'][number]['id'] = ChainId,
config extends Config = Config,
chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
selectData = GetConnectorClientData<config, chainId>,
> = Evaluate<
GetConnectorClientOptions<config, chainId> &
Expand All @@ -42,15 +40,15 @@ export type UseConnectorClientParameters<
>

export type UseConnectorClientReturnType<
config extends Config = ResolvedRegister['config'],
chainId extends config['chains'][number]['id'] = ChainId,
config extends Config = Config,
chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
selectData = GetConnectorClientData<config, chainId>,
> = UseQueryResult<selectData, GetConnectorClientError>

/** https://wagmi.sh/react/hooks/useConnectorClient */
export function useConnectorClient<
config extends Config,
chainId extends config['chains'][number]['id'],
config extends Config = ResolvedRegister['config'],
chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
selectData = GetConnectorClientData<config, chainId>,
>(
parameters: UseConnectorClientParameters<config, chainId, selectData> = {},
Expand Down
4 changes: 2 additions & 2 deletions packages/react/src/hooks/useContractRead.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export type UseContractReadParameters<
'pure' | 'view',
functionName
> = ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = ReadContractData<abi, functionName, args>,
> = UnionEvaluate<
ReadContractOptions<config, abi, functionName, args> &
Expand Down Expand Up @@ -67,10 +67,10 @@ export type UseContractReadReturnType<

/** https://wagmi.sh/react/hooks/useContractRead */
export function useContractRead<
config extends Config,
const abi extends Abi | readonly unknown[],
functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
config extends Config = ResolvedRegister['config'],
selectData = ReadContractData<abi, functionName, args>,
>(
parameters: UseContractReadParameters<
Expand Down
4 changes: 2 additions & 2 deletions packages/react/src/hooks/useContractReads.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import { useConfig } from './useConfig.js'
export type UseContractReadsParameters<
contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
allowFailure extends boolean = true,
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = ReadContractsData<contracts, allowFailure>,
> = Evaluate<
ReadContractsOptions<config, contracts, allowFailure> &
Expand All @@ -48,9 +48,9 @@ export type UseContractReadsReturnType<

/** https://wagmi.sh/react/hooks/useContractReads */
export function useContractReads<
config extends Config,
const contracts extends readonly unknown[],
allowFailure extends boolean = true,
config extends Config = ResolvedRegister['config'],
selectData = ReadContractsData<contracts, allowFailure>,
>(
parameters: UseContractReadsParameters<
Expand Down
4 changes: 2 additions & 2 deletions packages/react/src/hooks/useEnsAddress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { useChainId } from './useChainId.js'
import { useConfig } from './useConfig.js'

export type UseEnsAddressParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = GetEnsAddressData,
> = Evaluate<
GetEnsAddressOptions<config> &
Expand All @@ -36,7 +36,7 @@ export type UseEnsAddressReturnType<selectData = GetEnsAddressData> =

/** https://wagmi.sh/react/hooks/useEnsAddress */
export function useEnsAddress<
config extends Config,
config extends Config = ResolvedRegister['config'],
selectData = GetEnsAddressData,
>(
parameters: UseEnsAddressParameters<config, selectData> = {},
Expand Down
4 changes: 2 additions & 2 deletions packages/react/src/hooks/useEnsAvatar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { useChainId } from './useChainId.js'
import { useConfig } from './useConfig.js'

export type UseEnsAvatarParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = GetEnsAvatarData,
> = Evaluate<
GetEnsAvatarOptions<config> &
Expand All @@ -36,7 +36,7 @@ export type UseEnsAvatarReturnType<selectData = GetEnsAvatarData> =

/** https://wagmi.sh/react/hooks/useEnsAvatar */
export function useEnsAvatar<
config extends Config,
config extends Config = ResolvedRegister['config'],
selectData = GetEnsAvatarData,
>(
parameters: UseEnsAvatarParameters<config, selectData> = {},
Expand Down
7 changes: 5 additions & 2 deletions packages/react/src/hooks/useEnsName.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { useChainId } from './useChainId.js'
import { useConfig } from './useConfig.js'

export type UseEnsNameParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = GetEnsNameData,
> = Evaluate<
GetEnsNameOptions<config> &
Expand All @@ -37,7 +37,10 @@ export type UseEnsNameReturnType<selectData = GetEnsNameData> = UseQueryResult<
>

/** https://wagmi.sh/react/hooks/useEnsName */
export function useEnsName<config extends Config, selectData = GetEnsNameData>(
export function useEnsName<
config extends Config = ResolvedRegister['config'],
selectData = GetEnsNameData,
>(
parameters: UseEnsNameParameters<config, selectData> = {},
): UseEnsNameReturnType<selectData> {
const { address, ...query } = parameters
Expand Down
4 changes: 2 additions & 2 deletions packages/react/src/hooks/useEnsResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { useChainId } from './useChainId.js'
import { useConfig } from './useConfig.js'

export type UseEnsResolverParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = GetEnsResolverData,
> = Evaluate<
GetEnsResolverOptions<config> &
Expand All @@ -36,7 +36,7 @@ export type UseEnsResolverReturnType<selectData = GetEnsResolverData> =

/** https://wagmi.sh/react/hooks/useEnsResolver */
export function useEnsResolver<
config extends Config,
config extends Config = ResolvedRegister['config'],
selectData = GetEnsResolverData,
>(
parameters: UseEnsResolverParameters<config, selectData> = {},
Expand Down
7 changes: 5 additions & 2 deletions packages/react/src/hooks/useFeeData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { useChainId } from './useChainId.js'
import { useConfig } from './useConfig.js'

export type UseFeeDataParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
selectData = GetFeeDataData,
> = Evaluate<
GetFeeDataOptions<config> &
Expand All @@ -41,7 +41,10 @@ export type UseFeeDataReturnType<selectData = GetFeeDataData> = UseQueryResult<
>

/** https://wagmi.sh/react/hooks/useFeeData */
export function useFeeData<config extends Config, selectData = GetFeeDataData>(
export function useFeeData<
config extends Config = ResolvedRegister['config'],
selectData = GetFeeDataData,
>(
parameters: UseFeeDataParameters<config, selectData> = {},
): UseFeeDataReturnType<selectData> {
const config = useConfig(parameters)
Expand Down
9 changes: 6 additions & 3 deletions packages/react/src/hooks/useSwitchAccount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { useConfig } from './useConfig.js'
import { useConnections } from './useConnections.js'

export type UseSwitchAccountParameters<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
context = unknown,
> = Evaluate<
UseMutationOptions<
Expand All @@ -33,7 +33,7 @@ export type UseSwitchAccountParameters<
>

export type UseSwitchAccountReturnType<
config extends Config = ResolvedRegister['config'],
config extends Config = Config,
context = unknown,
> = Evaluate<
UseMutationResult<
Expand All @@ -49,7 +49,10 @@ export type UseSwitchAccountReturnType<
>

/** https://wagmi.sh/react/hooks/useSwitchAccount */
export function useSwitchAccount<config extends Config, context = unknown>(
export function useSwitchAccount<
config extends Config = ResolvedRegister['config'],
context = unknown,
>(
parameters: UseSwitchAccountParameters<config, context> = {},
): UseSwitchAccountReturnType<config, context> {
const config = useConfig(parameters)
Expand Down
Loading

1 comment on commit 67c3481

@vercel
Copy link

@vercel vercel bot commented on 67c3481 Aug 22, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

wagmi-v2 – ./docs

wagmi-v2-wagmi-dev.vercel.app
wagmi-v2-git-alpha-wagmi-dev.vercel.app
alpha.wagmi.sh
wagmi-v2.vercel.app

Please sign in to comment.