@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.
Files changed (129) hide show
  1. package/dist/cjs/contracts/getContractAddress.js +4 -4
  2. package/dist/cjs/functions/commitName.js +2 -3
  3. package/dist/cjs/functions/createSubname.js +2 -8
  4. package/dist/cjs/functions/getHistory.js +14 -7
  5. package/dist/cjs/functions/getNames.js +10 -6
  6. package/dist/cjs/functions/getOwner.js +25 -12
  7. package/dist/cjs/functions/getSpecificRecord.js +83 -0
  8. package/dist/cjs/functions/getWrapperData.js +3 -4
  9. package/dist/cjs/functions/renewNames.js +13 -20
  10. package/dist/cjs/functions/{burnFuses.js → setFuses.js} +24 -6
  11. package/dist/cjs/functions/wrapName.js +7 -23
  12. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +6 -55
  13. package/dist/cjs/generated/factories/NameWrapper__factory.js +90 -69
  14. package/dist/cjs/generated/factories/PublicResolver__factory.js +83 -0
  15. package/dist/cjs/generated/factories/UniversalResolver__factory.js +67 -2
  16. package/dist/cjs/index.js +15 -4
  17. package/dist/cjs/utils/consts.js +3 -1
  18. package/dist/cjs/utils/fuses.js +218 -53
  19. package/dist/cjs/utils/normalise.js +2 -2
  20. package/dist/cjs/utils/recordHelpers.js +55 -0
  21. package/dist/cjs/utils/registerHelpers.js +9 -23
  22. package/dist/cjs/utils/subgraph-types.js +16 -0
  23. package/dist/cjs/utils/wrapper.js +2 -2
  24. package/dist/esm/contracts/getContractAddress.mjs +4 -4
  25. package/dist/esm/functions/commitName.mjs +2 -3
  26. package/dist/esm/functions/createSubname.mjs +2 -2
  27. package/dist/esm/functions/getHistory.mjs +14 -7
  28. package/dist/esm/functions/getNames.mjs +10 -6
  29. package/dist/esm/functions/getOwner.mjs +25 -12
  30. package/dist/esm/functions/getSpecificRecord.mjs +78 -1
  31. package/dist/esm/functions/getWrapperData.mjs +3 -4
  32. package/dist/esm/functions/renewNames.mjs +13 -20
  33. package/dist/esm/functions/setFuses.mjs +30 -0
  34. package/dist/esm/functions/wrapName.mjs +8 -18
  35. package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +6 -55
  36. package/dist/esm/generated/factories/NameWrapper__factory.mjs +90 -69
  37. package/dist/esm/generated/factories/PublicResolver__factory.mjs +83 -0
  38. package/dist/esm/generated/factories/UniversalResolver__factory.mjs +67 -2
  39. package/dist/esm/index.mjs +15 -4
  40. package/dist/esm/utils/consts.mjs +3 -1
  41. package/dist/esm/utils/fuses.mjs +218 -53
  42. package/dist/esm/utils/normalise.mjs +1 -1
  43. package/dist/esm/utils/recordHelpers.mjs +49 -0
  44. package/dist/esm/utils/registerHelpers.mjs +9 -17
  45. package/dist/esm/utils/subgraph-types.mjs +0 -0
  46. package/dist/esm/utils/wrapper.mjs +1 -1
  47. package/dist/types/functions/commitName.d.ts +5 -6
  48. package/dist/types/functions/createSubname.d.ts +3 -3
  49. package/dist/types/functions/deleteSubname.d.ts +1 -1
  50. package/dist/types/functions/getHistory.d.ts +1 -1
  51. package/dist/types/functions/getNames.d.ts +3 -3
  52. package/dist/types/functions/getOwner.d.ts +1 -0
  53. package/dist/types/functions/getSpecificRecord.d.ts +22 -0
  54. package/dist/types/functions/getWrapperData.d.ts +44 -5
  55. package/dist/types/functions/importDNSSECName.d.ts +1 -1
  56. package/dist/types/functions/registerName.d.ts +1 -1
  57. package/dist/types/functions/renewNames.d.ts +5 -6
  58. package/dist/types/functions/setFuses.d.ts +7 -0
  59. package/dist/types/functions/setName.d.ts +1 -1
  60. package/dist/types/functions/setRecord.d.ts +5 -1
  61. package/dist/types/functions/setRecords.d.ts +1 -1
  62. package/dist/types/functions/setResolver.d.ts +1 -1
  63. package/dist/types/functions/transferController.d.ts +1 -1
  64. package/dist/types/functions/transferName.d.ts +1 -1
  65. package/dist/types/functions/transferSubname.d.ts +1 -1
  66. package/dist/types/functions/types.d.ts +9 -5
  67. package/dist/types/functions/unwrapName.d.ts +1 -1
  68. package/dist/types/functions/wrapName.d.ts +4 -4
  69. package/dist/types/generated/ETHRegistrarController.d.ts +13 -36
  70. package/dist/types/generated/NameWrapper.d.ts +97 -52
  71. package/dist/types/generated/PublicResolver.d.ts +50 -1
  72. package/dist/types/generated/UniversalResolver.d.ts +79 -32
  73. package/dist/types/generated/factories/UniversalResolver__factory.d.ts +15 -0
  74. package/dist/types/index.d.ts +75 -11
  75. package/dist/types/utils/consts.d.ts +1 -0
  76. package/dist/types/utils/fuses.d.ts +115 -45
  77. package/dist/types/utils/recordHelpers.d.ts +14 -2
  78. package/dist/types/utils/registerHelpers.d.ts +7 -25
  79. package/dist/types/utils/subgraph-types.d.ts +284 -0
  80. package/dist/types/utils/writeTx.d.ts +5 -5
  81. package/package.json +8 -5
  82. package/src/@types/pako.d.ts +188 -0
  83. package/src/contracts/bulkRenewal.ts +1 -1
  84. package/src/contracts/getContractAddress.ts +4 -4
  85. package/src/functions/commitName.test.ts +0 -3
  86. package/src/functions/commitName.ts +1 -2
  87. package/src/functions/createSubname.ts +4 -5
  88. package/src/functions/getHistory.ts +59 -25
  89. package/src/functions/getNames.test.ts +1 -1
  90. package/src/functions/getNames.ts +26 -13
  91. package/src/functions/getOwner.test.ts +62 -3
  92. package/src/functions/getOwner.ts +31 -11
  93. package/src/functions/getSpecificRecord.test.ts +162 -0
  94. package/src/functions/getSpecificRecord.ts +95 -1
  95. package/src/functions/getWrapperData.test.ts +11 -45
  96. package/src/functions/getWrapperData.ts +7 -5
  97. package/src/functions/registerName.test.ts +3 -3
  98. package/src/functions/renewNames.ts +17 -23
  99. package/src/functions/setFuses.test.ts +240 -0
  100. package/src/functions/setFuses.ts +44 -0
  101. package/src/functions/setRecord.test.ts +147 -1
  102. package/src/functions/setRecord.ts +6 -1
  103. package/src/functions/types.ts +10 -4
  104. package/src/functions/wrapName.test.ts +8 -7
  105. package/src/functions/wrapName.ts +10 -24
  106. package/src/generated/ETHRegistrarController.ts +12 -79
  107. package/src/generated/NameWrapper.ts +155 -99
  108. package/src/generated/PublicResolver.ts +123 -0
  109. package/src/generated/UniversalResolver.ts +157 -16
  110. package/src/generated/factories/ETHRegistrarController__factory.ts +6 -55
  111. package/src/generated/factories/NameWrapper__factory.ts +90 -69
  112. package/src/generated/factories/PublicResolver__factory.ts +83 -0
  113. package/src/generated/factories/UniversalResolver__factory.ts +67 -2
  114. package/src/index.ts +23 -14
  115. package/src/utils/consts.ts +1 -0
  116. package/src/utils/fuses.ts +299 -102
  117. package/src/utils/normalise.ts +1 -1
  118. package/src/utils/recordHelpers.ts +64 -1
  119. package/src/utils/registerHelpers.ts +13 -41
  120. package/src/utils/subgraph-types.ts +312 -0
  121. package/src/utils/wrapper.ts +1 -1
  122. package/dist/cjs/utils/generateFuseInput.js +0 -40
  123. package/dist/esm/functions/burnFuses.mjs +0 -12
  124. package/dist/esm/utils/generateFuseInput.mjs +0 -15
  125. package/dist/types/functions/burnFuses.d.ts +0 -3
  126. package/dist/types/utils/generateFuseInput.d.ts +0 -3
  127. package/src/functions/burnFuses.test.ts +0 -148
  128. package/src/functions/burnFuses.ts +0 -16
  129. package/src/utils/generateFuseInput.ts +0 -13
@@ -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
- fuseEnum: () => fuseEnum,
24
- unnamedFuses: () => unnamedFuses,
25
- validateFuses: () => validateFuses
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 = 64;
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 fuseEnum = {
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 unnamedFuses = [
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
- 65536,
57
- 131072,
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 fullFuseEnum = {
75
- ...fuseEnum,
76
- CAN_DO_EVERYTHING
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 validateFuses = (fuses) => {
79
- const isNumber = "fuseNumberToBurn" in fuses;
80
- const hasNamedArray = "namedFusesToBurn" in fuses;
81
- const hasUnnamedArray = "unnamedFusesToBurn" in fuses;
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 (isNumber) {
84
- if (fuses.fuseNumberToBurn > 2 ** 32 || fuses.fuseNumberToBurn < 1) {
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
- encodedFuses = fuses.fuseNumberToBurn;
170
+ checkNumber(fuses);
171
+ encodedFuses = fuses;
94
172
  } else {
95
- if (!hasNamedArray && !hasUnnamedArray) {
96
- throw new Error("Please provide fuses to burn");
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 (hasNamedArray) {
99
- for (const fuse of fuses.namedFusesToBurn) {
100
- if (!(fuse in fuseEnum)) {
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
- encodedFuses |= fuseEnum[fuse];
237
+ throw new Error(`Fuse ${fuse} is not allowed for this operation.`);
104
238
  }
239
+ encodedFuses |= userSettableFuseEnum[fuse];
105
240
  }
106
- if (hasUnnamedArray) {
107
- for (const fuse of fuses.unnamedFusesToBurn) {
108
- if (!unnamedFuses.includes(fuse)) {
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 burn a named fuse, use the namedFusesToBurn property.`
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
- encodedFuses |= fuse;
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 decodeFuses = (fuses) => {
120
- const bnFuses = import_bignumber.BigNumber.from(fuses);
254
+ }
255
+ const decodeNamedFuses = (fuses, arr) => {
121
256
  const fuseObj = Object.fromEntries(
122
- Object.keys(fuseEnum).map((fuse) => [
257
+ arr.map((fuse) => [
123
258
  fuse,
124
- bnFuses.and(fuseEnum[fuse]).gt(0)
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 import_utf8 = require("@ethersproject/strings/lib/utf8");
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, import_utf8.toUtf8Bytes)(normalised));
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 import_generateFuseInput = __toESM(require("./generateFuseInput"));
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 label = (0, import_labels.labelhash)(name.split(".")[0]);
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, import_generateFuseInput.default)(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
- label,
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
- "uint32",
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 import_utf8 = require("@ethersproject/strings/lib/utf8");
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, import_utf8.toUtf8Bytes)(label);
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": "0x9C51161bA2FB02Cc0a403332B607117685f34831"
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": "0x582224b8d4534F4749EFA4f22eF7241E0C56D4B8"
25
+ "5": "0xEe1F756aCde7E81B2D8cC6aB3c8A1E2cE6db0F39"
26
26
  },
27
27
  PublicResolver: {
28
28
  "1": "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41",
29
29
  "3": "0x13F0659Ee6bb7484C884FEeFb7F75C93951ef837",
30
- "5": "0xE264d5bb84bA3b8061ADC38D3D76e6674aB91852"
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": "0xD5610A08E370051a01fdfe4bB3ddf5270af1aA48"
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, wrapperExpiry } = makeCommitment({
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 generateFuseInput from "../utils/generateFuseInput.mjs";
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 ? generateFuseInput(wrapperArgs.fuses) : "0";
43
+ const generatedFuses = "fuses" in wrapperArgs && wrapperArgs.fuses ? encodeFuses(wrapperArgs.fuses) : 0;
44
44
  return nameWrapper.populateTransaction.setSubnodeRecord(
45
45
  parentNodehash,
46
46
  label,