@sentio/sdk 3.9.0-rc.9 → 4.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/lib/aptos/aptos-plugin.d.ts +1 -1
  2. package/lib/aptos/aptos-plugin.d.ts.map +1 -1
  3. package/lib/aptos/aptos-plugin.js +43 -42
  4. package/lib/aptos/aptos-plugin.js.map +1 -1
  5. package/lib/aptos/aptos-processor.d.ts +4 -4
  6. package/lib/aptos/aptos-processor.d.ts.map +1 -1
  7. package/lib/aptos/aptos-processor.js +25 -25
  8. package/lib/aptos/aptos-processor.js.map +1 -1
  9. package/lib/aptos/aptos-resource-processor-template.d.ts +1 -1
  10. package/lib/aptos/aptos-resource-processor-template.d.ts.map +1 -1
  11. package/lib/aptos/aptos-resource-processor-template.js +10 -5
  12. package/lib/aptos/aptos-resource-processor-template.js.map +1 -1
  13. package/lib/aptos/context.d.ts +1 -1
  14. package/lib/aptos/context.d.ts.map +1 -1
  15. package/lib/aptos/context.js +8 -6
  16. package/lib/aptos/context.js.map +1 -1
  17. package/lib/aptos/data.d.ts +4 -4
  18. package/lib/aptos/data.d.ts.map +1 -1
  19. package/lib/core/base-context.d.ts +3 -2
  20. package/lib/core/base-context.d.ts.map +1 -1
  21. package/lib/core/base-context.js +12 -11
  22. package/lib/core/base-context.js.map +1 -1
  23. package/lib/core/core-plugin.d.ts.map +1 -1
  24. package/lib/core/core-plugin.js +6 -4
  25. package/lib/core/core-plugin.js.map +1 -1
  26. package/lib/core/event-logger.d.ts +10 -2
  27. package/lib/core/event-logger.d.ts.map +1 -1
  28. package/lib/core/event-logger.js +42 -26
  29. package/lib/core/event-logger.js.map +1 -1
  30. package/lib/core/exporter.d.ts.map +1 -1
  31. package/lib/core/exporter.js +5 -3
  32. package/lib/core/exporter.js.map +1 -1
  33. package/lib/core/handler-options.d.ts +1 -1
  34. package/lib/core/handler-options.d.ts.map +1 -1
  35. package/lib/core/handler-register.d.ts +1 -1
  36. package/lib/core/handler-register.d.ts.map +1 -1
  37. package/lib/core/handler-register.js +2 -2
  38. package/lib/core/handler-register.js.map +1 -1
  39. package/lib/core/meter.d.ts +4 -3
  40. package/lib/core/meter.d.ts.map +1 -1
  41. package/lib/core/meter.js +5 -4
  42. package/lib/core/meter.js.map +1 -1
  43. package/lib/core/normalization.d.ts +1 -1
  44. package/lib/core/normalization.d.ts.map +1 -1
  45. package/lib/core/normalization.js +41 -31
  46. package/lib/core/normalization.js.map +1 -1
  47. package/lib/core/numberish.d.ts +1 -1
  48. package/lib/core/numberish.d.ts.map +1 -1
  49. package/lib/core/numberish.js +35 -30
  50. package/lib/core/numberish.js.map +1 -1
  51. package/lib/core/partition-handler-manager.d.ts +1 -1
  52. package/lib/core/partition-handler-manager.d.ts.map +1 -1
  53. package/lib/core/partition-handler-manager.js +10 -9
  54. package/lib/core/partition-handler-manager.js.map +1 -1
  55. package/lib/cosmos/context.d.ts.map +1 -1
  56. package/lib/cosmos/context.js +4 -2
  57. package/lib/cosmos/context.js.map +1 -1
  58. package/lib/cosmos/cosmos-plugin.d.ts.map +1 -1
  59. package/lib/cosmos/cosmos-plugin.js +11 -10
  60. package/lib/cosmos/cosmos-plugin.js.map +1 -1
  61. package/lib/cosmos/cosmos-processor.js.map +1 -1
  62. package/lib/eth/abi-decoder/decode-worker.js +2 -2
  63. package/lib/eth/abi-decoder/decode-worker.js.map +1 -1
  64. package/lib/eth/account-processor.d.ts +2 -2
  65. package/lib/eth/account-processor.d.ts.map +1 -1
  66. package/lib/eth/account-processor.js +10 -9
  67. package/lib/eth/account-processor.js.map +1 -1
  68. package/lib/eth/base-processor-template.d.ts +3 -3
  69. package/lib/eth/base-processor-template.d.ts.map +1 -1
  70. package/lib/eth/base-processor-template.js +14 -8
  71. package/lib/eth/base-processor-template.js.map +1 -1
  72. package/lib/eth/base-processor.d.ts +3 -3
  73. package/lib/eth/base-processor.d.ts.map +1 -1
  74. package/lib/eth/base-processor.js +53 -46
  75. package/lib/eth/base-processor.js.map +1 -1
  76. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +1 -1
  77. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +48 -46
  78. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
  79. package/lib/eth/builtin/internal/erc1155-processor.d.ts.map +1 -1
  80. package/lib/eth/builtin/internal/erc1155-processor.js +18 -16
  81. package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
  82. package/lib/eth/builtin/internal/erc20-processor.d.ts.map +1 -1
  83. package/lib/eth/builtin/internal/erc20-processor.js +38 -36
  84. package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
  85. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts.map +1 -1
  86. package/lib/eth/builtin/internal/erc20bytes-processor.js +20 -18
  87. package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
  88. package/lib/eth/builtin/internal/erc721-processor.d.ts.map +1 -1
  89. package/lib/eth/builtin/internal/erc721-processor.js +30 -28
  90. package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
  91. package/lib/eth/builtin/internal/weth9-processor.d.ts.map +1 -1
  92. package/lib/eth/builtin/internal/weth9-processor.js +24 -22
  93. package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
  94. package/lib/eth/codegen/file.d.ts.map +1 -1
  95. package/lib/eth/codegen/file.js +2 -1
  96. package/lib/eth/codegen/file.js.map +1 -1
  97. package/lib/eth/codegen/function-calls.js +1 -1
  98. package/lib/eth/context.d.ts +1 -1
  99. package/lib/eth/context.d.ts.map +1 -1
  100. package/lib/eth/context.js +12 -10
  101. package/lib/eth/context.js.map +1 -1
  102. package/lib/eth/eth-plugin.d.ts.map +1 -1
  103. package/lib/eth/eth-plugin.js +83 -75
  104. package/lib/eth/eth-plugin.js.map +1 -1
  105. package/lib/eth/eth.d.ts +6 -6
  106. package/lib/eth/eth.d.ts.map +1 -1
  107. package/lib/eth/eth.js +22 -14
  108. package/lib/eth/eth.js.map +1 -1
  109. package/lib/eth/index.d.ts +1 -1
  110. package/lib/eth/index.d.ts.map +1 -1
  111. package/lib/eth/index.js +0 -1
  112. package/lib/eth/index.js.map +1 -1
  113. package/lib/fuel/asset-processor.d.ts +2 -2
  114. package/lib/fuel/asset-processor.d.ts.map +1 -1
  115. package/lib/fuel/asset-processor.js +5 -3
  116. package/lib/fuel/asset-processor.js.map +1 -1
  117. package/lib/fuel/context.d.ts.map +1 -1
  118. package/lib/fuel/context.js +4 -2
  119. package/lib/fuel/context.js.map +1 -1
  120. package/lib/fuel/fuel-plugin.d.ts.map +1 -1
  121. package/lib/fuel/fuel-plugin.js +41 -53
  122. package/lib/fuel/fuel-plugin.js.map +1 -1
  123. package/lib/fuel/fuel-processor-template.d.ts.map +1 -1
  124. package/lib/fuel/fuel-processor-template.js +9 -5
  125. package/lib/fuel/fuel-processor-template.js.map +1 -1
  126. package/lib/fuel/fuel-processor.d.ts.map +1 -1
  127. package/lib/fuel/fuel-processor.js +30 -20
  128. package/lib/fuel/fuel-processor.js.map +1 -1
  129. package/lib/fuel/global-processor.d.ts.map +1 -1
  130. package/lib/fuel/global-processor.js +2 -1
  131. package/lib/fuel/global-processor.js.map +1 -1
  132. package/lib/fuel/types.d.ts +10 -4
  133. package/lib/fuel/types.d.ts.map +1 -1
  134. package/lib/fuel/types.js.map +1 -1
  135. package/lib/iota/context.d.ts +1 -1
  136. package/lib/iota/context.d.ts.map +1 -1
  137. package/lib/iota/context.js +8 -6
  138. package/lib/iota/context.js.map +1 -1
  139. package/lib/iota/iota-object-processor-template.d.ts +1 -1
  140. package/lib/iota/iota-object-processor-template.d.ts.map +1 -1
  141. package/lib/iota/iota-object-processor-template.js +17 -12
  142. package/lib/iota/iota-object-processor-template.js.map +1 -1
  143. package/lib/iota/iota-object-processor.d.ts +1 -1
  144. package/lib/iota/iota-object-processor.d.ts.map +1 -1
  145. package/lib/iota/iota-object-processor.js +23 -16
  146. package/lib/iota/iota-object-processor.js.map +1 -1
  147. package/lib/iota/iota-plugin-part.d.ts +1 -1
  148. package/lib/iota/iota-plugin-part.d.ts.map +1 -1
  149. package/lib/iota/iota-plugin-part.js +16 -15
  150. package/lib/iota/iota-plugin-part.js.map +1 -1
  151. package/lib/iota/iota-processor.d.ts +3 -3
  152. package/lib/iota/iota-processor.d.ts.map +1 -1
  153. package/lib/iota/iota-processor.js +20 -19
  154. package/lib/iota/iota-processor.js.map +1 -1
  155. package/lib/iota/network.js +2 -2
  156. package/lib/iota/network.js.map +1 -1
  157. package/lib/move/filter.d.ts +1 -1
  158. package/lib/move/filter.d.ts.map +1 -1
  159. package/lib/move/index.d.ts +1 -1
  160. package/lib/move/index.d.ts.map +1 -1
  161. package/lib/move/index.js +0 -1
  162. package/lib/move/index.js.map +1 -1
  163. package/lib/solana/builtin/types.d.ts +4 -4
  164. package/lib/solana/codegen/codegen.d.ts +1 -1
  165. package/lib/solana/codegen/codegen.d.ts.map +1 -1
  166. package/lib/solana/codegen/codegen.js +2 -2
  167. package/lib/solana/codegen/codegen.js.map +1 -1
  168. package/lib/solana/solana-context.d.ts.map +1 -1
  169. package/lib/solana/solana-context.js +4 -3
  170. package/lib/solana/solana-context.js.map +1 -1
  171. package/lib/solana/solana-plugin.d.ts.map +1 -1
  172. package/lib/solana/solana-plugin.js +19 -18
  173. package/lib/solana/solana-plugin.js.map +1 -1
  174. package/lib/solana/solana-processor.d.ts +2 -2
  175. package/lib/solana/solana-processor.d.ts.map +1 -1
  176. package/lib/solana/solana-processor.js +8 -3
  177. package/lib/solana/solana-processor.js.map +1 -1
  178. package/lib/store/cache.d.ts.map +1 -1
  179. package/lib/store/cache.js +22 -17
  180. package/lib/store/cache.js.map +1 -1
  181. package/lib/store/codegen.js +2 -2
  182. package/lib/store/codegen.js.map +1 -1
  183. package/lib/store/convert.d.ts +1 -1
  184. package/lib/store/convert.d.ts.map +1 -1
  185. package/lib/store/convert.js +67 -104
  186. package/lib/store/convert.js.map +1 -1
  187. package/lib/store/decorators.d.ts +1 -1
  188. package/lib/store/decorators.d.ts.map +1 -1
  189. package/lib/store/decorators.js +3 -1
  190. package/lib/store/decorators.js.map +1 -1
  191. package/lib/store/store.d.ts.map +1 -1
  192. package/lib/store/store.js +24 -16
  193. package/lib/store/store.js.map +1 -1
  194. package/lib/store/types.js +24 -32
  195. package/lib/store/types.js.map +1 -1
  196. package/lib/store/util.d.ts +1 -1
  197. package/lib/store/util.d.ts.map +1 -1
  198. package/lib/store/util.js +13 -17
  199. package/lib/store/util.js.map +1 -1
  200. package/lib/sui/context.d.ts +1 -1
  201. package/lib/sui/context.d.ts.map +1 -1
  202. package/lib/sui/context.js +8 -6
  203. package/lib/sui/context.js.map +1 -1
  204. package/lib/sui/sui-object-processor-template.d.ts +1 -1
  205. package/lib/sui/sui-object-processor-template.d.ts.map +1 -1
  206. package/lib/sui/sui-object-processor-template.js +17 -12
  207. package/lib/sui/sui-object-processor-template.js.map +1 -1
  208. package/lib/sui/sui-object-processor.d.ts +1 -1
  209. package/lib/sui/sui-object-processor.d.ts.map +1 -1
  210. package/lib/sui/sui-object-processor.js +23 -16
  211. package/lib/sui/sui-object-processor.js.map +1 -1
  212. package/lib/sui/sui-plugin-part.d.ts +1 -1
  213. package/lib/sui/sui-plugin-part.d.ts.map +1 -1
  214. package/lib/sui/sui-plugin-part.js +16 -15
  215. package/lib/sui/sui-plugin-part.js.map +1 -1
  216. package/lib/sui/sui-plugin.d.ts +1 -1
  217. package/lib/sui/sui-plugin.d.ts.map +1 -1
  218. package/lib/sui/sui-plugin.js +35 -34
  219. package/lib/sui/sui-plugin.js.map +1 -1
  220. package/lib/sui/sui-processor.d.ts +3 -3
  221. package/lib/sui/sui-processor.d.ts.map +1 -1
  222. package/lib/sui/sui-processor.js +20 -19
  223. package/lib/sui/sui-processor.js.map +1 -1
  224. package/lib/testing/aptos-facet.d.ts.map +1 -1
  225. package/lib/testing/aptos-facet.js +18 -11
  226. package/lib/testing/aptos-facet.js.map +1 -1
  227. package/lib/testing/cosmos-facet.d.ts.map +1 -1
  228. package/lib/testing/cosmos-facet.js +10 -6
  229. package/lib/testing/cosmos-facet.js.map +1 -1
  230. package/lib/testing/eth-facet.d.ts +1 -1
  231. package/lib/testing/eth-facet.d.ts.map +1 -1
  232. package/lib/testing/eth-facet.js +34 -18
  233. package/lib/testing/eth-facet.js.map +1 -1
  234. package/lib/testing/fuel-facet.d.ts.map +1 -1
  235. package/lib/testing/fuel-facet.js +28 -18
  236. package/lib/testing/fuel-facet.js.map +1 -1
  237. package/lib/testing/iota-facet.d.ts.map +1 -1
  238. package/lib/testing/iota-facet.js +32 -20
  239. package/lib/testing/iota-facet.js.map +1 -1
  240. package/lib/testing/memory-database.d.ts +1 -1
  241. package/lib/testing/memory-database.d.ts.map +1 -1
  242. package/lib/testing/memory-database.js +82 -69
  243. package/lib/testing/memory-database.js.map +1 -1
  244. package/lib/testing/metric-utils.d.ts +2 -2
  245. package/lib/testing/metric-utils.d.ts.map +1 -1
  246. package/lib/testing/metric-utils.js +13 -12
  247. package/lib/testing/metric-utils.js.map +1 -1
  248. package/lib/testing/solana-facet.d.ts +3 -2
  249. package/lib/testing/solana-facet.d.ts.map +1 -1
  250. package/lib/testing/solana-facet.js +8 -5
  251. package/lib/testing/solana-facet.js.map +1 -1
  252. package/lib/testing/sui-facet.d.ts.map +1 -1
  253. package/lib/testing/sui-facet.js +30 -20
  254. package/lib/testing/sui-facet.js.map +1 -1
  255. package/lib/testing/test-processor-server.d.ts +19 -13
  256. package/lib/testing/test-processor-server.d.ts.map +1 -1
  257. package/lib/testing/test-processor-server.js +22 -20
  258. package/lib/testing/test-processor-server.js.map +1 -1
  259. package/lib/utils/price.d.ts +1 -1
  260. package/lib/utils/price.d.ts.map +1 -1
  261. package/lib/utils/price.js +19 -12
  262. package/lib/utils/price.js.map +1 -1
  263. package/package.json +10 -12
  264. package/src/aptos/aptos-plugin.ts +105 -91
  265. package/src/aptos/aptos-processor.ts +42 -34
  266. package/src/aptos/aptos-resource-processor-template.ts +15 -6
  267. package/src/aptos/context.ts +8 -7
  268. package/src/aptos/data.ts +4 -4
  269. package/src/core/base-context.ts +19 -12
  270. package/src/core/core-plugin.ts +10 -7
  271. package/src/core/event-logger.ts +63 -34
  272. package/src/core/exporter.ts +5 -4
  273. package/src/core/handler-options.ts +1 -1
  274. package/src/core/handler-register.ts +3 -3
  275. package/src/core/meter.ts +9 -7
  276. package/src/core/normalization.ts +53 -31
  277. package/src/core/numberish.ts +46 -30
  278. package/src/core/partition-handler-manager.ts +13 -11
  279. package/src/cosmos/context.ts +4 -3
  280. package/src/cosmos/cosmos-plugin.ts +19 -15
  281. package/src/cosmos/cosmos-processor.ts +2 -2
  282. package/src/eth/abi-decoder/decode-worker.ts +2 -2
  283. package/src/eth/account-processor.ts +21 -12
  284. package/src/eth/base-processor-template.ts +27 -11
  285. package/src/eth/base-processor.ts +77 -65
  286. package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +177 -116
  287. package/src/eth/builtin/internal/erc1155-processor.ts +73 -38
  288. package/src/eth/builtin/internal/erc20-processor.ts +152 -91
  289. package/src/eth/builtin/internal/erc20bytes-processor.ts +80 -46
  290. package/src/eth/builtin/internal/erc721-processor.ts +109 -65
  291. package/src/eth/builtin/internal/weth9-processor.ts +95 -56
  292. package/src/eth/codegen/file.ts +2 -1
  293. package/src/eth/codegen/function-calls.ts +1 -1
  294. package/src/eth/context.ts +18 -11
  295. package/src/eth/eth-plugin.ts +135 -118
  296. package/src/eth/eth.ts +29 -20
  297. package/src/eth/index.ts +1 -1
  298. package/src/fuel/asset-processor.ts +16 -8
  299. package/src/fuel/context.ts +4 -3
  300. package/src/fuel/fuel-plugin.ts +71 -73
  301. package/src/fuel/fuel-processor-template.ts +10 -7
  302. package/src/fuel/fuel-processor.ts +35 -23
  303. package/src/fuel/global-processor.ts +3 -3
  304. package/src/fuel/types.ts +10 -4
  305. package/src/iota/context.ts +8 -7
  306. package/src/iota/iota-object-processor-template.ts +25 -15
  307. package/src/iota/iota-object-processor.ts +33 -22
  308. package/src/iota/iota-plugin-part.ts +41 -34
  309. package/src/iota/iota-processor.ts +35 -27
  310. package/src/iota/network.ts +2 -2
  311. package/src/move/filter.ts +1 -1
  312. package/src/move/index.ts +1 -1
  313. package/src/solana/codegen/codegen.ts +2 -2
  314. package/src/solana/solana-context.ts +4 -3
  315. package/src/solana/solana-plugin.ts +27 -24
  316. package/src/solana/solana-processor.ts +23 -11
  317. package/src/store/cache.ts +22 -18
  318. package/src/store/codegen.ts +2 -2
  319. package/src/store/convert.ts +68 -104
  320. package/src/store/decorators.ts +3 -2
  321. package/src/store/store.ts +31 -23
  322. package/src/store/types.ts +24 -33
  323. package/src/store/util.ts +13 -18
  324. package/src/sui/context.ts +8 -7
  325. package/src/sui/sui-object-processor-template.ts +25 -15
  326. package/src/sui/sui-object-processor.ts +33 -22
  327. package/src/sui/sui-plugin-part.ts +41 -34
  328. package/src/sui/sui-plugin.ts +49 -47
  329. package/src/sui/sui-processor.ts +35 -27
  330. package/src/testing/aptos-facet.ts +18 -11
  331. package/src/testing/cosmos-facet.ts +10 -6
  332. package/src/testing/eth-facet.ts +40 -18
  333. package/src/testing/fuel-facet.ts +28 -18
  334. package/src/testing/iota-facet.ts +32 -20
  335. package/src/testing/memory-database.ts +109 -82
  336. package/src/testing/metric-utils.ts +15 -14
  337. package/src/testing/solana-facet.ts +11 -6
  338. package/src/testing/sui-facet.ts +30 -20
  339. package/src/testing/test-processor-server.ts +64 -58
  340. package/src/utils/price.ts +20 -13
@@ -1,5 +1,12 @@
1
1
  import { TestProcessorServer } from './test-processor-server.js'
2
- import { DataBinding, HandlerType, ProcessBindingResponse } from '@sentio/protos'
2
+ import {
3
+ type DataBinding,
4
+ DataBindingSchema,
5
+ HandlerType,
6
+ type ProcessBindingResponse,
7
+ timestampNow
8
+ } from '@sentio/protos'
9
+ import { create } from '@bufbuild/protobuf'
3
10
  import { Trace } from '../eth/eth.js'
4
11
  import { BlockParams, LogParams, TransactionResponseParams } from 'ethers/providers'
5
12
  import { ChainId, EthChainId } from '@sentio/chain'
@@ -48,17 +55,20 @@ export class EthFacet {
48
55
  }
49
56
  for (const config of contract.traceConfigs) {
50
57
  if (config.signature == signature) {
51
- return {
58
+ return create(DataBindingSchema, {
52
59
  data: {
53
- ethTrace: {
54
- trace,
55
- timestamp: new Date()
60
+ value: {
61
+ case: 'ethTrace',
62
+ value: {
63
+ rawTrace: JSON.stringify(trace),
64
+ timestamp: timestampNow()
65
+ }
56
66
  }
57
67
  },
58
68
  handlerIds: [config.handlerId],
59
69
  handlerType: HandlerType.ETH_TRACE,
60
70
  chainId: network
61
- }
71
+ })
62
72
  }
63
73
  }
64
74
  }
@@ -116,14 +126,17 @@ export class EthFacet {
116
126
  break
117
127
  }
118
128
  if (match) {
119
- return {
129
+ return create(DataBindingSchema, {
120
130
  data: {
121
- ethLog: { log, timestamp: new Date(), rawLog: JSON.stringify(log) }
131
+ value: {
132
+ case: 'ethLog',
133
+ value: { timestamp: timestampNow(), rawLog: JSON.stringify(log) }
134
+ }
122
135
  },
123
136
  handlerIds: [config.handlerId],
124
137
  handlerType: HandlerType.ETH_LOG,
125
138
  chainId: network
126
- }
139
+ })
127
140
  }
128
141
  }
129
142
  }
@@ -190,14 +203,17 @@ export class EthFacet {
190
203
  break
191
204
  }
192
205
  if (match) {
193
- return {
206
+ return create(DataBindingSchema, {
194
207
  data: {
195
- ethLog: { log, timestamp: new Date(), rawLog: JSON.stringify(log) }
208
+ value: {
209
+ case: 'ethLog',
210
+ value: { timestamp: timestampNow(), rawLog: JSON.stringify(log) }
211
+ }
196
212
  },
197
213
  handlerIds: [config.handlerId],
198
214
  handlerType: HandlerType.ETH_LOG,
199
215
  chainId: network
200
- }
216
+ })
201
217
  }
202
218
  }
203
219
  }
@@ -230,14 +246,17 @@ export class EthFacet {
230
246
  block: Partial<BlockParams> & { number: number },
231
247
  network: EthChainId = EthChainId.ETHEREUM
232
248
  ): DataBinding {
233
- const binding: DataBinding = {
249
+ const binding: DataBinding = create(DataBindingSchema, {
234
250
  data: {
235
- ethBlock: { block }
251
+ value: {
252
+ case: 'ethBlock',
253
+ value: { rawBlock: JSON.stringify(block) }
254
+ }
236
255
  },
237
256
  handlerType: HandlerType.ETH_BLOCK,
238
257
  handlerIds: [],
239
258
  chainId: network
240
- }
259
+ })
241
260
  for (const contract of this.server.contractConfigs) {
242
261
  if (contract.contract?.chainId !== network) {
243
262
  continue
@@ -282,14 +301,17 @@ export class EthFacet {
282
301
  transaction: Partial<TransactionResponseParams>,
283
302
  network: EthChainId = EthChainId.ETHEREUM
284
303
  ): DataBinding {
285
- const binding: DataBinding = {
304
+ const binding: DataBinding = create(DataBindingSchema, {
286
305
  data: {
287
- ethTransaction: { transaction, timestamp: new Date(), rawTransaction: JSON.stringify(transaction) }
306
+ value: {
307
+ case: 'ethTransaction',
308
+ value: { timestamp: timestampNow(), rawTransaction: JSON.stringify(transaction) }
309
+ }
288
310
  },
289
311
  handlerType: HandlerType.ETH_TRANSACTION,
290
312
  handlerIds: [],
291
313
  chainId: network
292
- }
314
+ })
293
315
  for (const contract of this.server.contractConfigs) {
294
316
  if (contract.contract?.chainId !== network) {
295
317
  continue
@@ -1,6 +1,7 @@
1
1
  import { TestProcessorServer } from './test-processor-server.js'
2
2
  import { FuelChainId } from '@sentio/chain'
3
- import { DataBinding, HandlerType } from '@sentio/protos'
3
+ import { type DataBinding, DataBindingSchema, HandlerType, timestampNow } from '@sentio/protos'
4
+ import { create } from '@bufbuild/protobuf'
4
5
  import { FuelNetwork } from '../fuel/index.js'
5
6
  import { getRpcEndpoint } from '../fuel/network.js'
6
7
 
@@ -47,33 +48,39 @@ export class FuelFacet {
47
48
  continue
48
49
  }
49
50
  for (const callConfig of config.fuelTransactionConfigs) {
50
- const binding = {
51
+ const binding = create(DataBindingSchema, {
51
52
  data: {
52
- fuelTransaction: {
53
- transaction,
54
- timestamp: new Date()
53
+ value: {
54
+ case: 'fuelTransaction',
55
+ value: {
56
+ transaction,
57
+ timestamp: timestampNow()
58
+ }
55
59
  }
56
60
  },
57
61
  handlerIds: [callConfig.handlerId],
58
62
  handlerType: HandlerType.FUEL_TRANSACTION,
59
63
  chainId: network
60
- }
64
+ })
61
65
 
62
66
  res.push(binding)
63
67
  }
64
68
 
65
69
  for (const assetConfig of config.assetConfigs) {
66
- const binding = {
70
+ const binding = create(DataBindingSchema, {
67
71
  data: {
68
- fuelTransaction: {
69
- transaction,
70
- timestamp: new Date()
72
+ value: {
73
+ case: 'fuelTransaction',
74
+ value: {
75
+ transaction,
76
+ timestamp: timestampNow()
77
+ }
71
78
  }
72
79
  },
73
80
  handlerIds: [assetConfig.handlerId],
74
81
  handlerType: HandlerType.FUEL_TRANSACTION,
75
82
  chainId: network
76
- }
83
+ })
77
84
 
78
85
  res.push(binding)
79
86
  }
@@ -89,20 +96,23 @@ export class FuelFacet {
89
96
 
90
97
  for (const config of this.server.contractConfigs) {
91
98
  for (const logConfig of config.fuelReceiptConfigs) {
92
- const logIds = logConfig.log?.logIds ?? []
99
+ const logIds = logConfig.receiptFilter?.case === 'log' ? logConfig.receiptFilter.value.logIds : []
93
100
  if (logIds.includes(receipt.rb)) {
94
- const binding = {
101
+ const binding = create(DataBindingSchema, {
95
102
  data: {
96
- fuelLog: {
97
- transaction,
98
- timestamp: new Date(),
99
- receiptIndex: BigInt(i)
103
+ value: {
104
+ case: 'fuelLog',
105
+ value: {
106
+ transaction,
107
+ timestamp: timestampNow(),
108
+ receiptIndex: BigInt(i)
109
+ }
100
110
  }
101
111
  },
102
112
  handlerIds: [logConfig.handlerId],
103
113
  handlerType: HandlerType.FUEL_RECEIPT,
104
114
  chainId: network
105
- }
115
+ })
106
116
  res.push(binding)
107
117
  }
108
118
  }
@@ -1,5 +1,6 @@
1
1
  import { MoveCallIotaTransaction, IotaTransactionBlockResponse } from '@iota/iota-sdk/client'
2
- import { DataBinding, HandlerType } from '@sentio/protos'
2
+ import { type DataBinding, DataBindingSchema, HandlerType, timestampFromDate, timestampNow } from '@sentio/protos'
3
+ import { create } from '@bufbuild/protobuf'
3
4
  import { TestProcessorServer } from './test-processor-server.js'
4
5
  import { accountTypeString, parseMoveType, SPLITTER } from '../move/index.js'
5
6
  import { IotaNetwork } from '../iota/index.js'
@@ -47,18 +48,21 @@ export class IotaFacet {
47
48
  for (const callConfig of config.moveCallConfigs) {
48
49
  for (const callFilter of callConfig.filters) {
49
50
  if (accountTypeString(config.contract.address) + '::' + callFilter.function === functionType) {
50
- return {
51
+ return create(DataBindingSchema, {
51
52
  data: {
52
- suiCall: {
53
- rawTransaction: JSON.stringify(transaction),
54
- timestamp: new Date(),
55
- slot: 10000n
53
+ value: {
54
+ case: 'suiCall',
55
+ value: {
56
+ rawTransaction: JSON.stringify(transaction),
57
+ timestamp: timestampNow(),
58
+ slot: 10000n
59
+ }
56
60
  }
57
61
  },
58
62
  handlerIds: [callConfig.handlerId],
59
63
  handlerType: HandlerType.SUI_CALL,
60
64
  chainId: network
61
- }
65
+ })
62
66
  }
63
67
  }
64
68
  }
@@ -91,18 +95,23 @@ export class IotaFacet {
91
95
  throw Error('Invalid test global transaction: ' + JSON.stringify(transaction))
92
96
  }
93
97
 
94
- const binding: DataBinding = {
98
+ const binding: DataBinding = create(DataBindingSchema, {
95
99
  handlerIds,
96
100
  handlerType: HandlerType.SUI_CALL,
97
101
  data: {
98
- suiCall: {
99
- rawTransaction: JSON.stringify(transaction),
100
- timestamp: transaction.timestampMs ? new Date(transaction.timestampMs) : new Date(),
101
- slot: BigInt(transaction.checkpoint || 0)
102
+ value: {
103
+ case: 'suiCall',
104
+ value: {
105
+ rawTransaction: JSON.stringify(transaction),
106
+ timestamp: transaction.timestampMs
107
+ ? timestampFromDate(new Date(Number(transaction.timestampMs)))
108
+ : timestampNow(),
109
+ slot: BigInt(transaction.checkpoint || 0)
110
+ }
102
111
  }
103
112
  },
104
113
  chainId: network
105
- }
114
+ })
106
115
  return this.server.processBinding(binding)
107
116
  }
108
117
 
@@ -123,19 +132,22 @@ export class IotaFacet {
123
132
  accountTypeString(config.contract.address) + '::' + eventFilter.type ===
124
133
  parseMoveType(event.type).qname
125
134
  ) {
126
- return {
135
+ return create(DataBindingSchema, {
127
136
  data: {
128
- suiEvent: {
129
- rawEvent: JSON.stringify(event),
130
- rawTransaction: JSON.stringify(transaction),
131
- timestamp: new Date(transaction.timestampMs || 0),
132
- slot: 10000n
137
+ value: {
138
+ case: 'suiEvent',
139
+ value: {
140
+ rawEvent: JSON.stringify(event),
141
+ rawTransaction: JSON.stringify(transaction),
142
+ timestamp: timestampFromDate(new Date(Number(transaction.timestampMs || 0))),
143
+ slot: 10000n
144
+ }
133
145
  }
134
146
  },
135
147
  handlerIds: [eventConfig.handlerId],
136
148
  handlerType: HandlerType.SUI_EVENT,
137
149
  chainId: network
138
- }
150
+ })
139
151
  }
140
152
  }
141
153
  }
@@ -1,13 +1,18 @@
1
1
  import { StoreContext } from '../store/context.js'
2
2
  import {
3
- DBRequest,
4
- DBRequest_DBFilter,
3
+ type DBRequest,
4
+ type DBRequest_DBFilter,
5
5
  DBRequest_DBOperator,
6
- ProcessStreamResponse,
7
- RichStruct,
8
- RichValue,
9
- RichValueList
6
+ DBResponseSchema,
7
+ type ProcessStreamResponse,
8
+ type RichStruct,
9
+ type RichValue,
10
+ RichValueSchema,
11
+ type RichValueList,
12
+ RichValueListSchema,
13
+ timestampNow
10
14
  } from '@sentio/protos'
15
+ import { create } from '@bufbuild/protobuf'
11
16
  import { GraphQLField, GraphQLSchema, parse, StringValueNode } from 'graphql/index.js'
12
17
  import { DatabaseSchemaState } from '../core/database-schema.js'
13
18
  import { buildSchema } from '../store/schema.js'
@@ -43,7 +48,9 @@ export class MemoryDatabase {
43
48
  }
44
49
 
45
50
  start() {
46
- this.dbContext.subject.subscribe(this.processRequest.bind(this))
51
+ // The subject is typed as the `ProcessStreamResponse` init-shape, but at runtime it always carries a
52
+ // full response (the store context emits the complete oneof). Treat it as a full message and narrow inside.
53
+ this.dbContext.subject.subscribe((request) => this.processRequest(request as unknown as ProcessStreamResponse))
47
54
  }
48
55
 
49
56
  stop() {
@@ -111,20 +118,25 @@ export class MemoryDatabase {
111
118
  if (elemDb) {
112
119
  for (const elemID of Object.keys(elemDb)) {
113
120
  const value = elemDb[elemID]
114
- const deriveField = value.fields[derivedFrom]
121
+ const deriveField: RichValue | undefined = value.fields[derivedFrom]
115
122
  let hasRelation = false
116
- if (deriveField?.stringValue === id) {
123
+ if (deriveField?.value.case === 'stringValue' && deriveField.value.value === id) {
117
124
  hasRelation = true
118
125
  }
119
- if (deriveField?.listValue) {
120
- hasRelation = deriveField.listValue.values.some((v: any) => v.stringValue === id)
126
+ if (deriveField?.value.case === 'listValue') {
127
+ hasRelation = deriveField.value.value.values.some(
128
+ (v) => v.value.case === 'stringValue' && v.value.value === id
129
+ )
121
130
  }
122
131
  if (hasRelation) {
123
- const arr = result.fields[field.name]
124
- if (arr) {
125
- arr.listValue.values.push({ stringValue: elemID })
132
+ const arr: RichValue | undefined = result.fields[field.name]
133
+ const elem = create(RichValueSchema, { value: { case: 'stringValue', value: elemID } })
134
+ if (arr && arr.value.case === 'listValue') {
135
+ arr.value.value.values.push(elem)
126
136
  } else {
127
- result.fields[field.name] = { listValue: { values: [{ stringValue: elemID }] } }
137
+ result.fields[field.name] = create(RichValueSchema, {
138
+ value: { case: 'listValue', value: { values: [elem] } }
139
+ })
128
140
  }
129
141
  }
130
142
  }
@@ -138,7 +150,7 @@ export class MemoryDatabase {
138
150
  }
139
151
 
140
152
  private processRequest(request: ProcessStreamResponse) {
141
- const req = request.dbRequest
153
+ const req = request.value.case === 'dbRequest' ? request.value.value : undefined
142
154
 
143
155
  // Check if schema is required for this request
144
156
  const requiresSchema = this.requestRequiresSchema(req)
@@ -149,58 +161,63 @@ export class MemoryDatabase {
149
161
 
150
162
  this.lastDbRequest = req
151
163
  if (req) {
152
- if (req.upsert) {
153
- const { entityData, entity } = req.upsert
164
+ if (req.op.case === 'upsert') {
165
+ const { entityData, entity } = req.op.value
154
166
  entityData.forEach((d, i) => {
155
- const id = d.fields['id'].stringValue!
167
+ const idField = d.fields['id']
168
+ const id = idField?.value.case === 'stringValue' ? idField.value.value : ''
156
169
  const entityName = entity[i]
157
170
  this.upsert(entityName, id, d)
158
171
  })
159
172
 
160
- this.dbContext.result({
161
- opId: req.opId
162
- })
173
+ this.dbContext.result(create(DBResponseSchema, { opId: req.opId }))
163
174
  }
164
- if (req.delete) {
165
- const { id, entity } = req.delete
175
+ if (req.op.case === 'delete') {
176
+ const { id, entity } = req.op.value
166
177
  id.forEach((i, idx) => {
167
178
  const entityName = entity[idx]
168
179
  this.delete(entityName, i)
169
180
  })
170
- this.dbContext.result({
171
- opId: req.opId
172
- })
181
+ this.dbContext.result(create(DBResponseSchema, { opId: req.opId }))
173
182
  }
174
183
 
175
- if (req.get) {
176
- const { entity, id } = req.get
184
+ if (req.op.case === 'get') {
185
+ const { entity, id } = req.op.value
177
186
  const data = this.getById(entity, id)
178
- this.dbContext.result({
179
- opId: req.opId,
180
- // entities: { entities: data ? [data] : [] },
181
- entityList: {
182
- entities: data ? [toEntity(data)] : []
183
- }
184
- })
187
+ this.dbContext.result(
188
+ create(DBResponseSchema, {
189
+ opId: req.opId,
190
+ value: {
191
+ case: 'entityList',
192
+ value: {
193
+ entities: data ? [toEntity(data)] : []
194
+ }
195
+ }
196
+ })
197
+ )
185
198
  }
186
- if (req.list) {
187
- const { entity, cursor, filters } = req.list
199
+ if (req.op.case === 'list') {
200
+ const { entity, cursor, filters } = req.op.value
188
201
  const list = this.listEntities(entity, filters)
189
202
 
190
203
  if (cursor) {
191
204
  const idx = parseInt(cursor)
192
205
 
193
- this.dbContext.result({
194
- opId: req.opId,
195
- entityList: { entities: list.slice(idx, idx + 1).map((d) => toEntity(d)) },
196
- nextCursor: idx + 1 < list.length ? `${idx + 1}` : undefined
197
- })
206
+ this.dbContext.result(
207
+ create(DBResponseSchema, {
208
+ opId: req.opId,
209
+ value: { case: 'entityList', value: { entities: list.slice(idx, idx + 1).map((d) => toEntity(d)) } },
210
+ nextCursor: idx + 1 < list.length ? `${idx + 1}` : undefined
211
+ })
212
+ )
198
213
  } else {
199
- this.dbContext.result({
200
- opId: req.opId,
201
- entityList: { entities: list.length ? [toEntity(list[0])] : [] },
202
- nextCursor: '1'
203
- })
214
+ this.dbContext.result(
215
+ create(DBResponseSchema, {
216
+ opId: req.opId,
217
+ value: { case: 'entityList', value: { entities: list.length ? [toEntity(list[0])] : [] } },
218
+ nextCursor: '1'
219
+ })
220
+ )
204
221
  }
205
222
  }
206
223
  }
@@ -215,19 +232,18 @@ export class MemoryDatabase {
215
232
  if (!req) return false
216
233
 
217
234
  // Check if all entities in the request are MemoryCacheItem
218
- if (req.upsert) {
219
- return !req.upsert.entity.every((e) => e === MEMORY_CACHE_ITEM_ENTITY)
235
+ switch (req.op.case) {
236
+ case 'upsert':
237
+ return !req.op.value.entity.every((e) => e === MEMORY_CACHE_ITEM_ENTITY)
238
+ case 'delete':
239
+ return !req.op.value.entity.every((e) => e === MEMORY_CACHE_ITEM_ENTITY)
240
+ case 'get':
241
+ return req.op.value.entity !== MEMORY_CACHE_ITEM_ENTITY
242
+ case 'list':
243
+ return req.op.value.entity !== MEMORY_CACHE_ITEM_ENTITY
244
+ default:
245
+ return false
220
246
  }
221
- if (req.delete) {
222
- return !req.delete.entity.every((e) => e === MEMORY_CACHE_ITEM_ENTITY)
223
- }
224
- if (req.get) {
225
- return req.get.entity !== MEMORY_CACHE_ITEM_ENTITY
226
- }
227
- if (req.list) {
228
- return req.list.entity !== MEMORY_CACHE_ITEM_ENTITY
229
- }
230
- return false
231
247
  }
232
248
 
233
249
  private listEntities(entity: string, filters?: DBRequest_DBFilter[]) {
@@ -268,37 +284,46 @@ function filter(entity: RichStruct, filter: DBRequest_DBFilter) {
268
284
  case DBRequest_DBOperator.LE:
269
285
  return lessThan(value, filter.value) || equal(value, filter.value)
270
286
  case DBRequest_DBOperator.IN:
271
- return filter.value?.values.some((v) => equal(value, { values: [v] }))
287
+ return filter.value?.values.some((v) => equal(value, singleList(v)))
272
288
  case DBRequest_DBOperator.NOT_IN:
273
- return !filter.value?.values.some((v) => equal(value, { values: [v] }))
289
+ return !filter.value?.values.some((v) => equal(value, singleList(v)))
274
290
  case DBRequest_DBOperator.HAS_ALL:
275
- return filter.value?.values.every((v) => equal(value, { values: [v] }))
291
+ return filter.value?.values.every((v) => equal(value, singleList(v)))
276
292
  case DBRequest_DBOperator.HAS_ANY:
277
293
  for (const a of filter.value?.values ?? []) {
278
- if ((value.listValue?.values ?? []).some((v) => equal(a, { values: [v] }))) {
294
+ const listValues = value.value.case === 'listValue' ? value.value.value.values : []
295
+ if (listValues.some((v) => equal(a, singleList(v)))) {
279
296
  return true
280
297
  }
281
298
  }
282
299
  return false
283
300
  case DBRequest_DBOperator.LIKE:
284
- return like(value.stringValue, filter.value?.values[0]?.stringValue)
301
+ return like(richString(value), filter.value?.values[0] ? richString(filter.value.values[0]) : undefined)
285
302
  default:
286
303
  return false
287
304
  }
288
305
  }
289
306
 
307
+ function singleList(v: RichValue): RichValueList {
308
+ return create(RichValueListSchema, { values: [v] })
309
+ }
310
+
311
+ function richString(v?: RichValue): string | undefined {
312
+ return v?.value.case === 'stringValue' ? v.value.value : undefined
313
+ }
314
+
290
315
  function getValue(entity: RichStruct, field: string) {
291
316
  return entity.fields[field]
292
317
  }
293
318
 
294
319
  function equal(field: RichValue, value?: RichValueList): boolean {
295
- if (field.stringValue !== undefined) {
296
- return field.stringValue === value?.values[0]?.stringValue
320
+ if (field.value.case === 'stringValue') {
321
+ return field.value.value === richString(value?.values[0])
297
322
  }
298
- if (field.listValue) {
299
- return field.listValue.values.every((v, i) => {
323
+ if (field.value.case === 'listValue') {
324
+ return field.value.value.values.every((v, i) => {
300
325
  const vv = value?.values[i]
301
- return equal(v, vv ? { values: [vv] } : undefined)
326
+ return equal(v, vv ? singleList(vv) : undefined)
302
327
  })
303
328
  }
304
329
  const a = toNumber(field)
@@ -335,19 +360,21 @@ function lessThan(field: RichValue, value: RichValueList | undefined) {
335
360
  }
336
361
 
337
362
  function toNumber(value?: RichValue) {
338
- if (value?.intValue !== undefined) {
339
- return value.intValue
340
- }
341
- if (value?.floatValue !== undefined) {
342
- return value.floatValue
343
- }
344
- if (value?.bigintValue !== undefined) {
345
- return BigIntConverter.to(value) as bigint
363
+ if (value === undefined) {
364
+ return undefined
346
365
  }
347
- if (value?.bigdecimalValue !== undefined) {
348
- return BigDecimalConverter.to(value) as BigDecimal
366
+ switch (value.value.case) {
367
+ case 'intValue':
368
+ return value.value.value
369
+ case 'floatValue':
370
+ return value.value.value
371
+ case 'bigintValue':
372
+ return BigIntConverter.to(value) as bigint
373
+ case 'bigdecimalValue':
374
+ return BigDecimalConverter.to(value) as BigDecimal
375
+ default:
376
+ return undefined
349
377
  }
350
- return undefined
351
378
  }
352
379
 
353
380
  function toEntity(data: any) {
@@ -355,7 +382,7 @@ function toEntity(data: any) {
355
382
  entity: data.entity,
356
383
  genBlockChain: '',
357
384
  genBlockNumber: 0n,
358
- genBlockTime: new Date(),
385
+ genBlockTime: timestampNow(),
359
386
  data: { fields: data.fields }
360
387
  }
361
388
  }
@@ -1,26 +1,27 @@
1
- import { MetricValue, ProcessResult } from '@sentio/protos'
1
+ import type { MetricValue, ProcessResult } from '@sentio/protos'
2
2
  import { Numberish, BigDecimal } from '../core/index.js'
3
3
  import { bytesToBigInt } from '../utils/conversion.js'
4
4
 
5
- export function MetricValueToNumber(v: Partial<MetricValue> | undefined): Numberish | undefined {
5
+ export function MetricValueToNumber(v: MetricValue | undefined): Numberish | undefined {
6
6
  if (v === undefined) {
7
7
  return undefined
8
8
  }
9
9
 
10
- if (v.doubleValue !== undefined) {
11
- return v.doubleValue
12
- }
13
- if (v.bigInteger !== undefined) {
14
- let intValue = bytesToBigInt(v.bigInteger.data)
15
- if (v.bigInteger.negative) {
16
- intValue = -intValue
10
+ switch (v.value.case) {
11
+ case 'doubleValue':
12
+ return v.value.value
13
+ case 'bigInteger': {
14
+ let intValue = bytesToBigInt(v.value.value.data)
15
+ if (v.value.value.negative) {
16
+ intValue = -intValue
17
+ }
18
+ return intValue
17
19
  }
18
- return intValue
19
- }
20
- if (v.bigDecimal !== undefined) {
21
- return new BigDecimal(v.bigDecimal)
20
+ case 'bigDecimal':
21
+ return new BigDecimal(v.value.value)
22
+ default:
23
+ return undefined
22
24
  }
23
- return undefined
24
25
  }
25
26
 
26
27
  export function firstCounterValue(result: ProcessResult | undefined, name: string): Numberish | undefined {