@ensdomains/ensjs 3.0.0-alpha.40 → 3.0.0-alpha.42
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/getHistory.js +14 -7
- package/dist/cjs/functions/getNames.js +10 -6
- package/dist/cjs/functions/getOwner.js +25 -12
- package/dist/cjs/functions/getSpecificRecord.js +83 -0
- package/dist/cjs/functions/getWrapperData.js +3 -4
- package/dist/cjs/functions/renewNames.js +13 -20
- package/dist/cjs/functions/{burnFuses.js → setFuses.js} +24 -6
- package/dist/cjs/functions/wrapName.js +7 -23
- package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +6 -55
- package/dist/cjs/generated/factories/NameWrapper__factory.js +90 -69
- package/dist/cjs/generated/factories/PublicResolver__factory.js +83 -0
- package/dist/cjs/generated/factories/UniversalResolver__factory.js +67 -2
- package/dist/cjs/index.js +15 -4
- package/dist/cjs/utils/consts.js +3 -1
- package/dist/cjs/utils/fuses.js +218 -53
- package/dist/cjs/utils/normalise.js +2 -2
- package/dist/cjs/utils/recordHelpers.js +55 -0
- package/dist/cjs/utils/registerHelpers.js +9 -23
- package/dist/cjs/utils/subgraph-types.js +16 -0
- package/dist/cjs/utils/wrapper.js +2 -2
- 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/getHistory.mjs +14 -7
- package/dist/esm/functions/getNames.mjs +10 -6
- package/dist/esm/functions/getOwner.mjs +25 -12
- package/dist/esm/functions/getSpecificRecord.mjs +78 -1
- package/dist/esm/functions/getWrapperData.mjs +3 -4
- package/dist/esm/functions/renewNames.mjs +13 -20
- package/dist/esm/functions/setFuses.mjs +30 -0
- package/dist/esm/functions/wrapName.mjs +8 -18
- package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +6 -55
- package/dist/esm/generated/factories/NameWrapper__factory.mjs +90 -69
- package/dist/esm/generated/factories/PublicResolver__factory.mjs +83 -0
- package/dist/esm/generated/factories/UniversalResolver__factory.mjs +67 -2
- package/dist/esm/index.mjs +15 -4
- package/dist/esm/utils/consts.mjs +3 -1
- package/dist/esm/utils/fuses.mjs +218 -53
- package/dist/esm/utils/normalise.mjs +1 -1
- package/dist/esm/utils/recordHelpers.mjs +49 -0
- package/dist/esm/utils/registerHelpers.mjs +9 -17
- package/dist/esm/utils/subgraph-types.mjs +0 -0
- package/dist/esm/utils/wrapper.mjs +1 -1
- package/dist/types/functions/commitName.d.ts +5 -6
- package/dist/types/functions/createSubname.d.ts +3 -3
- package/dist/types/functions/deleteSubname.d.ts +1 -1
- 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/getSpecificRecord.d.ts +22 -0
- package/dist/types/functions/getWrapperData.d.ts +44 -5
- package/dist/types/functions/importDNSSECName.d.ts +1 -1
- 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/setName.d.ts +1 -1
- package/dist/types/functions/setRecord.d.ts +5 -1
- package/dist/types/functions/setRecords.d.ts +1 -1
- package/dist/types/functions/setResolver.d.ts +1 -1
- package/dist/types/functions/transferController.d.ts +1 -1
- package/dist/types/functions/transferName.d.ts +1 -1
- package/dist/types/functions/transferSubname.d.ts +1 -1
- package/dist/types/functions/types.d.ts +9 -5
- package/dist/types/functions/unwrapName.d.ts +1 -1
- package/dist/types/functions/wrapName.d.ts +4 -4
- 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 +75 -11
- package/dist/types/utils/consts.d.ts +1 -0
- package/dist/types/utils/fuses.d.ts +115 -45
- package/dist/types/utils/recordHelpers.d.ts +14 -2
- package/dist/types/utils/registerHelpers.d.ts +7 -25
- package/dist/types/utils/subgraph-types.d.ts +284 -0
- package/dist/types/utils/writeTx.d.ts +5 -5
- package/package.json +8 -5
- package/src/@types/pako.d.ts +188 -0
- package/src/contracts/bulkRenewal.ts +1 -1
- 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 +4 -5
- package/src/functions/getHistory.ts +59 -25
- package/src/functions/getNames.test.ts +1 -1
- package/src/functions/getNames.ts +26 -13
- package/src/functions/getOwner.test.ts +62 -3
- package/src/functions/getOwner.ts +31 -11
- package/src/functions/getSpecificRecord.test.ts +162 -0
- package/src/functions/getSpecificRecord.ts +95 -1
- package/src/functions/getWrapperData.test.ts +11 -45
- package/src/functions/getWrapperData.ts +7 -5
- package/src/functions/registerName.test.ts +3 -3
- package/src/functions/renewNames.ts +17 -23
- package/src/functions/setFuses.test.ts +240 -0
- package/src/functions/setFuses.ts +44 -0
- package/src/functions/setRecord.test.ts +147 -1
- package/src/functions/setRecord.ts +6 -1
- package/src/functions/types.ts +10 -4
- package/src/functions/wrapName.test.ts +8 -7
- package/src/functions/wrapName.ts +10 -24
- 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/ETHRegistrarController__factory.ts +6 -55
- package/src/generated/factories/NameWrapper__factory.ts +90 -69
- package/src/generated/factories/PublicResolver__factory.ts +83 -0
- package/src/generated/factories/UniversalResolver__factory.ts +67 -2
- package/src/index.ts +23 -14
- package/src/utils/consts.ts +1 -0
- package/src/utils/fuses.ts +299 -102
- package/src/utils/normalise.ts +1 -1
- package/src/utils/recordHelpers.ts +64 -1
- package/src/utils/registerHelpers.ts +13 -41
- package/src/utils/subgraph-types.ts +312 -0
- package/src/utils/wrapper.ts +1 -1
- 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
|
@@ -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
|
}
|
|
@@ -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,7 @@
|
|
|
1
1
|
// src/functions/getSpecificRecord.ts
|
|
2
2
|
import { formatsByCoinType, formatsByName } from "@ensdomains/address-encoder";
|
|
3
|
-
import { hexStripZeros, isBytesLike } from "@ethersproject/bytes";
|
|
3
|
+
import { arrayify, hexStripZeros, isBytesLike } from "@ethersproject/bytes";
|
|
4
|
+
import { toUtf8String } from "@ethersproject/strings";
|
|
4
5
|
import { decodeContenthash } from "../utils/contentHash.mjs";
|
|
5
6
|
import { namehash } from "../utils/normalise.mjs";
|
|
6
7
|
var _getContentHash = {
|
|
@@ -166,10 +167,86 @@ var getAddr = {
|
|
|
166
167
|
return _getAddr.decode({ contracts }, urData.data, _name, coinType);
|
|
167
168
|
}
|
|
168
169
|
};
|
|
170
|
+
var supportedContentTypes = "0xf";
|
|
171
|
+
var _getABI = {
|
|
172
|
+
raw: async ({ contracts }, name) => {
|
|
173
|
+
const publicResolver = await contracts?.getPublicResolver();
|
|
174
|
+
return {
|
|
175
|
+
to: "0x0000000000000000000000000000000000000000",
|
|
176
|
+
data: publicResolver.interface.encodeFunctionData("ABI", [
|
|
177
|
+
namehash(name),
|
|
178
|
+
supportedContentTypes
|
|
179
|
+
])
|
|
180
|
+
};
|
|
181
|
+
},
|
|
182
|
+
decode: async ({ contracts }, data) => {
|
|
183
|
+
const publicResolver = await contracts?.getPublicResolver();
|
|
184
|
+
const [bnContentType, encodedABIData] = publicResolver.interface.decodeFunctionResult("ABI", data);
|
|
185
|
+
if (!bnContentType || !data) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const contentType = bnContentType.toNumber();
|
|
189
|
+
if (!contentType) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
let abiData;
|
|
193
|
+
let decoded = false;
|
|
194
|
+
switch (contentType) {
|
|
195
|
+
case 1:
|
|
196
|
+
abiData = JSON.parse(toUtf8String(encodedABIData));
|
|
197
|
+
decoded = true;
|
|
198
|
+
break;
|
|
199
|
+
case 2: {
|
|
200
|
+
const { inflate } = await import("pako/dist/pako_inflate.min.js");
|
|
201
|
+
abiData = JSON.parse(
|
|
202
|
+
inflate(arrayify(encodedABIData), { to: "string" })
|
|
203
|
+
);
|
|
204
|
+
decoded = true;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case 4: {
|
|
208
|
+
const { decodeFirst } = await import("cbor");
|
|
209
|
+
abiData = await decodeFirst(arrayify(encodedABIData));
|
|
210
|
+
decoded = true;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
case 8:
|
|
214
|
+
abiData = toUtf8String(encodedABIData);
|
|
215
|
+
decoded = false;
|
|
216
|
+
break;
|
|
217
|
+
default:
|
|
218
|
+
try {
|
|
219
|
+
abiData = toUtf8String(encodedABIData);
|
|
220
|
+
} catch {
|
|
221
|
+
abiData = encodedABIData;
|
|
222
|
+
}
|
|
223
|
+
decoded = false;
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
contentType,
|
|
227
|
+
decoded,
|
|
228
|
+
abi: abiData
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
var getABI = {
|
|
233
|
+
raw: async ({ contracts, universalWrapper }, name) => {
|
|
234
|
+
const prData = await _getABI.raw({ contracts }, name);
|
|
235
|
+
return universalWrapper.raw(name, prData.data);
|
|
236
|
+
},
|
|
237
|
+
decode: async ({ contracts, universalWrapper }, data) => {
|
|
238
|
+
const urData = await universalWrapper.decode(data);
|
|
239
|
+
if (!urData)
|
|
240
|
+
return;
|
|
241
|
+
return _getABI.decode({ contracts }, urData.data);
|
|
242
|
+
}
|
|
243
|
+
};
|
|
169
244
|
export {
|
|
245
|
+
_getABI,
|
|
170
246
|
_getAddr,
|
|
171
247
|
_getContentHash,
|
|
172
248
|
_getText,
|
|
249
|
+
getABI,
|
|
173
250
|
getAddr,
|
|
174
251
|
getContentHash,
|
|
175
252
|
getText
|
|
@@ -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
2
|
import { defaultAbiCoder } from "@ethersproject/abi/lib.esm/abi-coder.js";
|
|
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,
|
|
@@ -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",
|