@ensdomains/ensjs 3.0.0-alpha.20 → 3.0.0-alpha.22
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/{functions/renewName.js → contracts/bulkRenewal.js} +6 -14
- package/dist/cjs/contracts/getContractAddress.js +2 -1
- package/dist/cjs/contracts/index.js +5 -0
- package/dist/cjs/functions/deleteSubname.js +40 -8
- package/dist/cjs/functions/getPrice.js +55 -8
- package/dist/cjs/functions/getSubnames.js +30 -94
- package/dist/cjs/functions/renewNames.js +42 -0
- package/dist/cjs/generated/BulkRenewal.js +16 -0
- package/dist/cjs/generated/factories/BulkRenewal__factory.js +120 -0
- package/dist/cjs/generated/factories/index.js +2 -0
- package/dist/cjs/generated/index.js +2 -0
- package/dist/cjs/index.js +5 -4
- package/dist/cjs/utils/registerHelpers.js +2 -1
- package/dist/esm/contracts/bulkRenewal.mjs +6 -0
- package/dist/esm/contracts/getContractAddress.mjs +2 -1
- package/dist/esm/contracts/index.mjs +5 -0
- package/dist/esm/functions/deleteSubname.mjs +40 -8
- package/dist/esm/functions/getPrice.mjs +56 -9
- package/dist/esm/functions/getSubnames.mjs +30 -94
- package/dist/esm/functions/renewNames.mjs +23 -0
- package/dist/esm/generated/BulkRenewal.mjs +0 -0
- package/dist/esm/generated/factories/BulkRenewal__factory.mjs +108 -0
- package/dist/esm/generated/factories/index.mjs +2 -0
- package/dist/esm/generated/index.mjs +2 -0
- package/dist/esm/index.mjs +5 -4
- package/dist/esm/utils/registerHelpers.mjs +2 -1
- package/dist/types/contracts/bulkRenewal.d.ts +3 -0
- package/dist/types/contracts/index.d.ts +1 -0
- package/dist/types/contracts/types.d.ts +1 -1
- package/dist/types/functions/commitName.d.ts +1 -1
- package/dist/types/functions/deleteSubname.d.ts +5 -2
- package/dist/types/functions/getPrice.d.ts +2 -2
- package/dist/types/functions/getSubnames.d.ts +1 -1
- package/dist/types/functions/registerName.d.ts +2 -5
- package/dist/types/functions/{renewName.d.ts → renewNames.d.ts} +2 -2
- package/dist/types/generated/BulkRenewal.d.ts +76 -0
- package/dist/types/generated/factories/BulkRenewal__factory.d.ts +32 -0
- package/dist/types/generated/factories/index.d.ts +1 -0
- package/dist/types/generated/index.d.ts +2 -0
- package/dist/types/index.d.ts +5 -5
- package/dist/types/utils/fuses.d.ts +2 -0
- package/dist/types/utils/registerHelpers.d.ts +13 -9
- package/package.json +1 -1
- package/src/contracts/bulkRenewal.ts +6 -0
- package/src/contracts/getContractAddress.ts +1 -0
- package/src/contracts/index.ts +6 -0
- package/src/contracts/types.ts +1 -0
- package/src/functions/deleteSubname.ts +51 -11
- package/src/functions/getNames.test.ts +10 -1
- package/src/functions/getPrice.test.ts +52 -0
- package/src/functions/getPrice.ts +61 -9
- package/src/functions/getProfile.test.ts +5 -1
- package/src/functions/getSubnames.test.ts +669 -29
- package/src/functions/getSubnames.ts +39 -98
- package/src/functions/registerName.ts +2 -5
- package/src/functions/{renewName.test.ts → renewNames.test.ts} +22 -2
- package/src/functions/renewNames.ts +30 -0
- package/src/generated/BulkRenewal.ts +197 -0
- package/src/generated/factories/BulkRenewal__factory.ts +108 -0
- package/src/generated/factories/index.ts +1 -0
- package/src/generated/index.ts +2 -0
- package/src/index.ts +6 -5
- package/src/utils/fuses.ts +3 -1
- package/src/utils/registerHelpers.ts +18 -9
- package/dist/esm/functions/renewName.mjs +0 -14
- package/src/functions/renewName.ts +0 -22
|
@@ -16,18 +16,10 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
default: () =>
|
|
19
|
+
var bulkRenewal_exports = {};
|
|
20
|
+
__export(bulkRenewal_exports, {
|
|
21
|
+
default: () => bulkRenewal_default
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
value
|
|
27
|
-
}) {
|
|
28
|
-
const labels = name.split(".");
|
|
29
|
-
if (labels.length !== 2 || labels[1] !== "eth")
|
|
30
|
-
throw new Error("Currently only .eth TLD renewals are supported");
|
|
31
|
-
const controller = await contracts.getEthRegistrarController();
|
|
32
|
-
return controller.populateTransaction.renew(labels[0], duration, { value });
|
|
33
|
-
}
|
|
23
|
+
module.exports = __toCommonJS(bulkRenewal_exports);
|
|
24
|
+
var import_BulkRenewal_factory = require("../generated/factories/BulkRenewal__factory");
|
|
25
|
+
var bulkRenewal_default = (provider, address) => import_BulkRenewal_factory.BulkRenewal__factory.connect(address, provider);
|
|
@@ -51,7 +51,8 @@ const addresses = {
|
|
|
51
51
|
UniversalResolver: {
|
|
52
52
|
"1": "0x580AF46E06DaaD47eb5940526FD64d95b815Cb70",
|
|
53
53
|
"4": "0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376"
|
|
54
|
-
}
|
|
54
|
+
},
|
|
55
|
+
BulkRenewal: "0xfF252725f6122A92551A5FA9a6b6bf10eb0Be035"
|
|
55
56
|
};
|
|
56
57
|
const getContractAddress = (networkId) => (contractName) => {
|
|
57
58
|
try {
|
|
@@ -35,6 +35,7 @@ var import_publicResolver = __toESM(require("./publicResolver"));
|
|
|
35
35
|
var import_registry = __toESM(require("./registry"));
|
|
36
36
|
var import_reverseRegistrar = __toESM(require("./reverseRegistrar"));
|
|
37
37
|
var import_universalResolver = __toESM(require("./universalResolver"));
|
|
38
|
+
var import_bulkRenewal = __toESM(require("./bulkRenewal"));
|
|
38
39
|
class ContractManager {
|
|
39
40
|
provider;
|
|
40
41
|
fetchAddress;
|
|
@@ -78,4 +79,8 @@ class ContractManager {
|
|
|
78
79
|
import_ethRegistrarController.default
|
|
79
80
|
);
|
|
80
81
|
getMulticall = this.generateContractGetter("Multicall", import_multicall.default);
|
|
82
|
+
getBulkRenewal = this.generateContractGetter(
|
|
83
|
+
"BulkRenewal",
|
|
84
|
+
import_bulkRenewal.default
|
|
85
|
+
);
|
|
81
86
|
}
|
|
@@ -21,12 +21,44 @@ __export(deleteSubname_exports, {
|
|
|
21
21
|
default: () => deleteSubname_default
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(deleteSubname_exports);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
var import_ethers = require("ethers");
|
|
25
|
+
var import_normalise = require("../utils/normalise");
|
|
26
|
+
async function deleteSubname_default({ contracts, signer }, name, { contract }) {
|
|
27
|
+
const labels = name.split(".");
|
|
28
|
+
if (labels.length !== 3) {
|
|
29
|
+
throw new Error("ENS.js currently only supports deleting 2LDs, not TLDs");
|
|
30
|
+
}
|
|
31
|
+
if (labels[2] !== "eth") {
|
|
32
|
+
throw new Error("ENS.js currently only supports deleting .eth 2LDs");
|
|
33
|
+
}
|
|
34
|
+
const label = labels.shift();
|
|
35
|
+
const labelhash = import_ethers.ethers.utils.solidityKeccak256(["string"], [label]);
|
|
36
|
+
const parentNodehash = (0, import_normalise.namehash)(labels.join("."));
|
|
37
|
+
switch (contract) {
|
|
38
|
+
case "registry": {
|
|
39
|
+
const registry = (await contracts.getRegistry()).connect(signer);
|
|
40
|
+
return registry.populateTransaction.setSubnodeRecord(
|
|
41
|
+
parentNodehash,
|
|
42
|
+
labelhash,
|
|
43
|
+
"0x0000000000000000000000000000000000000000",
|
|
44
|
+
"0x0000000000000000000000000000000000000000",
|
|
45
|
+
0
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
case "nameWrapper": {
|
|
49
|
+
const nameWrapper = (await contracts.getNameWrapper()).connect(signer);
|
|
50
|
+
return nameWrapper.populateTransaction.setSubnodeRecord(
|
|
51
|
+
parentNodehash,
|
|
52
|
+
label,
|
|
53
|
+
"0x0000000000000000000000000000000000000000",
|
|
54
|
+
"0x0000000000000000000000000000000000000000",
|
|
55
|
+
0,
|
|
56
|
+
0,
|
|
57
|
+
0
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
default: {
|
|
61
|
+
throw new Error(`Unknown contract: ${contract}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
32
64
|
}
|
|
@@ -22,12 +22,36 @@ __export(getPrice_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(getPrice_exports);
|
|
24
24
|
var import_ethers = require("ethers");
|
|
25
|
-
const raw = async ({ contracts, multicallWrapper },
|
|
25
|
+
const raw = async ({ contracts, multicallWrapper }, nameOrNames, duration, legacy) => {
|
|
26
|
+
const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];
|
|
27
|
+
if (names.length > 1) {
|
|
28
|
+
const bulkRenewal = await contracts?.getBulkRenewal();
|
|
29
|
+
const baseCall2 = {
|
|
30
|
+
to: bulkRenewal.address,
|
|
31
|
+
data: bulkRenewal.interface.encodeFunctionData("rentPrice", [
|
|
32
|
+
names,
|
|
33
|
+
duration
|
|
34
|
+
])
|
|
35
|
+
};
|
|
36
|
+
if (legacy) {
|
|
37
|
+
return multicallWrapper.raw([
|
|
38
|
+
baseCall2,
|
|
39
|
+
{
|
|
40
|
+
to: bulkRenewal.address,
|
|
41
|
+
data: bulkRenewal.interface.encodeFunctionData("rentPrice", [
|
|
42
|
+
names,
|
|
43
|
+
0
|
|
44
|
+
])
|
|
45
|
+
}
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
return baseCall2;
|
|
49
|
+
}
|
|
26
50
|
const controller = await contracts?.getEthRegistrarController();
|
|
27
51
|
const baseCall = {
|
|
28
52
|
to: controller.address,
|
|
29
53
|
data: controller.interface.encodeFunctionData("rentPrice", [
|
|
30
|
-
|
|
54
|
+
names[0],
|
|
31
55
|
duration
|
|
32
56
|
])
|
|
33
57
|
};
|
|
@@ -36,20 +60,42 @@ const raw = async ({ contracts, multicallWrapper }, name, duration, legacy) => {
|
|
|
36
60
|
baseCall,
|
|
37
61
|
{
|
|
38
62
|
to: controller.address,
|
|
39
|
-
data: controller.interface.encodeFunctionData("rentPrice", [
|
|
63
|
+
data: controller.interface.encodeFunctionData("rentPrice", [
|
|
64
|
+
names[0],
|
|
65
|
+
0
|
|
66
|
+
])
|
|
40
67
|
}
|
|
41
68
|
]);
|
|
42
69
|
}
|
|
43
70
|
return baseCall;
|
|
44
71
|
};
|
|
45
|
-
const decode = async ({ contracts, multicallWrapper }, data,
|
|
72
|
+
const decode = async ({ contracts, multicallWrapper }, data, _nameOrNames, _duration, legacy) => {
|
|
46
73
|
if (data === null)
|
|
47
74
|
return;
|
|
48
|
-
const controller = await contracts?.getEthRegistrarController();
|
|
49
75
|
try {
|
|
50
76
|
let base;
|
|
51
77
|
let premium;
|
|
52
|
-
|
|
78
|
+
const isBulkRenewal = Array.isArray(_nameOrNames) && _nameOrNames.length > 1;
|
|
79
|
+
if (isBulkRenewal && legacy) {
|
|
80
|
+
const result = await multicallWrapper.decode(data);
|
|
81
|
+
const [price] = import_ethers.utils.defaultAbiCoder.decode(
|
|
82
|
+
["uint256"],
|
|
83
|
+
result[0].returnData
|
|
84
|
+
);
|
|
85
|
+
[premium] = import_ethers.utils.defaultAbiCoder.decode(
|
|
86
|
+
["uint256"],
|
|
87
|
+
result[1].returnData
|
|
88
|
+
);
|
|
89
|
+
base = price.sub(premium);
|
|
90
|
+
} else if (isBulkRenewal) {
|
|
91
|
+
const bulkRenewal = await contracts?.getBulkRenewal();
|
|
92
|
+
const result = bulkRenewal.interface.decodeFunctionResult(
|
|
93
|
+
"rentPrice",
|
|
94
|
+
data
|
|
95
|
+
);
|
|
96
|
+
[base] = result;
|
|
97
|
+
premium = import_ethers.BigNumber.from(0);
|
|
98
|
+
} else if (!isBulkRenewal && legacy) {
|
|
53
99
|
const result = await multicallWrapper.decode(data);
|
|
54
100
|
const [price] = import_ethers.utils.defaultAbiCoder.decode(
|
|
55
101
|
["uint256"],
|
|
@@ -61,11 +107,12 @@ const decode = async ({ contracts, multicallWrapper }, data, _name, _number, leg
|
|
|
61
107
|
);
|
|
62
108
|
base = price.sub(premium);
|
|
63
109
|
} else {
|
|
64
|
-
;
|
|
65
|
-
|
|
110
|
+
const controller = await contracts?.getEthRegistrarController();
|
|
111
|
+
const result = controller.interface.decodeFunctionResult(
|
|
66
112
|
"rentPrice",
|
|
67
113
|
data
|
|
68
114
|
);
|
|
115
|
+
[base, premium] = result[0];
|
|
69
116
|
}
|
|
70
117
|
return {
|
|
71
118
|
base,
|
|
@@ -24,15 +24,36 @@ module.exports = __toCommonJS(getSubnames_exports);
|
|
|
24
24
|
var import_format = require("../utils/format");
|
|
25
25
|
var import_labels = require("../utils/labels");
|
|
26
26
|
var import_normalise = require("../utils/normalise");
|
|
27
|
-
const largeQuery = async ({ gqlInstance }, {
|
|
27
|
+
const largeQuery = async ({ gqlInstance }, {
|
|
28
|
+
name,
|
|
29
|
+
pageSize = 10,
|
|
30
|
+
orderDirection,
|
|
31
|
+
orderBy,
|
|
32
|
+
lastSubnames = [],
|
|
33
|
+
search = ""
|
|
34
|
+
}) => {
|
|
28
35
|
const { client } = gqlInstance;
|
|
36
|
+
const lastSubname = lastSubnames?.[lastSubnames.length - 1];
|
|
37
|
+
const lastCreatedAt = lastSubname?.createdAt;
|
|
38
|
+
const lastLabelName = lastSubname?.labelName;
|
|
39
|
+
let whereFilter = "";
|
|
40
|
+
if (orderBy === "createdAt" && lastCreatedAt) {
|
|
41
|
+
whereFilter += orderDirection === "asc" ? "createdAt_gt: $lastCreatedAt" : "createdAt_lt: $lastCreatedAt";
|
|
42
|
+
} else if (orderBy === "labelName" && lastLabelName) {
|
|
43
|
+
whereFilter += orderDirection === "asc" ? "labelName_gt: $lastLabelName" : "labelName_lt: $lastLabelName";
|
|
44
|
+
}
|
|
45
|
+
if (search) {
|
|
46
|
+
whereFilter += " labelName_contains: $search";
|
|
47
|
+
}
|
|
29
48
|
const finalQuery = gqlInstance.gql`
|
|
30
49
|
query getSubnames(
|
|
31
50
|
$id: ID!
|
|
32
51
|
$first: Int
|
|
33
52
|
$lastCreatedAt: BigInt
|
|
53
|
+
$lastLabelName: String
|
|
34
54
|
$orderBy: Domain_orderBy
|
|
35
55
|
$orderDirection: OrderDirection
|
|
56
|
+
$search: String
|
|
36
57
|
) {
|
|
37
58
|
domain(
|
|
38
59
|
id: $id
|
|
@@ -42,7 +63,9 @@ const largeQuery = async ({ gqlInstance }, { name, pageSize = 10, orderDirection
|
|
|
42
63
|
first: $first
|
|
43
64
|
orderBy: $orderBy
|
|
44
65
|
orderDirection: $orderDirection
|
|
45
|
-
where: {
|
|
66
|
+
where: {
|
|
67
|
+
${whereFilter}
|
|
68
|
+
}
|
|
46
69
|
) {
|
|
47
70
|
id
|
|
48
71
|
labelName
|
|
@@ -61,9 +84,11 @@ const largeQuery = async ({ gqlInstance }, { name, pageSize = 10, orderDirection
|
|
|
61
84
|
const queryVars = {
|
|
62
85
|
id: (0, import_normalise.namehash)(name),
|
|
63
86
|
first: pageSize,
|
|
64
|
-
lastCreatedAt
|
|
87
|
+
lastCreatedAt,
|
|
88
|
+
lastLabelName,
|
|
65
89
|
orderBy,
|
|
66
|
-
orderDirection
|
|
90
|
+
orderDirection,
|
|
91
|
+
search: search?.toLowerCase()
|
|
67
92
|
};
|
|
68
93
|
const { domain } = await client.request(finalQuery, queryVars);
|
|
69
94
|
const subdomains = domain.subdomains.map((subname) => {
|
|
@@ -79,96 +104,7 @@ const largeQuery = async ({ gqlInstance }, { name, pageSize = 10, orderDirection
|
|
|
79
104
|
subnameCount: domain.subdomainCount
|
|
80
105
|
};
|
|
81
106
|
};
|
|
82
|
-
const smallQuery = async ({ gqlInstance }, { name, page, pageSize = 10, orderDirection, orderBy }) => {
|
|
83
|
-
const { client } = gqlInstance;
|
|
84
|
-
const subdomainsGql = `
|
|
85
|
-
id
|
|
86
|
-
labelName
|
|
87
|
-
labelhash
|
|
88
|
-
isMigrated
|
|
89
|
-
name
|
|
90
|
-
subdomainCount
|
|
91
|
-
createdAt
|
|
92
|
-
owner {
|
|
93
|
-
id
|
|
94
|
-
}
|
|
95
|
-
`;
|
|
96
|
-
let queryVars = {};
|
|
97
|
-
let finalQuery = "";
|
|
98
|
-
if (typeof page !== "number") {
|
|
99
|
-
finalQuery = gqlInstance.gql`
|
|
100
|
-
query getSubnames(
|
|
101
|
-
$id: ID!
|
|
102
|
-
$orderBy: Domain_orderBy
|
|
103
|
-
$orderDirection: OrderDirection
|
|
104
|
-
) {
|
|
105
|
-
domain(
|
|
106
|
-
id: $id
|
|
107
|
-
) {
|
|
108
|
-
subdomains(
|
|
109
|
-
orderBy: $orderBy
|
|
110
|
-
orderDirection: $orderDirection
|
|
111
|
-
) {
|
|
112
|
-
${subdomainsGql}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
`;
|
|
117
|
-
queryVars = {
|
|
118
|
-
id: (0, import_normalise.namehash)(name),
|
|
119
|
-
orderBy,
|
|
120
|
-
orderDirection
|
|
121
|
-
};
|
|
122
|
-
} else {
|
|
123
|
-
finalQuery = gqlInstance.gql`
|
|
124
|
-
query getSubnames(
|
|
125
|
-
$id: ID!
|
|
126
|
-
$first: Int
|
|
127
|
-
$skip: Int
|
|
128
|
-
$orderBy: Domain_orderBy
|
|
129
|
-
$orderDirection: OrderDirection
|
|
130
|
-
) {
|
|
131
|
-
domain(
|
|
132
|
-
id: $id
|
|
133
|
-
) {
|
|
134
|
-
subdomainCount
|
|
135
|
-
subdomains(
|
|
136
|
-
first: $first
|
|
137
|
-
skip: $skip
|
|
138
|
-
orderBy: $orderBy
|
|
139
|
-
orderDirection: $orderDirection
|
|
140
|
-
) {
|
|
141
|
-
${subdomainsGql}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
`;
|
|
146
|
-
queryVars = {
|
|
147
|
-
id: (0, import_normalise.namehash)(name),
|
|
148
|
-
first: pageSize,
|
|
149
|
-
skip: (page || 0) * pageSize,
|
|
150
|
-
orderBy,
|
|
151
|
-
orderDirection
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
const { domain } = await client.request(finalQuery, queryVars);
|
|
155
|
-
const subdomains = domain.subdomains.map((subname) => {
|
|
156
|
-
const decrypted = (0, import_labels.decryptName)(subname.name);
|
|
157
|
-
return {
|
|
158
|
-
...subname,
|
|
159
|
-
name: decrypted,
|
|
160
|
-
truncatedName: (0, import_format.truncateFormat)(decrypted)
|
|
161
|
-
};
|
|
162
|
-
});
|
|
163
|
-
return {
|
|
164
|
-
subnames: subdomains,
|
|
165
|
-
subnameCount: domain.subdomainCount
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
107
|
const getSubnames = (injected, functionArgs) => {
|
|
169
|
-
|
|
170
|
-
return largeQuery(injected, functionArgs);
|
|
171
|
-
}
|
|
172
|
-
return smallQuery(injected, functionArgs);
|
|
108
|
+
return largeQuery(injected, functionArgs);
|
|
173
109
|
};
|
|
174
110
|
var getSubnames_default = getSubnames;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var renewNames_exports = {};
|
|
20
|
+
__export(renewNames_exports, {
|
|
21
|
+
default: () => renewNames_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(renewNames_exports);
|
|
24
|
+
async function renewNames_default({ contracts }, nameOrNames, {
|
|
25
|
+
duration,
|
|
26
|
+
value
|
|
27
|
+
}) {
|
|
28
|
+
const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];
|
|
29
|
+
const labels = names.map((name) => {
|
|
30
|
+
const label = name.split(".");
|
|
31
|
+
if (label.length !== 2 || label[1] !== "eth") {
|
|
32
|
+
throw new Error("Currently only .eth TLD renewals are supported");
|
|
33
|
+
}
|
|
34
|
+
return label[0];
|
|
35
|
+
});
|
|
36
|
+
if (labels.length === 1) {
|
|
37
|
+
const controller = await contracts.getEthRegistrarController();
|
|
38
|
+
return controller.populateTransaction.renew(labels[0], duration, { value });
|
|
39
|
+
}
|
|
40
|
+
const bulkRenewal = await contracts.getBulkRenewal();
|
|
41
|
+
return bulkRenewal.populateTransaction.renewAll(labels, duration, { value });
|
|
42
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var BulkRenewal_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(BulkRenewal_exports);
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var BulkRenewal_factory_exports = {};
|
|
20
|
+
__export(BulkRenewal_factory_exports, {
|
|
21
|
+
BulkRenewal__factory: () => BulkRenewal__factory
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(BulkRenewal_factory_exports);
|
|
24
|
+
var import_ethers = require("ethers");
|
|
25
|
+
const _abi = [
|
|
26
|
+
{
|
|
27
|
+
inputs: [
|
|
28
|
+
{
|
|
29
|
+
internalType: "contract ENS",
|
|
30
|
+
name: "_ens",
|
|
31
|
+
type: "address"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
stateMutability: "nonpayable",
|
|
35
|
+
type: "constructor"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
inputs: [],
|
|
39
|
+
name: "ens",
|
|
40
|
+
outputs: [
|
|
41
|
+
{
|
|
42
|
+
internalType: "contract ENS",
|
|
43
|
+
name: "",
|
|
44
|
+
type: "address"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
stateMutability: "view",
|
|
48
|
+
type: "function"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
inputs: [
|
|
52
|
+
{
|
|
53
|
+
internalType: "string[]",
|
|
54
|
+
name: "names",
|
|
55
|
+
type: "string[]"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
internalType: "uint256",
|
|
59
|
+
name: "duration",
|
|
60
|
+
type: "uint256"
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
name: "renewAll",
|
|
64
|
+
outputs: [],
|
|
65
|
+
stateMutability: "payable",
|
|
66
|
+
type: "function"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
inputs: [
|
|
70
|
+
{
|
|
71
|
+
internalType: "string[]",
|
|
72
|
+
name: "names",
|
|
73
|
+
type: "string[]"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
internalType: "uint256",
|
|
77
|
+
name: "duration",
|
|
78
|
+
type: "uint256"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
name: "rentPrice",
|
|
82
|
+
outputs: [
|
|
83
|
+
{
|
|
84
|
+
internalType: "uint256",
|
|
85
|
+
name: "total",
|
|
86
|
+
type: "uint256"
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
stateMutability: "view",
|
|
90
|
+
type: "function"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
inputs: [
|
|
94
|
+
{
|
|
95
|
+
internalType: "bytes4",
|
|
96
|
+
name: "interfaceID",
|
|
97
|
+
type: "bytes4"
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
name: "supportsInterface",
|
|
101
|
+
outputs: [
|
|
102
|
+
{
|
|
103
|
+
internalType: "bool",
|
|
104
|
+
name: "",
|
|
105
|
+
type: "bool"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
stateMutability: "pure",
|
|
109
|
+
type: "function"
|
|
110
|
+
}
|
|
111
|
+
];
|
|
112
|
+
class BulkRenewal__factory {
|
|
113
|
+
static abi = _abi;
|
|
114
|
+
static createInterface() {
|
|
115
|
+
return new import_ethers.utils.Interface(_abi);
|
|
116
|
+
}
|
|
117
|
+
static connect(address, signerOrProvider) {
|
|
118
|
+
return new import_ethers.Contract(address, _abi, signerOrProvider);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var factories_exports = {};
|
|
20
20
|
__export(factories_exports, {
|
|
21
21
|
BaseRegistrarImplementation__factory: () => import_BaseRegistrarImplementation_factory.BaseRegistrarImplementation__factory,
|
|
22
|
+
BulkRenewal__factory: () => import_BulkRenewal_factory.BulkRenewal__factory,
|
|
22
23
|
DNSRegistrar__factory: () => import_DNSRegistrar_factory.DNSRegistrar__factory,
|
|
23
24
|
DNSSECImpl__factory: () => import_DNSSECImpl_factory.DNSSECImpl__factory,
|
|
24
25
|
DefaultReverseResolver__factory: () => import_DefaultReverseResolver_factory.DefaultReverseResolver__factory,
|
|
@@ -41,6 +42,7 @@ __export(factories_exports, {
|
|
|
41
42
|
});
|
|
42
43
|
module.exports = __toCommonJS(factories_exports);
|
|
43
44
|
var import_BaseRegistrarImplementation_factory = require("./BaseRegistrarImplementation__factory");
|
|
45
|
+
var import_BulkRenewal_factory = require("./BulkRenewal__factory");
|
|
44
46
|
var import_DNSRegistrar_factory = require("./DNSRegistrar__factory");
|
|
45
47
|
var import_DNSSECImpl_factory = require("./DNSSECImpl__factory");
|
|
46
48
|
var import_DefaultReverseResolver_factory = require("./DefaultReverseResolver__factory");
|
|
@@ -25,6 +25,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
25
25
|
var generated_exports = {};
|
|
26
26
|
__export(generated_exports, {
|
|
27
27
|
BaseRegistrarImplementation__factory: () => import_BaseRegistrarImplementation_factory.BaseRegistrarImplementation__factory,
|
|
28
|
+
BulkRenewal__factory: () => import_BulkRenewal_factory.BulkRenewal__factory,
|
|
28
29
|
DNSRegistrar__factory: () => import_DNSRegistrar_factory.DNSRegistrar__factory,
|
|
29
30
|
DNSSECImpl__factory: () => import_DNSSECImpl_factory.DNSSECImpl__factory,
|
|
30
31
|
DefaultReverseResolver__factory: () => import_DefaultReverseResolver_factory.DefaultReverseResolver__factory,
|
|
@@ -68,3 +69,4 @@ var import_Multicall_factory = require("./factories/Multicall__factory");
|
|
|
68
69
|
var import_NameWrapper_factory = require("./factories/NameWrapper__factory");
|
|
69
70
|
var import_StaticMetadataService_factory = require("./factories/StaticMetadataService__factory");
|
|
70
71
|
var import_UniversalResolver_factory = require("./factories/UniversalResolver__factory");
|
|
72
|
+
var import_BulkRenewal_factory = require("./factories/BulkRenewal__factory");
|
package/dist/cjs/index.js
CHANGED
|
@@ -308,7 +308,7 @@ class ENS {
|
|
|
308
308
|
);
|
|
309
309
|
deleteSubname = this.generateWriteFunction(
|
|
310
310
|
"deleteSubname",
|
|
311
|
-
["
|
|
311
|
+
["contracts"]
|
|
312
312
|
);
|
|
313
313
|
transferSubname = this.generateWriteFunction(
|
|
314
314
|
"transferSubname",
|
|
@@ -322,7 +322,8 @@ class ENS {
|
|
|
322
322
|
"registerName",
|
|
323
323
|
["contracts"]
|
|
324
324
|
);
|
|
325
|
-
|
|
326
|
-
"
|
|
327
|
-
|
|
325
|
+
renewNames = this.generateWriteFunction(
|
|
326
|
+
"renewNames",
|
|
327
|
+
["contracts"]
|
|
328
|
+
);
|
|
328
329
|
}
|
|
@@ -36,6 +36,7 @@ var import_generateFuseInput = __toESM(require("./generateFuseInput"));
|
|
|
36
36
|
var import_labels = require("./labels");
|
|
37
37
|
var import_normalise = require("./normalise");
|
|
38
38
|
var import_recordHelpers = require("./recordHelpers");
|
|
39
|
+
const MAX_INT_64 = 2n ** 64n - 1n;
|
|
39
40
|
const randomSecret = () => {
|
|
40
41
|
const bytes = Buffer.allocUnsafe(32);
|
|
41
42
|
return `0x${crypto.getRandomValues(bytes).toString("hex")}`;
|
|
@@ -74,7 +75,7 @@ const makeCommitmentData = ({
|
|
|
74
75
|
secret,
|
|
75
76
|
!!reverseRecord,
|
|
76
77
|
fuseData,
|
|
77
|
-
wrapperExpiry ||
|
|
78
|
+
wrapperExpiry || MAX_INT_64
|
|
78
79
|
];
|
|
79
80
|
};
|
|
80
81
|
const makeRegistrationData = (params) => {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// src/contracts/bulkRenewal.ts
|
|
2
|
+
import { BulkRenewal__factory } from "../generated/factories/BulkRenewal__factory.mjs";
|
|
3
|
+
var bulkRenewal_default = (provider, address) => BulkRenewal__factory.connect(address, provider);
|
|
4
|
+
export {
|
|
5
|
+
bulkRenewal_default as default
|
|
6
|
+
};
|
|
@@ -29,7 +29,8 @@ var addresses = {
|
|
|
29
29
|
UniversalResolver: {
|
|
30
30
|
"1": "0x580AF46E06DaaD47eb5940526FD64d95b815Cb70",
|
|
31
31
|
"4": "0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376"
|
|
32
|
-
}
|
|
32
|
+
},
|
|
33
|
+
BulkRenewal: "0xfF252725f6122A92551A5FA9a6b6bf10eb0Be035"
|
|
33
34
|
};
|
|
34
35
|
var getContractAddress = (networkId) => (contractName) => {
|
|
35
36
|
try {
|
|
@@ -7,6 +7,7 @@ import getPublicResolver from "./publicResolver.mjs";
|
|
|
7
7
|
import getRegistry from "./registry.mjs";
|
|
8
8
|
import getReverseRegistrar from "./reverseRegistrar.mjs";
|
|
9
9
|
import getUniversalResolver from "./universalResolver.mjs";
|
|
10
|
+
import getBulkRenewal from "./bulkRenewal.mjs";
|
|
10
11
|
var ContractManager = class {
|
|
11
12
|
provider;
|
|
12
13
|
fetchAddress;
|
|
@@ -50,6 +51,10 @@ var ContractManager = class {
|
|
|
50
51
|
getEthRegistrarController
|
|
51
52
|
);
|
|
52
53
|
getMulticall = this.generateContractGetter("Multicall", getMulticall);
|
|
54
|
+
getBulkRenewal = this.generateContractGetter(
|
|
55
|
+
"BulkRenewal",
|
|
56
|
+
getBulkRenewal
|
|
57
|
+
);
|
|
53
58
|
};
|
|
54
59
|
export {
|
|
55
60
|
ContractManager as default
|