viem 0.0.1-alpha.24 → 0.0.1-alpha.26

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 (510) hide show
  1. package/contract/package.json +4 -0
  2. package/dist/call-3476b8ee.d.ts +22 -0
  3. package/dist/{chain-afa13f5a.d.ts → chain-42de87e5.d.ts} +20 -14
  4. package/dist/{chain-e33d019b.d.ts → chain-b0cfb141.d.ts} +1 -1
  5. package/dist/chains.d.ts +20 -8
  6. package/dist/chains.js +46 -46
  7. package/dist/chains.mjs +1 -1
  8. package/dist/{chunk-3ARWEJ3G.mjs → chunk-BSAB6UH4.mjs} +18 -2
  9. package/dist/chunk-BSAB6UH4.mjs.map +1 -0
  10. package/dist/{chunk-4D5XG6XB.js → chunk-DSQO3E4F.js} +367 -429
  11. package/dist/chunk-DSQO3E4F.js.map +1 -0
  12. package/dist/{chunk-A2HXAZXC.js → chunk-LINNE4N4.js} +199 -161
  13. package/dist/chunk-LINNE4N4.js.map +1 -0
  14. package/dist/{chunk-LQVMDX5I.mjs → chunk-PRG3BBPZ.mjs} +397 -459
  15. package/dist/chunk-PRG3BBPZ.mjs.map +1 -0
  16. package/dist/{chunk-YQUC52RL.mjs → chunk-QSIX64VZ.mjs} +136 -98
  17. package/dist/chunk-QSIX64VZ.mjs.map +1 -0
  18. package/dist/{chunk-ZYSXBTBB.js → chunk-YTG4YXMB.js} +30 -14
  19. package/dist/chunk-YTG4YXMB.js.map +1 -0
  20. package/dist/{contract-70f4ddbe.d.ts → contract-9dd2f98b.d.ts} +44 -31
  21. package/dist/contract.d.ts +129 -0
  22. package/dist/contract.js +55 -0
  23. package/dist/{clients/index.js.map → contract.js.map} +0 -0
  24. package/dist/contract.mjs +55 -0
  25. package/dist/{clients/index.mjs.map → contract.mjs.map} +0 -0
  26. package/dist/{createClient-60e3ab98.d.ts → createClient-6689596e.d.ts} +11 -5
  27. package/dist/{createPublicClient-d3d12dc3.d.ts → createPublicClient-fd558574.d.ts} +3 -3
  28. package/dist/{createTestClient-5f4532c4.d.ts → createTestClient-bc1d9028.d.ts} +3 -3
  29. package/dist/{createWalletClient-9ec3df4f.d.ts → createWalletClient-4df88244.d.ts} +3 -3
  30. package/dist/decodeErrorResult-ac835649.d.ts +16 -0
  31. package/dist/{eip1193-9317a312.d.ts → eip1193-617a05ae.d.ts} +2 -2
  32. package/dist/ens.d.ts +82 -1
  33. package/dist/ens.js +208 -3
  34. package/dist/ens.js.map +1 -1
  35. package/dist/ens.mjs +209 -4
  36. package/dist/ens.mjs.map +1 -1
  37. package/dist/getAbiItem-d2e8bd76.d.ts +97 -0
  38. package/dist/index.d.ts +113 -180
  39. package/dist/index.js +259 -279
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.mjs +267 -287
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/public.d.ts +353 -10
  44. package/dist/public.js +3 -4
  45. package/dist/public.mjs +6 -7
  46. package/dist/readContract-c460f23a.d.ts +10 -0
  47. package/dist/rpc-8c10fc98.d.ts +119 -0
  48. package/dist/{sendTransaction-54a0d509.d.ts → sendTransaction-7ce442c0.d.ts} +3 -3
  49. package/dist/test.d.ts +160 -5
  50. package/dist/test.js +222 -18
  51. package/dist/test.js.map +1 -1
  52. package/dist/test.mjs +233 -29
  53. package/dist/test.mjs.map +1 -1
  54. package/dist/transactionReceipt-44dbf122.d.ts +26 -0
  55. package/dist/{transactionRequest-bdf57f7d.d.ts → transactionRequest-f437b4ba.d.ts} +1 -1
  56. package/dist/utils/index.d.ts +228 -21
  57. package/dist/utils/index.js +2 -6
  58. package/dist/utils/index.mjs +3 -7
  59. package/dist/wallet.d.ts +41 -7
  60. package/dist/wallet.js +3 -3
  61. package/dist/wallet.mjs +2 -2
  62. package/dist/watchEvent-569c9976.d.ts +41 -0
  63. package/dist/window.d.ts +2 -2
  64. package/ens/package.json +4 -0
  65. package/package.json +16 -12
  66. package/public/package.json +4 -0
  67. package/test/package.json +4 -0
  68. package/wallet/package.json +4 -0
  69. package/clients/package.json +0 -4
  70. package/dist/chunk-3ARWEJ3G.mjs.map +0 -1
  71. package/dist/chunk-4D5XG6XB.js.map +0 -1
  72. package/dist/chunk-6QTEW2BE.mjs +0 -260
  73. package/dist/chunk-6QTEW2BE.mjs.map +0 -1
  74. package/dist/chunk-A2HXAZXC.js.map +0 -1
  75. package/dist/chunk-KRPS5CIB.mjs +0 -256
  76. package/dist/chunk-KRPS5CIB.mjs.map +0 -1
  77. package/dist/chunk-LQVMDX5I.mjs.map +0 -1
  78. package/dist/chunk-N3IOPT3R.js +0 -256
  79. package/dist/chunk-N3IOPT3R.js.map +0 -1
  80. package/dist/chunk-YQUC52RL.mjs.map +0 -1
  81. package/dist/chunk-ZSTVHQ6J.js +0 -260
  82. package/dist/chunk-ZSTVHQ6J.js.map +0 -1
  83. package/dist/chunk-ZYSXBTBB.js.map +0 -1
  84. package/dist/clients/index.d.ts +0 -9
  85. package/dist/clients/index.js +0 -24
  86. package/dist/clients/index.mjs +0 -24
  87. package/dist/normalize-ef9240c0.d.ts +0 -33
  88. package/dist/parseGwei-492ab7dd.d.ts +0 -355
  89. package/dist/rpc-26932bae.d.ts +0 -61
  90. package/dist/stopImpersonatingAccount-c1a4b7e5.d.ts +0 -156
  91. package/dist/watchAsset-d59d6e35.d.ts +0 -38
  92. package/dist/watchPendingTransactions-ea21b31d.d.ts +0 -373
  93. package/dist/webSocket-775b4037.d.ts +0 -83
  94. package/src/_test/abis.ts +0 -1420
  95. package/src/_test/bench.ts +0 -15
  96. package/src/_test/constants.ts +0 -61
  97. package/src/_test/globalSetup.ts +0 -11
  98. package/src/_test/index.ts +0 -25
  99. package/src/_test/setup.ts +0 -8
  100. package/src/_test/utils.ts +0 -150
  101. package/src/actions/index.test.ts +0 -81
  102. package/src/actions/index.ts +0 -182
  103. package/src/actions/public/call.bench.ts +0 -48
  104. package/src/actions/public/call.test.ts +0 -99
  105. package/src/actions/public/call.ts +0 -97
  106. package/src/actions/public/createBlockFilter.bench.ts +0 -11
  107. package/src/actions/public/createBlockFilter.test.ts +0 -9
  108. package/src/actions/public/createBlockFilter.ts +0 -14
  109. package/src/actions/public/createContractEventFilter.test.ts +0 -119
  110. package/src/actions/public/createContractEventFilter.ts +0 -69
  111. package/src/actions/public/createEventFilter.test.ts +0 -245
  112. package/src/actions/public/createEventFilter.ts +0 -76
  113. package/src/actions/public/createPendingTransactionFilter.bench.ts +0 -11
  114. package/src/actions/public/createPendingTransactionFilter.test.ts +0 -9
  115. package/src/actions/public/createPendingTransactionFilter.ts +0 -14
  116. package/src/actions/public/deployContract.test.ts +0 -56
  117. package/src/actions/public/deployContract.ts +0 -38
  118. package/src/actions/public/estimateGas.bench.ts +0 -46
  119. package/src/actions/public/estimateGas.test.ts +0 -92
  120. package/src/actions/public/estimateGas.ts +0 -61
  121. package/src/actions/public/getBalance.test.ts +0 -83
  122. package/src/actions/public/getBalance.ts +0 -37
  123. package/src/actions/public/getBlock.bench.ts +0 -28
  124. package/src/actions/public/getBlock.test.ts +0 -575
  125. package/src/actions/public/getBlock.ts +0 -65
  126. package/src/actions/public/getBlockNumber.bench.ts +0 -28
  127. package/src/actions/public/getBlockNumber.test.ts +0 -27
  128. package/src/actions/public/getBlockNumber.ts +0 -32
  129. package/src/actions/public/getBlockTransactionCount.bench.ts +0 -15
  130. package/src/actions/public/getBlockTransactionCount.test.ts +0 -57
  131. package/src/actions/public/getBlockTransactionCount.ts +0 -52
  132. package/src/actions/public/getBytecode.test.ts +0 -27
  133. package/src/actions/public/getBytecode.ts +0 -32
  134. package/src/actions/public/getChainId.bench.ts +0 -15
  135. package/src/actions/public/getChainId.test.ts +0 -8
  136. package/src/actions/public/getChainId.ts +0 -7
  137. package/src/actions/public/getFeeHistory.bench.ts +0 -18
  138. package/src/actions/public/getFeeHistory.test.ts +0 -137
  139. package/src/actions/public/getFeeHistory.ts +0 -44
  140. package/src/actions/public/getFilterChanges.bench.ts +0 -13
  141. package/src/actions/public/getFilterChanges.test.ts +0 -189
  142. package/src/actions/public/getFilterChanges.ts +0 -23
  143. package/src/actions/public/getFilterLogs.test.ts +0 -104
  144. package/src/actions/public/getFilterLogs.ts +0 -20
  145. package/src/actions/public/getGasPrice.bench.ts +0 -19
  146. package/src/actions/public/getGasPrice.test.ts +0 -8
  147. package/src/actions/public/getGasPrice.ts +0 -15
  148. package/src/actions/public/getLogs.test.ts +0 -107
  149. package/src/actions/public/getLogs.ts +0 -84
  150. package/src/actions/public/getStorageAt.test.ts +0 -34
  151. package/src/actions/public/getStorageAt.ts +0 -32
  152. package/src/actions/public/getTransaction.bench.ts +0 -33
  153. package/src/actions/public/getTransaction.test.ts +0 -311
  154. package/src/actions/public/getTransaction.ts +0 -95
  155. package/src/actions/public/getTransactionConfirmations.test.ts +0 -69
  156. package/src/actions/public/getTransactionConfirmations.ts +0 -38
  157. package/src/actions/public/getTransactionCount.test.ts +0 -56
  158. package/src/actions/public/getTransactionCount.ts +0 -34
  159. package/src/actions/public/getTransactionReceipt.bench.ts +0 -33
  160. package/src/actions/public/getTransactionReceipt.test.ts +0 -179
  161. package/src/actions/public/getTransactionReceipt.ts +0 -34
  162. package/src/actions/public/index.test.ts +0 -44
  163. package/src/actions/public/index.ts +0 -152
  164. package/src/actions/public/multicall.test.ts +0 -452
  165. package/src/actions/public/multicall.ts +0 -103
  166. package/src/actions/public/readContract.test.ts +0 -328
  167. package/src/actions/public/readContract.ts +0 -73
  168. package/src/actions/public/simulateContract.bench.ts +0 -41
  169. package/src/actions/public/simulateContract.test.ts +0 -410
  170. package/src/actions/public/simulateContract.ts +0 -94
  171. package/src/actions/public/uninstallFilter.bench.ts +0 -13
  172. package/src/actions/public/uninstallFilter.test.ts +0 -65
  173. package/src/actions/public/uninstallFilter.ts +0 -17
  174. package/src/actions/public/waitForTransactionReceipt.test.ts +0 -322
  175. package/src/actions/public/waitForTransactionReceipt.ts +0 -170
  176. package/src/actions/public/watchBlockNumber.test.ts +0 -166
  177. package/src/actions/public/watchBlockNumber.ts +0 -79
  178. package/src/actions/public/watchBlocks.test.ts +0 -210
  179. package/src/actions/public/watchBlocks.ts +0 -114
  180. package/src/actions/public/watchContractEvent.test.ts +0 -305
  181. package/src/actions/public/watchContractEvent.ts +0 -108
  182. package/src/actions/public/watchEvent.test.ts +0 -195
  183. package/src/actions/public/watchEvent.ts +0 -95
  184. package/src/actions/public/watchPendingTransactions.test.ts +0 -116
  185. package/src/actions/public/watchPendingTransactions.ts +0 -74
  186. package/src/actions/test/dropTransaction.test.ts +0 -34
  187. package/src/actions/test/dropTransaction.ts +0 -17
  188. package/src/actions/test/getAutomine.test.ts +0 -14
  189. package/src/actions/test/getAutomine.ts +0 -11
  190. package/src/actions/test/getTxpoolContent.test.ts +0 -45
  191. package/src/actions/test/getTxpoolContent.ts +0 -7
  192. package/src/actions/test/getTxpoolStatus.test.ts +0 -41
  193. package/src/actions/test/getTxpoolStatus.ts +0 -12
  194. package/src/actions/test/impersonateAccount.test.ts +0 -26
  195. package/src/actions/test/impersonateAccount.ts +0 -17
  196. package/src/actions/test/increaseTime.test.ts +0 -18
  197. package/src/actions/test/increaseTime.ts +0 -17
  198. package/src/actions/test/index.test.ts +0 -38
  199. package/src/actions/test/index.ts +0 -77
  200. package/src/actions/test/inspectTxpool.test.ts +0 -50
  201. package/src/actions/test/inspectTxpool.ts +0 -7
  202. package/src/actions/test/mine.test.ts +0 -20
  203. package/src/actions/test/mine.ts +0 -16
  204. package/src/actions/test/removeBlockTimestampInterval.test.ts +0 -23
  205. package/src/actions/test/removeBlockTimestampInterval.ts +0 -7
  206. package/src/actions/test/reset.test.ts +0 -19
  207. package/src/actions/test/reset.ts +0 -18
  208. package/src/actions/test/revert.test.ts +0 -39
  209. package/src/actions/test/revert.ts +0 -14
  210. package/src/actions/test/sendUnsignedTransaction.test.ts +0 -52
  211. package/src/actions/test/sendUnsignedTransaction.ts +0 -19
  212. package/src/actions/test/setAutomine.test.ts +0 -14
  213. package/src/actions/test/setAutomine.ts +0 -8
  214. package/src/actions/test/setBalance.test.ts +0 -29
  215. package/src/actions/test/setBalance.ts +0 -20
  216. package/src/actions/test/setBlockGasLimit.test.ts +0 -21
  217. package/src/actions/test/setBlockGasLimit.ts +0 -17
  218. package/src/actions/test/setBlockTimestampInterval.test.ts +0 -23
  219. package/src/actions/test/setBlockTimestampInterval.ts +0 -16
  220. package/src/actions/test/setCode.test.ts +0 -26
  221. package/src/actions/test/setCode.ts +0 -19
  222. package/src/actions/test/setCoinbase.test.ts +0 -11
  223. package/src/actions/test/setCoinbase.ts +0 -17
  224. package/src/actions/test/setIntervalMining.test.ts +0 -30
  225. package/src/actions/test/setIntervalMining.ts +0 -16
  226. package/src/actions/test/setLoggingEnabled.test.ts +0 -10
  227. package/src/actions/test/setLoggingEnabled.ts +0 -8
  228. package/src/actions/test/setMinGasPrice.test.ts +0 -22
  229. package/src/actions/test/setMinGasPrice.ts +0 -17
  230. package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +0 -23
  231. package/src/actions/test/setNextBlockBaseFeePerGas.ts +0 -17
  232. package/src/actions/test/setNextBlockTimestamp.test.ts +0 -19
  233. package/src/actions/test/setNextBlockTimestamp.ts +0 -17
  234. package/src/actions/test/setNonce.test.ts +0 -28
  235. package/src/actions/test/setNonce.ts +0 -20
  236. package/src/actions/test/setRpcUrl.test.ts +0 -9
  237. package/src/actions/test/setRpcUrl.ts +0 -8
  238. package/src/actions/test/setStorageAt.test.ts +0 -36
  239. package/src/actions/test/setStorageAt.ts +0 -26
  240. package/src/actions/test/snapshot.test.ts +0 -18
  241. package/src/actions/test/snapshot.ts +0 -7
  242. package/src/actions/test/stopImpersonatingAccount.test.ts +0 -29
  243. package/src/actions/test/stopImpersonatingAccount.ts +0 -17
  244. package/src/actions/wallet/addChain.test.ts +0 -14
  245. package/src/actions/wallet/addChain.ts +0 -21
  246. package/src/actions/wallet/getAccounts.test.ts +0 -22
  247. package/src/actions/wallet/getAccounts.ts +0 -7
  248. package/src/actions/wallet/getPermissions.test.ts +0 -24
  249. package/src/actions/wallet/getPermissions.ts +0 -9
  250. package/src/actions/wallet/index.test.ts +0 -20
  251. package/src/actions/wallet/index.ts +0 -30
  252. package/src/actions/wallet/requestAccounts.test.ts +0 -13
  253. package/src/actions/wallet/requestAccounts.ts +0 -7
  254. package/src/actions/wallet/requestPermissions.test.ts +0 -26
  255. package/src/actions/wallet/requestPermissions.ts +0 -19
  256. package/src/actions/wallet/sendTransaction.bench.ts +0 -57
  257. package/src/actions/wallet/sendTransaction.test.ts +0 -440
  258. package/src/actions/wallet/sendTransaction.ts +0 -77
  259. package/src/actions/wallet/signMessage.test.ts +0 -61
  260. package/src/actions/wallet/signMessage.ts +0 -35
  261. package/src/actions/wallet/switchChain.test.ts +0 -21
  262. package/src/actions/wallet/switchChain.ts +0 -19
  263. package/src/actions/wallet/watchAsset.test.ts +0 -40
  264. package/src/actions/wallet/watchAsset.ts +0 -16
  265. package/src/actions/wallet/writeContract.test.ts +0 -84
  266. package/src/actions/wallet/writeContract.ts +0 -47
  267. package/src/chains.test.ts +0 -1912
  268. package/src/chains.ts +0 -99
  269. package/src/clients/createClient.test.ts +0 -295
  270. package/src/clients/createClient.ts +0 -81
  271. package/src/clients/createPublicClient.test.ts +0 -165
  272. package/src/clients/createPublicClient.ts +0 -49
  273. package/src/clients/createTestClient.test.ts +0 -145
  274. package/src/clients/createTestClient.ts +0 -72
  275. package/src/clients/createWalletClient.test.ts +0 -121
  276. package/src/clients/createWalletClient.ts +0 -54
  277. package/src/clients/index.test.ts +0 -19
  278. package/src/clients/index.ts +0 -31
  279. package/src/clients/transports/createTransport.test.ts +0 -58
  280. package/src/clients/transports/createTransport.ts +0 -48
  281. package/src/clients/transports/custom.test.ts +0 -98
  282. package/src/clients/transports/custom.ts +0 -34
  283. package/src/clients/transports/fallback.test.ts +0 -257
  284. package/src/clients/transports/fallback.ts +0 -50
  285. package/src/clients/transports/http.test.ts +0 -109
  286. package/src/clients/transports/http.ts +0 -51
  287. package/src/clients/transports/index.test.ts +0 -15
  288. package/src/clients/transports/index.ts +0 -17
  289. package/src/clients/transports/webSocket.test.ts +0 -163
  290. package/src/clients/transports/webSocket.ts +0 -117
  291. package/src/constants/abis.test.ts +0 -53
  292. package/src/constants/abis.ts +0 -44
  293. package/src/constants/index.test.ts +0 -14
  294. package/src/constants/index.ts +0 -3
  295. package/src/constants/solidity.test.ts +0 -41
  296. package/src/constants/solidity.ts +0 -35
  297. package/src/ens.ts +0 -5
  298. package/src/errors/abi.test.ts +0 -81
  299. package/src/errors/abi.ts +0 -238
  300. package/src/errors/address.test.ts +0 -14
  301. package/src/errors/address.ts +0 -9
  302. package/src/errors/base.test.ts +0 -114
  303. package/src/errors/base.ts +0 -57
  304. package/src/errors/block.test.ts +0 -24
  305. package/src/errors/block.ts +0 -18
  306. package/src/errors/contract.test.ts +0 -233
  307. package/src/errors/contract.ts +0 -178
  308. package/src/errors/data.ts +0 -20
  309. package/src/errors/encoding.ts +0 -60
  310. package/src/errors/index.ts +0 -79
  311. package/src/errors/log.ts +0 -8
  312. package/src/errors/request.test.ts +0 -330
  313. package/src/errors/request.ts +0 -163
  314. package/src/errors/rpc.test.ts +0 -87
  315. package/src/errors/rpc.ts +0 -113
  316. package/src/errors/transaction.test.ts +0 -83
  317. package/src/errors/transaction.ts +0 -54
  318. package/src/errors/transport.test.ts +0 -11
  319. package/src/errors/transport.ts +0 -12
  320. package/src/index.test.ts +0 -263
  321. package/src/index.ts +0 -389
  322. package/src/public.ts +0 -80
  323. package/src/test.ts +0 -51
  324. package/src/types/block.ts +0 -71
  325. package/src/types/chain.ts +0 -6
  326. package/src/types/contract.ts +0 -393
  327. package/src/types/eip1193.ts +0 -1041
  328. package/src/types/fee.ts +0 -47
  329. package/src/types/filter.ts +0 -8
  330. package/src/types/formatter.ts +0 -23
  331. package/src/types/index.ts +0 -83
  332. package/src/types/log.ts +0 -22
  333. package/src/types/misc.ts +0 -5
  334. package/src/types/multicall.ts +0 -82
  335. package/src/types/rpc.ts +0 -35
  336. package/src/types/transaction.ts +0 -145
  337. package/src/types/utils.ts +0 -67
  338. package/src/types/window.ts +0 -9
  339. package/src/utils/abi/decodeAbi.bench.ts +0 -135
  340. package/src/utils/abi/decodeAbi.test.ts +0 -1614
  341. package/src/utils/abi/decodeAbi.ts +0 -300
  342. package/src/utils/abi/decodeDeployData.test.ts +0 -151
  343. package/src/utils/abi/decodeDeployData.ts +0 -44
  344. package/src/utils/abi/decodeErrorResult.test.ts +0 -230
  345. package/src/utils/abi/decodeErrorResult.ts +0 -45
  346. package/src/utils/abi/decodeFunctionData.test.ts +0 -139
  347. package/src/utils/abi/decodeFunctionData.ts +0 -29
  348. package/src/utils/abi/decodeFunctionResult.test.ts +0 -333
  349. package/src/utils/abi/decodeFunctionResult.ts +0 -57
  350. package/src/utils/abi/encodeAbi.bench.ts +0 -163
  351. package/src/utils/abi/encodeAbi.test.ts +0 -1447
  352. package/src/utils/abi/encodeAbi.ts +0 -273
  353. package/src/utils/abi/encodeDeployData.test.ts +0 -124
  354. package/src/utils/abi/encodeDeployData.ts +0 -40
  355. package/src/utils/abi/encodeErrorResult.test.ts +0 -192
  356. package/src/utils/abi/encodeErrorResult.ts +0 -47
  357. package/src/utils/abi/encodeEventTopics.test.ts +0 -345
  358. package/src/utils/abi/encodeEventTopics.ts +0 -75
  359. package/src/utils/abi/encodeFunctionData.test.ts +0 -138
  360. package/src/utils/abi/encodeFunctionData.ts +0 -45
  361. package/src/utils/abi/encodeFunctionResult.test.ts +0 -279
  362. package/src/utils/abi/encodeFunctionResult.ts +0 -41
  363. package/src/utils/abi/formatAbiItem.test.ts +0 -335
  364. package/src/utils/abi/formatAbiItem.ts +0 -41
  365. package/src/utils/abi/formatAbiItemWithArgs.test.ts +0 -291
  366. package/src/utils/abi/formatAbiItemWithArgs.ts +0 -27
  367. package/src/utils/abi/getAbiItem.test.ts +0 -547
  368. package/src/utils/abi/getAbiItem.ts +0 -95
  369. package/src/utils/abi/index.test.ts +0 -23
  370. package/src/utils/abi/index.ts +0 -42
  371. package/src/utils/address/getAddress.bench.ts +0 -22
  372. package/src/utils/address/getAddress.test.ts +0 -46
  373. package/src/utils/address/getAddress.ts +0 -28
  374. package/src/utils/address/getContractAddress.bench.ts +0 -20
  375. package/src/utils/address/getContractAddress.test.ts +0 -78
  376. package/src/utils/address/getContractAddress.ts +0 -59
  377. package/src/utils/address/index.test.ts +0 -17
  378. package/src/utils/address/index.ts +0 -16
  379. package/src/utils/address/isAddress.test.ts +0 -10
  380. package/src/utils/address/isAddress.ts +0 -10
  381. package/src/utils/address/isAddressEqual.test.ts +0 -55
  382. package/src/utils/address/isAddressEqual.ts +0 -6
  383. package/src/utils/buildRequest.test.ts +0 -365
  384. package/src/utils/buildRequest.ts +0 -45
  385. package/src/utils/chain.test.ts +0 -43
  386. package/src/utils/chain.ts +0 -8
  387. package/src/utils/contract/extractFunctionParts.test.ts +0 -109
  388. package/src/utils/contract/extractFunctionParts.ts +0 -27
  389. package/src/utils/contract/getContractError.test.ts +0 -282
  390. package/src/utils/contract/getContractError.ts +0 -58
  391. package/src/utils/contract/index.test.ts +0 -15
  392. package/src/utils/contract/index.ts +0 -8
  393. package/src/utils/data/concat.test.ts +0 -35
  394. package/src/utils/data/concat.ts +0 -34
  395. package/src/utils/data/index.test.ts +0 -23
  396. package/src/utils/data/index.ts +0 -13
  397. package/src/utils/data/isBytes.test.ts +0 -9
  398. package/src/utils/data/isBytes.ts +0 -7
  399. package/src/utils/data/isHex.test.ts +0 -13
  400. package/src/utils/data/isHex.ts +0 -5
  401. package/src/utils/data/pad.bench.ts +0 -30
  402. package/src/utils/data/pad.test.ts +0 -367
  403. package/src/utils/data/pad.ts +0 -53
  404. package/src/utils/data/size.test.ts +0 -18
  405. package/src/utils/data/size.ts +0 -13
  406. package/src/utils/data/slice.test.ts +0 -203
  407. package/src/utils/data/slice.ts +0 -60
  408. package/src/utils/data/trim.bench.ts +0 -34
  409. package/src/utils/data/trim.test.ts +0 -175
  410. package/src/utils/data/trim.ts +0 -33
  411. package/src/utils/encoding/decodeBytes.bench.ts +0 -40
  412. package/src/utils/encoding/decodeBytes.test.ts +0 -144
  413. package/src/utils/encoding/decodeBytes.ts +0 -63
  414. package/src/utils/encoding/decodeHex.bench.ts +0 -24
  415. package/src/utils/encoding/decodeHex.test.ts +0 -167
  416. package/src/utils/encoding/decodeHex.ts +0 -76
  417. package/src/utils/encoding/decodeRlp.bench.ts +0 -34
  418. package/src/utils/encoding/decodeRlp.test.ts +0 -350
  419. package/src/utils/encoding/decodeRlp.ts +0 -121
  420. package/src/utils/encoding/encodeBytes.bench.ts +0 -29
  421. package/src/utils/encoding/encodeBytes.test.ts +0 -676
  422. package/src/utils/encoding/encodeBytes.ts +0 -59
  423. package/src/utils/encoding/encodeHex.bench.ts +0 -49
  424. package/src/utils/encoding/encodeHex.test.ts +0 -232
  425. package/src/utils/encoding/encodeHex.ts +0 -104
  426. package/src/utils/encoding/encodeRlp.bench.ts +0 -54
  427. package/src/utils/encoding/encodeRlp.test.ts +0 -254
  428. package/src/utils/encoding/encodeRlp.ts +0 -48
  429. package/src/utils/encoding/index.test.ts +0 -32
  430. package/src/utils/encoding/index.ts +0 -36
  431. package/src/utils/ens/index.test.ts +0 -13
  432. package/src/utils/ens/index.ts +0 -5
  433. package/src/utils/ens/labelhash.test.ts +0 -55
  434. package/src/utils/ens/labelhash.ts +0 -16
  435. package/src/utils/ens/namehash.test.ts +0 -65
  436. package/src/utils/ens/namehash.ts +0 -28
  437. package/src/utils/ens/normalize.bench.ts +0 -14
  438. package/src/utils/ens/normalize.test.ts +0 -35
  439. package/src/utils/ens/normalize.ts +0 -14
  440. package/src/utils/formatters/block.bench.ts +0 -51
  441. package/src/utils/formatters/block.test.ts +0 -115
  442. package/src/utils/formatters/block.ts +0 -37
  443. package/src/utils/formatters/extract.test.ts +0 -14
  444. package/src/utils/formatters/extract.ts +0 -18
  445. package/src/utils/formatters/feeHistory.test.ts +0 -66
  446. package/src/utils/formatters/feeHistory.ts +0 -12
  447. package/src/utils/formatters/format.test.ts +0 -93
  448. package/src/utils/formatters/format.ts +0 -90
  449. package/src/utils/formatters/index.test.ts +0 -27
  450. package/src/utils/formatters/index.ts +0 -34
  451. package/src/utils/formatters/log.test.ts +0 -79
  452. package/src/utils/formatters/log.ts +0 -12
  453. package/src/utils/formatters/transaction.test.ts +0 -271
  454. package/src/utils/formatters/transaction.ts +0 -63
  455. package/src/utils/formatters/transactionReceipt.bench.ts +0 -73
  456. package/src/utils/formatters/transactionReceipt.test.ts +0 -151
  457. package/src/utils/formatters/transactionReceipt.ts +0 -63
  458. package/src/utils/formatters/transactionRequest.bench.ts +0 -29
  459. package/src/utils/formatters/transactionRequest.test.ts +0 -237
  460. package/src/utils/formatters/transactionRequest.ts +0 -56
  461. package/src/utils/hash/getEventSignature.test.ts +0 -61
  462. package/src/utils/hash/getEventSignature.ts +0 -4
  463. package/src/utils/hash/getFunctionSignature.test.ts +0 -22
  464. package/src/utils/hash/getFunctionSignature.ts +0 -5
  465. package/src/utils/hash/hashFunction.test.ts +0 -65
  466. package/src/utils/hash/hashFunction.ts +0 -12
  467. package/src/utils/hash/index.test.ts +0 -13
  468. package/src/utils/hash/index.ts +0 -5
  469. package/src/utils/hash/keccak256.test.ts +0 -59
  470. package/src/utils/hash/keccak256.ts +0 -21
  471. package/src/utils/index.test.ts +0 -113
  472. package/src/utils/index.ts +0 -141
  473. package/src/utils/observe.test.ts +0 -176
  474. package/src/utils/observe.ts +0 -66
  475. package/src/utils/poll.test.ts +0 -127
  476. package/src/utils/poll.ts +0 -42
  477. package/src/utils/promise/index.test.ts +0 -14
  478. package/src/utils/promise/index.ts +0 -3
  479. package/src/utils/promise/withCache.test.ts +0 -97
  480. package/src/utils/promise/withCache.ts +0 -73
  481. package/src/utils/promise/withRetry.test.ts +0 -231
  482. package/src/utils/promise/withRetry.ts +0 -61
  483. package/src/utils/promise/withTimeout.test.ts +0 -37
  484. package/src/utils/promise/withTimeout.ts +0 -39
  485. package/src/utils/rpc.test.ts +0 -989
  486. package/src/utils/rpc.ts +0 -292
  487. package/src/utils/stringify.test.ts +0 -13
  488. package/src/utils/stringify.ts +0 -5
  489. package/src/utils/uid.ts +0 -14
  490. package/src/utils/unit/constants.test.ts +0 -22
  491. package/src/utils/unit/constants.ts +0 -12
  492. package/src/utils/unit/formatEther.test.ts +0 -75
  493. package/src/utils/unit/formatEther.ts +0 -6
  494. package/src/utils/unit/formatGwei.test.ts +0 -32
  495. package/src/utils/unit/formatGwei.ts +0 -6
  496. package/src/utils/unit/formatUnit.bench.ts +0 -21
  497. package/src/utils/unit/formatUnit.test.ts +0 -40
  498. package/src/utils/unit/formatUnit.ts +0 -16
  499. package/src/utils/unit/index.test.ts +0 -28
  500. package/src/utils/unit/index.ts +0 -7
  501. package/src/utils/unit/parseEther.test.ts +0 -126
  502. package/src/utils/unit/parseEther.ts +0 -6
  503. package/src/utils/unit/parseGwei.test.ts +0 -50
  504. package/src/utils/unit/parseGwei.ts +0 -6
  505. package/src/utils/unit/parseUnit.bench.ts +0 -21
  506. package/src/utils/unit/parseUnit.test.ts +0 -54
  507. package/src/utils/unit/parseUnit.ts +0 -27
  508. package/src/utils/wait.ts +0 -3
  509. package/src/wallet.ts +0 -23
  510. package/src/window.ts +0 -1
@@ -1,989 +0,0 @@
1
- import { describe, expect, test } from 'vitest'
2
-
3
- import { createHttpServer, initialBlockNumber, localWsUrl } from '../_test'
4
-
5
- import { localhost, mainnet } from '../chains'
6
- import { numberToHex } from './encoding'
7
-
8
- import type { RpcResponse } from './rpc'
9
- import { getSocket, rpc } from './rpc'
10
- import { wait } from './wait'
11
-
12
- test('rpc', () => {
13
- expect(rpc).toMatchInlineSnapshot(`
14
- {
15
- "http": [Function],
16
- "webSocket": [Function],
17
- "webSocketAsync": [Function],
18
- }
19
- `)
20
- })
21
-
22
- describe('http', () => {
23
- test('valid request', async () => {
24
- expect(
25
- await rpc.http(localhost.rpcUrls.default.http[0], {
26
- body: { method: 'web3_clientVersion' },
27
- }),
28
- ).toMatchInlineSnapshot(`
29
- {
30
- "id": 0,
31
- "jsonrpc": "2.0",
32
- "result": "anvil/v0.1.0",
33
- }
34
- `)
35
- })
36
-
37
- test('valid request w/ incremented id', async () => {
38
- expect(
39
- await rpc.http(localhost.rpcUrls.default.http[0], {
40
- body: { method: 'web3_clientVersion' },
41
- }),
42
- ).toMatchInlineSnapshot(`
43
- {
44
- "id": 1,
45
- "jsonrpc": "2.0",
46
- "result": "anvil/v0.1.0",
47
- }
48
- `)
49
- })
50
-
51
- test('invalid rpc params', async () => {
52
- await expect(() =>
53
- rpc.http(localhost.rpcUrls.default.http[0], {
54
- body: { method: 'eth_getBlockByHash', params: ['0x0', false] },
55
- }),
56
- ).rejects.toThrowError(
57
- 'invalid length 1, expected a (both 0x-prefixed or not) hex string',
58
- )
59
- })
60
-
61
- test('invalid request', async () => {
62
- expect(
63
- rpc.http(localhost.rpcUrls.default.http[0], {
64
- body: { method: 'eth_wagmi' },
65
- }),
66
- ).rejects.toThrowErrorMatchingInlineSnapshot(`
67
- "RPC Request failed.
68
-
69
- URL: http://127.0.0.1:8545
70
- Request body: {\\"method\\":\\"eth_wagmi\\"}
71
-
72
- Details: Method not found
73
- Version: viem@1.0.2"
74
- `)
75
- })
76
-
77
- test('serial requests', async () => {
78
- let response: any = []
79
- for (const i in Array.from({ length: 10 })) {
80
- response.push(
81
- await rpc.http(localhost.rpcUrls.default.http[0], {
82
- body: {
83
- method: 'eth_getBlockByNumber',
84
- params: [numberToHex(initialBlockNumber - BigInt(i)), false],
85
- },
86
- }),
87
- )
88
- }
89
- expect(response.map((r: any) => r.result.number)).toEqual(
90
- Array.from({ length: 10 }).map((_, i) =>
91
- numberToHex(initialBlockNumber - BigInt(i)),
92
- ),
93
- )
94
- })
95
-
96
- test('parallel requests', async () => {
97
- await wait(500)
98
- const response = await Promise.all(
99
- Array.from({ length: 50 }).map(async (_, i) => {
100
- return await rpc.http(localhost.rpcUrls.default.http[0], {
101
- body: {
102
- method: 'eth_getBlockByNumber',
103
- params: [numberToHex(initialBlockNumber - BigInt(i)), false],
104
- },
105
- })
106
- }),
107
- )
108
- expect(response.map((r) => r.result.number)).toEqual(
109
- Array.from({ length: 50 }).map((_, i) =>
110
- numberToHex(initialBlockNumber - BigInt(i)),
111
- ),
112
- )
113
- await wait(500)
114
- })
115
-
116
- test('http error', async () => {
117
- let retryCount = -1
118
- const server = await createHttpServer((req, res) => {
119
- retryCount++
120
- res.writeHead(500, {
121
- 'Content-Type': 'application/json',
122
- })
123
- res.end(JSON.stringify({ error: 'ngmi' }))
124
- })
125
-
126
- await expect(() =>
127
- rpc.http(server.url, {
128
- body: {
129
- method: 'eth_getBlockByNumber',
130
- params: [numberToHex(initialBlockNumber), false],
131
- },
132
- retryCount: 0,
133
- }),
134
- ).rejects.toThrowError(`Details: "ngmi"`)
135
- expect(retryCount).toBe(0)
136
- })
137
-
138
- test('http error', async () => {
139
- let retryCount = -1
140
- const server = await createHttpServer((req, res) => {
141
- retryCount++
142
- res.writeHead(500, {
143
- 'Content-Type': 'application/json',
144
- })
145
- res.end(JSON.stringify({}))
146
- })
147
-
148
- await expect(() =>
149
- rpc.http(server.url, {
150
- body: {
151
- method: 'eth_getBlockByNumber',
152
- params: [numberToHex(initialBlockNumber), false],
153
- },
154
- retryCount: 0,
155
- }),
156
- ).rejects.toThrowError('Details: Internal Server Error')
157
- expect(retryCount).toBe(0)
158
- })
159
-
160
- test('timeout', async () => {
161
- try {
162
- await rpc.http(mainnet.rpcUrls.default.http[0], {
163
- body: {
164
- method: 'eth_getBlockByNumber',
165
- params: [numberToHex(initialBlockNumber), false],
166
- },
167
- timeout: 10,
168
- })
169
- } catch (err) {
170
- expect(err).toMatchInlineSnapshot(
171
- `
172
- [TimeoutError: The request took too long to respond.
173
-
174
- URL: https://cloudflare-eth.com
175
- Request body: {"method":"eth_getBlockByNumber","params":["0xf86cc2",false]}
176
-
177
- Details: The request timed out.
178
- Version: viem@1.0.2]
179
- `,
180
- )
181
- }
182
- })
183
-
184
- test('retries (500 status code)', async () => {
185
- let retryCount = -1
186
-
187
- const server = await createHttpServer((req, res) => {
188
- retryCount++
189
- res.writeHead(500)
190
- res.end('ngmi')
191
- })
192
-
193
- await expect(() =>
194
- rpc.http(server.url, {
195
- body: {
196
- method: 'eth_getBlockByNumber',
197
- params: [numberToHex(initialBlockNumber), false],
198
- },
199
- retryCount: 2,
200
- }),
201
- ).rejects.toThrowError('HTTP request failed.')
202
- expect(retryCount).toBe(2)
203
- })
204
-
205
- test('retries (408 status code)', async () => {
206
- let retryCount = -1
207
- const server = await createHttpServer((req, res) => {
208
- retryCount++
209
- res.writeHead(408, {
210
- 'Content-Type': 'application/json',
211
- })
212
- res.end(JSON.stringify({ error: 'ngmi' }))
213
- })
214
-
215
- await expect(() =>
216
- rpc.http(server.url, {
217
- body: {
218
- method: 'eth_getBlockByNumber',
219
- params: [numberToHex(initialBlockNumber), false],
220
- },
221
- retryCount: 2,
222
- }),
223
- ).rejects.toThrowError('HTTP request failed.')
224
- expect(retryCount).toBe(2)
225
- })
226
-
227
- test('retries (408 status code)', async () => {
228
- let retryCount = -1
229
- const server = await createHttpServer((req, res) => {
230
- retryCount++
231
- res.writeHead(408, {
232
- 'Content-Type': 'application/json',
233
- })
234
- res.end(JSON.stringify({ error: 'ngmi' }))
235
- })
236
-
237
- await expect(() =>
238
- rpc.http(server.url, {
239
- body: {
240
- method: 'eth_getBlockByNumber',
241
- params: [numberToHex(initialBlockNumber), false],
242
- },
243
- retryCount: 2,
244
- }),
245
- ).rejects.toThrowError('HTTP request failed.')
246
- expect(retryCount).toBe(2)
247
- })
248
-
249
- test('does not retry for 401', async () => {
250
- let retryCount = -1
251
- const server = await createHttpServer((req, res) => {
252
- retryCount++
253
- res.writeHead(401, {
254
- 'Content-Type': 'application/json',
255
- })
256
- res.end(JSON.stringify({ error: 'ngmi' }))
257
- })
258
-
259
- await expect(() =>
260
- rpc.http(server.url, {
261
- body: {
262
- method: 'eth_getBlockByNumber',
263
- params: [numberToHex(initialBlockNumber), false],
264
- },
265
- retryCount: 2,
266
- }),
267
- ).rejects.toThrowError('HTTP request failed.')
268
- expect(retryCount).toBe(0)
269
- })
270
-
271
- test('retries (500 status code w/ Retry-After)', async () => {
272
- let retryCount = -1
273
-
274
- const server = await createHttpServer((req, res) => {
275
- retryCount++
276
- res.writeHead(500, {
277
- 'Retry-After': 1,
278
- })
279
- res.end('ngmi')
280
- })
281
-
282
- await expect(() =>
283
- rpc.http(server.url, {
284
- body: {
285
- method: 'eth_getBlockByNumber',
286
- params: [numberToHex(initialBlockNumber), false],
287
- },
288
- retryCount: 2,
289
- }),
290
- ).rejects.toThrowError('HTTP request failed.')
291
- expect(retryCount).toBe(2)
292
- })
293
- })
294
-
295
- describe('getSocket', () => {
296
- test('creates WebSocket instance', async () => {
297
- const socket = await getSocket(localWsUrl)
298
- expect(socket).toBeDefined()
299
- expect(socket.readyState).toEqual(WebSocket.OPEN)
300
- })
301
-
302
- test('multiple invocations on a url only opens one socket', async () => {
303
- const [socket, socket2, socket3, socket4] = await Promise.all([
304
- getSocket(localWsUrl),
305
- getSocket(localWsUrl),
306
- getSocket(localWsUrl),
307
- getSocket(localWsUrl),
308
- ])
309
- expect(socket).toBe(socket2)
310
- expect(socket).toBe(socket3)
311
- expect(socket).toBe(socket4)
312
- })
313
- })
314
-
315
- describe('webSocket', () => {
316
- test('valid request', async () => {
317
- const socket = await getSocket(localWsUrl)
318
- const { id, ...version } = await new Promise<any>((resolve, reject) =>
319
- rpc.webSocket(socket, {
320
- body: { method: 'web3_clientVersion' },
321
- onData: resolve,
322
- onError: reject,
323
- }),
324
- )
325
- expect(id).toBeDefined()
326
- expect(version).toMatchInlineSnapshot(`
327
- {
328
- "jsonrpc": "2.0",
329
- "result": "anvil/v0.1.0",
330
- }
331
- `)
332
- expect(socket.requests.size).toBe(0)
333
- })
334
-
335
- test('valid request', async () => {
336
- const socket = await getSocket(localWsUrl)
337
- const { id, ...block } = await new Promise<any>((resolve, reject) =>
338
- rpc.webSocket(socket, {
339
- body: {
340
- method: 'eth_getBlockByNumber',
341
- params: [numberToHex(initialBlockNumber), false],
342
- },
343
- onData: resolve,
344
- onError: reject,
345
- }),
346
- )
347
- expect(id).toBeDefined()
348
- expect(block).toMatchInlineSnapshot(`
349
- {
350
- "jsonrpc": "2.0",
351
- "result": {
352
- "baseFeePerGas": "0x2f9b711b9",
353
- "difficulty": "0x0",
354
- "extraData": "0x6265617665726275696c642e6f7267",
355
- "gasLimit": "0x1c9c380",
356
- "gasUsed": "0x120bbd0",
357
- "hash": "0x3f900200152e9e7731b6adfb4a9a5cf43c71f3ff600962efe544f3b1d9466fac",
358
- "logsBloom": "0xeeec4ae861e4d9e400eb97e3c26253a37852273ababa634d97d300674e269f1a567884ba980b255ac72c1d787a129b8786e9b4201f21316cb6e8274545adbe4fb9264bf2f936df28efcdf72ff393486d4adae488455c34ed5c7d3e158d070938db650d71021a42da46105b004f05ad1fd614768209bc8ef44e0ada968a384a791639509379623bcbc1fc8cb876e3282969c5b9abc354b159678dd87153b6aecbbec06d7f3eb37a9a98596ce72c638ac7c2788ea00a36f0cfb96f0ec314bc8b4a473b955fc5c4dbdba1aaddb5a9c412165169cae009ae09561a79ab8f822cfd533d73bd988dd42dc4185618f62b310b40173f62b628fe2fe5958e3b14acc60860",
359
- "miner": "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5",
360
- "mixHash": "0xd7de5432d0e9545465317f2f0f82f6f60dfc35055103378c2b4c19a9218e7c75",
361
- "nonce": "0x0000000000000000",
362
- "number": "0xf86cc2",
363
- "parentHash": "0xb932f77cf770d1d1c8f861153eec1e990f5d56b6ffdb4ac06aef3cca51ef37d4",
364
- "receiptsRoot": "0x7c577c7a2c1649735565691411b9236e1946dc74f3f474d15c014bece0104de8",
365
- "sealFields": [],
366
- "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
367
- "size": "0x18011",
368
- "stateRoot": "0x651162a87a2905c6f37ab5f0a2676f9cd8fc5ff618cb5c1a89bf25ddea7f391c",
369
- "timestamp": "0x63abc18b",
370
- "totalDifficulty": "0xc70d815d562d3cfa955",
371
- "transactions": [
372
- "0x1351de11f81a077cd300914e278c870c3df5b26d3f3b2a4a3f8db76bc138e7d3",
373
- "0x7d5c80f38b2e706aa3bd19b234e6026c8a4c0543bf299dfe609193693ac27dfb",
374
- "0xc986d00394b3aea84f19906037be219456f13894c0fcfecbd242b36d52a0fa01",
375
- "0x73271cf06de97fdbbf0be2bb13b9376a98b1715b6d463c81f5ce73a9988b6f5c",
376
- "0x48c27153e0fd95de6bb7858dc42ff2d16aa0123ff6f4839dda23da82c170df13",
377
- "0xb901cc43954131517926708106398c5c0c3c77c2550b18fb7bd6eb45a6b39284",
378
- "0xc6d0d2bf4e46725ed595acdc8bc841994d1e63500c0c06671bc19379c5f111dd",
379
- "0xb05036fbb0125a493090289331e0b9d44c8ebb3f7852c0a1657ff9e0fce0f51f",
380
- "0x14bbc701396fffe3b212eb96af063cb97e05ee36c98b133da22a5968a4b38707",
381
- "0x6b96c5431807ef6792333f1e448dc52d72d24b1460879da6b88a94858bc27a12",
382
- "0xda1f70f856e3ffc9ed5d5c3c91d8e13b0256931ca759be650407de7053842f4c",
383
- "0xe52666b85980c7f2cdf1c36ef32a69164c65250109bc9f639ebbc990390c8176",
384
- "0x5010f98f3ed2110fd40c8b463ad9fa56fe9f026d3bbbfa27a86238ea69084056",
385
- "0xa554462712447f7edee4cef01317d1d2438200c70f0eafd696d21ae6483472ae",
386
- "0x4d85ba6c319c5f05768bd42bc3a8509ffb20873c763bacf72b13d6febde479a7",
387
- "0xaf32af489ae7d94b22cd47c6b1ad44872a5b5781ed329e2e5dc622c1ad9b0be2",
388
- "0x5be511e63eabbaaeb0436e972e34747edd255e30155d6e943e0c4cc81980efea",
389
- "0xdad9805520d2eb35019f9f7692750959943a9c1dc9ecf31d234273eb0af93be5",
390
- "0x33e0a938bdb373ab8a57a03d20faa1fad0b793c86b61cc8cfbd9187f7a7a8f6c",
391
- "0x552e8b37157fa2fc8576b56e73b314d6001531e00c8c406c25b46c2275d99cb4",
392
- "0x8a47abc6188d6500b71744d03c68e20b017a33c4291b30eb6c8a1d332b03a654",
393
- "0xf6a51940f09b38b619958b2955841d6a5c80230a4bfda8266a2c59ebb2722528",
394
- "0x6d0adc2c20661faa7fab9ab72d09c7688fc61ab1d5d6d2f453b969c820377a2b",
395
- "0x91963d8420403980eeee8434d1d158dc0e7fb035d0b6bbc0cfa795965a9189c6",
396
- "0x4bb35a76df1f1b12cdb722f86548061bdcad763a96a0ee1a0bf8f8a3acc4894b",
397
- "0xbb1be5996b36846b4455ee515e701a8619741e035b89e7abf0b8dccba3d882fc",
398
- "0x995df00e7dd97dd7d591ebab4a8af2a5689ce67d98378857311715fc0c04e3c4",
399
- "0x6d0ef7c18c8a79e8c5357ede322c0f3c9bb79b423dcd38d68ece250d6dd90e82",
400
- "0x5e23f022fe06150e4269e76a0607732d960cec687398d7bb9551e2f396629a54",
401
- "0xc284f18afa7be933a7c2dd81666553ecb454280d68c5ab368e980e75d18cf341",
402
- "0x89710dd344aee964826271ee471c290cc07c75f5fa1567d3fb7a5bd7d9c98fd1",
403
- "0x0c98cd5eeeb28e14eeef72fc71432467b87f5b726adc97372d8a0533023d306b",
404
- "0xf9a3c04b2f40ca3b42a61988ada325db3ab11bda42ab9cb9c01c685e4d66bc04",
405
- "0x55531cea77c328a669b76543c20352346172f40d206afe38f25a8e79b1cd89eb",
406
- "0xb7d3f39769d5e1da93f979809d59fc0950136cfe4e58a59ae322993ad444d787",
407
- "0x4b3cb165f91b96ba7a90fe7cc1cb5dcf0d8ea379446970c650273f8e11cb5957",
408
- "0x4778b34dae4eb5de168b9c8aadec570cd8e73ff31f8633d84ebad667b736c5ef",
409
- "0xa298bfbb6cfd9f9663205aa81032df3f09c4ebdf5ff3411cd4db787429b6d014",
410
- "0x2b76948313eb52ab9e06b171d9ab6e746d19ef031e5d94bbb7f9d8ec532a9fe8",
411
- "0xa5835cf94ea79ec5518e4d0400f206e57bcab07696fcea7cf6308cd4c3647cfb",
412
- "0xfb00b96840d28381ea9d09d185d6bc0882acfba09a5b64997dab030178fee0a1",
413
- "0x30b4a72ee9e077c57c78cf86d8d2d6efef9f28f84f85eddeca5e35476fe011f8",
414
- "0x48d8e59134e8e89987b6059bda69d988b19a78e072c6c40dcf25b748d7916aac",
415
- "0x35af74b2deb8ea65742be1e8b75ad1c49bbbf01d1bfd26037fcaf3cd89926e39",
416
- "0x6763cf676ad90dfb40a6bd22d54d36a65571874c66b6e1bea3690cad8d051321",
417
- "0x760054fc96b0f8612dad81cea54de6d55622259a4a022398537d2814ed8ccb17",
418
- "0x2d58f61719af0756262b390ab0587babadb77da1403695dbb9b58dd5f4148d30",
419
- "0x6d1277534c5314ac1a7b9c05f92040c53144c45b55676c604304a4e3c4e9e0ac",
420
- "0xfa5bfaaed054884e849ce6988ab948ad7e98158741013c8da40f280879103125",
421
- "0xec2c8a649815c8a76a1c9d5ae0a4d2ca5530207dd59c84beb79e643c2b4699de",
422
- "0x5fc207821af511e130bac12d541562db4f9f956e2d2150cbdcce2ff2b2271dfe",
423
- "0xb3ca73f157d9837633dd44b86bb7b91fcdfabfeba6339f3cd5e5d2ca0a99054c",
424
- "0xdcb443a670462f3dc014e721b9b57a68d9288bebc74a29172192099746392cdb",
425
- "0x815de12d2b3d66a7cb0a29f0a21a597d1d6c5eadd077a2e42543c8266c1c552f",
426
- "0x5b8ed4cb34ed17d8e82f9037d828b73f3ec09caec6691a4919df7759d02cb989",
427
- "0xa4d7bcba3b2a421fe3af2ba43f8a30ea662015d8292916dd231bc6b125be8378",
428
- "0x69def64bae7292bc0a5c72d4b9f14426cc8d7aa12f89ba2fa685f63c466e398e",
429
- "0xad6f4e025468372f4b6e925584beb95675da74217d6344637443b0f1267af09b",
430
- "0x7c207ef61607ba16622cf9796156a22a29dab59ed77666ef5b81808fb8feca81",
431
- "0xc5ac8b92f5216cdd316cc4c28f3cdd6ee6978cb848379c51b8ce6ea5a8c0a231",
432
- "0x856d42db3f08e9c493d4e0239a5e6e610c58951a87d55eb4c6c7103d1e9818af",
433
- "0x557775076b85cead00fc6c33417b56743baf7cb301f965dd8e35263d18b860c2",
434
- "0x930031f6567e75ddbc7061ef851b0c1cb95eecf57c4db559b63e9f78b132011b",
435
- "0x3d016940fac9cbcb035310141727206a5a7cd936b8ac7ef8ad492f2c35f10b06",
436
- "0x5cc81c393a2c1523b9a8342eb2a291321ee8c5cd99a0f647570e3cc4fade8a7f",
437
- "0x75b03ab8d646c483878914bd0c91c1d1a2018f0fa039e72ad35cc9fb657f324e",
438
- "0xfd38eecb7f9689315484627791d3393d2f7286b40be85c0f44b879cb46710645",
439
- "0xf2f08c1b2723ac801ec471099071a6d8d60ab0b3847dd14400a88ca6fe2b0804",
440
- "0xafc9d2533c985139de1e3cda1c3ebdb022456d644dc0b32e05c8ce602cb0308f",
441
- "0x0f06d0716036c226992ae14def944de3bf651459f7d1a631b88d63bb35db2287",
442
- "0xc332aa7d2c9459a8149bdd04a0da2552f7fd3871d6dc00c932bb8ca115e3b124",
443
- "0xcdac2adc326d645b9ecdaf1954da28026957c87873f7e97d6236756395385901",
444
- "0x890e71419171b6c94acfa3859d9cad0acfae4095a4d4989b2f613e429e4e8f60",
445
- "0x681ede0467b184ae2fbc17b4d3a78d1eaa4674555494aaf872abe72c1ac10c57",
446
- "0xdcc80cfc23ad4582fca9b31590dc7badd5104b90e564e6e73718f437118c7f73",
447
- "0x53421fb3b6ce41428288863ab2983601400662ecee01f25f8005e13edae57be9",
448
- "0xabc0c5603cce5690d0c66a50e938a13e3ec5a5252345e70348b11276f2d3f3dd",
449
- "0x9b3f6a66edaf57e527d167569bc28ed14fd74a3b57dda552a98249372c559693",
450
- "0x1944f7eef251c45eb7a41c3dcbb2e38d05a68c935678d9de83352b2c553583c6",
451
- "0x37bc6090d2417fba1b1b06c5d1416be4012ca79df2e88d65c0b70fdbea28e85f",
452
- "0x9e35edc9fd33b00138cb4740aa9fcc67fb4a55639e30e3f55100f6fde63219fa",
453
- "0x93f72376c013a41bbac041280e426808162ae3c7fff4c86336283a338f98c629",
454
- "0x74277cfdf9d119e4acc2ac5b91883ade1888dce2d6f27a854ee12301379f7b72",
455
- "0x98889715672a70ca2e2d7b5c30269523a11ec510cf906d26f842692644265983",
456
- "0x11265cfc4888c5c00ec3848cbbf6b97c923127a8d71a576d9f40f29aaac3fab1",
457
- "0x227eafafdbbf1b38cb9b44720780c8730f5fcc963417d214c1b5b3ae15aea8ac",
458
- "0x789a22790ccc6db1aad0d4fdacef1e99f985083dac5c71684a05984173eb722e",
459
- "0x7ed24aed7c45de70482f19ce398574cd753d47fa26a5a72f7a85fbaebe1f3247",
460
- "0x95880d0c34bb3ed909f73dde91f24262724d231256739c79cfb76e5456d2da5e",
461
- "0x31299e470fc68ea56bd9f04b0cf1a63f56b48ff8475474e784f783db1fecad0c",
462
- "0x846a23db36d000b6c3dc4c4404daab5e749488273b022819f97250224ce86602",
463
- "0x011a92b6ae845fca18c3877e71602755983960c424233e3995868afadbb08915",
464
- "0xba48629772708a411d27be75f1f1b4ce94b5c61f1d5c3f742bf46dd911169ab4",
465
- "0xfca880cf632eb59cf79326690962288aa469a3f8ea5ed5431a6b3da2bd9524ea",
466
- "0xb82ecba811355e826346a633ba3f7a924f84ca0f7bab43b39423280539ac3e2e",
467
- "0x0f05979f9d7725b0dcc01c928d16e83842cc7fb7471827482ea7a912c0d49d13",
468
- "0x421cfd9ee8c958c87a24dbe2b315d101ed04579287199ca49fec93af3f5c6b44",
469
- "0x009797083528b2b097b5ed4e86b7a8ce09d4d230bc47ad5fc55056eba992af9c",
470
- "0xda306790bea2079c8332d113b9c0b2b94d947c11534a8d43844e1742ef3f0b87",
471
- "0xa7ca2796de5c4cd6ddc53debcde5ce1f97ff04a42679a7dc69cdd3ccef801818",
472
- "0xf930a383591fb426df5dc75d394368c5708d3fc45f280ed4d4f9893d1b5e0f64",
473
- "0xb3acc2d780a5fcd79afc84974fb0051ebba73b454053e9a0c3844625aebb7438",
474
- "0x50b247b9da00fa48d62b10e78e5f139da0169313b7051f328f56d987b7f72635",
475
- "0xac5c12ce32adffa8c6a39adaa54e4f9921086b1549858ddb8352611a9bc6dfaf",
476
- "0x211cc2097a9503e2d20a83d2e04bf04e2eae54fcf212de1d7c5c44f1dc2d4f26",
477
- "0xe81b13eaf7b676a84b028f0d9b015c517ca2d5c1040889fbf76e9213c81f5a13",
478
- "0x759fdf6ed79a4880c19dc2aeae6f402d3c2548c69a4ff2c414185d50d681a9b3",
479
- "0x4228cbaa3829b28afc56074a75761bc700547bce00bf62624e33d2561c0b55db",
480
- "0xcb0f89c3dc21d62b81ff4d1954b7b746d5667c6eb05182c08b9538a1d9e315c8",
481
- "0x5d0d1c7f0fb49a562150cd818dc7407d944f9d7724c688815dbb745cbd413f0e",
482
- "0x315b36e3411c3bb8a1c092c80eab9c19fd37db319dfc41befbbce9e78704988f",
483
- "0x8359dfc29f6fa9e06ba34cfa07b799a9203f17e42d3b5b3d7c48616ae1bd9aeb",
484
- "0xdc28479bc50ff36814c3272723405be178a67d0ec380719bc5d791031ec0e565",
485
- "0x3439e8ceba82c5b4a07f7c22be78c9650c88c384fdfb78572a5baa0289f723c7",
486
- "0xce6487ec2ea20a752cb27b5252faf15c7e75c07c95164a6be6a680e5411417bd",
487
- "0xda73b97749449576b0b3b406be397babab8ac683d2c63efaadfab98c0b01f6df",
488
- "0x8335757eabcb45e9de63bd17466223e59885ac9455331acff3035ee841545ffc",
489
- "0x1d19308d55db9fefe56833ddaa46ebdaefc8374acb944a0cdf0e54612ee823c6",
490
- "0xbf39356cc9332569595ba559e7a93455d6821f06607b5f81fa9ef497cef8ded4",
491
- "0x21c53c6633f95c9d09873f882357b9d3c9d578e36ac9ff4522c4f162d8f063c6",
492
- "0x080e51f918966a1a991fb35bf43f03f3d4b1d059b930f9425d03243909e6627e",
493
- "0x850bbd853553d4e63e7deae2b46c717f4898eb4cd2ab70b92074ba75e0669b28",
494
- "0x560bd9e5208ffab137318cb78dd22d022418ef05851559df6373184b6008d921",
495
- "0x68b994d4812451cd5dd0a6f79ec4af6c55bd81af96e80f398378827bfd2bfc79",
496
- "0xc8d2c46cfc54c6ee29c4ca9f11ff6775051d59b1c774fd2fa732f92236f535ba",
497
- "0xb706132112362fe076cca1c33cf4fef2e910f70fe2a453e45b710034059f1757",
498
- "0xb19912b950a53e2a6b16bfe2e8847f43ba7a3d15993701ebebe0e9c0971ca3dc",
499
- "0xcc8c01edc1360397cca04b87c4d94819da70fab718dc1c75cad7c43f82502d9e",
500
- "0x1a10b69ecdfb19ec88477595d14627de4335de63ee04d3273822cb571327f8a8",
501
- "0xcfab191eed98547c47065c6d3e5759306423f9c2610629adb5df336c7224bddb",
502
- "0xcf8fdcb00038d10d5fa3c847e4611ffee02ac20ee75ad45841451c9f1410e045",
503
- "0xe6d72fe86fbfa94a7e03e72d292f8d4bab188b18a4d732b500fc867d84bd86d6",
504
- ],
505
- "transactionsRoot": "0xe1aed9562570b4a0f31aebcc7558960f7aeafa3bd2a062977e2c927ff795af27",
506
- "uncles": [],
507
- },
508
- }
509
- `)
510
- expect(socket.requests.size).toBe(0)
511
- })
512
-
513
- test('invalid request', async () => {
514
- const socket = await getSocket(localWsUrl)
515
- await expect(
516
- () =>
517
- new Promise<any>((resolve, reject) =>
518
- rpc.webSocket(socket, {
519
- body: {
520
- method: 'wagmi_lol',
521
- },
522
- onData: resolve,
523
- onError: reject,
524
- }),
525
- ),
526
- ).rejects.toThrowError(
527
- 'data did not match any variant of untagged enum EthRpcCall',
528
- )
529
- expect(socket.requests.size).toBe(0)
530
- })
531
-
532
- test('invalid request (closing socket)', async () => {
533
- const socket = await getSocket(localWsUrl)
534
- await wait(1000)
535
- socket.close()
536
- await expect(
537
- () =>
538
- new Promise<any>((resolve, reject) =>
539
- rpc.webSocket(socket, {
540
- body: {
541
- method: 'wagmi_lol',
542
- },
543
- onData: resolve,
544
- onError: reject,
545
- }),
546
- ),
547
- ).rejects.toThrowErrorMatchingInlineSnapshot(
548
- `
549
- "WebSocket request failed.
550
-
551
- URL: ws://127.0.0.1:8545/
552
- Request body: {\\"method\\":\\"wagmi_lol\\"}
553
-
554
- Details: Socket is closed.
555
- Version: viem@1.0.2"
556
- `,
557
- )
558
- await wait(100)
559
- })
560
-
561
- test('invalid request (closed socket)', async () => {
562
- const socket = await getSocket(localWsUrl)
563
- socket.close()
564
- await wait(1000)
565
- await expect(
566
- () =>
567
- new Promise<any>((resolve, reject) =>
568
- rpc.webSocket(socket, {
569
- body: {
570
- method: 'wagmi_lol',
571
- },
572
- onData: resolve,
573
- onError: reject,
574
- }),
575
- ),
576
- ).rejects.toThrowErrorMatchingInlineSnapshot(
577
- `
578
- "WebSocket request failed.
579
-
580
- URL: ws://127.0.0.1:8545/
581
- Request body: {\\"method\\":\\"wagmi_lol\\"}
582
-
583
- Details: Socket is closed.
584
- Version: viem@1.0.2"
585
- `,
586
- )
587
- })
588
- })
589
-
590
- describe('webSocket (subscription)', () => {
591
- test('basic', async () => {
592
- const socket = await getSocket(localWsUrl)
593
- let data_: RpcResponse[] = []
594
- rpc.webSocket(socket, {
595
- body: {
596
- method: 'eth_subscribe',
597
- params: ['newHeads'],
598
- },
599
- onData: (data) => data_.push(data),
600
- })
601
- await wait(2000)
602
- expect(socket.subscriptions.size).toBe(1)
603
- expect(data_.length).toBe(3)
604
-
605
- await rpc.webSocketAsync(socket, {
606
- body: {
607
- method: 'eth_unsubscribe',
608
- params: [(data_[0] as any).result],
609
- },
610
- })
611
-
612
- await wait(2000)
613
- expect(socket.subscriptions.size).toBe(0)
614
- expect(data_.length).toBe(3)
615
- })
616
-
617
- test('multiple', async () => {
618
- const socket = await getSocket(localWsUrl)
619
- let s1: RpcResponse[] = []
620
- rpc.webSocket(socket, {
621
- body: {
622
- method: 'eth_subscribe',
623
- params: ['newHeads'],
624
- },
625
- onData: (data) => s1.push(data),
626
- })
627
-
628
- let s2: RpcResponse[] = []
629
- rpc.webSocket(socket, {
630
- body: {
631
- method: 'eth_subscribe',
632
- params: ['newHeads'],
633
- },
634
- onData: (data) => s2.push(data),
635
- })
636
-
637
- let s3: RpcResponse[] = []
638
- rpc.webSocket(socket, {
639
- body: {
640
- method: 'eth_subscribe',
641
- params: ['newPendingTransactions'],
642
- },
643
- onData: (data) => s3.push(data),
644
- })
645
-
646
- await wait(2000)
647
- expect(socket.requests.size).toBe(0)
648
- expect(socket.subscriptions.size).toBe(3)
649
- expect(s1.length).toBe(3)
650
- expect(s2.length).toBe(3)
651
- expect(s3.length).toBe(1)
652
-
653
- await rpc.webSocketAsync(socket, {
654
- body: {
655
- method: 'eth_unsubscribe',
656
- params: [(s1[0] as any).result],
657
- },
658
- })
659
-
660
- await wait(2000)
661
- expect(socket.requests.size).toBe(0)
662
- expect(socket.subscriptions.size).toBe(2)
663
- expect(s1.length).toBe(3)
664
- expect(s2.length).toBe(5)
665
- expect(s3.length).toBe(1)
666
-
667
- await rpc.webSocketAsync(socket, {
668
- body: {
669
- method: 'eth_unsubscribe',
670
- params: [(s2[0] as any).result],
671
- },
672
- })
673
- await rpc.webSocketAsync(socket, {
674
- body: {
675
- method: 'eth_unsubscribe',
676
- params: [(s3[0] as any).result],
677
- },
678
- })
679
-
680
- await wait(2000)
681
- expect(socket.requests.size).toBe(0)
682
- expect(socket.subscriptions.size).toBe(0)
683
- expect(s1.length).toBe(3)
684
- expect(s2.length).toBe(5)
685
- expect(s3.length).toBe(1)
686
- })
687
-
688
- test('invalid subscription', async () => {
689
- const socket = await getSocket(localWsUrl)
690
- let err_: Error | undefined
691
- rpc.webSocket(socket, {
692
- body: {
693
- method: 'eth_subscribe',
694
- params: ['fakeHeadz'],
695
- },
696
- onError: (err) => (err_ = err),
697
- })
698
- await wait(500)
699
- expect(socket.requests.size).toBe(0)
700
- expect(socket.subscriptions.size).toBe(0)
701
- expect(err_).toMatchInlineSnapshot(`
702
- [RpcError: RPC Request failed.
703
-
704
- URL: ws://127.0.0.1:8545/
705
- Request body: {"method":"eth_subscribe","params":["fakeHeadz"]}
706
-
707
- Details: data did not match any variant of untagged enum EthRpcCall
708
- Version: viem@1.0.2]
709
- `)
710
- })
711
- })
712
-
713
- describe('webSocketAsync', () => {
714
- test('valid request', async () => {
715
- const socket = await getSocket(localWsUrl)
716
- const { id, ...version } = await rpc.webSocketAsync(socket, {
717
- body: { method: 'web3_clientVersion' },
718
- })
719
- expect(id).toBeDefined()
720
- expect(version).toMatchInlineSnapshot(`
721
- {
722
- "jsonrpc": "2.0",
723
- "result": "anvil/v0.1.0",
724
- }
725
- `)
726
- expect(socket.requests.size).toBe(0)
727
- })
728
-
729
- test('valid request', async () => {
730
- const socket = await getSocket(localWsUrl)
731
- const { id, ...block } = await rpc.webSocketAsync(socket, {
732
- body: {
733
- method: 'eth_getBlockByNumber',
734
- params: [numberToHex(initialBlockNumber), false],
735
- },
736
- })
737
- expect(id).toBeDefined()
738
- expect(block).toMatchInlineSnapshot(`
739
- {
740
- "jsonrpc": "2.0",
741
- "result": {
742
- "baseFeePerGas": "0x2f9b711b9",
743
- "difficulty": "0x0",
744
- "extraData": "0x6265617665726275696c642e6f7267",
745
- "gasLimit": "0x1c9c380",
746
- "gasUsed": "0x120bbd0",
747
- "hash": "0x3f900200152e9e7731b6adfb4a9a5cf43c71f3ff600962efe544f3b1d9466fac",
748
- "logsBloom": "0xeeec4ae861e4d9e400eb97e3c26253a37852273ababa634d97d300674e269f1a567884ba980b255ac72c1d787a129b8786e9b4201f21316cb6e8274545adbe4fb9264bf2f936df28efcdf72ff393486d4adae488455c34ed5c7d3e158d070938db650d71021a42da46105b004f05ad1fd614768209bc8ef44e0ada968a384a791639509379623bcbc1fc8cb876e3282969c5b9abc354b159678dd87153b6aecbbec06d7f3eb37a9a98596ce72c638ac7c2788ea00a36f0cfb96f0ec314bc8b4a473b955fc5c4dbdba1aaddb5a9c412165169cae009ae09561a79ab8f822cfd533d73bd988dd42dc4185618f62b310b40173f62b628fe2fe5958e3b14acc60860",
749
- "miner": "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5",
750
- "mixHash": "0xd7de5432d0e9545465317f2f0f82f6f60dfc35055103378c2b4c19a9218e7c75",
751
- "nonce": "0x0000000000000000",
752
- "number": "0xf86cc2",
753
- "parentHash": "0xb932f77cf770d1d1c8f861153eec1e990f5d56b6ffdb4ac06aef3cca51ef37d4",
754
- "receiptsRoot": "0x7c577c7a2c1649735565691411b9236e1946dc74f3f474d15c014bece0104de8",
755
- "sealFields": [],
756
- "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
757
- "size": "0x18011",
758
- "stateRoot": "0x651162a87a2905c6f37ab5f0a2676f9cd8fc5ff618cb5c1a89bf25ddea7f391c",
759
- "timestamp": "0x63abc18b",
760
- "totalDifficulty": "0xc70d815d562d3cfa955",
761
- "transactions": [
762
- "0x1351de11f81a077cd300914e278c870c3df5b26d3f3b2a4a3f8db76bc138e7d3",
763
- "0x7d5c80f38b2e706aa3bd19b234e6026c8a4c0543bf299dfe609193693ac27dfb",
764
- "0xc986d00394b3aea84f19906037be219456f13894c0fcfecbd242b36d52a0fa01",
765
- "0x73271cf06de97fdbbf0be2bb13b9376a98b1715b6d463c81f5ce73a9988b6f5c",
766
- "0x48c27153e0fd95de6bb7858dc42ff2d16aa0123ff6f4839dda23da82c170df13",
767
- "0xb901cc43954131517926708106398c5c0c3c77c2550b18fb7bd6eb45a6b39284",
768
- "0xc6d0d2bf4e46725ed595acdc8bc841994d1e63500c0c06671bc19379c5f111dd",
769
- "0xb05036fbb0125a493090289331e0b9d44c8ebb3f7852c0a1657ff9e0fce0f51f",
770
- "0x14bbc701396fffe3b212eb96af063cb97e05ee36c98b133da22a5968a4b38707",
771
- "0x6b96c5431807ef6792333f1e448dc52d72d24b1460879da6b88a94858bc27a12",
772
- "0xda1f70f856e3ffc9ed5d5c3c91d8e13b0256931ca759be650407de7053842f4c",
773
- "0xe52666b85980c7f2cdf1c36ef32a69164c65250109bc9f639ebbc990390c8176",
774
- "0x5010f98f3ed2110fd40c8b463ad9fa56fe9f026d3bbbfa27a86238ea69084056",
775
- "0xa554462712447f7edee4cef01317d1d2438200c70f0eafd696d21ae6483472ae",
776
- "0x4d85ba6c319c5f05768bd42bc3a8509ffb20873c763bacf72b13d6febde479a7",
777
- "0xaf32af489ae7d94b22cd47c6b1ad44872a5b5781ed329e2e5dc622c1ad9b0be2",
778
- "0x5be511e63eabbaaeb0436e972e34747edd255e30155d6e943e0c4cc81980efea",
779
- "0xdad9805520d2eb35019f9f7692750959943a9c1dc9ecf31d234273eb0af93be5",
780
- "0x33e0a938bdb373ab8a57a03d20faa1fad0b793c86b61cc8cfbd9187f7a7a8f6c",
781
- "0x552e8b37157fa2fc8576b56e73b314d6001531e00c8c406c25b46c2275d99cb4",
782
- "0x8a47abc6188d6500b71744d03c68e20b017a33c4291b30eb6c8a1d332b03a654",
783
- "0xf6a51940f09b38b619958b2955841d6a5c80230a4bfda8266a2c59ebb2722528",
784
- "0x6d0adc2c20661faa7fab9ab72d09c7688fc61ab1d5d6d2f453b969c820377a2b",
785
- "0x91963d8420403980eeee8434d1d158dc0e7fb035d0b6bbc0cfa795965a9189c6",
786
- "0x4bb35a76df1f1b12cdb722f86548061bdcad763a96a0ee1a0bf8f8a3acc4894b",
787
- "0xbb1be5996b36846b4455ee515e701a8619741e035b89e7abf0b8dccba3d882fc",
788
- "0x995df00e7dd97dd7d591ebab4a8af2a5689ce67d98378857311715fc0c04e3c4",
789
- "0x6d0ef7c18c8a79e8c5357ede322c0f3c9bb79b423dcd38d68ece250d6dd90e82",
790
- "0x5e23f022fe06150e4269e76a0607732d960cec687398d7bb9551e2f396629a54",
791
- "0xc284f18afa7be933a7c2dd81666553ecb454280d68c5ab368e980e75d18cf341",
792
- "0x89710dd344aee964826271ee471c290cc07c75f5fa1567d3fb7a5bd7d9c98fd1",
793
- "0x0c98cd5eeeb28e14eeef72fc71432467b87f5b726adc97372d8a0533023d306b",
794
- "0xf9a3c04b2f40ca3b42a61988ada325db3ab11bda42ab9cb9c01c685e4d66bc04",
795
- "0x55531cea77c328a669b76543c20352346172f40d206afe38f25a8e79b1cd89eb",
796
- "0xb7d3f39769d5e1da93f979809d59fc0950136cfe4e58a59ae322993ad444d787",
797
- "0x4b3cb165f91b96ba7a90fe7cc1cb5dcf0d8ea379446970c650273f8e11cb5957",
798
- "0x4778b34dae4eb5de168b9c8aadec570cd8e73ff31f8633d84ebad667b736c5ef",
799
- "0xa298bfbb6cfd9f9663205aa81032df3f09c4ebdf5ff3411cd4db787429b6d014",
800
- "0x2b76948313eb52ab9e06b171d9ab6e746d19ef031e5d94bbb7f9d8ec532a9fe8",
801
- "0xa5835cf94ea79ec5518e4d0400f206e57bcab07696fcea7cf6308cd4c3647cfb",
802
- "0xfb00b96840d28381ea9d09d185d6bc0882acfba09a5b64997dab030178fee0a1",
803
- "0x30b4a72ee9e077c57c78cf86d8d2d6efef9f28f84f85eddeca5e35476fe011f8",
804
- "0x48d8e59134e8e89987b6059bda69d988b19a78e072c6c40dcf25b748d7916aac",
805
- "0x35af74b2deb8ea65742be1e8b75ad1c49bbbf01d1bfd26037fcaf3cd89926e39",
806
- "0x6763cf676ad90dfb40a6bd22d54d36a65571874c66b6e1bea3690cad8d051321",
807
- "0x760054fc96b0f8612dad81cea54de6d55622259a4a022398537d2814ed8ccb17",
808
- "0x2d58f61719af0756262b390ab0587babadb77da1403695dbb9b58dd5f4148d30",
809
- "0x6d1277534c5314ac1a7b9c05f92040c53144c45b55676c604304a4e3c4e9e0ac",
810
- "0xfa5bfaaed054884e849ce6988ab948ad7e98158741013c8da40f280879103125",
811
- "0xec2c8a649815c8a76a1c9d5ae0a4d2ca5530207dd59c84beb79e643c2b4699de",
812
- "0x5fc207821af511e130bac12d541562db4f9f956e2d2150cbdcce2ff2b2271dfe",
813
- "0xb3ca73f157d9837633dd44b86bb7b91fcdfabfeba6339f3cd5e5d2ca0a99054c",
814
- "0xdcb443a670462f3dc014e721b9b57a68d9288bebc74a29172192099746392cdb",
815
- "0x815de12d2b3d66a7cb0a29f0a21a597d1d6c5eadd077a2e42543c8266c1c552f",
816
- "0x5b8ed4cb34ed17d8e82f9037d828b73f3ec09caec6691a4919df7759d02cb989",
817
- "0xa4d7bcba3b2a421fe3af2ba43f8a30ea662015d8292916dd231bc6b125be8378",
818
- "0x69def64bae7292bc0a5c72d4b9f14426cc8d7aa12f89ba2fa685f63c466e398e",
819
- "0xad6f4e025468372f4b6e925584beb95675da74217d6344637443b0f1267af09b",
820
- "0x7c207ef61607ba16622cf9796156a22a29dab59ed77666ef5b81808fb8feca81",
821
- "0xc5ac8b92f5216cdd316cc4c28f3cdd6ee6978cb848379c51b8ce6ea5a8c0a231",
822
- "0x856d42db3f08e9c493d4e0239a5e6e610c58951a87d55eb4c6c7103d1e9818af",
823
- "0x557775076b85cead00fc6c33417b56743baf7cb301f965dd8e35263d18b860c2",
824
- "0x930031f6567e75ddbc7061ef851b0c1cb95eecf57c4db559b63e9f78b132011b",
825
- "0x3d016940fac9cbcb035310141727206a5a7cd936b8ac7ef8ad492f2c35f10b06",
826
- "0x5cc81c393a2c1523b9a8342eb2a291321ee8c5cd99a0f647570e3cc4fade8a7f",
827
- "0x75b03ab8d646c483878914bd0c91c1d1a2018f0fa039e72ad35cc9fb657f324e",
828
- "0xfd38eecb7f9689315484627791d3393d2f7286b40be85c0f44b879cb46710645",
829
- "0xf2f08c1b2723ac801ec471099071a6d8d60ab0b3847dd14400a88ca6fe2b0804",
830
- "0xafc9d2533c985139de1e3cda1c3ebdb022456d644dc0b32e05c8ce602cb0308f",
831
- "0x0f06d0716036c226992ae14def944de3bf651459f7d1a631b88d63bb35db2287",
832
- "0xc332aa7d2c9459a8149bdd04a0da2552f7fd3871d6dc00c932bb8ca115e3b124",
833
- "0xcdac2adc326d645b9ecdaf1954da28026957c87873f7e97d6236756395385901",
834
- "0x890e71419171b6c94acfa3859d9cad0acfae4095a4d4989b2f613e429e4e8f60",
835
- "0x681ede0467b184ae2fbc17b4d3a78d1eaa4674555494aaf872abe72c1ac10c57",
836
- "0xdcc80cfc23ad4582fca9b31590dc7badd5104b90e564e6e73718f437118c7f73",
837
- "0x53421fb3b6ce41428288863ab2983601400662ecee01f25f8005e13edae57be9",
838
- "0xabc0c5603cce5690d0c66a50e938a13e3ec5a5252345e70348b11276f2d3f3dd",
839
- "0x9b3f6a66edaf57e527d167569bc28ed14fd74a3b57dda552a98249372c559693",
840
- "0x1944f7eef251c45eb7a41c3dcbb2e38d05a68c935678d9de83352b2c553583c6",
841
- "0x37bc6090d2417fba1b1b06c5d1416be4012ca79df2e88d65c0b70fdbea28e85f",
842
- "0x9e35edc9fd33b00138cb4740aa9fcc67fb4a55639e30e3f55100f6fde63219fa",
843
- "0x93f72376c013a41bbac041280e426808162ae3c7fff4c86336283a338f98c629",
844
- "0x74277cfdf9d119e4acc2ac5b91883ade1888dce2d6f27a854ee12301379f7b72",
845
- "0x98889715672a70ca2e2d7b5c30269523a11ec510cf906d26f842692644265983",
846
- "0x11265cfc4888c5c00ec3848cbbf6b97c923127a8d71a576d9f40f29aaac3fab1",
847
- "0x227eafafdbbf1b38cb9b44720780c8730f5fcc963417d214c1b5b3ae15aea8ac",
848
- "0x789a22790ccc6db1aad0d4fdacef1e99f985083dac5c71684a05984173eb722e",
849
- "0x7ed24aed7c45de70482f19ce398574cd753d47fa26a5a72f7a85fbaebe1f3247",
850
- "0x95880d0c34bb3ed909f73dde91f24262724d231256739c79cfb76e5456d2da5e",
851
- "0x31299e470fc68ea56bd9f04b0cf1a63f56b48ff8475474e784f783db1fecad0c",
852
- "0x846a23db36d000b6c3dc4c4404daab5e749488273b022819f97250224ce86602",
853
- "0x011a92b6ae845fca18c3877e71602755983960c424233e3995868afadbb08915",
854
- "0xba48629772708a411d27be75f1f1b4ce94b5c61f1d5c3f742bf46dd911169ab4",
855
- "0xfca880cf632eb59cf79326690962288aa469a3f8ea5ed5431a6b3da2bd9524ea",
856
- "0xb82ecba811355e826346a633ba3f7a924f84ca0f7bab43b39423280539ac3e2e",
857
- "0x0f05979f9d7725b0dcc01c928d16e83842cc7fb7471827482ea7a912c0d49d13",
858
- "0x421cfd9ee8c958c87a24dbe2b315d101ed04579287199ca49fec93af3f5c6b44",
859
- "0x009797083528b2b097b5ed4e86b7a8ce09d4d230bc47ad5fc55056eba992af9c",
860
- "0xda306790bea2079c8332d113b9c0b2b94d947c11534a8d43844e1742ef3f0b87",
861
- "0xa7ca2796de5c4cd6ddc53debcde5ce1f97ff04a42679a7dc69cdd3ccef801818",
862
- "0xf930a383591fb426df5dc75d394368c5708d3fc45f280ed4d4f9893d1b5e0f64",
863
- "0xb3acc2d780a5fcd79afc84974fb0051ebba73b454053e9a0c3844625aebb7438",
864
- "0x50b247b9da00fa48d62b10e78e5f139da0169313b7051f328f56d987b7f72635",
865
- "0xac5c12ce32adffa8c6a39adaa54e4f9921086b1549858ddb8352611a9bc6dfaf",
866
- "0x211cc2097a9503e2d20a83d2e04bf04e2eae54fcf212de1d7c5c44f1dc2d4f26",
867
- "0xe81b13eaf7b676a84b028f0d9b015c517ca2d5c1040889fbf76e9213c81f5a13",
868
- "0x759fdf6ed79a4880c19dc2aeae6f402d3c2548c69a4ff2c414185d50d681a9b3",
869
- "0x4228cbaa3829b28afc56074a75761bc700547bce00bf62624e33d2561c0b55db",
870
- "0xcb0f89c3dc21d62b81ff4d1954b7b746d5667c6eb05182c08b9538a1d9e315c8",
871
- "0x5d0d1c7f0fb49a562150cd818dc7407d944f9d7724c688815dbb745cbd413f0e",
872
- "0x315b36e3411c3bb8a1c092c80eab9c19fd37db319dfc41befbbce9e78704988f",
873
- "0x8359dfc29f6fa9e06ba34cfa07b799a9203f17e42d3b5b3d7c48616ae1bd9aeb",
874
- "0xdc28479bc50ff36814c3272723405be178a67d0ec380719bc5d791031ec0e565",
875
- "0x3439e8ceba82c5b4a07f7c22be78c9650c88c384fdfb78572a5baa0289f723c7",
876
- "0xce6487ec2ea20a752cb27b5252faf15c7e75c07c95164a6be6a680e5411417bd",
877
- "0xda73b97749449576b0b3b406be397babab8ac683d2c63efaadfab98c0b01f6df",
878
- "0x8335757eabcb45e9de63bd17466223e59885ac9455331acff3035ee841545ffc",
879
- "0x1d19308d55db9fefe56833ddaa46ebdaefc8374acb944a0cdf0e54612ee823c6",
880
- "0xbf39356cc9332569595ba559e7a93455d6821f06607b5f81fa9ef497cef8ded4",
881
- "0x21c53c6633f95c9d09873f882357b9d3c9d578e36ac9ff4522c4f162d8f063c6",
882
- "0x080e51f918966a1a991fb35bf43f03f3d4b1d059b930f9425d03243909e6627e",
883
- "0x850bbd853553d4e63e7deae2b46c717f4898eb4cd2ab70b92074ba75e0669b28",
884
- "0x560bd9e5208ffab137318cb78dd22d022418ef05851559df6373184b6008d921",
885
- "0x68b994d4812451cd5dd0a6f79ec4af6c55bd81af96e80f398378827bfd2bfc79",
886
- "0xc8d2c46cfc54c6ee29c4ca9f11ff6775051d59b1c774fd2fa732f92236f535ba",
887
- "0xb706132112362fe076cca1c33cf4fef2e910f70fe2a453e45b710034059f1757",
888
- "0xb19912b950a53e2a6b16bfe2e8847f43ba7a3d15993701ebebe0e9c0971ca3dc",
889
- "0xcc8c01edc1360397cca04b87c4d94819da70fab718dc1c75cad7c43f82502d9e",
890
- "0x1a10b69ecdfb19ec88477595d14627de4335de63ee04d3273822cb571327f8a8",
891
- "0xcfab191eed98547c47065c6d3e5759306423f9c2610629adb5df336c7224bddb",
892
- "0xcf8fdcb00038d10d5fa3c847e4611ffee02ac20ee75ad45841451c9f1410e045",
893
- "0xe6d72fe86fbfa94a7e03e72d292f8d4bab188b18a4d732b500fc867d84bd86d6",
894
- ],
895
- "transactionsRoot": "0xe1aed9562570b4a0f31aebcc7558960f7aeafa3bd2a062977e2c927ff795af27",
896
- "uncles": [],
897
- },
898
- }
899
- `)
900
- expect(socket.requests.size).toBe(0)
901
- })
902
-
903
- test('serial requests', async () => {
904
- const socket = await getSocket(localWsUrl)
905
- let response: any = []
906
- for (const i in Array.from({ length: 10 })) {
907
- response.push(
908
- await rpc.webSocketAsync(socket, {
909
- body: {
910
- method: 'eth_getBlockByNumber',
911
- params: [numberToHex(initialBlockNumber - BigInt(i)), false],
912
- },
913
- }),
914
- )
915
- }
916
- expect(response.map((r: any) => r.result.number)).toEqual(
917
- Array.from({ length: 10 }).map((_, i) =>
918
- numberToHex(initialBlockNumber - BigInt(i)),
919
- ),
920
- )
921
- expect(socket.requests.size).toBe(0)
922
- })
923
-
924
- test('parallel requests', async () => {
925
- await wait(500)
926
- const socket = await getSocket(localWsUrl)
927
- const response = await Promise.all(
928
- Array.from({ length: 100 }).map(async (_, i) => {
929
- return await rpc.webSocketAsync(socket, {
930
- body: {
931
- method: 'eth_getBlockByNumber',
932
- params: [numberToHex(initialBlockNumber - BigInt(i)), false],
933
- },
934
- })
935
- }),
936
- )
937
- expect(response.map((r) => r.result.number)).toEqual(
938
- Array.from({ length: 100 }).map((_, i) =>
939
- numberToHex(initialBlockNumber - BigInt(i)),
940
- ),
941
- )
942
- expect(socket.requests.size).toBe(0)
943
- await wait(500)
944
- })
945
-
946
- test('invalid request', async () => {
947
- const socket = await getSocket(localWsUrl)
948
- await expect(() =>
949
- rpc.webSocketAsync(socket, {
950
- body: {
951
- method: 'wagmi_lol',
952
- },
953
- }),
954
- ).rejects.toThrowErrorMatchingInlineSnapshot(
955
- `
956
- "RPC Request failed.
957
-
958
- URL: ws://127.0.0.1:8545/
959
- Request body: {\\"method\\":\\"wagmi_lol\\"}
960
-
961
- Details: data did not match any variant of untagged enum EthRpcCall
962
- Version: viem@1.0.2"
963
- `,
964
- )
965
- })
966
-
967
- test.skip('timeout', async () => {
968
- const socket = await getSocket(localWsUrl)
969
- try {
970
- await rpc.webSocketAsync(socket, {
971
- body: {
972
- method: 'eth_getBlockByNumber',
973
- params: [numberToHex(initialBlockNumber), false],
974
- },
975
- timeout: 10,
976
- })
977
- } catch (err) {
978
- expect(err).toMatchInlineSnapshot(`
979
- [TimeoutError: The request took too long to respond.
980
-
981
- URL: wss://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC
982
- Request body: {"method":"eth_getBlockByNumber","params":["0xe6e560",false]}
983
-
984
- Details: The request timed out.
985
- Version: viem@1.0.2]
986
- `)
987
- }
988
- })
989
- })