diff --git a/.changeset/five-steaks-invite.md b/.changeset/five-steaks-invite.md new file mode 100644 index 000000000..882048bf6 --- /dev/null +++ b/.changeset/five-steaks-invite.md @@ -0,0 +1,7 @@ +--- +"@ant-design/web3-ethers": patch +"@ant-design/web3-wagmi": patch +"@ant-design/web3": patch +--- + +chore(ethers): adjusted the compatibility form of the old version of etherjs diff --git a/.changeset/soft-singers-reflect.md b/.changeset/soft-singers-reflect.md new file mode 100644 index 000000000..136a43cce --- /dev/null +++ b/.changeset/soft-singers-reflect.md @@ -0,0 +1,5 @@ +--- +"@ant-design/web3-ethers-v5": major +--- + +feat(ethers-v5): split and release diff --git a/examples/ethers-v5/CHANGELOG.md b/examples/ethers-v5/CHANGELOG.md index eacdf91d5..485bb39b4 100644 --- a/examples/ethers-v5/CHANGELOG.md +++ b/examples/ethers-v5/CHANGELOG.md @@ -19,7 +19,6 @@ - @ant-design/web3-common@1.9.0 - @ant-design/web3-ethers@1.0.1 - ### Patch Changes - Updated dependencies [62f1def] diff --git a/examples/ethers-v5/package.json b/examples/ethers-v5/package.json index 72b95fdc2..4b9971142 100644 --- a/examples/ethers-v5/package.json +++ b/examples/ethers-v5/package.json @@ -13,7 +13,7 @@ "@ant-design/web3": "workspace:*", "@ant-design/web3-assets": "workspace:*", "@ant-design/web3-common": "workspace:*", - "@ant-design/web3-ethers": "workspace:*", + "@ant-design/web3-ethers-v5": "workspace:*", "antd": "^5.16.5", "ethers": "^5.7.2", "umi": "^4.1.5" @@ -22,6 +22,5 @@ "@types/react": "^18.2.78", "@types/react-dom": "^18.2.25", "typescript": "^5.4.4" - }, - "version": null + } } diff --git a/examples/ethers-v5/src/pages/index.tsx b/examples/ethers-v5/src/pages/index.tsx index e7a34efe8..3ffac2081 100644 --- a/examples/ethers-v5/src/pages/index.tsx +++ b/examples/ethers-v5/src/pages/index.tsx @@ -7,7 +7,7 @@ import { TokenPocket, useEthersProvider, useEthersSigner, -} from '@ant-design/web3-ethers/legacy-v5'; +} from '@ant-design/web3-ethers-v5'; import { Button, message } from 'antd'; const App = () => { diff --git a/examples/ethers/CHANGELOG.md b/examples/ethers/CHANGELOG.md index bcd94706b..71973d561 100644 --- a/examples/ethers/CHANGELOG.md +++ b/examples/ethers/CHANGELOG.md @@ -19,7 +19,6 @@ - @ant-design/web3-common@1.9.0 - @ant-design/web3-ethers@1.0.1 - ### Patch Changes - Updated dependencies [62f1def] diff --git a/examples/ethers/package.json b/examples/ethers/package.json index 8c93bb39d..b3ede510c 100644 --- a/examples/ethers/package.json +++ b/examples/ethers/package.json @@ -22,6 +22,5 @@ "@types/react": "^18.2.78", "@types/react-dom": "^18.2.25", "typescript": "^5.4.4" - }, - "version": null + } } diff --git a/packages/ethers-v5/.fatherrc.ts b/packages/ethers-v5/.fatherrc.ts new file mode 100644 index 000000000..3305dd5a7 --- /dev/null +++ b/packages/ethers-v5/.fatherrc.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'father'; + +export default defineConfig({ + extends: '../../.fatherrc.base.ts', +}); diff --git a/packages/ethers-v5/README.md b/packages/ethers-v5/README.md new file mode 100644 index 000000000..142d539bb --- /dev/null +++ b/packages/ethers-v5/README.md @@ -0,0 +1,3 @@ +# @ant-design/web3-ethers + +[https://web3.ant.design](https://web3.ant.design) diff --git a/packages/ethers-v5/package.json b/packages/ethers-v5/package.json new file mode 100644 index 000000000..e977cc679 --- /dev/null +++ b/packages/ethers-v5/package.json @@ -0,0 +1,80 @@ +{ + "name": "@ant-design/web3-ethers-v5", + "version": "0.1.0", + "type": "module", + "main": "dist/esm/index.js", + "module": "dist/esm/index.js", + "typings": "dist/esm/index.d.ts", + "exports": { + ".": { + "import": "./dist/esm/index.js", + "require": "./dist/lib/index.js", + "types": "./dist/esm/index.d.ts" + }, + "./wagmi": { + "import": "./dist/esm/wagmi.js", + "require": "./dist/lib/wagmi.js", + "types": "./dist/esm/wagmi.d.ts" + } + }, + "files": [ + "dist", + "CHANGELOG.md", + "README.md" + ], + "keywords": [ + "ant", + "component", + "components", + "design", + "framework", + "frontend", + "react", + "react-component", + "ui", + "web3", + "ethers-v5", + "ethersjs" + ], + "homepage": "https://we3.ant.design", + "bugs": { + "url": "https://github.com/ant-design/ant-design-web3/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/ant-design/ant-design-web3" + }, + "scripts": { + "dev": "father dev", + "build": "father build" + }, + "dependencies": { + "@ant-design/web3-assets": "workspace:*", + "@ant-design/web3-common": "workspace:*", + "@ant-design/web3-wagmi": "workspace:*", + "@ant-design/web3-ethers": "workspace:*", + "@tanstack/react-query": "^5.28.4", + "debug": "^4.3.4", + "viem": ">=2.9.25", + "wagmi": "^2.8.3" + }, + "devDependencies": { + "@types/debug": "^4.1.12", + "father": "^4.4.0", + "typescript": "^5.4.4", + "ethers": "^5.7.2" + }, + "peerDependencies": { + "ethers": "^5.7.2" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org", + "access": "public" + }, + "browserslist": [ + "last 2 versions", + "Firefox ESR", + "> 1%", + "ie >= 11" + ] +} diff --git a/packages/ethers-v5/src/global.d.ts b/packages/ethers-v5/src/global.d.ts new file mode 100644 index 000000000..c36cb9bc7 --- /dev/null +++ b/packages/ethers-v5/src/global.d.ts @@ -0,0 +1,5 @@ +import type { EIP1193Provider } from 'viem'; + +declare interface Window { + ethereum?: EIP1193Provider; +} diff --git a/packages/ethers-v5/src/hooks/index.ts b/packages/ethers-v5/src/hooks/index.ts new file mode 100644 index 000000000..e96b8f1f7 --- /dev/null +++ b/packages/ethers-v5/src/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './use-ethers-provider'; +export * from './use-ethers-signer'; diff --git a/packages/ethers/src/hooks/use-ethers-provider-v5.test.tsx b/packages/ethers-v5/src/hooks/use-ethers-provider.test.tsx similarity index 76% rename from packages/ethers/src/hooks/use-ethers-provider-v5.test.tsx rename to packages/ethers-v5/src/hooks/use-ethers-provider.test.tsx index 261051173..f7ef0ea30 100644 --- a/packages/ethers/src/hooks/use-ethers-provider-v5.test.tsx +++ b/packages/ethers-v5/src/hooks/use-ethers-provider.test.tsx @@ -1,9 +1,9 @@ +import { EthersWeb3ConfigProvider } from '@ant-design/web3-ethers'; import { render } from '@testing-library/react'; -import { providers } from 'ethers-v5'; +import { providers } from 'ethers'; import { describe, expect, test } from 'vitest'; -import { EthersWeb3ConfigProvider } from '../ethers-provider'; -import { useEthersProvider } from './use-ethers-provider-v5'; +import { useEthersProvider } from './use-ethers-provider'; describe('useEthersProvider(v5)', async () => { test('basic usage', async () => { diff --git a/packages/ethers/src/hooks/use-ethers-provider-v5.ts b/packages/ethers-v5/src/hooks/use-ethers-provider.ts similarity index 95% rename from packages/ethers/src/hooks/use-ethers-provider-v5.ts rename to packages/ethers-v5/src/hooks/use-ethers-provider.ts index 8e2fe6455..1d69de35e 100644 --- a/packages/ethers/src/hooks/use-ethers-provider-v5.ts +++ b/packages/ethers-v5/src/hooks/use-ethers-provider.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { providers } from 'ethers-v5'; +import { providers } from 'ethers'; import type { Chain, Client, Transport } from 'viem'; import { useClient, type Config } from 'wagmi'; diff --git a/packages/ethers/src/hooks/use-ethers-signer-v5.test.tsx b/packages/ethers-v5/src/hooks/use-ethers-signer.test.tsx similarity index 81% rename from packages/ethers/src/hooks/use-ethers-signer-v5.test.tsx rename to packages/ethers-v5/src/hooks/use-ethers-signer.test.tsx index fd14b5e0e..73306d407 100644 --- a/packages/ethers/src/hooks/use-ethers-signer-v5.test.tsx +++ b/packages/ethers-v5/src/hooks/use-ethers-signer.test.tsx @@ -1,8 +1,8 @@ +import { EthersWeb3ConfigProvider } from '@ant-design/web3-ethers'; import { render } from '@testing-library/react'; import { describe, expect, test } from 'vitest'; -import { EthersWeb3ConfigProvider } from '../ethers-provider'; -import { useEthersSigner } from './use-ethers-signer-v5'; +import { useEthersSigner } from './use-ethers-signer'; describe('useEthersSigner(v5)', async () => { test('basic usage', async () => { diff --git a/packages/ethers/src/hooks/use-ethers-signer-v5.ts b/packages/ethers-v5/src/hooks/use-ethers-signer.ts similarity index 94% rename from packages/ethers/src/hooks/use-ethers-signer-v5.ts rename to packages/ethers-v5/src/hooks/use-ethers-signer.ts index 96ed2cbe3..67c7fab21 100644 --- a/packages/ethers/src/hooks/use-ethers-signer-v5.ts +++ b/packages/ethers-v5/src/hooks/use-ethers-signer.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { providers } from 'ethers-v5'; +import { providers } from 'ethers'; import type { Account, Chain, Client, Transport } from 'viem'; import { useConnectorClient, type Config } from 'wagmi'; diff --git a/packages/ethers-v5/src/index.ts b/packages/ethers-v5/src/index.ts new file mode 100644 index 000000000..b63f0c3af --- /dev/null +++ b/packages/ethers-v5/src/index.ts @@ -0,0 +1,3 @@ +export * from './provider'; +export * from './wallets'; +export * from './hooks'; diff --git a/packages/ethers-v5/src/provider.ts b/packages/ethers-v5/src/provider.ts new file mode 100644 index 000000000..83ca363fd --- /dev/null +++ b/packages/ethers-v5/src/provider.ts @@ -0,0 +1 @@ +export * from '@ant-design/web3-ethers/provider'; diff --git a/packages/ethers-v5/src/wagmi.ts b/packages/ethers-v5/src/wagmi.ts new file mode 100644 index 000000000..28cca2f4e --- /dev/null +++ b/packages/ethers-v5/src/wagmi.ts @@ -0,0 +1 @@ +export * from '@ant-design/web3-ethers/wagmi'; diff --git a/packages/ethers-v5/src/wallets.ts b/packages/ethers-v5/src/wallets.ts new file mode 100644 index 000000000..43e4d7c47 --- /dev/null +++ b/packages/ethers-v5/src/wallets.ts @@ -0,0 +1 @@ +export * from '@ant-design/web3-ethers/wallets'; diff --git a/packages/ethers-v5/tsconfig.json b/packages/ethers-v5/tsconfig.json new file mode 100644 index 000000000..928e5b0ef --- /dev/null +++ b/packages/ethers-v5/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src", "global.d.ts"] +} diff --git a/packages/ethers/package.json b/packages/ethers/package.json index bf1b7019c..80eed9dc0 100644 --- a/packages/ethers/package.json +++ b/packages/ethers/package.json @@ -11,10 +11,15 @@ "require": "./dist/lib/index.js", "types": "./dist/esm/index.d.ts" }, - "./legacy-v5": { - "import": "./dist/esm/index-v5.js", - "require": "./dist/lib/index-v5.js", - "types": "./dist/esm/index-v5.d.ts" + "./provider": { + "import": "./dist/esm/ethers-provider/index.js", + "require": "./dist/lib/ethers-provider/index.js", + "types": "./dist/esm/ethers-provider/index.d.ts" + }, + "./wallets": { + "import": "./dist/esm/wallets/index.js", + "require": "./dist/lib/wallets/index.js", + "types": "./dist/esm/wallets/index.d.ts" }, "./wagmi": { "import": "./dist/esm/wagmi.js", @@ -66,11 +71,10 @@ "@types/debug": "^4.1.12", "father": "^4.4.0", "typescript": "^5.4.4", - "ethers-v5": "npm:ethers@^5.7.2", - "ethers-v6": "npm:ethers@^6.11.1" + "ethers": "^6.11.1" }, "peerDependencies": { - "ethers": "^5.7.2 || ^6.11.1" + "ethers": "^6.11.1" }, "publishConfig": { "registry": "https://registry.npmjs.org", diff --git a/packages/ethers/src/hooks/index-v5.ts b/packages/ethers/src/hooks/index-v5.ts deleted file mode 100644 index 94b44424f..000000000 --- a/packages/ethers/src/hooks/index-v5.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './use-ethers-provider-v5'; -export * from './use-ethers-signer-v5'; diff --git a/packages/ethers/src/hooks/use-ethers-provider.test.tsx b/packages/ethers/src/hooks/use-ethers-provider.test.tsx index 06264a226..0d8a6dc80 100644 --- a/packages/ethers/src/hooks/use-ethers-provider.test.tsx +++ b/packages/ethers/src/hooks/use-ethers-provider.test.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import { JsonRpcProvider } from 'ethers-v6'; +import { JsonRpcProvider } from 'ethers'; import { describe, expect, test } from 'vitest'; import { EthersWeb3ConfigProvider } from '../ethers-provider'; diff --git a/packages/ethers/src/hooks/use-ethers-provider.ts b/packages/ethers/src/hooks/use-ethers-provider.ts index bf48108c7..9e52b9823 100644 --- a/packages/ethers/src/hooks/use-ethers-provider.ts +++ b/packages/ethers/src/hooks/use-ethers-provider.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { FallbackProvider, JsonRpcProvider } from 'ethers-v6'; +import { FallbackProvider, JsonRpcProvider } from 'ethers'; import type { Chain, Client, Transport } from 'viem'; import { useClient, type Config } from 'wagmi'; diff --git a/packages/ethers/src/hooks/use-ethers-signer.ts b/packages/ethers/src/hooks/use-ethers-signer.ts index 753bffa3a..30ff4e061 100644 --- a/packages/ethers/src/hooks/use-ethers-signer.ts +++ b/packages/ethers/src/hooks/use-ethers-signer.ts @@ -1,5 +1,5 @@ import { useMemo } from 'react'; -import { BrowserProvider, JsonRpcSigner } from 'ethers-v6'; +import { BrowserProvider, JsonRpcSigner } from 'ethers'; import type { Account, Chain, Client, Transport } from 'viem'; import { useConnectorClient, type Config } from 'wagmi'; diff --git a/packages/ethers/src/index-v5.ts b/packages/ethers/src/index-v5.ts deleted file mode 100644 index 29d26e3ec..000000000 --- a/packages/ethers/src/index-v5.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './ethers-provider'; -export * from './wallets'; -export * from './hooks/index-v5'; diff --git a/packages/wagmi/package.json b/packages/wagmi/package.json index 91fe7c83a..36ae787d1 100644 --- a/packages/wagmi/package.json +++ b/packages/wagmi/package.json @@ -47,6 +47,7 @@ }, "devDependencies": { "@types/debug": "^4.1.12", + "@wagmi/core": "^2.9.3", "father": "^4.4.0", "typescript": "^5.4.4", "wagmi": "^2.8.6", diff --git a/packages/wagmi/src/wagmi-provider/methods/addNameToAccount.ts b/packages/wagmi/src/wagmi-provider/methods/addNameToAccount.ts index 07b838b21..7ede0f5e9 100644 --- a/packages/wagmi/src/wagmi-provider/methods/addNameToAccount.ts +++ b/packages/wagmi/src/wagmi-provider/methods/addNameToAccount.ts @@ -1,5 +1,6 @@ import type { Account } from '@ant-design/web3-common'; -import { getEnsName, type Config } from '@wagmi/core'; +import { getEnsName } from '@wagmi/core'; +import type { Config } from 'wagmi'; export async function addNameToAccount( config: Config, diff --git a/packages/wagmi/src/wagmi-provider/methods/getNFTMetadata.ts b/packages/wagmi/src/wagmi-provider/methods/getNFTMetadata.ts index 89a9fa716..76cf2b8f4 100644 --- a/packages/wagmi/src/wagmi-provider/methods/getNFTMetadata.ts +++ b/packages/wagmi/src/wagmi-provider/methods/getNFTMetadata.ts @@ -1,5 +1,6 @@ import { fillAddressWith0x, requestWeb3Asset, type NFTMetadata } from '@ant-design/web3-common'; -import { readContract, type Config } from '@wagmi/core'; +import { readContract } from '@wagmi/core'; +import type { Config } from 'wagmi'; export async function getNFTMetadata( config: Config, @@ -7,7 +8,7 @@ export async function getNFTMetadata( tokenId: bigint, chainId?: number, ): Promise { - const tokenURI = await readContract(config, { + const tokenURI = await readContract(config as any, { address: fillAddressWith0x(address), args: [tokenId], chainId, diff --git a/packages/web3/src/bitcoin/index.md b/packages/web3/src/bitcoin/index.md index f64b24325..35cba9593 100644 --- a/packages/web3/src/bitcoin/index.md +++ b/packages/web3/src/bitcoin/index.md @@ -1,8 +1,9 @@ --- nav: Components +order: 1 group: title: Connect Blockchains - order: 1 + order: 2 tag: title: New color: success diff --git a/packages/web3/src/bitcoin/index.zh-CN.md b/packages/web3/src/bitcoin/index.zh-CN.md index 1cf342685..6dcaddc4b 100644 --- a/packages/web3/src/bitcoin/index.zh-CN.md +++ b/packages/web3/src/bitcoin/index.zh-CN.md @@ -1,11 +1,12 @@ --- nav: 组件 subtitle: 比特币 +order: 1 group: title: 连接链 - order: 1 + order: 2 tag: - title: 新 + title: 新增 color: success --- diff --git a/packages/web3/src/ethereum/demos/ethers-basic.tsx b/packages/web3/src/ethereum-ethersjs/demos/ethers-basic.tsx similarity index 100% rename from packages/web3/src/ethereum/demos/ethers-basic.tsx rename to packages/web3/src/ethereum-ethersjs/demos/ethers-basic.tsx diff --git a/packages/web3/src/ethereum-ethersjs/index.md b/packages/web3/src/ethereum-ethersjs/index.md new file mode 100644 index 000000000..3a6556995 --- /dev/null +++ b/packages/web3/src/ethereum-ethersjs/index.md @@ -0,0 +1,57 @@ +--- +nav: Components +order: 3 +group: + title: Connect Blockchains + order: 2 +--- + +# Ethereum (ethersjs) + +Developers who are familiar with `ethers` can install `@ant-design/web3-ethers` to use with the component library, most of which are consistent with the `wagmi` adapter. + + + +### Basic usage + +This example shows basic usage using the `ethers` adapter. We provide two react hooks to obtain `provider` and `signer`, which you can use in components to perform on-chain operations. + +- `useEthersProvider`: Get the `Provider` instance of `ethers`. +- `useEthersSigner`: Get the `Signer` instance of `ethers`. + + + +### Compatible with ethers legacy versions + +If you are a user of `ethers@5.x`, you can manually install the v5 version of ethers and modify the adapter introduction method. Versions prior to v5 are no longer supported. It is recommended to use after upgrading to the latest version: + + + +```tsx | pure +import { EthersWeb3ConfigProvider, useEthersProvider } from '@ant-design/web3-ethers-v5'; // importing the adapter for ethers@5.x + +const Component = () => { + const provider = useEthersProvider(); + // do something with provider +}; + +const App = () => { + return ( + + + + ); +}; +``` + +### EthersWeb3ConfigProviderProps + +| Property | Description | Type | Default | Version | +| --- | --- | --- | --- | --- | +| wallets | Wallets | [WalletFactory](#walletfactory)[] | - | - | +| chains | Chains | [Chain](./types#chain)[] | - | - | +| ens | Whether to display ENS | `boolean` | - | - | +| balance | Whether to display balance | `boolean` | - | - | +| locale | Multilingual settings | [Locale](https://github.com/ant-design/ant-design-web3/blob/main/packages/common/src/locale/en_US.ts) | - | - | +| eip6963 | Whether to use EIP6963 protocol wallet and related configurations | `boolean` \| `EIP6963Config` | `false` | | +| walletConnect | Whether to use the Wallet Connect protocol | `false` \| [WalletConnectOptions](https://wagmi.sh/core/api/connectors/walletConnect#parameters) | `false` | | diff --git a/packages/web3/src/ethereum-ethersjs/index.zh-CN.md b/packages/web3/src/ethereum-ethersjs/index.zh-CN.md new file mode 100644 index 000000000..2aa14e0f6 --- /dev/null +++ b/packages/web3/src/ethereum-ethersjs/index.zh-CN.md @@ -0,0 +1,58 @@ +--- +nav: 组件 +subtitle: 以太坊 +order: 3 +group: + title: 连接链 + order: 2 +--- + +# Ethereum (ethersjs) + +熟悉 `ethers` 的开发者可以安装 `@ant-design/web3-ethers` 配合组件库使用,其中绝大部份用法都与 `wagmi` 适配器一致。 + + + +### 基本使用 + +这个例子展示了使用 `ethers` 适配器的基本用法。我们提供了两个 react hooks 来获取 `provider` 和 `signer`,你可以在组件中使用它们来进行链上操作: + +- `useEthersProvider`: 获取 `ethers` 的 `Provider` 实例。 +- `useEthersSigner`: 获取 `ethers` 的 `Signer` 实例。 + + + +### Ethers 旧版本兼容 + +如果您是 `ethers@5.x` 的用户,可以手动安装 v5 版本的 ethers,并修改适配器的引入方式,v5 以前的版本不再提供支持,建议升级到最新版本后使用: + + + +```tsx | pure +import { EthersWeb3ConfigProvider, useEthersProvider } from '@ant-design/web3-ethers-v5'; // 引入 ethers@5.x 的适配器 + +const Component = () => { + const provider = useEthersProvider(); + // do something with provider +}; + +const App = () => { + return ( + + + + ); +}; +``` + +### EthersWeb3ConfigProviderProps + +| 属性 | 描述 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| wallets | 钱包配置 | [WalletFactory](#walletfactory)\[\] | - | - | +| chains | 链的配置 | [Chain](./types#chain)\[\] | - | - | +| ens | 是否显示 ENS | `boolean` | - | - | +| balance | 是否显示余额 | `boolean` | - | - | +| locale | 多语言设置 | [Locale](https://github.com/ant-design/ant-design-web3/blob/main/packages/common/src/locale/zh_CN.ts) | - | - | +| eip6963 | 是否采用 EIP6963 协议钱包以及相关配置 | `boolean` \| `EIP6963Config` | `false` | | +| walletConnect | 是否采用 Wallet Connect 协议 | `false` \| [WalletConnectOptions](https://wagmi.sh/core/api/connectors/walletConnect#parameters) | `false` | | diff --git a/packages/web3/src/ethereum/index.md b/packages/web3/src/ethereum/index.md index 9fda4289a..fb14ee0df 100644 --- a/packages/web3/src/ethereum/index.md +++ b/packages/web3/src/ethereum/index.md @@ -1,11 +1,9 @@ --- nav: Components +order: 2 group: title: Connect Blockchains order: 2 -tag: - title: Update - color: success --- # Ethereum @@ -16,6 +14,8 @@ If you are using wagmi 1.x, you can check [@ant-design/web3-wagmi@1.2.0 document Through it, you don't need to handle the connection status of the component, chain data request and other logic by yourself. It will provide relevant global status and interfaces for the components through [Web3ConfigProvider](../web3-config-provider/index.md). +If you want to use `ethers` in your project, we provide the `@ant-design/web3-ethers` adapter, which is compatible with the latest `v6` and `v5` versions. You can [view the documentation](../ethereum-ethersjs/index.md) to use it. + Currently, we officially provide the adapter of Ethereum, and you can also develop your own adapter to support other chains. You can read the [adapter documentation](../../../../docs/guide/adapter.md) to learn more about the adapter. ## Recommended configuration @@ -97,53 +97,3 @@ When the `showQrModal` configuration is not `false`, the built-in [web3modal](ht ### UniversalWallet A Class for creating your own wallet, it meets the interface requirements of WalletFactory. For specific use, please refer to the example in [Customize Wallet Information](#customize-wallet-information). - -## Ethers Adapter - -Developers who are familiar with `ethers` can install `@ant-design/web3-ethers` to use with the component library, most of which are consistent with the `wagmi` adapter. - - - -### Basic usage - -This example shows basic usage using the `ethers` adapter. We provide two react hooks to obtain `provider` and `signer`, which you can use in components to perform on-chain operations. - -- `useEthersProvider`: Get the `Provider` instance of `ethers`. -- `useEthersSigner`: Get the `Signer` instance of `ethers`. - - - -### Compatible with ethers legacy versions - -If you are a user of `ethers@5.x`, you can manually install the v5 version of ethers and modify the adapter introduction method. Versions prior to v5 are no longer supported. It is recommended to use after upgrading to the latest version: - - - -```tsx | pure -import { EthersWeb3ConfigProvider, useEthersProvider } from '@ant-design/web3-ethers/legacy-v5'; // importing the adapter for ethers@5.x - -const Component = () => { - const provider = useEthersProvider(); - // do something with provider -}; - -const App = () => { - return ( - - - - ); -}; -``` - -### EthersWeb3ConfigProviderProps - -| Property | Description | Type | Default | Version | -| --- | --- | --- | --- | --- | -| wallets | Wallets | [WalletFactory](#walletfactory)[] | - | - | -| chains | Chains | [Chain](./types#chain)[] | - | - | -| ens | Whether to display ENS | `boolean` | - | - | -| balance | Whether to display balance | `boolean` | - | - | -| locale | Multilingual settings | [Locale](https://github.com/ant-design/ant-design-web3/blob/main/packages/common/src/locale/en_US.ts) | - | - | -| eip6963 | Whether to use EIP6963 protocol wallet and related configurations | `boolean` \| `EIP6963Config` | `false` | | -| walletConnect | Whether to use the Wallet Connect protocol | `false` \| [WalletConnectOptions](https://wagmi.sh/core/api/connectors/walletConnect#parameters) | `false` | | diff --git a/packages/web3/src/ethereum/index.zh-CN.md b/packages/web3/src/ethereum/index.zh-CN.md index 380ba65dc..c0a9395fc 100644 --- a/packages/web3/src/ethereum/index.zh-CN.md +++ b/packages/web3/src/ethereum/index.zh-CN.md @@ -1,12 +1,10 @@ --- nav: 组件 subtitle: 以太坊 +order: 2 group: title: 连接链 order: 2 -tag: - title: 更新 - color: success --- # Ethereum @@ -15,7 +13,7 @@ Ant Design Web3 官方提供了 `wagmi`、`ethers` 等多个框架的适配器 如果你使用的是 wagmi 1.x,你可以查看 [@ant-design/web3-wagmi@1.2.0 文档](https://github.com/ant-design/ant-design-web3/blob/f7c9d51086f82b13a9cf94353b999348e17001de/packages/web3/src/wagmi/index.zh-CN.md)。 -如果你希望在项目中使用 `ethers`,我们提供了 `@ant-design/web3-ethers` 适配器,它兼容最新的 `v6` 和 `v5` 版本,你可以[查看文档](#ethers-适配器)使用。 +如果你希望在项目中使用 `ethers`,我们提供了 `@ant-design/web3-ethers` 适配器,它兼容最新的 `v6` 和 `v5` 版本,你可以[查看文档](../ethereum-ethersjs/index.zh-CN.md)使用。 目前,我们官方提供了该以太坊的适配器,你也可以自己开发适配器来支持其它的链,关于适配器,你可以阅读[适配器文档](../../../../docs/guide/adapter.zh-CN.md)了解更多。 @@ -104,53 +102,3 @@ Ant Design Web3 官方提供了 `wagmi`、`ethers` 等多个框架的适配器 ### UniversalWallet 用于自己定钱包的类,它满足 WalletFactory 的接口要求。具体使用可以参考[自定义钱包信息](#自定义钱包信息)的示例。 - -## Ethers 适配器 - -熟悉 `ethers` 的开发者可以安装 `@ant-design/web3-ethers` 配合组件库使用,其中绝大部份用法都与 `wagmi` 适配器一致。 - - - -### 基本使用 - -这个例子展示了使用 `ethers` 适配器的基本用法。我们提供了两个 react hooks 来获取 `provider` 和 `signer`,你可以在组件中使用它们来进行链上操作: - -- `useEthersProvider`: 获取 `ethers` 的 `Provider` 实例。 -- `useEthersSigner`: 获取 `ethers` 的 `Signer` 实例。 - - - -### Ethers 旧版本兼容 - -如果您是 `ethers@5.x` 的用户,可以手动安装 v5 版本的 ethers,并修改适配器的引入方式,v5 以前的版本不再提供支持,建议升级到最新版本后使用: - - - -```tsx | pure -import { EthersWeb3ConfigProvider, useEthersProvider } from '@ant-design/web3-ethers/legacy-v5'; // 引入 ethers@5.x 的适配器 - -const Component = () => { - const provider = useEthersProvider(); - // do something with provider -}; - -const App = () => { - return ( - - - - ); -}; -``` - -### EthersWeb3ConfigProviderProps - -| 属性 | 描述 | 类型 | 默认值 | 版本 | -| --- | --- | --- | --- | --- | -| wallets | 钱包配置 | [WalletFactory](#walletfactory)\[\] | - | - | -| chains | 链的配置 | [Chain](./types#chain)\[\] | - | - | -| ens | 是否显示 ENS | `boolean` | - | - | -| balance | 是否显示余额 | `boolean` | - | - | -| locale | 多语言设置 | [Locale](https://github.com/ant-design/ant-design-web3/blob/main/packages/common/src/locale/zh_CN.ts) | - | - | -| eip6963 | 是否采用 EIP6963 协议钱包以及相关配置 | `boolean` \| `EIP6963Config` | `false` | | -| walletConnect | 是否采用 Wallet Connect 协议 | `false` \| [WalletConnectOptions](https://wagmi.sh/core/api/connectors/walletConnect#parameters) | `false` | | diff --git a/packages/web3/src/solana/index.md b/packages/web3/src/solana/index.md index 6ff2f7654..305c5eca9 100644 --- a/packages/web3/src/solana/index.md +++ b/packages/web3/src/solana/index.md @@ -1,8 +1,9 @@ --- nav: Components +order: 4 group: title: Connect Blockchains - order: 3 + order: 2 --- # Solana diff --git a/packages/web3/src/solana/index.zh-CN.md b/packages/web3/src/solana/index.zh-CN.md index 9a64f1622..8578f4351 100644 --- a/packages/web3/src/solana/index.zh-CN.md +++ b/packages/web3/src/solana/index.zh-CN.md @@ -1,6 +1,7 @@ --- nav: 组件 subtitle: 索拉纳 +order: 4 group: title: 连接链 order: 2 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 094a2e984..524eaa178 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -214,9 +214,9 @@ importers: '@ant-design/web3-common': specifier: workspace:* version: link:../../packages/common - '@ant-design/web3-ethers': + '@ant-design/web3-ethers-v5': specifier: workspace:* - version: link:../../packages/ethers + version: link:../../packages/ethers-v5 antd: specifier: ^5.16.5 version: 5.16.5(react-dom@18.2.0)(react@18.2.0) @@ -335,9 +335,6 @@ importers: debug: specifier: ^4.3.4 version: 4.3.4(supports-color@5.5.0) - ethers: - specifier: ^5.7.2 || ^6.11.1 - version: 5.7.2 viem: specifier: ^2.10.3 version: 2.10.3(typescript@5.4.4) @@ -348,12 +345,49 @@ importers: '@types/debug': specifier: ^4.1.12 version: 4.1.12 - ethers-v5: - specifier: npm:ethers@^5.7.2 - version: /ethers@5.7.2 - ethers-v6: - specifier: npm:ethers@^6.11.1 - version: /ethers@6.11.1 + ethers: + specifier: ^6.11.1 + version: 6.11.1 + father: + specifier: ^4.4.0 + version: 4.4.0(@babel/core@7.24.3)(@types/node@20.10.5)(styled-components@5.3.11)(webpack@5.91.0) + typescript: + specifier: ^5.4.4 + version: 5.4.4 + + packages/ethers-v5: + dependencies: + '@ant-design/web3-assets': + specifier: workspace:* + version: link:../assets + '@ant-design/web3-common': + specifier: workspace:* + version: link:../common + '@ant-design/web3-ethers': + specifier: workspace:* + version: link:../ethers + '@ant-design/web3-wagmi': + specifier: workspace:* + version: link:../wagmi + '@tanstack/react-query': + specifier: ^5.28.4 + version: 5.28.4(react@18.2.0) + debug: + specifier: ^4.3.4 + version: 4.3.4(supports-color@5.5.0) + viem: + specifier: '>=2.9.25' + version: 2.10.3(typescript@5.4.4) + wagmi: + specifier: ^2.8.3 + version: 2.8.6(@tanstack/react-query@5.28.4)(@types/react@18.2.78)(react-dom@18.2.0)(react-i18next@13.5.0)(react-native@0.73.6)(react@18.2.0)(typescript@5.4.4)(viem@2.10.3) + devDependencies: + '@types/debug': + specifier: ^4.1.12 + version: 4.1.12 + ethers: + specifier: ^5.7.2 + version: 5.7.2 father: specifier: ^4.4.0 version: 4.4.0(@babel/core@7.24.3)(@types/node@20.10.5)(styled-components@5.3.11)(webpack@5.91.0) diff --git a/tsconfig.base.json b/tsconfig.base.json index 52782c1de..193a2efd9 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -22,8 +22,11 @@ "@ant-design/web3-assets/solana": ["./packages/assets/src/solana/"], "@ant-design/web3-wagmi": ["./packages/wagmi/src/"], "@ant-design/web3-ethers": ["./packages/ethers/src/"], - "@ant-design/web3-ethers/legacy-v5": ["./packages/ethers/src/index-v5.ts"], + "@ant-design/web3-ethers/provider": ["./packages/ethers/src/ethers-provider/"], + "@ant-design/web3-ethers/wallets": ["./packages/ethers/src/wallets/"], "@ant-design/web3-ethers/wagmi": ["./packages/ethers/src/wagmi.ts"], + "@ant-design/web3-ethers-v5": ["./packages/ethers-v5/src/"], + "@ant-design/web3-ethers-v5/wagmi": ["./packages/ethers-v5/src/wagmi.ts"], "@ant-design/web3-solana": ["./packages/solana/src/"] } } diff --git a/vitest.config.mts b/vitest.config.mts index 5ea185508..9b4a044b6 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -25,7 +25,12 @@ export default defineConfig({ '@ant-design/web3-assets/solana': resolve('./packages/assets/dist/esm/solana/index'), '@ant-design/web3-assets': resolve('./packages/assets/dist/esm/index'), '@ant-design/web3-wagmi': resolve('./packages/wagmi/dist/esm/index'), + '@ant-design/web3-ethers-v5': resolve('./packages/ethers-v5/dist/esm/index'), '@ant-design/web3-ethers': resolve('./packages/ethers/dist/esm/index'), + '@ant-design/web3-ethers/provider': resolve( + './packages/ethers/dist/esm/ethers-provider/index', + ), + '@ant-design/web3-ethers/wallets': resolve('./packages/ethers/dist/esm/wallets/index'), '@ant-design/web3-solana': resolve('./packages/solana/dist/esm/index'), '@ant-design/web3-common': resolve('./packages/common/dist/esm/index'), } @@ -35,7 +40,12 @@ export default defineConfig({ '@ant-design/web3-assets/solana': resolve('./packages/assets/src/solana/index'), '@ant-design/web3-assets': resolve('./packages/assets/src/index'), '@ant-design/web3-wagmi': resolve('./packages/wagmi/src/index'), + '@ant-design/web3-ethers-v5': resolve('./packages/ethers-v5/src/index'), '@ant-design/web3-ethers': resolve('./packages/ethers/src/index'), + '@ant-design/web3-ethers/provider': resolve( + './packages/ethers/src/ethers-provider/index', + ), + '@ant-design/web3-ethers/wallets': resolve('./packages/ethers/src/wallets/index'), '@ant-design/web3-solana': resolve('./packages/solana/src/index'), '@ant-design/web3-common': resolve('./packages/common/src/index'), },