@ensdomains/ensjs 3.0.0-alpha.10 → 3.0.0-alpha.13

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 (277) hide show
  1. package/dist/cjs/contracts/baseRegistrar.d.ts +1 -1
  2. package/dist/cjs/contracts/index.d.ts +3 -3
  3. package/dist/cjs/contracts/multicall.d.ts +1 -1
  4. package/dist/cjs/contracts/registry.d.ts +1 -1
  5. package/dist/cjs/functions/burnFuses.js +1 -1
  6. package/dist/cjs/functions/commitName.d.ts +26 -0
  7. package/dist/cjs/functions/commitName.js +24 -0
  8. package/dist/cjs/functions/createSubname.d.ts +3 -1
  9. package/dist/cjs/functions/createSubname.js +4 -2
  10. package/dist/cjs/functions/deleteSubname.d.ts +1 -1
  11. package/dist/cjs/functions/deleteSubname.js +3 -2
  12. package/dist/cjs/functions/getExpiry.d.ts +9 -2
  13. package/dist/cjs/functions/getExpiry.js +52 -7
  14. package/dist/cjs/functions/getFuses.d.ts +2 -3
  15. package/dist/cjs/functions/getFuses.js +4 -13
  16. package/dist/cjs/functions/getHistory.d.ts +0 -30
  17. package/dist/cjs/functions/getHistory.js +3 -99
  18. package/dist/cjs/functions/getName.d.ts +2 -2
  19. package/dist/cjs/functions/getName.js +1 -1
  20. package/dist/cjs/functions/getProfile.js +1 -1
  21. package/dist/cjs/functions/getSpecificRecord.js +8 -1
  22. package/dist/cjs/functions/getSubnames.d.ts +1 -1
  23. package/dist/cjs/functions/getSubnames.js +1 -1
  24. package/dist/cjs/functions/registerName.d.ts +11 -0
  25. package/dist/cjs/functions/registerName.js +19 -0
  26. package/dist/cjs/functions/renewName.d.ts +6 -0
  27. package/dist/cjs/functions/renewName.js +10 -0
  28. package/dist/cjs/functions/transferSubname.d.ts +12 -3
  29. package/dist/cjs/functions/transferSubname.js +5 -3
  30. package/dist/cjs/functions/wrapName.d.ts +3 -1
  31. package/dist/cjs/functions/wrapName.js +35 -29
  32. package/dist/cjs/generated/BaseRegistrarImplementation.d.ts +222 -201
  33. package/dist/cjs/generated/DNSRegistrar.d.ts +68 -64
  34. package/dist/cjs/generated/DNSSECImpl.d.ts +111 -111
  35. package/dist/cjs/generated/DefaultReverseResolver.d.ts +17 -17
  36. package/dist/cjs/generated/ENSRegistry.d.ts +126 -111
  37. package/dist/cjs/generated/ETHRegistrarController.d.ts +111 -109
  38. package/dist/cjs/generated/Multicall.d.ts +60 -60
  39. package/dist/cjs/generated/NameWrapper.d.ts +493 -354
  40. package/dist/cjs/generated/P256SHA256Algorithm.d.ts +11 -7
  41. package/dist/cjs/generated/PublicResolver.d.ts +259 -235
  42. package/dist/cjs/generated/RSASHA1Algorithm.d.ts +11 -7
  43. package/dist/cjs/generated/RSASHA256Algorithm.d.ts +11 -7
  44. package/dist/cjs/generated/ReverseRegistrar.d.ts +112 -103
  45. package/dist/cjs/generated/Root.d.ts +77 -77
  46. package/dist/cjs/generated/SHA1Digest.d.ts +7 -7
  47. package/dist/cjs/generated/SHA1NSEC3Digest.d.ts +11 -7
  48. package/dist/cjs/generated/SHA256Digest.d.ts +7 -7
  49. package/dist/cjs/generated/StaticMetadataService.d.ts +7 -7
  50. package/dist/cjs/generated/TLDPublicSuffixList.d.ts +7 -7
  51. package/dist/cjs/generated/UniversalResolver.d.ts +31 -31
  52. package/dist/cjs/generated/common.d.ts +1 -0
  53. package/dist/cjs/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  54. package/dist/cjs/generated/factories/DNSRegistrar__factory.js +3 -26
  55. package/dist/cjs/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  56. package/dist/cjs/generated/factories/DNSSECImpl__factory.js +3 -26
  57. package/dist/cjs/generated/factories/ETHRegistrarController__factory.js +14 -4
  58. package/dist/cjs/generated/factories/NameWrapper__factory.js +210 -79
  59. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  60. package/dist/cjs/generated/factories/P256SHA256Algorithm__factory.js +3 -26
  61. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  62. package/dist/cjs/generated/factories/RSASHA1Algorithm__factory.js +3 -26
  63. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  64. package/dist/cjs/generated/factories/RSASHA256Algorithm__factory.js +3 -26
  65. package/dist/cjs/generated/factories/SHA1Digest__factory.d.ts +3 -15
  66. package/dist/cjs/generated/factories/SHA1Digest__factory.js +3 -26
  67. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  68. package/dist/cjs/generated/factories/SHA1NSEC3Digest__factory.js +3 -26
  69. package/dist/cjs/generated/factories/SHA256Digest__factory.d.ts +3 -15
  70. package/dist/cjs/generated/factories/SHA256Digest__factory.js +3 -26
  71. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  72. package/dist/cjs/generated/factories/TLDPublicSuffixList__factory.js +3 -26
  73. package/dist/cjs/generated/factories/index.d.ts +14 -0
  74. package/dist/cjs/generated/factories/index.js +29 -1
  75. package/dist/cjs/generated/index.d.ts +29 -1
  76. package/dist/cjs/generated/index.js +31 -3
  77. package/dist/cjs/index.d.ts +24 -40
  78. package/dist/cjs/index.js +9 -5
  79. package/dist/cjs/utils/registerHelpers.d.ts +44 -16
  80. package/dist/cjs/utils/registerHelpers.js +43 -15
  81. package/dist/cjs/utils/wrapperExpiry.d.ts +5 -0
  82. package/dist/cjs/utils/wrapperExpiry.js +30 -0
  83. package/dist/cjs/utils/writeTx.d.ts +18 -1
  84. package/dist/cjs/utils/writeTx.js +4 -1
  85. package/dist/esm/contracts/baseRegistrar.d.ts +1 -1
  86. package/dist/esm/contracts/index.d.ts +3 -3
  87. package/dist/esm/contracts/multicall.d.ts +1 -1
  88. package/dist/esm/contracts/registry.d.ts +1 -1
  89. package/dist/esm/functions/burnFuses.js +1 -1
  90. package/dist/esm/functions/commitName.d.ts +26 -0
  91. package/dist/esm/functions/commitName.js +21 -0
  92. package/dist/esm/functions/createSubname.d.ts +3 -1
  93. package/dist/esm/functions/createSubname.js +4 -2
  94. package/dist/esm/functions/deleteSubname.d.ts +1 -1
  95. package/dist/esm/functions/deleteSubname.js +3 -2
  96. package/dist/esm/functions/getExpiry.d.ts +9 -2
  97. package/dist/esm/functions/getExpiry.js +52 -7
  98. package/dist/esm/functions/getFuses.d.ts +2 -3
  99. package/dist/esm/functions/getFuses.js +5 -14
  100. package/dist/esm/functions/getHistory.d.ts +0 -30
  101. package/dist/esm/functions/getHistory.js +2 -96
  102. package/dist/esm/functions/getName.d.ts +2 -2
  103. package/dist/esm/functions/getName.js +1 -1
  104. package/dist/esm/functions/getProfile.js +1 -1
  105. package/dist/esm/functions/getSpecificRecord.js +8 -1
  106. package/dist/esm/functions/getSubnames.d.ts +1 -1
  107. package/dist/esm/functions/getSubnames.js +1 -1
  108. package/dist/esm/functions/registerName.d.ts +11 -0
  109. package/dist/esm/functions/registerName.js +16 -0
  110. package/dist/esm/functions/renewName.d.ts +6 -0
  111. package/dist/esm/functions/renewName.js +7 -0
  112. package/dist/esm/functions/transferSubname.d.ts +12 -3
  113. package/dist/esm/functions/transferSubname.js +5 -3
  114. package/dist/esm/functions/wrapName.d.ts +3 -1
  115. package/dist/esm/functions/wrapName.js +35 -29
  116. package/dist/esm/generated/BaseRegistrarImplementation.d.ts +222 -201
  117. package/dist/esm/generated/DNSRegistrar.d.ts +68 -64
  118. package/dist/esm/generated/DNSSECImpl.d.ts +111 -111
  119. package/dist/esm/generated/DefaultReverseResolver.d.ts +17 -17
  120. package/dist/esm/generated/ENSRegistry.d.ts +126 -111
  121. package/dist/esm/generated/ETHRegistrarController.d.ts +111 -109
  122. package/dist/esm/generated/Multicall.d.ts +60 -60
  123. package/dist/esm/generated/NameWrapper.d.ts +493 -354
  124. package/dist/esm/generated/P256SHA256Algorithm.d.ts +11 -7
  125. package/dist/esm/generated/PublicResolver.d.ts +259 -235
  126. package/dist/esm/generated/RSASHA1Algorithm.d.ts +11 -7
  127. package/dist/esm/generated/RSASHA256Algorithm.d.ts +11 -7
  128. package/dist/esm/generated/ReverseRegistrar.d.ts +112 -103
  129. package/dist/esm/generated/Root.d.ts +77 -77
  130. package/dist/esm/generated/SHA1Digest.d.ts +7 -7
  131. package/dist/esm/generated/SHA1NSEC3Digest.d.ts +11 -7
  132. package/dist/esm/generated/SHA256Digest.d.ts +7 -7
  133. package/dist/esm/generated/StaticMetadataService.d.ts +7 -7
  134. package/dist/esm/generated/TLDPublicSuffixList.d.ts +7 -7
  135. package/dist/esm/generated/UniversalResolver.d.ts +31 -31
  136. package/dist/esm/generated/common.d.ts +1 -0
  137. package/dist/esm/generated/factories/DNSRegistrar__factory.d.ts +3 -15
  138. package/dist/esm/generated/factories/DNSRegistrar__factory.js +2 -25
  139. package/dist/esm/generated/factories/DNSSECImpl__factory.d.ts +3 -15
  140. package/dist/esm/generated/factories/DNSSECImpl__factory.js +2 -25
  141. package/dist/esm/generated/factories/ETHRegistrarController__factory.js +14 -4
  142. package/dist/esm/generated/factories/NameWrapper__factory.js +210 -79
  143. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.d.ts +3 -15
  144. package/dist/esm/generated/factories/P256SHA256Algorithm__factory.js +2 -25
  145. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.d.ts +3 -15
  146. package/dist/esm/generated/factories/RSASHA1Algorithm__factory.js +2 -25
  147. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.d.ts +3 -15
  148. package/dist/esm/generated/factories/RSASHA256Algorithm__factory.js +2 -25
  149. package/dist/esm/generated/factories/SHA1Digest__factory.d.ts +3 -15
  150. package/dist/esm/generated/factories/SHA1Digest__factory.js +2 -25
  151. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.d.ts +3 -15
  152. package/dist/esm/generated/factories/SHA1NSEC3Digest__factory.js +2 -25
  153. package/dist/esm/generated/factories/SHA256Digest__factory.d.ts +3 -15
  154. package/dist/esm/generated/factories/SHA256Digest__factory.js +2 -25
  155. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.d.ts +3 -15
  156. package/dist/esm/generated/factories/TLDPublicSuffixList__factory.js +2 -25
  157. package/dist/esm/generated/factories/index.d.ts +14 -0
  158. package/dist/esm/generated/factories/index.js +14 -0
  159. package/dist/esm/generated/index.d.ts +29 -1
  160. package/dist/esm/generated/index.js +15 -1
  161. package/dist/esm/index.d.ts +24 -40
  162. package/dist/esm/index.js +9 -5
  163. package/dist/esm/utils/registerHelpers.d.ts +44 -16
  164. package/dist/esm/utils/registerHelpers.js +40 -14
  165. package/dist/esm/utils/wrapperExpiry.d.ts +5 -0
  166. package/dist/esm/utils/wrapperExpiry.js +26 -0
  167. package/dist/esm/utils/writeTx.d.ts +18 -1
  168. package/dist/esm/utils/writeTx.js +4 -1
  169. package/package.json +27 -28
  170. package/src/ABIs/Multicall.json +452 -0
  171. package/src/contracts/index.ts +1 -1
  172. package/src/functions/batch.test.ts +6 -6
  173. package/src/functions/batchWrappers.test.ts +5 -5
  174. package/src/functions/burnFuses.test.ts +5 -10
  175. package/src/functions/burnFuses.ts +1 -1
  176. package/src/functions/commitName.test.ts +61 -0
  177. package/src/functions/commitName.ts +36 -0
  178. package/src/functions/createSubname.test.ts +6 -10
  179. package/src/functions/createSubname.ts +14 -2
  180. package/src/functions/deleteSubname.test.ts +9 -28
  181. package/src/functions/deleteSubname.ts +3 -2
  182. package/src/functions/getDNSOwner.test.ts +1 -5
  183. package/src/functions/getExpiry.test.ts +26 -4
  184. package/src/functions/getExpiry.ts +87 -9
  185. package/src/functions/getFuses.test.ts +10 -33
  186. package/src/functions/getFuses.ts +10 -16
  187. package/src/functions/getHistory.test.ts +7 -79
  188. package/src/functions/getHistory.ts +2 -127
  189. package/src/functions/getName.test.ts +5 -5
  190. package/src/functions/getName.ts +1 -1
  191. package/src/functions/getNames.test.ts +97 -68
  192. package/src/functions/getOwner.test.ts +10 -25
  193. package/src/functions/getProfile.test.ts +32 -24
  194. package/src/functions/getProfile.ts +1 -1
  195. package/src/functions/getResolver.test.ts +2 -6
  196. package/src/functions/getSpecificRecord.test.ts +16 -13
  197. package/src/functions/getSpecificRecord.ts +10 -4
  198. package/src/functions/getSubnames.test.ts +21 -17
  199. package/src/functions/getSubnames.ts +9 -2
  200. package/src/functions/makeCommitment.test.ts +2 -2
  201. package/src/functions/registerName.test.ts +59 -0
  202. package/src/functions/registerName.ts +38 -0
  203. package/src/functions/renewName.test.ts +44 -0
  204. package/src/functions/renewName.ts +22 -0
  205. package/src/functions/setName.test.ts +10 -11
  206. package/src/functions/setRecord.test.ts +12 -9
  207. package/src/functions/setRecords.test.ts +6 -5
  208. package/src/functions/setResolver.test.ts +6 -9
  209. package/src/functions/transferName.test.ts +13 -27
  210. package/src/functions/transferSubname.test.ts +11 -30
  211. package/src/functions/transferSubname.ts +28 -10
  212. package/src/functions/unwrapName.test.ts +13 -28
  213. package/src/functions/wrapName.test.ts +109 -34
  214. package/src/functions/wrapName.ts +45 -29
  215. package/src/generated/BaseRegistrarImplementation.ts +382 -296
  216. package/src/generated/DNSRegistrar.ts +103 -89
  217. package/src/generated/DNSSECImpl.ts +180 -149
  218. package/src/generated/DefaultReverseResolver.ts +37 -21
  219. package/src/generated/ENSRegistry.ts +257 -184
  220. package/src/generated/ETHRegistrarController.ts +252 -191
  221. package/src/generated/Multicall.ts +73 -57
  222. package/src/generated/NameWrapper.ts +979 -649
  223. package/src/generated/P256SHA256Algorithm.ts +21 -16
  224. package/src/generated/PublicResolver.ts +452 -362
  225. package/src/generated/RSASHA1Algorithm.ts +21 -16
  226. package/src/generated/RSASHA256Algorithm.ts +21 -16
  227. package/src/generated/ReverseRegistrar.ts +193 -141
  228. package/src/generated/Root.ts +146 -86
  229. package/src/generated/SHA1Digest.ts +12 -11
  230. package/src/generated/SHA1NSEC3Digest.ts +21 -16
  231. package/src/generated/SHA256Digest.ts +12 -11
  232. package/src/generated/StaticMetadataService.ts +22 -6
  233. package/src/generated/TLDPublicSuffixList.ts +10 -6
  234. package/src/generated/UniversalResolver.ts +44 -40
  235. package/src/generated/common.ts +2 -0
  236. package/src/generated/factories/DNSRegistrar__factory.ts +4 -56
  237. package/src/generated/factories/DNSSECImpl__factory.ts +4 -49
  238. package/src/generated/factories/ETHRegistrarController__factory.ts +14 -4
  239. package/src/generated/factories/NameWrapper__factory.ts +210 -79
  240. package/src/generated/factories/P256SHA256Algorithm__factory.ts +4 -40
  241. package/src/generated/factories/RSASHA1Algorithm__factory.ts +4 -40
  242. package/src/generated/factories/RSASHA256Algorithm__factory.ts +4 -40
  243. package/src/generated/factories/SHA1Digest__factory.ts +4 -40
  244. package/src/generated/factories/SHA1NSEC3Digest__factory.ts +4 -40
  245. package/src/generated/factories/SHA256Digest__factory.ts +4 -40
  246. package/src/generated/factories/TLDPublicSuffixList__factory.ts +4 -40
  247. package/src/generated/factories/index.ts +14 -0
  248. package/src/generated/index.ts +29 -1
  249. package/src/index.ts +28 -26
  250. package/src/utils/registerHelpers.ts +107 -49
  251. package/src/utils/wrapperExpiry.ts +31 -0
  252. package/src/utils/writeTx.ts +12 -2
  253. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  254. package/dist/cjs/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -4
  255. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  256. package/dist/cjs/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -2
  257. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  258. package/dist/cjs/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -171
  259. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.d.ts +0 -3
  260. package/dist/esm/contracts/doNotCallOnChainUniversalResolverProxy.js +0 -2
  261. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.d.ts +0 -144
  262. package/dist/esm/generated/DoNotCallOnChainUniversalResolverProxy.js +0 -1
  263. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.d.ts +0 -56
  264. package/dist/esm/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.js +0 -167
  265. package/src/ABIs/ETHRegistrarController.json +0 -494
  266. package/src/ABIs/NameWrapper.json +0 -1183
  267. package/src/ABIs/PublicResolver.json +0 -875
  268. package/src/ABIs/ReverseRegistrar.json +0 -323
  269. package/src/ABIs/StaticMetadataService.json +0 -32
  270. package/src/ABIs/UniversalResolver.json +0 -187
  271. package/src/contracts/doNotCallOnChainUniversalResolverProxy.ts +0 -5
  272. package/src/generated/DoNotCallOnChainUniversalResolverProxy.ts +0 -285
  273. package/src/generated/factories/DoNotCallOnChainUniversalResolverProxy__factory.ts +0 -186
  274. package/src/tests/populateTransaction.test.ts +0 -40
  275. package/src/tests/setup.ts +0 -53
  276. package/src/tests/signerInjection.test.ts +0 -46
  277. package/src/tests/withProvider.test.ts +0 -28
@@ -2,7 +2,6 @@ import { formatsByCoinType } from '@ensdomains/address-encoder'
2
2
  import { ethers } from 'ethers'
3
3
  import { ENSArgs } from '..'
4
4
  import { decodeContenthash } from '../utils/contentHash'
5
- import { makeOtherIndexes } from '../utils/makeHashIndexes'
6
5
 
7
6
  type DomainEvent = 'NewOwner' | 'NewResolver' | 'Transfer' | 'NewTTL'
8
7
  type RegistrationEvent = 'NameRegistered' | 'NameRenewed' | 'NameTransferred'
@@ -63,7 +62,7 @@ const eventFormat: Record<
63
62
  NameChanged: (args: any) => ({ name: args.name }),
64
63
  AbiChanged: (args: any) => ({ contentType: args.contentType }),
65
64
  PubkeyChanged: (args: any) => ({ x: args.x, y: args.y }),
66
- TextChanged: (args: any) => ({ key: args.key }),
65
+ TextChanged: (args: any) => ({ key: args.key, value: args.value }),
67
66
  ContenthashChanged: (args: any) => ({ hash: decodeContenthash(args.hash) }),
68
67
  InterfaceChanged: (args: any) => ({
69
68
  interfaceId: args.interfaceId,
@@ -86,37 +85,6 @@ const mapEvents = (eventArray: any[], type: EventTypes) =>
86
85
  data: eventFormat[type][event.__typename](event),
87
86
  }))
88
87
 
89
- const mapResultDetailDecode =
90
- (publicResolver: ethers.Contract) => (result: any) => {
91
- const hashIndexes = makeOtherIndexes(result.input, '10f13a8c')
92
- const abiLengths = hashIndexes.map((x: number) => ({
93
- index: x,
94
- length:
95
- x === 0
96
- ? ethers.utils.hexDataLength(result.input)
97
- : parseInt(ethers.utils.hexDataSlice(result.input, x - 32, x), 16),
98
- }))
99
- const ABIs = abiLengths.map(({ index, length }) =>
100
- ethers.utils.hexDataSlice(result.input, index, index + length),
101
- )
102
- return ABIs.map((abi: string) => {
103
- try {
104
- return publicResolver.interface.decodeFunctionData(
105
- 'setText(bytes32,string,string)',
106
- abi,
107
- )
108
- } catch {
109
- return
110
- }
111
- })
112
- }
113
-
114
- const expandDecode = (prev: any, curr: any) => {
115
- if (!curr) return [...prev, { value: null }]
116
- if (!curr.length) return [...prev, curr]
117
- return [...prev, ...curr]
118
- }
119
-
120
88
  export async function getHistory(
121
89
  { gqlInstance }: ENSArgs<'gqlInstance'>,
122
90
  name: string,
@@ -200,6 +168,7 @@ export async function getHistory(
200
168
  }
201
169
  ...on TextChanged {
202
170
  key
171
+ value
203
172
  }
204
173
  ...on ContenthashChanged {
205
174
  hash
@@ -251,97 +220,3 @@ export async function getHistory(
251
220
  resolver: resolverHistory,
252
221
  }
253
222
  }
254
-
255
- export async function getHistoryWithDetail(
256
- {
257
- contracts,
258
- gqlInstance,
259
- provider,
260
- }: ENSArgs<'contracts' | 'gqlInstance' | 'provider'>,
261
- name: string,
262
- ) {
263
- const historyRes = await getHistory({ gqlInstance }, name)
264
-
265
- if (!historyRes) return
266
-
267
- const { domain, registration, resolver: resolverHistory } = historyRes
268
-
269
- const textEvents = resolverHistory.filter(
270
- (event) => event.type === 'TextChanged',
271
- )
272
-
273
- const transactions = textEvents.reduce((prev, curr) => {
274
- if (prev.includes(curr.transactionHash)) {
275
- return prev
276
- }
277
- return [...prev, curr.transactionHash]
278
- }, [] as string[])
279
-
280
- const publicResolver = await contracts?.getPublicResolver()!
281
-
282
- const fetchResult = (
283
- await ethers.utils.fetchJson(
284
- provider!.connection,
285
- JSON.stringify(
286
- transactions.map((tx, i) => ({
287
- jsonrpc: '2.0',
288
- id: i,
289
- method: 'eth_getTransactionByHash',
290
- params: [tx],
291
- })),
292
- ),
293
- )
294
- )
295
- .map((result: any) => result.result)
296
- .map(mapResultDetailDecode(publicResolver))
297
- .reduce(expandDecode, [])
298
-
299
- const detailedResolverHistory = resolverHistory.map((event) => {
300
- if (event.type !== 'TextChanged') return event
301
- const { id } = event
302
- const matchedTextInx = textEvents.findIndex((x) => x.id === id)
303
- return {
304
- ...event,
305
- data: {
306
- ...event.data,
307
- value: fetchResult[matchedTextInx] && fetchResult[matchedTextInx].value,
308
- },
309
- }
310
- })
311
-
312
- return {
313
- domain,
314
- registration,
315
- resolver: detailedResolverHistory,
316
- }
317
- }
318
-
319
- export async function getHistoryDetailForTransactionHash(
320
- { contracts, provider }: ENSArgs<'contracts' | 'provider'>,
321
- hash: string,
322
- indexInTransaction?: number,
323
- ) {
324
- const publicResolver = await contracts?.getPublicResolver()!
325
- const transaction = await provider!.getTransaction(hash)
326
- if (!transaction) return
327
- const result = mapResultDetailDecode(publicResolver)({
328
- input: transaction.data,
329
- })
330
- if (!result || !result.length) return
331
- if (typeof indexInTransaction === 'number') {
332
- if (indexInTransaction + 1 > result.length) return
333
- const resultItem = result[indexInTransaction]
334
- if (
335
- !resultItem ||
336
- !resultItem.key ||
337
- (!resultItem.value && resultItem.value !== '')
338
- )
339
- return
340
- return { key: resultItem.key, value: resultItem.value }
341
- }
342
- return result.map((item: any) => {
343
- if (!item.key) return
344
- if (!item.value && item.value !== '') return { key: item.key, value: null }
345
- return { key: item.key, value: item.value }
346
- })
347
- }
@@ -19,11 +19,11 @@ afterAll(async () => {
19
19
  describe('getName', () => {
20
20
  it('should get a primary name from an address', async () => {
21
21
  const result = await ENSInstance.getName(
22
- '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
22
+ '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
23
23
  )
24
24
  expect(result).toBeTruthy()
25
25
  if (result) {
26
- expect(result.name).toBe('jefflau.eth')
26
+ expect(result.name).toBe('with-profile.eth')
27
27
  expect(result.match).toBeTruthy()
28
28
  }
29
29
  })
@@ -31,16 +31,16 @@ describe('getName', () => {
31
31
  const result = await ENSInstance.getName(
32
32
  '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0',
33
33
  )
34
- expect(result).toBeUndefined()
34
+ expect(result?.name).toBeUndefined()
35
35
  })
36
36
  it('should return with a false match for a name with no forward resolution', async () => {
37
- const tx = await ENSInstance.setName('jefflau.eth')
37
+ const tx = await ENSInstance.setName('with-profile.eth')
38
38
  await tx?.wait()
39
39
 
40
40
  const result = await ENSInstance.getName(accounts[0])
41
41
  expect(result).toBeTruthy()
42
42
  if (result) {
43
- expect(result.name).toBe('jefflau.eth')
43
+ expect(result.name).toBe('with-profile.eth')
44
44
  expect(result.match).toBeFalsy()
45
45
  }
46
46
  })
@@ -31,7 +31,7 @@ const decode = async (
31
31
  resolverAddress: result['3'],
32
32
  }
33
33
  } catch {
34
- return { name: null, match: false }
34
+ return { name: undefined }
35
35
  }
36
36
  }
37
37
 
@@ -1,6 +1,6 @@
1
1
  import { ENS } from '..'
2
- import { OwnedName, Registration } from '../functions/getNames'
3
2
  import setup from '../tests/setup'
3
+ import { Name } from './getNames'
4
4
 
5
5
  let ENSInstance: ENS
6
6
 
@@ -14,12 +14,43 @@ const testProperties = (obj: object, ...properties: string[]) =>
14
14
  const testNotProperties = (obj: object, ...properties: string[]) =>
15
15
  properties.map((property) => expect(obj).not.toHaveProperty(property))
16
16
 
17
+ const letterItems = [
18
+ 'w',
19
+ '9',
20
+ '8',
21
+ '7',
22
+ '6',
23
+ '5',
24
+ '4',
25
+ ...Array(5).fill('3'),
26
+ ...Array(11).fill('2'),
27
+ ...Array(11).fill('1'),
28
+ '0',
29
+ ]
30
+
31
+ const domainLetterItems = [
32
+ '[',
33
+ 'w',
34
+ 't',
35
+ 't',
36
+ '9',
37
+ '8',
38
+ '7',
39
+ '6',
40
+ '5',
41
+ '4',
42
+ ...Array(5).fill('3'),
43
+ ...Array(11).fill('2'),
44
+ ...Array(11).fill('1'),
45
+ '0',
46
+ ]
47
+
17
48
  describe('getNames', () => {
18
49
  let totalRegistrations: number = 0
19
50
  let totalOwnedNames: number = 0
20
51
  it('should get the registrations for an address', async () => {
21
52
  const result = await ENSInstance.getNames({
22
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
53
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
23
54
  type: 'registrant',
24
55
  })
25
56
  totalRegistrations = result.length
@@ -39,7 +70,7 @@ describe('getNames', () => {
39
70
  })
40
71
  it('should get the owned names for an address', async () => {
41
72
  const result = await ENSInstance.getNames({
42
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
73
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
43
74
  type: 'owner',
44
75
  })
45
76
  totalOwnedNames = result.length
@@ -58,39 +89,51 @@ describe('getNames', () => {
58
89
  })
59
90
  it('should get the registrations for an address with pagination', async () => {
60
91
  const pageOne = await ENSInstance.getNames({
61
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
92
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
62
93
  type: 'registrant',
63
94
  page: 0,
64
95
  })
65
96
  expect(pageOne).toHaveLength(10)
66
97
  const pageTwo = await ENSInstance.getNames({
67
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
98
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
68
99
  type: 'registrant',
69
100
  page: 1,
70
101
  })
71
- expect(pageTwo).toHaveLength(totalRegistrations % 10)
102
+ expect(pageTwo).toHaveLength(10)
103
+ const pageThree = await ENSInstance.getNames({
104
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
105
+ type: 'registrant',
106
+ page: 2,
107
+ })
108
+ expect(pageThree).toHaveLength(10)
109
+ const pageFour = await ENSInstance.getNames({
110
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
111
+ type: 'registrant',
112
+ page: 3,
113
+ })
114
+ expect(pageFour).toHaveLength(totalRegistrations % 10)
72
115
  })
73
116
  it('should get the owned names for an address with pagination', async () => {
74
117
  const pageOne = await ENSInstance.getNames({
75
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
118
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
76
119
  type: 'owner',
77
120
  page: 0,
78
121
  })
79
122
  expect(pageOne).toHaveLength(10)
80
123
  const pageTwo = await ENSInstance.getNames({
81
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
124
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
82
125
  type: 'owner',
83
126
  page: 1,
84
127
  })
85
128
  expect(pageTwo).toHaveLength(10)
86
129
  const pageThree = await ENSInstance.getNames({
87
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
130
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
88
131
  type: 'owner',
89
132
  page: 2,
90
133
  })
91
134
  expect(pageThree).toHaveLength(10)
92
135
  const pageFour = await ENSInstance.getNames({
93
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
136
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
94
137
  type: 'owner',
95
138
  page: 3,
96
139
  })
@@ -100,147 +143,133 @@ describe('getNames', () => {
100
143
  describe('registrations', () => {
101
144
  it('descending registrationDate', async () => {
102
145
  const registrationDateOrderedDesc = (await ENSInstance.getNames({
103
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
146
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
104
147
  type: 'registrant',
105
148
  orderBy: 'registrationDate',
106
149
  orderDirection: 'desc',
107
- })) as Registration[]
150
+ })) as Name[]
108
151
  registrationDateOrderedDesc.reduce((prev, curr) => {
109
- expect(prev.registrationDate.getTime()).toBeGreaterThanOrEqual(
110
- curr.registrationDate.getTime(),
152
+ expect(prev.registrationDate!.getTime()).toBeGreaterThanOrEqual(
153
+ curr.registrationDate!.getTime(),
111
154
  )
112
155
  return curr
113
156
  })
114
157
  })
115
158
  it('ascending registrationDate', async () => {
116
159
  const registrationDateOrderedAsc = (await ENSInstance.getNames({
117
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
160
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
118
161
  type: 'registrant',
119
162
  orderBy: 'registrationDate',
120
163
  orderDirection: 'asc',
121
- })) as Registration[]
164
+ })) as Name[]
122
165
  registrationDateOrderedAsc.reduce((prev, curr) => {
123
- expect(prev.registrationDate.getTime()).toBeLessThanOrEqual(
124
- curr.registrationDate.getTime(),
166
+ expect(prev.registrationDate!.getTime()).toBeLessThanOrEqual(
167
+ curr.registrationDate!.getTime(),
125
168
  )
126
169
  return curr
127
170
  })
128
171
  })
129
172
  it('descending expiryDate', async () => {
130
173
  const expiryDateOrderedDesc = (await ENSInstance.getNames({
131
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
174
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
132
175
  type: 'registrant',
133
176
  orderBy: 'expiryDate',
134
177
  orderDirection: 'desc',
135
- })) as Registration[]
178
+ })) as Name[]
136
179
  expiryDateOrderedDesc.reduce((prev, curr) => {
137
- expect(prev.expiryDate.getTime()).toBeGreaterThanOrEqual(
138
- curr.expiryDate.getTime(),
180
+ expect(prev.expiryDate!.getTime()).toBeGreaterThanOrEqual(
181
+ curr.expiryDate!.getTime(),
139
182
  )
140
183
  return curr
141
184
  })
142
185
  })
143
186
  it('ascending expiryDate', async () => {
144
187
  const expiryDateOrderedAsc = (await ENSInstance.getNames({
145
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
188
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
146
189
  type: 'registrant',
147
190
  orderBy: 'expiryDate',
148
191
  orderDirection: 'asc',
149
- })) as Registration[]
192
+ })) as Name[]
150
193
  expiryDateOrderedAsc.reduce((prev, curr) => {
151
- expect(prev.expiryDate.getTime()).toBeLessThanOrEqual(
152
- curr.expiryDate.getTime(),
194
+ expect(prev.expiryDate!.getTime()).toBeLessThanOrEqual(
195
+ curr.expiryDate!.getTime(),
153
196
  )
154
197
  return curr
155
198
  })
156
199
  })
157
200
  it('descending labelName', async () => {
158
201
  const labelNameOrderedDesc = (await ENSInstance.getNames({
159
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
202
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
160
203
  type: 'registrant',
161
204
  orderBy: 'labelName',
162
205
  orderDirection: 'desc',
163
- })) as Registration[]
164
- labelNameOrderedDesc.reduce((prev, curr) => {
165
- expect((prev.labelName || '') > (curr.labelName || '')).toBeTruthy()
166
- return curr
167
- })
206
+ })) as Name[]
207
+ expect(labelNameOrderedDesc.map((n) => n.labelName![0])).toStrictEqual(
208
+ letterItems,
209
+ )
168
210
  })
169
211
  it('ascending labelName', async () => {
170
212
  const labelNameOrderedAsc = (await ENSInstance.getNames({
171
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
213
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
172
214
  type: 'registrant',
173
215
  orderBy: 'labelName',
174
216
  orderDirection: 'asc',
175
- })) as Registration[]
176
- labelNameOrderedAsc.reduce((prev, curr) => {
177
- expect((prev.labelName || '') < (curr.labelName || '')).toBeTruthy()
178
- return curr
179
- })
217
+ })) as Name[]
218
+ expect(labelNameOrderedAsc.map((n) => n.labelName![0])).toStrictEqual(
219
+ letterItems.reverse(),
220
+ )
180
221
  })
181
222
  })
182
223
  describe('owned names', () => {
183
224
  it('descending createdAt', async () => {
184
225
  const createdAtOrderedDesc = (await ENSInstance.getNames({
185
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
226
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
186
227
  type: 'owner',
187
228
  orderBy: 'createdAt',
188
229
  orderDirection: 'desc',
189
- })) as OwnedName[]
230
+ })) as Name[]
190
231
  createdAtOrderedDesc.reduce((prev, curr) => {
191
- expect(prev.createdAt.getTime()).toBeGreaterThanOrEqual(
192
- curr.createdAt.getTime(),
232
+ expect(prev.createdAt!.getTime()).toBeGreaterThanOrEqual(
233
+ curr.createdAt!.getTime(),
193
234
  )
194
235
  return curr
195
236
  })
196
237
  })
197
238
  it('ascending createdAt', async () => {
198
239
  const createdAtOrderedAsc = (await ENSInstance.getNames({
199
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
240
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
200
241
  type: 'owner',
201
242
  orderBy: 'createdAt',
202
243
  orderDirection: 'asc',
203
- })) as OwnedName[]
244
+ })) as Name[]
204
245
  createdAtOrderedAsc.reduce((prev, curr) => {
205
- expect(prev.createdAt.getTime()).toBeLessThanOrEqual(
206
- curr.createdAt.getTime(),
246
+ expect(prev.createdAt!.getTime()).toBeLessThanOrEqual(
247
+ curr.createdAt!.getTime(),
207
248
  )
208
249
  return curr
209
250
  })
210
251
  })
211
252
  it('descending labelName', async () => {
212
253
  const labelNameOrderedDesc = (await ENSInstance.getNames({
213
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
254
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
214
255
  type: 'owner',
215
256
  orderBy: 'labelName',
216
257
  orderDirection: 'desc',
217
- })) as Registration[]
218
- labelNameOrderedDesc.reduce((prev, curr) => {
219
- if (
220
- (!prev.labelName && !curr.labelName) ||
221
- (!prev.labelName && curr.labelName)
222
- )
223
- return curr
224
- expect((prev.labelName || '') > (curr.labelName || '')).toBeTruthy()
225
- return curr
226
- })
258
+ })) as Name[]
259
+ expect(labelNameOrderedDesc.map((n) => n.name[0])).toStrictEqual(
260
+ domainLetterItems,
261
+ )
227
262
  })
228
263
  it('ascending labelName', async () => {
229
264
  const labelNameOrderedAsc = (await ENSInstance.getNames({
230
- address: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
265
+ address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
231
266
  type: 'owner',
232
267
  orderBy: 'labelName',
233
268
  orderDirection: 'asc',
234
- })) as Registration[]
235
- labelNameOrderedAsc.reduce((prev, curr) => {
236
- if (
237
- (!prev.labelName && !curr.labelName) ||
238
- (prev.labelName && !curr.labelName)
239
- )
240
- return curr
241
- expect((prev.labelName || '') < (curr.labelName || '')).toBeTruthy()
242
- return curr
243
- })
269
+ })) as Name[]
270
+ expect(labelNameOrderedAsc.map((n) => n.name[0])).toStrictEqual(
271
+ domainLetterItems.reverse(),
272
+ )
244
273
  })
245
274
  })
246
275
  })
@@ -10,10 +10,6 @@ let accounts: string[]
10
10
  beforeAll(async () => {
11
11
  ;({ ENSInstance, revert, provider } = await setup())
12
12
  accounts = await provider.listAccounts()
13
- const tx = await ENSInstance.wrapName('parthtejpal.eth', {
14
- wrappedOwner: accounts[0],
15
- })
16
- await tx.wait()
17
13
  })
18
14
 
19
15
  afterAll(async () => {
@@ -26,19 +22,19 @@ describe('getOwner', () => {
26
22
  expect(result).toBeUndefined()
27
23
  })
28
24
  it('should return the owner, registrant, and ownership level for a registered name', async () => {
29
- const result = await ENSInstance.getOwner('jefflau.eth')
25
+ const result = await ENSInstance.getOwner('with-profile.eth')
30
26
  expect(result).toMatchObject({
31
- owner: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
32
- registrant: '0x866B3c4994e1416B7C738B9818b31dC246b95eEE',
27
+ owner: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
28
+ registrant: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC',
33
29
  ownershipLevel: 'registrar',
34
30
  })
35
31
  })
36
32
  it('should return nameWrapper as the ownership level for a wrapped name', async () => {
37
- const result = await ENSInstance.getOwner('parthtejpal.eth')
33
+ const result = await ENSInstance.getOwner('wrapped.eth')
38
34
  expect(result?.ownershipLevel).toBe('nameWrapper')
39
35
  })
40
36
  it('should return the owner at a specific level if specified', async () => {
41
- const result = await ENSInstance.getOwner('parthtejpal.eth', 'registrar')
37
+ const result = await ENSInstance.getOwner('wrapped.eth', 'registrar')
42
38
  const nameWrapperAddress = (await ENSInstance.contracts!.getNameWrapper())
43
39
  .address
44
40
  expect(result?.ownershipLevel).toBe('registrar')
@@ -54,20 +50,9 @@ describe('getOwner', () => {
54
50
  baseRegistrarAddress.toLowerCase(),
55
51
  )
56
52
  })
57
- // it('should return registry as the ownership level for an unwrapped subname', async () => {
58
- // const result0 = await ENSInstance.getOwner('fleek.eth')
59
- // console.log(result0?.owner, accounts[2])
60
-
61
- // const tx = await ENSInstance.createSubname({
62
- // name: 'test.fleek.eth',
63
- // contract: 'registry',
64
- // owner: accounts[0],
65
- // options: { addressOrIndex: accounts[1] },
66
- // })
67
-
68
- // await tx.wait()
69
-
70
- // const result = await ENSInstance.getOwner('test.fleek.eth')
71
- // expect(result?.ownershipLevel).toBe('registry')
72
- // })
53
+ it('should return registry as the ownership level for an unwrapped subname', async () => {
54
+ const result = await ENSInstance.getOwner('test.with-subnames.eth')
55
+ expect(result?.ownershipLevel).toBe('registry')
56
+ expect(result?.owner).toBe('0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC')
57
+ })
73
58
  })