@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
|
@@ -19,11 +19,11 @@ afterAll(async () => {
|
|
|
19
19
|
describe('getName', () => {
|
|
20
20
|
it('should get a primary name from an address', async () => {
|
|
21
21
|
const result = await ENSInstance.getName(
|
|
22
|
-
'
|
|
22
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
23
23
|
)
|
|
24
24
|
expect(result).toBeTruthy()
|
|
25
25
|
if (result) {
|
|
26
|
-
expect(result.name).toBe('
|
|
26
|
+
expect(result.name).toBe('with-profile.eth')
|
|
27
27
|
expect(result.match).toBeTruthy()
|
|
28
28
|
}
|
|
29
29
|
})
|
|
@@ -34,13 +34,13 @@ describe('getName', () => {
|
|
|
34
34
|
expect(result).toBeUndefined()
|
|
35
35
|
})
|
|
36
36
|
it('should return with a false match for a name with no forward resolution', async () => {
|
|
37
|
-
const tx = await ENSInstance.setName('
|
|
37
|
+
const tx = await ENSInstance.setName('with-profile.eth')
|
|
38
38
|
await tx?.wait()
|
|
39
39
|
|
|
40
40
|
const result = await ENSInstance.getName(accounts[0])
|
|
41
41
|
expect(result).toBeTruthy()
|
|
42
42
|
if (result) {
|
|
43
|
-
expect(result.name).toBe('
|
|
43
|
+
expect(result.name).toBe('with-profile.eth')
|
|
44
44
|
expect(result.match).toBeFalsy()
|
|
45
45
|
}
|
|
46
46
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ENS } from '..'
|
|
2
|
-
import { OwnedName, Registration } from '../functions/getNames'
|
|
3
2
|
import setup from '../tests/setup'
|
|
3
|
+
import { Name } from './getNames'
|
|
4
4
|
|
|
5
5
|
let ENSInstance: ENS
|
|
6
6
|
|
|
@@ -14,12 +14,43 @@ const testProperties = (obj: object, ...properties: string[]) =>
|
|
|
14
14
|
const testNotProperties = (obj: object, ...properties: string[]) =>
|
|
15
15
|
properties.map((property) => expect(obj).not.toHaveProperty(property))
|
|
16
16
|
|
|
17
|
+
const letterItems = [
|
|
18
|
+
'w',
|
|
19
|
+
'9',
|
|
20
|
+
'8',
|
|
21
|
+
'7',
|
|
22
|
+
'6',
|
|
23
|
+
'5',
|
|
24
|
+
'4',
|
|
25
|
+
...Array(5).fill('3'),
|
|
26
|
+
...Array(11).fill('2'),
|
|
27
|
+
...Array(11).fill('1'),
|
|
28
|
+
'0',
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
const domainLetterItems = [
|
|
32
|
+
'[',
|
|
33
|
+
'w',
|
|
34
|
+
't',
|
|
35
|
+
't',
|
|
36
|
+
'9',
|
|
37
|
+
'8',
|
|
38
|
+
'7',
|
|
39
|
+
'6',
|
|
40
|
+
'5',
|
|
41
|
+
'4',
|
|
42
|
+
...Array(5).fill('3'),
|
|
43
|
+
...Array(11).fill('2'),
|
|
44
|
+
...Array(11).fill('1'),
|
|
45
|
+
'0',
|
|
46
|
+
]
|
|
47
|
+
|
|
17
48
|
describe('getNames', () => {
|
|
18
49
|
let totalRegistrations: number = 0
|
|
19
50
|
let totalOwnedNames: number = 0
|
|
20
51
|
it('should get the registrations for an address', async () => {
|
|
21
52
|
const result = await ENSInstance.getNames({
|
|
22
|
-
address: '
|
|
53
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
23
54
|
type: 'registrant',
|
|
24
55
|
})
|
|
25
56
|
totalRegistrations = result.length
|
|
@@ -39,7 +70,7 @@ describe('getNames', () => {
|
|
|
39
70
|
})
|
|
40
71
|
it('should get the owned names for an address', async () => {
|
|
41
72
|
const result = await ENSInstance.getNames({
|
|
42
|
-
address: '
|
|
73
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
43
74
|
type: 'owner',
|
|
44
75
|
})
|
|
45
76
|
totalOwnedNames = result.length
|
|
@@ -58,39 +89,51 @@ describe('getNames', () => {
|
|
|
58
89
|
})
|
|
59
90
|
it('should get the registrations for an address with pagination', async () => {
|
|
60
91
|
const pageOne = await ENSInstance.getNames({
|
|
61
|
-
address: '
|
|
92
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
62
93
|
type: 'registrant',
|
|
63
94
|
page: 0,
|
|
64
95
|
})
|
|
65
96
|
expect(pageOne).toHaveLength(10)
|
|
66
97
|
const pageTwo = await ENSInstance.getNames({
|
|
67
|
-
address: '
|
|
98
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
68
99
|
type: 'registrant',
|
|
69
100
|
page: 1,
|
|
70
101
|
})
|
|
71
|
-
expect(pageTwo).toHaveLength(
|
|
102
|
+
expect(pageTwo).toHaveLength(10)
|
|
103
|
+
const pageThree = await ENSInstance.getNames({
|
|
104
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
105
|
+
type: 'registrant',
|
|
106
|
+
page: 2,
|
|
107
|
+
})
|
|
108
|
+
expect(pageThree).toHaveLength(10)
|
|
109
|
+
const pageFour = await ENSInstance.getNames({
|
|
110
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
111
|
+
type: 'registrant',
|
|
112
|
+
page: 3,
|
|
113
|
+
})
|
|
114
|
+
expect(pageFour).toHaveLength(totalRegistrations % 10)
|
|
72
115
|
})
|
|
73
116
|
it('should get the owned names for an address with pagination', async () => {
|
|
74
117
|
const pageOne = await ENSInstance.getNames({
|
|
75
|
-
address: '
|
|
118
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
76
119
|
type: 'owner',
|
|
77
120
|
page: 0,
|
|
78
121
|
})
|
|
79
122
|
expect(pageOne).toHaveLength(10)
|
|
80
123
|
const pageTwo = await ENSInstance.getNames({
|
|
81
|
-
address: '
|
|
124
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
82
125
|
type: 'owner',
|
|
83
126
|
page: 1,
|
|
84
127
|
})
|
|
85
128
|
expect(pageTwo).toHaveLength(10)
|
|
86
129
|
const pageThree = await ENSInstance.getNames({
|
|
87
|
-
address: '
|
|
130
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
88
131
|
type: 'owner',
|
|
89
132
|
page: 2,
|
|
90
133
|
})
|
|
91
134
|
expect(pageThree).toHaveLength(10)
|
|
92
135
|
const pageFour = await ENSInstance.getNames({
|
|
93
|
-
address: '
|
|
136
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
94
137
|
type: 'owner',
|
|
95
138
|
page: 3,
|
|
96
139
|
})
|
|
@@ -100,147 +143,133 @@ describe('getNames', () => {
|
|
|
100
143
|
describe('registrations', () => {
|
|
101
144
|
it('descending registrationDate', async () => {
|
|
102
145
|
const registrationDateOrderedDesc = (await ENSInstance.getNames({
|
|
103
|
-
address: '
|
|
146
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
104
147
|
type: 'registrant',
|
|
105
148
|
orderBy: 'registrationDate',
|
|
106
149
|
orderDirection: 'desc',
|
|
107
|
-
})) as
|
|
150
|
+
})) as Name[]
|
|
108
151
|
registrationDateOrderedDesc.reduce((prev, curr) => {
|
|
109
|
-
expect(prev.registrationDate
|
|
110
|
-
curr.registrationDate
|
|
152
|
+
expect(prev.registrationDate!.getTime()).toBeGreaterThanOrEqual(
|
|
153
|
+
curr.registrationDate!.getTime(),
|
|
111
154
|
)
|
|
112
155
|
return curr
|
|
113
156
|
})
|
|
114
157
|
})
|
|
115
158
|
it('ascending registrationDate', async () => {
|
|
116
159
|
const registrationDateOrderedAsc = (await ENSInstance.getNames({
|
|
117
|
-
address: '
|
|
160
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
118
161
|
type: 'registrant',
|
|
119
162
|
orderBy: 'registrationDate',
|
|
120
163
|
orderDirection: 'asc',
|
|
121
|
-
})) as
|
|
164
|
+
})) as Name[]
|
|
122
165
|
registrationDateOrderedAsc.reduce((prev, curr) => {
|
|
123
|
-
expect(prev.registrationDate
|
|
124
|
-
curr.registrationDate
|
|
166
|
+
expect(prev.registrationDate!.getTime()).toBeLessThanOrEqual(
|
|
167
|
+
curr.registrationDate!.getTime(),
|
|
125
168
|
)
|
|
126
169
|
return curr
|
|
127
170
|
})
|
|
128
171
|
})
|
|
129
172
|
it('descending expiryDate', async () => {
|
|
130
173
|
const expiryDateOrderedDesc = (await ENSInstance.getNames({
|
|
131
|
-
address: '
|
|
174
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
132
175
|
type: 'registrant',
|
|
133
176
|
orderBy: 'expiryDate',
|
|
134
177
|
orderDirection: 'desc',
|
|
135
|
-
})) as
|
|
178
|
+
})) as Name[]
|
|
136
179
|
expiryDateOrderedDesc.reduce((prev, curr) => {
|
|
137
|
-
expect(prev.expiryDate
|
|
138
|
-
curr.expiryDate
|
|
180
|
+
expect(prev.expiryDate!.getTime()).toBeGreaterThanOrEqual(
|
|
181
|
+
curr.expiryDate!.getTime(),
|
|
139
182
|
)
|
|
140
183
|
return curr
|
|
141
184
|
})
|
|
142
185
|
})
|
|
143
186
|
it('ascending expiryDate', async () => {
|
|
144
187
|
const expiryDateOrderedAsc = (await ENSInstance.getNames({
|
|
145
|
-
address: '
|
|
188
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
146
189
|
type: 'registrant',
|
|
147
190
|
orderBy: 'expiryDate',
|
|
148
191
|
orderDirection: 'asc',
|
|
149
|
-
})) as
|
|
192
|
+
})) as Name[]
|
|
150
193
|
expiryDateOrderedAsc.reduce((prev, curr) => {
|
|
151
|
-
expect(prev.expiryDate
|
|
152
|
-
curr.expiryDate
|
|
194
|
+
expect(prev.expiryDate!.getTime()).toBeLessThanOrEqual(
|
|
195
|
+
curr.expiryDate!.getTime(),
|
|
153
196
|
)
|
|
154
197
|
return curr
|
|
155
198
|
})
|
|
156
199
|
})
|
|
157
200
|
it('descending labelName', async () => {
|
|
158
201
|
const labelNameOrderedDesc = (await ENSInstance.getNames({
|
|
159
|
-
address: '
|
|
202
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
160
203
|
type: 'registrant',
|
|
161
204
|
orderBy: 'labelName',
|
|
162
205
|
orderDirection: 'desc',
|
|
163
|
-
})) as
|
|
164
|
-
labelNameOrderedDesc.
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
})
|
|
206
|
+
})) as Name[]
|
|
207
|
+
expect(labelNameOrderedDesc.map((n) => n.labelName![0])).toStrictEqual(
|
|
208
|
+
letterItems,
|
|
209
|
+
)
|
|
168
210
|
})
|
|
169
211
|
it('ascending labelName', async () => {
|
|
170
212
|
const labelNameOrderedAsc = (await ENSInstance.getNames({
|
|
171
|
-
address: '
|
|
213
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
172
214
|
type: 'registrant',
|
|
173
215
|
orderBy: 'labelName',
|
|
174
216
|
orderDirection: 'asc',
|
|
175
|
-
})) as
|
|
176
|
-
labelNameOrderedAsc.
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
})
|
|
217
|
+
})) as Name[]
|
|
218
|
+
expect(labelNameOrderedAsc.map((n) => n.labelName![0])).toStrictEqual(
|
|
219
|
+
letterItems.reverse(),
|
|
220
|
+
)
|
|
180
221
|
})
|
|
181
222
|
})
|
|
182
223
|
describe('owned names', () => {
|
|
183
224
|
it('descending createdAt', async () => {
|
|
184
225
|
const createdAtOrderedDesc = (await ENSInstance.getNames({
|
|
185
|
-
address: '
|
|
226
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
186
227
|
type: 'owner',
|
|
187
228
|
orderBy: 'createdAt',
|
|
188
229
|
orderDirection: 'desc',
|
|
189
|
-
})) as
|
|
230
|
+
})) as Name[]
|
|
190
231
|
createdAtOrderedDesc.reduce((prev, curr) => {
|
|
191
|
-
expect(prev.createdAt
|
|
192
|
-
curr.createdAt
|
|
232
|
+
expect(prev.createdAt!.getTime()).toBeGreaterThanOrEqual(
|
|
233
|
+
curr.createdAt!.getTime(),
|
|
193
234
|
)
|
|
194
235
|
return curr
|
|
195
236
|
})
|
|
196
237
|
})
|
|
197
238
|
it('ascending createdAt', async () => {
|
|
198
239
|
const createdAtOrderedAsc = (await ENSInstance.getNames({
|
|
199
|
-
address: '
|
|
240
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
200
241
|
type: 'owner',
|
|
201
242
|
orderBy: 'createdAt',
|
|
202
243
|
orderDirection: 'asc',
|
|
203
|
-
})) as
|
|
244
|
+
})) as Name[]
|
|
204
245
|
createdAtOrderedAsc.reduce((prev, curr) => {
|
|
205
|
-
expect(prev.createdAt
|
|
206
|
-
curr.createdAt
|
|
246
|
+
expect(prev.createdAt!.getTime()).toBeLessThanOrEqual(
|
|
247
|
+
curr.createdAt!.getTime(),
|
|
207
248
|
)
|
|
208
249
|
return curr
|
|
209
250
|
})
|
|
210
251
|
})
|
|
211
252
|
it('descending labelName', async () => {
|
|
212
253
|
const labelNameOrderedDesc = (await ENSInstance.getNames({
|
|
213
|
-
address: '
|
|
254
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
214
255
|
type: 'owner',
|
|
215
256
|
orderBy: 'labelName',
|
|
216
257
|
orderDirection: 'desc',
|
|
217
|
-
})) as
|
|
218
|
-
labelNameOrderedDesc.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
(!prev.labelName && curr.labelName)
|
|
222
|
-
)
|
|
223
|
-
return curr
|
|
224
|
-
expect((prev.labelName || '') > (curr.labelName || '')).toBeTruthy()
|
|
225
|
-
return curr
|
|
226
|
-
})
|
|
258
|
+
})) as Name[]
|
|
259
|
+
expect(labelNameOrderedDesc.map((n) => n.name[0])).toStrictEqual(
|
|
260
|
+
domainLetterItems,
|
|
261
|
+
)
|
|
227
262
|
})
|
|
228
263
|
it('ascending labelName', async () => {
|
|
229
264
|
const labelNameOrderedAsc = (await ENSInstance.getNames({
|
|
230
|
-
address: '
|
|
265
|
+
address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
231
266
|
type: 'owner',
|
|
232
267
|
orderBy: 'labelName',
|
|
233
268
|
orderDirection: 'asc',
|
|
234
|
-
})) as
|
|
235
|
-
labelNameOrderedAsc.
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
(prev.labelName && !curr.labelName)
|
|
239
|
-
)
|
|
240
|
-
return curr
|
|
241
|
-
expect((prev.labelName || '') < (curr.labelName || '')).toBeTruthy()
|
|
242
|
-
return curr
|
|
243
|
-
})
|
|
269
|
+
})) as Name[]
|
|
270
|
+
expect(labelNameOrderedAsc.map((n) => n.name[0])).toStrictEqual(
|
|
271
|
+
domainLetterItems.reverse(),
|
|
272
|
+
)
|
|
244
273
|
})
|
|
245
274
|
})
|
|
246
275
|
})
|
|
@@ -10,10 +10,6 @@ let accounts: string[]
|
|
|
10
10
|
beforeAll(async () => {
|
|
11
11
|
;({ ENSInstance, revert, provider } = await setup())
|
|
12
12
|
accounts = await provider.listAccounts()
|
|
13
|
-
const tx = await ENSInstance.wrapName('parthtejpal.eth', {
|
|
14
|
-
wrappedOwner: accounts[0],
|
|
15
|
-
})
|
|
16
|
-
await tx.wait()
|
|
17
13
|
})
|
|
18
14
|
|
|
19
15
|
afterAll(async () => {
|
|
@@ -26,19 +22,19 @@ describe('getOwner', () => {
|
|
|
26
22
|
expect(result).toBeUndefined()
|
|
27
23
|
})
|
|
28
24
|
it('should return the owner, registrant, and ownership level for a registered name', async () => {
|
|
29
|
-
const result = await ENSInstance.getOwner('
|
|
25
|
+
const result = await ENSInstance.getOwner('with-profile.eth')
|
|
30
26
|
expect(result).toMatchObject({
|
|
31
|
-
owner: '
|
|
32
|
-
registrant: '
|
|
27
|
+
owner: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
28
|
+
registrant: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
33
29
|
ownershipLevel: 'registrar',
|
|
34
30
|
})
|
|
35
31
|
})
|
|
36
32
|
it('should return nameWrapper as the ownership level for a wrapped name', async () => {
|
|
37
|
-
const result = await ENSInstance.getOwner('
|
|
33
|
+
const result = await ENSInstance.getOwner('wrapped.eth')
|
|
38
34
|
expect(result?.ownershipLevel).toBe('nameWrapper')
|
|
39
35
|
})
|
|
40
36
|
it('should return the owner at a specific level if specified', async () => {
|
|
41
|
-
const result = await ENSInstance.getOwner('
|
|
37
|
+
const result = await ENSInstance.getOwner('wrapped.eth', 'registrar')
|
|
42
38
|
const nameWrapperAddress = (await ENSInstance.contracts!.getNameWrapper())
|
|
43
39
|
.address
|
|
44
40
|
expect(result?.ownershipLevel).toBe('registrar')
|
|
@@ -54,20 +50,9 @@ describe('getOwner', () => {
|
|
|
54
50
|
baseRegistrarAddress.toLowerCase(),
|
|
55
51
|
)
|
|
56
52
|
})
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
// name: 'test.fleek.eth',
|
|
63
|
-
// contract: 'registry',
|
|
64
|
-
// owner: accounts[0],
|
|
65
|
-
// options: { addressOrIndex: accounts[1] },
|
|
66
|
-
// })
|
|
67
|
-
|
|
68
|
-
// await tx.wait()
|
|
69
|
-
|
|
70
|
-
// const result = await ENSInstance.getOwner('test.fleek.eth')
|
|
71
|
-
// expect(result?.ownershipLevel).toBe('registry')
|
|
72
|
-
// })
|
|
53
|
+
it('should return registry as the ownership level for an unwrapped subname', async () => {
|
|
54
|
+
const result = await ENSInstance.getOwner('test.with-subnames.eth')
|
|
55
|
+
expect(result?.ownershipLevel).toBe('registry')
|
|
56
|
+
expect(result?.owner).toBe('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC')
|
|
57
|
+
})
|
|
73
58
|
})
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
1
2
|
import { ENS } from '..'
|
|
2
3
|
import setup from '../tests/setup'
|
|
3
4
|
|
|
4
5
|
let ENSInstance: ENS
|
|
5
6
|
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
7
|
+
let provider: ethers.providers.JsonRpcProvider
|
|
8
|
+
let accounts: string[]
|
|
6
9
|
|
|
7
10
|
beforeAll(async () => {
|
|
8
|
-
;({ ENSInstance, revert } = await setup())
|
|
11
|
+
;({ ENSInstance, revert, provider } = await setup())
|
|
12
|
+
accounts = await provider.listAccounts()
|
|
9
13
|
})
|
|
10
14
|
|
|
11
15
|
afterAll(async () => {
|
|
@@ -15,14 +19,14 @@ afterAll(async () => {
|
|
|
15
19
|
const checkRecords = (
|
|
16
20
|
result: Record<string, any> | undefined,
|
|
17
21
|
textLength = 3,
|
|
18
|
-
coinTypeLength =
|
|
22
|
+
coinTypeLength = 3,
|
|
19
23
|
) => {
|
|
20
24
|
expect(result).toBeDefined()
|
|
21
25
|
if (result) {
|
|
22
26
|
expect(result.records?.texts).toHaveLength(textLength)
|
|
23
27
|
expect(result.records?.coinTypes).toHaveLength(coinTypeLength)
|
|
24
28
|
expect(result.resolverAddress).toBe(
|
|
25
|
-
'
|
|
29
|
+
'0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8',
|
|
26
30
|
)
|
|
27
31
|
}
|
|
28
32
|
}
|
|
@@ -33,30 +37,30 @@ describe('getProfile', () => {
|
|
|
33
37
|
describe('with an address', () => {
|
|
34
38
|
it('should return a profile object with no other args', async () => {
|
|
35
39
|
const result = await ENSInstance.getProfile(
|
|
36
|
-
'
|
|
40
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
37
41
|
)
|
|
38
42
|
expect(result).toBeDefined()
|
|
39
43
|
if (result) {
|
|
40
|
-
expect((result as any).name).toBe('
|
|
44
|
+
expect((result as any).name).toBe('with-profile.eth')
|
|
41
45
|
expect((result as any).address).toBeUndefined()
|
|
42
46
|
checkRecords(result)
|
|
43
47
|
}
|
|
44
48
|
})
|
|
45
49
|
it('should return a profile object with specified records', async () => {
|
|
46
50
|
const result = await ENSInstance.getProfile(
|
|
47
|
-
'
|
|
51
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
48
52
|
{ texts: ['description', 'url'], coinTypes: ['ETC', '0'] },
|
|
49
53
|
)
|
|
50
54
|
expect(result).toBeDefined()
|
|
51
55
|
if (result) {
|
|
52
|
-
expect((result as any).name).toBe('
|
|
56
|
+
expect((result as any).name).toBe('with-profile.eth')
|
|
53
57
|
expect((result as any).address).toBeUndefined()
|
|
54
58
|
checkRecords(result, 2, 3)
|
|
55
59
|
}
|
|
56
60
|
})
|
|
57
61
|
it('should return a profile object with all of each specified record type', async () => {
|
|
58
62
|
const result = await ENSInstance.getProfile(
|
|
59
|
-
'
|
|
63
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
60
64
|
{ texts: true, coinTypes: true },
|
|
61
65
|
)
|
|
62
66
|
checkRecords(result)
|
|
@@ -70,37 +74,42 @@ describe('getProfile', () => {
|
|
|
70
74
|
})
|
|
71
75
|
describe('with a name', () => {
|
|
72
76
|
it('should return a profile object with no other args', async () => {
|
|
73
|
-
const result = await ENSInstance.getProfile('
|
|
77
|
+
const result = await ENSInstance.getProfile('with-profile.eth')
|
|
74
78
|
expect((result as any).address).toBe(
|
|
75
|
-
'
|
|
79
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
76
80
|
)
|
|
77
81
|
checkRecords(result)
|
|
78
82
|
})
|
|
79
83
|
it('should return a profile object with specified records', async () => {
|
|
80
|
-
const result = await ENSInstance.getProfile('
|
|
84
|
+
const result = await ENSInstance.getProfile('with-profile.eth', {
|
|
81
85
|
texts: ['description', 'url'],
|
|
82
86
|
coinTypes: ['ETC', '0'],
|
|
83
87
|
})
|
|
84
88
|
expect((result as any).address).toBe(
|
|
85
|
-
'
|
|
89
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
86
90
|
)
|
|
87
91
|
checkRecords(result, 2, 3)
|
|
88
92
|
})
|
|
89
93
|
it('should return a profile object with all of each specified record type', async () => {
|
|
90
|
-
const result = await ENSInstance.getProfile('
|
|
94
|
+
const result = await ENSInstance.getProfile('with-profile.eth', {
|
|
91
95
|
texts: true,
|
|
92
96
|
coinTypes: true,
|
|
93
97
|
})
|
|
94
98
|
checkRecords(result)
|
|
95
99
|
})
|
|
96
100
|
it('should return a profile object for a specified resolver', async () => {
|
|
97
|
-
const
|
|
98
|
-
|
|
101
|
+
const tx = await ENSInstance.wrapName('test123.eth', {
|
|
102
|
+
wrappedOwner: accounts[1],
|
|
103
|
+
addressOrIndex: 1,
|
|
104
|
+
})
|
|
105
|
+
await tx.wait()
|
|
106
|
+
const result = await ENSInstance.getProfile('test123.eth', {
|
|
107
|
+
resolverAddress: '0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8',
|
|
99
108
|
})
|
|
100
109
|
expect(result).toBeDefined()
|
|
101
|
-
expect(result?.address).toBe(
|
|
110
|
+
expect(result?.address).toBe(accounts[1])
|
|
102
111
|
expect(result?.resolverAddress).toBe(
|
|
103
|
-
'
|
|
112
|
+
'0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8',
|
|
104
113
|
)
|
|
105
114
|
})
|
|
106
115
|
it('should return undefined for an unregistered name', async () => {
|
|
@@ -110,22 +119,21 @@ describe('getProfile', () => {
|
|
|
110
119
|
})
|
|
111
120
|
describe('with an old resolver', () => {
|
|
112
121
|
it('should use fallback methods for a name with an older resolver (no multicall)', async () => {
|
|
113
|
-
const result = await ENSInstance.getProfile('
|
|
122
|
+
const result = await ENSInstance.getProfile('with-legacy-resolver.eth')
|
|
114
123
|
expect(result).toBeDefined()
|
|
115
124
|
if (result) {
|
|
116
125
|
expect(result.address).toBe(
|
|
117
|
-
'
|
|
126
|
+
'0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
|
|
127
|
+
)
|
|
128
|
+
expect(result.resolverAddress).toBe(
|
|
129
|
+
'0x5f3f1dbd7b74c6b46e8c44f98792a1daf8d69154',
|
|
118
130
|
)
|
|
119
131
|
}
|
|
120
132
|
})
|
|
121
133
|
})
|
|
122
134
|
describe('with an unmigrated name', () => {
|
|
123
|
-
beforeAll(async () => {
|
|
124
|
-
;({ ENSInstance } = await setup(true))
|
|
125
|
-
jest.setTimeout(20000)
|
|
126
|
-
})
|
|
127
135
|
it('should return an object with isMigrated false and a message', async () => {
|
|
128
|
-
const result = await ENSInstance.getProfile('
|
|
136
|
+
const result = await ENSInstance.getProfile('legacy.test')
|
|
129
137
|
expect(result).toBeTruthy()
|
|
130
138
|
if (result) {
|
|
131
139
|
expect(result.isMigrated).toBe(false)
|
|
@@ -9,11 +9,7 @@ beforeAll(async () => {
|
|
|
9
9
|
|
|
10
10
|
describe('getResolver', () => {
|
|
11
11
|
it('should find the resolver for a name with a resolver', async () => {
|
|
12
|
-
const result = await ENSInstance.getResolver('
|
|
13
|
-
expect(result).toBe('
|
|
14
|
-
})
|
|
15
|
-
it('should return .eth resolver for an unregistered name', async () => {
|
|
16
|
-
const result = await ENSInstance.getResolver('test123123cool.eth')
|
|
17
|
-
expect(result).toBe('0x3E8Dc215A6E404A7Ba811DE5Da3ff2A809AE94E2')
|
|
12
|
+
const result = await ENSInstance.getResolver('with-profile.eth')
|
|
13
|
+
expect(result).toBe('0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8')
|
|
18
14
|
})
|
|
19
15
|
})
|
|
@@ -14,11 +14,11 @@ describe('getSpecificRecord', () => {
|
|
|
14
14
|
expect(result).toBeUndefined()
|
|
15
15
|
})
|
|
16
16
|
it('should return null for a name with no contenthash record', async () => {
|
|
17
|
-
const result = await ENSInstance.getContentHash('
|
|
17
|
+
const result = await ENSInstance.getContentHash('with-profile.eth')
|
|
18
18
|
expect(result).toBeUndefined()
|
|
19
19
|
})
|
|
20
20
|
it('should return the contenthash for a name with the record set', async () => {
|
|
21
|
-
const result = await ENSInstance.getContentHash('
|
|
21
|
+
const result = await ENSInstance.getContentHash('with-contenthash.eth')
|
|
22
22
|
expect(result).toMatchObject({
|
|
23
23
|
protocolType: 'ipfs',
|
|
24
24
|
decoded: 'bafybeico3uuyj3vphxpvbowchdwjlrlrh62awxscrnii7w7flu5z6fk77y',
|
|
@@ -29,13 +29,16 @@ describe('getSpecificRecord', () => {
|
|
|
29
29
|
|
|
30
30
|
describe('getText', () => {
|
|
31
31
|
it('should return a record from a key', async () => {
|
|
32
|
-
const result = await ENSInstance.getText(
|
|
32
|
+
const result = await ENSInstance.getText(
|
|
33
|
+
'with-profile.eth',
|
|
34
|
+
'description',
|
|
35
|
+
)
|
|
33
36
|
expect(result).toBe('Hello2')
|
|
34
37
|
})
|
|
35
38
|
|
|
36
39
|
it('should return null for a non-existent key', async () => {
|
|
37
40
|
const result = await ENSInstance.getText(
|
|
38
|
-
'
|
|
41
|
+
'with-profile.eth',
|
|
39
42
|
'thiskeydoesntexist',
|
|
40
43
|
)
|
|
41
44
|
expect(result).toBeUndefined()
|
|
@@ -44,32 +47,32 @@ describe('getSpecificRecord', () => {
|
|
|
44
47
|
|
|
45
48
|
describe('getAddr', () => {
|
|
46
49
|
it('should return the ETH addr record if no coinType is provided', async () => {
|
|
47
|
-
const result = await ENSInstance.getAddr('
|
|
48
|
-
expect(result).toBe('
|
|
50
|
+
const result = await ENSInstance.getAddr('with-profile.eth')
|
|
51
|
+
expect(result).toBe('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC')
|
|
49
52
|
})
|
|
50
53
|
it('should return the correct address based on a coin ID input as a number', async () => {
|
|
51
|
-
const result = await ENSInstance.getAddr('
|
|
54
|
+
const result = await ENSInstance.getAddr('with-profile.eth', 61)
|
|
52
55
|
expect((result as any).addr).toBe(
|
|
53
|
-
'
|
|
56
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
54
57
|
)
|
|
55
58
|
expect((result as any).coin).toBe('ETC')
|
|
56
59
|
})
|
|
57
60
|
it('should return the correct address based on a coin ID input as a string', async () => {
|
|
58
|
-
const result = await ENSInstance.getAddr('
|
|
61
|
+
const result = await ENSInstance.getAddr('with-profile.eth', '61')
|
|
59
62
|
expect((result as any).addr).toBe(
|
|
60
|
-
'
|
|
63
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
61
64
|
)
|
|
62
65
|
expect((result as any).coin).toBe('ETC')
|
|
63
66
|
})
|
|
64
67
|
it('should return the correct address based on a coin name', async () => {
|
|
65
|
-
const result = await ENSInstance.getAddr('
|
|
68
|
+
const result = await ENSInstance.getAddr('with-profile.eth', 'ETC')
|
|
66
69
|
expect((result as any).addr).toBe(
|
|
67
|
-
'
|
|
70
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
68
71
|
)
|
|
69
72
|
expect((result as any).coin).toBe('ETC')
|
|
70
73
|
})
|
|
71
74
|
it('should return null for a non-existent coin', async () => {
|
|
72
|
-
const result = await ENSInstance.getAddr('
|
|
75
|
+
const result = await ENSInstance.getAddr('with-profile.eth', 'BNB')
|
|
73
76
|
expect(result).toBeUndefined()
|
|
74
77
|
})
|
|
75
78
|
})
|
|
@@ -15,11 +15,17 @@ export const _getContentHash = {
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
decode: async ({ contracts }: ENSArgs<'contracts'>, data: string) => {
|
|
18
|
+
let response: any
|
|
18
19
|
const publicResolver = await contracts?.getPublicResolver()!
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
try {
|
|
21
|
+
;[response] = publicResolver.interface.decodeFunctionResult(
|
|
22
|
+
'contenthash',
|
|
23
|
+
data,
|
|
24
|
+
)
|
|
25
|
+
} catch {
|
|
26
|
+
return
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
if (!response) {
|
|
24
30
|
return
|
|
25
31
|
}
|