@ensdomains/ensjs 3.0.0-alpha.2 → 3.0.0-alpha.20
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/GqlManager.js +105 -37
- package/dist/cjs/contracts/baseRegistrar.js +24 -3
- package/dist/cjs/contracts/ethRegistrarController.js +24 -3
- package/dist/cjs/contracts/getContractAddress.js +61 -43
- package/dist/cjs/contracts/index.js +76 -32
- package/dist/cjs/contracts/multicall.js +24 -21
- package/dist/cjs/contracts/nameWrapper.js +24 -3
- package/dist/cjs/contracts/publicResolver.js +24 -3
- package/dist/cjs/contracts/registry.js +24 -3
- package/dist/cjs/contracts/reverseRegistrar.js +24 -3
- package/dist/cjs/contracts/types.js +15 -1
- package/dist/cjs/contracts/universalResolver.js +24 -3
- package/dist/cjs/functions/batch.js +42 -15
- package/dist/cjs/functions/batchWrappers.js +97 -67
- package/dist/cjs/functions/burnFuses.js +64 -14
- package/dist/cjs/functions/commitName.js +47 -0
- package/dist/cjs/functions/createSubname.js +79 -38
- package/dist/cjs/functions/deleteSubname.js +30 -4
- package/dist/cjs/functions/getDNSOwner.js +82 -0
- package/dist/cjs/functions/getExpiry.js +110 -41
- package/dist/cjs/functions/getFuses.js +63 -56
- package/dist/cjs/functions/getHistory.js +109 -173
- package/dist/cjs/functions/getName.js +51 -28
- package/dist/cjs/functions/getNames.js +118 -104
- package/dist/cjs/functions/getOwner.js +147 -125
- package/dist/cjs/functions/getPrice.js +71 -43
- package/dist/cjs/functions/getProfile.js +421 -265
- package/dist/cjs/functions/getRecords.js +29 -9
- package/dist/cjs/functions/getResolver.js +41 -19
- package/dist/cjs/functions/getSpecificRecord.js +188 -261
- package/dist/cjs/functions/getSubnames.js +83 -63
- package/dist/cjs/functions/initialGetters.js +46 -37
- package/dist/cjs/functions/registerName.js +42 -0
- package/dist/cjs/functions/renewName.js +33 -0
- package/dist/cjs/functions/setName.js +40 -15
- package/dist/cjs/functions/setRecord.js +55 -0
- package/dist/cjs/functions/setRecords.js +49 -20
- package/dist/cjs/functions/setResolver.js +43 -23
- package/dist/cjs/functions/transferName.js +60 -30
- package/dist/cjs/functions/transferSubname.js +60 -24
- package/dist/cjs/functions/unwrapName.js +49 -25
- package/dist/cjs/functions/wrapName.js +121 -57
- package/dist/cjs/generated/BaseRegistrarImplementation.js +15 -1
- package/dist/cjs/generated/DNSRegistrar.js +15 -1
- package/dist/cjs/generated/DNSSECImpl.js +15 -1
- package/dist/cjs/generated/DefaultReverseResolver.js +15 -1
- package/dist/cjs/generated/ENSRegistry.js +15 -1
- package/dist/cjs/generated/ETHRegistrarController.js +15 -1
- package/dist/cjs/generated/Multicall.js +15 -1
- package/dist/cjs/generated/NameWrapper.js +15 -1
- package/dist/cjs/generated/P256SHA256Algorithm.js +15 -1
- package/dist/cjs/generated/PublicResolver.js +15 -1
- package/dist/cjs/generated/RSASHA1Algorithm.js +15 -1
- package/dist/cjs/generated/RSASHA256Algorithm.js +15 -1
- package/dist/cjs/generated/ReverseRegistrar.js +15 -1
- package/dist/cjs/generated/Root.js +15 -1
- package/dist/cjs/generated/SHA1Digest.js +15 -1
- package/dist/cjs/generated/SHA1NSEC3Digest.js +15 -1
- package/dist/cjs/generated/SHA256Digest.js +15 -1
- package/dist/cjs/generated/StaticMetadataService.js +15 -1
- package/dist/cjs/generated/TLDPublicSuffixList.js +15 -1
- package/dist/cjs/generated/UniversalResolver.js +15 -1
- package/dist/cjs/generated/common.js +15 -1
- package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +784 -764
- package/dist/cjs/generated/factories/DNSRegistrar__factory.js +281 -288
- package/dist/cjs/generated/factories/DNSSECImpl__factory.js +485 -492
- package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +102 -82
- package/dist/cjs/generated/factories/ENSRegistry__factory.js +447 -431
- package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +534 -504
- package/dist/cjs/generated/factories/Multicall__factory.js +457 -441
- package/dist/cjs/generated/factories/NameWrapper__factory.js +1341 -1194
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +60 -67
- package/dist/cjs/generated/factories/PublicResolver__factory.js +901 -885
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +60 -67
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +60 -67
- package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +349 -333
- package/dist/cjs/generated/factories/Root__factory.js +253 -237
- package/dist/cjs/generated/factories/SHA1Digest__factory.js +55 -62
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +60 -67
- package/dist/cjs/generated/factories/SHA256Digest__factory.js +55 -62
- package/dist/cjs/generated/factories/StaticMetadataService__factory.js +64 -44
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +50 -57
- package/dist/cjs/generated/factories/UniversalResolver__factory.js +215 -199
- package/dist/cjs/generated/factories/index.js +61 -17
- package/dist/cjs/generated/index.js +68 -37
- package/dist/cjs/index.js +318 -214
- package/dist/cjs/utils/contentHash.js +145 -142
- package/dist/cjs/utils/createReverseNode.js +23 -2
- package/dist/cjs/utils/format.js +27 -8
- package/dist/cjs/utils/fuses.js +64 -13
- package/dist/cjs/utils/generateFuseInput.js +37 -16
- package/dist/cjs/utils/hexEncodedName.js +29 -7
- package/dist/cjs/utils/labels.js +99 -83
- package/dist/cjs/utils/makeHashIndexes.js +27 -6
- package/dist/cjs/utils/normalise.js +49 -22
- package/dist/cjs/utils/recordHelpers.js +84 -39
- package/dist/cjs/utils/registerHelpers.js +114 -46
- package/dist/cjs/utils/singleCall.js +23 -6
- package/dist/cjs/utils/validation.js +76 -63
- package/dist/cjs/utils/wrapperExpiry.js +44 -0
- package/dist/cjs/utils/writeTx.js +25 -0
- package/dist/esm/GqlManager.mjs +85 -0
- package/dist/esm/contracts/baseRegistrar.mjs +6 -0
- package/dist/esm/contracts/ethRegistrarController.mjs +6 -0
- package/dist/esm/contracts/getContractAddress.mjs +45 -0
- package/dist/esm/contracts/index.mjs +56 -0
- package/dist/esm/contracts/multicall.mjs +6 -0
- package/dist/esm/contracts/nameWrapper.mjs +6 -0
- package/dist/esm/contracts/publicResolver.mjs +6 -0
- package/dist/esm/contracts/registry.mjs +6 -0
- package/dist/esm/contracts/reverseRegistrar.mjs +6 -0
- package/dist/esm/contracts/types.mjs +0 -0
- package/dist/esm/contracts/universalResolver.mjs +6 -0
- package/dist/esm/functions/batch.mjs +29 -0
- package/dist/esm/functions/batchWrappers.mjs +82 -0
- package/dist/esm/functions/burnFuses.mjs +52 -0
- package/dist/esm/functions/commitName.mjs +28 -0
- package/dist/esm/functions/createSubname.mjs +60 -0
- package/dist/esm/functions/deleteSubname.mjs +13 -0
- package/dist/esm/functions/getDNSOwner.mjs +57 -0
- package/dist/esm/functions/getExpiry.mjs +95 -0
- package/dist/esm/functions/getFuses.mjs +50 -0
- package/dist/esm/functions/getHistory.mjs +196 -0
- package/dist/esm/functions/getName.mjs +38 -0
- package/dist/esm/functions/getNames.mjs +217 -0
- package/dist/esm/functions/getOwner.mjs +143 -0
- package/dist/esm/functions/getPrice.mjs +59 -0
- package/dist/esm/functions/getProfile.mjs +439 -0
- package/dist/esm/functions/getRecords.mjs +12 -0
- package/dist/esm/functions/getResolver.mjs +27 -0
- package/dist/esm/functions/getSpecificRecord.mjs +176 -0
- package/dist/esm/functions/getSubnames.mjs +155 -0
- package/dist/esm/functions/initialGetters.mjs +23 -0
- package/dist/esm/functions/registerName.mjs +25 -0
- package/dist/esm/functions/renewName.mjs +14 -0
- package/dist/esm/functions/setName.mjs +23 -0
- package/dist/esm/functions/setRecord.mjs +36 -0
- package/dist/esm/functions/setRecords.mjs +32 -0
- package/dist/esm/functions/setResolver.mjs +29 -0
- package/dist/esm/functions/transferName.mjs +45 -0
- package/dist/esm/functions/transferSubname.mjs +45 -0
- package/dist/esm/functions/unwrapName.mjs +33 -0
- package/dist/esm/functions/wrapName.mjs +103 -0
- package/dist/esm/generated/BaseRegistrarImplementation.mjs +0 -0
- package/dist/esm/generated/DNSRegistrar.mjs +0 -0
- package/dist/esm/generated/DNSSECImpl.mjs +0 -0
- package/dist/esm/generated/DefaultReverseResolver.mjs +0 -0
- package/dist/esm/generated/ENSRegistry.mjs +0 -0
- package/dist/esm/generated/ETHRegistrarController.mjs +0 -0
- package/dist/esm/generated/Multicall.mjs +0 -0
- package/dist/esm/generated/NameWrapper.mjs +0 -0
- package/dist/esm/generated/P256SHA256Algorithm.mjs +0 -0
- package/dist/esm/generated/PublicResolver.mjs +0 -0
- package/dist/esm/generated/RSASHA1Algorithm.mjs +0 -0
- package/dist/esm/generated/RSASHA256Algorithm.mjs +0 -0
- package/dist/esm/generated/ReverseRegistrar.mjs +0 -0
- package/dist/esm/generated/Root.mjs +0 -0
- package/dist/esm/generated/SHA1Digest.mjs +0 -0
- package/dist/esm/generated/SHA1NSEC3Digest.mjs +0 -0
- package/dist/esm/generated/SHA256Digest.mjs +0 -0
- package/dist/esm/generated/StaticMetadataService.mjs +0 -0
- package/dist/esm/generated/TLDPublicSuffixList.mjs +0 -0
- package/dist/esm/generated/UniversalResolver.mjs +0 -0
- package/dist/esm/generated/common.mjs +0 -0
- package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.mjs +778 -0
- package/dist/esm/generated/factories/DNSRegistrar__factory.mjs +277 -0
- package/dist/esm/generated/factories/DNSSECImpl__factory.mjs +482 -0
- package/dist/esm/generated/factories/DefaultReverseResolver__factory.mjs +95 -0
- package/dist/esm/generated/factories/ENSRegistry__factory.mjs +443 -0
- package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +529 -0
- package/dist/esm/generated/factories/Multicall__factory.mjs +461 -0
- package/dist/esm/generated/factories/NameWrapper__factory.mjs +1335 -0
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.mjs +52 -0
- package/dist/esm/generated/factories/PublicResolver__factory.mjs +896 -0
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.mjs +52 -0
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.mjs +52 -0
- package/dist/esm/generated/factories/ReverseRegistrar__factory.mjs +344 -0
- package/dist/esm/generated/factories/Root__factory.mjs +247 -0
- package/dist/esm/generated/factories/SHA1Digest__factory.mjs +47 -0
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.mjs +52 -0
- package/dist/esm/generated/factories/SHA256Digest__factory.mjs +47 -0
- package/dist/esm/generated/factories/StaticMetadataService__factory.mjs +57 -0
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.mjs +42 -0
- package/dist/esm/generated/factories/UniversalResolver__factory.mjs +208 -0
- package/dist/esm/generated/factories/index.mjs +43 -0
- package/dist/esm/generated/index.mjs +45 -0
- package/dist/esm/index.mjs +303 -0
- package/dist/esm/utils/contentHash.mjs +142 -0
- package/dist/esm/utils/createReverseNode.mjs +5 -0
- package/dist/esm/utils/format.mjs +9 -0
- package/dist/esm/utils/fuses.mjs +56 -0
- package/dist/esm/utils/generateFuseInput.mjs +15 -0
- package/dist/esm/utils/hexEncodedName.mjs +6 -0
- package/dist/esm/utils/labels.mjs +109 -0
- package/dist/esm/utils/makeHashIndexes.mjs +10 -0
- package/dist/esm/utils/normalise.mjs +30 -0
- package/dist/esm/utils/recordHelpers.mjs +70 -0
- package/dist/esm/utils/registerHelpers.mjs +95 -0
- package/dist/esm/utils/singleCall.mjs +5 -0
- package/dist/esm/utils/validation.mjs +67 -0
- package/dist/esm/utils/wrapperExpiry.mjs +25 -0
- package/dist/esm/utils/writeTx.mjs +6 -0
- package/dist/types/GqlManager.d.ts +11 -0
- package/dist/{cjs → types}/contracts/baseRegistrar.d.ts +0 -0
- package/dist/{cjs → types}/contracts/ethRegistrarController.d.ts +1 -1
- package/dist/{cjs → types}/contracts/getContractAddress.d.ts +0 -0
- package/dist/types/contracts/index.d.ts +16 -0
- package/dist/{cjs → types}/contracts/multicall.d.ts +0 -0
- package/dist/{esm → types}/contracts/nameWrapper.d.ts +1 -1
- package/dist/{esm → types}/contracts/publicResolver.d.ts +1 -1
- package/dist/{cjs → types}/contracts/registry.d.ts +0 -0
- package/dist/{cjs → types}/contracts/reverseRegistrar.d.ts +1 -1
- package/dist/{cjs → types}/contracts/types.d.ts +0 -0
- package/dist/{cjs → types}/contracts/universalResolver.d.ts +1 -1
- package/dist/{cjs → types}/functions/batch.d.ts +0 -0
- package/dist/{esm → types}/functions/batchWrappers.d.ts +2 -2
- package/dist/types/functions/burnFuses.d.ts +13 -0
- package/dist/types/functions/commitName.d.ts +26 -0
- package/dist/{esm → types}/functions/createSubname.d.ts +3 -5
- package/dist/types/functions/deleteSubname.d.ts +4 -0
- package/dist/types/functions/getDNSOwner.d.ts +7 -0
- package/dist/types/functions/getExpiry.d.ts +19 -0
- package/dist/{cjs → types}/functions/getFuses.d.ts +5 -6
- package/dist/types/functions/getHistory.d.ts +28 -0
- package/dist/{cjs → types}/functions/getName.d.ts +2 -2
- package/dist/{cjs → types}/functions/getNames.d.ts +0 -0
- package/dist/{cjs → types}/functions/getOwner.d.ts +0 -0
- package/dist/{cjs → types}/functions/getPrice.d.ts +0 -0
- package/dist/{esm → types}/functions/getProfile.d.ts +4 -1
- package/dist/{esm → types}/functions/getRecords.d.ts +1 -0
- package/dist/{cjs → types}/functions/getResolver.d.ts +0 -0
- package/dist/{esm → types}/functions/getSpecificRecord.d.ts +4 -4
- package/dist/{esm → types}/functions/getSubnames.d.ts +1 -1
- package/dist/{cjs → types}/functions/initialGetters.d.ts +0 -0
- package/dist/types/functions/registerName.d.ts +11 -0
- package/dist/types/functions/renewName.d.ts +6 -0
- package/dist/types/functions/setName.d.ts +5 -0
- package/dist/types/functions/setRecord.d.ts +18 -0
- package/dist/types/functions/setRecords.d.ts +6 -0
- package/dist/types/functions/setResolver.d.ts +5 -0
- package/dist/types/functions/transferName.d.ts +6 -0
- package/dist/types/functions/transferSubname.d.ts +15 -0
- package/dist/types/functions/unwrapName.d.ts +5 -0
- package/dist/types/functions/wrapName.d.ts +10 -0
- package/dist/types/generated/BaseRegistrarImplementation.d.ts +508 -0
- package/dist/{cjs → types}/generated/DNSRegistrar.d.ts +68 -64
- package/dist/{esm → types}/generated/DNSSECImpl.d.ts +111 -111
- package/dist/{cjs → types}/generated/DefaultReverseResolver.d.ts +17 -17
- package/dist/types/generated/ENSRegistry.d.ts +274 -0
- package/dist/{esm → types}/generated/ETHRegistrarController.d.ts +111 -109
- package/dist/{esm → types}/generated/Multicall.d.ts +60 -60
- package/dist/types/generated/NameWrapper.d.ts +814 -0
- package/dist/{cjs → types}/generated/P256SHA256Algorithm.d.ts +11 -7
- package/dist/types/generated/PublicResolver.d.ts +566 -0
- package/dist/{esm → types}/generated/RSASHA1Algorithm.d.ts +11 -7
- package/dist/{cjs → types}/generated/RSASHA256Algorithm.d.ts +11 -7
- package/dist/{esm → types}/generated/ReverseRegistrar.d.ts +112 -103
- package/dist/types/generated/Root.d.ts +173 -0
- package/dist/{cjs → types}/generated/SHA1Digest.d.ts +7 -7
- package/dist/{esm → types}/generated/SHA1NSEC3Digest.d.ts +11 -7
- package/dist/{cjs → types}/generated/SHA256Digest.d.ts +7 -7
- package/dist/{cjs → types}/generated/StaticMetadataService.d.ts +7 -7
- package/dist/{esm → types}/generated/TLDPublicSuffixList.d.ts +7 -7
- package/dist/types/generated/UniversalResolver.d.ts +82 -0
- package/dist/{esm → types}/generated/common.d.ts +1 -0
- package/dist/{cjs → types}/generated/factories/BaseRegistrarImplementation__factory.d.ts +0 -0
- package/dist/{esm/generated/factories/ETHRegistrarController__factory.d.ts → types/generated/factories/DNSRegistrar__factory.d.ts} +15 -14
- package/dist/{esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts → types/generated/factories/DNSSECImpl__factory.d.ts} +9 -9
- package/dist/{cjs → types}/generated/factories/DefaultReverseResolver__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/ENSRegistry__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/ETHRegistrarController__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/Multicall__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/NameWrapper__factory.d.ts +0 -0
- package/dist/types/generated/factories/P256SHA256Algorithm__factory.d.ts +22 -0
- package/dist/{cjs → types}/generated/factories/PublicResolver__factory.d.ts +0 -0
- package/dist/types/generated/factories/RSASHA1Algorithm__factory.d.ts +22 -0
- package/dist/types/generated/factories/RSASHA256Algorithm__factory.d.ts +22 -0
- package/dist/{cjs → types}/generated/factories/ReverseRegistrar__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/Root__factory.d.ts +0 -0
- package/dist/types/generated/factories/SHA1Digest__factory.d.ts +22 -0
- package/dist/types/generated/factories/SHA1NSEC3Digest__factory.d.ts +22 -0
- package/dist/types/generated/factories/SHA256Digest__factory.d.ts +22 -0
- package/dist/{cjs → types}/generated/factories/StaticMetadataService__factory.d.ts +0 -0
- package/dist/types/generated/factories/TLDPublicSuffixList__factory.d.ts +22 -0
- package/dist/{cjs → types}/generated/factories/UniversalResolver__factory.d.ts +0 -0
- package/dist/types/generated/factories/index.d.ts +20 -0
- package/dist/types/generated/index.d.ts +41 -0
- package/dist/{esm → types}/index.d.ts +91 -106
- package/dist/{cjs → types}/utils/contentHash.d.ts +0 -0
- package/dist/{cjs → types}/utils/createReverseNode.d.ts +0 -0
- package/dist/{cjs → types}/utils/format.d.ts +0 -0
- package/dist/types/utils/fuses.d.ts +43 -0
- package/dist/{cjs → types}/utils/generateFuseInput.d.ts +0 -0
- package/dist/{cjs → types}/utils/hexEncodedName.d.ts +0 -0
- package/dist/{cjs → types}/utils/labels.d.ts +0 -0
- package/dist/{cjs → types}/utils/makeHashIndexes.d.ts +0 -0
- package/dist/types/utils/normalise.d.ts +2 -0
- package/dist/{esm → types}/utils/recordHelpers.d.ts +3 -0
- package/dist/types/utils/registerHelpers.d.ts +54 -0
- package/dist/{cjs → types}/utils/singleCall.d.ts +0 -0
- package/dist/{cjs → types}/utils/validation.d.ts +0 -0
- package/dist/types/utils/wrapperExpiry.d.ts +5 -0
- package/dist/types/utils/writeTx.d.ts +21 -0
- package/package.json +71 -32
- package/src/@types/@ensdomains/ens-contracts.d.ts +1 -1
- package/src/@types/dns-packet/index.d.ts +114 -0
- package/src/ABIs/Multicall.json +452 -0
- package/src/GqlManager.test.ts +173 -0
- package/src/GqlManager.ts +90 -2
- package/src/contracts/getContractAddress.ts +2 -0
- package/src/contracts/index.ts +9 -1
- package/src/contracts/multicall.ts +0 -19
- package/src/functions/batch.test.ts +36 -0
- package/src/functions/batch.ts +3 -3
- package/src/functions/batchWrappers.test.ts +31 -0
- package/src/functions/batchWrappers.ts +2 -2
- package/src/functions/burnFuses.test.ts +148 -0
- package/src/functions/burnFuses.ts +67 -11
- package/src/functions/commitName.test.ts +61 -0
- package/src/functions/commitName.ts +36 -0
- package/src/{tests → functions}/createSubname.test.ts +11 -19
- package/src/functions/createSubname.ts +20 -15
- package/src/functions/deleteSubname.test.ts +49 -0
- package/src/functions/deleteSubname.ts +10 -12
- package/src/functions/getDNSOwner.test.ts +119 -0
- package/src/functions/getDNSOwner.ts +61 -0
- package/src/functions/getExpiry.test.ts +55 -0
- package/src/functions/getExpiry.ts +87 -9
- package/src/functions/getFuses.test.ts +96 -0
- package/src/functions/getFuses.ts +23 -44
- package/src/functions/getHistory.test.ts +29 -0
- package/src/functions/getHistory.ts +27 -141
- package/src/{tests → functions}/getName.test.ts +11 -11
- package/src/functions/getName.ts +2 -2
- package/src/functions/getNames.test.ts +276 -0
- package/src/functions/getNames.ts +25 -30
- package/src/functions/getOwner.test.ts +67 -0
- package/src/functions/getOwner.ts +16 -10
- package/src/functions/getPrice.ts +2 -2
- package/src/{tests → functions}/getProfile.test.ts +50 -27
- package/src/functions/getProfile.ts +161 -96
- package/src/functions/getRecords.ts +2 -1
- package/src/functions/getResolver.test.ts +15 -0
- package/src/{tests → functions}/getSpecificRecord.test.ts +21 -18
- package/src/functions/getSpecificRecord.ts +18 -147
- package/src/functions/getSubnames.test.ts +35 -0
- package/src/functions/getSubnames.ts +6 -6
- package/src/{tests → functions}/makeCommitment.test.ts +6 -6
- package/src/{tests → functions}/normalise.test.ts +0 -0
- package/src/functions/registerName.test.ts +59 -0
- package/src/functions/registerName.ts +38 -0
- package/src/functions/renewName.test.ts +44 -0
- package/src/functions/renewName.ts +22 -0
- package/src/{tests → functions}/setName.test.ts +16 -16
- package/src/functions/setName.ts +15 -17
- package/src/functions/setRecord.test.ts +103 -0
- package/src/functions/setRecord.ts +59 -0
- package/src/{tests → functions}/setRecords.test.ts +19 -16
- package/src/functions/setRecords.ts +19 -13
- package/src/{tests → functions}/setResolver.test.ts +17 -25
- package/src/functions/setResolver.ts +15 -20
- package/src/functions/transferName.test.ts +65 -0
- package/src/functions/transferName.ts +17 -21
- package/src/functions/transferSubname.test.ts +55 -0
- package/src/functions/transferSubname.ts +39 -14
- package/src/functions/unwrapName.test.ts +53 -0
- package/src/functions/unwrapName.ts +23 -20
- package/src/functions/wrapName.test.ts +141 -0
- package/src/functions/wrapName.ts +71 -58
- 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 +168 -63
- package/src/utils/contentHash.ts +24 -22
- package/src/utils/createReverseNode.ts +1 -1
- package/src/utils/fuses.ts +52 -4
- package/src/utils/labels.ts +6 -4
- package/src/utils/normalise.ts +11 -5
- package/src/utils/recordHelpers.ts +52 -20
- package/src/utils/registerHelpers.ts +112 -53
- package/src/utils/validation.ts +8 -9
- package/src/utils/wrapperExpiry.ts +29 -0
- package/src/utils/writeTx.ts +16 -0
- package/dist/cjs/GqlManager.d.ts +0 -6
- package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
- package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
- package/dist/cjs/contracts/index.d.ts +0 -16
- package/dist/cjs/contracts/nameWrapper.d.ts +0 -3
- package/dist/cjs/contracts/publicResolver.d.ts +0 -3
- package/dist/cjs/functions/batchWrappers.d.ts +0 -29
- package/dist/cjs/functions/burnFuses.d.ts +0 -3
- package/dist/cjs/functions/createSubname.d.ts +0 -19
- package/dist/cjs/functions/deleteSubname.d.ts +0 -4
- package/dist/cjs/functions/getExpiry.d.ts +0 -12
- package/dist/cjs/functions/getHistory.d.ts +0 -54
- package/dist/cjs/functions/getProfile.d.ts +0 -30
- package/dist/cjs/functions/getRecords.d.ts +0 -32
- package/dist/cjs/functions/getSpecificRecord.d.ts +0 -73
- package/dist/cjs/functions/getSubnames.d.ts +0 -26
- package/dist/cjs/functions/setName.d.ts +0 -4
- package/dist/cjs/functions/setRecords.d.ts +0 -3
- package/dist/cjs/functions/setResolver.d.ts +0 -4
- package/dist/cjs/functions/transferName.d.ts +0 -5
- package/dist/cjs/functions/transferSubname.d.ts +0 -5
- package/dist/cjs/functions/unwrapName.d.ts +0 -4
- package/dist/cjs/functions/wrapName.d.ts +0 -6
- package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +0 -487
- package/dist/cjs/generated/DNSSECImpl.d.ts +0 -402
- package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
- package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
- package/dist/cjs/generated/ENSRegistry.d.ts +0 -259
- package/dist/cjs/generated/ETHRegistrarController.d.ts +0 -319
- package/dist/cjs/generated/Multicall.d.ts +0 -292
- package/dist/cjs/generated/NameWrapper.d.ts +0 -675
- package/dist/cjs/generated/PublicResolver.d.ts +0 -542
- package/dist/cjs/generated/RSASHA1Algorithm.d.ts +0 -42
- package/dist/cjs/generated/ReverseRegistrar.d.ts +0 -259
- package/dist/cjs/generated/Root.d.ts +0 -173
- package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +0 -72
- package/dist/cjs/generated/TLDPublicSuffixList.d.ts +0 -42
- package/dist/cjs/generated/UniversalResolver.d.ts +0 -82
- package/dist/cjs/generated/common.d.ts +0 -21
- package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +0 -79
- package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +0 -68
- package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
- package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +0 -34
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +0 -34
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +0 -34
- package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +0 -34
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +0 -34
- package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +0 -34
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +0 -34
- package/dist/cjs/generated/factories/index.d.ts +0 -6
- package/dist/cjs/generated/index.d.ts +0 -13
- package/dist/cjs/index.d.ts +0 -470
- package/dist/cjs/utils/fuses.d.ts +0 -20
- package/dist/cjs/utils/normalise.d.ts +0 -2
- package/dist/cjs/utils/recordHelpers.d.ts +0 -13
- package/dist/cjs/utils/registerHelpers.d.ts +0 -26
- package/dist/esm/GqlManager.d.ts +0 -6
- package/dist/esm/GqlManager.js +0 -18
- package/dist/esm/contracts/baseRegistrar.d.ts +0 -3
- package/dist/esm/contracts/baseRegistrar.js +0 -2
- package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
- package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
- package/dist/esm/contracts/ethRegistrarController.d.ts +0 -3
- package/dist/esm/contracts/ethRegistrarController.js +0 -2
- package/dist/esm/contracts/getContractAddress.d.ts +0 -3
- package/dist/esm/contracts/getContractAddress.js +0 -42
- package/dist/esm/contracts/index.d.ts +0 -16
- package/dist/esm/contracts/index.js +0 -29
- package/dist/esm/contracts/multicall.d.ts +0 -3
- package/dist/esm/contracts/multicall.js +0 -20
- package/dist/esm/contracts/nameWrapper.js +0 -2
- package/dist/esm/contracts/publicResolver.js +0 -2
- package/dist/esm/contracts/registry.d.ts +0 -3
- package/dist/esm/contracts/registry.js +0 -2
- package/dist/esm/contracts/reverseRegistrar.d.ts +0 -3
- package/dist/esm/contracts/reverseRegistrar.js +0 -2
- package/dist/esm/contracts/types.d.ts +0 -2
- package/dist/esm/contracts/types.js +0 -1
- package/dist/esm/contracts/universalResolver.d.ts +0 -3
- package/dist/esm/contracts/universalResolver.js +0 -2
- package/dist/esm/functions/batch.d.ts +0 -9
- package/dist/esm/functions/batch.js +0 -19
- package/dist/esm/functions/batchWrappers.js +0 -68
- package/dist/esm/functions/burnFuses.d.ts +0 -3
- package/dist/esm/functions/burnFuses.js +0 -12
- package/dist/esm/functions/createSubname.js +0 -38
- package/dist/esm/functions/deleteSubname.d.ts +0 -4
- package/dist/esm/functions/deleteSubname.js +0 -3
- package/dist/esm/functions/getExpiry.d.ts +0 -12
- package/dist/esm/functions/getExpiry.js +0 -43
- package/dist/esm/functions/getFuses.d.ts +0 -17
- package/dist/esm/functions/getFuses.js +0 -60
- package/dist/esm/functions/getHistory.d.ts +0 -54
- package/dist/esm/functions/getHistory.js +0 -273
- package/dist/esm/functions/getName.d.ts +0 -19
- package/dist/esm/functions/getName.js +0 -32
- package/dist/esm/functions/getNames.d.ts +0 -40
- package/dist/esm/functions/getNames.js +0 -220
- package/dist/esm/functions/getOwner.d.ts +0 -14
- package/dist/esm/functions/getOwner.js +0 -138
- package/dist/esm/functions/getPrice.d.ts +0 -13
- package/dist/esm/functions/getPrice.js +0 -48
- package/dist/esm/functions/getProfile.js +0 -299
- package/dist/esm/functions/getRecords.js +0 -8
- package/dist/esm/functions/getResolver.d.ts +0 -9
- package/dist/esm/functions/getResolver.js +0 -22
- package/dist/esm/functions/getSpecificRecord.js +0 -265
- package/dist/esm/functions/getSubnames.js +0 -152
- package/dist/esm/functions/initialGetters.d.ts +0 -11
- package/dist/esm/functions/initialGetters.js +0 -11
- package/dist/esm/functions/setName.d.ts +0 -4
- package/dist/esm/functions/setName.js +0 -14
- package/dist/esm/functions/setRecords.d.ts +0 -3
- package/dist/esm/functions/setRecords.js +0 -19
- package/dist/esm/functions/setResolver.d.ts +0 -4
- package/dist/esm/functions/setResolver.js +0 -25
- package/dist/esm/functions/transferName.d.ts +0 -5
- package/dist/esm/functions/transferName.js +0 -31
- package/dist/esm/functions/transferSubname.d.ts +0 -5
- package/dist/esm/functions/transferSubname.js +0 -25
- package/dist/esm/functions/unwrapName.d.ts +0 -4
- package/dist/esm/functions/unwrapName.js +0 -25
- package/dist/esm/functions/wrapName.d.ts +0 -6
- package/dist/esm/functions/wrapName.js +0 -58
- package/dist/esm/generated/BaseRegistrarImplementation.d.ts +0 -487
- package/dist/esm/generated/BaseRegistrarImplementation.js +0 -1
- package/dist/esm/generated/DNSRegistrar.d.ts +0 -220
- package/dist/esm/generated/DNSRegistrar.js +0 -1
- package/dist/esm/generated/DNSSECImpl.js +0 -1
- package/dist/esm/generated/DefaultReverseResolver.d.ts +0 -66
- package/dist/esm/generated/DefaultReverseResolver.js +0 -1
- package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
- package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
- package/dist/esm/generated/ENSRegistry.d.ts +0 -259
- package/dist/esm/generated/ENSRegistry.js +0 -1
- package/dist/esm/generated/ETHRegistrarController.js +0 -1
- package/dist/esm/generated/Multicall.js +0 -1
- package/dist/esm/generated/NameWrapper.d.ts +0 -675
- package/dist/esm/generated/NameWrapper.js +0 -1
- package/dist/esm/generated/P256SHA256Algorithm.d.ts +0 -72
- package/dist/esm/generated/P256SHA256Algorithm.js +0 -1
- package/dist/esm/generated/PublicResolver.d.ts +0 -542
- package/dist/esm/generated/PublicResolver.js +0 -1
- package/dist/esm/generated/RSASHA1Algorithm.js +0 -1
- package/dist/esm/generated/RSASHA256Algorithm.d.ts +0 -42
- package/dist/esm/generated/RSASHA256Algorithm.js +0 -1
- package/dist/esm/generated/ReverseRegistrar.js +0 -1
- package/dist/esm/generated/Root.d.ts +0 -173
- package/dist/esm/generated/Root.js +0 -1
- package/dist/esm/generated/SHA1Digest.d.ts +0 -67
- package/dist/esm/generated/SHA1Digest.js +0 -1
- package/dist/esm/generated/SHA1NSEC3Digest.js +0 -1
- package/dist/esm/generated/SHA256Digest.d.ts +0 -67
- package/dist/esm/generated/SHA256Digest.js +0 -1
- package/dist/esm/generated/StaticMetadataService.d.ts +0 -42
- package/dist/esm/generated/StaticMetadataService.js +0 -1
- package/dist/esm/generated/TLDPublicSuffixList.js +0 -1
- package/dist/esm/generated/UniversalResolver.d.ts +0 -82
- package/dist/esm/generated/UniversalResolver.js +0 -1
- package/dist/esm/generated/common.js +0 -1
- package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.d.ts +0 -52
- package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.js +0 -766
- package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +0 -79
- package/dist/esm/generated/factories/DNSRegistrar__factory.js +0 -292
- package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +0 -68
- package/dist/esm/generated/factories/DNSSECImpl__factory.js +0 -497
- package/dist/esm/generated/factories/DefaultReverseResolver__factory.d.ts +0 -36
- package/dist/esm/generated/factories/DefaultReverseResolver__factory.js +0 -83
- package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
- package/dist/esm/generated/factories/ENSRegistry__factory.d.ts +0 -52
- package/dist/esm/generated/factories/ENSRegistry__factory.js +0 -435
- package/dist/esm/generated/factories/ETHRegistrarController__factory.js +0 -507
- package/dist/esm/generated/factories/Multicall__factory.d.ts +0 -42
- package/dist/esm/generated/factories/Multicall__factory.js +0 -453
- package/dist/esm/generated/factories/NameWrapper__factory.d.ts +0 -57
- package/dist/esm/generated/factories/NameWrapper__factory.js +0 -1196
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +0 -34
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +0 -67
- package/dist/esm/generated/factories/PublicResolver__factory.d.ts +0 -46
- package/dist/esm/generated/factories/PublicResolver__factory.js +0 -888
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +0 -34
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +0 -67
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +0 -34
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +0 -67
- package/dist/esm/generated/factories/ReverseRegistrar__factory.d.ts +0 -46
- package/dist/esm/generated/factories/ReverseRegistrar__factory.js +0 -336
- package/dist/esm/generated/factories/Root__factory.d.ts +0 -52
- package/dist/esm/generated/factories/Root__factory.js +0 -239
- package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +0 -34
- package/dist/esm/generated/factories/SHA1Digest__factory.js +0 -62
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +0 -34
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +0 -67
- package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +0 -34
- package/dist/esm/generated/factories/SHA256Digest__factory.js +0 -62
- package/dist/esm/generated/factories/StaticMetadataService__factory.d.ts +0 -32
- package/dist/esm/generated/factories/StaticMetadataService__factory.js +0 -45
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +0 -34
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +0 -57
- package/dist/esm/generated/factories/UniversalResolver__factory.d.ts +0 -42
- package/dist/esm/generated/factories/UniversalResolver__factory.js +0 -200
- package/dist/esm/generated/factories/index.d.ts +0 -6
- package/dist/esm/generated/factories/index.js +0 -9
- package/dist/esm/generated/index.d.ts +0 -13
- package/dist/esm/generated/index.js +0 -7
- package/dist/esm/index.js +0 -189
- package/dist/esm/utils/contentHash.d.ts +0 -28
- package/dist/esm/utils/contentHash.js +0 -153
- package/dist/esm/utils/createReverseNode.d.ts +0 -2
- package/dist/esm/utils/createReverseNode.js +0 -1
- package/dist/esm/utils/format.d.ts +0 -3
- package/dist/esm/utils/format.js +0 -3
- package/dist/esm/utils/fuses.d.ts +0 -20
- package/dist/esm/utils/fuses.js +0 -21
- package/dist/esm/utils/generateFuseInput.d.ts +0 -3
- package/dist/esm/utils/generateFuseInput.js +0 -14
- package/dist/esm/utils/hexEncodedName.d.ts +0 -1
- package/dist/esm/utils/hexEncodedName.js +0 -2
- package/dist/esm/utils/labels.d.ts +0 -14
- package/dist/esm/utils/labels.js +0 -95
- package/dist/esm/utils/makeHashIndexes.d.ts +0 -2
- package/dist/esm/utils/makeHashIndexes.js +0 -3
- package/dist/esm/utils/normalise.d.ts +0 -2
- package/dist/esm/utils/normalise.js +0 -20
- package/dist/esm/utils/recordHelpers.js +0 -39
- package/dist/esm/utils/registerHelpers.d.ts +0 -26
- package/dist/esm/utils/registerHelpers.js +0 -43
- package/dist/esm/utils/singleCall.d.ts +0 -9
- package/dist/esm/utils/singleCall.js +0 -5
- package/dist/esm/utils/validation.d.ts +0 -8
- package/dist/esm/utils/validation.js +0 -67
- 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/batch.test.ts +0 -36
- package/src/tests/batchWrappers.test.ts +0 -31
- package/src/tests/burnFuses.test.ts +0 -44
- package/src/tests/deleteSubname.test.ts +0 -71
- package/src/tests/getExpiry.test.ts +0 -37
- package/src/tests/getFuses.test.ts +0 -103
- package/src/tests/getHistory.test.ts +0 -101
- package/src/tests/getNames.test.ts +0 -247
- package/src/tests/getOwner.test.ts +0 -71
- package/src/tests/getResolver.test.ts +0 -19
- package/src/tests/getSubnames.test.ts +0 -31
- package/src/tests/setup.ts +0 -53
- package/src/tests/transferName.test.ts +0 -81
- package/src/tests/transferSubname.test.ts +0 -73
- package/src/tests/unwrapName.test.ts +0 -68
- package/src/tests/withProvider.test.ts +0 -28
- package/src/tests/wrapName.test.ts +0 -64
package/src/GqlManager.ts
CHANGED
|
@@ -1,11 +1,99 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Kind,
|
|
3
|
+
parse as Parse,
|
|
4
|
+
print as Print,
|
|
5
|
+
SelectionSetNode,
|
|
6
|
+
visit as Visit,
|
|
7
|
+
} from 'graphql'
|
|
8
|
+
import type Traverse from 'traverse'
|
|
9
|
+
import { namehash } from './utils/normalise'
|
|
10
|
+
|
|
11
|
+
const generateSelection = (selection: any) => ({
|
|
12
|
+
kind: 'Field' as Kind.FIELD,
|
|
13
|
+
name: {
|
|
14
|
+
kind: 'Name' as Kind.NAME,
|
|
15
|
+
value: selection,
|
|
16
|
+
},
|
|
17
|
+
arguments: [],
|
|
18
|
+
directives: [],
|
|
19
|
+
alias: undefined,
|
|
20
|
+
selectionSet: undefined,
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
export const enter = (node: SelectionSetNode) => {
|
|
24
|
+
let hasName = false
|
|
25
|
+
let hasId = false
|
|
26
|
+
|
|
27
|
+
for (const selection of node.selections) {
|
|
28
|
+
if ('name' in selection) {
|
|
29
|
+
if (selection.name.value === 'name') hasName = true
|
|
30
|
+
else if (selection.name.value === 'id') hasId = true
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (hasName && !hasId) {
|
|
35
|
+
// eslint-disable-next-line no-param-reassign
|
|
36
|
+
node.selections = [...node.selections, generateSelection('id')]
|
|
37
|
+
return node
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const requestMiddleware =
|
|
42
|
+
(visit: typeof Visit, parse: typeof Parse, print: typeof Print) =>
|
|
43
|
+
(request: any) => {
|
|
44
|
+
const requestBody = JSON.parse(request.body)
|
|
45
|
+
const rawQuery = requestBody.query
|
|
46
|
+
const parsedQuery = parse(rawQuery)
|
|
47
|
+
const updatedQuery = visit(parsedQuery, {
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
49
|
+
SelectionSet: {
|
|
50
|
+
enter,
|
|
51
|
+
},
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
...request,
|
|
56
|
+
body: JSON.stringify({ ...requestBody, query: print(updatedQuery) }),
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const responseMiddleware =
|
|
61
|
+
(traverse: typeof Traverse) => (response: any) => {
|
|
62
|
+
// eslint-disable-next-line func-names
|
|
63
|
+
traverse(response).forEach(function (responseItem: any) {
|
|
64
|
+
if (responseItem instanceof Object && responseItem.name) {
|
|
65
|
+
// Name already in hashed form
|
|
66
|
+
if (responseItem.name && responseItem.name.includes('[')) {
|
|
67
|
+
return
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const hashedName = namehash(responseItem.name)
|
|
71
|
+
if (responseItem.id !== hashedName) {
|
|
72
|
+
this.update({ ...responseItem, name: hashedName, invalidName: true })
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
return response
|
|
77
|
+
}
|
|
78
|
+
|
|
1
79
|
export default class GqlManager {
|
|
80
|
+
// eslint-disable-next-line class-methods-use-this
|
|
2
81
|
public gql: any = () => null
|
|
82
|
+
|
|
3
83
|
public client?: any | null = null
|
|
4
84
|
|
|
5
85
|
public setUrl = async (url: string | null) => {
|
|
6
86
|
if (url) {
|
|
7
|
-
const imported = await
|
|
8
|
-
|
|
87
|
+
const [imported, traverse, { visit, parse, print }] = await Promise.all([
|
|
88
|
+
import('graphql-request'),
|
|
89
|
+
import('traverse'),
|
|
90
|
+
import('graphql/language'),
|
|
91
|
+
])
|
|
92
|
+
|
|
93
|
+
this.client = new imported.GraphQLClient(url, {
|
|
94
|
+
requestMiddleware: requestMiddleware(visit, parse, print),
|
|
95
|
+
responseMiddleware: responseMiddleware(traverse.default),
|
|
96
|
+
})
|
|
9
97
|
this.gql = imported.gql
|
|
10
98
|
} else {
|
|
11
99
|
this.client = null
|
|
@@ -4,6 +4,7 @@ const addresses: Record<
|
|
|
4
4
|
ContractName,
|
|
5
5
|
Partial<Record<SupportedNetworkId, string>> | string
|
|
6
6
|
> = {
|
|
7
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
7
8
|
BaseRegistrarImplementation: {
|
|
8
9
|
'1': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
|
|
9
10
|
'3': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
|
|
@@ -34,6 +35,7 @@ const addresses: Record<
|
|
|
34
35
|
'1': '0x580AF46E06DaaD47eb5940526FD64d95b815Cb70',
|
|
35
36
|
'4': '0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376',
|
|
36
37
|
},
|
|
38
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
export type ContractAddressFetch = (contractName: ContractName) => string
|
package/src/contracts/index.ts
CHANGED
|
@@ -12,6 +12,7 @@ import getUniversalResolver from './universalResolver'
|
|
|
12
12
|
|
|
13
13
|
export default class ContractManager {
|
|
14
14
|
private provider: ethers.providers.Provider
|
|
15
|
+
|
|
15
16
|
private fetchAddress: ContractAddressFetch
|
|
16
17
|
|
|
17
18
|
constructor(
|
|
@@ -25,7 +26,7 @@ export default class ContractManager {
|
|
|
25
26
|
private generateContractGetter = <C extends (...args: any) => any>(
|
|
26
27
|
name: ContractName,
|
|
27
28
|
func: C,
|
|
28
|
-
) => {
|
|
29
|
+
): ((passedProvider?: any, address?: string) => Promise<ReturnType<C>>) => {
|
|
29
30
|
return async (
|
|
30
31
|
passedProvider?: any,
|
|
31
32
|
address?: string,
|
|
@@ -40,29 +41,36 @@ export default class ContractManager {
|
|
|
40
41
|
'PublicResolver',
|
|
41
42
|
getPublicResolver,
|
|
42
43
|
)
|
|
44
|
+
|
|
43
45
|
public getUniversalResolver = this.generateContractGetter(
|
|
44
46
|
'UniversalResolver',
|
|
45
47
|
getUniversalResolver,
|
|
46
48
|
)
|
|
49
|
+
|
|
47
50
|
public getRegistry = this.generateContractGetter(
|
|
48
51
|
'ENSRegistryWithFallback',
|
|
49
52
|
getRegistry,
|
|
50
53
|
)
|
|
54
|
+
|
|
51
55
|
public getReverseRegistrar = this.generateContractGetter(
|
|
52
56
|
'ReverseRegistrar',
|
|
53
57
|
getReverseRegistrar,
|
|
54
58
|
)
|
|
59
|
+
|
|
55
60
|
public getNameWrapper = this.generateContractGetter(
|
|
56
61
|
'NameWrapper',
|
|
57
62
|
getNameWrapper,
|
|
58
63
|
)
|
|
64
|
+
|
|
59
65
|
public getBaseRegistrar = this.generateContractGetter(
|
|
60
66
|
'BaseRegistrarImplementation',
|
|
61
67
|
getBaseRegistrar,
|
|
62
68
|
)
|
|
69
|
+
|
|
63
70
|
public getEthRegistrarController = this.generateContractGetter(
|
|
64
71
|
'ETHRegistrarController',
|
|
65
72
|
getEthRegistrarController,
|
|
66
73
|
)
|
|
74
|
+
|
|
67
75
|
public getMulticall = this.generateContractGetter('Multicall', getMulticall)
|
|
68
76
|
}
|
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
import { ethers } from 'ethers'
|
|
2
2
|
import { Multicall__factory } from '../generated/factories/Multicall__factory'
|
|
3
3
|
|
|
4
|
-
const ABI = [
|
|
5
|
-
'function aggregate(tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes[] returnData)',
|
|
6
|
-
'function aggregate3(tuple(address target, bool allowFailure, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
|
|
7
|
-
'function aggregate3Value(tuple(address target, bool allowFailure, uint256 value, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
|
|
8
|
-
'function blockAndAggregate(tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes32 blockHash, tuple(bool success, bytes returnData)[] returnData)',
|
|
9
|
-
'function getBasefee() view returns (uint256 basefee)',
|
|
10
|
-
'function getBlockHash(uint256 blockNumber) view returns (bytes32 blockHash)',
|
|
11
|
-
'function getBlockNumber() view returns (uint256 blockNumber)',
|
|
12
|
-
'function getChainId() view returns (uint256 chainid)',
|
|
13
|
-
'function getCurrentBlockCoinbase() view returns (address coinbase)',
|
|
14
|
-
'function getCurrentBlockDifficulty() view returns (uint256 difficulty)',
|
|
15
|
-
'function getCurrentBlockGasLimit() view returns (uint256 gaslimit)',
|
|
16
|
-
'function getCurrentBlockTimestamp() view returns (uint256 timestamp)',
|
|
17
|
-
'function getEthBalance(address addr) view returns (uint256 balance)',
|
|
18
|
-
'function getLastBlockHash() view returns (bytes32 blockHash)',
|
|
19
|
-
'function tryAggregate(bool requireSuccess, tuple(address target, bytes callData)[] calls) payable returns (tuple(bool success, bytes returnData)[] returnData)',
|
|
20
|
-
'function tryBlockAndAggregate(bool requireSuccess, tuple(address target, bytes callData)[] calls) payable returns (uint256 blockNumber, bytes32 blockHash, tuple(bool success, bytes returnData)[] returnData)',
|
|
21
|
-
]
|
|
22
|
-
|
|
23
4
|
export default (provider: ethers.providers.JsonRpcProvider, address: string) =>
|
|
24
5
|
Multicall__factory.connect(address, provider)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ENS } from '..'
|
|
2
|
+
import setup from '../tests/setup'
|
|
3
|
+
|
|
4
|
+
let ensInstance: ENS
|
|
5
|
+
|
|
6
|
+
beforeAll(async () => {
|
|
7
|
+
;({ ensInstance } = await setup())
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
describe('batch', () => {
|
|
11
|
+
it('should batch calls together', async () => {
|
|
12
|
+
const result = await ensInstance.batch(
|
|
13
|
+
ensInstance.getText.batch('with-profile.eth', 'description'),
|
|
14
|
+
ensInstance.getAddr.batch('with-profile.eth'),
|
|
15
|
+
ensInstance.getName.batch('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'),
|
|
16
|
+
)
|
|
17
|
+
expect(result).toBeTruthy()
|
|
18
|
+
if (result) {
|
|
19
|
+
expect(result[0]).toBe('Hello2')
|
|
20
|
+
expect(result[1]).toBe('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC')
|
|
21
|
+
expect(result[2]).toMatchObject({
|
|
22
|
+
name: 'with-profile.eth',
|
|
23
|
+
match: true,
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
it('should batch a single call', async () => {
|
|
28
|
+
const result = await ensInstance.batch(
|
|
29
|
+
ensInstance.getText.batch('with-profile.eth', 'description'),
|
|
30
|
+
)
|
|
31
|
+
expect(result).toBeTruthy()
|
|
32
|
+
if (result) {
|
|
33
|
+
expect(result[0]).toBe('Hello2')
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
})
|
package/src/functions/batch.ts
CHANGED
|
@@ -5,11 +5,11 @@ const raw = async (
|
|
|
5
5
|
...items: BatchFunctionResult<RawFunction>[]
|
|
6
6
|
) => {
|
|
7
7
|
const rawDataArr: { to: string; data: string }[] = await Promise.all(
|
|
8
|
-
items.map(({ args, raw }, i: number) => {
|
|
9
|
-
if (!
|
|
8
|
+
items.map(({ args, raw: rawRef }, i: number) => {
|
|
9
|
+
if (!rawRef) {
|
|
10
10
|
throw new Error(`Function ${i} is not batchable`)
|
|
11
11
|
}
|
|
12
|
-
return
|
|
12
|
+
return rawRef(...args)
|
|
13
13
|
}),
|
|
14
14
|
)
|
|
15
15
|
return multicallWrapper.raw(rawDataArr)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ENS } from '..'
|
|
2
|
+
import setup from '../tests/setup'
|
|
3
|
+
|
|
4
|
+
let ensInstance: ENS
|
|
5
|
+
|
|
6
|
+
beforeAll(async () => {
|
|
7
|
+
;({ ensInstance } = await setup())
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
describe('batchWrappers', () => {
|
|
11
|
+
it('should batch calls together', async () => {
|
|
12
|
+
const batch = await ensInstance.resolverMulticallWrapper.raw([
|
|
13
|
+
await ensInstance._getText.raw('with-profile.eth', 'description'),
|
|
14
|
+
await ensInstance._getText.raw('with-profile.eth', 'url'),
|
|
15
|
+
await ensInstance._getAddr.raw('with-profile.eth'),
|
|
16
|
+
])
|
|
17
|
+
const universalResponse = await ensInstance.universalWrapper(
|
|
18
|
+
'with-profile.eth',
|
|
19
|
+
batch.data,
|
|
20
|
+
)
|
|
21
|
+
const [batchDecoded] = await ensInstance.resolverMulticallWrapper.decode(
|
|
22
|
+
universalResponse?.data,
|
|
23
|
+
)
|
|
24
|
+
const decoded1 = await ensInstance._getText.decode(batchDecoded[0])
|
|
25
|
+
const decoded2 = await ensInstance._getText.decode(batchDecoded[1])
|
|
26
|
+
const decoded3 = await ensInstance._getAddr.decode(batchDecoded[2])
|
|
27
|
+
expect(decoded1).toBe('Hello2')
|
|
28
|
+
expect(decoded2).toBe('twitter.com')
|
|
29
|
+
expect(decoded3).toBe('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC')
|
|
30
|
+
})
|
|
31
|
+
})
|
|
@@ -58,7 +58,7 @@ export const resolverMulticallWrapper = {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
export const multicallWrapper = {
|
|
61
|
-
|
|
61
|
+
async raw(
|
|
62
62
|
{ contracts }: ENSArgs<'contracts'>,
|
|
63
63
|
transactions: ethers.providers.TransactionRequest[],
|
|
64
64
|
requireSuccess: boolean = false,
|
|
@@ -75,7 +75,7 @@ export const multicallWrapper = {
|
|
|
75
75
|
]),
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
|
-
|
|
78
|
+
async decode({ contracts }: ENSArgs<'contracts'>, data: string) {
|
|
79
79
|
if (!data) return
|
|
80
80
|
const multicall = await contracts?.getMulticall()!
|
|
81
81
|
try {
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
|
+
import { ENS } from '..'
|
|
3
|
+
import setup from '../tests/setup'
|
|
4
|
+
import { namehash } from '../utils/normalise'
|
|
5
|
+
|
|
6
|
+
let ensInstance: ENS
|
|
7
|
+
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
8
|
+
let provider: ethers.providers.JsonRpcProvider
|
|
9
|
+
let accounts: string[]
|
|
10
|
+
|
|
11
|
+
beforeAll(async () => {
|
|
12
|
+
;({ ensInstance, revert, provider } = await setup())
|
|
13
|
+
accounts = await provider.listAccounts()
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
afterAll(async () => {
|
|
17
|
+
await revert()
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
describe('burnFuses', () => {
|
|
21
|
+
beforeEach(async () => {
|
|
22
|
+
await revert()
|
|
23
|
+
})
|
|
24
|
+
describe('Array', () => {
|
|
25
|
+
it('should return a burnFuses transaction from a named fuse array and succeed', async () => {
|
|
26
|
+
const tx = await ensInstance.burnFuses('wrapped.eth', {
|
|
27
|
+
namedFusesToBurn: [
|
|
28
|
+
'CANNOT_UNWRAP',
|
|
29
|
+
'CANNOT_CREATE_SUBDOMAIN',
|
|
30
|
+
'CANNOT_SET_TTL',
|
|
31
|
+
],
|
|
32
|
+
addressOrIndex: accounts[1],
|
|
33
|
+
})
|
|
34
|
+
expect(tx).toBeTruthy()
|
|
35
|
+
await tx.wait()
|
|
36
|
+
|
|
37
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
38
|
+
const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
|
|
39
|
+
expect(fuses).toBe(113)
|
|
40
|
+
})
|
|
41
|
+
it('should return a burnFuses transaction from an unnamed fuse array and succeed', async () => {
|
|
42
|
+
const tx0 = await ensInstance.burnFuses('wrapped.eth', {
|
|
43
|
+
namedFusesToBurn: ['CANNOT_UNWRAP'],
|
|
44
|
+
addressOrIndex: accounts[1],
|
|
45
|
+
})
|
|
46
|
+
expect(tx0).toBeTruthy()
|
|
47
|
+
await tx0.wait()
|
|
48
|
+
|
|
49
|
+
const tx = await ensInstance.burnFuses('wrapped.eth', {
|
|
50
|
+
unnamedFusesToBurn: [128, 256, 512],
|
|
51
|
+
addressOrIndex: accounts[1],
|
|
52
|
+
})
|
|
53
|
+
expect(tx).toBeTruthy()
|
|
54
|
+
await tx.wait()
|
|
55
|
+
|
|
56
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
57
|
+
const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
|
|
58
|
+
expect(fuses).toBe(961)
|
|
59
|
+
})
|
|
60
|
+
it('should return a burnFuses transaction from both an unnamed and named fuse array and succeed', async () => {
|
|
61
|
+
const tx = await ensInstance.burnFuses('wrapped.eth', {
|
|
62
|
+
namedFusesToBurn: [
|
|
63
|
+
'CANNOT_UNWRAP',
|
|
64
|
+
'CANNOT_CREATE_SUBDOMAIN',
|
|
65
|
+
'CANNOT_SET_TTL',
|
|
66
|
+
],
|
|
67
|
+
unnamedFusesToBurn: [128, 256, 512],
|
|
68
|
+
addressOrIndex: accounts[1],
|
|
69
|
+
})
|
|
70
|
+
expect(tx).toBeTruthy()
|
|
71
|
+
await tx.wait()
|
|
72
|
+
|
|
73
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
74
|
+
const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
|
|
75
|
+
expect(fuses).toBe(1009)
|
|
76
|
+
})
|
|
77
|
+
it('should throw an error when trying to burn a named fuse in an unnamed fuse array', async () => {
|
|
78
|
+
try {
|
|
79
|
+
await ensInstance.burnFuses('wrapped.eth', {
|
|
80
|
+
unnamedFusesToBurn: [64] as any,
|
|
81
|
+
})
|
|
82
|
+
expect(false).toBeTruthy()
|
|
83
|
+
} catch (e: any) {
|
|
84
|
+
expect(e.message).toBe(
|
|
85
|
+
'64 is not a valid unnamed fuse. If you are trying to burn a named fuse, use the namedFusesToBurn property.',
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
it('should throw an error when trying to burn an unnamed fuse in a named fuse array', async () => {
|
|
90
|
+
try {
|
|
91
|
+
await ensInstance.burnFuses('wrapped.eth', {
|
|
92
|
+
namedFusesToBurn: ['COOL_SWAG_FUSE'] as any,
|
|
93
|
+
})
|
|
94
|
+
expect(false).toBeTruthy()
|
|
95
|
+
} catch (e: any) {
|
|
96
|
+
expect(e.message).toBe('COOL_SWAG_FUSE is not a valid named fuse.')
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
})
|
|
100
|
+
describe('Number', () => {
|
|
101
|
+
it('should return a burnFuses transaction from a number and succeed', async () => {
|
|
102
|
+
const tx = await ensInstance.burnFuses('wrapped.eth', {
|
|
103
|
+
fuseNumberToBurn: 49,
|
|
104
|
+
addressOrIndex: accounts[1],
|
|
105
|
+
})
|
|
106
|
+
expect(tx).toBeTruthy()
|
|
107
|
+
await tx.wait()
|
|
108
|
+
|
|
109
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
110
|
+
const [fuses] = await nameWrapper.getFuses(namehash('wrapped.eth'))
|
|
111
|
+
expect(fuses).toBe(113)
|
|
112
|
+
})
|
|
113
|
+
it('should throw an error if the number is too high', async () => {
|
|
114
|
+
try {
|
|
115
|
+
await ensInstance.burnFuses('wrapped.eth', {
|
|
116
|
+
fuseNumberToBurn: 4294967297,
|
|
117
|
+
})
|
|
118
|
+
expect(false).toBeTruthy()
|
|
119
|
+
} catch (e: any) {
|
|
120
|
+
expect(e.message).toBe(
|
|
121
|
+
'Fuse number must be limited to uint32, 4294967297 was too high.',
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
it('should throw an error if the number is too low', async () => {
|
|
126
|
+
try {
|
|
127
|
+
await ensInstance.burnFuses('wrapped.eth', {
|
|
128
|
+
fuseNumberToBurn: -1,
|
|
129
|
+
})
|
|
130
|
+
expect(false).toBeTruthy()
|
|
131
|
+
} catch (e: any) {
|
|
132
|
+
expect(e.message).toBe(
|
|
133
|
+
'Fuse number must be limited to uint32, -1 was too low.',
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
})
|
|
137
|
+
it('should throw an error if the number is not an integer', async () => {
|
|
138
|
+
try {
|
|
139
|
+
await ensInstance.burnFuses('wrapped.eth', {
|
|
140
|
+
fuseNumberToBurn: 7.5,
|
|
141
|
+
})
|
|
142
|
+
expect(false).toBeTruthy()
|
|
143
|
+
} catch (e: any) {
|
|
144
|
+
expect(e.message).toBe('Fuse number must be an integer, 7.5 was not.')
|
|
145
|
+
}
|
|
146
|
+
})
|
|
147
|
+
})
|
|
148
|
+
})
|
|
@@ -1,23 +1,79 @@
|
|
|
1
1
|
import { ENSArgs } from '..'
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
fuseEnum,
|
|
4
|
+
NamedFusesToBurn,
|
|
5
|
+
unnamedFuses,
|
|
6
|
+
UnnamedFuseValues,
|
|
7
|
+
} from '../utils/fuses'
|
|
4
8
|
import { namehash } from '../utils/normalise'
|
|
5
9
|
|
|
10
|
+
export type FusePropsNamedArray = {
|
|
11
|
+
namedFusesToBurn: NamedFusesToBurn
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type FusePropsUnnamedArray = {
|
|
15
|
+
unnamedFusesToBurn: UnnamedFuseValues[]
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type FusePropsNumber = {
|
|
19
|
+
fuseNumberToBurn: number
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type FuseProps =
|
|
23
|
+
| (Partial<FusePropsNamedArray> & FusePropsUnnamedArray)
|
|
24
|
+
| (FusePropsNamedArray & Partial<FusePropsUnnamedArray>)
|
|
25
|
+
| FusePropsNumber
|
|
26
|
+
|
|
6
27
|
export default async function (
|
|
7
|
-
{ contracts,
|
|
28
|
+
{ contracts, signer }: ENSArgs<'contracts' | 'signer'>,
|
|
8
29
|
name: string,
|
|
9
|
-
|
|
30
|
+
props: FuseProps,
|
|
10
31
|
) {
|
|
11
|
-
const
|
|
32
|
+
const isNumber = 'fuseNumberToBurn' in props
|
|
33
|
+
const hasNamedArray = 'namedFusesToBurn' in props
|
|
34
|
+
const hasUnnamedArray = 'unnamedFusesToBurn' in props
|
|
12
35
|
|
|
13
|
-
|
|
14
|
-
|
|
36
|
+
let encodedFuses: number = 0
|
|
37
|
+
|
|
38
|
+
if (isNumber) {
|
|
39
|
+
if (props.fuseNumberToBurn > 2 ** 32 || props.fuseNumberToBurn < 1) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
`Fuse number must be limited to uint32, ${
|
|
42
|
+
props.fuseNumberToBurn
|
|
43
|
+
} was too ${props.fuseNumberToBurn < 1 ? 'low' : 'high'}.`,
|
|
44
|
+
)
|
|
45
|
+
} else if (props.fuseNumberToBurn % 1 !== 0) {
|
|
46
|
+
throw new Error(
|
|
47
|
+
`Fuse number must be an integer, ${props.fuseNumberToBurn} was not.`,
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
encodedFuses = props.fuseNumberToBurn
|
|
51
|
+
} else {
|
|
52
|
+
if (!hasNamedArray && !hasUnnamedArray) {
|
|
53
|
+
throw new Error('Please provide fuses to burn')
|
|
54
|
+
}
|
|
55
|
+
if (hasNamedArray) {
|
|
56
|
+
for (const fuse of props.namedFusesToBurn!) {
|
|
57
|
+
if (!(fuse in fuseEnum)) {
|
|
58
|
+
throw new Error(`${fuse} is not a valid named fuse.`)
|
|
59
|
+
}
|
|
60
|
+
encodedFuses |= fuseEnum[fuse]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (hasUnnamedArray) {
|
|
64
|
+
for (const fuse of props.unnamedFusesToBurn!) {
|
|
65
|
+
if (!unnamedFuses.includes(fuse)) {
|
|
66
|
+
throw new Error(
|
|
67
|
+
`${fuse} is not a valid unnamed fuse. If you are trying to burn a named fuse, use the namedFusesToBurn property.`,
|
|
68
|
+
)
|
|
69
|
+
}
|
|
70
|
+
encodedFuses |= fuse
|
|
71
|
+
}
|
|
72
|
+
}
|
|
15
73
|
}
|
|
16
74
|
|
|
17
|
-
const nameWrapper = (await contracts
|
|
75
|
+
const nameWrapper = (await contracts!.getNameWrapper()!).connect(signer)
|
|
18
76
|
const hash = namehash(name)
|
|
19
77
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return nameWrapper.burnFuses(hash, encodedFuses)
|
|
78
|
+
return nameWrapper.populateTransaction.setFuses(hash, encodedFuses)
|
|
23
79
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ethers } from 'ethers'
|
|
2
|
+
import { ENS } from '..'
|
|
3
|
+
import setup from '../tests/setup'
|
|
4
|
+
import { randomSecret } from '../utils/registerHelpers'
|
|
5
|
+
|
|
6
|
+
let ensInstance: ENS
|
|
7
|
+
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
8
|
+
let provider: ethers.providers.JsonRpcProvider
|
|
9
|
+
let accounts: string[]
|
|
10
|
+
|
|
11
|
+
beforeAll(async () => {
|
|
12
|
+
;({ ensInstance, revert, provider } = await setup())
|
|
13
|
+
accounts = await provider.listAccounts()
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
afterAll(async () => {
|
|
17
|
+
await revert()
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
describe('commitName', () => {
|
|
21
|
+
beforeEach(async () => {
|
|
22
|
+
await revert()
|
|
23
|
+
})
|
|
24
|
+
it('should return a populated commit transaction with extra data and succeed', async () => {
|
|
25
|
+
const { customData, ...popTx } =
|
|
26
|
+
await ensInstance.commitName.populateTransaction('commitment.eth', {
|
|
27
|
+
duration: 31536000,
|
|
28
|
+
owner: accounts[1],
|
|
29
|
+
addressOrIndex: accounts[1],
|
|
30
|
+
})
|
|
31
|
+
expect(popTx).toBeTruthy()
|
|
32
|
+
expect(customData).toHaveProperty('secret')
|
|
33
|
+
expect(customData).toHaveProperty('commitment')
|
|
34
|
+
expect(customData).toHaveProperty('wrapperExpiry')
|
|
35
|
+
|
|
36
|
+
const tx = await provider.getSigner().sendTransaction(popTx)
|
|
37
|
+
await tx.wait()
|
|
38
|
+
|
|
39
|
+
const controller = await ensInstance.contracts!.getEthRegistrarController()!
|
|
40
|
+
const commitment = await controller.commitments(customData!.commitment)
|
|
41
|
+
expect(commitment).toBeTruthy()
|
|
42
|
+
})
|
|
43
|
+
it('should return a customised commmit transaction and succeed', async () => {
|
|
44
|
+
const secret = randomSecret()
|
|
45
|
+
const tx = await ensInstance.commitName('commitment.eth', {
|
|
46
|
+
duration: 31536000,
|
|
47
|
+
owner: accounts[1],
|
|
48
|
+
addressOrIndex: accounts[1],
|
|
49
|
+
secret,
|
|
50
|
+
wrapperExpiry: 100000,
|
|
51
|
+
})
|
|
52
|
+
await tx.wait()
|
|
53
|
+
expect(tx.customData).toBeTruthy()
|
|
54
|
+
expect(tx.customData!.wrapperExpiry).toBe(100000)
|
|
55
|
+
expect(tx.customData!.secret).toBe(secret)
|
|
56
|
+
|
|
57
|
+
const controller = await ensInstance.contracts!.getEthRegistrarController()!
|
|
58
|
+
const commitment = await controller.commitments(tx.customData!.commitment)
|
|
59
|
+
expect(commitment).toBeTruthy()
|
|
60
|
+
})
|
|
61
|
+
})
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ENSArgs } from '..'
|
|
2
|
+
import { CommitmentParams, makeCommitment } from '../utils/registerHelpers'
|
|
3
|
+
|
|
4
|
+
type Params = Omit<CommitmentParams, 'resolver' | 'name'> & {
|
|
5
|
+
resolverAddress?: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export default async function (
|
|
9
|
+
{ contracts }: ENSArgs<'contracts'>,
|
|
10
|
+
name: string,
|
|
11
|
+
{ resolverAddress, ...params }: Params,
|
|
12
|
+
) {
|
|
13
|
+
const labels = name.split('.')
|
|
14
|
+
if (labels.length !== 2 || labels[1] !== 'eth')
|
|
15
|
+
throw new Error('Currently only .eth TLD registrations are supported')
|
|
16
|
+
|
|
17
|
+
const controller = await contracts!.getEthRegistrarController()
|
|
18
|
+
const resolver = await contracts!.getPublicResolver(
|
|
19
|
+
undefined,
|
|
20
|
+
resolverAddress,
|
|
21
|
+
)
|
|
22
|
+
const { secret, commitment, wrapperExpiry } = makeCommitment({
|
|
23
|
+
name,
|
|
24
|
+
resolver,
|
|
25
|
+
...params,
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
...(await controller.populateTransaction.commit(commitment)),
|
|
30
|
+
customData: {
|
|
31
|
+
secret,
|
|
32
|
+
commitment,
|
|
33
|
+
wrapperExpiry,
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
}
|