@sentio/sdk 1.40.5 → 2.0.0-rc.1

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 (240) hide show
  1. package/lib/builtin/eacaggregatorproxy/index.js +3 -16
  2. package/lib/builtin/eacaggregatorproxy/index.js.map +1 -1
  3. package/lib/builtin/eacaggregatorproxy/test-utils.d.ts +5 -5
  4. package/lib/builtin/eacaggregatorproxy/test-utils.js +8 -4
  5. package/lib/builtin/eacaggregatorproxy/test-utils.js.map +1 -1
  6. package/lib/builtin/erc1155/index.js +3 -16
  7. package/lib/builtin/erc1155/index.js.map +1 -1
  8. package/lib/builtin/erc1155/test-utils.d.ts +5 -5
  9. package/lib/builtin/erc1155/test-utils.js +8 -4
  10. package/lib/builtin/erc1155/test-utils.js.map +1 -1
  11. package/lib/builtin/erc20/index.js +3 -16
  12. package/lib/builtin/erc20/index.js.map +1 -1
  13. package/lib/builtin/erc20/test-utils.d.ts +4 -4
  14. package/lib/builtin/erc20/test-utils.js +6 -3
  15. package/lib/builtin/erc20/test-utils.js.map +1 -1
  16. package/lib/builtin/erc20bytes/index.js +3 -16
  17. package/lib/builtin/erc20bytes/index.js.map +1 -1
  18. package/lib/builtin/erc20bytes/test-utils.d.ts +3 -3
  19. package/lib/builtin/erc20bytes/test-utils.js +4 -2
  20. package/lib/builtin/erc20bytes/test-utils.js.map +1 -1
  21. package/lib/builtin/erc721/index.js +3 -16
  22. package/lib/builtin/erc721/index.js.map +1 -1
  23. package/lib/builtin/erc721/test-utils.d.ts +4 -4
  24. package/lib/builtin/erc721/test-utils.js +6 -3
  25. package/lib/builtin/erc721/test-utils.js.map +1 -1
  26. package/lib/builtin/index.js +5 -27
  27. package/lib/builtin/index.js.map +1 -1
  28. package/lib/builtin/internal/EACAggregatorProxy.d.ts +19 -430
  29. package/lib/builtin/internal/EACAggregatorProxy.js.map +1 -1
  30. package/lib/builtin/internal/ERC1155.d.ts +18 -161
  31. package/lib/builtin/internal/ERC1155.js.map +1 -1
  32. package/lib/builtin/internal/ERC20.d.ts +12 -279
  33. package/lib/builtin/internal/ERC20.js.map +1 -1
  34. package/lib/builtin/internal/ERC20Bytes.d.ts +11 -146
  35. package/lib/builtin/internal/ERC20Bytes.js.map +1 -1
  36. package/lib/builtin/internal/ERC721.d.ts +12 -222
  37. package/lib/builtin/internal/ERC721.js.map +1 -1
  38. package/lib/builtin/internal/WETH9.d.ts +16 -191
  39. package/lib/builtin/internal/WETH9.js.map +1 -1
  40. package/lib/builtin/internal/common.d.ts +3 -18
  41. package/lib/builtin/internal/common.js +6 -0
  42. package/lib/builtin/internal/common.js.map +1 -1
  43. package/lib/builtin/internal/eacaggregatorproxy_processor.d.ts +161 -168
  44. package/lib/builtin/internal/eacaggregatorproxy_processor.js +94 -288
  45. package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +1 -1
  46. package/lib/builtin/internal/erc1155_processor.d.ts +45 -50
  47. package/lib/builtin/internal/erc1155_processor.js +68 -132
  48. package/lib/builtin/internal/erc1155_processor.js.map +1 -1
  49. package/lib/builtin/internal/erc20_processor.d.ts +59 -63
  50. package/lib/builtin/internal/erc20_processor.js +64 -155
  51. package/lib/builtin/internal/erc20_processor.js.map +1 -1
  52. package/lib/builtin/internal/erc20bytes_processor.d.ts +37 -40
  53. package/lib/builtin/internal/erc20bytes_processor.js +50 -118
  54. package/lib/builtin/internal/erc20bytes_processor.js.map +1 -1
  55. package/lib/builtin/internal/erc721_processor.d.ts +56 -60
  56. package/lib/builtin/internal/erc721_processor.js +66 -167
  57. package/lib/builtin/internal/erc721_processor.js.map +1 -1
  58. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.d.ts +1 -2
  59. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js +1 -1
  60. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -1
  61. package/lib/builtin/internal/factories/ERC1155__factory.d.ts +1 -2
  62. package/lib/builtin/internal/factories/ERC1155__factory.js +1 -1
  63. package/lib/builtin/internal/factories/ERC1155__factory.js.map +1 -1
  64. package/lib/builtin/internal/factories/ERC20Bytes__factory.d.ts +1 -2
  65. package/lib/builtin/internal/factories/ERC20Bytes__factory.js +1 -1
  66. package/lib/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -1
  67. package/lib/builtin/internal/factories/ERC20__factory.d.ts +1 -2
  68. package/lib/builtin/internal/factories/ERC20__factory.js +1 -1
  69. package/lib/builtin/internal/factories/ERC20__factory.js.map +1 -1
  70. package/lib/builtin/internal/factories/ERC721__factory.d.ts +1 -2
  71. package/lib/builtin/internal/factories/ERC721__factory.js +1 -1
  72. package/lib/builtin/internal/factories/ERC721__factory.js.map +1 -1
  73. package/lib/builtin/internal/factories/WETH9__factory.d.ts +1 -2
  74. package/lib/builtin/internal/factories/WETH9__factory.js +1 -1
  75. package/lib/builtin/internal/factories/WETH9__factory.js.map +1 -1
  76. package/lib/builtin/internal/index.js +2 -24
  77. package/lib/builtin/internal/index.js.map +1 -1
  78. package/lib/builtin/internal/weth9_processor.d.ts +44 -49
  79. package/lib/builtin/internal/weth9_processor.js +70 -144
  80. package/lib/builtin/internal/weth9_processor.js.map +1 -1
  81. package/lib/builtin/weth9/index.js +3 -16
  82. package/lib/builtin/weth9/index.js.map +1 -1
  83. package/lib/builtin/weth9/test-utils.d.ts +5 -5
  84. package/lib/builtin/weth9/test-utils.js +8 -4
  85. package/lib/builtin/weth9/test-utils.js.map +1 -1
  86. package/lib/core/big-decimal.d.ts +6 -0
  87. package/lib/core/big-decimal.js +6 -2
  88. package/lib/core/big-decimal.js.map +1 -1
  89. package/lib/core/bind-options.d.ts +1 -1
  90. package/lib/core/bind-options.js +2 -2
  91. package/lib/core/bind-options.js.map +1 -1
  92. package/lib/core/context.d.ts +8 -14
  93. package/lib/core/context.js +7 -6
  94. package/lib/core/context.js.map +1 -1
  95. package/lib/core/core-plugin.d.ts +1 -1
  96. package/lib/core/core-plugin.js +1 -1
  97. package/lib/core/core-plugin.js.map +1 -1
  98. package/lib/core/generic-processor.test.js.map +1 -1
  99. package/lib/core/index.d.ts +0 -5
  100. package/lib/core/index.js +1 -9
  101. package/lib/core/index.js.map +1 -1
  102. package/lib/core/numberish.d.ts +2 -3
  103. package/lib/core/numberish.js +35 -33
  104. package/lib/core/numberish.js.map +1 -1
  105. package/lib/core/numberish.test.js.map +1 -1
  106. package/lib/core/sui-plugin.d.ts +1 -1
  107. package/lib/core/sui-plugin.js +1 -1
  108. package/lib/core/sui-plugin.js.map +1 -1
  109. package/lib/error.js +2 -2
  110. package/lib/error.js.map +1 -1
  111. package/lib/eth/account-processor-state.d.ts +5 -0
  112. package/lib/eth/account-processor-state.js +9 -0
  113. package/lib/eth/account-processor-state.js.map +1 -0
  114. package/lib/{core → eth}/account-processor.d.ts +4 -8
  115. package/lib/{core → eth}/account-processor.js +33 -42
  116. package/lib/eth/account-processor.js.map +1 -0
  117. package/lib/{core → eth}/base-processor-template.d.ts +7 -8
  118. package/lib/{core → eth}/base-processor-template.js +3 -3
  119. package/lib/eth/base-processor-template.js.map +1 -0
  120. package/lib/{core → eth}/base-processor.d.ts +7 -7
  121. package/lib/{core → eth}/base-processor.js +13 -18
  122. package/lib/eth/base-processor.js.map +1 -0
  123. package/lib/{binds.d.ts → eth/binds.d.ts} +4 -3
  124. package/lib/{binds.js → eth/binds.js} +3 -3
  125. package/lib/eth/binds.js.map +1 -0
  126. package/lib/{core → eth}/eth-plugin.d.ts +2 -2
  127. package/lib/{core → eth}/eth-plugin.js +19 -13
  128. package/lib/eth/eth-plugin.js.map +1 -0
  129. package/lib/{core → eth}/generic-processor.d.ts +3 -3
  130. package/lib/{core → eth}/generic-processor.js +5 -5
  131. package/lib/eth/generic-processor.js.map +1 -0
  132. package/lib/eth/index.d.ts +6 -0
  133. package/lib/eth/index.js +15 -0
  134. package/lib/eth/index.js.map +1 -0
  135. package/lib/eth/provider.d.ts +4 -0
  136. package/lib/eth/provider.js +74 -0
  137. package/lib/eth/provider.js.map +1 -0
  138. package/lib/{core → eth}/trace.d.ts +2 -2
  139. package/lib/{core → eth}/trace.js +0 -0
  140. package/lib/eth/trace.js.map +1 -0
  141. package/lib/index.d.ts +2 -2
  142. package/lib/index.js +7 -23
  143. package/lib/index.js.map +1 -1
  144. package/lib/target-ethers-sentio/event-handler.d.ts +1 -0
  145. package/lib/target-ethers-sentio/event-handler.js +21 -5
  146. package/lib/target-ethers-sentio/event-handler.js.map +1 -1
  147. package/lib/target-ethers-sentio/file.js +59 -57
  148. package/lib/target-ethers-sentio/file.js.map +1 -1
  149. package/lib/target-ethers-sentio/functions-handler.js +7 -4
  150. package/lib/target-ethers-sentio/functions-handler.js.map +1 -1
  151. package/lib/target-ethers-sentio/index.d.ts +1 -1
  152. package/lib/target-ethers-sentio/index.js +3 -5
  153. package/lib/target-ethers-sentio/index.js.map +1 -1
  154. package/lib/target-ethers-sentio/view-function.js +15 -15
  155. package/lib/target-ethers-sentio/view-function.js.map +1 -1
  156. package/lib/testing/metric-utils.js +2 -2
  157. package/lib/testing/metric-utils.js.map +1 -1
  158. package/lib/testing/test-processor-server.d.ts +11 -11
  159. package/lib/testing/test-processor-server.js +7 -12
  160. package/lib/testing/test-processor-server.js.map +1 -1
  161. package/lib/testing/test-provider.js +1 -6
  162. package/lib/testing/test-provider.js.map +1 -1
  163. package/lib/utils/conversion.d.ts +2 -2
  164. package/lib/utils/conversion.js +12 -5
  165. package/lib/utils/conversion.js.map +1 -1
  166. package/lib/utils/dex-price.d.ts +1 -1
  167. package/lib/utils/dex-price.js +5 -6
  168. package/lib/utils/dex-price.js.map +1 -1
  169. package/lib/utils/dex-price.test.js.map +1 -1
  170. package/lib/utils/erc20.test.js.map +1 -1
  171. package/lib/utils/index.js +5 -27
  172. package/lib/utils/index.js.map +1 -1
  173. package/lib/utils/token.d.ts +2 -3
  174. package/lib/utils/token.js +5 -6
  175. package/lib/utils/token.js.map +1 -1
  176. package/lib/webpack.config.js +1 -1
  177. package/package.json +7 -13
  178. package/src/builtin/eacaggregatorproxy/test-utils.ts +13 -9
  179. package/src/builtin/erc1155/test-utils.ts +13 -9
  180. package/src/builtin/erc20/test-utils.ts +10 -7
  181. package/src/builtin/erc20bytes/test-utils.ts +7 -5
  182. package/src/builtin/erc721/test-utils.ts +10 -7
  183. package/src/builtin/internal/EACAggregatorProxy.ts +20 -815
  184. package/src/builtin/internal/ERC1155.ts +20 -483
  185. package/src/builtin/internal/ERC20.ts +15 -641
  186. package/src/builtin/internal/ERC20Bytes.ts +13 -357
  187. package/src/builtin/internal/ERC721.ts +15 -601
  188. package/src/builtin/internal/WETH9.ts +20 -439
  189. package/src/builtin/internal/common.ts +33 -33
  190. package/src/builtin/internal/eacaggregatorproxy_processor.ts +344 -425
  191. package/src/builtin/internal/erc1155_processor.ts +202 -209
  192. package/src/builtin/internal/erc20_processor.ts +191 -225
  193. package/src/builtin/internal/erc20bytes_processor.ts +136 -165
  194. package/src/builtin/internal/erc721_processor.ts +218 -242
  195. package/src/builtin/internal/factories/EACAggregatorProxy__factory.ts +2 -3
  196. package/src/builtin/internal/factories/ERC1155__factory.ts +2 -3
  197. package/src/builtin/internal/factories/ERC20Bytes__factory.ts +2 -3
  198. package/src/builtin/internal/factories/ERC20__factory.ts +2 -3
  199. package/src/builtin/internal/factories/ERC721__factory.ts +2 -3
  200. package/src/builtin/internal/factories/WETH9__factory.ts +2 -3
  201. package/src/builtin/internal/weth9_processor.ts +176 -208
  202. package/src/builtin/weth9/test-utils.ts +13 -9
  203. package/src/core/big-decimal.ts +11 -0
  204. package/src/core/bind-options.ts +2 -3
  205. package/src/core/context.ts +14 -13
  206. package/src/core/core-plugin.ts +1 -1
  207. package/src/core/index.ts +0 -6
  208. package/src/core/numberish.ts +39 -40
  209. package/src/core/sui-plugin.ts +1 -1
  210. package/src/error.ts +1 -1
  211. package/src/eth/account-processor-state.ts +6 -0
  212. package/src/{core → eth}/account-processor.ts +40 -50
  213. package/src/{core → eth}/base-processor-template.ts +11 -12
  214. package/src/{core → eth}/base-processor.ts +37 -31
  215. package/src/{binds.ts → eth/binds.ts} +6 -5
  216. package/src/{core → eth}/eth-plugin.ts +19 -12
  217. package/src/{core → eth}/generic-processor.ts +5 -5
  218. package/src/eth/index.ts +6 -0
  219. package/src/eth/provider.ts +82 -0
  220. package/src/{core → eth}/trace.ts +2 -3
  221. package/src/index.ts +2 -3
  222. package/src/target-ethers-sentio/event-handler.ts +22 -5
  223. package/src/target-ethers-sentio/file.ts +65 -65
  224. package/src/target-ethers-sentio/functions-handler.ts +8 -4
  225. package/src/target-ethers-sentio/index.ts +1 -1
  226. package/src/target-ethers-sentio/view-function.ts +17 -18
  227. package/src/testing/metric-utils.ts +2 -2
  228. package/src/testing/test-processor-server.ts +23 -24
  229. package/src/testing/test-provider.ts +2 -7
  230. package/src/utils/conversion.ts +12 -5
  231. package/src/utils/dex-price.ts +3 -3
  232. package/src/utils/token.ts +10 -11
  233. package/src/webpack.config.js +1 -1
  234. package/lib/binds.js.map +0 -1
  235. package/lib/core/account-processor.js.map +0 -1
  236. package/lib/core/base-processor-template.js.map +0 -1
  237. package/lib/core/base-processor.js.map +0 -1
  238. package/lib/core/eth-plugin.js.map +0 -1
  239. package/lib/core/generic-processor.js.map +0 -1
  240. package/lib/core/trace.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { Log } from "@ethersproject/providers";
1
+ import { LogParams } from "ethers/providers";
2
2
  import { ApprovalEventObject, TransferEventObject, DepositEventObject, WithdrawalEventObject } from ".";
3
- export declare function mockApprovalLog(contractAddress: string, event: ApprovalEventObject): Log;
4
- export declare function mockTransferLog(contractAddress: string, event: TransferEventObject): Log;
5
- export declare function mockDepositLog(contractAddress: string, event: DepositEventObject): Log;
6
- export declare function mockWithdrawalLog(contractAddress: string, event: WithdrawalEventObject): Log;
3
+ export declare function mockApprovalLog(contractAddress: string, event: ApprovalEventObject): LogParams;
4
+ export declare function mockTransferLog(contractAddress: string, event: TransferEventObject): LogParams;
5
+ export declare function mockDepositLog(contractAddress: string, event: DepositEventObject): LogParams;
6
+ export declare function mockWithdrawalLog(contractAddress: string, event: WithdrawalEventObject): LogParams;
@@ -12,9 +12,10 @@ const mockField = {
12
12
  };
13
13
  function mockApprovalLog(contractAddress, event) {
14
14
  const contract = (0, _1.getWETH9Contract)(contractAddress);
15
- const encodedLog = contract.rawContract.interface.encodeEventLog(contract.rawContract.interface.getEvent("Approval"), [event.src, event.guy, event.wad]);
15
+ const encodedLog = contract.rawContract.interface.encodeEventLog("Approval(address,address,uint256)", [event.src, event.guy, event.wad]);
16
16
  return {
17
17
  ...mockField,
18
+ index: 0,
18
19
  address: contractAddress,
19
20
  data: encodedLog.data,
20
21
  topics: encodedLog.topics,
@@ -23,9 +24,10 @@ function mockApprovalLog(contractAddress, event) {
23
24
  exports.mockApprovalLog = mockApprovalLog;
24
25
  function mockTransferLog(contractAddress, event) {
25
26
  const contract = (0, _1.getWETH9Contract)(contractAddress);
26
- const encodedLog = contract.rawContract.interface.encodeEventLog(contract.rawContract.interface.getEvent("Transfer"), [event.src, event.dst, event.wad]);
27
+ const encodedLog = contract.rawContract.interface.encodeEventLog("Transfer(address,address,uint256)", [event.src, event.dst, event.wad]);
27
28
  return {
28
29
  ...mockField,
30
+ index: 0,
29
31
  address: contractAddress,
30
32
  data: encodedLog.data,
31
33
  topics: encodedLog.topics,
@@ -34,9 +36,10 @@ function mockTransferLog(contractAddress, event) {
34
36
  exports.mockTransferLog = mockTransferLog;
35
37
  function mockDepositLog(contractAddress, event) {
36
38
  const contract = (0, _1.getWETH9Contract)(contractAddress);
37
- const encodedLog = contract.rawContract.interface.encodeEventLog(contract.rawContract.interface.getEvent("Deposit"), [event.dst, event.wad]);
39
+ const encodedLog = contract.rawContract.interface.encodeEventLog("Deposit(address,uint256)", [event.dst, event.wad]);
38
40
  return {
39
41
  ...mockField,
42
+ index: 0,
40
43
  address: contractAddress,
41
44
  data: encodedLog.data,
42
45
  topics: encodedLog.topics,
@@ -45,9 +48,10 @@ function mockDepositLog(contractAddress, event) {
45
48
  exports.mockDepositLog = mockDepositLog;
46
49
  function mockWithdrawalLog(contractAddress, event) {
47
50
  const contract = (0, _1.getWETH9Contract)(contractAddress);
48
- const encodedLog = contract.rawContract.interface.encodeEventLog(contract.rawContract.interface.getEvent("Withdrawal"), [event.src, event.wad]);
51
+ const encodedLog = contract.rawContract.interface.encodeEventLog("Withdrawal(address,uint256)", [event.src, event.wad]);
49
52
  return {
50
53
  ...mockField,
54
+ index: 0,
51
55
  address: contractAddress,
52
56
  data: encodedLog.data,
53
57
  topics: encodedLog.topics,
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../src/builtin/weth9/test-utils.ts"],"names":[],"mappings":";;;AAIA,wBAMW;AACX,MAAM,SAAS,GAAG;IAChB,SAAS,EACP,oEAAoE;IACtE,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,KAAK;IACd,eAAe,EACb,oEAAoE;IACtE,gBAAgB,EAAE,CAAC;CACpB,CAAC;AAEF,SAAgB,eAAe,CAC7B,eAAuB,EACvB,KAA0B;IAE1B,MAAM,QAAQ,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAC9D,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnD,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAClC,CAAC;IACF,OAAO;QACL,GAAG,SAAS;QACZ,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAfD,0CAeC;AAED,SAAgB,eAAe,CAC7B,eAAuB,EACvB,KAA0B;IAE1B,MAAM,QAAQ,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAC9D,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnD,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAClC,CAAC;IACF,OAAO;QACL,GAAG,SAAS;QACZ,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAfD,0CAeC;AAED,SAAgB,cAAc,CAC5B,eAAuB,EACvB,KAAyB;IAEzB,MAAM,QAAQ,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAC9D,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAClD,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CACvB,CAAC;IACF,OAAO;QACL,GAAG,SAAS;QACZ,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAfD,wCAeC;AAED,SAAgB,iBAAiB,CAC/B,eAAuB,EACvB,KAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAC9D,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EACrD,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CACvB,CAAC;IACF,OAAO;QACL,GAAG,SAAS;QACZ,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAfD,8CAeC","sourcesContent":["/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Log } from \"@ethersproject/providers\";\nimport {\n getWETH9Contract,\n ApprovalEventObject,\n TransferEventObject,\n DepositEventObject,\n WithdrawalEventObject,\n} from \".\";\nconst mockField = {\n blockHash:\n \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n blockNumber: 0,\n logIndex: 0,\n removed: false,\n transactionHash:\n \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n transactionIndex: 0,\n};\n\nexport function mockApprovalLog(\n contractAddress: string,\n event: ApprovalEventObject\n): Log {\n const contract = getWETH9Contract(contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n contract.rawContract.interface.getEvent(\"Approval\"),\n [event.src, event.guy, event.wad]\n );\n return {\n ...mockField,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockTransferLog(\n contractAddress: string,\n event: TransferEventObject\n): Log {\n const contract = getWETH9Contract(contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n contract.rawContract.interface.getEvent(\"Transfer\"),\n [event.src, event.dst, event.wad]\n );\n return {\n ...mockField,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockDepositLog(\n contractAddress: string,\n event: DepositEventObject\n): Log {\n const contract = getWETH9Contract(contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n contract.rawContract.interface.getEvent(\"Deposit\"),\n [event.dst, event.wad]\n );\n return {\n ...mockField,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockWithdrawalLog(\n contractAddress: string,\n event: WithdrawalEventObject\n): Log {\n const contract = getWETH9Contract(contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n contract.rawContract.interface.getEvent(\"Withdrawal\"),\n [event.src, event.wad]\n );\n return {\n ...mockField,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n"]}
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../src/builtin/weth9/test-utils.ts"],"names":[],"mappings":";;;AAIA,wBAMW;AACX,MAAM,SAAS,GAAG;IAChB,SAAS,EACP,oEAAoE;IACtE,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,KAAK;IACd,eAAe,EACb,oEAAoE;IACtE,gBAAgB,EAAE,CAAC;CACpB,CAAC;AAEF,SAAgB,eAAe,CAC7B,eAAuB,EACvB,KAA0B;IAE1B,MAAM,QAAQ,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAC9D,mCAAmC,EACnC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAClC,CAAC;IACF,OAAO;QACL,GAAG,SAAS;QACZ,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAhBD,0CAgBC;AAED,SAAgB,eAAe,CAC7B,eAAuB,EACvB,KAA0B;IAE1B,MAAM,QAAQ,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAC9D,mCAAmC,EACnC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAClC,CAAC;IACF,OAAO;QACL,GAAG,SAAS;QACZ,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAhBD,0CAgBC;AAED,SAAgB,cAAc,CAC5B,eAAuB,EACvB,KAAyB;IAEzB,MAAM,QAAQ,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAC9D,0BAA0B,EAC1B,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CACvB,CAAC;IACF,OAAO;QACL,GAAG,SAAS;QACZ,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAhBD,wCAgBC;AAED,SAAgB,iBAAiB,CAC/B,eAAuB,EACvB,KAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAC9D,6BAA6B,EAC7B,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CACvB,CAAC;IACF,OAAO;QACL,GAAG,SAAS;QACZ,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAhBD,8CAgBC","sourcesContent":["/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { LogParams } from \"ethers/providers\";\nimport {\n getWETH9Contract,\n ApprovalEventObject,\n TransferEventObject,\n DepositEventObject,\n WithdrawalEventObject,\n} from \".\";\nconst mockField = {\n blockHash:\n \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n blockNumber: 0,\n logIndex: 0,\n removed: false,\n transactionHash:\n \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n transactionIndex: 0,\n};\n\nexport function mockApprovalLog(\n contractAddress: string,\n event: ApprovalEventObject\n): LogParams {\n const contract = getWETH9Contract(contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"Approval(address,address,uint256)\",\n [event.src, event.guy, event.wad]\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockTransferLog(\n contractAddress: string,\n event: TransferEventObject\n): LogParams {\n const contract = getWETH9Contract(contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"Transfer(address,address,uint256)\",\n [event.src, event.dst, event.wad]\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockDepositLog(\n contractAddress: string,\n event: DepositEventObject\n): LogParams {\n const contract = getWETH9Contract(contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"Deposit(address,uint256)\",\n [event.dst, event.wad]\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n\nexport function mockWithdrawalLog(\n contractAddress: string,\n event: WithdrawalEventObject\n): LogParams {\n const contract = getWETH9Contract(contractAddress);\n const encodedLog = contract.rawContract.interface.encodeEventLog(\n \"Withdrawal(address,uint256)\",\n [event.src, event.wad]\n );\n return {\n ...mockField,\n index: 0,\n address: contractAddress,\n data: encodedLog.data,\n topics: encodedLog.topics,\n };\n}\n"]}
@@ -1 +1,7 @@
1
+ import { BigDecimal } from '@sentio/bigdecimal';
1
2
  export { BigDecimal } from '@sentio/bigdecimal';
3
+ declare global {
4
+ interface BigInt {
5
+ asBigDecimal(): BigDecimal;
6
+ }
7
+ }
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BigDecimal = void 0;
4
- var bigdecimal_1 = require("@sentio/bigdecimal");
5
- Object.defineProperty(exports, "BigDecimal", { enumerable: true, get: function () { return bigdecimal_1.BigDecimal; } });
4
+ const bigdecimal_1 = require("@sentio/bigdecimal");
5
+ var bigdecimal_2 = require("@sentio/bigdecimal");
6
+ Object.defineProperty(exports, "BigDecimal", { enumerable: true, get: function () { return bigdecimal_2.BigDecimal; } });
7
+ BigInt.prototype.asBigDecimal = function () {
8
+ return new bigdecimal_1.BigDecimal(this.toString());
9
+ };
6
10
  //# sourceMappingURL=big-decimal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"big-decimal.js","sourceRoot":"","sources":["../../src/core/big-decimal.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAAtC,wGAAA,UAAU,OAAA","sourcesContent":["export { BigDecimal } from '@sentio/bigdecimal'\n"]}
1
+ {"version":3,"file":"big-decimal.js","sourceRoot":"","sources":["../../src/core/big-decimal.ts"],"names":[],"mappings":";;;AAAA,mDAA+C;AAE/C,iDAA+C;AAAtC,wGAAA,UAAU,OAAA;AAOnB,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG;IAC9B,OAAO,IAAI,uBAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;AACxC,CAAC,CAAA","sourcesContent":["import { BigDecimal } from '@sentio/bigdecimal'\n\nexport { BigDecimal } from '@sentio/bigdecimal'\n\ndeclare global {\n interface BigInt {\n asBigDecimal(): BigDecimal\n }\n}\nBigInt.prototype.asBigDecimal = function () {\n return new BigDecimal(this.toString())\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Networkish } from '@ethersproject/networks';
1
+ import { Networkish } from 'ethers/providers';
2
2
  export declare class BindOptions {
3
3
  address: string;
4
4
  network?: Networkish;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AccountBindOptions = exports.BindInternalOptions = exports.getOptionsSignature = exports.BindOptions = void 0;
4
- const providers_1 = require("@ethersproject/providers");
4
+ const providers_1 = require("ethers/providers");
5
5
  class BindOptions {
6
6
  // Contract address
7
7
  address;
@@ -16,7 +16,7 @@ exports.BindOptions = BindOptions;
16
16
  function getOptionsSignature(opts) {
17
17
  const sig = [opts.address];
18
18
  if (opts.network) {
19
- sig.push((0, providers_1.getNetwork)(opts.network).chainId.toString());
19
+ sig.push(providers_1.Network.from(opts.network).chainId.toString());
20
20
  }
21
21
  if (opts.name) {
22
22
  sig.push(opts.name);
@@ -1 +1 @@
1
- {"version":3,"file":"bind-options.js","sourceRoot":"","sources":["../../src/core/bind-options.ts"],"names":[],"mappings":";;;AACA,wDAAqD;AAErD,MAAa,WAAW;IACtB,mBAAmB;IACnB,OAAO,CAAQ;IACf,6CAA6C;IAC7C,OAAO,GAAgB,CAAC,CAAA;IACxB,2CAA2C;IAC3C,IAAI,CAAS;IACb,UAAU,CAAkB;IAC5B,QAAQ,CAAkB;CAC3B;AATD,kCASC;AAED,SAAgB,mBAAmB,CAAC,IAAiB;IACnD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1B,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,GAAG,CAAC,IAAI,CAAC,IAAA,sBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;KACtD;IACD,IAAI,IAAI,CAAC,IAAI,EAAE;QACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACpB;IACD,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;KACrC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;KACnC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAfD,kDAeC;AAED,MAAa,mBAAmB;IAC9B,OAAO,CAAQ;IACf,OAAO,CAAY;IACnB,IAAI,CAAQ;IACZ,UAAU,CAAQ;IAClB,QAAQ,CAAS;CAClB;AAND,kDAMC;AAED,MAAa,kBAAkB;IAC7B,OAAO,CAAQ;IACf,OAAO,CAAa;IACpB,UAAU,CAAkB;CAC7B;AAJD,gDAIC","sourcesContent":["import { Networkish } from '@ethersproject/networks'\nimport { getNetwork } from '@ethersproject/providers'\n\nexport class BindOptions {\n // Contract address\n address: string\n // Optional, if not set, then use eth mainnet\n network?: Networkish = 1\n // Optional, override default contract name\n name?: string\n startBlock?: bigint | number\n endBlock?: bigint | number\n}\n\nexport function getOptionsSignature(opts: BindOptions): string {\n const sig = [opts.address]\n if (opts.network) {\n sig.push(getNetwork(opts.network).chainId.toString())\n }\n if (opts.name) {\n sig.push(opts.name)\n }\n if (opts.startBlock) {\n sig.push(opts.startBlock.toString())\n }\n if (opts.endBlock) {\n sig.push(opts.endBlock.toString())\n }\n return sig.join('_')\n}\n\nexport class BindInternalOptions {\n address: string\n network: Networkish\n name: string\n startBlock: bigint\n endBlock?: bigint\n}\n\nexport class AccountBindOptions {\n address: string\n network?: Networkish\n startBlock?: bigint | number\n}\n"]}
1
+ {"version":3,"file":"bind-options.js","sourceRoot":"","sources":["../../src/core/bind-options.ts"],"names":[],"mappings":";;;AAAA,gDAAsD;AAEtD,MAAa,WAAW;IACtB,mBAAmB;IACnB,OAAO,CAAQ;IACf,6CAA6C;IAC7C,OAAO,GAAgB,CAAC,CAAA;IACxB,2CAA2C;IAC3C,IAAI,CAAS;IACb,UAAU,CAAkB;IAC5B,QAAQ,CAAkB;CAC3B;AATD,kCASC;AAED,SAAgB,mBAAmB,CAAC,IAAiB;IACnD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1B,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,GAAG,CAAC,IAAI,CAAC,mBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;KACxD;IACD,IAAI,IAAI,CAAC,IAAI,EAAE;QACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACpB;IACD,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;KACrC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;KACnC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC;AAfD,kDAeC;AAED,MAAa,mBAAmB;IAC9B,OAAO,CAAQ;IACf,OAAO,CAAY;IACnB,IAAI,CAAQ;IACZ,UAAU,CAAQ;IAClB,QAAQ,CAAS;CAClB;AAND,kDAMC;AAED,MAAa,kBAAkB;IAC7B,OAAO,CAAQ;IACf,OAAO,CAAa;IACpB,UAAU,CAAkB;CAC7B;AAJD,gDAIC","sourcesContent":["import { Networkish, Network } from 'ethers/providers'\n\nexport class BindOptions {\n // Contract address\n address: string\n // Optional, if not set, then use eth mainnet\n network?: Networkish = 1\n // Optional, override default contract name\n name?: string\n startBlock?: bigint | number\n endBlock?: bigint | number\n}\n\nexport function getOptionsSignature(opts: BindOptions): string {\n const sig = [opts.address]\n if (opts.network) {\n sig.push(Network.from(opts.network).chainId.toString())\n }\n if (opts.name) {\n sig.push(opts.name)\n }\n if (opts.startBlock) {\n sig.push(opts.startBlock.toString())\n }\n if (opts.endBlock) {\n sig.push(opts.endBlock.toString())\n }\n return sig.join('_')\n}\n\nexport class BindInternalOptions {\n address: string\n network: Networkish\n name: string\n startBlock: bigint\n endBlock?: bigint\n}\n\nexport class AccountBindOptions {\n address: string\n network?: Networkish\n startBlock?: bigint | number\n}\n"]}
@@ -1,10 +1,9 @@
1
+ import { BaseContract, Transaction, TransactionReceipt, Block, ContractEvent } from 'ethers';
2
+ import { LogParams } from 'ethers/providers';
1
3
  import { RecordMetaData } from '@sentio/protos';
2
- import { BaseContract, EventFilter, Transaction } from 'ethers';
3
- import { Block, Log } from '@ethersproject/abstract-provider';
4
- import { Trace } from './trace';
4
+ import { Trace } from '../eth/trace';
5
5
  import { Labels } from './metadata';
6
6
  import { BaseContext } from './base-context';
7
- import { TransactionReceipt } from '@ethersproject/providers';
8
7
  export declare abstract class EthContext extends BaseContext {
9
8
  chainId: number;
10
9
  address: string;
@@ -16,7 +15,7 @@ export declare abstract class EthContext extends BaseContext {
16
15
  transaction?: Transaction;
17
16
  transactionReceipt?: TransactionReceipt;
18
17
  timestamp: Date;
19
- constructor(chainId: number, address: string, timestamp?: Date, block?: Block, log?: Log, trace?: Trace, transaction?: Transaction, transactionReceipt?: TransactionReceipt);
18
+ constructor(chainId: number, address: string, timestamp?: Date, block?: Block, log?: LogParams, trace?: Trace, transaction?: Transaction, transactionReceipt?: TransactionReceipt);
20
19
  protected abstract getContractName(): string;
21
20
  getMetaData(name: string, labels: Labels): RecordMetaData;
22
21
  }
@@ -26,27 +25,22 @@ export declare class AccountContext extends EthContext {
26
25
  export declare class ContractContext<TContract extends BaseContract, TContractBoundView extends BoundContractView<TContract, ContractView<TContract>>> extends EthContext {
27
26
  contract: TContractBoundView;
28
27
  contractName: string;
29
- constructor(contractName: string, view: TContractBoundView, chainId: number, timestamp?: Date, block?: Block, log?: Log, trace?: Trace, transaction?: Transaction, transactionReceipt?: TransactionReceipt);
28
+ constructor(contractName: string, view: TContractBoundView, chainId: number, timestamp?: Date, block?: Block, log?: LogParams, trace?: Trace, transaction?: Transaction, transactionReceipt?: TransactionReceipt);
30
29
  protected getContractName(): string;
31
30
  }
32
31
  export declare class ContractView<TContract extends BaseContract> {
33
- filters: {
34
- [name: string]: (...args: Array<any>) => EventFilter;
35
- };
36
32
  protected contract: TContract;
37
33
  constructor(contract: TContract);
38
34
  get rawContract(): TContract;
39
- get provider(): import("@ethersproject/abstract-provider").Provider;
35
+ get provider(): import("ethers").Provider | null | undefined;
40
36
  }
41
37
  export declare class BoundContractView<TContract extends BaseContract, TContractView extends ContractView<TContract>> {
42
38
  protected view: TContractView;
43
39
  context: ContractContext<TContract, BoundContractView<TContract, TContractView>>;
44
40
  constructor(view: TContractView);
45
41
  get rawContract(): TContract;
46
- get provider(): import("@ethersproject/abstract-provider").Provider;
47
- get filters(): {
48
- [name: string]: (...args: any[]) => EventFilter;
49
- };
42
+ get provider(): import("ethers").Provider | null | undefined;
43
+ get filters(): Record<string, ContractEvent<any[]>>;
50
44
  }
51
45
  export declare class SuiContext extends BaseContext {
52
46
  address: string;
@@ -45,7 +45,7 @@ class EthContext extends base_context_1.BaseContext {
45
45
  blockNumber: BigInt(this.blockNumber),
46
46
  transactionIndex: this.log.transactionIndex,
47
47
  transactionHash: this.transactionHash || '',
48
- logIndex: this.log.logIndex,
48
+ logIndex: this.log.index,
49
49
  chainId: this.chainId.toString(),
50
50
  name: name,
51
51
  labels: (0, meter_1.normalizeLabels)(labels),
@@ -94,7 +94,10 @@ class ContractContext extends EthContext {
94
94
  contract;
95
95
  contractName;
96
96
  constructor(contractName, view, chainId, timestamp, block, log, trace, transaction, transactionReceipt) {
97
- super(chainId, view.rawContract.address, timestamp, block, log, trace, transaction, transactionReceipt);
97
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
98
+ // @ts-ignore
99
+ const address = view.rawContract.getAddress();
100
+ super(chainId, address, timestamp, block, log, trace, transaction, transactionReceipt);
98
101
  view.context = this;
99
102
  this.contractName = contractName;
100
103
  this.contract = view;
@@ -105,17 +108,15 @@ class ContractContext extends EthContext {
105
108
  }
106
109
  exports.ContractContext = ContractContext;
107
110
  class ContractView {
108
- filters;
109
111
  contract;
110
112
  constructor(contract) {
111
113
  this.contract = contract;
112
- this.filters = contract.filters;
113
114
  }
114
115
  get rawContract() {
115
116
  return this.contract;
116
117
  }
117
118
  get provider() {
118
- return this.contract.provider;
119
+ return this.contract.runner?.provider;
119
120
  }
120
121
  }
121
122
  exports.ContractView = ContractView;
@@ -133,7 +134,7 @@ class BoundContractView {
133
134
  return this.view.provider;
134
135
  }
135
136
  get filters() {
136
- return this.view.filters;
137
+ return this.view.rawContract.filters;
137
138
  }
138
139
  }
139
140
  exports.BoundContractView = BoundContractView;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":";;;AAGA,mCAAyC;AAGzC,0CAA0C;AAC1C,iDAA4C;AAG5C,MAAsB,UAAW,SAAQ,0BAAW;IAClD,OAAO,CAAQ;IACf,OAAO,CAAQ;IACE,GAAG,CAAM;IAC1B,KAAK,CAAQ;IACI,KAAK,CAAQ;IAC9B,WAAW,CAAiB;IAC5B,eAAe,CAAS;IACxB,WAAW,CAAc;IACzB,kBAAkB,CAAqB;IACvC,SAAS,CAAM;IAEf,YACE,OAAe,EACf,OAAe,EACf,SAAgB,EAChB,KAAa,EACb,GAAS,EACT,KAAa,EACb,WAAyB,EACzB,kBAAuC;QAEvC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;QACzC,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;YAClC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAA;SAC3C;aAAM,IAAI,KAAK,EAAE;YAChB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAA;SAChC;aAAM,IAAI,KAAK,EAAE;YAChB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;YACpC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAA;SAC7C;IACH,CAAC;IAID,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;gBACpC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACrC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB;gBAC3C,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;gBAC3C,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAChC,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAA,uBAAe,EAAC,MAAM,CAAC;aAChC,CAAA;SACF;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;gBACpC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACrC,gBAAgB,EAAE,CAAC,CAAC;gBACpB,eAAe,EAAE,EAAE;gBACnB,QAAQ,EAAE,CAAC,CAAC;gBACZ,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAChC,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAA,uBAAe,EAAC,MAAM,CAAC;aAChC,CAAA;SACF;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;gBACpC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACrC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB;gBAChD,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;gBAC3C,QAAQ,EAAE,CAAC,CAAC;gBACZ,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAChC,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAA,uBAAe,EAAC,MAAM,CAAC;aAChC,CAAA;SACF;QACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;CACF;AAtFD,gCAsFC;AAED,MAAa,cAAe,SAAQ,UAAU;IAC5C,2FAA2F;IAC3F,4DAA4D;IAC5D,IAAI;IACM,eAAe;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAPD,wCAOC;AAED,MAAa,eAGX,SAAQ,UAAU;IAClB,QAAQ,CAAoB;IAC5B,YAAY,CAAQ;IAEpB,YACE,YAAoB,EACpB,IAAwB,EACxB,OAAe,EACf,SAAgB,EAChB,KAAa,EACb,GAAS,EACT,KAAa,EACb,WAAyB,EACzB,kBAAuC;QAEvC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAA;QACvG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;IACtB,CAAC;IAES,eAAe;QACvB,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;CACF;AA3BD,0CA2BC;AAED,MAAa,YAAY;IACvB,OAAO,CAA0D;IACvD,QAAQ,CAAW;IAE7B,YAAY,QAAmB;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;IACjC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAA;IAC/B,CAAC;CACF;AAhBD,oCAgBC;AAED,MAAa,iBAAiB;IAClB,IAAI,CAAe;IAC7B,8EAA8E;IAC9E,OAAO,CAAyE;IAEhF,YAAY,IAAmB;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;IAC3B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA;IAC1B,CAAC;CACF;AApBD,8CAoBC;AAED,MAAa,UAAW,SAAQ,0BAAW;IACzC,OAAO,CAAQ;IACf,UAAU,CAAQ;IAClB,WAAW,CAAQ;IAEnB,YAAY,OAAe,EAAE,IAAY;QACvC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,iBAAS,CAAC,UAAU;YAC7B,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,IAAA,uBAAe,EAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF;AAxBD,gCAwBC","sourcesContent":["import { RecordMetaData } from '@sentio/protos'\nimport { BaseContract, EventFilter, Transaction } from 'ethers'\nimport { Block, Log } from '@ethersproject/abstract-provider'\nimport { normalizeLabels } from './meter'\nimport { Trace } from './trace'\nimport { Labels } from './metadata'\nimport { CHAIN_IDS } from '../utils/chain'\nimport { BaseContext } from './base-context'\nimport { TransactionReceipt } from '@ethersproject/providers'\n\nexport abstract class EthContext extends BaseContext {\n chainId: number\n address: string\n private readonly log?: Log\n block?: Block\n private readonly trace?: Trace\n blockNumber: bigint | number\n transactionHash?: string\n transaction?: Transaction\n transactionReceipt?: TransactionReceipt\n timestamp: Date\n\n constructor(\n chainId: number,\n address: string,\n timestamp?: Date,\n block?: Block,\n log?: Log,\n trace?: Trace,\n transaction?: Transaction,\n transactionReceipt?: TransactionReceipt\n ) {\n super()\n this.chainId = chainId\n this.log = log\n this.block = block\n this.trace = trace\n this.address = address\n this.transaction = transaction\n this.transactionReceipt = transactionReceipt\n this.timestamp = timestamp || new Date(0)\n if (log) {\n this.blockNumber = log.blockNumber\n this.transactionHash = log.transactionHash\n } else if (block) {\n this.blockNumber = block.number\n } else if (trace) {\n this.blockNumber = trace.blockNumber\n this.transactionHash = trace.transactionHash\n }\n }\n\n protected abstract getContractName(): string\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n if (this.log) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: this.log.transactionIndex,\n transactionHash: this.transactionHash || '',\n logIndex: this.log.logIndex,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n if (this.block) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: -1,\n transactionHash: '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n if (this.trace) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: this.trace.transactionPosition,\n transactionHash: this.transactionHash || '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n throw new Error(\"Invaid ctx argument can't happen\")\n }\n}\n\nexport class AccountContext extends EthContext {\n // constructor(chainId: number, address: string, block?: Block, log?: Log, trace?: Trace) {\n // super(chainId, address, new Date(0), block, log, trace)\n // }\n protected getContractName(): string {\n return 'account'\n }\n}\n\nexport class ContractContext<\n TContract extends BaseContract,\n TContractBoundView extends BoundContractView<TContract, ContractView<TContract>>\n> extends EthContext {\n contract: TContractBoundView\n contractName: string\n\n constructor(\n contractName: string,\n view: TContractBoundView,\n chainId: number,\n timestamp?: Date,\n block?: Block,\n log?: Log,\n trace?: Trace,\n transaction?: Transaction,\n transactionReceipt?: TransactionReceipt\n ) {\n super(chainId, view.rawContract.address, timestamp, block, log, trace, transaction, transactionReceipt)\n view.context = this\n this.contractName = contractName\n this.contract = view\n }\n\n protected getContractName(): string {\n return this.contractName\n }\n}\n\nexport class ContractView<TContract extends BaseContract> {\n filters: { [name: string]: (...args: Array<any>) => EventFilter }\n protected contract: TContract\n\n constructor(contract: TContract) {\n this.contract = contract\n this.filters = contract.filters\n }\n\n get rawContract() {\n return this.contract\n }\n\n get provider() {\n return this.contract.provider\n }\n}\n\nexport class BoundContractView<TContract extends BaseContract, TContractView extends ContractView<TContract>> {\n protected view: TContractView\n // context will be set right after context creation (in context's constructor)\n context: ContractContext<TContract, BoundContractView<TContract, TContractView>>\n\n constructor(view: TContractView) {\n this.view = view\n }\n\n get rawContract() {\n return this.view.rawContract\n }\n\n get provider() {\n return this.view.provider\n }\n\n get filters() {\n return this.view.filters\n }\n}\n\nexport class SuiContext extends BaseContext {\n address: string\n moduleName: string\n blockNumber: bigint\n\n constructor(address: string, slot: bigint) {\n super()\n this.address = address\n this.blockNumber = slot\n }\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.blockNumber,\n transactionIndex: 0,\n transactionHash: '', // TODO\n logIndex: 0,\n chainId: CHAIN_IDS.SUI_DEVNET, // TODO set in context\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseContract, Transaction, TransactionReceipt, Block, ContractEvent } from 'ethers'\nimport { LogParams } from 'ethers/providers'\n\nimport { RecordMetaData } from '@sentio/protos'\nimport { normalizeLabels } from './meter'\nimport { Trace } from '../eth/trace'\nimport { Labels } from './metadata'\nimport { CHAIN_IDS } from '../utils/chain'\nimport { BaseContext } from './base-context'\n\nexport abstract class EthContext extends BaseContext {\n chainId: number\n address: string\n private readonly log?: LogParams\n block?: Block\n private readonly trace?: Trace\n blockNumber: bigint | number\n transactionHash?: string\n transaction?: Transaction\n transactionReceipt?: TransactionReceipt\n timestamp: Date\n\n constructor(\n chainId: number,\n address: string,\n timestamp?: Date,\n block?: Block,\n log?: LogParams,\n trace?: Trace,\n transaction?: Transaction,\n transactionReceipt?: TransactionReceipt\n ) {\n super()\n this.chainId = chainId\n this.log = log\n this.block = block\n this.trace = trace\n this.address = address\n this.transaction = transaction\n this.transactionReceipt = transactionReceipt\n this.timestamp = timestamp || new Date(0)\n if (log) {\n this.blockNumber = log.blockNumber\n this.transactionHash = log.transactionHash\n } else if (block) {\n this.blockNumber = block.number\n } else if (trace) {\n this.blockNumber = trace.blockNumber\n this.transactionHash = trace.transactionHash\n }\n }\n\n protected abstract getContractName(): string\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n if (this.log) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: this.log.transactionIndex,\n transactionHash: this.transactionHash || '',\n logIndex: this.log.index,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n if (this.block) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: -1,\n transactionHash: '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n if (this.trace) {\n return {\n address: this.address,\n contractName: this.getContractName(),\n blockNumber: BigInt(this.blockNumber),\n transactionIndex: this.trace.transactionPosition,\n transactionHash: this.transactionHash || '',\n logIndex: -1,\n chainId: this.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n throw new Error(\"Invaid ctx argument can't happen\")\n }\n}\n\nexport class AccountContext extends EthContext {\n // constructor(chainId: number, address: string, block?: Block, log?: Log, trace?: Trace) {\n // super(chainId, address, new Date(0), block, log, trace)\n // }\n protected getContractName(): string {\n return 'account'\n }\n}\n\nexport class ContractContext<\n TContract extends BaseContract,\n TContractBoundView extends BoundContractView<TContract, ContractView<TContract>>\n> extends EthContext {\n contract: TContractBoundView\n contractName: string\n\n constructor(\n contractName: string,\n view: TContractBoundView,\n chainId: number,\n timestamp?: Date,\n block?: Block,\n log?: LogParams,\n trace?: Trace,\n transaction?: Transaction,\n transactionReceipt?: TransactionReceipt\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const address = view.rawContract.getAddress() as string\n super(chainId, address, timestamp, block, log, trace, transaction, transactionReceipt)\n view.context = this\n this.contractName = contractName\n this.contract = view\n }\n\n protected getContractName(): string {\n return this.contractName\n }\n}\n\nexport class ContractView<TContract extends BaseContract> {\n protected contract: TContract\n\n constructor(contract: TContract) {\n this.contract = contract\n }\n\n get rawContract() {\n return this.contract\n }\n\n get provider() {\n return this.contract.runner?.provider\n }\n}\n\nexport class BoundContractView<TContract extends BaseContract, TContractView extends ContractView<TContract>> {\n protected view: TContractView\n // context will be set right after context creation (in context's constructor)\n context: ContractContext<TContract, BoundContractView<TContract, TContractView>>\n\n constructor(view: TContractView) {\n this.view = view\n }\n\n get rawContract() {\n return this.view.rawContract\n }\n\n get provider() {\n return this.view.provider\n }\n\n get filters() {\n return this.view.rawContract.filters\n }\n}\n\nexport class SuiContext extends BaseContext {\n address: string\n moduleName: string\n blockNumber: bigint\n\n constructor(address: string, slot: bigint) {\n super()\n this.address = address\n this.blockNumber = slot\n }\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.blockNumber,\n transactionIndex: 0,\n transactionHash: '', // TODO\n logIndex: 0,\n chainId: CHAIN_IDS.SUI_DEVNET, // TODO set in context\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n}\n"]}
@@ -2,5 +2,5 @@ import { Plugin } from '@sentio/runtime';
2
2
  import { ProcessConfigResponse } from '@sentio/protos';
3
3
  export declare class CorePlugin extends Plugin {
4
4
  name: string;
5
- configure(config: ProcessConfigResponse): void;
5
+ configure(config: ProcessConfigResponse): Promise<void>;
6
6
  }
@@ -7,7 +7,7 @@ const event_tracker_1 = require("./event-tracker");
7
7
  const exporter_1 = require("./exporter");
8
8
  class CorePlugin extends runtime_1.Plugin {
9
9
  name = 'CorePlugin';
10
- configure(config) {
10
+ async configure(config) {
11
11
  // part 0, prepare metrics and event tracking configs
12
12
  for (const metric of meter_1.MetricState.INSTANCE.getValues()) {
13
13
  config.metricConfigs.push({
@@ -1 +1 @@
1
- {"version":3,"file":"core-plugin.js","sourceRoot":"","sources":["../../src/core/core-plugin.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAGvD,mCAAqC;AACrC,mDAAmD;AACnD,yCAA0C;AAE1C,MAAa,UAAW,SAAQ,gBAAM;IACpC,IAAI,GAAW,YAAY,CAAA;IAE3B,SAAS,CAAC,MAA6B;QACrC,qDAAqD;QACrD,KAAK,MAAM,MAAM,IAAI,mBAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACrD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxB,GAAG,MAAM,CAAC,MAAM;aACjB,CAAC,CAAA;SACH;QAED,KAAK,MAAM,YAAY,IAAI,iCAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC/B,yBAAyB,EAAE,YAAY,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE;gBACpE,SAAS,EAAE,YAAY,CAAC,IAAI;gBAC5B,eAAe,EAAE,SAAS;gBAC1B,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK;gBACpD,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK;aAC7C,CAAC,CAAA;SACH;QAED,KAAK,MAAM,QAAQ,IAAI,wBAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACzD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAA;SACH;IACH,CAAC;CACF;AA7BD,gCA6BC;AAED,uBAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager } from '@sentio/runtime'\nimport { ProcessConfigResponse } from '@sentio/protos'\n\nimport { MetricState } from './meter'\nimport { EventTrackerState } from './event-tracker'\nimport { ExporterState } from './exporter'\n\nexport class CorePlugin extends Plugin {\n name: string = 'CorePlugin'\n\n configure(config: ProcessConfigResponse): void {\n // part 0, prepare metrics and event tracking configs\n for (const metric of MetricState.INSTANCE.getValues()) {\n config.metricConfigs.push({\n ...metric.config,\n })\n }\n\n for (const eventTracker of EventTrackerState.INSTANCE.getValues()) {\n config.eventTrackingConfigs.push({\n distinctAggregationByDays: eventTracker.options.distinctByDays || [],\n eventName: eventTracker.name,\n retentionConfig: undefined,\n totalByDay: eventTracker.options.totalByDay || false,\n totalPerEntity: undefined,\n unique: eventTracker.options.unique || false,\n })\n }\n\n for (const exporter of ExporterState.INSTANCE.getValues()) {\n config.exportConfigs.push({\n name: exporter.name,\n channel: exporter.channel,\n })\n }\n }\n}\n\nPluginManager.INSTANCE.register(new CorePlugin())\n"]}
1
+ {"version":3,"file":"core-plugin.js","sourceRoot":"","sources":["../../src/core/core-plugin.ts"],"names":[],"mappings":";;;AAAA,6CAAuD;AAGvD,mCAAqC;AACrC,mDAAmD;AACnD,yCAA0C;AAE1C,MAAa,UAAW,SAAQ,gBAAM;IACpC,IAAI,GAAW,YAAY,CAAA;IAE3B,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,qDAAqD;QACrD,KAAK,MAAM,MAAM,IAAI,mBAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACrD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxB,GAAG,MAAM,CAAC,MAAM;aACjB,CAAC,CAAA;SACH;QAED,KAAK,MAAM,YAAY,IAAI,iCAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC/B,yBAAyB,EAAE,YAAY,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE;gBACpE,SAAS,EAAE,YAAY,CAAC,IAAI;gBAC5B,eAAe,EAAE,SAAS;gBAC1B,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK;gBACpD,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK;aAC7C,CAAC,CAAA;SACH;QAED,KAAK,MAAM,QAAQ,IAAI,wBAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACzD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAA;SACH;IACH,CAAC;CACF;AA7BD,gCA6BC;AAED,uBAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager } from '@sentio/runtime'\nimport { ProcessConfigResponse } from '@sentio/protos'\n\nimport { MetricState } from './meter'\nimport { EventTrackerState } from './event-tracker'\nimport { ExporterState } from './exporter'\n\nexport class CorePlugin extends Plugin {\n name: string = 'CorePlugin'\n\n async configure(config: ProcessConfigResponse): Promise<void> {\n // part 0, prepare metrics and event tracking configs\n for (const metric of MetricState.INSTANCE.getValues()) {\n config.metricConfigs.push({\n ...metric.config,\n })\n }\n\n for (const eventTracker of EventTrackerState.INSTANCE.getValues()) {\n config.eventTrackingConfigs.push({\n distinctAggregationByDays: eventTracker.options.distinctByDays || [],\n eventName: eventTracker.name,\n retentionConfig: undefined,\n totalByDay: eventTracker.options.totalByDay || false,\n totalPerEntity: undefined,\n unique: eventTracker.options.unique || false,\n })\n }\n\n for (const exporter of ExporterState.INSTANCE.getValues()) {\n config.exportConfigs.push({\n name: exporter.name,\n channel: exporter.channel,\n })\n }\n }\n}\n\nPluginManager.INSTANCE.register(new CorePlugin())\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"generic-processor.test.js","sourceRoot":"","sources":["../../src/core/generic-processor.test.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO move out of this package\n\nimport { expect } from 'chai'\n\nimport { HandlerType } from '@sentio/protos'\n\nimport { GenericProcessor } from './generic-processor'\nimport { TestProcessorServer, firstCounterValue } from '../testing'\n\ndescribe('Test Generic Processor', () => {\n const service = new TestProcessorServer(() => {\n GenericProcessor.bind(\n [\n 'event Transfer(address indexed from, address indexed to, uint256 value)',\n 'event Approval(address indexed from, address indexed to, uint256 value)',\n ],\n { address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9' }\n ).onAllEvents(function (log, ctx) {\n ctx.meter.Counter('event_num').add(1)\n })\n\n GenericProcessor.bind('event WalletCreated(address wallet, address owner)', {\n address: '0x57E037F4d2c8BEa011Ad8a9A5AF4AaEEd508650f',\n }).onAllEvents(function (log, ctx) {\n ctx.meter.Counter('wallet').add(1)\n })\n })\n\n beforeAll(async () => {\n await service.start()\n })\n\n test('check configuration', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(2)\n expect(config.contractConfigs?.[0].contract?.name).equals('Generic')\n })\n\n test('Check log dispatch', async () => {\n const res = await service.testLogs([logData, logData])\n const counters = res.result?.counters\n expect(counters).length(2)\n expect(firstCounterValue(res.result, 'event_num')).equals(1n)\n expect(counters?.[0].runtimeInfo?.from).equals(HandlerType.ETH_LOG)\n })\n\n test('Check log dispatch no buffer over rune', async () => {\n const logStr =\n '{\"address\":\"0x57e037f4d2c8bea011ad8a9a5af4aaeed508650f\",\"topics\":[\"0x5b03bfed1c14a02bdeceb5fa582eb1a5765fc0bc64ca0e6af4c20afc9487f081\"],\"data\":\"0x00000000000000000000000093269483a70c68d5c5bb63aac1e8f4ac59f498800000000000000000000000000c520e51c055cf63bab075715c1b860b2e9b8e24\",\"blockNumber\":\"0xc9d6d7\",\"transactionHash\":\"0x208af3250499672c2f07138b9aa236153c65c78ae4341b23c2763017afdd61a2\",\"transactionIndex\":\"0xf3\",\"blockHash\":\"0x6e3b100c34b510049e922fbe1c1dab1b0793be3d1229b632688e6a518cdd11b6\",\"logIndex\":\"0x14b\",\"removed\":false}'\n const res = await service.testLog(JSON.parse(logStr))\n console.log(JSON.stringify(res))\n })\n\n const logData = {\n blockNumber: 14213252,\n blockHash: '0x83d646fac9350b281def8c4c37626f9d8efc95df801287b848c719edf35cdbaf',\n transactionIndex: 347,\n removed: false,\n address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9',\n data: '0x00000000000000000000000000000000000000000000009a71db64810aaa0000',\n topics: [\n '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n '0x0000000000000000000000000000000000000000000000000000000000000000',\n '0x000000000000000000000000b329e39ebefd16f40d38f07643652ce17ca5bac1',\n ],\n transactionHash: '0x93355e0cb2c3490cb8a747029ff2dc8cdbde2407025b8391398436955afae303',\n logIndex: 428,\n }\n})\n"]}
1
+ {"version":3,"file":"generic-processor.test.js","sourceRoot":"","sources":["../../src/core/generic-processor.test.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO move out of this package\n\nimport { expect } from 'chai'\n\nimport { HandlerType } from '@sentio/protos'\n\nimport { GenericProcessor } from '../eth/generic-processor'\nimport { TestProcessorServer, firstCounterValue } from '../testing'\n\ndescribe('Test Generic Processor', () => {\n const service = new TestProcessorServer(() => {\n GenericProcessor.bind(\n [\n 'event Transfer(address indexed from, address indexed to, uint256 value)',\n 'event Approval(address indexed from, address indexed to, uint256 value)',\n ],\n { address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9' }\n ).onAllEvents(function (log, ctx) {\n ctx.meter.Counter('event_num').add(1)\n })\n\n GenericProcessor.bind('event WalletCreated(address wallet, address owner)', {\n address: '0x57E037F4d2c8BEa011Ad8a9A5AF4AaEEd508650f',\n }).onAllEvents(function (log, ctx) {\n ctx.meter.Counter('wallet').add(1)\n })\n })\n\n beforeAll(async () => {\n await service.start()\n })\n\n test('check configuration', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(2)\n expect(config.contractConfigs?.[0].contract?.name).equals('Generic')\n })\n\n test('Check log dispatch', async () => {\n const res = await service.testLogs([logData, logData])\n const counters = res.result?.counters\n expect(counters).length(2)\n expect(firstCounterValue(res.result, 'event_num')).equals(1)\n expect(counters?.[0].runtimeInfo?.from).equals(HandlerType.ETH_LOG)\n })\n\n test('Check log dispatch no buffer over rune', async () => {\n const logStr =\n '{\"address\":\"0x57e037f4d2c8bea011ad8a9a5af4aaeed508650f\",\"topics\":[\"0x5b03bfed1c14a02bdeceb5fa582eb1a5765fc0bc64ca0e6af4c20afc9487f081\"],\"data\":\"0x00000000000000000000000093269483a70c68d5c5bb63aac1e8f4ac59f498800000000000000000000000000c520e51c055cf63bab075715c1b860b2e9b8e24\",\"blockNumber\":\"0xc9d6d7\",\"transactionHash\":\"0x208af3250499672c2f07138b9aa236153c65c78ae4341b23c2763017afdd61a2\",\"transactionIndex\":\"0xf3\",\"blockHash\":\"0x6e3b100c34b510049e922fbe1c1dab1b0793be3d1229b632688e6a518cdd11b6\",\"logIndex\":\"0x14b\",\"removed\":false}'\n const res = await service.testLog(JSON.parse(logStr))\n console.log(JSON.stringify(res))\n })\n\n const logData = {\n index: 0,\n blockNumber: 14213252,\n blockHash: '0x83d646fac9350b281def8c4c37626f9d8efc95df801287b848c719edf35cdbaf',\n transactionIndex: 347,\n removed: false,\n address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9',\n data: '0x00000000000000000000000000000000000000000000009a71db64810aaa0000',\n topics: [\n '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n '0x0000000000000000000000000000000000000000000000000000000000000000',\n '0x000000000000000000000000b329e39ebefd16f40d38f07643652ce17ca5bac1',\n ],\n transactionHash: '0x93355e0cb2c3490cb8a747029ff2dc8cdbde2407025b8391398436955afae303',\n logIndex: 428,\n }\n})\n"]}
@@ -4,11 +4,6 @@ export { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } fr
4
4
  export { EventTracker, AccountEventTracker } from './event-tracker';
5
5
  export { type Numberish, toBigInteger, toMetricValue, toBlockTag } from './numberish';
6
6
  export { BindOptions } from './bind-options';
7
- export { BaseProcessor } from './base-processor';
8
- export { GenericProcessor } from './generic-processor';
9
- export { BaseProcessorTemplate } from './base-processor-template';
10
7
  export { SuiBaseProcessor, SuiBindOptions } from './sui-processor';
11
- export type { TypedCallTrace, Trace } from './trace';
12
- export { EthPlugin } from './eth-plugin';
13
8
  export { SuiPlugin } from './sui-plugin';
14
9
  export { CorePlugin } from './core-plugin';
package/lib/core/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CorePlugin = exports.SuiPlugin = exports.EthPlugin = exports.SuiBindOptions = exports.SuiBaseProcessor = exports.BaseProcessorTemplate = exports.GenericProcessor = exports.BaseProcessor = exports.BindOptions = exports.toBlockTag = exports.toMetricValue = exports.toBigInteger = exports.AccountEventTracker = exports.EventTracker = exports.MetricOptions = exports.Gauge = exports.Counter = exports.GaugeBinding = exports.Meter = exports.CounterBinding = exports.BoundContractView = exports.ContractView = exports.ContractContext = exports.BigDecimal = void 0;
3
+ exports.CorePlugin = exports.SuiPlugin = exports.SuiBindOptions = exports.SuiBaseProcessor = exports.BindOptions = exports.toBlockTag = exports.toMetricValue = exports.toBigInteger = exports.AccountEventTracker = exports.EventTracker = exports.MetricOptions = exports.Gauge = exports.Counter = exports.GaugeBinding = exports.Meter = exports.CounterBinding = exports.BoundContractView = exports.ContractView = exports.ContractContext = exports.BigDecimal = void 0;
4
4
  var big_decimal_1 = require("./big-decimal");
5
5
  Object.defineProperty(exports, "BigDecimal", { enumerable: true, get: function () { return big_decimal_1.BigDecimal; } });
6
6
  var context_1 = require("./context");
@@ -23,17 +23,9 @@ Object.defineProperty(exports, "toMetricValue", { enumerable: true, get: functio
23
23
  Object.defineProperty(exports, "toBlockTag", { enumerable: true, get: function () { return numberish_1.toBlockTag; } });
24
24
  var bind_options_1 = require("./bind-options");
25
25
  Object.defineProperty(exports, "BindOptions", { enumerable: true, get: function () { return bind_options_1.BindOptions; } });
26
- var base_processor_1 = require("./base-processor");
27
- Object.defineProperty(exports, "BaseProcessor", { enumerable: true, get: function () { return base_processor_1.BaseProcessor; } });
28
- var generic_processor_1 = require("./generic-processor");
29
- Object.defineProperty(exports, "GenericProcessor", { enumerable: true, get: function () { return generic_processor_1.GenericProcessor; } });
30
- var base_processor_template_1 = require("./base-processor-template");
31
- Object.defineProperty(exports, "BaseProcessorTemplate", { enumerable: true, get: function () { return base_processor_template_1.BaseProcessorTemplate; } });
32
26
  var sui_processor_1 = require("./sui-processor");
33
27
  Object.defineProperty(exports, "SuiBaseProcessor", { enumerable: true, get: function () { return sui_processor_1.SuiBaseProcessor; } });
34
28
  Object.defineProperty(exports, "SuiBindOptions", { enumerable: true, get: function () { return sui_processor_1.SuiBindOptions; } });
35
- var eth_plugin_1 = require("./eth-plugin");
36
- Object.defineProperty(exports, "EthPlugin", { enumerable: true, get: function () { return eth_plugin_1.EthPlugin; } });
37
29
  var sui_plugin_1 = require("./sui-plugin");
38
30
  Object.defineProperty(exports, "SuiPlugin", { enumerable: true, get: function () { return sui_plugin_1.SuiPlugin; } });
39
31
  var core_plugin_1 = require("./core-plugin");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,qCAA4E;AAAnE,0GAAA,eAAe,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AACzD,iCAA4F;AAAnF,uGAAA,cAAc,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,gGAAA,OAAO,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC3E,iDAAmE;AAA1D,6GAAA,YAAY,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC1C,yCAAqF;AAA5D,yGAAA,YAAY,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAEhE,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AAEpB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA;AACzB,qEAAiE;AAAxD,gIAAA,qBAAqB,OAAA;AAC9B,iDAAkE;AAAzD,iHAAA,gBAAgB,OAAA;AAAE,+GAAA,cAAc,OAAA;AAIzC,2CAAwC;AAA/B,uGAAA,SAAS,OAAA;AAClB,2CAAwC;AAA/B,uGAAA,SAAS,OAAA;AAClB,6CAA0C;AAAjC,yGAAA,UAAU,OAAA","sourcesContent":["export { BigDecimal } from './big-decimal'\nexport { ContractContext, ContractView, BoundContractView } from './context'\nexport { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter'\nexport { EventTracker, AccountEventTracker } from './event-tracker'\nexport { type Numberish, toBigInteger, toMetricValue, toBlockTag } from './numberish'\n\nexport { BindOptions } from './bind-options'\n\nexport { BaseProcessor } from './base-processor'\nexport { GenericProcessor } from './generic-processor'\nexport { BaseProcessorTemplate } from './base-processor-template'\nexport { SuiBaseProcessor, SuiBindOptions } from './sui-processor'\n\nexport type { TypedCallTrace, Trace } from './trace'\n\nexport { EthPlugin } from './eth-plugin'\nexport { SuiPlugin } from './sui-plugin'\nexport { CorePlugin } from './core-plugin'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,qCAA4E;AAAnE,0GAAA,eAAe,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AACzD,iCAA4F;AAAnF,uGAAA,cAAc,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,gGAAA,OAAO,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC3E,iDAAmE;AAA1D,6GAAA,YAAY,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC1C,yCAAqF;AAA5D,yGAAA,YAAY,OAAA;AAAE,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAEhE,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AAEpB,iDAAkE;AAAzD,iHAAA,gBAAgB,OAAA;AAAE,+GAAA,cAAc,OAAA;AAEzC,2CAAwC;AAA/B,uGAAA,SAAS,OAAA;AAClB,6CAA0C;AAAjC,yGAAA,UAAU,OAAA","sourcesContent":["export { BigDecimal } from './big-decimal'\nexport { ContractContext, ContractView, BoundContractView } from './context'\nexport { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter'\nexport { EventTracker, AccountEventTracker } from './event-tracker'\nexport { type Numberish, toBigInteger, toMetricValue, toBlockTag } from './numberish'\n\nexport { BindOptions } from './bind-options'\n\nexport { SuiBaseProcessor, SuiBindOptions } from './sui-processor'\n\nexport { SuiPlugin } from './sui-plugin'\nexport { CorePlugin } from './core-plugin'\n"]}
@@ -1,8 +1,7 @@
1
- import { BigNumber } from 'ethers';
2
1
  import { BigInteger, MetricValue } from '@sentio/protos';
3
2
  import { BigDecimal } from '.';
4
- import { BlockTag } from '@ethersproject/providers';
5
- export type Numberish = number | BigNumber | bigint | BigDecimal | string;
3
+ import { BlockTag } from 'ethers/providers';
4
+ export type Numberish = number | bigint | BigDecimal | string;
6
5
  export declare function toBlockTag(a: number | bigint): BlockTag;
7
6
  export declare function toMetricValue(value: Numberish): MetricValue;
8
7
  export declare function toBigInteger(a: Numberish): BigInteger;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toBigInteger = exports.toMetricValue = exports.toBlockTag = void 0;
4
- const ethers_1 = require("ethers");
5
4
  const protos_1 = require("@sentio/protos");
6
5
  const _1 = require(".");
7
6
  function toBlockTag(a) {
@@ -15,52 +14,52 @@ function toBlockTag(a) {
15
14
  }
16
15
  exports.toBlockTag = toBlockTag;
17
16
  function toMetricValue(value) {
18
- if (value instanceof ethers_1.BigNumber) {
19
- return protos_1.MetricValue.fromPartial({
20
- bigInteger: toBigInteger(value.toBigInt()),
21
- });
22
- }
23
- if (value instanceof _1.BigDecimal) {
24
- // Carefully consider the use case here
25
- if (value.isInteger()) {
26
- return protos_1.MetricValue.fromPartial({
27
- bigInteger: bigDecimalToBigInteger(value),
28
- });
17
+ if (typeof value === 'number') {
18
+ if (Number.isNaN(value)) {
19
+ throw new Error('Cannot record NaN value');
29
20
  }
30
- else {
31
- if (value.isNaN()) {
32
- throw new Error('Cannot record NaN value');
33
- }
34
- if (!value.isFinite()) {
35
- // NaN also not finite
36
- throw new Error('Cannot record infinite value');
37
- }
21
+ if (!Number.isFinite(value)) {
22
+ throw new Error('Cannot record infinite value');
23
+ }
24
+ if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
38
25
  return protos_1.MetricValue.fromPartial({
39
- bigDecimal: value.toString(), // e.g. -7.350918e-428
26
+ bigInteger: toBigInteger(value),
40
27
  });
41
28
  }
29
+ return protos_1.MetricValue.fromPartial({
30
+ doubleValue: Number(value),
31
+ });
32
+ }
33
+ if (typeof value === 'bigint') {
34
+ return protos_1.MetricValue.fromPartial({
35
+ bigInteger: toBigInteger(value),
36
+ });
42
37
  }
43
38
  if (typeof value === 'string') {
44
39
  return protos_1.MetricValue.fromPartial({
45
40
  bigDecimal: value,
46
41
  });
47
42
  }
48
- if (typeof value === 'bigint' || Number.isInteger(value)) {
43
+ // if (value instanceof BigDecimal) {
44
+ // Carefully consider the use case here
45
+ if (value.isInteger()) {
49
46
  return protos_1.MetricValue.fromPartial({
50
- bigInteger: toBigInteger(value),
47
+ bigInteger: bigDecimalToBigInteger(value),
51
48
  });
52
49
  }
53
- if (typeof value === 'number') {
54
- if (Number.isNaN(value)) {
50
+ else {
51
+ if (value.isNaN()) {
55
52
  throw new Error('Cannot record NaN value');
56
53
  }
57
- if (!Number.isFinite(value)) {
54
+ if (!value.isFinite()) {
55
+ // NaN also not finite
58
56
  throw new Error('Cannot record infinite value');
59
57
  }
58
+ return protos_1.MetricValue.fromPartial({
59
+ bigDecimal: value.toString(), // e.g. -7.350918e-428
60
+ });
60
61
  }
61
- return protos_1.MetricValue.fromPartial({
62
- doubleValue: Number(value),
63
- });
62
+ // }
64
63
  }
65
64
  exports.toMetricValue = toMetricValue;
66
65
  function bigDecimalToBigInteger(a) {
@@ -78,15 +77,18 @@ function intToBigInteger(a) {
78
77
  return hexToBigInteger(a.toString(16), negative);
79
78
  }
80
79
  function toBigInteger(a) {
81
- if (a instanceof _1.BigDecimal) {
82
- return bigDecimalToBigInteger(a);
80
+ if (typeof a === 'number') {
81
+ return intToBigInteger(a);
83
82
  }
84
- if (a instanceof ethers_1.BigNumber) {
85
- return intToBigInteger(a.toBigInt());
83
+ if (typeof a === 'bigint') {
84
+ return intToBigInteger(a);
86
85
  }
87
86
  if (typeof a === 'string') {
88
87
  return intToBigInteger(BigInt(a));
89
88
  }
89
+ if (a instanceof _1.BigDecimal) {
90
+ return bigDecimalToBigInteger(a);
91
+ }
90
92
  return intToBigInteger(a);
91
93
  // Following code is actually very slow
92
94
  // while (a > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"numberish.js","sourceRoot":"","sources":["../../src/core/numberish.ts"],"names":[],"mappings":"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","sourcesContent":["import { BigNumber } from 'ethers'\nimport { BigInteger, MetricValue } from '@sentio/protos'\nimport { BigDecimal } from '.'\nimport { BlockTag } from '@ethersproject/providers'\n\nexport type Numberish = number | BigNumber | bigint | BigDecimal | string\n\nexport function toBlockTag(a: number | bigint): BlockTag {\n if (typeof a === 'number') {\n return a\n }\n if (a > Number.MAX_SAFE_INTEGER) {\n return '0x' + a.toString(16)\n }\n return Number(a)\n}\n\nexport function toMetricValue(value: Numberish): MetricValue {\n if (value instanceof BigNumber) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value.toBigInt()),\n })\n }\n if (value instanceof BigDecimal) {\n // Carefully consider the use case here\n if (value.isInteger()) {\n return MetricValue.fromPartial({\n bigInteger: bigDecimalToBigInteger(value),\n })\n } else {\n if (value.isNaN()) {\n throw new Error('Cannot record NaN value')\n }\n if (!value.isFinite()) {\n // NaN also not finite\n throw new Error('Cannot record infinite value')\n }\n return MetricValue.fromPartial({\n bigDecimal: value.toString(), // e.g. -7.350918e-428\n })\n }\n }\n if (typeof value === 'string') {\n return MetricValue.fromPartial({\n bigDecimal: value,\n })\n }\n if (typeof value === 'bigint' || Number.isInteger(value)) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n\n if (typeof value === 'number') {\n if (Number.isNaN(value)) {\n throw new Error('Cannot record NaN value')\n }\n if (!Number.isFinite(value)) {\n throw new Error('Cannot record infinite value')\n }\n }\n\n return MetricValue.fromPartial({\n doubleValue: Number(value),\n })\n}\n\nfunction bigDecimalToBigInteger(a: BigDecimal): BigInteger {\n const negative = a.isNegative()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction intToBigInteger(a: bigint | number): BigInteger {\n const negative = a < 0\n if (negative) {\n a = -a\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nexport function toBigInteger(a: Numberish): BigInteger {\n if (a instanceof BigDecimal) {\n return bigDecimalToBigInteger(a)\n }\n\n if (a instanceof BigNumber) {\n return intToBigInteger(a.toBigInt())\n }\n if (typeof a === 'string') {\n return intToBigInteger(BigInt(a))\n }\n\n return intToBigInteger(a)\n\n // Following code is actually very slow\n // while (a > 0) {\n // const d = a & 0xffn\n // a >>= 8n\n // value.push(Number(d))\n // }\n //\n // return {\n // negative, value: new Uint8Array(value.reverse()),\n // }\n}\n\nfunction hexToBigInteger(hex: string, negative: boolean): BigInteger {\n if (hex.length % 2 === 1) {\n hex = '0' + hex\n }\n const buffer = Buffer.from(hex, 'hex')\n\n return {\n negative: negative,\n data: new Uint8Array(buffer),\n }\n}\n"]}
1
+ {"version":3,"file":"numberish.js","sourceRoot":"","sources":["../../src/core/numberish.ts"],"names":[],"mappings":"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","sourcesContent":["import { BigInteger, MetricValue } from '@sentio/protos'\nimport { BigDecimal } from '.'\nimport { BlockTag } from 'ethers/providers'\n\nexport type Numberish = number | bigint | BigDecimal | string\n\nexport function toBlockTag(a: number | bigint): BlockTag {\n if (typeof a === 'number') {\n return a\n }\n if (a > Number.MAX_SAFE_INTEGER) {\n return '0x' + a.toString(16)\n }\n return Number(a)\n}\n\nexport function toMetricValue(value: Numberish): MetricValue {\n if (typeof value === 'number') {\n if (Number.isNaN(value)) {\n throw new Error('Cannot record NaN value')\n }\n if (!Number.isFinite(value)) {\n throw new Error('Cannot record infinite value')\n }\n if (Number.isInteger(value) && !Number.isSafeInteger(value)) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n\n return MetricValue.fromPartial({\n doubleValue: Number(value),\n })\n }\n if (typeof value === 'bigint') {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n if (typeof value === 'string') {\n return MetricValue.fromPartial({\n bigDecimal: value,\n })\n }\n // if (value instanceof BigDecimal) {\n // Carefully consider the use case here\n if (value.isInteger()) {\n return MetricValue.fromPartial({\n bigInteger: bigDecimalToBigInteger(value),\n })\n } else {\n if (value.isNaN()) {\n throw new Error('Cannot record NaN value')\n }\n if (!value.isFinite()) {\n // NaN also not finite\n throw new Error('Cannot record infinite value')\n }\n return MetricValue.fromPartial({\n bigDecimal: value.toString(), // e.g. -7.350918e-428\n })\n }\n // }\n}\n\nfunction bigDecimalToBigInteger(a: BigDecimal): BigInteger {\n const negative = a.isNegative()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction intToBigInteger(a: bigint | number): BigInteger {\n const negative = a < 0\n if (negative) {\n a = -a\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nexport function toBigInteger(a: Numberish): BigInteger {\n if (typeof a === 'number') {\n return intToBigInteger(a)\n }\n if (typeof a === 'bigint') {\n return intToBigInteger(a)\n }\n if (typeof a === 'string') {\n return intToBigInteger(BigInt(a))\n }\n if (a instanceof BigDecimal) {\n return bigDecimalToBigInteger(a)\n }\n return intToBigInteger(a)\n\n // Following code is actually very slow\n // while (a > 0) {\n // const d = a & 0xffn\n // a >>= 8n\n // value.push(Number(d))\n // }\n //\n // return {\n // negative, value: new Uint8Array(value.reverse()),\n // }\n}\n\nfunction hexToBigInteger(hex: string, negative: boolean): BigInteger {\n if (hex.length % 2 === 1) {\n hex = '0' + hex\n }\n const buffer = Buffer.from(hex, 'hex')\n\n return {\n negative: negative,\n data: new Uint8Array(buffer),\n }\n}\n"]}