@ensdomains/ensjs 3.0.0-beta.1 → 3.0.0-beta.2

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 (248) hide show
  1. package/dist/cjs/clients/decorators/subgraph.js.map +1 -1
  2. package/dist/cjs/contracts/consts.js +6 -0
  3. package/dist/cjs/contracts/consts.js.map +1 -1
  4. package/dist/cjs/dns.js +3 -3
  5. package/dist/cjs/dns.js.map +1 -1
  6. package/dist/cjs/errors/subgraph.js.map +1 -1
  7. package/dist/cjs/errors/utils.js +15 -18
  8. package/dist/cjs/errors/utils.js.map +1 -1
  9. package/dist/cjs/errors/version.js +1 -1
  10. package/dist/cjs/errors/version.js.map +1 -1
  11. package/dist/cjs/functions/dns/{prepareDnsImport.js → getDnsImportData.js} +3 -3
  12. package/dist/cjs/functions/dns/{prepareDnsImport.js.map → getDnsImportData.js.map} +1 -1
  13. package/dist/cjs/functions/dns/importDnsName.js +7 -7
  14. package/dist/cjs/functions/dns/importDnsName.js.map +1 -1
  15. package/dist/cjs/functions/public/_getContentHash.js +1 -1
  16. package/dist/cjs/functions/public/getSupportedInterfaces.js +1 -1
  17. package/dist/cjs/functions/public/getSupportedInterfaces.js.map +1 -1
  18. package/dist/cjs/functions/public/getWrapperData.js.map +1 -1
  19. package/dist/cjs/functions/subgraph/filters.js +3 -0
  20. package/dist/cjs/functions/subgraph/filters.js.map +1 -0
  21. package/dist/cjs/functions/subgraph/getNameHistory.js +1 -1
  22. package/dist/cjs/functions/subgraph/getNamesForAddress.js +140 -182
  23. package/dist/cjs/functions/subgraph/getNamesForAddress.js.map +1 -1
  24. package/dist/cjs/functions/subgraph/getSubnames.js +95 -108
  25. package/dist/cjs/functions/subgraph/getSubnames.js.map +1 -1
  26. package/dist/cjs/functions/subgraph/types.js +3 -0
  27. package/dist/cjs/functions/subgraph/types.js.map +1 -0
  28. package/dist/cjs/functions/subgraph/utils.js.map +1 -1
  29. package/dist/cjs/functions/wallet/createSubname.js +1 -1
  30. package/dist/cjs/functions/wallet/createSubname.js.map +1 -1
  31. package/dist/cjs/functions/wallet/setChildFuses.js +1 -1
  32. package/dist/cjs/functions/wallet/setChildFuses.js.map +1 -1
  33. package/dist/cjs/functions/wallet/setFuses.js +1 -1
  34. package/dist/cjs/functions/wallet/setFuses.js.map +1 -1
  35. package/dist/cjs/functions/wallet/wrapName.js +3 -1
  36. package/dist/cjs/functions/wallet/wrapName.js.map +1 -1
  37. package/dist/cjs/index.js +1 -2
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/utils/contentHash.js +54 -131
  40. package/dist/cjs/utils/contentHash.js.map +1 -1
  41. package/dist/cjs/utils/encoders/encodeSetContentHash.js +1 -4
  42. package/dist/cjs/utils/encoders/encodeSetContentHash.js.map +1 -1
  43. package/dist/cjs/utils/format.js +1 -5
  44. package/dist/cjs/utils/format.js.map +1 -1
  45. package/dist/cjs/utils/fuses.js +181 -200
  46. package/dist/cjs/utils/fuses.js.map +1 -1
  47. package/dist/cjs/utils/index.js +4 -7
  48. package/dist/cjs/utils/index.js.map +1 -1
  49. package/dist/cjs/utils/registerHelpers.js +3 -1
  50. package/dist/cjs/utils/registerHelpers.js.map +1 -1
  51. package/dist/esm/clients/decorators/subgraph.js.map +1 -1
  52. package/dist/esm/contracts/consts.js +6 -0
  53. package/dist/esm/contracts/consts.js.map +1 -1
  54. package/dist/esm/dns.js +1 -1
  55. package/dist/esm/dns.js.map +1 -1
  56. package/dist/esm/errors/subgraph.js.map +1 -1
  57. package/dist/esm/errors/utils.js +13 -16
  58. package/dist/esm/errors/utils.js.map +1 -1
  59. package/dist/esm/errors/version.js +1 -1
  60. package/dist/esm/errors/version.js.map +1 -1
  61. package/dist/esm/functions/dns/{prepareDnsImport.js → getDnsImportData.js} +9 -10
  62. package/dist/esm/functions/dns/getDnsImportData.js.map +1 -0
  63. package/dist/esm/functions/dns/importDnsName.js +12 -12
  64. package/dist/esm/functions/dns/importDnsName.js.map +1 -1
  65. package/dist/esm/functions/public/_getContentHash.js +2 -2
  66. package/dist/esm/functions/public/getSupportedInterfaces.js +2 -2
  67. package/dist/esm/functions/public/getSupportedInterfaces.js.map +1 -1
  68. package/dist/esm/functions/public/getWrapperData.js.map +1 -1
  69. package/dist/esm/functions/subgraph/filters.js +2 -0
  70. package/dist/esm/functions/subgraph/filters.js.map +1 -0
  71. package/dist/esm/functions/subgraph/getNameHistory.js +2 -2
  72. package/dist/esm/functions/subgraph/getNamesForAddress.js +144 -183
  73. package/dist/esm/functions/subgraph/getNamesForAddress.js.map +1 -1
  74. package/dist/esm/functions/subgraph/getSubnames.js +101 -111
  75. package/dist/esm/functions/subgraph/getSubnames.js.map +1 -1
  76. package/dist/esm/functions/subgraph/types.js +2 -0
  77. package/dist/esm/functions/subgraph/types.js.map +1 -0
  78. package/dist/esm/functions/subgraph/utils.js.map +1 -1
  79. package/dist/esm/functions/wallet/createSubname.js +1 -1
  80. package/dist/esm/functions/wallet/createSubname.js.map +1 -1
  81. package/dist/esm/functions/wallet/setChildFuses.js +1 -1
  82. package/dist/esm/functions/wallet/setChildFuses.js.map +1 -1
  83. package/dist/esm/functions/wallet/setFuses.js +2 -2
  84. package/dist/esm/functions/wallet/setFuses.js.map +1 -1
  85. package/dist/esm/functions/wallet/wrapName.js +4 -2
  86. package/dist/esm/functions/wallet/wrapName.js.map +1 -1
  87. package/dist/esm/index.js +1 -1
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/utils/contentHash.js +51 -128
  90. package/dist/esm/utils/contentHash.js.map +1 -1
  91. package/dist/esm/utils/encoders/encodeSetContentHash.js +2 -5
  92. package/dist/esm/utils/encoders/encodeSetContentHash.js.map +1 -1
  93. package/dist/esm/utils/format.js +0 -2
  94. package/dist/esm/utils/format.js.map +1 -1
  95. package/dist/esm/utils/fuses.js +180 -201
  96. package/dist/esm/utils/fuses.js.map +1 -1
  97. package/dist/esm/utils/index.js +2 -2
  98. package/dist/esm/utils/index.js.map +1 -1
  99. package/dist/esm/utils/registerHelpers.js +4 -2
  100. package/dist/esm/utils/registerHelpers.js.map +1 -1
  101. package/dist/types/clients/decorators/subgraph.d.ts +1 -1
  102. package/dist/types/clients/decorators/subgraph.d.ts.map +1 -1
  103. package/dist/types/clients/public.d.ts +1 -1
  104. package/dist/types/clients/subgraph.d.ts +1 -1
  105. package/dist/types/clients/wallet.d.ts +31 -67
  106. package/dist/types/clients/wallet.d.ts.map +1 -1
  107. package/dist/types/contracts/consts.d.ts +6 -0
  108. package/dist/types/contracts/consts.d.ts.map +1 -1
  109. package/dist/types/dns.d.ts +1 -1
  110. package/dist/types/dns.d.ts.map +1 -1
  111. package/dist/types/errors/subgraph.d.ts +4 -4
  112. package/dist/types/errors/subgraph.d.ts.map +1 -1
  113. package/dist/types/errors/utils.d.ts +10 -13
  114. package/dist/types/errors/utils.d.ts.map +1 -1
  115. package/dist/types/errors/version.d.ts +1 -1
  116. package/dist/types/errors/version.d.ts.map +1 -1
  117. package/dist/types/functions/dns/{prepareDnsImport.d.ts → getDnsImportData.d.ts} +11 -12
  118. package/dist/types/functions/dns/{prepareDnsImport.d.ts.map → getDnsImportData.d.ts.map} +1 -1
  119. package/dist/types/functions/dns/importDnsName.d.ts +12 -12
  120. package/dist/types/functions/dns/importDnsName.d.ts.map +1 -1
  121. package/dist/types/functions/public/getSupportedInterfaces.d.ts +19 -4
  122. package/dist/types/functions/public/getSupportedInterfaces.d.ts.map +1 -1
  123. package/dist/types/functions/public/getWrapperData.d.ts +2 -2
  124. package/dist/types/functions/public/getWrapperData.d.ts.map +1 -1
  125. package/dist/types/functions/subgraph/filters.d.ts +693 -0
  126. package/dist/types/functions/subgraph/filters.d.ts.map +1 -0
  127. package/dist/types/functions/subgraph/getNamesForAddress.d.ts +2 -0
  128. package/dist/types/functions/subgraph/getNamesForAddress.d.ts.map +1 -1
  129. package/dist/types/functions/subgraph/getSubnames.d.ts +3 -1
  130. package/dist/types/functions/subgraph/getSubnames.d.ts.map +1 -1
  131. package/dist/types/functions/subgraph/types.d.ts +13 -0
  132. package/dist/types/functions/subgraph/types.d.ts.map +1 -0
  133. package/dist/types/functions/subgraph/utils.d.ts +2 -2
  134. package/dist/types/functions/subgraph/utils.d.ts.map +1 -1
  135. package/dist/types/functions/wallet/commitName.d.ts +1 -1
  136. package/dist/types/functions/wallet/createSubname.d.ts +4 -4
  137. package/dist/types/functions/wallet/createSubname.d.ts.map +1 -1
  138. package/dist/types/functions/wallet/deleteSubname.d.ts +1 -1
  139. package/dist/types/functions/wallet/setAbiRecord.d.ts +1 -1
  140. package/dist/types/functions/wallet/setAddressRecord.d.ts +1 -1
  141. package/dist/types/functions/wallet/setChildFuses.d.ts +3 -3
  142. package/dist/types/functions/wallet/setChildFuses.d.ts.map +1 -1
  143. package/dist/types/functions/wallet/setContentHashRecord.d.ts +1 -1
  144. package/dist/types/functions/wallet/setFuses.d.ts +3 -3
  145. package/dist/types/functions/wallet/setFuses.d.ts.map +1 -1
  146. package/dist/types/functions/wallet/setPrimaryName.d.ts +1 -1
  147. package/dist/types/functions/wallet/setRecords.d.ts +1 -1
  148. package/dist/types/functions/wallet/setResolver.d.ts +1 -1
  149. package/dist/types/functions/wallet/setTextRecord.d.ts +1 -1
  150. package/dist/types/functions/wallet/transferName.d.ts +1 -1
  151. package/dist/types/functions/wallet/unwrapName.d.ts +1 -1
  152. package/dist/types/functions/wallet/wrapName.d.ts +3 -3
  153. package/dist/types/functions/wallet/wrapName.d.ts.map +1 -1
  154. package/dist/types/index.d.ts +1 -1
  155. package/dist/types/index.d.ts.map +1 -1
  156. package/dist/types/utils/contentHash.d.ts +7 -11
  157. package/dist/types/utils/contentHash.d.ts.map +1 -1
  158. package/dist/types/utils/encoders/encodeSetContentHash.d.ts.map +1 -1
  159. package/dist/types/utils/format.d.ts +0 -2
  160. package/dist/types/utils/format.d.ts.map +1 -1
  161. package/dist/types/utils/fuses.d.ts +164 -125
  162. package/dist/types/utils/fuses.d.ts.map +1 -1
  163. package/dist/types/utils/index.d.ts +2 -2
  164. package/dist/types/utils/index.d.ts.map +1 -1
  165. package/dist/types/utils/registerHelpers.d.ts +2 -2
  166. package/dist/types/utils/registerHelpers.d.ts.map +1 -1
  167. package/package.json +4 -3
  168. package/src/clients/decorators/subgraph.ts +1 -0
  169. package/src/contracts/consts.ts +6 -0
  170. package/src/dns.ts +5 -5
  171. package/src/errors/subgraph.ts +4 -4
  172. package/src/errors/utils.ts +21 -18
  173. package/src/errors/version.ts +1 -1
  174. package/src/functions/dns/{prepareDnsImport.ts → getDnsImportData.ts} +12 -13
  175. package/src/functions/dns/importDnsName.ts +20 -15
  176. package/src/functions/public/_getContentHash.ts +2 -2
  177. package/src/functions/public/getSupportedInterfaces.ts +48 -10
  178. package/src/functions/public/getWrapperData.ts +2 -2
  179. package/src/functions/subgraph/filters.ts +702 -0
  180. package/src/functions/subgraph/getNameHistory.ts +2 -2
  181. package/src/functions/subgraph/getNamesForAddress.ts +170 -186
  182. package/src/functions/subgraph/getSubnames.ts +121 -113
  183. package/src/functions/subgraph/types.ts +13 -0
  184. package/src/functions/subgraph/utils.ts +2 -2
  185. package/src/functions/wallet/createSubname.ts +4 -4
  186. package/src/functions/wallet/setChildFuses.ts +3 -3
  187. package/src/functions/wallet/setFuses.ts +6 -3
  188. package/src/functions/wallet/wrapName.ts +8 -3
  189. package/src/index.ts +0 -1
  190. package/src/utils/contentHash.ts +59 -113
  191. package/src/utils/encoders/encodeSetContentHash.ts +2 -4
  192. package/src/utils/format.ts +0 -6
  193. package/src/utils/fuses.ts +308 -308
  194. package/src/utils/index.ts +4 -5
  195. package/src/utils/registerHelpers.ts +5 -3
  196. package/dist/esm/functions/dns/prepareDnsImport.js.map +0 -1
  197. package/src/@types/@ensdomains/content-hash.d.ts +0 -1
  198. package/src/functions/dns/getDnsOwner.test.ts +0 -195
  199. package/src/functions/dns/importDnsName.test.ts +0 -117
  200. package/src/functions/dns/prepareDnsImport.test.ts +0 -115
  201. package/src/functions/public/batch.test.ts +0 -67
  202. package/src/functions/public/ccip.test.ts +0 -78
  203. package/src/functions/public/getAbiRecord.test.ts +0 -174
  204. package/src/functions/public/getAddressRecord.test.ts +0 -83
  205. package/src/functions/public/getAvailable.test.ts +0 -17
  206. package/src/functions/public/getContentHashRecord.test.ts +0 -28
  207. package/src/functions/public/getExpiry.test.ts +0 -48
  208. package/src/functions/public/getName.test.ts +0 -66
  209. package/src/functions/public/getOwner.test.ts +0 -87
  210. package/src/functions/public/getPrice.test.ts +0 -45
  211. package/src/functions/public/getRecords.test.ts +0 -49
  212. package/src/functions/public/getResolver.test.ts +0 -12
  213. package/src/functions/public/getTextRecord.test.ts +0 -20
  214. package/src/functions/public/getWrapperData.test.ts +0 -79
  215. package/src/functions/public/getWrapperName.test.ts +0 -19
  216. package/src/functions/subgraph/client.test.ts +0 -170
  217. package/src/functions/subgraph/getDecodedName.test.ts +0 -31
  218. package/src/functions/subgraph/getNameHistory.test.ts +0 -39
  219. package/src/functions/subgraph/getNamesForAddress.test.ts +0 -244
  220. package/src/functions/subgraph/getSubgraphRecords.test.ts +0 -74
  221. package/src/functions/subgraph/getSubgraphRegistrant.test.ts +0 -34
  222. package/src/functions/subgraph/getSubnames.test.ts +0 -202
  223. package/src/functions/wallet/commitName.test.ts +0 -58
  224. package/src/functions/wallet/createSubname.test.ts +0 -73
  225. package/src/functions/wallet/deleteSubname.test.ts +0 -150
  226. package/src/functions/wallet/registerName.test.ts +0 -81
  227. package/src/functions/wallet/renewNames.test.ts +0 -92
  228. package/src/functions/wallet/setAbiRecord.test.ts +0 -156
  229. package/src/functions/wallet/setAddressRecord.test.ts +0 -121
  230. package/src/functions/wallet/setChildFuses.test.ts +0 -97
  231. package/src/functions/wallet/setContentHashRecord.test.ts +0 -69
  232. package/src/functions/wallet/setFuses.test.ts +0 -287
  233. package/src/functions/wallet/setPrimaryName.test.ts +0 -71
  234. package/src/functions/wallet/setRecords.test.ts +0 -127
  235. package/src/functions/wallet/setResolver.test.ts +0 -114
  236. package/src/functions/wallet/setTextRecord.test.ts +0 -67
  237. package/src/functions/wallet/transferName.test.ts +0 -201
  238. package/src/functions/wallet/unwrapName.test.ts +0 -93
  239. package/src/functions/wallet/wrapName.test.ts +0 -195
  240. package/src/utils/generateRecordCallArray.test.ts +0 -84
  241. package/src/utils/labels.test.ts +0 -163
  242. package/src/utils/makeLabelNodeAndParent.test.ts +0 -11
  243. package/src/utils/makeSafeSecondsDate.test.ts +0 -14
  244. package/src/utils/normalise.test.ts +0 -35
  245. package/src/utils/ownerFromContract.test.ts +0 -52
  246. package/src/utils/registerHelpers.test.ts +0 -159
  247. package/src/utils/validation.test.ts +0 -170
  248. package/src/utils/wrapper.test.ts +0 -46
@@ -1,201 +0,0 @@
1
- import type { Address, Hex } from 'viem'
2
- import { getVersion } from '../../errors/error-utils.js'
3
- import {
4
- publicClient,
5
- testClient,
6
- waitForTransaction,
7
- walletClient,
8
- } from '../../tests/addTestContracts.js'
9
- import getOwner from '../public/getOwner.js'
10
- import transferName from './transferName.js'
11
-
12
- let snapshot: Hex
13
- let accounts: Address[]
14
-
15
- beforeAll(async () => {
16
- accounts = await walletClient.getAddresses()
17
- })
18
-
19
- beforeEach(async () => {
20
- snapshot = await testClient.snapshot()
21
- })
22
-
23
- afterEach(async () => {
24
- await testClient.revert({ id: snapshot })
25
- })
26
-
27
- it('should allow a transfer on the registry', async () => {
28
- const tx = await transferName(walletClient, {
29
- name: 'test.with-subnames.eth',
30
- newOwnerAddress: accounts[1],
31
- contract: 'registry',
32
- account: accounts[2],
33
- })
34
- expect(tx).toBeTruthy()
35
- const receipt = await waitForTransaction(tx)
36
- expect(receipt.status).toBe('success')
37
-
38
- const owner = await getOwner(publicClient, {
39
- name: 'test.with-subnames.eth',
40
- contract: 'registry',
41
- })
42
-
43
- expect(owner!.owner).toBe(accounts[1])
44
- })
45
- it('should allow a regular transfer on the registrar', async () => {
46
- const tx = await transferName(walletClient, {
47
- name: 'test123.eth',
48
- newOwnerAddress: accounts[2],
49
- contract: 'registrar',
50
- account: accounts[1],
51
- })
52
- expect(tx).toBeTruthy()
53
- const receipt = await waitForTransaction(tx)
54
- expect(receipt.status).toBe('success')
55
-
56
- const owner = await getOwner(publicClient, {
57
- name: 'test123.eth',
58
- contract: 'registrar',
59
- })
60
- expect(owner!.registrant).toBe(accounts[2])
61
- })
62
- it('should allow a reclaim on the registrar', async () => {
63
- const changeRegistryOwnerTx = await transferName(walletClient, {
64
- name: 'test123.eth',
65
- newOwnerAddress: accounts[2],
66
- contract: 'registry',
67
- account: accounts[1],
68
- })
69
- expect(changeRegistryOwnerTx).toBeTruthy()
70
- const changeRegistryOwnerReceipt = await waitForTransaction(
71
- changeRegistryOwnerTx,
72
- )
73
- expect(changeRegistryOwnerReceipt.status).toBe('success')
74
-
75
- const tx = await transferName(walletClient, {
76
- name: 'test123.eth',
77
- newOwnerAddress: accounts[1],
78
- contract: 'registrar',
79
- reclaim: true,
80
- account: accounts[1],
81
- })
82
- expect(tx).toBeTruthy()
83
- const receipt = await waitForTransaction(tx)
84
- expect(receipt.status).toBe('success')
85
-
86
- const owner = await getOwner(publicClient, {
87
- name: 'test123.eth',
88
- contract: 'registry',
89
- })
90
- expect(owner!.owner).toBe(accounts[1])
91
- })
92
- it('should allow a transfer on the namewrapper', async () => {
93
- const tx = await transferName(walletClient, {
94
- name: 'wrapped.eth',
95
- newOwnerAddress: accounts[2],
96
- contract: 'nameWrapper',
97
- account: accounts[1],
98
- })
99
- expect(tx).toBeTruthy()
100
- const receipt = await waitForTransaction(tx)
101
- expect(receipt.status).toBe('success')
102
-
103
- const owner = await getOwner(publicClient, {
104
- name: 'wrapped.eth',
105
- contract: 'nameWrapper',
106
- })
107
- expect(owner!.owner).toBe(accounts[2])
108
- })
109
- it('errors if unknown contract', async () => {
110
- await expect(
111
- transferName(walletClient, {
112
- name: 'test123.eth',
113
- newOwnerAddress: accounts[2],
114
- contract: 'random' as any,
115
- account: accounts[1],
116
- }),
117
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
118
- "Invalid contract type: random
119
-
120
- - Supported contract types: registry, registrar, nameWrapper
121
-
122
- Version: ${getVersion()}"
123
- `)
124
- })
125
- it('errors when reclaim is specified and contract is not registrar', async () => {
126
- await expect(
127
- transferName(walletClient, {
128
- name: 'test123.eth',
129
- newOwnerAddress: accounts[2],
130
- contract: 'registry',
131
- reclaim: true,
132
- account: accounts[1],
133
- } as any),
134
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
135
- "Additional parameter specified: reclaim
136
-
137
- - Allowed parameters: name, newOwnerAddress, contract
138
-
139
- Details: Can't reclaim a name from any contract other than the registrar
140
-
141
- Version: ${getVersion()}"
142
- `)
143
- })
144
-
145
- describe('subnames/asParent', () => {
146
- it('allows transferring a subname on the registry', async () => {
147
- const tx = await transferName(walletClient, {
148
- name: 'test.with-subnames.eth',
149
- contract: 'registry',
150
- newOwnerAddress: accounts[1],
151
- asParent: true,
152
- account: accounts[1],
153
- })
154
- expect(tx).toBeTruthy()
155
- const receipt = await waitForTransaction(tx)
156
- expect(receipt.status).toBe('success')
157
-
158
- const owner = await getOwner(publicClient, {
159
- name: 'test.with-subnames.eth',
160
- contract: 'registry',
161
- })
162
- expect(owner!.owner).toBe(accounts[1])
163
- })
164
- it('allows transferring a subname on the namewrapper', async () => {
165
- const tx = await transferName(walletClient, {
166
- name: 'test.wrapped-with-subnames.eth',
167
- contract: 'nameWrapper',
168
- newOwnerAddress: accounts[1],
169
- asParent: true,
170
- account: accounts[1],
171
- })
172
- expect(tx).toBeTruthy()
173
- const receipt = await waitForTransaction(tx)
174
- expect(receipt.status).toBe('success')
175
-
176
- const owner = await getOwner(publicClient, {
177
- name: 'test.wrapped-with-subnames.eth',
178
- contract: 'nameWrapper',
179
- })
180
- expect(owner!.owner).toBe(accounts[1])
181
- })
182
- it('erorrs when asParent is specified and contract is registrar', async () => {
183
- await expect(
184
- transferName(walletClient, {
185
- name: 'test123.eth',
186
- newOwnerAddress: accounts[2],
187
- contract: 'registrar',
188
- asParent: true,
189
- account: accounts[1],
190
- } as any),
191
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
192
- "Additional parameter specified: asParent
193
-
194
- - Allowed parameters: name, newOwnerAddress, contract, reclaim
195
-
196
- Details: Can't transfer a name as the parent owner on the registrar
197
-
198
- Version: ${getVersion()}"
199
- `)
200
- })
201
- })
@@ -1,93 +0,0 @@
1
- import type { Address, Hex } from 'viem'
2
- import { getVersion } from '../../errors/error-utils.js'
3
- import {
4
- publicClient,
5
- testClient,
6
- waitForTransaction,
7
- walletClient,
8
- } from '../../tests/addTestContracts.js'
9
- import getOwner from '../public/getOwner.js'
10
- import unwrapName from './unwrapName.js'
11
-
12
- let snapshot: Hex
13
- let accounts: Address[]
14
-
15
- beforeAll(async () => {
16
- accounts = await walletClient.getAddresses()
17
- })
18
-
19
- beforeEach(async () => {
20
- snapshot = await testClient.snapshot()
21
- })
22
-
23
- afterEach(async () => {
24
- await testClient.revert({ id: snapshot })
25
- })
26
-
27
- it('should return a .eth unwrap name transaction and succeed', async () => {
28
- const tx = await unwrapName(walletClient, {
29
- name: 'wrapped.eth',
30
- newOwnerAddress: accounts[1],
31
- newRegistrantAddress: accounts[1],
32
- account: accounts[1],
33
- })
34
- expect(tx).toBeTruthy()
35
- const receipt = await waitForTransaction(tx)
36
- expect(receipt.status).toBe('success')
37
-
38
- const owner = await getOwner(publicClient, {
39
- name: 'wrapped.eth',
40
- })
41
- expect(owner!.owner).toBe(accounts[1])
42
- expect(owner!.registrant).toBe(accounts[1])
43
- expect(owner!.ownershipLevel).toBe('registrar')
44
- })
45
- it('should return a regular unwrap name transaction and succeed', async () => {
46
- const tx = await unwrapName(walletClient, {
47
- name: 'test.wrapped-with-subnames.eth',
48
- newOwnerAddress: accounts[1],
49
- account: accounts[2],
50
- })
51
- expect(tx).toBeTruthy()
52
- const receipt = await waitForTransaction(tx)
53
- expect(receipt.status).toBe('success')
54
-
55
- const owner = await getOwner(publicClient, {
56
- name: 'test.wrapped-with-subnames.eth',
57
- })
58
- expect(owner!.owner).toBe(accounts[1])
59
- expect(owner!.ownershipLevel).toBe('registry')
60
- })
61
- it('should error if newRegistrantAddress is not specified for .eth', async () => {
62
- await expect(
63
- unwrapName(walletClient, {
64
- name: 'wrapped.eth',
65
- newOwnerAddress: accounts[1],
66
- account: accounts[1],
67
- } as any),
68
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
69
- "Required parameter not specified: newRegistrantAddress
70
-
71
- Details: Must provide newRegistrantAddress for eth-2ld names
72
-
73
- Version: ${getVersion()}"
74
- `)
75
- })
76
- it('should error if newRegistrantAddress is specified for non .eth', async () => {
77
- await expect(
78
- unwrapName(walletClient, {
79
- name: 'test.wrapped-with-subnames.eth',
80
- newOwnerAddress: accounts[1],
81
- newRegistrantAddress: accounts[1],
82
- account: accounts[2],
83
- } as any),
84
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
85
- "Additional parameter specified: newRegistrantAddress
86
-
87
- - Allowed parameters: name, newOwnerAddress
88
-
89
- Details: newRegistrantAddress can only be specified for eth-2ld names
90
-
91
- Version: ${getVersion()}"
92
- `)
93
- })
@@ -1,195 +0,0 @@
1
- import type { Address, Hex } from 'viem'
2
- import { getChainContractAddress } from '../../contracts/getChainContractAddress.js'
3
- import { registrySetApprovalForAllSnippet } from '../../contracts/registry.js'
4
- import { getVersion } from '../../errors/error-utils.js'
5
- import {
6
- publicClient,
7
- testClient,
8
- waitForTransaction,
9
- walletClient,
10
- } from '../../tests/addTestContracts.js'
11
- import getOwner from '../public/getOwner.js'
12
- import getResolver from '../public/getResolver.js'
13
- import getWrapperData from '../public/getWrapperData.js'
14
- import wrapName from './wrapName.js'
15
-
16
- let snapshot: Hex
17
- let accounts: Address[]
18
-
19
- beforeAll(async () => {
20
- accounts = await walletClient.getAddresses()
21
- })
22
-
23
- beforeEach(async () => {
24
- snapshot = await testClient.snapshot()
25
- })
26
-
27
- afterEach(async () => {
28
- await testClient.revert({ id: snapshot })
29
- })
30
-
31
- const approve = async () => {
32
- return walletClient.writeContract({
33
- abi: registrySetApprovalForAllSnippet,
34
- address: getChainContractAddress({
35
- client: walletClient,
36
- contract: 'ensRegistry',
37
- }),
38
- functionName: 'setApprovalForAll',
39
- args: [
40
- getChainContractAddress({
41
- client: walletClient,
42
- contract: 'ensNameWrapper',
43
- }),
44
- true,
45
- ],
46
- account: accounts[2],
47
- })
48
- }
49
-
50
- describe('eth 2ld', () => {
51
- it('should return a wrap name transaction and succeed', async () => {
52
- const tx = await wrapName(walletClient, {
53
- name: 'test123.eth',
54
- newOwnerAddress: accounts[2],
55
- account: accounts[1],
56
- })
57
- expect(tx).toBeTruthy()
58
- const receipt = await waitForTransaction(tx)
59
- expect(receipt.status).toBe('success')
60
-
61
- const owner = await getOwner(publicClient, {
62
- name: 'test123.eth',
63
- })
64
- expect(owner!.owner).toBe(accounts[2])
65
- expect(owner!.ownershipLevel).toBe('nameWrapper')
66
- })
67
- it('should allow initial fuses', async () => {
68
- const tx = await wrapName(walletClient, {
69
- name: 'test123.eth',
70
- newOwnerAddress: accounts[2],
71
- fuses: {
72
- named: ['CANNOT_UNWRAP', 'CANNOT_SET_TTL'],
73
- },
74
- account: accounts[1],
75
- })
76
- expect(tx).toBeTruthy()
77
- const receipt = await waitForTransaction(tx)
78
- expect(receipt.status).toBe('success')
79
-
80
- const wrapperData = await getWrapperData(publicClient, {
81
- name: 'test123.eth',
82
- })
83
- expect(wrapperData!.fuses.value).toBe(196625)
84
- })
85
- it('should allow a non-default resolver address', async () => {
86
- const tx = await wrapName(walletClient, {
87
- name: 'test123.eth',
88
- newOwnerAddress: accounts[2],
89
- resolverAddress: '0x42D63ae25990889E35F215bC95884039Ba354115',
90
- account: accounts[1],
91
- })
92
- expect(tx).toBeTruthy()
93
- const receipt = await waitForTransaction(tx)
94
- expect(receipt.status).toBe('success')
95
-
96
- const resolver = await getResolver(publicClient, {
97
- name: 'test123.eth',
98
- })
99
- expect(resolver).toBe('0x42D63ae25990889E35F215bC95884039Ba354115')
100
- })
101
- it('should error for labels longer than 255 bytes', async () => {
102
- const label = 'a'.repeat(256)
103
- await expect(
104
- wrapName(walletClient, {
105
- name: `${label}.eth`,
106
- newOwnerAddress: accounts[2],
107
- account: accounts[1],
108
- }),
109
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
110
- "Supplied label was too long
111
-
112
- - Supplied label: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
113
- - Max byte length: 255
114
- - Actual byte length: 256
115
-
116
- Version: ${getVersion()}"
117
- `)
118
- })
119
- })
120
-
121
- describe('other', () => {
122
- beforeEach(async () => {
123
- await approve()
124
- })
125
- it('should return a wrap name transaction and succeed', async () => {
126
- const tx = await wrapName(walletClient, {
127
- name: 'test.with-subnames.eth',
128
- newOwnerAddress: accounts[2],
129
- account: accounts[2],
130
- })
131
- expect(tx).toBeTruthy()
132
- const receipt = await waitForTransaction(tx)
133
- expect(receipt.status).toBe('success')
134
-
135
- const owner = await getOwner(publicClient, {
136
- name: 'test.with-subnames.eth',
137
- })
138
- expect(owner!.owner).toBe(accounts[2])
139
- expect(owner!.ownershipLevel).toBe('nameWrapper')
140
- })
141
- it('should allow a non-default resolver address', async () => {
142
- const tx = await wrapName(walletClient, {
143
- name: 'test.with-subnames.eth',
144
- newOwnerAddress: accounts[2],
145
- resolverAddress: '0x42D63ae25990889E35F215bC95884039Ba354115',
146
- account: accounts[2],
147
- })
148
- expect(tx).toBeTruthy()
149
- const receipt = await waitForTransaction(tx)
150
- expect(receipt.status).toBe('success')
151
-
152
- const resolver = await getResolver(publicClient, {
153
- name: 'test.with-subnames.eth',
154
- })
155
- expect(resolver).toBe('0x42D63ae25990889E35F215bC95884039Ba354115')
156
- })
157
- it('should error if initial fuses are provided', async () => {
158
- await expect(
159
- wrapName(walletClient, {
160
- name: 'test.with-subnames.eth',
161
- newOwnerAddress: accounts[2],
162
- fuses: {
163
- named: ['CANNOT_UNWRAP', 'CANNOT_SET_TTL'],
164
- } as any,
165
- account: accounts[2],
166
- }),
167
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
168
- "Additional parameter specified: fuses
169
-
170
- - Allowed parameters: name, wrappedOwner, resolverAddress
171
-
172
- Details: Fuses cannot be initially set when wrapping non eth-2ld names
173
-
174
- Version: ${getVersion()}"
175
- `)
176
- })
177
- it('should error for a label longer than 255 bytes', async () => {
178
- const label = 'a'.repeat(256)
179
- await expect(
180
- wrapName(walletClient, {
181
- name: `${label}.with-subnames.eth`,
182
- newOwnerAddress: accounts[2],
183
- account: accounts[2],
184
- }),
185
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
186
- "Supplied label was too long
187
-
188
- - Supplied label: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
189
- - Max byte length: 255
190
- - Actual byte length: 256
191
-
192
- Version: ${getVersion()}"
193
- `)
194
- })
195
- })
@@ -1,84 +0,0 @@
1
- import { generateRecordCallArray } from './generateRecordCallArray.js'
2
- import { namehash } from './normalise.js'
3
-
4
- it('generates a record call array', () => {
5
- expect(
6
- generateRecordCallArray({
7
- namehash: namehash('test.eth'),
8
- clearRecords: true,
9
- coins: [
10
- { coin: 'ETH', value: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' },
11
- ],
12
-
13
- texts: [{ key: 'email', value: 'test@example.com' }],
14
- }),
15
- ).toMatchInlineSnapshot(`
16
- [
17
- "0x3603d758eb4f647bea6caa36333c816d7b46fdcb05f9466ecacc140ea8c66faf15b3d9f1",
18
- "0x10f13a8ceb4f647bea6caa36333c816d7b46fdcb05f9466ecacc140ea8c66faf15b3d9f1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000005656d61696c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001074657374406578616d706c652e636f6d00000000000000000000000000000000",
19
- "0x8b95dd71eb4f647bea6caa36333c816d7b46fdcb05f9466ecacc140ea8c66faf15b3d9f1000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000014f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000",
20
- ]
21
- `)
22
- })
23
- it('adds clearRecords call when clearRecords is true', () => {
24
- expect(
25
- generateRecordCallArray({
26
- namehash: namehash('test.eth'),
27
- clearRecords: true,
28
- }),
29
- ).toMatchInlineSnapshot(`
30
- [
31
- "0x3603d758eb4f647bea6caa36333c816d7b46fdcb05f9466ecacc140ea8c66faf15b3d9f1",
32
- ]
33
- `)
34
- })
35
- it('adds contentHash call when contentHash is defined', () => {
36
- expect(
37
- generateRecordCallArray({
38
- namehash: namehash('test.eth'),
39
- contentHash: 'ipfs://Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio',
40
- }),
41
- ).toMatchInlineSnapshot(`
42
- [
43
- "0x304e6adeeb4f647bea6caa36333c816d7b46fdcb05f9466ecacc140ea8c66faf15b3d9f100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000026e30101701220af4147b366bee9eb9a21a9c2d5ccdde35fa4b8d2e0d44854fc81aeb894e8ce280000000000000000000000000000000000000000000000000000",
44
- ]
45
- `)
46
- })
47
- it('adds abi call when abi is defined', () => {
48
- expect(
49
- generateRecordCallArray({
50
- namehash: namehash('test.eth'),
51
- abi: { contentType: 0, encodedData: '0x' },
52
- }),
53
- ).toMatchInlineSnapshot(`
54
- [
55
- "0x623195b0eb4f647bea6caa36333c816d7b46fdcb05f9466ecacc140ea8c66faf15b3d9f1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000",
56
- ]
57
- `)
58
- })
59
- it('adds text calls when texts array is defined and not empty', () => {
60
- expect(
61
- generateRecordCallArray({
62
- namehash: namehash('test.eth'),
63
- texts: [{ key: 'email', value: 'cool' }],
64
- }),
65
- ).toMatchInlineSnapshot(`
66
- [
67
- "0x10f13a8ceb4f647bea6caa36333c816d7b46fdcb05f9466ecacc140ea8c66faf15b3d9f1000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000005656d61696c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004636f6f6c00000000000000000000000000000000000000000000000000000000",
68
- ]
69
- `)
70
- })
71
- it('adds coin calls when coins array is defined and not empty', () => {
72
- expect(
73
- generateRecordCallArray({
74
- namehash: namehash('test.eth'),
75
- coins: [
76
- { coin: 'ETH', value: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' },
77
- ],
78
- }),
79
- ).toMatchInlineSnapshot(`
80
- [
81
- "0x8b95dd71eb4f647bea6caa36333c816d7b46fdcb05f9466ecacc140ea8c66faf15b3d9f1000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000014f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000",
82
- ]
83
- `)
84
- })