@ensdomains/ensjs 3.0.0-alpha.2 → 3.0.0-alpha.20

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 (671) hide show
  1. package/dist/cjs/GqlManager.js +105 -37
  2. package/dist/cjs/contracts/baseRegistrar.js +24 -3
  3. package/dist/cjs/contracts/ethRegistrarController.js +24 -3
  4. package/dist/cjs/contracts/getContractAddress.js +61 -43
  5. package/dist/cjs/contracts/index.js +76 -32
  6. package/dist/cjs/contracts/multicall.js +24 -21
  7. package/dist/cjs/contracts/nameWrapper.js +24 -3
  8. package/dist/cjs/contracts/publicResolver.js +24 -3
  9. package/dist/cjs/contracts/registry.js +24 -3
  10. package/dist/cjs/contracts/reverseRegistrar.js +24 -3
  11. package/dist/cjs/contracts/types.js +15 -1
  12. package/dist/cjs/contracts/universalResolver.js +24 -3
  13. package/dist/cjs/functions/batch.js +42 -15
  14. package/dist/cjs/functions/batchWrappers.js +97 -67
  15. package/dist/cjs/functions/burnFuses.js +64 -14
  16. package/dist/cjs/functions/commitName.js +47 -0
  17. package/dist/cjs/functions/createSubname.js +79 -38
  18. package/dist/cjs/functions/deleteSubname.js +30 -4
  19. package/dist/cjs/functions/getDNSOwner.js +82 -0
  20. package/dist/cjs/functions/getExpiry.js +110 -41
  21. package/dist/cjs/functions/getFuses.js +63 -56
  22. package/dist/cjs/functions/getHistory.js +109 -173
  23. package/dist/cjs/functions/getName.js +51 -28
  24. package/dist/cjs/functions/getNames.js +118 -104
  25. package/dist/cjs/functions/getOwner.js +147 -125
  26. package/dist/cjs/functions/getPrice.js +71 -43
  27. package/dist/cjs/functions/getProfile.js +421 -265
  28. package/dist/cjs/functions/getRecords.js +29 -9
  29. package/dist/cjs/functions/getResolver.js +41 -19
  30. package/dist/cjs/functions/getSpecificRecord.js +188 -261
  31. package/dist/cjs/functions/getSubnames.js +83 -63
  32. package/dist/cjs/functions/initialGetters.js +46 -37
  33. package/dist/cjs/functions/registerName.js +42 -0
  34. package/dist/cjs/functions/renewName.js +33 -0
  35. package/dist/cjs/functions/setName.js +40 -15
  36. package/dist/cjs/functions/setRecord.js +55 -0
  37. package/dist/cjs/functions/setRecords.js +49 -20
  38. package/dist/cjs/functions/setResolver.js +43 -23
  39. package/dist/cjs/functions/transferName.js +60 -30
  40. package/dist/cjs/functions/transferSubname.js +60 -24
  41. package/dist/cjs/functions/unwrapName.js +49 -25
  42. package/dist/cjs/functions/wrapName.js +121 -57
  43. package/dist/cjs/generated/BaseRegistrarImplementation.js +15 -1
  44. package/dist/cjs/generated/DNSRegistrar.js +15 -1
  45. package/dist/cjs/generated/DNSSECImpl.js +15 -1
  46. package/dist/cjs/generated/DefaultReverseResolver.js +15 -1
  47. package/dist/cjs/generated/ENSRegistry.js +15 -1
  48. package/dist/cjs/generated/ETHRegistrarController.js +15 -1
  49. package/dist/cjs/generated/Multicall.js +15 -1
  50. package/dist/cjs/generated/NameWrapper.js +15 -1
  51. package/dist/cjs/generated/P256SHA256Algorithm.js +15 -1
  52. package/dist/cjs/generated/PublicResolver.js +15 -1
  53. package/dist/cjs/generated/RSASHA1Algorithm.js +15 -1
  54. package/dist/cjs/generated/RSASHA256Algorithm.js +15 -1
  55. package/dist/cjs/generated/ReverseRegistrar.js +15 -1
  56. package/dist/cjs/generated/Root.js +15 -1
  57. package/dist/cjs/generated/SHA1Digest.js +15 -1
  58. package/dist/cjs/generated/SHA1NSEC3Digest.js +15 -1
  59. package/dist/cjs/generated/SHA256Digest.js +15 -1
  60. package/dist/cjs/generated/StaticMetadataService.js +15 -1
  61. package/dist/cjs/generated/TLDPublicSuffixList.js +15 -1
  62. package/dist/cjs/generated/UniversalResolver.js +15 -1
  63. package/dist/cjs/generated/common.js +15 -1
  64. package/dist/cjs/generated/factories/BaseRegistrarImplementation__factory.js +784 -764
  65. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +281 -288
  66. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +485 -492
  67. package/dist/cjs/generated/factories/DefaultReverseResolver__factory.js +102 -82
  68. package/dist/cjs/generated/factories/ENSRegistry__factory.js +447 -431
  69. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +534 -504
  70. package/dist/cjs/generated/factories/Multicall__factory.js +457 -441
  71. package/dist/cjs/generated/factories/NameWrapper__factory.js +1341 -1194
  72. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +60 -67
  73. package/dist/cjs/generated/factories/PublicResolver__factory.js +901 -885
  74. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +60 -67
  75. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +60 -67
  76. package/dist/cjs/generated/factories/ReverseRegistrar__factory.js +349 -333
  77. package/dist/cjs/generated/factories/Root__factory.js +253 -237
  78. package/dist/cjs/generated/factories/SHA1Digest__factory.js +55 -62
  79. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +60 -67
  80. package/dist/cjs/generated/factories/SHA256Digest__factory.js +55 -62
  81. package/dist/cjs/generated/factories/StaticMetadataService__factory.js +64 -44
  82. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +50 -57
  83. package/dist/cjs/generated/factories/UniversalResolver__factory.js +215 -199
  84. package/dist/cjs/generated/factories/index.js +61 -17
  85. package/dist/cjs/generated/index.js +68 -37
  86. package/dist/cjs/index.js +318 -214
  87. package/dist/cjs/utils/contentHash.js +145 -142
  88. package/dist/cjs/utils/createReverseNode.js +23 -2
  89. package/dist/cjs/utils/format.js +27 -8
  90. package/dist/cjs/utils/fuses.js +64 -13
  91. package/dist/cjs/utils/generateFuseInput.js +37 -16
  92. package/dist/cjs/utils/hexEncodedName.js +29 -7
  93. package/dist/cjs/utils/labels.js +99 -83
  94. package/dist/cjs/utils/makeHashIndexes.js +27 -6
  95. package/dist/cjs/utils/normalise.js +49 -22
  96. package/dist/cjs/utils/recordHelpers.js +84 -39
  97. package/dist/cjs/utils/registerHelpers.js +114 -46
  98. package/dist/cjs/utils/singleCall.js +23 -6
  99. package/dist/cjs/utils/validation.js +76 -63
  100. package/dist/cjs/utils/wrapperExpiry.js +44 -0
  101. package/dist/cjs/utils/writeTx.js +25 -0
  102. package/dist/esm/GqlManager.mjs +85 -0
  103. package/dist/esm/contracts/baseRegistrar.mjs +6 -0
  104. package/dist/esm/contracts/ethRegistrarController.mjs +6 -0
  105. package/dist/esm/contracts/getContractAddress.mjs +45 -0
  106. package/dist/esm/contracts/index.mjs +56 -0
  107. package/dist/esm/contracts/multicall.mjs +6 -0
  108. package/dist/esm/contracts/nameWrapper.mjs +6 -0
  109. package/dist/esm/contracts/publicResolver.mjs +6 -0
  110. package/dist/esm/contracts/registry.mjs +6 -0
  111. package/dist/esm/contracts/reverseRegistrar.mjs +6 -0
  112. package/dist/esm/contracts/types.mjs +0 -0
  113. package/dist/esm/contracts/universalResolver.mjs +6 -0
  114. package/dist/esm/functions/batch.mjs +29 -0
  115. package/dist/esm/functions/batchWrappers.mjs +82 -0
  116. package/dist/esm/functions/burnFuses.mjs +52 -0
  117. package/dist/esm/functions/commitName.mjs +28 -0
  118. package/dist/esm/functions/createSubname.mjs +60 -0
  119. package/dist/esm/functions/deleteSubname.mjs +13 -0
  120. package/dist/esm/functions/getDNSOwner.mjs +57 -0
  121. package/dist/esm/functions/getExpiry.mjs +95 -0
  122. package/dist/esm/functions/getFuses.mjs +50 -0
  123. package/dist/esm/functions/getHistory.mjs +196 -0
  124. package/dist/esm/functions/getName.mjs +38 -0
  125. package/dist/esm/functions/getNames.mjs +217 -0
  126. package/dist/esm/functions/getOwner.mjs +143 -0
  127. package/dist/esm/functions/getPrice.mjs +59 -0
  128. package/dist/esm/functions/getProfile.mjs +439 -0
  129. package/dist/esm/functions/getRecords.mjs +12 -0
  130. package/dist/esm/functions/getResolver.mjs +27 -0
  131. package/dist/esm/functions/getSpecificRecord.mjs +176 -0
  132. package/dist/esm/functions/getSubnames.mjs +155 -0
  133. package/dist/esm/functions/initialGetters.mjs +23 -0
  134. package/dist/esm/functions/registerName.mjs +25 -0
  135. package/dist/esm/functions/renewName.mjs +14 -0
  136. package/dist/esm/functions/setName.mjs +23 -0
  137. package/dist/esm/functions/setRecord.mjs +36 -0
  138. package/dist/esm/functions/setRecords.mjs +32 -0
  139. package/dist/esm/functions/setResolver.mjs +29 -0
  140. package/dist/esm/functions/transferName.mjs +45 -0
  141. package/dist/esm/functions/transferSubname.mjs +45 -0
  142. package/dist/esm/functions/unwrapName.mjs +33 -0
  143. package/dist/esm/functions/wrapName.mjs +103 -0
  144. package/dist/esm/generated/BaseRegistrarImplementation.mjs +0 -0
  145. package/dist/esm/generated/DNSRegistrar.mjs +0 -0
  146. package/dist/esm/generated/DNSSECImpl.mjs +0 -0
  147. package/dist/esm/generated/DefaultReverseResolver.mjs +0 -0
  148. package/dist/esm/generated/ENSRegistry.mjs +0 -0
  149. package/dist/esm/generated/ETHRegistrarController.mjs +0 -0
  150. package/dist/esm/generated/Multicall.mjs +0 -0
  151. package/dist/esm/generated/NameWrapper.mjs +0 -0
  152. package/dist/esm/generated/P256SHA256Algorithm.mjs +0 -0
  153. package/dist/esm/generated/PublicResolver.mjs +0 -0
  154. package/dist/esm/generated/RSASHA1Algorithm.mjs +0 -0
  155. package/dist/esm/generated/RSASHA256Algorithm.mjs +0 -0
  156. package/dist/esm/generated/ReverseRegistrar.mjs +0 -0
  157. package/dist/esm/generated/Root.mjs +0 -0
  158. package/dist/esm/generated/SHA1Digest.mjs +0 -0
  159. package/dist/esm/generated/SHA1NSEC3Digest.mjs +0 -0
  160. package/dist/esm/generated/SHA256Digest.mjs +0 -0
  161. package/dist/esm/generated/StaticMetadataService.mjs +0 -0
  162. package/dist/esm/generated/TLDPublicSuffixList.mjs +0 -0
  163. package/dist/esm/generated/UniversalResolver.mjs +0 -0
  164. package/dist/esm/generated/common.mjs +0 -0
  165. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.mjs +778 -0
  166. package/dist/esm/generated/factories/DNSRegistrar__factory.mjs +277 -0
  167. package/dist/esm/generated/factories/DNSSECImpl__factory.mjs +482 -0
  168. package/dist/esm/generated/factories/DefaultReverseResolver__factory.mjs +95 -0
  169. package/dist/esm/generated/factories/ENSRegistry__factory.mjs +443 -0
  170. package/dist/esm/generated/factories/ETHRegistrarController__factory.mjs +529 -0
  171. package/dist/esm/generated/factories/Multicall__factory.mjs +461 -0
  172. package/dist/esm/generated/factories/NameWrapper__factory.mjs +1335 -0
  173. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.mjs +52 -0
  174. package/dist/esm/generated/factories/PublicResolver__factory.mjs +896 -0
  175. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.mjs +52 -0
  176. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.mjs +52 -0
  177. package/dist/esm/generated/factories/ReverseRegistrar__factory.mjs +344 -0
  178. package/dist/esm/generated/factories/Root__factory.mjs +247 -0
  179. package/dist/esm/generated/factories/SHA1Digest__factory.mjs +47 -0
  180. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.mjs +52 -0
  181. package/dist/esm/generated/factories/SHA256Digest__factory.mjs +47 -0
  182. package/dist/esm/generated/factories/StaticMetadataService__factory.mjs +57 -0
  183. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.mjs +42 -0
  184. package/dist/esm/generated/factories/UniversalResolver__factory.mjs +208 -0
  185. package/dist/esm/generated/factories/index.mjs +43 -0
  186. package/dist/esm/generated/index.mjs +45 -0
  187. package/dist/esm/index.mjs +303 -0
  188. package/dist/esm/utils/contentHash.mjs +142 -0
  189. package/dist/esm/utils/createReverseNode.mjs +5 -0
  190. package/dist/esm/utils/format.mjs +9 -0
  191. package/dist/esm/utils/fuses.mjs +56 -0
  192. package/dist/esm/utils/generateFuseInput.mjs +15 -0
  193. package/dist/esm/utils/hexEncodedName.mjs +6 -0
  194. package/dist/esm/utils/labels.mjs +109 -0
  195. package/dist/esm/utils/makeHashIndexes.mjs +10 -0
  196. package/dist/esm/utils/normalise.mjs +30 -0
  197. package/dist/esm/utils/recordHelpers.mjs +70 -0
  198. package/dist/esm/utils/registerHelpers.mjs +95 -0
  199. package/dist/esm/utils/singleCall.mjs +5 -0
  200. package/dist/esm/utils/validation.mjs +67 -0
  201. package/dist/esm/utils/wrapperExpiry.mjs +25 -0
  202. package/dist/esm/utils/writeTx.mjs +6 -0
  203. package/dist/types/GqlManager.d.ts +11 -0
  204. package/dist/{cjs → types}/contracts/baseRegistrar.d.ts +0 -0
  205. package/dist/{cjs → types}/contracts/ethRegistrarController.d.ts +1 -1
  206. package/dist/{cjs → types}/contracts/getContractAddress.d.ts +0 -0
  207. package/dist/types/contracts/index.d.ts +16 -0
  208. package/dist/{cjs → types}/contracts/multicall.d.ts +0 -0
  209. package/dist/{esm → types}/contracts/nameWrapper.d.ts +1 -1
  210. package/dist/{esm → types}/contracts/publicResolver.d.ts +1 -1
  211. package/dist/{cjs → types}/contracts/registry.d.ts +0 -0
  212. package/dist/{cjs → types}/contracts/reverseRegistrar.d.ts +1 -1
  213. package/dist/{cjs → types}/contracts/types.d.ts +0 -0
  214. package/dist/{cjs → types}/contracts/universalResolver.d.ts +1 -1
  215. package/dist/{cjs → types}/functions/batch.d.ts +0 -0
  216. package/dist/{esm → types}/functions/batchWrappers.d.ts +2 -2
  217. package/dist/types/functions/burnFuses.d.ts +13 -0
  218. package/dist/types/functions/commitName.d.ts +26 -0
  219. package/dist/{esm → types}/functions/createSubname.d.ts +3 -5
  220. package/dist/types/functions/deleteSubname.d.ts +4 -0
  221. package/dist/types/functions/getDNSOwner.d.ts +7 -0
  222. package/dist/types/functions/getExpiry.d.ts +19 -0
  223. package/dist/{cjs → types}/functions/getFuses.d.ts +5 -6
  224. package/dist/types/functions/getHistory.d.ts +28 -0
  225. package/dist/{cjs → types}/functions/getName.d.ts +2 -2
  226. package/dist/{cjs → types}/functions/getNames.d.ts +0 -0
  227. package/dist/{cjs → types}/functions/getOwner.d.ts +0 -0
  228. package/dist/{cjs → types}/functions/getPrice.d.ts +0 -0
  229. package/dist/{esm → types}/functions/getProfile.d.ts +4 -1
  230. package/dist/{esm → types}/functions/getRecords.d.ts +1 -0
  231. package/dist/{cjs → types}/functions/getResolver.d.ts +0 -0
  232. package/dist/{esm → types}/functions/getSpecificRecord.d.ts +4 -4
  233. package/dist/{esm → types}/functions/getSubnames.d.ts +1 -1
  234. package/dist/{cjs → types}/functions/initialGetters.d.ts +0 -0
  235. package/dist/types/functions/registerName.d.ts +11 -0
  236. package/dist/types/functions/renewName.d.ts +6 -0
  237. package/dist/types/functions/setName.d.ts +5 -0
  238. package/dist/types/functions/setRecord.d.ts +18 -0
  239. package/dist/types/functions/setRecords.d.ts +6 -0
  240. package/dist/types/functions/setResolver.d.ts +5 -0
  241. package/dist/types/functions/transferName.d.ts +6 -0
  242. package/dist/types/functions/transferSubname.d.ts +15 -0
  243. package/dist/types/functions/unwrapName.d.ts +5 -0
  244. package/dist/types/functions/wrapName.d.ts +10 -0
  245. package/dist/types/generated/BaseRegistrarImplementation.d.ts +508 -0
  246. package/dist/{cjs → types}/generated/DNSRegistrar.d.ts +68 -64
  247. package/dist/{esm → types}/generated/DNSSECImpl.d.ts +111 -111
  248. package/dist/{cjs → types}/generated/DefaultReverseResolver.d.ts +17 -17
  249. package/dist/types/generated/ENSRegistry.d.ts +274 -0
  250. package/dist/{esm → types}/generated/ETHRegistrarController.d.ts +111 -109
  251. package/dist/{esm → types}/generated/Multicall.d.ts +60 -60
  252. package/dist/types/generated/NameWrapper.d.ts +814 -0
  253. package/dist/{cjs → types}/generated/P256SHA256Algorithm.d.ts +11 -7
  254. package/dist/types/generated/PublicResolver.d.ts +566 -0
  255. package/dist/{esm → types}/generated/RSASHA1Algorithm.d.ts +11 -7
  256. package/dist/{cjs → types}/generated/RSASHA256Algorithm.d.ts +11 -7
  257. package/dist/{esm → types}/generated/ReverseRegistrar.d.ts +112 -103
  258. package/dist/types/generated/Root.d.ts +173 -0
  259. package/dist/{cjs → types}/generated/SHA1Digest.d.ts +7 -7
  260. package/dist/{esm → types}/generated/SHA1NSEC3Digest.d.ts +11 -7
  261. package/dist/{cjs → types}/generated/SHA256Digest.d.ts +7 -7
  262. package/dist/{cjs → types}/generated/StaticMetadataService.d.ts +7 -7
  263. package/dist/{esm → types}/generated/TLDPublicSuffixList.d.ts +7 -7
  264. package/dist/types/generated/UniversalResolver.d.ts +82 -0
  265. package/dist/{esm → types}/generated/common.d.ts +1 -0
  266. package/dist/{cjs → types}/generated/factories/BaseRegistrarImplementation__factory.d.ts +0 -0
  267. package/dist/{esm/generated/factories/ETHRegistrarController__factory.d.ts → types/generated/factories/DNSRegistrar__factory.d.ts} +15 -14
  268. package/dist/{esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts → types/generated/factories/DNSSECImpl__factory.d.ts} +9 -9
  269. package/dist/{cjs → types}/generated/factories/DefaultReverseResolver__factory.d.ts +0 -0
  270. package/dist/{cjs → types}/generated/factories/ENSRegistry__factory.d.ts +0 -0
  271. package/dist/{cjs → types}/generated/factories/ETHRegistrarController__factory.d.ts +0 -0
  272. package/dist/{cjs → types}/generated/factories/Multicall__factory.d.ts +0 -0
  273. package/dist/{cjs → types}/generated/factories/NameWrapper__factory.d.ts +0 -0
  274. package/dist/types/generated/factories/P256SHA256Algorithm__factory.d.ts +22 -0
  275. package/dist/{cjs → types}/generated/factories/PublicResolver__factory.d.ts +0 -0
  276. package/dist/types/generated/factories/RSASHA1Algorithm__factory.d.ts +22 -0
  277. package/dist/types/generated/factories/RSASHA256Algorithm__factory.d.ts +22 -0
  278. package/dist/{cjs → types}/generated/factories/ReverseRegistrar__factory.d.ts +0 -0
  279. package/dist/{cjs → types}/generated/factories/Root__factory.d.ts +0 -0
  280. package/dist/types/generated/factories/SHA1Digest__factory.d.ts +22 -0
  281. package/dist/types/generated/factories/SHA1NSEC3Digest__factory.d.ts +22 -0
  282. package/dist/types/generated/factories/SHA256Digest__factory.d.ts +22 -0
  283. package/dist/{cjs → types}/generated/factories/StaticMetadataService__factory.d.ts +0 -0
  284. package/dist/types/generated/factories/TLDPublicSuffixList__factory.d.ts +22 -0
  285. package/dist/{cjs → types}/generated/factories/UniversalResolver__factory.d.ts +0 -0
  286. package/dist/types/generated/factories/index.d.ts +20 -0
  287. package/dist/types/generated/index.d.ts +41 -0
  288. package/dist/{esm → types}/index.d.ts +91 -106
  289. package/dist/{cjs → types}/utils/contentHash.d.ts +0 -0
  290. package/dist/{cjs → types}/utils/createReverseNode.d.ts +0 -0
  291. package/dist/{cjs → types}/utils/format.d.ts +0 -0
  292. package/dist/types/utils/fuses.d.ts +43 -0
  293. package/dist/{cjs → types}/utils/generateFuseInput.d.ts +0 -0
  294. package/dist/{cjs → types}/utils/hexEncodedName.d.ts +0 -0
  295. package/dist/{cjs → types}/utils/labels.d.ts +0 -0
  296. package/dist/{cjs → types}/utils/makeHashIndexes.d.ts +0 -0
  297. package/dist/types/utils/normalise.d.ts +2 -0
  298. package/dist/{esm → types}/utils/recordHelpers.d.ts +3 -0
  299. package/dist/types/utils/registerHelpers.d.ts +54 -0
  300. package/dist/{cjs → types}/utils/singleCall.d.ts +0 -0
  301. package/dist/{cjs → types}/utils/validation.d.ts +0 -0
  302. package/dist/types/utils/wrapperExpiry.d.ts +5 -0
  303. package/dist/types/utils/writeTx.d.ts +21 -0
  304. package/package.json +71 -32
  305. package/src/@types/@ensdomains/ens-contracts.d.ts +1 -1
  306. package/src/@types/dns-packet/index.d.ts +114 -0
  307. package/src/ABIs/Multicall.json +452 -0
  308. package/src/GqlManager.test.ts +173 -0
  309. package/src/GqlManager.ts +90 -2
  310. package/src/contracts/getContractAddress.ts +2 -0
  311. package/src/contracts/index.ts +9 -1
  312. package/src/contracts/multicall.ts +0 -19
  313. package/src/functions/batch.test.ts +36 -0
  314. package/src/functions/batch.ts +3 -3
  315. package/src/functions/batchWrappers.test.ts +31 -0
  316. package/src/functions/batchWrappers.ts +2 -2
  317. package/src/functions/burnFuses.test.ts +148 -0
  318. package/src/functions/burnFuses.ts +67 -11
  319. package/src/functions/commitName.test.ts +61 -0
  320. package/src/functions/commitName.ts +36 -0
  321. package/src/{tests → functions}/createSubname.test.ts +11 -19
  322. package/src/functions/createSubname.ts +20 -15
  323. package/src/functions/deleteSubname.test.ts +49 -0
  324. package/src/functions/deleteSubname.ts +10 -12
  325. package/src/functions/getDNSOwner.test.ts +119 -0
  326. package/src/functions/getDNSOwner.ts +61 -0
  327. package/src/functions/getExpiry.test.ts +55 -0
  328. package/src/functions/getExpiry.ts +87 -9
  329. package/src/functions/getFuses.test.ts +96 -0
  330. package/src/functions/getFuses.ts +23 -44
  331. package/src/functions/getHistory.test.ts +29 -0
  332. package/src/functions/getHistory.ts +27 -141
  333. package/src/{tests → functions}/getName.test.ts +11 -11
  334. package/src/functions/getName.ts +2 -2
  335. package/src/functions/getNames.test.ts +276 -0
  336. package/src/functions/getNames.ts +25 -30
  337. package/src/functions/getOwner.test.ts +67 -0
  338. package/src/functions/getOwner.ts +16 -10
  339. package/src/functions/getPrice.ts +2 -2
  340. package/src/{tests → functions}/getProfile.test.ts +50 -27
  341. package/src/functions/getProfile.ts +161 -96
  342. package/src/functions/getRecords.ts +2 -1
  343. package/src/functions/getResolver.test.ts +15 -0
  344. package/src/{tests → functions}/getSpecificRecord.test.ts +21 -18
  345. package/src/functions/getSpecificRecord.ts +18 -147
  346. package/src/functions/getSubnames.test.ts +35 -0
  347. package/src/functions/getSubnames.ts +6 -6
  348. package/src/{tests → functions}/makeCommitment.test.ts +6 -6
  349. package/src/{tests → functions}/normalise.test.ts +0 -0
  350. package/src/functions/registerName.test.ts +59 -0
  351. package/src/functions/registerName.ts +38 -0
  352. package/src/functions/renewName.test.ts +44 -0
  353. package/src/functions/renewName.ts +22 -0
  354. package/src/{tests → functions}/setName.test.ts +16 -16
  355. package/src/functions/setName.ts +15 -17
  356. package/src/functions/setRecord.test.ts +103 -0
  357. package/src/functions/setRecord.ts +59 -0
  358. package/src/{tests → functions}/setRecords.test.ts +19 -16
  359. package/src/functions/setRecords.ts +19 -13
  360. package/src/{tests → functions}/setResolver.test.ts +17 -25
  361. package/src/functions/setResolver.ts +15 -20
  362. package/src/functions/transferName.test.ts +65 -0
  363. package/src/functions/transferName.ts +17 -21
  364. package/src/functions/transferSubname.test.ts +55 -0
  365. package/src/functions/transferSubname.ts +39 -14
  366. package/src/functions/unwrapName.test.ts +53 -0
  367. package/src/functions/unwrapName.ts +23 -20
  368. package/src/functions/wrapName.test.ts +141 -0
  369. package/src/functions/wrapName.ts +71 -58
  370. package/src/generated/BaseRegistrarImplementation.ts +382 -296
  371. package/src/generated/DNSRegistrar.ts +103 -89
  372. package/src/generated/DNSSECImpl.ts +180 -149
  373. package/src/generated/DefaultReverseResolver.ts +37 -21
  374. package/src/generated/ENSRegistry.ts +257 -184
  375. package/src/generated/ETHRegistrarController.ts +252 -191
  376. package/src/generated/Multicall.ts +73 -57
  377. package/src/generated/NameWrapper.ts +979 -649
  378. package/src/generated/P256SHA256Algorithm.ts +21 -16
  379. package/src/generated/PublicResolver.ts +452 -362
  380. package/src/generated/RSASHA1Algorithm.ts +21 -16
  381. package/src/generated/RSASHA256Algorithm.ts +21 -16
  382. package/src/generated/ReverseRegistrar.ts +193 -141
  383. package/src/generated/Root.ts +146 -86
  384. package/src/generated/SHA1Digest.ts +12 -11
  385. package/src/generated/SHA1NSEC3Digest.ts +21 -16
  386. package/src/generated/SHA256Digest.ts +12 -11
  387. package/src/generated/StaticMetadataService.ts +22 -6
  388. package/src/generated/TLDPublicSuffixList.ts +10 -6
  389. package/src/generated/UniversalResolver.ts +44 -40
  390. package/src/generated/common.ts +2 -0
  391. package/src/generated/factories/DNSRegistrar__factory.ts +4 -56
  392. package/src/generated/factories/DNSSECImpl__factory.ts +4 -49
  393. package/src/generated/factories/ETHRegistrarController__factory.ts +14 -4
  394. package/src/generated/factories/NameWrapper__factory.ts +210 -79
  395. package/src/generated/factories/P256SHA256Algorithm__factory.ts +4 -40
  396. package/src/generated/factories/RSASHA1Algorithm__factory.ts +4 -40
  397. package/src/generated/factories/RSASHA256Algorithm__factory.ts +4 -40
  398. package/src/generated/factories/SHA1Digest__factory.ts +4 -40
  399. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +4 -40
  400. package/src/generated/factories/SHA256Digest__factory.ts +4 -40
  401. package/src/generated/factories/TLDPublicSuffixList__factory.ts +4 -40
  402. package/src/generated/factories/index.ts +14 -0
  403. package/src/generated/index.ts +29 -1
  404. package/src/index.ts +168 -63
  405. package/src/utils/contentHash.ts +24 -22
  406. package/src/utils/createReverseNode.ts +1 -1
  407. package/src/utils/fuses.ts +52 -4
  408. package/src/utils/labels.ts +6 -4
  409. package/src/utils/normalise.ts +11 -5
  410. package/src/utils/recordHelpers.ts +52 -20
  411. package/src/utils/registerHelpers.ts +112 -53
  412. package/src/utils/validation.ts +8 -9
  413. package/src/utils/wrapperExpiry.ts +29 -0
  414. package/src/utils/writeTx.ts +16 -0
  415. package/dist/cjs/GqlManager.d.ts +0 -6
  416. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  417. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
  418. package/dist/cjs/contracts/index.d.ts +0 -16
  419. package/dist/cjs/contracts/nameWrapper.d.ts +0 -3
  420. package/dist/cjs/contracts/publicResolver.d.ts +0 -3
  421. package/dist/cjs/functions/batchWrappers.d.ts +0 -29
  422. package/dist/cjs/functions/burnFuses.d.ts +0 -3
  423. package/dist/cjs/functions/createSubname.d.ts +0 -19
  424. package/dist/cjs/functions/deleteSubname.d.ts +0 -4
  425. package/dist/cjs/functions/getExpiry.d.ts +0 -12
  426. package/dist/cjs/functions/getHistory.d.ts +0 -54
  427. package/dist/cjs/functions/getProfile.d.ts +0 -30
  428. package/dist/cjs/functions/getRecords.d.ts +0 -32
  429. package/dist/cjs/functions/getSpecificRecord.d.ts +0 -73
  430. package/dist/cjs/functions/getSubnames.d.ts +0 -26
  431. package/dist/cjs/functions/setName.d.ts +0 -4
  432. package/dist/cjs/functions/setRecords.d.ts +0 -3
  433. package/dist/cjs/functions/setResolver.d.ts +0 -4
  434. package/dist/cjs/functions/transferName.d.ts +0 -5
  435. package/dist/cjs/functions/transferSubname.d.ts +0 -5
  436. package/dist/cjs/functions/unwrapName.d.ts +0 -4
  437. package/dist/cjs/functions/wrapName.d.ts +0 -6
  438. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +0 -487
  439. package/dist/cjs/generated/DNSSECImpl.d.ts +0 -402
  440. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  441. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
  442. package/dist/cjs/generated/ENSRegistry.d.ts +0 -259
  443. package/dist/cjs/generated/ETHRegistrarController.d.ts +0 -319
  444. package/dist/cjs/generated/Multicall.d.ts +0 -292
  445. package/dist/cjs/generated/NameWrapper.d.ts +0 -675
  446. package/dist/cjs/generated/PublicResolver.d.ts +0 -542
  447. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +0 -42
  448. package/dist/cjs/generated/ReverseRegistrar.d.ts +0 -259
  449. package/dist/cjs/generated/Root.d.ts +0 -173
  450. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +0 -72
  451. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +0 -42
  452. package/dist/cjs/generated/UniversalResolver.d.ts +0 -82
  453. package/dist/cjs/generated/common.d.ts +0 -21
  454. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +0 -79
  455. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +0 -68
  456. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  457. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
  458. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +0 -34
  459. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +0 -34
  460. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +0 -34
  461. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +0 -34
  462. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +0 -34
  463. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +0 -34
  464. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +0 -34
  465. package/dist/cjs/generated/factories/index.d.ts +0 -6
  466. package/dist/cjs/generated/index.d.ts +0 -13
  467. package/dist/cjs/index.d.ts +0 -470
  468. package/dist/cjs/utils/fuses.d.ts +0 -20
  469. package/dist/cjs/utils/normalise.d.ts +0 -2
  470. package/dist/cjs/utils/recordHelpers.d.ts +0 -13
  471. package/dist/cjs/utils/registerHelpers.d.ts +0 -26
  472. package/dist/esm/GqlManager.d.ts +0 -6
  473. package/dist/esm/GqlManager.js +0 -18
  474. package/dist/esm/contracts/baseRegistrar.d.ts +0 -3
  475. package/dist/esm/contracts/baseRegistrar.js +0 -2
  476. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  477. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
  478. package/dist/esm/contracts/ethRegistrarController.d.ts +0 -3
  479. package/dist/esm/contracts/ethRegistrarController.js +0 -2
  480. package/dist/esm/contracts/getContractAddress.d.ts +0 -3
  481. package/dist/esm/contracts/getContractAddress.js +0 -42
  482. package/dist/esm/contracts/index.d.ts +0 -16
  483. package/dist/esm/contracts/index.js +0 -29
  484. package/dist/esm/contracts/multicall.d.ts +0 -3
  485. package/dist/esm/contracts/multicall.js +0 -20
  486. package/dist/esm/contracts/nameWrapper.js +0 -2
  487. package/dist/esm/contracts/publicResolver.js +0 -2
  488. package/dist/esm/contracts/registry.d.ts +0 -3
  489. package/dist/esm/contracts/registry.js +0 -2
  490. package/dist/esm/contracts/reverseRegistrar.d.ts +0 -3
  491. package/dist/esm/contracts/reverseRegistrar.js +0 -2
  492. package/dist/esm/contracts/types.d.ts +0 -2
  493. package/dist/esm/contracts/types.js +0 -1
  494. package/dist/esm/contracts/universalResolver.d.ts +0 -3
  495. package/dist/esm/contracts/universalResolver.js +0 -2
  496. package/dist/esm/functions/batch.d.ts +0 -9
  497. package/dist/esm/functions/batch.js +0 -19
  498. package/dist/esm/functions/batchWrappers.js +0 -68
  499. package/dist/esm/functions/burnFuses.d.ts +0 -3
  500. package/dist/esm/functions/burnFuses.js +0 -12
  501. package/dist/esm/functions/createSubname.js +0 -38
  502. package/dist/esm/functions/deleteSubname.d.ts +0 -4
  503. package/dist/esm/functions/deleteSubname.js +0 -3
  504. package/dist/esm/functions/getExpiry.d.ts +0 -12
  505. package/dist/esm/functions/getExpiry.js +0 -43
  506. package/dist/esm/functions/getFuses.d.ts +0 -17
  507. package/dist/esm/functions/getFuses.js +0 -60
  508. package/dist/esm/functions/getHistory.d.ts +0 -54
  509. package/dist/esm/functions/getHistory.js +0 -273
  510. package/dist/esm/functions/getName.d.ts +0 -19
  511. package/dist/esm/functions/getName.js +0 -32
  512. package/dist/esm/functions/getNames.d.ts +0 -40
  513. package/dist/esm/functions/getNames.js +0 -220
  514. package/dist/esm/functions/getOwner.d.ts +0 -14
  515. package/dist/esm/functions/getOwner.js +0 -138
  516. package/dist/esm/functions/getPrice.d.ts +0 -13
  517. package/dist/esm/functions/getPrice.js +0 -48
  518. package/dist/esm/functions/getProfile.js +0 -299
  519. package/dist/esm/functions/getRecords.js +0 -8
  520. package/dist/esm/functions/getResolver.d.ts +0 -9
  521. package/dist/esm/functions/getResolver.js +0 -22
  522. package/dist/esm/functions/getSpecificRecord.js +0 -265
  523. package/dist/esm/functions/getSubnames.js +0 -152
  524. package/dist/esm/functions/initialGetters.d.ts +0 -11
  525. package/dist/esm/functions/initialGetters.js +0 -11
  526. package/dist/esm/functions/setName.d.ts +0 -4
  527. package/dist/esm/functions/setName.js +0 -14
  528. package/dist/esm/functions/setRecords.d.ts +0 -3
  529. package/dist/esm/functions/setRecords.js +0 -19
  530. package/dist/esm/functions/setResolver.d.ts +0 -4
  531. package/dist/esm/functions/setResolver.js +0 -25
  532. package/dist/esm/functions/transferName.d.ts +0 -5
  533. package/dist/esm/functions/transferName.js +0 -31
  534. package/dist/esm/functions/transferSubname.d.ts +0 -5
  535. package/dist/esm/functions/transferSubname.js +0 -25
  536. package/dist/esm/functions/unwrapName.d.ts +0 -4
  537. package/dist/esm/functions/unwrapName.js +0 -25
  538. package/dist/esm/functions/wrapName.d.ts +0 -6
  539. package/dist/esm/functions/wrapName.js +0 -58
  540. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +0 -487
  541. package/dist/esm/generated/BaseRegistrarImplementation.js +0 -1
  542. package/dist/esm/generated/DNSRegistrar.d.ts +0 -220
  543. package/dist/esm/generated/DNSRegistrar.js +0 -1
  544. package/dist/esm/generated/DNSSECImpl.js +0 -1
  545. package/dist/esm/generated/DefaultReverseResolver.d.ts +0 -66
  546. package/dist/esm/generated/DefaultReverseResolver.js +0 -1
  547. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  548. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
  549. package/dist/esm/generated/ENSRegistry.d.ts +0 -259
  550. package/dist/esm/generated/ENSRegistry.js +0 -1
  551. package/dist/esm/generated/ETHRegistrarController.js +0 -1
  552. package/dist/esm/generated/Multicall.js +0 -1
  553. package/dist/esm/generated/NameWrapper.d.ts +0 -675
  554. package/dist/esm/generated/NameWrapper.js +0 -1
  555. package/dist/esm/generated/P256SHA256Algorithm.d.ts +0 -72
  556. package/dist/esm/generated/P256SHA256Algorithm.js +0 -1
  557. package/dist/esm/generated/PublicResolver.d.ts +0 -542
  558. package/dist/esm/generated/PublicResolver.js +0 -1
  559. package/dist/esm/generated/RSASHA1Algorithm.js +0 -1
  560. package/dist/esm/generated/RSASHA256Algorithm.d.ts +0 -42
  561. package/dist/esm/generated/RSASHA256Algorithm.js +0 -1
  562. package/dist/esm/generated/ReverseRegistrar.js +0 -1
  563. package/dist/esm/generated/Root.d.ts +0 -173
  564. package/dist/esm/generated/Root.js +0 -1
  565. package/dist/esm/generated/SHA1Digest.d.ts +0 -67
  566. package/dist/esm/generated/SHA1Digest.js +0 -1
  567. package/dist/esm/generated/SHA1NSEC3Digest.js +0 -1
  568. package/dist/esm/generated/SHA256Digest.d.ts +0 -67
  569. package/dist/esm/generated/SHA256Digest.js +0 -1
  570. package/dist/esm/generated/StaticMetadataService.d.ts +0 -42
  571. package/dist/esm/generated/StaticMetadataService.js +0 -1
  572. package/dist/esm/generated/TLDPublicSuffixList.js +0 -1
  573. package/dist/esm/generated/UniversalResolver.d.ts +0 -82
  574. package/dist/esm/generated/UniversalResolver.js +0 -1
  575. package/dist/esm/generated/common.js +0 -1
  576. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.d.ts +0 -52
  577. package/dist/esm/generated/factories/BaseRegistrarImplementation__factory.js +0 -766
  578. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +0 -79
  579. package/dist/esm/generated/factories/DNSRegistrar__factory.js +0 -292
  580. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +0 -68
  581. package/dist/esm/generated/factories/DNSSECImpl__factory.js +0 -497
  582. package/dist/esm/generated/factories/DefaultReverseResolver__factory.d.ts +0 -36
  583. package/dist/esm/generated/factories/DefaultReverseResolver__factory.js +0 -83
  584. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
  585. package/dist/esm/generated/factories/ENSRegistry__factory.d.ts +0 -52
  586. package/dist/esm/generated/factories/ENSRegistry__factory.js +0 -435
  587. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +0 -507
  588. package/dist/esm/generated/factories/Multicall__factory.d.ts +0 -42
  589. package/dist/esm/generated/factories/Multicall__factory.js +0 -453
  590. package/dist/esm/generated/factories/NameWrapper__factory.d.ts +0 -57
  591. package/dist/esm/generated/factories/NameWrapper__factory.js +0 -1196
  592. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +0 -34
  593. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +0 -67
  594. package/dist/esm/generated/factories/PublicResolver__factory.d.ts +0 -46
  595. package/dist/esm/generated/factories/PublicResolver__factory.js +0 -888
  596. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +0 -34
  597. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +0 -67
  598. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +0 -34
  599. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +0 -67
  600. package/dist/esm/generated/factories/ReverseRegistrar__factory.d.ts +0 -46
  601. package/dist/esm/generated/factories/ReverseRegistrar__factory.js +0 -336
  602. package/dist/esm/generated/factories/Root__factory.d.ts +0 -52
  603. package/dist/esm/generated/factories/Root__factory.js +0 -239
  604. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +0 -34
  605. package/dist/esm/generated/factories/SHA1Digest__factory.js +0 -62
  606. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +0 -34
  607. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +0 -67
  608. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +0 -34
  609. package/dist/esm/generated/factories/SHA256Digest__factory.js +0 -62
  610. package/dist/esm/generated/factories/StaticMetadataService__factory.d.ts +0 -32
  611. package/dist/esm/generated/factories/StaticMetadataService__factory.js +0 -45
  612. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +0 -34
  613. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +0 -57
  614. package/dist/esm/generated/factories/UniversalResolver__factory.d.ts +0 -42
  615. package/dist/esm/generated/factories/UniversalResolver__factory.js +0 -200
  616. package/dist/esm/generated/factories/index.d.ts +0 -6
  617. package/dist/esm/generated/factories/index.js +0 -9
  618. package/dist/esm/generated/index.d.ts +0 -13
  619. package/dist/esm/generated/index.js +0 -7
  620. package/dist/esm/index.js +0 -189
  621. package/dist/esm/utils/contentHash.d.ts +0 -28
  622. package/dist/esm/utils/contentHash.js +0 -153
  623. package/dist/esm/utils/createReverseNode.d.ts +0 -2
  624. package/dist/esm/utils/createReverseNode.js +0 -1
  625. package/dist/esm/utils/format.d.ts +0 -3
  626. package/dist/esm/utils/format.js +0 -3
  627. package/dist/esm/utils/fuses.d.ts +0 -20
  628. package/dist/esm/utils/fuses.js +0 -21
  629. package/dist/esm/utils/generateFuseInput.d.ts +0 -3
  630. package/dist/esm/utils/generateFuseInput.js +0 -14
  631. package/dist/esm/utils/hexEncodedName.d.ts +0 -1
  632. package/dist/esm/utils/hexEncodedName.js +0 -2
  633. package/dist/esm/utils/labels.d.ts +0 -14
  634. package/dist/esm/utils/labels.js +0 -95
  635. package/dist/esm/utils/makeHashIndexes.d.ts +0 -2
  636. package/dist/esm/utils/makeHashIndexes.js +0 -3
  637. package/dist/esm/utils/normalise.d.ts +0 -2
  638. package/dist/esm/utils/normalise.js +0 -20
  639. package/dist/esm/utils/recordHelpers.js +0 -39
  640. package/dist/esm/utils/registerHelpers.d.ts +0 -26
  641. package/dist/esm/utils/registerHelpers.js +0 -43
  642. package/dist/esm/utils/singleCall.d.ts +0 -9
  643. package/dist/esm/utils/singleCall.js +0 -5
  644. package/dist/esm/utils/validation.d.ts +0 -8
  645. package/dist/esm/utils/validation.js +0 -67
  646. package/src/ABIs/ETHRegistrarController.json +0 -494
  647. package/src/ABIs/NameWrapper.json +0 -1183
  648. package/src/ABIs/PublicResolver.json +0 -875
  649. package/src/ABIs/ReverseRegistrar.json +0 -323
  650. package/src/ABIs/StaticMetadataService.json +0 -32
  651. package/src/ABIs/UniversalResolver.json +0 -187
  652. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
  653. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
  654. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
  655. package/src/tests/batch.test.ts +0 -36
  656. package/src/tests/batchWrappers.test.ts +0 -31
  657. package/src/tests/burnFuses.test.ts +0 -44
  658. package/src/tests/deleteSubname.test.ts +0 -71
  659. package/src/tests/getExpiry.test.ts +0 -37
  660. package/src/tests/getFuses.test.ts +0 -103
  661. package/src/tests/getHistory.test.ts +0 -101
  662. package/src/tests/getNames.test.ts +0 -247
  663. package/src/tests/getOwner.test.ts +0 -71
  664. package/src/tests/getResolver.test.ts +0 -19
  665. package/src/tests/getSubnames.test.ts +0 -31
  666. package/src/tests/setup.ts +0 -53
  667. package/src/tests/transferName.test.ts +0 -81
  668. package/src/tests/transferSubname.test.ts +0 -73
  669. package/src/tests/unwrapName.test.ts +0 -68
  670. package/src/tests/withProvider.test.ts +0 -28
  671. package/src/tests/wrapName.test.ts +0 -64
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { ethers } from 'ethers'
2
- import ContractManager from './contracts'
1
+ import type { JsonRpcSigner } from '@ethersproject/providers'
2
+ import { ContractTransaction, ethers, PopulatedTransaction } from 'ethers'
3
3
  import { getContractAddress as _getContractAddress } from './contracts/getContractAddress'
4
+ import ContractManager from './contracts/index'
4
5
  import { SupportedNetworkId } from './contracts/types'
5
6
  import type batch from './functions/batch'
6
7
  import type {
@@ -9,15 +10,13 @@ import type {
9
10
  universalWrapper,
10
11
  } from './functions/batchWrappers'
11
12
  import type burnFuses from './functions/burnFuses'
13
+ import type commitName from './functions/commitName'
12
14
  import type createSubname from './functions/createSubname'
13
15
  import type deleteSubname from './functions/deleteSubname'
16
+ import type getDNSOwner from './functions/getDNSOwner'
14
17
  import type getExpiry from './functions/getExpiry'
15
18
  import type getFuses from './functions/getFuses'
16
- import type {
17
- getHistory,
18
- getHistoryDetailForTransactionHash,
19
- getHistoryWithDetail,
20
- } from './functions/getHistory'
19
+ import type { getHistory } from './functions/getHistory'
21
20
  import type getName from './functions/getName'
22
21
  import type getNames from './functions/getNames'
23
22
  import type getOwner from './functions/getOwner'
@@ -34,7 +33,10 @@ import type {
34
33
  _getText,
35
34
  } from './functions/getSpecificRecord'
36
35
  import type getSubnames from './functions/getSubnames'
36
+ import type registerName from './functions/registerName'
37
+ import type renewName from './functions/renewName'
37
38
  import type setName from './functions/setName'
39
+ import type setRecord from './functions/setRecord'
38
40
  import type setRecords from './functions/setRecords'
39
41
  import type setResolver from './functions/setResolver'
40
42
  import type transferName from './functions/transferName'
@@ -43,6 +45,16 @@ import type unwrapName from './functions/unwrapName'
43
45
  import type wrapName from './functions/wrapName'
44
46
  import GqlManager from './GqlManager'
45
47
  import singleCall from './utils/singleCall'
48
+ import writeTx from './utils/writeTx'
49
+
50
+ export type {
51
+ Fuse,
52
+ FuseArrayPossibilities,
53
+ FuseObj,
54
+ NamedFusesToBurn,
55
+ UnnamedFuseType,
56
+ UnnamedFuseValues,
57
+ } from './utils/fuses'
46
58
 
47
59
  type ENSOptions = {
48
60
  graphURI?: string | null
@@ -52,6 +64,7 @@ type ENSOptions = {
52
64
  export type InternalENS = {
53
65
  options?: ENSOptions
54
66
  provider?: ethers.providers.Provider
67
+ signer: JsonRpcSigner
55
68
  graphURI?: string | null
56
69
  } & ENS
57
70
 
@@ -75,12 +88,40 @@ type FirstArg<F> = F extends (x: infer A, ...args: any[]) => any ? A : never
75
88
 
76
89
  type FunctionDeps<F> = Extract<keyof FirstArg<F>, string>[]
77
90
 
91
+ type WriteOptions = {
92
+ addressOrIndex?: string | number
93
+ signer?: JsonRpcSigner
94
+ }
95
+
96
+ type OptionalWriteOptions<F> = F extends (
97
+ x: any,
98
+ arg_0: infer Z,
99
+ options?: infer P,
100
+ ) => infer R
101
+ ? (name: Z, options?: P & WriteOptions) => R
102
+ : F extends (x: any, arg_0: infer Z, options: infer P) => infer R
103
+ ? (name: Z, options: P & WriteOptions) => R
104
+ : never
105
+
106
+ interface WriteFunction<F extends (...args: any) => any> extends Function {
107
+ (...args: Parameters<OptionalWriteOptions<F>>): Promise<
108
+ ContractTransaction & {
109
+ customData?: Record<string, any>
110
+ }
111
+ >
112
+ populateTransaction: (
113
+ ...args: Parameters<OptionalWriteOptions<F>>
114
+ ) => Promise<PopulatedTransaction>
115
+ }
116
+
117
+ /* eslint-disable @typescript-eslint/naming-convention */
78
118
  const graphURIEndpoints: Record<string, string> = {
79
119
  1: 'https://api.thegraph.com/subgraphs/name/ensdomains/ens',
80
120
  3: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensropsten',
81
121
  4: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensrinkeby',
82
122
  5: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensgoerli',
83
123
  }
124
+ /* eslint-enable @typescript-eslint/naming-convention */
84
125
 
85
126
  export type RawFunction = {
86
127
  raw: (...args: any[]) => Promise<{ to: string; data: string }>
@@ -120,12 +161,19 @@ export interface GenericGeneratedRawFunction
120
161
 
121
162
  export class ENS {
122
163
  [x: string]: any
164
+
123
165
  protected options?: ENSOptions
166
+
124
167
  protected provider?: ethers.providers.JsonRpcProvider
168
+
125
169
  protected graphURI?: string | null
170
+
126
171
  protected initialProvider?: ethers.providers.JsonRpcProvider
172
+
127
173
  contracts?: ContractManager
174
+
128
175
  getContractAddress = _getContractAddress
176
+
129
177
  gqlInstance = new GqlManager()
130
178
 
131
179
  constructor(options?: ENSOptions) {
@@ -142,7 +190,6 @@ export class ENS {
142
190
  return
143
191
  }
144
192
  await this.setProvider(this.initialProvider)
145
- return
146
193
  }
147
194
 
148
195
  /**
@@ -171,7 +218,13 @@ export class ENS {
171
218
  path: string,
172
219
  dependencies: FunctionDeps<F>,
173
220
  exportName: string = 'default',
174
- subFunc?: 'raw' | 'decode' | 'combine' | 'batch',
221
+ subFunc?:
222
+ | 'raw'
223
+ | 'decode'
224
+ | 'combine'
225
+ | 'batch'
226
+ | 'write'
227
+ | 'populateTransaction',
175
228
  passthrough?: RawFunction,
176
229
  ): Function => {
177
230
  // if batch is specified, create batch func
@@ -185,34 +238,55 @@ export class ENS {
185
238
  await thisRef.checkInitialProvider()
186
239
  // import the module dynamically
187
240
  const mod = await import(
188
- /* webpackMode: "lazy", webpackChunkName: "[request]", webpackPreload: true */
241
+ /* webpackMode: "lazy", webpackChunkName: "[request]", webpackPreload: true, webpackExclude: /.*\.ts$/ */
189
242
  `./functions/${path}`
190
243
  )
191
244
 
192
245
  // if combine isn't specified, run normally
193
246
  // otherwise, create a function from the raw and decode functions
194
247
  if (subFunc !== 'combine') {
248
+ const writeable =
249
+ subFunc === 'write' || subFunc === 'populateTransaction'
195
250
  // get the function to call
196
- const func = subFunc ? mod[exportName][subFunc] : mod[exportName]
251
+ const func =
252
+ subFunc && !writeable ? mod[exportName][subFunc] : mod[exportName]
197
253
  // get the dependencies to forward to the function as the first arg
198
- const dependenciesToForward =
254
+ let dependenciesToForward =
199
255
  thisRef.forwardDependenciesFromArray<F>(dependencies)
256
+
257
+ // if func is write func, inject signer into dependencies
258
+ if (writeable) {
259
+ const options = (args[1] || {}) as WriteOptions
260
+ const signer =
261
+ options.signer ||
262
+ thisRef.provider?.getSigner(options.addressOrIndex)
263
+ const populate = subFunc === 'populateTransaction'
264
+ if (!signer) {
265
+ throw new Error('No signer specified')
266
+ }
267
+ delete options.addressOrIndex
268
+ delete options.signer
269
+ dependenciesToForward = { ...dependenciesToForward, signer }
270
+ return func(dependenciesToForward, args[0], options).then(
271
+ writeTx(signer, populate),
272
+ )
273
+ }
274
+
200
275
  // return the function with the dependencies forwarded
201
276
  return func(dependenciesToForward, ...args)
202
- } else {
203
- // get the dependencies to forward from raw and decode functions
204
- const dependenciesToForward = thisRef.forwardDependenciesFromArray<
205
- CombineFunctionDeps<F>
206
- >(dependencies as any)
207
-
208
- // return singleCall function with dependencies forwarded
209
- return singleCall(
210
- thisRef.provider!,
211
- dependenciesToForward,
212
- mod[exportName],
213
- ...args,
214
- )
215
277
  }
278
+ // get the dependencies to forward from raw and decode functions
279
+ const dependenciesToForward = thisRef.forwardDependenciesFromArray<
280
+ CombineFunctionDeps<F>
281
+ >(dependencies as any)
282
+
283
+ // return singleCall function with dependencies forwarded
284
+ return singleCall(
285
+ thisRef.provider!,
286
+ dependenciesToForward,
287
+ mod[exportName],
288
+ ...args,
289
+ )
216
290
  }
217
291
 
218
292
  // if subfunc is combine, add raw and decode property methods to the function
@@ -236,6 +310,13 @@ export class ENS {
236
310
  'batch',
237
311
  { raw: mainFunc.raw as any, decode: mainFunc.decode as any },
238
312
  )
313
+ } else if (subFunc === 'write') {
314
+ mainFunc.populateTransaction = this.importGenerator<F>(
315
+ path,
316
+ dependencies,
317
+ exportName,
318
+ 'populateTransaction',
319
+ )
239
320
  }
240
321
 
241
322
  return mainFunc as Function
@@ -255,6 +336,25 @@ export class ENS {
255
336
  ): OmitFirstArg<F> =>
256
337
  this.importGenerator<F>(path, dependencies, exportName) as OmitFirstArg<F>
257
338
 
339
+ /**
340
+ * Generates a write wrapped function
341
+ * @param {string} path - The path of the exported function
342
+ * @param {FunctionDeps} dependencies - An array of ENS properties
343
+ * @param {string} exportName - The export name of the target function
344
+ * @returns {OmitFirstArg} - The generated wrapped function
345
+ */
346
+ private generateWriteFunction = <F extends (...args: any) => any>(
347
+ path: string,
348
+ dependencies: FunctionDeps<F>,
349
+ exportName: string = 'default',
350
+ ): WriteFunction<F> =>
351
+ this.importGenerator<F>(
352
+ path,
353
+ dependencies,
354
+ exportName,
355
+ 'write',
356
+ ) as WriteFunction<F>
357
+
258
358
  /**
259
359
  * Generates a wrapped function from raw and decode exports
260
360
  * @param {string} path - The path of the exported function
@@ -294,7 +394,6 @@ export class ENS {
294
394
  this.provider,
295
395
  this.getContractAddress(String(network) as SupportedNetworkId),
296
396
  )
297
- return
298
397
  }
299
398
 
300
399
  /**
@@ -356,22 +455,6 @@ export class ENS {
356
455
  'getHistory',
357
456
  )
358
457
 
359
- public getHistoryWithDetail = this.generateFunction<
360
- typeof getHistoryWithDetail
361
- >(
362
- 'getHistory',
363
- ['contracts', 'gqlInstance', 'provider'],
364
- 'getHistoryWithDetail',
365
- )
366
-
367
- public getHistoryDetailForTransactionHash = this.generateFunction<
368
- typeof getHistoryDetailForTransactionHash
369
- >(
370
- 'getHistory',
371
- ['contracts', 'provider'],
372
- 'getHistoryDetailForTransactionHash',
373
- )
374
-
375
458
  public getContentHash = this.generateRawFunction<typeof getContentHash>(
376
459
  'initialGetters',
377
460
  ['contracts', 'universalWrapper'],
@@ -438,6 +521,11 @@ export class ENS {
438
521
  'getPrice',
439
522
  )
440
523
 
524
+ public getDNSOwner = this.generateFunction<typeof getDNSOwner>(
525
+ 'getDNSOwner',
526
+ [],
527
+ )
528
+
441
529
  public universalWrapper = this.generateRawFunction<typeof universalWrapper>(
442
530
  'initialGetters',
443
531
  ['contracts'],
@@ -454,54 +542,71 @@ export class ENS {
454
542
  'multicallWrapper',
455
543
  )
456
544
 
457
- public setName = this.generateFunction<typeof setName>('setName', [
545
+ public setName = this.generateWriteFunction<typeof setName>('setName', [
458
546
  'contracts',
459
- 'provider',
460
547
  ])
461
548
 
462
- public setRecords = this.generateFunction<typeof setRecords>('setRecords', [
549
+ public setRecords = this.generateWriteFunction<typeof setRecords>(
550
+ 'setRecords',
551
+ ['contracts', 'provider', 'getResolver'],
552
+ )
553
+
554
+ public setRecord = this.generateWriteFunction<typeof setRecord>('setRecord', [
463
555
  'contracts',
464
556
  'provider',
465
557
  'getResolver',
466
558
  ])
467
559
 
468
- public setResolver = this.generateFunction<typeof setResolver>(
560
+ public setResolver = this.generateWriteFunction<typeof setResolver>(
469
561
  'setResolver',
470
- ['contracts', 'provider'],
562
+ ['contracts'],
471
563
  )
472
564
 
473
- public transferName = this.generateFunction<typeof transferName>(
565
+ public transferName = this.generateWriteFunction<typeof transferName>(
474
566
  'transferName',
475
- ['contracts', 'provider'],
567
+ ['contracts'],
476
568
  )
477
569
 
478
- public wrapName = this.generateFunction<typeof wrapName>('wrapName', [
570
+ public wrapName = this.generateWriteFunction<typeof wrapName>('wrapName', [
479
571
  'contracts',
480
- 'provider',
572
+ 'getExpiry',
481
573
  ])
482
574
 
483
- public unwrapName = this.generateFunction<typeof unwrapName>('unwrapName', [
484
- 'contracts',
485
- 'provider',
486
- ])
575
+ public unwrapName = this.generateWriteFunction<typeof unwrapName>(
576
+ 'unwrapName',
577
+ ['contracts'],
578
+ )
487
579
 
488
- public burnFuses = this.generateFunction<typeof burnFuses>('burnFuses', [
580
+ public burnFuses = this.generateWriteFunction<typeof burnFuses>('burnFuses', [
489
581
  'contracts',
490
- 'provider',
491
582
  ])
492
583
 
493
- public createSubname = this.generateFunction<typeof createSubname>(
584
+ public createSubname = this.generateWriteFunction<typeof createSubname>(
494
585
  'createSubname',
495
- ['contracts', 'provider'],
586
+ ['contracts', 'getExpiry'],
496
587
  )
497
588
 
498
- public deleteSubname = this.generateFunction<typeof deleteSubname>(
589
+ public deleteSubname = this.generateWriteFunction<typeof deleteSubname>(
499
590
  'deleteSubname',
500
- ['contracts', 'provider', 'transferSubname'],
591
+ ['transferSubname'],
501
592
  )
502
593
 
503
- public transferSubname = this.generateFunction<typeof transferSubname>(
594
+ public transferSubname = this.generateWriteFunction<typeof transferSubname>(
504
595
  'transferSubname',
505
- ['contracts', 'provider'],
596
+ ['contracts', 'getExpiry'],
506
597
  )
598
+
599
+ public commitName = this.generateWriteFunction<typeof commitName>(
600
+ 'commitName',
601
+ ['contracts'],
602
+ )
603
+
604
+ public registerName = this.generateWriteFunction<typeof registerName>(
605
+ 'registerName',
606
+ ['contracts'],
607
+ )
608
+
609
+ public renewName = this.generateWriteFunction<typeof renewName>('renewName', [
610
+ 'contracts',
611
+ ])
507
612
  }
@@ -26,13 +26,16 @@ function matchProtocol(text: string) {
26
26
  }
27
27
 
28
28
  export function decodeContenthash(encoded: any) {
29
- let decoded, protocolType, error
29
+ let decoded
30
+ let protocolType
31
+ let error
30
32
  if (!encoded || encoded === '0x') {
31
33
  return {}
32
34
  }
33
35
  if (encoded.error) {
34
36
  return { protocolType: null, decoded: encoded.error }
35
- } else if (encoded === false) {
37
+ }
38
+ if (encoded === false) {
36
39
  return { protocolType: null, decoded: 'invalid value' }
37
40
  }
38
41
  if (encoded) {
@@ -80,12 +83,12 @@ export function isValidContenthash(encoded: any) {
80
83
  }
81
84
 
82
85
  export function getProtocolType(encoded: any) {
83
- let protocolType, decoded
86
+ let protocolType
87
+ let decoded
84
88
  try {
85
- let matched = matchProtocol(encoded)
89
+ const matched = matchProtocol(encoded)
86
90
  if (matched) {
87
- protocolType = matched[1]
88
- decoded = matched[2]
91
+ ;[, protocolType, decoded] = matched
89
92
  }
90
93
  return {
91
94
  protocolType,
@@ -101,38 +104,37 @@ export function encodeContenthash(text: string) {
101
104
  let contentType
102
105
  let encoded: string | boolean = false
103
106
  let error
104
- if (!!text) {
105
- let matched = matchProtocol(text)
107
+ if (text) {
108
+ const matched = matchProtocol(text)
106
109
  if (matched) {
107
- contentType = matched[1]
108
- content = matched[2]
110
+ ;[, contentType, content] = matched
109
111
  }
110
112
  try {
111
113
  if (contentType === 'ipfs') {
112
114
  if (content.length >= 4) {
113
- encoded = '0x' + contentHash.encode('ipfs-ns', content)
115
+ encoded = `0x${contentHash.encode('ipfs-ns', content)}`
114
116
  }
115
117
  } else if (contentType === 'ipns') {
116
- encoded = '0x' + contentHash.encode('ipns-ns', content)
118
+ encoded = `0x${contentHash.encode('ipns-ns', content)}`
117
119
  } else if (contentType === 'bzz') {
118
120
  if (content.length >= 4) {
119
- encoded = '0x' + contentHash.fromSwarm(content)
121
+ encoded = `0x${contentHash.fromSwarm(content)}`
120
122
  }
121
123
  } else if (contentType === 'onion') {
122
- if (content.length == 16) {
123
- encoded = '0x' + contentHash.encode('onion', content)
124
+ if (content.length === 16) {
125
+ encoded = `0x${contentHash.encode('onion', content)}`
124
126
  }
125
127
  } else if (contentType === 'onion3') {
126
- if (content.length == 56) {
127
- encoded = '0x' + contentHash.encode('onion3', content)
128
+ if (content.length === 56) {
129
+ encoded = `0x${contentHash.encode('onion3', content)}`
128
130
  }
129
131
  } else if (contentType === 'sia') {
130
- if (content.length == 46) {
131
- encoded = '0x' + contentHash.encode('skynet-ns', content)
132
+ if (content.length === 46) {
133
+ encoded = `0x${contentHash.encode('skynet-ns', content)}`
132
134
  }
133
135
  } else if (contentType === 'arweave') {
134
- if (content.length == 43) {
135
- encoded = '0x' + contentHash.encode('arweave-ns', content)
136
+ if (content.length === 43) {
137
+ encoded = `0x${contentHash.encode('arweave-ns', content)}`
136
138
  }
137
139
  } else {
138
140
  console.warn('Unsupported protocol or invalid value', {
@@ -144,7 +146,7 @@ export function encodeContenthash(text: string) {
144
146
  const errorMessage = 'Error encoding content hash'
145
147
  console.warn(errorMessage, { text, encoded })
146
148
  error = errorMessage
147
- //throw 'Error encoding content hash'
149
+ // throw 'Error encoding content hash'
148
150
  }
149
151
  }
150
152
  return { encoded, error }
@@ -1,2 +1,2 @@
1
1
  export default (address: string) =>
2
- address.toLowerCase().substring(2) + '.addr.reverse'
2
+ `${address.toLowerCase().substring(2)}.addr.reverse`
@@ -7,7 +7,7 @@ const CANNOT_CREATE_SUBDOMAIN = 32
7
7
  const PARENT_CANNOT_CONTROL = 64
8
8
  const CAN_DO_EVERYTHING = 0
9
9
 
10
- export const testable = {
10
+ export const fuseEnum = {
11
11
  CANNOT_UNWRAP,
12
12
  CANNOT_BURN_FUSES,
13
13
  CANNOT_TRANSFER,
@@ -15,9 +15,57 @@ export const testable = {
15
15
  CANNOT_SET_TTL,
16
16
  CANNOT_CREATE_SUBDOMAIN,
17
17
  PARENT_CANNOT_CONTROL,
18
- }
18
+ } as const
19
+
20
+ export const unnamedFuses = [
21
+ 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144,
22
+ 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864,
23
+ 134217728, 268435456, 536870912, 1073741824, 2147483648, 4294967296,
24
+ ] as const
19
25
 
20
- export default {
21
- ...testable,
26
+ const fullFuseEnum = {
27
+ ...fuseEnum,
22
28
  CAN_DO_EVERYTHING,
23
29
  }
30
+
31
+ export type FuseObj = typeof fuseEnum
32
+ export type CurrentFuses = { [f in keyof FuseObj]: boolean }
33
+ export type UnnamedFuseType = typeof unnamedFuses
34
+ export type Fuse = keyof FuseObj
35
+ export type UnnamedFuseValues = UnnamedFuseType[number]
36
+
37
+ // We need this type so that the following type isn't infinite. This type limits the max length of the fuse array to 7.
38
+ export type FuseArrayPossibilities =
39
+ | [Fuse]
40
+ | [Fuse, Fuse]
41
+ | [Fuse, Fuse, Fuse]
42
+ | [Fuse, Fuse, Fuse, Fuse]
43
+ | [Fuse, Fuse, Fuse, Fuse, Fuse]
44
+ | [Fuse, Fuse, Fuse, Fuse, Fuse, Fuse]
45
+ | [Fuse, Fuse, Fuse, Fuse, Fuse, Fuse, Fuse]
46
+
47
+ /**
48
+ * This type creates a type error if there are any duplicate fuses.
49
+ * It effectively works like a reduce function, starting with 0 included types, adding a type each time, and then checking for duplicates.
50
+ *
51
+ * @template A The array to check for duplicates.
52
+ * @template B The union of all checked existing types.
53
+ */
54
+ // CLAUSE A: This extension unwraps the type as a fuse tuple.
55
+ type FusesWithoutDuplicates<A, B = never> = A extends FuseArrayPossibilities
56
+ ? // CLAUSE A > TRUE: CLAUSE B: Pick out the first item in the current array, separating the current item from the rest.
57
+ A extends [infer Head, ...infer Tail]
58
+ ? // CLAUSE B > TRUE: CLAUSE C: Check if the current item is a duplicate based on the input union.
59
+ Head extends B
60
+ ? // CLAUSE C > TRUE: Duplicate found, return an empty array to throw a type error.
61
+ []
62
+ : // CLAUSE C > FALSE: Return a new array to continue the recursion, adds the current item type to the union.
63
+ [Head, ...FusesWithoutDuplicates<Tail, Head | B>]
64
+ : // CLAUSE B > FALSE: Return the input array as there is no more array elements to check.
65
+ A
66
+ : // CLAUSE A > FALSE: Return an empty array as it isn't a fuse tuple.
67
+ []
68
+
69
+ export type NamedFusesToBurn = FusesWithoutDuplicates<FuseArrayPossibilities>
70
+
71
+ export default fullFuseEnum
@@ -1,6 +1,8 @@
1
1
  import { solidityKeccak256 } from 'ethers/lib/utils'
2
2
  import { truncateFormat } from './format'
3
3
 
4
+ const hasLocalStorage = typeof localStorage !== 'undefined'
5
+
4
6
  export const labelhash = (input: string) =>
5
7
  solidityKeccak256(['string'], [input])
6
8
 
@@ -17,7 +19,7 @@ export function decodeLabelhash(hash: string) {
17
19
  throw Error('Expected encoded labelhash to have a length of 66')
18
20
  }
19
21
 
20
- return `${hash.slice(1, -1)}`
22
+ return `0x${hash.slice(1, -1)}`
21
23
  }
22
24
 
23
25
  export function encodeLabelhash(hash: string) {
@@ -37,13 +39,13 @@ export function isEncodedLabelhash(hash: string) {
37
39
  }
38
40
 
39
41
  function getLabels() {
40
- return localStorage
42
+ return hasLocalStorage
41
43
  ? JSON.parse(localStorage.getItem('ensjs:labels') as string) || {}
42
44
  : {}
43
45
  }
44
46
 
45
47
  function _saveLabel(hash: string, label: any) {
46
- if (!localStorage) return hash
48
+ if (!hasLocalStorage) return hash
47
49
  const labels = getLabels()
48
50
  localStorage.setItem(
49
51
  'ensjs:labels',
@@ -106,7 +108,7 @@ export function decryptName(name: string) {
106
108
  export const truncateUndecryptedName = (name: string) => truncateFormat(name)
107
109
 
108
110
  export function checkLocalStorageSize() {
109
- if (!localStorage) return 'Empty (0 KB)'
111
+ if (!hasLocalStorage) return 'Empty (0 KB)'
110
112
  let allStrings = ''
111
113
  for (const key in window.localStorage) {
112
114
  if (Object.prototype.hasOwnProperty.call(window.localStorage, key)) {
@@ -1,5 +1,6 @@
1
1
  import { concat, hexlify, keccak256, toUtf8Bytes } from 'ethers/lib/utils'
2
2
  import uts46 from 'idna-uts46-hx/uts46bundle.js'
3
+ import { decodeLabelhash, isEncodedLabelhash } from './labels'
3
4
 
4
5
  const zeros = new Uint8Array(32)
5
6
  zeros.fill(0)
@@ -7,16 +8,21 @@ zeros.fill(0)
7
8
  export const normalise = (name: string) =>
8
9
  name ? uts46.toUnicode(name, { useStd3ASCII: true }) : name
9
10
 
10
- export const namehash = (inputName: string): string => {
11
+ export const namehash = (name: string): string => {
11
12
  let result: string | Uint8Array = zeros
12
13
 
13
- const name = normalise(inputName)
14
-
15
14
  if (name) {
16
15
  const labels = name.split('.')
17
16
 
18
- for (var i = labels.length - 1; i >= 0; i--) {
19
- const labelSha = keccak256(toUtf8Bytes(labels[i]))
17
+ for (let i = labels.length - 1; i >= 0; i -= 1) {
18
+ let labelSha: string
19
+ if (isEncodedLabelhash(labels[i])) {
20
+ labelSha = decodeLabelhash(labels[i])
21
+ } else {
22
+ const normalised = normalise(labels[i])
23
+ labelSha = keccak256(toUtf8Bytes(normalised))
24
+ }
25
+
20
26
  result = keccak256(concat([result, labelSha]))
21
27
  }
22
28
  } else {