envio 2.22.0 → 2.22.2

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 (48) hide show
  1. package/package.json +7 -6
  2. package/src/Address.res.js +30 -0
  3. package/src/ChainMap.res.js +77 -0
  4. package/src/Envio.res.js +16 -0
  5. package/src/ErrorHandling.res.js +56 -0
  6. package/src/EventUtils.res.js +75 -0
  7. package/src/EvmTypes.res.js +16 -0
  8. package/src/FetchState.res.js +969 -0
  9. package/src/Hasura.res.js +245 -0
  10. package/src/Internal.res.js +50 -0
  11. package/src/LazyLoader.res.js +117 -0
  12. package/src/LoadManager.res.js +124 -0
  13. package/src/LogSelection.res.js +203 -0
  14. package/src/Logging.res.js +247 -0
  15. package/src/Persistence.res.js +90 -0
  16. package/src/PgStorage.res +18 -4
  17. package/src/PgStorage.res.js +125 -0
  18. package/src/Prometheus.res.js +750 -0
  19. package/src/ReorgDetection.res.js +223 -0
  20. package/src/Throttler.res.js +60 -0
  21. package/src/Time.res.js +41 -0
  22. package/src/TopicFilter.res.js +86 -0
  23. package/src/Utils.res.js +527 -0
  24. package/src/bindings/BigDecimal.res.js +41 -0
  25. package/src/bindings/BigInt.res.js +138 -0
  26. package/src/bindings/Ethers.res.js +109 -0
  27. package/src/bindings/Express.res.js +2 -0
  28. package/src/bindings/Hrtime.res.js +66 -0
  29. package/src/bindings/NodeJs.res.js +29 -0
  30. package/src/bindings/Pino.res.js +95 -0
  31. package/src/bindings/Postgres.res.js +16 -0
  32. package/src/bindings/PromClient.res.js +17 -0
  33. package/src/bindings/Promise.res.js +25 -0
  34. package/src/bindings/SDSL.res.js +8 -0
  35. package/src/bindings/Viem.res.js +45 -0
  36. package/src/db/EntityHistory.res.js +307 -0
  37. package/src/db/Schema.res.js +54 -0
  38. package/src/db/Table.res.js +365 -0
  39. package/src/sources/Fuel.res.js +28 -0
  40. package/src/sources/HyperFuel.res.js +193 -0
  41. package/src/sources/HyperFuelClient.res.js +19 -0
  42. package/src/sources/HyperSync.res.js +301 -0
  43. package/src/sources/HyperSyncClient.res.js +99 -0
  44. package/src/sources/HyperSyncJsonApi.res.js +259 -0
  45. package/src/sources/Rpc.res.js +198 -0
  46. package/src/sources/Source.res.js +9 -0
  47. package/src/sources/SourceManager.res.js +366 -0
  48. package/src/vendored/Rest.res.js +574 -0
@@ -0,0 +1,307 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ 'use strict';
3
+
4
+ var Table = require("./Table.res.js");
5
+ var Js_exn = require("rescript/lib/js/js_exn.js");
6
+ var Belt_Array = require("rescript/lib/js/belt_Array.js");
7
+ var Belt_Option = require("rescript/lib/js/belt_Option.js");
8
+ var S$RescriptSchema = require("rescript-schema/src/S.res.js");
9
+
10
+ var variants = [
11
+ "SET",
12
+ "DELETE"
13
+ ];
14
+
15
+ var name = "ENTITY_HISTORY_ROW_ACTION";
16
+
17
+ var schema = S$RescriptSchema.$$enum(variants);
18
+
19
+ var RowAction = {
20
+ variants: variants,
21
+ name: name,
22
+ schema: schema
23
+ };
24
+
25
+ var entityIdOnlySchema = S$RescriptSchema.schema(function (s) {
26
+ return {
27
+ id: s.m(S$RescriptSchema.string)
28
+ };
29
+ });
30
+
31
+ var previousHistoryFieldsSchema = S$RescriptSchema.object(function (s) {
32
+ return {
33
+ chain_id: s.f("previous_entity_history_chain_id", S$RescriptSchema.$$null(S$RescriptSchema.$$int)),
34
+ block_timestamp: s.f("previous_entity_history_block_timestamp", S$RescriptSchema.$$null(S$RescriptSchema.$$int)),
35
+ block_number: s.f("previous_entity_history_block_number", S$RescriptSchema.$$null(S$RescriptSchema.$$int)),
36
+ log_index: s.f("previous_entity_history_log_index", S$RescriptSchema.$$null(S$RescriptSchema.$$int))
37
+ };
38
+ });
39
+
40
+ var currentHistoryFieldsSchema = S$RescriptSchema.object(function (s) {
41
+ return {
42
+ chain_id: s.f("entity_history_chain_id", S$RescriptSchema.$$int),
43
+ block_timestamp: s.f("entity_history_block_timestamp", S$RescriptSchema.$$int),
44
+ block_number: s.f("entity_history_block_number", S$RescriptSchema.$$int),
45
+ log_index: s.f("entity_history_log_index", S$RescriptSchema.$$int)
46
+ };
47
+ });
48
+
49
+ function makeHistoryRowSchema(entitySchema) {
50
+ var nullableEntitySchema = S$RescriptSchema.schema(function (s) {
51
+ var match = entitySchema.t;
52
+ if (typeof match !== "object") {
53
+ return Js_exn.raiseError("Failed creating nullableEntitySchema. Expected an object schema for entity");
54
+ }
55
+ if (match.TAG !== "object") {
56
+ return Js_exn.raiseError("Failed creating nullableEntitySchema. Expected an object schema for entity");
57
+ }
58
+ var nulldict = {};
59
+ Belt_Array.forEach(match.items, (function (param) {
60
+ var $$location = param.location;
61
+ var schema = param.schema;
62
+ var match = schema.t;
63
+ var nullableFieldSchema = $$location === "id" || !(typeof match !== "object" || match.TAG !== "null") ? schema : S$RescriptSchema.$$null(schema);
64
+ nulldict[$$location] = s.m(nullableFieldSchema);
65
+ }));
66
+ return nulldict;
67
+ });
68
+ return S$RescriptSchema.transform(S$RescriptSchema.object(function (s) {
69
+ return {
70
+ current: s.flatten(currentHistoryFieldsSchema),
71
+ previous: s.flatten(previousHistoryFieldsSchema),
72
+ entityData: s.flatten(nullableEntitySchema),
73
+ action: s.f("action", schema)
74
+ };
75
+ }), (function (s) {
76
+ return {
77
+ p: (function (v) {
78
+ var match = v.previous;
79
+ var chain_id = match.chain_id;
80
+ var tmp;
81
+ var exit = 0;
82
+ if (chain_id !== undefined) {
83
+ var block_timestamp = match.block_timestamp;
84
+ if (block_timestamp !== undefined) {
85
+ var block_number = match.block_number;
86
+ if (block_number !== undefined) {
87
+ var log_index = match.log_index;
88
+ if (log_index !== undefined) {
89
+ tmp = {
90
+ chain_id: chain_id,
91
+ block_timestamp: block_timestamp,
92
+ block_number: block_number,
93
+ log_index: log_index
94
+ };
95
+ } else {
96
+ exit = 1;
97
+ }
98
+ } else {
99
+ exit = 1;
100
+ }
101
+ } else {
102
+ exit = 1;
103
+ }
104
+ } else if (match.block_timestamp !== undefined || match.block_number !== undefined || match.log_index !== undefined) {
105
+ exit = 1;
106
+ } else {
107
+ tmp = undefined;
108
+ }
109
+ if (exit === 1) {
110
+ tmp = s.fail("Unexpected mix of null and non-null values in previous history fields", undefined);
111
+ }
112
+ var match$1 = v.action;
113
+ var tmp$1;
114
+ if (match$1 === "SET") {
115
+ tmp$1 = {
116
+ TAG: "Set",
117
+ _0: v.entityData
118
+ };
119
+ } else {
120
+ var match$2 = v.entityData;
121
+ tmp$1 = {
122
+ TAG: "Delete",
123
+ _0: {
124
+ id: match$2.id
125
+ }
126
+ };
127
+ }
128
+ return {
129
+ current: v.current,
130
+ previous: tmp,
131
+ entityData: tmp$1
132
+ };
133
+ }),
134
+ s: (function (v) {
135
+ var entityData = v.entityData;
136
+ var match;
137
+ match = entityData.TAG === "Delete" ? [
138
+ entityData._0,
139
+ "DELETE"
140
+ ] : [
141
+ entityData._0,
142
+ "SET"
143
+ ];
144
+ var historyFields = v.previous;
145
+ return {
146
+ current: v.current,
147
+ entityData: match[0],
148
+ action: match[1],
149
+ previous: historyFields !== undefined ? historyFields : ({
150
+ chain_id: undefined,
151
+ block_timestamp: undefined,
152
+ block_number: undefined,
153
+ log_index: undefined
154
+ })
155
+ };
156
+ })
157
+ };
158
+ }));
159
+ }
160
+
161
+ function insertRow(self, sql, historyRow, shouldCopyCurrentEntity) {
162
+ var row = S$RescriptSchema.reverseConvertToJsonOrThrow(historyRow, self.schema);
163
+ return self.insertFn(sql, row, shouldCopyCurrentEntity);
164
+ }
165
+
166
+ function batchInsertRows(self, sql, rows) {
167
+ return Promise.all(Belt_Array.map(rows, (function (historyRow) {
168
+ var containsRollbackDiffChange = Belt_Option.getWithDefault(historyRow.containsRollbackDiffChange, false);
169
+ var shouldCopyCurrentEntity = !containsRollbackDiffChange;
170
+ return insertRow(self, sql, historyRow, shouldCopyCurrentEntity);
171
+ }))).then(function (param) {
172
+
173
+ });
174
+ }
175
+
176
+ function fromTable(table, schema) {
177
+ var currentChangeFieldNames = [
178
+ "entity_history_block_timestamp",
179
+ "entity_history_chain_id",
180
+ "entity_history_block_number",
181
+ "entity_history_log_index"
182
+ ];
183
+ var currentHistoryFields = Belt_Array.map(currentChangeFieldNames, (function (fieldName) {
184
+ return Table.mkField(fieldName, "INTEGER", S$RescriptSchema.never, undefined, undefined, undefined, true, undefined, undefined);
185
+ }));
186
+ var previousChangeFieldNames = Belt_Array.map(currentChangeFieldNames, (function (fieldName) {
187
+ return "previous_" + fieldName;
188
+ }));
189
+ var previousHistoryFields = Belt_Array.map(previousChangeFieldNames, (function (fieldName) {
190
+ return Table.mkField(fieldName, "INTEGER", S$RescriptSchema.never, undefined, undefined, true, undefined, undefined, undefined);
191
+ }));
192
+ var id = "id";
193
+ var dataFields = Belt_Array.keepMap(table.fields, (function (field) {
194
+ if (field.TAG !== "Field") {
195
+ return ;
196
+ }
197
+ var field$1 = field._0;
198
+ var match = field$1.fieldName;
199
+ switch (match) {
200
+ case "db_write_timestamp" :
201
+ return ;
202
+ case "id" :
203
+ return {
204
+ TAG: "Field",
205
+ _0: {
206
+ fieldName: id,
207
+ fieldType: field$1.fieldType,
208
+ fieldSchema: field$1.fieldSchema,
209
+ isArray: field$1.isArray,
210
+ isNullable: field$1.isNullable,
211
+ isPrimaryKey: true,
212
+ isIndex: field$1.isIndex,
213
+ linkedEntity: field$1.linkedEntity,
214
+ defaultValue: field$1.defaultValue
215
+ }
216
+ };
217
+ default:
218
+ return {
219
+ TAG: "Field",
220
+ _0: {
221
+ fieldName: field$1.fieldName,
222
+ fieldType: field$1.fieldType,
223
+ fieldSchema: field$1.fieldSchema,
224
+ isArray: field$1.isArray,
225
+ isNullable: true,
226
+ isPrimaryKey: field$1.isPrimaryKey,
227
+ isIndex: false,
228
+ linkedEntity: field$1.linkedEntity,
229
+ defaultValue: field$1.defaultValue
230
+ }
231
+ };
232
+ }
233
+ }));
234
+ var actionFieldName = "action";
235
+ var actionField = Table.mkField(actionFieldName, name, S$RescriptSchema.never, undefined, undefined, undefined, undefined, undefined, undefined);
236
+ var serialField = Table.mkField("serial", "SERIAL", S$RescriptSchema.never, undefined, undefined, true, undefined, true, undefined);
237
+ var dataFieldNames = Belt_Array.map(dataFields, (function (field) {
238
+ return Table.getFieldName(field);
239
+ }));
240
+ var originTableName = table.tableName;
241
+ var originSchemaName = table.schemaName;
242
+ var historyTableName = originTableName + "_history";
243
+ var table$1 = Table.mkTable(historyTableName, originSchemaName, undefined, Belt_Array.concatMany([
244
+ currentHistoryFields,
245
+ previousHistoryFields,
246
+ dataFields,
247
+ [
248
+ actionField,
249
+ serialField
250
+ ]
251
+ ]));
252
+ var insertFnName = "\"insert_" + table$1.tableName + "\"";
253
+ var historyRowArg = "history_row";
254
+ var historyTablePath = "\"" + originSchemaName + "\".\"" + historyTableName + "\"";
255
+ var originTablePath = "\"" + originSchemaName + "\".\"" + originTableName + "\"";
256
+ var previousHistoryFieldsAreNullStr = Belt_Array.map(previousChangeFieldNames, (function (fieldName) {
257
+ return historyRowArg + "." + fieldName + " IS NULL";
258
+ })).join(" OR ");
259
+ var currentChangeFieldNamesCommaSeparated = currentChangeFieldNames.join(", ");
260
+ var dataFieldNamesDoubleQuoted = Belt_Array.map(dataFieldNames, (function (fieldName) {
261
+ return "\"" + fieldName + "\"";
262
+ }));
263
+ var dataFieldNamesCommaSeparated = dataFieldNamesDoubleQuoted.join(", ");
264
+ var allFieldNamesDoubleQuoted = Belt_Array.map(Belt_Array.concatMany([
265
+ currentChangeFieldNames,
266
+ previousChangeFieldNames,
267
+ dataFieldNames,
268
+ [actionFieldName]
269
+ ]), (function (fieldName) {
270
+ return "\"" + fieldName + "\"";
271
+ }));
272
+ var createInsertFnQuery = "CREATE OR REPLACE FUNCTION " + insertFnName + "(" + historyRowArg + " " + historyTablePath + ", should_copy_current_entity BOOLEAN)\n RETURNS void AS $$\n DECLARE\n v_previous_record RECORD;\n v_origin_record RECORD;\n BEGIN\n -- Check if previous values are not provided\n IF " + previousHistoryFieldsAreNullStr + " THEN\n -- Find the most recent record for the same id\n SELECT " + currentChangeFieldNamesCommaSeparated + " INTO v_previous_record\n FROM " + historyTablePath + "\n WHERE " + id + " = " + historyRowArg + "." + id + "\n ORDER BY " + Belt_Array.map(currentChangeFieldNames, (function (fieldName) {
273
+ return fieldName + " DESC";
274
+ })).join(", ") + "\n LIMIT 1;\n\n -- If a previous record exists, use its values\n IF FOUND THEN\n " + Belt_Array.map(Belt_Array.zip(currentChangeFieldNames, previousChangeFieldNames), (function (param) {
275
+ return historyRowArg + "." + param[1] + " := v_previous_record." + param[0] + ";";
276
+ })).join(" ") + "\n ElSIF should_copy_current_entity THEN\n -- Check if a value for the id exists in the origin table and if so, insert a history row for it.\n SELECT " + dataFieldNamesCommaSeparated + " FROM " + originTablePath + " WHERE id = " + historyRowArg + "." + id + " INTO v_origin_record;\n IF FOUND THEN\n INSERT INTO " + historyTablePath + " (" + currentChangeFieldNamesCommaSeparated + ", " + dataFieldNamesCommaSeparated + ", \"" + actionFieldName + "\")\n -- SET the current change data fields to 0 since we don't know what they were\n -- and it doesn't matter provided they are less than any new values\n VALUES (" + Belt_Array.map(currentChangeFieldNames, (function (param) {
277
+ return "0";
278
+ })).join(", ") + ", " + Belt_Array.map(dataFieldNames, (function (fieldName) {
279
+ return "v_origin_record.\"" + fieldName + "\"";
280
+ })).join(", ") + ", 'SET');\n\n " + Belt_Array.map(previousChangeFieldNames, (function (previousFieldName) {
281
+ return historyRowArg + "." + previousFieldName + " := 0;";
282
+ })).join(" ") + "\n END IF;\n END IF;\n END IF;\n\n INSERT INTO " + historyTablePath + " (" + allFieldNamesDoubleQuoted.join(", ") + ")\n VALUES (" + Belt_Array.map(allFieldNamesDoubleQuoted, (function (fieldName) {
283
+ return historyRowArg + "." + fieldName;
284
+ })).join(", ") + ");\n END;\n $$ LANGUAGE plpgsql;\n ";
285
+ var insertFnString = "(sql, rowArgs, shouldCopyCurrentEntity) =>\n sql\`select " + insertFnName + "(ROW(" + Belt_Array.map(allFieldNamesDoubleQuoted, (function (fieldNameDoubleQuoted) {
286
+ return "\${rowArgs[" + fieldNameDoubleQuoted + "]\}";
287
+ })).join(", ") + ", NULL), --NULL argument for SERIAL field\n \${shouldCopyCurrentEntity});\`";
288
+ var insertFn = eval(insertFnString);
289
+ var schema$1 = makeHistoryRowSchema(schema);
290
+ return {
291
+ table: table$1,
292
+ createInsertFnQuery: createInsertFnQuery,
293
+ schema: schema$1,
294
+ schemaRows: S$RescriptSchema.array(schema$1),
295
+ insertFn: insertFn
296
+ };
297
+ }
298
+
299
+ exports.RowAction = RowAction;
300
+ exports.entityIdOnlySchema = entityIdOnlySchema;
301
+ exports.previousHistoryFieldsSchema = previousHistoryFieldsSchema;
302
+ exports.currentHistoryFieldsSchema = currentHistoryFieldsSchema;
303
+ exports.makeHistoryRowSchema = makeHistoryRowSchema;
304
+ exports.insertRow = insertRow;
305
+ exports.batchInsertRows = batchInsertRows;
306
+ exports.fromTable = fromTable;
307
+ /* schema Not a pure module */
@@ -0,0 +1,54 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ 'use strict';
3
+
4
+ var Table = require("./Table.res.js");
5
+ var Js_dict = require("rescript/lib/js/js_dict.js");
6
+ var Belt_Array = require("rescript/lib/js/belt_Array.js");
7
+ var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
8
+
9
+ function make(tables) {
10
+ return Js_dict.fromArray(Belt_Array.map(tables, (function (table) {
11
+ return [
12
+ table.tableName,
13
+ table
14
+ ];
15
+ })));
16
+ }
17
+
18
+ var UndefinedEntity = /* @__PURE__ */Caml_exceptions.create("Schema.UndefinedEntity");
19
+
20
+ var UndefinedFieldInEntity = /* @__PURE__ */Caml_exceptions.create("Schema.UndefinedFieldInEntity");
21
+
22
+ function getDerivedFromFieldName(schema, derivedFromField) {
23
+ var entity = schema[derivedFromField.derivedFromEntity];
24
+ if (entity === undefined) {
25
+ return {
26
+ TAG: "Error",
27
+ _0: {
28
+ RE_EXN_ID: UndefinedEntity,
29
+ _1: derivedFromField
30
+ }
31
+ };
32
+ }
33
+ var field = Table.getFieldByName(entity, derivedFromField.derivedFromField);
34
+ if (field !== undefined) {
35
+ return {
36
+ TAG: "Ok",
37
+ _0: Table.getFieldName(field)
38
+ };
39
+ } else {
40
+ return {
41
+ TAG: "Error",
42
+ _0: {
43
+ RE_EXN_ID: UndefinedFieldInEntity,
44
+ _1: derivedFromField
45
+ }
46
+ };
47
+ }
48
+ }
49
+
50
+ exports.make = make;
51
+ exports.UndefinedEntity = UndefinedEntity;
52
+ exports.UndefinedFieldInEntity = UndefinedFieldInEntity;
53
+ exports.getDerivedFromFieldName = getDerivedFromFieldName;
54
+ /* Table Not a pure module */