envio 3.0.0-alpha.21 → 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 (219) 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 +822 -38
  5. package/index.js +5 -3
  6. package/package.json +10 -8
  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 +193 -135
  23. package/src/Config.res.mjs +566 -592
  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 +20 -13
  29. package/src/Env.res.mjs +124 -113
  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 +37 -26
  34. package/src/Envio.res.mjs +59 -60
  35. package/src/ErrorHandling.res +2 -2
  36. package/src/ErrorHandling.res.mjs +15 -15
  37. package/src/EventConfigBuilder.res +219 -81
  38. package/src/EventConfigBuilder.res.mjs +259 -202
  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 +365 -351
  48. package/src/GlobalState.res.mjs +958 -992
  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 +12 -4
  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 +52 -33
  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 +428 -51
  74. package/src/Main.res.mjs +528 -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 +41 -49
  86. package/src/SimulateItems.res.mjs +257 -272
  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 +196 -189
  92. package/src/TestIndexer.res.mjs +536 -536
  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.mjs +2 -2
  114. package/src/bindings/Express.res +2 -5
  115. package/src/bindings/Hrtime.res +2 -2
  116. package/src/bindings/Hrtime.res.mjs +30 -32
  117. package/src/bindings/Lodash.res.mjs +1 -1
  118. package/src/bindings/NodeJs.res +14 -9
  119. package/src/bindings/NodeJs.res.mjs +20 -20
  120. package/src/bindings/Pino.res +8 -10
  121. package/src/bindings/Pino.res.mjs +40 -43
  122. package/src/bindings/Postgres.res +2 -5
  123. package/src/bindings/Postgres.res.mjs +9 -9
  124. package/src/bindings/PromClient.res +17 -2
  125. package/src/bindings/PromClient.res.mjs +30 -7
  126. package/src/bindings/SDSL.res.mjs +2 -2
  127. package/src/bindings/Viem.res +4 -4
  128. package/src/bindings/Viem.res.mjs +20 -22
  129. package/src/bindings/Vitest.res +1 -1
  130. package/src/bindings/Vitest.res.mjs +2 -2
  131. package/src/bindings/WebSocket.res +1 -1
  132. package/src/db/EntityHistory.res +9 -3
  133. package/src/db/EntityHistory.res.mjs +84 -59
  134. package/src/db/InternalTable.res +62 -60
  135. package/src/db/InternalTable.res.mjs +271 -203
  136. package/src/db/Schema.res +1 -2
  137. package/src/db/Schema.res.mjs +28 -32
  138. package/src/db/Table.res +28 -27
  139. package/src/db/Table.res.mjs +276 -292
  140. package/src/sources/EventRouter.res +21 -16
  141. package/src/sources/EventRouter.res.mjs +55 -57
  142. package/src/sources/Evm.res +17 -1
  143. package/src/sources/Evm.res.mjs +16 -8
  144. package/src/sources/EvmChain.res +15 -17
  145. package/src/sources/EvmChain.res.mjs +40 -42
  146. package/src/sources/Fuel.res +14 -1
  147. package/src/sources/Fuel.res.mjs +16 -8
  148. package/src/sources/FuelSDK.res +1 -1
  149. package/src/sources/FuelSDK.res.mjs +6 -8
  150. package/src/sources/HyperFuel.res +8 -10
  151. package/src/sources/HyperFuel.res.mjs +113 -123
  152. package/src/sources/HyperFuelClient.res.mjs +6 -7
  153. package/src/sources/HyperFuelSource.res +19 -20
  154. package/src/sources/HyperFuelSource.res.mjs +339 -356
  155. package/src/sources/HyperSync.res +11 -13
  156. package/src/sources/HyperSync.res.mjs +206 -220
  157. package/src/sources/HyperSyncClient.res +5 -7
  158. package/src/sources/HyperSyncClient.res.mjs +70 -75
  159. package/src/sources/HyperSyncHeightStream.res +8 -9
  160. package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
  161. package/src/sources/HyperSyncJsonApi.res +18 -15
  162. package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
  163. package/src/sources/HyperSyncSource.res +17 -21
  164. package/src/sources/HyperSyncSource.res.mjs +268 -290
  165. package/src/sources/Rpc.res +5 -5
  166. package/src/sources/Rpc.res.mjs +168 -192
  167. package/src/sources/RpcSource.res +166 -167
  168. package/src/sources/RpcSource.res.mjs +972 -1046
  169. package/src/sources/RpcWebSocketHeightStream.res +10 -11
  170. package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
  171. package/src/sources/SimulateSource.res +1 -1
  172. package/src/sources/SimulateSource.res.mjs +35 -38
  173. package/src/sources/Source.res +1 -1
  174. package/src/sources/Source.res.mjs +3 -3
  175. package/src/sources/SourceManager.res +39 -20
  176. package/src/sources/SourceManager.res.mjs +340 -371
  177. package/src/sources/SourceManager.resi +2 -1
  178. package/src/sources/Svm.res +12 -5
  179. package/src/sources/Svm.res.mjs +44 -41
  180. package/src/tui/Tui.res +23 -12
  181. package/src/tui/Tui.res.mjs +292 -290
  182. package/src/tui/bindings/Ink.res +2 -4
  183. package/src/tui/bindings/Ink.res.mjs +35 -41
  184. package/src/tui/components/BufferedProgressBar.res +7 -7
  185. package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
  186. package/src/tui/components/CustomHooks.res +1 -2
  187. package/src/tui/components/CustomHooks.res.mjs +102 -122
  188. package/src/tui/components/Messages.res +1 -2
  189. package/src/tui/components/Messages.res.mjs +38 -42
  190. package/src/tui/components/SyncETA.res +10 -11
  191. package/src/tui/components/SyncETA.res.mjs +178 -196
  192. package/src/tui/components/TuiData.res +1 -1
  193. package/src/tui/components/TuiData.res.mjs +7 -6
  194. package/src/vendored/Rest.res +52 -66
  195. package/src/vendored/Rest.res.mjs +324 -364
  196. package/svm.schema.json +67 -0
  197. package/src/Address.gen.ts +0 -8
  198. package/src/Config.gen.ts +0 -19
  199. package/src/Envio.gen.ts +0 -55
  200. package/src/EvmTypes.gen.ts +0 -6
  201. package/src/InMemoryStore.gen.ts +0 -6
  202. package/src/Internal.gen.ts +0 -64
  203. package/src/PgStorage.gen.ts +0 -10
  204. package/src/PgStorage.res.d.mts +0 -5
  205. package/src/Types.ts +0 -56
  206. package/src/bindings/BigDecimal.gen.ts +0 -14
  207. package/src/bindings/BigDecimal.res.d.mts +0 -5
  208. package/src/bindings/BigInt.gen.ts +0 -10
  209. package/src/bindings/BigInt.res +0 -70
  210. package/src/bindings/BigInt.res.d.mts +0 -5
  211. package/src/bindings/BigInt.res.mjs +0 -154
  212. package/src/bindings/Ethers.res.d.mts +0 -5
  213. package/src/bindings/Pino.gen.ts +0 -17
  214. package/src/bindings/Postgres.gen.ts +0 -8
  215. package/src/bindings/Postgres.res.d.mts +0 -5
  216. package/src/bindings/Promise.res +0 -67
  217. package/src/bindings/Promise.res.mjs +0 -26
  218. package/src/db/InternalTable.gen.ts +0 -36
  219. package/src/sources/HyperSyncClient.gen.ts +0 -19
@@ -5,7 +5,7 @@ let isPrimaryKey = true
5
5
  let isNullable = true
6
6
  let isIndex = true
7
7
 
8
- module DynamicContractRegistry = Config.DynamicContractRegistry
8
+ module EnvioAddresses = Config.EnvioAddresses
9
9
 
10
10
  module Chains = {
11
11
  type progressFields = [
@@ -42,17 +42,23 @@ module Chains = {
42
42
  ]
43
43
 
44
44
  type metaFields = {
45
- @as("first_event_block") firstEventBlockNumber: Js.null<int>,
45
+ @as("first_event_block")
46
+ firstEventBlockNumber: Null.t<
47
+ // Push id first (for WHERE clause)
48
+
49
+ // Then push all updateable field values (for SET clause)
50
+ int,
51
+ >,
46
52
  @as("buffer_block") latestFetchedBlockNumber: int,
47
53
  @as("ready_at")
48
- timestampCaughtUpToHeadOrEndblock: Js.null<Js.Date.t>,
54
+ timestampCaughtUpToHeadOrEndblock: Null.t<Date.t>,
49
55
  @as("_is_hyper_sync") isHyperSync: bool,
50
56
  }
51
57
 
52
58
  type t = {
53
59
  @as("id") id: int,
54
60
  @as("start_block") startBlock: int,
55
- @as("end_block") endBlock: Js.null<int>,
61
+ @as("end_block") endBlock: Null.t<int>,
56
62
  @as("max_reorg_depth") maxReorgDepth: int,
57
63
  @as("source_block") blockHeight: int,
58
64
  @as("progress_block") progressBlockNumber: int,
@@ -99,12 +105,12 @@ module Chains = {
99
105
  {
100
106
  id: chainConfig.id,
101
107
  startBlock: chainConfig.startBlock,
102
- endBlock: chainConfig.endBlock->Js.Null.fromOption,
108
+ endBlock: chainConfig.endBlock->Null.fromOption,
103
109
  maxReorgDepth: chainConfig.maxReorgDepth,
104
110
  blockHeight: 0,
105
- firstEventBlockNumber: Js.Null.empty,
111
+ firstEventBlockNumber: Null.null,
106
112
  latestFetchedBlockNumber: -1,
107
- timestampCaughtUpToHeadOrEndblock: Js.Null.empty,
113
+ timestampCaughtUpToHeadOrEndblock: Null.null,
108
114
  progressBlockNumber: -1,
109
115
  isHyperSync: false,
110
116
  numEventsProcessed: 0.,
@@ -122,23 +128,22 @@ module Chains = {
122
128
  let valuesRows = chainConfigs->Belt.Array.map(chainConfig => {
123
129
  let initialValues = initialFromConfig(chainConfig)
124
130
  let values = fields->Belt.Array.map((field: field) => {
125
- let value =
126
- initialValues->(Utils.magic: t => dict<unknown>)->Js.Dict.get((field :> string))
127
- switch Js.typeof(value) {
128
- | "object" => "NULL"
129
- | "number" => value->(Utils.magic: option<unknown> => int)->Belt.Int.toString
130
- | "bigint" => value->(Utils.magic: option<unknown> => bigint)->BigInt.toString
131
- | "boolean" => value->(Utils.magic: option<unknown> => bool) ? "true" : "false"
132
- | _ => Js.Exn.raiseError("Invalid envio_chains value type")
131
+ let value = initialValues->(Utils.magic: t => dict<unknown>)->Dict.get((field :> string))
132
+ switch typeof(value) {
133
+ | #object => "NULL"
134
+ | #number => value->(Utils.magic: option<unknown> => int)->Belt.Int.toString
135
+ | #bigint => value->(Utils.magic: option<unknown> => bigint)->BigInt.toString
136
+ | #boolean => value->(Utils.magic: option<unknown> => bool) ? "true" : "false"
137
+ | _ => JsError.throwWithMessage("Invalid envio_chains value type")
133
138
  }
134
139
  })
135
140
 
136
- `(${values->Js.Array2.joinWith(", ")})`
141
+ `(${values->Array.joinUnsafe(", ")})`
137
142
  })
138
143
 
139
144
  Some(
140
- `INSERT INTO "${pgSchema}"."${table.tableName}" (${columnNames->Js.Array2.joinWith(", ")})
141
- VALUES ${valuesRows->Js.Array2.joinWith(",\n ")};`,
145
+ `INSERT INTO "${pgSchema}"."${table.tableName}" (${columnNames->Array.joinUnsafe(", ")})
146
+ VALUES ${valuesRows->Array.joinUnsafe(",\n ")};`,
142
147
  )
143
148
  }
144
149
  }
@@ -155,27 +160,23 @@ VALUES ${valuesRows->Js.Array2.joinWith(",\n ")};`,
155
160
  })
156
161
 
157
162
  `UPDATE "${pgSchema}"."${table.tableName}"
158
- SET ${setClauses->Js.Array2.joinWith(",\n ")}
163
+ SET ${setClauses->Array.joinUnsafe(",\n ")}
159
164
  WHERE "${(#id: field :> string)}" = $1;`
160
165
  }
161
166
 
162
167
  type rawInitialState = {
163
168
  id: int,
164
169
  startBlock: int,
165
- endBlock: Js.Null.t<int>,
170
+ endBlock: Null.t<int>,
166
171
  maxReorgDepth: int,
167
- firstEventBlockNumber: Js.Null.t<int>,
168
- timestampCaughtUpToHeadOrEndblock: Js.Null.t<Js.Date.t>,
172
+ firstEventBlockNumber: Null.t<int>,
173
+ timestampCaughtUpToHeadOrEndblock: Null.t<Date.t>,
169
174
  numEventsProcessed: float,
170
175
  progressBlockNumber: int,
171
- dynamicContracts: array<Internal.indexingContract>,
176
+ indexingAddresses: array<Internal.indexingAddress>,
172
177
  sourceBlockNumber: int,
173
178
  }
174
179
 
175
- // FIXME: Using registering_event_block_number for startBlock
176
- // seems incorrect, since there might be a custom start block
177
- // for the contract.
178
- // TODO: Write a repro test where it might break something and fix
179
180
  let makeGetInitialStateQuery = (~pgSchema) => {
180
181
  `SELECT "${(#id: field :> string)}" as "id",
181
182
  "${(#start_block: field :> string)}" as "startBlock",
@@ -187,15 +188,17 @@ WHERE "${(#id: field :> string)}" = $1;`
187
188
  "${(#progress_block: field :> string)}" as "progressBlockNumber",
188
189
  "${(#source_block: field :> string)}" as "sourceBlockNumber",
189
190
  (
191
+ -- envio_addresses.id is a composite "{chainId}-{address}" string produced by
192
+ -- Config.EnvioAddresses.makeId; extract the address by taking everything
193
+ -- after the first '-'. Keep in sync with makeId / getAddress.
190
194
  SELECT COALESCE(json_agg(json_build_object(
191
- 'address', "contract_address",
195
+ 'address', SUBSTRING("id" FROM POSITION('-' IN "id") + 1),
192
196
  'contractName', "contract_name",
193
- 'startBlock', "registering_event_block_number",
194
- 'registrationBlock', "registering_event_block_number"
197
+ 'registrationBlock', "registration_block"
195
198
  )), '[]'::json)
196
- FROM "${pgSchema}"."${DynamicContractRegistry.table.tableName}"
199
+ FROM "${pgSchema}"."${EnvioAddresses.table.tableName}"
197
200
  WHERE "chain_id" = chains."${(#id: field :> string)}"
198
- ) as "dynamicContracts"
201
+ ) as "indexingAddresses"
199
202
  FROM "${pgSchema}"."${table.tableName}" as chains;`
200
203
  }
201
204
 
@@ -215,7 +218,7 @@ FROM "${pgSchema}"."${table.tableName}" as chains;`
215
218
  })
216
219
 
217
220
  `UPDATE "${pgSchema}"."${table.tableName}"
218
- SET ${setClauses->Js.Array2.joinWith(",\n ")}
221
+ SET ${setClauses->Array.joinUnsafe(",\n ")}
219
222
  WHERE "id" = $1;`
220
223
  }
221
224
 
@@ -228,16 +231,16 @@ WHERE "id" = $1;`
228
231
  let params = []
229
232
 
230
233
  // Push id first (for WHERE clause)
231
- params->Js.Array2.push(chainId->(Utils.magic: string => unknown))->ignore
234
+ params->Array.push(chainId->(Utils.magic: string => unknown))->ignore
232
235
 
233
236
  // Then push all updateable field values (for SET clause)
234
- metaFields->Js.Array2.forEach(field => {
237
+ metaFields->Array.forEach(field => {
235
238
  let value =
236
- data->(Utils.magic: metaFields => dict<unknown>)->Js.Dict.unsafeGet((field :> string))
237
- params->Js.Array2.push(value)->ignore
239
+ data->(Utils.magic: metaFields => dict<unknown>)->Dict.getUnsafe((field :> string))
240
+ params->Array.push(value)->ignore
238
241
  })
239
242
 
240
- promises->Js.Array2.push(sql->Postgres.preparedUnsafe(query, params->Obj.magic))->ignore
243
+ promises->Array.push(sql->Postgres.preparedUnsafe(query, params->Obj.magic))->ignore
241
244
  })
242
245
 
243
246
  Promise.all(promises)
@@ -255,16 +258,14 @@ WHERE "id" = $1;`
255
258
 
256
259
  let promises = []
257
260
 
258
- progressedChains->Js.Array2.forEach(data => {
261
+ progressedChains->Array.forEach(data => {
259
262
  let params = []
260
263
 
261
- // Push id first (for WHERE clause)
262
- params->Js.Array2.push(data.chainId->(Utils.magic: int => unknown))->ignore
264
+ params->Array.push(data.chainId->(Utils.magic: int => unknown))->ignore
263
265
 
264
- // Then push all updateable field values (for SET clause)
265
- progressFields->Js.Array2.forEach(field => {
266
+ progressFields->Array.forEach(field => {
266
267
  params
267
- ->Js.Array2.push(
268
+ ->Array.push(
268
269
  switch field {
269
270
  | #progress_block => data.progressBlockNumber->(Utils.magic: int => unknown)
270
271
  | #events_processed => data.totalEventsProcessed->(Utils.magic: float => unknown)
@@ -274,10 +275,10 @@ WHERE "id" = $1;`
274
275
  ->ignore
275
276
  })
276
277
 
277
- promises->Js.Array2.push(sql->Postgres.preparedUnsafe(query, params->Obj.magic))->ignore
278
+ promises->Array.push(sql->Postgres.preparedUnsafe(query, params->Obj.magic))->ignore
278
279
  })
279
280
 
280
- Promise.all(promises)->Promise.ignoreValue
281
+ Promise.all(promises)->Utils.Promise.ignoreValue
281
282
  }
282
283
  }
283
284
 
@@ -318,19 +319,22 @@ module Checkpoints = {
318
319
  @as("block_number")
319
320
  blockNumber: int,
320
321
  @as("block_hash")
321
- blockHash: Js.null<string>,
322
+ blockHash: Null.t<string>,
322
323
  @as("events_processed")
323
324
  eventsProcessed: int,
324
325
  }
325
326
 
326
327
  // Schema for parsing DB results where BIGINT columns come back as strings
327
328
  let dbSchema = S.object(s => {
328
- id: s.field("id", BigInt.schema),
329
+ id: s.field("id", Utils.BigInt.schema),
329
330
  chainId: s.field("chain_id", S.int),
330
331
  blockNumber: s.field("block_number", S.int),
331
332
  blockHash: s.field(
332
333
  "block_hash",
333
- S.union([S.string->(Utils.magic: S.t<string> => S.t<Js.null<string>>), S.literal(%raw(`null`))]),
334
+ S.union([
335
+ S.string->(Utils.magic: S.t<string> => S.t<Null.t<string>>),
336
+ S.literal(%raw(`null`)),
337
+ ]),
334
338
  ),
335
339
  eventsProcessed: s.field("events_processed", S.int),
336
340
  })
@@ -395,7 +399,7 @@ SELECT * FROM unnest($1::${(BigInt: Postgres.columnType :> string)}[],$2::${(Int
395
399
  let query = makeInsertCheckpointQuery(~pgSchema)
396
400
 
397
401
  // Convert bigint arrays to string arrays for postgres driver compatibility
398
- let checkpointIdStrings = checkpointIds->BigInt.arrayToStringArray
402
+ let checkpointIdStrings = checkpointIds->Utils.BigInt.arrayToStringArray
399
403
  sql
400
404
  ->Postgres.preparedUnsafe(
401
405
  query,
@@ -407,11 +411,11 @@ SELECT * FROM unnest($1::${(BigInt: Postgres.columnType :> string)}[],$2::${(Int
407
411
  checkpointEventsProcessed,
408
412
  )->(
409
413
  Utils.magic: (
410
- (array<string>, array<int>, array<int>, array<Js.Null.t<string>>, array<int>)
414
+ (array<string>, array<int>, array<int>, array<Null.t<string>>, array<int>)
411
415
  ) => unknown
412
416
  ),
413
417
  )
414
- ->Promise.ignoreValue
418
+ ->Utils.Promise.ignoreValue
415
419
  }
416
420
 
417
421
  let rollback = (sql, ~pgSchema, ~rollbackTargetCheckpointId: Internal.checkpointId) => {
@@ -420,7 +424,7 @@ SELECT * FROM unnest($1::${(BigInt: Postgres.columnType :> string)}[],$2::${(Int
420
424
  `DELETE FROM "${pgSchema}"."${table.tableName}" WHERE "${(#id: field :> string)}" > $1;`,
421
425
  [rollbackTargetCheckpointId->BigInt.toString]->(Utils.magic: array<string> => unknown),
422
426
  )
423
- ->Promise.ignoreValue
427
+ ->Utils.Promise.ignoreValue
424
428
  }
425
429
 
426
430
  let makePruneStaleCheckpointsQuery = (~pgSchema) => {
@@ -433,7 +437,7 @@ SELECT * FROM unnest($1::${(BigInt: Postgres.columnType :> string)}[],$2::${(Int
433
437
  makePruneStaleCheckpointsQuery(~pgSchema),
434
438
  [safeCheckpointId->BigInt.toString]->Obj.magic,
435
439
  )
436
- ->Promise.ignoreValue
440
+ ->Utils.Promise.ignoreValue
437
441
  }
438
442
 
439
443
  let makeGetRollbackTargetCheckpointQuery = (~pgSchema) => {
@@ -459,7 +463,7 @@ LIMIT 1;`
459
463
  )
460
464
  ->(Utils.magic: promise<unknown> => promise<array<{"id": string}>>)
461
465
  rawResult->Promise.thenResolve(rows => {
462
- rows->Belt.Array.get(0)->Belt.Option.map(row => row["id"]->BigInt.fromStringUnsafe)
466
+ rows->Belt.Array.get(0)->Belt.Option.map(row => row["id"]->BigInt.fromStringOrThrow)
463
467
  })
464
468
  }
465
469
 
@@ -496,8 +500,6 @@ GROUP BY "${(#chain_id: field :> string)}";`
496
500
  }
497
501
 
498
502
  module RawEvents = {
499
- // @genType Used for Test DB and internal tests
500
- @genType
501
503
  type t = {
502
504
  @as("chain_id") chainId: int,
503
505
  @as("event_id") eventId: bigint,
@@ -508,9 +510,9 @@ module RawEvents = {
508
510
  @as("src_address") srcAddress: Address.t,
509
511
  @as("block_hash") blockHash: string,
510
512
  @as("block_timestamp") blockTimestamp: int,
511
- @as("block_fields") blockFields: Js.Json.t,
512
- @as("transaction_fields") transactionFields: Js.Json.t,
513
- params: Js.Json.t,
513
+ @as("block_fields") blockFields: JSON.t,
514
+ @as("transaction_fields") transactionFields: JSON.t,
515
+ params: JSON.t,
514
516
  }
515
517
 
516
518
  let schema = S.schema(s => {