viem 0.0.1-alpha.27 → 0.0.1-alpha.29
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.
- package/dist/chain-4d46a747.d.ts +543 -0
- package/dist/{chain-b0cfb141.d.ts → chain-c7c44165.d.ts} +1 -1
- package/dist/chains.d.ts +5 -3
- package/dist/chains.js +46 -46
- package/dist/chains.mjs +1 -1
- package/dist/{chunk-JY7JGKSA.js → chunk-4VQKZYE2.js} +219 -157
- package/dist/chunk-4VQKZYE2.js.map +1 -0
- package/dist/{chunk-2DSFM32P.js → chunk-CKYH337I.js} +15 -15
- package/dist/{chunk-2DSFM32P.js.map → chunk-CKYH337I.js.map} +1 -1
- package/dist/{chunk-W7KWIGWO.js → chunk-EYORBAD4.js} +45 -44
- package/dist/chunk-EYORBAD4.js.map +1 -0
- package/dist/{chunk-LF6P33WQ.mjs → chunk-HPUQL3IM.mjs} +3 -3
- package/dist/chunk-HPUQL3IM.mjs.map +1 -0
- package/dist/chunk-OJ7H3CQF.js +265 -0
- package/dist/chunk-OJ7H3CQF.js.map +1 -0
- package/dist/chunk-Q67VUTW3.mjs +210 -0
- package/dist/chunk-Q67VUTW3.mjs.map +1 -0
- package/dist/{chunk-AKGXRZDN.mjs → chunk-RR4MGS6O.mjs} +27 -26
- package/dist/chunk-RR4MGS6O.mjs.map +1 -0
- package/dist/chunk-S252SZEL.mjs +265 -0
- package/dist/chunk-S252SZEL.mjs.map +1 -0
- package/dist/chunk-SEIPUKZE.js +210 -0
- package/dist/chunk-SEIPUKZE.js.map +1 -0
- package/dist/{chunk-BJJH7RYH.mjs → chunk-TQC7KZ24.mjs} +164 -102
- package/dist/chunk-TQC7KZ24.mjs.map +1 -0
- package/dist/contract.d.ts +12 -128
- package/dist/contract.js +6 -4
- package/dist/contract.mjs +5 -3
- package/dist/{createClient-6689596e.d.ts → createClient-5d5c14d6.d.ts} +5 -3
- package/dist/createPublicClient-2b4afeac.d.ts +629 -0
- package/dist/{eip1193-617a05ae.d.ts → eip1193-f09a55af.d.ts} +2 -2
- package/dist/ens.d.ts +10 -68
- package/dist/ens.js +5 -199
- package/dist/ens.js.map +1 -1
- package/dist/ens.mjs +7 -201
- package/dist/ens.mjs.map +1 -1
- package/dist/formatAbiItem-d231fef2.d.ts +14 -0
- package/dist/{getAbiItem-d2e8bd76.d.ts → getAbiItem-0e085959.d.ts} +15 -15
- package/dist/index.d.ts +22 -13
- package/dist/index.js +368 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +358 -16
- package/dist/index.mjs.map +1 -1
- package/dist/namehash-88f4639d.d.ts +22 -0
- package/dist/parseGwei-4d0b0d73.d.ts +344 -0
- package/dist/public.d.ts +11 -334
- package/dist/public.js +5 -3
- package/dist/public.mjs +4 -2
- package/dist/test-b9208949.d.ts +213 -0
- package/dist/test.d.ts +8 -149
- package/dist/test.js +20 -222
- package/dist/test.js.map +1 -1
- package/dist/test.mjs +30 -232
- package/dist/test.mjs.map +1 -1
- package/dist/{transactionReceipt-44dbf122.d.ts → transactionReceipt-84fc92e1.d.ts} +1 -1
- package/dist/{transactionRequest-f437b4ba.d.ts → transactionRequest-44c539b4.d.ts} +1 -1
- package/dist/utils/index.d.ts +12 -238
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.mjs +1 -1
- package/dist/wallet-9b1c6905.d.ts +104 -0
- package/dist/wallet.d.ts +7 -41
- package/dist/wallet.js +3 -3
- package/dist/wallet.mjs +2 -2
- package/dist/window.d.ts +4 -2
- package/package.json +1 -1
- package/dist/call-3476b8ee.d.ts +0 -22
- package/dist/chain-42de87e5.d.ts +0 -359
- package/dist/chunk-AKGXRZDN.mjs.map +0 -1
- package/dist/chunk-BJJH7RYH.mjs.map +0 -1
- package/dist/chunk-JY7JGKSA.js.map +0 -1
- package/dist/chunk-LF6P33WQ.mjs.map +0 -1
- package/dist/chunk-W7KWIGWO.js.map +0 -1
- package/dist/contract-9dd2f98b.d.ts +0 -166
- package/dist/createPublicClient-fd558574.d.ts +0 -19
- package/dist/createTestClient-bc1d9028.d.ts +0 -34
- package/dist/createWalletClient-4df88244.d.ts +0 -30
- package/dist/decodeErrorResult-ac835649.d.ts +0 -16
- package/dist/readContract-c460f23a.d.ts +0 -10
- package/dist/rpc-8c10fc98.d.ts +0 -119
- package/dist/sendTransaction-7ce442c0.d.ts +0 -12
- package/dist/watchEvent-569c9976.d.ts +0 -41
package/dist/ens.d.ts
CHANGED
@@ -1,72 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
import
|
1
|
+
export { q as GetEnsAddressArgs, t as GetEnsNameArgs, u as getEnsAddress, v as getEnsName } from './createPublicClient-2b4afeac.js';
|
2
|
+
export { l as labelhash, n as namehash } from './namehash-88f4639d.js';
|
3
|
+
import './eip1193-f09a55af.js';
|
4
|
+
import './chain-4d46a747.js';
|
4
5
|
import '@wagmi/chains';
|
5
|
-
import './eip1193-617a05ae.js';
|
6
|
-
import './createClient-6689596e.js';
|
7
6
|
import 'abitype';
|
8
|
-
import '
|
9
|
-
import './
|
10
|
-
import './transactionRequest-
|
11
|
-
|
12
|
-
|
13
|
-
/** ENS name to get address. */
|
14
|
-
name: string;
|
15
|
-
/** Address of ENS Universal Resolver Contract */
|
16
|
-
universalResolverAddress?: Address;
|
17
|
-
}>;
|
18
|
-
/**
|
19
|
-
* @description Gets address for ENS name.
|
20
|
-
*
|
21
|
-
* - Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.
|
22
|
-
*
|
23
|
-
* @example
|
24
|
-
* const ensAddress = await getEnsAddress(publicClient, {
|
25
|
-
* name: 'wagmi-dev.eth',
|
26
|
-
* })
|
27
|
-
* // '0xd2135CfB216b74109775236E36d4b433F1DF507B'
|
28
|
-
*/
|
29
|
-
declare function getEnsAddress(client: PublicClient, { blockNumber, blockTag, name, universalResolverAddress: universalResolverAddress_, }: GetEnsAddressArgs): Promise<`0x${string}`>;
|
30
|
-
|
31
|
-
type GetEnsNameArgs = Prettify<Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {
|
32
|
-
/** Address to get ENS name for. */
|
33
|
-
address: Address;
|
34
|
-
/** Address of ENS Universal Resolver Contract. */
|
35
|
-
universalResolverAddress?: Address;
|
36
|
-
}>;
|
37
|
-
/**
|
38
|
-
* @description Gets primary name for specified address.
|
39
|
-
*
|
40
|
-
* - Calls `reverse(bytes)` on ENS Universal Resolver Contract.
|
41
|
-
*
|
42
|
-
* @example
|
43
|
-
* const ensName = await getEnsName(publicClient, {
|
44
|
-
* address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',
|
45
|
-
* })
|
46
|
-
* // 'wagmi-dev.eth'
|
47
|
-
*/
|
48
|
-
declare function getEnsName(client: PublicClient, { address, blockNumber, blockTag, universalResolverAddress: universalResolverAddress_, }: GetEnsNameArgs): Promise<string | null>;
|
49
|
-
|
50
|
-
/**
|
51
|
-
* @description Hashes ENS label
|
52
|
-
*
|
53
|
-
* @example
|
54
|
-
* labelhash('eth')
|
55
|
-
* '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'
|
56
|
-
*/
|
57
|
-
declare function labelhash(label: string): `0x${string}`;
|
58
|
-
|
59
|
-
/**
|
60
|
-
* @description Hashes ENS name
|
61
|
-
*
|
62
|
-
* @example
|
63
|
-
* namehash('wagmi-dev.eth')
|
64
|
-
* '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'
|
65
|
-
*
|
66
|
-
* @see https://eips.ethereum.org/EIPS/eip-137
|
67
|
-
* @see https://docs.ens.domains/contract-api-reference/name-processing#hashing-names
|
68
|
-
*/
|
69
|
-
declare function namehash(name: string): `0x${string}`;
|
7
|
+
import 'ethers@6/types/providers';
|
8
|
+
import './createClient-5d5c14d6.js';
|
9
|
+
import './transactionRequest-44c539b4.js';
|
10
|
+
import './wallet-9b1c6905.js';
|
11
|
+
import './transactionReceipt-84fc92e1.js';
|
70
12
|
|
71
13
|
/**
|
72
14
|
* @description Normalizes ENS name
|
@@ -79,4 +21,4 @@ declare function namehash(name: string): `0x${string}`;
|
|
79
21
|
*/
|
80
22
|
declare function normalize(name: string): string;
|
81
23
|
|
82
|
-
export {
|
24
|
+
export { normalize };
|
package/dist/ens.js
CHANGED
@@ -1,19 +1,11 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
2
2
|
|
3
|
-
var _chunkJY7JGKSAjs = require('./chunk-JY7JGKSA.js');
|
4
3
|
|
5
4
|
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
var _chunkW7KWIGWOjs = require('./chunk-W7KWIGWO.js');
|
6
|
+
var _chunkSEIPUKZEjs = require('./chunk-SEIPUKZE.js');
|
7
|
+
require('./chunk-4VQKZYE2.js');
|
8
|
+
require('./chunk-EYORBAD4.js');
|
17
9
|
|
18
10
|
// src/utils/ens/normalize.ts
|
19
11
|
var _idnauts46hx = require('idna-uts46-hx');
|
@@ -21,196 +13,10 @@ function normalize(name) {
|
|
21
13
|
return _idnauts46hx.toUnicode.call(void 0, name, { useStd3ASCII: true });
|
22
14
|
}
|
23
15
|
|
24
|
-
// src/utils/ens/labelhash.ts
|
25
|
-
function labelhash(label) {
|
26
|
-
let result = new Uint8Array(32).fill(0);
|
27
|
-
if (!label)
|
28
|
-
return _chunkW7KWIGWOjs.bytesToHex.call(void 0, result);
|
29
|
-
return _chunkW7KWIGWOjs.keccak256.call(void 0, _chunkW7KWIGWOjs.stringToBytes.call(void 0, normalize(label)));
|
30
|
-
}
|
31
|
-
|
32
|
-
// src/utils/ens/namehash.ts
|
33
|
-
function namehash(name) {
|
34
|
-
let result = new Uint8Array(32).fill(0);
|
35
|
-
if (!name)
|
36
|
-
return _chunkW7KWIGWOjs.bytesToHex.call(void 0, result);
|
37
|
-
const labels = normalize(name).split(".");
|
38
|
-
for (let i = labels.length - 1; i >= 0; i -= 1) {
|
39
|
-
const hashed = _chunkW7KWIGWOjs.keccak256.call(void 0, _chunkW7KWIGWOjs.stringToBytes.call(void 0, labels[i]), "bytes");
|
40
|
-
result = _chunkW7KWIGWOjs.keccak256.call(void 0, _chunkW7KWIGWOjs.concat.call(void 0, [result, hashed]), "bytes");
|
41
|
-
}
|
42
|
-
return _chunkW7KWIGWOjs.bytesToHex.call(void 0, result);
|
43
|
-
}
|
44
|
-
|
45
|
-
// src/utils/ens/packetToBytes.ts
|
46
|
-
function packetToBytes(packet) {
|
47
|
-
function length(value2) {
|
48
|
-
if (value2 === "." || value2 === "..")
|
49
|
-
return 1;
|
50
|
-
return _chunkW7KWIGWOjs.toBytes.call(void 0, value2.replace(/^\.|\.$/gm, "")).length + 2;
|
51
|
-
}
|
52
|
-
const bytes = new Uint8Array(length(packet));
|
53
|
-
const value = packet.replace(/^\.|\.$/gm, "");
|
54
|
-
if (!value.length)
|
55
|
-
return bytes;
|
56
|
-
let offset = 0;
|
57
|
-
const list = value.split(".");
|
58
|
-
for (let i = 0; i < list.length; i++) {
|
59
|
-
const encoded = _chunkW7KWIGWOjs.toBytes.call(void 0, list[i]);
|
60
|
-
bytes[offset] = encoded.length;
|
61
|
-
bytes.set(encoded, offset + 1);
|
62
|
-
offset += encoded.length + 1;
|
63
|
-
}
|
64
|
-
return bytes;
|
65
|
-
}
|
66
|
-
|
67
|
-
// src/actions/ens/getEnsAddress.ts
|
68
|
-
async function getEnsAddress(client, {
|
69
|
-
blockNumber,
|
70
|
-
blockTag,
|
71
|
-
name,
|
72
|
-
universalResolverAddress: universalResolverAddress_
|
73
|
-
}) {
|
74
|
-
let universalResolverAddress = universalResolverAddress_;
|
75
|
-
if (!universalResolverAddress) {
|
76
|
-
if (!client.chain)
|
77
|
-
throw new Error(
|
78
|
-
"client chain not configured. universalResolverAddress is required."
|
79
|
-
);
|
80
|
-
const contract = _optionalChain([client, 'access', _ => _.chain, 'optionalAccess', _2 => _2.contracts, 'optionalAccess', _3 => _3.ensUniversalResolver]);
|
81
|
-
if (!contract)
|
82
|
-
throw new (0, _chunkW7KWIGWOjs.ChainDoesNotSupportContract)({
|
83
|
-
chain: client.chain,
|
84
|
-
contract: { name: "ensUniversalResolver" }
|
85
|
-
});
|
86
|
-
if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
|
87
|
-
throw new (0, _chunkW7KWIGWOjs.ChainDoesNotSupportContract)({
|
88
|
-
blockNumber,
|
89
|
-
chain: client.chain,
|
90
|
-
contract: {
|
91
|
-
name: "ensUniversalResolver",
|
92
|
-
blockCreated: contract.blockCreated
|
93
|
-
}
|
94
|
-
});
|
95
|
-
universalResolverAddress = contract.address;
|
96
|
-
}
|
97
|
-
const res = await _chunkJY7JGKSAjs.readContract.call(void 0, client, {
|
98
|
-
address: universalResolverAddress,
|
99
|
-
abi: [
|
100
|
-
{
|
101
|
-
name: "resolve",
|
102
|
-
type: "function",
|
103
|
-
stateMutability: "view",
|
104
|
-
inputs: [
|
105
|
-
{ name: "name", type: "bytes" },
|
106
|
-
{ name: "data", type: "bytes" }
|
107
|
-
],
|
108
|
-
outputs: [
|
109
|
-
{ name: "", type: "bytes" },
|
110
|
-
{ name: "address", type: "address" }
|
111
|
-
]
|
112
|
-
}
|
113
|
-
],
|
114
|
-
functionName: "resolve",
|
115
|
-
args: [
|
116
|
-
_chunkW7KWIGWOjs.toHex.call(void 0, packetToBytes(name)),
|
117
|
-
_chunkW7KWIGWOjs.encodeFunctionData.call(void 0, {
|
118
|
-
abi: [
|
119
|
-
{
|
120
|
-
name: "addr",
|
121
|
-
type: "function",
|
122
|
-
stateMutability: "view",
|
123
|
-
inputs: [{ name: "name", type: "bytes32" }],
|
124
|
-
outputs: []
|
125
|
-
}
|
126
|
-
],
|
127
|
-
functionName: "addr",
|
128
|
-
args: [namehash(name)]
|
129
|
-
})
|
130
|
-
],
|
131
|
-
blockNumber,
|
132
|
-
blockTag
|
133
|
-
});
|
134
|
-
return _chunkW7KWIGWOjs.decodeFunctionResult.call(void 0, {
|
135
|
-
abi: [
|
136
|
-
{
|
137
|
-
name: "addr",
|
138
|
-
type: "function",
|
139
|
-
stateMutability: "view",
|
140
|
-
inputs: [],
|
141
|
-
outputs: [{ name: "name", type: "address" }]
|
142
|
-
}
|
143
|
-
],
|
144
|
-
functionName: "addr",
|
145
|
-
data: res[0]
|
146
|
-
});
|
147
|
-
}
|
148
|
-
|
149
|
-
// src/actions/ens/getEnsName.ts
|
150
|
-
async function getEnsName(client, {
|
151
|
-
address,
|
152
|
-
blockNumber,
|
153
|
-
blockTag,
|
154
|
-
universalResolverAddress: universalResolverAddress_
|
155
|
-
}) {
|
156
|
-
let universalResolverAddress = universalResolverAddress_;
|
157
|
-
if (!universalResolverAddress) {
|
158
|
-
if (!client.chain)
|
159
|
-
throw new Error(
|
160
|
-
"client chain not configured. universalResolverAddress is required."
|
161
|
-
);
|
162
|
-
const contract = _optionalChain([client, 'access', _4 => _4.chain, 'optionalAccess', _5 => _5.contracts, 'optionalAccess', _6 => _6.ensUniversalResolver]);
|
163
|
-
if (!contract)
|
164
|
-
throw new (0, _chunkW7KWIGWOjs.ChainDoesNotSupportContract)({
|
165
|
-
chain: client.chain,
|
166
|
-
contract: { name: "ensUniversalResolver" }
|
167
|
-
});
|
168
|
-
if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
|
169
|
-
throw new (0, _chunkW7KWIGWOjs.ChainDoesNotSupportContract)({
|
170
|
-
blockNumber,
|
171
|
-
chain: client.chain,
|
172
|
-
contract: {
|
173
|
-
name: "ensUniversalResolver",
|
174
|
-
blockCreated: contract.blockCreated
|
175
|
-
}
|
176
|
-
});
|
177
|
-
universalResolverAddress = contract.address;
|
178
|
-
}
|
179
|
-
const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;
|
180
|
-
try {
|
181
|
-
const res = await _chunkJY7JGKSAjs.readContract.call(void 0, client, {
|
182
|
-
address: universalResolverAddress,
|
183
|
-
abi: [
|
184
|
-
{
|
185
|
-
name: "reverse",
|
186
|
-
type: "function",
|
187
|
-
stateMutability: "view",
|
188
|
-
inputs: [{ type: "bytes", name: "reverseName" }],
|
189
|
-
outputs: [
|
190
|
-
{ type: "string", name: "resolvedName" },
|
191
|
-
{ type: "address", name: "resolvedAddress" },
|
192
|
-
{ type: "address", name: "reverseResolver" },
|
193
|
-
{ type: "address", name: "resolver" }
|
194
|
-
]
|
195
|
-
}
|
196
|
-
],
|
197
|
-
functionName: "reverse",
|
198
|
-
args: [_chunkW7KWIGWOjs.toHex.call(void 0, packetToBytes(reverseNode))],
|
199
|
-
blockNumber,
|
200
|
-
blockTag
|
201
|
-
});
|
202
|
-
return res[0];
|
203
|
-
} catch (error) {
|
204
|
-
if (error instanceof _chunkW7KWIGWOjs.ContractFunctionExecutionError && error.cause.reason === _chunkW7KWIGWOjs.panicReasons[50])
|
205
|
-
return null;
|
206
|
-
throw error;
|
207
|
-
}
|
208
|
-
}
|
209
|
-
|
210
16
|
|
211
17
|
|
212
18
|
|
213
19
|
|
214
20
|
|
215
|
-
exports.getEnsAddress = getEnsAddress; exports.getEnsName = getEnsName; exports.labelhash = labelhash; exports.namehash = namehash; exports.normalize = normalize;
|
21
|
+
exports.getEnsAddress = _chunkSEIPUKZEjs.getEnsAddress; exports.getEnsName = _chunkSEIPUKZEjs.getEnsName; exports.labelhash = _chunkSEIPUKZEjs.labelhash; exports.namehash = _chunkSEIPUKZEjs.namehash; exports.normalize = normalize;
|
216
22
|
//# sourceMappingURL=ens.js.map
|
package/dist/ens.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/utils/ens/normalize.ts","../src/utils/ens/labelhash.ts","../src/utils/ens/namehash.ts","../src/utils/ens/packetToBytes.ts","../src/actions/ens/getEnsAddress.ts","../src/actions/ens/getEnsName.ts"],"names":["value"],"mappings":"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","sourcesContent":["import { toUnicode } from 'idna-uts46-hx'\n\n/**\n * @description Normalizes ENS name\n *\n * @example\n * normalize('wagmi-dev.eth')\n * 'wagmi-dev.eth'\n *\n * @see https://docs.ens.domains/contract-api-reference/name-processing#normalising-names\n */\nexport function normalize(name: string) {\n return toUnicode(name, { useStd3ASCII: true })\n}\n","import { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\nimport { normalize } from './normalize'\n\n/**\n * @description Hashes ENS label\n *\n * @example\n * labelhash('eth')\n * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'\n */\nexport function labelhash(label: string) {\n let result = new Uint8Array(32).fill(0)\n if (!label) return bytesToHex(result)\n return keccak256(stringToBytes(normalize(label)))\n}\n","import { concat } from '../data'\nimport { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\nimport { normalize } from './normalize'\n\n/**\n * @description Hashes ENS name\n *\n * @example\n * namehash('wagmi-dev.eth')\n * '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'\n *\n * @see https://eips.ethereum.org/EIPS/eip-137\n * @see https://docs.ens.domains/contract-api-reference/name-processing#hashing-names\n */\nexport function namehash(name: string) {\n let result = new Uint8Array(32).fill(0)\n if (!name) return bytesToHex(result)\n\n const labels = normalize(name).split('.')\n // Iterate in reverse order building up hash\n for (let i = labels.length - 1; i >= 0; i -= 1) {\n const hashed = keccak256(stringToBytes(labels[i]), 'bytes')\n result = keccak256(concat([result, hashed]), 'bytes')\n }\n\n return bytesToHex(result)\n}\n","// Adapted from https://github.com/mafintosh/dns-packet\nimport { ByteArray } from '../../types'\nimport { toBytes } from '../encoding'\n\n/*\n * @description Encodes a DNS packet into a ByteArray containing a UDP payload.\n */\nexport function packetToBytes(packet: string): ByteArray {\n function length(value: string) {\n if (value === '.' || value === '..') return 1\n return toBytes(value.replace(/^\\.|\\.$/gm, '')).length + 2\n }\n\n const bytes = new Uint8Array(length(packet))\n // strip leading and trailing `.`\n const value = packet.replace(/^\\.|\\.$/gm, '')\n if (!value.length) return bytes\n\n let offset = 0\n const list = value.split('.')\n for (let i = 0; i < list.length; i++) {\n const encoded = toBytes(list[i])\n bytes[offset] = encoded.length\n bytes.set(encoded, offset + 1)\n offset += encoded.length + 1\n }\n\n return bytes\n}\n","import { PublicClient } from '../../clients'\nimport { ChainDoesNotSupportContract } from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { decodeFunctionResult, encodeFunctionData, toHex } from '../../utils'\nimport { namehash, packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractArgs } from '../public'\n\nexport type GetEnsAddressArgs = Prettify<\n Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {\n /** ENS name to get address. */\n name: string\n /** Address of ENS Universal Resolver Contract */\n universalResolverAddress?: Address\n }\n>\n\n/**\n * @description Gets address for ENS name.\n *\n * - Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * @example\n * const ensAddress = await getEnsAddress(publicClient, {\n * name: 'wagmi-dev.eth',\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress(\n client: PublicClient,\n {\n blockNumber,\n blockTag,\n name,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsAddressArgs,\n) {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n ],\n functionName: 'resolve',\n args: [\n toHex(packetToBytes(name)),\n encodeFunctionData({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [],\n },\n ],\n functionName: 'addr',\n args: [namehash(name)],\n }),\n ],\n blockNumber,\n blockTag,\n })\n return decodeFunctionResult({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ name: 'name', type: 'address' }],\n },\n ],\n functionName: 'addr',\n data: res[0],\n })\n}\n","import { PublicClient } from '../../clients'\nimport { panicReasons } from '../../constants'\nimport {\n ChainDoesNotSupportContract,\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n} from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { toHex } from '../../utils'\nimport { packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractArgs } from '../public'\n\nexport type GetEnsNameArgs = Prettify<\n Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {\n /** Address to get ENS name for. */\n address: Address\n /** Address of ENS Universal Resolver Contract. */\n universalResolverAddress?: Address\n }\n>\n\n/**\n * @description Gets primary name for specified address.\n *\n * - Calls `reverse(bytes)` on ENS Universal Resolver Contract.\n *\n * @example\n * const ensName = await getEnsName(publicClient, {\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wagmi-dev.eth'\n */\nexport async function getEnsName(\n client: PublicClient,\n {\n address,\n blockNumber,\n blockTag,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsNameArgs,\n) {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`\n try {\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n ],\n functionName: 'reverse',\n args: [toHex(packetToBytes(reverseNode))],\n blockNumber,\n blockTag,\n })\n return res[0]\n } catch (error) {\n if (\n error instanceof ContractFunctionExecutionError &&\n (error.cause as ContractFunctionRevertedError).reason === panicReasons[50]\n )\n // No primary name set for address.\n return null\n throw error\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/utils/ens/normalize.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,SAAS,iBAAiB;AAWnB,SAAS,UAAU,MAAc;AACtC,SAAO,UAAU,MAAM,EAAE,cAAc,KAAK,CAAC;AAC/C","sourcesContent":["import { toUnicode } from 'idna-uts46-hx'\n\n/**\n * @description Normalizes ENS name\n *\n * @example\n * normalize('wagmi-dev.eth')\n * 'wagmi-dev.eth'\n *\n * @see https://docs.ens.domains/contract-api-reference/name-processing#normalising-names\n */\nexport function normalize(name: string) {\n return toUnicode(name, { useStd3ASCII: true })\n}\n"]}
|
package/dist/ens.mjs
CHANGED
@@ -1,211 +1,17 @@
|
|
1
1
|
import {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
decodeFunctionResult,
|
10
|
-
encodeFunctionData,
|
11
|
-
keccak256,
|
12
|
-
panicReasons,
|
13
|
-
stringToBytes,
|
14
|
-
toBytes,
|
15
|
-
toHex
|
16
|
-
} from "./chunk-AKGXRZDN.mjs";
|
2
|
+
getEnsAddress,
|
3
|
+
getEnsName,
|
4
|
+
labelhash,
|
5
|
+
namehash
|
6
|
+
} from "./chunk-Q67VUTW3.mjs";
|
7
|
+
import "./chunk-TQC7KZ24.mjs";
|
8
|
+
import "./chunk-RR4MGS6O.mjs";
|
17
9
|
|
18
10
|
// src/utils/ens/normalize.ts
|
19
11
|
import { toUnicode } from "idna-uts46-hx";
|
20
12
|
function normalize(name) {
|
21
13
|
return toUnicode(name, { useStd3ASCII: true });
|
22
14
|
}
|
23
|
-
|
24
|
-
// src/utils/ens/labelhash.ts
|
25
|
-
function labelhash(label) {
|
26
|
-
let result = new Uint8Array(32).fill(0);
|
27
|
-
if (!label)
|
28
|
-
return bytesToHex(result);
|
29
|
-
return keccak256(stringToBytes(normalize(label)));
|
30
|
-
}
|
31
|
-
|
32
|
-
// src/utils/ens/namehash.ts
|
33
|
-
function namehash(name) {
|
34
|
-
let result = new Uint8Array(32).fill(0);
|
35
|
-
if (!name)
|
36
|
-
return bytesToHex(result);
|
37
|
-
const labels = normalize(name).split(".");
|
38
|
-
for (let i = labels.length - 1; i >= 0; i -= 1) {
|
39
|
-
const hashed = keccak256(stringToBytes(labels[i]), "bytes");
|
40
|
-
result = keccak256(concat([result, hashed]), "bytes");
|
41
|
-
}
|
42
|
-
return bytesToHex(result);
|
43
|
-
}
|
44
|
-
|
45
|
-
// src/utils/ens/packetToBytes.ts
|
46
|
-
function packetToBytes(packet) {
|
47
|
-
function length(value2) {
|
48
|
-
if (value2 === "." || value2 === "..")
|
49
|
-
return 1;
|
50
|
-
return toBytes(value2.replace(/^\.|\.$/gm, "")).length + 2;
|
51
|
-
}
|
52
|
-
const bytes = new Uint8Array(length(packet));
|
53
|
-
const value = packet.replace(/^\.|\.$/gm, "");
|
54
|
-
if (!value.length)
|
55
|
-
return bytes;
|
56
|
-
let offset = 0;
|
57
|
-
const list = value.split(".");
|
58
|
-
for (let i = 0; i < list.length; i++) {
|
59
|
-
const encoded = toBytes(list[i]);
|
60
|
-
bytes[offset] = encoded.length;
|
61
|
-
bytes.set(encoded, offset + 1);
|
62
|
-
offset += encoded.length + 1;
|
63
|
-
}
|
64
|
-
return bytes;
|
65
|
-
}
|
66
|
-
|
67
|
-
// src/actions/ens/getEnsAddress.ts
|
68
|
-
async function getEnsAddress(client, {
|
69
|
-
blockNumber,
|
70
|
-
blockTag,
|
71
|
-
name,
|
72
|
-
universalResolverAddress: universalResolverAddress_
|
73
|
-
}) {
|
74
|
-
let universalResolverAddress = universalResolverAddress_;
|
75
|
-
if (!universalResolverAddress) {
|
76
|
-
if (!client.chain)
|
77
|
-
throw new Error(
|
78
|
-
"client chain not configured. universalResolverAddress is required."
|
79
|
-
);
|
80
|
-
const contract = client.chain?.contracts?.ensUniversalResolver;
|
81
|
-
if (!contract)
|
82
|
-
throw new ChainDoesNotSupportContract({
|
83
|
-
chain: client.chain,
|
84
|
-
contract: { name: "ensUniversalResolver" }
|
85
|
-
});
|
86
|
-
if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
|
87
|
-
throw new ChainDoesNotSupportContract({
|
88
|
-
blockNumber,
|
89
|
-
chain: client.chain,
|
90
|
-
contract: {
|
91
|
-
name: "ensUniversalResolver",
|
92
|
-
blockCreated: contract.blockCreated
|
93
|
-
}
|
94
|
-
});
|
95
|
-
universalResolverAddress = contract.address;
|
96
|
-
}
|
97
|
-
const res = await readContract(client, {
|
98
|
-
address: universalResolverAddress,
|
99
|
-
abi: [
|
100
|
-
{
|
101
|
-
name: "resolve",
|
102
|
-
type: "function",
|
103
|
-
stateMutability: "view",
|
104
|
-
inputs: [
|
105
|
-
{ name: "name", type: "bytes" },
|
106
|
-
{ name: "data", type: "bytes" }
|
107
|
-
],
|
108
|
-
outputs: [
|
109
|
-
{ name: "", type: "bytes" },
|
110
|
-
{ name: "address", type: "address" }
|
111
|
-
]
|
112
|
-
}
|
113
|
-
],
|
114
|
-
functionName: "resolve",
|
115
|
-
args: [
|
116
|
-
toHex(packetToBytes(name)),
|
117
|
-
encodeFunctionData({
|
118
|
-
abi: [
|
119
|
-
{
|
120
|
-
name: "addr",
|
121
|
-
type: "function",
|
122
|
-
stateMutability: "view",
|
123
|
-
inputs: [{ name: "name", type: "bytes32" }],
|
124
|
-
outputs: []
|
125
|
-
}
|
126
|
-
],
|
127
|
-
functionName: "addr",
|
128
|
-
args: [namehash(name)]
|
129
|
-
})
|
130
|
-
],
|
131
|
-
blockNumber,
|
132
|
-
blockTag
|
133
|
-
});
|
134
|
-
return decodeFunctionResult({
|
135
|
-
abi: [
|
136
|
-
{
|
137
|
-
name: "addr",
|
138
|
-
type: "function",
|
139
|
-
stateMutability: "view",
|
140
|
-
inputs: [],
|
141
|
-
outputs: [{ name: "name", type: "address" }]
|
142
|
-
}
|
143
|
-
],
|
144
|
-
functionName: "addr",
|
145
|
-
data: res[0]
|
146
|
-
});
|
147
|
-
}
|
148
|
-
|
149
|
-
// src/actions/ens/getEnsName.ts
|
150
|
-
async function getEnsName(client, {
|
151
|
-
address,
|
152
|
-
blockNumber,
|
153
|
-
blockTag,
|
154
|
-
universalResolverAddress: universalResolverAddress_
|
155
|
-
}) {
|
156
|
-
let universalResolverAddress = universalResolverAddress_;
|
157
|
-
if (!universalResolverAddress) {
|
158
|
-
if (!client.chain)
|
159
|
-
throw new Error(
|
160
|
-
"client chain not configured. universalResolverAddress is required."
|
161
|
-
);
|
162
|
-
const contract = client.chain?.contracts?.ensUniversalResolver;
|
163
|
-
if (!contract)
|
164
|
-
throw new ChainDoesNotSupportContract({
|
165
|
-
chain: client.chain,
|
166
|
-
contract: { name: "ensUniversalResolver" }
|
167
|
-
});
|
168
|
-
if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
|
169
|
-
throw new ChainDoesNotSupportContract({
|
170
|
-
blockNumber,
|
171
|
-
chain: client.chain,
|
172
|
-
contract: {
|
173
|
-
name: "ensUniversalResolver",
|
174
|
-
blockCreated: contract.blockCreated
|
175
|
-
}
|
176
|
-
});
|
177
|
-
universalResolverAddress = contract.address;
|
178
|
-
}
|
179
|
-
const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;
|
180
|
-
try {
|
181
|
-
const res = await readContract(client, {
|
182
|
-
address: universalResolverAddress,
|
183
|
-
abi: [
|
184
|
-
{
|
185
|
-
name: "reverse",
|
186
|
-
type: "function",
|
187
|
-
stateMutability: "view",
|
188
|
-
inputs: [{ type: "bytes", name: "reverseName" }],
|
189
|
-
outputs: [
|
190
|
-
{ type: "string", name: "resolvedName" },
|
191
|
-
{ type: "address", name: "resolvedAddress" },
|
192
|
-
{ type: "address", name: "reverseResolver" },
|
193
|
-
{ type: "address", name: "resolver" }
|
194
|
-
]
|
195
|
-
}
|
196
|
-
],
|
197
|
-
functionName: "reverse",
|
198
|
-
args: [toHex(packetToBytes(reverseNode))],
|
199
|
-
blockNumber,
|
200
|
-
blockTag
|
201
|
-
});
|
202
|
-
return res[0];
|
203
|
-
} catch (error) {
|
204
|
-
if (error instanceof ContractFunctionExecutionError && error.cause.reason === panicReasons[50])
|
205
|
-
return null;
|
206
|
-
throw error;
|
207
|
-
}
|
208
|
-
}
|
209
15
|
export {
|
210
16
|
getEnsAddress,
|
211
17
|
getEnsName,
|
package/dist/ens.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/utils/ens/normalize.ts","../src/utils/ens/labelhash.ts","../src/utils/ens/namehash.ts","../src/utils/ens/packetToBytes.ts","../src/actions/ens/getEnsAddress.ts","../src/actions/ens/getEnsName.ts"],"sourcesContent":["import { toUnicode } from 'idna-uts46-hx'\n\n/**\n * @description Normalizes ENS name\n *\n * @example\n * normalize('wagmi-dev.eth')\n * 'wagmi-dev.eth'\n *\n * @see https://docs.ens.domains/contract-api-reference/name-processing#normalising-names\n */\nexport function normalize(name: string) {\n return toUnicode(name, { useStd3ASCII: true })\n}\n","import { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\nimport { normalize } from './normalize'\n\n/**\n * @description Hashes ENS label\n *\n * @example\n * labelhash('eth')\n * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'\n */\nexport function labelhash(label: string) {\n let result = new Uint8Array(32).fill(0)\n if (!label) return bytesToHex(result)\n return keccak256(stringToBytes(normalize(label)))\n}\n","import { concat } from '../data'\nimport { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\nimport { normalize } from './normalize'\n\n/**\n * @description Hashes ENS name\n *\n * @example\n * namehash('wagmi-dev.eth')\n * '0xf246651c1b9a6b141d19c2604e9a58f567973833990f830d882534a747801359'\n *\n * @see https://eips.ethereum.org/EIPS/eip-137\n * @see https://docs.ens.domains/contract-api-reference/name-processing#hashing-names\n */\nexport function namehash(name: string) {\n let result = new Uint8Array(32).fill(0)\n if (!name) return bytesToHex(result)\n\n const labels = normalize(name).split('.')\n // Iterate in reverse order building up hash\n for (let i = labels.length - 1; i >= 0; i -= 1) {\n const hashed = keccak256(stringToBytes(labels[i]), 'bytes')\n result = keccak256(concat([result, hashed]), 'bytes')\n }\n\n return bytesToHex(result)\n}\n","// Adapted from https://github.com/mafintosh/dns-packet\nimport { ByteArray } from '../../types'\nimport { toBytes } from '../encoding'\n\n/*\n * @description Encodes a DNS packet into a ByteArray containing a UDP payload.\n */\nexport function packetToBytes(packet: string): ByteArray {\n function length(value: string) {\n if (value === '.' || value === '..') return 1\n return toBytes(value.replace(/^\\.|\\.$/gm, '')).length + 2\n }\n\n const bytes = new Uint8Array(length(packet))\n // strip leading and trailing `.`\n const value = packet.replace(/^\\.|\\.$/gm, '')\n if (!value.length) return bytes\n\n let offset = 0\n const list = value.split('.')\n for (let i = 0; i < list.length; i++) {\n const encoded = toBytes(list[i])\n bytes[offset] = encoded.length\n bytes.set(encoded, offset + 1)\n offset += encoded.length + 1\n }\n\n return bytes\n}\n","import { PublicClient } from '../../clients'\nimport { ChainDoesNotSupportContract } from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { decodeFunctionResult, encodeFunctionData, toHex } from '../../utils'\nimport { namehash, packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractArgs } from '../public'\n\nexport type GetEnsAddressArgs = Prettify<\n Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {\n /** ENS name to get address. */\n name: string\n /** Address of ENS Universal Resolver Contract */\n universalResolverAddress?: Address\n }\n>\n\n/**\n * @description Gets address for ENS name.\n *\n * - Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * @example\n * const ensAddress = await getEnsAddress(publicClient, {\n * name: 'wagmi-dev.eth',\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress(\n client: PublicClient,\n {\n blockNumber,\n blockTag,\n name,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsAddressArgs,\n) {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n ],\n functionName: 'resolve',\n args: [\n toHex(packetToBytes(name)),\n encodeFunctionData({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [],\n },\n ],\n functionName: 'addr',\n args: [namehash(name)],\n }),\n ],\n blockNumber,\n blockTag,\n })\n return decodeFunctionResult({\n abi: [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ name: 'name', type: 'address' }],\n },\n ],\n functionName: 'addr',\n data: res[0],\n })\n}\n","import { PublicClient } from '../../clients'\nimport { panicReasons } from '../../constants'\nimport {\n ChainDoesNotSupportContract,\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n} from '../../errors'\nimport type { Address, Prettify } from '../../types'\nimport { toHex } from '../../utils'\nimport { packetToBytes } from '../../utils/ens'\nimport { readContract, ReadContractArgs } from '../public'\n\nexport type GetEnsNameArgs = Prettify<\n Pick<ReadContractArgs, 'blockNumber' | 'blockTag'> & {\n /** Address to get ENS name for. */\n address: Address\n /** Address of ENS Universal Resolver Contract. */\n universalResolverAddress?: Address\n }\n>\n\n/**\n * @description Gets primary name for specified address.\n *\n * - Calls `reverse(bytes)` on ENS Universal Resolver Contract.\n *\n * @example\n * const ensName = await getEnsName(publicClient, {\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wagmi-dev.eth'\n */\nexport async function getEnsName(\n client: PublicClient,\n {\n address,\n blockNumber,\n blockTag,\n universalResolverAddress: universalResolverAddress_,\n }: GetEnsNameArgs,\n) {\n let universalResolverAddress = universalResolverAddress_\n if (!universalResolverAddress) {\n if (!client.chain)\n throw new Error(\n 'client chain not configured. universalResolverAddress is required.',\n )\n\n const contract = client.chain?.contracts?.ensUniversalResolver\n if (!contract)\n throw new ChainDoesNotSupportContract({\n chain: client.chain,\n contract: { name: 'ensUniversalResolver' },\n })\n\n if (\n blockNumber &&\n contract.blockCreated &&\n contract.blockCreated > blockNumber\n )\n throw new ChainDoesNotSupportContract({\n blockNumber,\n chain: client.chain,\n contract: {\n name: 'ensUniversalResolver',\n blockCreated: contract.blockCreated,\n },\n })\n\n universalResolverAddress = contract.address\n }\n\n const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`\n try {\n const res = await readContract(client, {\n address: universalResolverAddress,\n abi: [\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n ],\n functionName: 'reverse',\n args: [toHex(packetToBytes(reverseNode))],\n blockNumber,\n blockTag,\n })\n return res[0]\n } catch (error) {\n if (\n error instanceof ContractFunctionExecutionError &&\n (error.cause as ContractFunctionRevertedError).reason === panicReasons[50]\n )\n // No primary name set for address.\n return null\n throw error\n }\n}\n"],"mappings":"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","names":["value"]}
|
1
|
+
{"version":3,"sources":["../src/utils/ens/normalize.ts"],"sourcesContent":["import { toUnicode } from 'idna-uts46-hx'\n\n/**\n * @description Normalizes ENS name\n *\n * @example\n * normalize('wagmi-dev.eth')\n * 'wagmi-dev.eth'\n *\n * @see https://docs.ens.domains/contract-api-reference/name-processing#normalising-names\n */\nexport function normalize(name: string) {\n return toUnicode(name, { useStd3ASCII: true })\n}\n"],"mappings":";;;;;;;;;;AAAA,SAAS,iBAAiB;AAWnB,SAAS,UAAU,MAAc;AACtC,SAAO,UAAU,MAAM,EAAE,cAAc,KAAK,CAAC;AAC/C;","names":[]}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { c as AbiItem } from './chain-4d46a747.js';
|
2
|
+
|
3
|
+
declare function formatAbiItemWithArgs({ abiItem, args, includeFunctionName, includeName, }: {
|
4
|
+
abiItem: AbiItem;
|
5
|
+
args: readonly unknown[];
|
6
|
+
includeFunctionName?: boolean;
|
7
|
+
includeName?: boolean;
|
8
|
+
}): string | undefined;
|
9
|
+
|
10
|
+
declare function formatAbiItem(abiItem: AbiItem, { includeName }?: {
|
11
|
+
includeName?: boolean;
|
12
|
+
}): string;
|
13
|
+
|
14
|
+
export { formatAbiItem as a, formatAbiItemWithArgs as f };
|