envio 2.30.2 → 2.31.0-alpha.1

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.
@@ -11,10 +11,67 @@ var Belt_Array = require("rescript/lib/js/belt_Array.js");
11
11
  var EntityHistory = require("./EntityHistory.res.js");
12
12
  var S$RescriptSchema = require("rescript-schema/src/S.res.js");
13
13
 
14
+ var name = "dynamic_contract_registry";
15
+
16
+ function makeId(chainId, contractAddress) {
17
+ return String(chainId) + "-" + contractAddress;
18
+ }
19
+
20
+ var schema = S$RescriptSchema.schema(function (s) {
21
+ return {
22
+ id: s.m(S$RescriptSchema.string),
23
+ chain_id: s.m(S$RescriptSchema.$$int),
24
+ registering_event_block_number: s.m(S$RescriptSchema.$$int),
25
+ registering_event_log_index: s.m(S$RescriptSchema.$$int),
26
+ registering_event_block_timestamp: s.m(S$RescriptSchema.$$int),
27
+ registering_event_contract_name: s.m(S$RescriptSchema.string),
28
+ registering_event_name: s.m(S$RescriptSchema.string),
29
+ registering_event_src_address: s.m(Address.schema),
30
+ contract_address: s.m(Address.schema),
31
+ contract_name: s.m(S$RescriptSchema.string)
32
+ };
33
+ });
34
+
35
+ var rowsSchema = S$RescriptSchema.array(schema);
36
+
37
+ var table = Table.mkTable(name, undefined, [
38
+ Table.mkField("id", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, true, undefined, undefined),
39
+ Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
40
+ Table.mkField("registering_event_block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
41
+ Table.mkField("registering_event_log_index", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
42
+ Table.mkField("registering_event_block_timestamp", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
43
+ Table.mkField("registering_event_contract_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
44
+ Table.mkField("registering_event_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
45
+ Table.mkField("registering_event_src_address", "TEXT", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
46
+ Table.mkField("contract_address", "TEXT", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
47
+ Table.mkField("contract_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
48
+ ]);
49
+
50
+ var entityHistory = EntityHistory.fromTable(table, schema);
51
+
52
+ var config = {
53
+ name: name,
54
+ schema: schema,
55
+ rowsSchema: rowsSchema,
56
+ table: table,
57
+ entityHistory: entityHistory
58
+ };
59
+
60
+ var DynamicContractRegistry = {
61
+ name: name,
62
+ makeId: makeId,
63
+ schema: schema,
64
+ rowsSchema: rowsSchema,
65
+ table: table,
66
+ entityHistory: entityHistory,
67
+ config: config
68
+ };
69
+
14
70
  var fields = [
15
71
  "id",
16
72
  "start_block",
17
73
  "end_block",
74
+ "max_reorg_depth",
18
75
  "source_block",
19
76
  "first_event_block",
20
77
  "buffer_block",
@@ -25,10 +82,11 @@ var fields = [
25
82
  "_num_batches_fetched"
26
83
  ];
27
84
 
28
- var table = Table.mkTable("envio_chains", undefined, [
85
+ var table$1 = Table.mkTable("envio_chains", undefined, [
29
86
  Table.mkField("id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
30
87
  Table.mkField("start_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
31
88
  Table.mkField("end_block", "INTEGER", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
89
+ Table.mkField("max_reorg_depth", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
32
90
  Table.mkField("buffer_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
33
91
  Table.mkField("source_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
34
92
  Table.mkField("first_event_block", "INTEGER", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
@@ -44,6 +102,7 @@ function initialFromConfig(chainConfig) {
44
102
  id: chainConfig.id,
45
103
  start_block: chainConfig.startBlock,
46
104
  end_block: Js_null.fromOption(chainConfig.endBlock),
105
+ max_reorg_depth: chainConfig.maxReorgDepth,
47
106
  progress_block: -1,
48
107
  events_processed: 0,
49
108
  first_event_block: null,
@@ -84,7 +143,7 @@ function makeInitialValuesQuery(pgSchema, chainConfigs) {
84
143
  }));
85
144
  return "(" + values.join(", ") + ")";
86
145
  }));
87
- return "INSERT INTO \"" + pgSchema + "\".\"" + table.tableName + "\" (" + columnNames.join(", ") + ")\nVALUES " + valuesRows.join(",\n ") + ";";
146
+ return "INSERT INTO \"" + pgSchema + "\".\"" + table$1.tableName + "\" (" + columnNames.join(", ") + ")\nVALUES " + valuesRows.join(",\n ") + ";";
88
147
  }
89
148
 
90
149
  var metaFields = [
@@ -101,7 +160,15 @@ function makeMetaFieldsUpdateQuery(pgSchema) {
101
160
  var paramIndex = index + 2 | 0;
102
161
  return "\"" + field + "\" = $" + String(paramIndex);
103
162
  }));
104
- return "UPDATE \"" + pgSchema + "\".\"" + table.tableName + "\"\nSET " + setClauses.join(",\n ") + "\nWHERE \"id\" = $1;";
163
+ return "UPDATE \"" + pgSchema + "\".\"" + table$1.tableName + "\"\nSET " + setClauses.join(",\n ") + "\nWHERE \"" + "id" + "\" = $1;";
164
+ }
165
+
166
+ function makeGetInitialStateQuery(pgSchema) {
167
+ return "SELECT \"" + "id" + "\" as \"id\",\n\"" + "start_block" + "\" as \"startBlock\",\n\"" + "end_block" + "\" as \"endBlock\",\n\"" + "max_reorg_depth" + "\" as \"maxReorgDepth\",\n\"" + "first_event_block" + "\" as \"firstEventBlockNumber\",\n\"" + "ready_at" + "\" as \"timestampCaughtUpToHeadOrEndblock\",\n\"" + "events_processed" + "\" as \"numEventsProcessed\",\n\"" + "progress_block" + "\" as \"progressBlockNumber\",\n(\n SELECT COALESCE(json_agg(json_build_object(\n 'address', \"contract_address\",\n 'contractName', \"contract_name\",\n 'startBlock', \"registering_event_block_number\",\n 'registrationBlock', \"registering_event_block_number\"\n )), '[]'::json)\n FROM \"" + pgSchema + "\".\"" + table.tableName + "\"\n WHERE \"chain_id\" = chains.\"" + "id" + "\"\n) as \"dynamicContracts\"\nFROM \"" + pgSchema + "\".\"" + table$1.tableName + "\" as chains;";
168
+ }
169
+
170
+ function getInitialState(sql, pgSchema) {
171
+ return sql.unsafe(makeGetInitialStateQuery(pgSchema));
105
172
  }
106
173
 
107
174
  var progressFields = [
@@ -114,13 +181,13 @@ function makeProgressFieldsUpdateQuery(pgSchema) {
114
181
  var paramIndex = index + 2 | 0;
115
182
  return "\"" + field + "\" = $" + String(paramIndex);
116
183
  }));
117
- return "UPDATE \"" + pgSchema + "\".\"" + table.tableName + "\"\nSET " + setClauses.join(",\n ") + "\nWHERE \"id\" = $1;";
184
+ return "UPDATE \"" + pgSchema + "\".\"" + table$1.tableName + "\"\nSET " + setClauses.join(",\n ") + "\nWHERE \"id\" = $1;";
118
185
  }
119
186
 
120
187
  function setMeta(sql, pgSchema, chainsData) {
121
188
  var query = makeMetaFieldsUpdateQuery(pgSchema);
122
189
  var promises = [];
123
- Utils.Dict.forEachWithKey(chainsData, (function (chainId, data) {
190
+ Utils.Dict.forEachWithKey(chainsData, (function (data, chainId) {
124
191
  var params = [];
125
192
  params.push(chainId);
126
193
  metaFields.forEach(function (field) {
@@ -148,18 +215,20 @@ function setProgressedChains(sql, pgSchema, progressedChains) {
148
215
 
149
216
  var Chains = {
150
217
  fields: fields,
151
- table: table,
218
+ table: table$1,
152
219
  initialFromConfig: initialFromConfig,
153
220
  makeInitialValuesQuery: makeInitialValuesQuery,
154
221
  metaFields: metaFields,
155
222
  makeMetaFieldsUpdateQuery: makeMetaFieldsUpdateQuery,
223
+ makeGetInitialStateQuery: makeGetInitialStateQuery,
224
+ getInitialState: getInitialState,
156
225
  progressFields: progressFields,
157
226
  makeProgressFieldsUpdateQuery: makeProgressFieldsUpdateQuery,
158
227
  setMeta: setMeta,
159
228
  setProgressedChains: setProgressedChains
160
229
  };
161
230
 
162
- var table$1 = Table.mkTable("persisted_state", undefined, [
231
+ var table$2 = Table.mkTable("persisted_state", undefined, [
163
232
  Table.mkField("id", "SERIAL", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
164
233
  Table.mkField("envio_version", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
165
234
  Table.mkField("config_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
@@ -169,20 +238,88 @@ var table$1 = Table.mkTable("persisted_state", undefined, [
169
238
  ]);
170
239
 
171
240
  var PersistedState = {
172
- table: table$1
241
+ table: table$2
173
242
  };
174
243
 
175
- var table$2 = Table.mkTable("end_of_block_range_scanned_data", undefined, [
176
- Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
177
- Table.mkField("block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
178
- Table.mkField("block_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
244
+ var table$3 = Table.mkTable("envio_checkpoints", undefined, [
245
+ Table.mkField("id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
246
+ Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
247
+ Table.mkField("block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
248
+ Table.mkField("block_hash", "TEXT", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined),
249
+ Table.mkField("events_processed", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
179
250
  ]);
180
251
 
181
- var EndOfBlockRangeScannedData = {
182
- table: table$2
252
+ function makeGetReorgCheckpointsQuery(pgSchema) {
253
+ return "WITH reorg_chains AS (\n SELECT \n \"" + "id" + "\" as id,\n \"" + "source_block" + "\" - \"" + "max_reorg_depth" + "\" AS safe_block\n FROM \"" + pgSchema + "\".\"" + table$1.tableName + "\"\n WHERE \"" + "max_reorg_depth" + "\" > 0\n AND \"" + "progress_block" + "\" > \"" + "source_block" + "\" - \"" + "max_reorg_depth" + "\"\n)\nSELECT \n cp.\"" + "id" + "\", \n cp.\"" + "chain_id" + "\", \n cp.\"" + "block_number" + "\", \n cp.\"" + "block_hash" + "\"\nFROM \"" + pgSchema + "\".\"" + table$3.tableName + "\" cp\nINNER JOIN reorg_chains rc \n ON cp.\"" + "chain_id" + "\" = rc.id\nWHERE cp.\"" + "block_hash" + "\" IS NOT NULL\n AND cp.\"" + "block_number" + "\" >= rc.safe_block;";
254
+ }
255
+
256
+ function makeCommitedCheckpointIdQuery(pgSchema) {
257
+ return "SELECT COALESCE(MAX(" + "id" + "), " + String(0) + ") AS id FROM \"" + pgSchema + "\".\"" + table$3.tableName + "\";";
258
+ }
259
+
260
+ function makeInsertCheckpointQuery(pgSchema) {
261
+ return "INSERT INTO \"" + pgSchema + "\".\"" + table$3.tableName + "\" (\"" + "id" + "\", \"" + "chain_id" + "\", \"" + "block_number" + "\", \"" + "block_hash" + "\", \"" + "events_processed" + "\")\nSELECT * FROM unnest($1::INTEGER[],$2::INTEGER[],$3::INTEGER[],$4::TEXT[],$5::INTEGER[]);";
262
+ }
263
+
264
+ function insert(sql, pgSchema, checkpointIds, checkpointChainIds, checkpointBlockNumbers, checkpointBlockHashes, checkpointEventsProcessed) {
265
+ var query = makeInsertCheckpointQuery(pgSchema);
266
+ return sql.unsafe(query, [
267
+ checkpointIds,
268
+ checkpointChainIds,
269
+ checkpointBlockNumbers,
270
+ checkpointBlockHashes,
271
+ checkpointEventsProcessed
272
+ ], {prepare: true});
273
+ }
274
+
275
+ function rollback(sql, pgSchema, rollbackTargetCheckpointId) {
276
+ return sql.unsafe("DELETE FROM \"" + pgSchema + "\".\"" + table$3.tableName + "\" WHERE \"" + "id" + "\" > $1;", [rollbackTargetCheckpointId], {prepare: true});
277
+ }
278
+
279
+ function makePruneStaleCheckpointsQuery(pgSchema) {
280
+ return "DELETE FROM \"" + pgSchema + "\".\"" + table$3.tableName + "\" WHERE \"" + "id" + "\" < $1;";
281
+ }
282
+
283
+ function pruneStaleCheckpoints(sql, pgSchema, safeCheckpointId) {
284
+ return sql.unsafe(makePruneStaleCheckpointsQuery(pgSchema), [safeCheckpointId], {prepare: true});
285
+ }
286
+
287
+ function makeGetRollbackTargetCheckpointQuery(pgSchema) {
288
+ return "SELECT \"" + "id" + "\" FROM \"" + pgSchema + "\".\"" + table$3.tableName + "\"\nWHERE \n \"" + "chain_id" + "\" = $1 AND\n \"" + "block_number" + "\" <= $2\nORDER BY \"" + "id" + "\" DESC\nLIMIT 1;";
289
+ }
290
+
291
+ function getRollbackTargetCheckpoint(sql, pgSchema, reorgChainId, lastKnownValidBlockNumber) {
292
+ return sql.unsafe(makeGetRollbackTargetCheckpointQuery(pgSchema), [
293
+ reorgChainId,
294
+ lastKnownValidBlockNumber
295
+ ], {prepare: true});
296
+ }
297
+
298
+ function makeGetRollbackProgressDiffQuery(pgSchema) {
299
+ return "SELECT \n \"" + "chain_id" + "\",\n SUM(\"" + "events_processed" + "\") as events_processed_diff,\n MIN(\"" + "block_number" + "\") - 1 as new_progress_block_number\nFROM \"" + pgSchema + "\".\"" + table$3.tableName + "\"\nWHERE \"" + "id" + "\" > $1\nGROUP BY \"" + "chain_id" + "\";";
300
+ }
301
+
302
+ function getRollbackProgressDiff(sql, pgSchema, rollbackTargetCheckpointId) {
303
+ return sql.unsafe(makeGetRollbackProgressDiffQuery(pgSchema), [rollbackTargetCheckpointId], {prepare: true});
304
+ }
305
+
306
+ var Checkpoints = {
307
+ initialCheckpointId: 0,
308
+ table: table$3,
309
+ makeGetReorgCheckpointsQuery: makeGetReorgCheckpointsQuery,
310
+ makeCommitedCheckpointIdQuery: makeCommitedCheckpointIdQuery,
311
+ makeInsertCheckpointQuery: makeInsertCheckpointQuery,
312
+ insert: insert,
313
+ rollback: rollback,
314
+ makePruneStaleCheckpointsQuery: makePruneStaleCheckpointsQuery,
315
+ pruneStaleCheckpoints: pruneStaleCheckpoints,
316
+ makeGetRollbackTargetCheckpointQuery: makeGetRollbackTargetCheckpointQuery,
317
+ getRollbackTargetCheckpoint: getRollbackTargetCheckpoint,
318
+ makeGetRollbackProgressDiffQuery: makeGetRollbackProgressDiffQuery,
319
+ getRollbackProgressDiff: getRollbackProgressDiff
183
320
  };
184
321
 
185
- var schema = S$RescriptSchema.schema(function (s) {
322
+ var schema$1 = S$RescriptSchema.schema(function (s) {
186
323
  return {
187
324
  chain_id: s.m(S$RescriptSchema.$$int),
188
325
  event_id: s.m(S$RescriptSchema.bigint),
@@ -199,7 +336,7 @@ var schema = S$RescriptSchema.schema(function (s) {
199
336
  };
200
337
  });
201
338
 
202
- var table$3 = Table.mkTable("raw_events", undefined, [
339
+ var table$4 = Table.mkTable("raw_events", undefined, [
203
340
  Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
204
341
  Table.mkField("event_id", "NUMERIC", S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined),
205
342
  Table.mkField("event_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
@@ -216,8 +353,8 @@ var table$3 = Table.mkTable("raw_events", undefined, [
216
353
  ]);
217
354
 
218
355
  var RawEvents = {
219
- schema: schema,
220
- table: table$3
356
+ schema: schema$1,
357
+ table: table$4
221
358
  };
222
359
 
223
360
  var metaViewName = "_meta";
@@ -225,11 +362,11 @@ var metaViewName = "_meta";
225
362
  var chainMetadataViewName = "chain_metadata";
226
363
 
227
364
  function makeMetaViewQuery(pgSchema) {
228
- return "CREATE VIEW \"" + pgSchema + "\".\"" + metaViewName + "\" AS \n SELECT \n \"" + "id" + "\" AS \"chainId\",\n \"" + "start_block" + "\" AS \"startBlock\", \n \"" + "end_block" + "\" AS \"endBlock\",\n \"" + "progress_block" + "\" AS \"progressBlock\",\n \"" + "buffer_block" + "\" AS \"bufferBlock\",\n \"" + "first_event_block" + "\" AS \"firstEventBlock\",\n \"" + "events_processed" + "\" AS \"eventsProcessed\",\n \"" + "source_block" + "\" AS \"sourceBlock\",\n \"" + "ready_at" + "\" AS \"readyAt\",\n (\"" + "ready_at" + "\" IS NOT NULL) AS \"isReady\"\n FROM \"" + pgSchema + "\".\"" + table.tableName + "\"\n ORDER BY \"" + "id" + "\";";
365
+ return "CREATE VIEW \"" + pgSchema + "\".\"" + metaViewName + "\" AS \n SELECT \n \"" + "id" + "\" AS \"chainId\",\n \"" + "start_block" + "\" AS \"startBlock\", \n \"" + "end_block" + "\" AS \"endBlock\",\n \"" + "progress_block" + "\" AS \"progressBlock\",\n \"" + "buffer_block" + "\" AS \"bufferBlock\",\n \"" + "first_event_block" + "\" AS \"firstEventBlock\",\n \"" + "events_processed" + "\" AS \"eventsProcessed\",\n \"" + "source_block" + "\" AS \"sourceBlock\",\n \"" + "ready_at" + "\" AS \"readyAt\",\n (\"" + "ready_at" + "\" IS NOT NULL) AS \"isReady\"\n FROM \"" + pgSchema + "\".\"" + table$1.tableName + "\"\n ORDER BY \"" + "id" + "\";";
229
366
  }
230
367
 
231
368
  function makeChainMetadataViewQuery(pgSchema) {
232
- return "CREATE VIEW \"" + pgSchema + "\".\"" + chainMetadataViewName + "\" AS \n SELECT \n \"" + "source_block" + "\" AS \"block_height\",\n \"" + "id" + "\" AS \"chain_id\",\n \"" + "end_block" + "\" AS \"end_block\", \n \"" + "first_event_block" + "\" AS \"first_event_block_number\",\n \"" + "_is_hyper_sync" + "\" AS \"is_hyper_sync\",\n \"" + "buffer_block" + "\" AS \"latest_fetched_block_number\",\n \"" + "progress_block" + "\" AS \"latest_processed_block\",\n \"" + "_num_batches_fetched" + "\" AS \"num_batches_fetched\",\n \"" + "events_processed" + "\" AS \"num_events_processed\",\n \"" + "start_block" + "\" AS \"start_block\",\n \"" + "ready_at" + "\" AS \"timestamp_caught_up_to_head_or_endblock\"\n FROM \"" + pgSchema + "\".\"" + table.tableName + "\";";
369
+ return "CREATE VIEW \"" + pgSchema + "\".\"" + chainMetadataViewName + "\" AS \n SELECT \n \"" + "source_block" + "\" AS \"block_height\",\n \"" + "id" + "\" AS \"chain_id\",\n \"" + "end_block" + "\" AS \"end_block\", \n \"" + "first_event_block" + "\" AS \"first_event_block_number\",\n \"" + "_is_hyper_sync" + "\" AS \"is_hyper_sync\",\n \"" + "buffer_block" + "\" AS \"latest_fetched_block_number\",\n \"" + "progress_block" + "\" AS \"latest_processed_block\",\n \"" + "_num_batches_fetched" + "\" AS \"num_batches_fetched\",\n \"" + "events_processed" + "\" AS \"num_events_processed\",\n \"" + "start_block" + "\" AS \"start_block\",\n \"" + "ready_at" + "\" AS \"timestamp_caught_up_to_head_or_endblock\"\n FROM \"" + pgSchema + "\".\"" + table$1.tableName + "\";";
233
370
  }
234
371
 
235
372
  var Views = {
@@ -239,62 +376,6 @@ var Views = {
239
376
  makeChainMetadataViewQuery: makeChainMetadataViewQuery
240
377
  };
241
378
 
242
- var name = "dynamic_contract_registry";
243
-
244
- function makeId(chainId, contractAddress) {
245
- return String(chainId) + "-" + contractAddress;
246
- }
247
-
248
- var schema$1 = S$RescriptSchema.schema(function (s) {
249
- return {
250
- id: s.m(S$RescriptSchema.string),
251
- chain_id: s.m(S$RescriptSchema.$$int),
252
- registering_event_block_number: s.m(S$RescriptSchema.$$int),
253
- registering_event_log_index: s.m(S$RescriptSchema.$$int),
254
- registering_event_block_timestamp: s.m(S$RescriptSchema.$$int),
255
- registering_event_contract_name: s.m(S$RescriptSchema.string),
256
- registering_event_name: s.m(S$RescriptSchema.string),
257
- registering_event_src_address: s.m(Address.schema),
258
- contract_address: s.m(Address.schema),
259
- contract_name: s.m(S$RescriptSchema.string)
260
- };
261
- });
262
-
263
- var rowsSchema = S$RescriptSchema.array(schema$1);
264
-
265
- var table$4 = Table.mkTable(name, undefined, [
266
- Table.mkField("id", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, true, undefined, undefined),
267
- Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
268
- Table.mkField("registering_event_block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
269
- Table.mkField("registering_event_log_index", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
270
- Table.mkField("registering_event_block_timestamp", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
271
- Table.mkField("registering_event_contract_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
272
- Table.mkField("registering_event_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
273
- Table.mkField("registering_event_src_address", "TEXT", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
274
- Table.mkField("contract_address", "TEXT", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
275
- Table.mkField("contract_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
276
- ]);
277
-
278
- var entityHistory = EntityHistory.fromTable(table$4, schema$1);
279
-
280
- var config = {
281
- name: name,
282
- schema: schema$1,
283
- rowsSchema: rowsSchema,
284
- table: table$4,
285
- entityHistory: entityHistory
286
- };
287
-
288
- var DynamicContractRegistry = {
289
- name: name,
290
- makeId: makeId,
291
- schema: schema$1,
292
- rowsSchema: rowsSchema,
293
- table: table$4,
294
- entityHistory: entityHistory,
295
- config: config
296
- };
297
-
298
379
  var isPrimaryKey = true;
299
380
 
300
381
  var isNullable = true;
@@ -304,10 +385,10 @@ var isIndex = true;
304
385
  exports.isPrimaryKey = isPrimaryKey;
305
386
  exports.isNullable = isNullable;
306
387
  exports.isIndex = isIndex;
388
+ exports.DynamicContractRegistry = DynamicContractRegistry;
307
389
  exports.Chains = Chains;
308
390
  exports.PersistedState = PersistedState;
309
- exports.EndOfBlockRangeScannedData = EndOfBlockRangeScannedData;
391
+ exports.Checkpoints = Checkpoints;
310
392
  exports.RawEvents = RawEvents;
311
393
  exports.Views = Views;
312
- exports.DynamicContractRegistry = DynamicContractRegistry;
313
- /* table Not a pure module */
394
+ /* schema Not a pure module */
package/src/db/Table.res CHANGED
@@ -5,6 +5,7 @@ type derived
5
5
  @unboxed
6
6
  type fieldType =
7
7
  | @as("INTEGER") Integer
8
+ | @as("BIGINT") BigInt
8
9
  | @as("BOOLEAN") Boolean
9
10
  | @as("NUMERIC") Numeric
10
11
  | @as("DOUBLE PRECISION") DoublePrecision
@@ -259,7 +259,7 @@ function toSqlParams(table, schema, pgSchema) {
259
259
  if (field$1.TAG === "Field") {
260
260
  var f = field$1._0;
261
261
  var fieldType = f.fieldType;
262
- tmp = fieldType === "TIMESTAMP" || fieldType === "TIMESTAMP WITH TIME ZONE" || fieldType === "JSONB" || fieldType === "SERIAL" || fieldType === "TEXT" || fieldType === "DOUBLE PRECISION" || fieldType === "NUMERIC" || fieldType === "BOOLEAN" || fieldType === "INTEGER" || fieldType === "TIMESTAMP WITH TIME ZONE NULL" ? (
262
+ tmp = fieldType === "TIMESTAMP" || fieldType === "TIMESTAMP WITH TIME ZONE" || fieldType === "JSONB" || fieldType === "SERIAL" || fieldType === "TEXT" || fieldType === "DOUBLE PRECISION" || fieldType === "NUMERIC" || fieldType === "BOOLEAN" || fieldType === "BIGINT" || fieldType === "INTEGER" || fieldType === "TIMESTAMP WITH TIME ZONE NULL" ? (
263
263
  fieldType === "BOOLEAN" ? "INTEGER[]::" + f.fieldType : fieldType
264
264
  ) : (
265
265
  fieldType.startsWith("NUMERIC(") ? fieldType : "TEXT[]::\"" + pgSchema + "\"." + fieldType
@@ -34,7 +34,7 @@ module Group = {
34
34
  group: t<'a>,
35
35
  ~contractAddress,
36
36
  ~blockNumber,
37
- ~indexingContracts: dict<FetchState.indexingContract>,
37
+ ~indexingContracts: dict<Internal.indexingContract>,
38
38
  ) =>
39
39
  switch group {
40
40
  | {wildcard, byContractName} =>
@@ -27,7 +27,7 @@ let rec getKnownBlockWithBackoff = async (
27
27
  switch await getKnownBlock(provider, blockNumber) {
28
28
  | exception err =>
29
29
  Logging.warn({
30
- "err": err->Utils.prettifyExn,
30
+ "err": err,
31
31
  "msg": `Issue while running fetching batch of events from the RPC. Will wait ${backoffMsOnFailure->Belt.Int.toString}ms and try again.`,
32
32
  "source": sourceName,
33
33
  "chainId": chain->ChainMap.Chain.toChainId,
@@ -47,17 +47,10 @@ let rec getKnownBlockWithBackoff = async (
47
47
  // NOTE: this is wasteful if these fields are not selected in the users config.
48
48
  // There might be a better way to do this based on the block schema.
49
49
  // However this is not extremely expensive and good enough for now (only on rpc sync also).
50
-
51
- {
52
- ...result,
53
- // Mutation would be cheaper,
54
- // BUT "result" is an Ethers.js Block object,
55
- // which has the fields as readonly.
56
- miner: result.miner->Address.Evm.fromAddressLowercaseOrThrow,
57
- }
58
- } else {
59
- result
50
+ // The in place mutation is cheapest.
51
+ (result->Obj.magic)["miner"] = result.miner->Address.Evm.fromAddressLowercaseOrThrow
60
52
  }
53
+ result
61
54
  }
62
55
  let getSuggestedBlockIntervalFromExn = {
63
56
  // Unknown provider: "retry with the range 123-456"
@@ -507,7 +500,7 @@ let make = (
507
500
  ~loaderFn=transactionHash => provider->Ethers.JsonRpcProvider.getTransaction(~transactionHash),
508
501
  ~onError=(am, ~exn) => {
509
502
  Logging.error({
510
- "err": exn->Utils.prettifyExn,
503
+ "err": exn,
511
504
  "msg": `EE1100: Top level promise timeout reached. Please review other errors or warnings in the code. This function will retry in ${(am._retryDelayMillis / 1000)
512
505
  ->Belt.Int.toString} seconds. It is highly likely that your indexer isn't syncing on one or more chains currently. Also take a look at the "suggestedFix" in the metadata of this command`,
513
506
  "source": name,
@@ -534,7 +527,7 @@ let make = (
534
527
  ),
535
528
  ~onError=(am, ~exn) => {
536
529
  Logging.error({
537
- "err": exn->Utils.prettifyExn,
530
+ "err": exn,
538
531
  "msg": `EE1100: Top level promise timeout reached. Please review other errors or warnings in the code. This function will retry in ${(am._retryDelayMillis / 1000)
539
532
  ->Belt.Int.toString} seconds. It is highly likely that your indexer isn't syncing on one or more chains currently. Also take a look at the "suggestedFix" in the metadata of this command`,
540
533
  "source": name,
@@ -48,7 +48,7 @@ async function getKnownBlockWithBackoff(provider, sourceName, chain, blockNumber
48
48
  catch (raw_err){
49
49
  var err = Caml_js_exceptions.internalToOCamlException(raw_err);
50
50
  Logging.warn({
51
- err: Utils.prettifyExn(err),
51
+ err: err,
52
52
  msg: "Issue while running fetching batch of events from the RPC. Will wait " + String(backoffMsOnFailure) + "ms and try again.",
53
53
  source: sourceName,
54
54
  chainId: chain,
@@ -58,23 +58,9 @@ async function getKnownBlockWithBackoff(provider, sourceName, chain, blockNumber
58
58
  return await getKnownBlockWithBackoff(provider, sourceName, chain, blockNumber, (backoffMsOnFailure << 1), lowercaseAddresses);
59
59
  }
60
60
  if (lowercaseAddresses) {
61
- return {
62
- _difficulty: result._difficulty,
63
- difficulty: result.difficulty,
64
- extraData: result.extraData,
65
- gasLimit: result.gasLimit,
66
- gasUsed: result.gasUsed,
67
- hash: result.hash,
68
- miner: Address.Evm.fromAddressLowercaseOrThrow(result.miner),
69
- nonce: result.nonce,
70
- number: result.number,
71
- parentHash: result.parentHash,
72
- timestamp: result.timestamp,
73
- transactions: result.transactions
74
- };
75
- } else {
76
- return result;
61
+ result.miner = Address.Evm.fromAddressLowercaseOrThrow(result.miner);
77
62
  }
63
+ return result;
78
64
  }
79
65
 
80
66
  var suggestedRangeRegExp = /retry with the range (\d+)-(\d+)/;
@@ -523,7 +509,7 @@ function make(param) {
523
509
  return provider.getTransaction(transactionHash);
524
510
  }), (function (am, exn) {
525
511
  Logging.error({
526
- err: Utils.prettifyExn(exn),
512
+ err: exn,
527
513
  msg: "EE1100: Top level promise timeout reached. Please review other errors or warnings in the code. This function will retry in " + String(am._retryDelayMillis / 1000 | 0) + " seconds. It is highly likely that your indexer isn't syncing on one or more chains currently. Also take a look at the \"suggestedFix\" in the metadata of this command",
528
514
  source: name,
529
515
  chainId: chain,
@@ -537,7 +523,7 @@ function make(param) {
537
523
  return getKnownBlockWithBackoff(provider, name, chain, blockNumber, 1000, lowercaseAddresses);
538
524
  }), (function (am, exn) {
539
525
  Logging.error({
540
- err: Utils.prettifyExn(exn),
526
+ err: exn,
541
527
  msg: "EE1100: Top level promise timeout reached. Please review other errors or warnings in the code. This function will retry in " + String(am._retryDelayMillis / 1000 | 0) + " seconds. It is highly likely that your indexer isn't syncing on one or more chains currently. Also take a look at the \"suggestedFix\" in the metadata of this command",
542
528
  source: name,
543
529
  chainId: chain,
@@ -49,7 +49,7 @@ type t = {
49
49
  ~fromBlock: int,
50
50
  ~toBlock: option<int>,
51
51
  ~addressesByContractName: dict<array<Address.t>>,
52
- ~indexingContracts: dict<FetchState.indexingContract>,
52
+ ~indexingContracts: dict<Internal.indexingContract>,
53
53
  ~currentBlockHeight: int,
54
54
  ~partitionId: string,
55
55
  ~selection: FetchState.selection,