@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
package/dist/cjs/utils/fuses.js
CHANGED
|
@@ -18,32 +18,66 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var fuses_exports = {};
|
|
20
20
|
__export(fuses_exports, {
|
|
21
|
+
CHILD_CONTROLLED_FUSES: () => CHILD_CONTROLLED_FUSES,
|
|
22
|
+
PARENT_CONTROLLED_FUSES: () => PARENT_CONTROLLED_FUSES,
|
|
23
|
+
USER_SETTABLE_FUSES: () => USER_SETTABLE_FUSES,
|
|
24
|
+
childFuseEnum: () => childFuseEnum,
|
|
25
|
+
childFuseKeys: () => childFuseKeys,
|
|
21
26
|
decodeFuses: () => decodeFuses,
|
|
22
27
|
default: () => fuses_default,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
encodeFuses: () => encodeFuses,
|
|
29
|
+
fullFuseEnum: () => fullFuseEnum,
|
|
30
|
+
fullParentFuseEnum: () => fullParentFuseEnum,
|
|
31
|
+
fullParentFuseKeys: () => fullParentFuseKeys,
|
|
32
|
+
hasFuses: () => hasFuses,
|
|
33
|
+
parentFuseEnum: () => parentFuseEnum,
|
|
34
|
+
parentFuseKeys: () => parentFuseKeys,
|
|
35
|
+
unnamedChildFuses: () => unnamedChildFuses,
|
|
36
|
+
unnamedParentFuses: () => unnamedParentFuses,
|
|
37
|
+
unnamedUserSettableFuses: () => unnamedUserSettableFuses,
|
|
38
|
+
userSettableFuseEnum: () => userSettableFuseEnum,
|
|
39
|
+
userSettableFuseKeys: () => userSettableFuseKeys
|
|
26
40
|
});
|
|
27
41
|
module.exports = __toCommonJS(fuses_exports);
|
|
28
|
-
var import_bignumber = require("@ethersproject/bignumber/lib/bignumber");
|
|
29
42
|
const CANNOT_UNWRAP = 1;
|
|
30
43
|
const CANNOT_BURN_FUSES = 2;
|
|
31
44
|
const CANNOT_TRANSFER = 4;
|
|
32
45
|
const CANNOT_SET_RESOLVER = 8;
|
|
33
46
|
const CANNOT_SET_TTL = 16;
|
|
34
47
|
const CANNOT_CREATE_SUBDOMAIN = 32;
|
|
35
|
-
const PARENT_CANNOT_CONTROL =
|
|
48
|
+
const PARENT_CANNOT_CONTROL = 65536;
|
|
49
|
+
const IS_DOT_ETH = 131072;
|
|
50
|
+
const CAN_EXTEND_EXPIRY = 262144;
|
|
51
|
+
const CHILD_CONTROLLED_FUSES = 65535;
|
|
52
|
+
const PARENT_CONTROLLED_FUSES = 4294901760;
|
|
53
|
+
const USER_SETTABLE_FUSES = 4294836223;
|
|
36
54
|
const CAN_DO_EVERYTHING = 0;
|
|
37
|
-
const
|
|
55
|
+
const childFuseEnum = {
|
|
38
56
|
CANNOT_UNWRAP,
|
|
39
57
|
CANNOT_BURN_FUSES,
|
|
40
58
|
CANNOT_TRANSFER,
|
|
41
59
|
CANNOT_SET_RESOLVER,
|
|
42
60
|
CANNOT_SET_TTL,
|
|
43
|
-
CANNOT_CREATE_SUBDOMAIN
|
|
44
|
-
PARENT_CANNOT_CONTROL
|
|
61
|
+
CANNOT_CREATE_SUBDOMAIN
|
|
45
62
|
};
|
|
46
|
-
const
|
|
63
|
+
const parentFuseEnum = {
|
|
64
|
+
PARENT_CANNOT_CONTROL,
|
|
65
|
+
CAN_EXTEND_EXPIRY
|
|
66
|
+
};
|
|
67
|
+
const fullParentFuseEnum = {
|
|
68
|
+
...parentFuseEnum,
|
|
69
|
+
IS_DOT_ETH
|
|
70
|
+
};
|
|
71
|
+
const userSettableFuseEnum = {
|
|
72
|
+
...childFuseEnum,
|
|
73
|
+
...parentFuseEnum
|
|
74
|
+
};
|
|
75
|
+
const fullFuseEnum = {
|
|
76
|
+
...userSettableFuseEnum,
|
|
77
|
+
CAN_DO_EVERYTHING
|
|
78
|
+
};
|
|
79
|
+
const unnamedChildFuses = [
|
|
80
|
+
64,
|
|
47
81
|
128,
|
|
48
82
|
256,
|
|
49
83
|
512,
|
|
@@ -52,10 +86,9 @@ const unnamedFuses = [
|
|
|
52
86
|
4096,
|
|
53
87
|
8192,
|
|
54
88
|
16384,
|
|
55
|
-
32768
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
262144,
|
|
89
|
+
32768
|
|
90
|
+
];
|
|
91
|
+
const unnamedParentFuses = [
|
|
59
92
|
524288,
|
|
60
93
|
1048576,
|
|
61
94
|
2097152,
|
|
@@ -68,67 +101,199 @@ const unnamedFuses = [
|
|
|
68
101
|
268435456,
|
|
69
102
|
536870912,
|
|
70
103
|
1073741824,
|
|
71
|
-
2147483648
|
|
72
|
-
4294967296
|
|
104
|
+
2147483648
|
|
73
105
|
];
|
|
74
|
-
const
|
|
75
|
-
...
|
|
76
|
-
|
|
106
|
+
const unnamedUserSettableFuses = [
|
|
107
|
+
...unnamedChildFuses,
|
|
108
|
+
...unnamedParentFuses
|
|
109
|
+
];
|
|
110
|
+
const childFuseKeys = Object.keys(
|
|
111
|
+
childFuseEnum
|
|
112
|
+
);
|
|
113
|
+
const parentFuseKeys = Object.keys(
|
|
114
|
+
parentFuseEnum
|
|
115
|
+
);
|
|
116
|
+
const fullParentFuseKeys = Object.keys(
|
|
117
|
+
fullParentFuseEnum
|
|
118
|
+
);
|
|
119
|
+
const userSettableFuseKeys = Object.keys(
|
|
120
|
+
userSettableFuseEnum
|
|
121
|
+
);
|
|
122
|
+
const checkNumber = (fuses) => {
|
|
123
|
+
if (fuses > 2 ** 32 || fuses < 1) {
|
|
124
|
+
throw new Error(
|
|
125
|
+
`Fuse number must be limited to uint32, ${fuses} was too ${fuses < 1 ? "low" : "high"}.`
|
|
126
|
+
);
|
|
127
|
+
} else if (fuses % 1 !== 0) {
|
|
128
|
+
throw new Error(`Fuse number must be an integer, ${fuses} was not.`);
|
|
129
|
+
} else if ((fuses & USER_SETTABLE_FUSES) !== fuses) {
|
|
130
|
+
throw new Error(
|
|
131
|
+
`Fuse number must be limited to user settable fuses, ${fuses} was not.`
|
|
132
|
+
);
|
|
133
|
+
}
|
|
77
134
|
};
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
135
|
+
const testFuses = (fuses) => {
|
|
136
|
+
if ("named" in fuses && fuses.named.length > 0) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
if ("unnamed" in fuses && fuses.unnamed.length > 0) {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
if ("number" in fuses && fuses.number !== 0) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
return false;
|
|
146
|
+
};
|
|
147
|
+
const hasFuses = (fuses) => {
|
|
148
|
+
if (typeof fuses === "number") {
|
|
149
|
+
return fuses !== 0;
|
|
150
|
+
}
|
|
151
|
+
if (typeof fuses === "object") {
|
|
152
|
+
if ("child" in fuses && testFuses(fuses.child)) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
if ("parent" in fuses && testFuses(fuses.parent)) {
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
if (testFuses(fuses)) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
163
|
+
};
|
|
164
|
+
function encodeFuses(fuses, restrictTo) {
|
|
82
165
|
let encodedFuses = 0;
|
|
83
|
-
if (
|
|
84
|
-
if (
|
|
85
|
-
throw new Error(
|
|
86
|
-
`Fuse number must be limited to uint32, ${fuses.fuseNumberToBurn} was too ${fuses.fuseNumberToBurn < 1 ? "low" : "high"}.`
|
|
87
|
-
);
|
|
88
|
-
} else if (fuses.fuseNumberToBurn % 1 !== 0) {
|
|
89
|
-
throw new Error(
|
|
90
|
-
`Fuse number must be an integer, ${fuses.fuseNumberToBurn} was not.`
|
|
91
|
-
);
|
|
166
|
+
if (typeof fuses === "number") {
|
|
167
|
+
if (restrictTo) {
|
|
168
|
+
throw new Error("Cannot specify an exact fuse value when restricted.");
|
|
92
169
|
}
|
|
93
|
-
|
|
170
|
+
checkNumber(fuses);
|
|
171
|
+
encodedFuses = fuses;
|
|
94
172
|
} else {
|
|
95
|
-
|
|
96
|
-
|
|
173
|
+
let fusesRef = fuses;
|
|
174
|
+
let allowedNamed = [];
|
|
175
|
+
let allowedUnnamed = [];
|
|
176
|
+
let namedArray = [];
|
|
177
|
+
let unnamedArray = [];
|
|
178
|
+
if (restrictTo) {
|
|
179
|
+
if ("parent" in fuses || "child" in fuses) {
|
|
180
|
+
throw new Error("Can't specify fuse category when restricted.");
|
|
181
|
+
}
|
|
182
|
+
allowedNamed = restrictTo === "child" ? childFuseKeys : parentFuseKeys;
|
|
183
|
+
allowedUnnamed = restrictTo === "child" ? unnamedChildFuses : unnamedParentFuses;
|
|
184
|
+
fusesRef = { [restrictTo]: fuses };
|
|
185
|
+
} else {
|
|
186
|
+
allowedNamed = userSettableFuseKeys;
|
|
187
|
+
allowedUnnamed = unnamedUserSettableFuses;
|
|
188
|
+
}
|
|
189
|
+
if ("parent" in fusesRef) {
|
|
190
|
+
if ("named" in fusesRef.parent)
|
|
191
|
+
namedArray = fusesRef.parent.named;
|
|
192
|
+
if ("unnamed" in fusesRef.parent)
|
|
193
|
+
unnamedArray = fusesRef.parent.unnamed;
|
|
194
|
+
if ("number" in fusesRef.parent) {
|
|
195
|
+
if ("named" in fusesRef.parent || "unnamed" in fusesRef.parent) {
|
|
196
|
+
throw new Error(
|
|
197
|
+
"Cannot specify both a fuse number and named/unnamed fuses."
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
checkNumber(fusesRef.parent.number);
|
|
201
|
+
if ((fusesRef.parent.number & PARENT_CONTROLLED_FUSES) !== fusesRef.parent.number) {
|
|
202
|
+
throw new Error(
|
|
203
|
+
"Cannot specify a fuse value to set that is outside of the parent's control."
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
encodedFuses |= fusesRef.parent.number;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if ("child" in fusesRef) {
|
|
210
|
+
if ("named" in fusesRef.child)
|
|
211
|
+
namedArray = [...namedArray, ...fusesRef.child.named];
|
|
212
|
+
if ("unnamed" in fusesRef.child)
|
|
213
|
+
unnamedArray = [...unnamedArray, ...fusesRef.child.unnamed];
|
|
214
|
+
if ("number" in fusesRef.child) {
|
|
215
|
+
if ("named" in fusesRef.child || "unnamed" in fusesRef.child) {
|
|
216
|
+
throw new Error(
|
|
217
|
+
"Cannot specify both a fuse number and named/unnamed fuses."
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
checkNumber(fusesRef.child.number);
|
|
221
|
+
if ((fusesRef.child.number & CHILD_CONTROLLED_FUSES) !== fusesRef.child.number) {
|
|
222
|
+
throw new Error(
|
|
223
|
+
"Cannot specify a fuse value to set that is outside of the owner's control."
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
encodedFuses |= fusesRef.child.number;
|
|
227
|
+
}
|
|
97
228
|
}
|
|
98
|
-
if (
|
|
99
|
-
|
|
100
|
-
|
|
229
|
+
if (!namedArray.length && !unnamedArray.length && !encodedFuses) {
|
|
230
|
+
throw new Error("Must specify at least one fuse.");
|
|
231
|
+
}
|
|
232
|
+
for (const fuse of namedArray) {
|
|
233
|
+
if (!allowedNamed.includes(fuse)) {
|
|
234
|
+
if (!userSettableFuseKeys.includes(fuse)) {
|
|
101
235
|
throw new Error(`${fuse} is not a valid named fuse.`);
|
|
102
236
|
}
|
|
103
|
-
|
|
237
|
+
throw new Error(`Fuse ${fuse} is not allowed for this operation.`);
|
|
104
238
|
}
|
|
239
|
+
encodedFuses |= userSettableFuseEnum[fuse];
|
|
105
240
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (!
|
|
241
|
+
for (const fuse of unnamedArray) {
|
|
242
|
+
if (!allowedUnnamed.includes(fuse)) {
|
|
243
|
+
if (!unnamedUserSettableFuses.includes(fuse)) {
|
|
109
244
|
throw new Error(
|
|
110
|
-
`${fuse} is not a valid unnamed fuse. If you are trying to
|
|
245
|
+
`${fuse} is not a valid unnamed fuse. If you are trying to set a named fuse, use the named property.`
|
|
111
246
|
);
|
|
112
247
|
}
|
|
113
|
-
|
|
248
|
+
throw new Error(`Fuse ${fuse} is not allowed for this operation.`);
|
|
114
249
|
}
|
|
250
|
+
encodedFuses |= fuse;
|
|
115
251
|
}
|
|
116
252
|
}
|
|
117
253
|
return encodedFuses;
|
|
118
|
-
}
|
|
119
|
-
const
|
|
120
|
-
const bnFuses = import_bignumber.BigNumber.from(fuses);
|
|
254
|
+
}
|
|
255
|
+
const decodeNamedFuses = (fuses, arr) => {
|
|
121
256
|
const fuseObj = Object.fromEntries(
|
|
122
|
-
|
|
257
|
+
arr.map((fuse) => [
|
|
123
258
|
fuse,
|
|
124
|
-
|
|
259
|
+
(fuses & userSettableFuseEnum[fuse]) > 0
|
|
125
260
|
])
|
|
126
261
|
);
|
|
127
|
-
if (bnFuses.eq(0)) {
|
|
128
|
-
fuseObj.CAN_DO_EVERYTHING = true;
|
|
129
|
-
} else {
|
|
130
|
-
fuseObj.CAN_DO_EVERYTHING = false;
|
|
131
|
-
}
|
|
132
262
|
return fuseObj;
|
|
133
263
|
};
|
|
264
|
+
const decodeUnnamedFuses = (fuses, arr) => {
|
|
265
|
+
const fuseObj = Object.fromEntries(
|
|
266
|
+
arr.map((fuse) => [fuse, (fuses & fuse) > 0])
|
|
267
|
+
);
|
|
268
|
+
return fuseObj;
|
|
269
|
+
};
|
|
270
|
+
const decodeFuses = (fuses) => {
|
|
271
|
+
const parentNamedFuses = decodeNamedFuses(
|
|
272
|
+
fuses,
|
|
273
|
+
fullParentFuseKeys
|
|
274
|
+
);
|
|
275
|
+
const parentUnnamedFuses = decodeUnnamedFuses(
|
|
276
|
+
fuses,
|
|
277
|
+
unnamedParentFuses
|
|
278
|
+
);
|
|
279
|
+
const childNamedFuses = decodeNamedFuses(
|
|
280
|
+
fuses,
|
|
281
|
+
childFuseKeys
|
|
282
|
+
);
|
|
283
|
+
const childUnnamedFuses = decodeUnnamedFuses(
|
|
284
|
+
fuses,
|
|
285
|
+
unnamedChildFuses
|
|
286
|
+
);
|
|
287
|
+
return {
|
|
288
|
+
parent: {
|
|
289
|
+
...parentNamedFuses,
|
|
290
|
+
unnamed: parentUnnamedFuses
|
|
291
|
+
},
|
|
292
|
+
child: {
|
|
293
|
+
...childNamedFuses,
|
|
294
|
+
CAN_DO_EVERYTHING: (fuses & CHILD_CONTROLLED_FUSES) === 0,
|
|
295
|
+
unnamed: childUnnamedFuses
|
|
296
|
+
}
|
|
297
|
+
};
|
|
298
|
+
};
|
|
134
299
|
var fuses_default = fullFuseEnum;
|
|
@@ -30,7 +30,7 @@ __export(normalise_exports, {
|
|
|
30
30
|
module.exports = __toCommonJS(normalise_exports);
|
|
31
31
|
var import_bytes = require("@ethersproject/bytes");
|
|
32
32
|
var import_keccak256 = require("@ethersproject/keccak256");
|
|
33
|
-
var
|
|
33
|
+
var import_strings = require("@ethersproject/strings");
|
|
34
34
|
var import_uts46bundle = __toESM(require("idna-uts46-hx/uts46bundle.js"));
|
|
35
35
|
var import_labels = require("./labels");
|
|
36
36
|
const zeros = new Uint8Array(32);
|
|
@@ -46,7 +46,7 @@ const namehash = (name) => {
|
|
|
46
46
|
labelSha = (0, import_labels.decodeLabelhash)(labels[i]);
|
|
47
47
|
} else {
|
|
48
48
|
const normalised = normalise(labels[i]);
|
|
49
|
-
labelSha = (0, import_keccak256.keccak256)((0,
|
|
49
|
+
labelSha = (0, import_keccak256.keccak256)((0, import_strings.toUtf8Bytes)(normalised));
|
|
50
50
|
}
|
|
51
51
|
result = (0, import_keccak256.keccak256)((0, import_bytes.concat)([result, labelSha]));
|
|
52
52
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,15 +17,22 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
18
24
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
25
|
var recordHelpers_exports = {};
|
|
20
26
|
__export(recordHelpers_exports, {
|
|
27
|
+
generateABIInput: () => generateABIInput,
|
|
21
28
|
generateRecordCallArray: () => generateRecordCallArray,
|
|
22
29
|
generateSetAddr: () => generateSetAddr,
|
|
23
30
|
generateSingleRecordCall: () => generateSingleRecordCall
|
|
24
31
|
});
|
|
25
32
|
module.exports = __toCommonJS(recordHelpers_exports);
|
|
26
33
|
var import_address_encoder = require("@ensdomains/address-encoder");
|
|
34
|
+
var import_bytes = require("@ethersproject/bytes");
|
|
35
|
+
var import_strings = require("@ethersproject/strings");
|
|
27
36
|
var import_contentHash = require("./contentHash");
|
|
28
37
|
const generateSetAddr = (namehash, coinType, address, resolver) => {
|
|
29
38
|
let coinTypeInstance;
|
|
@@ -39,6 +48,34 @@ const generateSetAddr = (namehash, coinType, address, resolver) => {
|
|
|
39
48
|
[namehash, inputCoinType, encodedAddress]
|
|
40
49
|
);
|
|
41
50
|
};
|
|
51
|
+
const generateABIInput = async (encodeAs, data) => {
|
|
52
|
+
let contentType;
|
|
53
|
+
let encodedData;
|
|
54
|
+
switch (encodeAs) {
|
|
55
|
+
case "json":
|
|
56
|
+
contentType = 1;
|
|
57
|
+
encodedData = JSON.stringify(data);
|
|
58
|
+
break;
|
|
59
|
+
case "zlib": {
|
|
60
|
+
contentType = 2;
|
|
61
|
+
const { deflate } = await import("pako/dist/pako_deflate.min.js");
|
|
62
|
+
encodedData = deflate(JSON.stringify(data));
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case "cbor": {
|
|
66
|
+
contentType = 4;
|
|
67
|
+
const { encode } = await import("cbor");
|
|
68
|
+
encodedData = encode(data);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
default: {
|
|
72
|
+
contentType = 8;
|
|
73
|
+
encodedData = data;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return { contentType, data: encodedData };
|
|
78
|
+
};
|
|
42
79
|
function generateSingleRecordCall(namehash, resolver, type) {
|
|
43
80
|
if (type === "contentHash") {
|
|
44
81
|
return (_r) => {
|
|
@@ -56,6 +93,24 @@ function generateSingleRecordCall(namehash, resolver, type) {
|
|
|
56
93
|
]);
|
|
57
94
|
};
|
|
58
95
|
}
|
|
96
|
+
if (type === "abi") {
|
|
97
|
+
return (_r) => {
|
|
98
|
+
const record = _r;
|
|
99
|
+
const { contentType = 1, data } = record;
|
|
100
|
+
let encodedData = data;
|
|
101
|
+
if (!(0, import_bytes.isBytesLike)(encodedData)) {
|
|
102
|
+
if (typeof encodedData === "object") {
|
|
103
|
+
encodedData = JSON.stringify(encodedData);
|
|
104
|
+
}
|
|
105
|
+
encodedData = (0, import_strings.toUtf8Bytes)(encodedData);
|
|
106
|
+
}
|
|
107
|
+
return resolver.interface.encodeFunctionData("setABI", [
|
|
108
|
+
namehash,
|
|
109
|
+
contentType,
|
|
110
|
+
encodedData
|
|
111
|
+
]);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
59
114
|
return (_r) => {
|
|
60
115
|
const record = _r;
|
|
61
116
|
if (type === "text") {
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
2
|
var __defProp = Object.defineProperty;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
6
|
var __export = (target, all) => {
|
|
9
7
|
for (var name in all)
|
|
@@ -17,14 +15,9 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
15
|
}
|
|
18
16
|
return to;
|
|
19
17
|
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
-
mod
|
|
23
|
-
));
|
|
24
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
19
|
var registerHelpers_exports = {};
|
|
26
20
|
__export(registerHelpers_exports, {
|
|
27
|
-
MAX_INT_64: () => MAX_INT_64,
|
|
28
21
|
_makeCommitment: () => _makeCommitment,
|
|
29
22
|
makeCommitment: () => makeCommitment,
|
|
30
23
|
makeCommitmentData: () => makeCommitmentData,
|
|
@@ -34,11 +27,10 @@ __export(registerHelpers_exports, {
|
|
|
34
27
|
module.exports = __toCommonJS(registerHelpers_exports);
|
|
35
28
|
var import_abi_coder = require("@ethersproject/abi/lib/abi-coder");
|
|
36
29
|
var import_keccak256 = require("@ethersproject/keccak256");
|
|
37
|
-
var
|
|
30
|
+
var import_fuses = require("./fuses");
|
|
38
31
|
var import_labels = require("./labels");
|
|
39
32
|
var import_normalise = require("./normalise");
|
|
40
33
|
var import_recordHelpers = require("./recordHelpers");
|
|
41
|
-
const MAX_INT_64 = 2n ** 64n - 1n;
|
|
42
34
|
const randomSecret = () => {
|
|
43
35
|
const bytes = Buffer.allocUnsafe(32);
|
|
44
36
|
return `0x${crypto.getRandomValues(bytes).toString("hex")}`;
|
|
@@ -51,14 +43,13 @@ const makeCommitmentData = ({
|
|
|
51
43
|
records,
|
|
52
44
|
reverseRecord,
|
|
53
45
|
fuses,
|
|
54
|
-
wrapperExpiry,
|
|
55
46
|
secret
|
|
56
47
|
}) => {
|
|
57
48
|
var _a;
|
|
58
|
-
const
|
|
49
|
+
const labelHash = (0, import_labels.labelhash)(name.split(".")[0]);
|
|
59
50
|
const hash = (0, import_normalise.namehash)(name);
|
|
60
51
|
const resolverAddress = resolver.address;
|
|
61
|
-
const fuseData = fuses ? (0,
|
|
52
|
+
const fuseData = (0, import_fuses.hasFuses)(fuses) ? (0, import_fuses.encodeFuses)(fuses, "child") : 0;
|
|
62
53
|
if (reverseRecord) {
|
|
63
54
|
if (!records) {
|
|
64
55
|
records = { coinTypes: [{ key: "ETH", value: owner }] };
|
|
@@ -70,23 +61,20 @@ const makeCommitmentData = ({
|
|
|
70
61
|
}
|
|
71
62
|
const data = records ? (0, import_recordHelpers.generateRecordCallArray)(hash, records, resolver) : [];
|
|
72
63
|
return [
|
|
73
|
-
|
|
64
|
+
labelHash,
|
|
74
65
|
owner,
|
|
75
66
|
duration,
|
|
67
|
+
secret,
|
|
76
68
|
resolverAddress,
|
|
77
69
|
data,
|
|
78
|
-
secret,
|
|
79
70
|
!!reverseRecord,
|
|
80
|
-
fuseData
|
|
81
|
-
wrapperExpiry || MAX_INT_64
|
|
71
|
+
fuseData
|
|
82
72
|
];
|
|
83
73
|
};
|
|
84
74
|
const makeRegistrationData = (params) => {
|
|
85
75
|
const commitmentData = makeCommitmentData(params);
|
|
86
76
|
const label = params.name.split(".")[0];
|
|
87
77
|
commitmentData[0] = label;
|
|
88
|
-
const secret = commitmentData.splice(5, 1)[0];
|
|
89
|
-
commitmentData.splice(3, 0, secret);
|
|
90
78
|
return commitmentData;
|
|
91
79
|
};
|
|
92
80
|
const _makeCommitment = (params) => {
|
|
@@ -96,12 +84,11 @@ const _makeCommitment = (params) => {
|
|
|
96
84
|
"bytes32",
|
|
97
85
|
"address",
|
|
98
86
|
"uint256",
|
|
87
|
+
"bytes32",
|
|
99
88
|
"address",
|
|
100
89
|
"bytes[]",
|
|
101
|
-
"bytes32",
|
|
102
90
|
"bool",
|
|
103
|
-
"
|
|
104
|
-
"uint64"
|
|
91
|
+
"uint16"
|
|
105
92
|
],
|
|
106
93
|
params
|
|
107
94
|
)
|
|
@@ -118,7 +105,6 @@ const makeCommitment = ({
|
|
|
118
105
|
const commitment = _makeCommitment(generatedParams);
|
|
119
106
|
return {
|
|
120
107
|
secret,
|
|
121
|
-
commitment
|
|
122
|
-
wrapperExpiry: generatedParams[8]
|
|
108
|
+
commitment
|
|
123
109
|
};
|
|
124
110
|
};
|
|
@@ -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 subgraph_types_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(subgraph_types_exports);
|
|
@@ -24,7 +24,7 @@ __export(wrapper_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(wrapper_exports);
|
|
26
26
|
var import_bignumber = require("@ethersproject/bignumber/lib/bignumber");
|
|
27
|
-
var
|
|
27
|
+
var import_strings = require("@ethersproject/strings");
|
|
28
28
|
const MAX_EXPIRY = import_bignumber.BigNumber.from(2).pow(64).sub(1);
|
|
29
29
|
const makeExpiry = async ({ getExpiry }, name, expiry) => {
|
|
30
30
|
if (expiry) {
|
|
@@ -45,7 +45,7 @@ const makeExpiry = async ({ getExpiry }, name, expiry) => {
|
|
|
45
45
|
return MAX_EXPIRY;
|
|
46
46
|
};
|
|
47
47
|
const wrappedLabelLengthCheck = (label) => {
|
|
48
|
-
const bytes = (0,
|
|
48
|
+
const bytes = (0, import_strings.toUtf8Bytes)(label);
|
|
49
49
|
if (bytes.byteLength > 255)
|
|
50
50
|
throw new Error("Label can't be longer than 255 bytes");
|
|
51
51
|
};
|
|
@@ -15,19 +15,19 @@ var addresses = {
|
|
|
15
15
|
"1": "0x283af0b28c62c092c9727f1ee09c02ca627eb7f5",
|
|
16
16
|
"3": "0xa5627AB7Ae47063B533622C34FEBDb52d3281dF8",
|
|
17
17
|
"4": "0x283af0b28c62c092c9727f1ee09c02ca627eb7f5",
|
|
18
|
-
"5": "
|
|
18
|
+
"5": "0xb7A1f9e633fdeaAa2ec44bE00a61a7Db9a733D70"
|
|
19
19
|
},
|
|
20
20
|
Multicall: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
21
21
|
NameWrapper: {
|
|
22
22
|
"1": "0x0000000000000000000000000000000000000000",
|
|
23
23
|
"3": "0xF82155e2a43Be0871821E9654Fc8Ae894FB8307C",
|
|
24
24
|
"4": "0x0000000000000000000000000000000000000000",
|
|
25
|
-
"5": "
|
|
25
|
+
"5": "0xEe1F756aCde7E81B2D8cC6aB3c8A1E2cE6db0F39"
|
|
26
26
|
},
|
|
27
27
|
PublicResolver: {
|
|
28
28
|
"1": "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41",
|
|
29
29
|
"3": "0x13F0659Ee6bb7484C884FEeFb7F75C93951ef837",
|
|
30
|
-
"5": "
|
|
30
|
+
"5": "0x2800Ec5BAB9CE9226d19E0ad5BC607e3cfC4347E"
|
|
31
31
|
},
|
|
32
32
|
ENSRegistry: {
|
|
33
33
|
"1": "0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e",
|
|
@@ -38,7 +38,7 @@ var addresses = {
|
|
|
38
38
|
ReverseRegistrar: {
|
|
39
39
|
"1": "0x084b1c3C81545d370f3634392De611CaaBFf8148",
|
|
40
40
|
"3": "0x806246b52f8cB61655d3038c58D2f63Aa55d4edE",
|
|
41
|
-
"5": "
|
|
41
|
+
"5": "0x9a879320A9F7ad2BBb02063d67baF5551D6BD8B0"
|
|
42
42
|
},
|
|
43
43
|
UniversalResolver: {
|
|
44
44
|
"1": "0x74E20Bd2A1fE0cdbe45b9A1d89cb7e0a45b36376",
|
|
@@ -11,7 +11,7 @@ async function commitName_default({ contracts }, name, { resolverAddress, ...par
|
|
|
11
11
|
void 0,
|
|
12
12
|
resolverAddress
|
|
13
13
|
);
|
|
14
|
-
const { secret, commitment
|
|
14
|
+
const { secret, commitment } = makeCommitment({
|
|
15
15
|
name,
|
|
16
16
|
resolver,
|
|
17
17
|
...params
|
|
@@ -20,8 +20,7 @@ async function commitName_default({ contracts }, name, { resolverAddress, ...par
|
|
|
20
20
|
...await controller.populateTransaction.commit(commitment),
|
|
21
21
|
customData: {
|
|
22
22
|
secret,
|
|
23
|
-
commitment
|
|
24
|
-
wrapperExpiry
|
|
23
|
+
commitment
|
|
25
24
|
}
|
|
26
25
|
};
|
|
27
26
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/functions/createSubname.ts
|
|
2
2
|
import { keccak256 as solidityKeccak256 } from "@ethersproject/solidity";
|
|
3
|
-
import
|
|
3
|
+
import { encodeFuses } from "../utils/fuses.mjs";
|
|
4
4
|
import { namehash } from "../utils/normalise.mjs";
|
|
5
5
|
import { makeExpiry, wrappedLabelLengthCheck } from "../utils/wrapper.mjs";
|
|
6
6
|
async function createSubname_default({
|
|
@@ -40,7 +40,7 @@ async function createSubname_default({
|
|
|
40
40
|
name,
|
|
41
41
|
"expiry" in wrapperArgs ? wrapperArgs.expiry : void 0
|
|
42
42
|
);
|
|
43
|
-
const generatedFuses = "fuses" in wrapperArgs && wrapperArgs.fuses ?
|
|
43
|
+
const generatedFuses = "fuses" in wrapperArgs && wrapperArgs.fuses ? encodeFuses(wrapperArgs.fuses) : 0;
|
|
44
44
|
return nameWrapper.populateTransaction.setSubnodeRecord(
|
|
45
45
|
parentNodehash,
|
|
46
46
|
label,
|