viem 0.0.1-cjs.10 → 0.0.1-sushi.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 (532) hide show
  1. package/contract/package.json +4 -0
  2. package/dist/call-ac509982.d.ts +23 -0
  3. package/dist/chain-c4ccb458.d.ts +5 -0
  4. package/dist/{rpc-b77c5aee.d.ts → chain-f16512e8.d.ts} +97 -17
  5. package/dist/chains.d.ts +1303 -74
  6. package/dist/chains.js +81 -85
  7. package/dist/chains.js.map +1 -0
  8. package/dist/chains.mjs +121 -125
  9. package/dist/chains.mjs.map +1 -0
  10. package/dist/chunk-2PFNLP3F.js +192 -0
  11. package/dist/chunk-2PFNLP3F.js.map +1 -0
  12. package/dist/chunk-5ND4P6QL.mjs +192 -0
  13. package/dist/chunk-5ND4P6QL.mjs.map +1 -0
  14. package/dist/{chunk-5ZBNF5WM.js → chunk-NXCI5KQC.js} +769 -359
  15. package/dist/chunk-NXCI5KQC.js.map +1 -0
  16. package/dist/{chunk-HLVCJ7RV.mjs → chunk-O7T5NQLB.mjs} +484 -477
  17. package/dist/chunk-O7T5NQLB.mjs.map +1 -0
  18. package/dist/{chunk-2FDH6XP5.mjs → chunk-SD5X7F4U.mjs} +777 -367
  19. package/dist/chunk-SD5X7F4U.mjs.map +1 -0
  20. package/dist/{chunk-46ZFLVHC.js → chunk-UTL6F7UN.js} +519 -512
  21. package/dist/chunk-UTL6F7UN.js.map +1 -0
  22. package/dist/contract-9e76e561.d.ts +166 -0
  23. package/dist/contract.d.ts +123 -0
  24. package/dist/contract.js +53 -0
  25. package/dist/contract.js.map +1 -0
  26. package/dist/contract.mjs +53 -0
  27. package/dist/contract.mjs.map +1 -0
  28. package/dist/createClient-68ee4bb4.d.ts +62 -0
  29. package/dist/createPublicClient-b732194e.d.ts +19 -0
  30. package/dist/createTestClient-dedf321e.d.ts +34 -0
  31. package/dist/createWalletClient-75813d83.d.ts +30 -0
  32. package/dist/decodeErrorResult-0b934d23.d.ts +16 -0
  33. package/dist/{eip1193-020a6f13.d.ts → eip1193-6f9ba163.d.ts} +12 -9
  34. package/dist/ens.d.ts +82 -0
  35. package/dist/ens.js +216 -0
  36. package/dist/ens.js.map +1 -0
  37. package/dist/ens.mjs +216 -0
  38. package/dist/ens.mjs.map +1 -0
  39. package/dist/getAbiItem-c8e6e7d4.d.ts +97 -0
  40. package/dist/index.d.ts +128 -33
  41. package/dist/index.js +240 -244
  42. package/dist/index.js.map +1 -0
  43. package/dist/index.mjs +257 -261
  44. package/dist/index.mjs.map +1 -0
  45. package/dist/public.d.ts +353 -0
  46. package/dist/public.js +58 -0
  47. package/dist/public.js.map +1 -0
  48. package/dist/public.mjs +58 -0
  49. package/dist/public.mjs.map +1 -0
  50. package/dist/readContract-4f6e2692.d.ts +10 -0
  51. package/dist/rpc-a5a7f376.d.ts +121 -0
  52. package/dist/sendTransaction-e713f90c.d.ts +12 -0
  53. package/dist/test.d.ts +161 -0
  54. package/dist/test.js +264 -0
  55. package/dist/test.js.map +1 -0
  56. package/dist/test.mjs +264 -0
  57. package/dist/test.mjs.map +1 -0
  58. package/dist/transactionReceipt-2a86c7c7.d.ts +26 -0
  59. package/dist/transactionRequest-c7794f5e.d.ts +15 -0
  60. package/dist/utils/index.d.ts +238 -24
  61. package/dist/utils/index.js +27 -2
  62. package/dist/utils/index.js.map +1 -0
  63. package/dist/utils/index.mjs +30 -5
  64. package/dist/utils/index.mjs.map +1 -0
  65. package/dist/wallet.d.ts +42 -0
  66. package/dist/wallet.js +24 -0
  67. package/dist/wallet.js.map +1 -0
  68. package/dist/wallet.mjs +24 -0
  69. package/dist/wallet.mjs.map +1 -0
  70. package/dist/watchEvent-c346c12d.d.ts +41 -0
  71. package/dist/window.d.ts +3 -2
  72. package/dist/window.js +1 -1
  73. package/dist/window.js.map +1 -0
  74. package/dist/window.mjs +1 -0
  75. package/dist/window.mjs.map +1 -0
  76. package/ens/package.json +4 -0
  77. package/package.json +40 -72
  78. package/src/_test/abis.ts +1420 -0
  79. package/src/_test/bench.ts +15 -0
  80. package/src/_test/constants.ts +63 -0
  81. package/src/_test/generated.ts +128 -0
  82. package/src/_test/globalSetup.ts +11 -0
  83. package/src/_test/index.ts +25 -0
  84. package/src/_test/setup.ts +8 -0
  85. package/src/_test/utils.ts +155 -0
  86. package/src/actions/ens/getEnsAddress.bench.ts +26 -0
  87. package/src/actions/ens/getEnsAddress.test.ts +97 -0
  88. package/src/actions/ens/getEnsAddress.ts +122 -0
  89. package/src/actions/ens/getEnsName.bench.ts +30 -0
  90. package/src/actions/ens/getEnsName.test.ts +101 -0
  91. package/src/actions/ens/getEnsName.ts +106 -0
  92. package/src/actions/ens/index.test.ts +12 -0
  93. package/src/actions/ens/index.ts +3 -0
  94. package/src/actions/index.test.ts +81 -0
  95. package/src/actions/index.ts +182 -0
  96. package/src/actions/public/call.bench.ts +48 -0
  97. package/src/actions/public/call.test.ts +99 -0
  98. package/src/actions/public/call.ts +97 -0
  99. package/src/actions/public/createBlockFilter.bench.ts +11 -0
  100. package/src/actions/public/createBlockFilter.test.ts +9 -0
  101. package/src/actions/public/createBlockFilter.ts +14 -0
  102. package/src/actions/public/createContractEventFilter.test.ts +119 -0
  103. package/src/actions/public/createContractEventFilter.ts +69 -0
  104. package/src/actions/public/createEventFilter.test.ts +277 -0
  105. package/src/actions/public/createEventFilter.ts +93 -0
  106. package/src/actions/public/createPendingTransactionFilter.bench.ts +11 -0
  107. package/src/actions/public/createPendingTransactionFilter.test.ts +9 -0
  108. package/src/actions/public/createPendingTransactionFilter.ts +14 -0
  109. package/src/actions/public/estimateGas.bench.ts +46 -0
  110. package/src/actions/public/estimateGas.test.ts +92 -0
  111. package/src/actions/public/estimateGas.ts +61 -0
  112. package/src/actions/public/getBalance.test.ts +83 -0
  113. package/src/actions/public/getBalance.ts +37 -0
  114. package/src/actions/public/getBlock.bench.ts +28 -0
  115. package/src/actions/public/getBlock.test.ts +575 -0
  116. package/src/actions/public/getBlock.ts +65 -0
  117. package/src/actions/public/getBlockNumber.bench.ts +28 -0
  118. package/src/actions/public/getBlockNumber.test.ts +27 -0
  119. package/src/actions/public/getBlockNumber.ts +32 -0
  120. package/src/actions/public/getBlockTransactionCount.bench.ts +15 -0
  121. package/src/actions/public/getBlockTransactionCount.test.ts +57 -0
  122. package/src/actions/public/getBlockTransactionCount.ts +52 -0
  123. package/src/actions/public/getBytecode.test.ts +27 -0
  124. package/src/actions/public/getBytecode.ts +32 -0
  125. package/src/actions/public/getChainId.bench.ts +15 -0
  126. package/src/actions/public/getChainId.test.ts +8 -0
  127. package/src/actions/public/getChainId.ts +7 -0
  128. package/src/actions/public/getFeeHistory.bench.ts +18 -0
  129. package/src/actions/public/getFeeHistory.test.ts +137 -0
  130. package/src/actions/public/getFeeHistory.ts +44 -0
  131. package/src/actions/public/getFilterChanges.bench.ts +13 -0
  132. package/src/actions/public/getFilterChanges.test.ts +383 -0
  133. package/src/actions/public/getFilterChanges.ts +23 -0
  134. package/src/actions/public/getFilterLogs.test.ts +297 -0
  135. package/src/actions/public/getFilterLogs.ts +20 -0
  136. package/src/actions/public/getGasPrice.bench.ts +19 -0
  137. package/src/actions/public/getGasPrice.test.ts +8 -0
  138. package/src/actions/public/getGasPrice.ts +15 -0
  139. package/src/actions/public/getLogs.test.ts +306 -0
  140. package/src/actions/public/getLogs.ts +84 -0
  141. package/src/actions/public/getStorageAt.test.ts +34 -0
  142. package/src/actions/public/getStorageAt.ts +32 -0
  143. package/src/actions/public/getTransaction.bench.ts +33 -0
  144. package/src/actions/public/getTransaction.test.ts +311 -0
  145. package/src/actions/public/getTransaction.ts +95 -0
  146. package/src/actions/public/getTransactionConfirmations.test.ts +69 -0
  147. package/src/actions/public/getTransactionConfirmations.ts +38 -0
  148. package/src/actions/public/getTransactionCount.test.ts +56 -0
  149. package/src/actions/public/getTransactionCount.ts +34 -0
  150. package/src/actions/public/getTransactionReceipt.bench.ts +33 -0
  151. package/src/actions/public/getTransactionReceipt.test.ts +179 -0
  152. package/src/actions/public/getTransactionReceipt.ts +34 -0
  153. package/src/actions/public/index.test.ts +43 -0
  154. package/src/actions/public/index.ts +146 -0
  155. package/src/actions/public/multicall.test.ts +452 -0
  156. package/src/actions/public/multicall.ts +108 -0
  157. package/src/actions/public/readContract.test.ts +328 -0
  158. package/src/actions/public/readContract.ts +73 -0
  159. package/src/actions/public/simulateContract.bench.ts +41 -0
  160. package/src/actions/public/simulateContract.test.ts +410 -0
  161. package/src/actions/public/simulateContract.ts +91 -0
  162. package/src/actions/public/uninstallFilter.bench.ts +13 -0
  163. package/src/actions/public/uninstallFilter.test.ts +65 -0
  164. package/src/actions/public/uninstallFilter.ts +17 -0
  165. package/src/actions/public/waitForTransactionReceipt.test.ts +322 -0
  166. package/src/actions/public/waitForTransactionReceipt.ts +170 -0
  167. package/src/actions/public/watchBlockNumber.test.ts +166 -0
  168. package/src/actions/public/watchBlockNumber.ts +79 -0
  169. package/src/actions/public/watchBlocks.test.ts +210 -0
  170. package/src/actions/public/watchBlocks.ts +114 -0
  171. package/src/actions/public/watchContractEvent.test.ts +305 -0
  172. package/src/actions/public/watchContractEvent.ts +108 -0
  173. package/src/actions/public/watchEvent.test.ts +195 -0
  174. package/src/actions/public/watchEvent.ts +95 -0
  175. package/src/actions/public/watchPendingTransactions.test.ts +116 -0
  176. package/src/actions/public/watchPendingTransactions.ts +74 -0
  177. package/src/actions/test/dropTransaction.test.ts +34 -0
  178. package/src/actions/test/dropTransaction.ts +17 -0
  179. package/src/actions/test/getAutomine.test.ts +14 -0
  180. package/src/actions/test/getAutomine.ts +11 -0
  181. package/src/actions/test/getTxpoolContent.test.ts +45 -0
  182. package/src/actions/test/getTxpoolContent.ts +7 -0
  183. package/src/actions/test/getTxpoolStatus.test.ts +41 -0
  184. package/src/actions/test/getTxpoolStatus.ts +12 -0
  185. package/src/actions/test/impersonateAccount.test.ts +26 -0
  186. package/src/actions/test/impersonateAccount.ts +17 -0
  187. package/src/actions/test/increaseTime.test.ts +18 -0
  188. package/src/actions/test/increaseTime.ts +17 -0
  189. package/src/actions/test/index.test.ts +38 -0
  190. package/src/actions/test/index.ts +77 -0
  191. package/src/actions/test/inspectTxpool.test.ts +50 -0
  192. package/src/actions/test/inspectTxpool.ts +7 -0
  193. package/src/actions/test/mine.test.ts +20 -0
  194. package/src/actions/test/mine.ts +16 -0
  195. package/src/actions/test/removeBlockTimestampInterval.test.ts +23 -0
  196. package/src/actions/test/removeBlockTimestampInterval.ts +7 -0
  197. package/src/actions/test/reset.test.ts +19 -0
  198. package/src/actions/test/reset.ts +18 -0
  199. package/src/actions/test/revert.test.ts +39 -0
  200. package/src/actions/test/revert.ts +14 -0
  201. package/src/actions/test/sendUnsignedTransaction.test.ts +52 -0
  202. package/src/actions/test/sendUnsignedTransaction.ts +19 -0
  203. package/src/actions/test/setAutomine.test.ts +14 -0
  204. package/src/actions/test/setAutomine.ts +8 -0
  205. package/src/actions/test/setBalance.test.ts +29 -0
  206. package/src/actions/test/setBalance.ts +20 -0
  207. package/src/actions/test/setBlockGasLimit.test.ts +21 -0
  208. package/src/actions/test/setBlockGasLimit.ts +17 -0
  209. package/src/actions/test/setBlockTimestampInterval.test.ts +23 -0
  210. package/src/actions/test/setBlockTimestampInterval.ts +16 -0
  211. package/src/actions/test/setCode.test.ts +26 -0
  212. package/src/actions/test/setCode.ts +19 -0
  213. package/src/actions/test/setCoinbase.test.ts +11 -0
  214. package/src/actions/test/setCoinbase.ts +17 -0
  215. package/src/actions/test/setIntervalMining.test.ts +30 -0
  216. package/src/actions/test/setIntervalMining.ts +16 -0
  217. package/src/actions/test/setLoggingEnabled.test.ts +10 -0
  218. package/src/actions/test/setLoggingEnabled.ts +8 -0
  219. package/src/actions/test/setMinGasPrice.test.ts +22 -0
  220. package/src/actions/test/setMinGasPrice.ts +17 -0
  221. package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +23 -0
  222. package/src/actions/test/setNextBlockBaseFeePerGas.ts +17 -0
  223. package/src/actions/test/setNextBlockTimestamp.test.ts +19 -0
  224. package/src/actions/test/setNextBlockTimestamp.ts +17 -0
  225. package/src/actions/test/setNonce.test.ts +28 -0
  226. package/src/actions/test/setNonce.ts +20 -0
  227. package/src/actions/test/setRpcUrl.test.ts +9 -0
  228. package/src/actions/test/setRpcUrl.ts +8 -0
  229. package/src/actions/test/setStorageAt.test.ts +36 -0
  230. package/src/actions/test/setStorageAt.ts +26 -0
  231. package/src/actions/test/snapshot.test.ts +18 -0
  232. package/src/actions/test/snapshot.ts +7 -0
  233. package/src/actions/test/stopImpersonatingAccount.test.ts +29 -0
  234. package/src/actions/test/stopImpersonatingAccount.ts +17 -0
  235. package/src/actions/wallet/addChain.test.ts +14 -0
  236. package/src/actions/wallet/addChain.ts +21 -0
  237. package/src/actions/wallet/deployContract.test.ts +55 -0
  238. package/src/actions/wallet/deployContract.ts +38 -0
  239. package/src/actions/wallet/getAccounts.test.ts +22 -0
  240. package/src/actions/wallet/getAccounts.ts +7 -0
  241. package/src/actions/wallet/getPermissions.test.ts +24 -0
  242. package/src/actions/wallet/getPermissions.ts +9 -0
  243. package/src/actions/wallet/index.test.ts +21 -0
  244. package/src/actions/wallet/index.ts +36 -0
  245. package/src/actions/wallet/requestAccounts.test.ts +13 -0
  246. package/src/actions/wallet/requestAccounts.ts +7 -0
  247. package/src/actions/wallet/requestPermissions.test.ts +26 -0
  248. package/src/actions/wallet/requestPermissions.ts +19 -0
  249. package/src/actions/wallet/sendTransaction.bench.ts +57 -0
  250. package/src/actions/wallet/sendTransaction.test.ts +440 -0
  251. package/src/actions/wallet/sendTransaction.ts +77 -0
  252. package/src/actions/wallet/signMessage.test.ts +61 -0
  253. package/src/actions/wallet/signMessage.ts +35 -0
  254. package/src/actions/wallet/switchChain.test.ts +21 -0
  255. package/src/actions/wallet/switchChain.ts +19 -0
  256. package/src/actions/wallet/watchAsset.test.ts +40 -0
  257. package/src/actions/wallet/watchAsset.ts +16 -0
  258. package/src/actions/wallet/writeContract.test.ts +84 -0
  259. package/src/actions/wallet/writeContract.ts +47 -0
  260. package/src/chains.test.ts +439 -0
  261. package/src/chains.ts +99 -0
  262. package/src/clients/createClient.test.ts +295 -0
  263. package/src/clients/createClient.ts +81 -0
  264. package/src/clients/createPublicClient.test.ts +165 -0
  265. package/src/clients/createPublicClient.ts +49 -0
  266. package/src/clients/createTestClient.test.ts +145 -0
  267. package/src/clients/createTestClient.ts +72 -0
  268. package/src/clients/createWalletClient.test.ts +121 -0
  269. package/src/clients/createWalletClient.ts +54 -0
  270. package/src/clients/index.test.ts +19 -0
  271. package/src/clients/index.ts +31 -0
  272. package/src/clients/transports/createTransport.test.ts +58 -0
  273. package/src/clients/transports/createTransport.ts +48 -0
  274. package/src/clients/transports/custom.test.ts +98 -0
  275. package/src/clients/transports/custom.ts +34 -0
  276. package/src/clients/transports/fallback.test.ts +393 -0
  277. package/src/clients/transports/fallback.ts +58 -0
  278. package/src/clients/transports/http.test.ts +109 -0
  279. package/src/clients/transports/http.ts +51 -0
  280. package/src/clients/transports/index.test.ts +15 -0
  281. package/src/clients/transports/index.ts +17 -0
  282. package/src/clients/transports/webSocket.test.ts +164 -0
  283. package/src/clients/transports/webSocket.ts +118 -0
  284. package/src/constants/abis.test.ts +53 -0
  285. package/src/constants/abis.ts +44 -0
  286. package/src/constants/index.test.ts +14 -0
  287. package/src/constants/index.ts +3 -0
  288. package/src/constants/solidity.test.ts +41 -0
  289. package/src/constants/solidity.ts +35 -0
  290. package/src/contract.test.ts +32 -0
  291. package/src/contract.ts +68 -0
  292. package/src/ens.test.ts +15 -0
  293. package/src/ens.ts +8 -0
  294. package/src/errors/abi.test.ts +81 -0
  295. package/src/errors/abi.ts +254 -0
  296. package/src/errors/address.test.ts +14 -0
  297. package/src/errors/address.ts +9 -0
  298. package/src/errors/base.test.ts +114 -0
  299. package/src/errors/base.ts +57 -0
  300. package/src/errors/block.test.ts +24 -0
  301. package/src/errors/block.ts +18 -0
  302. package/src/errors/chain.test.ts +46 -0
  303. package/src/errors/chain.ts +33 -0
  304. package/src/errors/contract.test.ts +233 -0
  305. package/src/errors/contract.ts +178 -0
  306. package/src/errors/data.ts +20 -0
  307. package/src/errors/encoding.ts +60 -0
  308. package/src/errors/index.ts +82 -0
  309. package/src/errors/log.ts +8 -0
  310. package/src/errors/request.test.ts +330 -0
  311. package/src/errors/request.ts +163 -0
  312. package/src/errors/rpc.test.ts +87 -0
  313. package/src/errors/rpc.ts +113 -0
  314. package/src/errors/transaction.test.ts +83 -0
  315. package/src/errors/transaction.ts +54 -0
  316. package/src/errors/transport.test.ts +11 -0
  317. package/src/errors/transport.ts +12 -0
  318. package/src/index.test.ts +116 -0
  319. package/src/index.ts +132 -0
  320. package/src/public.test.ts +36 -0
  321. package/src/public.ts +76 -0
  322. package/src/test.test.ts +38 -0
  323. package/src/test.ts +52 -0
  324. package/src/types/block.ts +71 -0
  325. package/src/types/chain.ts +6 -0
  326. package/src/types/contract.ts +497 -0
  327. package/src/types/eip1193.ts +1041 -0
  328. package/src/types/fee.ts +47 -0
  329. package/src/types/filter.ts +8 -0
  330. package/src/types/formatter.ts +23 -0
  331. package/src/types/index.ts +84 -0
  332. package/src/types/log.ts +22 -0
  333. package/src/types/misc.ts +5 -0
  334. package/src/types/multicall.ts +82 -0
  335. package/src/types/rpc.ts +35 -0
  336. package/src/types/transaction.ts +145 -0
  337. package/src/types/utils.ts +88 -0
  338. package/src/types/window.ts +9 -0
  339. package/src/utils/abi/decodeAbi.bench.ts +135 -0
  340. package/src/utils/abi/decodeAbi.test.ts +1614 -0
  341. package/src/utils/abi/decodeAbi.ts +300 -0
  342. package/src/utils/abi/decodeDeployData.test.ts +151 -0
  343. package/src/utils/abi/decodeDeployData.ts +44 -0
  344. package/src/utils/abi/decodeErrorResult.test.ts +230 -0
  345. package/src/utils/abi/decodeErrorResult.ts +45 -0
  346. package/src/utils/abi/decodeEventLog.test.ts +542 -0
  347. package/src/utils/abi/decodeEventLog.ts +107 -0
  348. package/src/utils/abi/decodeFunctionData.test.ts +138 -0
  349. package/src/utils/abi/decodeFunctionData.ts +32 -0
  350. package/src/utils/abi/decodeFunctionResult.test.ts +333 -0
  351. package/src/utils/abi/decodeFunctionResult.ts +57 -0
  352. package/src/utils/abi/encodeAbi.bench.ts +163 -0
  353. package/src/utils/abi/encodeAbi.test.ts +1447 -0
  354. package/src/utils/abi/encodeAbi.ts +273 -0
  355. package/src/utils/abi/encodeDeployData.test.ts +124 -0
  356. package/src/utils/abi/encodeDeployData.ts +40 -0
  357. package/src/utils/abi/encodeErrorResult.test.ts +192 -0
  358. package/src/utils/abi/encodeErrorResult.ts +47 -0
  359. package/src/utils/abi/encodeEventTopics.test.ts +345 -0
  360. package/src/utils/abi/encodeEventTopics.ts +75 -0
  361. package/src/utils/abi/encodeFunctionData.test.ts +138 -0
  362. package/src/utils/abi/encodeFunctionData.ts +42 -0
  363. package/src/utils/abi/encodeFunctionResult.test.ts +279 -0
  364. package/src/utils/abi/encodeFunctionResult.ts +41 -0
  365. package/src/utils/abi/formatAbiItem.test.ts +335 -0
  366. package/src/utils/abi/formatAbiItem.ts +41 -0
  367. package/src/utils/abi/formatAbiItemWithArgs.test.ts +291 -0
  368. package/src/utils/abi/formatAbiItemWithArgs.ts +27 -0
  369. package/src/utils/abi/getAbiItem.test.ts +547 -0
  370. package/src/utils/abi/getAbiItem.ts +95 -0
  371. package/src/utils/abi/index.test.ts +24 -0
  372. package/src/utils/abi/index.ts +48 -0
  373. package/src/utils/address/getAddress.bench.ts +22 -0
  374. package/src/utils/address/getAddress.test.ts +46 -0
  375. package/src/utils/address/getAddress.ts +28 -0
  376. package/src/utils/address/getContractAddress.bench.ts +20 -0
  377. package/src/utils/address/getContractAddress.test.ts +78 -0
  378. package/src/utils/address/getContractAddress.ts +59 -0
  379. package/src/utils/address/index.test.ts +17 -0
  380. package/src/utils/address/index.ts +16 -0
  381. package/src/utils/address/isAddress.test.ts +10 -0
  382. package/src/utils/address/isAddress.ts +10 -0
  383. package/src/utils/address/isAddressEqual.test.ts +55 -0
  384. package/src/utils/address/isAddressEqual.ts +6 -0
  385. package/src/utils/buildRequest.test.ts +428 -0
  386. package/src/utils/buildRequest.ts +72 -0
  387. package/src/utils/chain.test.ts +43 -0
  388. package/src/utils/chain.ts +8 -0
  389. package/src/utils/contract/extractFunctionParts.test.ts +109 -0
  390. package/src/utils/contract/extractFunctionParts.ts +27 -0
  391. package/src/utils/contract/getContractError.test.ts +282 -0
  392. package/src/utils/contract/getContractError.ts +58 -0
  393. package/src/utils/contract/index.test.ts +15 -0
  394. package/src/utils/contract/index.ts +8 -0
  395. package/src/utils/data/concat.test.ts +35 -0
  396. package/src/utils/data/concat.ts +34 -0
  397. package/src/utils/data/index.test.ts +23 -0
  398. package/src/utils/data/index.ts +13 -0
  399. package/src/utils/data/isBytes.test.ts +9 -0
  400. package/src/utils/data/isBytes.ts +7 -0
  401. package/src/utils/data/isHex.test.ts +13 -0
  402. package/src/utils/data/isHex.ts +5 -0
  403. package/src/utils/data/pad.bench.ts +30 -0
  404. package/src/utils/data/pad.test.ts +367 -0
  405. package/src/utils/data/pad.ts +53 -0
  406. package/src/utils/data/size.test.ts +18 -0
  407. package/src/utils/data/size.ts +13 -0
  408. package/src/utils/data/slice.test.ts +203 -0
  409. package/src/utils/data/slice.ts +60 -0
  410. package/src/utils/data/trim.bench.ts +34 -0
  411. package/src/utils/data/trim.test.ts +175 -0
  412. package/src/utils/data/trim.ts +33 -0
  413. package/src/utils/encoding/decodeBytes.bench.ts +40 -0
  414. package/src/utils/encoding/decodeBytes.test.ts +144 -0
  415. package/src/utils/encoding/decodeBytes.ts +63 -0
  416. package/src/utils/encoding/decodeHex.bench.ts +24 -0
  417. package/src/utils/encoding/decodeHex.test.ts +167 -0
  418. package/src/utils/encoding/decodeHex.ts +76 -0
  419. package/src/utils/encoding/decodeRlp.bench.ts +34 -0
  420. package/src/utils/encoding/decodeRlp.test.ts +350 -0
  421. package/src/utils/encoding/decodeRlp.ts +121 -0
  422. package/src/utils/encoding/encodeBytes.bench.ts +29 -0
  423. package/src/utils/encoding/encodeBytes.test.ts +676 -0
  424. package/src/utils/encoding/encodeBytes.ts +59 -0
  425. package/src/utils/encoding/encodeHex.bench.ts +49 -0
  426. package/src/utils/encoding/encodeHex.test.ts +232 -0
  427. package/src/utils/encoding/encodeHex.ts +104 -0
  428. package/src/utils/encoding/encodeRlp.bench.ts +54 -0
  429. package/src/utils/encoding/encodeRlp.test.ts +254 -0
  430. package/src/utils/encoding/encodeRlp.ts +48 -0
  431. package/src/utils/encoding/index.test.ts +32 -0
  432. package/src/utils/encoding/index.ts +36 -0
  433. package/src/utils/ens/index.test.ts +14 -0
  434. package/src/utils/ens/index.ts +7 -0
  435. package/src/utils/ens/labelhash.test.ts +55 -0
  436. package/src/utils/ens/labelhash.ts +16 -0
  437. package/src/utils/ens/namehash.test.ts +65 -0
  438. package/src/utils/ens/namehash.ts +28 -0
  439. package/src/utils/ens/normalize.bench.ts +14 -0
  440. package/src/utils/ens/normalize.test.ts +35 -0
  441. package/src/utils/ens/normalize.ts +14 -0
  442. package/src/utils/ens/packetToBytes.test.ts +11 -0
  443. package/src/utils/ens/packetToBytes.ts +29 -0
  444. package/src/utils/formatters/block.bench.ts +51 -0
  445. package/src/utils/formatters/block.test.ts +115 -0
  446. package/src/utils/formatters/block.ts +37 -0
  447. package/src/utils/formatters/extract.test.ts +14 -0
  448. package/src/utils/formatters/extract.ts +18 -0
  449. package/src/utils/formatters/feeHistory.test.ts +66 -0
  450. package/src/utils/formatters/feeHistory.ts +12 -0
  451. package/src/utils/formatters/format.test.ts +93 -0
  452. package/src/utils/formatters/format.ts +90 -0
  453. package/src/utils/formatters/index.test.ts +27 -0
  454. package/src/utils/formatters/index.ts +34 -0
  455. package/src/utils/formatters/log.test.ts +79 -0
  456. package/src/utils/formatters/log.ts +12 -0
  457. package/src/utils/formatters/transaction.test.ts +271 -0
  458. package/src/utils/formatters/transaction.ts +63 -0
  459. package/src/utils/formatters/transactionReceipt.bench.ts +73 -0
  460. package/src/utils/formatters/transactionReceipt.test.ts +151 -0
  461. package/src/utils/formatters/transactionReceipt.ts +63 -0
  462. package/src/utils/formatters/transactionRequest.bench.ts +29 -0
  463. package/src/utils/formatters/transactionRequest.test.ts +237 -0
  464. package/src/utils/formatters/transactionRequest.ts +56 -0
  465. package/src/utils/hash/getEventSignature.test.ts +61 -0
  466. package/src/utils/hash/getEventSignature.ts +4 -0
  467. package/src/utils/hash/getFunctionSignature.test.ts +22 -0
  468. package/src/utils/hash/getFunctionSignature.ts +5 -0
  469. package/src/utils/hash/hashFunction.test.ts +65 -0
  470. package/src/utils/hash/hashFunction.ts +12 -0
  471. package/src/utils/hash/index.test.ts +13 -0
  472. package/src/utils/hash/index.ts +5 -0
  473. package/src/utils/hash/keccak256.test.ts +59 -0
  474. package/src/utils/hash/keccak256.ts +21 -0
  475. package/src/utils/index.test.ts +111 -0
  476. package/src/utils/index.ts +142 -0
  477. package/src/utils/observe.test.ts +176 -0
  478. package/src/utils/observe.ts +66 -0
  479. package/src/utils/poll.test.ts +127 -0
  480. package/src/utils/poll.ts +42 -0
  481. package/src/utils/promise/index.test.ts +14 -0
  482. package/src/utils/promise/index.ts +3 -0
  483. package/src/utils/promise/withCache.test.ts +97 -0
  484. package/src/utils/promise/withCache.ts +73 -0
  485. package/src/utils/promise/withRetry.test.ts +231 -0
  486. package/src/utils/promise/withRetry.ts +61 -0
  487. package/src/utils/promise/withTimeout.test.ts +37 -0
  488. package/src/utils/promise/withTimeout.ts +39 -0
  489. package/src/utils/rpc.test.ts +990 -0
  490. package/src/utils/rpc.ts +294 -0
  491. package/src/utils/stringify.test.ts +13 -0
  492. package/src/utils/stringify.ts +5 -0
  493. package/src/utils/uid.ts +14 -0
  494. package/src/utils/unit/constants.test.ts +22 -0
  495. package/src/utils/unit/constants.ts +12 -0
  496. package/src/utils/unit/formatEther.test.ts +75 -0
  497. package/src/utils/unit/formatEther.ts +6 -0
  498. package/src/utils/unit/formatGwei.test.ts +32 -0
  499. package/src/utils/unit/formatGwei.ts +6 -0
  500. package/src/utils/unit/formatUnit.bench.ts +21 -0
  501. package/src/utils/unit/formatUnit.test.ts +40 -0
  502. package/src/utils/unit/formatUnit.ts +16 -0
  503. package/src/utils/unit/index.test.ts +28 -0
  504. package/src/utils/unit/index.ts +7 -0
  505. package/src/utils/unit/parseEther.test.ts +126 -0
  506. package/src/utils/unit/parseEther.ts +6 -0
  507. package/src/utils/unit/parseGwei.test.ts +50 -0
  508. package/src/utils/unit/parseGwei.ts +6 -0
  509. package/src/utils/unit/parseUnit.bench.ts +21 -0
  510. package/src/utils/unit/parseUnit.test.ts +54 -0
  511. package/src/utils/unit/parseUnit.ts +27 -0
  512. package/src/utils/wait.ts +3 -0
  513. package/src/wallet.test.ts +19 -0
  514. package/src/wallet.ts +23 -0
  515. package/src/window.ts +1 -0
  516. package/wallet/package.json +4 -0
  517. package/actions/package.json +0 -4
  518. package/clients/package.json +0 -4
  519. package/dist/actions/index.d.ts +0 -8
  520. package/dist/actions/index.js +0 -125
  521. package/dist/actions/index.mjs +0 -125
  522. package/dist/chunk-CWCWWGBC.mjs +0 -258
  523. package/dist/chunk-SGTIBKHG.js +0 -258
  524. package/dist/clients/index.d.ts +0 -7
  525. package/dist/clients/index.js +0 -23
  526. package/dist/clients/index.mjs +0 -23
  527. package/dist/createWalletClient-d612fe08.d.ts +0 -130
  528. package/dist/parseGwei-7c87ff41.d.ts +0 -278
  529. package/dist/rpc-26932bae.d.ts +0 -61
  530. package/dist/transactionRequest-08d30731.d.ts +0 -132
  531. package/dist/watchAsset-bc6373f4.d.ts +0 -534
  532. package/dist/webSocket-7f88e9e0.d.ts +0 -83
@@ -0,0 +1,330 @@
1
+ import { expect, test } from 'vitest'
2
+ import {
3
+ InternalRpcError,
4
+ InvalidInputRpcError,
5
+ InvalidParamsRpcError,
6
+ InvalidRequestRpcError,
7
+ JsonRpcVersionUnsupportedError,
8
+ LimitExceededRpcError,
9
+ MethodNotFoundRpcError,
10
+ MethodNotSupportedRpcError,
11
+ ParseRpcError,
12
+ RequestError,
13
+ ResourceNotFoundRpcError,
14
+ ResourceUnavailableRpcError,
15
+ RpcRequestError,
16
+ TransactionRejectedRpcError,
17
+ UnknownRpcError,
18
+ } from './request'
19
+ import { RpcError } from './rpc'
20
+
21
+ test('RequestError', () => {
22
+ expect(
23
+ new RequestError(
24
+ new RpcError({
25
+ body: { foo: 'bar' },
26
+ url: 'https://viem.sh',
27
+ error: { code: 1337, message: 'error details' },
28
+ }),
29
+ {
30
+ shortMessage: 'An internal error was received.',
31
+ },
32
+ ),
33
+ ).toMatchInlineSnapshot(`
34
+ [RpcError: An internal error was received.
35
+
36
+ Details: error details
37
+ Version: viem@1.0.2]
38
+ `)
39
+ })
40
+
41
+ test('RpcRequestError', () => {
42
+ expect(
43
+ new RpcRequestError(
44
+ new RpcError({
45
+ body: { foo: 'bar' },
46
+ url: 'https://viem.sh',
47
+ error: { code: 1337, message: 'error details' },
48
+ }),
49
+ { shortMessage: 'An internal error was received.' },
50
+ ),
51
+ ).toMatchInlineSnapshot(`
52
+ [RpcError: An internal error was received.
53
+
54
+ Details: error details
55
+ Version: viem@1.0.2]
56
+ `)
57
+ })
58
+
59
+ test('RpcRequestError', () => {
60
+ expect(
61
+ new RpcRequestError(
62
+ new RpcError({
63
+ body: { foo: 'bar' },
64
+ url: 'https://viem.sh',
65
+ error: { code: 1337, message: 'error details' },
66
+ }),
67
+ {
68
+ shortMessage: 'An internal error was received.',
69
+ docsPath: '/lol',
70
+ },
71
+ ),
72
+ ).toMatchInlineSnapshot(`
73
+ [RpcError: An internal error was received.
74
+
75
+ Docs: https://viem.sh/lol
76
+ Details: error details
77
+ Version: viem@1.0.2]
78
+ `)
79
+ })
80
+
81
+ test('ParseRpcError', () => {
82
+ expect(
83
+ new ParseRpcError(
84
+ new RpcError({
85
+ body: { foo: 'bar' },
86
+ url: 'https://viem.sh',
87
+ error: {
88
+ code: -32700,
89
+ message: 'message',
90
+ },
91
+ }),
92
+ ),
93
+ ).toMatchInlineSnapshot(`
94
+ [ParseRpcError: Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.
95
+
96
+ Details: message
97
+ Version: viem@1.0.2]
98
+ `)
99
+ })
100
+
101
+ test('InvalidRequestRpcError', () => {
102
+ expect(
103
+ new InvalidRequestRpcError(
104
+ new RpcError({
105
+ body: { foo: 'bar' },
106
+ url: 'https://viem.sh',
107
+ error: {
108
+ code: -32600,
109
+ message: 'message',
110
+ },
111
+ }),
112
+ ),
113
+ ).toMatchInlineSnapshot(`
114
+ [InvalidRequestRpcError: JSON is not a valid request object.
115
+
116
+ Details: message
117
+ Version: viem@1.0.2]
118
+ `)
119
+ })
120
+
121
+ test('MethodNotFoundRpcError', () => {
122
+ expect(
123
+ new MethodNotFoundRpcError(
124
+ new RpcError({
125
+ body: { foo: 'bar' },
126
+ url: 'https://viem.sh',
127
+ error: {
128
+ code: -32601,
129
+ message: 'message',
130
+ },
131
+ }),
132
+ ),
133
+ ).toMatchInlineSnapshot(`
134
+ [MethodNotFoundRpcError: The method does not exist / is not available.
135
+
136
+ Details: message
137
+ Version: viem@1.0.2]
138
+ `)
139
+ })
140
+
141
+ test('InvalidParamsRpcError', () => {
142
+ expect(
143
+ new InvalidParamsRpcError(
144
+ new RpcError({
145
+ body: { foo: 'bar' },
146
+ url: 'https://viem.sh',
147
+ error: {
148
+ code: -32602,
149
+ message: 'message',
150
+ },
151
+ }),
152
+ ),
153
+ ).toMatchInlineSnapshot(`
154
+ [InvalidParamsRpcError: Invalid parameters were provided to the RPC method.
155
+ Double check you have provided the correct parameters.
156
+
157
+ Details: message
158
+ Version: viem@1.0.2]
159
+ `)
160
+ })
161
+
162
+ test('InternalRpcError', () => {
163
+ expect(
164
+ new InternalRpcError(
165
+ new RpcError({
166
+ body: { foo: 'bar' },
167
+ url: 'https://viem.sh',
168
+ error: {
169
+ code: -32603,
170
+ message: 'message',
171
+ },
172
+ }),
173
+ ),
174
+ ).toMatchInlineSnapshot(`
175
+ [InternalRpcError: An internal error was received.
176
+
177
+ Details: message
178
+ Version: viem@1.0.2]
179
+ `)
180
+ })
181
+
182
+ test('InvalidInputRpcError', () => {
183
+ expect(
184
+ new InvalidInputRpcError(
185
+ new RpcError({
186
+ body: { foo: 'bar' },
187
+ url: 'https://viem.sh',
188
+ error: {
189
+ code: -32000,
190
+ message: 'message',
191
+ },
192
+ }),
193
+ ),
194
+ ).toMatchInlineSnapshot(`
195
+ [InvalidInputRpcError: Missing or invalid parameters.
196
+ Double check you have provided the correct parameters.
197
+
198
+ Details: message
199
+ Version: viem@1.0.2]
200
+ `)
201
+ })
202
+
203
+ test('ResourceNotFoundRpcError', () => {
204
+ expect(
205
+ new ResourceNotFoundRpcError(
206
+ new RpcError({
207
+ body: { foo: 'bar' },
208
+ url: 'https://viem.sh',
209
+ error: {
210
+ code: -32001,
211
+ message: 'message',
212
+ },
213
+ }),
214
+ ),
215
+ ).toMatchInlineSnapshot(`
216
+ [ResourceNotFoundRpcError: Requested resource not found.
217
+
218
+ Details: message
219
+ Version: viem@1.0.2]
220
+ `)
221
+ })
222
+
223
+ test('ResourceUnavailableRpcError', () => {
224
+ expect(
225
+ new ResourceUnavailableRpcError(
226
+ new RpcError({
227
+ body: { foo: 'bar' },
228
+ url: 'https://viem.sh',
229
+ error: {
230
+ code: -32002,
231
+ message: 'message',
232
+ },
233
+ }),
234
+ ),
235
+ ).toMatchInlineSnapshot(`
236
+ [ResourceUnavailableRpcError: Requested resource not available.
237
+
238
+ Details: message
239
+ Version: viem@1.0.2]
240
+ `)
241
+ })
242
+
243
+ test('TransactionRejectedRpcError', () => {
244
+ expect(
245
+ new TransactionRejectedRpcError(
246
+ new RpcError({
247
+ body: { foo: 'bar' },
248
+ url: 'https://viem.sh',
249
+ error: {
250
+ code: -32003,
251
+ message: 'message',
252
+ },
253
+ }),
254
+ ),
255
+ ).toMatchInlineSnapshot(`
256
+ [TransactionRejectedRpcError: Transaction creation failed.
257
+
258
+ Details: message
259
+ Version: viem@1.0.2]
260
+ `)
261
+ })
262
+
263
+ test('MethodNotSupportedRpcError', () => {
264
+ expect(
265
+ new MethodNotSupportedRpcError(
266
+ new RpcError({
267
+ body: { foo: 'bar' },
268
+ url: 'https://viem.sh',
269
+ error: {
270
+ code: -32004,
271
+ message: 'message',
272
+ },
273
+ }),
274
+ ),
275
+ ).toMatchInlineSnapshot(`
276
+ [MethodNotSupportedRpcError: Method is not implemented.
277
+
278
+ Details: message
279
+ Version: viem@1.0.2]
280
+ `)
281
+ })
282
+
283
+ test('LimitExceededRpcError', () => {
284
+ expect(
285
+ new LimitExceededRpcError(
286
+ new RpcError({
287
+ body: { foo: 'bar' },
288
+ url: 'https://viem.sh',
289
+ error: {
290
+ code: -32005,
291
+ message: 'message',
292
+ },
293
+ }),
294
+ ),
295
+ ).toMatchInlineSnapshot(`
296
+ [LimitExceededRpcError: Request exceeds defined limit.
297
+
298
+ Details: message
299
+ Version: viem@1.0.2]
300
+ `)
301
+ })
302
+
303
+ test('JsonRpcVersionUnsupportedError', () => {
304
+ expect(
305
+ new JsonRpcVersionUnsupportedError(
306
+ new RpcError({
307
+ body: { foo: 'bar' },
308
+ url: 'https://viem.sh',
309
+ error: {
310
+ code: -32006,
311
+ message: 'message',
312
+ },
313
+ }),
314
+ ),
315
+ ).toMatchInlineSnapshot(`
316
+ [JsonRpcVersionUnsupportedError: Version of JSON-RPC protocol is not supported.
317
+
318
+ Details: message
319
+ Version: viem@1.0.2]
320
+ `)
321
+ })
322
+
323
+ test('UnknownRpcError', async () => {
324
+ expect(new UnknownRpcError(new Error('oh no'))).toMatchInlineSnapshot(`
325
+ [UnknownRpcError: An unknown RPC error occurred.
326
+
327
+ Details: oh no
328
+ Version: viem@1.0.2]
329
+ `)
330
+ })
@@ -0,0 +1,163 @@
1
+ import { BaseError } from './base'
2
+ import { RpcError } from './rpc'
3
+
4
+ export class RequestError extends BaseError {
5
+ constructor(
6
+ err: Error,
7
+ { docsPath, shortMessage }: { docsPath?: string; shortMessage: string },
8
+ ) {
9
+ super(shortMessage, {
10
+ cause: err,
11
+ docsPath,
12
+ })
13
+ this.name = err.name
14
+ }
15
+ }
16
+
17
+ export class RpcRequestError extends RequestError {
18
+ code: number
19
+
20
+ constructor(
21
+ err: RpcError,
22
+ { docsPath, shortMessage }: { docsPath?: string; shortMessage: string },
23
+ ) {
24
+ super(err, { docsPath, shortMessage })
25
+ this.code = err.code
26
+ this.name = err.name
27
+ }
28
+ }
29
+
30
+ export class ParseRpcError extends RpcRequestError {
31
+ name = 'ParseRpcError'
32
+ code = -32700
33
+
34
+ constructor(err: RpcError) {
35
+ super(err, {
36
+ shortMessage:
37
+ 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',
38
+ })
39
+ }
40
+ }
41
+
42
+ export class InvalidRequestRpcError extends RpcRequestError {
43
+ name = 'InvalidRequestRpcError'
44
+ code = -32600
45
+
46
+ constructor(err: RpcError) {
47
+ super(err, { shortMessage: 'JSON is not a valid request object.' })
48
+ }
49
+ }
50
+
51
+ export class MethodNotFoundRpcError extends RpcRequestError {
52
+ name = 'MethodNotFoundRpcError'
53
+ code = -32601
54
+
55
+ constructor(err: RpcError) {
56
+ super(err, {
57
+ shortMessage: 'The method does not exist / is not available.',
58
+ })
59
+ }
60
+ }
61
+
62
+ export class InvalidParamsRpcError extends RpcRequestError {
63
+ name = 'InvalidParamsRpcError'
64
+ code = -32602
65
+
66
+ constructor(err: RpcError) {
67
+ super(err, {
68
+ shortMessage: [
69
+ 'Invalid parameters were provided to the RPC method.',
70
+ 'Double check you have provided the correct parameters.',
71
+ ].join('\n'),
72
+ })
73
+ }
74
+ }
75
+
76
+ export class InternalRpcError extends RpcRequestError {
77
+ name = 'InternalRpcError'
78
+ code = -32603
79
+
80
+ constructor(err: RpcError) {
81
+ super(err, { shortMessage: 'An internal error was received.' })
82
+ }
83
+ }
84
+
85
+ export class InvalidInputRpcError extends RpcRequestError {
86
+ name = 'InvalidInputRpcError'
87
+ code = -32000
88
+
89
+ constructor(err: RpcError) {
90
+ super(err, {
91
+ shortMessage: [
92
+ 'Missing or invalid parameters.',
93
+ 'Double check you have provided the correct parameters.',
94
+ ].join('\n'),
95
+ })
96
+ }
97
+ }
98
+
99
+ export class ResourceNotFoundRpcError extends RpcRequestError {
100
+ name = 'ResourceNotFoundRpcError'
101
+ code = -32001
102
+
103
+ constructor(err: RpcError) {
104
+ super(err, { shortMessage: 'Requested resource not found.' })
105
+ }
106
+ }
107
+
108
+ export class ResourceUnavailableRpcError extends RpcRequestError {
109
+ name = 'ResourceUnavailableRpcError'
110
+ code = -32002
111
+
112
+ constructor(err: RpcError) {
113
+ super(err, { shortMessage: 'Requested resource not available.' })
114
+ }
115
+ }
116
+
117
+ export class TransactionRejectedRpcError extends RpcRequestError {
118
+ name = 'TransactionRejectedRpcError'
119
+ code = -32003
120
+
121
+ constructor(err: RpcError) {
122
+ super(err, { shortMessage: 'Transaction creation failed.' })
123
+ }
124
+ }
125
+
126
+ export class MethodNotSupportedRpcError extends RpcRequestError {
127
+ name = 'MethodNotSupportedRpcError'
128
+ code = -32004
129
+
130
+ constructor(err: RpcError) {
131
+ super(err, { shortMessage: 'Method is not implemented.' })
132
+ }
133
+ }
134
+
135
+ export class LimitExceededRpcError extends RpcRequestError {
136
+ name = 'LimitExceededRpcError'
137
+ code = -32005
138
+
139
+ constructor(err: RpcError) {
140
+ super(err, { shortMessage: 'Request exceeds defined limit.' })
141
+ }
142
+ }
143
+
144
+ export class JsonRpcVersionUnsupportedError extends RpcRequestError {
145
+ name = 'JsonRpcVersionUnsupportedError'
146
+ code = -32006
147
+
148
+ constructor(err: RpcError) {
149
+ super(err, {
150
+ shortMessage: 'Version of JSON-RPC protocol is not supported.',
151
+ })
152
+ }
153
+ }
154
+
155
+ export class UnknownRpcError extends RequestError {
156
+ name = 'UnknownRpcError'
157
+
158
+ constructor(err: Error) {
159
+ super(err, {
160
+ shortMessage: 'An unknown RPC error occurred.',
161
+ })
162
+ }
163
+ }
@@ -0,0 +1,87 @@
1
+ import { expect, test } from 'vitest'
2
+ import { initialBlockNumber } from '../_test'
3
+ import { numberToHex } from '../utils'
4
+ import {
5
+ HttpRequestError,
6
+ RpcError,
7
+ TimeoutError,
8
+ WebSocketRequestError,
9
+ } from './rpc'
10
+
11
+ test('RpcError', () => {
12
+ const err = new RpcError({
13
+ body: { foo: 'bar' },
14
+ error: { code: 420, message: 'Error' },
15
+ url: 'https://lol.com',
16
+ })
17
+ expect(err).toMatchInlineSnapshot(`
18
+ [RpcError: RPC Request failed.
19
+
20
+ URL: https://lol.com
21
+ Request body: {"foo":"bar"}
22
+
23
+ Details: Error
24
+ Version: viem@1.0.2]
25
+ `)
26
+ })
27
+
28
+ test('HttpRequestError', () => {
29
+ const err = new HttpRequestError({
30
+ url: 'https://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC',
31
+ body: {
32
+ method: 'eth_getBlockByNumber',
33
+ params: [numberToHex(initialBlockNumber), false],
34
+ },
35
+ status: 500,
36
+ details: 'Some error',
37
+ })
38
+ expect(err).toMatchInlineSnapshot(`
39
+ [HttpRequestError: HTTP request failed.
40
+
41
+ Status: 500
42
+ URL: https://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC
43
+ Request body: {"method":"eth_getBlockByNumber","params":["0xf86cc2",false]}
44
+
45
+ Details: Some error
46
+ Version: viem@1.0.2]
47
+ `)
48
+ })
49
+
50
+ test('WebSocketRequestError', () => {
51
+ const err = new WebSocketRequestError({
52
+ url: 'ws://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC',
53
+ body: {
54
+ method: 'eth_getBlockByNumber',
55
+ params: [numberToHex(initialBlockNumber), false],
56
+ },
57
+ details: 'Some error',
58
+ })
59
+ expect(err).toMatchInlineSnapshot(`
60
+ [WebSocketRequestError: WebSocket request failed.
61
+
62
+ URL: ws://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC
63
+ Request body: {"method":"eth_getBlockByNumber","params":["0xf86cc2",false]}
64
+
65
+ Details: Some error
66
+ Version: viem@1.0.2]
67
+ `)
68
+ })
69
+
70
+ test('TimeoutError', () => {
71
+ const err = new TimeoutError({
72
+ url: 'https://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC',
73
+ body: {
74
+ method: 'eth_getBlockByNumber',
75
+ params: [numberToHex(initialBlockNumber), false],
76
+ },
77
+ })
78
+ expect(err).toMatchInlineSnapshot(`
79
+ [TimeoutError: The request took too long to respond.
80
+
81
+ URL: https://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC
82
+ Request body: {"method":"eth_getBlockByNumber","params":["0xf86cc2",false]}
83
+
84
+ Details: The request timed out.
85
+ Version: viem@1.0.2]
86
+ `)
87
+ })
@@ -0,0 +1,113 @@
1
+ import { stringify } from '../utils'
2
+ import { BaseError } from './base'
3
+
4
+ export class HttpRequestError extends BaseError {
5
+ name = 'HttpRequestError'
6
+ status
7
+
8
+ constructor({
9
+ body,
10
+ details,
11
+ status,
12
+ url,
13
+ }: {
14
+ body: { [key: string]: unknown }
15
+ details: string
16
+ status: number
17
+ url: string
18
+ }) {
19
+ super(
20
+ [
21
+ 'HTTP request failed.',
22
+ '',
23
+ `Status: ${status}`,
24
+ `URL: ${url}`,
25
+ `Request body: ${stringify(body)}`,
26
+ ].join('\n'),
27
+ {
28
+ details,
29
+ },
30
+ )
31
+ this.status = status
32
+ }
33
+ }
34
+
35
+ export class WebSocketRequestError extends BaseError {
36
+ name = 'WebSocketRequestError'
37
+
38
+ constructor({
39
+ body,
40
+ details,
41
+ url,
42
+ }: {
43
+ body: { [key: string]: unknown }
44
+ details: string
45
+ url: string
46
+ }) {
47
+ super(
48
+ [
49
+ 'WebSocket request failed.',
50
+ '',
51
+ `URL: ${url}`,
52
+ `Request body: ${stringify(body)}`,
53
+ ].join('\n'),
54
+ {
55
+ details,
56
+ },
57
+ )
58
+ }
59
+ }
60
+
61
+ export class RpcError extends BaseError {
62
+ code: number
63
+
64
+ name = 'RpcError'
65
+
66
+ constructor({
67
+ body,
68
+ error,
69
+ url,
70
+ }: {
71
+ body: { [key: string]: unknown }
72
+ error: { code: number; message: string }
73
+ url: string
74
+ }) {
75
+ super(
76
+ [
77
+ 'RPC Request failed.',
78
+ '',
79
+ `URL: ${url}`,
80
+ `Request body: ${stringify(body)}`,
81
+ ].join('\n'),
82
+ {
83
+ cause: error as any,
84
+ details: error.message,
85
+ },
86
+ )
87
+ this.code = error.code
88
+ }
89
+ }
90
+
91
+ export class TimeoutError extends BaseError {
92
+ name = 'TimeoutError'
93
+
94
+ constructor({
95
+ body,
96
+ url,
97
+ }: {
98
+ body: { [key: string]: unknown }
99
+ url: string
100
+ }) {
101
+ super(
102
+ [
103
+ 'The request took too long to respond.',
104
+ '',
105
+ `URL: ${url}`,
106
+ `Request body: ${stringify(body)}`,
107
+ ].join('\n'),
108
+ {
109
+ details: 'The request timed out.',
110
+ },
111
+ )
112
+ }
113
+ }