@ensdomains/ensjs 3.0.0-alpha.1 → 3.0.0-alpha.12

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 (333) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/GqlManager.d.ts +3 -0
  3. package/dist/cjs/GqlManager.js +62 -2
  4. package/dist/cjs/contracts/baseRegistrar.d.ts +1 -1
  5. package/dist/cjs/contracts/index.d.ts +3 -3
  6. package/dist/cjs/contracts/multicall.d.ts +1 -1
  7. package/dist/cjs/contracts/registry.d.ts +1 -1
  8. package/dist/cjs/functions/burnFuses.d.ts +3 -2
  9. package/dist/cjs/functions/burnFuses.js +4 -8
  10. package/dist/cjs/functions/createSubname.d.ts +3 -5
  11. package/dist/cjs/functions/createSubname.js +7 -8
  12. package/dist/cjs/functions/deleteSubname.d.ts +3 -3
  13. package/dist/cjs/functions/deleteSubname.js +6 -2
  14. package/dist/cjs/functions/getDNSOwner.d.ts +7 -0
  15. package/dist/cjs/functions/getDNSOwner.js +81 -0
  16. package/dist/cjs/functions/getExpiry.d.ts +9 -2
  17. package/dist/cjs/functions/getExpiry.js +52 -7
  18. package/dist/cjs/functions/getFuses.d.ts +2 -3
  19. package/dist/cjs/functions/getFuses.js +6 -14
  20. package/dist/cjs/functions/getHistory.d.ts +0 -30
  21. package/dist/cjs/functions/getHistory.js +3 -99
  22. package/dist/cjs/functions/getName.d.ts +2 -2
  23. package/dist/cjs/functions/getName.js +1 -1
  24. package/dist/cjs/functions/getOwner.js +7 -6
  25. package/dist/cjs/functions/getProfile.d.ts +4 -1
  26. package/dist/cjs/functions/getProfile.js +102 -24
  27. package/dist/cjs/functions/getRecords.d.ts +1 -0
  28. package/dist/cjs/functions/getSpecificRecord.js +30 -6
  29. package/dist/cjs/functions/getSubnames.d.ts +1 -1
  30. package/dist/cjs/functions/getSubnames.js +7 -7
  31. package/dist/cjs/functions/setName.d.ts +4 -3
  32. package/dist/cjs/functions/setName.js +5 -10
  33. package/dist/cjs/functions/setRecord.d.ts +18 -0
  34. package/dist/cjs/functions/setRecord.js +27 -0
  35. package/dist/cjs/functions/setRecords.d.ts +4 -2
  36. package/dist/cjs/functions/setRecords.js +14 -12
  37. package/dist/cjs/functions/setResolver.d.ts +4 -4
  38. package/dist/cjs/functions/setResolver.js +6 -12
  39. package/dist/cjs/functions/transferName.d.ts +4 -3
  40. package/dist/cjs/functions/transferName.js +9 -13
  41. package/dist/cjs/functions/transferSubname.d.ts +13 -3
  42. package/dist/cjs/functions/transferSubname.js +7 -8
  43. package/dist/cjs/functions/unwrapName.d.ts +4 -3
  44. package/dist/cjs/functions/unwrapName.js +5 -9
  45. package/dist/cjs/functions/wrapName.d.ts +7 -3
  46. package/dist/cjs/functions/wrapName.js +38 -36
  47. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +222 -201
  48. package/dist/cjs/generated/DNSRegistrar.d.ts +68 -64
  49. package/dist/cjs/generated/DNSSECImpl.d.ts +111 -111
  50. package/dist/cjs/generated/DefaultReverseResolver.d.ts +17 -17
  51. package/dist/cjs/generated/ENSRegistry.d.ts +126 -111
  52. package/dist/cjs/generated/ETHRegistrarController.d.ts +111 -109
  53. package/dist/cjs/generated/Multicall.d.ts +60 -60
  54. package/dist/cjs/generated/NameWrapper.d.ts +493 -354
  55. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +11 -7
  56. package/dist/cjs/generated/PublicResolver.d.ts +259 -235
  57. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +11 -7
  58. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +11 -7
  59. package/dist/cjs/generated/ReverseRegistrar.d.ts +112 -103
  60. package/dist/cjs/generated/Root.d.ts +77 -77
  61. package/dist/cjs/generated/SHA1Digest.d.ts +7 -7
  62. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +11 -7
  63. package/dist/cjs/generated/SHA256Digest.d.ts +7 -7
  64. package/dist/cjs/generated/StaticMetadataService.d.ts +7 -7
  65. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +7 -7
  66. package/dist/cjs/generated/UniversalResolver.d.ts +31 -31
  67. package/dist/cjs/generated/common.d.ts +1 -0
  68. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  69. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +3 -26
  70. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  71. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +3 -26
  72. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +14 -4
  73. package/dist/cjs/generated/factories/NameWrapper__factory.js +210 -79
  74. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  75. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +3 -26
  76. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  77. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +3 -26
  78. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  79. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +3 -26
  80. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +3 -15
  81. package/dist/cjs/generated/factories/SHA1Digest__factory.js +3 -26
  82. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  83. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +3 -26
  84. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +3 -15
  85. package/dist/cjs/generated/factories/SHA256Digest__factory.js +3 -26
  86. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  87. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +3 -26
  88. package/dist/cjs/generated/factories/index.d.ts +14 -0
  89. package/dist/cjs/generated/factories/index.js +29 -1
  90. package/dist/cjs/generated/index.d.ts +29 -1
  91. package/dist/cjs/generated/index.js +31 -3
  92. package/dist/cjs/index.d.ts +62 -84
  93. package/dist/cjs/index.js +44 -21
  94. package/dist/cjs/utils/labels.js +5 -4
  95. package/dist/cjs/utils/makeHashIndexes.js +2 -2
  96. package/dist/cjs/utils/normalise.d.ts +1 -0
  97. package/dist/cjs/utils/normalise.js +27 -1
  98. package/dist/cjs/utils/recordHelpers.d.ts +3 -0
  99. package/dist/cjs/utils/recordHelpers.js +42 -15
  100. package/dist/cjs/utils/registerHelpers.js +3 -4
  101. package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
  102. package/dist/cjs/utils/wrapperExpiry.js +30 -0
  103. package/dist/cjs/utils/writeTx.d.ts +4 -0
  104. package/dist/cjs/utils/writeTx.js +3 -0
  105. package/dist/esm/GqlManager.d.ts +3 -0
  106. package/dist/esm/GqlManager.js +58 -2
  107. package/dist/esm/contracts/baseRegistrar.d.ts +1 -1
  108. package/dist/esm/contracts/index.d.ts +3 -3
  109. package/dist/esm/contracts/multicall.d.ts +1 -1
  110. package/dist/esm/contracts/registry.d.ts +1 -1
  111. package/dist/esm/functions/burnFuses.d.ts +3 -2
  112. package/dist/esm/functions/burnFuses.js +4 -8
  113. package/dist/esm/functions/createSubname.d.ts +3 -5
  114. package/dist/esm/functions/createSubname.js +7 -8
  115. package/dist/esm/functions/deleteSubname.d.ts +3 -3
  116. package/dist/esm/functions/deleteSubname.js +6 -2
  117. package/dist/esm/functions/getDNSOwner.d.ts +7 -0
  118. package/dist/esm/functions/getDNSOwner.js +51 -0
  119. package/dist/esm/functions/getExpiry.d.ts +9 -2
  120. package/dist/esm/functions/getExpiry.js +52 -7
  121. package/dist/esm/functions/getFuses.d.ts +2 -3
  122. package/dist/esm/functions/getFuses.js +7 -15
  123. package/dist/esm/functions/getHistory.d.ts +0 -30
  124. package/dist/esm/functions/getHistory.js +2 -96
  125. package/dist/esm/functions/getName.d.ts +2 -2
  126. package/dist/esm/functions/getName.js +1 -1
  127. package/dist/esm/functions/getOwner.js +7 -6
  128. package/dist/esm/functions/getProfile.d.ts +4 -1
  129. package/dist/esm/functions/getProfile.js +102 -24
  130. package/dist/esm/functions/getRecords.d.ts +1 -0
  131. package/dist/esm/functions/getSpecificRecord.js +30 -6
  132. package/dist/esm/functions/getSubnames.d.ts +1 -1
  133. package/dist/esm/functions/getSubnames.js +4 -4
  134. package/dist/esm/functions/setName.d.ts +4 -3
  135. package/dist/esm/functions/setName.js +5 -10
  136. package/dist/esm/functions/setRecord.d.ts +18 -0
  137. package/dist/esm/functions/setRecord.js +24 -0
  138. package/dist/esm/functions/setRecords.d.ts +4 -2
  139. package/dist/esm/functions/setRecords.js +14 -12
  140. package/dist/esm/functions/setResolver.d.ts +4 -4
  141. package/dist/esm/functions/setResolver.js +6 -12
  142. package/dist/esm/functions/transferName.d.ts +4 -3
  143. package/dist/esm/functions/transferName.js +9 -13
  144. package/dist/esm/functions/transferSubname.d.ts +13 -3
  145. package/dist/esm/functions/transferSubname.js +7 -8
  146. package/dist/esm/functions/unwrapName.d.ts +4 -3
  147. package/dist/esm/functions/unwrapName.js +5 -9
  148. package/dist/esm/functions/wrapName.d.ts +7 -3
  149. package/dist/esm/functions/wrapName.js +38 -36
  150. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +222 -201
  151. package/dist/esm/generated/DNSRegistrar.d.ts +68 -64
  152. package/dist/esm/generated/DNSSECImpl.d.ts +111 -111
  153. package/dist/esm/generated/DefaultReverseResolver.d.ts +17 -17
  154. package/dist/esm/generated/ENSRegistry.d.ts +126 -111
  155. package/dist/esm/generated/ETHRegistrarController.d.ts +111 -109
  156. package/dist/esm/generated/Multicall.d.ts +60 -60
  157. package/dist/esm/generated/NameWrapper.d.ts +493 -354
  158. package/dist/esm/generated/P256SHA256Algorithm.d.ts +11 -7
  159. package/dist/esm/generated/PublicResolver.d.ts +259 -235
  160. package/dist/esm/generated/RSASHA1Algorithm.d.ts +11 -7
  161. package/dist/esm/generated/RSASHA256Algorithm.d.ts +11 -7
  162. package/dist/esm/generated/ReverseRegistrar.d.ts +112 -103
  163. package/dist/esm/generated/Root.d.ts +77 -77
  164. package/dist/esm/generated/SHA1Digest.d.ts +7 -7
  165. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +11 -7
  166. package/dist/esm/generated/SHA256Digest.d.ts +7 -7
  167. package/dist/esm/generated/StaticMetadataService.d.ts +7 -7
  168. package/dist/esm/generated/TLDPublicSuffixList.d.ts +7 -7
  169. package/dist/esm/generated/UniversalResolver.d.ts +31 -31
  170. package/dist/esm/generated/common.d.ts +1 -0
  171. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  172. package/dist/esm/generated/factories/DNSRegistrar__factory.js +2 -25
  173. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  174. package/dist/esm/generated/factories/DNSSECImpl__factory.js +2 -25
  175. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +14 -4
  176. package/dist/esm/generated/factories/NameWrapper__factory.js +210 -79
  177. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  178. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +2 -25
  179. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  180. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +2 -25
  181. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  182. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +2 -25
  183. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +3 -15
  184. package/dist/esm/generated/factories/SHA1Digest__factory.js +2 -25
  185. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  186. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +2 -25
  187. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +3 -15
  188. package/dist/esm/generated/factories/SHA256Digest__factory.js +2 -25
  189. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  190. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +2 -25
  191. package/dist/esm/generated/factories/index.d.ts +14 -0
  192. package/dist/esm/generated/factories/index.js +14 -0
  193. package/dist/esm/generated/index.d.ts +29 -1
  194. package/dist/esm/generated/index.js +15 -1
  195. package/dist/esm/index.d.ts +62 -84
  196. package/dist/esm/index.js +44 -21
  197. package/dist/esm/utils/labels.js +5 -4
  198. package/dist/esm/utils/makeHashIndexes.js +2 -2
  199. package/dist/esm/utils/normalise.d.ts +1 -0
  200. package/dist/esm/utils/normalise.js +25 -0
  201. package/dist/esm/utils/recordHelpers.d.ts +3 -0
  202. package/dist/esm/utils/recordHelpers.js +40 -14
  203. package/dist/esm/utils/registerHelpers.js +3 -4
  204. package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
  205. package/dist/esm/utils/wrapperExpiry.js +26 -0
  206. package/dist/esm/utils/writeTx.d.ts +4 -0
  207. package/dist/esm/utils/writeTx.js +1 -0
  208. package/package.json +24 -14
  209. package/src/@types/dns-packet/index.d.ts +114 -0
  210. package/src/ABIs/Multicall.json +452 -0
  211. package/src/GqlManager.test.ts +170 -0
  212. package/src/GqlManager.ts +67 -2
  213. package/src/contracts/index.ts +1 -1
  214. package/src/{tests → functions}/batch.test.ts +7 -7
  215. package/src/{tests → functions}/batchWrappers.test.ts +6 -6
  216. package/src/{tests → functions}/burnFuses.test.ts +12 -15
  217. package/src/functions/burnFuses.ts +9 -11
  218. package/src/{tests → functions}/createSubname.test.ts +9 -17
  219. package/src/functions/createSubname.ts +20 -14
  220. package/src/{tests → functions}/deleteSubname.test.ts +12 -31
  221. package/src/functions/deleteSubname.ts +10 -12
  222. package/src/functions/getDNSOwner.test.ts +118 -0
  223. package/src/functions/getDNSOwner.ts +61 -0
  224. package/src/functions/getExpiry.test.ts +59 -0
  225. package/src/functions/getExpiry.ts +87 -9
  226. package/src/{tests → functions}/getFuses.test.ts +16 -37
  227. package/src/functions/getFuses.ts +12 -17
  228. package/src/functions/getHistory.test.ts +29 -0
  229. package/src/functions/getHistory.ts +2 -127
  230. package/src/{tests → functions}/getName.test.ts +6 -6
  231. package/src/functions/getName.ts +1 -1
  232. package/src/{tests → functions}/getNames.test.ts +98 -69
  233. package/src/{tests → functions}/getOwner.test.ts +21 -24
  234. package/src/functions/getOwner.ts +7 -7
  235. package/src/functions/getProfile.test.ts +143 -0
  236. package/src/functions/getProfile.ts +151 -24
  237. package/src/functions/getRecords.ts +1 -0
  238. package/src/functions/getResolver.test.ts +15 -0
  239. package/src/{tests → functions}/getSpecificRecord.test.ts +17 -14
  240. package/src/functions/getSpecificRecord.ts +38 -12
  241. package/src/functions/getSubnames.test.ts +35 -0
  242. package/src/functions/getSubnames.ts +76 -67
  243. package/src/{tests → functions}/makeCommitment.test.ts +2 -2
  244. package/src/functions/normalise.test.ts +22 -0
  245. package/src/{tests → functions}/setName.test.ts +11 -11
  246. package/src/functions/setName.ts +15 -17
  247. package/src/functions/setRecord.test.ts +103 -0
  248. package/src/functions/setRecord.ts +63 -0
  249. package/src/{tests → functions}/setRecords.test.ts +16 -13
  250. package/src/functions/setRecords.ts +22 -16
  251. package/src/{tests → functions}/setResolver.test.ts +13 -19
  252. package/src/functions/setResolver.ts +15 -20
  253. package/src/{tests → functions}/transferName.test.ts +20 -35
  254. package/src/functions/transferName.ts +19 -22
  255. package/src/{tests → functions}/transferSubname.test.ts +14 -33
  256. package/src/functions/transferSubname.ts +39 -13
  257. package/src/{tests → functions}/unwrapName.test.ts +16 -30
  258. package/src/functions/unwrapName.ts +20 -15
  259. package/src/functions/wrapName.test.ts +142 -0
  260. package/src/functions/wrapName.ts +63 -49
  261. package/src/generated/BaseRegistrarImplementation.ts +382 -296
  262. package/src/generated/DNSRegistrar.ts +103 -89
  263. package/src/generated/DNSSECImpl.ts +180 -149
  264. package/src/generated/DefaultReverseResolver.ts +37 -21
  265. package/src/generated/ENSRegistry.ts +257 -184
  266. package/src/generated/ETHRegistrarController.ts +252 -191
  267. package/src/generated/Multicall.ts +73 -57
  268. package/src/generated/NameWrapper.ts +979 -649
  269. package/src/generated/P256SHA256Algorithm.ts +21 -16
  270. package/src/generated/PublicResolver.ts +452 -362
  271. package/src/generated/RSASHA1Algorithm.ts +21 -16
  272. package/src/generated/RSASHA256Algorithm.ts +21 -16
  273. package/src/generated/ReverseRegistrar.ts +193 -141
  274. package/src/generated/Root.ts +146 -86
  275. package/src/generated/SHA1Digest.ts +12 -11
  276. package/src/generated/SHA1NSEC3Digest.ts +21 -16
  277. package/src/generated/SHA256Digest.ts +12 -11
  278. package/src/generated/StaticMetadataService.ts +22 -6
  279. package/src/generated/TLDPublicSuffixList.ts +10 -6
  280. package/src/generated/UniversalResolver.ts +44 -40
  281. package/src/generated/common.ts +2 -0
  282. package/src/generated/factories/DNSRegistrar__factory.ts +4 -56
  283. package/src/generated/factories/DNSSECImpl__factory.ts +4 -49
  284. package/src/generated/factories/ETHRegistrarController__factory.ts +14 -4
  285. package/src/generated/factories/NameWrapper__factory.ts +210 -79
  286. package/src/generated/factories/P256SHA256Algorithm__factory.ts +4 -40
  287. package/src/generated/factories/RSASHA1Algorithm__factory.ts +4 -40
  288. package/src/generated/factories/RSASHA256Algorithm__factory.ts +4 -40
  289. package/src/generated/factories/SHA1Digest__factory.ts +4 -40
  290. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +4 -40
  291. package/src/generated/factories/SHA256Digest__factory.ts +4 -40
  292. package/src/generated/factories/TLDPublicSuffixList__factory.ts +4 -40
  293. package/src/generated/factories/index.ts +14 -0
  294. package/src/generated/index.ts +29 -1
  295. package/src/index.ts +117 -47
  296. package/src/tests/populateTransaction.test.ts +40 -0
  297. package/src/tests/setup.ts +17 -13
  298. package/src/tests/signerInjection.test.ts +46 -0
  299. package/src/tests/withProvider.test.ts +3 -3
  300. package/src/utils/labels.ts +6 -4
  301. package/src/utils/makeHashIndexes.ts +4 -4
  302. package/src/utils/normalise.ts +29 -0
  303. package/src/utils/recordHelpers.ts +52 -18
  304. package/src/utils/registerHelpers.ts +3 -4
  305. package/src/utils/wrapperExpiry.ts +31 -0
  306. package/src/utils/writeTx.ts +6 -0
  307. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  308. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
  309. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  310. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
  311. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  312. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
  313. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  314. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
  315. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  316. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
  317. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  318. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
  319. package/src/ABIs/ETHRegistrarController.json +0 -494
  320. package/src/ABIs/NameWrapper.json +0 -1183
  321. package/src/ABIs/PublicResolver.json +0 -875
  322. package/src/ABIs/ReverseRegistrar.json +0 -323
  323. package/src/ABIs/StaticMetadataService.json +0 -32
  324. package/src/ABIs/UniversalResolver.json +0 -187
  325. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
  326. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
  327. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
  328. package/src/tests/getExpiry.test.ts +0 -37
  329. package/src/tests/getHistory.test.ts +0 -101
  330. package/src/tests/getProfile.test.ts +0 -102
  331. package/src/tests/getResolver.test.ts +0 -19
  332. package/src/tests/getSubnames.test.ts +0 -31
  333. package/src/tests/wrapName.test.ts +0 -67
@@ -1,7 +1,7 @@
1
- import { namehash } from 'ethers/lib/utils';
2
1
  import { ENSArgs } from '..'
3
- import { truncateFormat } from '../utils/format';
4
- import { decryptName } from '../utils/labels';
2
+ import { truncateFormat } from '../utils/format'
3
+ import { decryptName } from '../utils/labels'
4
+ import { namehash } from '../utils/normalise'
5
5
 
6
6
  type Subname = {
7
7
  id: string
@@ -21,17 +21,24 @@ type Params = {
21
21
  pageSize?: number
22
22
  orderDirection?: 'asc' | 'desc'
23
23
  orderBy?: 'createdAt' | 'labelName'
24
- lastSubnames: Array<any>
24
+ lastSubnames?: Array<any>
25
25
  isLargeQuery?: boolean
26
26
  }
27
27
 
28
28
  const largeQuery = async (
29
- { gqlInstance } : ENSArgs<'gqlInstance'>,
30
- { name, page, pageSize = 10, orderDirection, orderBy, lastSubnames }: Params
31
- ) => {
32
- const client = gqlInstance.client;
29
+ { gqlInstance }: ENSArgs<'gqlInstance'>,
30
+ {
31
+ name,
32
+ page,
33
+ pageSize = 10,
34
+ orderDirection,
35
+ orderBy,
36
+ lastSubnames = [],
37
+ }: Params,
38
+ ) => {
39
+ const client = gqlInstance.client
33
40
 
34
- let finalQuery = gqlInstance.gql `
41
+ let finalQuery = gqlInstance.gql`
35
42
  query getSubnames(
36
43
  $id: ID!
37
44
  $first: Int
@@ -62,35 +69,35 @@ const largeQuery = async (
62
69
  }
63
70
  }
64
71
  }
65
- `;
66
- let queryVars = {
67
- id: namehash(name),
68
- first: pageSize,
69
- lastCreatedAt: lastSubnames[lastSubnames.length - 1]?.createdAt,
70
- orderBy,
71
- orderDirection,
72
- };
73
- const { domain } = await client.request(finalQuery, queryVars);
72
+ `
73
+ let queryVars = {
74
+ id: namehash(name),
75
+ first: pageSize,
76
+ lastCreatedAt: lastSubnames[lastSubnames.length - 1]?.createdAt,
77
+ orderBy,
78
+ orderDirection,
79
+ }
80
+ const { domain } = await client.request(finalQuery, queryVars)
74
81
  const subdomains = domain.subdomains.map((subname: any) => {
75
- const decrypted = decryptName(subname.name);
76
- return {
77
- ...subname,
78
- name: decrypted,
79
- truncatedName: truncateFormat(decrypted),
80
- };
81
- });
82
+ const decrypted = decryptName(subname.name)
83
+ return {
84
+ ...subname,
85
+ name: decrypted,
86
+ truncatedName: truncateFormat(decrypted),
87
+ }
88
+ })
82
89
 
83
90
  return {
84
91
  subnames: subdomains,
85
- subnameCount: domain.subdomainCount
92
+ subnameCount: domain.subdomainCount,
86
93
  }
87
- };
94
+ }
88
95
 
89
- const smallQuery = async (
90
- { gqlInstance } : ENSArgs<'gqlInstance'>,
91
- { name, page, pageSize = 10, orderDirection, orderBy } : Params
92
- ) => {
93
- const client = gqlInstance.client;
96
+ const smallQuery = async (
97
+ { gqlInstance }: ENSArgs<'gqlInstance'>,
98
+ { name, page, pageSize = 10, orderDirection, orderBy }: Params,
99
+ ) => {
100
+ const client = gqlInstance.client
94
101
  const subdomainsGql = `
95
102
  id
96
103
  labelName
@@ -102,11 +109,11 @@ const smallQuery = async (
102
109
  owner {
103
110
  id
104
111
  }
105
- `;
106
- let queryVars = {};
107
- let finalQuery = '';
112
+ `
113
+ let queryVars = {}
114
+ let finalQuery = ''
108
115
  if (typeof page !== 'number') {
109
- finalQuery = gqlInstance.gql `
116
+ finalQuery = gqlInstance.gql`
110
117
  query getSubnames(
111
118
  $id: ID!
112
119
  $orderBy: Domain_orderBy
@@ -123,15 +130,14 @@ const smallQuery = async (
123
130
  }
124
131
  }
125
132
  }
126
- `;
127
- queryVars = {
128
- id: namehash(name),
129
- orderBy,
130
- orderDirection,
131
- };
132
- }
133
- else {
134
- finalQuery = gqlInstance.gql `
133
+ `
134
+ queryVars = {
135
+ id: namehash(name),
136
+ orderBy,
137
+ orderDirection,
138
+ }
139
+ } else {
140
+ finalQuery = gqlInstance.gql`
135
141
  query getSubnames(
136
142
  $id: ID!
137
143
  $first: Int
@@ -153,36 +159,39 @@ const smallQuery = async (
153
159
  }
154
160
  }
155
161
  }
156
- `;
157
- queryVars = {
158
- id: namehash(name),
159
- first: pageSize,
160
- skip: (page || 0) * pageSize,
161
- orderBy,
162
- orderDirection,
163
- };
162
+ `
163
+ queryVars = {
164
+ id: namehash(name),
165
+ first: pageSize,
166
+ skip: (page || 0) * pageSize,
167
+ orderBy,
168
+ orderDirection,
169
+ }
164
170
  }
165
- const { domain } = await client.request(finalQuery, queryVars);
171
+ const { domain } = await client.request(finalQuery, queryVars)
166
172
  const subdomains = domain.subdomains.map((subname: any) => {
167
- const decrypted = decryptName(subname.name);
168
- return {
169
- ...subname,
170
- name: decrypted,
171
- truncatedName: truncateFormat(decrypted),
172
- };
173
- });
173
+ const decrypted = decryptName(subname.name)
174
+ return {
175
+ ...subname,
176
+ name: decrypted,
177
+ truncatedName: truncateFormat(decrypted),
178
+ }
179
+ })
174
180
 
175
181
  return {
176
182
  subnames: subdomains,
177
- subnameCount: domain.subdomainCount
183
+ subnameCount: domain.subdomainCount,
178
184
  }
179
- };
185
+ }
180
186
 
181
- const getSubnames = (injected : ENSArgs<'gqlInstance'>, functionArgs: Params): Promise<{ subnames: Subname[], subnameCount: number}> => {
182
- if(functionArgs.isLargeQuery) {
187
+ const getSubnames = (
188
+ injected: ENSArgs<'gqlInstance'>,
189
+ functionArgs: Params,
190
+ ): Promise<{ subnames: Subname[]; subnameCount: number }> => {
191
+ if (functionArgs.isLargeQuery) {
183
192
  return largeQuery(injected, functionArgs)
184
- }
193
+ }
185
194
  return smallQuery(injected, functionArgs)
186
195
  }
187
196
 
188
- export default getSubnames;
197
+ export default getSubnames
@@ -1,6 +1,6 @@
1
1
  import { ENS } from '..'
2
+ import setup from '../tests/setup'
2
3
  import { makeCommitment } from '../utils/registerHelpers'
3
- import setup from './setup'
4
4
 
5
5
  let ENSInstance: ENS
6
6
 
@@ -13,7 +13,7 @@ describe('makeCommitment', () => {
13
13
  const resolver = await ENSInstance.contracts!.getPublicResolver()!
14
14
  const commitment = makeCommitment({
15
15
  name: 'test.eth',
16
- owner: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
16
+ owner: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
17
17
  duration: 1 * 365 * 24 * 60 * 60,
18
18
  resolver: resolver,
19
19
  })
@@ -0,0 +1,22 @@
1
+ import { namehash } from '../utils/normalise'
2
+
3
+ describe('normalise', () => {
4
+ it('should namehash an empty string', () => {
5
+ const hash = namehash('')
6
+ expect(hash).toEqual(
7
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
8
+ )
9
+ })
10
+ it('should namehash a TLD', () => {
11
+ const hash = namehash('eth')
12
+ expect(hash).toEqual(
13
+ '0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae',
14
+ )
15
+ })
16
+ it('should namehash a 2LD', () => {
17
+ const hash = namehash('foo.eth')
18
+ expect(hash).toEqual(
19
+ '0xde9b09fd7c5f901e23a3f19fecc54828e9c848539801e86591bd9801b019f84f',
20
+ )
21
+ })
22
+ })
@@ -1,7 +1,7 @@
1
1
  import { ethers } from 'ethers'
2
2
  import { ENS } from '..'
3
+ import setup from '../tests/setup'
3
4
  import { hexEncodeName } from '../utils/hexEncodedName'
4
- import setup from './setup'
5
5
 
6
6
  let ENSInstance: ENS
7
7
  let revert: Awaited<ReturnType<typeof setup>>['revert']
@@ -22,37 +22,37 @@ describe('setName', () => {
22
22
  await revert()
23
23
  })
24
24
  it('should return a transaction for a name and set successfully', async () => {
25
- const tx = await ENSInstance.setName('fleek.eth')
25
+ const tx = await ENSInstance.setName('test123.eth', { addressOrIndex: 1 })
26
26
  expect(tx).toBeTruthy()
27
27
  await tx?.wait()
28
28
 
29
29
  const universalResolver =
30
30
  await ENSInstance.contracts!.getUniversalResolver()!
31
- const reverseNode = accounts[0].toLowerCase().substring(2) + '.addr.reverse'
31
+ const reverseNode = accounts[1].toLowerCase().substring(2) + '.addr.reverse'
32
32
  const result = await universalResolver.reverse(hexEncodeName(reverseNode))
33
- expect(result[0]).toBe('fleek.eth')
33
+ expect(result[0]).toBe('test123.eth')
34
34
  })
35
35
  it("should return a transaction for setting another address' name", async () => {
36
- jest.setTimeout(20000)
37
36
  const registry = (await ENSInstance.contracts!.getRegistry()!).connect(
38
- provider.getSigner(),
37
+ provider.getSigner(1),
39
38
  )
40
39
  const setApprovedForAllTx = await registry.setApprovalForAll(
41
- accounts[1],
40
+ accounts[2],
42
41
  true,
43
42
  )
44
43
  await setApprovedForAllTx?.wait()
45
44
 
46
- const tx = await ENSInstance.setName('fleek.eth', accounts[0], undefined, {
47
- addressOrIndex: 1,
45
+ const tx = await ENSInstance.setName('test123.eth', {
46
+ address: accounts[1],
47
+ addressOrIndex: 2,
48
48
  })
49
49
  expect(tx).toBeTruthy()
50
50
  await tx?.wait()
51
51
 
52
52
  const universalResolver =
53
53
  await ENSInstance.contracts!.getUniversalResolver()!
54
- const reverseNode = accounts[0].toLowerCase().substring(2) + '.addr.reverse'
54
+ const reverseNode = accounts[1].toLowerCase().substring(2) + '.addr.reverse'
55
55
  const result = await universalResolver.reverse(hexEncodeName(reverseNode))
56
- expect(result[0]).toBe('fleek.eth')
56
+ expect(result[0]).toBe('test123.eth')
57
57
  })
58
58
  })
@@ -1,34 +1,32 @@
1
1
  import { ENSArgs } from '..'
2
2
 
3
3
  export default async function (
4
- { contracts, provider }: ENSArgs<'contracts' | 'provider'>,
4
+ { contracts, signer }: ENSArgs<'contracts' | 'signer'>,
5
5
  name: string,
6
- address?: string,
7
- resolver?: string,
8
- options?: { addressOrIndex?: string | number },
6
+ {
7
+ address,
8
+ resolver,
9
+ }: {
10
+ address?: string
11
+ resolver?: string
12
+ } = {},
9
13
  ) {
10
- const signerAddress = await provider
11
- ?.getSigner(options?.addressOrIndex)
12
- .getAddress()
13
-
14
- if (!signerAddress) {
15
- throw new Error('No signer found')
16
- }
14
+ const signerAddress = await signer.getAddress()
17
15
 
18
16
  const reverseRegistrar = (await contracts?.getReverseRegistrar())?.connect(
19
- provider?.getSigner()!,
20
- )
17
+ signer,
18
+ )!
21
19
 
22
20
  if (address) {
23
- const publicResolver = await contracts?.getPublicResolver()
21
+ const publicResolver = await contracts?.getPublicResolver()!
24
22
 
25
- return reverseRegistrar?.setNameForAddr(
23
+ return reverseRegistrar.populateTransaction.setNameForAddr(
26
24
  address,
27
25
  signerAddress,
28
- resolver || publicResolver!.address,
26
+ resolver || publicResolver.address,
29
27
  name,
30
28
  )
31
29
  }
32
30
 
33
- return reverseRegistrar?.setName(name)
31
+ return reverseRegistrar.populateTransaction.setName(name)
34
32
  }
@@ -0,0 +1,103 @@
1
+ import { ENS } from '..'
2
+ import setup from '../tests/setup'
3
+ import { decodeContenthash } from '../utils/contentHash'
4
+ import { hexEncodeName } from '../utils/hexEncodedName'
5
+ import { namehash } from '../utils/normalise'
6
+
7
+ let ENSInstance: ENS
8
+ let revert: Awaited<ReturnType<typeof setup>>['revert']
9
+
10
+ beforeAll(async () => {
11
+ ;({ ENSInstance, revert } = await setup())
12
+ })
13
+
14
+ afterAll(async () => {
15
+ await revert()
16
+ })
17
+
18
+ describe('setRecord', () => {
19
+ it('should allow a text record set', async () => {
20
+ const tx = await ENSInstance.setRecord('test123.eth', {
21
+ type: 'text',
22
+ record: { key: 'foo', value: 'bar' },
23
+ addressOrIndex: 1,
24
+ })
25
+ expect(tx).toBeTruthy()
26
+ await tx.wait()
27
+
28
+ const universalResolver =
29
+ await ENSInstance.contracts!.getUniversalResolver()!
30
+ const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
31
+ const encodedText = await universalResolver.resolve(
32
+ hexEncodeName('test123.eth'),
33
+ publicResolver.interface.encodeFunctionData('text', [
34
+ namehash('test123.eth'),
35
+ 'foo',
36
+ ]),
37
+ )
38
+ const [resultText] = publicResolver.interface.decodeFunctionResult(
39
+ 'text',
40
+ encodedText[0],
41
+ )
42
+ expect(resultText).toBe('bar')
43
+ })
44
+ it('should allow an address record set', async () => {
45
+ const tx = await ENSInstance.setRecord('test123.eth', {
46
+ type: 'addr',
47
+ record: {
48
+ key: 'ETC',
49
+ value: '0x42D63ae25990889E35F215bC95884039Ba354115',
50
+ },
51
+ addressOrIndex: 1,
52
+ })
53
+ expect(tx).toBeTruthy()
54
+ await tx.wait()
55
+
56
+ const universalResolver =
57
+ await ENSInstance.contracts!.getUniversalResolver()!
58
+ const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
59
+ const encodedAddr = await universalResolver.resolve(
60
+ hexEncodeName('test123.eth'),
61
+ publicResolver.interface.encodeFunctionData('addr(bytes32,uint256)', [
62
+ namehash('test123.eth'),
63
+ '61',
64
+ ]),
65
+ )
66
+ const [resultAddr] = publicResolver.interface.decodeFunctionResult(
67
+ 'addr(bytes32,uint256)',
68
+ encodedAddr[0],
69
+ )
70
+ expect(resultAddr).toBe(
71
+ '0x42D63ae25990889E35F215bC95884039Ba354115'.toLowerCase(),
72
+ )
73
+ })
74
+ it('should allow a contenthash record set', async () => {
75
+ const tx = await ENSInstance.setRecord('test123.eth', {
76
+ type: 'contentHash',
77
+ record:
78
+ 'ipns://k51qzi5uqu5dgox2z23r6e99oqency055a6xt92xzmyvpz8mwz5ycjavm0u150',
79
+ addressOrIndex: 1,
80
+ })
81
+ expect(tx).toBeTruthy()
82
+ await tx.wait()
83
+
84
+ const universalResolver =
85
+ await ENSInstance.contracts!.getUniversalResolver()!
86
+ const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
87
+ const encodedContent = await universalResolver.resolve(
88
+ hexEncodeName('test123.eth'),
89
+ publicResolver.interface.encodeFunctionData('contenthash', [
90
+ namehash('test123.eth'),
91
+ ]),
92
+ )
93
+ const [resultContent] = publicResolver.interface.decodeFunctionResult(
94
+ 'contenthash',
95
+ encodedContent[0],
96
+ )
97
+ const content = decodeContenthash(resultContent)
98
+ expect(content.decoded).toBe(
99
+ 'k51qzi5uqu5dgox2z23r6e99oqency055a6xt92xzmyvpz8mwz5ycjavm0u150',
100
+ )
101
+ expect(content.protocolType).toBe('ipns')
102
+ })
103
+ })
@@ -0,0 +1,63 @@
1
+ import { ENSArgs } from '..'
2
+ import { namehash } from '../utils/normalise'
3
+ import {
4
+ generateSingleRecordCall,
5
+ RecordInput,
6
+ RecordTypes,
7
+ } from '../utils/recordHelpers'
8
+
9
+ type BaseInput = {
10
+ resolverAddress?: string
11
+ }
12
+
13
+ type ContentHashInput = {
14
+ record: RecordInput<'contentHash'>
15
+ type: 'contentHash'
16
+ }
17
+
18
+ type AddrOrTextInput = {
19
+ record: RecordInput<'addr' | 'text'>
20
+ type: 'addr' | 'text'
21
+ }
22
+
23
+ export default async function <T extends RecordTypes>(
24
+ {
25
+ contracts,
26
+ provider,
27
+ getResolver,
28
+ signer,
29
+ }: ENSArgs<'contracts' | 'provider' | 'getResolver' | 'signer'>,
30
+ name: string,
31
+ {
32
+ record,
33
+ type,
34
+ resolverAddress,
35
+ }: BaseInput & (ContentHashInput | AddrOrTextInput),
36
+ ) {
37
+ if (!name.includes('.')) {
38
+ throw new Error('Input is not an ENS name')
39
+ }
40
+
41
+ let resolverToUse: string
42
+ if (resolverAddress) {
43
+ resolverToUse = resolverAddress
44
+ } else {
45
+ resolverToUse = await getResolver(name)
46
+ }
47
+
48
+ if (!resolverToUse) {
49
+ throw new Error('No resolver found for input address')
50
+ }
51
+
52
+ const resolver = (
53
+ await contracts?.getPublicResolver(provider, resolverToUse)
54
+ )?.connect(signer)!
55
+ const hash = namehash(name)
56
+
57
+ const call = generateSingleRecordCall(hash, resolver, type)(record)
58
+
59
+ return {
60
+ to: resolver.address,
61
+ data: call,
62
+ }
63
+ }
@@ -1,7 +1,7 @@
1
- import { utils } from 'ethers'
2
1
  import { ENS } from '..'
2
+ import setup from '../tests/setup'
3
3
  import { hexEncodeName } from '../utils/hexEncodedName'
4
- import setup from './setup'
4
+ import { namehash } from '../utils/normalise'
5
5
 
6
6
  let ENSInstance: ENS
7
7
  let revert: Awaited<ReturnType<typeof setup>>['revert']
@@ -16,11 +16,14 @@ afterAll(async () => {
16
16
 
17
17
  describe('setRecords', () => {
18
18
  it('should return a transaction to the resolver and set successfully', async () => {
19
- const tx = await ENSInstance.setRecords('parthtejpal.eth', {
20
- coinTypes: [
21
- { key: 'ETC', value: '0x42D63ae25990889E35F215bC95884039Ba354115' },
22
- ],
23
- texts: [{ key: 'foo', value: 'bar' }],
19
+ const tx = await ENSInstance.setRecords('test123.eth', {
20
+ records: {
21
+ coinTypes: [
22
+ { key: 'ETC', value: '0x42D63ae25990889E35F215bC95884039Ba354115' },
23
+ ],
24
+ texts: [{ key: 'foo', value: 'bar' }],
25
+ },
26
+ addressOrIndex: 1,
24
27
  })
25
28
  expect(tx).toBeTruthy()
26
29
  await tx.wait()
@@ -29,21 +32,21 @@ describe('setRecords', () => {
29
32
  await ENSInstance.contracts!.getUniversalResolver()!
30
33
  const publicResolver = await ENSInstance.contracts!.getPublicResolver()!
31
34
  const encodedText = await universalResolver.resolve(
32
- hexEncodeName('parthtejpal.eth'),
33
- publicResolver.interface.encodeFunctionData('text(bytes32,string)', [
34
- utils.namehash('parthtejpal.eth'),
35
+ hexEncodeName('test123.eth'),
36
+ publicResolver.interface.encodeFunctionData('text', [
37
+ namehash('test123.eth'),
35
38
  'foo',
36
39
  ]),
37
40
  )
38
41
  const encodedAddr = await universalResolver.resolve(
39
- hexEncodeName('parthtejpal.eth'),
42
+ hexEncodeName('test123.eth'),
40
43
  publicResolver.interface.encodeFunctionData('addr(bytes32,uint256)', [
41
- utils.namehash('parthtejpal.eth'),
44
+ namehash('test123.eth'),
42
45
  '61',
43
46
  ]),
44
47
  )
45
48
  const [resultText] = publicResolver.interface.decodeFunctionResult(
46
- 'text(bytes32,string)',
49
+ 'text',
47
50
  encodedText[0],
48
51
  )
49
52
  const [resultAddr] = publicResolver.interface.decodeFunctionResult(
@@ -1,5 +1,5 @@
1
- import { ethers } from 'ethers'
2
1
  import { ENSArgs } from '..'
2
+ import { namehash } from '../utils/normalise'
3
3
  import { generateRecordCallArray, RecordOptions } from '../utils/recordHelpers'
4
4
 
5
5
  export default async function (
@@ -7,32 +7,38 @@ export default async function (
7
7
  contracts,
8
8
  provider,
9
9
  getResolver,
10
- }: ENSArgs<'contracts' | 'provider' | 'getResolver'>,
10
+ signer,
11
+ }: ENSArgs<'contracts' | 'provider' | 'getResolver' | 'signer'>,
11
12
  name: string,
12
- records: RecordOptions,
13
+ {
14
+ records,
15
+ resolverAddress,
16
+ }: {
17
+ records: RecordOptions
18
+ resolverAddress?: string
19
+ },
13
20
  ) {
14
21
  if (!name.includes('.')) {
15
22
  throw new Error('Input is not an ENS name')
16
23
  }
17
24
 
18
- const resolverAddress = await getResolver(name)
19
-
20
- if (!resolverAddress) {
21
- throw new Error('No resolver found for input address')
25
+ let resolverToUse: string
26
+ if (resolverAddress) {
27
+ resolverToUse = resolverAddress
28
+ } else {
29
+ resolverToUse = await getResolver(name)
22
30
  }
23
31
 
24
- const address = await provider?.getSigner().getAddress()
25
-
26
- if (!address) {
27
- throw new Error('No signer found')
32
+ if (!resolverToUse) {
33
+ throw new Error('No resolver found for input address')
28
34
  }
29
35
 
30
36
  const resolver = (
31
- await contracts?.getPublicResolver(provider, resolverAddress)
32
- )?.connect(provider?.getSigner()!)
33
- const namehash = ethers.utils.namehash(name)
37
+ await contracts?.getPublicResolver(provider, resolverToUse)
38
+ )?.connect(signer)!
39
+ const hash = namehash(name)
34
40
 
35
- const calls: string[] = generateRecordCallArray(namehash, records, resolver!)
41
+ const calls: string[] = generateRecordCallArray(hash, records, resolver!)
36
42
 
37
- return resolver?.multicall(calls)
43
+ return resolver.populateTransaction.multicall(calls)
38
44
  }