envio 2.32.3 → 3.0.0-alpha.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 (115) hide show
  1. package/bin.js +5 -3
  2. package/evm.schema.json +23 -6
  3. package/fuel.schema.json +17 -5
  4. package/index.d.ts +1 -27
  5. package/index.js +9 -6
  6. package/package.json +12 -7
  7. package/rescript.json +4 -3
  8. package/src/{Address.res.js → Address.res.mjs} +7 -6
  9. package/src/Batch.res +4 -4
  10. package/src/{Batch.res.js → Batch.res.mjs} +19 -18
  11. package/src/{ChainMap.res.js → ChainMap.res.mjs} +20 -19
  12. package/src/Change.res +9 -0
  13. package/src/Config.res +5 -5
  14. package/src/{Config.res.js → Config.res.mjs} +13 -10
  15. package/src/Envio.gen.ts +4 -17
  16. package/src/Envio.res +13 -38
  17. package/src/{Envio.res.js → Envio.res.mjs} +5 -16
  18. package/src/{ErrorHandling.res.js → ErrorHandling.res.mjs} +10 -9
  19. package/src/EventRegister.res +10 -11
  20. package/src/{EventRegister.res.js → EventRegister.res.mjs} +33 -26
  21. package/src/EventRegister.resi +2 -1
  22. package/src/{EventUtils.res.js → EventUtils.res.mjs} +10 -9
  23. package/src/{EvmTypes.res.js → EvmTypes.res.mjs} +5 -4
  24. package/src/{FetchState.res.js → FetchState.res.mjs} +44 -43
  25. package/src/{Hasura.res.js → Hasura.res.mjs} +25 -24
  26. package/src/InMemoryStore.res +7 -15
  27. package/src/{InMemoryStore.res.js → InMemoryStore.res.mjs} +21 -22
  28. package/src/InMemoryTable.res +50 -35
  29. package/src/{InMemoryTable.res.js → InMemoryTable.res.mjs} +73 -104
  30. package/src/Internal.gen.ts +1 -5
  31. package/src/Internal.res +29 -40
  32. package/src/Internal.res.mjs +58 -0
  33. package/src/{LazyLoader.res.js → LazyLoader.res.mjs} +14 -13
  34. package/src/{LoadManager.res.js → LoadManager.res.mjs} +11 -10
  35. package/src/{LogSelection.res.js → LogSelection.res.mjs} +14 -13
  36. package/src/{Logging.res.js → Logging.res.mjs} +37 -36
  37. package/src/Persistence.res +190 -38
  38. package/src/Persistence.res.mjs +213 -0
  39. package/src/PgStorage.res +700 -14
  40. package/src/{PgStorage.res.js → PgStorage.res.mjs} +478 -65
  41. package/src/Platform.res +140 -0
  42. package/src/Platform.res.mjs +170 -0
  43. package/src/Prometheus.res +41 -0
  44. package/src/{Prometheus.res.js → Prometheus.res.mjs} +106 -60
  45. package/src/{ReorgDetection.res.js → ReorgDetection.res.mjs} +12 -11
  46. package/src/SafeCheckpointTracking.res +5 -4
  47. package/src/{SafeCheckpointTracking.res.js → SafeCheckpointTracking.res.mjs} +6 -5
  48. package/src/Sink.res +47 -0
  49. package/src/Sink.res.mjs +37 -0
  50. package/src/{TableIndices.res.js → TableIndices.res.mjs} +8 -7
  51. package/src/{Throttler.res.js → Throttler.res.mjs} +7 -6
  52. package/src/{Time.res.js → Time.res.mjs} +8 -7
  53. package/src/{TopicFilter.res.js → TopicFilter.res.mjs} +18 -17
  54. package/src/Utils.res +42 -0
  55. package/src/{Utils.res.js → Utils.res.mjs} +71 -34
  56. package/src/bindings/BigDecimal.gen.ts +2 -2
  57. package/src/bindings/BigDecimal.res +5 -5
  58. package/src/bindings/BigDecimal.res.d.mts +5 -0
  59. package/src/bindings/{BigDecimal.res.js → BigDecimal.res.mjs} +10 -9
  60. package/src/bindings/BigInt.gen.ts +2 -2
  61. package/src/bindings/BigInt.res.d.mts +5 -0
  62. package/src/bindings/{BigInt.res.js → BigInt.res.mjs} +25 -24
  63. package/src/bindings/ClickHouse.res +387 -0
  64. package/src/bindings/ClickHouse.res.mjs +275 -0
  65. package/src/bindings/Ethers.gen.ts +2 -2
  66. package/src/bindings/Ethers.res.d.mts +5 -0
  67. package/src/bindings/{Ethers.res.js → Ethers.res.mjs} +18 -17
  68. package/src/bindings/Express.res.mjs +2 -0
  69. package/src/bindings/{Hrtime.res.js → Hrtime.res.mjs} +13 -12
  70. package/src/bindings/{Lodash.res.js → Lodash.res.mjs} +4 -3
  71. package/src/bindings/NodeJs.res +13 -1
  72. package/src/bindings/NodeJs.res.mjs +48 -0
  73. package/src/bindings/Pino.res +4 -4
  74. package/src/bindings/{Pino.res.js → Pino.res.mjs} +16 -15
  75. package/src/bindings/Postgres.res +17 -2
  76. package/src/bindings/{Postgres.res.js → Postgres.res.mjs} +4 -3
  77. package/src/bindings/{PromClient.res.js → PromClient.res.mjs} +6 -5
  78. package/src/bindings/{Promise.res.js → Promise.res.mjs} +6 -5
  79. package/src/bindings/{SDSL.res.js → SDSL.res.mjs} +3 -2
  80. package/src/bindings/{Viem.res.js → Viem.res.mjs} +9 -8
  81. package/src/bindings/vendored-lodash-fns.js +3 -35
  82. package/src/db/EntityHistory.res +33 -156
  83. package/src/db/EntityHistory.res.mjs +121 -0
  84. package/src/db/InternalTable.gen.ts +2 -2
  85. package/src/db/InternalTable.res +55 -56
  86. package/src/db/{InternalTable.res.js → InternalTable.res.mjs} +68 -71
  87. package/src/db/{Schema.res.js → Schema.res.mjs} +10 -9
  88. package/src/db/Table.res +86 -22
  89. package/src/db/{Table.res.js → Table.res.mjs} +108 -40
  90. package/src/sources/{EventRouter.res.js → EventRouter.res.mjs} +17 -16
  91. package/src/sources/{Fuel.res.js → Fuel.res.mjs} +6 -5
  92. package/src/sources/{HyperFuel.res.js → HyperFuel.res.mjs} +14 -13
  93. package/src/sources/{HyperFuelClient.res.js → HyperFuelClient.res.mjs} +7 -6
  94. package/src/sources/{HyperFuelSource.res.js → HyperFuelSource.res.mjs} +28 -27
  95. package/src/sources/{HyperSync.res.js → HyperSync.res.mjs} +21 -20
  96. package/src/sources/HyperSyncClient.gen.ts +1 -1
  97. package/src/sources/HyperSyncClient.res +78 -20
  98. package/src/sources/{HyperSyncClient.res.js → HyperSyncClient.res.mjs} +32 -15
  99. package/src/sources/{HyperSyncJsonApi.res.js → HyperSyncJsonApi.res.mjs} +10 -9
  100. package/src/sources/HyperSyncSource.res +77 -9
  101. package/src/sources/{HyperSyncSource.res.js → HyperSyncSource.res.mjs} +99 -38
  102. package/src/sources/{Rpc.res.js → Rpc.res.mjs} +16 -15
  103. package/src/sources/{RpcSource.res.js → RpcSource.res.mjs} +40 -39
  104. package/src/sources/Source.res +1 -1
  105. package/src/sources/{Source.res.js → Source.res.mjs} +4 -3
  106. package/src/sources/SourceManager.res +12 -1
  107. package/src/sources/{SourceManager.res.js → SourceManager.res.mjs} +32 -21
  108. package/src/sources/vendored-fuel-abi-coder.js +94 -149
  109. package/src/vendored/{Rest.res.js → Rest.res.mjs} +12 -11
  110. package/src/Internal.res.js +0 -62
  111. package/src/Persistence.res.js +0 -159
  112. package/src/bindings/NodeJs.res.js +0 -35
  113. package/src/db/EntityHistory.res.js +0 -195
  114. /package/src/{Indexer.res.js → Change.res.mjs} +0 -0
  115. /package/src/{bindings/Express.res.js → Indexer.res.mjs} +0 -0
@@ -1,15 +1,13 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
- 'use strict';
3
-
4
- var Table = require("./Table.res.js");
5
- var Utils = require("../Utils.res.js");
6
- var Js_exn = require("rescript/lib/js/js_exn.js");
7
- var Address = require("../Address.res.js");
8
- var Js_dict = require("rescript/lib/js/js_dict.js");
9
- var Js_null = require("rescript/lib/js/js_null.js");
10
- var Belt_Array = require("rescript/lib/js/belt_Array.js");
11
- var EntityHistory = require("./EntityHistory.res.js");
12
- var S$RescriptSchema = require("rescript-schema/src/S.res.js");
2
+
3
+ import * as Table from "./Table.res.mjs";
4
+ import * as Utils from "../Utils.res.mjs";
5
+ import * as Js_exn from "rescript/lib/es6/js_exn.js";
6
+ import * as Address from "../Address.res.mjs";
7
+ import * as Js_dict from "rescript/lib/es6/js_dict.js";
8
+ import * as Js_null from "rescript/lib/es6/js_null.js";
9
+ import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
10
+ import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
13
11
 
14
12
  var name = "dynamic_contract_registry";
15
13
 
@@ -35,27 +33,24 @@ var schema = S$RescriptSchema.schema(function (s) {
35
33
  var rowsSchema = S$RescriptSchema.array(schema);
36
34
 
37
35
  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)
36
+ Table.mkField("id", "String", S$RescriptSchema.string, undefined, undefined, undefined, true, undefined, undefined),
37
+ Table.mkField("chain_id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
38
+ Table.mkField("registering_event_block_number", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
39
+ Table.mkField("registering_event_log_index", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
40
+ Table.mkField("registering_event_block_timestamp", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
41
+ Table.mkField("registering_event_contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
42
+ Table.mkField("registering_event_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
43
+ Table.mkField("registering_event_src_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
44
+ Table.mkField("contract_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
45
+ Table.mkField("contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
48
46
  ]);
49
47
 
50
- var entityHistory = EntityHistory.fromTable(table, schema, -1);
51
-
52
48
  var config = {
53
49
  name: name,
54
50
  index: -1,
55
51
  schema: schema,
56
52
  rowsSchema: rowsSchema,
57
- table: table,
58
- entityHistory: entityHistory
53
+ table: table
59
54
  };
60
55
 
61
56
  var DynamicContractRegistry = {
@@ -65,7 +60,6 @@ var DynamicContractRegistry = {
65
60
  schema: schema,
66
61
  rowsSchema: rowsSchema,
67
62
  table: table,
68
- entityHistory: entityHistory,
69
63
  config: config
70
64
  };
71
65
 
@@ -85,18 +79,18 @@ var fields = [
85
79
  ];
86
80
 
87
81
  var table$1 = Table.mkTable("envio_chains", undefined, [
88
- Table.mkField("id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
89
- Table.mkField("start_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
90
- Table.mkField("end_block", "INTEGER", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
91
- Table.mkField("max_reorg_depth", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
92
- Table.mkField("buffer_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
93
- Table.mkField("source_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
94
- Table.mkField("first_event_block", "INTEGER", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
95
- Table.mkField("ready_at", "TIMESTAMP WITH TIME ZONE NULL", S$RescriptSchema.$$null(Utils.Schema.dbDate), undefined, undefined, true, undefined, undefined, undefined),
96
- Table.mkField("events_processed", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
97
- Table.mkField("_is_hyper_sync", "BOOLEAN", S$RescriptSchema.bool, undefined, undefined, undefined, undefined, undefined, undefined),
98
- Table.mkField("progress_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
99
- Table.mkField("_num_batches_fetched", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
82
+ Table.mkField("id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
83
+ Table.mkField("start_block", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
84
+ Table.mkField("end_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
85
+ Table.mkField("max_reorg_depth", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
86
+ Table.mkField("buffer_block", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
87
+ Table.mkField("source_block", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
88
+ Table.mkField("first_event_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
89
+ Table.mkField("ready_at", "Date", S$RescriptSchema.$$null(Utils.Schema.dbDate), undefined, undefined, true, undefined, undefined, undefined),
90
+ Table.mkField("events_processed", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
91
+ Table.mkField("_is_hyper_sync", "Boolean", S$RescriptSchema.bool, undefined, undefined, undefined, undefined, undefined, undefined),
92
+ Table.mkField("progress_block", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
93
+ Table.mkField("_num_batches_fetched", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
100
94
  ]);
101
95
 
102
96
  function initialFromConfig(chainConfig) {
@@ -231,12 +225,11 @@ var Chains = {
231
225
  };
232
226
 
233
227
  var table$2 = Table.mkTable("persisted_state", undefined, [
234
- Table.mkField("id", "SERIAL", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
235
- Table.mkField("envio_version", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
236
- Table.mkField("config_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
237
- Table.mkField("schema_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
238
- Table.mkField("handler_files_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
239
- Table.mkField("abi_files_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
228
+ Table.mkField("id", "Serial", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
229
+ Table.mkField("envio_version", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
230
+ Table.mkField("config_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
231
+ Table.mkField("schema_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
232
+ Table.mkField("abi_files_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
240
233
  ]);
241
234
 
242
235
  var PersistedState = {
@@ -244,11 +237,11 @@ var PersistedState = {
244
237
  };
245
238
 
246
239
  var table$3 = Table.mkTable("envio_checkpoints", undefined, [
247
- Table.mkField("id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
248
- Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
249
- Table.mkField("block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
250
- Table.mkField("block_hash", "TEXT", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined),
251
- Table.mkField("events_processed", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
240
+ Table.mkField("id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
241
+ Table.mkField("chain_id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
242
+ Table.mkField("block_number", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
243
+ Table.mkField("block_hash", "String", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined),
244
+ Table.mkField("events_processed", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
252
245
  ]);
253
246
 
254
247
  function makeGetReorgCheckpointsQuery(pgSchema) {
@@ -339,19 +332,21 @@ var schema$1 = S$RescriptSchema.schema(function (s) {
339
332
  });
340
333
 
341
334
  var table$4 = Table.mkTable("raw_events", undefined, [
342
- Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
343
- Table.mkField("event_id", "NUMERIC", S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined),
344
- Table.mkField("event_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
345
- Table.mkField("contract_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
346
- Table.mkField("block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
347
- Table.mkField("log_index", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
348
- Table.mkField("src_address", "TEXT", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
349
- Table.mkField("block_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
350
- Table.mkField("block_timestamp", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
351
- Table.mkField("block_fields", "JSONB", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
352
- Table.mkField("transaction_fields", "JSONB", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
353
- Table.mkField("params", "JSONB", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
354
- Table.mkField("serial", "SERIAL", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, true, undefined, undefined)
335
+ Table.mkField("chain_id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
336
+ Table.mkField("event_id", {
337
+ type: "BigInt"
338
+ }, S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined),
339
+ Table.mkField("event_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
340
+ Table.mkField("contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
341
+ Table.mkField("block_number", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
342
+ Table.mkField("log_index", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
343
+ Table.mkField("src_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
344
+ Table.mkField("block_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
345
+ Table.mkField("block_timestamp", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
346
+ Table.mkField("block_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
347
+ Table.mkField("transaction_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
348
+ Table.mkField("params", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
349
+ Table.mkField("serial", "Serial", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, true, undefined, undefined)
355
350
  ]);
356
351
 
357
352
  var RawEvents = {
@@ -384,13 +379,15 @@ var isNullable = true;
384
379
 
385
380
  var isIndex = true;
386
381
 
387
- exports.isPrimaryKey = isPrimaryKey;
388
- exports.isNullable = isNullable;
389
- exports.isIndex = isIndex;
390
- exports.DynamicContractRegistry = DynamicContractRegistry;
391
- exports.Chains = Chains;
392
- exports.PersistedState = PersistedState;
393
- exports.Checkpoints = Checkpoints;
394
- exports.RawEvents = RawEvents;
395
- exports.Views = Views;
382
+ export {
383
+ isPrimaryKey ,
384
+ isNullable ,
385
+ isIndex ,
386
+ DynamicContractRegistry ,
387
+ Chains ,
388
+ PersistedState ,
389
+ Checkpoints ,
390
+ RawEvents ,
391
+ Views ,
392
+ }
396
393
  /* schema Not a pure module */
@@ -1,10 +1,9 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
- 'use strict';
3
2
 
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");
3
+ import * as Table from "./Table.res.mjs";
4
+ import * as Js_dict from "rescript/lib/es6/js_dict.js";
5
+ import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
6
+ import * as Caml_exceptions from "rescript/lib/es6/caml_exceptions.js";
8
7
 
9
8
  function make(tables) {
10
9
  return Js_dict.fromArray(Belt_Array.map(tables, (function (table) {
@@ -47,8 +46,10 @@ function getDerivedFromFieldName(schema, derivedFromField) {
47
46
  }
48
47
  }
49
48
 
50
- exports.make = make;
51
- exports.UndefinedEntity = UndefinedEntity;
52
- exports.UndefinedFieldInEntity = UndefinedFieldInEntity;
53
- exports.getDerivedFromFieldName = getDerivedFromFieldName;
49
+ export {
50
+ make ,
51
+ UndefinedEntity ,
52
+ UndefinedFieldInEntity ,
53
+ getDerivedFromFieldName ,
54
+ }
54
55
  /* Table Not a pure module */
package/src/db/Table.res CHANGED
@@ -2,20 +2,35 @@ open Belt
2
2
 
3
3
  type primitive
4
4
  type derived
5
- @unboxed
5
+
6
+ type enum
7
+ type enumConfig<'enum> = {
8
+ name: string,
9
+ variants: array<'enum>,
10
+ schema: S.t<'enum>,
11
+ }
12
+ external fromGenericEnumConfig: enumConfig<'enum> => enumConfig<enum> = "%identity"
13
+
14
+ let makeEnumConfig = (~name, ~variants) => {
15
+ name,
16
+ variants,
17
+ schema: S.enum(variants),
18
+ }
19
+
20
+ @tag("type")
6
21
  type fieldType =
7
- | @as("INTEGER") Integer
8
- | @as("BIGINT") BigInt
9
- | @as("BOOLEAN") Boolean
10
- | @as("NUMERIC") Numeric
11
- | @as("DOUBLE PRECISION") DoublePrecision
12
- | @as("TEXT") Text
13
- | @as("SERIAL") Serial
14
- | @as("JSONB") JsonB
15
- | @as("TIMESTAMP WITH TIME ZONE") Timestamp
16
- | @as("TIMESTAMP") TimestampWithoutTimezone
17
- | @as("TIMESTAMP WITH TIME ZONE NULL") TimestampWithNullTimezone
18
- | Custom(string)
22
+ | String
23
+ | Boolean
24
+ | Uint32
25
+ | Int32
26
+ | Number
27
+ | BigInt({precision?: int})
28
+ | BigDecimal({config?: (int, int)}) // (precision, scale)
29
+ | Serial
30
+ | Json
31
+ | Date
32
+ | Enum({config: enumConfig<enum>})
33
+ | Entity({name: string})
19
34
 
20
35
  type field = {
21
36
  fieldName: string,
@@ -84,8 +99,52 @@ let getFieldName = fieldOrDerived =>
84
99
  | DerivedFrom({fieldName}) => fieldName
85
100
  }
86
101
 
87
- let getFieldType = (field: field) => {
88
- (field.fieldType :> string) ++ (field.isArray ? "[]" : "")
102
+ let idFieldName = "id"
103
+
104
+ let getPgFieldType = (
105
+ ~fieldType: fieldType,
106
+ ~pgSchema,
107
+ ~isArray,
108
+ ~isNumericArrayAsText,
109
+ ~isNullable,
110
+ ) => {
111
+ let columnType = switch fieldType {
112
+ | String => (Postgres.Text :> string)
113
+ | Boolean => (Postgres.Boolean :> string)
114
+ | Int32 => (Postgres.Integer :> string)
115
+ | Uint32 => (Postgres.BigInt :> string)
116
+ | Number => (Postgres.DoublePrecision :> string)
117
+ | BigInt({?precision}) =>
118
+ (Postgres.Numeric :> string) ++
119
+ switch precision {
120
+ | Some(precision) => `(${precision->Int.toString}, 0)` // scale is always 0 for BigInt
121
+ | None => ""
122
+ }
123
+
124
+ | BigDecimal({?config}) =>
125
+ (Postgres.Numeric :> string) ++
126
+ switch config {
127
+ | Some((precision, scale)) => `(${precision->Int.toString}, ${scale->Int.toString})`
128
+ | None => ""
129
+ }
130
+
131
+ | Serial => (Postgres.Serial :> string)
132
+ | Json => (Postgres.JsonB :> string)
133
+ | Date =>
134
+ (isNullable ? Postgres.TimestampWithTimezoneNull : Postgres.TimestampWithTimezone :> string)
135
+ | Enum({config}) => `"${pgSchema}".${config.name}`
136
+ | Entity(_) => (Postgres.Text :> string) // FIXME: Will it work correctly if id is not a text column?
137
+ }
138
+
139
+ // Workaround for Hasura bug https://github.com/enviodev/hyperindex/issues/788
140
+ let isNumericAsText = isArray && isNumericArrayAsText
141
+ let columnType = if columnType == (Postgres.Numeric :> string) && isNumericAsText {
142
+ (Postgres.Text :> string)
143
+ } else {
144
+ columnType
145
+ }
146
+
147
+ columnType ++ (isArray ? "[]" : "")
89
148
  }
90
149
 
91
150
  type table = {
@@ -240,15 +299,20 @@ let toSqlParams = (table: table, ~schema, ~pgSchema) => {
240
299
  ->Js.Array2.push(
241
300
  switch field {
242
301
  | Field(f) =>
302
+ let pgFieldType = getPgFieldType(
303
+ ~fieldType=f.fieldType,
304
+ ~pgSchema,
305
+ ~isArray=true,
306
+ ~isNullable=f.isNullable,
307
+ ~isNumericArrayAsText=false, // TODO: Test whether it should be passed via args and match the column type
308
+ )
243
309
  switch f.fieldType {
244
- // The case for `BigDecimal! @config(precision: 10, scale: 8)`
245
- | Custom(fieldType) if fieldType->Js.String2.startsWith("NUMERIC(") => fieldType
246
- | Custom(fieldType) => `${(Text :> string)}[]::"${pgSchema}".${(fieldType :> string)}`
247
- | Boolean => `${(Integer :> string)}[]::${(f.fieldType :> string)}`
248
- | fieldType => (fieldType :> string)
310
+ | Enum(_) => `${(Text: Postgres.columnType :> string)}[]::${pgFieldType}`
311
+ | Boolean => `${(Integer: Postgres.columnType :> string)}[]::${pgFieldType}`
312
+ | _ => pgFieldType
249
313
  }
250
- | DerivedFrom(_) => (Text :> string)
251
- } ++ "[]",
314
+ | DerivedFrom(_) => (Text: Postgres.columnType :> string) ++ "[]"
315
+ },
252
316
  )
253
317
  ->ignore
254
318
  dict->Js.Dict.set(location, s.matches(schema->coerceSchema))
@@ -1,14 +1,21 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
- 'use strict';
3
2
 
4
- var $$BigInt = require("../bindings/BigInt.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 Caml_option = require("rescript/lib/js/caml_option.js");
9
- var Belt_SetString = require("rescript/lib/js/belt_SetString.js");
10
- var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
11
- var S$RescriptSchema = require("rescript-schema/src/S.res.js");
3
+ import * as $$BigInt from "../bindings/BigInt.res.mjs";
4
+ import * as Js_exn from "rescript/lib/es6/js_exn.js";
5
+ import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
6
+ import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
7
+ import * as Caml_option from "rescript/lib/es6/caml_option.js";
8
+ import * as Belt_SetString from "rescript/lib/es6/belt_SetString.js";
9
+ import * as Caml_exceptions from "rescript/lib/es6/caml_exceptions.js";
10
+ import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
11
+
12
+ function makeEnumConfig(name, variants) {
13
+ return {
14
+ name: name,
15
+ variants: variants,
16
+ schema: S$RescriptSchema.$$enum(variants)
17
+ };
18
+ }
12
19
 
13
20
  function mkField(fieldName, fieldType, fieldSchema, $$default, isArrayOpt, isNullableOpt, isPrimaryKeyOpt, isIndexOpt, linkedEntity) {
14
21
  var isArray = isArrayOpt !== undefined ? isArrayOpt : false;
@@ -66,9 +73,63 @@ function getFieldName(fieldOrDerived) {
66
73
  }
67
74
  }
68
75
 
69
- function getFieldType(field) {
70
- return field.fieldType + (
71
- field.isArray ? "[]" : ""
76
+ function getPgFieldType(fieldType, pgSchema, isArray, isNumericArrayAsText, isNullable) {
77
+ var columnType;
78
+ if (typeof fieldType !== "object") {
79
+ switch (fieldType) {
80
+ case "String" :
81
+ columnType = "TEXT";
82
+ break;
83
+ case "Boolean" :
84
+ columnType = "BOOLEAN";
85
+ break;
86
+ case "Uint32" :
87
+ columnType = "BIGINT";
88
+ break;
89
+ case "Int32" :
90
+ columnType = "INTEGER";
91
+ break;
92
+ case "Number" :
93
+ columnType = "DOUBLE PRECISION";
94
+ break;
95
+ case "Serial" :
96
+ columnType = "SERIAL";
97
+ break;
98
+ case "Json" :
99
+ columnType = "JSONB";
100
+ break;
101
+ case "Date" :
102
+ columnType = isNullable ? "TIMESTAMP WITH TIME ZONE NULL" : "TIMESTAMP WITH TIME ZONE";
103
+ break;
104
+
105
+ }
106
+ } else {
107
+ switch (fieldType.type) {
108
+ case "BigInt" :
109
+ var precision = fieldType.precision;
110
+ columnType = "NUMERIC" + (
111
+ precision !== undefined ? "(" + String(precision) + ", 0)" : ""
112
+ );
113
+ break;
114
+ case "BigDecimal" :
115
+ var config = fieldType.config;
116
+ columnType = "NUMERIC" + (
117
+ config !== undefined ? "(" + String(config[0]) + ", " + String(config[1]) + ")" : ""
118
+ );
119
+ break;
120
+ case "Enum" :
121
+ columnType = "\"" + pgSchema + "\"." + fieldType.config.name;
122
+ break;
123
+ case "Entity" :
124
+ columnType = "TEXT";
125
+ break;
126
+
127
+ }
128
+ }
129
+ var isNumericAsText = isArray && isNumericArrayAsText;
130
+ var columnType$1 = columnType === "NUMERIC" && isNumericAsText ? "TEXT" : columnType;
131
+ return columnType$1 + (
132
+ isArray ? "[]" : ""
72
133
  );
73
134
  }
74
135
 
@@ -258,16 +319,17 @@ function toSqlParams(table, schema, pgSchema) {
258
319
  var tmp;
259
320
  if (field$1.TAG === "Field") {
260
321
  var f = field$1._0;
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 === "BIGINT" || fieldType === "INTEGER" || fieldType === "TIMESTAMP WITH TIME ZONE NULL" ? (
263
- fieldType === "BOOLEAN" ? "INTEGER[]::" + f.fieldType : fieldType
322
+ var pgFieldType = getPgFieldType(f.fieldType, pgSchema, true, false, f.isNullable);
323
+ var match = f.fieldType;
324
+ tmp = typeof match !== "object" ? (
325
+ match === "Boolean" ? "INTEGER[]::" + pgFieldType : pgFieldType
264
326
  ) : (
265
- fieldType.startsWith("NUMERIC(") ? fieldType : "TEXT[]::\"" + pgSchema + "\"." + fieldType
327
+ match.type === "Enum" ? "TEXT[]::" + pgFieldType : pgFieldType
266
328
  );
267
329
  } else {
268
- tmp = "TEXT";
330
+ tmp = "TEXT[]";
269
331
  }
270
- arrayFieldTypes.push(tmp + "[]");
332
+ arrayFieldTypes.push(tmp);
271
333
  dict[$$location] = s.m(coerceSchema(param.schema));
272
334
  }));
273
335
  return dict;
@@ -303,26 +365,32 @@ function getCompositeIndices(table) {
303
365
  }));
304
366
  }
305
367
 
306
- exports.mkField = mkField;
307
- exports.mkDerivedFromField = mkDerivedFromField;
308
- exports.getUserDefinedFieldName = getUserDefinedFieldName;
309
- exports.isLinkedEntityField = isLinkedEntityField;
310
- exports.getDbFieldName = getDbFieldName;
311
- exports.getFieldName = getFieldName;
312
- exports.getFieldType = getFieldType;
313
- exports.mkTable = mkTable;
314
- exports.getPrimaryKeyFieldNames = getPrimaryKeyFieldNames;
315
- exports.getFields = getFields;
316
- exports.getFieldNames = getFieldNames;
317
- exports.getNonDefaultFields = getNonDefaultFields;
318
- exports.getLinkedEntityFields = getLinkedEntityFields;
319
- exports.getDerivedFromFields = getDerivedFromFields;
320
- exports.getNonDefaultFieldNames = getNonDefaultFieldNames;
321
- exports.getFieldByName = getFieldByName;
322
- exports.getFieldByDbName = getFieldByDbName;
323
- exports.NonExistingTableField = NonExistingTableField;
324
- exports.getUnfilteredCompositeIndicesUnsafe = getUnfilteredCompositeIndicesUnsafe;
325
- exports.toSqlParams = toSqlParams;
326
- exports.getSingleIndices = getSingleIndices;
327
- exports.getCompositeIndices = getCompositeIndices;
368
+ var idFieldName = "id";
369
+
370
+ export {
371
+ makeEnumConfig ,
372
+ mkField ,
373
+ mkDerivedFromField ,
374
+ getUserDefinedFieldName ,
375
+ isLinkedEntityField ,
376
+ getDbFieldName ,
377
+ getFieldName ,
378
+ idFieldName ,
379
+ getPgFieldType ,
380
+ mkTable ,
381
+ getPrimaryKeyFieldNames ,
382
+ getFields ,
383
+ getFieldNames ,
384
+ getNonDefaultFields ,
385
+ getLinkedEntityFields ,
386
+ getDerivedFromFields ,
387
+ getNonDefaultFieldNames ,
388
+ getFieldByName ,
389
+ getFieldByDbName ,
390
+ NonExistingTableField ,
391
+ getUnfilteredCompositeIndicesUnsafe ,
392
+ toSqlParams ,
393
+ getSingleIndices ,
394
+ getCompositeIndices ,
395
+ }
328
396
  /* BigInt Not a pure module */
@@ -1,13 +1,12 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
- 'use strict';
3
2
 
4
- var Js_exn = require("rescript/lib/js/js_exn.js");
5
- var ChainMap = require("../ChainMap.res.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 Caml_option = require("rescript/lib/js/caml_option.js");
9
- var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
10
- var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js");
3
+ import * as Js_exn from "rescript/lib/es6/js_exn.js";
4
+ import * as ChainMap from "../ChainMap.res.mjs";
5
+ import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
6
+ import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
7
+ import * as Caml_option from "rescript/lib/es6/caml_option.js";
8
+ import * as Caml_exceptions from "rescript/lib/es6/caml_exceptions.js";
9
+ import * as Caml_js_exceptions from "rescript/lib/es6/caml_js_exceptions.js";
11
10
 
12
11
  var EventDuplicate = /* @__PURE__ */Caml_exceptions.create("EventRouter.EventDuplicate");
13
12
 
@@ -114,12 +113,14 @@ function fromEvmEventModsOrThrow(events, chain) {
114
113
  return router;
115
114
  }
116
115
 
117
- exports.EventDuplicate = EventDuplicate;
118
- exports.WildcardCollision = WildcardCollision;
119
- exports.Group = Group;
120
- exports.empty = empty$1;
121
- exports.addOrThrow = addOrThrow$1;
122
- exports.get = get$1;
123
- exports.getEvmEventId = getEvmEventId;
124
- exports.fromEvmEventModsOrThrow = fromEvmEventModsOrThrow;
116
+ export {
117
+ EventDuplicate ,
118
+ WildcardCollision ,
119
+ Group ,
120
+ empty$1 as empty,
121
+ addOrThrow$1 as addOrThrow,
122
+ get$1 as get,
123
+ getEvmEventId ,
124
+ fromEvmEventModsOrThrow ,
125
+ }
125
126
  /* ChainMap Not a pure module */
@@ -1,7 +1,6 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
- 'use strict';
3
2
 
4
- var VendoredFuelAbiCoderJs = require("./vendored-fuel-abi-coder.js");
3
+ import * as VendoredFuelAbiCoderJs from "./vendored-fuel-abi-coder.js";
5
4
 
6
5
  function transpileAbi(prim) {
7
6
  return VendoredFuelAbiCoderJs.transpileAbi(prim);
@@ -22,7 +21,9 @@ var Receipt = {
22
21
  getLogDataDecoder: getLogDataDecoder
23
22
  };
24
23
 
25
- exports.transpileAbi = transpileAbi;
26
- exports.getLogDecoder = getLogDecoder;
27
- exports.Receipt = Receipt;
24
+ export {
25
+ transpileAbi ,
26
+ getLogDecoder ,
27
+ Receipt ,
28
+ }
28
29
  /* ./vendored-fuel-abi-coder.js Not a pure module */