essential-eth 0.4.9-beta.1 → 0.4.9-beta.2

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 (499) hide show
  1. package/dist/cjs/classes/Contract.d.ts +71 -0
  2. package/dist/cjs/classes/Contract.js +133 -0
  3. package/dist/cjs/classes/test/Contract/crv-abi.d.ts +2 -0
  4. package/dist/cjs/classes/test/Contract/crv-abi.js +488 -0
  5. package/dist/cjs/classes/test/Contract/ens-abi.d.ts +2 -0
  6. package/dist/cjs/classes/test/Contract/ens-abi.js +453 -0
  7. package/dist/cjs/classes/test/Contract/fei-abi.d.ts +2 -0
  8. package/dist/cjs/classes/test/Contract/fei-abi.js +526 -0
  9. package/dist/cjs/classes/test/Contract/foo-abi.d.ts +2 -0
  10. package/dist/cjs/classes/test/Contract/foo-abi.js +42 -0
  11. package/dist/cjs/classes/test/Contract/uniswap-abi.d.ts +2 -0
  12. package/dist/cjs/classes/test/Contract/uniswap-abi.js +121 -0
  13. package/dist/cjs/classes/utils/clean-block.d.ts +6 -0
  14. package/dist/cjs/classes/utils/clean-block.js +46 -0
  15. package/dist/cjs/classes/utils/clean-transaction.d.ts +5 -0
  16. package/dist/cjs/classes/utils/clean-transaction.js +38 -0
  17. package/dist/cjs/classes/utils/encode-decode-transaction.d.ts +3 -0
  18. package/dist/cjs/classes/utils/encode-decode-transaction.js +113 -0
  19. package/dist/cjs/classes/utils/fetchers.d.ts +9 -0
  20. package/dist/cjs/classes/utils/fetchers.js +33 -0
  21. package/{src/classes/utils/hex-to-decimal.ts → dist/cjs/classes/utils/hex-to-decimal.d.ts} +1 -3
  22. package/dist/cjs/classes/utils/hex-to-decimal.js +11 -0
  23. package/{src/index.ts → dist/cjs/index.d.ts} +2 -20
  24. package/dist/cjs/index.js +26 -0
  25. package/dist/cjs/providers/JsonRpcProvider.d.ts +23 -0
  26. package/dist/cjs/providers/JsonRpcProvider.js +94 -0
  27. package/dist/cjs/providers/utils/chains-info.d.ts +360 -0
  28. package/dist/cjs/providers/utils/chains-info.js +1081 -0
  29. package/dist/cjs/shared/tiny-big/helpers.d.ts +1 -0
  30. package/dist/cjs/shared/tiny-big/helpers.js +71 -0
  31. package/dist/cjs/shared/tiny-big/tiny-big.d.ts +19 -0
  32. package/dist/cjs/shared/tiny-big/tiny-big.js +41 -0
  33. package/dist/cjs/shared/validate-type.d.ts +3 -0
  34. package/dist/cjs/shared/validate-type.js +9 -0
  35. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -0
  36. package/dist/cjs/types/Block.types.d.ts +47 -0
  37. package/dist/cjs/types/Block.types.js +2 -0
  38. package/dist/cjs/types/Contract.types.d.ts +24 -0
  39. package/dist/cjs/types/Contract.types.js +2 -0
  40. package/dist/cjs/types/Network.types.d.ts +8 -0
  41. package/dist/cjs/types/Network.types.js +2 -0
  42. package/dist/cjs/types/Transaction.types.d.ts +34 -0
  43. package/dist/cjs/types/Transaction.types.js +2 -0
  44. package/{src/utils/ether-to-wei.ts → dist/cjs/utils/ether-to-wei.d.ts} +2 -10
  45. package/dist/cjs/utils/ether-to-wei.js +32 -0
  46. package/{src/utils/index.ts → dist/cjs/utils/index.d.ts} +0 -1
  47. package/dist/cjs/utils/index.js +11 -0
  48. package/dist/cjs/utils/is-address.d.ts +5 -0
  49. package/dist/cjs/utils/is-address.js +20 -0
  50. package/dist/cjs/utils/to-checksum-address.d.ts +17 -0
  51. package/dist/cjs/utils/to-checksum-address.js +46 -0
  52. package/{src/utils/wei-to-ether.ts → dist/cjs/utils/wei-to-ether.d.ts} +1 -8
  53. package/dist/cjs/utils/wei-to-ether.js +34 -0
  54. package/dist/esm/classes/Contract.d.ts +11 -0
  55. package/dist/esm/classes/Contract.js +70 -0
  56. package/dist/esm/classes/test/Contract/crv-abi.d.ts +2 -0
  57. package/dist/esm/classes/test/Contract/crv-abi.js +470 -0
  58. package/dist/esm/classes/test/Contract/ens-abi.d.ts +2 -0
  59. package/dist/esm/classes/test/Contract/ens-abi.js +435 -0
  60. package/dist/esm/classes/test/Contract/fei-abi.d.ts +2 -0
  61. package/dist/esm/classes/test/Contract/fei-abi.js +521 -0
  62. package/dist/esm/classes/test/Contract/foo-abi.d.ts +2 -0
  63. package/dist/esm/classes/test/Contract/foo-abi.js +33 -0
  64. package/dist/esm/classes/test/Contract/uniswap-abi.d.ts +2 -0
  65. package/dist/esm/classes/test/Contract/uniswap-abi.js +116 -0
  66. package/dist/esm/classes/utils/clean-block.d.ts +3 -0
  67. package/dist/esm/classes/utils/clean-block.js +35 -0
  68. package/dist/esm/classes/utils/clean-transaction.d.ts +2 -0
  69. package/dist/esm/classes/utils/clean-transaction.js +29 -0
  70. package/dist/esm/classes/utils/encode-decode-transaction.d.ts +3 -0
  71. package/dist/esm/classes/utils/encode-decode-transaction.js +98 -0
  72. package/dist/esm/classes/utils/fetchers.d.ts +9 -0
  73. package/dist/esm/classes/utils/fetchers.js +25 -0
  74. package/dist/esm/classes/utils/hex-to-decimal.d.ts +1 -0
  75. package/dist/esm/classes/utils/hex-to-decimal.js +3 -0
  76. package/dist/esm/index.d.ts +9 -0
  77. package/dist/esm/index.js +5 -0
  78. package/dist/esm/providers/JsonRpcProvider.d.ts +10 -0
  79. package/dist/esm/providers/JsonRpcProvider.js +74 -0
  80. package/dist/esm/providers/utils/chains-info.d.ts +360 -0
  81. package/dist/esm/providers/utils/chains-info.js +1077 -0
  82. package/dist/esm/shared/tiny-big/helpers.d.ts +1 -0
  83. package/dist/esm/shared/tiny-big/helpers.js +58 -0
  84. package/dist/esm/shared/tiny-big/tiny-big.d.ts +8 -0
  85. package/dist/esm/shared/tiny-big/tiny-big.js +22 -0
  86. package/dist/esm/shared/validate-type.d.ts +3 -0
  87. package/dist/esm/shared/validate-type.js +5 -0
  88. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  89. package/dist/esm/types/Block.types.d.ts +47 -0
  90. package/dist/esm/types/Block.types.js +1 -0
  91. package/dist/esm/types/Contract.types.d.ts +24 -0
  92. package/dist/esm/types/Contract.types.js +1 -0
  93. package/dist/esm/types/Network.types.d.ts +5 -0
  94. package/dist/esm/types/Network.types.js +1 -0
  95. package/dist/esm/types/Transaction.types.d.ts +34 -0
  96. package/dist/esm/types/Transaction.types.js +1 -0
  97. package/dist/esm/utils/ether-to-wei.d.ts +3 -0
  98. package/dist/esm/utils/ether-to-wei.js +7 -0
  99. package/dist/esm/utils/index.d.ts +5 -0
  100. package/dist/esm/utils/index.js +5 -0
  101. package/dist/esm/utils/is-address.d.ts +1 -0
  102. package/dist/esm/utils/is-address.js +12 -0
  103. package/dist/esm/utils/to-checksum-address.d.ts +1 -0
  104. package/dist/esm/utils/to-checksum-address.js +25 -0
  105. package/dist/esm/utils/wei-to-ether.d.ts +3 -0
  106. package/dist/esm/utils/wei-to-ether.js +7 -0
  107. package/package.json +4 -1
  108. package/..eslintrc.js.un~ +0 -0
  109. package/..npmignore.un~ +0 -0
  110. package/.env +0 -1
  111. package/.eslintignore +0 -4
  112. package/.eslintrc.js +0 -34
  113. package/.gitattributes +0 -1
  114. package/.github/workflows/.test.yml.un~ +0 -0
  115. package/.github/workflows/test.yml +0 -29
  116. package/.package.json.un~ +0 -0
  117. package/.prettierignore +0 -7
  118. package/.travis.yml +0 -5
  119. package/jest.config.js +0 -9
  120. package/scripts/build-website.sh +0 -4
  121. package/scripts/bump-minor.sh +0 -4
  122. package/scripts/bump-patch.sh +0 -4
  123. package/scripts/fetch-chains-info.ts +0 -70
  124. package/scripts/pre-commit.sh +0 -5
  125. package/src/classes/Contract.ts +0 -161
  126. package/src/classes/test/Contract/crv-abi.ts +0 -488
  127. package/src/classes/test/Contract/crv.test.ts +0 -56
  128. package/src/classes/test/Contract/ens-abi.ts +0 -452
  129. package/src/classes/test/Contract/ens.test.ts +0 -39
  130. package/src/classes/test/Contract/fei-abi.ts +0 -526
  131. package/src/classes/test/Contract/fei.test.ts +0 -86
  132. package/src/classes/test/Contract/foo-abi.ts +0 -42
  133. package/src/classes/test/Contract/foo.test.ts +0 -33
  134. package/src/classes/test/Contract/uni.test.ts +0 -72
  135. package/src/classes/test/Contract/uniswap-abi.ts +0 -121
  136. package/src/classes/utils/clean-block.ts +0 -49
  137. package/src/classes/utils/clean-transaction.ts +0 -35
  138. package/src/classes/utils/encode-decode-transaction.ts +0 -126
  139. package/src/classes/utils/fetchers.ts +0 -27
  140. package/src/providers/JsonRpcProvider.ts +0 -94
  141. package/src/providers/test/get-block.test.ts +0 -63
  142. package/src/providers/test/get-network.test.ts +0 -34
  143. package/src/providers/utils/chains-info.ts +0 -1079
  144. package/src/shared/tiny-big/helpers.test.ts +0 -30
  145. package/src/shared/tiny-big/helpers.ts +0 -89
  146. package/src/shared/tiny-big/tiny-big.test.ts +0 -10
  147. package/src/shared/tiny-big/tiny-big.ts +0 -36
  148. package/src/shared/validate-type.ts +0 -20
  149. package/src/types/.Contract.types.ts.un~ +0 -0
  150. package/src/types/Block.types.ts +0 -50
  151. package/src/types/Contract.types.ts +0 -67
  152. package/src/types/Network.types.ts +0 -8
  153. package/src/types/Transaction.types.ts +0 -35
  154. package/src/utils/is-address.ts +0 -16
  155. package/src/utils/tests/ether-to-wei.test.ts +0 -65
  156. package/src/utils/tests/is-address.test.ts +0 -52
  157. package/src/utils/tests/to-checksum-address.test.ts +0 -43
  158. package/src/utils/tests/wei-to-ether.test.ts +0 -72
  159. package/src/utils/to-checksum-address.ts +0 -47
  160. package/test/global-setup.js +0 -8
  161. package/test/global-teardown.js +0 -5
  162. package/test/jest.setup-after-env.js +0 -1
  163. package/test/server.js +0 -24
  164. package/tsconfig-cjs.json +0 -8
  165. package/tsconfig.json +0 -25
  166. package/typedoc/options-new-version.js +0 -8
  167. package/typedoc/options.js +0 -9
  168. package/types/just-omit.d.ts +0 -1
  169. package/website/.nojekyll +0 -1
  170. package/website/assets/highlight.css +0 -71
  171. package/website/assets/icons.css +0 -1043
  172. package/website/assets/icons.png +0 -0
  173. package/website/assets/icons@2x.png +0 -0
  174. package/website/assets/main.js +0 -52
  175. package/website/assets/search.js +0 -1
  176. package/website/assets/style.css +0 -1413
  177. package/website/assets/widgets.png +0 -0
  178. package/website/assets/widgets@2x.png +0 -0
  179. package/website/classes/Contract.html +0 -13
  180. package/website/classes/JsonRpcProvider.html +0 -8
  181. package/website/classes/TinyBig.html +0 -161
  182. package/website/index.html +0 -207
  183. package/website/interfaces/Block.html +0 -1
  184. package/website/interfaces/JSONABIArgument.html +0 -1
  185. package/website/interfaces/Network.html +0 -3
  186. package/website/interfaces/Transaction.html +0 -1
  187. package/website/modules.html +0 -32
  188. package/website/versions/0.1.2/assets/highlight.css +0 -57
  189. package/website/versions/0.1.2/assets/icons.css +0 -1043
  190. package/website/versions/0.1.2/assets/icons.png +0 -0
  191. package/website/versions/0.1.2/assets/icons@2x.png +0 -0
  192. package/website/versions/0.1.2/assets/main.js +0 -52
  193. package/website/versions/0.1.2/assets/search.js +0 -1
  194. package/website/versions/0.1.2/assets/style.css +0 -1341
  195. package/website/versions/0.1.2/assets/widgets.png +0 -0
  196. package/website/versions/0.1.2/assets/widgets@2x.png +0 -0
  197. package/website/versions/0.1.2/classes/TinyBig.html +0 -4
  198. package/website/versions/0.1.2/index.html +0 -20
  199. package/website/versions/0.1.2/modules.html +0 -23
  200. package/website/versions/0.1.3/assets/highlight.css +0 -64
  201. package/website/versions/0.1.3/assets/icons.css +0 -1043
  202. package/website/versions/0.1.3/assets/icons.png +0 -0
  203. package/website/versions/0.1.3/assets/icons@2x.png +0 -0
  204. package/website/versions/0.1.3/assets/main.js +0 -52
  205. package/website/versions/0.1.3/assets/search.js +0 -1
  206. package/website/versions/0.1.3/assets/style.css +0 -1341
  207. package/website/versions/0.1.3/assets/widgets.png +0 -0
  208. package/website/versions/0.1.3/assets/widgets@2x.png +0 -0
  209. package/website/versions/0.1.3/classes/TinyBig.html +0 -4
  210. package/website/versions/0.1.3/index.html +0 -53
  211. package/website/versions/0.1.3/modules.html +0 -23
  212. package/website/versions/0.1.4/assets/highlight.css +0 -64
  213. package/website/versions/0.1.4/assets/icons.css +0 -1043
  214. package/website/versions/0.1.4/assets/icons.png +0 -0
  215. package/website/versions/0.1.4/assets/icons@2x.png +0 -0
  216. package/website/versions/0.1.4/assets/main.js +0 -52
  217. package/website/versions/0.1.4/assets/search.js +0 -1
  218. package/website/versions/0.1.4/assets/style.css +0 -1341
  219. package/website/versions/0.1.4/assets/widgets.png +0 -0
  220. package/website/versions/0.1.4/assets/widgets@2x.png +0 -0
  221. package/website/versions/0.1.4/classes/EssentialEth.html +0 -1
  222. package/website/versions/0.1.4/classes/TinyBig.html +0 -4
  223. package/website/versions/0.1.4/index.html +0 -58
  224. package/website/versions/0.1.4/modules.html +0 -23
  225. package/website/versions/0.2.0/assets/highlight.css +0 -64
  226. package/website/versions/0.2.0/assets/icons.css +0 -1043
  227. package/website/versions/0.2.0/assets/icons.png +0 -0
  228. package/website/versions/0.2.0/assets/icons@2x.png +0 -0
  229. package/website/versions/0.2.0/assets/main.js +0 -52
  230. package/website/versions/0.2.0/assets/search.js +0 -1
  231. package/website/versions/0.2.0/assets/style.css +0 -1341
  232. package/website/versions/0.2.0/assets/widgets.png +0 -0
  233. package/website/versions/0.2.0/assets/widgets@2x.png +0 -0
  234. package/website/versions/0.2.0/classes/EssentialEth.html +0 -5
  235. package/website/versions/0.2.0/classes/TinyBig.html +0 -146
  236. package/website/versions/0.2.0/index.html +0 -89
  237. package/website/versions/0.2.0/modules.html +0 -25
  238. package/website/versions/0.2.1/assets/highlight.css +0 -64
  239. package/website/versions/0.2.1/assets/icons.css +0 -1043
  240. package/website/versions/0.2.1/assets/icons.png +0 -0
  241. package/website/versions/0.2.1/assets/icons@2x.png +0 -0
  242. package/website/versions/0.2.1/assets/main.js +0 -52
  243. package/website/versions/0.2.1/assets/search.js +0 -1
  244. package/website/versions/0.2.1/assets/style.css +0 -1341
  245. package/website/versions/0.2.1/assets/widgets.png +0 -0
  246. package/website/versions/0.2.1/assets/widgets@2x.png +0 -0
  247. package/website/versions/0.2.1/classes/EssentialEth.html +0 -5
  248. package/website/versions/0.2.1/classes/TinyBig.html +0 -146
  249. package/website/versions/0.2.1/index.html +0 -96
  250. package/website/versions/0.2.1/modules.html +0 -29
  251. package/website/versions/0.2.2/assets/highlight.css +0 -64
  252. package/website/versions/0.2.2/assets/icons.css +0 -1043
  253. package/website/versions/0.2.2/assets/icons.png +0 -0
  254. package/website/versions/0.2.2/assets/icons@2x.png +0 -0
  255. package/website/versions/0.2.2/assets/main.js +0 -52
  256. package/website/versions/0.2.2/assets/search.js +0 -1
  257. package/website/versions/0.2.2/assets/style.css +0 -1341
  258. package/website/versions/0.2.2/assets/widgets.png +0 -0
  259. package/website/versions/0.2.2/assets/widgets@2x.png +0 -0
  260. package/website/versions/0.2.2/classes/EssentialEth.html +0 -5
  261. package/website/versions/0.2.2/classes/TinyBig.html +0 -146
  262. package/website/versions/0.2.2/index.html +0 -96
  263. package/website/versions/0.2.2/modules.html +0 -29
  264. package/website/versions/0.3.0/.nojekyll +0 -1
  265. package/website/versions/0.3.0/assets/highlight.css +0 -71
  266. package/website/versions/0.3.0/assets/icons.css +0 -1043
  267. package/website/versions/0.3.0/assets/icons.png +0 -0
  268. package/website/versions/0.3.0/assets/icons@2x.png +0 -0
  269. package/website/versions/0.3.0/assets/main.js +0 -52
  270. package/website/versions/0.3.0/assets/search.js +0 -1
  271. package/website/versions/0.3.0/assets/style.css +0 -1384
  272. package/website/versions/0.3.0/assets/widgets.png +0 -0
  273. package/website/versions/0.3.0/assets/widgets@2x.png +0 -0
  274. package/website/versions/0.3.0/classes/Contract.html +0 -15
  275. package/website/versions/0.3.0/classes/TinyBig.html +0 -156
  276. package/website/versions/0.3.0/index.html +0 -123
  277. package/website/versions/0.3.0/modules.html +0 -32
  278. package/website/versions/0.3.1/.nojekyll +0 -1
  279. package/website/versions/0.3.1/assets/highlight.css +0 -71
  280. package/website/versions/0.3.1/assets/icons.css +0 -1043
  281. package/website/versions/0.3.1/assets/icons.png +0 -0
  282. package/website/versions/0.3.1/assets/icons@2x.png +0 -0
  283. package/website/versions/0.3.1/assets/main.js +0 -52
  284. package/website/versions/0.3.1/assets/search.js +0 -1
  285. package/website/versions/0.3.1/assets/style.css +0 -1384
  286. package/website/versions/0.3.1/assets/widgets.png +0 -0
  287. package/website/versions/0.3.1/assets/widgets@2x.png +0 -0
  288. package/website/versions/0.3.1/classes/Contract.html +0 -15
  289. package/website/versions/0.3.1/classes/TinyBig.html +0 -156
  290. package/website/versions/0.3.1/index.html +0 -123
  291. package/website/versions/0.3.1/modules.html +0 -32
  292. package/website/versions/0.3.2/.nojekyll +0 -1
  293. package/website/versions/0.3.2/assets/highlight.css +0 -71
  294. package/website/versions/0.3.2/assets/icons.css +0 -1043
  295. package/website/versions/0.3.2/assets/icons.png +0 -0
  296. package/website/versions/0.3.2/assets/icons@2x.png +0 -0
  297. package/website/versions/0.3.2/assets/main.js +0 -52
  298. package/website/versions/0.3.2/assets/search.js +0 -1
  299. package/website/versions/0.3.2/assets/style.css +0 -1384
  300. package/website/versions/0.3.2/assets/widgets.png +0 -0
  301. package/website/versions/0.3.2/assets/widgets@2x.png +0 -0
  302. package/website/versions/0.3.2/classes/Contract.html +0 -15
  303. package/website/versions/0.3.2/classes/JsonRpcProvider.html +0 -5
  304. package/website/versions/0.3.2/classes/TinyBig.html +0 -156
  305. package/website/versions/0.3.2/index.html +0 -123
  306. package/website/versions/0.3.2/modules.html +0 -32
  307. package/website/versions/0.3.3/.nojekyll +0 -1
  308. package/website/versions/0.3.3/assets/highlight.css +0 -71
  309. package/website/versions/0.3.3/assets/icons.css +0 -1043
  310. package/website/versions/0.3.3/assets/icons.png +0 -0
  311. package/website/versions/0.3.3/assets/icons@2x.png +0 -0
  312. package/website/versions/0.3.3/assets/main.js +0 -52
  313. package/website/versions/0.3.3/assets/search.js +0 -1
  314. package/website/versions/0.3.3/assets/style.css +0 -1384
  315. package/website/versions/0.3.3/assets/widgets.png +0 -0
  316. package/website/versions/0.3.3/assets/widgets@2x.png +0 -0
  317. package/website/versions/0.3.3/classes/Contract.html +0 -15
  318. package/website/versions/0.3.3/classes/JsonRpcProvider.html +0 -5
  319. package/website/versions/0.3.3/classes/TinyBig.html +0 -156
  320. package/website/versions/0.3.3/index.html +0 -123
  321. package/website/versions/0.3.3/interfaces/Block.html +0 -1
  322. package/website/versions/0.3.3/interfaces/Transaction.html +0 -1
  323. package/website/versions/0.3.3/modules.html +0 -32
  324. package/website/versions/0.4.0/.nojekyll +0 -1
  325. package/website/versions/0.4.0/assets/highlight.css +0 -71
  326. package/website/versions/0.4.0/assets/icons.css +0 -1043
  327. package/website/versions/0.4.0/assets/icons.png +0 -0
  328. package/website/versions/0.4.0/assets/icons@2x.png +0 -0
  329. package/website/versions/0.4.0/assets/main.js +0 -52
  330. package/website/versions/0.4.0/assets/search.js +0 -1
  331. package/website/versions/0.4.0/assets/style.css +0 -1384
  332. package/website/versions/0.4.0/assets/widgets.png +0 -0
  333. package/website/versions/0.4.0/assets/widgets@2x.png +0 -0
  334. package/website/versions/0.4.0/classes/Contract.html +0 -15
  335. package/website/versions/0.4.0/classes/JsonRpcProvider.html +0 -6
  336. package/website/versions/0.4.0/classes/TinyBig.html +0 -156
  337. package/website/versions/0.4.0/index.html +0 -148
  338. package/website/versions/0.4.0/interfaces/Block.html +0 -1
  339. package/website/versions/0.4.0/interfaces/Transaction.html +0 -1
  340. package/website/versions/0.4.0/modules.html +0 -32
  341. package/website/versions/0.4.1/.nojekyll +0 -1
  342. package/website/versions/0.4.1/assets/highlight.css +0 -71
  343. package/website/versions/0.4.1/assets/icons.css +0 -1043
  344. package/website/versions/0.4.1/assets/icons.png +0 -0
  345. package/website/versions/0.4.1/assets/icons@2x.png +0 -0
  346. package/website/versions/0.4.1/assets/main.js +0 -52
  347. package/website/versions/0.4.1/assets/search.js +0 -1
  348. package/website/versions/0.4.1/assets/style.css +0 -1384
  349. package/website/versions/0.4.1/assets/widgets.png +0 -0
  350. package/website/versions/0.4.1/assets/widgets@2x.png +0 -0
  351. package/website/versions/0.4.1/classes/Contract.html +0 -15
  352. package/website/versions/0.4.1/classes/JsonRpcProvider.html +0 -6
  353. package/website/versions/0.4.1/classes/TinyBig.html +0 -156
  354. package/website/versions/0.4.1/index.html +0 -148
  355. package/website/versions/0.4.1/interfaces/Block.html +0 -1
  356. package/website/versions/0.4.1/interfaces/Transaction.html +0 -1
  357. package/website/versions/0.4.1/modules.html +0 -32
  358. package/website/versions/0.4.2/.nojekyll +0 -1
  359. package/website/versions/0.4.2/assets/highlight.css +0 -71
  360. package/website/versions/0.4.2/assets/icons.css +0 -1043
  361. package/website/versions/0.4.2/assets/icons.png +0 -0
  362. package/website/versions/0.4.2/assets/icons@2x.png +0 -0
  363. package/website/versions/0.4.2/assets/main.js +0 -52
  364. package/website/versions/0.4.2/assets/search.js +0 -1
  365. package/website/versions/0.4.2/assets/style.css +0 -1384
  366. package/website/versions/0.4.2/assets/widgets.png +0 -0
  367. package/website/versions/0.4.2/assets/widgets@2x.png +0 -0
  368. package/website/versions/0.4.2/classes/Contract.html +0 -15
  369. package/website/versions/0.4.2/classes/JsonRpcProvider.html +0 -8
  370. package/website/versions/0.4.2/classes/TinyBig.html +0 -156
  371. package/website/versions/0.4.2/index.html +0 -199
  372. package/website/versions/0.4.2/interfaces/Block.html +0 -1
  373. package/website/versions/0.4.2/interfaces/Transaction.html +0 -1
  374. package/website/versions/0.4.2/modules.html +0 -34
  375. package/website/versions/0.4.3/.nojekyll +0 -1
  376. package/website/versions/0.4.3/assets/highlight.css +0 -71
  377. package/website/versions/0.4.3/assets/icons.css +0 -1043
  378. package/website/versions/0.4.3/assets/icons.png +0 -0
  379. package/website/versions/0.4.3/assets/icons@2x.png +0 -0
  380. package/website/versions/0.4.3/assets/main.js +0 -52
  381. package/website/versions/0.4.3/assets/search.js +0 -1
  382. package/website/versions/0.4.3/assets/style.css +0 -1384
  383. package/website/versions/0.4.3/assets/widgets.png +0 -0
  384. package/website/versions/0.4.3/assets/widgets@2x.png +0 -0
  385. package/website/versions/0.4.3/classes/Contract.html +0 -15
  386. package/website/versions/0.4.3/classes/JsonRpcProvider.html +0 -8
  387. package/website/versions/0.4.3/classes/TinyBig.html +0 -159
  388. package/website/versions/0.4.3/index.html +0 -199
  389. package/website/versions/0.4.3/interfaces/Block.html +0 -1
  390. package/website/versions/0.4.3/interfaces/Transaction.html +0 -1
  391. package/website/versions/0.4.3/modules.html +0 -34
  392. package/website/versions/0.4.6/.nojekyll +0 -1
  393. package/website/versions/0.4.6/assets/highlight.css +0 -71
  394. package/website/versions/0.4.6/assets/icons.css +0 -1043
  395. package/website/versions/0.4.6/assets/icons.png +0 -0
  396. package/website/versions/0.4.6/assets/icons@2x.png +0 -0
  397. package/website/versions/0.4.6/assets/main.js +0 -52
  398. package/website/versions/0.4.6/assets/search.js +0 -1
  399. package/website/versions/0.4.6/assets/style.css +0 -1413
  400. package/website/versions/0.4.6/assets/widgets.png +0 -0
  401. package/website/versions/0.4.6/assets/widgets@2x.png +0 -0
  402. package/website/versions/0.4.6/classes/Contract.html +0 -15
  403. package/website/versions/0.4.6/classes/JsonRpcProvider.html +0 -8
  404. package/website/versions/0.4.6/classes/TinyBig.html +0 -159
  405. package/website/versions/0.4.6/index.html +0 -207
  406. package/website/versions/0.4.6/interfaces/Block.html +0 -1
  407. package/website/versions/0.4.6/interfaces/Transaction.html +0 -1
  408. package/website/versions/0.4.6/modules.html +0 -34
  409. package/website/versions/0.4.8/.nojekyll +0 -1
  410. package/website/versions/0.4.8/assets/highlight.css +0 -71
  411. package/website/versions/0.4.8/assets/icons.css +0 -1043
  412. package/website/versions/0.4.8/assets/icons.png +0 -0
  413. package/website/versions/0.4.8/assets/icons@2x.png +0 -0
  414. package/website/versions/0.4.8/assets/main.js +0 -52
  415. package/website/versions/0.4.8/assets/search.js +0 -1
  416. package/website/versions/0.4.8/assets/style.css +0 -1413
  417. package/website/versions/0.4.8/assets/widgets.png +0 -0
  418. package/website/versions/0.4.8/assets/widgets@2x.png +0 -0
  419. package/website/versions/0.4.8/classes/Contract.html +0 -15
  420. package/website/versions/0.4.8/classes/JsonRpcProvider.html +0 -8
  421. package/website/versions/0.4.8/classes/TinyBig.html +0 -161
  422. package/website/versions/0.4.8/index.html +0 -207
  423. package/website/versions/0.4.8/interfaces/Block.html +0 -1
  424. package/website/versions/0.4.8/interfaces/Transaction.html +0 -1
  425. package/website/versions/0.4.8/modules.html +0 -34
  426. package/website/versions/0.4.9-beta.0/.nojekyll +0 -1
  427. package/website/versions/0.4.9-beta.0/assets/highlight.css +0 -71
  428. package/website/versions/0.4.9-beta.0/assets/icons.css +0 -1043
  429. package/website/versions/0.4.9-beta.0/assets/icons.png +0 -0
  430. package/website/versions/0.4.9-beta.0/assets/icons@2x.png +0 -0
  431. package/website/versions/0.4.9-beta.0/assets/main.js +0 -52
  432. package/website/versions/0.4.9-beta.0/assets/search.js +0 -1
  433. package/website/versions/0.4.9-beta.0/assets/style.css +0 -1413
  434. package/website/versions/0.4.9-beta.0/assets/widgets.png +0 -0
  435. package/website/versions/0.4.9-beta.0/assets/widgets@2x.png +0 -0
  436. package/website/versions/0.4.9-beta.0/classes/Contract.html +0 -13
  437. package/website/versions/0.4.9-beta.0/classes/JsonRpcProvider.html +0 -8
  438. package/website/versions/0.4.9-beta.0/classes/TinyBig.html +0 -161
  439. package/website/versions/0.4.9-beta.0/index.html +0 -207
  440. package/website/versions/0.4.9-beta.0/interfaces/Block.html +0 -1
  441. package/website/versions/0.4.9-beta.0/interfaces/JSONABIArgument.html +0 -1
  442. package/website/versions/0.4.9-beta.0/interfaces/Network.html +0 -3
  443. package/website/versions/0.4.9-beta.0/interfaces/Transaction.html +0 -1
  444. package/website/versions/0.4.9-beta.0/modules.html +0 -32
  445. package/website/versions/0.4.9-beta.1/.nojekyll +0 -1
  446. package/website/versions/0.4.9-beta.1/assets/highlight.css +0 -71
  447. package/website/versions/0.4.9-beta.1/assets/icons.css +0 -1043
  448. package/website/versions/0.4.9-beta.1/assets/icons.png +0 -0
  449. package/website/versions/0.4.9-beta.1/assets/icons@2x.png +0 -0
  450. package/website/versions/0.4.9-beta.1/assets/main.js +0 -52
  451. package/website/versions/0.4.9-beta.1/assets/search.js +0 -1
  452. package/website/versions/0.4.9-beta.1/assets/style.css +0 -1413
  453. package/website/versions/0.4.9-beta.1/assets/widgets.png +0 -0
  454. package/website/versions/0.4.9-beta.1/assets/widgets@2x.png +0 -0
  455. package/website/versions/0.4.9-beta.1/classes/Contract.html +0 -13
  456. package/website/versions/0.4.9-beta.1/classes/JsonRpcProvider.html +0 -8
  457. package/website/versions/0.4.9-beta.1/classes/TinyBig.html +0 -161
  458. package/website/versions/0.4.9-beta.1/index.html +0 -207
  459. package/website/versions/0.4.9-beta.1/interfaces/Block.html +0 -1
  460. package/website/versions/0.4.9-beta.1/interfaces/JSONABIArgument.html +0 -1
  461. package/website/versions/0.4.9-beta.1/interfaces/Network.html +0 -3
  462. package/website/versions/0.4.9-beta.1/interfaces/Transaction.html +0 -1
  463. package/website/versions/0.4.9-beta.1/modules.html +0 -32
  464. package/website/versions/versions/0.1.2/assets/highlight.css +0 -57
  465. package/website/versions/versions/0.1.2/assets/icons.css +0 -1043
  466. package/website/versions/versions/0.1.2/assets/icons.png +0 -0
  467. package/website/versions/versions/0.1.2/assets/icons@2x.png +0 -0
  468. package/website/versions/versions/0.1.2/assets/main.js +0 -52
  469. package/website/versions/versions/0.1.2/assets/search.js +0 -1
  470. package/website/versions/versions/0.1.2/assets/style.css +0 -1341
  471. package/website/versions/versions/0.1.2/assets/widgets.png +0 -0
  472. package/website/versions/versions/0.1.2/assets/widgets@2x.png +0 -0
  473. package/website/versions/versions/0.1.2/classes/TinyBig.html +0 -4
  474. package/website/versions/versions/0.1.2/index.html +0 -20
  475. package/website/versions/versions/0.1.2/modules.html +0 -23
  476. package/website/versions/versions/0.1.3/assets/highlight.css +0 -64
  477. package/website/versions/versions/0.1.3/assets/icons.css +0 -1043
  478. package/website/versions/versions/0.1.3/assets/icons.png +0 -0
  479. package/website/versions/versions/0.1.3/assets/icons@2x.png +0 -0
  480. package/website/versions/versions/0.1.3/assets/main.js +0 -52
  481. package/website/versions/versions/0.1.3/assets/search.js +0 -1
  482. package/website/versions/versions/0.1.3/assets/style.css +0 -1341
  483. package/website/versions/versions/0.1.3/assets/widgets.png +0 -0
  484. package/website/versions/versions/0.1.3/assets/widgets@2x.png +0 -0
  485. package/website/versions/versions/0.1.3/classes/TinyBig.html +0 -4
  486. package/website/versions/versions/0.1.3/index.html +0 -53
  487. package/website/versions/versions/0.1.3/modules.html +0 -23
  488. package/website/versions/versions/0.1.4/assets/highlight.css +0 -64
  489. package/website/versions/versions/0.1.4/assets/icons.css +0 -1043
  490. package/website/versions/versions/0.1.4/assets/icons.png +0 -0
  491. package/website/versions/versions/0.1.4/assets/icons@2x.png +0 -0
  492. package/website/versions/versions/0.1.4/assets/main.js +0 -52
  493. package/website/versions/versions/0.1.4/assets/search.js +0 -1
  494. package/website/versions/versions/0.1.4/assets/style.css +0 -1341
  495. package/website/versions/versions/0.1.4/assets/widgets.png +0 -0
  496. package/website/versions/versions/0.1.4/assets/widgets@2x.png +0 -0
  497. package/website/versions/versions/0.1.4/classes/TinyBig.html +0 -4
  498. package/website/versions/versions/0.1.4/index.html +0 -58
  499. package/website/versions/versions/0.1.4/modules.html +0 -23
@@ -1,72 +0,0 @@
1
- import { Contract as EthersContract } from '@ethersproject/contracts';
2
- import { StaticJsonRpcProvider } from '@ethersproject/providers';
3
- import { JsonRpcProvider } from '../../../providers/JsonRpcProvider';
4
- import { Contract as EssentialEthContract } from '../../Contract';
5
- import { uniswapABI } from './uniswap-abi';
6
-
7
- // The JSONABI
8
- const JSONABI = uniswapABI;
9
-
10
- const rpcURL = `${process.env.RPC_ORIGIN}/api/eth`;
11
- const ethersProvider = new StaticJsonRpcProvider(rpcURL);
12
- const essentialEthProvider = new JsonRpcProvider(rpcURL);
13
-
14
- // The UNI airdrop merkle address
15
- // https://etherscan.io/address/0x090D4613473dEE047c3f2706764f49E0821D256e#readContract
16
- const contractAddress = '0x090D4613473dEE047c3f2706764f49E0821D256e';
17
-
18
- const smartContractIsUniClaimed = async (contract: any, index: number) => {
19
- const isClaimed = (await contract.isClaimed(index)) as boolean;
20
- return isClaimed;
21
- };
22
-
23
- const smartContractGetUniMerkleRoot = async (contract: any) => {
24
- const merkleRoot = (await contract.merkleRoot()) as string;
25
- return merkleRoot;
26
- };
27
- const smartContractGetUniTokenAddress = async (contract: any) => {
28
- const merkleRoot = (await contract.token()) as string;
29
- return merkleRoot;
30
- };
31
-
32
- const ethersContract = new EthersContract(
33
- contractAddress,
34
- JSONABI as any,
35
- ethersProvider,
36
- );
37
- const essentialEthContract = new EssentialEthContract(
38
- contractAddress,
39
- JSONABI,
40
- essentialEthProvider,
41
- );
42
- describe('uNI contract', () => {
43
- it('should fetch "address" data-type', async () => {
44
- const [ethersResponse, essentialEthResponse] = await Promise.all([
45
- smartContractGetUniTokenAddress(ethersContract),
46
- smartContractGetUniTokenAddress(essentialEthContract),
47
- ]);
48
- /* 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 */
49
- expect(ethersResponse).toStrictEqual(essentialEthResponse);
50
- });
51
- it('should fetch "bytes32" merkle root', async () => {
52
- const [ethersResponse, essentialEthResponse] = await Promise.all([
53
- smartContractGetUniMerkleRoot(ethersContract),
54
- smartContractGetUniMerkleRoot(essentialEthContract),
55
- ]);
56
- /* 0xc8500f8e2fcf3c9a32880e1b973fb28acc88be35787a8abcf9981b2b65dbdeb5 */
57
- expect(ethersResponse).toStrictEqual(essentialEthResponse);
58
- });
59
-
60
- it('should fetch isClaimed "boolean" for random airdrop indexes', async () => {
61
- /* indexes of addresses in the merkle tree */
62
- const randomIndexes = [0, 4, 102, 999, 999999];
63
-
64
- for (const i of randomIndexes) {
65
- const [ethersClaimed, essentialEthClaimed] = await Promise.all([
66
- smartContractIsUniClaimed(ethersContract, i),
67
- smartContractIsUniClaimed(essentialEthContract, i),
68
- ]);
69
- expect(ethersClaimed).toStrictEqual(essentialEthClaimed);
70
- }
71
- });
72
- });
@@ -1,121 +0,0 @@
1
- import { JSONABI } from '../../../types/Contract.types';
2
-
3
- export const uniswapABI: JSONABI =
4
- // http://api.etherscan.io/api?module=contract&action=getabi&address=0x090d4613473dee047c3f2706764f49e0821d256e&format=raw
5
-
6
- [
7
- {
8
- inputs: [
9
- {
10
- internalType: 'address',
11
- name: 'token_',
12
- type: 'address',
13
- },
14
- {
15
- internalType: 'bytes32',
16
- name: 'merkleRoot_',
17
- type: 'bytes32',
18
- },
19
- ],
20
- stateMutability: 'nonpayable',
21
- type: 'constructor',
22
- },
23
- {
24
- anonymous: false,
25
- inputs: [
26
- {
27
- indexed: false,
28
- internalType: 'uint256',
29
- name: 'index',
30
- type: 'uint256',
31
- },
32
- {
33
- indexed: false,
34
- internalType: 'address',
35
- name: 'account',
36
- type: 'address',
37
- },
38
- {
39
- indexed: false,
40
- internalType: 'uint256',
41
- name: 'amount',
42
- type: 'uint256',
43
- },
44
- ],
45
- name: 'Claimed',
46
- type: 'event',
47
- },
48
- {
49
- inputs: [
50
- {
51
- internalType: 'uint256',
52
- name: 'index',
53
- type: 'uint256',
54
- },
55
- {
56
- internalType: 'address',
57
- name: 'account',
58
- type: 'address',
59
- },
60
- {
61
- internalType: 'uint256',
62
- name: 'amount',
63
- type: 'uint256',
64
- },
65
- {
66
- internalType: 'bytes32[]',
67
- name: 'merkleProof',
68
- type: 'bytes32[]',
69
- },
70
- ],
71
- name: 'claim',
72
- outputs: [],
73
- stateMutability: 'nonpayable',
74
- type: 'function',
75
- },
76
- {
77
- inputs: [
78
- {
79
- internalType: 'uint256',
80
- name: 'index',
81
- type: 'uint256',
82
- },
83
- ],
84
- name: 'isClaimed',
85
- outputs: [
86
- {
87
- internalType: 'bool',
88
- name: '',
89
- type: 'bool',
90
- },
91
- ],
92
- stateMutability: 'view',
93
- type: 'function',
94
- },
95
- {
96
- inputs: [],
97
- name: 'merkleRoot',
98
- outputs: [
99
- {
100
- internalType: 'bytes32',
101
- name: '',
102
- type: 'bytes32',
103
- },
104
- ],
105
- stateMutability: 'view',
106
- type: 'function',
107
- },
108
- {
109
- inputs: [],
110
- name: 'token',
111
- outputs: [
112
- {
113
- internalType: 'address',
114
- name: '',
115
- type: 'address',
116
- },
117
- ],
118
- stateMutability: 'view',
119
- type: 'function',
120
- },
121
- ];
@@ -1,49 +0,0 @@
1
- import { Block, toChecksumAddress } from '../..';
2
- import { RPCBlock } from '../../types/Block.types';
3
- import { RPCTransaction } from '../../types/Transaction.types';
4
- import { cleanTransaction } from './clean-transaction';
5
- import { hexToDecimal } from './hex-to-decimal';
6
-
7
- /**
8
- * Converts hex to decimal and checksum-addresses all addresses
9
- */
10
- export function cleanBlock(
11
- block: RPCBlock,
12
- returnTransactionObjects: boolean,
13
- ): Block {
14
- const cleanedBlock: any = { ...block };
15
- (Object.keys(block) as Array<keyof RPCBlock>).forEach((key) => {
16
- // pending blocks have null instead of a difficulty
17
- // pending blocks have null instead of a miner address
18
- if (!block[key]) return;
19
- switch (key) {
20
- case 'gasLimit':
21
- case 'gasUsed':
22
- case 'number':
23
- case 'size':
24
- case 'timestamp':
25
- case 'baseFeePerGas':
26
- cleanedBlock[key] = Number(hexToDecimal(block[key]));
27
- break;
28
- case 'difficulty':
29
- case 'totalDifficulty':
30
- cleanedBlock[key] = hexToDecimal(block[key]);
31
- break;
32
- case 'miner':
33
- if (block[key]) {
34
- cleanedBlock[key] = toChecksumAddress(block[key]);
35
- }
36
- break;
37
- }
38
- });
39
- // for all full transactions
40
- if (returnTransactionObjects) {
41
- // could be renamed "cleanTransaction" in the future
42
- (cleanedBlock.transactions as RPCTransaction[]).forEach(
43
- (transaction, index) => {
44
- cleanedBlock.transactions[index] = cleanTransaction(transaction);
45
- },
46
- );
47
- }
48
- return cleanedBlock;
49
- }
@@ -1,35 +0,0 @@
1
- import { toChecksumAddress } from '../..';
2
- import { RPCTransaction, Transaction } from '../../types/Transaction.types';
3
- import { hexToDecimal } from './hex-to-decimal';
4
-
5
- /**
6
- * Converts hex to decimal and checksum-addresses all addresses
7
- */
8
- export function cleanTransaction(transaction: RPCTransaction): Transaction {
9
- const cleanedTransaction: any = { ...transaction };
10
- (Object.keys(transaction) as Array<keyof RPCTransaction>).forEach((key) => {
11
- // pending blocks have null instead of a difficulty
12
- // pending blocks have null instead of a miner address
13
- if (!transaction[key]) return;
14
- switch (key) {
15
- case 'blockNumber':
16
- case 'gas':
17
- case 'nonce':
18
- case 'transactionIndex':
19
- case 'type':
20
- cleanedTransaction[key] = Number(hexToDecimal(transaction[key]));
21
- break;
22
- case 'gasPrice':
23
- case 'value':
24
- cleanedTransaction[key] = hexToDecimal(transaction[key]);
25
- break;
26
- case 'from':
27
- case 'to':
28
- if (transaction[key]) {
29
- cleanedTransaction[key] = toChecksumAddress(transaction[key]);
30
- }
31
- break;
32
- }
33
- });
34
- return cleanedTransaction;
35
- }
@@ -1,126 +0,0 @@
1
- import { Keccak } from 'sha3';
2
- import { tinyBig, toChecksumAddress } from '../..';
3
- import { ContractTypes, JSONABIArgument } from '../../types/Contract.types';
4
- import { hexToDecimal } from './hex-to-decimal';
5
-
6
- const hexTrue =
7
- '0000000000000000000000000000000000000000000000000000000000000001';
8
- const hexFalse =
9
- '0000000000000000000000000000000000000000000000000000000000000000';
10
-
11
- function expandType(type: ContractTypes) {
12
- // https://docs.soliditylang.org/en/v0.8.7/types.html#integers
13
- if (type === 'uint[]') {
14
- return 'uint256[]';
15
- } else if (type === 'int[]') {
16
- return 'int256[]';
17
- }
18
- return type;
19
- }
20
- export function encodeData(jsonABIArgument: JSONABIArgument, args: any[]) {
21
- const hash = new Keccak(256);
22
- /* first 4 bytes will create the data parameter */
23
- const functionString = `${jsonABIArgument.name}(${jsonABIArgument.inputs.map(
24
- (input) => expandType(input.type),
25
- )})`;
26
-
27
- // encoding learnt from https://ethereum.stackexchange.com/questions/3514/how-to-call-a-contract-method-using-the-eth-call-json-rpc-api
28
- const functionHash = hash.update(functionString).digest('hex');
29
- // no arrays
30
- const jsonABIInputsLength = jsonABIArgument.inputs.length;
31
- let shouldValidateInputLength = true;
32
-
33
- // inputs contains 1 or more arrays
34
- if (jsonABIArgument.inputs.find((input) => input.type.includes('['))) {
35
- shouldValidateInputLength = false;
36
- }
37
- if (shouldValidateInputLength && args.length !== jsonABIInputsLength) {
38
- throw new Error(
39
- `args inputs of "${args.length}" does not match expected length of "${jsonABIArgument.inputs.length}"`,
40
- );
41
- }
42
-
43
- const argsWithTypes: [arg: any, type: ContractTypes][] = (
44
- jsonABIArgument.inputs || []
45
- ).reduce((acc, input, i) => {
46
- if (input.type.includes('[')) {
47
- // strip array and length like "[2]" from type
48
- const basicType = /([^[]*)\[.*$/g.exec(input.type)?.[1] as string;
49
- args.forEach((arg: any) => {
50
- acc = acc.concat([[arg, basicType]]);
51
- });
52
- return acc;
53
- } else {
54
- return acc.concat([[args[i], input.type]]);
55
- }
56
- }, [] as [arg: any, type: ContractTypes][]);
57
-
58
- const encodedArgs = argsWithTypes.map(([arg, inputType]) => {
59
- let rawArg = arg;
60
- switch (inputType) {
61
- case 'bool':
62
- return arg ? hexTrue : hexFalse;
63
- case 'address':
64
- // remove leading "0x"
65
- rawArg = arg.replace(/^0x/g, '').toLowerCase();
66
- break;
67
- default:
68
- if (inputType.startsWith('bytes')) {
69
- // encode each character to hex
70
- const argEncoded = rawArg
71
- .split('')
72
- .map((character: string) => character.charCodeAt(0).toString(16))
73
- .join('');
74
- const paddedEncodedArg = argEncoded.padEnd(64, '0');
75
- return paddedEncodedArg;
76
- } else if (inputType === 'uint256') {
77
- const argEncoded = BigInt(arg).toString(16);
78
- const paddedEncodedArg = argEncoded.padStart(64, '0');
79
- return paddedEncodedArg;
80
- } else if (inputType.startsWith('uint')) {
81
- break;
82
- } else {
83
- throw new Error(
84
- `essential-eth does not yet support "${inputType}" inputs. Make a PR today!"`,
85
- );
86
- }
87
- }
88
- const argEncoded = rawArg.toString(16) as string;
89
- const paddedEncodedArg = argEncoded.padStart(64, '0');
90
- return paddedEncodedArg;
91
- });
92
- const functionEncoded = functionHash.slice(0, 8);
93
- const data = `0x${functionEncoded}${encodedArgs.join('')}`;
94
- return data;
95
- }
96
-
97
- export function decodeRPCResponse(
98
- jsonABIArgument: JSONABIArgument,
99
- nodeResponse: string,
100
- ) {
101
- const rawOutputs = jsonABIArgument.outputs;
102
- // chunk response every 64 characters
103
- const encodedOutputs = nodeResponse.slice(2).match(/.{1,64}/g);
104
- const outputs = (encodedOutputs || []).map((output: string, i: number) => {
105
- const outputType = (rawOutputs || [])[i].type;
106
- switch (outputType) {
107
- case 'bool':
108
- return output === hexTrue;
109
- case 'address':
110
- /* address types have 26 leading zeroes to remove */
111
- return toChecksumAddress(`0x${output.slice(24)}`);
112
- case 'uint256':
113
- return tinyBig(hexToDecimal(`0x${output}`));
114
- case 'bytes32':
115
- return `0x${output}`;
116
- case 'uint8':
117
- return Number(hexToDecimal(`0x${output}`));
118
- default:
119
- throw new Error(
120
- `essential-eth does not yet support "${outputType}" outputs. Make a PR today!"`,
121
- );
122
- }
123
- });
124
-
125
- return outputs.length === 1 ? outputs[0] : outputs;
126
- }
@@ -1,27 +0,0 @@
1
- import unfetch from 'isomorphic-unfetch';
2
- export function post(url: string, body: Record<string, unknown>) {
3
- return unfetch(url, {
4
- method: 'POST',
5
- headers: {
6
- 'Content-Type': 'application/json',
7
- },
8
- body: JSON.stringify(body),
9
- })
10
- .then((r) => r.json())
11
- .then((response) => {
12
- if (response.error) {
13
- throw new Error(response.error);
14
- }
15
- return response.result;
16
- });
17
- }
18
-
19
- type RPCMethodName = 'eth_getBlockByNumber' | 'eth_call' | 'eth_chainId';
20
- export function buildRPCPostBody(method: RPCMethodName, params: any[]) {
21
- return {
22
- jsonrpc: '2.0',
23
- id: 1,
24
- method,
25
- params,
26
- };
27
- }
@@ -1,94 +0,0 @@
1
- import { cleanBlock } from '../classes/utils/clean-block';
2
- import { buildRPCPostBody, post } from '../classes/utils/fetchers';
3
- import { hexToDecimal } from '../classes/utils/hex-to-decimal';
4
- import { Block, RPCBlock } from '../types/Block.types';
5
- import { Network } from '../types/Network.types';
6
- import chainsInfo from './utils/chains-info';
7
- export class JsonRpcProvider {
8
- /**
9
- * The URL to your Eth node. Consider POKT or Infura
10
- */
11
- readonly _rpcUrl: Array<string>;
12
- _rpcUrlCounter: number;
13
- constructor(rpcUrl?: string | Array<string>) {
14
- this._rpcUrl = ((): Array<string> => {
15
- if (!rpcUrl) {
16
- return ['https://free-eth-node.com/api/eth'];
17
- } else if (!Array.isArray(rpcUrl)) {
18
- return [rpcUrl];
19
- }
20
- return rpcUrl;
21
- })();
22
- this._rpcUrlCounter = 0;
23
- }
24
-
25
- /**
26
- * Returns the block requested
27
- * Same as `web3.eth.getBlock`
28
- */
29
- public async getBlock(
30
- timeFrame:
31
- | 'latest'
32
- | 'earliest'
33
- | 'pending'
34
- | number /* block number as integer */,
35
- returnTransactionObjects = false,
36
- ): Promise<Block> {
37
- let rpcTimeFrame: string;
38
- if (typeof timeFrame === 'number') {
39
- // exact block numbers require hex string format
40
- rpcTimeFrame = `0x${timeFrame.toString(16)}`;
41
- } else {
42
- // "latest", "earliest", and "pending" require no manipulation
43
- rpcTimeFrame = timeFrame;
44
- }
45
- const req = async (): Promise<RPCBlock> => {
46
- return await post(
47
- this._rpcUrl[this._rpcUrlCounter],
48
- buildRPCPostBody('eth_getBlockByNumber', [
49
- rpcTimeFrame,
50
- returnTransactionObjects,
51
- ]),
52
- ).catch((e) => {
53
- if (e.code === 'ENOTFOUND') {
54
- this._rpcUrlCounter++;
55
- return req();
56
- }
57
- });
58
- };
59
- const nodeResponse = (await req()) as RPCBlock;
60
-
61
- return cleanBlock(nodeResponse, returnTransactionObjects);
62
- }
63
- /**
64
- * Returns the network this provider is connected to
65
- */
66
- public async getNetwork(): Promise<Network> {
67
- const req = async (): Promise<string> => {
68
- return await post(
69
- this._rpcUrl[this._rpcUrlCounter],
70
- buildRPCPostBody('eth_chainId', []),
71
- ).catch((e) => {
72
- if (e.code === 'ENOTFOUND') {
73
- this._rpcUrlCounter++;
74
- return req();
75
- }
76
- });
77
- };
78
- const nodeResponse = (await req()) as string;
79
- const chainId = hexToDecimal(nodeResponse);
80
- const info = (chainsInfo as any)[chainId];
81
- return {
82
- chainId: Number(chainId),
83
- name: info[0] || 'unknown',
84
- ensAddress: info[1] || null, // only send ensAddress if it exists
85
- };
86
- }
87
- }
88
-
89
- /**
90
- * Helper function to avoid "new"
91
- */
92
- export function jsonRpcProvider(rpcUrl?: string) {
93
- return new JsonRpcProvider(rpcUrl);
94
- }
@@ -1,63 +0,0 @@
1
- import Big from 'big.js';
2
- import omit from 'just-omit';
3
- import Web3 from 'web3';
4
- import { Block, JsonRpcProvider } from '../..';
5
-
6
- const rpcUrl = `${process.env.RPC_ORIGIN}/api/eth`;
7
-
8
- describe('matches web3', () => {
9
- function testBlockEquality(block1: Block, block2: Block) {
10
- // slight mis-timing in eth node responses
11
- expect(
12
- (omit as any)(block1, ['totalDifficulty', 'difficulty']),
13
- ).toStrictEqual((omit as any)(block2, ['totalDifficulty', 'difficulty']));
14
-
15
- // validate that difficulty and totalDifficulty are still very close
16
- expect(
17
- Big(block1.difficulty).minus(block2.difficulty).abs().toNumber(),
18
- ).toBeLessThan(3);
19
-
20
- expect(
21
- Big(block1.totalDifficulty)
22
- .minus(block2.totalDifficulty)
23
- .abs()
24
- .toNumber(),
25
- ).toBeLessThan(5000000 /* 2616793 and 1187442 on recent tests */);
26
- }
27
-
28
- it('should get latest block', async () => {
29
- const essentialEth = new JsonRpcProvider(rpcUrl);
30
- const web3 = new Web3(rpcUrl);
31
- const [eeLatestBlock, web3LatestBlock] = await Promise.all([
32
- essentialEth.getBlock('latest'),
33
- web3.eth.getBlock('latest'),
34
- ]);
35
- testBlockEquality(eeLatestBlock, web3LatestBlock as unknown as Block);
36
- });
37
- it('should get latest block, uses fallback when first URL fails', async () => {
38
- const essentialEth = new JsonRpcProvider([
39
- 'https://invalid-url.test',
40
- rpcUrl,
41
- ]);
42
- await essentialEth.getBlock('latest');
43
- });
44
- it('should get earliest block', async () => {
45
- const essentialEth = new JsonRpcProvider(rpcUrl);
46
- const web3 = new Web3(rpcUrl);
47
- const [eeEarliestBlock, web3EarliestBlock] = await Promise.all([
48
- essentialEth.getBlock('earliest'),
49
- web3.eth.getBlock('earliest'),
50
- ]);
51
- testBlockEquality(eeEarliestBlock, web3EarliestBlock as unknown as Block);
52
- });
53
- const blockNumber = Math.floor(Math.random() * 13250630);
54
- it(`should get random block as decimal integer. (block #${blockNumber})`, async () => {
55
- const essentialEth = new JsonRpcProvider(rpcUrl);
56
- const web3 = new Web3(rpcUrl);
57
- const [eeRandomBlock, web3RandomBlock] = await Promise.all([
58
- essentialEth.getBlock(blockNumber, true),
59
- web3.eth.getBlock(blockNumber, true),
60
- ]);
61
- testBlockEquality(eeRandomBlock, web3RandomBlock as unknown as Block);
62
- });
63
- });
@@ -1,34 +0,0 @@
1
- import { ethers } from 'ethers';
2
- import { JsonRpcProvider } from '../..';
3
-
4
- const xdaiRPCUrl = `${process.env.RPC_ORIGIN}/api/xdai`;
5
- const bscRPCUrl = `${process.env.RPC_ORIGIN}/api/bsc`;
6
- // const kovanRPCUrl = `${process.env.RPC_ORIGIN}/api/kovan`;
7
-
8
- describe('get-network', () => {
9
- async function testNetwork(rpcUrl: string) {
10
- const essentialEth = new JsonRpcProvider(rpcUrl);
11
- const ethersProvider = new ethers.providers.StaticJsonRpcProvider(rpcUrl);
12
- const [eeNetwork, ethersNetwork] = await Promise.all([
13
- essentialEth.getNetwork(),
14
- ethersProvider.getNetwork(),
15
- ]);
16
-
17
- expect(eeNetwork.chainId).toBe(ethersNetwork.chainId);
18
- expect(eeNetwork.ensAddress).toBe(ethersNetwork.ensAddress);
19
- expect(eeNetwork.name).toBe(
20
- // xdai was renamed to gnosis but ethers is still out-of-date
21
- ethersNetwork.name === 'xdai' ? 'gno' : ethersNetwork.name,
22
- );
23
- }
24
- it('xdai should match ethers', async () => {
25
- await testNetwork(xdaiRPCUrl);
26
- });
27
- it('bsc should match ethers', async () => {
28
- await testNetwork(bscRPCUrl);
29
- });
30
- /* ethers returns "kovan", essential-eth returns "kov" */
31
- // it('kovan should match ethers', async () => {
32
- // await testNetwork(kovanRPCUrl);
33
- // });
34
- });