@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,287 +0,0 @@
1
- import type { Address, Hex } from 'viem'
2
- import { getChainContractAddress } from '../../contracts/getChainContractAddress.js'
3
- import { nameWrapperGetDataSnippet } from '../../contracts/nameWrapper.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 {
12
- unnamedUserSettableFuses,
13
- userSettableFuseEnum,
14
- } from '../../utils/fuses.js'
15
- import { namehash } from '../../utils/normalise.js'
16
- import setFuses from './setFuses.js'
17
-
18
- let snapshot: Hex
19
- let accounts: Address[]
20
-
21
- beforeAll(async () => {
22
- accounts = await walletClient.getAddresses()
23
- })
24
-
25
- beforeEach(async () => {
26
- snapshot = await testClient.snapshot()
27
- })
28
-
29
- afterEach(async () => {
30
- await testClient.revert({ id: snapshot })
31
- })
32
-
33
- const checkFuses = (
34
- fuses: number,
35
- expected: (keyof typeof userSettableFuseEnum)[],
36
- ) => {
37
- // eslint-disable-next-line guard-for-in
38
- for (const fuse in userSettableFuseEnum) {
39
- const active =
40
- (fuses &
41
- userSettableFuseEnum[fuse as keyof typeof userSettableFuseEnum]) >
42
- 0
43
- if (expected.includes(fuse as keyof typeof userSettableFuseEnum)) {
44
- try {
45
- expect(active).toBeTruthy()
46
- } catch {
47
- throw new Error(`${fuse} should be true but is false`)
48
- }
49
- } else if (active) {
50
- try {
51
- expect(active).toBeFalsy()
52
- } catch {
53
- throw new Error(`${fuse} should be false but is true`)
54
- }
55
- }
56
- }
57
- }
58
-
59
- const checkUnnamedFuses = (
60
- fuses: number,
61
- expected: (keyof typeof unnamedUserSettableFuses)[],
62
- ) => {
63
- // eslint-disable-next-line guard-for-in
64
- for (const fuse of unnamedUserSettableFuses) {
65
- const active = (fuses & fuse) > 0
66
- if (expected.includes(fuse as keyof typeof unnamedUserSettableFuses)) {
67
- try {
68
- expect(active).toBeTruthy()
69
- } catch {
70
- throw new Error(`${fuse} should be true but is false`)
71
- }
72
- } else if (active) {
73
- try {
74
- expect(active).toBeFalsy()
75
- } catch {
76
- throw new Error(`${fuse} should be false but is true`)
77
- }
78
- }
79
- }
80
- }
81
-
82
- const getFuses = async (name: string) => {
83
- const [, fuses] = await publicClient.readContract({
84
- abi: nameWrapperGetDataSnippet,
85
- address: getChainContractAddress({
86
- client: publicClient,
87
- contract: 'ensNameWrapper',
88
- }),
89
- functionName: 'getData',
90
- args: [BigInt(namehash(name))],
91
- })
92
- return fuses
93
- }
94
-
95
- describe('Array', () => {
96
- it('should return a setFuses transaction from a named fuse array and succeed', async () => {
97
- const tx = await setFuses(walletClient, {
98
- name: 'wrapped.eth',
99
- fuses: {
100
- named: [
101
- 'CANNOT_UNWRAP',
102
- 'CANNOT_CREATE_SUBDOMAIN',
103
- 'CANNOT_SET_TTL',
104
- 'CANNOT_APPROVE',
105
- ],
106
- },
107
- account: accounts[1],
108
- })
109
- const receipt = await waitForTransaction(tx)
110
- expect(receipt.status).toBe('success')
111
-
112
- const fuses = await getFuses('wrapped.eth')
113
- checkFuses(fuses, [
114
- 'CANNOT_UNWRAP',
115
- 'CANNOT_CREATE_SUBDOMAIN',
116
- 'CANNOT_SET_TTL',
117
- 'PARENT_CANNOT_CONTROL',
118
- 'CANNOT_APPROVE',
119
- ])
120
- })
121
- it('should return a setFuses transaction from an unnamed fuse array and succeed', async () => {
122
- const tx0 = await setFuses(walletClient, {
123
- name: 'wrapped.eth',
124
- fuses: {
125
- named: ['CANNOT_UNWRAP'],
126
- },
127
- account: accounts[1],
128
- })
129
- const tx0Receipt = await waitForTransaction(tx0)
130
- expect(tx0Receipt.status).toBe('success')
131
-
132
- const tx = await setFuses(walletClient, {
133
- name: 'wrapped.eth',
134
- fuses: {
135
- unnamed: [128, 256, 512],
136
- },
137
- account: accounts[1],
138
- })
139
- const receipt = await waitForTransaction(tx)
140
- expect(receipt.status).toBe('success')
141
-
142
- const fuses = await getFuses('wrapped.eth')
143
- checkUnnamedFuses(fuses, [128, 256, 512])
144
- })
145
- it('should return a setFuses transaction from both an unnamed and named fuse array and succeed', async () => {
146
- const tx = await setFuses(walletClient, {
147
- name: 'wrapped.eth',
148
- fuses: {
149
- named: [
150
- 'CANNOT_UNWRAP',
151
- 'CANNOT_CREATE_SUBDOMAIN',
152
- 'CANNOT_SET_TTL',
153
- 'CANNOT_APPROVE',
154
- ],
155
- unnamed: [128, 256, 512],
156
- },
157
- account: accounts[1],
158
- })
159
- const receipt = await waitForTransaction(tx)
160
- expect(receipt.status).toBe('success')
161
-
162
- const fuses = await getFuses('wrapped.eth')
163
- checkFuses(fuses, [
164
- 'CANNOT_UNWRAP',
165
- 'CANNOT_CREATE_SUBDOMAIN',
166
- 'CANNOT_SET_TTL',
167
- 'PARENT_CANNOT_CONTROL',
168
- 'CANNOT_APPROVE',
169
- ])
170
- checkUnnamedFuses(fuses, [128, 256, 512])
171
- })
172
- it('should throw an error when trying to burn a named fuse in an unnamed fuse array', async () => {
173
- await expect(
174
- setFuses(walletClient, {
175
- name: 'wrapped.eth',
176
- fuses: {
177
- unnamed: [32] as any,
178
- },
179
-
180
- account: accounts[1],
181
- }),
182
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
183
- "32 is not a valid unnamed fuse
184
-
185
- - If you are trying to set a named fuse, use the named property
186
-
187
- Version: ${getVersion()}"
188
- `)
189
- })
190
- it('should throw an error when trying to burn an unnamed fuse in a named fuse array', async () => {
191
- await expect(
192
- setFuses(walletClient, {
193
- name: 'wrapped.eth',
194
- fuses: {
195
- named: ['COOL_SWAG_FUSE'] as any,
196
- },
197
- }),
198
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
199
- "COOL_SWAG_FUSE is not a valid named fuse
200
-
201
- Version: ${getVersion()}"
202
- `)
203
- })
204
- })
205
- describe('Number', () => {
206
- it('should return a setFuses transaction from a number and succeed', async () => {
207
- const tx = await setFuses(walletClient, {
208
- name: 'wrapped.eth',
209
- fuses: {
210
- number: 113,
211
- },
212
- account: accounts[1],
213
- })
214
- expect(tx).toBeTruthy()
215
- const receipt = await waitForTransaction(tx)
216
- expect(receipt.status).toBe('success')
217
-
218
- const fuses = await getFuses('wrapped.eth')
219
- checkFuses(fuses, [
220
- 'CANNOT_UNWRAP',
221
- 'CANNOT_CREATE_SUBDOMAIN',
222
- 'CANNOT_SET_TTL',
223
- 'CANNOT_APPROVE',
224
- 'PARENT_CANNOT_CONTROL',
225
- ])
226
- })
227
- it('should throw an error if the number is too high', async () => {
228
- await expect(
229
- setFuses(walletClient, {
230
- name: 'wrapped.eth',
231
- fuses: {
232
- number: 4294967297,
233
- },
234
-
235
- account: accounts[1],
236
- }),
237
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
238
- "Fuse value out of range
239
-
240
- - Fuse value: 4294967297
241
- - Allowed range: 1-4294967296
242
-
243
- Details: Fuse number must be limited to uint32, the supplied value was too high
244
-
245
- Version: ${getVersion()}"
246
- `)
247
- })
248
- it('should throw an error if the number is too low', async () => {
249
- await expect(
250
- setFuses(walletClient, {
251
- name: 'wrapped.eth',
252
- fuses: {
253
- number: -1,
254
- },
255
-
256
- account: accounts[1],
257
- }),
258
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
259
- "Fuse value out of range
260
-
261
- - Fuse value: -1
262
- - Allowed range: 1-4294967296
263
-
264
- Details: Fuse number must be limited to uint32, the supplied value was too low
265
-
266
- Version: ${getVersion()}"
267
- `)
268
- })
269
- it('should throw an error if the number is not an integer', async () => {
270
- await expect(
271
- setFuses(walletClient, {
272
- name: 'wrapped.eth',
273
- fuses: {
274
- number: 7.5,
275
- },
276
-
277
- account: accounts[1],
278
- }),
279
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
280
- "Fuse was not an integer, which is required
281
-
282
- - Fuse value: 7.5
283
-
284
- Version: ${getVersion()}"
285
- `)
286
- })
287
- })
@@ -1,71 +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 {
5
- publicClient,
6
- testClient,
7
- waitForTransaction,
8
- walletClient,
9
- } from '../../tests/addTestContracts.js'
10
- import getName from '../public/getName.js'
11
- import setPrimaryName from './setPrimaryName.js'
12
-
13
- let snapshot: Hex
14
- let accounts: Address[]
15
-
16
- beforeAll(async () => {
17
- accounts = await walletClient.getAddresses()
18
- })
19
-
20
- beforeEach(async () => {
21
- snapshot = await testClient.snapshot()
22
- })
23
-
24
- afterEach(async () => {
25
- await testClient.revert({ id: snapshot })
26
- })
27
-
28
- it('should return a transaction for a name and set successfully', async () => {
29
- const tx = await setPrimaryName(walletClient, {
30
- name: 'test123.eth',
31
- account: accounts[1],
32
- })
33
- expect(tx).toBeTruthy()
34
- const receipt = await waitForTransaction(tx)
35
- expect(receipt.status).toBe('success')
36
-
37
- const resolvedName = await getName(publicClient, {
38
- address: accounts[1],
39
- })
40
- expect(resolvedName!.name).toBe('test123.eth')
41
- })
42
-
43
- it("should return a transaction for setting another address' name and succeed", async () => {
44
- const setApprovedForAllTx = await walletClient.writeContract({
45
- abi: registrySetApprovalForAllSnippet,
46
- functionName: 'setApprovalForAll',
47
- address: getChainContractAddress({
48
- client: walletClient,
49
- contract: 'ensRegistry',
50
- }),
51
- args: [accounts[2], true],
52
- account: accounts[1],
53
- })
54
- expect(setApprovedForAllTx).toBeTruthy()
55
- const setApprovedForAllReceipt = await waitForTransaction(setApprovedForAllTx)
56
- expect(setApprovedForAllReceipt.status).toBe('success')
57
-
58
- const tx = await setPrimaryName(walletClient, {
59
- name: 'test123.eth',
60
- address: accounts[1],
61
- account: accounts[2],
62
- })
63
- expect(tx).toBeTruthy()
64
- const receipt = await waitForTransaction(tx)
65
- expect(receipt.status).toBe('success')
66
-
67
- const resolvedName = await getName(publicClient, {
68
- address: accounts[1],
69
- })
70
- expect(resolvedName!.name).toBe('test123.eth')
71
- })
@@ -1,127 +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 { encodeAbi } from '../../utils/encoders/encodeAbi.js'
10
- import getRecords from '../public/getRecords.js'
11
- import getResolver from '../public/getResolver.js'
12
- import setRecords from './setRecords.js'
13
-
14
- let snapshot: Hex
15
- let accounts: Address[]
16
-
17
- beforeAll(async () => {
18
- accounts = await walletClient.getAddresses()
19
- })
20
-
21
- beforeEach(async () => {
22
- snapshot = await testClient.snapshot()
23
- })
24
-
25
- afterEach(async () => {
26
- await testClient.revert({ id: snapshot })
27
- })
28
-
29
- const dummyABI = [
30
- {
31
- type: 'function',
32
- name: 'supportsInterface',
33
- constant: true,
34
- stateMutability: 'view',
35
- payable: false,
36
- inputs: [
37
- {
38
- type: 'bytes4',
39
- },
40
- ],
41
- outputs: [
42
- {
43
- type: 'bool',
44
- },
45
- ],
46
- },
47
- ]
48
-
49
- it('should return a transaction to the resolver and set successfully', async () => {
50
- const tx = await setRecords(walletClient, {
51
- name: 'test123.eth',
52
- resolverAddress: (await getResolver(publicClient, {
53
- name: 'test123.eth',
54
- }))!,
55
- coins: [
56
- {
57
- coin: 'ETC_LEGACY',
58
- value: '0x42D63ae25990889E35F215bC95884039Ba354115',
59
- },
60
- ],
61
- texts: [{ key: 'foo', value: 'bar' }],
62
- abi: await encodeAbi({ encodeAs: 'json', data: dummyABI }),
63
- account: accounts[1],
64
- })
65
- expect(tx).toBeTruthy()
66
- const receipt = await waitForTransaction(tx)
67
- expect(receipt.status).toBe('success')
68
-
69
- const records = await getRecords(publicClient, {
70
- name: 'test123.eth',
71
- records: {
72
- coins: ['ETC_LEGACY'],
73
- texts: ['foo'],
74
- abi: true,
75
- },
76
- })
77
- expect(records.abi!.abi).toStrictEqual(dummyABI)
78
- expect(records.coins).toMatchInlineSnapshot(`
79
- [
80
- {
81
- "id": 61,
82
- "name": "ETC_LEGACY",
83
- "value": "0x42D63ae25990889E35F215bC95884039Ba354115",
84
- },
85
- ]
86
- `)
87
- expect(records.texts).toMatchInlineSnapshot(`
88
- [
89
- {
90
- "key": "foo",
91
- "value": "bar",
92
- },
93
- ]
94
- `)
95
- })
96
- it('should error if there are no records to set', async () => {
97
- await expect(
98
- setRecords(walletClient, {
99
- name: 'test123.eth',
100
- resolverAddress: (await getResolver(publicClient, {
101
- name: 'test123.eth',
102
- }))!,
103
-
104
- account: accounts[1],
105
- }),
106
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
107
- "No records specified
108
-
109
- Version: ${getVersion()}"
110
- `)
111
- })
112
- it('should not wrap with multicall if only setting a single record', async () => {
113
- const encodedData = setRecords.makeFunctionData(walletClient, {
114
- name: 'test123.eth',
115
- resolverAddress: (await getResolver(publicClient, {
116
- name: 'test123.eth',
117
- }))!,
118
- coins: [
119
- {
120
- coin: 'ETC_LEGACY',
121
- value: '0x42D63ae25990889E35F215bC95884039Ba354115',
122
- },
123
- ],
124
- })
125
- // 0x8b95dd71 is the function selector for setAddr(bytes32,uint256,bytes)
126
- expect(encodedData.data.startsWith('0x8b95dd71')).toBe(true)
127
- })
@@ -1,114 +0,0 @@
1
- import type { Address, Hex } from 'viem'
2
- import {
3
- publicClient,
4
- testClient,
5
- waitForTransaction,
6
- walletClient,
7
- } from '../../tests/addTestContracts.js'
8
- import getResolver from '../public/getResolver.js'
9
- import setResolver from './setResolver.js'
10
-
11
- let snapshot: Hex
12
- let accounts: Address[]
13
-
14
- beforeAll(async () => {
15
- accounts = await walletClient.getAddresses()
16
- })
17
-
18
- beforeEach(async () => {
19
- snapshot = await testClient.snapshot()
20
- })
21
-
22
- afterEach(async () => {
23
- await testClient.revert({ id: snapshot })
24
- })
25
-
26
- it('should return a setResolver transaction to the registry and succeed', async () => {
27
- const tx = await setResolver(walletClient, {
28
- name: 'test123.eth',
29
- contract: 'registry',
30
- resolverAddress: '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC',
31
- account: accounts[1],
32
- })
33
- expect(tx).toBeTruthy()
34
- const receipt = await waitForTransaction(tx)
35
- expect(receipt.status).toBe('success')
36
-
37
- const resolver = await getResolver(publicClient, {
38
- name: 'test123.eth',
39
- })
40
- expect(resolver).toBe('0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC')
41
- })
42
- it('should return a setResolver transaction to the namewrapper and succeed', async () => {
43
- const tx = await setResolver(walletClient, {
44
- name: 'wrapped.eth',
45
- contract: 'nameWrapper',
46
- resolverAddress: '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC',
47
- account: accounts[1],
48
- })
49
- expect(tx).toBeTruthy()
50
- const receipt = await waitForTransaction(tx)
51
- expect(receipt.status).toBe('success')
52
-
53
- const resolver = await getResolver(publicClient, {
54
- name: 'wrapped.eth',
55
- })
56
- expect(resolver).toBe('0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC')
57
- })
58
- it('should error if unknown contract', async () => {
59
- await expect(
60
- setResolver(walletClient, {
61
- name: 'test123.eth',
62
- contract: 'random' as any,
63
- resolverAddress: '0xAEfF4f4d8e2cB51854BEa2244B3C5Fb36b41C7fC',
64
- account: accounts[1],
65
- }),
66
- ).rejects.toThrow('Unknown contract: random')
67
- })
68
-
69
- // it('should return a transaction for a name and set successfully', async () => {
70
- // const tx = await setName(walletClient, {
71
- // name: 'test123.eth',
72
- // account: accounts[1],
73
- // })
74
- // expect(tx).toBeTruthy()
75
- // const receipt = await publicClient.waitForTransactionReceipt({ hash: tx })
76
- // expect(receipt.status).toBe('success')
77
-
78
- // const resolvedName = await getName(publicClient, {
79
- // address: accounts[1],
80
- // })
81
- // expect(resolvedName!.name).toBe('test123.eth')
82
- // })
83
-
84
- // it("should return a transaction for setting another address' name and succeed", async () => {
85
- // const setApprovedForAllTx = await walletClient.writeContract({
86
- // abi: setApprovalForAllSnippet,
87
- // functionName: 'setApprovalForAll',
88
- // address: getChainContractAddress({
89
- // client: walletClient,
90
- // contract: 'ensRegistry',
91
- // }),
92
- // args: [accounts[2], true],
93
- // account: accounts[1],
94
- // })
95
- // expect(setApprovedForAllTx).toBeTruthy()
96
- // const setApprovedForAllReceipt = await publicClient.waitForTransactionReceipt(
97
- // { hash: setApprovedForAllTx },
98
- // )
99
- // expect(setApprovedForAllReceipt.status).toBe('success')
100
-
101
- // const tx = await setName(walletClient, {
102
- // name: 'test123.eth',
103
- // address: accounts[1],
104
- // account: accounts[2],
105
- // })
106
- // expect(tx).toBeTruthy()
107
- // const receipt = await publicClient.waitForTransactionReceipt({ hash: tx })
108
- // expect(receipt.status).toBe('success')
109
-
110
- // const resolvedName = await getName(publicClient, {
111
- // address: accounts[1],
112
- // })
113
- // expect(resolvedName!.name).toBe('test123.eth')
114
- // })
@@ -1,67 +0,0 @@
1
- import type { Address, Hex } from 'viem'
2
- import {
3
- publicClient,
4
- testClient,
5
- waitForTransaction,
6
- walletClient,
7
- } from '../../tests/addTestContracts.js'
8
- import getResolver from '../public/getResolver.js'
9
- import getText from '../public/getTextRecord.js'
10
- import setTextRecord from './setTextRecord.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 text record to be set', async () => {
28
- const tx = await setTextRecord(walletClient, {
29
- name: 'test123.eth',
30
- key: 'foo',
31
- value: 'bar',
32
- resolverAddress: (await getResolver(publicClient, {
33
- name: 'test123.eth',
34
- }))!,
35
- account: accounts[1],
36
- })
37
- expect(tx).toBeTruthy()
38
- const receipt = await waitForTransaction(tx)
39
- expect(receipt.status).toBe('success')
40
-
41
- const response = await getText(publicClient, {
42
- name: 'test123.eth',
43
- key: 'foo',
44
- })
45
- expect(response).toBe('bar')
46
- })
47
-
48
- it('should allow a text record to be set to blank', async () => {
49
- const tx = await setTextRecord(walletClient, {
50
- name: 'test123.eth',
51
- key: 'url',
52
- value: null,
53
- resolverAddress: (await getResolver(publicClient, {
54
- name: 'test123.eth',
55
- }))!,
56
- account: accounts[1],
57
- })
58
- expect(tx).toBeTruthy()
59
- const receipt = await waitForTransaction(tx)
60
- expect(receipt.status).toBe('success')
61
-
62
- const response = await getText(publicClient, {
63
- name: 'test123.eth',
64
- key: 'url',
65
- })
66
- expect(response).toBeNull()
67
- })