envio 3.0.0-alpha.21 → 3.0.0-alpha.23

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 (220) hide show
  1. package/README.md +3 -3
  2. package/bin.mjs +2 -48
  3. package/evm.schema.json +67 -0
  4. package/fuel.schema.json +67 -0
  5. package/index.d.ts +822 -38
  6. package/index.js +5 -3
  7. package/package.json +10 -8
  8. package/rescript.json +5 -9
  9. package/src/Address.res +4 -5
  10. package/src/Address.res.mjs +9 -12
  11. package/src/Api.res +15 -0
  12. package/src/Api.res.mjs +20 -0
  13. package/src/Batch.res +32 -34
  14. package/src/Batch.res.mjs +172 -187
  15. package/src/Bin.res +89 -0
  16. package/src/Bin.res.mjs +97 -0
  17. package/src/ChainFetcher.res +33 -57
  18. package/src/ChainFetcher.res.mjs +197 -227
  19. package/src/ChainManager.res +6 -14
  20. package/src/ChainManager.res.mjs +74 -85
  21. package/src/ChainMap.res +14 -16
  22. package/src/ChainMap.res.mjs +38 -38
  23. package/src/Config.res +193 -135
  24. package/src/Config.res.mjs +566 -592
  25. package/src/Core.res +182 -0
  26. package/src/Core.res.mjs +207 -0
  27. package/src/Ecosystem.res +25 -4
  28. package/src/Ecosystem.res.mjs +12 -13
  29. package/src/Env.res +20 -13
  30. package/src/Env.res.mjs +124 -113
  31. package/src/EnvSafe.res +269 -0
  32. package/src/EnvSafe.res.mjs +296 -0
  33. package/src/EnvSafe.resi +18 -0
  34. package/src/Envio.res +37 -26
  35. package/src/Envio.res.mjs +59 -60
  36. package/src/ErrorHandling.res +2 -2
  37. package/src/ErrorHandling.res.mjs +15 -15
  38. package/src/EventConfigBuilder.res +219 -81
  39. package/src/EventConfigBuilder.res.mjs +259 -202
  40. package/src/EventProcessing.res +27 -38
  41. package/src/EventProcessing.res.mjs +165 -183
  42. package/src/EventUtils.res +11 -11
  43. package/src/EventUtils.res.mjs +21 -22
  44. package/src/EvmTypes.res +0 -1
  45. package/src/EvmTypes.res.mjs +5 -5
  46. package/src/FetchState.res +360 -256
  47. package/src/FetchState.res.mjs +958 -914
  48. package/src/GlobalState.res +365 -351
  49. package/src/GlobalState.res.mjs +958 -992
  50. package/src/GlobalStateManager.res +1 -2
  51. package/src/GlobalStateManager.res.mjs +36 -44
  52. package/src/HandlerLoader.res +107 -23
  53. package/src/HandlerLoader.res.mjs +128 -38
  54. package/src/HandlerRegister.res +127 -103
  55. package/src/HandlerRegister.res.mjs +164 -164
  56. package/src/HandlerRegister.resi +12 -4
  57. package/src/Hasura.res +35 -22
  58. package/src/Hasura.res.mjs +158 -167
  59. package/src/InMemoryStore.res +20 -27
  60. package/src/InMemoryStore.res.mjs +64 -80
  61. package/src/InMemoryTable.res +34 -39
  62. package/src/InMemoryTable.res.mjs +165 -170
  63. package/src/Internal.res +52 -33
  64. package/src/Internal.res.mjs +84 -81
  65. package/src/LazyLoader.res.mjs +55 -61
  66. package/src/LoadLayer.res +77 -78
  67. package/src/LoadLayer.res.mjs +160 -189
  68. package/src/LoadManager.res +16 -21
  69. package/src/LoadManager.res.mjs +79 -84
  70. package/src/LogSelection.res +236 -68
  71. package/src/LogSelection.res.mjs +211 -141
  72. package/src/Logging.res +13 -9
  73. package/src/Logging.res.mjs +130 -143
  74. package/src/Main.res +430 -51
  75. package/src/Main.res.mjs +530 -271
  76. package/src/Persistence.res +80 -84
  77. package/src/Persistence.res.mjs +131 -132
  78. package/src/PgStorage.res +294 -167
  79. package/src/PgStorage.res.mjs +799 -817
  80. package/src/Prometheus.res +50 -58
  81. package/src/Prometheus.res.mjs +345 -373
  82. package/src/ReorgDetection.res +22 -24
  83. package/src/ReorgDetection.res.mjs +100 -106
  84. package/src/SafeCheckpointTracking.res +7 -7
  85. package/src/SafeCheckpointTracking.res.mjs +40 -43
  86. package/src/SimulateItems.res +41 -49
  87. package/src/SimulateItems.res.mjs +257 -272
  88. package/src/Sink.res +2 -2
  89. package/src/Sink.res.mjs +22 -26
  90. package/src/TableIndices.res +1 -2
  91. package/src/TableIndices.res.mjs +42 -48
  92. package/src/TestIndexer.res +196 -189
  93. package/src/TestIndexer.res.mjs +536 -536
  94. package/src/TestIndexerProxyStorage.res +16 -16
  95. package/src/TestIndexerProxyStorage.res.mjs +99 -122
  96. package/src/TestIndexerWorker.res +4 -0
  97. package/src/TestIndexerWorker.res.mjs +7 -0
  98. package/src/Throttler.res +3 -3
  99. package/src/Throttler.res.mjs +23 -24
  100. package/src/Time.res +1 -1
  101. package/src/Time.res.mjs +18 -21
  102. package/src/TopicFilter.res +3 -3
  103. package/src/TopicFilter.res.mjs +29 -30
  104. package/src/UserContext.res +93 -54
  105. package/src/UserContext.res.mjs +197 -182
  106. package/src/Utils.res +141 -86
  107. package/src/Utils.res.mjs +334 -295
  108. package/src/bindings/BigDecimal.res +0 -2
  109. package/src/bindings/BigDecimal.res.mjs +19 -23
  110. package/src/bindings/ClickHouse.res +28 -27
  111. package/src/bindings/ClickHouse.res.mjs +243 -240
  112. package/src/bindings/DateFns.res +11 -11
  113. package/src/bindings/DateFns.res.mjs +7 -7
  114. package/src/bindings/EventSource.res.mjs +2 -2
  115. package/src/bindings/Express.res +2 -5
  116. package/src/bindings/Hrtime.res +2 -2
  117. package/src/bindings/Hrtime.res.mjs +30 -32
  118. package/src/bindings/Lodash.res.mjs +1 -1
  119. package/src/bindings/NodeJs.res +14 -9
  120. package/src/bindings/NodeJs.res.mjs +20 -20
  121. package/src/bindings/Pino.res +8 -10
  122. package/src/bindings/Pino.res.mjs +40 -43
  123. package/src/bindings/Postgres.res +7 -5
  124. package/src/bindings/Postgres.res.mjs +9 -9
  125. package/src/bindings/PromClient.res +17 -2
  126. package/src/bindings/PromClient.res.mjs +30 -7
  127. package/src/bindings/SDSL.res.mjs +2 -2
  128. package/src/bindings/Viem.res +4 -4
  129. package/src/bindings/Viem.res.mjs +20 -22
  130. package/src/bindings/Vitest.res +1 -1
  131. package/src/bindings/Vitest.res.mjs +2 -2
  132. package/src/bindings/WebSocket.res +1 -1
  133. package/src/db/EntityHistory.res +9 -3
  134. package/src/db/EntityHistory.res.mjs +84 -59
  135. package/src/db/InternalTable.res +62 -60
  136. package/src/db/InternalTable.res.mjs +271 -203
  137. package/src/db/Schema.res +1 -2
  138. package/src/db/Schema.res.mjs +28 -32
  139. package/src/db/Table.res +28 -27
  140. package/src/db/Table.res.mjs +276 -292
  141. package/src/sources/EventRouter.res +21 -16
  142. package/src/sources/EventRouter.res.mjs +55 -57
  143. package/src/sources/Evm.res +17 -1
  144. package/src/sources/Evm.res.mjs +16 -8
  145. package/src/sources/EvmChain.res +15 -17
  146. package/src/sources/EvmChain.res.mjs +40 -42
  147. package/src/sources/Fuel.res +14 -1
  148. package/src/sources/Fuel.res.mjs +16 -8
  149. package/src/sources/FuelSDK.res +1 -1
  150. package/src/sources/FuelSDK.res.mjs +6 -8
  151. package/src/sources/HyperFuel.res +8 -10
  152. package/src/sources/HyperFuel.res.mjs +113 -123
  153. package/src/sources/HyperFuelClient.res.mjs +6 -7
  154. package/src/sources/HyperFuelSource.res +19 -20
  155. package/src/sources/HyperFuelSource.res.mjs +339 -356
  156. package/src/sources/HyperSync.res +11 -13
  157. package/src/sources/HyperSync.res.mjs +206 -220
  158. package/src/sources/HyperSyncClient.res +5 -7
  159. package/src/sources/HyperSyncClient.res.mjs +70 -75
  160. package/src/sources/HyperSyncHeightStream.res +8 -9
  161. package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
  162. package/src/sources/HyperSyncJsonApi.res +18 -15
  163. package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
  164. package/src/sources/HyperSyncSource.res +17 -21
  165. package/src/sources/HyperSyncSource.res.mjs +268 -290
  166. package/src/sources/Rpc.res +5 -5
  167. package/src/sources/Rpc.res.mjs +168 -192
  168. package/src/sources/RpcSource.res +166 -167
  169. package/src/sources/RpcSource.res.mjs +972 -1046
  170. package/src/sources/RpcWebSocketHeightStream.res +10 -11
  171. package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
  172. package/src/sources/SimulateSource.res +1 -1
  173. package/src/sources/SimulateSource.res.mjs +35 -38
  174. package/src/sources/Source.res +1 -1
  175. package/src/sources/Source.res.mjs +3 -3
  176. package/src/sources/SourceManager.res +39 -20
  177. package/src/sources/SourceManager.res.mjs +340 -371
  178. package/src/sources/SourceManager.resi +2 -1
  179. package/src/sources/Svm.res +12 -5
  180. package/src/sources/Svm.res.mjs +44 -41
  181. package/src/tui/Tui.res +23 -12
  182. package/src/tui/Tui.res.mjs +292 -290
  183. package/src/tui/bindings/Ink.res +2 -4
  184. package/src/tui/bindings/Ink.res.mjs +35 -41
  185. package/src/tui/components/BufferedProgressBar.res +7 -7
  186. package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
  187. package/src/tui/components/CustomHooks.res +1 -2
  188. package/src/tui/components/CustomHooks.res.mjs +102 -122
  189. package/src/tui/components/Messages.res +1 -2
  190. package/src/tui/components/Messages.res.mjs +38 -42
  191. package/src/tui/components/SyncETA.res +10 -11
  192. package/src/tui/components/SyncETA.res.mjs +178 -196
  193. package/src/tui/components/TuiData.res +1 -1
  194. package/src/tui/components/TuiData.res.mjs +7 -6
  195. package/src/vendored/Rest.res +52 -66
  196. package/src/vendored/Rest.res.mjs +324 -364
  197. package/svm.schema.json +67 -0
  198. package/src/Address.gen.ts +0 -8
  199. package/src/Config.gen.ts +0 -19
  200. package/src/Envio.gen.ts +0 -55
  201. package/src/EvmTypes.gen.ts +0 -6
  202. package/src/InMemoryStore.gen.ts +0 -6
  203. package/src/Internal.gen.ts +0 -64
  204. package/src/PgStorage.gen.ts +0 -10
  205. package/src/PgStorage.res.d.mts +0 -5
  206. package/src/Types.ts +0 -56
  207. package/src/bindings/BigDecimal.gen.ts +0 -14
  208. package/src/bindings/BigDecimal.res.d.mts +0 -5
  209. package/src/bindings/BigInt.gen.ts +0 -10
  210. package/src/bindings/BigInt.res +0 -70
  211. package/src/bindings/BigInt.res.d.mts +0 -5
  212. package/src/bindings/BigInt.res.mjs +0 -154
  213. package/src/bindings/Ethers.res.d.mts +0 -5
  214. package/src/bindings/Pino.gen.ts +0 -17
  215. package/src/bindings/Postgres.gen.ts +0 -8
  216. package/src/bindings/Postgres.res.d.mts +0 -5
  217. package/src/bindings/Promise.res +0 -67
  218. package/src/bindings/Promise.res.mjs +0 -26
  219. package/src/db/InternalTable.gen.ts +0 -36
  220. package/src/sources/HyperSyncClient.gen.ts +0 -19
@@ -1,337 +1,339 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
 
3
3
  import * as Env from "../Env.res.mjs";
4
- import * as $$Ink from "./bindings/Ink.res.mjs";
5
- import * as $$Ink$1 from "ink";
6
- import * as Caml from "rescript/lib/es6/caml.js";
4
+ import * as Ink from "./bindings/Ink.res.mjs";
5
+ import * as Ink$1 from "ink";
6
+ import * as Envio from "../Envio.res.mjs";
7
7
  import * as React from "react";
8
- import * as $$String from "rescript/lib/es6/string.js";
9
8
  import * as SyncETA from "./components/SyncETA.res.mjs";
10
9
  import * as TuiData from "./components/TuiData.res.mjs";
11
10
  import * as ChainMap from "../ChainMap.res.mjs";
12
11
  import * as Messages from "./components/Messages.res.mjs";
13
- import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
14
12
  import * as FetchState from "../FetchState.res.mjs";
15
- import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
16
- import * as Caml_option from "rescript/lib/es6/caml_option.js";
17
13
  import * as ChainFetcher from "../ChainFetcher.res.mjs";
14
+ import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
18
15
  import InkBigText from "ink-big-text";
16
+ import * as Primitive_int from "@rescript/runtime/lib/es6/Primitive_int.js";
19
17
  import * as SourceManager from "../sources/SourceManager.res.mjs";
18
+ import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
20
19
  import * as JsxRuntime from "react/jsx-runtime";
21
20
  import * as BufferedProgressBar from "./components/BufferedProgressBar.res.mjs";
22
21
 
23
22
  function Tui$ChainLine(props) {
24
- var poweredByHyperSync = props.poweredByHyperSync;
25
- var endBlock = props.endBlock;
26
- var startBlock = props.startBlock;
27
- var sourceBlock = props.sourceBlock;
28
- var bufferBlock = props.bufferBlock;
29
- var progressBlock = props.progressBlock;
30
- var chainId = props.chainId;
31
- var chainsWidth = Caml.int_min(props.stdoutColumns - 2 | 0, 60);
32
- var headerWidth = props.maxChainIdLength + 10 | 0;
23
+ let poweredByHyperSync = props.poweredByHyperSync;
24
+ let endBlock = props.endBlock;
25
+ let startBlock = props.startBlock;
26
+ let sourceBlock = props.sourceBlock;
27
+ let bufferBlock = props.bufferBlock;
28
+ let progressBlock = props.progressBlock;
29
+ let chainId = props.chainId;
30
+ let chainsWidth = Primitive_int.min(props.stdoutColumns - 2 | 0, 60);
31
+ let headerWidth = props.maxChainIdLength + 10 | 0;
33
32
  if (progressBlock !== undefined && bufferBlock !== undefined && sourceBlock !== undefined) {
34
- var toBlock = endBlock !== undefined && sourceBlock >= endBlock ? endBlock : sourceBlock;
35
- var progressBlockStr = TuiData.formatLocaleString(progressBlock);
36
- var toBlockStr = TuiData.formatLocaleString(toBlock);
37
- var eventsStr = TuiData.formatFloatLocaleString(props.eventsProcessed);
38
- var blocksText = "Blocks: " + progressBlockStr + " / " + toBlockStr + (
39
- Belt_Option.isSome(endBlock) ? " (End Block)" : ""
40
- ) + " ";
41
- var eventsText = "Events: " + eventsStr;
42
- var fitsSameLine = (blocksText.length + eventsText.length | 0) <= chainsWidth;
43
- return JsxRuntime.jsxs($$Ink$1.Box, {
44
- children: [
45
- JsxRuntime.jsxs($$Ink$1.Box, {
46
- children: [
47
- JsxRuntime.jsxs($$Ink$1.Box, {
48
- children: [
49
- JsxRuntime.jsx($$Ink$1.Text, {
50
- children: "Chain: "
51
- }),
52
- JsxRuntime.jsx($$Ink$1.Text, {
53
- children: chainId,
54
- bold: true
55
- }),
56
- JsxRuntime.jsx($$Ink$1.Text, {
57
- children: " "
58
- }),
59
- poweredByHyperSync ? JsxRuntime.jsx($$Ink$1.Text, {
60
- children: "⚡",
61
- color: "#FFBB2F"
62
- }) : null
63
- ],
64
- width: headerWidth
65
- }),
66
- JsxRuntime.jsx(BufferedProgressBar.make, {
67
- loaded: progressBlock - startBlock | 0,
68
- buffered: bufferBlock - startBlock | 0,
69
- outOf: toBlock - startBlock | 0,
70
- barWidth: chainsWidth - headerWidth | 0,
71
- loadingColor: "#FFBB2F"
72
- })
73
- ],
74
- width: chainsWidth,
75
- flexDirection: "row"
76
- }),
77
- JsxRuntime.jsxs($$Ink$1.Box, {
78
- children: [
79
- JsxRuntime.jsx($$Ink$1.Text, {
80
- children: blocksText,
81
- color: "gray"
82
- }),
83
- fitsSameLine ? JsxRuntime.jsx($$Ink$1.Text, {
84
- children: eventsText,
85
- color: "gray"
86
- }) : null
87
- ],
88
- flexDirection: "row"
89
- }),
90
- fitsSameLine ? null : JsxRuntime.jsx($$Ink$1.Box, {
91
- children: Caml_option.some(JsxRuntime.jsx($$Ink$1.Text, {
92
- children: $$String.trim(eventsText),
93
- color: "gray"
94
- })),
95
- flexDirection: "row"
96
- }),
97
- JsxRuntime.jsx($$Ink.Newline.make, {})
98
- ],
99
- flexDirection: "column"
100
- });
33
+ let toBlock = endBlock !== undefined ? Primitive_int.min(sourceBlock, endBlock) : sourceBlock;
34
+ let progressBlockStr = TuiData.formatLocaleString(progressBlock);
35
+ let toBlockStr = TuiData.formatLocaleString(toBlock);
36
+ let eventsStr = TuiData.formatFloatLocaleString(props.eventsProcessed);
37
+ let blocksText = `Blocks: ` + progressBlockStr + ` / ` + toBlockStr + (
38
+ Stdlib_Option.isSome(endBlock) ? " (End Block)" : ""
39
+ ) + ` `;
40
+ let eventsText = `Events: ` + eventsStr;
41
+ let fitsSameLine = (blocksText.length + eventsText.length | 0) <= chainsWidth;
42
+ return JsxRuntime.jsxs(Ink$1.Box, {
43
+ children: [
44
+ JsxRuntime.jsxs(Ink$1.Box, {
45
+ children: [
46
+ JsxRuntime.jsxs(Ink$1.Box, {
47
+ children: [
48
+ JsxRuntime.jsx(Ink$1.Text, {
49
+ children: "Chain: "
50
+ }),
51
+ JsxRuntime.jsx(Ink$1.Text, {
52
+ children: chainId,
53
+ bold: true
54
+ }),
55
+ JsxRuntime.jsx(Ink$1.Text, {
56
+ children: " "
57
+ }),
58
+ poweredByHyperSync ? JsxRuntime.jsx(Ink$1.Text, {
59
+ children: "⚡",
60
+ color: "#FFBB2F"
61
+ }) : null
62
+ ],
63
+ width: headerWidth
64
+ }),
65
+ JsxRuntime.jsx(BufferedProgressBar.make, {
66
+ loaded: progressBlock - startBlock | 0,
67
+ buffered: bufferBlock - startBlock | 0,
68
+ outOf: toBlock - startBlock | 0,
69
+ barWidth: chainsWidth - headerWidth | 0,
70
+ loadingColor: "#FFBB2F"
71
+ })
72
+ ],
73
+ width: chainsWidth,
74
+ flexDirection: "row"
75
+ }),
76
+ JsxRuntime.jsxs(Ink$1.Box, {
77
+ children: [
78
+ JsxRuntime.jsx(Ink$1.Text, {
79
+ children: blocksText,
80
+ color: "gray"
81
+ }),
82
+ fitsSameLine ? JsxRuntime.jsx(Ink$1.Text, {
83
+ children: eventsText,
84
+ color: "gray"
85
+ }) : null
86
+ ],
87
+ flexDirection: "row"
88
+ }),
89
+ fitsSameLine ? null : JsxRuntime.jsx(Ink$1.Box, {
90
+ children: JsxRuntime.jsx(Ink$1.Text, {
91
+ children: eventsText.trim(),
92
+ color: "gray"
93
+ }),
94
+ flexDirection: "row"
95
+ }),
96
+ JsxRuntime.jsx(Ink.Newline.make, {})
97
+ ],
98
+ flexDirection: "column"
99
+ });
101
100
  }
102
101
  return JsxRuntime.jsxs(JsxRuntime.Fragment, {
103
- children: [
104
- JsxRuntime.jsxs($$Ink$1.Box, {
105
- children: [
106
- JsxRuntime.jsxs($$Ink$1.Box, {
107
- children: [
108
- JsxRuntime.jsx($$Ink$1.Text, {
109
- children: "Chain: "
110
- }),
111
- JsxRuntime.jsx($$Ink$1.Text, {
112
- children: chainId,
113
- bold: true
114
- }),
115
- JsxRuntime.jsx($$Ink$1.Text, {
116
- children: " "
117
- }),
118
- poweredByHyperSync ? JsxRuntime.jsx($$Ink$1.Text, {
119
- children: "⚡",
120
- color: "#FFBB2F"
121
- }) : null
122
- ],
123
- width: headerWidth
124
- }),
125
- JsxRuntime.jsx($$Ink$1.Text, {
126
- children: "Loading progress..."
127
- })
128
- ],
129
- width: chainsWidth,
130
- flexDirection: "row"
131
- }),
132
- JsxRuntime.jsx($$Ink.Newline.make, {})
133
- ]
134
- });
102
+ children: [
103
+ JsxRuntime.jsxs(Ink$1.Box, {
104
+ children: [
105
+ JsxRuntime.jsxs(Ink$1.Box, {
106
+ children: [
107
+ JsxRuntime.jsx(Ink$1.Text, {
108
+ children: "Chain: "
109
+ }),
110
+ JsxRuntime.jsx(Ink$1.Text, {
111
+ children: chainId,
112
+ bold: true
113
+ }),
114
+ JsxRuntime.jsx(Ink$1.Text, {
115
+ children: " "
116
+ }),
117
+ poweredByHyperSync ? JsxRuntime.jsx(Ink$1.Text, {
118
+ children: "⚡",
119
+ color: "#FFBB2F"
120
+ }) : null
121
+ ],
122
+ width: headerWidth
123
+ }),
124
+ JsxRuntime.jsx(Ink$1.Text, {
125
+ children: "Loading progress..."
126
+ })
127
+ ],
128
+ width: chainsWidth,
129
+ flexDirection: "row"
130
+ }),
131
+ JsxRuntime.jsx(Ink.Newline.make, {})
132
+ ]
133
+ });
135
134
  }
136
135
 
137
- var ChainLine = {
136
+ let ChainLine = {
138
137
  make: Tui$ChainLine
139
138
  };
140
139
 
141
140
  function Tui$TotalEventsProcessed(props) {
142
- return JsxRuntime.jsxs($$Ink$1.Text, {
143
- children: [
144
- JsxRuntime.jsx($$Ink$1.Text, {
145
- children: "Total Events: ",
146
- bold: true
147
- }),
148
- JsxRuntime.jsx($$Ink$1.Text, {
149
- children: TuiData.formatFloatLocaleString(props.totalEventsProcessed),
150
- color: "#FFBB2F"
151
- })
152
- ]
153
- });
141
+ return JsxRuntime.jsxs(Ink$1.Text, {
142
+ children: [
143
+ JsxRuntime.jsx(Ink$1.Text, {
144
+ children: "Total Events: ",
145
+ bold: true
146
+ }),
147
+ JsxRuntime.jsx(Ink$1.Text, {
148
+ children: TuiData.formatFloatLocaleString(props.totalEventsProcessed),
149
+ color: "#FFBB2F"
150
+ })
151
+ ]
152
+ });
154
153
  }
155
154
 
156
- var TotalEventsProcessed = {
155
+ let TotalEventsProcessed = {
157
156
  make: Tui$TotalEventsProcessed
158
157
  };
159
158
 
160
159
  function Tui$App(props) {
161
- var getState = props.getState;
162
- var stdoutColumns = $$Ink.Hooks.useStdoutColumns();
163
- var match = React.useState(function () {
164
- return getState();
165
- });
166
- var setState = match[1];
167
- var state = match[0];
168
- React.useEffect((function () {
169
- var intervalId = setInterval((function () {
170
- setState(function (param) {
171
- return getState();
172
- });
173
- }), 500);
174
- return (function () {
175
- clearInterval(intervalId);
176
- });
177
- }), [getState]);
178
- var chains = Belt_Array.map(ChainMap.values(state.chainManager.chainFetchers), (function (cf) {
179
- var numEventsProcessed = cf.numEventsProcessed;
180
- var latestFetchedBlockNumber = Caml.int_max(FetchState.bufferBlockNumber(cf.fetchState), 0);
181
- var hasProcessedToEndblock = ChainFetcher.hasProcessedToEndblock(cf);
182
- var knownHeight = ChainFetcher.hasProcessedToEndblock(cf) ? Belt_Option.getWithDefault(cf.fetchState.endBlock, cf.fetchState.knownHeight) : cf.fetchState.knownHeight;
183
- var firstEventBlock = cf.fetchState.firstEventBlock;
184
- var progress;
185
- if (hasProcessedToEndblock) {
186
- progress = {
160
+ let getState = props.getState;
161
+ let stdoutColumns = Ink.Hooks.useStdoutColumns();
162
+ let match = React.useState(() => getState());
163
+ let setState = match[1];
164
+ let state = match[0];
165
+ React.useEffect(() => {
166
+ let intervalId = setInterval(() => setState(param => getState()), 500);
167
+ return () => {
168
+ clearInterval(intervalId);
169
+ };
170
+ }, [getState]);
171
+ let chains = ChainMap.values(state.chainManager.chainFetchers).map(cf => {
172
+ let numEventsProcessed = cf.numEventsProcessed;
173
+ let latestFetchedBlockNumber = Primitive_int.max(FetchState.bufferBlockNumber(cf.fetchState), 0);
174
+ let hasProcessedToEndblock = ChainFetcher.hasProcessedToEndblock(cf);
175
+ let knownHeight = ChainFetcher.hasProcessedToEndblock(cf) ? Stdlib_Option.getOr(cf.fetchState.endBlock, cf.fetchState.knownHeight) : cf.fetchState.knownHeight;
176
+ let firstEventBlock = cf.fetchState.firstEventBlock;
177
+ let progress;
178
+ if (hasProcessedToEndblock) {
179
+ progress = {
180
+ TAG: "Synced",
181
+ _0: {
182
+ firstEventBlockNumber: Stdlib_Option.getOr(firstEventBlock, 0),
183
+ latestProcessedBlock: cf.committedProgressBlockNumber,
184
+ numEventsProcessed: numEventsProcessed,
185
+ timestampCaughtUpToHeadOrEndblock: Stdlib_Option.getOr(cf.timestampCaughtUpToHeadOrEndblock, new Date(Date.now()))
186
+ }
187
+ };
188
+ } else {
189
+ let match = cf.timestampCaughtUpToHeadOrEndblock;
190
+ progress = firstEventBlock !== undefined ? (
191
+ match !== undefined ? ({
187
192
  TAG: "Synced",
188
193
  _0: {
189
- firstEventBlockNumber: Belt_Option.getWithDefault(firstEventBlock, 0),
194
+ firstEventBlockNumber: firstEventBlock,
190
195
  latestProcessedBlock: cf.committedProgressBlockNumber,
191
196
  numEventsProcessed: numEventsProcessed,
192
- timestampCaughtUpToHeadOrEndblock: Belt_Option.getWithDefault(cf.timestampCaughtUpToHeadOrEndblock, new Date(Date.now()))
197
+ timestampCaughtUpToHeadOrEndblock: match
193
198
  }
194
- };
195
- } else {
196
- var match = cf.timestampCaughtUpToHeadOrEndblock;
197
- progress = firstEventBlock !== undefined ? (
198
- match !== undefined ? ({
199
- TAG: "Synced",
200
- _0: {
201
- firstEventBlockNumber: firstEventBlock,
202
- latestProcessedBlock: cf.committedProgressBlockNumber,
203
- numEventsProcessed: numEventsProcessed,
204
- timestampCaughtUpToHeadOrEndblock: Caml_option.valFromOption(match)
205
- }
206
- }) : ({
207
- TAG: "Syncing",
208
- _0: {
209
- firstEventBlockNumber: firstEventBlock,
210
- latestProcessedBlock: cf.committedProgressBlockNumber,
211
- numEventsProcessed: numEventsProcessed
212
- }
213
- })
214
- ) : "SearchingForEvents";
215
- }
216
- return {
217
- chainId: String(cf.chainConfig.id),
218
- eventsProcessed: numEventsProcessed,
219
- progressBlock: cf.committedProgressBlockNumber < cf.fetchState.startBlock ? cf.fetchState.startBlock : cf.committedProgressBlockNumber,
220
- bufferBlock: latestFetchedBlockNumber,
221
- sourceBlock: cf.fetchState.knownHeight,
222
- startBlock: cf.fetchState.startBlock,
223
- endBlock: cf.fetchState.endBlock,
224
- firstEventBlockNumber: cf.fetchState.firstEventBlock,
225
- poweredByHyperSync: SourceManager.getActiveSource(cf.sourceManager).poweredByHyperSync,
226
- progress: progress,
227
- latestFetchedBlockNumber: latestFetchedBlockNumber,
228
- knownHeight: knownHeight
229
- };
230
- }));
231
- var totalEventsProcessed = Belt_Array.reduce(chains, 0, (function (acc, chain) {
232
- return acc + chain.eventsProcessed;
233
- }));
234
- var maxChainIdLength = Belt_Array.reduce(chains, 0, (function (acc, chain) {
235
- var chainIdLength = chain.chainId.length;
236
- if (chainIdLength > acc) {
237
- return chainIdLength;
238
- } else {
239
- return acc;
240
- }
241
- }));
242
- var defaultPassword = "testing";
243
- return JsxRuntime.jsxs($$Ink$1.Box, {
244
- children: [
245
- JsxRuntime.jsx(InkBigText, {
246
- text: "envio",
247
- font: chains.length > 5 ? "tiny" : "block",
248
- colors: [
249
- "#FFBB2F",
250
- "#9860E5"
251
- ],
252
- space: false
253
- }),
254
- JsxRuntime.jsx($$Ink.Newline.make, {}),
255
- Belt_Array.mapWithIndex(chains, (function (i, chainData) {
256
- return JsxRuntime.jsx(Tui$ChainLine, {
257
- chainId: chainData.chainId,
258
- maxChainIdLength: maxChainIdLength,
259
- stdoutColumns: stdoutColumns,
260
- progressBlock: chainData.progressBlock,
261
- bufferBlock: chainData.bufferBlock,
262
- sourceBlock: chainData.sourceBlock,
263
- startBlock: chainData.startBlock,
264
- endBlock: chainData.endBlock,
265
- poweredByHyperSync: chainData.poweredByHyperSync,
266
- eventsProcessed: chainData.eventsProcessed
267
- }, String(i));
268
- })),
269
- JsxRuntime.jsx(Tui$TotalEventsProcessed, {
270
- totalEventsProcessed: totalEventsProcessed
271
- }),
272
- JsxRuntime.jsx(SyncETA.make, {
273
- chains: chains,
274
- indexerStartTime: state.indexerStartTime
275
- }),
276
- JsxRuntime.jsx($$Ink.Newline.make, {}),
277
- JsxRuntime.jsxs($$Ink$1.Box, {
278
- children: [
279
- JsxRuntime.jsx($$Ink$1.Text, {
280
- children: "GraphQL: "
281
- }),
282
- JsxRuntime.jsx($$Ink$1.Text, {
283
- children: Env.Hasura.url,
284
- color: "#6CBFEE",
285
- underline: true
286
- }),
287
- Env.Hasura.secret === defaultPassword ? JsxRuntime.jsx($$Ink$1.Text, {
288
- children: " (password: " + defaultPassword + ")",
289
- color: "gray"
290
- }) : null
291
- ],
292
- flexDirection: "row"
293
- }),
294
- JsxRuntime.jsxs($$Ink$1.Box, {
295
- children: [
296
- JsxRuntime.jsx($$Ink$1.Text, {
297
- children: "Dev Console: "
298
- }),
299
- JsxRuntime.jsx($$Ink$1.Text, {
300
- children: Env.envioAppUrl + "/console",
301
- color: "#6CBFEE",
302
- underline: true
303
- })
304
- ],
305
- flexDirection: "row"
306
- }),
307
- JsxRuntime.jsx(Messages.make, {
308
- config: state.ctx.config
309
- })
310
- ],
311
- flexDirection: "column"
312
- });
199
+ }) : ({
200
+ TAG: "Syncing",
201
+ _0: {
202
+ firstEventBlockNumber: firstEventBlock,
203
+ latestProcessedBlock: cf.committedProgressBlockNumber,
204
+ numEventsProcessed: numEventsProcessed
205
+ }
206
+ })
207
+ ) : "SearchingForEvents";
208
+ }
209
+ return {
210
+ chainId: cf.chainConfig.id.toString(),
211
+ eventsProcessed: numEventsProcessed,
212
+ progressBlock: cf.committedProgressBlockNumber < cf.fetchState.startBlock ? cf.fetchState.startBlock : cf.committedProgressBlockNumber,
213
+ bufferBlock: latestFetchedBlockNumber,
214
+ sourceBlock: cf.fetchState.knownHeight,
215
+ startBlock: cf.fetchState.startBlock,
216
+ endBlock: cf.fetchState.endBlock,
217
+ firstEventBlockNumber: cf.fetchState.firstEventBlock,
218
+ poweredByHyperSync: SourceManager.getActiveSource(cf.sourceManager).poweredByHyperSync,
219
+ progress: progress,
220
+ latestFetchedBlockNumber: latestFetchedBlockNumber,
221
+ knownHeight: knownHeight
222
+ };
223
+ });
224
+ let totalEventsProcessed = Stdlib_Array.reduce(chains, 0, (acc, chain) => acc + chain.eventsProcessed);
225
+ let maxChainIdLength = Stdlib_Array.reduce(chains, 0, (acc, chain) => {
226
+ let chainIdLength = chain.chainId.length;
227
+ if (chainIdLength > acc) {
228
+ return chainIdLength;
229
+ } else {
230
+ return acc;
231
+ }
232
+ });
233
+ let defaultPassword = "testing";
234
+ let match$1 = state.ctx.config.storage.clickhouse;
235
+ let match$2 = Env.ClickHouse.host();
236
+ return JsxRuntime.jsxs(Ink$1.Box, {
237
+ children: [
238
+ JsxRuntime.jsx(InkBigText, {
239
+ text: "envio",
240
+ font: chains.length > 5 ? "tiny" : "block",
241
+ colors: [
242
+ "#FFBB2F",
243
+ "#9860E5"
244
+ ],
245
+ space: false
246
+ }),
247
+ JsxRuntime.jsx(Ink.Newline.make, {}),
248
+ chains.map((chainData, i) => JsxRuntime.jsx(Tui$ChainLine, {
249
+ chainId: chainData.chainId,
250
+ maxChainIdLength: maxChainIdLength,
251
+ stdoutColumns: stdoutColumns,
252
+ progressBlock: chainData.progressBlock,
253
+ bufferBlock: chainData.bufferBlock,
254
+ sourceBlock: chainData.sourceBlock,
255
+ startBlock: chainData.startBlock,
256
+ endBlock: chainData.endBlock,
257
+ poweredByHyperSync: chainData.poweredByHyperSync,
258
+ eventsProcessed: chainData.eventsProcessed
259
+ }, i.toString())),
260
+ JsxRuntime.jsx(Tui$TotalEventsProcessed, {
261
+ totalEventsProcessed: totalEventsProcessed
262
+ }),
263
+ JsxRuntime.jsx(SyncETA.make, {
264
+ chains: chains,
265
+ indexerStartTime: state.indexerStartTime
266
+ }),
267
+ JsxRuntime.jsx(Ink.Newline.make, {}),
268
+ JsxRuntime.jsxs(Ink$1.Box, {
269
+ children: [
270
+ JsxRuntime.jsx(Ink$1.Text, {
271
+ children: "GraphQL: "
272
+ }),
273
+ JsxRuntime.jsx(Ink$1.Text, {
274
+ children: Env.Hasura.url,
275
+ color: "#6CBFEE",
276
+ underline: true
277
+ }),
278
+ Env.Hasura.secret === defaultPassword ? JsxRuntime.jsx(Ink$1.Text, {
279
+ children: ` (password: ` + defaultPassword + `)`,
280
+ color: "gray"
281
+ }) : null
282
+ ],
283
+ flexDirection: "row"
284
+ }),
285
+ Envio.isDevMode() ? JsxRuntime.jsxs(Ink$1.Box, {
286
+ children: [
287
+ JsxRuntime.jsx(Ink$1.Text, {
288
+ children: "Dev Console: "
289
+ }),
290
+ JsxRuntime.jsx(Ink$1.Text, {
291
+ children: Env.envioAppUrl + `/console`,
292
+ color: "#6CBFEE",
293
+ underline: true
294
+ })
295
+ ],
296
+ flexDirection: "row"
297
+ }) : null,
298
+ match$1 && match$2 !== undefined ? JsxRuntime.jsxs(Ink$1.Box, {
299
+ children: [
300
+ JsxRuntime.jsx(Ink$1.Text, {
301
+ children: "ClickHouse: "
302
+ }),
303
+ JsxRuntime.jsx(Ink$1.Text, {
304
+ children: match$2 + `/play`,
305
+ color: "#6CBFEE",
306
+ underline: true
307
+ })
308
+ ],
309
+ flexDirection: "row"
310
+ }) : null,
311
+ JsxRuntime.jsx(Messages.make, {
312
+ config: state.ctx.config
313
+ })
314
+ ],
315
+ flexDirection: "column"
316
+ });
313
317
  }
314
318
 
315
- var App = {
319
+ let App = {
316
320
  make: Tui$App
317
321
  };
318
322
 
319
323
  function start(getState) {
320
- var match = $$Ink.render(undefined, JsxRuntime.jsx(Tui$App, {
321
- getState: getState
322
- }));
323
- var rerender = match.rerender;
324
- return function () {
325
- rerender(JsxRuntime.jsx(Tui$App, {
326
- getState: getState
327
- }));
328
- };
324
+ let match = Ink.render(undefined, JsxRuntime.jsx(Tui$App, {
325
+ getState: getState
326
+ }));
327
+ let rerender = match.rerender;
328
+ return () => rerender(JsxRuntime.jsx(Tui$App, {
329
+ getState: getState
330
+ }));
329
331
  }
330
332
 
331
333
  export {
332
- ChainLine ,
333
- TotalEventsProcessed ,
334
- App ,
335
- start ,
334
+ ChainLine,
335
+ TotalEventsProcessed,
336
+ App,
337
+ start,
336
338
  }
337
339
  /* Env Not a pure module */