Skip to content

Commit

Permalink
feat: more actions/hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
tmm committed Jun 30, 2023
1 parent d54a418 commit 9d73085
Show file tree
Hide file tree
Showing 60 changed files with 1,241 additions and 178 deletions.
16 changes: 15 additions & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ This guide is intended to help you get started with contributing. By following t
This guide covers more advanced topics. Pick the topics based on your needs.

8. [Versioning](#versioning)
9. [Updating dependencies](#updating-dependencies)

<br>

Expand Down Expand Up @@ -184,6 +185,19 @@ If a PR has changesets, you can create a [snapshot release](https://github.com/c
<div align="right">
<a href="#advanced-guide">&uarr; back to top</a></b>
</div>

## Updating dependencies

Use [Taze](https://github.com/antfu/taze) with:

```bash
pnpm deps
```

<div align="right">
<a href="#advanced-guide">&uarr; back to top</a></b>
</div>

<br>

---
Expand Down Expand Up @@ -403,7 +417,7 @@ The changeset should be a `patch` with the description `Added [ConnectorName]` (
If you followed all the instructions, you can submit a pull request and the new connector will likely get merged in pretty quickly!

<div align="right">
<a href="#connector">&uarr; back to top</a></b>
<a href="#adding-a-new-connector">&uarr; back to top</a></b>
</div>

<br>
2 changes: 1 addition & 1 deletion docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"@wagmi/test": "workspace:*",
"unocss": "^0.53.0",
"viem": "^1",
"vitepress": "1.0.0-beta.1",
"vitepress": "1.0.0-beta.3",
"vitepress-plugin-shiki-twoslash": "^0.0.6",
"vue": "^3.3.4",
"wagmi": "workspace:*"
Expand Down
9 changes: 5 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"scripts": {
"build": "pnpm run --r --filter \"./packages/**\" build",
"clean": "pnpm run --r --parallel clean",
"deps": "pnpx taze -r",
"dev": "pnpm --filter vite-react dev",
"dev:core": "pnpm --filter vite-core dev",
"docs:dev": "pnpm --filter docs dev",
Expand Down Expand Up @@ -40,7 +41,7 @@
"rome": "^12.1.0",
"simple-git-hooks": "^2.8.1",
"typescript": "^5.0.4",
"viem": "0.0.0-wagmiv2-20230628182101",
"viem": "1.2.6",
"vite": "^4.3.2",
"vitest": "^0.31.0"
},
Expand All @@ -54,15 +55,15 @@
"@wagmi/core": "workspace:*",
"remark-shiki-twoslash>shiki": "^0.14.1",
"shiki-twoslash>shiki": "^0.14.1",
"viem": "0.0.0-wagmiv2-20230628182101"
"viem": "1.2.6"
},
"patchedDependencies": {
"@coinbase/wallet-sdk@3.7.1": "patches/@coinbase__wallet-sdk@3.7.1.patch",
"@walletconnect/ethereum-provider@2.8.5": "patches/@walletconnect__ethereum-provider@2.8.5.patch",
"vitepress@1.0.0-beta.1": "patches/vitepress@1.0.0-beta.1.patch"
"vitepress@1.0.0-beta.3": "patches/vitepress@1.0.0-beta.3.patch"
},
"peerDependencyRules": {
"ignoreMissing": ["@algolia/client-search", "esbuild", "react"]
"ignoreMissing": ["@algolia/client-search", "esbuild", "search-insights"]
}
}
}
4 changes: 2 additions & 2 deletions packages/core/src/actions/connect.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ test('behavior: user rejected request', async () => {
[UserRejectedRequestError: User rejected the request.
Details: Failed to connect.
Version: viem@1.2.2]
Version: viem@1.2.6]
`)
})

Expand All @@ -65,6 +65,6 @@ test('behavior: already connected', async () => {
await expect(connect(config, { connector })).rejects.toMatchInlineSnapshot(`
[ConnectorAlreadyConnectedError: Connector already connected.
Version: @wagmi/core@2.0.0]
Version: @wagmi/core@x.y.z]
`)
})
11 changes: 7 additions & 4 deletions packages/core/src/actions/connect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ import { type Config, type Connector } from '../config.js'
import { type CreateConnectorFn } from '../connector.js'
import type { BaseError } from '../errors/base.js'
import { ConnectorAlreadyConnectedError } from '../errors/config.js'
import type { ChainId } from '../types/properties.js'
import type { Evaluate } from '../types/utils.js'

export type ConnectParameters<config extends Config = Config> = {
chainId?: config['chains'][number]['id'] | undefined
connector: Connector | CreateConnectorFn
}
export type ConnectParameters<config extends Config = Config> = Evaluate<
{
connector: Connector | CreateConnectorFn
} & ChainId<config>
>

export type ConnectReturnType<config extends Config = Config> = {
accounts: readonly Address[]
Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/actions/disconnect.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ test('behavior: not connected to connector', async () => {
`
[ConnectorNotFoundError: Connector not found.
Version: @wagmi/core@2.0.0]
Version: @wagmi/core@x.y.z]
`,
)
})
Expand All @@ -38,7 +38,7 @@ test('behavior: connector passed not connected', async () => {
).rejects.toMatchInlineSnapshot(`
[ConnectorNotFoundError: Connector not found.
Version: @wagmi/core@2.0.0]
Version: @wagmi/core@x.y.z]
`)
})

Expand Down
13 changes: 8 additions & 5 deletions packages/core/src/actions/getBalance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ import {
formatUnits,
} from 'viem'
import {
type GetBalanceReturnType as viem_GetBalanceReturnType,
getBalance as viem_getBalance,
watchBlockNumber as viem_watchBlockNumber,
} from 'viem/actions'

import type { Config } from '../config.js'
import type { ChainId } from '../types/properties.js'
import { type Unit } from '../types/unit.js'
import { type Evaluate, type Omit, type OneOf } from '../types/utils.js'
import { getUnit } from '../utils/getUnit.js'
Expand All @@ -22,19 +24,20 @@ import type {
export type GetBalanceParameters<config extends Config = Config> = Evaluate<
{
address: Address
chainId?: config['chains'][number]['id'] | undefined

token?: Address | undefined
unit?: Unit | undefined
} & OneOf<
{ blockNumber?: bigint | undefined } | { blockTag?: BlockTag | undefined }
>
} & ChainId<config> &
OneOf<
{ blockNumber?: bigint | undefined } | { blockTag?: BlockTag | undefined }
>
>

export type GetBalanceReturnType = {
decimals: number
formatted: string
symbol: string
value: import('viem').GetBalanceReturnType
value: viem_GetBalanceReturnType
}

export type GetBalanceError =
Expand Down
26 changes: 11 additions & 15 deletions packages/core/src/actions/getBlockNumber.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
import type { RpcError } from 'viem'
import {
type GetBlockNumberParameters as viem_GetBlockNumberParameters,
type GetBlockNumberReturnType as viem_GetBlockNumberReturnType,
type WatchBlockNumberParameters as viem_WatchBlockNumberParameters,
type WatchBlockNumberReturnType as viem_WatchBlockNumberReturnType,
getBlockNumber as viem_getBlockNumber,
watchBlockNumber as viem_watchBlockNumber,
} from 'viem/actions'

import { type Config } from '../config.js'
import { type Evaluate } from '../internal.js'
import type { ChainId } from '../types/properties.js'
import type { Evaluate } from '../types/utils.js'

export type GetBlockNumberParameters<config extends Config = Config> = Evaluate<
Pick<import('viem').GetBlockNumberParameters, 'maxAge'> & {
chainId?: config['chains'][number]['id'] | undefined
}
viem_GetBlockNumberParameters & ChainId<config>
>

export type GetBlockNumberReturnType =
| import('viem').GetBlockNumberReturnType
| undefined
export type GetBlockNumberReturnType = viem_GetBlockNumberReturnType

export type GetBlockNumberError =
| RpcError
Expand All @@ -37,17 +38,12 @@ export function getBlockNumber<config extends Config>(

export type WatchBlockNumberParameters<config extends Config = Config> =
Evaluate<
Pick<
import('viem').WatchBlockNumberParameters,
'onBlockNumber' | 'onError'
> & {
chainId?: config['chains'][number]['id'] | undefined
Pick<viem_WatchBlockNumberParameters, 'onBlockNumber' | 'onError'> & {
syncConnectedChain?: boolean
}
} & ChainId<config>
>

export type WatchBlockNumberReturnType =
import('viem').WatchBlockNumberReturnType
export type WatchBlockNumberReturnType = viem_WatchBlockNumberReturnType

// TODO: wrap in viem's `observe` to avoid duplicate invocations.
/** https://wagmi.sh/core/actions/getBlockNumber#watcher */
Expand Down
3 changes: 0 additions & 3 deletions packages/core/src/actions/getConnections.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import type { Config, Connection } from '../config.js'
import { type Evaluate, deepEqual } from '../internal.js'

///////////////////////////////////////////////////////////////////////////
// Getter

export type GetConnectionsReturnType = Evaluate<Connection>[]

let previousConnections: Connection[] = []
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/actions/getConnectorClient.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ test('behavior: not connected', async () => {
).rejects.toThrowErrorMatchingInlineSnapshot(`
"Connector not found.
Version: @wagmi/core@2.0.0"
Version: @wagmi/core@x.y.z"
`)
})
5 changes: 2 additions & 3 deletions packages/core/src/actions/getConnectorClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,12 @@ import {
import type { Config } from '../config.js'
import { ConnectorNotFoundError } from '../errors/config.js'
import type { Evaluate } from '../internal.js'
import type { ChainId } from '../types/properties.js'

export type GetConnectorClientParameters<
config extends Config = Config,
chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
> = {
chainId?: chainId | config['chains'][number]['id'] | undefined
}
> = ChainId<config, chainId>

export type GetConnectorClientReturnType<
config extends Config = Config,
Expand Down
12 changes: 12 additions & 0 deletions packages/core/src/actions/getEnsAddress.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { config } from '@wagmi/test'
import { expect, test } from 'vitest'

import { getEnsAddress } from './getEnsAddress.js'

test('default', async () => {
await expect(
getEnsAddress(config, { name: 'wagmi-dev.eth' }),
).resolves.toMatchInlineSnapshot(
'"0xd2135CfB216b74109775236E36d4b433F1DF507B"',
)
})
27 changes: 27 additions & 0 deletions packages/core/src/actions/getEnsAddress.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import {
type GetEnsAddressParameters as viem_GetEnsAddressParameters,
type GetEnsAddressReturnType as viem_GetEnsAddressReturnType,
getEnsAddress as viem_getEnsAddress,
} from 'viem/actions'

import { type Config } from '../config.js'
import { type Evaluate } from '../internal.js'
import type { ChainId } from '../types/properties.js'

export type GetEnsAddressParameters<config extends Config = Config> = Evaluate<
viem_GetEnsAddressParameters & ChainId<config>
>

export type GetEnsAddressReturnType = viem_GetEnsAddressReturnType

export type GetEnsAddressError = Error

/** https://wagmi.sh/core/actions/getEnsAddress */
export function getEnsAddress<config extends Config>(
config: config,
parameters: GetEnsAddressParameters<config>,
): Promise<GetEnsAddressReturnType> {
const { chainId } = parameters
const client = config.getClient({ chainId })
return viem_getEnsAddress(client, parameters)
}
27 changes: 27 additions & 0 deletions packages/core/src/actions/getEnsAvatar.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import {
type GetEnsAvatarParameters as viem_GetEnsAvatarParameters,
type GetEnsAvatarReturnType as viem_GetEnsAvatarReturnType,
getEnsAvatar as viem_getEnsAvatar,
} from 'viem/actions'

import { type Config } from '../config.js'
import { type Evaluate } from '../internal.js'
import type { ChainId } from '../types/properties.js'

export type GetEnsAvatarParameters<config extends Config = Config> = Evaluate<
viem_GetEnsAvatarParameters & ChainId<config>
>

export type GetEnsAvatarReturnType = viem_GetEnsAvatarReturnType

export type GetEnsAvatarError = Error

/** https://wagmi.sh/core/actions/getEnsAvatar */
export function getEnsAvatar<config extends Config>(
config: config,
parameters: GetEnsAvatarParameters<config>,
): Promise<GetEnsAvatarReturnType> {
const { chainId } = parameters
const client = config.getClient({ chainId })
return viem_getEnsAvatar(client, parameters)
}
12 changes: 12 additions & 0 deletions packages/core/src/actions/getEnsName.test copy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { config } from '@wagmi/test'
import { expect, test } from 'vitest'

import { getEnsName } from './getEnsName.js'

test('default', async () => {
await expect(
getEnsName(config, {
address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',
}),
).resolves.toMatchInlineSnapshot('"wagmi-dev.eth"')
})
12 changes: 12 additions & 0 deletions packages/core/src/actions/getEnsName.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { config } from '@wagmi/test'
import { expect, test } from 'vitest'

import { getEnsName } from './getEnsName.js'

test('default', async () => {
await expect(
getEnsName(config, {
address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',
}),
).resolves.toMatchInlineSnapshot('"wagmi-dev.eth"')
})
33 changes: 33 additions & 0 deletions packages/core/src/actions/getEnsName.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import type { ChainDoesNotSupportContract, RpcError } from 'viem'
import {
type GetEnsNameParameters as viem_GetEnsNameParameters,
type GetEnsNameReturnType as viem_GetEnsNameReturnType,
getEnsName as viem_getEnsName,
} from 'viem/actions'

import { type Config } from '../config.js'
import { type Evaluate } from '../internal.js'
import type { ChainId } from '../types/properties.js'

export type GetEnsNameParameters<config extends Config = Config> = Evaluate<
viem_GetEnsNameParameters & ChainId<config>
>

export type GetEnsNameReturnType = viem_GetEnsNameReturnType

export type GetEnsNameError =
// viem getEnsName
| ChainDoesNotSupportContract
| RpcError
// base
| Error

/** https://wagmi.sh/core/actions/getEnsName */
export function getEnsName<config extends Config>(
config: config,
parameters: GetEnsNameParameters<config>,
): Promise<GetEnsNameReturnType> {
const { chainId } = parameters
const client = config.getClient({ chainId })
return viem_getEnsName(client, parameters)
}
Loading

0 comments on commit 9d73085

Please sign in to comment.