最终的 ENS JavaScript 库 维姆 在引擎盖下.
ENSjs是一个用于与Ethereum名称服务交互的TypeScript库. 它规定 在viem上方的可树可震动和可堆肥的动作,对两者都给予一等支持 ENS v1和ENS v2 (英语).
特征
- 延伸任何viem的可编译动作
Client - 全树摇晃——只支付您导入的动作
- 多呼分批读取动作
- TypeScript- first, 链式合同的严格类型
- ENS v1 + ENS v2 并行支持
- 包括子图和DNS助手
- 独立
@ensdomains/ensjs-abiaBI 软件包片段
莫诺雷波布局
| 软件包 | 说明 |
|---|---|
@ensdomains/ensjs | 主要图书馆——行动、客户端、图利茨 |
@ensdomains/ensjs-abi | ABI 每一份ENS合同的片断(v1 + v2) |
@ensdomains/ensjs-react | 搭建的反应钩 @wagmi/core |
@ensdomains/ensjs-query-core | @wagmi/core 查询集成 |
支持的链条 : mainnet (1)和 sepolia (11155111) (中文(简体) ).
安装
pnpm add @ensdomains/ensjs viem
你还需要 viem 2.9.2 作为同伴依赖。 一些特性需要可选的对等点
依赖性 :
| 软件包 | 需要时间 |
|---|---|
graphql | @ensdomains/ensjs/subgraph |
@ensdomains/dnsprovejs (单位:千美元)^0.5.4 || ^1.0.0(中文(简体) ) | getDnsImportData 从 @ensdomains/ensjs/dns |
开始
addEnsContracts 以所有 ENS 合同地址和子图 URL 扩展 viem 链条,
这样你就可以用它 与任何viem createPublicClient 编号 : createWalletClient。 。 。 .
import { http, createPublicClient } from 'viem'
import { mainnet } from 'viem/chains'
import { addEnsContracts } from '@ensdomains/ensjs'
import { getAddressRecord, getRecords } from '@ensdomains/ensjs/public'
const client = createPublicClient({
chain: addEnsContracts(mainnet),
transport: http(),
})
const eth = await getAddressRecord(client, { name: 'ens.eth' })
const records = await getRecords(client, {
name: 'ens.eth',
texts: ['com.twitter', 'avatar'],
contentHash: true,
})
入境点
这个 @ensdomains/ensjs 软件包被分割为子路径导出, 以便捆绑者可以放下
所有你没有进口.
| 导入 | 目录 |
|---|---|
@ensdomains/ensjs | addEnsContracts,错误类别 |
@ensdomains/ensjs/public | 共享读取动作(分辨率、记录、倒数、价格、可用性) |
@ensdomains/ensjs/public/v1 | v1 具体读取 |
@ensdomains/ensjs/public/v2 | v2 具体读取 |
@ensdomains/ensjs/wallet | 共享写入动作( 承诺、 注册、 更新、 设定个人记录) |
@ensdomains/ensjs/wallet/v1 | v1 专用写法( wrap/ unrap、 引信、 子名、 传输、 ), setRecords,主要名称) |
@ensdomains/ensjs/wallet/v2 | v2 特写 |
@ensdomains/ensjs/subgraph | 子图客户端+查询( Q)getSubnames, (中文(简体) ), getNamesForAddress,历史,.) |
@ensdomains/ensjs/dns | DNS 帮助者(getDnsOwner, (中文(简体) ), importDnsName, (中文(简体) ), getDnsImportData, (...) (中文(简体) ) |
@ensdomains/ensjs/utils | 编译员(getAddress, (中文(简体) ), getText, (中文(简体) ), getAbi, (中文(简体) ), getContentHash),名称为 utils |
@ensdomains/ensjs/utils/v2 | v2 utils( 作用编码、 解析器资源、 犬类标识) |
@ensdomains/ensjs/contracts | ABI 片断的再出口 |
@ensdomains/ensjs/chain | 链条类型和帮助者(ChainWithEns, (中文(简体) ), extendChainWithEns, (中文(简体) ), getChainContractAddress(中文(简体) ) |
ABIs本身作为独立包发布,可直接导入:
import { permissionedRegistryGetStateSnippet } from '@ensdomains/ensjs-abi/v2/permissionedRegistry'
import { ethRegistrarControllerRegisterSnippet } from '@ensdomains/ensjs-abi/v1/ethRegistrarController'
行动模式
每一个动作都是简单的功能 Client 第一和第二参数.
const result = await actionName(client, {
/* params */
})
读取动作使用 getAction + 键 readContract 编号 : multicall 所以他们用什么工作
批量配置在客户端上。 写入动作返回交易散列并接受
标准viem 写入参数(account, (中文(简体) ), chain,气体等).
发展
# Install
pnpm install
# Build everything
pnpm -r build
# Build a single package
pnpm -F @ensdomains/ensjs build
pnpm -F @ensdomains/ensjs-abi build
# Lint (Biome)
pnpm lint
# Type check
pnpm -F @ensdomains/ensjs check:types
# Test the main package
pnpm -F @ensdomains/ensjs test
pnpm -F @ensdomains/ensjs test:watch
pnpm -F @ensdomains/ensjs test src/actions/public/resolver/getRecords.test.ts
# Generate the markdown docs
pnpm -F @ensdomains/ensjs generateDocs
# Versioning (changesets)
pnpm chgset:run
pnpm chgset:version
测试与已部署的ENS合同的当地devnet对接,测试名称被播种
(单位:千美元)ghcr.io/ensdomains/contracts-v2),所以多克需要运行. test 启动devnet
通过 packages/ensjs/compose.yml 然后停止它之后。 如果已经运行
localhost:8545,它是重复使用的:
docker compose -f packages/ensjs/compose.yml up -d devnet
主包需要22个节点(18个) query-core工具:pnpm 12,
TypeScript 严格模式, Biome 用于格式化和林化, Vitest 用于测试.
捐款
见 捐款额 指导增加新行动,连接新行动 ABI 片段,登记新的合同地址,以及在整个 复发.
文档
指南和API的参考文献在 docs/。API的参考文献是
生成源 JSDoc 与 pnpm -F @ensdomains/ensjs generateDocs。 。 。 .
许可证
麻省理工学院