envio 3.0.0-alpha.20 → 3.0.0-alpha.22

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 (221) hide show
  1. package/bin.mjs +2 -48
  2. package/evm.schema.json +67 -0
  3. package/fuel.schema.json +67 -0
  4. package/index.d.ts +930 -65
  5. package/index.js +5 -3
  6. package/package.json +16 -9
  7. package/rescript.json +5 -9
  8. package/src/Address.res +4 -5
  9. package/src/Address.res.mjs +9 -12
  10. package/src/Api.res +15 -0
  11. package/src/Api.res.mjs +20 -0
  12. package/src/Batch.res +32 -34
  13. package/src/Batch.res.mjs +172 -187
  14. package/src/Bin.res +89 -0
  15. package/src/Bin.res.mjs +97 -0
  16. package/src/ChainFetcher.res +33 -57
  17. package/src/ChainFetcher.res.mjs +197 -227
  18. package/src/ChainManager.res +6 -14
  19. package/src/ChainManager.res.mjs +74 -85
  20. package/src/ChainMap.res +14 -16
  21. package/src/ChainMap.res.mjs +38 -38
  22. package/src/Config.res +303 -260
  23. package/src/Config.res.mjs +581 -618
  24. package/src/Core.res +182 -0
  25. package/src/Core.res.mjs +207 -0
  26. package/src/Ecosystem.res +25 -4
  27. package/src/Ecosystem.res.mjs +12 -13
  28. package/src/Env.res +24 -13
  29. package/src/Env.res.mjs +128 -111
  30. package/src/EnvSafe.res +269 -0
  31. package/src/EnvSafe.res.mjs +296 -0
  32. package/src/EnvSafe.resi +18 -0
  33. package/src/Envio.res +91 -23
  34. package/src/Envio.res.mjs +70 -33
  35. package/src/ErrorHandling.res +2 -2
  36. package/src/ErrorHandling.res.mjs +15 -15
  37. package/src/EventConfigBuilder.res +546 -0
  38. package/src/EventConfigBuilder.res.mjs +433 -0
  39. package/src/EventProcessing.res +27 -38
  40. package/src/EventProcessing.res.mjs +165 -183
  41. package/src/EventUtils.res +11 -11
  42. package/src/EventUtils.res.mjs +21 -22
  43. package/src/EvmTypes.res +0 -1
  44. package/src/EvmTypes.res.mjs +5 -5
  45. package/src/FetchState.res +360 -256
  46. package/src/FetchState.res.mjs +958 -914
  47. package/src/GlobalState.res +401 -353
  48. package/src/GlobalState.res.mjs +1031 -957
  49. package/src/GlobalStateManager.res +1 -2
  50. package/src/GlobalStateManager.res.mjs +36 -44
  51. package/src/HandlerLoader.res +107 -23
  52. package/src/HandlerLoader.res.mjs +128 -38
  53. package/src/HandlerRegister.res +127 -103
  54. package/src/HandlerRegister.res.mjs +164 -164
  55. package/src/HandlerRegister.resi +13 -5
  56. package/src/Hasura.res +35 -22
  57. package/src/Hasura.res.mjs +158 -167
  58. package/src/InMemoryStore.res +20 -27
  59. package/src/InMemoryStore.res.mjs +64 -80
  60. package/src/InMemoryTable.res +34 -39
  61. package/src/InMemoryTable.res.mjs +165 -170
  62. package/src/Internal.res +88 -34
  63. package/src/Internal.res.mjs +84 -81
  64. package/src/LazyLoader.res.mjs +55 -61
  65. package/src/LoadLayer.res +77 -78
  66. package/src/LoadLayer.res.mjs +160 -189
  67. package/src/LoadManager.res +16 -21
  68. package/src/LoadManager.res.mjs +79 -84
  69. package/src/LogSelection.res +236 -68
  70. package/src/LogSelection.res.mjs +211 -141
  71. package/src/Logging.res +13 -9
  72. package/src/Logging.res.mjs +130 -143
  73. package/src/Main.res +442 -52
  74. package/src/Main.res.mjs +530 -271
  75. package/src/Persistence.res +77 -84
  76. package/src/Persistence.res.mjs +131 -132
  77. package/src/PgStorage.res +291 -167
  78. package/src/PgStorage.res.mjs +797 -817
  79. package/src/Prometheus.res +50 -58
  80. package/src/Prometheus.res.mjs +345 -373
  81. package/src/ReorgDetection.res +22 -24
  82. package/src/ReorgDetection.res.mjs +100 -106
  83. package/src/SafeCheckpointTracking.res +7 -7
  84. package/src/SafeCheckpointTracking.res.mjs +40 -43
  85. package/src/SimulateItems.res +345 -0
  86. package/src/SimulateItems.res.mjs +320 -0
  87. package/src/Sink.res +2 -2
  88. package/src/Sink.res.mjs +22 -26
  89. package/src/TableIndices.res +1 -2
  90. package/src/TableIndices.res.mjs +42 -48
  91. package/src/TestIndexer.res +515 -287
  92. package/src/TestIndexer.res.mjs +592 -421
  93. package/src/TestIndexerProxyStorage.res +15 -16
  94. package/src/TestIndexerProxyStorage.res.mjs +98 -122
  95. package/src/TestIndexerWorker.res +4 -0
  96. package/src/TestIndexerWorker.res.mjs +7 -0
  97. package/src/Throttler.res +3 -3
  98. package/src/Throttler.res.mjs +23 -24
  99. package/src/Time.res +1 -1
  100. package/src/Time.res.mjs +18 -21
  101. package/src/TopicFilter.res +3 -3
  102. package/src/TopicFilter.res.mjs +29 -30
  103. package/src/UserContext.res +93 -54
  104. package/src/UserContext.res.mjs +197 -182
  105. package/src/Utils.res +141 -86
  106. package/src/Utils.res.mjs +334 -295
  107. package/src/bindings/BigDecimal.res +0 -2
  108. package/src/bindings/BigDecimal.res.mjs +19 -23
  109. package/src/bindings/ClickHouse.res +28 -27
  110. package/src/bindings/ClickHouse.res.mjs +243 -240
  111. package/src/bindings/DateFns.res +11 -11
  112. package/src/bindings/DateFns.res.mjs +7 -7
  113. package/src/bindings/EventSource.res +3 -1
  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 +2 -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 +4 -2
  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 +21 -20
  155. package/src/sources/HyperFuelSource.res.mjs +339 -354
  156. package/src/sources/HyperSync.res +47 -78
  157. package/src/sources/HyperSync.res.mjs +212 -242
  158. package/src/sources/HyperSync.resi +2 -4
  159. package/src/sources/HyperSyncClient.res +33 -8
  160. package/src/sources/HyperSyncClient.res.mjs +71 -67
  161. package/src/sources/HyperSyncHeightStream.res +35 -9
  162. package/src/sources/HyperSyncHeightStream.res.mjs +82 -70
  163. package/src/sources/HyperSyncJsonApi.res +18 -15
  164. package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
  165. package/src/sources/HyperSyncSource.res +21 -25
  166. package/src/sources/HyperSyncSource.res.mjs +268 -288
  167. package/src/sources/Rpc.res +5 -5
  168. package/src/sources/Rpc.res.mjs +168 -192
  169. package/src/sources/RpcSource.res +296 -187
  170. package/src/sources/RpcSource.res.mjs +972 -1044
  171. package/src/sources/RpcWebSocketHeightStream.res +10 -11
  172. package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
  173. package/src/sources/SimulateSource.res +59 -0
  174. package/src/sources/SimulateSource.res.mjs +47 -0
  175. package/src/sources/Source.res +1 -1
  176. package/src/sources/Source.res.mjs +3 -3
  177. package/src/sources/SourceManager.res +81 -25
  178. package/src/sources/SourceManager.res.mjs +351 -350
  179. package/src/sources/SourceManager.resi +2 -1
  180. package/src/sources/Svm.res +12 -5
  181. package/src/sources/Svm.res.mjs +44 -41
  182. package/src/tui/Tui.res +23 -12
  183. package/src/tui/Tui.res.mjs +292 -290
  184. package/src/tui/bindings/Ink.res +2 -4
  185. package/src/tui/bindings/Ink.res.mjs +35 -41
  186. package/src/tui/components/BufferedProgressBar.res +7 -7
  187. package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
  188. package/src/tui/components/CustomHooks.res +1 -2
  189. package/src/tui/components/CustomHooks.res.mjs +102 -122
  190. package/src/tui/components/Messages.res +1 -2
  191. package/src/tui/components/Messages.res.mjs +38 -42
  192. package/src/tui/components/SyncETA.res +10 -11
  193. package/src/tui/components/SyncETA.res.mjs +178 -196
  194. package/src/tui/components/TuiData.res +1 -1
  195. package/src/tui/components/TuiData.res.mjs +7 -6
  196. package/src/vendored/Rest.res +52 -66
  197. package/src/vendored/Rest.res.mjs +324 -364
  198. package/svm.schema.json +67 -0
  199. package/src/Address.gen.ts +0 -8
  200. package/src/Config.gen.ts +0 -19
  201. package/src/Envio.gen.ts +0 -55
  202. package/src/EvmTypes.gen.ts +0 -6
  203. package/src/InMemoryStore.gen.ts +0 -6
  204. package/src/Internal.gen.ts +0 -62
  205. package/src/PgStorage.gen.ts +0 -10
  206. package/src/PgStorage.res.d.mts +0 -5
  207. package/src/Types.ts +0 -56
  208. package/src/bindings/BigDecimal.gen.ts +0 -14
  209. package/src/bindings/BigDecimal.res.d.mts +0 -5
  210. package/src/bindings/BigInt.gen.ts +0 -10
  211. package/src/bindings/BigInt.res +0 -70
  212. package/src/bindings/BigInt.res.d.mts +0 -5
  213. package/src/bindings/BigInt.res.mjs +0 -154
  214. package/src/bindings/Ethers.res.d.mts +0 -5
  215. package/src/bindings/Pino.gen.ts +0 -17
  216. package/src/bindings/Postgres.gen.ts +0 -8
  217. package/src/bindings/Postgres.res.d.mts +0 -5
  218. package/src/bindings/Promise.res +0 -67
  219. package/src/bindings/Promise.res.mjs +0 -26
  220. package/src/db/InternalTable.gen.ts +0 -36
  221. package/src/sources/HyperSyncClient.gen.ts +0 -19
package/bin.mjs CHANGED
@@ -1,49 +1,3 @@
1
1
  #!/usr/bin/env node
2
- //@ts-check
3
-
4
- import { spawnSync } from "child_process";
5
- import { createRequire } from "module";
6
-
7
- const require = createRequire(import.meta.url);
8
-
9
- /**
10
- * Returns the executable path for envio located inside node_modules.
11
- * The naming convention is envio-${os}-${arch}
12
- * @see https://nodejs.org/api/os.html#osarch
13
- * @see https://nodejs.org/api/os.html#osplatform
14
- * @example "x/xx/node_modules/envio-darwin-arm64"
15
- */
16
- function getExePath() {
17
- const pkg = `envio-${process.platform}-${process.arch}`;
18
- const bin = "bin/envio";
19
-
20
- try {
21
- return require.resolve(`${pkg}/${bin}`);
22
- } catch {}
23
-
24
- throw new Error(
25
- `Couldn't find envio binary package "${pkg}".\n` +
26
- `Checked: require.resolve("${pkg}/${bin}")\n` +
27
- `If you're using pnpm, yarn, or npm with --omit=optional, ensure optional ` +
28
- `dependencies are installed:\n` +
29
- ` npm install ${pkg}\n`
30
- );
31
- }
32
-
33
- /**
34
- * Runs `envio` with args using nodejs spawn
35
- */
36
- function runEnvio() {
37
- const args = process.argv.slice(2);
38
- const exePath = getExePath();
39
-
40
- const processResult = spawnSync(exePath, args, { stdio: "inherit" });
41
-
42
- if (processResult.error) {
43
- console.error(`Failed to run envio binary at ${exePath}: ${processResult.error.message}`);
44
- process.exit(1);
45
- }
46
- process.exit(processResult.status ?? 1);
47
- }
48
-
49
- runEnvio();
2
+ import { run } from "./src/Bin.res.mjs";
3
+ await run(process.argv.slice(2));
package/evm.schema.json CHANGED
@@ -45,6 +45,17 @@
45
45
  "format": "uint64",
46
46
  "minimum": 0
47
47
  },
48
+ "storage": {
49
+ "description": "Configuration for the storage backends the indexer writes to. Defaults to `postgres: true` when omitted. ClickHouse requires Postgres to be enabled (it is not supported as a single storage yet), and at least one backend must be enabled.",
50
+ "anyOf": [
51
+ {
52
+ "$ref": "#/$defs/StorageConfig"
53
+ },
54
+ {
55
+ "type": "null"
56
+ }
57
+ ]
58
+ },
48
59
  "ecosystem": {
49
60
  "description": "Ecosystem of the project.",
50
61
  "anyOf": [
@@ -123,6 +134,62 @@
123
134
  "chains"
124
135
  ],
125
136
  "$defs": {
137
+ "StorageConfig": {
138
+ "type": "object",
139
+ "properties": {
140
+ "postgres": {
141
+ "description": "Whether to use Postgres as a storage backend (default: true).",
142
+ "type": [
143
+ "boolean",
144
+ "null"
145
+ ]
146
+ },
147
+ "clickhouse": {
148
+ "description": "Whether to additionally sync the indexed data to ClickHouse. Requires Postgres to be enabled (default: false).",
149
+ "type": [
150
+ "boolean",
151
+ "null"
152
+ ]
153
+ }
154
+ },
155
+ "additionalProperties": false,
156
+ "allOf": [
157
+ {
158
+ "not": {
159
+ "properties": {
160
+ "postgres": {
161
+ "const": false
162
+ }
163
+ },
164
+ "required": [
165
+ "postgres"
166
+ ]
167
+ }
168
+ },
169
+ {
170
+ "if": {
171
+ "properties": {
172
+ "clickhouse": {
173
+ "const": true
174
+ }
175
+ },
176
+ "required": [
177
+ "clickhouse"
178
+ ]
179
+ },
180
+ "then": {
181
+ "properties": {
182
+ "postgres": {
183
+ "const": true
184
+ }
185
+ },
186
+ "required": [
187
+ "postgres"
188
+ ]
189
+ }
190
+ }
191
+ ]
192
+ },
126
193
  "EcosystemTag": {
127
194
  "type": "string",
128
195
  "enum": [
package/fuel.schema.json CHANGED
@@ -45,6 +45,17 @@
45
45
  "format": "uint64",
46
46
  "minimum": 0
47
47
  },
48
+ "storage": {
49
+ "description": "Configuration for the storage backends the indexer writes to. Defaults to `postgres: true` when omitted. ClickHouse requires Postgres to be enabled (it is not supported as a single storage yet), and at least one backend must be enabled.",
50
+ "anyOf": [
51
+ {
52
+ "$ref": "#/$defs/StorageConfig"
53
+ },
54
+ {
55
+ "type": "null"
56
+ }
57
+ ]
58
+ },
48
59
  "ecosystem": {
49
60
  "description": "Ecosystem of the project.",
50
61
  "$ref": "#/$defs/EcosystemTag"
@@ -81,6 +92,62 @@
81
92
  "chains"
82
93
  ],
83
94
  "$defs": {
95
+ "StorageConfig": {
96
+ "type": "object",
97
+ "properties": {
98
+ "postgres": {
99
+ "description": "Whether to use Postgres as a storage backend (default: true).",
100
+ "type": [
101
+ "boolean",
102
+ "null"
103
+ ]
104
+ },
105
+ "clickhouse": {
106
+ "description": "Whether to additionally sync the indexed data to ClickHouse. Requires Postgres to be enabled (default: false).",
107
+ "type": [
108
+ "boolean",
109
+ "null"
110
+ ]
111
+ }
112
+ },
113
+ "additionalProperties": false,
114
+ "allOf": [
115
+ {
116
+ "not": {
117
+ "properties": {
118
+ "postgres": {
119
+ "const": false
120
+ }
121
+ },
122
+ "required": [
123
+ "postgres"
124
+ ]
125
+ }
126
+ },
127
+ {
128
+ "if": {
129
+ "properties": {
130
+ "clickhouse": {
131
+ "const": true
132
+ }
133
+ },
134
+ "required": [
135
+ "clickhouse"
136
+ ]
137
+ },
138
+ "then": {
139
+ "properties": {
140
+ "postgres": {
141
+ "const": true
142
+ }
143
+ },
144
+ "required": [
145
+ "postgres"
146
+ ]
147
+ }
148
+ }
149
+ ]
150
+ },
84
151
  "EcosystemTag": {
85
152
  "type": "string",
86
153
  "enum": [