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
@@ -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 => {