@ensdomains/ensjs 3.0.0-alpha.41 → 3.0.0-alpha.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/contracts/getContractAddress.js +4 -4
- package/dist/cjs/functions/commitName.js +2 -3
- package/dist/cjs/functions/createSubname.js +2 -8
- package/dist/cjs/functions/getDecryptedName.js +111 -0
- package/dist/cjs/functions/getHistory.js +14 -7
- package/dist/cjs/functions/getNames.js +10 -6
- package/dist/cjs/functions/getOwner.js +28 -15
- package/dist/cjs/functions/getPrice.js +6 -6
- package/dist/cjs/functions/getProfile.js +11 -5
- package/dist/cjs/functions/getWrapperData.js +4 -5
- package/dist/cjs/functions/renewNames.js +13 -20
- package/dist/cjs/functions/{burnFuses.js → setFuses.js} +24 -6
- package/dist/cjs/functions/wrapName.js +9 -25
- package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +2 -2
- package/dist/cjs/generated/factories/BulkRenewal__factory.js +2 -2
- package/dist/cjs/generated/factories/DNSRegistrar__factory.js +2 -2
- package/dist/cjs/generated/factories/DNSSECImpl__factory.js +2 -2
- package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +2 -2
- package/dist/cjs/generated/factories/ENSRegistry__factory.js +2 -2
- package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +8 -57
- package/dist/cjs/generated/factories/Multicall__factory.js +2 -2
- package/dist/cjs/generated/factories/NameWrapper__factory.js +92 -71
- package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +2 -2
- package/dist/cjs/generated/factories/PublicResolver__factory.js +85 -2
- package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +2 -2
- package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +2 -2
- package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +2 -2
- package/dist/cjs/generated/factories/Root__factory.js +2 -2
- package/dist/cjs/generated/factories/SHA1Digest__factory.js +2 -2
- package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +2 -2
- package/dist/cjs/generated/factories/SHA256Digest__factory.js +2 -2
- package/dist/cjs/generated/factories/StaticMetadataService__factory.js +2 -2
- package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +2 -2
- package/dist/cjs/generated/factories/UniversalResolver__factory.js +69 -4
- package/dist/cjs/index.js +6 -4
- package/dist/cjs/utils/ccip.js +3 -3
- package/dist/cjs/utils/consts.js +3 -1
- package/dist/cjs/utils/fuses.js +218 -53
- package/dist/cjs/utils/hexEncodedName.js +2 -0
- package/dist/cjs/utils/labels.js +14 -8
- package/dist/cjs/utils/normalise.js +2 -2
- package/dist/cjs/utils/recordHelpers.js +4 -3
- package/dist/cjs/utils/registerHelpers.js +11 -25
- package/dist/cjs/utils/subgraph-types.js +16 -0
- package/dist/cjs/utils/wrapper.js +3 -3
- package/dist/esm/contracts/getContractAddress.mjs +4 -4
- package/dist/esm/functions/commitName.mjs +2 -3
- package/dist/esm/functions/createSubname.mjs +2 -2
- package/dist/esm/functions/getDecryptedName.mjs +96 -0
- package/dist/esm/functions/getHistory.mjs +14 -7
- package/dist/esm/functions/getNames.mjs +10 -6
- package/dist/esm/functions/getOwner.mjs +26 -13
- package/dist/esm/functions/getPrice.mjs +2 -2
- package/dist/esm/functions/getProfile.mjs +10 -4
- package/dist/esm/functions/getWrapperData.mjs +4 -5
- package/dist/esm/functions/renewNames.mjs +13 -20
- package/dist/esm/functions/setFuses.mjs +30 -0
- package/dist/esm/functions/wrapName.mjs +9 -19
- package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.mjs +1 -1
- package/dist/esm/generated/factories/BulkRenewal__factory.mjs +1 -1
- package/dist/esm/generated/factories/DNSRegistrar__factory.mjs +1 -1
- package/dist/esm/generated/factories/DNSSECImpl__factory.mjs +1 -1
- package/dist/esm/generated/factories/DefaultReverseResolver__factory.mjs +1 -1
- package/dist/esm/generated/factories/ENSRegistry__factory.mjs +1 -1
- package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +7 -56
- package/dist/esm/generated/factories/Multicall__factory.mjs +1 -1
- package/dist/esm/generated/factories/NameWrapper__factory.mjs +91 -70
- package/dist/esm/generated/factories/P256SHA256Algorithm__factory.mjs +1 -1
- package/dist/esm/generated/factories/PublicResolver__factory.mjs +84 -1
- package/dist/esm/generated/factories/RSASHA1Algorithm__factory.mjs +1 -1
- package/dist/esm/generated/factories/RSASHA256Algorithm__factory.mjs +1 -1
- package/dist/esm/generated/factories/ReverseRegistrar__factory.mjs +1 -1
- package/dist/esm/generated/factories/Root__factory.mjs +1 -1
- package/dist/esm/generated/factories/SHA1Digest__factory.mjs +1 -1
- package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.mjs +1 -1
- package/dist/esm/generated/factories/SHA256Digest__factory.mjs +1 -1
- package/dist/esm/generated/factories/StaticMetadataService__factory.mjs +1 -1
- package/dist/esm/generated/factories/TLDPublicSuffixList__factory.mjs +1 -1
- package/dist/esm/generated/factories/UniversalResolver__factory.mjs +68 -3
- package/dist/esm/index.mjs +6 -4
- package/dist/esm/utils/ccip.mjs +2 -2
- package/dist/esm/utils/consts.mjs +3 -1
- package/dist/esm/utils/fuses.mjs +218 -53
- package/dist/esm/utils/hexEncodedName.mjs +2 -0
- package/dist/esm/utils/labels.mjs +11 -8
- package/dist/esm/utils/normalise.mjs +1 -1
- package/dist/esm/utils/recordHelpers.mjs +2 -1
- package/dist/esm/utils/registerHelpers.mjs +10 -18
- package/dist/esm/utils/subgraph-types.mjs +0 -0
- package/dist/esm/utils/wrapper.mjs +2 -2
- package/dist/types/functions/commitName.d.ts +0 -1
- package/dist/types/functions/createSubname.d.ts +2 -2
- package/dist/types/functions/getDecryptedName.d.ts +9 -0
- package/dist/types/functions/getHistory.d.ts +1 -1
- package/dist/types/functions/getNames.d.ts +3 -3
- package/dist/types/functions/getOwner.d.ts +1 -0
- package/dist/types/functions/getPrice.d.ts +1 -1
- package/dist/types/functions/getProfile.d.ts +1 -0
- package/dist/types/functions/getRecords.d.ts +1 -0
- package/dist/types/functions/getWrapperData.d.ts +44 -5
- package/dist/types/functions/registerName.d.ts +1 -1
- package/dist/types/functions/renewNames.d.ts +5 -6
- package/dist/types/functions/setFuses.d.ts +7 -0
- package/dist/types/functions/types.d.ts +8 -4
- package/dist/types/functions/wrapName.d.ts +3 -3
- package/dist/types/generated/ETHRegistrarController.d.ts +13 -36
- package/dist/types/generated/NameWrapper.d.ts +97 -52
- package/dist/types/generated/PublicResolver.d.ts +50 -1
- package/dist/types/generated/UniversalResolver.d.ts +79 -32
- package/dist/types/generated/factories/UniversalResolver__factory.d.ts +15 -0
- package/dist/types/index.d.ts +60 -9
- package/dist/types/static.d.ts +1 -1
- package/dist/types/utils/consts.d.ts +1 -0
- package/dist/types/utils/fuses.d.ts +115 -45
- package/dist/types/utils/hexEncodedName.d.ts +1 -0
- package/dist/types/utils/labels.d.ts +2 -1
- package/dist/types/utils/registerHelpers.d.ts +7 -25
- package/dist/types/utils/subgraph-types.d.ts +284 -0
- package/dist/types/utils/wrapper.d.ts +1 -1
- package/package.json +5 -5
- package/src/contracts/getContractAddress.ts +4 -4
- package/src/functions/commitName.test.ts +0 -3
- package/src/functions/commitName.ts +1 -2
- package/src/functions/createSubname.ts +5 -6
- package/src/functions/getDecryptedName.test.ts +49 -0
- package/src/functions/getDecryptedName.ts +119 -0
- package/src/functions/getExpiry.ts +1 -1
- package/src/functions/getHistory.ts +59 -25
- package/src/functions/getNames.test.ts +2 -2
- package/src/functions/getNames.ts +26 -13
- package/src/functions/getOwner.test.ts +62 -3
- package/src/functions/getOwner.ts +33 -13
- package/src/functions/getPrice.ts +2 -2
- package/src/functions/getProfile.test.ts +7 -0
- package/src/functions/getProfile.ts +13 -4
- package/src/functions/getWrapperData.test.ts +11 -45
- package/src/functions/getWrapperData.ts +8 -6
- package/src/functions/registerName.test.ts +3 -3
- package/src/functions/registerName.ts +1 -1
- package/src/functions/renewNames.ts +18 -24
- package/src/functions/setFuses.test.ts +240 -0
- package/src/functions/setFuses.ts +44 -0
- package/src/functions/types.ts +8 -4
- package/src/functions/wrapName.test.ts +8 -7
- package/src/functions/wrapName.ts +11 -25
- package/src/generated/ETHRegistrarController.ts +12 -79
- package/src/generated/NameWrapper.ts +155 -99
- package/src/generated/PublicResolver.ts +123 -0
- package/src/generated/UniversalResolver.ts +157 -16
- package/src/generated/factories/BaseRegistrarImplementation__factory.ts +1 -1
- package/src/generated/factories/BulkRenewal__factory.ts +1 -1
- package/src/generated/factories/DNSRegistrar__factory.ts +1 -1
- package/src/generated/factories/DNSSECImpl__factory.ts +1 -1
- package/src/generated/factories/DefaultReverseResolver__factory.ts +1 -1
- package/src/generated/factories/ENSRegistry__factory.ts +1 -1
- package/src/generated/factories/ETHRegistrarController__factory.ts +7 -56
- package/src/generated/factories/Multicall__factory.ts +1 -1
- package/src/generated/factories/NameWrapper__factory.ts +91 -70
- package/src/generated/factories/P256SHA256Algorithm__factory.ts +1 -1
- package/src/generated/factories/PublicResolver__factory.ts +84 -1
- package/src/generated/factories/RSASHA1Algorithm__factory.ts +1 -1
- package/src/generated/factories/RSASHA256Algorithm__factory.ts +1 -1
- package/src/generated/factories/ReverseRegistrar__factory.ts +1 -1
- package/src/generated/factories/Root__factory.ts +1 -1
- package/src/generated/factories/SHA1Digest__factory.ts +1 -1
- package/src/generated/factories/SHA1NSEC3Digest__factory.ts +1 -1
- package/src/generated/factories/SHA256Digest__factory.ts +1 -1
- package/src/generated/factories/StaticMetadataService__factory.ts +1 -1
- package/src/generated/factories/TLDPublicSuffixList__factory.ts +1 -1
- package/src/generated/factories/UniversalResolver__factory.ts +68 -3
- package/src/index.ts +15 -14
- package/src/static.ts +1 -1
- package/src/utils/ccip.ts +2 -2
- package/src/utils/consts.ts +1 -0
- package/src/utils/fuses.ts +299 -102
- package/src/utils/hexEncodedName.ts +3 -0
- package/src/utils/labels.ts +13 -11
- package/src/utils/normalise.ts +1 -1
- package/src/utils/recordHelpers.ts +2 -1
- package/src/utils/registerHelpers.ts +14 -42
- package/src/utils/subgraph-types.ts +312 -0
- package/src/utils/wrapper.ts +2 -2
- package/dist/cjs/utils/generateFuseInput.js +0 -40
- package/dist/esm/functions/burnFuses.mjs +0 -12
- package/dist/esm/utils/generateFuseInput.mjs +0 -15
- package/dist/types/functions/burnFuses.d.ts +0 -3
- package/dist/types/utils/generateFuseInput.d.ts +0 -3
- package/src/functions/burnFuses.test.ts +0 -148
- package/src/functions/burnFuses.ts +0 -16
- package/src/utils/generateFuseInput.ts +0 -13
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// src/functions/getDecryptedName.ts
|
|
2
|
+
import { hexStripZeros } from "@ethersproject/bytes";
|
|
3
|
+
import { hexDecodeName } from "../utils/hexEncodedName.mjs";
|
|
4
|
+
import {
|
|
5
|
+
checkIsDecrypted,
|
|
6
|
+
decodeLabelhash,
|
|
7
|
+
getEncryptedLabelAmount,
|
|
8
|
+
isEncodedLabelhash
|
|
9
|
+
} from "../utils/labels.mjs";
|
|
10
|
+
import { namehash } from "../utils/normalise.mjs";
|
|
11
|
+
var raw = async ({ contracts }, name, allowIncomplete) => {
|
|
12
|
+
const nameWrapper = await contracts?.getNameWrapper();
|
|
13
|
+
return {
|
|
14
|
+
to: nameWrapper.address,
|
|
15
|
+
data: nameWrapper.interface.encodeFunctionData("names", [namehash(name)])
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
var generateNameQuery = (labels) => {
|
|
19
|
+
let query = "";
|
|
20
|
+
for (let i = 0; i < labels.length; i += 1) {
|
|
21
|
+
const label = labels[i];
|
|
22
|
+
if (isEncodedLabelhash(label)) {
|
|
23
|
+
query += `
|
|
24
|
+
label${i}: domains(where: { labelhash: "${decodeLabelhash(
|
|
25
|
+
label
|
|
26
|
+
).toLowerCase()}", labelName_not: null }) {
|
|
27
|
+
labelName
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return query;
|
|
33
|
+
};
|
|
34
|
+
var decode = async ({ contracts, gqlInstance }, data, name, allowIncomplete = false) => {
|
|
35
|
+
if (data !== null) {
|
|
36
|
+
const nameWrapper = await contracts?.getNameWrapper();
|
|
37
|
+
try {
|
|
38
|
+
const result = nameWrapper.interface.decodeFunctionResult("names", data);
|
|
39
|
+
if (hexStripZeros(result["0"]) !== "0x") {
|
|
40
|
+
const decoded = hexDecodeName(result["0"]);
|
|
41
|
+
if (decoded && decoded !== ".")
|
|
42
|
+
return decoded;
|
|
43
|
+
}
|
|
44
|
+
} catch (e) {
|
|
45
|
+
console.error("Error decoding name: ", e);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (checkIsDecrypted(name))
|
|
50
|
+
return name;
|
|
51
|
+
const labels = name.split(".");
|
|
52
|
+
const decryptedNameQuery = gqlInstance.gql`
|
|
53
|
+
query decodedName($id: String!) {
|
|
54
|
+
namehashLookup: domains(where: { id: $id }) {
|
|
55
|
+
name
|
|
56
|
+
}
|
|
57
|
+
${generateNameQuery(labels)}
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
const decryptedNameResult = await gqlInstance.client.request(
|
|
61
|
+
decryptedNameQuery,
|
|
62
|
+
{
|
|
63
|
+
id: namehash(name)
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
if (!decryptedNameResult)
|
|
67
|
+
return;
|
|
68
|
+
const namehashLookupResult = decryptedNameResult?.namehashLookup[0]?.name;
|
|
69
|
+
let bestResult = namehashLookupResult;
|
|
70
|
+
if (namehashLookupResult && checkIsDecrypted(namehashLookupResult)) {
|
|
71
|
+
return namehashLookupResult;
|
|
72
|
+
}
|
|
73
|
+
const { namehashLookup: _, ...labelNames } = decryptedNameResult;
|
|
74
|
+
if (Object.keys(labelNames).length !== 0) {
|
|
75
|
+
for (const [key, value] of Object.entries(
|
|
76
|
+
labelNames
|
|
77
|
+
)) {
|
|
78
|
+
if (value.length && value[0].labelName) {
|
|
79
|
+
labels[parseInt(key.replace("label", ""))] = value[0].labelName;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const labelLookupResult = labels.join(".");
|
|
83
|
+
if (!namehashLookupResult || getEncryptedLabelAmount(namehashLookupResult) > getEncryptedLabelAmount(labelLookupResult))
|
|
84
|
+
bestResult = labelLookupResult;
|
|
85
|
+
}
|
|
86
|
+
if (!bestResult || !allowIncomplete && !checkIsDecrypted(bestResult))
|
|
87
|
+
return;
|
|
88
|
+
return bestResult;
|
|
89
|
+
};
|
|
90
|
+
var getDecryptedName_default = {
|
|
91
|
+
raw,
|
|
92
|
+
decode
|
|
93
|
+
};
|
|
94
|
+
export {
|
|
95
|
+
getDecryptedName_default as default
|
|
96
|
+
};
|
|
@@ -7,17 +7,20 @@ import { namehash } from "../utils/normalise.mjs";
|
|
|
7
7
|
var eventFormat = {
|
|
8
8
|
Domain: {
|
|
9
9
|
NewOwner: (args) => ({ owner: args.owner.id }),
|
|
10
|
-
NewResolver: (args) => ({
|
|
10
|
+
NewResolver: (args) => ({
|
|
11
|
+
resolver: args.resolver.id.split("-")[0]
|
|
12
|
+
}),
|
|
11
13
|
Transfer: (args) => ({ owner: args.owner.id }),
|
|
12
14
|
NewTTL: (args) => ({ ttl: args.ttl }),
|
|
13
15
|
WrappedTransfer: (args) => ({ owner: args.owner.id }),
|
|
14
16
|
NameWrapped: (args) => ({
|
|
15
17
|
fuses: args.fuses,
|
|
16
18
|
owner: args.owner.id,
|
|
17
|
-
|
|
19
|
+
expiryDate: args.expiryDate
|
|
18
20
|
}),
|
|
19
21
|
NameUnwrapped: (args) => ({ owner: args.owner.id }),
|
|
20
|
-
FusesSet: (args) => ({ fuses: args.fuses
|
|
22
|
+
FusesSet: (args) => ({ fuses: args.fuses }),
|
|
23
|
+
ExpiryExtended: (args) => ({ expiryDate: args.expiryDate })
|
|
21
24
|
},
|
|
22
25
|
Registration: {
|
|
23
26
|
NameRegistered: (args) => ({
|
|
@@ -54,9 +57,11 @@ var eventFormat = {
|
|
|
54
57
|
AbiChanged: (args) => ({ contentType: args.contentType }),
|
|
55
58
|
PubkeyChanged: (args) => ({ x: args.x, y: args.y }),
|
|
56
59
|
TextChanged: (args) => ({ key: args.key, value: args.value }),
|
|
57
|
-
ContenthashChanged: (args) => ({
|
|
60
|
+
ContenthashChanged: (args) => ({
|
|
61
|
+
hash: decodeContenthash(args.hash)
|
|
62
|
+
}),
|
|
58
63
|
InterfaceChanged: (args) => ({
|
|
59
|
-
interfaceId: args.
|
|
64
|
+
interfaceId: args.interfaceID,
|
|
60
65
|
implementer: args.implementer
|
|
61
66
|
}),
|
|
62
67
|
AuthorisationChanged: (args) => ({
|
|
@@ -111,7 +116,7 @@ async function getHistory({ gqlInstance }, name) {
|
|
|
111
116
|
}
|
|
112
117
|
...on NameWrapped {
|
|
113
118
|
fuses
|
|
114
|
-
|
|
119
|
+
expiryDate
|
|
115
120
|
owner {
|
|
116
121
|
id
|
|
117
122
|
}
|
|
@@ -123,7 +128,9 @@ async function getHistory({ gqlInstance }, name) {
|
|
|
123
128
|
}
|
|
124
129
|
...on FusesSet {
|
|
125
130
|
fuses
|
|
126
|
-
|
|
131
|
+
}
|
|
132
|
+
...on ExpiryExtended {
|
|
133
|
+
expiryDate
|
|
127
134
|
}
|
|
128
135
|
}
|
|
129
136
|
registration {
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
import { truncateFormat } from "../utils/format.mjs";
|
|
3
3
|
import { decodeFuses } from "../utils/fuses.mjs";
|
|
4
4
|
import { decryptName } from "../utils/labels.mjs";
|
|
5
|
-
var mapDomain = (domain) => {
|
|
6
|
-
const decrypted = decryptName(
|
|
5
|
+
var mapDomain = ({ name, ...domain }) => {
|
|
6
|
+
const decrypted = name ? decryptName(name) : void 0;
|
|
7
7
|
return {
|
|
8
8
|
...domain,
|
|
9
9
|
name: decrypted,
|
|
10
|
-
truncatedName: truncateFormat(decrypted),
|
|
10
|
+
truncatedName: decrypted ? truncateFormat(decrypted) : void 0,
|
|
11
11
|
createdAt: new Date(parseInt(domain.createdAt) * 1e3),
|
|
12
12
|
type: "domain"
|
|
13
13
|
};
|
|
@@ -16,8 +16,12 @@ var mapWrappedDomain = (wrappedDomain) => {
|
|
|
16
16
|
const domain = mapDomain(wrappedDomain.domain);
|
|
17
17
|
if (domain.registration) {
|
|
18
18
|
domain.registration = {
|
|
19
|
-
expiryDate: new Date(
|
|
20
|
-
|
|
19
|
+
expiryDate: new Date(
|
|
20
|
+
parseInt(domain.registration.expiryDate) * 1e3
|
|
21
|
+
),
|
|
22
|
+
registrationDate: new Date(
|
|
23
|
+
parseInt(domain.registration.registrationDate) * 1e3
|
|
24
|
+
)
|
|
21
25
|
};
|
|
22
26
|
}
|
|
23
27
|
return {
|
|
@@ -209,7 +213,7 @@ var getNames = async ({ gqlInstance }, {
|
|
|
209
213
|
id: address,
|
|
210
214
|
first: pageSize,
|
|
211
215
|
skip: (page || 0) * pageSize,
|
|
212
|
-
orderBy,
|
|
216
|
+
orderBy: orderBy === "labelName" ? "name" : orderBy,
|
|
213
217
|
orderDirection
|
|
214
218
|
};
|
|
215
219
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/functions/getOwner.ts
|
|
2
|
-
import { defaultAbiCoder } from "@ethersproject/abi
|
|
2
|
+
import { defaultAbiCoder } from "@ethersproject/abi";
|
|
3
3
|
import { hexStripZeros } from "@ethersproject/bytes";
|
|
4
4
|
import { labelhash } from "../utils/labels.mjs";
|
|
5
5
|
import { namehash as makeNamehash } from "../utils/normalise.mjs";
|
|
@@ -111,27 +111,39 @@ var decode = async ({
|
|
|
111
111
|
const registryOwner = decodedData[0][0];
|
|
112
112
|
const nameWrapperOwner = decodedData[1][0];
|
|
113
113
|
let registrarOwner = decodedData[2]?.[0];
|
|
114
|
+
let baseReturnObject = {};
|
|
114
115
|
if (labels[labels.length - 1] === "eth") {
|
|
115
|
-
if (
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
116
|
+
if (labels.length === 2) {
|
|
117
|
+
if (!registrarOwner) {
|
|
118
|
+
const graphRegistrantResult = await gqlInstance.client.request(
|
|
119
|
+
registrantQuery,
|
|
120
|
+
{
|
|
121
|
+
namehash: makeNamehash(name)
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
registrarOwner = graphRegistrantResult.domain?.registration?.registrant?.id;
|
|
125
|
+
baseReturnObject = {
|
|
126
|
+
expired: true
|
|
127
|
+
};
|
|
128
|
+
} else {
|
|
129
|
+
baseReturnObject = {
|
|
130
|
+
expired: false
|
|
131
|
+
};
|
|
132
|
+
}
|
|
123
133
|
}
|
|
124
|
-
if (registrarOwner === nameWrapper.address) {
|
|
134
|
+
if (registrarOwner?.toLowerCase() === nameWrapper.address.toLowerCase()) {
|
|
125
135
|
return {
|
|
126
136
|
owner: nameWrapperOwner,
|
|
127
|
-
ownershipLevel: "nameWrapper"
|
|
137
|
+
ownershipLevel: "nameWrapper",
|
|
138
|
+
...baseReturnObject
|
|
128
139
|
};
|
|
129
140
|
}
|
|
130
141
|
if (registrarOwner) {
|
|
131
142
|
return {
|
|
132
143
|
registrant: registrarOwner,
|
|
133
144
|
owner: registryOwner,
|
|
134
|
-
ownershipLevel: "registrar"
|
|
145
|
+
ownershipLevel: "registrar",
|
|
146
|
+
...baseReturnObject
|
|
135
147
|
};
|
|
136
148
|
}
|
|
137
149
|
if (hexStripZeros(registryOwner) !== "0x") {
|
|
@@ -139,7 +151,8 @@ var decode = async ({
|
|
|
139
151
|
return {
|
|
140
152
|
registrant: void 0,
|
|
141
153
|
owner: registryOwner,
|
|
142
|
-
ownershipLevel: "registrar"
|
|
154
|
+
ownershipLevel: "registrar",
|
|
155
|
+
expired: true
|
|
143
156
|
};
|
|
144
157
|
}
|
|
145
158
|
if (registryOwner === nameWrapper.address && nameWrapperOwner && hexStripZeros(nameWrapperOwner) !== "0x") {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/functions/getPrice.ts
|
|
2
|
-
import { defaultAbiCoder } from "@ethersproject/abi
|
|
3
|
-
import { BigNumber } from "@ethersproject/bignumber
|
|
2
|
+
import { defaultAbiCoder } from "@ethersproject/abi";
|
|
3
|
+
import { BigNumber } from "@ethersproject/bignumber";
|
|
4
4
|
var raw = async ({ contracts, multicallWrapper }, nameOrNames, duration, legacy) => {
|
|
5
5
|
const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];
|
|
6
6
|
if (names.length > 1) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/functions/getProfile.ts
|
|
2
2
|
import { formatsByName } from "@ensdomains/address-encoder";
|
|
3
|
-
import { defaultAbiCoder } from "@ethersproject/abi
|
|
3
|
+
import { defaultAbiCoder } from "@ethersproject/abi";
|
|
4
4
|
import { hexStripZeros, isBytesLike } from "@ethersproject/bytes";
|
|
5
5
|
import { decodeContenthash } from "../utils/contentHash.mjs";
|
|
6
6
|
import { hexEncodeName } from "../utils/hexEncodedName.mjs";
|
|
@@ -229,6 +229,7 @@ var graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress) =
|
|
|
229
229
|
const query = gqlInstance.gql`
|
|
230
230
|
query getRecords($id: String!) {
|
|
231
231
|
domain(id: $id) {
|
|
232
|
+
name
|
|
232
233
|
isMigrated
|
|
233
234
|
createdAt
|
|
234
235
|
resolver {
|
|
@@ -245,6 +246,7 @@ var graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress) =
|
|
|
245
246
|
const customResolverQuery = gqlInstance.gql`
|
|
246
247
|
query getRecordsWithCustomResolver($id: String!, $resolverId: String!) {
|
|
247
248
|
domain(id: $id) {
|
|
249
|
+
name
|
|
248
250
|
isMigrated
|
|
249
251
|
createdAt
|
|
250
252
|
}
|
|
@@ -277,10 +279,10 @@ var graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress) =
|
|
|
277
279
|
}
|
|
278
280
|
if (!domain)
|
|
279
281
|
return;
|
|
280
|
-
const { isMigrated, createdAt } = domain;
|
|
282
|
+
const { isMigrated, createdAt, name: decryptedName } = domain;
|
|
281
283
|
const returnedRecords = {};
|
|
282
284
|
if (!resolverResponse || !wantedRecords)
|
|
283
|
-
return { isMigrated, createdAt };
|
|
285
|
+
return { isMigrated, createdAt, decryptedName };
|
|
284
286
|
Object.keys(wantedRecords).forEach((key) => {
|
|
285
287
|
const data = wantedRecords[key];
|
|
286
288
|
if (typeof data === "boolean" && data) {
|
|
@@ -293,6 +295,7 @@ var graphFetch = async ({ gqlInstance }, name, wantedRecords, resolverAddress) =
|
|
|
293
295
|
});
|
|
294
296
|
return {
|
|
295
297
|
...returnedRecords,
|
|
298
|
+
decryptedName,
|
|
296
299
|
isMigrated,
|
|
297
300
|
createdAt
|
|
298
301
|
};
|
|
@@ -323,6 +326,7 @@ var getProfileFromName = async ({
|
|
|
323
326
|
);
|
|
324
327
|
let isMigrated = null;
|
|
325
328
|
let createdAt = null;
|
|
329
|
+
let decryptedName = null;
|
|
326
330
|
let result = null;
|
|
327
331
|
if (!graphResult) {
|
|
328
332
|
if (!fallback)
|
|
@@ -344,10 +348,12 @@ var getProfileFromName = async ({
|
|
|
344
348
|
const {
|
|
345
349
|
isMigrated: _isMigrated,
|
|
346
350
|
createdAt: _createdAt,
|
|
351
|
+
decryptedName: _decryptedName,
|
|
347
352
|
...wantedRecords
|
|
348
353
|
} = graphResult;
|
|
349
354
|
isMigrated = _isMigrated;
|
|
350
355
|
createdAt = _createdAt;
|
|
356
|
+
decryptedName = _decryptedName;
|
|
351
357
|
let recordsWithFallback = usingOptions ? wantedRecords : _options;
|
|
352
358
|
if ((Object.keys(recordsWithFallback).length === 0 || !recordsWithFallback.coinTypes && !recordsWithFallback.texts && Object.keys(recordsWithFallback.contentHash || {}).length === 0) && fallback) {
|
|
353
359
|
recordsWithFallback = fallback;
|
|
@@ -372,7 +378,7 @@ var getProfileFromName = async ({
|
|
|
372
378
|
createdAt,
|
|
373
379
|
message: !result ? "Records fetch didn't complete" : "Name doesn't have a resolver"
|
|
374
380
|
};
|
|
375
|
-
return { ...result, isMigrated, createdAt, message: void 0 };
|
|
381
|
+
return { ...result, isMigrated, createdAt, decryptedName, message: void 0 };
|
|
376
382
|
};
|
|
377
383
|
var getProfileFromAddress = async ({
|
|
378
384
|
contracts,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/functions/getWrapperData.ts
|
|
2
|
-
import { BigNumber } from "@ethersproject/bignumber
|
|
2
|
+
import { BigNumber } from "@ethersproject/bignumber";
|
|
3
3
|
import { decodeFuses } from "../utils/fuses.mjs";
|
|
4
4
|
import { namehash } from "../utils/normalise.mjs";
|
|
5
5
|
var raw = async ({ contracts }, name) => {
|
|
@@ -12,15 +12,14 @@ var raw = async ({ contracts }, name) => {
|
|
|
12
12
|
var decode = async ({ contracts }, data) => {
|
|
13
13
|
const nameWrapper = await contracts?.getNameWrapper();
|
|
14
14
|
try {
|
|
15
|
-
const [owner,
|
|
15
|
+
const [owner, fuses, expiry] = nameWrapper.interface.decodeFunctionResult(
|
|
16
16
|
"getData",
|
|
17
17
|
data
|
|
18
18
|
);
|
|
19
|
-
const fuses = BigNumber.from(_fuses);
|
|
20
19
|
const fuseObj = decodeFuses(fuses);
|
|
21
|
-
const expiryDate = new Date(expiry
|
|
20
|
+
const expiryDate = expiry.gt(0) && expiry.lt(BigNumber.from(2).pow(32)) ? new Date(expiry.mul(1e3).toString()) : void 0;
|
|
22
21
|
return {
|
|
23
|
-
fuseObj,
|
|
22
|
+
...fuseObj,
|
|
24
23
|
expiryDate,
|
|
25
24
|
rawFuses: fuses,
|
|
26
25
|
owner
|
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
// src/functions/renewNames.ts
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
fuses,
|
|
8
|
-
wrapperExpiry = MAX_INT_64
|
|
9
|
-
}) {
|
|
2
|
+
import { MAX_INT_64 } from "../utils/consts.mjs";
|
|
3
|
+
import { labelhash } from "../utils/labels.mjs";
|
|
4
|
+
import { namehash } from "../utils/normalise.mjs";
|
|
5
|
+
async function extendWrappedName({ contracts }, name, options) {
|
|
6
|
+
const expiry = options?.duration || MAX_INT_64;
|
|
10
7
|
const labels = name.split(".");
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
duration,
|
|
19
|
-
encodedFuses,
|
|
20
|
-
wrapperExpiry,
|
|
21
|
-
{ value }
|
|
8
|
+
const labelHash = labelhash(labels.shift());
|
|
9
|
+
const parentNode = namehash(labels.join("."));
|
|
10
|
+
const nameWrapper = await contracts.getNameWrapper();
|
|
11
|
+
return nameWrapper.populateTransaction.extendExpiry(
|
|
12
|
+
parentNode,
|
|
13
|
+
labelHash,
|
|
14
|
+
expiry
|
|
22
15
|
);
|
|
23
16
|
}
|
|
24
17
|
async function renewNames_default({ contracts }, nameOrNames, { duration, value }) {
|
|
@@ -39,5 +32,5 @@ async function renewNames_default({ contracts }, nameOrNames, { duration, value
|
|
|
39
32
|
}
|
|
40
33
|
export {
|
|
41
34
|
renewNames_default as default,
|
|
42
|
-
|
|
35
|
+
extendWrappedName
|
|
43
36
|
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// src/functions/setFuses.ts
|
|
2
|
+
import { encodeFuses } from "../utils/fuses.mjs";
|
|
3
|
+
import { labelhash } from "../utils/labels.mjs";
|
|
4
|
+
import { namehash } from "../utils/normalise.mjs";
|
|
5
|
+
async function setChildFuses({ contracts, signer }, name, {
|
|
6
|
+
fuses,
|
|
7
|
+
expiry = 0
|
|
8
|
+
}) {
|
|
9
|
+
const encodedFuses = encodeFuses(fuses);
|
|
10
|
+
const labels = name.split(".");
|
|
11
|
+
const labelHash = labelhash(labels.shift());
|
|
12
|
+
const parentNode = namehash(labels.join("."));
|
|
13
|
+
const nameWrapper = (await contracts.getNameWrapper()).connect(signer);
|
|
14
|
+
return nameWrapper.populateTransaction.setChildFuses(
|
|
15
|
+
parentNode,
|
|
16
|
+
labelHash,
|
|
17
|
+
encodedFuses,
|
|
18
|
+
expiry
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
async function setFuses_default({ contracts, signer }, name, props) {
|
|
22
|
+
const encodedFuses = encodeFuses(props, "child");
|
|
23
|
+
const nameWrapper = (await contracts.getNameWrapper()).connect(signer);
|
|
24
|
+
const hash = namehash(name);
|
|
25
|
+
return nameWrapper.populateTransaction.setFuses(hash, encodedFuses);
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
setFuses_default as default,
|
|
29
|
+
setChildFuses
|
|
30
|
+
};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// src/functions/wrapName.ts
|
|
2
|
-
import { defaultAbiCoder } from "@ethersproject/abi
|
|
2
|
+
import { defaultAbiCoder } from "@ethersproject/abi";
|
|
3
3
|
import { keccak256 as solidityKeccak256 } from "@ethersproject/solidity";
|
|
4
|
-
import
|
|
4
|
+
import { encodeFuses } from "../utils/fuses.mjs";
|
|
5
5
|
import { hexEncodeName } from "../utils/hexEncodedName.mjs";
|
|
6
|
-
import {
|
|
7
|
-
async function wrapETH({ contracts }, labels, wrappedOwner,
|
|
6
|
+
import { wrappedLabelLengthCheck } from "../utils/wrapper.mjs";
|
|
7
|
+
async function wrapETH({ contracts }, labels, wrappedOwner, decodedFuses, resolverAddress, signer, address) {
|
|
8
8
|
const nameWrapper = await contracts?.getNameWrapper();
|
|
9
9
|
const baseRegistrar = (await contracts.getBaseRegistrar()).connect(signer);
|
|
10
10
|
const labelhash = solidityKeccak256(["string"], [labels[0]]);
|
|
11
11
|
const data = defaultAbiCoder.encode(
|
|
12
|
-
["string", "address", "
|
|
13
|
-
[labels[0], wrappedOwner, decodedFuses,
|
|
12
|
+
["string", "address", "uint16", "address"],
|
|
13
|
+
[labels[0], wrappedOwner, decodedFuses, resolverAddress]
|
|
14
14
|
);
|
|
15
15
|
return baseRegistrar.populateTransaction["safeTransferFrom(address,address,uint256,bytes)"](address, nameWrapper.address, labelhash, data);
|
|
16
16
|
}
|
|
@@ -32,11 +32,7 @@ async function wrapOther({ contracts }, name, wrappedOwner, resolverAddress, add
|
|
|
32
32
|
resolverAddress
|
|
33
33
|
);
|
|
34
34
|
}
|
|
35
|
-
async function wrapName_default({
|
|
36
|
-
contracts,
|
|
37
|
-
signer,
|
|
38
|
-
getExpiry
|
|
39
|
-
}, name, {
|
|
35
|
+
async function wrapName_default({ contracts, signer }, name, {
|
|
40
36
|
wrappedOwner,
|
|
41
37
|
fuseOptions,
|
|
42
38
|
expiry,
|
|
@@ -52,31 +48,25 @@ async function wrapName_default({
|
|
|
52
48
|
if (labels.length === 2 && labels[1] === "eth") {
|
|
53
49
|
switch (typeof fuseOptions) {
|
|
54
50
|
case "object": {
|
|
55
|
-
decodedFuses =
|
|
51
|
+
decodedFuses = encodeFuses(fuseOptions);
|
|
56
52
|
break;
|
|
57
53
|
}
|
|
58
54
|
case "number": {
|
|
59
|
-
decodedFuses = fuseOptions.toString(16);
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
case "string": {
|
|
63
55
|
decodedFuses = fuseOptions;
|
|
64
56
|
break;
|
|
65
57
|
}
|
|
66
58
|
case "undefined": {
|
|
67
|
-
decodedFuses =
|
|
59
|
+
decodedFuses = 0;
|
|
68
60
|
break;
|
|
69
61
|
}
|
|
70
62
|
default: {
|
|
71
63
|
throw new Error(`Invalid fuseOptions type: ${typeof fuseOptions}`);
|
|
72
64
|
}
|
|
73
65
|
}
|
|
74
|
-
const expiryToUse = await makeExpiry({ getExpiry }, name, expiry);
|
|
75
66
|
return wrapETH(
|
|
76
67
|
{ contracts },
|
|
77
68
|
labels,
|
|
78
69
|
wrappedOwner,
|
|
79
|
-
expiryToUse,
|
|
80
70
|
decodedFuses,
|
|
81
71
|
resolverAddress,
|
|
82
72
|
signer,
|
|
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
// src/generated/factories/BaseRegistrarImplementation__factory.ts
|
|
9
|
-
import { Interface } from "@ethersproject/abi
|
|
9
|
+
import { Interface } from "@ethersproject/abi";
|
|
10
10
|
import { Contract } from "@ethersproject/contracts";
|
|
11
11
|
var _abi = [
|
|
12
12
|
{
|
|
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
// src/generated/factories/BulkRenewal__factory.ts
|
|
9
|
-
import { Interface } from "@ethersproject/abi
|
|
9
|
+
import { Interface } from "@ethersproject/abi";
|
|
10
10
|
import { Contract } from "@ethersproject/contracts";
|
|
11
11
|
var _abi = [
|
|
12
12
|
{
|
|
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
// src/generated/factories/DNSRegistrar__factory.ts
|
|
9
|
-
import { Interface } from "@ethersproject/abi
|
|
9
|
+
import { Interface } from "@ethersproject/abi";
|
|
10
10
|
import { Contract } from "@ethersproject/contracts";
|
|
11
11
|
var _abi = [
|
|
12
12
|
{
|
|
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
// src/generated/factories/DNSSECImpl__factory.ts
|
|
9
|
-
import { Interface } from "@ethersproject/abi
|
|
9
|
+
import { Interface } from "@ethersproject/abi";
|
|
10
10
|
import { Contract } from "@ethersproject/contracts";
|
|
11
11
|
var _abi = [
|
|
12
12
|
{
|
|
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
// src/generated/factories/DefaultReverseResolver__factory.ts
|
|
9
|
-
import { Interface } from "@ethersproject/abi
|
|
9
|
+
import { Interface } from "@ethersproject/abi";
|
|
10
10
|
import { Contract } from "@ethersproject/contracts";
|
|
11
11
|
var _abi = [
|
|
12
12
|
{
|
|
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
// src/generated/factories/ENSRegistry__factory.ts
|
|
9
|
-
import { Interface } from "@ethersproject/abi
|
|
9
|
+
import { Interface } from "@ethersproject/abi";
|
|
10
10
|
import { Contract } from "@ethersproject/contracts";
|
|
11
11
|
var _abi = [
|
|
12
12
|
{
|
|
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
// src/generated/factories/ETHRegistrarController__factory.ts
|
|
9
|
-
import { Interface } from "@ethersproject/abi
|
|
9
|
+
import { Interface } from "@ethersproject/abi";
|
|
10
10
|
import { Contract } from "@ethersproject/contracts";
|
|
11
11
|
var _abi = [
|
|
12
12
|
{
|
|
@@ -109,17 +109,6 @@ var _abi = [
|
|
|
109
109
|
name: "ResolverRequiredWhenDataSupplied",
|
|
110
110
|
type: "error"
|
|
111
111
|
},
|
|
112
|
-
{
|
|
113
|
-
inputs: [
|
|
114
|
-
{
|
|
115
|
-
internalType: "bytes32",
|
|
116
|
-
name: "node",
|
|
117
|
-
type: "bytes32"
|
|
118
|
-
}
|
|
119
|
-
],
|
|
120
|
-
name: "Unauthorised",
|
|
121
|
-
type: "error"
|
|
122
|
-
},
|
|
123
112
|
{
|
|
124
113
|
inputs: [
|
|
125
114
|
{
|
|
@@ -326,14 +315,9 @@ var _abi = [
|
|
|
326
315
|
type: "bool"
|
|
327
316
|
},
|
|
328
317
|
{
|
|
329
|
-
internalType: "
|
|
330
|
-
name: "
|
|
331
|
-
type: "
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
internalType: "uint64",
|
|
335
|
-
name: "wrapperExpiry",
|
|
336
|
-
type: "uint64"
|
|
318
|
+
internalType: "uint16",
|
|
319
|
+
name: "ownerControlledFuses",
|
|
320
|
+
type: "uint16"
|
|
337
321
|
}
|
|
338
322
|
],
|
|
339
323
|
name: "makeCommitment",
|
|
@@ -473,14 +457,9 @@ var _abi = [
|
|
|
473
457
|
type: "bool"
|
|
474
458
|
},
|
|
475
459
|
{
|
|
476
|
-
internalType: "
|
|
477
|
-
name: "
|
|
478
|
-
type: "
|
|
479
|
-
},
|
|
480
|
-
{
|
|
481
|
-
internalType: "uint64",
|
|
482
|
-
name: "wrapperExpiry",
|
|
483
|
-
type: "uint64"
|
|
460
|
+
internalType: "uint16",
|
|
461
|
+
name: "ownerControlledFuses",
|
|
462
|
+
type: "uint16"
|
|
484
463
|
}
|
|
485
464
|
],
|
|
486
465
|
name: "register",
|
|
@@ -506,34 +485,6 @@ var _abi = [
|
|
|
506
485
|
stateMutability: "payable",
|
|
507
486
|
type: "function"
|
|
508
487
|
},
|
|
509
|
-
{
|
|
510
|
-
inputs: [
|
|
511
|
-
{
|
|
512
|
-
internalType: "string",
|
|
513
|
-
name: "name",
|
|
514
|
-
type: "string"
|
|
515
|
-
},
|
|
516
|
-
{
|
|
517
|
-
internalType: "uint256",
|
|
518
|
-
name: "duration",
|
|
519
|
-
type: "uint256"
|
|
520
|
-
},
|
|
521
|
-
{
|
|
522
|
-
internalType: "uint32",
|
|
523
|
-
name: "fuses",
|
|
524
|
-
type: "uint32"
|
|
525
|
-
},
|
|
526
|
-
{
|
|
527
|
-
internalType: "uint64",
|
|
528
|
-
name: "wrapperExpiry",
|
|
529
|
-
type: "uint64"
|
|
530
|
-
}
|
|
531
|
-
],
|
|
532
|
-
name: "renewWithFuses",
|
|
533
|
-
outputs: [],
|
|
534
|
-
stateMutability: "payable",
|
|
535
|
-
type: "function"
|
|
536
|
-
},
|
|
537
488
|
{
|
|
538
489
|
inputs: [],
|
|
539
490
|
name: "renounceOwnership",
|