viem 0.0.1-sushi.26 → 0.1.0

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