viem 0.0.1-sushi.25 → 0.0.1-sushi.27

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 (63) hide show
  1. package/dist/{call-ac509982.d.ts → call-14050d5c.d.ts} +3 -3
  2. package/dist/{chain-c4ccb458.d.ts → chain-83ece55b.d.ts} +1 -1
  3. package/dist/{chain-f16512e8.d.ts → chain-9a8c6614.d.ts} +1 -1
  4. package/dist/chains.d.ts +5 -5
  5. package/dist/chains.js +46 -46
  6. package/dist/chains.mjs +1 -1
  7. package/dist/{chunk-LBSHIBU7.js → chunk-3MFDRMZW.js} +10 -8
  8. package/dist/chunk-3MFDRMZW.js.map +1 -0
  9. package/dist/{chunk-VVAGEIV2.js → chunk-4MP6LO5V.js} +14 -14
  10. package/dist/{chunk-VVAGEIV2.js.map → chunk-4MP6LO5V.js.map} +0 -0
  11. package/dist/{chunk-KLKNITD2.mjs → chunk-MV7PYF3D.mjs} +2 -2
  12. package/dist/{chunk-KLKNITD2.mjs.map → chunk-MV7PYF3D.mjs.map} +0 -0
  13. package/dist/{chunk-P73S5JV4.mjs → chunk-PSLMBGQ4.mjs} +2 -2
  14. package/dist/{chunk-P73S5JV4.mjs.map → chunk-PSLMBGQ4.mjs.map} +0 -0
  15. package/dist/{chunk-ZRHPJRBJ.mjs → chunk-RPR4ZSAP.mjs} +10 -8
  16. package/dist/chunk-RPR4ZSAP.mjs.map +1 -0
  17. package/dist/{chunk-N2P6N5ML.js → chunk-XB55RCBE.js} +70 -70
  18. package/dist/{chunk-N2P6N5ML.js.map → chunk-XB55RCBE.js.map} +0 -0
  19. package/dist/{contract-9e76e561.d.ts → contract-3b4a1df6.d.ts} +1 -1
  20. package/dist/contract.d.ts +13 -13
  21. package/dist/contract.js +4 -4
  22. package/dist/contract.mjs +3 -3
  23. package/dist/{createClient-68ee4bb4.d.ts → createClient-cc01b906.d.ts} +2 -2
  24. package/dist/{createPublicClient-b732194e.d.ts → createPublicClient-9823f081.d.ts} +3 -3
  25. package/dist/{createTestClient-dedf321e.d.ts → createTestClient-63b16109.d.ts} +3 -3
  26. package/dist/{createWalletClient-75813d83.d.ts → createWalletClient-6dbbe0ee.d.ts} +3 -3
  27. package/dist/{decodeErrorResult-0b934d23.d.ts → decodeErrorResult-b0d3ce71.d.ts} +2 -2
  28. package/dist/{eip1193-6f9ba163.d.ts → eip1193-bbebfb3d.d.ts} +1 -1
  29. package/dist/ens.d.ts +8 -8
  30. package/dist/ens.js +21 -21
  31. package/dist/ens.mjs +2 -2
  32. package/dist/{getAbiItem-c8e6e7d4.d.ts → getAbiItem-540089dd.d.ts} +2 -2
  33. package/dist/index.d.ts +12 -12
  34. package/dist/index.js +13 -13
  35. package/dist/index.js.map +1 -1
  36. package/dist/index.mjs +3 -3
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/public.d.ts +10 -10
  39. package/dist/public.js +3 -3
  40. package/dist/public.mjs +2 -2
  41. package/dist/{readContract-4f6e2692.d.ts → readContract-5c96b3bc.d.ts} +3 -3
  42. package/dist/{rpc-a5a7f376.d.ts → rpc-c367eceb.d.ts} +2 -2
  43. package/dist/{sendTransaction-e713f90c.d.ts → sendTransaction-50d22f3e.d.ts} +3 -3
  44. package/dist/test.d.ts +4 -4
  45. package/dist/test.js +13 -13
  46. package/dist/test.mjs +1 -1
  47. package/dist/{transactionReceipt-2a86c7c7.d.ts → transactionReceipt-504958d3.d.ts} +1 -1
  48. package/dist/{transactionRequest-c7794f5e.d.ts → transactionRequest-37f60d32.d.ts} +2 -2
  49. package/dist/utils/index.d.ts +10 -10
  50. package/dist/utils/index.js +2 -2
  51. package/dist/utils/index.mjs +1 -1
  52. package/dist/wallet.d.ts +6 -6
  53. package/dist/wallet.js +3 -3
  54. package/dist/wallet.mjs +2 -2
  55. package/dist/{watchEvent-c346c12d.d.ts → watchEvent-ca77f9e9.d.ts} +3 -3
  56. package/dist/window.d.ts +2 -2
  57. package/package.json +3 -1
  58. package/public/package.json +4 -0
  59. package/src/clients/transports/fallback.ts +2 -2
  60. package/src/utils/buildRequest.ts +6 -8
  61. package/test/package.json +4 -0
  62. package/dist/chunk-LBSHIBU7.js.map +0 -1
  63. package/dist/chunk-ZRHPJRBJ.mjs.map +0 -1
package/dist/ens.js CHANGED
@@ -1,6 +1,6 @@
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 _chunkN2P6N5MLjs = require('./chunk-N2P6N5ML.js');
3
+ var _chunkXB55RCBEjs = require('./chunk-XB55RCBE.js');
4
4
 
5
5
 
6
6
 
@@ -13,7 +13,7 @@ var _chunkN2P6N5MLjs = require('./chunk-N2P6N5ML.js');
13
13
 
14
14
 
15
15
 
16
- var _chunkLBSHIBU7js = require('./chunk-LBSHIBU7.js');
16
+ var _chunk3MFDRMZWjs = require('./chunk-3MFDRMZW.js');
17
17
 
18
18
  // src/utils/ens/normalize.ts
19
19
  var _idnauts46hx = require('idna-uts46-hx');
@@ -25,21 +25,21 @@ function normalize(name) {
25
25
  function labelhash(label) {
26
26
  let result = new Uint8Array(32).fill(0);
27
27
  if (!label)
28
- return _chunkLBSHIBU7js.bytesToHex.call(void 0, result);
29
- return _chunkLBSHIBU7js.keccak256.call(void 0, _chunkLBSHIBU7js.stringToBytes.call(void 0, normalize(label)));
28
+ return _chunk3MFDRMZWjs.bytesToHex.call(void 0, result);
29
+ return _chunk3MFDRMZWjs.keccak256.call(void 0, _chunk3MFDRMZWjs.stringToBytes.call(void 0, normalize(label)));
30
30
  }
31
31
 
32
32
  // src/utils/ens/namehash.ts
33
33
  function namehash(name) {
34
34
  let result = new Uint8Array(32).fill(0);
35
35
  if (!name)
36
- return _chunkLBSHIBU7js.bytesToHex.call(void 0, result);
36
+ return _chunk3MFDRMZWjs.bytesToHex.call(void 0, result);
37
37
  const labels = normalize(name).split(".");
38
38
  for (let i = labels.length - 1; i >= 0; i -= 1) {
39
- const hashed = _chunkLBSHIBU7js.keccak256.call(void 0, _chunkLBSHIBU7js.stringToBytes.call(void 0, labels[i]), "bytes");
40
- result = _chunkLBSHIBU7js.keccak256.call(void 0, _chunkLBSHIBU7js.concat.call(void 0, [result, hashed]), "bytes");
39
+ const hashed = _chunk3MFDRMZWjs.keccak256.call(void 0, _chunk3MFDRMZWjs.stringToBytes.call(void 0, labels[i]), "bytes");
40
+ result = _chunk3MFDRMZWjs.keccak256.call(void 0, _chunk3MFDRMZWjs.concat.call(void 0, [result, hashed]), "bytes");
41
41
  }
42
- return _chunkLBSHIBU7js.bytesToHex.call(void 0, result);
42
+ return _chunk3MFDRMZWjs.bytesToHex.call(void 0, result);
43
43
  }
44
44
 
45
45
  // src/utils/ens/packetToBytes.ts
@@ -47,7 +47,7 @@ function packetToBytes(packet) {
47
47
  function length(value2) {
48
48
  if (value2 === "." || value2 === "..")
49
49
  return 1;
50
- return _chunkLBSHIBU7js.encodeBytes.call(void 0, value2.replace(/^\.|\.$/gm, "")).length + 2;
50
+ return _chunk3MFDRMZWjs.encodeBytes.call(void 0, value2.replace(/^\.|\.$/gm, "")).length + 2;
51
51
  }
52
52
  const bytes = new Uint8Array(length(packet));
53
53
  const value = packet.replace(/^\.|\.$/gm, "");
@@ -56,7 +56,7 @@ function packetToBytes(packet) {
56
56
  let offset = 0;
57
57
  const list = value.split(".");
58
58
  for (let i = 0; i < list.length; i++) {
59
- const encoded = _chunkLBSHIBU7js.encodeBytes.call(void 0, list[i]);
59
+ const encoded = _chunk3MFDRMZWjs.encodeBytes.call(void 0, list[i]);
60
60
  bytes[offset] = encoded.length;
61
61
  bytes.set(encoded, offset + 1);
62
62
  offset += encoded.length + 1;
@@ -79,12 +79,12 @@ async function getEnsAddress(client, {
79
79
  );
80
80
  const contract = _optionalChain([client, 'access', _ => _.chain, 'optionalAccess', _2 => _2.contracts, 'optionalAccess', _3 => _3.ensUniversalResolver]);
81
81
  if (!contract)
82
- throw new (0, _chunkLBSHIBU7js.ChainDoesNotSupportContract)({
82
+ throw new (0, _chunk3MFDRMZWjs.ChainDoesNotSupportContract)({
83
83
  chain: client.chain,
84
84
  contract: { name: "ensUniversalResolver" }
85
85
  });
86
86
  if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
87
- throw new (0, _chunkLBSHIBU7js.ChainDoesNotSupportContract)({
87
+ throw new (0, _chunk3MFDRMZWjs.ChainDoesNotSupportContract)({
88
88
  blockNumber,
89
89
  chain: client.chain,
90
90
  contract: {
@@ -94,7 +94,7 @@ async function getEnsAddress(client, {
94
94
  });
95
95
  universalResolverAddress = contract.address;
96
96
  }
97
- const res = await _chunkN2P6N5MLjs.readContract.call(void 0, client, {
97
+ const res = await _chunkXB55RCBEjs.readContract.call(void 0, client, {
98
98
  address: universalResolverAddress,
99
99
  abi: [
100
100
  {
@@ -113,8 +113,8 @@ async function getEnsAddress(client, {
113
113
  ],
114
114
  functionName: "resolve",
115
115
  args: [
116
- _chunkLBSHIBU7js.encodeHex.call(void 0, packetToBytes(name)),
117
- _chunkLBSHIBU7js.encodeFunctionData.call(void 0, {
116
+ _chunk3MFDRMZWjs.encodeHex.call(void 0, packetToBytes(name)),
117
+ _chunk3MFDRMZWjs.encodeFunctionData.call(void 0, {
118
118
  abi: [
119
119
  {
120
120
  name: "addr",
@@ -131,7 +131,7 @@ async function getEnsAddress(client, {
131
131
  blockNumber,
132
132
  blockTag
133
133
  });
134
- return _chunkLBSHIBU7js.decodeFunctionResult.call(void 0, {
134
+ return _chunk3MFDRMZWjs.decodeFunctionResult.call(void 0, {
135
135
  abi: [
136
136
  {
137
137
  name: "addr",
@@ -161,12 +161,12 @@ async function getEnsName(client, {
161
161
  );
162
162
  const contract = _optionalChain([client, 'access', _4 => _4.chain, 'optionalAccess', _5 => _5.contracts, 'optionalAccess', _6 => _6.ensUniversalResolver]);
163
163
  if (!contract)
164
- throw new (0, _chunkLBSHIBU7js.ChainDoesNotSupportContract)({
164
+ throw new (0, _chunk3MFDRMZWjs.ChainDoesNotSupportContract)({
165
165
  chain: client.chain,
166
166
  contract: { name: "ensUniversalResolver" }
167
167
  });
168
168
  if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)
169
- throw new (0, _chunkLBSHIBU7js.ChainDoesNotSupportContract)({
169
+ throw new (0, _chunk3MFDRMZWjs.ChainDoesNotSupportContract)({
170
170
  blockNumber,
171
171
  chain: client.chain,
172
172
  contract: {
@@ -178,7 +178,7 @@ async function getEnsName(client, {
178
178
  }
179
179
  const reverseNode = `${address.toLowerCase().substring(2)}.addr.reverse`;
180
180
  try {
181
- const res = await _chunkN2P6N5MLjs.readContract.call(void 0, client, {
181
+ const res = await _chunkXB55RCBEjs.readContract.call(void 0, client, {
182
182
  address: universalResolverAddress,
183
183
  abi: [
184
184
  {
@@ -195,13 +195,13 @@ async function getEnsName(client, {
195
195
  }
196
196
  ],
197
197
  functionName: "reverse",
198
- args: [_chunkLBSHIBU7js.encodeHex.call(void 0, packetToBytes(reverseNode))],
198
+ args: [_chunk3MFDRMZWjs.encodeHex.call(void 0, packetToBytes(reverseNode))],
199
199
  blockNumber,
200
200
  blockTag
201
201
  });
202
202
  return res[0];
203
203
  } catch (error) {
204
- if (error instanceof _chunkLBSHIBU7js.ContractFunctionExecutionError && error.cause.reason === _chunkLBSHIBU7js.panicReasons[50])
204
+ if (error instanceof _chunk3MFDRMZWjs.ContractFunctionExecutionError && error.cause.reason === _chunk3MFDRMZWjs.panicReasons[50])
205
205
  return null;
206
206
  throw error;
207
207
  }
package/dist/ens.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readContract
3
- } from "./chunk-P73S5JV4.mjs";
3
+ } from "./chunk-PSLMBGQ4.mjs";
4
4
  import {
5
5
  ChainDoesNotSupportContract,
6
6
  ContractFunctionExecutionError,
@@ -13,7 +13,7 @@ import {
13
13
  keccak256,
14
14
  panicReasons,
15
15
  stringToBytes
16
- } from "./chunk-ZRHPJRBJ.mjs";
16
+ } from "./chunk-RPR4ZSAP.mjs";
17
17
 
18
18
  // src/utils/ens/normalize.ts
19
19
  import { toUnicode } from "idna-uts46-hx";
@@ -1,6 +1,6 @@
1
1
  import { AbiParameter, Narrow, Abi, AbiParametersToPrimitiveTypes } from 'abitype';
2
- import { H as Hex, G as LogTopic } from './chain-f16512e8.js';
3
- import { b as ExtractEventNameFromAbi, d as ExtractEventArgsFromTopics, e as ExtractFunctionNameFromAbi, f as ExtractArgsFromAbi, E as ExtractResultFromAbi, a as ExtractConstructorArgsFromAbi, g as ExtractErrorNameFromAbi, h as ExtractErrorArgsFromAbi, c as ExtractEventArgsFromAbi, A as AbiItem, i as ExtractNameFromAbi } from './contract-9e76e561.js';
2
+ import { H as Hex, G as LogTopic } from './chain-9a8c6614.js';
3
+ import { b as ExtractEventNameFromAbi, d as ExtractEventArgsFromTopics, e as ExtractFunctionNameFromAbi, f as ExtractArgsFromAbi, E as ExtractResultFromAbi, a as ExtractConstructorArgsFromAbi, g as ExtractErrorNameFromAbi, h as ExtractErrorArgsFromAbi, c as ExtractEventArgsFromAbi, A as AbiItem, i as ExtractNameFromAbi } from './contract-3b4a1df6.js';
4
4
  import * as abitype_dist_abi_78346466 from 'abitype/dist/abi-78346466';
5
5
 
6
6
  type DecodeAbiArgs<TParams extends readonly AbiParameter[] | readonly unknown[] = readonly AbiParameter[]> = {
package/dist/index.d.ts CHANGED
@@ -1,18 +1,18 @@
1
- import { T as TransportConfig, a as Transport, B as BaseRpcRequests } from './createClient-68ee4bb4.js';
2
- export { C as Client, b as ClientConfig, a as Transport, T as TransportConfig, c as createClient, d as createTransport } from './createClient-68ee4bb4.js';
1
+ import { T as TransportConfig, a as Transport, B as BaseRpcRequests } from './createClient-cc01b906.js';
2
+ export { C as Client, b as ClientConfig, a as Transport, T as TransportConfig, c as createClient, d as createTransport } from './createClient-cc01b906.js';
3
3
  import WebSocket from 'isomorphic-ws';
4
- import { H as Hex, A as Address, a as Hash, B as ByteArray, b as BlockTag } from './chain-f16512e8.js';
5
- export { c as AccessList, A as Address, d as Block, e as BlockIdentifier, f as BlockNumber, b as BlockTag, B as ByteArray, C as Chain, F as FeeHistory, g as FeeValues, h as FeeValuesEIP1559, i as FeeValuesLegacy, a as Hash, H as Hex, L as Log, R as RpcBlock, j as RpcBlockIdentifier, k as RpcBlockNumber, l as RpcFeeHistory, m as RpcFeeValues, n as RpcLog, o as RpcTransaction, p as RpcTransactionReceipt, q as RpcTransactionRequest, r as RpcUncle, x as Transaction, y as TransactionBase, z as TransactionEIP1559, D as TransactionEIP2930, E as TransactionLegacy, T as TransactionReceipt, s as TransactionRequest, t as TransactionRequestBase, u as TransactionRequestEIP1559, v as TransactionRequestEIP2930, w as TransactionRequestLegacy, U as Uncle } from './chain-f16512e8.js';
6
- import { B as BaseError, R as RpcResponse } from './rpc-a5a7f376.js';
7
- export { B as BaseError, C as ContractFunctionExecutionError, a as ContractFunctionRevertedError, b as ContractFunctionZeroDataError } from './rpc-a5a7f376.js';
8
- export { P as PublicClient, a as PublicClientConfig, c as createPublicClient } from './createPublicClient-b732194e.js';
9
- export { T as TestClient, a as TestClientConfig, c as createTestClient } from './createTestClient-dedf321e.js';
10
- export { W as WalletClient, a as WalletClientConfig, c as createWalletClient } from './createWalletClient-75813d83.js';
11
- export { A as AbiItem, C as ContractConfig } from './contract-9e76e561.js';
12
- import './eip1193-6f9ba163.js';
4
+ import { H as Hex, A as Address, a as Hash, B as ByteArray, b as BlockTag } from './chain-9a8c6614.js';
5
+ export { c as AccessList, A as Address, d as Block, e as BlockIdentifier, f as BlockNumber, b as BlockTag, B as ByteArray, C as Chain, F as FeeHistory, g as FeeValues, h as FeeValuesEIP1559, i as FeeValuesLegacy, a as Hash, H as Hex, L as Log, R as RpcBlock, j as RpcBlockIdentifier, k as RpcBlockNumber, l as RpcFeeHistory, m as RpcFeeValues, n as RpcLog, o as RpcTransaction, p as RpcTransactionReceipt, q as RpcTransactionRequest, r as RpcUncle, x as Transaction, y as TransactionBase, z as TransactionEIP1559, D as TransactionEIP2930, E as TransactionLegacy, T as TransactionReceipt, s as TransactionRequest, t as TransactionRequestBase, u as TransactionRequestEIP1559, v as TransactionRequestEIP2930, w as TransactionRequestLegacy, U as Uncle } from './chain-9a8c6614.js';
6
+ import { B as BaseError, R as RpcResponse } from './rpc-c367eceb.js';
7
+ export { B as BaseError, C as ContractFunctionExecutionError, a as ContractFunctionRevertedError, b as ContractFunctionZeroDataError } from './rpc-c367eceb.js';
8
+ export { P as PublicClient, a as PublicClientConfig, c as createPublicClient } from './createPublicClient-9823f081.js';
9
+ export { T as TestClient, a as TestClientConfig, c as createTestClient } from './createTestClient-63b16109.js';
10
+ export { W as WalletClient, a as WalletClientConfig, c as createWalletClient } from './createWalletClient-6dbbe0ee.js';
11
+ export { A as AbiItem, C as ContractConfig } from './contract-3b4a1df6.js';
12
+ import './eip1193-bbebfb3d.js';
13
13
  import '@wagmi/chains';
14
14
  import 'abitype';
15
- import './decodeErrorResult-0b934d23.js';
15
+ import './decodeErrorResult-b0d3ce71.js';
16
16
 
17
17
  declare class AbiConstructorNotFoundError extends BaseError {
18
18
  name: string;
package/dist/index.js CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
 
60
60
 
61
- var _chunkLBSHIBU7js = require('./chunk-LBSHIBU7.js');
61
+ var _chunk3MFDRMZWjs = require('./chunk-3MFDRMZW.js');
62
62
 
63
63
  // src/clients/transports/createTransport.ts
64
64
  function createTransport(config, value) {
@@ -93,7 +93,7 @@ function fallback(transports, { key = "fallback", name = "Fallback" } = {}) {
93
93
  params
94
94
  });
95
95
  } catch (err) {
96
- if (err instanceof _chunkLBSHIBU7js.RpcError && _chunkLBSHIBU7js.isDeterministicError.call(void 0, err))
96
+ if (err instanceof _chunk3MFDRMZWjs.RpcError && !_chunk3MFDRMZWjs.isNonDeterministicError.call(void 0, err))
97
97
  throw err;
98
98
  if (i === transports.length - 1)
99
99
  throw err;
@@ -117,13 +117,13 @@ function http(url, { key = "http", name = "HTTP JSON-RPC" } = {}) {
117
117
  return ({ chain }) => {
118
118
  const url_ = url || _optionalChain([chain, 'optionalAccess', _ => _.rpcUrls, 'access', _2 => _2.default, 'access', _3 => _3.http, 'access', _4 => _4[0]]);
119
119
  if (!url_)
120
- throw new (0, _chunkLBSHIBU7js.UrlRequiredError)();
120
+ throw new (0, _chunk3MFDRMZWjs.UrlRequiredError)();
121
121
  return createTransport(
122
122
  {
123
123
  key,
124
124
  name,
125
125
  async request({ method, params }) {
126
- const { result } = await _chunkLBSHIBU7js.rpc.http(url_, {
126
+ const { result } = await _chunk3MFDRMZWjs.rpc.http(url_, {
127
127
  body: {
128
128
  method,
129
129
  params
@@ -148,14 +148,14 @@ function webSocket(url, {
148
148
  return ({ chain }) => {
149
149
  const url_ = url || _optionalChain([chain, 'optionalAccess', _5 => _5.rpcUrls, 'access', _6 => _6.default, 'access', _7 => _7.webSocket, 'optionalAccess', _8 => _8[0]]);
150
150
  if (!url_)
151
- throw new (0, _chunkLBSHIBU7js.UrlRequiredError)();
151
+ throw new (0, _chunk3MFDRMZWjs.UrlRequiredError)();
152
152
  return createTransport(
153
153
  {
154
154
  key,
155
155
  name,
156
156
  async request({ method, params }) {
157
- const socket = await _chunkLBSHIBU7js.getSocket.call(void 0, url_);
158
- const { result } = await _chunkLBSHIBU7js.rpc.webSocketAsync(socket, {
157
+ const socket = await _chunk3MFDRMZWjs.getSocket.call(void 0, url_);
158
+ const { result } = await _chunk3MFDRMZWjs.rpc.webSocketAsync(socket, {
159
159
  body: { method, params }
160
160
  });
161
161
  return result;
@@ -164,12 +164,12 @@ function webSocket(url, {
164
164
  },
165
165
  {
166
166
  getSocket() {
167
- return _chunkLBSHIBU7js.getSocket.call(void 0, url_);
167
+ return _chunk3MFDRMZWjs.getSocket.call(void 0, url_);
168
168
  },
169
169
  async subscribe({ params, onData, onError }) {
170
- const socket = await _chunkLBSHIBU7js.getSocket.call(void 0, url_);
170
+ const socket = await _chunk3MFDRMZWjs.getSocket.call(void 0, url_);
171
171
  const { result: subscriptionId } = await new Promise(
172
- (resolve, reject) => _chunkLBSHIBU7js.rpc.webSocket(socket, {
172
+ (resolve, reject) => _chunk3MFDRMZWjs.rpc.webSocket(socket, {
173
173
  body: {
174
174
  method: "eth_subscribe",
175
175
  params
@@ -191,7 +191,7 @@ function webSocket(url, {
191
191
  subscriptionId,
192
192
  async unsubscribe() {
193
193
  return new Promise(
194
- (resolve, reject) => _chunkLBSHIBU7js.rpc.webSocket(socket, {
194
+ (resolve, reject) => _chunk3MFDRMZWjs.rpc.webSocket(socket, {
195
195
  body: {
196
196
  method: "eth_unsubscribe",
197
197
  params: [subscriptionId]
@@ -238,7 +238,7 @@ function createClient({
238
238
  key,
239
239
  name,
240
240
  pollingInterval,
241
- request: _chunkLBSHIBU7js.buildRequest.call(void 0, config.request),
241
+ request: _chunk3MFDRMZWjs.buildRequest.call(void 0, config.request),
242
242
  transport: { ...config, ...value },
243
243
  type,
244
244
  uid: uid()
@@ -366,5 +366,5 @@ function createWalletClient({
366
366
 
367
367
 
368
368
 
369
- exports.AbiConstructorNotFoundError = _chunkLBSHIBU7js.AbiConstructorNotFoundError; exports.AbiConstructorParamsNotFoundError = _chunkLBSHIBU7js.AbiConstructorParamsNotFoundError; exports.AbiDecodingDataSizeInvalidError = _chunkLBSHIBU7js.AbiDecodingDataSizeInvalidError; exports.AbiEncodingArrayLengthMismatchError = _chunkLBSHIBU7js.AbiEncodingArrayLengthMismatchError; exports.AbiEncodingLengthMismatchError = _chunkLBSHIBU7js.AbiEncodingLengthMismatchError; exports.AbiErrorInputsNotFoundError = _chunkLBSHIBU7js.AbiErrorInputsNotFoundError; exports.AbiErrorNotFoundError = _chunkLBSHIBU7js.AbiErrorNotFoundError; exports.AbiErrorSignatureNotFoundError = _chunkLBSHIBU7js.AbiErrorSignatureNotFoundError; exports.AbiEventNotFoundError = _chunkLBSHIBU7js.AbiEventNotFoundError; exports.AbiFunctionNotFoundError = _chunkLBSHIBU7js.AbiFunctionNotFoundError; exports.AbiFunctionOutputsNotFoundError = _chunkLBSHIBU7js.AbiFunctionOutputsNotFoundError; exports.AbiFunctionSignatureNotFoundError = _chunkLBSHIBU7js.AbiFunctionSignatureNotFoundError; exports.BaseError = _chunkLBSHIBU7js.BaseError; exports.BlockNotFoundError = _chunkLBSHIBU7js.BlockNotFoundError; exports.ContractFunctionExecutionError = _chunkLBSHIBU7js.ContractFunctionExecutionError; exports.ContractFunctionRevertedError = _chunkLBSHIBU7js.ContractFunctionRevertedError; exports.ContractFunctionZeroDataError = _chunkLBSHIBU7js.ContractFunctionZeroDataError; exports.DataLengthTooLongError = _chunkLBSHIBU7js.DataLengthTooLongError; exports.DataLengthTooShortError = _chunkLBSHIBU7js.DataLengthTooShortError; exports.FilterTypeNotSupportedError = _chunkLBSHIBU7js.FilterTypeNotSupportedError; exports.HttpRequestError = _chunkLBSHIBU7js.HttpRequestError; exports.InternalRpcError = _chunkLBSHIBU7js.InternalRpcError; exports.InvalidAbiDecodingTypeError = _chunkLBSHIBU7js.InvalidAbiDecodingTypeError; exports.InvalidAbiEncodingTypeError = _chunkLBSHIBU7js.InvalidAbiEncodingTypeError; exports.InvalidAddressError = _chunkLBSHIBU7js.InvalidAddressError; exports.InvalidArrayError = _chunkLBSHIBU7js.InvalidArrayError; exports.InvalidBytesBooleanError = _chunkLBSHIBU7js.InvalidBytesBooleanError; exports.InvalidDefinitionTypeError = _chunkLBSHIBU7js.InvalidDefinitionTypeError; exports.InvalidGasArgumentsError = _chunkLBSHIBU7js.InvalidGasArgumentsError; exports.InvalidHexBooleanError = _chunkLBSHIBU7js.InvalidHexBooleanError; exports.InvalidHexValueError = _chunkLBSHIBU7js.InvalidHexValueError; exports.InvalidInputRpcError = _chunkLBSHIBU7js.InvalidInputRpcError; exports.InvalidParamsRpcError = _chunkLBSHIBU7js.InvalidParamsRpcError; exports.InvalidRequestRpcError = _chunkLBSHIBU7js.InvalidRequestRpcError; exports.JsonRpcVersionUnsupportedError = _chunkLBSHIBU7js.JsonRpcVersionUnsupportedError; exports.LimitExceededRpcError = _chunkLBSHIBU7js.LimitExceededRpcError; exports.MethodNotFoundRpcError = _chunkLBSHIBU7js.MethodNotFoundRpcError; exports.MethodNotSupportedRpcError = _chunkLBSHIBU7js.MethodNotSupportedRpcError; exports.OffsetOutOfBoundsError = _chunkLBSHIBU7js.OffsetOutOfBoundsError; exports.ParseRpcError = _chunkLBSHIBU7js.ParseRpcError; exports.RequestError = _chunkLBSHIBU7js.RequestError; exports.ResourceNotFoundRpcError = _chunkLBSHIBU7js.ResourceNotFoundRpcError; exports.ResourceUnavailableRpcError = _chunkLBSHIBU7js.ResourceUnavailableRpcError; exports.RpcError = _chunkLBSHIBU7js.RpcError; exports.RpcRequestError = _chunkLBSHIBU7js.RpcRequestError; exports.SizeExceedsPaddingSizeError = _chunkLBSHIBU7js.SizeExceedsPaddingSizeError; exports.TimeoutError = _chunkLBSHIBU7js.TimeoutError; exports.TransactionNotFoundError = _chunkLBSHIBU7js.TransactionNotFoundError; exports.TransactionReceiptNotFoundError = _chunkLBSHIBU7js.TransactionReceiptNotFoundError; exports.TransactionRejectedRpcError = _chunkLBSHIBU7js.TransactionRejectedRpcError; exports.UnknownRpcError = _chunkLBSHIBU7js.UnknownRpcError; exports.UrlRequiredError = _chunkLBSHIBU7js.UrlRequiredError; exports.WaitForTransactionReceiptTimeoutError = _chunkLBSHIBU7js.WaitForTransactionReceiptTimeoutError; exports.WebSocketRequestError = _chunkLBSHIBU7js.WebSocketRequestError; exports.createClient = createClient; exports.createPublicClient = createPublicClient; exports.createTestClient = createTestClient; exports.createTransport = createTransport; exports.createWalletClient = createWalletClient; exports.custom = custom; exports.fallback = fallback; exports.http = http; exports.multicall3Abi = _chunkLBSHIBU7js.multicall3Abi; exports.webSocket = webSocket;
369
+ exports.AbiConstructorNotFoundError = _chunk3MFDRMZWjs.AbiConstructorNotFoundError; exports.AbiConstructorParamsNotFoundError = _chunk3MFDRMZWjs.AbiConstructorParamsNotFoundError; exports.AbiDecodingDataSizeInvalidError = _chunk3MFDRMZWjs.AbiDecodingDataSizeInvalidError; exports.AbiEncodingArrayLengthMismatchError = _chunk3MFDRMZWjs.AbiEncodingArrayLengthMismatchError; exports.AbiEncodingLengthMismatchError = _chunk3MFDRMZWjs.AbiEncodingLengthMismatchError; exports.AbiErrorInputsNotFoundError = _chunk3MFDRMZWjs.AbiErrorInputsNotFoundError; exports.AbiErrorNotFoundError = _chunk3MFDRMZWjs.AbiErrorNotFoundError; exports.AbiErrorSignatureNotFoundError = _chunk3MFDRMZWjs.AbiErrorSignatureNotFoundError; exports.AbiEventNotFoundError = _chunk3MFDRMZWjs.AbiEventNotFoundError; exports.AbiFunctionNotFoundError = _chunk3MFDRMZWjs.AbiFunctionNotFoundError; exports.AbiFunctionOutputsNotFoundError = _chunk3MFDRMZWjs.AbiFunctionOutputsNotFoundError; exports.AbiFunctionSignatureNotFoundError = _chunk3MFDRMZWjs.AbiFunctionSignatureNotFoundError; exports.BaseError = _chunk3MFDRMZWjs.BaseError; exports.BlockNotFoundError = _chunk3MFDRMZWjs.BlockNotFoundError; exports.ContractFunctionExecutionError = _chunk3MFDRMZWjs.ContractFunctionExecutionError; exports.ContractFunctionRevertedError = _chunk3MFDRMZWjs.ContractFunctionRevertedError; exports.ContractFunctionZeroDataError = _chunk3MFDRMZWjs.ContractFunctionZeroDataError; exports.DataLengthTooLongError = _chunk3MFDRMZWjs.DataLengthTooLongError; exports.DataLengthTooShortError = _chunk3MFDRMZWjs.DataLengthTooShortError; exports.FilterTypeNotSupportedError = _chunk3MFDRMZWjs.FilterTypeNotSupportedError; exports.HttpRequestError = _chunk3MFDRMZWjs.HttpRequestError; exports.InternalRpcError = _chunk3MFDRMZWjs.InternalRpcError; exports.InvalidAbiDecodingTypeError = _chunk3MFDRMZWjs.InvalidAbiDecodingTypeError; exports.InvalidAbiEncodingTypeError = _chunk3MFDRMZWjs.InvalidAbiEncodingTypeError; exports.InvalidAddressError = _chunk3MFDRMZWjs.InvalidAddressError; exports.InvalidArrayError = _chunk3MFDRMZWjs.InvalidArrayError; exports.InvalidBytesBooleanError = _chunk3MFDRMZWjs.InvalidBytesBooleanError; exports.InvalidDefinitionTypeError = _chunk3MFDRMZWjs.InvalidDefinitionTypeError; exports.InvalidGasArgumentsError = _chunk3MFDRMZWjs.InvalidGasArgumentsError; exports.InvalidHexBooleanError = _chunk3MFDRMZWjs.InvalidHexBooleanError; exports.InvalidHexValueError = _chunk3MFDRMZWjs.InvalidHexValueError; exports.InvalidInputRpcError = _chunk3MFDRMZWjs.InvalidInputRpcError; exports.InvalidParamsRpcError = _chunk3MFDRMZWjs.InvalidParamsRpcError; exports.InvalidRequestRpcError = _chunk3MFDRMZWjs.InvalidRequestRpcError; exports.JsonRpcVersionUnsupportedError = _chunk3MFDRMZWjs.JsonRpcVersionUnsupportedError; exports.LimitExceededRpcError = _chunk3MFDRMZWjs.LimitExceededRpcError; exports.MethodNotFoundRpcError = _chunk3MFDRMZWjs.MethodNotFoundRpcError; exports.MethodNotSupportedRpcError = _chunk3MFDRMZWjs.MethodNotSupportedRpcError; exports.OffsetOutOfBoundsError = _chunk3MFDRMZWjs.OffsetOutOfBoundsError; exports.ParseRpcError = _chunk3MFDRMZWjs.ParseRpcError; exports.RequestError = _chunk3MFDRMZWjs.RequestError; exports.ResourceNotFoundRpcError = _chunk3MFDRMZWjs.ResourceNotFoundRpcError; exports.ResourceUnavailableRpcError = _chunk3MFDRMZWjs.ResourceUnavailableRpcError; exports.RpcError = _chunk3MFDRMZWjs.RpcError; exports.RpcRequestError = _chunk3MFDRMZWjs.RpcRequestError; exports.SizeExceedsPaddingSizeError = _chunk3MFDRMZWjs.SizeExceedsPaddingSizeError; exports.TimeoutError = _chunk3MFDRMZWjs.TimeoutError; exports.TransactionNotFoundError = _chunk3MFDRMZWjs.TransactionNotFoundError; exports.TransactionReceiptNotFoundError = _chunk3MFDRMZWjs.TransactionReceiptNotFoundError; exports.TransactionRejectedRpcError = _chunk3MFDRMZWjs.TransactionRejectedRpcError; exports.UnknownRpcError = _chunk3MFDRMZWjs.UnknownRpcError; exports.UrlRequiredError = _chunk3MFDRMZWjs.UrlRequiredError; exports.WaitForTransactionReceiptTimeoutError = _chunk3MFDRMZWjs.WaitForTransactionReceiptTimeoutError; exports.WebSocketRequestError = _chunk3MFDRMZWjs.WebSocketRequestError; exports.createClient = createClient; exports.createPublicClient = createPublicClient; exports.createTestClient = createTestClient; exports.createTransport = createTransport; exports.createWalletClient = createWalletClient; exports.custom = custom; exports.fallback = fallback; exports.http = http; exports.multicall3Abi = _chunk3MFDRMZWjs.multicall3Abi; exports.webSocket = webSocket;
370
370
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n> = <TChain extends Chain = Chain>({\n chain,\n}: {\n chain?: TChain\n}) => {\n config: TransportConfig<TType>\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string = string,\n TRpcAttributes = any,\n>(\n config: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config,\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n /** An Ethereum provider with an EIP-1193 \"request\" attribute. */\n provider: TProvider,\n { key = 'custom', name = 'Custom Provider' }: CustomTransportConfig = {},\n): CustomTransport {\n return () =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n type: 'custom',\n })\n}\n","import { RpcError } from '../../errors'\nimport { isDeterministicError } from '../../utils/buildRequest'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports: Transport[],\n { key = 'fallback', name = 'Fallback' }: FallbackTransportConfig = {},\n): FallbackTransport {\n return ({ chain }) =>\n createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain })\n try {\n return await transport.config.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (err instanceof RpcError && isDeterministicError(err))\n throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain }) as unknown as Transport,\n ),\n },\n )\n}\n","import { UrlRequiredError } from '../../errors'\nimport { rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n { key = 'http', name = 'HTTP JSON-RPC' }: HttpTransportConfig = {},\n): HttpTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n })\n return result\n },\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeArgs = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeResponse = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeArgs & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeResponse>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n {\n key = 'webSocket',\n name = 'WebSocket JSON-RPC',\n }: WebSocketTransportConfig = {},\n): WebSocketTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n })\n return result\n },\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n onData(data)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { buildRequest } from '../utils/buildRequest'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type Client<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport (http, webSocket, custom, etc) */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = Partial<\n Pick<\n Client<TTransport, TChain, TRequests>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'type'\n >\n> & {\n transport: TTransport\n}\n\n/**\n * @description Creates a base RPC client with the given transport.\n *\n * - Intended to be used as a base for other RPC clients.\n * - Has access to _all_ EIP-1474 RPC methods.\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createClient, http } from 'viem/clients'\n * const client = createClient(http({ chain: mainnet }))\n */\nexport function createClient<\n TTransport extends Transport,\n TChain extends Chain,\n TRequests extends BaseRpcRequests,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain, TRequests>): Client<\n TTransport,\n TChain,\n TRequests\n> {\n const { config, value } = transport({ chain })\n return {\n chain,\n key,\n name,\n pollingInterval,\n request: buildRequest(config.request),\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, PublicRequests>\n\n/**\n * @description Creates a public client with a given transport.\n *\n * - Only has access to \"public\" EIP-1474 RPC methods (ie. `eth_blockNumber`, etc).\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createPublicClient, http } from 'viem/clients'\n * const client = createPublicClient(http({ chain: mainnet }))\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<TTransport, TChain> {\n chain\n return createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n })\n}\n","import type { TestRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\ntype TestClientModes = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the client. */\n key?: ClientConfig['key']\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n /** The name of the client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type TestClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = Client<TTransport, TChain, TestRequests<TMode>> & {\n mode: TMode\n}\n\n/**\n * @description Creates a test client with a given transport.\n *\n * - Only has access to \"test\" RPC methods (ie. `anvil_setBalance`,\n * `evm_mine`, etc).\n *\n * @example\n * import { createTestClient, http } from 'viem'\n * import { local } from 'viem/chains'\n * const client = createTestClient({ chain: local, mode: 'anvil', transport: http() })\n */\nexport function createTestClient<\n TTransport extends Transport,\n TChain extends Chain,\n TMode extends TestClientModes,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TTransport, TChain, TMode>): TestClient<\n TTransport,\n TChain,\n TMode\n> {\n return {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n }\n}\n","import type { SignableRequests, WalletRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the Wallet Client. */\n key?: ClientConfig['key']\n /** The name of the Wallet Client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, SignableRequests & WalletRequests>\n\n/**\n * @description Creates a wallet client with a given transport.\n *\n * - Only has access to \"wallet\" & \"signable\" EIP-1474 RPC methods\n * (ie. `eth_sendTransaction`, `eth_requestAccounts`, etc).\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * const client = createWalletClient(\n * custom(window.ethereum)\n * )\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain>): WalletClient<TTransport, TChain> {\n return createClient({\n key,\n name,\n pollingInterval,\n transport,\n type: 'walletClient',\n })\n}\n"]}
1
+ {"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n> = <TChain extends Chain = Chain>({\n chain,\n}: {\n chain?: TChain\n}) => {\n config: TransportConfig<TType>\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string = string,\n TRpcAttributes = any,\n>(\n config: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config,\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n /** An Ethereum provider with an EIP-1193 \"request\" attribute. */\n provider: TProvider,\n { key = 'custom', name = 'Custom Provider' }: CustomTransportConfig = {},\n): CustomTransport {\n return () =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n type: 'custom',\n })\n}\n","import { RpcError } from '../../errors'\nimport { isNonDeterministicError } from '../../utils/buildRequest'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports: Transport[],\n { key = 'fallback', name = 'Fallback' }: FallbackTransportConfig = {},\n): FallbackTransport {\n return ({ chain }) =>\n createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain })\n try {\n return await transport.config.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (err instanceof RpcError && !isNonDeterministicError(err))\n throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain }) as unknown as Transport,\n ),\n },\n )\n}\n","import { UrlRequiredError } from '../../errors'\nimport { rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n { key = 'http', name = 'HTTP JSON-RPC' }: HttpTransportConfig = {},\n): HttpTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n })\n return result\n },\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeArgs = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeResponse = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeArgs & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeResponse>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n {\n key = 'webSocket',\n name = 'WebSocket JSON-RPC',\n }: WebSocketTransportConfig = {},\n): WebSocketTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n })\n return result\n },\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n onData(data)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { buildRequest } from '../utils/buildRequest'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type Client<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport (http, webSocket, custom, etc) */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = Partial<\n Pick<\n Client<TTransport, TChain, TRequests>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'type'\n >\n> & {\n transport: TTransport\n}\n\n/**\n * @description Creates a base RPC client with the given transport.\n *\n * - Intended to be used as a base for other RPC clients.\n * - Has access to _all_ EIP-1474 RPC methods.\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createClient, http } from 'viem/clients'\n * const client = createClient(http({ chain: mainnet }))\n */\nexport function createClient<\n TTransport extends Transport,\n TChain extends Chain,\n TRequests extends BaseRpcRequests,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain, TRequests>): Client<\n TTransport,\n TChain,\n TRequests\n> {\n const { config, value } = transport({ chain })\n return {\n chain,\n key,\n name,\n pollingInterval,\n request: buildRequest(config.request),\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, PublicRequests>\n\n/**\n * @description Creates a public client with a given transport.\n *\n * - Only has access to \"public\" EIP-1474 RPC methods (ie. `eth_blockNumber`, etc).\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createPublicClient, http } from 'viem/clients'\n * const client = createPublicClient(http({ chain: mainnet }))\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<TTransport, TChain> {\n chain\n return createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n })\n}\n","import type { TestRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\ntype TestClientModes = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the client. */\n key?: ClientConfig['key']\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n /** The name of the client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type TestClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = Client<TTransport, TChain, TestRequests<TMode>> & {\n mode: TMode\n}\n\n/**\n * @description Creates a test client with a given transport.\n *\n * - Only has access to \"test\" RPC methods (ie. `anvil_setBalance`,\n * `evm_mine`, etc).\n *\n * @example\n * import { createTestClient, http } from 'viem'\n * import { local } from 'viem/chains'\n * const client = createTestClient({ chain: local, mode: 'anvil', transport: http() })\n */\nexport function createTestClient<\n TTransport extends Transport,\n TChain extends Chain,\n TMode extends TestClientModes,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TTransport, TChain, TMode>): TestClient<\n TTransport,\n TChain,\n TMode\n> {\n return {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n }\n}\n","import type { SignableRequests, WalletRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the Wallet Client. */\n key?: ClientConfig['key']\n /** The name of the Wallet Client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, SignableRequests & WalletRequests>\n\n/**\n * @description Creates a wallet client with a given transport.\n *\n * - Only has access to \"wallet\" & \"signable\" EIP-1474 RPC methods\n * (ie. `eth_sendTransaction`, `eth_requestAccounts`, etc).\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * const client = createWalletClient(\n * custom(window.ethereum)\n * )\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain>): WalletClient<TTransport, TChain> {\n return createClient({\n key,\n name,\n pollingInterval,\n transport,\n type: 'walletClient',\n })\n}\n"]}
package/dist/index.mjs CHANGED
@@ -55,10 +55,10 @@ import {
55
55
  WebSocketRequestError,
56
56
  buildRequest,
57
57
  getSocket,
58
- isDeterministicError,
58
+ isNonDeterministicError,
59
59
  multicall3Abi,
60
60
  rpc
61
- } from "./chunk-ZRHPJRBJ.mjs";
61
+ } from "./chunk-RPR4ZSAP.mjs";
62
62
 
63
63
  // src/clients/transports/createTransport.ts
64
64
  function createTransport(config, value) {
@@ -93,7 +93,7 @@ function fallback(transports, { key = "fallback", name = "Fallback" } = {}) {
93
93
  params
94
94
  });
95
95
  } catch (err) {
96
- if (err instanceof RpcError && isDeterministicError(err))
96
+ if (err instanceof RpcError && !isNonDeterministicError(err))
97
97
  throw err;
98
98
  if (i === transports.length - 1)
99
99
  throw err;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n> = <TChain extends Chain = Chain>({\n chain,\n}: {\n chain?: TChain\n}) => {\n config: TransportConfig<TType>\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string = string,\n TRpcAttributes = any,\n>(\n config: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config,\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n /** An Ethereum provider with an EIP-1193 \"request\" attribute. */\n provider: TProvider,\n { key = 'custom', name = 'Custom Provider' }: CustomTransportConfig = {},\n): CustomTransport {\n return () =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n type: 'custom',\n })\n}\n","import { RpcError } from '../../errors'\nimport { isDeterministicError } from '../../utils/buildRequest'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports: Transport[],\n { key = 'fallback', name = 'Fallback' }: FallbackTransportConfig = {},\n): FallbackTransport {\n return ({ chain }) =>\n createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain })\n try {\n return await transport.config.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (err instanceof RpcError && isDeterministicError(err))\n throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain }) as unknown as Transport,\n ),\n },\n )\n}\n","import { UrlRequiredError } from '../../errors'\nimport { rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n { key = 'http', name = 'HTTP JSON-RPC' }: HttpTransportConfig = {},\n): HttpTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n })\n return result\n },\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeArgs = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeResponse = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeArgs & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeResponse>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n {\n key = 'webSocket',\n name = 'WebSocket JSON-RPC',\n }: WebSocketTransportConfig = {},\n): WebSocketTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n })\n return result\n },\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n onData(data)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { buildRequest } from '../utils/buildRequest'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type Client<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport (http, webSocket, custom, etc) */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = Partial<\n Pick<\n Client<TTransport, TChain, TRequests>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'type'\n >\n> & {\n transport: TTransport\n}\n\n/**\n * @description Creates a base RPC client with the given transport.\n *\n * - Intended to be used as a base for other RPC clients.\n * - Has access to _all_ EIP-1474 RPC methods.\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createClient, http } from 'viem/clients'\n * const client = createClient(http({ chain: mainnet }))\n */\nexport function createClient<\n TTransport extends Transport,\n TChain extends Chain,\n TRequests extends BaseRpcRequests,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain, TRequests>): Client<\n TTransport,\n TChain,\n TRequests\n> {\n const { config, value } = transport({ chain })\n return {\n chain,\n key,\n name,\n pollingInterval,\n request: buildRequest(config.request),\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, PublicRequests>\n\n/**\n * @description Creates a public client with a given transport.\n *\n * - Only has access to \"public\" EIP-1474 RPC methods (ie. `eth_blockNumber`, etc).\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createPublicClient, http } from 'viem/clients'\n * const client = createPublicClient(http({ chain: mainnet }))\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<TTransport, TChain> {\n chain\n return createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n })\n}\n","import type { TestRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\ntype TestClientModes = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the client. */\n key?: ClientConfig['key']\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n /** The name of the client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type TestClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = Client<TTransport, TChain, TestRequests<TMode>> & {\n mode: TMode\n}\n\n/**\n * @description Creates a test client with a given transport.\n *\n * - Only has access to \"test\" RPC methods (ie. `anvil_setBalance`,\n * `evm_mine`, etc).\n *\n * @example\n * import { createTestClient, http } from 'viem'\n * import { local } from 'viem/chains'\n * const client = createTestClient({ chain: local, mode: 'anvil', transport: http() })\n */\nexport function createTestClient<\n TTransport extends Transport,\n TChain extends Chain,\n TMode extends TestClientModes,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TTransport, TChain, TMode>): TestClient<\n TTransport,\n TChain,\n TMode\n> {\n return {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n }\n}\n","import type { SignableRequests, WalletRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the Wallet Client. */\n key?: ClientConfig['key']\n /** The name of the Wallet Client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, SignableRequests & WalletRequests>\n\n/**\n * @description Creates a wallet client with a given transport.\n *\n * - Only has access to \"wallet\" & \"signable\" EIP-1474 RPC methods\n * (ie. `eth_sendTransaction`, `eth_requestAccounts`, etc).\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * const client = createWalletClient(\n * custom(window.ethereum)\n * )\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain>): WalletClient<TTransport, TChain> {\n return createClient({\n key,\n name,\n pollingInterval,\n transport,\n type: 'walletClient',\n })\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { Chain } from '../../types'\nimport type { Requests } from '../../types/eip1193'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n> = <TChain extends Chain = Chain>({\n chain,\n}: {\n chain?: TChain\n}) => {\n config: TransportConfig<TType>\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string = string,\n TRpcAttributes = any,\n>(\n config: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config,\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n /** An Ethereum provider with an EIP-1193 \"request\" attribute. */\n provider: TProvider,\n { key = 'custom', name = 'Custom Provider' }: CustomTransportConfig = {},\n): CustomTransport {\n return () =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n type: 'custom',\n })\n}\n","import { RpcError } from '../../errors'\nimport { isNonDeterministicError } from '../../utils/buildRequest'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports: Transport[],\n { key = 'fallback', name = 'Fallback' }: FallbackTransportConfig = {},\n): FallbackTransport {\n return ({ chain }) =>\n createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain })\n try {\n return await transport.config.request({\n method,\n params,\n } as any)\n } catch (err) {\n // If the error is deterministic, we don't need to fall back.\n // So throw the error.\n if (err instanceof RpcError && !isNonDeterministicError(err))\n throw err\n\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1) throw err\n\n // Otherwise, try the next fallback.\n return fetch(i + 1)\n }\n }\n return fetch()\n },\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain }) as unknown as Transport,\n ),\n },\n )\n}\n","import { UrlRequiredError } from '../../errors'\nimport { rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n { key = 'http', name = 'HTTP JSON-RPC' }: HttpTransportConfig = {},\n): HttpTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n })\n return result\n },\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import WebSocket from 'isomorphic-ws'\nimport { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeArgs = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeResponse = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeArgs & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeResponse>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n {\n key = 'webSocket',\n name = 'WebSocket JSON-RPC',\n }: WebSocketTransportConfig = {},\n): WebSocketTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n })\n return result\n },\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n onData(data)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import { Chain } from '../types'\nimport type { Requests } from '../types/eip1193'\nimport { buildRequest } from '../utils/buildRequest'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type Client<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport (http, webSocket, custom, etc) */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = Partial<\n Pick<\n Client<TTransport, TChain, TRequests>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'type'\n >\n> & {\n transport: TTransport\n}\n\n/**\n * @description Creates a base RPC client with the given transport.\n *\n * - Intended to be used as a base for other RPC clients.\n * - Has access to _all_ EIP-1474 RPC methods.\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createClient, http } from 'viem/clients'\n * const client = createClient(http({ chain: mainnet }))\n */\nexport function createClient<\n TTransport extends Transport,\n TChain extends Chain,\n TRequests extends BaseRpcRequests,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain, TRequests>): Client<\n TTransport,\n TChain,\n TRequests\n> {\n const { config, value } = transport({ chain })\n return {\n chain,\n key,\n name,\n pollingInterval,\n request: buildRequest(config.request),\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, PublicRequests>\n\n/**\n * @description Creates a public client with a given transport.\n *\n * - Only has access to \"public\" EIP-1474 RPC methods (ie. `eth_blockNumber`, etc).\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createPublicClient, http } from 'viem/clients'\n * const client = createPublicClient(http({ chain: mainnet }))\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<TTransport, TChain> {\n chain\n return createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n })\n}\n","import type { TestRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\ntype TestClientModes = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the client. */\n key?: ClientConfig['key']\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n /** The name of the client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type TestClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = Client<TTransport, TChain, TestRequests<TMode>> & {\n mode: TMode\n}\n\n/**\n * @description Creates a test client with a given transport.\n *\n * - Only has access to \"test\" RPC methods (ie. `anvil_setBalance`,\n * `evm_mine`, etc).\n *\n * @example\n * import { createTestClient, http } from 'viem'\n * import { local } from 'viem/chains'\n * const client = createTestClient({ chain: local, mode: 'anvil', transport: http() })\n */\nexport function createTestClient<\n TTransport extends Transport,\n TChain extends Chain,\n TMode extends TestClientModes,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TTransport, TChain, TMode>): TestClient<\n TTransport,\n TChain,\n TMode\n> {\n return {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n }\n}\n","import type { SignableRequests, WalletRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport { Chain } from '../types'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the Wallet Client. */\n key?: ClientConfig['key']\n /** The name of the Wallet Client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, SignableRequests & WalletRequests>\n\n/**\n * @description Creates a wallet client with a given transport.\n *\n * - Only has access to \"wallet\" & \"signable\" EIP-1474 RPC methods\n * (ie. `eth_sendTransaction`, `eth_requestAccounts`, etc).\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * const client = createWalletClient(\n * custom(window.ethereum)\n * )\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain>): WalletClient<TTransport, TChain> {\n return createClient({\n key,\n name,\n pollingInterval,\n transport,\n type: 'walletClient',\n })\n}\n"],"mappings":"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","names":[]}
package/dist/public.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- export { C as CallArgs, a as CallResponse, c as call } from './call-ac509982.js';
2
- import { H as Hex, X as EstimateGasParameters, b as BlockTag, A as Address, a as Hash, C as Chain, F as FeeHistory, L as Log, f as BlockNumber, Y as FormattedTransaction, Z as TransactionFormatter, V as Formatted, W as ExtractFormatter, O as Formatter, p as RpcTransactionReceipt, T as TransactionReceipt, K as TransactionType, x as Transaction } from './chain-f16512e8.js';
3
- import { P as PublicClient } from './createPublicClient-b732194e.js';
4
- import { F as FormattedBlock, B as BlockFormatter, a as FormattedTransactionReceipt, T as TransactionReceiptFormatter } from './transactionReceipt-2a86c7c7.js';
5
- import { E as EventFilterArgs } from './watchEvent-c346c12d.js';
6
- export { G as GetBytecodeArgs, a as GetBytecodeResponse, g as getBytecode, w as watchEvent } from './watchEvent-c346c12d.js';
7
- import { j as EventDefinition } from './contract-9e76e561.js';
8
- import './transactionRequest-c7794f5e.js';
1
+ export { C as CallArgs, a as CallResponse, c as call } from './call-14050d5c.js';
2
+ import { H as Hex, X as EstimateGasParameters, b as BlockTag, A as Address, a as Hash, C as Chain, F as FeeHistory, L as Log, f as BlockNumber, Y as FormattedTransaction, Z as TransactionFormatter, V as Formatted, W as ExtractFormatter, O as Formatter, p as RpcTransactionReceipt, T as TransactionReceipt, K as TransactionType, x as Transaction } from './chain-9a8c6614.js';
3
+ import { P as PublicClient } from './createPublicClient-9823f081.js';
4
+ import { F as FormattedBlock, B as BlockFormatter, a as FormattedTransactionReceipt, T as TransactionReceiptFormatter } from './transactionReceipt-504958d3.js';
5
+ import { E as EventFilterArgs } from './watchEvent-ca77f9e9.js';
6
+ export { G as GetBytecodeArgs, a as GetBytecodeResponse, g as getBytecode, w as watchEvent } from './watchEvent-ca77f9e9.js';
7
+ import { j as EventDefinition } from './contract-3b4a1df6.js';
8
+ import './transactionRequest-37f60d32.js';
9
9
  import '@wagmi/chains';
10
- import './eip1193-6f9ba163.js';
11
- import './createClient-68ee4bb4.js';
10
+ import './eip1193-bbebfb3d.js';
11
+ import './createClient-cc01b906.js';
12
12
  import 'abitype';
13
13
 
14
14
  type FilterType = 'transaction' | 'block' | 'event';
package/dist/public.js CHANGED
@@ -25,8 +25,8 @@
25
25
 
26
26
 
27
27
 
28
- var _chunkN2P6N5MLjs = require('./chunk-N2P6N5ML.js');
29
- require('./chunk-LBSHIBU7.js');
28
+ var _chunkXB55RCBEjs = require('./chunk-XB55RCBE.js');
29
+ require('./chunk-3MFDRMZW.js');
30
30
 
31
31
 
32
32
 
@@ -54,5 +54,5 @@ require('./chunk-LBSHIBU7.js');
54
54
 
55
55
 
56
56
 
57
- exports.call = _chunkN2P6N5MLjs.call; exports.createBlockFilter = _chunkN2P6N5MLjs.createBlockFilter; exports.createPendingTransactionFilter = _chunkN2P6N5MLjs.createPendingTransactionFilter; exports.estimateGas = _chunkN2P6N5MLjs.estimateGas; exports.getBalance = _chunkN2P6N5MLjs.getBalance; exports.getBlock = _chunkN2P6N5MLjs.getBlock; exports.getBlockNumber = _chunkN2P6N5MLjs.getBlockNumber; exports.getBlockNumberCache = _chunkN2P6N5MLjs.getBlockNumberCache; exports.getBlockTransactionCount = _chunkN2P6N5MLjs.getBlockTransactionCount; exports.getBytecode = _chunkN2P6N5MLjs.getBytecode; exports.getChainId = _chunkN2P6N5MLjs.getChainId; exports.getFeeHistory = _chunkN2P6N5MLjs.getFeeHistory; exports.getFilterChanges = _chunkN2P6N5MLjs.getFilterChanges; exports.getFilterLogs = _chunkN2P6N5MLjs.getFilterLogs; exports.getGasPrice = _chunkN2P6N5MLjs.getGasPrice; exports.getLogs = _chunkN2P6N5MLjs.getLogs; exports.getTransaction = _chunkN2P6N5MLjs.getTransaction; exports.getTransactionConfirmations = _chunkN2P6N5MLjs.getTransactionConfirmations; exports.getTransactionCount = _chunkN2P6N5MLjs.getTransactionCount; exports.getTransactionReceipt = _chunkN2P6N5MLjs.getTransactionReceipt; exports.uninstallFilter = _chunkN2P6N5MLjs.uninstallFilter; exports.waitForTransactionReceipt = _chunkN2P6N5MLjs.waitForTransactionReceipt; exports.watchBlockNumber = _chunkN2P6N5MLjs.watchBlockNumber; exports.watchBlocks = _chunkN2P6N5MLjs.watchBlocks; exports.watchEvent = _chunkN2P6N5MLjs.watchEvent; exports.watchPendingTransactions = _chunkN2P6N5MLjs.watchPendingTransactions;
57
+ exports.call = _chunkXB55RCBEjs.call; exports.createBlockFilter = _chunkXB55RCBEjs.createBlockFilter; exports.createPendingTransactionFilter = _chunkXB55RCBEjs.createPendingTransactionFilter; exports.estimateGas = _chunkXB55RCBEjs.estimateGas; exports.getBalance = _chunkXB55RCBEjs.getBalance; exports.getBlock = _chunkXB55RCBEjs.getBlock; exports.getBlockNumber = _chunkXB55RCBEjs.getBlockNumber; exports.getBlockNumberCache = _chunkXB55RCBEjs.getBlockNumberCache; exports.getBlockTransactionCount = _chunkXB55RCBEjs.getBlockTransactionCount; exports.getBytecode = _chunkXB55RCBEjs.getBytecode; exports.getChainId = _chunkXB55RCBEjs.getChainId; exports.getFeeHistory = _chunkXB55RCBEjs.getFeeHistory; exports.getFilterChanges = _chunkXB55RCBEjs.getFilterChanges; exports.getFilterLogs = _chunkXB55RCBEjs.getFilterLogs; exports.getGasPrice = _chunkXB55RCBEjs.getGasPrice; exports.getLogs = _chunkXB55RCBEjs.getLogs; exports.getTransaction = _chunkXB55RCBEjs.getTransaction; exports.getTransactionConfirmations = _chunkXB55RCBEjs.getTransactionConfirmations; exports.getTransactionCount = _chunkXB55RCBEjs.getTransactionCount; exports.getTransactionReceipt = _chunkXB55RCBEjs.getTransactionReceipt; exports.uninstallFilter = _chunkXB55RCBEjs.uninstallFilter; exports.waitForTransactionReceipt = _chunkXB55RCBEjs.waitForTransactionReceipt; exports.watchBlockNumber = _chunkXB55RCBEjs.watchBlockNumber; exports.watchBlocks = _chunkXB55RCBEjs.watchBlocks; exports.watchEvent = _chunkXB55RCBEjs.watchEvent; exports.watchPendingTransactions = _chunkXB55RCBEjs.watchPendingTransactions;
58
58
  //# sourceMappingURL=public.js.map