@ensdomains/ensjs 3.0.0-alpha.1 → 3.0.0-alpha.12
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/README.md +2 -0
- package/dist/cjs/GqlManager.d.ts +3 -0
- package/dist/cjs/GqlManager.js +62 -2
- 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.d.ts +3 -2
- package/dist/cjs/functions/burnFuses.js +4 -8
- package/dist/cjs/functions/createSubname.d.ts +3 -5
- package/dist/cjs/functions/createSubname.js +7 -8
- package/dist/cjs/functions/deleteSubname.d.ts +3 -3
- package/dist/cjs/functions/deleteSubname.js +6 -2
- package/dist/cjs/functions/getDNSOwner.d.ts +7 -0
- package/dist/cjs/functions/getDNSOwner.js +81 -0
- 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 +6 -14
- package/dist/cjs/functions/getHistory.d.ts +0 -30
- package/dist/cjs/functions/getHistory.js +3 -99
- package/dist/cjs/functions/getName.d.ts +2 -2
- package/dist/cjs/functions/getName.js +1 -1
- package/dist/cjs/functions/getOwner.js +7 -6
- package/dist/cjs/functions/getProfile.d.ts +4 -1
- package/dist/cjs/functions/getProfile.js +102 -24
- package/dist/cjs/functions/getRecords.d.ts +1 -0
- package/dist/cjs/functions/getSpecificRecord.js +30 -6
- package/dist/cjs/functions/getSubnames.d.ts +1 -1
- package/dist/cjs/functions/getSubnames.js +7 -7
- package/dist/cjs/functions/setName.d.ts +4 -3
- package/dist/cjs/functions/setName.js +5 -10
- package/dist/cjs/functions/setRecord.d.ts +18 -0
- package/dist/cjs/functions/setRecord.js +27 -0
- package/dist/cjs/functions/setRecords.d.ts +4 -2
- package/dist/cjs/functions/setRecords.js +14 -12
- package/dist/cjs/functions/setResolver.d.ts +4 -4
- package/dist/cjs/functions/setResolver.js +6 -12
- package/dist/cjs/functions/transferName.d.ts +4 -3
- package/dist/cjs/functions/transferName.js +9 -13
- package/dist/cjs/functions/transferSubname.d.ts +13 -3
- package/dist/cjs/functions/transferSubname.js +7 -8
- package/dist/cjs/functions/unwrapName.d.ts +4 -3
- package/dist/cjs/functions/unwrapName.js +5 -9
- package/dist/cjs/functions/wrapName.d.ts +7 -3
- package/dist/cjs/functions/wrapName.js +38 -36
- 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 +62 -84
- package/dist/cjs/index.js +44 -21
- package/dist/cjs/utils/labels.js +5 -4
- package/dist/cjs/utils/makeHashIndexes.js +2 -2
- package/dist/cjs/utils/normalise.d.ts +1 -0
- package/dist/cjs/utils/normalise.js +27 -1
- package/dist/cjs/utils/recordHelpers.d.ts +3 -0
- package/dist/cjs/utils/recordHelpers.js +42 -15
- package/dist/cjs/utils/registerHelpers.js +3 -4
- package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
- package/dist/cjs/utils/wrapperExpiry.js +30 -0
- package/dist/cjs/utils/writeTx.d.ts +4 -0
- package/dist/cjs/utils/writeTx.js +3 -0
- package/dist/esm/GqlManager.d.ts +3 -0
- package/dist/esm/GqlManager.js +58 -2
- 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.d.ts +3 -2
- package/dist/esm/functions/burnFuses.js +4 -8
- package/dist/esm/functions/createSubname.d.ts +3 -5
- package/dist/esm/functions/createSubname.js +7 -8
- package/dist/esm/functions/deleteSubname.d.ts +3 -3
- package/dist/esm/functions/deleteSubname.js +6 -2
- package/dist/esm/functions/getDNSOwner.d.ts +7 -0
- package/dist/esm/functions/getDNSOwner.js +51 -0
- 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 +7 -15
- package/dist/esm/functions/getHistory.d.ts +0 -30
- package/dist/esm/functions/getHistory.js +2 -96
- package/dist/esm/functions/getName.d.ts +2 -2
- package/dist/esm/functions/getName.js +1 -1
- package/dist/esm/functions/getOwner.js +7 -6
- package/dist/esm/functions/getProfile.d.ts +4 -1
- package/dist/esm/functions/getProfile.js +102 -24
- package/dist/esm/functions/getRecords.d.ts +1 -0
- package/dist/esm/functions/getSpecificRecord.js +30 -6
- package/dist/esm/functions/getSubnames.d.ts +1 -1
- package/dist/esm/functions/getSubnames.js +4 -4
- package/dist/esm/functions/setName.d.ts +4 -3
- package/dist/esm/functions/setName.js +5 -10
- package/dist/esm/functions/setRecord.d.ts +18 -0
- package/dist/esm/functions/setRecord.js +24 -0
- package/dist/esm/functions/setRecords.d.ts +4 -2
- package/dist/esm/functions/setRecords.js +14 -12
- package/dist/esm/functions/setResolver.d.ts +4 -4
- package/dist/esm/functions/setResolver.js +6 -12
- package/dist/esm/functions/transferName.d.ts +4 -3
- package/dist/esm/functions/transferName.js +9 -13
- package/dist/esm/functions/transferSubname.d.ts +13 -3
- package/dist/esm/functions/transferSubname.js +7 -8
- package/dist/esm/functions/unwrapName.d.ts +4 -3
- package/dist/esm/functions/unwrapName.js +5 -9
- package/dist/esm/functions/wrapName.d.ts +7 -3
- package/dist/esm/functions/wrapName.js +38 -36
- 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 +62 -84
- package/dist/esm/index.js +44 -21
- package/dist/esm/utils/labels.js +5 -4
- package/dist/esm/utils/makeHashIndexes.js +2 -2
- package/dist/esm/utils/normalise.d.ts +1 -0
- package/dist/esm/utils/normalise.js +25 -0
- package/dist/esm/utils/recordHelpers.d.ts +3 -0
- package/dist/esm/utils/recordHelpers.js +40 -14
- package/dist/esm/utils/registerHelpers.js +3 -4
- package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
- package/dist/esm/utils/wrapperExpiry.js +26 -0
- package/dist/esm/utils/writeTx.d.ts +4 -0
- package/dist/esm/utils/writeTx.js +1 -0
- package/package.json +24 -14
- package/src/@types/dns-packet/index.d.ts +114 -0
- package/src/ABIs/Multicall.json +452 -0
- package/src/GqlManager.test.ts +170 -0
- package/src/GqlManager.ts +67 -2
- package/src/contracts/index.ts +1 -1
- package/src/{tests → functions}/batch.test.ts +7 -7
- package/src/{tests → functions}/batchWrappers.test.ts +6 -6
- package/src/{tests → functions}/burnFuses.test.ts +12 -15
- package/src/functions/burnFuses.ts +9 -11
- package/src/{tests → functions}/createSubname.test.ts +9 -17
- package/src/functions/createSubname.ts +20 -14
- package/src/{tests → functions}/deleteSubname.test.ts +12 -31
- package/src/functions/deleteSubname.ts +10 -12
- package/src/functions/getDNSOwner.test.ts +118 -0
- package/src/functions/getDNSOwner.ts +61 -0
- package/src/functions/getExpiry.test.ts +59 -0
- package/src/functions/getExpiry.ts +87 -9
- package/src/{tests → functions}/getFuses.test.ts +16 -37
- package/src/functions/getFuses.ts +12 -17
- package/src/functions/getHistory.test.ts +29 -0
- package/src/functions/getHistory.ts +2 -127
- package/src/{tests → functions}/getName.test.ts +6 -6
- package/src/functions/getName.ts +1 -1
- package/src/{tests → functions}/getNames.test.ts +98 -69
- package/src/{tests → functions}/getOwner.test.ts +21 -24
- package/src/functions/getOwner.ts +7 -7
- package/src/functions/getProfile.test.ts +143 -0
- package/src/functions/getProfile.ts +151 -24
- package/src/functions/getRecords.ts +1 -0
- package/src/functions/getResolver.test.ts +15 -0
- package/src/{tests → functions}/getSpecificRecord.test.ts +17 -14
- package/src/functions/getSpecificRecord.ts +38 -12
- package/src/functions/getSubnames.test.ts +35 -0
- package/src/functions/getSubnames.ts +76 -67
- package/src/{tests → functions}/makeCommitment.test.ts +2 -2
- package/src/functions/normalise.test.ts +22 -0
- package/src/{tests → functions}/setName.test.ts +11 -11
- package/src/functions/setName.ts +15 -17
- package/src/functions/setRecord.test.ts +103 -0
- package/src/functions/setRecord.ts +63 -0
- package/src/{tests → functions}/setRecords.test.ts +16 -13
- package/src/functions/setRecords.ts +22 -16
- package/src/{tests → functions}/setResolver.test.ts +13 -19
- package/src/functions/setResolver.ts +15 -20
- package/src/{tests → functions}/transferName.test.ts +20 -35
- package/src/functions/transferName.ts +19 -22
- package/src/{tests → functions}/transferSubname.test.ts +14 -33
- package/src/functions/transferSubname.ts +39 -13
- package/src/{tests → functions}/unwrapName.test.ts +16 -30
- package/src/functions/unwrapName.ts +20 -15
- package/src/functions/wrapName.test.ts +142 -0
- package/src/functions/wrapName.ts +63 -49
- 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 +117 -47
- package/src/tests/populateTransaction.test.ts +40 -0
- package/src/tests/setup.ts +17 -13
- package/src/tests/signerInjection.test.ts +46 -0
- package/src/tests/withProvider.test.ts +3 -3
- package/src/utils/labels.ts +6 -4
- package/src/utils/makeHashIndexes.ts +4 -4
- package/src/utils/normalise.ts +29 -0
- package/src/utils/recordHelpers.ts +52 -18
- package/src/utils/registerHelpers.ts +3 -4
- package/src/utils/wrapperExpiry.ts +31 -0
- package/src/utils/writeTx.ts +6 -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
- package/src/tests/getExpiry.test.ts +0 -37
- package/src/tests/getHistory.test.ts +0 -101
- package/src/tests/getProfile.test.ts +0 -102
- package/src/tests/getResolver.test.ts +0 -19
- package/src/tests/getSubnames.test.ts +0 -31
- package/src/tests/wrapName.test.ts +0 -67
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ENS } from '..'
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ethers } from 'ethers'
|
|
2
2
|
import { ENS } from '..'
|
|
3
|
-
import setup from '
|
|
3
|
+
import setup from '../tests/setup'
|
|
4
4
|
|
|
5
5
|
let ENSInstance: ENS
|
|
6
6
|
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
@@ -10,8 +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', accounts[0])
|
|
14
|
-
await tx.wait()
|
|
15
13
|
})
|
|
16
14
|
|
|
17
15
|
afterAll(async () => {
|
|
@@ -24,38 +22,37 @@ describe('getOwner', () => {
|
|
|
24
22
|
expect(result).toBeUndefined()
|
|
25
23
|
})
|
|
26
24
|
it('should return the owner, registrant, and ownership level for a registered name', async () => {
|
|
27
|
-
const result = await ENSInstance.getOwner('
|
|
25
|
+
const result = await ENSInstance.getOwner('with-profile.eth')
|
|
28
26
|
expect(result).toMatchObject({
|
|
29
|
-
owner: '
|
|
30
|
-
registrant: '
|
|
27
|
+
owner: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
28
|
+
registrant: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
31
29
|
ownershipLevel: 'registrar',
|
|
32
30
|
})
|
|
33
31
|
})
|
|
34
32
|
it('should return nameWrapper as the ownership level for a wrapped name', async () => {
|
|
35
|
-
const result = await ENSInstance.getOwner('
|
|
33
|
+
const result = await ENSInstance.getOwner('wrapped.eth')
|
|
36
34
|
expect(result?.ownershipLevel).toBe('nameWrapper')
|
|
37
35
|
})
|
|
38
36
|
it('should return the owner at a specific level if specified', async () => {
|
|
39
|
-
const result = await ENSInstance.getOwner('
|
|
37
|
+
const result = await ENSInstance.getOwner('wrapped.eth', 'registrar')
|
|
40
38
|
const nameWrapperAddress = (await ENSInstance.contracts!.getNameWrapper())
|
|
41
39
|
.address
|
|
42
40
|
expect(result?.ownershipLevel).toBe('registrar')
|
|
43
41
|
expect(result?.registrant).toBe(nameWrapperAddress)
|
|
44
42
|
})
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// })
|
|
43
|
+
it('should return the owner of a TLD on the registry', async () => {
|
|
44
|
+
const result = await ENSInstance.getOwner('eth')
|
|
45
|
+
const baseRegistrarAddress = (
|
|
46
|
+
await ENSInstance.contracts!.getBaseRegistrar()
|
|
47
|
+
).address
|
|
48
|
+
expect(result?.ownershipLevel).toBe('registry')
|
|
49
|
+
expect(result?.owner?.toLowerCase()).toBe(
|
|
50
|
+
baseRegistrarAddress.toLowerCase(),
|
|
51
|
+
)
|
|
52
|
+
})
|
|
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
|
+
})
|
|
61
58
|
})
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ethers } from 'ethers'
|
|
2
2
|
import { ENSArgs } from '..'
|
|
3
3
|
import { labelhash } from '../utils/labels'
|
|
4
|
+
import { namehash as makeNamehash } from '../utils/normalise'
|
|
4
5
|
|
|
5
6
|
type Owner = {
|
|
6
7
|
registrant?: string
|
|
@@ -49,13 +50,13 @@ const raw = async (
|
|
|
49
50
|
name: string,
|
|
50
51
|
contract?: 'nameWrapper' | 'registry' | 'registrar',
|
|
51
52
|
) => {
|
|
52
|
-
const namehash =
|
|
53
|
+
const namehash = makeNamehash(name)
|
|
53
54
|
const labels = name.split('.')
|
|
54
55
|
|
|
55
|
-
if (contract) {
|
|
56
|
+
if (contract || labels.length === 1) {
|
|
56
57
|
return await singleContractOwnerRaw(
|
|
57
58
|
{ contracts },
|
|
58
|
-
contract,
|
|
59
|
+
contract || 'registry',
|
|
59
60
|
namehash,
|
|
60
61
|
labels,
|
|
61
62
|
)
|
|
@@ -99,10 +100,11 @@ const decode = async (
|
|
|
99
100
|
contract?: 'nameWrapper' | 'registry' | 'registrar',
|
|
100
101
|
): Promise<Owner | undefined> => {
|
|
101
102
|
if (data === null) return
|
|
102
|
-
|
|
103
|
+
const labels = name.split('.')
|
|
104
|
+
if (contract || labels.length === 1) {
|
|
103
105
|
const singleOwner = singleContractOwnerDecode(data)
|
|
104
106
|
let obj = {
|
|
105
|
-
ownershipLevel: contract,
|
|
107
|
+
ownershipLevel: contract || 'registry',
|
|
106
108
|
}
|
|
107
109
|
if (contract === 'registrar') {
|
|
108
110
|
return {
|
|
@@ -133,8 +135,6 @@ const decode = async (
|
|
|
133
135
|
decodedData[2] as ethers.utils.Result | undefined
|
|
134
136
|
)?.[0]
|
|
135
137
|
|
|
136
|
-
const labels = name.split('.')
|
|
137
|
-
|
|
138
138
|
// check for only .eth names
|
|
139
139
|
if (labels[labels.length - 1] === 'eth') {
|
|
140
140
|
// if the owner on the registrar is the namewrapper, then the namewrapper owner is the owner
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
|
+
import { ENS } from '..'
|
|
3
|
+
import setup from '../tests/setup'
|
|
4
|
+
|
|
5
|
+
let ENSInstance: ENS
|
|
6
|
+
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
7
|
+
let provider: ethers.providers.JsonRpcProvider
|
|
8
|
+
let accounts: string[]
|
|
9
|
+
|
|
10
|
+
beforeAll(async () => {
|
|
11
|
+
;({ ENSInstance, revert, provider } = await setup())
|
|
12
|
+
accounts = await provider.listAccounts()
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
afterAll(async () => {
|
|
16
|
+
await revert()
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const checkRecords = (
|
|
20
|
+
result: Record<string, any> | undefined,
|
|
21
|
+
textLength = 3,
|
|
22
|
+
coinTypeLength = 3,
|
|
23
|
+
) => {
|
|
24
|
+
expect(result).toBeDefined()
|
|
25
|
+
if (result) {
|
|
26
|
+
expect(result.records?.texts).toHaveLength(textLength)
|
|
27
|
+
expect(result.records?.coinTypes).toHaveLength(coinTypeLength)
|
|
28
|
+
expect(result.resolverAddress).toBe(
|
|
29
|
+
'0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8',
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
jest.setTimeout(20000)
|
|
35
|
+
|
|
36
|
+
describe('getProfile', () => {
|
|
37
|
+
describe('with an address', () => {
|
|
38
|
+
it('should return a profile object with no other args', async () => {
|
|
39
|
+
const result = await ENSInstance.getProfile(
|
|
40
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
41
|
+
)
|
|
42
|
+
expect(result).toBeDefined()
|
|
43
|
+
if (result) {
|
|
44
|
+
expect((result as any).name).toBe('with-profile.eth')
|
|
45
|
+
expect((result as any).address).toBeUndefined()
|
|
46
|
+
checkRecords(result)
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
it('should return a profile object with specified records', async () => {
|
|
50
|
+
const result = await ENSInstance.getProfile(
|
|
51
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
52
|
+
{ texts: ['description', 'url'], coinTypes: ['ETC', '0'] },
|
|
53
|
+
)
|
|
54
|
+
expect(result).toBeDefined()
|
|
55
|
+
if (result) {
|
|
56
|
+
expect((result as any).name).toBe('with-profile.eth')
|
|
57
|
+
expect((result as any).address).toBeUndefined()
|
|
58
|
+
checkRecords(result, 2, 3)
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
it('should return a profile object with all of each specified record type', async () => {
|
|
62
|
+
const result = await ENSInstance.getProfile(
|
|
63
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
64
|
+
{ texts: true, coinTypes: true },
|
|
65
|
+
)
|
|
66
|
+
checkRecords(result)
|
|
67
|
+
})
|
|
68
|
+
it('should return null for an address without a name', async () => {
|
|
69
|
+
const result = await ENSInstance.getProfile(
|
|
70
|
+
'0x8e8db5ccef88cca9d624701db544989c996e3216',
|
|
71
|
+
)
|
|
72
|
+
expect(result).toBeUndefined()
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
describe('with a name', () => {
|
|
76
|
+
it('should return a profile object with no other args', async () => {
|
|
77
|
+
const result = await ENSInstance.getProfile('with-profile.eth')
|
|
78
|
+
expect((result as any).address).toBe(
|
|
79
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
80
|
+
)
|
|
81
|
+
checkRecords(result)
|
|
82
|
+
})
|
|
83
|
+
it('should return a profile object with specified records', async () => {
|
|
84
|
+
const result = await ENSInstance.getProfile('with-profile.eth', {
|
|
85
|
+
texts: ['description', 'url'],
|
|
86
|
+
coinTypes: ['ETC', '0'],
|
|
87
|
+
})
|
|
88
|
+
expect((result as any).address).toBe(
|
|
89
|
+
'0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
|
|
90
|
+
)
|
|
91
|
+
checkRecords(result, 2, 3)
|
|
92
|
+
})
|
|
93
|
+
it('should return a profile object with all of each specified record type', async () => {
|
|
94
|
+
const result = await ENSInstance.getProfile('with-profile.eth', {
|
|
95
|
+
texts: true,
|
|
96
|
+
coinTypes: true,
|
|
97
|
+
})
|
|
98
|
+
checkRecords(result)
|
|
99
|
+
})
|
|
100
|
+
it('should return a profile object for a specified resolver', async () => {
|
|
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',
|
|
108
|
+
})
|
|
109
|
+
expect(result).toBeDefined()
|
|
110
|
+
expect(result?.address).toBe(accounts[1])
|
|
111
|
+
expect(result?.resolverAddress).toBe(
|
|
112
|
+
'0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8',
|
|
113
|
+
)
|
|
114
|
+
})
|
|
115
|
+
it('should return undefined for an unregistered name', async () => {
|
|
116
|
+
const result = await ENSInstance.getProfile('test123123123cool.eth')
|
|
117
|
+
expect(result).toBeUndefined()
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
describe('with an old resolver', () => {
|
|
121
|
+
it('should use fallback methods for a name with an older resolver (no multicall)', async () => {
|
|
122
|
+
const result = await ENSInstance.getProfile('with-legacy-resolver.eth')
|
|
123
|
+
expect(result).toBeDefined()
|
|
124
|
+
if (result) {
|
|
125
|
+
expect(result.address).toBe(
|
|
126
|
+
'0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
|
|
127
|
+
)
|
|
128
|
+
expect(result.resolverAddress).toBe(
|
|
129
|
+
'0x5f3f1dbd7b74c6b46e8c44f98792a1daf8d69154',
|
|
130
|
+
)
|
|
131
|
+
}
|
|
132
|
+
})
|
|
133
|
+
})
|
|
134
|
+
describe('with an unmigrated name', () => {
|
|
135
|
+
it('should return an object with isMigrated false and a message', async () => {
|
|
136
|
+
const result = await ENSInstance.getProfile('legacy.test')
|
|
137
|
+
expect(result).toBeTruthy()
|
|
138
|
+
if (result) {
|
|
139
|
+
expect(result.isMigrated).toBe(false)
|
|
140
|
+
}
|
|
141
|
+
})
|
|
142
|
+
})
|
|
143
|
+
})
|