@ensdomains/ensjs 3.0.0-alpha.10 → 3.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/contracts/baseRegistrar.d.ts +1 -1
- package/dist/cjs/contracts/index.d.ts +3 -3
- package/dist/cjs/contracts/multicall.d.ts +1 -1
- package/dist/cjs/contracts/registry.d.ts +1 -1
- package/dist/cjs/functions/burnFuses.js +1 -1
- package/dist/cjs/functions/createSubname.d.ts +3 -1
- package/dist/cjs/functions/createSubname.js +4 -2
- package/dist/cjs/functions/deleteSubname.d.ts +1 -1
- package/dist/cjs/functions/deleteSubname.js +3 -2
- package/dist/cjs/functions/getExpiry.d.ts +9 -2
- package/dist/cjs/functions/getExpiry.js +52 -7
- package/dist/cjs/functions/getFuses.d.ts +2 -3
- package/dist/cjs/functions/getFuses.js +4 -13
- package/dist/cjs/functions/getSpecificRecord.js +8 -1
- package/dist/cjs/functions/getSubnames.d.ts +1 -1
- package/dist/cjs/functions/getSubnames.js +1 -1
- package/dist/cjs/functions/transferSubname.d.ts +12 -3
- package/dist/cjs/functions/transferSubname.js +5 -3
- package/dist/cjs/functions/wrapName.d.ts +3 -1
- package/dist/cjs/functions/wrapName.js +35 -29
- package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +222 -201
- package/dist/cjs/generated/DNSRegistrar.d.ts +68 -64
- package/dist/cjs/generated/DNSSECImpl.d.ts +111 -111
- package/dist/cjs/generated/DefaultReverseResolver.d.ts +17 -17
- package/dist/cjs/generated/ENSRegistry.d.ts +126 -111
- package/dist/cjs/generated/ETHRegistrarController.d.ts +111 -109
- package/dist/cjs/generated/Multicall.d.ts +60 -60
- package/dist/cjs/generated/NameWrapper.d.ts +493 -354
- package/dist/cjs/generated/P256SHA256Algorithm.d.ts +11 -7
- package/dist/cjs/generated/PublicResolver.d.ts +259 -235
- package/dist/cjs/generated/RSASHA1Algorithm.d.ts +11 -7
- package/dist/cjs/generated/RSASHA256Algorithm.d.ts +11 -7
- package/dist/cjs/generated/ReverseRegistrar.d.ts +112 -103
- package/dist/cjs/generated/Root.d.ts +77 -77
- package/dist/cjs/generated/SHA1Digest.d.ts +7 -7
- package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +11 -7
- package/dist/cjs/generated/SHA256Digest.d.ts +7 -7
- package/dist/cjs/generated/StaticMetadataService.d.ts +7 -7
- package/dist/cjs/generated/TLDPublicSuffixList.d.ts +7 -7
- package/dist/cjs/generated/UniversalResolver.d.ts +31 -31
- package/dist/cjs/generated/common.d.ts +1 -0
- package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/DNSRegistrar__factory.js +3 -26
- package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/DNSSECImpl__factory.js +3 -26
- package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +14 -4
- package/dist/cjs/generated/factories/NameWrapper__factory.js +210 -79
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +3 -26
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +3 -26
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +3 -26
- package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/SHA1Digest__factory.js +3 -26
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +3 -26
- package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/SHA256Digest__factory.js +3 -26
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +3 -26
- package/dist/cjs/generated/factories/index.d.ts +14 -0
- package/dist/cjs/generated/factories/index.js +29 -1
- package/dist/cjs/generated/index.d.ts +29 -1
- package/dist/cjs/generated/index.js +31 -3
- package/dist/cjs/index.d.ts +12 -6
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
- package/dist/cjs/utils/wrapperExpiry.js +30 -0
- package/dist/esm/contracts/baseRegistrar.d.ts +1 -1
- package/dist/esm/contracts/index.d.ts +3 -3
- package/dist/esm/contracts/multicall.d.ts +1 -1
- package/dist/esm/contracts/registry.d.ts +1 -1
- package/dist/esm/functions/burnFuses.js +1 -1
- package/dist/esm/functions/createSubname.d.ts +3 -1
- package/dist/esm/functions/createSubname.js +4 -2
- package/dist/esm/functions/deleteSubname.d.ts +1 -1
- package/dist/esm/functions/deleteSubname.js +3 -2
- package/dist/esm/functions/getExpiry.d.ts +9 -2
- package/dist/esm/functions/getExpiry.js +52 -7
- package/dist/esm/functions/getFuses.d.ts +2 -3
- package/dist/esm/functions/getFuses.js +5 -14
- package/dist/esm/functions/getSpecificRecord.js +8 -1
- package/dist/esm/functions/getSubnames.d.ts +1 -1
- package/dist/esm/functions/getSubnames.js +1 -1
- package/dist/esm/functions/transferSubname.d.ts +12 -3
- package/dist/esm/functions/transferSubname.js +5 -3
- package/dist/esm/functions/wrapName.d.ts +3 -1
- package/dist/esm/functions/wrapName.js +35 -29
- package/dist/esm/generated/BaseRegistrarImplementation.d.ts +222 -201
- package/dist/esm/generated/DNSRegistrar.d.ts +68 -64
- package/dist/esm/generated/DNSSECImpl.d.ts +111 -111
- package/dist/esm/generated/DefaultReverseResolver.d.ts +17 -17
- package/dist/esm/generated/ENSRegistry.d.ts +126 -111
- package/dist/esm/generated/ETHRegistrarController.d.ts +111 -109
- package/dist/esm/generated/Multicall.d.ts +60 -60
- package/dist/esm/generated/NameWrapper.d.ts +493 -354
- package/dist/esm/generated/P256SHA256Algorithm.d.ts +11 -7
- package/dist/esm/generated/PublicResolver.d.ts +259 -235
- package/dist/esm/generated/RSASHA1Algorithm.d.ts +11 -7
- package/dist/esm/generated/RSASHA256Algorithm.d.ts +11 -7
- package/dist/esm/generated/ReverseRegistrar.d.ts +112 -103
- package/dist/esm/generated/Root.d.ts +77 -77
- package/dist/esm/generated/SHA1Digest.d.ts +7 -7
- package/dist/esm/generated/SHA1NSEC3Digest.d.ts +11 -7
- package/dist/esm/generated/SHA256Digest.d.ts +7 -7
- package/dist/esm/generated/StaticMetadataService.d.ts +7 -7
- package/dist/esm/generated/TLDPublicSuffixList.d.ts +7 -7
- package/dist/esm/generated/UniversalResolver.d.ts +31 -31
- package/dist/esm/generated/common.d.ts +1 -0
- package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +3 -15
- package/dist/esm/generated/factories/DNSRegistrar__factory.js +2 -25
- package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +3 -15
- package/dist/esm/generated/factories/DNSSECImpl__factory.js +2 -25
- package/dist/esm/generated/factories/ETHRegistrarController__factory.js +14 -4
- package/dist/esm/generated/factories/NameWrapper__factory.js +210 -79
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +2 -25
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +2 -25
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +2 -25
- package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +3 -15
- package/dist/esm/generated/factories/SHA1Digest__factory.js +2 -25
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +2 -25
- package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +3 -15
- package/dist/esm/generated/factories/SHA256Digest__factory.js +2 -25
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +2 -25
- package/dist/esm/generated/factories/index.d.ts +14 -0
- package/dist/esm/generated/factories/index.js +14 -0
- package/dist/esm/generated/index.d.ts +29 -1
- package/dist/esm/generated/index.js +15 -1
- package/dist/esm/index.d.ts +12 -6
- package/dist/esm/index.js +3 -2
- package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
- package/dist/esm/utils/wrapperExpiry.js +26 -0
- package/package.json +12 -10
- package/src/ABIs/Multicall.json +452 -0
- package/src/contracts/index.ts +1 -1
- package/src/functions/batch.test.ts +6 -6
- package/src/functions/batchWrappers.test.ts +5 -5
- package/src/functions/burnFuses.test.ts +5 -10
- package/src/functions/burnFuses.ts +1 -1
- package/src/functions/createSubname.test.ts +6 -10
- package/src/functions/createSubname.ts +14 -2
- package/src/functions/deleteSubname.test.ts +9 -28
- package/src/functions/deleteSubname.ts +3 -2
- package/src/functions/getDNSOwner.test.ts +1 -5
- package/src/functions/getExpiry.test.ts +26 -4
- package/src/functions/getExpiry.ts +87 -9
- package/src/functions/getFuses.test.ts +10 -33
- package/src/functions/getFuses.ts +10 -16
- package/src/functions/getHistory.test.ts +23 -11
- package/src/functions/getName.test.ts +4 -4
- package/src/functions/getNames.test.ts +97 -68
- package/src/functions/getOwner.test.ts +10 -25
- package/src/functions/getProfile.test.ts +32 -24
- package/src/functions/getResolver.test.ts +2 -6
- package/src/functions/getSpecificRecord.test.ts +16 -13
- package/src/functions/getSpecificRecord.ts +10 -4
- package/src/functions/getSubnames.test.ts +21 -17
- package/src/functions/getSubnames.ts +9 -2
- package/src/functions/makeCommitment.test.ts +2 -2
- package/src/functions/setName.test.ts +10 -11
- package/src/functions/setRecord.test.ts +12 -9
- package/src/functions/setRecords.test.ts +6 -5
- package/src/functions/setResolver.test.ts +6 -9
- package/src/functions/transferName.test.ts +13 -27
- package/src/functions/transferSubname.test.ts +11 -30
- package/src/functions/transferSubname.ts +28 -10
- package/src/functions/unwrapName.test.ts +13 -28
- package/src/functions/wrapName.test.ts +109 -34
- package/src/functions/wrapName.ts +45 -29
- package/src/generated/BaseRegistrarImplementation.ts +382 -296
- package/src/generated/DNSRegistrar.ts +103 -89
- package/src/generated/DNSSECImpl.ts +180 -149
- package/src/generated/DefaultReverseResolver.ts +37 -21
- package/src/generated/ENSRegistry.ts +257 -184
- package/src/generated/ETHRegistrarController.ts +252 -191
- package/src/generated/Multicall.ts +73 -57
- package/src/generated/NameWrapper.ts +979 -649
- package/src/generated/P256SHA256Algorithm.ts +21 -16
- package/src/generated/PublicResolver.ts +452 -362
- package/src/generated/RSASHA1Algorithm.ts +21 -16
- package/src/generated/RSASHA256Algorithm.ts +21 -16
- package/src/generated/ReverseRegistrar.ts +193 -141
- package/src/generated/Root.ts +146 -86
- package/src/generated/SHA1Digest.ts +12 -11
- package/src/generated/SHA1NSEC3Digest.ts +21 -16
- package/src/generated/SHA256Digest.ts +12 -11
- package/src/generated/StaticMetadataService.ts +22 -6
- package/src/generated/TLDPublicSuffixList.ts +10 -6
- package/src/generated/UniversalResolver.ts +44 -40
- package/src/generated/common.ts +2 -0
- package/src/generated/factories/DNSRegistrar__factory.ts +4 -56
- package/src/generated/factories/DNSSECImpl__factory.ts +4 -49
- package/src/generated/factories/ETHRegistrarController__factory.ts +14 -4
- package/src/generated/factories/NameWrapper__factory.ts +210 -79
- package/src/generated/factories/P256SHA256Algorithm__factory.ts +4 -40
- package/src/generated/factories/RSASHA1Algorithm__factory.ts +4 -40
- package/src/generated/factories/RSASHA256Algorithm__factory.ts +4 -40
- package/src/generated/factories/SHA1Digest__factory.ts +4 -40
- package/src/generated/factories/SHA1NSEC3Digest__factory.ts +4 -40
- package/src/generated/factories/SHA256Digest__factory.ts +4 -40
- package/src/generated/factories/TLDPublicSuffixList__factory.ts +4 -40
- package/src/generated/factories/index.ts +14 -0
- package/src/generated/index.ts +29 -1
- package/src/index.ts +3 -2
- package/src/tests/setup.ts +18 -13
- package/src/tests/withProvider.test.ts +2 -2
- package/src/utils/wrapperExpiry.ts +31 -0
- package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
- package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
- package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
- package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
- package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
- package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
- package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
- package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
- package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
- package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
- package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
- package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
- package/src/ABIs/ETHRegistrarController.json +0 -494
- package/src/ABIs/NameWrapper.json +0 -1183
- package/src/ABIs/PublicResolver.json +0 -875
- package/src/ABIs/ReverseRegistrar.json +0 -323
- package/src/ABIs/StaticMetadataService.json +0 -32
- package/src/ABIs/UniversalResolver.json +0 -187
- package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
- package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
- package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
|
@@ -11,21 +11,25 @@ const testProperties = (obj: object, ...properties: string[]) =>
|
|
|
11
11
|
properties.map((property) => expect(obj).toHaveProperty(property))
|
|
12
12
|
|
|
13
13
|
describe('getSubnames', () => {
|
|
14
|
-
it('should get the subnames for a name'
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
14
|
+
it.todo('should get the subnames for a name')
|
|
15
|
+
// it('should get the subnames for a name', async () => {
|
|
16
|
+
// const result = await ENSInstance.getSubnames({
|
|
17
|
+
// name: 'with-profile.eth',
|
|
18
|
+
// })
|
|
19
|
+
// expect(result).toBeTruthy()
|
|
20
|
+
// if (result) {
|
|
21
|
+
// console.log(result)
|
|
22
|
+
// expect(result.length).toBeGreaterThan(0)
|
|
23
|
+
// testProperties(
|
|
24
|
+
// result[0],
|
|
25
|
+
// 'id',
|
|
26
|
+
// 'labelName',
|
|
27
|
+
// 'labelhash',
|
|
28
|
+
// 'name',
|
|
29
|
+
// 'isMigrated',
|
|
30
|
+
// 'owner',
|
|
31
|
+
// 'truncatedName',
|
|
32
|
+
// )
|
|
33
|
+
// }
|
|
34
|
+
// })
|
|
31
35
|
})
|
|
@@ -21,13 +21,20 @@ type Params = {
|
|
|
21
21
|
pageSize?: number
|
|
22
22
|
orderDirection?: 'asc' | 'desc'
|
|
23
23
|
orderBy?: 'createdAt' | 'labelName'
|
|
24
|
-
lastSubnames
|
|
24
|
+
lastSubnames?: Array<any>
|
|
25
25
|
isLargeQuery?: boolean
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const largeQuery = async (
|
|
29
29
|
{ gqlInstance }: ENSArgs<'gqlInstance'>,
|
|
30
|
-
{
|
|
30
|
+
{
|
|
31
|
+
name,
|
|
32
|
+
page,
|
|
33
|
+
pageSize = 10,
|
|
34
|
+
orderDirection,
|
|
35
|
+
orderBy,
|
|
36
|
+
lastSubnames = [],
|
|
37
|
+
}: Params,
|
|
31
38
|
) => {
|
|
32
39
|
const client = gqlInstance.client
|
|
33
40
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ENS } from '..'
|
|
2
|
-
import { makeCommitment } from '../utils/registerHelpers'
|
|
3
2
|
import setup from '../tests/setup'
|
|
3
|
+
import { makeCommitment } from '../utils/registerHelpers'
|
|
4
4
|
|
|
5
5
|
let ENSInstance: ENS
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ describe('makeCommitment', () => {
|
|
|
13
13
|
const resolver = await ENSInstance.contracts!.getPublicResolver()!
|
|
14
14
|
const commitment = makeCommitment({
|
|
15
15
|
name: 'test.eth',
|
|
16
|
-
owner: '
|
|
16
|
+
owner: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
17
17
|
duration: 1 * 365 * 24 * 60 * 60,
|
|
18
18
|
resolver: resolver,
|
|
19
19
|
})
|
|
@@ -22,38 +22,37 @@ describe('setName', () => {
|
|
|
22
22
|
await revert()
|
|
23
23
|
})
|
|
24
24
|
it('should return a transaction for a name and set successfully', async () => {
|
|
25
|
-
const tx = await ENSInstance.setName('
|
|
25
|
+
const tx = await ENSInstance.setName('test123.eth', { addressOrIndex: 1 })
|
|
26
26
|
expect(tx).toBeTruthy()
|
|
27
27
|
await tx?.wait()
|
|
28
28
|
|
|
29
29
|
const universalResolver =
|
|
30
30
|
await ENSInstance.contracts!.getUniversalResolver()!
|
|
31
|
-
const reverseNode = accounts[
|
|
31
|
+
const reverseNode = accounts[1].toLowerCase().substring(2) + '.addr.reverse'
|
|
32
32
|
const result = await universalResolver.reverse(hexEncodeName(reverseNode))
|
|
33
|
-
expect(result[0]).toBe('
|
|
33
|
+
expect(result[0]).toBe('test123.eth')
|
|
34
34
|
})
|
|
35
35
|
it("should return a transaction for setting another address' name", async () => {
|
|
36
|
-
jest.setTimeout(20000)
|
|
37
36
|
const registry = (await ENSInstance.contracts!.getRegistry()!).connect(
|
|
38
|
-
provider.getSigner(),
|
|
37
|
+
provider.getSigner(1),
|
|
39
38
|
)
|
|
40
39
|
const setApprovedForAllTx = await registry.setApprovalForAll(
|
|
41
|
-
accounts[
|
|
40
|
+
accounts[2],
|
|
42
41
|
true,
|
|
43
42
|
)
|
|
44
43
|
await setApprovedForAllTx?.wait()
|
|
45
44
|
|
|
46
|
-
const tx = await ENSInstance.setName('
|
|
47
|
-
address: accounts[
|
|
48
|
-
addressOrIndex:
|
|
45
|
+
const tx = await ENSInstance.setName('test123.eth', {
|
|
46
|
+
address: accounts[1],
|
|
47
|
+
addressOrIndex: 2,
|
|
49
48
|
})
|
|
50
49
|
expect(tx).toBeTruthy()
|
|
51
50
|
await tx?.wait()
|
|
52
51
|
|
|
53
52
|
const universalResolver =
|
|
54
53
|
await ENSInstance.contracts!.getUniversalResolver()!
|
|
55
|
-
const reverseNode = accounts[
|
|
54
|
+
const reverseNode = accounts[1].toLowerCase().substring(2) + '.addr.reverse'
|
|
56
55
|
const result = await universalResolver.reverse(hexEncodeName(reverseNode))
|
|
57
|
-
expect(result[0]).toBe('
|
|
56
|
+
expect(result[0]).toBe('test123.eth')
|
|
58
57
|
})
|
|
59
58
|
})
|
|
@@ -17,9 +17,10 @@ afterAll(async () => {
|
|
|
17
17
|
|
|
18
18
|
describe('setRecord', () => {
|
|
19
19
|
it('should allow a text record set', async () => {
|
|
20
|
-
const tx = await ENSInstance.setRecord('
|
|
20
|
+
const tx = await ENSInstance.setRecord('test123.eth', {
|
|
21
21
|
type: 'text',
|
|
22
22
|
record: { key: 'foo', value: 'bar' },
|
|
23
|
+
addressOrIndex: 1,
|
|
23
24
|
})
|
|
24
25
|
expect(tx).toBeTruthy()
|
|
25
26
|
await tx.wait()
|
|
@@ -28,9 +29,9 @@ describe('setRecord', () => {
|
|
|
28
29
|
await ENSInstance.contracts!.getUniversalResolver()!
|
|
29
30
|
const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
|
|
30
31
|
const encodedText = await universalResolver.resolve(
|
|
31
|
-
hexEncodeName('
|
|
32
|
+
hexEncodeName('test123.eth'),
|
|
32
33
|
publicResolver.interface.encodeFunctionData('text', [
|
|
33
|
-
namehash('
|
|
34
|
+
namehash('test123.eth'),
|
|
34
35
|
'foo',
|
|
35
36
|
]),
|
|
36
37
|
)
|
|
@@ -41,12 +42,13 @@ describe('setRecord', () => {
|
|
|
41
42
|
expect(resultText).toBe('bar')
|
|
42
43
|
})
|
|
43
44
|
it('should allow an address record set', async () => {
|
|
44
|
-
const tx = await ENSInstance.setRecord('
|
|
45
|
+
const tx = await ENSInstance.setRecord('test123.eth', {
|
|
45
46
|
type: 'addr',
|
|
46
47
|
record: {
|
|
47
48
|
key: 'ETC',
|
|
48
49
|
value: '0x42D63ae25990889E35F215bC95884039Ba354115',
|
|
49
50
|
},
|
|
51
|
+
addressOrIndex: 1,
|
|
50
52
|
})
|
|
51
53
|
expect(tx).toBeTruthy()
|
|
52
54
|
await tx.wait()
|
|
@@ -55,9 +57,9 @@ describe('setRecord', () => {
|
|
|
55
57
|
await ENSInstance.contracts!.getUniversalResolver()!
|
|
56
58
|
const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
|
|
57
59
|
const encodedAddr = await universalResolver.resolve(
|
|
58
|
-
hexEncodeName('
|
|
60
|
+
hexEncodeName('test123.eth'),
|
|
59
61
|
publicResolver.interface.encodeFunctionData('addr(bytes32,uint256)', [
|
|
60
|
-
namehash('
|
|
62
|
+
namehash('test123.eth'),
|
|
61
63
|
'61',
|
|
62
64
|
]),
|
|
63
65
|
)
|
|
@@ -70,10 +72,11 @@ describe('setRecord', () => {
|
|
|
70
72
|
)
|
|
71
73
|
})
|
|
72
74
|
it('should allow a contenthash record set', async () => {
|
|
73
|
-
const tx = await ENSInstance.setRecord('
|
|
75
|
+
const tx = await ENSInstance.setRecord('test123.eth', {
|
|
74
76
|
type: 'contentHash',
|
|
75
77
|
record:
|
|
76
78
|
'ipns://k51qzi5uqu5dgox2z23r6e99oqency055a6xt92xzmyvpz8mwz5ycjavm0u150',
|
|
79
|
+
addressOrIndex: 1,
|
|
77
80
|
})
|
|
78
81
|
expect(tx).toBeTruthy()
|
|
79
82
|
await tx.wait()
|
|
@@ -82,9 +85,9 @@ describe('setRecord', () => {
|
|
|
82
85
|
await ENSInstance.contracts!.getUniversalResolver()!
|
|
83
86
|
const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
|
|
84
87
|
const encodedContent = await universalResolver.resolve(
|
|
85
|
-
hexEncodeName('
|
|
88
|
+
hexEncodeName('test123.eth'),
|
|
86
89
|
publicResolver.interface.encodeFunctionData('contenthash', [
|
|
87
|
-
namehash('
|
|
90
|
+
namehash('test123.eth'),
|
|
88
91
|
]),
|
|
89
92
|
)
|
|
90
93
|
const [resultContent] = publicResolver.interface.decodeFunctionResult(
|
|
@@ -16,13 +16,14 @@ afterAll(async () => {
|
|
|
16
16
|
|
|
17
17
|
describe('setRecords', () => {
|
|
18
18
|
it('should return a transaction to the resolver and set successfully', async () => {
|
|
19
|
-
const tx = await ENSInstance.setRecords('
|
|
19
|
+
const tx = await ENSInstance.setRecords('test123.eth', {
|
|
20
20
|
records: {
|
|
21
21
|
coinTypes: [
|
|
22
22
|
{ key: 'ETC', value: '0x42D63ae25990889E35F215bC95884039Ba354115' },
|
|
23
23
|
],
|
|
24
24
|
texts: [{ key: 'foo', value: 'bar' }],
|
|
25
25
|
},
|
|
26
|
+
addressOrIndex: 1,
|
|
26
27
|
})
|
|
27
28
|
expect(tx).toBeTruthy()
|
|
28
29
|
await tx.wait()
|
|
@@ -31,16 +32,16 @@ describe('setRecords', () => {
|
|
|
31
32
|
await ENSInstance.contracts!.getUniversalResolver()!
|
|
32
33
|
const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
|
|
33
34
|
const encodedText = await universalResolver.resolve(
|
|
34
|
-
hexEncodeName('
|
|
35
|
+
hexEncodeName('test123.eth'),
|
|
35
36
|
publicResolver.interface.encodeFunctionData('text', [
|
|
36
|
-
namehash('
|
|
37
|
+
namehash('test123.eth'),
|
|
37
38
|
'foo',
|
|
38
39
|
]),
|
|
39
40
|
)
|
|
40
41
|
const encodedAddr = await universalResolver.resolve(
|
|
41
|
-
hexEncodeName('
|
|
42
|
+
hexEncodeName('test123.eth'),
|
|
42
43
|
publicResolver.interface.encodeFunctionData('addr(bytes32,uint256)', [
|
|
43
|
-
namehash('
|
|
44
|
+
namehash('test123.eth'),
|
|
44
45
|
'61',
|
|
45
46
|
]),
|
|
46
47
|
)
|
|
@@ -20,9 +20,10 @@ describe('setResolver', () => {
|
|
|
20
20
|
await revert()
|
|
21
21
|
})
|
|
22
22
|
it('should return a transaction to the registry and set successfully', async () => {
|
|
23
|
-
const tx = await ENSInstance.setResolver('
|
|
23
|
+
const tx = await ENSInstance.setResolver('test123.eth', {
|
|
24
24
|
contract: 'registry',
|
|
25
25
|
resolver: '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC',
|
|
26
|
+
addressOrIndex: 1,
|
|
26
27
|
})
|
|
27
28
|
expect(tx).toBeTruthy()
|
|
28
29
|
await tx.wait()
|
|
@@ -30,19 +31,15 @@ describe('setResolver', () => {
|
|
|
30
31
|
const universalResolver =
|
|
31
32
|
await ENSInstance.contracts!.getUniversalResolver()!
|
|
32
33
|
const [result] = await universalResolver.findResolver(
|
|
33
|
-
hexEncodeName('
|
|
34
|
+
hexEncodeName('test123.eth'),
|
|
34
35
|
)
|
|
35
36
|
expect(result).toBe('0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC')
|
|
36
37
|
})
|
|
37
38
|
it('should return a transaction to the namewrapper and set successfully', async () => {
|
|
38
|
-
const
|
|
39
|
-
const wrapNameTx = await ENSInstance.wrapName('parthtejpal.eth', {
|
|
40
|
-
wrappedOwner: accounts[0],
|
|
41
|
-
})
|
|
42
|
-
await wrapNameTx.wait()
|
|
43
|
-
const tx = await ENSInstance.setResolver('parthtejpal.eth', {
|
|
39
|
+
const tx = await ENSInstance.setResolver('wrapped.eth', {
|
|
44
40
|
contract: 'nameWrapper',
|
|
45
41
|
resolver: '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC',
|
|
42
|
+
addressOrIndex: 1,
|
|
46
43
|
})
|
|
47
44
|
expect(tx).toBeTruthy()
|
|
48
45
|
await tx.wait()
|
|
@@ -50,7 +47,7 @@ describe('setResolver', () => {
|
|
|
50
47
|
const universalResolver =
|
|
51
48
|
await ENSInstance.contracts!.getUniversalResolver()!
|
|
52
49
|
const [result] = await universalResolver.findResolver(
|
|
53
|
-
hexEncodeName('
|
|
50
|
+
hexEncodeName('wrapped.eth'),
|
|
54
51
|
)
|
|
55
52
|
expect(result).toBe('0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC')
|
|
56
53
|
})
|
|
@@ -22,58 +22,44 @@ describe('transferName', () => {
|
|
|
22
22
|
await revert()
|
|
23
23
|
})
|
|
24
24
|
it('should allow a transfer on the registrar', async () => {
|
|
25
|
-
const tx = await ENSInstance.transferName('
|
|
25
|
+
const tx = await ENSInstance.transferName('test123.eth', {
|
|
26
26
|
contract: 'baseRegistrar',
|
|
27
|
-
newOwner: accounts[
|
|
28
|
-
addressOrIndex:
|
|
27
|
+
newOwner: accounts[2],
|
|
28
|
+
addressOrIndex: 1,
|
|
29
29
|
})
|
|
30
30
|
expect(tx).toBeTruthy()
|
|
31
31
|
await tx.wait()
|
|
32
32
|
|
|
33
33
|
const baseRegistrar = await ENSInstance.contracts!.getBaseRegistrar()!
|
|
34
34
|
const result = await baseRegistrar.ownerOf(
|
|
35
|
-
utils.solidityKeccak256(['string'], ['
|
|
35
|
+
utils.solidityKeccak256(['string'], ['test123']),
|
|
36
36
|
)
|
|
37
|
-
expect(result).toBe(accounts[
|
|
37
|
+
expect(result).toBe(accounts[2])
|
|
38
38
|
})
|
|
39
39
|
it('should allow a transfer on the namewrapper', async () => {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
})
|
|
43
|
-
await wrapNameTx.wait()
|
|
44
|
-
const tx = await ENSInstance.transferName('parthtejpal.eth', {
|
|
45
|
-
newOwner: accounts[1],
|
|
40
|
+
const tx = await ENSInstance.transferName('wrapped.eth', {
|
|
41
|
+
newOwner: accounts[2],
|
|
46
42
|
contract: 'nameWrapper',
|
|
47
|
-
addressOrIndex:
|
|
43
|
+
addressOrIndex: 1,
|
|
48
44
|
})
|
|
49
45
|
expect(tx).toBeTruthy()
|
|
50
46
|
await tx.wait()
|
|
51
47
|
|
|
52
48
|
const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
|
|
53
|
-
const result = await nameWrapper.ownerOf(namehash('
|
|
54
|
-
expect(result).toBe(accounts[
|
|
49
|
+
const result = await nameWrapper.ownerOf(namehash('wrapped.eth'))
|
|
50
|
+
expect(result).toBe(accounts[2])
|
|
55
51
|
})
|
|
56
52
|
it('should allow a transfer on the registry', async () => {
|
|
57
|
-
const
|
|
58
|
-
'test.parthtejpal.eth',
|
|
59
|
-
{
|
|
60
|
-
contract: 'registry',
|
|
61
|
-
owner: accounts[0],
|
|
62
|
-
addressOrIndex: accounts[0],
|
|
63
|
-
},
|
|
64
|
-
)
|
|
65
|
-
await createSubnameTx.wait()
|
|
66
|
-
|
|
67
|
-
const tx = await ENSInstance.transferName('test.parthtejpal.eth', {
|
|
53
|
+
const tx = await ENSInstance.transferName('test.with-subnames.eth', {
|
|
68
54
|
newOwner: accounts[1],
|
|
69
55
|
contract: 'registry',
|
|
70
|
-
addressOrIndex: accounts[
|
|
56
|
+
addressOrIndex: accounts[2],
|
|
71
57
|
})
|
|
72
58
|
expect(tx).toBeTruthy()
|
|
73
59
|
await tx.wait()
|
|
74
60
|
|
|
75
61
|
const registry = await ENSInstance.contracts!.getRegistry()!
|
|
76
|
-
const result = await registry.owner(namehash('test.
|
|
62
|
+
const result = await registry.owner(namehash('test.with-subnames.eth'))
|
|
77
63
|
expect(result).toBe(accounts[1])
|
|
78
64
|
})
|
|
79
65
|
})
|
|
@@ -22,53 +22,34 @@ describe('transferSubname', () => {
|
|
|
22
22
|
await revert()
|
|
23
23
|
})
|
|
24
24
|
it('should allow transferring a subname on the registry', async () => {
|
|
25
|
-
const
|
|
26
|
-
'test.parthtejpal.eth',
|
|
27
|
-
{
|
|
28
|
-
contract: 'registry',
|
|
29
|
-
owner: accounts[0],
|
|
30
|
-
addressOrIndex: 0,
|
|
31
|
-
},
|
|
32
|
-
)
|
|
33
|
-
await createSubnameTx.wait()
|
|
34
|
-
|
|
35
|
-
const tx = await ENSInstance.transferSubname('test.parthtejpal.eth', {
|
|
25
|
+
const tx = await ENSInstance.transferSubname('test.with-subnames.eth', {
|
|
36
26
|
contract: 'registry',
|
|
37
|
-
|
|
38
|
-
addressOrIndex:
|
|
27
|
+
owner: accounts[1],
|
|
28
|
+
addressOrIndex: 1,
|
|
39
29
|
})
|
|
40
30
|
expect(tx).toBeTruthy()
|
|
41
31
|
await tx.wait()
|
|
42
32
|
|
|
43
33
|
const registry = await ENSInstance.contracts!.getRegistry()!
|
|
44
|
-
const result = await registry.owner(namehash('test.
|
|
34
|
+
const result = await registry.owner(namehash('test.with-subnames.eth'))
|
|
45
35
|
expect(result).toBe(accounts[1])
|
|
46
36
|
})
|
|
47
37
|
it('should allow transferring a subname on the nameWrapper', async () => {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
})
|
|
51
|
-
await wrapNameTx.wait()
|
|
52
|
-
const createSubnameTx = await ENSInstance.createSubname(
|
|
53
|
-
'test.parthtejpal.eth',
|
|
38
|
+
const tx = await ENSInstance.transferSubname(
|
|
39
|
+
'test.wrapped-with-subnames.eth',
|
|
54
40
|
{
|
|
55
41
|
contract: 'nameWrapper',
|
|
56
|
-
owner: accounts[
|
|
57
|
-
addressOrIndex:
|
|
42
|
+
owner: accounts[1],
|
|
43
|
+
addressOrIndex: 1,
|
|
58
44
|
},
|
|
59
45
|
)
|
|
60
|
-
await createSubnameTx.wait()
|
|
61
|
-
|
|
62
|
-
const tx = await ENSInstance.transferSubname('test.parthtejpal.eth', {
|
|
63
|
-
contract: 'nameWrapper',
|
|
64
|
-
address: accounts[1],
|
|
65
|
-
addressOrIndex: 0,
|
|
66
|
-
})
|
|
67
46
|
expect(tx).toBeTruthy()
|
|
68
47
|
await tx.wait()
|
|
69
48
|
|
|
70
49
|
const nameWrapper = await ENSInstance.contracts!.getNameWrapper()!
|
|
71
|
-
const result = await nameWrapper.ownerOf(
|
|
50
|
+
const result = await nameWrapper.ownerOf(
|
|
51
|
+
namehash('test.wrapped-with-subnames.eth'),
|
|
52
|
+
)
|
|
72
53
|
expect(result).toBe(accounts[1])
|
|
73
54
|
})
|
|
74
55
|
})
|
|
@@ -1,17 +1,29 @@
|
|
|
1
1
|
import { ethers } from 'ethers'
|
|
2
2
|
import { ENSArgs } from '..'
|
|
3
3
|
import { namehash } from '../utils/normalise'
|
|
4
|
+
import { Expiry, makeExpiry } from '../utils/wrapperExpiry'
|
|
5
|
+
|
|
6
|
+
type BaseArgs = {
|
|
7
|
+
owner: string
|
|
8
|
+
resolverAddress?: string
|
|
9
|
+
contract: 'registry' | 'nameWrapper'
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type NameWrapperArgs = {
|
|
13
|
+
contract: 'nameWrapper'
|
|
14
|
+
expiry?: Expiry
|
|
15
|
+
} & BaseArgs
|
|
16
|
+
|
|
17
|
+
type Args = BaseArgs | NameWrapperArgs
|
|
4
18
|
|
|
5
19
|
export default async function (
|
|
6
|
-
{ contracts, signer }: ENSArgs<'contracts' | 'signer'>,
|
|
7
|
-
name: string,
|
|
8
20
|
{
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
21
|
+
contracts,
|
|
22
|
+
signer,
|
|
23
|
+
getExpiry,
|
|
24
|
+
}: ENSArgs<'contracts' | 'signer' | 'getExpiry'>,
|
|
25
|
+
name: string,
|
|
26
|
+
{ contract, owner, resolverAddress, ...wrapperArgs }: Args,
|
|
15
27
|
) {
|
|
16
28
|
const labels = name.split('.')
|
|
17
29
|
const label = labels.shift() as string
|
|
@@ -25,17 +37,23 @@ export default async function (
|
|
|
25
37
|
return registry.populateTransaction.setSubnodeOwner(
|
|
26
38
|
parentNodehash,
|
|
27
39
|
labelhash,
|
|
28
|
-
|
|
40
|
+
owner,
|
|
29
41
|
)
|
|
30
42
|
}
|
|
31
43
|
case 'nameWrapper': {
|
|
32
44
|
const nameWrapper = (await contracts?.getNameWrapper()!).connect(signer)
|
|
45
|
+
const expiry = await makeExpiry(
|
|
46
|
+
{ getExpiry },
|
|
47
|
+
labels.join('.'),
|
|
48
|
+
'expiry' in wrapperArgs ? wrapperArgs.expiry : undefined,
|
|
49
|
+
)
|
|
33
50
|
|
|
34
51
|
return nameWrapper.populateTransaction.setSubnodeOwner(
|
|
35
52
|
parentNodehash,
|
|
36
53
|
label,
|
|
37
|
-
|
|
54
|
+
owner,
|
|
38
55
|
'0',
|
|
56
|
+
expiry,
|
|
39
57
|
)
|
|
40
58
|
}
|
|
41
59
|
default: {
|
|
@@ -22,47 +22,32 @@ describe('unwrapName', () => {
|
|
|
22
22
|
await revert()
|
|
23
23
|
})
|
|
24
24
|
it('should return a .eth unwrap name transaction and succeed', async () => {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const tx = await ENSInstance.unwrapName('parthtejpal.eth', {
|
|
31
|
-
newController: accounts[0],
|
|
32
|
-
newRegistrant: accounts[0],
|
|
25
|
+
const tx = await ENSInstance.unwrapName('wrapped.eth', {
|
|
26
|
+
newController: accounts[1],
|
|
27
|
+
newRegistrant: accounts[1],
|
|
28
|
+
addressOrIndex: 1,
|
|
33
29
|
})
|
|
34
30
|
expect(tx).toBeTruthy()
|
|
35
31
|
await tx.wait()
|
|
36
32
|
|
|
37
33
|
const baseRegistrar = await ENSInstance.contracts!.getBaseRegistrar()!
|
|
38
34
|
const result = await baseRegistrar.ownerOf(
|
|
39
|
-
utils.solidityKeccak256(['string'], ['
|
|
35
|
+
utils.solidityKeccak256(['string'], ['wrapped']),
|
|
40
36
|
)
|
|
41
|
-
expect(result).toBe(accounts[
|
|
37
|
+
expect(result).toBe(accounts[1])
|
|
42
38
|
})
|
|
43
39
|
it('should return a regular unwrap name transaction and succeed', async () => {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
await wrapNameTx.wait()
|
|
48
|
-
const createSubnameTx = await ENSInstance.createSubname(
|
|
49
|
-
'test.parthtejpal.eth',
|
|
50
|
-
{
|
|
51
|
-
contract: 'nameWrapper',
|
|
52
|
-
owner: accounts[0],
|
|
53
|
-
addressOrIndex: 0,
|
|
54
|
-
},
|
|
55
|
-
)
|
|
56
|
-
await createSubnameTx.wait()
|
|
57
|
-
|
|
58
|
-
const tx = await ENSInstance.unwrapName('test.parthtejpal.eth', {
|
|
59
|
-
newController: accounts[0],
|
|
40
|
+
const tx = await ENSInstance.unwrapName('test.wrapped-with-subnames.eth', {
|
|
41
|
+
newController: accounts[1],
|
|
42
|
+
addressOrIndex: 2,
|
|
60
43
|
})
|
|
61
44
|
expect(tx).toBeTruthy()
|
|
62
45
|
await tx.wait()
|
|
63
46
|
|
|
64
47
|
const registry = await ENSInstance.contracts!.getRegistry()!
|
|
65
|
-
const result = await registry.owner(
|
|
66
|
-
|
|
48
|
+
const result = await registry.owner(
|
|
49
|
+
namehash('test.wrapped-with-subnames.eth'),
|
|
50
|
+
)
|
|
51
|
+
expect(result).toBe(accounts[1])
|
|
67
52
|
})
|
|
68
53
|
})
|