viem 0.0.1-alpha.24 → 0.0.1-alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/contract/package.json +4 -0
- package/dist/call-ac509982.d.ts +23 -0
- package/dist/{chain-e33d019b.d.ts → chain-c4ccb458.d.ts} +1 -1
- package/dist/{chain-afa13f5a.d.ts → chain-f16512e8.d.ts} +20 -1
- package/dist/chains.d.ts +20 -8
- package/dist/chains.js +46 -46
- package/dist/chains.mjs +1 -1
- package/dist/{chunk-YQUC52RL.mjs → chunk-2Y3UZMSP.mjs} +77 -84
- package/dist/chunk-2Y3UZMSP.mjs.map +1 -0
- package/dist/{chunk-A2HXAZXC.js → chunk-CD2XJOBJ.js} +135 -142
- package/dist/chunk-CD2XJOBJ.js.map +1 -0
- package/dist/{chunk-LQVMDX5I.mjs → chunk-KSAO4Y4Q.mjs} +133 -54
- package/dist/chunk-KSAO4Y4Q.mjs.map +1 -0
- package/dist/{chunk-3ARWEJ3G.mjs → chunk-LEPQJNVO.mjs} +18 -2
- package/dist/chunk-LEPQJNVO.mjs.map +1 -0
- package/dist/{chunk-ZYSXBTBB.js → chunk-NUXMGPMK.js} +30 -14
- package/dist/chunk-NUXMGPMK.js.map +1 -0
- package/dist/{chunk-4D5XG6XB.js → chunk-THMRUG4D.js} +148 -69
- package/dist/chunk-THMRUG4D.js.map +1 -0
- package/dist/{contract-70f4ddbe.d.ts → contract-9e76e561.d.ts} +44 -31
- package/dist/contract.d.ts +123 -0
- package/dist/contract.js +53 -0
- package/dist/{clients/index.js.map → contract.js.map} +0 -0
- package/dist/contract.mjs +53 -0
- package/dist/{clients/index.mjs.map → contract.mjs.map} +0 -0
- package/dist/{createClient-60e3ab98.d.ts → createClient-68ee4bb4.d.ts} +3 -3
- package/dist/{createPublicClient-d3d12dc3.d.ts → createPublicClient-b732194e.d.ts} +3 -3
- package/dist/{createTestClient-5f4532c4.d.ts → createTestClient-dedf321e.d.ts} +3 -3
- package/dist/{createWalletClient-9ec3df4f.d.ts → createWalletClient-75813d83.d.ts} +3 -3
- package/dist/decodeErrorResult-0b934d23.d.ts +16 -0
- package/dist/{eip1193-9317a312.d.ts → eip1193-6f9ba163.d.ts} +1 -1
- package/dist/ens.d.ts +82 -1
- package/dist/ens.js +208 -3
- package/dist/ens.js.map +1 -1
- package/dist/ens.mjs +209 -4
- package/dist/ens.mjs.map +1 -1
- package/dist/getAbiItem-c8e6e7d4.d.ts +97 -0
- package/dist/index.d.ts +85 -175
- package/dist/index.js +237 -279
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +245 -287
- package/dist/index.mjs.map +1 -1
- package/dist/public.d.ts +352 -10
- package/dist/public.js +3 -4
- package/dist/public.mjs +6 -7
- package/dist/readContract-4f6e2692.d.ts +10 -0
- package/dist/rpc-a5a7f376.d.ts +121 -0
- package/dist/{sendTransaction-54a0d509.d.ts → sendTransaction-e713f90c.d.ts} +3 -3
- package/dist/test.d.ts +160 -5
- package/dist/test.js +222 -18
- package/dist/test.js.map +1 -1
- package/dist/test.mjs +233 -29
- package/dist/test.mjs.map +1 -1
- package/dist/transactionReceipt-2a86c7c7.d.ts +26 -0
- package/dist/{transactionRequest-bdf57f7d.d.ts → transactionRequest-c7794f5e.d.ts} +1 -1
- package/dist/utils/index.d.ts +224 -20
- package/dist/utils/index.js +2 -6
- package/dist/utils/index.mjs +3 -7
- package/dist/wallet.d.ts +41 -7
- package/dist/wallet.js +3 -3
- package/dist/wallet.mjs +2 -2
- package/dist/watchEvent-c346c12d.d.ts +41 -0
- package/dist/window.d.ts +2 -2
- package/ens/package.json +4 -0
- package/package.json +13 -9
- package/src/_test/constants.ts +2 -0
- package/src/_test/utils.ts +10 -5
- package/src/actions/ens/getEnsAddress.bench.ts +26 -0
- package/src/actions/ens/getEnsAddress.test.ts +97 -0
- package/src/actions/ens/getEnsAddress.ts +122 -0
- package/src/actions/ens/getEnsName.bench.ts +30 -0
- package/src/actions/ens/getEnsName.test.ts +101 -0
- package/src/actions/ens/getEnsName.ts +106 -0
- package/src/actions/ens/index.test.ts +12 -0
- package/src/actions/ens/index.ts +3 -0
- package/src/actions/index.ts +3 -3
- package/src/actions/public/createEventFilter.test.ts +36 -4
- package/src/actions/public/createEventFilter.ts +27 -10
- package/src/actions/public/getFilterChanges.test.ts +198 -4
- package/src/actions/public/getFilterLogs.test.ts +195 -2
- package/src/actions/public/getLogs.test.ts +201 -2
- package/src/actions/public/index.test.ts +0 -1
- package/src/actions/public/index.ts +1 -7
- package/src/actions/public/multicall.ts +8 -3
- package/src/actions/public/simulateContract.ts +1 -4
- package/src/actions/public/watchContractEvent.test.ts +4 -4
- package/src/actions/{public → wallet}/deployContract.test.ts +1 -2
- package/src/actions/{public → wallet}/deployContract.ts +0 -0
- package/src/actions/wallet/index.test.ts +1 -0
- package/src/actions/wallet/index.ts +6 -0
- package/src/chains.test.ts +44 -1517
- package/src/clients/transports/webSocket.test.ts +1 -0
- package/src/clients/transports/webSocket.ts +1 -0
- package/src/contract.test.ts +31 -0
- package/src/contract.ts +68 -0
- package/src/ens.test.ts +15 -0
- package/src/ens.ts +4 -1
- package/src/errors/abi.ts +18 -2
- package/src/errors/chain.test.ts +46 -0
- package/src/errors/chain.ts +33 -0
- package/src/errors/contract.ts +2 -2
- package/src/errors/index.ts +3 -0
- package/src/index.test.ts +0 -147
- package/src/index.ts +0 -257
- package/src/public.test.ts +36 -0
- package/src/public.ts +2 -6
- package/src/test.test.ts +38 -0
- package/src/test.ts +1 -0
- package/src/types/contract.ts +144 -40
- package/src/types/index.ts +2 -1
- package/src/types/utils.ts +21 -0
- package/src/utils/abi/decodeErrorResult.test.ts +1 -1
- package/src/utils/abi/decodeEventLog.test.ts +542 -0
- package/src/utils/abi/decodeEventLog.ts +107 -0
- package/src/utils/abi/decodeFunctionData.test.ts +1 -2
- package/src/utils/abi/decodeFunctionData.ts +5 -2
- package/src/utils/abi/encodeFunctionData.ts +1 -4
- package/src/utils/abi/index.test.ts +1 -0
- package/src/utils/abi/index.ts +6 -0
- package/src/utils/ens/index.test.ts +1 -0
- package/src/utils/ens/index.ts +2 -0
- package/src/utils/ens/packetToBytes.test.ts +11 -0
- package/src/utils/ens/packetToBytes.ts +29 -0
- package/src/utils/index.test.ts +1 -3
- package/src/utils/index.ts +3 -2
- package/src/utils/rpc.test.ts +1 -0
- package/src/utils/rpc.ts +4 -2
- package/src/wallet.test.ts +19 -0
- package/wallet/package.json +4 -0
- package/clients/package.json +0 -4
- package/dist/chunk-3ARWEJ3G.mjs.map +0 -1
- package/dist/chunk-4D5XG6XB.js.map +0 -1
- package/dist/chunk-6QTEW2BE.mjs +0 -260
- package/dist/chunk-6QTEW2BE.mjs.map +0 -1
- package/dist/chunk-A2HXAZXC.js.map +0 -1
- package/dist/chunk-KRPS5CIB.mjs +0 -256
- package/dist/chunk-KRPS5CIB.mjs.map +0 -1
- package/dist/chunk-LQVMDX5I.mjs.map +0 -1
- package/dist/chunk-N3IOPT3R.js +0 -256
- package/dist/chunk-N3IOPT3R.js.map +0 -1
- package/dist/chunk-YQUC52RL.mjs.map +0 -1
- package/dist/chunk-ZSTVHQ6J.js +0 -260
- package/dist/chunk-ZSTVHQ6J.js.map +0 -1
- package/dist/chunk-ZYSXBTBB.js.map +0 -1
- package/dist/clients/index.d.ts +0 -9
- package/dist/clients/index.js +0 -24
- package/dist/clients/index.mjs +0 -24
- package/dist/normalize-ef9240c0.d.ts +0 -33
- package/dist/parseGwei-492ab7dd.d.ts +0 -355
- package/dist/rpc-26932bae.d.ts +0 -61
- package/dist/stopImpersonatingAccount-c1a4b7e5.d.ts +0 -156
- package/dist/watchAsset-d59d6e35.d.ts +0 -38
- package/dist/watchPendingTransactions-ea21b31d.d.ts +0 -373
- package/dist/webSocket-775b4037.d.ts +0 -83
@@ -9,7 +9,8 @@
|
|
9
9
|
|
10
10
|
|
11
11
|
|
12
|
-
|
12
|
+
|
13
|
+
var _chunkTHMRUG4Djs = require('./chunk-THMRUG4D.js');
|
13
14
|
|
14
15
|
// src/actions/wallet/addChain.ts
|
15
16
|
async function addChain(client, chain) {
|
@@ -18,7 +19,7 @@ async function addChain(client, chain) {
|
|
18
19
|
method: "wallet_addEthereumChain",
|
19
20
|
params: [
|
20
21
|
{
|
21
|
-
chainId:
|
22
|
+
chainId: _chunkTHMRUG4Djs.numberToHex.call(void 0, id),
|
22
23
|
chainName: name,
|
23
24
|
nativeCurrency,
|
24
25
|
rpcUrls: rpcUrls.default.http,
|
@@ -31,7 +32,7 @@ async function addChain(client, chain) {
|
|
31
32
|
// src/actions/wallet/getAccounts.ts
|
32
33
|
async function getAccounts(client) {
|
33
34
|
const addresses = await client.request({ method: "eth_accounts" });
|
34
|
-
return addresses.map((address) =>
|
35
|
+
return addresses.map((address) => _chunkTHMRUG4Djs.checksumAddress.call(void 0, address));
|
35
36
|
}
|
36
37
|
|
37
38
|
// src/actions/wallet/getPermissions.ts
|
@@ -43,7 +44,7 @@ async function getPermissions(client) {
|
|
43
44
|
// src/actions/wallet/requestAccounts.ts
|
44
45
|
async function requestAccounts(client) {
|
45
46
|
const addresses = await client.request({ method: "eth_requestAccounts" });
|
46
|
-
return addresses.map((address) =>
|
47
|
+
return addresses.map((address) => _chunkTHMRUG4Djs.getAddress.call(void 0, address));
|
47
48
|
}
|
48
49
|
|
49
50
|
// src/actions/wallet/requestPermissions.ts
|
@@ -70,9 +71,9 @@ async function sendTransaction(client, {
|
|
70
71
|
...rest
|
71
72
|
}) {
|
72
73
|
if (maxFeePerGas !== void 0 && maxPriorityFeePerGas !== void 0 && maxFeePerGas < maxPriorityFeePerGas)
|
73
|
-
throw new (0,
|
74
|
+
throw new (0, _chunkTHMRUG4Djs.InvalidGasArgumentsError)();
|
74
75
|
const formatter = _optionalChain([chain, 'optionalAccess', _ => _.formatters, 'optionalAccess', _2 => _2.transactionRequest]);
|
75
|
-
const request_ =
|
76
|
+
const request_ = _chunkTHMRUG4Djs.format.call(void 0,
|
76
77
|
{
|
77
78
|
from,
|
78
79
|
accessList,
|
@@ -84,10 +85,11 @@ async function sendTransaction(client, {
|
|
84
85
|
nonce,
|
85
86
|
to,
|
86
87
|
value,
|
87
|
-
|
88
|
+
// Pick out extra data that might exist on the chain's transaction request type.
|
89
|
+
..._chunkTHMRUG4Djs.extract.call(void 0, rest, { formatter })
|
88
90
|
},
|
89
91
|
{
|
90
|
-
formatter: formatter ||
|
92
|
+
formatter: formatter || _chunkTHMRUG4Djs.formatTransactionRequest
|
91
93
|
}
|
92
94
|
);
|
93
95
|
const hash = await client.request({
|
@@ -102,7 +104,7 @@ async function signMessage(client, { from, data: data_ }) {
|
|
102
104
|
let data;
|
103
105
|
if (typeof data_ === "string") {
|
104
106
|
if (!data_.startsWith("0x"))
|
105
|
-
throw new (0,
|
107
|
+
throw new (0, _chunkTHMRUG4Djs.BaseError)(
|
106
108
|
`data ("${data_}") must be a hex value. Encode it first to a hex with the \`encodeHex\` util.`,
|
107
109
|
{
|
108
110
|
docsPath: "/TODO"
|
@@ -110,7 +112,7 @@ async function signMessage(client, { from, data: data_ }) {
|
|
110
112
|
);
|
111
113
|
data = data_;
|
112
114
|
} else {
|
113
|
-
data =
|
115
|
+
data = _chunkTHMRUG4Djs.encodeHex.call(void 0, data_);
|
114
116
|
}
|
115
117
|
const signed = await client.request({
|
116
118
|
method: "personal_sign",
|
@@ -125,7 +127,7 @@ async function switchChain(client, { id }) {
|
|
125
127
|
method: "wallet_switchEthereumChain",
|
126
128
|
params: [
|
127
129
|
{
|
128
|
-
chainId:
|
130
|
+
chainId: _chunkTHMRUG4Djs.numberToHex.call(void 0, id)
|
129
131
|
}
|
130
132
|
]
|
131
133
|
});
|
@@ -148,7 +150,7 @@ async function writeContract(client, {
|
|
148
150
|
functionName,
|
149
151
|
...request
|
150
152
|
}) {
|
151
|
-
const data =
|
153
|
+
const data = _chunkTHMRUG4Djs.encodeFunctionData.call(void 0, {
|
152
154
|
abi,
|
153
155
|
args,
|
154
156
|
functionName
|
@@ -161,6 +163,20 @@ async function writeContract(client, {
|
|
161
163
|
return hash;
|
162
164
|
}
|
163
165
|
|
166
|
+
// src/actions/wallet/deployContract.ts
|
167
|
+
function deployContract(walletClient, { abi, args, bytecode, ...request }) {
|
168
|
+
const calldata = _chunkTHMRUG4Djs.encodeDeployData.call(void 0, {
|
169
|
+
abi,
|
170
|
+
args,
|
171
|
+
bytecode
|
172
|
+
});
|
173
|
+
return sendTransaction(walletClient, {
|
174
|
+
...request,
|
175
|
+
data: calldata
|
176
|
+
});
|
177
|
+
}
|
178
|
+
|
179
|
+
|
164
180
|
|
165
181
|
|
166
182
|
|
@@ -172,5 +188,5 @@ async function writeContract(client, {
|
|
172
188
|
|
173
189
|
|
174
190
|
|
175
|
-
exports.addChain = addChain; exports.getAccounts = getAccounts; exports.getPermissions = getPermissions; exports.requestAccounts = requestAccounts; exports.requestPermissions = requestPermissions; exports.sendTransaction = sendTransaction; exports.signMessage = signMessage; exports.switchChain = switchChain; exports.watchAsset = watchAsset; exports.writeContract = writeContract;
|
176
|
-
//# sourceMappingURL=chunk-
|
191
|
+
exports.addChain = addChain; exports.deployContract = deployContract; exports.getAccounts = getAccounts; exports.getPermissions = getPermissions; exports.requestAccounts = requestAccounts; exports.requestPermissions = requestPermissions; exports.sendTransaction = sendTransaction; exports.signMessage = signMessage; exports.switchChain = switchChain; exports.watchAsset = watchAsset; exports.writeContract = writeContract;
|
192
|
+
//# sourceMappingURL=chunk-NUXMGPMK.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/actions/wallet/addChain.ts","../src/actions/wallet/getAccounts.ts","../src/actions/wallet/getPermissions.ts","../src/actions/wallet/requestAccounts.ts","../src/actions/wallet/requestPermissions.ts","../src/actions/wallet/sendTransaction.ts","../src/actions/wallet/signMessage.ts","../src/actions/wallet/switchChain.ts","../src/actions/wallet/watchAsset.ts","../src/actions/wallet/writeContract.ts","../src/actions/wallet/deployContract.ts"],"names":[],"mappings":"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","sourcesContent":["import type { WalletClient } from '../../clients'\nimport type { Chain } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport async function addChain(client: WalletClient, chain: Chain) {\n const { id, name, nativeCurrency, rpcUrls, blockExplorers } = chain\n await client.request({\n method: 'wallet_addEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n chainName: name,\n nativeCurrency,\n rpcUrls: rpcUrls.default.http,\n blockExplorerUrls: blockExplorers\n ? Object.values(blockExplorers).map(({ url }) => url)\n : undefined,\n },\n ],\n })\n}\n","import type { WalletClient } from '../../clients'\nimport { checksumAddress } from '../../utils/address'\n\nexport async function getAccounts(client: WalletClient) {\n const addresses = await client.request({ method: 'eth_accounts' })\n return addresses.map((address) => checksumAddress(address))\n}\n","import type { WalletClient } from '../../clients'\nimport type { WalletPermission } from '../../types/eip1193'\n\nexport type GetPermissionsResponse = WalletPermission[]\n\nexport async function getPermissions(client: WalletClient) {\n const permissions = await client.request({ method: 'wallet_getPermissions' })\n return permissions\n}\n","import type { WalletClient } from '../../clients'\nimport { getAddress } from '../../utils'\n\nexport async function requestAccounts(client: WalletClient) {\n const addresses = await client.request({ method: 'eth_requestAccounts' })\n return addresses.map((address) => getAddress(address))\n}\n","import type { WalletClient } from '../../clients'\nimport type { WalletPermission } from '../../types/eip1193'\n\nexport type RequestPermissionsArgs = {\n eth_accounts: Record<string, any>\n} & {\n [key: string]: Record<string, any>\n}\nexport type RequestPermissionsResponse = WalletPermission[]\n\nexport async function requestPermissions(\n client: WalletClient,\n permissions: RequestPermissionsArgs,\n) {\n return client.request({\n method: 'wallet_requestPermissions',\n params: [permissions],\n })\n}\n","import type { WalletClient } from '../../clients'\nimport { InvalidGasArgumentsError } from '../../errors'\nimport type {\n Chain,\n Formatter,\n Hash,\n MergeIntersectionProperties,\n TransactionRequest,\n} from '../../types'\nimport type { Formatted, TransactionRequestFormatter } from '../../utils'\nimport { extract, format, formatTransactionRequest } from '../../utils'\n\nexport type FormattedTransactionRequest<\n TFormatter extends Formatter | undefined = Formatter,\n> = MergeIntersectionProperties<\n Formatted<TFormatter, TransactionRequest, true>,\n TransactionRequest\n>\n\nexport type SendTransactionArgs<TChain extends Chain = Chain> =\n FormattedTransactionRequest<TransactionRequestFormatter<TChain>> & {\n chain?: TChain\n }\n\nexport type SendTransactionResponse = Hash\n\nexport async function sendTransaction<TChain extends Chain>(\n client: WalletClient,\n {\n chain,\n from,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n ...rest\n }: SendTransactionArgs<TChain>,\n): Promise<SendTransactionResponse> {\n if (\n maxFeePerGas !== undefined &&\n maxPriorityFeePerGas !== undefined &&\n maxFeePerGas < maxPriorityFeePerGas\n )\n throw new InvalidGasArgumentsError()\n\n const formatter = chain?.formatters?.transactionRequest\n const request_ = format(\n {\n from,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { formatter }),\n } as TransactionRequest,\n {\n formatter: formatter || formatTransactionRequest,\n },\n )\n\n const hash = await client.request({\n method: 'eth_sendTransaction',\n params: [request_],\n })\n return hash\n}\n","import type { WalletClient } from '../../clients'\nimport { BaseError } from '../../errors'\nimport type { Address, ByteArray, Hex } from '../../types'\nimport { encodeHex } from '../../utils'\n\nexport type SignMessageArgs = {\n from: Address\n data: Hex | ByteArray\n}\n\nexport type SignMessageResponse = Hex\n\nexport async function signMessage(\n client: WalletClient,\n { from, data: data_ }: SignMessageArgs,\n): Promise<SignMessageResponse> {\n let data\n if (typeof data_ === 'string') {\n if (!data_.startsWith('0x'))\n throw new BaseError(\n `data (\"${data_}\") must be a hex value. Encode it first to a hex with the \\`encodeHex\\` util.`,\n {\n docsPath: '/TODO',\n },\n )\n data = data_\n } else {\n data = encodeHex(data_)\n }\n const signed = await client.request({\n method: 'personal_sign',\n params: [data, from],\n })\n return signed\n}\n","import type { WalletClient } from '../../clients'\nimport { Chain } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type SwitchChainArgs = { id: Chain['id'] }\n\nexport async function switchChain(\n client: WalletClient,\n { id }: SwitchChainArgs,\n) {\n await client.request({\n method: 'wallet_switchEthereumChain',\n params: [\n {\n chainId: numberToHex(id),\n },\n ],\n })\n}\n","import type { WalletClient } from '../../clients'\nimport type { WatchAssetParams } from '../../types/eip1193'\n\nexport type WatchAssetArgs = WatchAssetParams\nexport type WatchAssetResponse = boolean\n\nexport async function watchAsset(\n client: WalletClient,\n params: WatchAssetParams,\n): Promise<WatchAssetResponse> {\n const added = await client.request({\n method: 'wallet_watchAsset',\n params: [params],\n })\n return added\n}\n","import { Abi } from 'abitype'\n\nimport type { WalletClient } from '../../clients'\nimport type { Chain, ContractConfig, GetValue } from '../../types'\nimport { EncodeFunctionDataArgs, encodeFunctionData } from '../../utils'\nimport {\n sendTransaction,\n SendTransactionArgs,\n SendTransactionResponse,\n} from './sendTransaction'\n\nexport type WriteContractArgs<\n TChain extends Chain = Chain,\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = string,\n> = Omit<SendTransactionArgs<TChain>, 'to' | 'data' | 'value'> & {\n value?: GetValue<TAbi, TFunctionName, SendTransactionArgs<TChain>['value']>\n} & ContractConfig<TAbi, TFunctionName, 'payable' | 'nonpayable'>\n\nexport type WriteContractResponse = SendTransactionResponse\n\nexport async function writeContract<\n TChain extends Chain,\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string,\n>(\n client: WalletClient,\n {\n abi,\n address,\n args,\n functionName,\n ...request\n }: WriteContractArgs<TChain, TAbi, TFunctionName>,\n): Promise<WriteContractResponse> {\n const data = encodeFunctionData({\n abi,\n args,\n functionName,\n } as unknown as EncodeFunctionDataArgs<TAbi, TFunctionName>)\n const hash = await sendTransaction(client, {\n data,\n to: address,\n ...request,\n } as unknown as SendTransactionArgs<TChain>)\n return hash\n}\n","import { Abi, Narrow } from 'abitype'\nimport { WalletClient } from '../../clients'\n\nimport { Chain, ExtractConstructorArgsFromAbi, Hex } from '../../types'\nimport { encodeDeployData } from '../../utils'\nimport {\n sendTransaction,\n SendTransactionArgs,\n SendTransactionResponse,\n} from '../wallet'\n\nexport type DeployContractArgs<\n TChain extends Chain = Chain,\n TAbi extends Abi | readonly unknown[] = Abi,\n> = Omit<\n SendTransactionArgs<TChain>,\n 'accessList' | 'to' | 'data' | 'value'\n> & {\n abi: Narrow<TAbi>\n bytecode: Hex\n} & ExtractConstructorArgsFromAbi<TAbi>\n\nexport type DeployContractResponse = SendTransactionResponse\n\nexport function deployContract<TChain extends Chain, TAbi extends Abi>(\n walletClient: WalletClient,\n { abi, args, bytecode, ...request }: DeployContractArgs<TChain, TAbi>,\n): Promise<DeployContractResponse> {\n const calldata = encodeDeployData({\n abi,\n args,\n bytecode,\n } as unknown as DeployContractArgs<TChain, TAbi>)\n return sendTransaction(walletClient, {\n ...request,\n data: calldata,\n } as unknown as SendTransactionArgs<TChain>)\n}\n"]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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; }var __defProp = Object.defineProperty;
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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; }var __defProp = Object.defineProperty;
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
3
3
|
var __publicField = (obj, key, value) => {
|
4
4
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
@@ -9,7 +9,7 @@ var __publicField = (obj, key, value) => {
|
|
9
9
|
var package_default = {
|
10
10
|
name: "viem",
|
11
11
|
description: "TypeScript Interface for Ethereum",
|
12
|
-
version: "0.0.1-alpha.
|
12
|
+
version: "0.0.1-alpha.25",
|
13
13
|
scripts: {
|
14
14
|
anvil: "source .env && anvil --fork-url $VITE_ANVIL_FORK_URL --fork-block-number $VITE_ANVIL_BLOCK_NUMBER --block-time $VITE_ANVIL_BLOCK_TIME",
|
15
15
|
bench: "vitest bench --no-threads",
|
@@ -25,7 +25,6 @@ var package_default = {
|
|
25
25
|
lint: "rome check .",
|
26
26
|
"lint:fix": "pnpm lint --apply-suggested",
|
27
27
|
playground: "pnpm --filter playground-dev dev",
|
28
|
-
"playground:benchmark": "pnpm --filter playground-benchmark dev",
|
29
28
|
postinstall: "pnpm dev && pnpm contracts:build",
|
30
29
|
preinstall: "npx only-allow pnpm",
|
31
30
|
prepublishOnly: "pnpm ts-node scripts/generate-package-json.ts",
|
@@ -37,13 +36,14 @@ var package_default = {
|
|
37
36
|
typecheck: "tsc --noEmit"
|
38
37
|
},
|
39
38
|
files: [
|
40
|
-
"/actions",
|
41
39
|
"/chains",
|
40
|
+
"/contract",
|
42
41
|
"/dist",
|
43
|
-
"/
|
42
|
+
"/ens",
|
44
43
|
"/src",
|
45
44
|
"/types",
|
46
45
|
"/utils",
|
46
|
+
"/wallet",
|
47
47
|
"/window"
|
48
48
|
],
|
49
49
|
exports: {
|
@@ -57,10 +57,10 @@ var package_default = {
|
|
57
57
|
module: "./dist/chains.mjs",
|
58
58
|
default: "./dist/chains.js"
|
59
59
|
},
|
60
|
-
"./
|
61
|
-
types: "./dist/
|
62
|
-
module: "./dist/
|
63
|
-
default: "./dist/
|
60
|
+
"./contract": {
|
61
|
+
types: "./dist/contract.d.ts",
|
62
|
+
module: "./dist/contract.mjs",
|
63
|
+
default: "./dist/contract.js"
|
64
64
|
},
|
65
65
|
"./ens": {
|
66
66
|
types: "./dist/ens.d.ts",
|
@@ -100,9 +100,12 @@ var package_default = {
|
|
100
100
|
sideEffects: false,
|
101
101
|
dependencies: {
|
102
102
|
"@noble/hashes": "^1.1.2",
|
103
|
-
"@wagmi/chains": "~0.2.
|
103
|
+
"@wagmi/chains": "~0.2.8",
|
104
104
|
abitype: "~0.3.0",
|
105
|
-
"idna-uts46-hx": "^4.1.2"
|
105
|
+
"idna-uts46-hx": "^4.1.2",
|
106
|
+
"isomorphic-unfetch": "^4.0.2",
|
107
|
+
"isomorphic-ws": "^5.0.0",
|
108
|
+
ws: "^8.12.0"
|
106
109
|
},
|
107
110
|
devDependencies: {
|
108
111
|
"@actions/core": "^1.10.0",
|
@@ -110,28 +113,27 @@ var package_default = {
|
|
110
113
|
"@adraffy/ens-normalize": "^1.8.9",
|
111
114
|
"@changesets/changelog-github": "^0.4.5",
|
112
115
|
"@changesets/cli": "^2.23.2",
|
113
|
-
"@testing-library/jest-dom": "^5.16.5",
|
114
116
|
"@types/dedent": "^0.7.0",
|
115
117
|
"@types/fs-extra": "^9.0.13",
|
116
118
|
"@types/node": "^17.0.45",
|
119
|
+
"@types/ws": "^8.5.4",
|
117
120
|
"@vitest/coverage-c8": "^0.24.3",
|
118
121
|
"@vitest/ui": "^0.19.1",
|
119
|
-
"@wagmi/cli": "^0.1.
|
122
|
+
"@wagmi/cli": "^0.1.6",
|
120
123
|
bundlewatch: "^0.3.3",
|
121
124
|
dedent: "^0.7.0",
|
122
|
-
esbuild: "^0.16.
|
125
|
+
esbuild: "^0.16.17",
|
123
126
|
"esbuild-register": "^3.4.2",
|
124
127
|
ethers: "^5.7.2",
|
125
128
|
"ethers@6": "npm:ethers@^6.0.2",
|
126
129
|
execa: "^6.1.0",
|
127
130
|
"fs-extra": "^10.1.0",
|
128
|
-
jsdom: "^20.0.0",
|
129
131
|
rome: "^11.0.0",
|
130
132
|
"simple-git-hooks": "^2.8.1",
|
131
|
-
tsup: "^6.
|
133
|
+
tsup: "^6.6.0",
|
132
134
|
typescript: "^4.9.4",
|
133
|
-
vite: "^3.
|
134
|
-
vitest: "^0.25.
|
135
|
+
vite: "^3.2.5",
|
136
|
+
vitest: "^0.25.8",
|
135
137
|
web3: "^1.8.1"
|
136
138
|
},
|
137
139
|
license: "MIT",
|
@@ -298,7 +300,7 @@ var AbiErrorSignatureNotFoundError = class extends BaseError {
|
|
298
300
|
[
|
299
301
|
`Encoded error signature "${signature}" not found on ABI.`,
|
300
302
|
"Make sure you are using the correct ABI and that the error exists on it.",
|
301
|
-
`You can look up the signature
|
303
|
+
`You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`
|
302
304
|
].join("\n"),
|
303
305
|
{
|
304
306
|
docsPath: docsPath5
|
@@ -307,6 +309,21 @@ var AbiErrorSignatureNotFoundError = class extends BaseError {
|
|
307
309
|
__publicField(this, "name", "AbiErrorSignatureNotFoundError");
|
308
310
|
}
|
309
311
|
};
|
312
|
+
var AbiEventSignatureNotFoundError = class extends BaseError {
|
313
|
+
constructor(signature, { docsPath: docsPath5 }) {
|
314
|
+
super(
|
315
|
+
[
|
316
|
+
`Encoded event signature "${signature}" not found on ABI.`,
|
317
|
+
"Make sure you are using the correct ABI and that the event exists on it.",
|
318
|
+
`You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`
|
319
|
+
].join("\n"),
|
320
|
+
{
|
321
|
+
docsPath: docsPath5
|
322
|
+
}
|
323
|
+
);
|
324
|
+
__publicField(this, "name", "AbiEventSignatureNotFoundError");
|
325
|
+
}
|
326
|
+
};
|
310
327
|
var AbiEventNotFoundError = class extends BaseError {
|
311
328
|
constructor(eventName, { docsPath: docsPath5 }) {
|
312
329
|
super(
|
@@ -356,7 +373,7 @@ var AbiFunctionSignatureNotFoundError = class extends BaseError {
|
|
356
373
|
[
|
357
374
|
`Encoded function signature "${signature}" not found on ABI.`,
|
358
375
|
"Make sure you are using the correct ABI and that the function exists on it.",
|
359
|
-
`You can look up the signature
|
376
|
+
`You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`
|
360
377
|
].join("\n"),
|
361
378
|
{
|
362
379
|
docsPath: docsPath5
|
@@ -431,6 +448,30 @@ var BlockNotFoundError = class extends BaseError {
|
|
431
448
|
}
|
432
449
|
};
|
433
450
|
|
451
|
+
// src/errors/chain.ts
|
452
|
+
var ChainDoesNotSupportContract = class extends BaseError {
|
453
|
+
constructor({
|
454
|
+
blockNumber,
|
455
|
+
chain,
|
456
|
+
contract
|
457
|
+
}) {
|
458
|
+
super(
|
459
|
+
`Chain "${chain.name}" does not support contract "${contract.name}".`,
|
460
|
+
{
|
461
|
+
metaMessages: [
|
462
|
+
"This could be due to any of the following:",
|
463
|
+
...blockNumber && contract.blockCreated && contract.blockCreated > blockNumber ? [
|
464
|
+
`- The contract "${contract.name}" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`
|
465
|
+
] : [
|
466
|
+
`- The chain does not have the contract "${contract.name}" configured.`
|
467
|
+
]
|
468
|
+
]
|
469
|
+
}
|
470
|
+
);
|
471
|
+
__publicField(this, "name", "ChainDoesNotSupportContract");
|
472
|
+
}
|
473
|
+
};
|
474
|
+
|
434
475
|
// src/constants/abis.ts
|
435
476
|
var multicall3Abi = [
|
436
477
|
{
|
@@ -534,7 +575,8 @@ var ContractFunctionExecutionError = class extends BaseError {
|
|
534
575
|
docsPath: docsPath5,
|
535
576
|
metaMessages: [
|
536
577
|
...cause.metaMessages ? [...cause.metaMessages, " "] : [],
|
537
|
-
contractAddress && `Contract: ${
|
578
|
+
contractAddress && `Contract: ${/* c8 ignore start */
|
579
|
+
process.env.TEST ? "0x0000000000000000000000000000000000000000" : contractAddress}`,
|
538
580
|
functionWithParams && `Function: ${functionWithParams}`,
|
539
581
|
formattedArgs && formattedArgs !== "()" && `Arguments: ${[...Array(_nullishCoalesce(_optionalChain([functionName, 'optionalAccess', _4 => _4.length]), () => ( 0))).keys()].map(() => " ").join("")}${formattedArgs}`,
|
540
582
|
sender && `Sender: ${sender}`
|
@@ -1710,7 +1752,10 @@ function encodeTuple(value, { param }) {
|
|
1710
1752
|
}
|
1711
1753
|
function getArrayComponents(type) {
|
1712
1754
|
const matches = type.match(/^(.*)\[(\d+)?\]$/);
|
1713
|
-
return matches ?
|
1755
|
+
return matches ? (
|
1756
|
+
// Return `null` if the array is dynamic.
|
1757
|
+
[matches[2] ? Number(matches[2]) : null, matches[1]]
|
1758
|
+
) : void 0;
|
1714
1759
|
}
|
1715
1760
|
|
1716
1761
|
// src/utils/abi/decodeAbi.ts
|
@@ -1952,6 +1997,61 @@ function decodeErrorResult({
|
|
1952
1997
|
};
|
1953
1998
|
}
|
1954
1999
|
|
2000
|
+
// src/utils/abi/decodeEventLog.ts
|
2001
|
+
function decodeEventLog({
|
2002
|
+
abi,
|
2003
|
+
data,
|
2004
|
+
topics
|
2005
|
+
}) {
|
2006
|
+
const [signature, ...argTopics] = topics;
|
2007
|
+
const abiItem = abi.find(
|
2008
|
+
(x) => signature === getEventSignature(formatAbiItem(x))
|
2009
|
+
);
|
2010
|
+
if (!(abiItem && "name" in abiItem))
|
2011
|
+
throw new AbiEventSignatureNotFoundError(signature, {
|
2012
|
+
docsPath: "/docs/contract/decodeEventLog"
|
2013
|
+
});
|
2014
|
+
const { name, inputs } = abiItem;
|
2015
|
+
const isUnnamed = _optionalChain([inputs, 'optionalAccess', _22 => _22.some, 'call', _23 => _23((x) => !("name" in x && x.name))]);
|
2016
|
+
let args = isUnnamed ? [] : {};
|
2017
|
+
for (let i = 0; i < inputs.length; i++) {
|
2018
|
+
const param = inputs[i];
|
2019
|
+
const topic = argTopics[i];
|
2020
|
+
if (topic === null)
|
2021
|
+
args[param.name || i] = null;
|
2022
|
+
if (!topic)
|
2023
|
+
continue;
|
2024
|
+
if (Array.isArray(topic)) {
|
2025
|
+
args[param.name || i] = topic.map((t) => decodeTopic({ param, value: t }));
|
2026
|
+
} else {
|
2027
|
+
args[param.name || i] = decodeTopic({ param, value: topic });
|
2028
|
+
}
|
2029
|
+
}
|
2030
|
+
if (data) {
|
2031
|
+
const params = inputs.filter((x) => !("indexed" in x && x.indexed));
|
2032
|
+
const decodedData = decodeAbi({ params, data });
|
2033
|
+
if (decodedData) {
|
2034
|
+
if (isUnnamed)
|
2035
|
+
args = [...args, ...decodedData];
|
2036
|
+
else {
|
2037
|
+
for (let i = 0; i < params.length; i++) {
|
2038
|
+
args[params[i].name] = decodedData[i];
|
2039
|
+
}
|
2040
|
+
}
|
2041
|
+
}
|
2042
|
+
}
|
2043
|
+
return {
|
2044
|
+
eventName: name,
|
2045
|
+
args: Object.values(args).length > 0 ? args : void 0
|
2046
|
+
};
|
2047
|
+
}
|
2048
|
+
function decodeTopic({ param, value }) {
|
2049
|
+
if (param.type === "string" || param.type === "bytes" || param.type === "tuple" || param.type.match(/^(.*)\[(\d+)?\]$/))
|
2050
|
+
return value;
|
2051
|
+
const decodedArg = decodeAbi({ params: [param], data: value }) || [];
|
2052
|
+
return decodedArg[0];
|
2053
|
+
}
|
2054
|
+
|
1955
2055
|
// src/utils/abi/decodeFunctionData.ts
|
1956
2056
|
function decodeFunctionData({ abi, data }) {
|
1957
2057
|
const signature = slice(data, 0, 4);
|
@@ -2030,6 +2130,7 @@ function isArgOfType(arg, abiParameter) {
|
|
2030
2130
|
return Array.isArray(arg) && arg.every(
|
2031
2131
|
(x) => isArgOfType(x, {
|
2032
2132
|
...abiParameter,
|
2133
|
+
// Pop off `[]` or `[M]` from end of type
|
2033
2134
|
type: abiParameterType.replace(/(\[[0-9]{0,}\])$/, "")
|
2034
2135
|
})
|
2035
2136
|
);
|
@@ -2121,8 +2222,8 @@ function encodeEventTopics({ abi, eventName, args }) {
|
|
2121
2222
|
const signature = getEventSignature(definition);
|
2122
2223
|
let topics = [];
|
2123
2224
|
if (args && "inputs" in abiItem) {
|
2124
|
-
const args_ = Array.isArray(args) ? args : _nullishCoalesce(_optionalChain([abiItem, 'access',
|
2125
|
-
topics = _nullishCoalesce(_optionalChain([abiItem, 'access',
|
2225
|
+
const args_ = Array.isArray(args) ? args : _nullishCoalesce(_optionalChain([abiItem, 'access', _24 => _24.inputs, 'optionalAccess', _25 => _25.map, 'call', _26 => _26((x) => args[x.name])]), () => ( []));
|
2226
|
+
topics = _nullishCoalesce(_optionalChain([abiItem, 'access', _27 => _27.inputs, 'optionalAccess', _28 => _28.filter, 'call', _29 => _29((param) => "indexed" in param && param.indexed), 'access', _30 => _30.map, 'call', _31 => _31(
|
2126
2227
|
(param, i) => Array.isArray(args_[i]) ? args_[i].map(
|
2127
2228
|
(_, j) => encodeArg({ param, value: args_[i][j] })
|
2128
2229
|
) : args_[i] ? encodeArg({ param, value: args_[i] }) : null
|
@@ -2242,33 +2343,6 @@ function defineChain(chain) {
|
|
2242
2343
|
return chain;
|
2243
2344
|
}
|
2244
2345
|
|
2245
|
-
// src/utils/ens/normalize.ts
|
2246
|
-
var _idnauts46hx = require('idna-uts46-hx');
|
2247
|
-
function normalize(name) {
|
2248
|
-
return _idnauts46hx.toUnicode.call(void 0, name, { useStd3ASCII: true });
|
2249
|
-
}
|
2250
|
-
|
2251
|
-
// src/utils/ens/labelhash.ts
|
2252
|
-
function labelhash(label) {
|
2253
|
-
let result = new Uint8Array(32).fill(0);
|
2254
|
-
if (!label)
|
2255
|
-
return bytesToHex(result);
|
2256
|
-
return keccak256(stringToBytes(normalize(label)));
|
2257
|
-
}
|
2258
|
-
|
2259
|
-
// src/utils/ens/namehash.ts
|
2260
|
-
function namehash(name) {
|
2261
|
-
let result = new Uint8Array(32).fill(0);
|
2262
|
-
if (!name)
|
2263
|
-
return bytesToHex(result);
|
2264
|
-
const labels = normalize(name).split(".");
|
2265
|
-
for (let i = labels.length - 1; i >= 0; i -= 1) {
|
2266
|
-
const hashed = keccak256(stringToBytes(labels[i]), "bytes");
|
2267
|
-
result = keccak256(concat([result, hashed]), "bytes");
|
2268
|
-
}
|
2269
|
-
return bytesToHex(result);
|
2270
|
-
}
|
2271
|
-
|
2272
2346
|
// src/utils/formatters/format.ts
|
2273
2347
|
function format3(data, { formatter }) {
|
2274
2348
|
return formatter(data);
|
@@ -2288,7 +2362,7 @@ function defineFormatter({
|
|
2288
2362
|
}
|
2289
2363
|
return {
|
2290
2364
|
...formatted,
|
2291
|
-
..._optionalChain([formatOverride, 'optionalCall',
|
2365
|
+
..._optionalChain([formatOverride, 'optionalCall', _32 => _32(data)])
|
2292
2366
|
};
|
2293
2367
|
};
|
2294
2368
|
}
|
@@ -2328,7 +2402,7 @@ var defineTransaction = defineFormatter({ format: formatTransaction });
|
|
2328
2402
|
|
2329
2403
|
// src/utils/formatters/block.ts
|
2330
2404
|
function formatBlock(block) {
|
2331
|
-
const transactions = _optionalChain([block, 'access',
|
2405
|
+
const transactions = _optionalChain([block, 'access', _33 => _33.transactions, 'optionalAccess', _34 => _34.map, 'call', _35 => _35((transaction) => {
|
2332
2406
|
if (typeof transaction === "string")
|
2333
2407
|
return transaction;
|
2334
2408
|
return formatTransaction(transaction);
|
@@ -2354,7 +2428,7 @@ function extract(value, { formatter }) {
|
|
2354
2428
|
return {};
|
2355
2429
|
const keys = Object.keys(formatter({}));
|
2356
2430
|
return keys.reduce((data, key) => {
|
2357
|
-
if (_optionalChain([value, 'optionalAccess',
|
2431
|
+
if (_optionalChain([value, 'optionalAccess', _36 => _36.hasOwnProperty, 'call', _37 => _37(key)])) {
|
2358
2432
|
;
|
2359
2433
|
data[key] = value[key];
|
2360
2434
|
}
|
@@ -2368,7 +2442,7 @@ function formatFeeHistory(feeHistory) {
|
|
2368
2442
|
baseFeePerGas: feeHistory.baseFeePerGas.map((value) => BigInt(value)),
|
2369
2443
|
gasUsedRatio: feeHistory.gasUsedRatio,
|
2370
2444
|
oldestBlock: BigInt(feeHistory.oldestBlock),
|
2371
|
-
reward: _optionalChain([feeHistory, 'access',
|
2445
|
+
reward: _optionalChain([feeHistory, 'access', _38 => _38.reward, 'optionalAccess', _39 => _39.map, 'call', _40 => _40(
|
2372
2446
|
(reward) => reward.map((value) => BigInt(value))
|
2373
2447
|
)])
|
2374
2448
|
};
|
@@ -2422,6 +2496,10 @@ var defineTransactionRequest = defineFormatter({
|
|
2422
2496
|
format: formatTransactionRequest
|
2423
2497
|
});
|
2424
2498
|
|
2499
|
+
// src/utils/rpc.ts
|
2500
|
+
var _isomorphicunfetch = require('isomorphic-unfetch'); var _isomorphicunfetch2 = _interopRequireDefault(_isomorphicunfetch);
|
2501
|
+
var _isomorphicws = require('isomorphic-ws'); var _isomorphicws2 = _interopRequireDefault(_isomorphicws);
|
2502
|
+
|
2425
2503
|
// src/utils/promise/withCache.ts
|
2426
2504
|
var promiseCache = /* @__PURE__ */ new Map();
|
2427
2505
|
var responseCache = /* @__PURE__ */ new Map();
|
@@ -2449,7 +2527,7 @@ async function withCache(fn, { cacheKey, maxAge = Infinity }) {
|
|
2449
2527
|
const cache = getCache(cacheKey);
|
2450
2528
|
const response = cache.response.get();
|
2451
2529
|
if (response && maxAge > 0) {
|
2452
|
-
const age = new Date().getTime() - response.created.getTime();
|
2530
|
+
const age = (/* @__PURE__ */ new Date()).getTime() - response.created.getTime();
|
2453
2531
|
if (age < maxAge)
|
2454
2532
|
return response.data;
|
2455
2533
|
}
|
@@ -2460,7 +2538,7 @@ async function withCache(fn, { cacheKey, maxAge = Infinity }) {
|
|
2460
2538
|
}
|
2461
2539
|
const data = await promise;
|
2462
2540
|
cache.promise.clear();
|
2463
|
-
cache.response.set({ created: new Date(), data });
|
2541
|
+
cache.response.set({ created: /* @__PURE__ */ new Date(), data });
|
2464
2542
|
return data;
|
2465
2543
|
}
|
2466
2544
|
|
@@ -2520,7 +2598,7 @@ function withTimeout(fn, {
|
|
2520
2598
|
}
|
2521
2599
|
}, timeout);
|
2522
2600
|
}
|
2523
|
-
resolve(await fn({ signal: _optionalChain([controller, 'optionalAccess',
|
2601
|
+
resolve(await fn({ signal: _optionalChain([controller, 'optionalAccess', _41 => _41.signal]) }));
|
2524
2602
|
} catch (err) {
|
2525
2603
|
if (err.name === "AbortError")
|
2526
2604
|
reject(errorInstance);
|
@@ -2551,7 +2629,7 @@ async function http(url, {
|
|
2551
2629
|
const response = await withRetry(
|
2552
2630
|
() => withTimeout(
|
2553
2631
|
async ({ signal }) => {
|
2554
|
-
const response2 = await
|
2632
|
+
const response2 = await _isomorphicunfetch2.default.call(void 0, url, {
|
2555
2633
|
headers: {
|
2556
2634
|
"Content-Type": "application/json"
|
2557
2635
|
},
|
@@ -2569,8 +2647,8 @@ async function http(url, {
|
|
2569
2647
|
),
|
2570
2648
|
{
|
2571
2649
|
delay: ({ count, data: data2 }) => {
|
2572
|
-
const retryAfter = _optionalChain([data2, 'optionalAccess',
|
2573
|
-
if (_optionalChain([retryAfter, 'optionalAccess',
|
2650
|
+
const retryAfter = _optionalChain([data2, 'optionalAccess', _42 => _42.headers, 'access', _43 => _43.get, 'call', _44 => _44("Retry-After")]);
|
2651
|
+
if (_optionalChain([retryAfter, 'optionalAccess', _45 => _45.match, 'call', _46 => _46(/\d/)]))
|
2574
2652
|
return parseInt(retryAfter) * 1e3;
|
2575
2653
|
return ~~((Math.random() + 0.5) * (1 << count)) * retryDelay;
|
2576
2654
|
},
|
@@ -2585,7 +2663,7 @@ async function http(url, {
|
|
2585
2663
|
}
|
2586
2664
|
);
|
2587
2665
|
let data;
|
2588
|
-
if (_optionalChain([response, 'access',
|
2666
|
+
if (_optionalChain([response, 'access', _47 => _47.headers, 'access', _48 => _48.get, 'call', _49 => _49("Content-Type"), 'optionalAccess', _50 => _50.startsWith, 'call', _51 => _51("application/json")])) {
|
2589
2667
|
data = await response.json();
|
2590
2668
|
} else {
|
2591
2669
|
data = await response.text();
|
@@ -2610,7 +2688,7 @@ async function getSocket(url_) {
|
|
2610
2688
|
let socket = sockets.get(urlKey);
|
2611
2689
|
if (socket)
|
2612
2690
|
return socket;
|
2613
|
-
const webSocket2 = new
|
2691
|
+
const webSocket2 = new (0, _isomorphicws2.default)(url);
|
2614
2692
|
const requests = /* @__PURE__ */ new Map();
|
2615
2693
|
const subscriptions = /* @__PURE__ */ new Map();
|
2616
2694
|
const onMessage = ({ data }) => {
|
@@ -2631,7 +2709,7 @@ async function getSocket(url_) {
|
|
2631
2709
|
};
|
2632
2710
|
webSocket2.addEventListener("close", onClose);
|
2633
2711
|
webSocket2.addEventListener("message", onMessage);
|
2634
|
-
if (webSocket2.readyState ===
|
2712
|
+
if (webSocket2.readyState === _isomorphicws2.default.CONNECTING) {
|
2635
2713
|
await new Promise((resolve, reject) => {
|
2636
2714
|
if (!webSocket2)
|
2637
2715
|
return;
|
@@ -2663,15 +2741,15 @@ function webSocket(socket, {
|
|
2663
2741
|
if (typeof message.id === "number" && id_ !== message.id)
|
2664
2742
|
return;
|
2665
2743
|
if (message.error) {
|
2666
|
-
_optionalChain([onError, 'optionalCall',
|
2744
|
+
_optionalChain([onError, 'optionalCall', _52 => _52(new RpcError({ body, error: message.error, url: socket.url }))]);
|
2667
2745
|
} else {
|
2668
|
-
_optionalChain([onData, 'optionalCall',
|
2746
|
+
_optionalChain([onData, 'optionalCall', _53 => _53(message)]);
|
2669
2747
|
}
|
2670
2748
|
if (body.method === "eth_subscribe" && typeof message.result === "string") {
|
2671
2749
|
socket.subscriptions.set(message.result, callback);
|
2672
2750
|
}
|
2673
2751
|
if (body.method === "eth_unsubscribe") {
|
2674
|
-
socket.subscriptions.delete(_optionalChain([body, 'access',
|
2752
|
+
socket.subscriptions.delete(_optionalChain([body, 'access', _54 => _54.params, 'optionalAccess', _55 => _55[0]]));
|
2675
2753
|
}
|
2676
2754
|
};
|
2677
2755
|
socket.requests.set(id_, callback);
|
@@ -2925,5 +3003,6 @@ function parseGwei(ether, unit = "wei") {
|
|
2925
3003
|
|
2926
3004
|
|
2927
3005
|
|
2928
|
-
|
2929
|
-
|
3006
|
+
|
3007
|
+
exports.BaseError = BaseError; exports.AbiConstructorNotFoundError = AbiConstructorNotFoundError; exports.AbiConstructorParamsNotFoundError = AbiConstructorParamsNotFoundError; exports.AbiDecodingDataSizeInvalidError = AbiDecodingDataSizeInvalidError; exports.AbiDecodingZeroDataError = AbiDecodingZeroDataError; exports.AbiEncodingArrayLengthMismatchError = AbiEncodingArrayLengthMismatchError; exports.AbiEncodingLengthMismatchError = AbiEncodingLengthMismatchError; exports.AbiErrorInputsNotFoundError = AbiErrorInputsNotFoundError; exports.AbiErrorNotFoundError = AbiErrorNotFoundError; exports.AbiErrorSignatureNotFoundError = AbiErrorSignatureNotFoundError; exports.AbiEventNotFoundError = AbiEventNotFoundError; exports.AbiFunctionNotFoundError = AbiFunctionNotFoundError; exports.AbiFunctionOutputsNotFoundError = AbiFunctionOutputsNotFoundError; exports.AbiFunctionSignatureNotFoundError = AbiFunctionSignatureNotFoundError; exports.InvalidAbiEncodingTypeError = InvalidAbiEncodingTypeError; exports.InvalidAbiDecodingTypeError = InvalidAbiDecodingTypeError; exports.InvalidArrayError = InvalidArrayError; exports.InvalidDefinitionTypeError = InvalidDefinitionTypeError; exports.InvalidAddressError = InvalidAddressError; exports.BlockNotFoundError = BlockNotFoundError; exports.ChainDoesNotSupportContract = ChainDoesNotSupportContract; exports.multicall3Abi = multicall3Abi; exports.panicReasons = panicReasons; exports.concat = concat; exports.isBytes = isBytes; exports.isHex = isHex; exports.pad = pad; exports.padHex = padHex; exports.padBytes = padBytes; exports.trim = trim; exports.size = size; exports.slice = slice; exports.sliceBytes = sliceBytes; exports.sliceHex = sliceHex; exports.boolToHex = boolToHex; exports.bytesToHex = bytesToHex; exports.encodeHex = encodeHex; exports.numberToHex = numberToHex; exports.stringToHex = stringToHex; exports.boolToBytes = boolToBytes; exports.encodeBytes = encodeBytes; exports.hexToBytes = hexToBytes; exports.numberToBytes = numberToBytes; exports.stringToBytes = stringToBytes; exports.encodeRlp = encodeRlp; exports.decodeHex = decodeHex; exports.hexToBigInt = hexToBigInt; exports.hexToBool = hexToBool; exports.hexToNumber = hexToNumber; exports.hexToString = hexToString; exports.decodeBytes = decodeBytes; exports.bytesToBigint = bytesToBigint; exports.bytesToBool = bytesToBool; exports.bytesToNumber = bytesToNumber; exports.bytesToString = bytesToString; exports.decodeRlp = decodeRlp; exports.extractFunctionParts = extractFunctionParts; exports.extractFunctionName = extractFunctionName; exports.extractFunctionParams = extractFunctionParams; exports.extractFunctionType = extractFunctionType; exports.getContractError = getContractError; exports.keccak256 = keccak256; exports.getEventSignature = getEventSignature; exports.getFunctionSignature = getFunctionSignature; exports.checksumAddress = checksumAddress; exports.getAddress = getAddress; exports.getContractAddress = getContractAddress; exports.getCreateAddress = getCreateAddress; exports.getCreate2Address = getCreate2Address; exports.isAddress = isAddress; exports.isAddressEqual = isAddressEqual; exports.encodeAbi = encodeAbi; exports.decodeAbi = decodeAbi; exports.formatAbiItem = formatAbiItem; exports.decodeErrorResult = decodeErrorResult; exports.decodeEventLog = decodeEventLog; exports.decodeFunctionData = decodeFunctionData; exports.getAbiItem = getAbiItem; exports.decodeFunctionResult = decodeFunctionResult; exports.encodeDeployData = encodeDeployData; exports.encodeErrorResult = encodeErrorResult; exports.encodeEventTopics = encodeEventTopics; exports.encodeFunctionData = encodeFunctionData; exports.encodeFunctionResult = encodeFunctionResult; exports.formatAbiItemWithArgs = formatAbiItemWithArgs; exports.buildRequest = buildRequest; exports.defineChain = defineChain; exports.format = format3; exports.defineFormatter = defineFormatter; exports.transactionType = transactionType; exports.formatTransaction = formatTransaction; exports.defineTransaction = defineTransaction; exports.formatBlock = formatBlock; exports.defineBlock = defineBlock; exports.extract = extract; exports.formatFeeHistory = formatFeeHistory; exports.formatLog = formatLog; exports.formatTransactionReceipt = formatTransactionReceipt; exports.defineTransactionReceipt = defineTransactionReceipt; exports.formatTransactionRequest = formatTransactionRequest; exports.defineTransactionRequest = defineTransactionRequest; exports.getCache = getCache; exports.withCache = withCache; exports.wait = wait; exports.stringify = stringify; exports.getSocket = getSocket; exports.rpc = rpc; exports.etherUnits = etherUnits; exports.gweiUnits = gweiUnits; exports.weiUnits = weiUnits; exports.formatUnit = formatUnit; exports.formatEther = formatEther; exports.formatGwei = formatGwei; exports.parseUnit = parseUnit; exports.parseEther = parseEther; exports.parseGwei = parseGwei; exports.ContractFunctionExecutionError = ContractFunctionExecutionError; exports.ContractFunctionRevertedError = ContractFunctionRevertedError; exports.ContractFunctionZeroDataError = ContractFunctionZeroDataError; exports.RawContractError = RawContractError; exports.SizeExceedsPaddingSizeError = SizeExceedsPaddingSizeError; exports.DataLengthTooLongError = DataLengthTooLongError; exports.DataLengthTooShortError = DataLengthTooShortError; exports.InvalidBytesBooleanError = InvalidBytesBooleanError; exports.InvalidHexBooleanError = InvalidHexBooleanError; exports.InvalidHexValueError = InvalidHexValueError; exports.OffsetOutOfBoundsError = OffsetOutOfBoundsError; exports.FilterTypeNotSupportedError = FilterTypeNotSupportedError; exports.RequestError = RequestError; exports.RpcRequestError = RpcRequestError; exports.ParseRpcError = ParseRpcError; exports.InvalidRequestRpcError = InvalidRequestRpcError; exports.MethodNotFoundRpcError = MethodNotFoundRpcError; exports.InvalidParamsRpcError = InvalidParamsRpcError; exports.InternalRpcError = InternalRpcError; exports.InvalidInputRpcError = InvalidInputRpcError; exports.ResourceNotFoundRpcError = ResourceNotFoundRpcError; exports.ResourceUnavailableRpcError = ResourceUnavailableRpcError; exports.TransactionRejectedRpcError = TransactionRejectedRpcError; exports.MethodNotSupportedRpcError = MethodNotSupportedRpcError; exports.LimitExceededRpcError = LimitExceededRpcError; exports.JsonRpcVersionUnsupportedError = JsonRpcVersionUnsupportedError; exports.UnknownRpcError = UnknownRpcError; exports.HttpRequestError = HttpRequestError; exports.WebSocketRequestError = WebSocketRequestError; exports.RpcError = RpcError; exports.TimeoutError = TimeoutError; exports.InvalidGasArgumentsError = InvalidGasArgumentsError; exports.TransactionNotFoundError = TransactionNotFoundError; exports.TransactionReceiptNotFoundError = TransactionReceiptNotFoundError; exports.WaitForTransactionReceiptTimeoutError = WaitForTransactionReceiptTimeoutError; exports.UrlRequiredError = UrlRequiredError;
|
3008
|
+
//# sourceMappingURL=chunk-THMRUG4D.js.map
|