Skip to content
Draft
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
516 commits
Select commit Hold shift + click to select a range
1c9b578
(feat): Added has roles method
Malak67 Dec 9, 2025
eea0bb7
Merge branch 'multichain' of github.com:ensdomains/ensjs into feat/ha…
Malak67 Dec 9, 2025
78080c8
(feat): Added test for hasRoles
Malak67 Dec 9, 2025
2c09592
Merge pull request #290 from ensdomains/feat/has-roles
v1rtl Dec 9, 2025
d6d587a
feat(ensjs/public/v2): `getRegistrationDate` for V2 ETHRegistry
v1rtl Dec 9, 2025
e3acf76
fix: add `getRegistrationDate` to exports
v1rtl Dec 9, 2025
a864311
fix: missing error type
v1rtl Dec 9, 2025
21737ce
Merge pull request #289 from ensdomains/v2-expiry-reg-data
v1rtl Dec 9, 2025
dbf5d51
Merge pull request #287 from ensdomains/multichain
v1rtl Dec 11, 2025
addd9da
test(ensjs/public/v2): check for literal value
v1rtl Dec 17, 2025
a04065a
fix(ensjs/utils/v2): use bitwise OR not boolean OR
v1rtl Dec 17, 2025
54ec51b
Merge pull request #291 from ensdomains/v2-expiry-reg-data
v1rtl Dec 17, 2025
b8a4daf
Merge pull request #292 from ensdomains/multichain
v1rtl Dec 17, 2025
1b789b0
feat(ensjs/v2): `getNameRolesForAccount`
v1rtl Dec 17, 2025
c49fec7
Merge branch 'feature/fet-1885-ensjs-refactor' of https://github.com/…
v1rtl Dec 17, 2025
06f4932
add permissioned registry
v1rtl Dec 17, 2025
b0ee328
Merge pull request #293 from ensdomains/multichain
v1rtl Dec 17, 2025
d7faa9f
tooling: add claude instructions
v1rtl Jan 14, 2026
cd4ff39
test(ensjs/v2/getNameRegistries): add a basic test and fix vitest env
v1rtl Jan 14, 2026
801dcf8
chore(ensjs): remove `happy-dom` dev dep
v1rtl Jan 14, 2026
cc7d4d4
test(ensjs/v2): remove useless test
v1rtl Jan 14, 2026
a53ee1c
ci: enable coverage reporting
v1rtl Jan 15, 2026
22a5647
test(ensjs/public/v2): getOwner
v1rtl Jan 15, 2026
7cc2caa
test: cleanup
v1rtl Jan 15, 2026
f308ffb
tooling: remove old test env and replace it with a new one
v1rtl Jan 15, 2026
36b8f11
tooling: new test env
v1rtl Jan 15, 2026
cc6007c
fix(ensjs/deploy): type errors in deploy scripts
v1rtl Jan 15, 2026
e213a51
chore: biome lint
v1rtl Jan 15, 2026
8d0e115
chore: rename docker compose file for v2
v1rtl Jan 15, 2026
3f46f4d
Merge pull request #295 from ensdomains/test-remaining-v2-funcs
v1rtl Jan 15, 2026
b066109
test: use L1 and L2 anvil in tests and fix some tests
v1rtl Jan 21, 2026
3d2440a
fix(ensjs/test): use correct L2 contract addresses in test setup
v1rtl Jan 21, 2026
6599a1e
fix(ensjs/test): add localStorage mock for test environment
v1rtl Jan 21, 2026
6c74ac0
fix(ensjs/test): fix role ordering and function import in tests
v1rtl Jan 21, 2026
6a5e1b8
feat(ensjs/test): add test name seeding script
v1rtl Jan 21, 2026
5b1cc07
fix(ensjs/test): update remaining addEnsContracts imports
v1rtl Jan 21, 2026
af411fa
fix(ensjs/test): update contract addresses to match namechain devnet
v1rtl Jan 21, 2026
1e73fc6
(feat): Updated setResolver to work for v2 name
Malak67 Jan 26, 2026
ea33ca5
(chore): Removed constant for checking contract type
Malak67 Jan 26, 2026
d662b64
Merge pull request #297 from ensdomains/feat/update-set-resolver-v2
v1rtl Jan 26, 2026
c8da5d3
(feat): Update to setRecords to remove assertion
Malak67 Jan 27, 2026
084fcb3
(feat): Reverted setResolver and created a new one for v2
Malak67 Jan 27, 2026
3bbbb7b
Merge pull request #299 from ensdomains/feat/setRecords-update
v1rtl Jan 27, 2026
68aa3be
(fix): Exporting new setResolver
Malak67 Jan 27, 2026
f3d6832
fix(ensjs/test): update tests and contract addresses
v1rtl Feb 2, 2026
2240fce
feat(ensjs): add createSubnameV2 for UserRegistry
v1rtl Feb 2, 2026
afe30c9
chore: trigger CI re-run
v1rtl Feb 2, 2026
1b565ae
Merge pull request #305 from ensdomains/feature/createsubname-userreg…
v1rtl Feb 2, 2026
2148f2c
(feat): Added getNameResolverAddress method
Malak67 Feb 2, 2026
6129f6c
Merge pull request #306 from ensdomains/feat/get-name-resolver
v1rtl Feb 2, 2026
7398c37
(fix): Exporting resolver abis
Malak67 Feb 2, 2026
e7b41e5
(feat): exporting isAvailable method
Malak67 Feb 3, 2026
31d9c37
(feat): updated setRecords to support DR
Malak67 Feb 3, 2026
435a791
(feat): Updating setAbi for DR
Malak67 Feb 3, 2026
90daf38
Merge pull request #307 from ensdomains/feat/set-records-dr
v1rtl Feb 3, 2026
bac3b24
Merge branch 'feature/fet-1885-ensjs-refactor' of https://github.com/…
v1rtl Feb 5, 2026
2aebd10
fix: seed missing subnames and use NameWrapper-aware resolver for wra…
v1rtl Feb 5, 2026
91371f8
refactor: update devnet addresses and consolidate address management
v1rtl Feb 5, 2026
616ec18
ci: update test workflow to use docker compose devnet
v1rtl Feb 5, 2026
4826b7d
style: fix lint errors across ensjs package
v1rtl Feb 5, 2026
e51507c
(fix): Exporting permissionedRegistrySetResolverSnippet
Malak67 Feb 9, 2026
9a63e83
(feat): Added delete subname
Malak67 Feb 12, 2026
3f76e00
(feat): Fix delete subname
Malak67 Feb 19, 2026
31e314c
feat: add revokeRoles action for EnhancedAccessControl
v1rtl Feb 25, 2026
7386d37
Add getPrice function for v2 contracts
Chakravarthy7102 Mar 2, 2026
26765ea
add tests
Chakravarthy7102 Mar 2, 2026
a870b59
fix tests
Chakravarthy7102 Mar 2, 2026
b2af53e
get rid of v1 function
Chakravarthy7102 Mar 3, 2026
1feaad6
Merge pull request #310 from ensdomains/add-getPrice
Chakravarthy7102 Mar 3, 2026
df387c3
remove redundent bigint casting
Chakravarthy7102 Mar 3, 2026
315a7e3
Merge branch 'feature/fet-1885-ensjs-refactor' of github.com:ensdomai…
Malak67 Mar 3, 2026
bba5f4b
(feat): Updated delete subname to work with new unregister method
Malak67 Mar 3, 2026
a4e444d
(feat): Removed unused erc1155 abi
Malak67 Mar 3, 2026
532b210
(fix): Deleting just the unused abi
Malak67 Mar 3, 2026
51aa3bf
fix linter issue
Chakravarthy7102 Mar 9, 2026
58b6e6d
add back getPrice v1 function
Chakravarthy7102 Mar 9, 2026
e53c6b0
Trigger deployment
Chakravarthy7102 Mar 9, 2026
0ebee66
fix from and to block numbers
Chakravarthy7102 Mar 9, 2026
3b2347a
(feat): Added setAlias and deleteAlias
Malak67 Mar 11, 2026
8728e1d
(fix): Skipping test for now
Malak67 Mar 12, 2026
a2c226c
Merge pull request #311 from ensdomains/feat/permissioned-resolver-al…
Malak67 Mar 13, 2026
0faaa73
(feat): Resolver roles methods
Malak67 Mar 13, 2026
bcc37d6
(fix): Fixed lint
Malak67 Mar 13, 2026
c2157cf
(feat): Consolidating all has roles methods into one
Malak67 Mar 13, 2026
b80c7a2
(feat): Updated grantResolverRoles
Malak67 Mar 13, 2026
1665015
Simplify computeResolverResource to accept Hex only
v1rtl Mar 13, 2026
7299257
Merge pull request #312 from ensdomains/feat/resolver-roles-check
v1rtl Mar 13, 2026
b58e0e3
fix: use labelToCanonicalId instead of labelhash in getNameRolesForAc…
v1rtl Mar 14, 2026
595bf70
Merge pull request #313 from ensdomains/feat/resolver-roles-check
v1rtl Mar 14, 2026
d330412
adds getReverseRecordFromRegistry function
Chakravarthy7102 Mar 18, 2026
051ead1
addds tests
Chakravarthy7102 Mar 18, 2026
40f1d50
Merge branch 'feature/fet-1885-ensjs-refactor' of https://github.com/…
Chakravarthy7102 Mar 18, 2026
4204d65
fix lint issues
Chakravarthy7102 Mar 18, 2026
c7aee2f
Merge pull request #314 from ensdomains/reverse-record-registry
Chakravarthy7102 Mar 18, 2026
44dce48
chore(wip): remove `l2` defs and start moving them to the same chain def
v1rtl Mar 18, 2026
ea1b5af
chore(wip): update all contract addresses to the new deployment
v1rtl Mar 18, 2026
f7593ee
fix: imports
v1rtl Mar 18, 2026
004f923
fix: unskip tests and fix ID computation bugs
v1rtl Mar 23, 2026
f58507a
fix: start only devnet container in CI
v1rtl Mar 25, 2026
72a145d
Merge branch 'feature/fet-1885-ensjs-refactor' of https://github.com/…
v1rtl Mar 25, 2026
886c31f
fix: use RequireClientContracts instead of RequireClientL1Contracts
v1rtl Mar 25, 2026
ecb91fe
fix: remove L2 RPC wait since only devnet is started
v1rtl Mar 25, 2026
e539bf5
fix: wait for devnet health check before seeding names
v1rtl Mar 25, 2026
1e6d7e2
fix: approve USDC spending before registerName in test
v1rtl Mar 25, 2026
e7eada3
chore: remove unused seed-names-simple.ts script
v1rtl Mar 25, 2026
d318921
chore: remove leftover decode.sh script
v1rtl Mar 25, 2026
dff0d5f
chore: remove unused catch binding variables in seedTestNames
v1rtl Mar 25, 2026
d3248b4
fix: use server-side event args filter in getRegistrationDate
v1rtl Mar 25, 2026
bc3db81
fix hasRoles.test.ts resolver tests: deploy properly initialized Perm…
v1rtl Mar 25, 2026
e0ec553
fix clearRecords v2 test: read directly from resolver proxy and use d…
v1rtl Mar 27, 2026
5a76612
chore: use only needed roles in clearRecords v2 test
v1rtl Mar 27, 2026
3b37665
chore: remove v2 test from v1 clearRecords test file
v1rtl Mar 27, 2026
733cf93
biome lint
v1rtl Mar 27, 2026
2fa2a2d
fix v2/getExpiry: fallback to ensRegistry and add error branch tests
v1rtl Mar 27, 2026
f727411
fix v2/getExpiry: allow subnames by removing labels.length > 2 restri…
v1rtl Mar 27, 2026
df06054
chore: cache Docker images to speed up test runs
v1rtl Mar 27, 2026
89b1acb
test: add tests for v2 getNameRolesForAccount and getRoleCounts
v1rtl Mar 27, 2026
ca54e51
biome lint
v1rtl Mar 27, 2026
1124e53
fix: remove Docker image caching from CI
v1rtl Mar 27, 2026
bd9d5a3
test: add tests for v2 utils (labelToCanonicalId, encodeRoleBitmap, r…
v1rtl Mar 27, 2026
5bb6c39
chore: remove redundant CI wait step, globalSetup already handles it
v1rtl Mar 27, 2026
ac4aec0
remove redundant v2/getNameResolverAddress: UniversalResolver handles…
v1rtl Mar 29, 2026
9093e73
refactor: unify grantResolverRoles into single scope-based function
v1rtl Mar 29, 2026
b2c1f13
refactor: unify revokeResolverRoles into single scope-based function
v1rtl Mar 29, 2026
470bc6f
fix: move permissionedResolverClearRecordsSnippet to contracts file
v1rtl Mar 29, 2026
3b1acf5
fix: remove empty errors/wallet.ts, fix typo in BaseError constructor…
v1rtl Mar 29, 2026
70f1e9c
refactor: remove internalType from ABI inputs unless referencing a co…
v1rtl Mar 29, 2026
67f5922
test: update snapshot after internalType removal from ABIs
v1rtl Mar 29, 2026
88efc45
feat(public/v2): implement `getTokenId` and `getResource` for permiss…
v1rtl Apr 6, 2026
a875631
fix(tests): use deploymentAddresses.ETHRegistry instead of hardcoded …
v1rtl Apr 6, 2026
c7ec9db
fix lint
v1rtl Apr 6, 2026
7519659
fix(v1): use ensLegacyRegistry instead of ensRegistry in getOwner
v1rtl Apr 6, 2026
4c2f15a
fix: correct ensLegacyRegistry address for Sepolia
v1rtl Apr 7, 2026
315a864
refactor: extract ABI definitions into @ensdomains/ensjs-abi package
v1rtl Apr 9, 2026
7a99a78
fix: sort imports to satisfy biome lint
v1rtl Apr 9, 2026
3c1a70d
fix(ci): publish both ensjs-abi and ensjs via pkg.pr.new
v1rtl Apr 9, 2026
e55ad98
fix(ci): only build ensjs-abi and ensjs in pkg.pr.new CI
v1rtl Apr 9, 2026
1e0a329
fix(ci): correct pnpm filter syntax for recursive build
v1rtl Apr 9, 2026
c550640
fix(ci): add check:types script and fix type check step
v1rtl Apr 9, 2026
28d9554
fix: resolve type errors in test files after ABI refactoring
v1rtl Apr 9, 2026
6cba0bf
fix: update ownerFromContract test snapshot to use LegacyENSRegistry
v1rtl Apr 9, 2026
348dc00
fix: point ensLegacyRegistry to ENSRegistry and run test files sequen…
v1rtl Apr 9, 2026
f8e0af3
fix(ci): build ensjs-abi before ensjs in test workflow
v1rtl Apr 9, 2026
7591f01
style: apply biome autofix formatting
v1rtl Apr 9, 2026
007fdae
fix: remove ts-expect-error from importDnsName by using RequireClient…
v1rtl Apr 9, 2026
d9ccecd
fix(ci): build ensjs-abi before type check in lint job
v1rtl Apr 9, 2026
62e9a20
fix: correct import ordering in importDnsName
v1rtl Apr 9, 2026
40e9ac4
chore: exclude seedTestNames from test coverage
v1rtl Apr 9, 2026
397a834
Merge pull request #317 from ensdomains/move-abis
v1rtl Apr 9, 2026
ef70444
refactor: use BigInt(labelhash(label)) instead of labelToCanonicalId …
v1rtl Apr 9, 2026
4b5cf51
Merge pull request #318 from ensdomains/canonical-id-to-labelhash
v1rtl Apr 9, 2026
7fca587
Merge pull request #315 from ensdomains/ensv2-v2
v1rtl Apr 10, 2026
d27c23a
bump viem to latest
v1rtl Apr 10, 2026
13f01ab
Merge pull request #319 from ensdomains/ensv2-v2
v1rtl Apr 10, 2026
67f4261
refactor: remove legacy dedicatedResolver and resolverType
v1rtl Apr 11, 2026
5edebd1
biome lint
v1rtl Apr 11, 2026
e1f7a11
refactor: convert all record-setting coders to use name instead of na…
v1rtl Apr 11, 2026
f25cd40
fix: resolve double namehash in wallet actions and fix DNS test timing
v1rtl Apr 11, 2026
2d1d13d
fix: correct sepolia ensLegacyRegistry address to current v1 ENSRegistry
v1rtl Apr 16, 2026
78ff482
fix renewal abi snipper
Chakravarthy7102 Apr 16, 2026
27cd75b
Merge pull request #320 from ensdomains/fix/renewal-abi
v1rtl Apr 16, 2026
447a6f3
refactor: remove unnecessary type casts in public action files
v1rtl Apr 24, 2026
c560f61
fix: correct sepolia ensReverseRegistrar to v1 and read addr.reverse …
v1rtl Apr 28, 2026
0c52e01
docs: refresh README and add CONTRIBUTING guide
v1rtl Apr 29, 2026
37aafed
Merge pull request #321 from ensdomains/docs/update-readme-contributing
v1rtl Apr 29, 2026
a4c1365
Adds v2 renewal action to ensjs
Chakravarthy7102 May 4, 2026
bc39256
format
Chakravarthy7102 May 4, 2026
42633bb
Merge branch 'feature/fet-1885-ensjs-refactor' of github.com:ensdomai…
Malak67 May 4, 2026
2cf3e41
(feat): Updated delete subnames methods
Malak67 May 4, 2026
039e9bc
(fix): Fixed test
Malak67 May 4, 2026
561183d
(feat): Remove v2 postfix from deleteSubname
Malak67 May 4, 2026
0543f1a
(fix): moved unregister snippet to permissionedREgistry
Malak67 May 4, 2026
58509de
Merge pull request #308 from ensdomains/feat/delete-subname
Malak67 May 4, 2026
a241349
Trigger deployment
Chakravarthy7102 May 5, 2026
c68e3ae
Merge branch 'feature/fet-1885-ensjs-refactor' of https://github.com/…
Chakravarthy7102 May 11, 2026
9599454
rename stuff
Chakravarthy7102 May 11, 2026
7b6c3b3
use the default endcode function data from viem
Chakravarthy7102 May 12, 2026
5f8a916
merge function with write parameters function
Chakravarthy7102 May 12, 2026
46a9d65
fix tests
Chakravarthy7102 May 12, 2026
b674e2e
fix as const
Chakravarthy7102 May 12, 2026
fed0a1c
Merge pull request #323 from ensdomains/feature/fet-3271-create-renew…
v1rtl May 12, 2026
e30cf98
update v2 abis, sepolia addresses, and devnet image
v1rtl May 22, 2026
07347ce
Merge pull request #324 from ensdomains/update-live-sepolia
v1rtl May 22, 2026
0bd9a64
post-audit-ensjs-changes
v1rtl May 22, 2026
abc029e
refactor(ensjs): rename v2 getPrice -> getRegisterPrice, multicall ar…
v1rtl May 24, 2026
c9c2302
fix(ensjs): v1 getPrice points at legacy ETHRegistrarController, not …
v1rtl May 24, 2026
487c15b
refactor(ensjs): move getPrice into actions/public/v1/
v1rtl May 24, 2026
3274793
Merge pull request #328 from ensdomains/fix/getprice-multicall-and-re…
v1rtl May 26, 2026
b10e02c
chore(ensjs): update Sepolia L1 contract addresses to current deployment
v1rtl May 26, 2026
3416ee2
chore: trigger ci
v1rtl May 26, 2026
dcd1344
chore: retrigger ci
v1rtl May 26, 2026
6d2cf90
fix(ensjs): point sepolia ensRegistry at ETHRegistry, not RootRegistry
v1rtl May 26, 2026
dcb3b89
feat(ensjs-abi): add ethRegistrarRentPriceOracleSnippet
v1rtl May 26, 2026
54a44ee
test(ensjs): update devnet addresses, role expectations, and price or…
v1rtl May 26, 2026
1d4334e
feat(ensjs-abi,ensjs): add migration contract addresses and ABIs
v1rtl May 27, 2026
3a0d6a0
refactor(ensjs): split getAvailable into v1 and v2 variants
v1rtl May 27, 2026
040b8a3
fix(ensjs): v2 getAvailable looks up the wrong chain contract key
v1rtl May 27, 2026
5721a15
Adds pricing and renewal functions
Chakravarthy7102 May 27, 2026
5f56408
refactor(ensjs): resolve pricing contracts via chain map
v1rtl May 27, 2026
ed40766
fix(ensjs): point mainnet usdc and dai at canonical token addresses
v1rtl May 27, 2026
ff0264a
refactor(ensjs): make applyDiscount duration strictly bigint
v1rtl May 27, 2026
a82fafd
Merge pull request #327 from ensdomains/post-audit-pricing-changes
v1rtl May 27, 2026
41b3504
Merge pull request #325 from ensdomains/chore/post-audit-ensjs-changes
v1rtl May 27, 2026
05e061b
Update contract addresses to latest deployment versions
Chakravarthy7102 Jun 3, 2026
8da97fd
Merge pull request #335 from ensdomains/update-addresses
v1rtl Jun 3, 2026
d8a0f6d
fix(ensjs/chain): correct sepolia subgraph
v1rtl Jun 4, 2026
84d3041
Extend hasRoles function to support registry root resource roles queries
Chakravarthy7102 Jun 4, 2026
f6feb44
update grantRoles function
Chakravarthy7102 Jun 5, 2026
2824a87
chore: update mock erc20 with gasless permit
v1rtl Jun 5, 2026
aa83ec4
Merge pull request #336 from ensdomains/extend-hasroles
v1rtl Jun 9, 2026
7e03401
fix(ensjs/subgraph): null-guard nested refs in getNameHistory
v1rtl Jun 10, 2026
b755d78
feat(ensjs/getOwner): enhance getOwner function to return zero addres…
Chakravarthy7102 Jun 19, 2026
7df2350
Merge pull request #340 from ensdomains/return-null-if-available
Chakravarthy7102 Jun 19, 2026
a8623d9
refactor(ensjs/getOwner): simplify getOwner function and remove unnec…
Chakravarthy7102 Jun 19, 2026
3799148
Update v2 public resolver stale address
Chakravarthy7102 Jun 18, 2026
ad511ff
add getNames functiono
Chakravarthy7102 Jun 18, 2026
3b49921
fix docs
Chakravarthy7102 Jun 24, 2026
19f7a6f
Improve documentation for `getNames` function to clarify the distinct…
Chakravarthy7102 Jun 24, 2026
e5fdd8e
test(ensjs/getNames): add unit tests for getNames function
Chakravarthy7102 Jun 24, 2026
614da62
Merge pull request #338 from ensdomains/update-stale-address
Chakravarthy7102 Jun 24, 2026
9ba07b6
fix(ensjs): checksum contract addresses in l1 client
v1rtl Jun 26, 2026
75fb6bc
chore: remove hardhat and deploy scripts (replaced by devnet)
v1rtl Jun 26, 2026
9e0d90c
Merge pull request #350 from ensdomains/remove-deploy-scripts
v1rtl Jun 26, 2026
375880e
feat(ensjs/getAvailable): support .eth subnames of any depth
v1rtl Jun 26, 2026
a577666
fix(ensjs): point at working UR addresses (v1+v2 resolution)
v1rtl Jun 29, 2026
f2a5d7c
Merge pull request #349 from ensdomains/feat/getAvailable-eth-subnames
v1rtl Jun 29, 2026
1902f1a
fix(ensjs): use UR proxy address for getAvailable subname traversal
v1rtl Jun 30, 2026
8b3c21f
(chore): Adding default reverse registrar abi snippets
Malak67 Jun 30, 2026
43bc755
test(ensjs): parallelize pure-logic tests, fix test123 v1-only failures
v1rtl Jun 30, 2026
49f455b
Merge pull request #351 from ensdomains/fix/ur-proxy-address-getavail…
v1rtl Jun 30, 2026
d21547a
Merge pull request #352 from ensdomains/default-reverse-registrar-abi
Malak67 Jun 30, 2026
221de68
refactor(ensjs): use UR.findOwner for v2 getOwner
v1rtl Jun 30, 2026
1b5a991
Merge pull request #354 from ensdomains/refactor/v2-getowner-find-owner
v1rtl Jun 30, 2026
d310b8f
feat(ensjs-abi): add BaseRegistrar admin + wrapETH2LD snippets
Malak67 Jul 8, 2026
d946c1f
Merge pull request #358 from ensdomains/feat/ensjs-abi-v1-privileged-…
v1rtl Jul 8, 2026
a8523b5
Add ETHRenewerV1 support for legacy name renewals
Chakravarthy7102 Jul 3, 2026
f8df9e9
Update package dependencies and add tests for name renewal functionality
Chakravarthy7102 Jul 3, 2026
d29fd15
Update ETHRenewerV1 contract address in L1 client configuration
Chakravarthy7102 Jul 3, 2026
715eb36
Update comments in getRenewPrice and isRenewable test for clarity
Chakravarthy7102 Jul 4, 2026
6adc02b
Remove outdated comments from ETHRenewerV1 contract file to streamlin…
Chakravarthy7102 Jul 6, 2026
5c82c34
Add renewName functionality and associated tests
Chakravarthy7102 Jul 7, 2026
754c3b4
Refactor ETHRenewerV1 to ETHRenewer and update imports
Chakravarthy7102 Jul 8, 2026
3ee40c2
Refactor renewName functionality to support multiple renewer contracts
Chakravarthy7102 Jul 8, 2026
02d0344
Add comments to clarify the distinction between renewer contracts
Chakravarthy7102 Jul 9, 2026
5481c41
Refactor renewal logic to remove ETHRenewerV1 and streamline ABI usage
Chakravarthy7102 Jul 14, 2026
b61b1f6
Merge pull request #355 from ensdomains/v1-renew
v1rtl Jul 14, 2026
cc5ab3a
feat: update Sepolia subgraph URL to v1-graphql.ens.dev
v1rtl Jul 20, 2026
faf9890
fix: query registrant through domain entity for Ponder compat
v1rtl Jul 20, 2026
97bcdf0
Merge pull request #360 from ensdomains/feat/update-sepolia-subgraph-url
v1rtl Jul 20, 2026
e96662c
feat: update Sepolia ENSv2 contract addresses for 2026-07-30 redeploy
v1rtl Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 25 additions & 0 deletions .github/workflows/continuous-releases.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Continuous Release
on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- run: corepack enable
- uses: actions/setup-node@v4
with:
node-version: 22
cache: "pnpm"

- name: Install dependencies
run: pnpm install

- name: Build
run: pnpm -r --filter @ensdomains/ensjs-abi --filter @ensdomains/ensjs build

- name: Publish to pkg.pr.new
run: pnpm dlx pkg-pr-new publish "./packages/ensjs-abi" "./packages/ensjs"
20 changes: 16 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,20 @@ jobs:

- run: pnpm install --frozen-lockfile

- name: Build ensjs
run: pnpm -F @ensdomains/ensjs build
- name: Build ensjs-abi and ensjs
run: pnpm -F @ensdomains/ensjs-abi -F @ensdomains/ensjs build

- name: Start test environment
run: docker compose up -d devnet
working-directory: packages/ensjs

- name: Run tests
run: pnpm -F @ensdomains/ensjs tenv start --extra-time 11368000
run: pnpm -F @ensdomains/ensjs test --run

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
lint:
name: Lint
runs-on: ubuntu-latest
Expand All @@ -43,8 +52,11 @@ jobs:

- run: pnpm install --frozen-lockfile

- name: Build ensjs-abi
run: pnpm -F @ensdomains/ensjs-abi build

- name: Lint
run: pnpm lint

- name: Type check
run: pnpm -F @ensdomains/ensjs build
run: pnpm -F @ensdomains/ensjs check:types
2 changes: 1 addition & 1 deletion .npmrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
strict-peer-dependencies=false
link-workspace-packages=deep
provenance=true
auto-install-peers=false
auto-install-peers=false
121 changes: 121 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

ENSjs is a TypeScript library for interacting with the Ethereum Name Service (ENS). It's built on top of Viem and provides comprehensive ENS contract interaction with tree-shaking support.

## Build & Development Commands

```bash
# Install dependencies
pnpm install

# Build all packages
pnpm -r build

# Build specific package
pnpm -F @ensdomains/ensjs build

# Lint all packages
pnpm lint

# Run tests (ensjs package)
pnpm -F @ensdomains/ensjs test

# Watch mode testing
pnpm -F @ensdomains/ensjs test:watch

# Run a single test file
pnpm -F @ensdomains/ensjs test src/actions/public/getRecords.test.ts

# Start test environment (with ENS contracts)
pnpm -F @ensdomains/ensjs denv

# Start local anvil only (no ENSnode, no scripts)
pnpm -F @ensdomains/ensjs anvil

# Generate documentation
pnpm -F @ensdomains/ensjs generateDocs

# Versioning with changesets
pnpm chgset:run # Create changeset
pnpm chgset:version # Update versions
```

## Monorepo Structure

```
packages/
├── ensjs/ # Main ENS library (@ensdomains/ensjs)
├── react/ # React hooks (@ensdomains/ensjs-react)
└── query-core/ # @wagmi/core integration (@ensdomains/ensjs-query-core)
```

## Architecture

### Package: @ensdomains/ensjs

**Actions** (`src/actions/`): Composable functions that extend viem clients
- `public/v1/` - ENS v1 read operations (getExpiry, getOwner, getWrapperData)
- `public/v2/` - ENS v2 read operations (getExpiry, getNameRegistries, getNameRolesForAccount)
- `wallet/v2/` - ENS v2 write operations (deploySubregistry, grantRoles, setSubregistry)
- `dns/` - DNS-related functions
- `subgraph/` - Subgraph query functions

**Clients** (`src/clients/`): Factory functions for L1/L2 chain support
- `l1.ts` - Mainnet client
- `l2.ts` - L2 chain clients
- Supported chains: mainnet (1), sepolia (11155111)

**Contracts** (`src/contracts/`): ABIs and chain-specific addresses for 20+ ENS contracts

**Utils** (`src/utils/`):
- `coders/` - ABI encoding/decoding (getAbi, getAddress, getContentHash, getText)
- `name/` - Name normalization and validation
- `v2/registry/` - V2 registry utilities (labelToCanonicalId)
- `v2/roles/` - Role encoding/decoding

**Exports** (`src/exports/`): Public API surface
- `public.ts` - Public client actions
- `wallet.ts` - Wallet client actions
- `chain.ts` - Chain configurations

### Action Pattern

Actions follow this structure:
```typescript
export const actionName = async (
client: SupportedClient,
params: ActionParams
): Promise<ActionReturn> => {
// Uses viem's getAction() and multicall for batching
}
```

### Client Types

- **Public Client**: Read-only operations
- **Wallet Client**: Write operations (registration, renewals, records)

## Testing

- Framework: Vitest
- Tests collocated with source: `*.test.ts`
- Test setup: `packages/ensjs/src/test/setup.ts`
- Uses `ens-test-env` for integration tests with deployed contracts

## Code Quality

- Formatter/Linter: Biome
- TypeScript: Strict mode enabled
- Node version: >=22 (main packages), >=18 (query-core)

## Key Dependencies

- `viem` (peer dependency ^2.30.6) - Ethereum interactions
- `@adraffy/ens-normalize` - Name normalization
- `@ensdomains/address-encoder` - Address encoding
- `@ensdomains/content-hash` - Content hash encoding
- `graphql-request` - Subgraph queries
110 changes: 54 additions & 56 deletions biome.json
Original file line number Diff line number Diff line change
@@ -1,58 +1,56 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
"files": {
"ignore": [
"node_modules",
"package.json",
"dist",
"coverage",
"data",
"cache",
"tsconfig.*.json",
"packages/ensjs/contracts"
]
},
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"complexity": {
"noForEach": "off",
"noBannedTypes": "warn"
},
"style": {
"noNonNullAssertion": "off"
},
"correctness": {
"noUnusedImports": "error",
"noUnusedVariables": "error",
"noUnusedPrivateClassMembers": "error"
},
"performance": {
"noAccumulatingSpread": "off"
},
"suspicious": {
"noAssignInExpressions": "off",
"noExplicitAny": "warn"
}
}
},
"formatter": {
"enabled": true
},
"javascript": {
"formatter": {
"enabled": true,
"semicolons": "asNeeded",
"quoteStyle": "single",
"indentWidth": 2,
"indentStyle": "space"
},
"linter": {
"enabled": true
}
}
"$schema": "https://biomejs.dev/schemas/2.0.6/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": true
},
"files": {
"ignoreUnknown": false,
"includes": [
"packages/**/*.{cts,ts,mts}",
"packages/*/*.js",
"examples/**/*.{ts}",
"!**/*.gen.ts",
"!**/node_modules/**",
"!**/dist/**"
]
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"style": {
"noParameterAssign": "error",
"useAsConstAssertion": "error",
"useDefaultParameterLast": "error",
"useEnumInitializers": "error",
"useSelfClosingElements": "error",
"useSingleVarDeclarator": "error",
"noUnusedTemplateLiteral": "error",
"useNumberNamespace": "error",
"noInferrableTypes": "error",
"noUselessElse": "error"
}
}
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"semicolons": "asNeeded"
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}
13 changes: 0 additions & 13 deletions examples/basic-esm/package.json

This file was deleted.

29 changes: 0 additions & 29 deletions examples/basic-esm/src/index.js

This file was deleted.

28 changes: 0 additions & 28 deletions examples/basic-tsnode-esm/src/index.ts

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@
"type": "module",
"version": "0.0.1",
"scripts": {
"start": "ts-node-esm src/index.ts"
"start": "tsx src/index.ts"
},
"dependencies": {
"@ensdomains/ensjs": "workspace:*",
"ts-node": "^10.9.2",
"typescript": "^5.6.2",
"viem": "^2.30.6"
},
"devDependencies": {
"tsx": "^4.20.3"
}
}
}
Loading
Loading