@ensdomains/ensjs 3.0.0-alpha.16 → 3.0.0-alpha.19
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 +97 -97
- 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 +62 -38
- package/dist/cjs/functions/commitName.js +45 -22
- package/dist/cjs/functions/createSubname.js +79 -36
- package/dist/cjs/functions/deleteSubname.js +30 -8
- package/dist/cjs/functions/getDNSOwner.js +73 -72
- package/dist/cjs/functions/getExpiry.js +97 -73
- package/dist/cjs/functions/getFuses.js +62 -37
- package/dist/cjs/functions/getHistory.js +109 -77
- 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 +403 -291
- package/dist/cjs/functions/getRecords.js +29 -9
- package/dist/cjs/functions/getResolver.js +41 -19
- package/dist/cjs/functions/getSpecificRecord.js +188 -268
- package/dist/cjs/functions/getSubnames.js +83 -63
- package/dist/cjs/functions/initialGetters.js +46 -37
- package/dist/cjs/functions/registerName.js +40 -17
- package/dist/cjs/functions/renewName.js +31 -8
- package/dist/cjs/functions/setName.js +40 -10
- package/dist/cjs/functions/setRecord.js +53 -25
- package/dist/cjs/functions/setRecords.js +49 -22
- package/dist/cjs/functions/setResolver.js +44 -18
- package/dist/cjs/functions/transferName.js +61 -26
- package/dist/cjs/functions/transferSubname.js +61 -23
- package/dist/cjs/functions/unwrapName.js +49 -20
- package/dist/cjs/functions/wrapName.js +120 -58
- 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 +280 -264
- package/dist/cjs/generated/factories/DNSSECImpl__factory.js +484 -468
- 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 -514
- package/dist/cjs/generated/factories/Multicall__factory.js +457 -441
- package/dist/cjs/generated/factories/NameWrapper__factory.js +1341 -1325
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +59 -43
- package/dist/cjs/generated/factories/PublicResolver__factory.js +901 -885
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +59 -43
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +59 -43
- 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 +54 -38
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +59 -43
- package/dist/cjs/generated/factories/SHA256Digest__factory.js +54 -38
- package/dist/cjs/generated/factories/StaticMetadataService__factory.js +64 -44
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +49 -33
- package/dist/cjs/generated/factories/UniversalResolver__factory.js +215 -199
- package/dist/cjs/generated/factories/index.js +61 -45
- package/dist/cjs/generated/index.js +68 -65
- package/dist/cjs/index.js +318 -243
- 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 +62 -17
- package/dist/cjs/utils/generateFuseInput.js +37 -16
- package/dist/cjs/utils/hexEncodedName.js +29 -7
- package/dist/cjs/utils/labels.js +99 -84
- package/dist/cjs/utils/makeHashIndexes.js +27 -6
- package/dist/cjs/utils/normalise.js +48 -28
- package/dist/cjs/utils/recordHelpers.js +81 -63
- package/dist/cjs/utils/registerHelpers.js +110 -70
- package/dist/cjs/utils/singleCall.js +23 -6
- package/dist/cjs/utils/validation.js +76 -63
- package/dist/cjs/utils/wrapperExpiry.js +39 -25
- package/dist/cjs/utils/writeTx.js +23 -4
- 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/{cjs → types}/GqlManager.d.ts +0 -0
- package/dist/{esm → types}/contracts/baseRegistrar.d.ts +1 -1
- package/dist/{esm → types}/contracts/ethRegistrarController.d.ts +1 -1
- package/dist/{cjs → types}/contracts/getContractAddress.d.ts +0 -0
- package/dist/{cjs → types}/contracts/index.d.ts +8 -8
- package/dist/{cjs → types}/contracts/multicall.d.ts +1 -1
- package/dist/{esm → types}/contracts/nameWrapper.d.ts +1 -1
- package/dist/{cjs → types}/contracts/publicResolver.d.ts +1 -1
- package/dist/{cjs → types}/contracts/registry.d.ts +1 -1
- 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/{cjs → types}/functions/batchWrappers.d.ts +2 -2
- package/dist/types/functions/burnFuses.d.ts +13 -0
- package/dist/{cjs → types}/functions/commitName.d.ts +0 -0
- package/dist/{cjs → types}/functions/createSubname.d.ts +0 -0
- package/dist/{cjs → types}/functions/deleteSubname.d.ts +0 -0
- package/dist/{cjs → types}/functions/getDNSOwner.d.ts +0 -0
- package/dist/{cjs → types}/functions/getExpiry.d.ts +0 -0
- package/dist/{cjs → types}/functions/getFuses.d.ts +0 -0
- package/dist/types/functions/getHistory.d.ts +28 -0
- package/dist/{cjs → types}/functions/getName.d.ts +0 -0
- 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/{cjs → types}/functions/getProfile.d.ts +0 -0
- package/dist/{cjs → types}/functions/getRecords.d.ts +0 -0
- package/dist/{cjs → types}/functions/getResolver.d.ts +0 -0
- package/dist/{cjs → types}/functions/getSpecificRecord.d.ts +0 -0
- package/dist/{cjs → types}/functions/getSubnames.d.ts +0 -0
- package/dist/{cjs → types}/functions/initialGetters.d.ts +0 -0
- package/dist/{cjs → types}/functions/registerName.d.ts +0 -0
- package/dist/{cjs → types}/functions/renewName.d.ts +0 -0
- package/dist/{cjs → types}/functions/setName.d.ts +0 -0
- package/dist/{esm → types}/functions/setRecord.d.ts +2 -2
- package/dist/{cjs → types}/functions/setRecords.d.ts +0 -0
- package/dist/{cjs → types}/functions/setResolver.d.ts +0 -0
- package/dist/{cjs → types}/functions/transferName.d.ts +0 -0
- package/dist/{cjs → types}/functions/transferSubname.d.ts +0 -0
- package/dist/{cjs → types}/functions/unwrapName.d.ts +0 -0
- package/dist/{cjs → types}/functions/wrapName.d.ts +0 -0
- package/dist/{cjs → types}/generated/BaseRegistrarImplementation.d.ts +0 -0
- package/dist/{cjs → types}/generated/DNSRegistrar.d.ts +0 -0
- package/dist/{cjs → types}/generated/DNSSECImpl.d.ts +0 -0
- package/dist/{cjs → types}/generated/DefaultReverseResolver.d.ts +0 -0
- package/dist/{cjs → types}/generated/ENSRegistry.d.ts +0 -0
- package/dist/{cjs → types}/generated/ETHRegistrarController.d.ts +0 -0
- package/dist/{cjs → types}/generated/Multicall.d.ts +0 -0
- package/dist/{cjs → types}/generated/NameWrapper.d.ts +0 -0
- package/dist/{cjs → types}/generated/P256SHA256Algorithm.d.ts +0 -0
- package/dist/{cjs → types}/generated/PublicResolver.d.ts +0 -0
- package/dist/{cjs → types}/generated/RSASHA1Algorithm.d.ts +0 -0
- package/dist/{cjs → types}/generated/RSASHA256Algorithm.d.ts +0 -0
- package/dist/{cjs → types}/generated/ReverseRegistrar.d.ts +0 -0
- package/dist/{cjs → types}/generated/Root.d.ts +0 -0
- package/dist/{cjs → types}/generated/SHA1Digest.d.ts +0 -0
- package/dist/{cjs → types}/generated/SHA1NSEC3Digest.d.ts +0 -0
- package/dist/{cjs → types}/generated/SHA256Digest.d.ts +0 -0
- package/dist/{cjs → types}/generated/StaticMetadataService.d.ts +0 -0
- package/dist/{cjs → types}/generated/TLDPublicSuffixList.d.ts +0 -0
- package/dist/{cjs → types}/generated/UniversalResolver.d.ts +0 -0
- package/dist/{cjs → types}/generated/common.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/BaseRegistrarImplementation__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/DNSRegistrar__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/DNSSECImpl__factory.d.ts +0 -0
- 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/{cjs → types}/generated/factories/P256SHA256Algorithm__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/PublicResolver__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/RSASHA1Algorithm__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/RSASHA256Algorithm__factory.d.ts +0 -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/{cjs → types}/generated/factories/SHA1Digest__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/SHA1NSEC3Digest__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/SHA256Digest__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/StaticMetadataService__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/TLDPublicSuffixList__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/UniversalResolver__factory.d.ts +0 -0
- package/dist/{cjs → types}/generated/factories/index.d.ts +0 -0
- package/dist/{cjs → types}/generated/index.d.ts +0 -0
- package/dist/{esm → types}/index.d.ts +22 -32
- 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 +40 -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/{cjs → types}/utils/normalise.d.ts +0 -0
- package/dist/{cjs → types}/utils/recordHelpers.d.ts +0 -0
- package/dist/{cjs → types}/utils/registerHelpers.d.ts +1 -1
- package/dist/{cjs → types}/utils/singleCall.d.ts +0 -0
- package/dist/{cjs → types}/utils/validation.d.ts +0 -0
- package/dist/{cjs → types}/utils/wrapperExpiry.d.ts +0 -0
- package/dist/{cjs → types}/utils/writeTx.d.ts +1 -1
- package/package.json +40 -10
- package/src/@types/@ensdomains/ens-contracts.d.ts +1 -1
- package/src/@types/dns-packet/index.d.ts +113 -113
- package/src/GqlManager.test.ts +3 -1
- package/src/GqlManager.ts +6 -1
- package/src/contracts/getContractAddress.ts +2 -0
- package/src/contracts/index.ts +8 -0
- package/src/contracts/multicall.ts +0 -19
- package/src/functions/batch.test.ts +8 -8
- package/src/functions/batch.ts +3 -3
- package/src/functions/batchWrappers.test.ts +11 -11
- package/src/functions/batchWrappers.ts +2 -2
- package/src/functions/burnFuses.test.ts +16 -16
- package/src/functions/burnFuses.ts +16 -49
- package/src/functions/commitName.test.ts +6 -6
- package/src/functions/createSubname.test.ts +6 -7
- package/src/functions/createSubname.ts +2 -2
- package/src/functions/deleteSubname.test.ts +6 -10
- package/src/functions/getDNSOwner.test.ts +11 -10
- package/src/functions/getDNSOwner.ts +1 -1
- package/src/functions/getExpiry.test.ts +6 -10
- package/src/functions/getExpiry.ts +1 -1
- package/src/functions/getFuses.test.ts +12 -16
- package/src/functions/getFuses.ts +3 -6
- package/src/functions/getHistory.test.ts +4 -4
- package/src/functions/getHistory.ts +25 -14
- package/src/functions/getName.test.ts +6 -6
- package/src/functions/getName.ts +1 -1
- package/src/functions/getNames.test.ts +22 -22
- package/src/functions/getNames.ts +25 -30
- package/src/functions/getOwner.test.ts +23 -14
- package/src/functions/getOwner.ts +16 -10
- package/src/functions/getPrice.ts +2 -2
- package/src/functions/getProfile.test.ts +14 -14
- package/src/functions/getProfile.ts +103 -101
- package/src/functions/getRecords.ts +1 -1
- package/src/functions/getResolver.test.ts +3 -3
- package/src/functions/getSpecificRecord.test.ts +12 -12
- package/src/functions/getSpecificRecord.ts +8 -143
- package/src/functions/getSubnames.test.ts +9 -9
- package/src/functions/getSubnames.ts +5 -12
- package/src/functions/makeCommitment.test.ts +4 -4
- package/src/functions/registerName.test.ts +6 -6
- package/src/functions/renewName.test.ts +5 -5
- package/src/functions/setName.test.ts +9 -9
- package/src/functions/setRecord.test.ts +11 -11
- package/src/functions/setRecord.ts +2 -6
- package/src/functions/setRecords.test.ts +5 -5
- package/src/functions/setResolver.test.ts +6 -8
- package/src/functions/setResolver.ts +1 -1
- package/src/functions/transferName.test.ts +8 -8
- package/src/functions/transferSubname.test.ts +6 -6
- package/src/functions/transferSubname.ts +2 -2
- package/src/functions/unwrapName.test.ts +6 -6
- package/src/functions/unwrapName.ts +10 -11
- package/src/functions/wrapName.test.ts +16 -17
- package/src/functions/wrapName.ts +18 -19
- package/src/index.ts +34 -21
- package/src/utils/contentHash.ts +24 -22
- package/src/utils/createReverseNode.ts +1 -1
- package/src/utils/fuses.ts +39 -0
- package/src/utils/normalise.ts +1 -1
- package/src/utils/recordHelpers.ts +12 -14
- package/src/utils/registerHelpers.ts +21 -20
- package/src/utils/validation.ts +8 -9
- package/src/utils/wrapperExpiry.ts +10 -12
- package/src/utils/writeTx.ts +1 -1
- package/dist/cjs/contracts/baseRegistrar.d.ts +0 -3
- package/dist/cjs/contracts/ethRegistrarController.d.ts +0 -3
- package/dist/cjs/contracts/nameWrapper.d.ts +0 -3
- package/dist/cjs/functions/burnFuses.d.ts +0 -32
- package/dist/cjs/functions/getHistory.d.ts +0 -24
- package/dist/cjs/functions/setRecord.d.ts +0 -18
- package/dist/cjs/index.d.ts +0 -467
- package/dist/cjs/utils/fuses.d.ts +0 -21
- package/dist/esm/GqlManager.d.ts +0 -11
- package/dist/esm/GqlManager.js +0 -82
- package/dist/esm/contracts/baseRegistrar.js +0 -2
- 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.d.ts +0 -3
- 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.d.ts +0 -29
- package/dist/esm/functions/batchWrappers.js +0 -68
- package/dist/esm/functions/burnFuses.d.ts +0 -32
- package/dist/esm/functions/burnFuses.js +0 -41
- package/dist/esm/functions/commitName.d.ts +0 -26
- package/dist/esm/functions/commitName.js +0 -21
- package/dist/esm/functions/createSubname.d.ts +0 -17
- package/dist/esm/functions/createSubname.js +0 -36
- package/dist/esm/functions/deleteSubname.d.ts +0 -4
- package/dist/esm/functions/deleteSubname.js +0 -7
- package/dist/esm/functions/getDNSOwner.d.ts +0 -7
- package/dist/esm/functions/getDNSOwner.js +0 -51
- package/dist/esm/functions/getExpiry.d.ts +0 -19
- package/dist/esm/functions/getExpiry.js +0 -88
- package/dist/esm/functions/getFuses.d.ts +0 -17
- package/dist/esm/functions/getFuses.js +0 -42
- package/dist/esm/functions/getHistory.d.ts +0 -24
- package/dist/esm/functions/getHistory.js +0 -179
- 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.d.ts +0 -33
- package/dist/esm/functions/getProfile.js +0 -343
- package/dist/esm/functions/getRecords.d.ts +0 -33
- 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.d.ts +0 -73
- package/dist/esm/functions/getSpecificRecord.js +0 -272
- package/dist/esm/functions/getSubnames.d.ts +0 -26
- 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/registerName.d.ts +0 -11
- package/dist/esm/functions/registerName.js +0 -16
- package/dist/esm/functions/renewName.d.ts +0 -6
- package/dist/esm/functions/renewName.js +0 -7
- package/dist/esm/functions/setName.d.ts +0 -5
- package/dist/esm/functions/setName.js +0 -9
- package/dist/esm/functions/setRecord.js +0 -24
- package/dist/esm/functions/setRecords.d.ts +0 -6
- package/dist/esm/functions/setRecords.js +0 -21
- package/dist/esm/functions/setResolver.d.ts +0 -5
- package/dist/esm/functions/setResolver.js +0 -19
- package/dist/esm/functions/transferName.d.ts +0 -6
- package/dist/esm/functions/transferName.js +0 -26
- package/dist/esm/functions/transferSubname.d.ts +0 -15
- package/dist/esm/functions/transferSubname.js +0 -23
- package/dist/esm/functions/unwrapName.d.ts +0 -5
- package/dist/esm/functions/unwrapName.js +0 -20
- package/dist/esm/functions/wrapName.d.ts +0 -10
- package/dist/esm/functions/wrapName.js +0 -60
- package/dist/esm/generated/BaseRegistrarImplementation.d.ts +0 -508
- package/dist/esm/generated/BaseRegistrarImplementation.js +0 -1
- package/dist/esm/generated/DNSRegistrar.d.ts +0 -224
- package/dist/esm/generated/DNSRegistrar.js +0 -1
- package/dist/esm/generated/DNSSECImpl.d.ts +0 -402
- 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/ENSRegistry.d.ts +0 -274
- package/dist/esm/generated/ENSRegistry.js +0 -1
- package/dist/esm/generated/ETHRegistrarController.d.ts +0 -321
- package/dist/esm/generated/ETHRegistrarController.js +0 -1
- package/dist/esm/generated/Multicall.d.ts +0 -292
- package/dist/esm/generated/Multicall.js +0 -1
- package/dist/esm/generated/NameWrapper.d.ts +0 -814
- package/dist/esm/generated/NameWrapper.js +0 -1
- package/dist/esm/generated/P256SHA256Algorithm.d.ts +0 -76
- package/dist/esm/generated/P256SHA256Algorithm.js +0 -1
- package/dist/esm/generated/PublicResolver.d.ts +0 -566
- package/dist/esm/generated/PublicResolver.js +0 -1
- package/dist/esm/generated/RSASHA1Algorithm.d.ts +0 -46
- package/dist/esm/generated/RSASHA1Algorithm.js +0 -1
- package/dist/esm/generated/RSASHA256Algorithm.d.ts +0 -46
- package/dist/esm/generated/RSASHA256Algorithm.js +0 -1
- package/dist/esm/generated/ReverseRegistrar.d.ts +0 -268
- 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.d.ts +0 -76
- 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.d.ts +0 -42
- 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.d.ts +0 -22
- 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 -67
- package/dist/esm/generated/factories/DNSRegistrar__factory.js +0 -269
- package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +0 -56
- package/dist/esm/generated/factories/DNSSECImpl__factory.js +0 -474
- 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/ENSRegistry__factory.d.ts +0 -52
- package/dist/esm/generated/factories/ENSRegistry__factory.js +0 -435
- package/dist/esm/generated/factories/ETHRegistrarController__factory.d.ts +0 -66
- package/dist/esm/generated/factories/ETHRegistrarController__factory.js +0 -517
- 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 -1327
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +0 -22
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +0 -44
- 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 -22
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +0 -44
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +0 -22
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +0 -44
- 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 -22
- package/dist/esm/generated/factories/SHA1Digest__factory.js +0 -39
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +0 -22
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +0 -44
- package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +0 -22
- package/dist/esm/generated/factories/SHA256Digest__factory.js +0 -39
- 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 -22
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +0 -34
- 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 -20
- package/dist/esm/generated/factories/index.js +0 -23
- package/dist/esm/generated/index.d.ts +0 -41
- package/dist/esm/generated/index.js +0 -21
- package/dist/esm/index.js +0 -218
- 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 -21
- package/dist/esm/utils/fuses.js +0 -27
- 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 -96
- 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 -27
- package/dist/esm/utils/recordHelpers.d.ts +0 -16
- package/dist/esm/utils/recordHelpers.js +0 -65
- package/dist/esm/utils/registerHelpers.d.ts +0 -54
- package/dist/esm/utils/registerHelpers.js +0 -69
- 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/dist/esm/utils/wrapperExpiry.d.ts +0 -5
- package/dist/esm/utils/wrapperExpiry.js +0 -26
- package/dist/esm/utils/writeTx.d.ts +0 -21
- package/dist/esm/utils/writeTx.js +0 -4
|
@@ -3,13 +3,13 @@ import { ENS } from '..'
|
|
|
3
3
|
import setup from '../tests/setup'
|
|
4
4
|
import { namehash } from '../utils/normalise'
|
|
5
5
|
|
|
6
|
-
let
|
|
6
|
+
let ensInstance: ENS
|
|
7
7
|
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
8
8
|
let provider: ethers.providers.JsonRpcProvider
|
|
9
9
|
let accounts: string[]
|
|
10
10
|
|
|
11
11
|
beforeAll(async () => {
|
|
12
|
-
;({
|
|
12
|
+
;({ ensInstance, revert, provider } = await setup())
|
|
13
13
|
accounts = await provider.listAccounts()
|
|
14
14
|
})
|
|
15
15
|
|
|
@@ -22,7 +22,7 @@ describe('transferName', () => {
|
|
|
22
22
|
await revert()
|
|
23
23
|
})
|
|
24
24
|
it('should allow a transfer on the registrar', async () => {
|
|
25
|
-
const tx = await
|
|
25
|
+
const tx = await ensInstance.transferName('test123.eth', {
|
|
26
26
|
contract: 'baseRegistrar',
|
|
27
27
|
newOwner: accounts[2],
|
|
28
28
|
addressOrIndex: 1,
|
|
@@ -30,14 +30,14 @@ describe('transferName', () => {
|
|
|
30
30
|
expect(tx).toBeTruthy()
|
|
31
31
|
await tx.wait()
|
|
32
32
|
|
|
33
|
-
const baseRegistrar = await
|
|
33
|
+
const baseRegistrar = await ensInstance.contracts!.getBaseRegistrar()!
|
|
34
34
|
const result = await baseRegistrar.ownerOf(
|
|
35
35
|
utils.solidityKeccak256(['string'], ['test123']),
|
|
36
36
|
)
|
|
37
37
|
expect(result).toBe(accounts[2])
|
|
38
38
|
})
|
|
39
39
|
it('should allow a transfer on the namewrapper', async () => {
|
|
40
|
-
const tx = await
|
|
40
|
+
const tx = await ensInstance.transferName('wrapped.eth', {
|
|
41
41
|
newOwner: accounts[2],
|
|
42
42
|
contract: 'nameWrapper',
|
|
43
43
|
addressOrIndex: 1,
|
|
@@ -45,12 +45,12 @@ describe('transferName', () => {
|
|
|
45
45
|
expect(tx).toBeTruthy()
|
|
46
46
|
await tx.wait()
|
|
47
47
|
|
|
48
|
-
const nameWrapper = await
|
|
48
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
49
49
|
const result = await nameWrapper.ownerOf(namehash('wrapped.eth'))
|
|
50
50
|
expect(result).toBe(accounts[2])
|
|
51
51
|
})
|
|
52
52
|
it('should allow a transfer on the registry', async () => {
|
|
53
|
-
const tx = await
|
|
53
|
+
const tx = await ensInstance.transferName('test.with-subnames.eth', {
|
|
54
54
|
newOwner: accounts[1],
|
|
55
55
|
contract: 'registry',
|
|
56
56
|
addressOrIndex: accounts[2],
|
|
@@ -58,7 +58,7 @@ describe('transferName', () => {
|
|
|
58
58
|
expect(tx).toBeTruthy()
|
|
59
59
|
await tx.wait()
|
|
60
60
|
|
|
61
|
-
const registry = await
|
|
61
|
+
const registry = await ensInstance.contracts!.getRegistry()!
|
|
62
62
|
const result = await registry.owner(namehash('test.with-subnames.eth'))
|
|
63
63
|
expect(result).toBe(accounts[1])
|
|
64
64
|
})
|
|
@@ -3,13 +3,13 @@ import { ENS } from '..'
|
|
|
3
3
|
import setup from '../tests/setup'
|
|
4
4
|
import { namehash } from '../utils/normalise'
|
|
5
5
|
|
|
6
|
-
let
|
|
6
|
+
let ensInstance: ENS
|
|
7
7
|
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
8
8
|
let provider: ethers.providers.JsonRpcProvider
|
|
9
9
|
let accounts: string[]
|
|
10
10
|
|
|
11
11
|
beforeAll(async () => {
|
|
12
|
-
;({
|
|
12
|
+
;({ ensInstance, revert, provider } = await setup())
|
|
13
13
|
accounts = await provider.listAccounts()
|
|
14
14
|
})
|
|
15
15
|
|
|
@@ -22,7 +22,7 @@ describe('transferSubname', () => {
|
|
|
22
22
|
await revert()
|
|
23
23
|
})
|
|
24
24
|
it('should allow transferring a subname on the registry', async () => {
|
|
25
|
-
const tx = await
|
|
25
|
+
const tx = await ensInstance.transferSubname('test.with-subnames.eth', {
|
|
26
26
|
contract: 'registry',
|
|
27
27
|
owner: accounts[1],
|
|
28
28
|
addressOrIndex: 1,
|
|
@@ -30,12 +30,12 @@ describe('transferSubname', () => {
|
|
|
30
30
|
expect(tx).toBeTruthy()
|
|
31
31
|
await tx.wait()
|
|
32
32
|
|
|
33
|
-
const registry = await
|
|
33
|
+
const registry = await ensInstance.contracts!.getRegistry()!
|
|
34
34
|
const result = await registry.owner(namehash('test.with-subnames.eth'))
|
|
35
35
|
expect(result).toBe(accounts[1])
|
|
36
36
|
})
|
|
37
37
|
it('should allow transferring a subname on the nameWrapper', async () => {
|
|
38
|
-
const tx = await
|
|
38
|
+
const tx = await ensInstance.transferSubname(
|
|
39
39
|
'test.wrapped-with-subnames.eth',
|
|
40
40
|
{
|
|
41
41
|
contract: 'nameWrapper',
|
|
@@ -46,7 +46,7 @@ describe('transferSubname', () => {
|
|
|
46
46
|
expect(tx).toBeTruthy()
|
|
47
47
|
await tx.wait()
|
|
48
48
|
|
|
49
|
-
const nameWrapper = await
|
|
49
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
50
50
|
const result = await nameWrapper.ownerOf(
|
|
51
51
|
namehash('test.wrapped-with-subnames.eth'),
|
|
52
52
|
)
|
|
@@ -32,7 +32,7 @@ export default async function (
|
|
|
32
32
|
|
|
33
33
|
switch (contract) {
|
|
34
34
|
case 'registry': {
|
|
35
|
-
const registry = (await contracts
|
|
35
|
+
const registry = (await contracts!.getRegistry()!).connect(signer)
|
|
36
36
|
|
|
37
37
|
return registry.populateTransaction.setSubnodeOwner(
|
|
38
38
|
parentNodehash,
|
|
@@ -41,7 +41,7 @@ export default async function (
|
|
|
41
41
|
)
|
|
42
42
|
}
|
|
43
43
|
case 'nameWrapper': {
|
|
44
|
-
const nameWrapper = (await contracts
|
|
44
|
+
const nameWrapper = (await contracts!.getNameWrapper()!).connect(signer)
|
|
45
45
|
const expiry = await makeExpiry(
|
|
46
46
|
{ getExpiry },
|
|
47
47
|
labels.join('.'),
|
|
@@ -3,13 +3,13 @@ import { ENS } from '..'
|
|
|
3
3
|
import setup from '../tests/setup'
|
|
4
4
|
import { namehash } from '../utils/normalise'
|
|
5
5
|
|
|
6
|
-
let
|
|
6
|
+
let ensInstance: ENS
|
|
7
7
|
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
8
8
|
let provider: ethers.providers.JsonRpcProvider
|
|
9
9
|
let accounts: string[]
|
|
10
10
|
|
|
11
11
|
beforeAll(async () => {
|
|
12
|
-
;({
|
|
12
|
+
;({ ensInstance, revert, provider } = await setup())
|
|
13
13
|
accounts = await provider.listAccounts()
|
|
14
14
|
})
|
|
15
15
|
|
|
@@ -22,7 +22,7 @@ describe('unwrapName', () => {
|
|
|
22
22
|
await revert()
|
|
23
23
|
})
|
|
24
24
|
it('should return a .eth unwrap name transaction and succeed', async () => {
|
|
25
|
-
const tx = await
|
|
25
|
+
const tx = await ensInstance.unwrapName('wrapped.eth', {
|
|
26
26
|
newController: accounts[1],
|
|
27
27
|
newRegistrant: accounts[1],
|
|
28
28
|
addressOrIndex: 1,
|
|
@@ -30,21 +30,21 @@ describe('unwrapName', () => {
|
|
|
30
30
|
expect(tx).toBeTruthy()
|
|
31
31
|
await tx.wait()
|
|
32
32
|
|
|
33
|
-
const baseRegistrar = await
|
|
33
|
+
const baseRegistrar = await ensInstance.contracts!.getBaseRegistrar()!
|
|
34
34
|
const result = await baseRegistrar.ownerOf(
|
|
35
35
|
utils.solidityKeccak256(['string'], ['wrapped']),
|
|
36
36
|
)
|
|
37
37
|
expect(result).toBe(accounts[1])
|
|
38
38
|
})
|
|
39
39
|
it('should return a regular unwrap name transaction and succeed', async () => {
|
|
40
|
-
const tx = await
|
|
40
|
+
const tx = await ensInstance.unwrapName('test.wrapped-with-subnames.eth', {
|
|
41
41
|
newController: accounts[1],
|
|
42
42
|
addressOrIndex: 2,
|
|
43
43
|
})
|
|
44
44
|
expect(tx).toBeTruthy()
|
|
45
45
|
await tx.wait()
|
|
46
46
|
|
|
47
|
-
const registry = await
|
|
47
|
+
const registry = await ensInstance.contracts!.getRegistry()!
|
|
48
48
|
const result = await registry.owner(
|
|
49
49
|
namehash('test.wrapped-with-subnames.eth'),
|
|
50
50
|
)
|
|
@@ -17,7 +17,7 @@ export default async function (
|
|
|
17
17
|
const labelhash = utils.solidityKeccak256(['string'], [labels[0]])
|
|
18
18
|
const parentNodehash = namehash(labels.slice(1).join('.'))
|
|
19
19
|
|
|
20
|
-
const nameWrapper = (await contracts
|
|
20
|
+
const nameWrapper = (await contracts!.getNameWrapper()!).connect(signer)
|
|
21
21
|
|
|
22
22
|
if (labels.length === 2 && labels[1] === 'eth') {
|
|
23
23
|
if (!newRegistrant) {
|
|
@@ -29,15 +29,14 @@ export default async function (
|
|
|
29
29
|
newRegistrant,
|
|
30
30
|
newController,
|
|
31
31
|
)
|
|
32
|
-
} else {
|
|
33
|
-
if (newRegistrant) {
|
|
34
|
-
throw new Error('newRegistrant can only be specified for .eth names')
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return nameWrapper.populateTransaction.unwrap(
|
|
38
|
-
parentNodehash,
|
|
39
|
-
labelhash,
|
|
40
|
-
newController,
|
|
41
|
-
)
|
|
42
32
|
}
|
|
33
|
+
if (newRegistrant) {
|
|
34
|
+
throw new Error('newRegistrant can only be specified for .eth names')
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return nameWrapper.populateTransaction.unwrap(
|
|
38
|
+
parentNodehash,
|
|
39
|
+
labelhash,
|
|
40
|
+
newController,
|
|
41
|
+
)
|
|
43
42
|
}
|
|
@@ -4,14 +4,13 @@ import setup from '../tests/setup'
|
|
|
4
4
|
import { hexEncodeName } from '../utils/hexEncodedName'
|
|
5
5
|
import { namehash } from '../utils/normalise'
|
|
6
6
|
|
|
7
|
-
let
|
|
7
|
+
let ensInstance: ENS
|
|
8
8
|
let revert: Awaited<ReturnType<typeof setup>>['revert']
|
|
9
|
-
let createSnapshot: Awaited<ReturnType<typeof setup>>['createSnapshot']
|
|
10
9
|
let provider: ethers.providers.JsonRpcProvider
|
|
11
10
|
let accounts: string[]
|
|
12
11
|
|
|
13
12
|
beforeAll(async () => {
|
|
14
|
-
;({
|
|
13
|
+
;({ ensInstance, revert, provider } = await setup())
|
|
15
14
|
accounts = await provider.listAccounts()
|
|
16
15
|
})
|
|
17
16
|
|
|
@@ -20,8 +19,8 @@ afterAll(async () => {
|
|
|
20
19
|
})
|
|
21
20
|
|
|
22
21
|
const approve = async () => {
|
|
23
|
-
const nameWrapper = await
|
|
24
|
-
const registry = (await
|
|
22
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
23
|
+
const registry = (await ensInstance.contracts!.getRegistry()!).connect(
|
|
25
24
|
provider.getSigner(2),
|
|
26
25
|
)
|
|
27
26
|
const setApprovedForAllTx = await registry.setApprovalForAll(
|
|
@@ -37,21 +36,21 @@ describe('wrapName', () => {
|
|
|
37
36
|
})
|
|
38
37
|
describe('.eth', () => {
|
|
39
38
|
it('should return a wrap name transaction and succeed', async () => {
|
|
40
|
-
const tx = await
|
|
39
|
+
const tx = await ensInstance.wrapName('test123.eth', {
|
|
41
40
|
wrappedOwner: accounts[2],
|
|
42
41
|
addressOrIndex: 1,
|
|
43
42
|
})
|
|
44
43
|
expect(tx).toBeTruthy()
|
|
45
44
|
await tx.wait()
|
|
46
45
|
|
|
47
|
-
const nameWrapper = await
|
|
46
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
48
47
|
const [fuses] = await nameWrapper.getFuses(namehash('test123.eth'))
|
|
49
48
|
|
|
50
49
|
// parent cannot control
|
|
51
50
|
expect(fuses).toBe(64)
|
|
52
51
|
})
|
|
53
52
|
it('should allow initial fuses', async () => {
|
|
54
|
-
const tx = await
|
|
53
|
+
const tx = await ensInstance.wrapName('test123.eth', {
|
|
55
54
|
wrappedOwner: accounts[2],
|
|
56
55
|
fuseOptions: {
|
|
57
56
|
cannotUnwrap: true,
|
|
@@ -62,12 +61,12 @@ describe('wrapName', () => {
|
|
|
62
61
|
expect(tx).toBeTruthy()
|
|
63
62
|
await tx.wait()
|
|
64
63
|
|
|
65
|
-
const nameWrapper = await
|
|
64
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
66
65
|
const [fuses] = await nameWrapper.getFuses(namehash('test123.eth'))
|
|
67
66
|
expect(fuses).toBe(81)
|
|
68
67
|
})
|
|
69
68
|
it('should allow an initial resolver address', async () => {
|
|
70
|
-
const tx = await
|
|
69
|
+
const tx = await ensInstance.wrapName('test123.eth', {
|
|
71
70
|
wrappedOwner: accounts[2],
|
|
72
71
|
resolverAddress: '0x42D63ae25990889E35F215bC95884039Ba354115',
|
|
73
72
|
addressOrIndex: 1,
|
|
@@ -76,7 +75,7 @@ describe('wrapName', () => {
|
|
|
76
75
|
await tx.wait()
|
|
77
76
|
|
|
78
77
|
const universalResolver =
|
|
79
|
-
await
|
|
78
|
+
await ensInstance.contracts!.getUniversalResolver()!
|
|
80
79
|
const [result] = await universalResolver.findResolver(
|
|
81
80
|
hexEncodeName('test123.eth'),
|
|
82
81
|
)
|
|
@@ -87,14 +86,14 @@ describe('wrapName', () => {
|
|
|
87
86
|
it('should return a wrap name transaction and succeed', async () => {
|
|
88
87
|
await approve()
|
|
89
88
|
|
|
90
|
-
const tx = await
|
|
89
|
+
const tx = await ensInstance.wrapName('test.with-subnames.eth', {
|
|
91
90
|
wrappedOwner: accounts[2],
|
|
92
91
|
addressOrIndex: 2,
|
|
93
92
|
})
|
|
94
93
|
expect(tx).toBeTruthy()
|
|
95
94
|
await tx.wait()
|
|
96
95
|
|
|
97
|
-
const nameWrapper = await
|
|
96
|
+
const nameWrapper = await ensInstance.contracts!.getNameWrapper()!
|
|
98
97
|
const [fuses] = await nameWrapper.getFuses(
|
|
99
98
|
namehash('test.with-subnames.eth'),
|
|
100
99
|
)
|
|
@@ -103,7 +102,7 @@ describe('wrapName', () => {
|
|
|
103
102
|
})
|
|
104
103
|
it('should allow an initial resolver address', async () => {
|
|
105
104
|
await approve()
|
|
106
|
-
const tx = await
|
|
105
|
+
const tx = await ensInstance.wrapName('test.with-subnames.eth', {
|
|
107
106
|
wrappedOwner: accounts[2],
|
|
108
107
|
resolverAddress: '0x42D63ae25990889E35F215bC95884039Ba354115',
|
|
109
108
|
addressOrIndex: 2,
|
|
@@ -112,7 +111,7 @@ describe('wrapName', () => {
|
|
|
112
111
|
await tx.wait()
|
|
113
112
|
|
|
114
113
|
const universalResolver =
|
|
115
|
-
await
|
|
114
|
+
await ensInstance.contracts!.getUniversalResolver()!
|
|
116
115
|
const [result] = await universalResolver.findResolver(
|
|
117
116
|
hexEncodeName('test.with-subnames.eth'),
|
|
118
117
|
)
|
|
@@ -120,7 +119,7 @@ describe('wrapName', () => {
|
|
|
120
119
|
})
|
|
121
120
|
it('should throw an error if contract does not have approval', async () => {
|
|
122
121
|
await expect(
|
|
123
|
-
|
|
122
|
+
ensInstance.wrapName('test.with-subnames.eth', {
|
|
124
123
|
wrappedOwner: accounts[2],
|
|
125
124
|
addressOrIndex: 2,
|
|
126
125
|
}),
|
|
@@ -128,7 +127,7 @@ describe('wrapName', () => {
|
|
|
128
127
|
})
|
|
129
128
|
it('should throw an error if initial fuses are provided', async () => {
|
|
130
129
|
await expect(
|
|
131
|
-
|
|
130
|
+
ensInstance.wrapName('test.with-subnames.eth', {
|
|
132
131
|
wrappedOwner: accounts[2],
|
|
133
132
|
fuseOptions: {
|
|
134
133
|
cannotUnwrap: true,
|
|
@@ -16,7 +16,7 @@ async function wrapETH(
|
|
|
16
16
|
address: string,
|
|
17
17
|
) {
|
|
18
18
|
const nameWrapper = await contracts?.getNameWrapper()!
|
|
19
|
-
const baseRegistrar = (await contracts
|
|
19
|
+
const baseRegistrar = (await contracts!.getBaseRegistrar()!).connect(signer)
|
|
20
20
|
|
|
21
21
|
const labelhash = ethers.utils.solidityKeccak256(['string'], [labels[0]])
|
|
22
22
|
|
|
@@ -38,7 +38,7 @@ async function wrapOther(
|
|
|
38
38
|
address: string,
|
|
39
39
|
signer: ethers.Signer,
|
|
40
40
|
) {
|
|
41
|
-
const nameWrapper = (await contracts
|
|
41
|
+
const nameWrapper = (await contracts!.getNameWrapper()!).connect(signer)
|
|
42
42
|
const registry = await contracts?.getRegistry()!
|
|
43
43
|
|
|
44
44
|
const hasApproval = await registry.isApprovedForAll(
|
|
@@ -121,22 +121,21 @@ export default async function (
|
|
|
121
121
|
signer,
|
|
122
122
|
address,
|
|
123
123
|
)
|
|
124
|
-
} else {
|
|
125
|
-
if (fuseOptions)
|
|
126
|
-
throw new Error(
|
|
127
|
-
'Fuses can not be initially set when wrapping a non .eth name',
|
|
128
|
-
)
|
|
129
|
-
if (expiry)
|
|
130
|
-
throw new Error(
|
|
131
|
-
'Expiry can not be initially set when wrapping a non .eth name',
|
|
132
|
-
)
|
|
133
|
-
return wrapOther(
|
|
134
|
-
{ contracts },
|
|
135
|
-
name,
|
|
136
|
-
wrappedOwner,
|
|
137
|
-
resolverAddress,
|
|
138
|
-
address,
|
|
139
|
-
signer,
|
|
140
|
-
)
|
|
141
124
|
}
|
|
125
|
+
if (fuseOptions)
|
|
126
|
+
throw new Error(
|
|
127
|
+
'Fuses can not be initially set when wrapping a non .eth name',
|
|
128
|
+
)
|
|
129
|
+
if (expiry)
|
|
130
|
+
throw new Error(
|
|
131
|
+
'Expiry can not be initially set when wrapping a non .eth name',
|
|
132
|
+
)
|
|
133
|
+
return wrapOther(
|
|
134
|
+
{ contracts },
|
|
135
|
+
name,
|
|
136
|
+
wrappedOwner,
|
|
137
|
+
resolverAddress,
|
|
138
|
+
address,
|
|
139
|
+
signer,
|
|
140
|
+
)
|
|
142
141
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { JsonRpcSigner } from '@ethersproject/providers'
|
|
1
|
+
import type { JsonRpcSigner } from '@ethersproject/providers'
|
|
2
2
|
import { ContractTransaction, ethers, PopulatedTransaction } from 'ethers'
|
|
3
|
-
import ContractManager from './contracts'
|
|
4
3
|
import { getContractAddress as _getContractAddress } from './contracts/getContractAddress'
|
|
4
|
+
import ContractManager from './contracts/index'
|
|
5
5
|
import { SupportedNetworkId } from './contracts/types'
|
|
6
6
|
import type batch from './functions/batch'
|
|
7
7
|
import type {
|
|
@@ -33,8 +33,8 @@ import type {
|
|
|
33
33
|
_getText,
|
|
34
34
|
} from './functions/getSpecificRecord'
|
|
35
35
|
import type getSubnames from './functions/getSubnames'
|
|
36
|
-
import registerName from './functions/registerName'
|
|
37
|
-
import renewName from './functions/renewName'
|
|
36
|
+
import type registerName from './functions/registerName'
|
|
37
|
+
import type renewName from './functions/renewName'
|
|
38
38
|
import type setName from './functions/setName'
|
|
39
39
|
import type setRecord from './functions/setRecord'
|
|
40
40
|
import type setRecords from './functions/setRecords'
|
|
@@ -46,7 +46,15 @@ import type wrapName from './functions/wrapName'
|
|
|
46
46
|
import GqlManager from './GqlManager'
|
|
47
47
|
import singleCall from './utils/singleCall'
|
|
48
48
|
import writeTx from './utils/writeTx'
|
|
49
|
-
|
|
49
|
+
|
|
50
|
+
export type {
|
|
51
|
+
Fuse,
|
|
52
|
+
FuseArrayPossibilities,
|
|
53
|
+
FuseObj,
|
|
54
|
+
NamedFusesToBurn,
|
|
55
|
+
UnnamedFuseType,
|
|
56
|
+
UnnamedFuseValues,
|
|
57
|
+
} from './utils/fuses'
|
|
50
58
|
|
|
51
59
|
type ENSOptions = {
|
|
52
60
|
graphURI?: string | null
|
|
@@ -106,12 +114,14 @@ interface WriteFunction<F extends (...args: any) => any> extends Function {
|
|
|
106
114
|
) => Promise<PopulatedTransaction>
|
|
107
115
|
}
|
|
108
116
|
|
|
117
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
109
118
|
const graphURIEndpoints: Record<string, string> = {
|
|
110
119
|
1: 'https://api.thegraph.com/subgraphs/name/ensdomains/ens',
|
|
111
120
|
3: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensropsten',
|
|
112
121
|
4: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensrinkeby',
|
|
113
122
|
5: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensgoerli',
|
|
114
123
|
}
|
|
124
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
115
125
|
|
|
116
126
|
export type RawFunction = {
|
|
117
127
|
raw: (...args: any[]) => Promise<{ to: string; data: string }>
|
|
@@ -151,14 +161,20 @@ export interface GenericGeneratedRawFunction
|
|
|
151
161
|
|
|
152
162
|
export class ENS {
|
|
153
163
|
[x: string]: any
|
|
164
|
+
|
|
154
165
|
protected options?: ENSOptions
|
|
166
|
+
|
|
155
167
|
protected provider?: ethers.providers.JsonRpcProvider
|
|
168
|
+
|
|
156
169
|
protected graphURI?: string | null
|
|
170
|
+
|
|
157
171
|
protected initialProvider?: ethers.providers.JsonRpcProvider
|
|
172
|
+
|
|
158
173
|
contracts?: ContractManager
|
|
174
|
+
|
|
159
175
|
getContractAddress = _getContractAddress
|
|
176
|
+
|
|
160
177
|
gqlInstance = new GqlManager()
|
|
161
|
-
fuses = fuseEnum
|
|
162
178
|
|
|
163
179
|
constructor(options?: ENSOptions) {
|
|
164
180
|
this.options = options
|
|
@@ -174,7 +190,6 @@ export class ENS {
|
|
|
174
190
|
return
|
|
175
191
|
}
|
|
176
192
|
await this.setProvider(this.initialProvider)
|
|
177
|
-
return
|
|
178
193
|
}
|
|
179
194
|
|
|
180
195
|
/**
|
|
@@ -259,20 +274,19 @@ export class ENS {
|
|
|
259
274
|
|
|
260
275
|
// return the function with the dependencies forwarded
|
|
261
276
|
return func(dependenciesToForward, ...args)
|
|
262
|
-
} else {
|
|
263
|
-
// get the dependencies to forward from raw and decode functions
|
|
264
|
-
const dependenciesToForward = thisRef.forwardDependenciesFromArray<
|
|
265
|
-
CombineFunctionDeps<F>
|
|
266
|
-
>(dependencies as any)
|
|
267
|
-
|
|
268
|
-
// return singleCall function with dependencies forwarded
|
|
269
|
-
return singleCall(
|
|
270
|
-
thisRef.provider!,
|
|
271
|
-
dependenciesToForward,
|
|
272
|
-
mod[exportName],
|
|
273
|
-
...args,
|
|
274
|
-
)
|
|
275
277
|
}
|
|
278
|
+
// get the dependencies to forward from raw and decode functions
|
|
279
|
+
const dependenciesToForward = thisRef.forwardDependenciesFromArray<
|
|
280
|
+
CombineFunctionDeps<F>
|
|
281
|
+
>(dependencies as any)
|
|
282
|
+
|
|
283
|
+
// return singleCall function with dependencies forwarded
|
|
284
|
+
return singleCall(
|
|
285
|
+
thisRef.provider!,
|
|
286
|
+
dependenciesToForward,
|
|
287
|
+
mod[exportName],
|
|
288
|
+
...args,
|
|
289
|
+
)
|
|
276
290
|
}
|
|
277
291
|
|
|
278
292
|
// if subfunc is combine, add raw and decode property methods to the function
|
|
@@ -380,7 +394,6 @@ export class ENS {
|
|
|
380
394
|
this.provider,
|
|
381
395
|
this.getContractAddress(String(network) as SupportedNetworkId),
|
|
382
396
|
)
|
|
383
|
-
return
|
|
384
397
|
}
|
|
385
398
|
|
|
386
399
|
/**
|
package/src/utils/contentHash.ts
CHANGED
|
@@ -26,13 +26,16 @@ function matchProtocol(text: string) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
export function decodeContenthash(encoded: any) {
|
|
29
|
-
let decoded
|
|
29
|
+
let decoded
|
|
30
|
+
let protocolType
|
|
31
|
+
let error
|
|
30
32
|
if (!encoded || encoded === '0x') {
|
|
31
33
|
return {}
|
|
32
34
|
}
|
|
33
35
|
if (encoded.error) {
|
|
34
36
|
return { protocolType: null, decoded: encoded.error }
|
|
35
|
-
}
|
|
37
|
+
}
|
|
38
|
+
if (encoded === false) {
|
|
36
39
|
return { protocolType: null, decoded: 'invalid value' }
|
|
37
40
|
}
|
|
38
41
|
if (encoded) {
|
|
@@ -80,12 +83,12 @@ export function isValidContenthash(encoded: any) {
|
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
export function getProtocolType(encoded: any) {
|
|
83
|
-
let protocolType
|
|
86
|
+
let protocolType
|
|
87
|
+
let decoded
|
|
84
88
|
try {
|
|
85
|
-
|
|
89
|
+
const matched = matchProtocol(encoded)
|
|
86
90
|
if (matched) {
|
|
87
|
-
protocolType = matched
|
|
88
|
-
decoded = matched[2]
|
|
91
|
+
;[, protocolType, decoded] = matched
|
|
89
92
|
}
|
|
90
93
|
return {
|
|
91
94
|
protocolType,
|
|
@@ -101,38 +104,37 @@ export function encodeContenthash(text: string) {
|
|
|
101
104
|
let contentType
|
|
102
105
|
let encoded: string | boolean = false
|
|
103
106
|
let error
|
|
104
|
-
if (
|
|
105
|
-
|
|
107
|
+
if (text) {
|
|
108
|
+
const matched = matchProtocol(text)
|
|
106
109
|
if (matched) {
|
|
107
|
-
contentType = matched
|
|
108
|
-
content = matched[2]
|
|
110
|
+
;[, contentType, content] = matched
|
|
109
111
|
}
|
|
110
112
|
try {
|
|
111
113
|
if (contentType === 'ipfs') {
|
|
112
114
|
if (content.length >= 4) {
|
|
113
|
-
encoded =
|
|
115
|
+
encoded = `0x${contentHash.encode('ipfs-ns', content)}`
|
|
114
116
|
}
|
|
115
117
|
} else if (contentType === 'ipns') {
|
|
116
|
-
encoded =
|
|
118
|
+
encoded = `0x${contentHash.encode('ipns-ns', content)}`
|
|
117
119
|
} else if (contentType === 'bzz') {
|
|
118
120
|
if (content.length >= 4) {
|
|
119
|
-
encoded =
|
|
121
|
+
encoded = `0x${contentHash.fromSwarm(content)}`
|
|
120
122
|
}
|
|
121
123
|
} else if (contentType === 'onion') {
|
|
122
|
-
if (content.length
|
|
123
|
-
encoded =
|
|
124
|
+
if (content.length === 16) {
|
|
125
|
+
encoded = `0x${contentHash.encode('onion', content)}`
|
|
124
126
|
}
|
|
125
127
|
} else if (contentType === 'onion3') {
|
|
126
|
-
if (content.length
|
|
127
|
-
encoded =
|
|
128
|
+
if (content.length === 56) {
|
|
129
|
+
encoded = `0x${contentHash.encode('onion3', content)}`
|
|
128
130
|
}
|
|
129
131
|
} else if (contentType === 'sia') {
|
|
130
|
-
if (content.length
|
|
131
|
-
encoded =
|
|
132
|
+
if (content.length === 46) {
|
|
133
|
+
encoded = `0x${contentHash.encode('skynet-ns', content)}`
|
|
132
134
|
}
|
|
133
135
|
} else if (contentType === 'arweave') {
|
|
134
|
-
if (content.length
|
|
135
|
-
encoded =
|
|
136
|
+
if (content.length === 43) {
|
|
137
|
+
encoded = `0x${contentHash.encode('arweave-ns', content)}`
|
|
136
138
|
}
|
|
137
139
|
} else {
|
|
138
140
|
console.warn('Unsupported protocol or invalid value', {
|
|
@@ -144,7 +146,7 @@ export function encodeContenthash(text: string) {
|
|
|
144
146
|
const errorMessage = 'Error encoding content hash'
|
|
145
147
|
console.warn(errorMessage, { text, encoded })
|
|
146
148
|
error = errorMessage
|
|
147
|
-
//throw 'Error encoding content hash'
|
|
149
|
+
// throw 'Error encoding content hash'
|
|
148
150
|
}
|
|
149
151
|
}
|
|
150
152
|
return { encoded, error }
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export default (address: string) =>
|
|
2
|
-
address.toLowerCase().substring(2)
|
|
2
|
+
`${address.toLowerCase().substring(2)}.addr.reverse`
|
package/src/utils/fuses.ts
CHANGED
|
@@ -28,4 +28,43 @@ const fullFuseEnum = {
|
|
|
28
28
|
CAN_DO_EVERYTHING,
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
export type FuseObj = typeof fuseEnum
|
|
32
|
+
export type UnnamedFuseType = typeof unnamedFuses
|
|
33
|
+
export type Fuse = keyof FuseObj
|
|
34
|
+
export type UnnamedFuseValues = UnnamedFuseType[number]
|
|
35
|
+
|
|
36
|
+
// We need this type so that the following type isn't infinite. This type limits the max length of the fuse array to 7.
|
|
37
|
+
export type FuseArrayPossibilities =
|
|
38
|
+
| [Fuse]
|
|
39
|
+
| [Fuse, Fuse]
|
|
40
|
+
| [Fuse, Fuse, Fuse]
|
|
41
|
+
| [Fuse, Fuse, Fuse, Fuse]
|
|
42
|
+
| [Fuse, Fuse, Fuse, Fuse, Fuse]
|
|
43
|
+
| [Fuse, Fuse, Fuse, Fuse, Fuse, Fuse]
|
|
44
|
+
| [Fuse, Fuse, Fuse, Fuse, Fuse, Fuse, Fuse]
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* This type creates a type error if there are any duplicate fuses.
|
|
48
|
+
* It effectively works like a reduce function, starting with 0 included types, adding a type each time, and then checking for duplicates.
|
|
49
|
+
*
|
|
50
|
+
* @template A The array to check for duplicates.
|
|
51
|
+
* @template B The union of all checked existing types.
|
|
52
|
+
*/
|
|
53
|
+
// CLAUSE A: This extension unwraps the type as a fuse tuple.
|
|
54
|
+
type FusesWithoutDuplicates<A, B = never> = A extends FuseArrayPossibilities
|
|
55
|
+
? // CLAUSE A > TRUE: CLAUSE B: Pick out the first item in the current array, separating the current item from the rest.
|
|
56
|
+
A extends [infer Head, ...infer Tail]
|
|
57
|
+
? // CLAUSE B > TRUE: CLAUSE C: Check if the current item is a duplicate based on the input union.
|
|
58
|
+
Head extends B
|
|
59
|
+
? // CLAUSE C > TRUE: Duplicate found, return an empty array to throw a type error.
|
|
60
|
+
[]
|
|
61
|
+
: // CLAUSE C > FALSE: Return a new array to continue the recursion, adds the current item type to the union.
|
|
62
|
+
[Head, ...FusesWithoutDuplicates<Tail, Head | B>]
|
|
63
|
+
: // CLAUSE B > FALSE: Return the input array as there is no more array elements to check.
|
|
64
|
+
A
|
|
65
|
+
: // CLAUSE A > FALSE: Return an empty array as it isn't a fuse tuple.
|
|
66
|
+
[]
|
|
67
|
+
|
|
68
|
+
export type NamedFusesToBurn = FusesWithoutDuplicates<FuseArrayPossibilities>
|
|
69
|
+
|
|
31
70
|
export default fullFuseEnum
|
package/src/utils/normalise.ts
CHANGED
|
@@ -14,7 +14,7 @@ export const namehash = (name: string): string => {
|
|
|
14
14
|
if (name) {
|
|
15
15
|
const labels = name.split('.')
|
|
16
16
|
|
|
17
|
-
for (
|
|
17
|
+
for (let i = labels.length - 1; i >= 0; i -= 1) {
|
|
18
18
|
let labelSha: string
|
|
19
19
|
if (isEncodedLabelhash(labels[i])) {
|
|
20
20
|
labelSha = decodeLabelhash(labels[i])
|