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

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 (498) hide show
  1. package/lib/cjs/classes/Contract.d.ts +71 -0
  2. package/lib/cjs/classes/Contract.js +133 -0
  3. package/lib/cjs/classes/test/Contract/crv-abi.d.ts +2 -0
  4. package/lib/cjs/classes/test/Contract/crv-abi.js +488 -0
  5. package/lib/cjs/classes/test/Contract/ens-abi.d.ts +2 -0
  6. package/lib/cjs/classes/test/Contract/ens-abi.js +453 -0
  7. package/lib/cjs/classes/test/Contract/fei-abi.d.ts +2 -0
  8. package/lib/cjs/classes/test/Contract/fei-abi.js +526 -0
  9. package/lib/cjs/classes/test/Contract/foo-abi.d.ts +2 -0
  10. package/lib/cjs/classes/test/Contract/foo-abi.js +42 -0
  11. package/lib/cjs/classes/test/Contract/uniswap-abi.d.ts +2 -0
  12. package/lib/cjs/classes/test/Contract/uniswap-abi.js +121 -0
  13. package/lib/cjs/classes/utils/clean-block.d.ts +6 -0
  14. package/lib/cjs/classes/utils/clean-block.js +46 -0
  15. package/lib/cjs/classes/utils/clean-transaction.d.ts +5 -0
  16. package/lib/cjs/classes/utils/clean-transaction.js +38 -0
  17. package/lib/cjs/classes/utils/encode-decode-transaction.d.ts +3 -0
  18. package/lib/cjs/classes/utils/encode-decode-transaction.js +113 -0
  19. package/lib/cjs/classes/utils/fetchers.d.ts +9 -0
  20. package/lib/cjs/classes/utils/fetchers.js +33 -0
  21. package/{src/classes/utils/hex-to-decimal.ts → lib/cjs/classes/utils/hex-to-decimal.d.ts} +1 -3
  22. package/lib/cjs/classes/utils/hex-to-decimal.js +11 -0
  23. package/lib/cjs/index.d.ts +13 -0
  24. package/lib/cjs/index.js +44 -0
  25. package/lib/cjs/providers/JsonRpcProvider.d.ts +23 -0
  26. package/lib/cjs/providers/JsonRpcProvider.js +94 -0
  27. package/lib/cjs/providers/utils/chains-info.d.ts +360 -0
  28. package/lib/cjs/providers/utils/chains-info.js +1081 -0
  29. package/lib/cjs/shared/tiny-big/helpers.d.ts +1 -0
  30. package/lib/cjs/shared/tiny-big/helpers.js +71 -0
  31. package/lib/cjs/shared/tiny-big/tiny-big.d.ts +19 -0
  32. package/lib/cjs/shared/tiny-big/tiny-big.js +41 -0
  33. package/lib/cjs/shared/validate-type.d.ts +3 -0
  34. package/lib/cjs/shared/validate-type.js +9 -0
  35. package/lib/cjs/types/Block.types.d.ts +47 -0
  36. package/lib/cjs/types/Block.types.js +2 -0
  37. package/lib/cjs/types/Contract.types.d.ts +24 -0
  38. package/lib/cjs/types/Contract.types.js +2 -0
  39. package/lib/cjs/types/Network.types.d.ts +8 -0
  40. package/lib/cjs/types/Network.types.js +2 -0
  41. package/lib/cjs/types/Transaction.types.d.ts +34 -0
  42. package/lib/cjs/types/Transaction.types.js +2 -0
  43. package/{src/utils/ether-to-wei.ts → lib/cjs/utils/ether-to-wei.d.ts} +2 -10
  44. package/lib/cjs/utils/ether-to-wei.js +32 -0
  45. package/{src/utils/index.ts → lib/cjs/utils/index.d.ts} +0 -1
  46. package/lib/cjs/utils/index.js +11 -0
  47. package/lib/cjs/utils/is-address.d.ts +5 -0
  48. package/lib/cjs/utils/is-address.js +20 -0
  49. package/lib/cjs/utils/to-checksum-address.d.ts +17 -0
  50. package/lib/cjs/utils/to-checksum-address.js +46 -0
  51. package/{src/utils/wei-to-ether.ts → lib/cjs/utils/wei-to-ether.d.ts} +1 -8
  52. package/lib/cjs/utils/wei-to-ether.js +34 -0
  53. package/lib/esm/classes/Contract.d.ts +11 -0
  54. package/lib/esm/classes/Contract.js +70 -0
  55. package/lib/esm/classes/test/Contract/crv-abi.d.ts +2 -0
  56. package/lib/esm/classes/test/Contract/crv-abi.js +470 -0
  57. package/lib/esm/classes/test/Contract/ens-abi.d.ts +2 -0
  58. package/lib/esm/classes/test/Contract/ens-abi.js +435 -0
  59. package/lib/esm/classes/test/Contract/fei-abi.d.ts +2 -0
  60. package/lib/esm/classes/test/Contract/fei-abi.js +521 -0
  61. package/lib/esm/classes/test/Contract/foo-abi.d.ts +2 -0
  62. package/lib/esm/classes/test/Contract/foo-abi.js +33 -0
  63. package/lib/esm/classes/test/Contract/uniswap-abi.d.ts +2 -0
  64. package/lib/esm/classes/test/Contract/uniswap-abi.js +116 -0
  65. package/lib/esm/classes/utils/clean-block.d.ts +3 -0
  66. package/lib/esm/classes/utils/clean-block.js +35 -0
  67. package/lib/esm/classes/utils/clean-transaction.d.ts +2 -0
  68. package/lib/esm/classes/utils/clean-transaction.js +29 -0
  69. package/lib/esm/classes/utils/encode-decode-transaction.d.ts +3 -0
  70. package/lib/esm/classes/utils/encode-decode-transaction.js +98 -0
  71. package/lib/esm/classes/utils/fetchers.d.ts +9 -0
  72. package/lib/esm/classes/utils/fetchers.js +25 -0
  73. package/lib/esm/classes/utils/hex-to-decimal.d.ts +1 -0
  74. package/lib/esm/classes/utils/hex-to-decimal.js +3 -0
  75. package/lib/esm/index.d.ts +13 -0
  76. package/lib/esm/index.js +9 -0
  77. package/lib/esm/providers/JsonRpcProvider.d.ts +10 -0
  78. package/lib/esm/providers/JsonRpcProvider.js +74 -0
  79. package/lib/esm/providers/utils/chains-info.d.ts +360 -0
  80. package/lib/esm/providers/utils/chains-info.js +1077 -0
  81. package/lib/esm/shared/tiny-big/helpers.d.ts +1 -0
  82. package/lib/esm/shared/tiny-big/helpers.js +58 -0
  83. package/lib/esm/shared/tiny-big/tiny-big.d.ts +8 -0
  84. package/lib/esm/shared/tiny-big/tiny-big.js +22 -0
  85. package/lib/esm/shared/validate-type.d.ts +3 -0
  86. package/lib/esm/shared/validate-type.js +5 -0
  87. package/lib/esm/types/Block.types.d.ts +47 -0
  88. package/lib/esm/types/Block.types.js +1 -0
  89. package/lib/esm/types/Contract.types.d.ts +24 -0
  90. package/lib/esm/types/Contract.types.js +1 -0
  91. package/lib/esm/types/Network.types.d.ts +5 -0
  92. package/lib/esm/types/Network.types.js +1 -0
  93. package/lib/esm/types/Transaction.types.d.ts +34 -0
  94. package/lib/esm/types/Transaction.types.js +1 -0
  95. package/lib/esm/utils/ether-to-wei.d.ts +3 -0
  96. package/lib/esm/utils/ether-to-wei.js +7 -0
  97. package/lib/esm/utils/index.d.ts +5 -0
  98. package/lib/esm/utils/index.js +5 -0
  99. package/lib/esm/utils/is-address.d.ts +1 -0
  100. package/lib/esm/utils/is-address.js +12 -0
  101. package/lib/esm/utils/to-checksum-address.d.ts +1 -0
  102. package/lib/esm/utils/to-checksum-address.js +25 -0
  103. package/lib/esm/utils/wei-to-ether.d.ts +3 -0
  104. package/lib/esm/utils/wei-to-ether.js +7 -0
  105. package/package.json +8 -22
  106. package/..eslintrc.js.un~ +0 -0
  107. package/..npmignore.un~ +0 -0
  108. package/.env +0 -1
  109. package/.eslintignore +0 -4
  110. package/.eslintrc.js +0 -34
  111. package/.gitattributes +0 -1
  112. package/.github/workflows/.test.yml.un~ +0 -0
  113. package/.github/workflows/test.yml +0 -29
  114. package/.package.json.un~ +0 -0
  115. package/.prettierignore +0 -7
  116. package/.travis.yml +0 -5
  117. package/jest.config.js +0 -9
  118. package/scripts/build-website.sh +0 -4
  119. package/scripts/bump-minor.sh +0 -4
  120. package/scripts/bump-patch.sh +0 -4
  121. package/scripts/fetch-chains-info.ts +0 -70
  122. package/scripts/pre-commit.sh +0 -5
  123. package/src/classes/Contract.ts +0 -161
  124. package/src/classes/test/Contract/crv-abi.ts +0 -488
  125. package/src/classes/test/Contract/crv.test.ts +0 -56
  126. package/src/classes/test/Contract/ens-abi.ts +0 -452
  127. package/src/classes/test/Contract/ens.test.ts +0 -39
  128. package/src/classes/test/Contract/fei-abi.ts +0 -526
  129. package/src/classes/test/Contract/fei.test.ts +0 -86
  130. package/src/classes/test/Contract/foo-abi.ts +0 -42
  131. package/src/classes/test/Contract/foo.test.ts +0 -33
  132. package/src/classes/test/Contract/uni.test.ts +0 -72
  133. package/src/classes/test/Contract/uniswap-abi.ts +0 -121
  134. package/src/classes/utils/clean-block.ts +0 -49
  135. package/src/classes/utils/clean-transaction.ts +0 -35
  136. package/src/classes/utils/encode-decode-transaction.ts +0 -126
  137. package/src/classes/utils/fetchers.ts +0 -27
  138. package/src/index.ts +0 -27
  139. package/src/providers/JsonRpcProvider.ts +0 -94
  140. package/src/providers/test/get-block.test.ts +0 -63
  141. package/src/providers/test/get-network.test.ts +0 -34
  142. package/src/providers/utils/chains-info.ts +0 -1079
  143. package/src/shared/tiny-big/helpers.test.ts +0 -30
  144. package/src/shared/tiny-big/helpers.ts +0 -89
  145. package/src/shared/tiny-big/tiny-big.test.ts +0 -10
  146. package/src/shared/tiny-big/tiny-big.ts +0 -36
  147. package/src/shared/validate-type.ts +0 -20
  148. package/src/types/.Contract.types.ts.un~ +0 -0
  149. package/src/types/Block.types.ts +0 -50
  150. package/src/types/Contract.types.ts +0 -67
  151. package/src/types/Network.types.ts +0 -8
  152. package/src/types/Transaction.types.ts +0 -35
  153. package/src/utils/is-address.ts +0 -16
  154. package/src/utils/tests/ether-to-wei.test.ts +0 -65
  155. package/src/utils/tests/is-address.test.ts +0 -52
  156. package/src/utils/tests/to-checksum-address.test.ts +0 -43
  157. package/src/utils/tests/wei-to-ether.test.ts +0 -72
  158. package/src/utils/to-checksum-address.ts +0 -47
  159. package/test/global-setup.js +0 -8
  160. package/test/global-teardown.js +0 -5
  161. package/test/jest.setup-after-env.js +0 -1
  162. package/test/server.js +0 -24
  163. package/tsconfig-cjs.json +0 -8
  164. package/tsconfig.json +0 -25
  165. package/typedoc/options-new-version.js +0 -8
  166. package/typedoc/options.js +0 -9
  167. package/types/just-omit.d.ts +0 -1
  168. package/website/.nojekyll +0 -1
  169. package/website/assets/highlight.css +0 -71
  170. package/website/assets/icons.css +0 -1043
  171. package/website/assets/icons.png +0 -0
  172. package/website/assets/icons@2x.png +0 -0
  173. package/website/assets/main.js +0 -52
  174. package/website/assets/search.js +0 -1
  175. package/website/assets/style.css +0 -1413
  176. package/website/assets/widgets.png +0 -0
  177. package/website/assets/widgets@2x.png +0 -0
  178. package/website/classes/Contract.html +0 -13
  179. package/website/classes/JsonRpcProvider.html +0 -8
  180. package/website/classes/TinyBig.html +0 -161
  181. package/website/index.html +0 -207
  182. package/website/interfaces/Block.html +0 -1
  183. package/website/interfaces/JSONABIArgument.html +0 -1
  184. package/website/interfaces/Network.html +0 -3
  185. package/website/interfaces/Transaction.html +0 -1
  186. package/website/modules.html +0 -32
  187. package/website/versions/0.1.2/assets/highlight.css +0 -57
  188. package/website/versions/0.1.2/assets/icons.css +0 -1043
  189. package/website/versions/0.1.2/assets/icons.png +0 -0
  190. package/website/versions/0.1.2/assets/icons@2x.png +0 -0
  191. package/website/versions/0.1.2/assets/main.js +0 -52
  192. package/website/versions/0.1.2/assets/search.js +0 -1
  193. package/website/versions/0.1.2/assets/style.css +0 -1341
  194. package/website/versions/0.1.2/assets/widgets.png +0 -0
  195. package/website/versions/0.1.2/assets/widgets@2x.png +0 -0
  196. package/website/versions/0.1.2/classes/TinyBig.html +0 -4
  197. package/website/versions/0.1.2/index.html +0 -20
  198. package/website/versions/0.1.2/modules.html +0 -23
  199. package/website/versions/0.1.3/assets/highlight.css +0 -64
  200. package/website/versions/0.1.3/assets/icons.css +0 -1043
  201. package/website/versions/0.1.3/assets/icons.png +0 -0
  202. package/website/versions/0.1.3/assets/icons@2x.png +0 -0
  203. package/website/versions/0.1.3/assets/main.js +0 -52
  204. package/website/versions/0.1.3/assets/search.js +0 -1
  205. package/website/versions/0.1.3/assets/style.css +0 -1341
  206. package/website/versions/0.1.3/assets/widgets.png +0 -0
  207. package/website/versions/0.1.3/assets/widgets@2x.png +0 -0
  208. package/website/versions/0.1.3/classes/TinyBig.html +0 -4
  209. package/website/versions/0.1.3/index.html +0 -53
  210. package/website/versions/0.1.3/modules.html +0 -23
  211. package/website/versions/0.1.4/assets/highlight.css +0 -64
  212. package/website/versions/0.1.4/assets/icons.css +0 -1043
  213. package/website/versions/0.1.4/assets/icons.png +0 -0
  214. package/website/versions/0.1.4/assets/icons@2x.png +0 -0
  215. package/website/versions/0.1.4/assets/main.js +0 -52
  216. package/website/versions/0.1.4/assets/search.js +0 -1
  217. package/website/versions/0.1.4/assets/style.css +0 -1341
  218. package/website/versions/0.1.4/assets/widgets.png +0 -0
  219. package/website/versions/0.1.4/assets/widgets@2x.png +0 -0
  220. package/website/versions/0.1.4/classes/EssentialEth.html +0 -1
  221. package/website/versions/0.1.4/classes/TinyBig.html +0 -4
  222. package/website/versions/0.1.4/index.html +0 -58
  223. package/website/versions/0.1.4/modules.html +0 -23
  224. package/website/versions/0.2.0/assets/highlight.css +0 -64
  225. package/website/versions/0.2.0/assets/icons.css +0 -1043
  226. package/website/versions/0.2.0/assets/icons.png +0 -0
  227. package/website/versions/0.2.0/assets/icons@2x.png +0 -0
  228. package/website/versions/0.2.0/assets/main.js +0 -52
  229. package/website/versions/0.2.0/assets/search.js +0 -1
  230. package/website/versions/0.2.0/assets/style.css +0 -1341
  231. package/website/versions/0.2.0/assets/widgets.png +0 -0
  232. package/website/versions/0.2.0/assets/widgets@2x.png +0 -0
  233. package/website/versions/0.2.0/classes/EssentialEth.html +0 -5
  234. package/website/versions/0.2.0/classes/TinyBig.html +0 -146
  235. package/website/versions/0.2.0/index.html +0 -89
  236. package/website/versions/0.2.0/modules.html +0 -25
  237. package/website/versions/0.2.1/assets/highlight.css +0 -64
  238. package/website/versions/0.2.1/assets/icons.css +0 -1043
  239. package/website/versions/0.2.1/assets/icons.png +0 -0
  240. package/website/versions/0.2.1/assets/icons@2x.png +0 -0
  241. package/website/versions/0.2.1/assets/main.js +0 -52
  242. package/website/versions/0.2.1/assets/search.js +0 -1
  243. package/website/versions/0.2.1/assets/style.css +0 -1341
  244. package/website/versions/0.2.1/assets/widgets.png +0 -0
  245. package/website/versions/0.2.1/assets/widgets@2x.png +0 -0
  246. package/website/versions/0.2.1/classes/EssentialEth.html +0 -5
  247. package/website/versions/0.2.1/classes/TinyBig.html +0 -146
  248. package/website/versions/0.2.1/index.html +0 -96
  249. package/website/versions/0.2.1/modules.html +0 -29
  250. package/website/versions/0.2.2/assets/highlight.css +0 -64
  251. package/website/versions/0.2.2/assets/icons.css +0 -1043
  252. package/website/versions/0.2.2/assets/icons.png +0 -0
  253. package/website/versions/0.2.2/assets/icons@2x.png +0 -0
  254. package/website/versions/0.2.2/assets/main.js +0 -52
  255. package/website/versions/0.2.2/assets/search.js +0 -1
  256. package/website/versions/0.2.2/assets/style.css +0 -1341
  257. package/website/versions/0.2.2/assets/widgets.png +0 -0
  258. package/website/versions/0.2.2/assets/widgets@2x.png +0 -0
  259. package/website/versions/0.2.2/classes/EssentialEth.html +0 -5
  260. package/website/versions/0.2.2/classes/TinyBig.html +0 -146
  261. package/website/versions/0.2.2/index.html +0 -96
  262. package/website/versions/0.2.2/modules.html +0 -29
  263. package/website/versions/0.3.0/.nojekyll +0 -1
  264. package/website/versions/0.3.0/assets/highlight.css +0 -71
  265. package/website/versions/0.3.0/assets/icons.css +0 -1043
  266. package/website/versions/0.3.0/assets/icons.png +0 -0
  267. package/website/versions/0.3.0/assets/icons@2x.png +0 -0
  268. package/website/versions/0.3.0/assets/main.js +0 -52
  269. package/website/versions/0.3.0/assets/search.js +0 -1
  270. package/website/versions/0.3.0/assets/style.css +0 -1384
  271. package/website/versions/0.3.0/assets/widgets.png +0 -0
  272. package/website/versions/0.3.0/assets/widgets@2x.png +0 -0
  273. package/website/versions/0.3.0/classes/Contract.html +0 -15
  274. package/website/versions/0.3.0/classes/TinyBig.html +0 -156
  275. package/website/versions/0.3.0/index.html +0 -123
  276. package/website/versions/0.3.0/modules.html +0 -32
  277. package/website/versions/0.3.1/.nojekyll +0 -1
  278. package/website/versions/0.3.1/assets/highlight.css +0 -71
  279. package/website/versions/0.3.1/assets/icons.css +0 -1043
  280. package/website/versions/0.3.1/assets/icons.png +0 -0
  281. package/website/versions/0.3.1/assets/icons@2x.png +0 -0
  282. package/website/versions/0.3.1/assets/main.js +0 -52
  283. package/website/versions/0.3.1/assets/search.js +0 -1
  284. package/website/versions/0.3.1/assets/style.css +0 -1384
  285. package/website/versions/0.3.1/assets/widgets.png +0 -0
  286. package/website/versions/0.3.1/assets/widgets@2x.png +0 -0
  287. package/website/versions/0.3.1/classes/Contract.html +0 -15
  288. package/website/versions/0.3.1/classes/TinyBig.html +0 -156
  289. package/website/versions/0.3.1/index.html +0 -123
  290. package/website/versions/0.3.1/modules.html +0 -32
  291. package/website/versions/0.3.2/.nojekyll +0 -1
  292. package/website/versions/0.3.2/assets/highlight.css +0 -71
  293. package/website/versions/0.3.2/assets/icons.css +0 -1043
  294. package/website/versions/0.3.2/assets/icons.png +0 -0
  295. package/website/versions/0.3.2/assets/icons@2x.png +0 -0
  296. package/website/versions/0.3.2/assets/main.js +0 -52
  297. package/website/versions/0.3.2/assets/search.js +0 -1
  298. package/website/versions/0.3.2/assets/style.css +0 -1384
  299. package/website/versions/0.3.2/assets/widgets.png +0 -0
  300. package/website/versions/0.3.2/assets/widgets@2x.png +0 -0
  301. package/website/versions/0.3.2/classes/Contract.html +0 -15
  302. package/website/versions/0.3.2/classes/JsonRpcProvider.html +0 -5
  303. package/website/versions/0.3.2/classes/TinyBig.html +0 -156
  304. package/website/versions/0.3.2/index.html +0 -123
  305. package/website/versions/0.3.2/modules.html +0 -32
  306. package/website/versions/0.3.3/.nojekyll +0 -1
  307. package/website/versions/0.3.3/assets/highlight.css +0 -71
  308. package/website/versions/0.3.3/assets/icons.css +0 -1043
  309. package/website/versions/0.3.3/assets/icons.png +0 -0
  310. package/website/versions/0.3.3/assets/icons@2x.png +0 -0
  311. package/website/versions/0.3.3/assets/main.js +0 -52
  312. package/website/versions/0.3.3/assets/search.js +0 -1
  313. package/website/versions/0.3.3/assets/style.css +0 -1384
  314. package/website/versions/0.3.3/assets/widgets.png +0 -0
  315. package/website/versions/0.3.3/assets/widgets@2x.png +0 -0
  316. package/website/versions/0.3.3/classes/Contract.html +0 -15
  317. package/website/versions/0.3.3/classes/JsonRpcProvider.html +0 -5
  318. package/website/versions/0.3.3/classes/TinyBig.html +0 -156
  319. package/website/versions/0.3.3/index.html +0 -123
  320. package/website/versions/0.3.3/interfaces/Block.html +0 -1
  321. package/website/versions/0.3.3/interfaces/Transaction.html +0 -1
  322. package/website/versions/0.3.3/modules.html +0 -32
  323. package/website/versions/0.4.0/.nojekyll +0 -1
  324. package/website/versions/0.4.0/assets/highlight.css +0 -71
  325. package/website/versions/0.4.0/assets/icons.css +0 -1043
  326. package/website/versions/0.4.0/assets/icons.png +0 -0
  327. package/website/versions/0.4.0/assets/icons@2x.png +0 -0
  328. package/website/versions/0.4.0/assets/main.js +0 -52
  329. package/website/versions/0.4.0/assets/search.js +0 -1
  330. package/website/versions/0.4.0/assets/style.css +0 -1384
  331. package/website/versions/0.4.0/assets/widgets.png +0 -0
  332. package/website/versions/0.4.0/assets/widgets@2x.png +0 -0
  333. package/website/versions/0.4.0/classes/Contract.html +0 -15
  334. package/website/versions/0.4.0/classes/JsonRpcProvider.html +0 -6
  335. package/website/versions/0.4.0/classes/TinyBig.html +0 -156
  336. package/website/versions/0.4.0/index.html +0 -148
  337. package/website/versions/0.4.0/interfaces/Block.html +0 -1
  338. package/website/versions/0.4.0/interfaces/Transaction.html +0 -1
  339. package/website/versions/0.4.0/modules.html +0 -32
  340. package/website/versions/0.4.1/.nojekyll +0 -1
  341. package/website/versions/0.4.1/assets/highlight.css +0 -71
  342. package/website/versions/0.4.1/assets/icons.css +0 -1043
  343. package/website/versions/0.4.1/assets/icons.png +0 -0
  344. package/website/versions/0.4.1/assets/icons@2x.png +0 -0
  345. package/website/versions/0.4.1/assets/main.js +0 -52
  346. package/website/versions/0.4.1/assets/search.js +0 -1
  347. package/website/versions/0.4.1/assets/style.css +0 -1384
  348. package/website/versions/0.4.1/assets/widgets.png +0 -0
  349. package/website/versions/0.4.1/assets/widgets@2x.png +0 -0
  350. package/website/versions/0.4.1/classes/Contract.html +0 -15
  351. package/website/versions/0.4.1/classes/JsonRpcProvider.html +0 -6
  352. package/website/versions/0.4.1/classes/TinyBig.html +0 -156
  353. package/website/versions/0.4.1/index.html +0 -148
  354. package/website/versions/0.4.1/interfaces/Block.html +0 -1
  355. package/website/versions/0.4.1/interfaces/Transaction.html +0 -1
  356. package/website/versions/0.4.1/modules.html +0 -32
  357. package/website/versions/0.4.2/.nojekyll +0 -1
  358. package/website/versions/0.4.2/assets/highlight.css +0 -71
  359. package/website/versions/0.4.2/assets/icons.css +0 -1043
  360. package/website/versions/0.4.2/assets/icons.png +0 -0
  361. package/website/versions/0.4.2/assets/icons@2x.png +0 -0
  362. package/website/versions/0.4.2/assets/main.js +0 -52
  363. package/website/versions/0.4.2/assets/search.js +0 -1
  364. package/website/versions/0.4.2/assets/style.css +0 -1384
  365. package/website/versions/0.4.2/assets/widgets.png +0 -0
  366. package/website/versions/0.4.2/assets/widgets@2x.png +0 -0
  367. package/website/versions/0.4.2/classes/Contract.html +0 -15
  368. package/website/versions/0.4.2/classes/JsonRpcProvider.html +0 -8
  369. package/website/versions/0.4.2/classes/TinyBig.html +0 -156
  370. package/website/versions/0.4.2/index.html +0 -199
  371. package/website/versions/0.4.2/interfaces/Block.html +0 -1
  372. package/website/versions/0.4.2/interfaces/Transaction.html +0 -1
  373. package/website/versions/0.4.2/modules.html +0 -34
  374. package/website/versions/0.4.3/.nojekyll +0 -1
  375. package/website/versions/0.4.3/assets/highlight.css +0 -71
  376. package/website/versions/0.4.3/assets/icons.css +0 -1043
  377. package/website/versions/0.4.3/assets/icons.png +0 -0
  378. package/website/versions/0.4.3/assets/icons@2x.png +0 -0
  379. package/website/versions/0.4.3/assets/main.js +0 -52
  380. package/website/versions/0.4.3/assets/search.js +0 -1
  381. package/website/versions/0.4.3/assets/style.css +0 -1384
  382. package/website/versions/0.4.3/assets/widgets.png +0 -0
  383. package/website/versions/0.4.3/assets/widgets@2x.png +0 -0
  384. package/website/versions/0.4.3/classes/Contract.html +0 -15
  385. package/website/versions/0.4.3/classes/JsonRpcProvider.html +0 -8
  386. package/website/versions/0.4.3/classes/TinyBig.html +0 -159
  387. package/website/versions/0.4.3/index.html +0 -199
  388. package/website/versions/0.4.3/interfaces/Block.html +0 -1
  389. package/website/versions/0.4.3/interfaces/Transaction.html +0 -1
  390. package/website/versions/0.4.3/modules.html +0 -34
  391. package/website/versions/0.4.6/.nojekyll +0 -1
  392. package/website/versions/0.4.6/assets/highlight.css +0 -71
  393. package/website/versions/0.4.6/assets/icons.css +0 -1043
  394. package/website/versions/0.4.6/assets/icons.png +0 -0
  395. package/website/versions/0.4.6/assets/icons@2x.png +0 -0
  396. package/website/versions/0.4.6/assets/main.js +0 -52
  397. package/website/versions/0.4.6/assets/search.js +0 -1
  398. package/website/versions/0.4.6/assets/style.css +0 -1413
  399. package/website/versions/0.4.6/assets/widgets.png +0 -0
  400. package/website/versions/0.4.6/assets/widgets@2x.png +0 -0
  401. package/website/versions/0.4.6/classes/Contract.html +0 -15
  402. package/website/versions/0.4.6/classes/JsonRpcProvider.html +0 -8
  403. package/website/versions/0.4.6/classes/TinyBig.html +0 -159
  404. package/website/versions/0.4.6/index.html +0 -207
  405. package/website/versions/0.4.6/interfaces/Block.html +0 -1
  406. package/website/versions/0.4.6/interfaces/Transaction.html +0 -1
  407. package/website/versions/0.4.6/modules.html +0 -34
  408. package/website/versions/0.4.8/.nojekyll +0 -1
  409. package/website/versions/0.4.8/assets/highlight.css +0 -71
  410. package/website/versions/0.4.8/assets/icons.css +0 -1043
  411. package/website/versions/0.4.8/assets/icons.png +0 -0
  412. package/website/versions/0.4.8/assets/icons@2x.png +0 -0
  413. package/website/versions/0.4.8/assets/main.js +0 -52
  414. package/website/versions/0.4.8/assets/search.js +0 -1
  415. package/website/versions/0.4.8/assets/style.css +0 -1413
  416. package/website/versions/0.4.8/assets/widgets.png +0 -0
  417. package/website/versions/0.4.8/assets/widgets@2x.png +0 -0
  418. package/website/versions/0.4.8/classes/Contract.html +0 -15
  419. package/website/versions/0.4.8/classes/JsonRpcProvider.html +0 -8
  420. package/website/versions/0.4.8/classes/TinyBig.html +0 -161
  421. package/website/versions/0.4.8/index.html +0 -207
  422. package/website/versions/0.4.8/interfaces/Block.html +0 -1
  423. package/website/versions/0.4.8/interfaces/Transaction.html +0 -1
  424. package/website/versions/0.4.8/modules.html +0 -34
  425. package/website/versions/0.4.9-beta.0/.nojekyll +0 -1
  426. package/website/versions/0.4.9-beta.0/assets/highlight.css +0 -71
  427. package/website/versions/0.4.9-beta.0/assets/icons.css +0 -1043
  428. package/website/versions/0.4.9-beta.0/assets/icons.png +0 -0
  429. package/website/versions/0.4.9-beta.0/assets/icons@2x.png +0 -0
  430. package/website/versions/0.4.9-beta.0/assets/main.js +0 -52
  431. package/website/versions/0.4.9-beta.0/assets/search.js +0 -1
  432. package/website/versions/0.4.9-beta.0/assets/style.css +0 -1413
  433. package/website/versions/0.4.9-beta.0/assets/widgets.png +0 -0
  434. package/website/versions/0.4.9-beta.0/assets/widgets@2x.png +0 -0
  435. package/website/versions/0.4.9-beta.0/classes/Contract.html +0 -13
  436. package/website/versions/0.4.9-beta.0/classes/JsonRpcProvider.html +0 -8
  437. package/website/versions/0.4.9-beta.0/classes/TinyBig.html +0 -161
  438. package/website/versions/0.4.9-beta.0/index.html +0 -207
  439. package/website/versions/0.4.9-beta.0/interfaces/Block.html +0 -1
  440. package/website/versions/0.4.9-beta.0/interfaces/JSONABIArgument.html +0 -1
  441. package/website/versions/0.4.9-beta.0/interfaces/Network.html +0 -3
  442. package/website/versions/0.4.9-beta.0/interfaces/Transaction.html +0 -1
  443. package/website/versions/0.4.9-beta.0/modules.html +0 -32
  444. package/website/versions/0.4.9-beta.1/.nojekyll +0 -1
  445. package/website/versions/0.4.9-beta.1/assets/highlight.css +0 -71
  446. package/website/versions/0.4.9-beta.1/assets/icons.css +0 -1043
  447. package/website/versions/0.4.9-beta.1/assets/icons.png +0 -0
  448. package/website/versions/0.4.9-beta.1/assets/icons@2x.png +0 -0
  449. package/website/versions/0.4.9-beta.1/assets/main.js +0 -52
  450. package/website/versions/0.4.9-beta.1/assets/search.js +0 -1
  451. package/website/versions/0.4.9-beta.1/assets/style.css +0 -1413
  452. package/website/versions/0.4.9-beta.1/assets/widgets.png +0 -0
  453. package/website/versions/0.4.9-beta.1/assets/widgets@2x.png +0 -0
  454. package/website/versions/0.4.9-beta.1/classes/Contract.html +0 -13
  455. package/website/versions/0.4.9-beta.1/classes/JsonRpcProvider.html +0 -8
  456. package/website/versions/0.4.9-beta.1/classes/TinyBig.html +0 -161
  457. package/website/versions/0.4.9-beta.1/index.html +0 -207
  458. package/website/versions/0.4.9-beta.1/interfaces/Block.html +0 -1
  459. package/website/versions/0.4.9-beta.1/interfaces/JSONABIArgument.html +0 -1
  460. package/website/versions/0.4.9-beta.1/interfaces/Network.html +0 -3
  461. package/website/versions/0.4.9-beta.1/interfaces/Transaction.html +0 -1
  462. package/website/versions/0.4.9-beta.1/modules.html +0 -32
  463. package/website/versions/versions/0.1.2/assets/highlight.css +0 -57
  464. package/website/versions/versions/0.1.2/assets/icons.css +0 -1043
  465. package/website/versions/versions/0.1.2/assets/icons.png +0 -0
  466. package/website/versions/versions/0.1.2/assets/icons@2x.png +0 -0
  467. package/website/versions/versions/0.1.2/assets/main.js +0 -52
  468. package/website/versions/versions/0.1.2/assets/search.js +0 -1
  469. package/website/versions/versions/0.1.2/assets/style.css +0 -1341
  470. package/website/versions/versions/0.1.2/assets/widgets.png +0 -0
  471. package/website/versions/versions/0.1.2/assets/widgets@2x.png +0 -0
  472. package/website/versions/versions/0.1.2/classes/TinyBig.html +0 -4
  473. package/website/versions/versions/0.1.2/index.html +0 -20
  474. package/website/versions/versions/0.1.2/modules.html +0 -23
  475. package/website/versions/versions/0.1.3/assets/highlight.css +0 -64
  476. package/website/versions/versions/0.1.3/assets/icons.css +0 -1043
  477. package/website/versions/versions/0.1.3/assets/icons.png +0 -0
  478. package/website/versions/versions/0.1.3/assets/icons@2x.png +0 -0
  479. package/website/versions/versions/0.1.3/assets/main.js +0 -52
  480. package/website/versions/versions/0.1.3/assets/search.js +0 -1
  481. package/website/versions/versions/0.1.3/assets/style.css +0 -1341
  482. package/website/versions/versions/0.1.3/assets/widgets.png +0 -0
  483. package/website/versions/versions/0.1.3/assets/widgets@2x.png +0 -0
  484. package/website/versions/versions/0.1.3/classes/TinyBig.html +0 -4
  485. package/website/versions/versions/0.1.3/index.html +0 -53
  486. package/website/versions/versions/0.1.3/modules.html +0 -23
  487. package/website/versions/versions/0.1.4/assets/highlight.css +0 -64
  488. package/website/versions/versions/0.1.4/assets/icons.css +0 -1043
  489. package/website/versions/versions/0.1.4/assets/icons.png +0 -0
  490. package/website/versions/versions/0.1.4/assets/icons@2x.png +0 -0
  491. package/website/versions/versions/0.1.4/assets/main.js +0 -52
  492. package/website/versions/versions/0.1.4/assets/search.js +0 -1
  493. package/website/versions/versions/0.1.4/assets/style.css +0 -1341
  494. package/website/versions/versions/0.1.4/assets/widgets.png +0 -0
  495. package/website/versions/versions/0.1.4/assets/widgets@2x.png +0 -0
  496. package/website/versions/versions/0.1.4/classes/TinyBig.html +0 -4
  497. package/website/versions/versions/0.1.4/index.html +0 -58
  498. 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
- }
package/src/index.ts DELETED
@@ -1,27 +0,0 @@
1
- import { Contract } from './classes/Contract';
2
- import { JsonRpcProvider, jsonRpcProvider } from './providers/JsonRpcProvider';
3
- import { tinyBig, TinyBig } from './shared/tiny-big/tiny-big';
4
- import { Block } from './types/Block.types';
5
- import {
6
- ContractTypes,
7
- JSONABI,
8
- JSONABIArgument,
9
- } from './types/Contract.types';
10
- import { Network } from './types/Network.types';
11
- import { Transaction } from './types/Transaction.types';
12
- export * from './utils';
13
- export {
14
- jsonRpcProvider,
15
- JsonRpcProvider,
16
- tinyBig,
17
- /* classes */
18
- Contract,
19
- TinyBig,
20
- /* types */
21
- Block,
22
- ContractTypes,
23
- JSONABI,
24
- JSONABIArgument,
25
- Network,
26
- Transaction,
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
- });