envio 3.1.2 → 3.2.0

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 (134) hide show
  1. package/evm.schema.json +83 -11
  2. package/fuel.schema.json +83 -11
  3. package/index.d.ts +184 -3
  4. package/package.json +6 -6
  5. package/src/Batch.res +2 -2
  6. package/src/ChainFetcher.res +27 -3
  7. package/src/ChainFetcher.res.mjs +17 -3
  8. package/src/ChainManager.res +163 -0
  9. package/src/ChainManager.res.mjs +136 -0
  10. package/src/Config.res +213 -30
  11. package/src/Config.res.mjs +102 -41
  12. package/src/Core.res +16 -10
  13. package/src/Ecosystem.res +0 -3
  14. package/src/Env.res +2 -2
  15. package/src/Env.res.mjs +2 -2
  16. package/src/Envio.res +101 -2
  17. package/src/Envio.res.mjs +2 -3
  18. package/src/EventConfigBuilder.res +52 -0
  19. package/src/EventConfigBuilder.res.mjs +32 -0
  20. package/src/EventUtils.res +2 -2
  21. package/src/FetchState.res +23 -14
  22. package/src/FetchState.res.mjs +21 -15
  23. package/src/GlobalState.res +219 -363
  24. package/src/GlobalState.res.mjs +314 -491
  25. package/src/GlobalStateManager.res +49 -59
  26. package/src/GlobalStateManager.res.mjs +5 -4
  27. package/src/GlobalStateManager.resi +1 -1
  28. package/src/HandlerLoader.res +12 -1
  29. package/src/HandlerLoader.res.mjs +6 -1
  30. package/src/HandlerRegister.res +9 -9
  31. package/src/HandlerRegister.res.mjs +9 -9
  32. package/src/Hasura.res +102 -32
  33. package/src/Hasura.res.mjs +88 -34
  34. package/src/InMemoryStore.res +10 -1
  35. package/src/InMemoryStore.res.mjs +4 -1
  36. package/src/InMemoryTable.res +83 -136
  37. package/src/InMemoryTable.res.mjs +57 -86
  38. package/src/Internal.res +54 -5
  39. package/src/Internal.res.mjs +2 -8
  40. package/src/LazyLoader.res +2 -2
  41. package/src/LazyLoader.res.mjs +3 -3
  42. package/src/LoadLayer.res +47 -60
  43. package/src/LoadLayer.res.mjs +28 -50
  44. package/src/LoadLayer.resi +2 -5
  45. package/src/LogSelection.res +4 -4
  46. package/src/LogSelection.res.mjs +5 -7
  47. package/src/Logging.res +1 -1
  48. package/src/Main.res +61 -2
  49. package/src/Main.res.mjs +37 -1
  50. package/src/Persistence.res +3 -16
  51. package/src/PgStorage.res +125 -114
  52. package/src/PgStorage.res.mjs +112 -95
  53. package/src/Ports.res +5 -0
  54. package/src/Ports.res.mjs +9 -0
  55. package/src/Prometheus.res +3 -3
  56. package/src/Prometheus.res.mjs +4 -4
  57. package/src/ReorgDetection.res +4 -4
  58. package/src/ReorgDetection.res.mjs +4 -5
  59. package/src/SafeCheckpointTracking.res +16 -16
  60. package/src/SafeCheckpointTracking.res.mjs +2 -2
  61. package/src/SimulateItems.res +10 -14
  62. package/src/SimulateItems.res.mjs +5 -2
  63. package/src/Sink.res +1 -1
  64. package/src/Sink.res.mjs +1 -2
  65. package/src/SvmTypes.res +9 -0
  66. package/src/SvmTypes.res.mjs +14 -0
  67. package/src/TestIndexer.res +17 -57
  68. package/src/TestIndexer.res.mjs +14 -48
  69. package/src/TestIndexerProxyStorage.res +23 -23
  70. package/src/TestIndexerProxyStorage.res.mjs +12 -15
  71. package/src/Throttler.res +2 -2
  72. package/src/Time.res +2 -2
  73. package/src/Time.res.mjs +2 -2
  74. package/src/UserContext.res +19 -118
  75. package/src/UserContext.res.mjs +10 -66
  76. package/src/Utils.res +15 -15
  77. package/src/Utils.res.mjs +7 -8
  78. package/src/adapters/MarkBatchProcessedAdapter.res +5 -0
  79. package/src/adapters/MarkBatchProcessedAdapter.res.mjs +14 -0
  80. package/src/bindings/BigDecimal.res +1 -1
  81. package/src/bindings/BigDecimal.res.mjs +2 -2
  82. package/src/bindings/ClickHouse.res +8 -6
  83. package/src/bindings/ClickHouse.res.mjs +5 -5
  84. package/src/bindings/Hrtime.res +1 -1
  85. package/src/bindings/Pino.res +2 -2
  86. package/src/bindings/Pino.res.mjs +3 -4
  87. package/src/db/EntityFilter.res +410 -0
  88. package/src/db/EntityFilter.res.mjs +424 -0
  89. package/src/db/EntityHistory.res +1 -1
  90. package/src/db/EntityHistory.res.mjs +1 -1
  91. package/src/db/InternalTable.res +10 -10
  92. package/src/db/InternalTable.res.mjs +41 -45
  93. package/src/db/Schema.res +2 -2
  94. package/src/db/Schema.res.mjs +3 -3
  95. package/src/db/Table.res +106 -22
  96. package/src/db/Table.res.mjs +84 -35
  97. package/src/sources/EventRouter.res +67 -2
  98. package/src/sources/EventRouter.res.mjs +45 -3
  99. package/src/sources/Evm.res +0 -7
  100. package/src/sources/Evm.res.mjs +0 -15
  101. package/src/sources/EvmChain.res +1 -1
  102. package/src/sources/EvmChain.res.mjs +1 -2
  103. package/src/sources/EvmRpcClient.res +42 -0
  104. package/src/sources/EvmRpcClient.res.mjs +64 -0
  105. package/src/sources/Fuel.res +0 -7
  106. package/src/sources/Fuel.res.mjs +0 -15
  107. package/src/sources/HyperFuelSource.res +5 -4
  108. package/src/sources/HyperFuelSource.res.mjs +2 -2
  109. package/src/sources/HyperSyncClient.res +9 -5
  110. package/src/sources/HyperSyncClient.res.mjs +2 -2
  111. package/src/sources/HyperSyncHeightStream.res +2 -2
  112. package/src/sources/HyperSyncHeightStream.res.mjs +2 -2
  113. package/src/sources/HyperSyncSource.res +10 -9
  114. package/src/sources/HyperSyncSource.res.mjs +4 -4
  115. package/src/sources/Rpc.res +1 -5
  116. package/src/sources/Rpc.res.mjs +1 -9
  117. package/src/sources/RpcSource.res +57 -21
  118. package/src/sources/RpcSource.res.mjs +47 -20
  119. package/src/sources/RpcWebSocketHeightStream.res +1 -1
  120. package/src/sources/SourceManager.res +3 -2
  121. package/src/sources/SourceManager.res.mjs +1 -1
  122. package/src/sources/Svm.res +3 -10
  123. package/src/sources/Svm.res.mjs +4 -18
  124. package/src/sources/SvmHyperSyncClient.res +265 -0
  125. package/src/sources/SvmHyperSyncClient.res.mjs +28 -0
  126. package/src/sources/SvmHyperSyncSource.res +638 -0
  127. package/src/sources/SvmHyperSyncSource.res.mjs +557 -0
  128. package/src/tui/Tui.res +9 -2
  129. package/src/tui/Tui.res.mjs +18 -3
  130. package/src/tui/components/BufferedProgressBar.res +2 -2
  131. package/src/tui/components/TuiData.res +3 -0
  132. package/svm.schema.json +523 -14
  133. package/src/TableIndices.res +0 -115
  134. package/src/TableIndices.res.mjs +0 -144
@@ -0,0 +1,424 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Table from "./Table.res.mjs";
4
+ import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
5
+ import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
6
+ import * as Primitive_object from "@rescript/runtime/lib/es6/Primitive_object.js";
7
+
8
+ function toString(tNonOptional) {
9
+ if (Array.isArray(tNonOptional)) {
10
+ return `[` + tNonOptional.map(toString).join(",") + `]`;
11
+ }
12
+ switch (typeof tNonOptional) {
13
+ case "string" :
14
+ return tNonOptional;
15
+ case "bigint" :
16
+ case "number" :
17
+ return tNonOptional.toString();
18
+ case "object" :
19
+ return tNonOptional.toString();
20
+ case "boolean" :
21
+ if (tNonOptional) {
22
+ return "true";
23
+ } else {
24
+ return "false";
25
+ }
26
+ }
27
+ }
28
+
29
+ function toString$1(value) {
30
+ if (value !== undefined) {
31
+ return toString(value);
32
+ } else {
33
+ return "undefined";
34
+ }
35
+ }
36
+
37
+ function eq(a, b) {
38
+ if (typeof a === "object" && !Array.isArray(a) && typeof b === "object" && !Array.isArray(b)) {
39
+ return a.isEqualTo(b);
40
+ } else {
41
+ return Primitive_object.equal(a, b);
42
+ }
43
+ }
44
+
45
+ function gt(a, b) {
46
+ if (typeof a === "object" && !Array.isArray(a) && typeof b === "object" && !Array.isArray(b)) {
47
+ return a.isGreaterThan(b);
48
+ } else {
49
+ return Primitive_object.greaterthan(a, b);
50
+ }
51
+ }
52
+
53
+ function lt(a, b) {
54
+ if (typeof a === "object" && !Array.isArray(a) && typeof b === "object" && !Array.isArray(b)) {
55
+ return a.isLessThan(b);
56
+ } else {
57
+ return Primitive_object.lessthan(a, b);
58
+ }
59
+ }
60
+
61
+ let FieldValue = {
62
+ toString: toString$1,
63
+ eq: eq,
64
+ gt: gt,
65
+ lt: lt
66
+ };
67
+
68
+ function toString$2(filter) {
69
+ switch (filter.operator) {
70
+ case "=" :
71
+ return filter.fieldName + `:Eq:` + toString$1(filter.fieldValue);
72
+ case ">" :
73
+ return filter.fieldName + `:Gt:` + toString$1(filter.fieldValue);
74
+ case "<" :
75
+ return filter.fieldName + `:Lt:` + toString$1(filter.fieldValue);
76
+ case "in" :
77
+ return filter.fieldName + `:In:[` + filter.fieldValue.map(toString$1).join(",") + `]`;
78
+ case "and" :
79
+ return `And(` + filter.filters.map(toString$2).join(",") + `)`;
80
+ }
81
+ }
82
+
83
+ function valuesCount(filter) {
84
+ switch (filter.operator) {
85
+ case "in" :
86
+ return filter.fieldValue.length;
87
+ case "and" :
88
+ return Stdlib_Array.reduce(filter.filters, 0, (acc, filter) => acc + valuesCount(filter) | 0);
89
+ default:
90
+ return 1;
91
+ }
92
+ }
93
+
94
+ let codegenHelpMessage = `Rerun 'pnpm dev' to update generated code after schema.graphql changes.`;
95
+
96
+ function getUndefinedOrNullName(value) {
97
+ if (value === undefined) {
98
+ return "undefined";
99
+ } else if (value === null) {
100
+ return "null";
101
+ } else {
102
+ return;
103
+ }
104
+ }
105
+
106
+ function throwUnsupportedGetWhereValue(valueName, entityName, filterDisplay, hintOpt) {
107
+ let hint = hintOpt !== undefined ? hintOpt : "";
108
+ return Stdlib_JsError.throwWithMessage(`Invalid ` + valueName + ` value passed to context.` + entityName + `.getWhere(` + filterDisplay + `). Filtering by null or undefined values is not supported in getWhere.` + hint);
109
+ }
110
+
111
+ function parseGetWhereOrThrow(filter, entityName, table) {
112
+ let filterKeys = Object.keys(filter);
113
+ if (filterKeys.length === 0) {
114
+ Stdlib_JsError.throwWithMessage(`Empty filter passed to context.` + entityName + `.getWhere(). Please provide a filter like { fieldName: { _eq: value } }.`);
115
+ }
116
+ let filterGroups = filterKeys.flatMap(apiFieldName => {
117
+ let operatorObj = filter[apiFieldName];
118
+ let valueName = getUndefinedOrNullName(operatorObj);
119
+ if (valueName !== undefined) {
120
+ throwUnsupportedGetWhereValue(valueName, entityName, `{ ` + apiFieldName + `: ` + valueName + ` }`, ` Please provide an operator like { _eq: value }.`);
121
+ }
122
+ if (typeof operatorObj !== "object" || Array.isArray(operatorObj)) {
123
+ Stdlib_JsError.throwWithMessage(`Invalid value passed to context.` + entityName + `.getWhere({ ` + apiFieldName + `: ... }). Please provide an operator like { _eq: value }.`);
124
+ }
125
+ let operatorKeys = Object.keys(operatorObj);
126
+ if (operatorKeys.length === 0) {
127
+ Stdlib_JsError.throwWithMessage(`Empty operator passed to context.` + entityName + `.getWhere({ ` + apiFieldName + `: {} }). Please provide an operator like { _eq: value }, { _gt: value }, { _lt: value }, { _gte: value }, { _lte: value }, or { _in: [values] }.`);
128
+ }
129
+ let throwInvalidOperator = operatorKey => Stdlib_JsError.throwWithMessage(`Invalid operator "` + operatorKey + `" in context.` + entityName + `.getWhere({ ` + apiFieldName + `: { ` + operatorKey + `: ... } }). Valid operators are _eq, _gt, _lt, _gte, _lte, _in.`);
130
+ operatorKeys.forEach(operatorKey => {
131
+ switch (operatorKey) {
132
+ case "_eq" :
133
+ case "_gt" :
134
+ case "_gte" :
135
+ case "_in" :
136
+ case "_lt" :
137
+ case "_lte" :
138
+ return;
139
+ default:
140
+ return throwInvalidOperator(operatorKey);
141
+ }
142
+ });
143
+ let match = Table.getFieldByApiName(table, apiFieldName);
144
+ if (match !== undefined) {
145
+ if (match.TAG === "Field") {
146
+ let match$1 = match._0;
147
+ if (match$1.isPrimaryKey || match$1.isIndex || match$1.linkedEntity !== undefined) {
148
+
149
+ } else {
150
+ Stdlib_JsError.throwWithMessage(`The field "` + apiFieldName + `" on entity "` + entityName + `" does not have an index. To use it in getWhere(), add the @index directive in your schema.graphql:\n\n ` + apiFieldName + `: ... @index\n\nThen run 'pnpm envio codegen' to regenerate.`);
151
+ }
152
+ } else {
153
+ Stdlib_JsError.throwWithMessage(`The field "` + apiFieldName + `" on entity "` + entityName + `" is a derived field and cannot be used in getWhere(). Use the source entity's indexed field instead.`);
154
+ }
155
+ } else {
156
+ Stdlib_JsError.throwWithMessage(`Invalid field "` + apiFieldName + `" in context.` + entityName + `.getWhere(). The field doesn't exist. ` + codegenHelpMessage);
157
+ }
158
+ return operatorKeys.map(operatorKey => {
159
+ let fieldValue = operatorObj[operatorKey];
160
+ let valueName = getUndefinedOrNullName(fieldValue);
161
+ if (valueName !== undefined) {
162
+ throwUnsupportedGetWhereValue(valueName, entityName, `{ ` + apiFieldName + `: { ` + operatorKey + `: ` + valueName + ` } }`, undefined);
163
+ }
164
+ switch (operatorKey) {
165
+ case "_eq" :
166
+ return [{
167
+ operator: "=",
168
+ fieldName: apiFieldName,
169
+ fieldValue: fieldValue
170
+ }];
171
+ case "_gt" :
172
+ return [{
173
+ operator: ">",
174
+ fieldName: apiFieldName,
175
+ fieldValue: fieldValue
176
+ }];
177
+ case "_gte" :
178
+ return [
179
+ {
180
+ operator: "=",
181
+ fieldName: apiFieldName,
182
+ fieldValue: fieldValue
183
+ },
184
+ {
185
+ operator: ">",
186
+ fieldName: apiFieldName,
187
+ fieldValue: fieldValue
188
+ }
189
+ ];
190
+ case "_in" :
191
+ if (!Array.isArray(fieldValue)) {
192
+ Stdlib_JsError.throwWithMessage(`Invalid value passed to context.` + entityName + `.getWhere({ ` + apiFieldName + `: { _in: ... } }). The _in operator expects an array of values.`);
193
+ }
194
+ return fieldValue.map((fieldValue, index) => {
195
+ let valueName = getUndefinedOrNullName(fieldValue);
196
+ if (valueName !== undefined) {
197
+ throwUnsupportedGetWhereValue(valueName, entityName, `{ ` + apiFieldName + `: { _in: [...] } }`, ` The ` + valueName + ` value is at index ` + index.toString() + ` of the _in array.`);
198
+ }
199
+ return {
200
+ operator: "=",
201
+ fieldName: apiFieldName,
202
+ fieldValue: fieldValue
203
+ };
204
+ });
205
+ case "_lt" :
206
+ return [{
207
+ operator: "<",
208
+ fieldName: apiFieldName,
209
+ fieldValue: fieldValue
210
+ }];
211
+ case "_lte" :
212
+ return [
213
+ {
214
+ operator: "=",
215
+ fieldName: apiFieldName,
216
+ fieldValue: fieldValue
217
+ },
218
+ {
219
+ operator: "<",
220
+ fieldName: apiFieldName,
221
+ fieldValue: fieldValue
222
+ }
223
+ ];
224
+ default:
225
+ return throwInvalidOperator(operatorKey);
226
+ }
227
+ });
228
+ });
229
+ return Stdlib_Array.reduce(filterGroups, [[]], (combinations, group) => combinations.flatMap(combination => group.map(filter => combination.concat([filter])))).map(filters => {
230
+ if (filters.length !== 1) {
231
+ return {
232
+ operator: "and",
233
+ filters: filters
234
+ };
235
+ } else {
236
+ return filters[0];
237
+ }
238
+ });
239
+ }
240
+
241
+ function printOperationFilter(filter, paramsCount) {
242
+ switch (filter.operator) {
243
+ case "=" :
244
+ paramsCount.contents = paramsCount.contents + 1 | 0;
245
+ return filter.fieldName + `: $` + paramsCount.contents.toString();
246
+ case ">" :
247
+ paramsCount.contents = paramsCount.contents + 1 | 0;
248
+ return filter.fieldName + `: {_gt: $` + paramsCount.contents.toString() + `}`;
249
+ case "<" :
250
+ paramsCount.contents = paramsCount.contents + 1 | 0;
251
+ return filter.fieldName + `: {_lt: $` + paramsCount.contents.toString() + `}`;
252
+ case "in" :
253
+ paramsCount.contents = paramsCount.contents + 1 | 0;
254
+ return filter.fieldName + `: {_in: $` + paramsCount.contents.toString() + `}`;
255
+ case "and" :
256
+ let filters = filter.filters;
257
+ let acc = "";
258
+ for (let idx = 0, idx_finish = filters.length; idx < idx_finish; ++idx) {
259
+ let part = printOperationFilter(filters[idx], paramsCount);
260
+ acc = acc === "" ? part : acc + `, ` + part;
261
+ }
262
+ return acc;
263
+ }
264
+ }
265
+
266
+ function toOperationKey(filter, entityName) {
267
+ switch (filter.operator) {
268
+ case "=" :
269
+ return entityName + `.getWhere({` + filter.fieldName + `: $1})`;
270
+ case ">" :
271
+ return entityName + `.getWhere({` + filter.fieldName + `: {_gt: $1}})`;
272
+ case "<" :
273
+ return entityName + `.getWhere({` + filter.fieldName + `: {_lt: $1}})`;
274
+ case "in" :
275
+ return entityName + `.getWhere({` + filter.fieldName + `: {_in: $1}})`;
276
+ case "and" :
277
+ return entityName + `.getWhere({` + printOperationFilter(filter, {
278
+ contents: 0
279
+ }) + `})`;
280
+ }
281
+ }
282
+
283
+ function getParams(filter) {
284
+ switch (filter.operator) {
285
+ case "in" :
286
+ return filter.fieldValue;
287
+ case "and" :
288
+ let acc = [];
289
+ let collect = filter => {
290
+ switch (filter.operator) {
291
+ case "and" :
292
+ filter.filters.forEach(collect);
293
+ return;
294
+ default:
295
+ acc.push(filter.fieldValue);
296
+ return;
297
+ }
298
+ };
299
+ collect(filter);
300
+ return acc;
301
+ default:
302
+ return [filter.fieldValue];
303
+ }
304
+ }
305
+
306
+ function throwUnmergeable(filter) {
307
+ return Stdlib_JsError.throwWithMessage(`Unexpected filter ` + toString$2(filter) + ` in a merged batch. Filters batched into a single query must use the same operator and field.`);
308
+ }
309
+
310
+ function merge(filters) {
311
+ let len = filters.length;
312
+ if (len === 1) {
313
+ return filters;
314
+ }
315
+ if (len === 0) {
316
+ return filters;
317
+ }
318
+ let match = filters[0];
319
+ switch (match.operator) {
320
+ case "=" :
321
+ return [{
322
+ operator: "in",
323
+ fieldName: match.fieldName,
324
+ fieldValue: filters.map(filter => {
325
+ if (filter.operator === "=") {
326
+ return filter.fieldValue;
327
+ } else {
328
+ return throwUnmergeable(filter);
329
+ }
330
+ })
331
+ }];
332
+ case "in" :
333
+ return [{
334
+ operator: "in",
335
+ fieldName: match.fieldName,
336
+ fieldValue: filters.map(filter => {
337
+ if (filter.operator === "in") {
338
+ return filter.fieldValue;
339
+ } else {
340
+ return throwUnmergeable(filter);
341
+ }
342
+ }).flat()
343
+ }];
344
+ default:
345
+ return filters;
346
+ }
347
+ }
348
+
349
+ function matches(filter, entity) {
350
+ switch (filter.operator) {
351
+ case "=" :
352
+ return eq(entity[filter.fieldName], filter.fieldValue);
353
+ case ">" :
354
+ return gt(entity[filter.fieldName], filter.fieldValue);
355
+ case "<" :
356
+ return lt(entity[filter.fieldName], filter.fieldValue);
357
+ case "in" :
358
+ let entityFieldValue = entity[filter.fieldName];
359
+ return filter.fieldValue.some(fieldValue => eq(entityFieldValue, fieldValue));
360
+ case "and" :
361
+ let filters = filter.filters;
362
+ if (filters.length !== 0) {
363
+ return filters.every(filter => matches(filter, entity));
364
+ } else {
365
+ return Stdlib_JsError.throwWithMessage(`The "and" filter must contain at least one nested filter.`);
366
+ }
367
+ }
368
+ }
369
+
370
+ function mapValues(filter, mapValue) {
371
+ switch (filter.operator) {
372
+ case "=" :
373
+ let fieldName = filter.fieldName;
374
+ return {
375
+ operator: "=",
376
+ fieldName: fieldName,
377
+ fieldValue: mapValue(fieldName, filter.fieldValue, false)
378
+ };
379
+ case ">" :
380
+ let fieldName$1 = filter.fieldName;
381
+ return {
382
+ operator: ">",
383
+ fieldName: fieldName$1,
384
+ fieldValue: mapValue(fieldName$1, filter.fieldValue, false)
385
+ };
386
+ case "<" :
387
+ let fieldName$2 = filter.fieldName;
388
+ return {
389
+ operator: "<",
390
+ fieldName: fieldName$2,
391
+ fieldValue: mapValue(fieldName$2, filter.fieldValue, false)
392
+ };
393
+ case "in" :
394
+ let fieldName$3 = filter.fieldName;
395
+ return {
396
+ operator: "in",
397
+ fieldName: fieldName$3,
398
+ fieldValue: mapValue(fieldName$3, filter.fieldValue, true)
399
+ };
400
+ case "and" :
401
+ return {
402
+ operator: "and",
403
+ filters: filter.filters.map(filter => mapValues(filter, mapValue))
404
+ };
405
+ }
406
+ }
407
+
408
+ export {
409
+ FieldValue,
410
+ toString$2 as toString,
411
+ valuesCount,
412
+ codegenHelpMessage,
413
+ getUndefinedOrNullName,
414
+ throwUnsupportedGetWhereValue,
415
+ parseGetWhereOrThrow,
416
+ printOperationFilter,
417
+ toOperationKey,
418
+ getParams,
419
+ throwUnmergeable,
420
+ merge,
421
+ matches,
422
+ mapValues,
423
+ }
424
+ /* Table Not a pure module */
@@ -53,7 +53,7 @@ let historyTablePrefix = "envio_history_"
53
53
  let historyTableName = (~entityName, ~entityIndex) => {
54
54
  let fullName = historyTablePrefix ++ entityName
55
55
  if fullName->String.length > maxPgTableNameLength {
56
- let entityIndexStr = entityIndex->Belt.Int.toString
56
+ let entityIndexStr = entityIndex->Int.toString
57
57
  fullName->Js.String.slice(~from=0, ~to_=maxPgTableNameLength - entityIndexStr->String.length) ++
58
58
  entityIndexStr
59
59
  } else {
@@ -67,7 +67,7 @@ function historyTableName(entityName, entityIndex) {
67
67
  if (fullName.length <= 63) {
68
68
  return fullName;
69
69
  }
70
- let entityIndexStr = String(entityIndex);
70
+ let entityIndexStr = entityIndex.toString();
71
71
  return Js_string.slice(0, 63 - entityIndexStr.length | 0, fullName) + entityIndexStr;
72
72
  }
73
73
 
@@ -122,16 +122,16 @@ module Chains = {
122
122
  None
123
123
  } else {
124
124
  // Create column names list
125
- let columnNames = fields->Belt.Array.map(field => `"${(field :> string)}"`)
125
+ let columnNames = fields->Array.map(field => `"${(field :> string)}"`)
126
126
 
127
127
  // Create VALUES rows for each chain config
128
- let valuesRows = chainConfigs->Belt.Array.map(chainConfig => {
128
+ let valuesRows = chainConfigs->Array.map(chainConfig => {
129
129
  let initialValues = initialFromConfig(chainConfig)
130
- let values = fields->Belt.Array.map((field: field) => {
130
+ let values = fields->Array.map((field: field) => {
131
131
  let value = initialValues->(Utils.magic: t => dict<unknown>)->Dict.get((field :> string))
132
132
  switch typeof(value) {
133
133
  | #object => "NULL"
134
- | #number => value->(Utils.magic: option<unknown> => int)->Belt.Int.toString
134
+ | #number => value->(Utils.magic: option<unknown> => int)->Int.toString
135
135
  | #bigint => value->(Utils.magic: option<unknown> => bigint)->BigInt.toString
136
136
  | #boolean => value->(Utils.magic: option<unknown> => bool) ? "true" : "false"
137
137
  | _ => JsError.throwWithMessage("Invalid envio_chains value type")
@@ -153,10 +153,10 @@ VALUES ${valuesRows->Array.joinUnsafe(",\n ")};`,
153
153
 
154
154
  let makeMetaFieldsUpdateQuery = (~pgSchema) => {
155
155
  // Generate SET clauses with parameter placeholders
156
- let setClauses = Belt.Array.mapWithIndex(metaFields, (index, field) => {
156
+ let setClauses = Array.mapWithIndex(metaFields, (field, index) => {
157
157
  let fieldName = (field :> string)
158
158
  let paramIndex = index + 2 // +2 because $1 is for id in WHERE clause
159
- `"${fieldName}" = $${Belt.Int.toString(paramIndex)}`
159
+ `"${fieldName}" = $${Int.toString(paramIndex)}`
160
160
  })
161
161
 
162
162
  `UPDATE "${pgSchema}"."${table.tableName}"
@@ -252,10 +252,10 @@ FROM "${pgSchema}"."${EnvioAddresses.table.tableName}";`
252
252
  let progressFields: array<progressFields> = [#progress_block, #events_processed, #source_block]
253
253
 
254
254
  let makeProgressFieldsUpdateQuery = (~pgSchema) => {
255
- let setClauses = Belt.Array.mapWithIndex(progressFields, (index, field) => {
255
+ let setClauses = Array.mapWithIndex(progressFields, (field, index) => {
256
256
  let fieldName = (field :> string)
257
257
  let paramIndex = index + 2 // +2 because $1 is for id in WHERE clause
258
- `"${fieldName}" = $${Belt.Int.toString(paramIndex)}`
258
+ `"${fieldName}" = $${Int.toString(paramIndex)}`
259
259
  })
260
260
 
261
261
  `UPDATE "${pgSchema}"."${table.tableName}"
@@ -358,7 +358,7 @@ module EnvioInfo = {
358
358
  | _ => throw(exn)
359
359
  }
360
360
  }
361
- rows->Belt.Array.get(0)->Belt.Option.map(row => row["config"]->JSON.parseOrThrow)
361
+ rows->Array.get(0)->Option.map(row => row["config"]->JSON.parseOrThrow)
362
362
  }
363
363
 
364
364
  // Upsert keyed on the fixed id so the table stays a singleton even if
@@ -534,7 +534,7 @@ LIMIT 1;`
534
534
  )
535
535
  ->(Utils.magic: promise<unknown> => promise<array<{"id": string}>>)
536
536
  rawResult->Promise.thenResolve(rows => {
537
- rows->Belt.Array.get(0)->Belt.Option.map(row => row["id"]->BigInt.fromStringOrThrow)
537
+ rows->Array.get(0)->Option.map(row => row["id"]->BigInt.fromStringOrThrow)
538
538
  })
539
539
  }
540
540
 
@@ -4,8 +4,6 @@ import * as Table from "./Table.res.mjs";
4
4
  import * as Utils from "../Utils.res.mjs";
5
5
  import * as Config from "../Config.res.mjs";
6
6
  import * as Address from "../Address.res.mjs";
7
- import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
8
- import * as Belt_Option from "@rescript/runtime/lib/es6/Belt_Option.js";
9
7
  import * as Stdlib_Null from "@rescript/runtime/lib/es6/Stdlib_Null.js";
10
8
  import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
11
9
  import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
@@ -27,17 +25,17 @@ let fields = [
27
25
  ];
28
26
 
29
27
  let table = Table.mkTable("envio_chains", undefined, [
30
- Table.mkField("id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, true, undefined, undefined, undefined),
31
- Table.mkField("start_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
32
- Table.mkField("end_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.int), undefined, undefined, true, undefined, undefined, undefined, undefined),
33
- Table.mkField("max_reorg_depth", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
34
- Table.mkField("buffer_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
35
- Table.mkField("source_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
36
- Table.mkField("first_event_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.int), undefined, undefined, true, undefined, undefined, undefined, undefined),
37
- Table.mkField("ready_at", "Date", S$RescriptSchema.$$null(Utils.Schema.dbDate), undefined, undefined, true, undefined, undefined, undefined, undefined),
38
- Table.mkField("events_processed", "UInt52", S$RescriptSchema.float, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
39
- Table.mkField("_is_hyper_sync", "Boolean", S$RescriptSchema.bool, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
40
- Table.mkField("progress_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
28
+ Table.mkField("id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, true, undefined, undefined, undefined, undefined, undefined),
29
+ Table.mkField("start_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
30
+ Table.mkField("end_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.int), undefined, undefined, true, undefined, undefined, undefined, undefined, undefined, undefined),
31
+ Table.mkField("max_reorg_depth", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
32
+ Table.mkField("buffer_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
33
+ Table.mkField("source_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
34
+ Table.mkField("first_event_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.int), undefined, undefined, true, undefined, undefined, undefined, undefined, undefined, undefined),
35
+ Table.mkField("ready_at", "Date", S$RescriptSchema.$$null(Utils.Schema.dbDate), undefined, undefined, true, undefined, undefined, undefined, undefined, undefined, undefined),
36
+ Table.mkField("events_processed", "UInt52", S$RescriptSchema.float, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
37
+ Table.mkField("_is_hyper_sync", "Boolean", S$RescriptSchema.bool, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
38
+ Table.mkField("progress_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
41
39
  ], undefined);
42
40
 
43
41
  function initialFromConfig(chainConfig) {
@@ -60,13 +58,13 @@ function makeInitialValuesQuery(pgSchema, chainConfigs) {
60
58
  if (chainConfigs.length === 0) {
61
59
  return;
62
60
  }
63
- let columnNames = Belt_Array.map(fields, field => `"` + field + `"`);
64
- let valuesRows = Belt_Array.map(chainConfigs, chainConfig => {
61
+ let columnNames = fields.map(field => `"` + field + `"`);
62
+ let valuesRows = chainConfigs.map(chainConfig => {
65
63
  let initialValues = initialFromConfig(chainConfig);
66
- let values = Belt_Array.map(fields, field => {
64
+ let values = fields.map(field => {
67
65
  let value = initialValues[field];
68
66
  let match = typeof value;
69
- if (match === "bigint") {
67
+ if (match === "number" || match === "bigint") {
70
68
  return value.toString();
71
69
  } else if (match === "boolean") {
72
70
  if (value) {
@@ -76,8 +74,6 @@ function makeInitialValuesQuery(pgSchema, chainConfigs) {
76
74
  }
77
75
  } else if (match === "object") {
78
76
  return "NULL";
79
- } else if (match === "number") {
80
- return String(value);
81
77
  } else {
82
78
  return Stdlib_JsError.throwWithMessage("Invalid envio_chains value type");
83
79
  }
@@ -96,9 +92,9 @@ let metaFields = [
96
92
  ];
97
93
 
98
94
  function makeMetaFieldsUpdateQuery(pgSchema) {
99
- let setClauses = Belt_Array.mapWithIndex(metaFields, (index, field) => {
95
+ let setClauses = metaFields.map((field, index) => {
100
96
  let paramIndex = index + 2 | 0;
101
- return `"` + field + `" = $` + String(paramIndex);
97
+ return `"` + field + `" = $` + paramIndex.toString();
102
98
  });
103
99
  return `UPDATE "` + pgSchema + `"."` + table.tableName + `"
104
100
  SET ` + setClauses.join(",\n ") + `
@@ -170,9 +166,9 @@ let progressFields = [
170
166
  ];
171
167
 
172
168
  function makeProgressFieldsUpdateQuery(pgSchema) {
173
- let setClauses = Belt_Array.mapWithIndex(progressFields, (index, field) => {
169
+ let setClauses = progressFields.map((field, index) => {
174
170
  let paramIndex = index + 2 | 0;
175
- return `"` + field + `" = $` + String(paramIndex);
171
+ return `"` + field + `" = $` + paramIndex.toString();
176
172
  });
177
173
  return `UPDATE "` + pgSchema + `"."` + table.tableName + `"
178
174
  SET ` + setClauses.join(",\n ") + `
@@ -227,8 +223,8 @@ let Chains = {
227
223
  };
228
224
 
229
225
  let table$1 = Table.mkTable("envio_info", undefined, [
230
- Table.mkField("id", "Int32", S$RescriptSchema.int, "1", undefined, undefined, true, undefined, undefined, undefined),
231
- Table.mkField("config", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
226
+ Table.mkField("id", "Int32", S$RescriptSchema.int, "1", undefined, undefined, true, undefined, undefined, undefined, undefined, undefined),
227
+ Table.mkField("config", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
232
228
  ], undefined);
233
229
 
234
230
  let undefinedTableSqlState = "42P01";
@@ -250,7 +246,7 @@ async function read(sql, pgSchema) {
250
246
  throw exn;
251
247
  }
252
248
  }
253
- return Belt_Option.map(Belt_Array.get(rows, 0), row => JSON.parse(row.config));
249
+ return Stdlib_Option.map(rows[0], row => JSON.parse(row.config));
254
250
  }
255
251
 
256
252
  function write(sql, pgSchema, envioInfo) {
@@ -276,11 +272,11 @@ let dbSchema = S$RescriptSchema.object(s => ({
276
272
  }));
277
273
 
278
274
  let table$2 = Table.mkTable("envio_checkpoints", undefined, [
279
- Table.mkField("id", "UInt64", S$RescriptSchema.bigint, undefined, undefined, undefined, true, undefined, undefined, undefined),
280
- Table.mkField("chain_id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
281
- Table.mkField("block_number", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
282
- Table.mkField("block_hash", "String", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined, undefined),
283
- Table.mkField("events_processed", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
275
+ Table.mkField("id", "UInt64", S$RescriptSchema.bigint, undefined, undefined, undefined, true, undefined, undefined, undefined, undefined, undefined),
276
+ Table.mkField("chain_id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
277
+ Table.mkField("block_number", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
278
+ Table.mkField("block_hash", "String", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined, undefined, undefined, undefined),
279
+ Table.mkField("events_processed", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
284
280
  ], undefined);
285
281
 
286
282
  function makeGetReorgCheckpointsQuery(pgSchema) {
@@ -351,7 +347,7 @@ function getRollbackTargetCheckpoint(sql, pgSchema, reorgChainId, lastKnownValid
351
347
  reorgChainId,
352
348
  lastKnownValidBlockNumber
353
349
  ], {prepare: true});
354
- return rawResult.then(rows => Belt_Option.map(Belt_Array.get(rows, 0), row => BigInt(row.id)));
350
+ return rawResult.then(rows => Stdlib_Option.map(rows[0], row => BigInt(row.id)));
355
351
  }
356
352
 
357
353
  function makeGetRollbackProgressDiffQuery(pgSchema) {
@@ -401,19 +397,19 @@ let schema = S$RescriptSchema.schema(s => ({
401
397
  }));
402
398
 
403
399
  let table$3 = Table.mkTable("raw_events", undefined, [
404
- Table.mkField("chain_id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
405
- Table.mkField("event_id", "UInt64", S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
406
- Table.mkField("event_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
407
- Table.mkField("contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
408
- Table.mkField("block_number", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
409
- Table.mkField("log_index", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
410
- Table.mkField("src_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
411
- Table.mkField("block_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
412
- Table.mkField("block_timestamp", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
413
- Table.mkField("block_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined),
414
- Table.mkField("transaction_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined),
415
- Table.mkField("params", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined),
416
- Table.mkField("serial", "BigSerial", S$RescriptSchema.$$null(S$RescriptSchema.bigint), undefined, undefined, true, true, undefined, undefined, undefined)
400
+ Table.mkField("chain_id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
401
+ Table.mkField("event_id", "UInt64", S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
402
+ Table.mkField("event_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
403
+ Table.mkField("contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
404
+ Table.mkField("block_number", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
405
+ Table.mkField("log_index", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
406
+ Table.mkField("src_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
407
+ Table.mkField("block_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
408
+ Table.mkField("block_timestamp", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
409
+ Table.mkField("block_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
410
+ Table.mkField("transaction_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
411
+ Table.mkField("params", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
412
+ Table.mkField("serial", "BigSerial", S$RescriptSchema.$$null(S$RescriptSchema.bigint), undefined, undefined, true, true, undefined, undefined, undefined, undefined, undefined)
417
413
  ], undefined);
418
414
 
419
415
  let RawEvents = {