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
@@ -21,8 +21,8 @@ type initialChainState = {
21
21
  progressBlockNumber: int,
22
22
  numEventsProcessed: float,
23
23
  firstEventBlockNumber: option<int>,
24
- timestampCaughtUpToHeadOrEndblock: option<Js.Date.t>,
25
- dynamicContracts: array<Internal.indexingContract>,
24
+ timestampCaughtUpToHeadOrEndblock: option<Date.t>,
25
+ indexingAddresses: array<Internal.indexingAddress>,
26
26
  sourceBlockNumber: int,
27
27
  }
28
28
 
@@ -49,6 +49,8 @@ type updatedEntity = {
49
49
  }
50
50
 
51
51
  type storage = {
52
+ // Identifier used as the `storage` label on Prometheus metrics.
53
+ name: string,
52
54
  // Should return true if we already have persisted data
53
55
  // and we can skip initialization
54
56
  isInitialized: unit => promise<bool>,
@@ -142,10 +144,9 @@ let make = (
142
144
  ~allEnums,
143
145
  ~storage,
144
146
  ) => {
145
- let allEntities =
146
- userEntities->Js.Array2.concat([InternalTable.DynamicContractRegistry.entityConfig])
147
+ let allEntities = userEntities->Array.concat([InternalTable.EnvioAddresses.entityConfig])
147
148
  let allEnums =
148
- allEnums->Js.Array2.concat([EntityHistory.RowAction.config->Table.fromGenericEnumConfig])
149
+ allEnums->Array.concat([EntityHistory.RowAction.config->Table.fromGenericEnumConfig])
149
150
  {
150
151
  userEntities,
151
152
  allEntities,
@@ -192,8 +193,8 @@ let init = {
192
193
  Logging.info(`Found existing indexer storage. Resuming indexing state...`)
193
194
  let initialState = await persistence.storage.resumeInitialState()
194
195
  persistence.storageStatus = Ready(initialState)
195
- let progress = Js.Dict.empty()
196
- initialState.chains->Js.Array2.forEach(c => {
196
+ let progress = Dict.make()
197
+ initialState.chains->Array.forEach(c => {
197
198
  progress->Utils.Dict.setByInt(c.id, c.progressBlockNumber)
198
199
  })
199
200
  Logging.info({
@@ -213,7 +214,7 @@ let getInitializedStorageOrThrow = persistence => {
213
214
  switch persistence.storageStatus {
214
215
  | Unknown
215
216
  | Initializing(_) =>
216
- Js.Exn.raiseError(`Failed to access the indexer storage. The Persistence layer is not initialized.`)
217
+ JsError.throwWithMessage(`Failed to access the indexer storage. The Persistence layer is not initialized.`)
217
218
  | Ready(_) => persistence.storage
218
219
  }
219
220
  }
@@ -222,7 +223,7 @@ let getInitializedState = persistence => {
222
223
  switch persistence.storageStatus {
223
224
  | Unknown
224
225
  | Initializing(_) =>
225
- Js.Exn.raiseError(`Failed to access the initial state. The Persistence layer is not initialized.`)
226
+ JsError.throwWithMessage(`Failed to access the initial state. The Persistence layer is not initialized.`)
226
227
  | Ready(initialState) => initialState
227
228
  }
228
229
  }
@@ -237,9 +238,9 @@ let writeBatch = (
237
238
  switch persistence.storageStatus {
238
239
  | Unknown
239
240
  | Initializing(_) =>
240
- Js.Exn.raiseError(`Failed to access the indexer storage. The Persistence layer is not initialized.`)
241
+ JsError.throwWithMessage(`Failed to access the indexer storage. The Persistence layer is not initialized.`)
241
242
  | Ready({cache}) =>
242
- let updatedEntities = persistence.allEntities->Belt.Array.keepMapU(entityConfig => {
243
+ let updatedEntities = persistence.allEntities->Belt.Array.keepMap(entityConfig => {
243
244
  let updates =
244
245
  inMemoryStore
245
246
  ->InMemoryStore.getInMemTable(~entityConfig)
@@ -259,47 +260,40 @@ let writeBatch = (
259
260
  ~allEntities=persistence.allEntities,
260
261
  ~updatedEntities,
261
262
  ~updatedEffectsCache={
262
- inMemoryStore.effects
263
- ->Js.Dict.keys
264
- ->Belt.Array.keepMapU(effectName => {
265
- let inMemTable = inMemoryStore.effects->Js.Dict.unsafeGet(effectName)
263
+ let acc = []
264
+ inMemoryStore.effects->Utils.Dict.forEach(inMemTable => {
266
265
  let {idsToStore, dict, effect, invalidationsCount} = inMemTable
267
266
  switch idsToStore {
268
- | [] => None
269
- | ids => {
270
- let items = Belt.Array.makeUninitializedUnsafe(ids->Belt.Array.length)
271
- ids->Belt.Array.forEachWithIndex((index, id) => {
272
- items->Js.Array2.unsafe_set(
273
- index,
274
- (
275
- {
276
- id,
277
- output: dict->Js.Dict.unsafeGet(id),
278
- }: Internal.effectCacheItem
279
- ),
280
- )
281
- })
282
- Some({
283
- let effectName = effect.name
284
- let effectCacheRecord = switch cache->Utils.Dict.dangerouslyGetNonOption(
285
- effectName,
286
- ) {
287
- | Some(c) => c
288
- | None => {
289
- let c = {effectName, count: 0}
290
- cache->Js.Dict.set(effectName, c)
291
- c
292
- }
293
- }
294
- let shouldInitialize = effectCacheRecord.count === 0
295
- effectCacheRecord.count =
296
- effectCacheRecord.count + items->Js.Array2.length - invalidationsCount
297
- Prometheus.EffectCacheCount.set(~count=effectCacheRecord.count, ~effectName)
298
- {effect, items, shouldInitialize}
299
- })
267
+ | [] => ()
268
+ | ids =>
269
+ let items = Belt.Array.makeUninitializedUnsafe(ids->Belt.Array.length)
270
+ ids->Belt.Array.forEachWithIndex((index, id) => {
271
+ items->Array.setUnsafe(
272
+ index,
273
+ (
274
+ {
275
+ id,
276
+ output: dict->Dict.getUnsafe(id),
277
+ }: Internal.effectCacheItem
278
+ ),
279
+ )
280
+ })
281
+ let effectName = effect.name
282
+ let effectCacheRecord = switch cache->Utils.Dict.dangerouslyGetNonOption(effectName) {
283
+ | Some(c) => c
284
+ | None =>
285
+ let c = {effectName, count: 0}
286
+ cache->Dict.set(effectName, c)
287
+ c
300
288
  }
289
+ let shouldInitialize = effectCacheRecord.count === 0
290
+ effectCacheRecord.count =
291
+ effectCacheRecord.count + items->Array.length - invalidationsCount
292
+ Prometheus.EffectCacheCount.set(~count=effectCacheRecord.count, ~effectName)
293
+ acc->Array.push({effect, items, shouldInitialize})->ignore
301
294
  }
302
295
  })
296
+ acc
303
297
  },
304
298
  )
305
299
  }
@@ -314,49 +308,48 @@ let prepareRollbackDiff = async (
314
308
  ~rollbackTargetCheckpointId,
315
309
  )
316
310
 
317
- let deletedEntities = Js.Dict.empty()
318
- let setEntities = Js.Dict.empty()
311
+ let deletedEntities = Dict.make()
312
+ let setEntities = Dict.make()
319
313
 
320
- let _ =
321
- await persistence.allEntities
322
- ->Belt.Array.map(async entityConfig => {
323
- let entityTable = inMemStore->InMemoryStore.getInMemTable(~entityConfig)
314
+ let _ = await persistence.allEntities
315
+ ->Belt.Array.map(async entityConfig => {
316
+ let entityTable = inMemStore->InMemoryStore.getInMemTable(~entityConfig)
324
317
 
325
- let (removedIdsResult, restoredEntitiesResult) = await persistence.storage.getRollbackData(
326
- ~entityConfig,
327
- ~rollbackTargetCheckpointId,
328
- )
318
+ let (removedIdsResult, restoredEntitiesResult) = await persistence.storage.getRollbackData(
319
+ ~entityConfig,
320
+ ~rollbackTargetCheckpointId,
321
+ )
329
322
 
330
- // Process removed IDs
331
- removedIdsResult->Js.Array2.forEach(data => {
332
- deletedEntities->Utils.Dict.push(entityConfig.name, data["id"])
333
- entityTable->InMemoryTable.Entity.set(
334
- Delete({
335
- entityId: data["id"],
336
- checkpointId: rollbackDiffCheckpointId,
337
- }),
338
- ~shouldSaveHistory=false,
339
- ~containsRollbackDiffChange=true,
340
- )
341
- })
323
+ // Process removed IDs
324
+ removedIdsResult->Array.forEach(data => {
325
+ deletedEntities->Utils.Dict.push(entityConfig.name, data["id"])
326
+ entityTable->InMemoryTable.Entity.set(
327
+ Delete({
328
+ entityId: data["id"],
329
+ checkpointId: rollbackDiffCheckpointId,
330
+ }),
331
+ ~shouldSaveHistory=false,
332
+ ~containsRollbackDiffChange=true,
333
+ )
334
+ })
342
335
 
343
- let restoredEntities = restoredEntitiesResult->S.parseOrThrow(entityConfig.rowsSchema)
336
+ let restoredEntities = restoredEntitiesResult->S.parseOrThrow(entityConfig.rowsSchema)
344
337
 
345
- // Process restored entities
346
- restoredEntities->Belt.Array.forEach((entity: Internal.entity) => {
347
- setEntities->Utils.Dict.push(entityConfig.name, entity.id)
348
- entityTable->InMemoryTable.Entity.set(
349
- Set({
350
- entityId: entity.id,
351
- checkpointId: rollbackDiffCheckpointId,
352
- entity,
353
- }),
354
- ~shouldSaveHistory=false,
355
- ~containsRollbackDiffChange=true,
356
- )
357
- })
338
+ // Process restored entities
339
+ restoredEntities->Belt.Array.forEach((entity: Internal.entity) => {
340
+ setEntities->Utils.Dict.push(entityConfig.name, entity.id)
341
+ entityTable->InMemoryTable.Entity.set(
342
+ Set({
343
+ entityId: entity.id,
344
+ checkpointId: rollbackDiffCheckpointId,
345
+ entity,
346
+ }),
347
+ ~shouldSaveHistory=false,
348
+ ~containsRollbackDiffChange=true,
349
+ )
358
350
  })
359
- ->Promise.all
351
+ })
352
+ ->Promise.all
360
353
 
361
354
  {
362
355
  "inMemStore": inMemStore,
@@ -2,37 +2,36 @@
2
2
 
3
3
  import * as Utils from "./Utils.res.mjs";
4
4
  import * as Config from "./Config.res.mjs";
5
- import * as Js_exn from "rescript/lib/es6/js_exn.js";
6
5
  import * as Logging from "./Logging.res.mjs";
7
- import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
6
+ import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
8
7
  import * as Prometheus from "./Prometheus.res.mjs";
9
8
  import * as EntityHistory from "./db/EntityHistory.res.mjs";
10
9
  import * as ErrorHandling from "./ErrorHandling.res.mjs";
11
10
  import * as InMemoryStore from "./InMemoryStore.res.mjs";
12
11
  import * as InMemoryTable from "./InMemoryTable.res.mjs";
13
- import * as Caml_exceptions from "rescript/lib/es6/caml_exceptions.js";
12
+ import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
14
13
  import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
15
- import * as Caml_js_exceptions from "rescript/lib/es6/caml_js_exceptions.js";
14
+ import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
16
15
 
17
- var StorageError = /* @__PURE__ */Caml_exceptions.create("Persistence.StorageError");
16
+ let StorageError = /* @__PURE__ */Primitive_exceptions.create("Persistence.StorageError");
18
17
 
19
18
  function make(userEntities, allEnums, storage) {
20
- var allEntities = userEntities.concat([Config.DynamicContractRegistry.entityConfig]);
21
- var allEnums$1 = allEnums.concat([EntityHistory.RowAction.config]);
19
+ let allEntities = userEntities.concat([Config.EnvioAddresses.entityConfig]);
20
+ let allEnums$1 = allEnums.concat([EntityHistory.RowAction.config]);
22
21
  return {
23
- userEntities: userEntities,
24
- allEntities: allEntities,
25
- allEnums: allEnums$1,
26
- storageStatus: "Unknown",
27
- storage: storage
28
- };
22
+ userEntities: userEntities,
23
+ allEntities: allEntities,
24
+ allEnums: allEnums$1,
25
+ storageStatus: "Unknown",
26
+ storage: storage
27
+ };
29
28
  }
30
29
 
31
30
  async function init(persistence, chainConfigs, resetOpt) {
32
- var reset = resetOpt !== undefined ? resetOpt : false;
31
+ let reset = resetOpt !== undefined ? resetOpt : false;
33
32
  try {
34
- var promise = persistence.storageStatus;
35
- var shouldRun;
33
+ let promise = persistence.storageStatus;
34
+ let shouldRun;
36
35
  if (typeof promise !== "object") {
37
36
  shouldRun = true;
38
37
  } else if (promise.TAG === "Initializing") {
@@ -42,172 +41,172 @@ async function init(persistence, chainConfigs, resetOpt) {
42
41
  shouldRun = reset;
43
42
  }
44
43
  if (!shouldRun) {
45
- return ;
44
+ return;
46
45
  }
47
- var resolveRef = {
46
+ let resolveRef = {
48
47
  contents: null
49
48
  };
50
- var promise$1 = new Promise((function (resolve, param) {
51
- resolveRef.contents = resolve;
52
- }));
49
+ let promise$1 = new Promise((resolve, param) => {
50
+ resolveRef.contents = resolve;
51
+ });
53
52
  persistence.storageStatus = {
54
53
  TAG: "Initializing",
55
54
  _0: promise$1
56
55
  };
57
56
  if (reset || !await persistence.storage.isInitialized()) {
58
- Logging.info("Initializing the indexer storage...");
59
- var initialState = await persistence.storage.initialize(chainConfigs, persistence.allEntities, persistence.allEnums);
60
- Logging.info("The indexer storage is ready. Starting indexing!");
57
+ Logging.info(`Initializing the indexer storage...`);
58
+ let initialState = await persistence.storage.initialize(chainConfigs, persistence.allEntities, persistence.allEnums);
59
+ Logging.info(`The indexer storage is ready. Starting indexing!`);
61
60
  persistence.storageStatus = {
62
61
  TAG: "Ready",
63
62
  _0: initialState
64
63
  };
65
64
  } else {
66
- var match = persistence.storageStatus;
67
- var tmp;
68
- tmp = typeof match !== "object" || match.TAG !== "Initializing" ? false : true;
65
+ let match = persistence.storageStatus;
66
+ let tmp;
67
+ tmp = typeof match !== "object" ? false : match.TAG === "Initializing";
69
68
  if (tmp) {
70
- Logging.info("Found existing indexer storage. Resuming indexing state...");
71
- var initialState$1 = await persistence.storage.resumeInitialState();
69
+ Logging.info(`Found existing indexer storage. Resuming indexing state...`);
70
+ let initialState$1 = await persistence.storage.resumeInitialState();
72
71
  persistence.storageStatus = {
73
72
  TAG: "Ready",
74
73
  _0: initialState$1
75
74
  };
76
- var progress = {};
77
- initialState$1.chains.forEach(function (c) {
78
- progress[c.id] = c.progressBlockNumber;
79
- });
75
+ let progress = {};
76
+ initialState$1.chains.forEach(c => {
77
+ progress[c.id] = c.progressBlockNumber;
78
+ });
80
79
  Logging.info({
81
- msg: "Successfully resumed indexing state! Continuing from the last checkpoint.",
82
- progress: progress
83
- });
80
+ msg: `Successfully resumed indexing state! Continuing from the last checkpoint.`,
81
+ progress: progress
82
+ });
84
83
  }
85
-
86
84
  }
87
85
  return resolveRef.contents();
88
- }
89
- catch (raw_exn){
90
- var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
91
- return ErrorHandling.mkLogAndRaise(undefined, "Failed to initialize the indexer storage.", exn);
86
+ } catch (raw_exn) {
87
+ let exn = Primitive_exceptions.internalToException(raw_exn);
88
+ return ErrorHandling.mkLogAndRaise(undefined, `Failed to initialize the indexer storage.`, exn);
92
89
  }
93
90
  }
94
91
 
95
92
  function getInitializedStorageOrThrow(persistence) {
96
- var match = persistence.storageStatus;
93
+ let match = persistence.storageStatus;
97
94
  if (typeof match !== "object" || match.TAG === "Initializing") {
98
- return Js_exn.raiseError("Failed to access the indexer storage. The Persistence layer is not initialized.");
95
+ return Stdlib_JsError.throwWithMessage(`Failed to access the indexer storage. The Persistence layer is not initialized.`);
99
96
  } else {
100
97
  return persistence.storage;
101
98
  }
102
99
  }
103
100
 
104
101
  function getInitializedState(persistence) {
105
- var initialState = persistence.storageStatus;
102
+ let initialState = persistence.storageStatus;
106
103
  if (typeof initialState !== "object" || initialState.TAG === "Initializing") {
107
- return Js_exn.raiseError("Failed to access the initial state. The Persistence layer is not initialized.");
104
+ return Stdlib_JsError.throwWithMessage(`Failed to access the initial state. The Persistence layer is not initialized.`);
108
105
  } else {
109
106
  return initialState._0;
110
107
  }
111
108
  }
112
109
 
113
110
  function writeBatch(persistence, batch, config, inMemoryStore, isInReorgThreshold) {
114
- var match = persistence.storageStatus;
111
+ let match = persistence.storageStatus;
115
112
  if (typeof match !== "object") {
116
- return Js_exn.raiseError("Failed to access the indexer storage. The Persistence layer is not initialized.");
113
+ return Stdlib_JsError.throwWithMessage(`Failed to access the indexer storage. The Persistence layer is not initialized.`);
117
114
  }
118
115
  if (match.TAG === "Initializing") {
119
- return Js_exn.raiseError("Failed to access the indexer storage. The Persistence layer is not initialized.");
116
+ return Stdlib_JsError.throwWithMessage(`Failed to access the indexer storage. The Persistence layer is not initialized.`);
120
117
  }
121
- var cache = match._0.cache;
122
- var updatedEntities = Belt_Array.keepMapU(persistence.allEntities, (function (entityConfig) {
123
- var updates = InMemoryTable.Entity.updates(InMemoryStore.getInMemTable(inMemoryStore, entityConfig));
124
- if (Utils.$$Array.isEmpty(updates)) {
125
- return ;
126
- } else {
127
- return {
128
- entityConfig: entityConfig,
129
- updates: updates
130
- };
131
- }
132
- }));
133
- return persistence.storage.writeBatch(batch, InMemoryTable.values(inMemoryStore.rawEvents), inMemoryStore.rollbackTargetCheckpointId, isInReorgThreshold, config, persistence.allEntities, Belt_Array.keepMapU(Object.keys(inMemoryStore.effects), (function (effectName) {
134
- var inMemTable = inMemoryStore.effects[effectName];
135
- var idsToStore = inMemTable.idsToStore;
136
- var invalidationsCount = inMemTable.invalidationsCount;
137
- var effect = inMemTable.effect;
138
- var dict = inMemTable.dict;
139
- if (idsToStore.length === 0) {
140
- return ;
141
- }
142
- var items = new Array(idsToStore.length);
143
- Belt_Array.forEachWithIndex(idsToStore, (function (index, id) {
144
- items[index] = {
145
- id: id,
146
- output: dict[id]
147
- };
148
- }));
149
- var effectName$1 = effect.name;
150
- var c = cache[effectName$1];
151
- var effectCacheRecord;
152
- if (c !== undefined) {
153
- effectCacheRecord = c;
154
- } else {
155
- var c$1 = {
156
- effectName: effectName$1,
157
- count: 0
158
- };
159
- cache[effectName$1] = c$1;
160
- effectCacheRecord = c$1;
161
- }
162
- var shouldInitialize = effectCacheRecord.count === 0;
163
- return effectCacheRecord.count = (effectCacheRecord.count + items.length | 0) - invalidationsCount | 0, Prometheus.EffectCacheCount.set(effectCacheRecord.count, effectName$1), {
164
- effect: effect,
165
- items: items,
166
- shouldInitialize: shouldInitialize
167
- };
168
- })), updatedEntities);
118
+ let cache = match._0.cache;
119
+ let updatedEntities = Belt_Array.keepMap(persistence.allEntities, entityConfig => {
120
+ let updates = InMemoryTable.Entity.updates(InMemoryStore.getInMemTable(inMemoryStore, entityConfig));
121
+ if (Utils.$$Array.isEmpty(updates)) {
122
+ return;
123
+ } else {
124
+ return {
125
+ entityConfig: entityConfig,
126
+ updates: updates
127
+ };
128
+ }
129
+ });
130
+ let acc = [];
131
+ return persistence.storage.writeBatch(batch, InMemoryTable.values(inMemoryStore.rawEvents), inMemoryStore.rollbackTargetCheckpointId, isInReorgThreshold, config, persistence.allEntities, (Utils.Dict.forEach(inMemoryStore.effects, inMemTable => {
132
+ let idsToStore = inMemTable.idsToStore;
133
+ let invalidationsCount = inMemTable.invalidationsCount;
134
+ let effect = inMemTable.effect;
135
+ let dict = inMemTable.dict;
136
+ if (idsToStore.length === 0) {
137
+ return;
138
+ }
139
+ let items = new Array(idsToStore.length);
140
+ Belt_Array.forEachWithIndex(idsToStore, (index, id) => {
141
+ items[index] = {
142
+ id: id,
143
+ output: dict[id]
144
+ };
145
+ });
146
+ let effectName = effect.name;
147
+ let c = cache[effectName];
148
+ let effectCacheRecord;
149
+ if (c !== undefined) {
150
+ effectCacheRecord = c;
151
+ } else {
152
+ let c$1 = {
153
+ effectName: effectName,
154
+ count: 0
155
+ };
156
+ cache[effectName] = c$1;
157
+ effectCacheRecord = c$1;
158
+ }
159
+ let shouldInitialize = effectCacheRecord.count === 0;
160
+ effectCacheRecord.count = (effectCacheRecord.count + items.length | 0) - invalidationsCount | 0;
161
+ Prometheus.EffectCacheCount.set(effectCacheRecord.count, effectName);
162
+ acc.push({
163
+ effect: effect,
164
+ items: items,
165
+ shouldInitialize: shouldInitialize
166
+ });
167
+ }), acc), updatedEntities);
169
168
  }
170
169
 
171
170
  async function prepareRollbackDiff(persistence, rollbackTargetCheckpointId, rollbackDiffCheckpointId) {
172
- var inMemStore = InMemoryStore.make(persistence.allEntities, rollbackTargetCheckpointId);
173
- var deletedEntities = {};
174
- var setEntities = {};
175
- await Promise.all(Belt_Array.map(persistence.allEntities, (async function (entityConfig) {
176
- var entityTable = InMemoryStore.getInMemTable(inMemStore, entityConfig);
177
- var match = await persistence.storage.getRollbackData(entityConfig, rollbackTargetCheckpointId);
178
- match[0].forEach(function (data) {
179
- Utils.Dict.push(deletedEntities, entityConfig.name, data.id);
180
- InMemoryTable.Entity.set(entityTable, {
181
- type: "DELETE",
182
- entityId: data.id,
183
- checkpointId: rollbackDiffCheckpointId
184
- }, false, true);
185
- });
186
- var restoredEntities = S$RescriptSchema.parseOrThrow(match[1], entityConfig.rowsSchema);
187
- return Belt_Array.forEach(restoredEntities, (function (entity) {
188
- Utils.Dict.push(setEntities, entityConfig.name, entity.id);
189
- InMemoryTable.Entity.set(entityTable, {
190
- type: "SET",
191
- entityId: entity.id,
192
- entity: entity,
193
- checkpointId: rollbackDiffCheckpointId
194
- }, false, true);
195
- }));
196
- })));
171
+ let inMemStore = InMemoryStore.make(persistence.allEntities, rollbackTargetCheckpointId);
172
+ let deletedEntities = {};
173
+ let setEntities = {};
174
+ await Promise.all(Belt_Array.map(persistence.allEntities, async entityConfig => {
175
+ let entityTable = InMemoryStore.getInMemTable(inMemStore, entityConfig);
176
+ let match = await persistence.storage.getRollbackData(entityConfig, rollbackTargetCheckpointId);
177
+ match[0].forEach(data => {
178
+ Utils.Dict.push(deletedEntities, entityConfig.name, data.id);
179
+ InMemoryTable.Entity.set(entityTable, {
180
+ type: "DELETE",
181
+ entityId: data.id,
182
+ checkpointId: rollbackDiffCheckpointId
183
+ }, false, true);
184
+ });
185
+ let restoredEntities = S$RescriptSchema.parseOrThrow(match[1], entityConfig.rowsSchema);
186
+ return Belt_Array.forEach(restoredEntities, entity => {
187
+ Utils.Dict.push(setEntities, entityConfig.name, entity.id);
188
+ InMemoryTable.Entity.set(entityTable, {
189
+ type: "SET",
190
+ entityId: entity.id,
191
+ entity: entity,
192
+ checkpointId: rollbackDiffCheckpointId
193
+ }, false, true);
194
+ });
195
+ }));
197
196
  return {
198
- inMemStore: inMemStore,
199
- deletedEntities: deletedEntities,
200
- setEntities: setEntities
201
- };
197
+ inMemStore: inMemStore,
198
+ deletedEntities: deletedEntities,
199
+ setEntities: setEntities
200
+ };
202
201
  }
203
202
 
204
203
  export {
205
- StorageError ,
206
- make ,
207
- init ,
208
- getInitializedStorageOrThrow ,
209
- getInitializedState ,
210
- writeBatch ,
211
- prepareRollbackDiff ,
204
+ StorageError,
205
+ make,
206
+ init,
207
+ getInitializedStorageOrThrow,
208
+ getInitializedState,
209
+ writeBatch,
210
+ prepareRollbackDiff,
212
211
  }
213
212
  /* Utils Not a pure module */