viem 0.0.1-alpha.35 → 0.0.1-alpha.36

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 (67) hide show
  1. package/README.md +132 -0
  2. package/dist/abi.d.ts +2 -2
  3. package/dist/abi.js +2 -2
  4. package/dist/abi.mjs +1 -1
  5. package/dist/{chain-7b7ac245.d.ts → chain-a34aa9a2.d.ts} +65 -63
  6. package/dist/{chain-145cfaf3.d.ts → chain-b1229232.d.ts} +1 -1
  7. package/dist/chains.d.ts +3 -3
  8. package/dist/chains.js +46 -46
  9. package/dist/chains.mjs +1 -1
  10. package/dist/{chunk-57YM6E7I.js → chunk-4AEFOF5R.js} +21 -23
  11. package/dist/chunk-4AEFOF5R.js.map +1 -0
  12. package/dist/{chunk-PBW4YL37.mjs → chunk-AXATFOBJ.mjs} +1835 -140
  13. package/dist/chunk-AXATFOBJ.mjs.map +1 -0
  14. package/dist/{chunk-5NDMORWZ.mjs → chunk-CUT73KXY.mjs} +3 -5
  15. package/dist/{chunk-5NDMORWZ.mjs.map → chunk-CUT73KXY.mjs.map} +1 -1
  16. package/dist/{chunk-HQCSH22G.js → chunk-KXGQFW2R.js} +1824 -129
  17. package/dist/chunk-KXGQFW2R.js.map +1 -0
  18. package/dist/contract.d.ts +7 -7
  19. package/dist/contract.js +2 -6
  20. package/dist/contract.mjs +11 -15
  21. package/dist/{createClient-7c715e2c.d.ts → createClient-8024655d.d.ts} +3 -11
  22. package/dist/{createPublicClient-4d24afb2.d.ts → createPublicClient-f283b09d.d.ts} +62 -59
  23. package/dist/{eip1193-d538ae6d.d.ts → eip1193-a4f254d2.d.ts} +2 -2
  24. package/dist/{encodeFunctionResult-f59f4cfe.d.ts → encodeFunctionResult-c3d6c7ea.d.ts} +1 -1
  25. package/dist/ens.d.ts +4 -4
  26. package/dist/ens.js +3 -4
  27. package/dist/ens.js.map +1 -1
  28. package/dist/ens.mjs +2 -3
  29. package/dist/ens.mjs.map +1 -1
  30. package/dist/{formatAbiItem-89d97367.d.ts → formatAbiItem-d79cb207.d.ts} +1 -1
  31. package/dist/{getAbiItem-c9cbc8b8.d.ts → getAbiItem-48e793da.d.ts} +1 -1
  32. package/dist/index.d.ts +27 -16
  33. package/dist/index.js +89 -93
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +78 -82
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/{parseGwei-ad6d1914.d.ts → parseGwei-5dc2744d.d.ts} +9 -20
  38. package/dist/public.d.ts +6 -6
  39. package/dist/public.js +2 -3
  40. package/dist/public.mjs +1 -2
  41. package/dist/{test-8646fb50.d.ts → test-f8bc2fa7.d.ts} +3 -11
  42. package/dist/test.d.ts +5 -5
  43. package/dist/test.js +2 -3
  44. package/dist/test.mjs +1 -2
  45. package/dist/utils/index.d.ts +27 -16
  46. package/dist/utils/index.js +2 -4
  47. package/dist/utils/index.mjs +7 -9
  48. package/dist/wallet.d.ts +4 -4
  49. package/dist/wallet.js +2 -4
  50. package/dist/wallet.mjs +5 -7
  51. package/dist/window.d.ts +2 -2
  52. package/package.json +1 -1
  53. package/dist/chunk-3FT7UKPT.js +0 -1216
  54. package/dist/chunk-3FT7UKPT.js.map +0 -1
  55. package/dist/chunk-57YM6E7I.js.map +0 -1
  56. package/dist/chunk-A665BF7O.js +0 -205
  57. package/dist/chunk-A665BF7O.js.map +0 -1
  58. package/dist/chunk-HQCSH22G.js.map +0 -1
  59. package/dist/chunk-PBW4YL37.mjs.map +0 -1
  60. package/dist/chunk-PH5LCMME.mjs +0 -205
  61. package/dist/chunk-PH5LCMME.mjs.map +0 -1
  62. package/dist/chunk-TJK6AFBM.js +0 -265
  63. package/dist/chunk-TJK6AFBM.js.map +0 -1
  64. package/dist/chunk-WQDVW7EJ.mjs +0 -1216
  65. package/dist/chunk-WQDVW7EJ.mjs.map +0 -1
  66. package/dist/chunk-YEVW7GK5.mjs +0 -265
  67. package/dist/chunk-YEVW7GK5.mjs.map +0 -1
@@ -1,6 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunk3FT7UKPTjs = require('./chunk-3FT7UKPT.js');
4
3
 
5
4
 
6
5
 
@@ -12,28 +11,27 @@ var _chunk3FT7UKPTjs = require('./chunk-3FT7UKPT.js');
12
11
 
13
12
 
14
13
 
15
-
16
- var _chunkHQCSH22Gjs = require('./chunk-HQCSH22G.js');
14
+ var _chunkKXGQFW2Rjs = require('./chunk-KXGQFW2R.js');
17
15
 
18
16
  // src/utils/ens/labelhash.ts
19
17
  function labelhash(label) {
20
18
  let result = new Uint8Array(32).fill(0);
21
19
  if (!label)
22
- return _chunkHQCSH22Gjs.bytesToHex.call(void 0, result);
23
- return _chunkHQCSH22Gjs.keccak256.call(void 0, _chunkHQCSH22Gjs.stringToBytes.call(void 0, label));
20
+ return _chunkKXGQFW2Rjs.bytesToHex.call(void 0, result);
21
+ return _chunkKXGQFW2Rjs.keccak256.call(void 0, _chunkKXGQFW2Rjs.stringToBytes.call(void 0, label));
24
22
  }
25
23
 
26
24
  // src/utils/ens/namehash.ts
27
25
  function namehash(name) {
28
26
  let result = new Uint8Array(32).fill(0);
29
27
  if (!name)
30
- return _chunkHQCSH22Gjs.bytesToHex.call(void 0, result);
28
+ return _chunkKXGQFW2Rjs.bytesToHex.call(void 0, result);
31
29
  const labels = name.split(".");
32
30
  for (let i = labels.length - 1; i >= 0; i -= 1) {
33
- const hashed = _chunkHQCSH22Gjs.keccak256.call(void 0, _chunkHQCSH22Gjs.stringToBytes.call(void 0, labels[i]), "bytes");
34
- result = _chunkHQCSH22Gjs.keccak256.call(void 0, _chunkHQCSH22Gjs.concat.call(void 0, [result, hashed]), "bytes");
31
+ const hashed = _chunkKXGQFW2Rjs.keccak256.call(void 0, _chunkKXGQFW2Rjs.stringToBytes.call(void 0, labels[i]), "bytes");
32
+ result = _chunkKXGQFW2Rjs.keccak256.call(void 0, _chunkKXGQFW2Rjs.concat.call(void 0, [result, hashed]), "bytes");
35
33
  }
36
- return _chunkHQCSH22Gjs.bytesToHex.call(void 0, result);
34
+ return _chunkKXGQFW2Rjs.bytesToHex.call(void 0, result);
37
35
  }
38
36
 
39
37
  // src/utils/ens/packetToBytes.ts
@@ -41,7 +39,7 @@ function packetToBytes(packet) {
41
39
  function length(value2) {
42
40
  if (value2 === "." || value2 === "..")
43
41
  return 1;
44
- return _chunkHQCSH22Gjs.toBytes.call(void 0, value2.replace(/^\.|\.$/gm, "")).length + 2;
42
+ return _chunkKXGQFW2Rjs.toBytes.call(void 0, value2.replace(/^\.|\.$/gm, "")).length + 2;
45
43
  }
46
44
  const bytes = new Uint8Array(length(packet));
47
45
  const value = packet.replace(/^\.|\.$/gm, "");
@@ -50,7 +48,7 @@ function packetToBytes(packet) {
50
48
  let offset = 0;
51
49
  const list = value.split(".");
52
50
  for (let i = 0; i < list.length; i++) {
53
- const encoded = _chunkHQCSH22Gjs.toBytes.call(void 0, list[i]);
51
+ const encoded = _chunkKXGQFW2Rjs.toBytes.call(void 0, list[i]);
54
52
  bytes[offset] = encoded.length;
55
53
  bytes.set(encoded, offset + 1);
56
54
  offset += encoded.length + 1;
@@ -73,12 +71,12 @@ async function getEnsAddress(client, {
73
71
  );
74
72
  const contract = _optionalChain([client, 'access', _ => _.chain, 'optionalAccess', _2 => _2.contracts, 'optionalAccess', _3 => _3.ensUniversalResolver]);
75
73
  if (!contract)
76
- throw new (0, _chunkHQCSH22Gjs.ChainDoesNotSupportContract)({
74
+ throw new (0, _chunkKXGQFW2Rjs.ChainDoesNotSupportContract)({
77
75
  chain: client.chain,
78
76
  contract: { name: "ensUniversalResolver" }
79
77
  });
80
78
  if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
81
- throw new (0, _chunkHQCSH22Gjs.ChainDoesNotSupportContract)({
79
+ throw new (0, _chunkKXGQFW2Rjs.ChainDoesNotSupportContract)({
82
80
  blockNumber,
83
81
  chain: client.chain,
84
82
  contract: {
@@ -88,7 +86,7 @@ async function getEnsAddress(client, {
88
86
  });
89
87
  universalResolverAddress = contract.address;
90
88
  }
91
- const res = await _chunk3FT7UKPTjs.readContract.call(void 0, client, {
89
+ const res = await _chunkKXGQFW2Rjs.readContract.call(void 0, client, {
92
90
  address: universalResolverAddress,
93
91
  abi: [
94
92
  {
@@ -107,8 +105,8 @@ async function getEnsAddress(client, {
107
105
  ],
108
106
  functionName: "resolve",
109
107
  args: [
110
- _chunkHQCSH22Gjs.toHex.call(void 0, packetToBytes(name)),
111
- _chunkHQCSH22Gjs.encodeFunctionData.call(void 0, {
108
+ _chunkKXGQFW2Rjs.toHex.call(void 0, packetToBytes(name)),
109
+ _chunkKXGQFW2Rjs.encodeFunctionData.call(void 0, {
112
110
  abi: [
113
111
  {
114
112
  name: "addr",
@@ -125,7 +123,7 @@ async function getEnsAddress(client, {
125
123
  blockNumber,
126
124
  blockTag
127
125
  });
128
- return _chunkHQCSH22Gjs.decodeFunctionResult.call(void 0, {
126
+ return _chunkKXGQFW2Rjs.decodeFunctionResult.call(void 0, {
129
127
  abi: [
130
128
  {
131
129
  name: "addr",
@@ -155,12 +153,12 @@ async function getEnsName(client, {
155
153
  );
156
154
  const contract = _optionalChain([client, 'access', _4 => _4.chain, 'optionalAccess', _5 => _5.contracts, 'optionalAccess', _6 => _6.ensUniversalResolver]);
157
155
  if (!contract)
158
- throw new (0, _chunkHQCSH22Gjs.ChainDoesNotSupportContract)({
156
+ throw new (0, _chunkKXGQFW2Rjs.ChainDoesNotSupportContract)({
159
157
  chain: client.chain,
160
158
  contract: { name: "ensUniversalResolver" }
161
159
  });
162
160
  if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
163
- throw new (0, _chunkHQCSH22Gjs.ChainDoesNotSupportContract)({
161
+ throw new (0, _chunkKXGQFW2Rjs.ChainDoesNotSupportContract)({
164
162
  blockNumber,
165
163
  chain: client.chain,
166
164
  contract: {
@@ -172,7 +170,7 @@ async function getEnsName(client, {
172
170
  }
173
171
  const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;
174
172
  try {
175
- const res = await _chunk3FT7UKPTjs.readContract.call(void 0, client, {
173
+ const res = await _chunkKXGQFW2Rjs.readContract.call(void 0, client, {
176
174
  address: universalResolverAddress,
177
175
  abi: [
178
176
  {
@@ -189,13 +187,13 @@ async function getEnsName(client, {
189
187
  }
190
188
  ],
191
189
  functionName: "reverse",
192
- args: [_chunkHQCSH22Gjs.toHex.call(void 0, packetToBytes(reverseNode))],
190
+ args: [_chunkKXGQFW2Rjs.toHex.call(void 0, packetToBytes(reverseNode))],
193
191
  blockNumber,
194
192
  blockTag
195
193
  });
196
194
  return res[0];
197
195
  } catch (error) {
198
- if (error instanceof _chunkHQCSH22Gjs.ContractFunctionExecutionError && error.cause.reason === _chunkHQCSH22Gjs.panicReasons[50])
196
+ if (error instanceof _chunkKXGQFW2Rjs.ContractFunctionExecutionError && error.cause.reason === _chunkKXGQFW2Rjs.panicReasons[50])
199
197
  return null;
200
198
  throw error;
201
199
  }
@@ -207,4 +205,4 @@ async function getEnsName(client, {
207
205
 
208
206
 
209
207
  exports.labelhash = labelhash; exports.namehash = namehash; exports.getEnsAddress = getEnsAddress; exports.getEnsName = getEnsName;
210
- //# sourceMappingURL=chunk-57YM6E7I.js.map
208
+ //# sourceMappingURL=chunk-4AEFOF5R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../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 { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\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(label))\n}\n","import { concat } from '../data'\nimport { bytesToHex, stringToBytes } from '../encoding'\nimport { keccak256 } from '../hash'\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 = 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\nexport type GetEnsAddressResponse = Address\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): Promise<GetEnsAddressResponse> {\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\nexport type GetEnsNameResponse = string | null\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): Promise<GetEnsNameResponse> {\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"]}