envio 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (184) hide show
  1. package/README.md +164 -30
  2. package/bin.mjs +49 -0
  3. package/evm.schema.json +79 -169
  4. package/fuel.schema.json +50 -21
  5. package/index.d.ts +578 -1
  6. package/index.js +4 -0
  7. package/package.json +47 -31
  8. package/rescript.json +4 -1
  9. package/src/Batch.res +11 -8
  10. package/src/Batch.res.mjs +11 -9
  11. package/src/ChainFetcher.res +531 -0
  12. package/src/ChainFetcher.res.mjs +339 -0
  13. package/src/ChainManager.res +190 -0
  14. package/src/ChainManager.res.mjs +166 -0
  15. package/src/Change.res +3 -3
  16. package/src/Config.gen.ts +19 -0
  17. package/src/Config.res +725 -25
  18. package/src/Config.res.mjs +692 -26
  19. package/src/{Indexer.res → Ctx.res} +1 -1
  20. package/src/Ecosystem.res +9 -124
  21. package/src/Ecosystem.res.mjs +19 -160
  22. package/src/Env.res +33 -73
  23. package/src/Env.res.mjs +29 -85
  24. package/src/Envio.gen.ts +3 -1
  25. package/src/Envio.res +77 -9
  26. package/src/Envio.res.mjs +39 -1
  27. package/src/EventConfigBuilder.res +408 -0
  28. package/src/EventConfigBuilder.res.mjs +376 -0
  29. package/src/EventProcessing.res +469 -0
  30. package/src/EventProcessing.res.mjs +337 -0
  31. package/src/EvmTypes.gen.ts +6 -0
  32. package/src/EvmTypes.res +1 -0
  33. package/src/FetchState.res +1256 -639
  34. package/src/FetchState.res.mjs +1135 -612
  35. package/src/GlobalState.res +1224 -0
  36. package/src/GlobalState.res.mjs +1291 -0
  37. package/src/GlobalStateManager.res +68 -0
  38. package/src/GlobalStateManager.res.mjs +75 -0
  39. package/src/GlobalStateManager.resi +7 -0
  40. package/src/HandlerLoader.res +89 -0
  41. package/src/HandlerLoader.res.mjs +79 -0
  42. package/src/HandlerRegister.res +357 -0
  43. package/src/HandlerRegister.res.mjs +299 -0
  44. package/src/HandlerRegister.resi +30 -0
  45. package/src/Hasura.res +111 -175
  46. package/src/Hasura.res.mjs +88 -150
  47. package/src/InMemoryStore.res +1 -1
  48. package/src/InMemoryStore.res.mjs +3 -3
  49. package/src/InMemoryTable.res +1 -1
  50. package/src/InMemoryTable.res.mjs +1 -1
  51. package/src/Internal.gen.ts +6 -0
  52. package/src/Internal.res +265 -12
  53. package/src/Internal.res.mjs +115 -1
  54. package/src/LoadLayer.res +444 -0
  55. package/src/LoadLayer.res.mjs +296 -0
  56. package/src/LoadLayer.resi +32 -0
  57. package/src/LogSelection.res +33 -27
  58. package/src/LogSelection.res.mjs +6 -0
  59. package/src/Logging.res +21 -7
  60. package/src/Logging.res.mjs +16 -8
  61. package/src/Main.res +390 -0
  62. package/src/Main.res.mjs +341 -0
  63. package/src/Persistence.res +7 -21
  64. package/src/Persistence.res.mjs +3 -3
  65. package/src/PgStorage.gen.ts +10 -0
  66. package/src/PgStorage.res +116 -69
  67. package/src/PgStorage.res.d.mts +5 -0
  68. package/src/PgStorage.res.mjs +93 -50
  69. package/src/Prometheus.res +294 -224
  70. package/src/Prometheus.res.mjs +353 -340
  71. package/src/ReorgDetection.res +6 -10
  72. package/src/ReorgDetection.res.mjs +6 -6
  73. package/src/SafeCheckpointTracking.res +4 -4
  74. package/src/SafeCheckpointTracking.res.mjs +2 -2
  75. package/src/SimulateItems.res +353 -0
  76. package/src/SimulateItems.res.mjs +335 -0
  77. package/src/Sink.res +4 -2
  78. package/src/Sink.res.mjs +2 -1
  79. package/src/TableIndices.res +0 -1
  80. package/src/TestIndexer.res +913 -0
  81. package/src/TestIndexer.res.mjs +698 -0
  82. package/src/TestIndexerProxyStorage.res +205 -0
  83. package/src/TestIndexerProxyStorage.res.mjs +151 -0
  84. package/src/TopicFilter.res +1 -1
  85. package/src/Types.ts +1 -1
  86. package/src/UserContext.res +424 -0
  87. package/src/UserContext.res.mjs +279 -0
  88. package/src/Utils.res +97 -26
  89. package/src/Utils.res.mjs +91 -44
  90. package/src/bindings/BigInt.res +10 -0
  91. package/src/bindings/BigInt.res.mjs +15 -0
  92. package/src/bindings/ClickHouse.res +120 -23
  93. package/src/bindings/ClickHouse.res.mjs +118 -28
  94. package/src/bindings/DateFns.res +74 -0
  95. package/src/bindings/DateFns.res.mjs +22 -0
  96. package/src/bindings/EventSource.res +11 -2
  97. package/src/bindings/EventSource.res.mjs +8 -1
  98. package/src/bindings/Express.res +1 -0
  99. package/src/bindings/Hrtime.res +14 -1
  100. package/src/bindings/Hrtime.res.mjs +22 -2
  101. package/src/bindings/Hrtime.resi +4 -0
  102. package/src/bindings/Lodash.res +0 -1
  103. package/src/bindings/NodeJs.res +49 -3
  104. package/src/bindings/NodeJs.res.mjs +11 -3
  105. package/src/bindings/Pino.res +24 -10
  106. package/src/bindings/Pino.res.mjs +14 -8
  107. package/src/bindings/Postgres.gen.ts +8 -0
  108. package/src/bindings/Postgres.res +5 -1
  109. package/src/bindings/Postgres.res.d.mts +5 -0
  110. package/src/bindings/PromClient.res +0 -10
  111. package/src/bindings/PromClient.res.mjs +0 -3
  112. package/src/bindings/Vitest.res +144 -0
  113. package/src/bindings/Vitest.res.mjs +9 -0
  114. package/src/bindings/WebSocket.res +27 -0
  115. package/src/bindings/WebSocket.res.mjs +2 -0
  116. package/src/bindings/Yargs.res +8 -0
  117. package/src/bindings/Yargs.res.mjs +2 -0
  118. package/src/db/EntityHistory.res +7 -7
  119. package/src/db/EntityHistory.res.mjs +9 -9
  120. package/src/db/InternalTable.res +59 -111
  121. package/src/db/InternalTable.res.mjs +73 -104
  122. package/src/db/Table.res +27 -8
  123. package/src/db/Table.res.mjs +25 -14
  124. package/src/sources/Evm.res +84 -0
  125. package/src/sources/Evm.res.mjs +105 -0
  126. package/src/sources/EvmChain.res +94 -0
  127. package/src/sources/EvmChain.res.mjs +60 -0
  128. package/src/sources/Fuel.res +19 -34
  129. package/src/sources/Fuel.res.mjs +34 -16
  130. package/src/sources/FuelSDK.res +38 -0
  131. package/src/sources/FuelSDK.res.mjs +29 -0
  132. package/src/sources/HyperFuel.res +2 -2
  133. package/src/sources/HyperFuel.resi +1 -1
  134. package/src/sources/HyperFuelClient.res +2 -2
  135. package/src/sources/HyperFuelSource.res +35 -13
  136. package/src/sources/HyperFuelSource.res.mjs +26 -16
  137. package/src/sources/HyperSync.res +61 -60
  138. package/src/sources/HyperSync.res.mjs +53 -67
  139. package/src/sources/HyperSync.resi +6 -4
  140. package/src/sources/HyperSyncClient.res +29 -2
  141. package/src/sources/HyperSyncClient.res.mjs +9 -0
  142. package/src/sources/HyperSyncHeightStream.res +76 -118
  143. package/src/sources/HyperSyncHeightStream.res.mjs +68 -75
  144. package/src/sources/HyperSyncSource.res +122 -143
  145. package/src/sources/HyperSyncSource.res.mjs +106 -121
  146. package/src/sources/Rpc.res +86 -14
  147. package/src/sources/Rpc.res.mjs +101 -9
  148. package/src/sources/RpcSource.res +731 -364
  149. package/src/sources/RpcSource.res.mjs +845 -410
  150. package/src/sources/RpcWebSocketHeightStream.res +181 -0
  151. package/src/sources/RpcWebSocketHeightStream.res.mjs +196 -0
  152. package/src/sources/SimulateSource.res +59 -0
  153. package/src/sources/SimulateSource.res.mjs +50 -0
  154. package/src/sources/Source.res +7 -5
  155. package/src/sources/SourceManager.res +358 -221
  156. package/src/sources/SourceManager.res.mjs +346 -171
  157. package/src/sources/SourceManager.resi +17 -6
  158. package/src/sources/Svm.res +81 -0
  159. package/src/sources/Svm.res.mjs +90 -0
  160. package/src/tui/Tui.res +247 -0
  161. package/src/tui/Tui.res.mjs +337 -0
  162. package/src/tui/bindings/Ink.res +371 -0
  163. package/src/tui/bindings/Ink.res.mjs +72 -0
  164. package/src/tui/bindings/Style.res +123 -0
  165. package/src/tui/bindings/Style.res.mjs +2 -0
  166. package/src/tui/components/BufferedProgressBar.res +40 -0
  167. package/src/tui/components/BufferedProgressBar.res.mjs +57 -0
  168. package/src/tui/components/CustomHooks.res +122 -0
  169. package/src/tui/components/CustomHooks.res.mjs +179 -0
  170. package/src/tui/components/Messages.res +41 -0
  171. package/src/tui/components/Messages.res.mjs +75 -0
  172. package/src/tui/components/SyncETA.res +174 -0
  173. package/src/tui/components/SyncETA.res.mjs +263 -0
  174. package/src/tui/components/TuiData.res +47 -0
  175. package/src/tui/components/TuiData.res.mjs +34 -0
  176. package/svm.schema.json +112 -0
  177. package/bin.js +0 -48
  178. package/src/EventRegister.res +0 -241
  179. package/src/EventRegister.res.mjs +0 -240
  180. package/src/EventRegister.resi +0 -30
  181. package/src/bindings/Ethers.gen.ts +0 -14
  182. package/src/bindings/Ethers.res +0 -204
  183. package/src/bindings/Ethers.res.mjs +0 -130
  184. /package/src/{Indexer.res.mjs → Ctx.res.mjs} +0 -0
@@ -0,0 +1,341 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Env from "./Env.res.mjs";
4
+ import * as Tui from "./tui/Tui.res.mjs";
5
+ import * as Caml from "rescript/lib/es6/caml.js";
6
+ import * as Utils from "./Utils.res.mjs";
7
+ import * as Js_dict from "rescript/lib/es6/js_dict.js";
8
+ import * as Logging from "./Logging.res.mjs";
9
+ import Express from "express";
10
+ import * as Process from "process";
11
+ import * as ChainMap from "./ChainMap.res.mjs";
12
+ import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
13
+ import * as FetchState from "./FetchState.res.mjs";
14
+ import * as Prometheus from "./Prometheus.res.mjs";
15
+ import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
16
+ import * as Caml_option from "rescript/lib/es6/caml_option.js";
17
+ import * as GlobalState from "./GlobalState.res.mjs";
18
+ import * as Persistence from "./Persistence.res.mjs";
19
+ import * as PromClient from "prom-client";
20
+ import Yargs from "yargs/yargs";
21
+ import * as ChainFetcher from "./ChainFetcher.res.mjs";
22
+ import * as ChainManager from "./ChainManager.res.mjs";
23
+ import * as HandlerLoader from "./HandlerLoader.res.mjs";
24
+ import * as SourceManager from "./sources/SourceManager.res.mjs";
25
+ import * as Helpers from "yargs/helpers";
26
+ import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
27
+ import * as GlobalStateManager from "./GlobalStateManager.res.mjs";
28
+
29
+ var chainDataSchema = S$RescriptSchema.schema(function (s) {
30
+ return {
31
+ chainId: s.m(S$RescriptSchema.$$float),
32
+ poweredByHyperSync: s.m(S$RescriptSchema.bool),
33
+ firstEventBlockNumber: s.m(S$RescriptSchema.option(S$RescriptSchema.$$int)),
34
+ latestProcessedBlock: s.m(S$RescriptSchema.option(S$RescriptSchema.$$int)),
35
+ timestampCaughtUpToHeadOrEndblock: s.m(S$RescriptSchema.option(S$RescriptSchema.datetime(S$RescriptSchema.string, undefined))),
36
+ numEventsProcessed: s.m(S$RescriptSchema.$$float),
37
+ latestFetchedBlockNumber: s.m(S$RescriptSchema.$$int),
38
+ currentBlockHeight: s.m(S$RescriptSchema.$$int),
39
+ numBatchesFetched: s.m(S$RescriptSchema.$$int),
40
+ startBlock: s.m(S$RescriptSchema.$$int),
41
+ endBlock: s.m(S$RescriptSchema.option(S$RescriptSchema.$$int)),
42
+ numAddresses: s.m(S$RescriptSchema.$$int)
43
+ };
44
+ });
45
+
46
+ var stateSchema = S$RescriptSchema.union([
47
+ S$RescriptSchema.literal({
48
+ status: "disabled"
49
+ }),
50
+ S$RescriptSchema.literal({
51
+ status: "initializing"
52
+ }),
53
+ S$RescriptSchema.schema(function (s) {
54
+ return {
55
+ status: "active",
56
+ envioVersion: s.m(S$RescriptSchema.string),
57
+ chains: s.m(S$RescriptSchema.array(chainDataSchema)),
58
+ indexerStartTime: s.m(S$RescriptSchema.datetime(S$RescriptSchema.string, undefined)),
59
+ isPreRegisteringDynamicContracts: false,
60
+ isUnorderedMultichainMode: s.m(S$RescriptSchema.bool),
61
+ rollbackOnReorg: s.m(S$RescriptSchema.bool)
62
+ };
63
+ })
64
+ ]);
65
+
66
+ var globalGsManagerRef = {
67
+ contents: undefined
68
+ };
69
+
70
+ function getGlobalIndexer(config) {
71
+ var indexer = Object.create(null);
72
+ Object.defineProperty(Object.defineProperty(indexer, "name", {
73
+ enumerable: true,
74
+ value: config.name
75
+ }), "description", {
76
+ enumerable: true,
77
+ value: config.description
78
+ });
79
+ var chainIds = [];
80
+ var chains = Object.create(null);
81
+ Belt_Array.forEach(ChainMap.values(config.chainMap), (function (chainConfig) {
82
+ var chainIdStr = String(chainConfig.id);
83
+ chainIds.push(chainConfig.id);
84
+ var chainObj = Object.create(null);
85
+ Object.defineProperty(Object.defineProperty(Object.defineProperty(Object.defineProperty(Object.defineProperty(chainObj, "id", {
86
+ enumerable: true,
87
+ value: chainConfig.id
88
+ }), "startBlock", {
89
+ enumerable: true,
90
+ value: chainConfig.startBlock
91
+ }), "endBlock", {
92
+ enumerable: true,
93
+ value: chainConfig.endBlock
94
+ }), "name", {
95
+ enumerable: true,
96
+ value: chainConfig.name
97
+ }), "isLive", {
98
+ enumerable: true,
99
+ get: (function () {
100
+ var gsManager = globalGsManagerRef.contents;
101
+ if (gsManager === undefined) {
102
+ return false;
103
+ }
104
+ var state = GlobalStateManager.getState(Caml_option.valFromOption(gsManager));
105
+ var chain = ChainMap.Chain.makeUnsafe(chainConfig.id);
106
+ var chainFetcher = ChainMap.get(state.chainManager.chainFetchers, chain);
107
+ return ChainFetcher.isReady(chainFetcher);
108
+ })
109
+ });
110
+ Belt_Array.forEach(chainConfig.contracts, (function (contract) {
111
+ var contractObj = Object.create(null);
112
+ Object.defineProperty(Object.defineProperty(Object.defineProperty(contractObj, "name", {
113
+ enumerable: true,
114
+ value: contract.name
115
+ }), "abi", {
116
+ enumerable: true,
117
+ value: contract.abi
118
+ }), "addresses", {
119
+ enumerable: true,
120
+ get: (function () {
121
+ var gsManager = globalGsManagerRef.contents;
122
+ if (gsManager === undefined) {
123
+ return contract.addresses;
124
+ }
125
+ var state = GlobalStateManager.getState(Caml_option.valFromOption(gsManager));
126
+ var chain = ChainMap.Chain.makeUnsafe(chainConfig.id);
127
+ var chainFetcher = ChainMap.get(state.chainManager.chainFetchers, chain);
128
+ var indexingContracts = chainFetcher.fetchState.indexingContracts;
129
+ var addresses = [];
130
+ var values = Js_dict.values(indexingContracts);
131
+ for(var idx = 0 ,idx_finish = values.length; idx < idx_finish; ++idx){
132
+ var indexingContract = values[idx];
133
+ if (indexingContract.contractName === contract.name) {
134
+ addresses.push(indexingContract.address);
135
+ }
136
+
137
+ }
138
+ return addresses;
139
+ })
140
+ });
141
+ Object.defineProperty(chainObj, contract.name, {
142
+ enumerable: true,
143
+ value: contractObj
144
+ });
145
+ }));
146
+ Object.defineProperty(chains, chainIdStr, {
147
+ enumerable: true,
148
+ value: chainObj
149
+ });
150
+ if (chainConfig.name !== chainIdStr) {
151
+ Object.defineProperty(chains, chainConfig.name, {
152
+ enumerable: false,
153
+ value: chainObj
154
+ });
155
+ return ;
156
+ }
157
+
158
+ }));
159
+ Object.defineProperty(indexer, "chainIds", {
160
+ enumerable: true,
161
+ value: chainIds
162
+ });
163
+ Object.defineProperty(indexer, "chains", {
164
+ enumerable: true,
165
+ value: chains
166
+ });
167
+ return indexer;
168
+ }
169
+
170
+ function startServer(getState, ctx, isDevelopmentMode) {
171
+ var app = Express();
172
+ var consoleCorsMiddleware = function (req, res, next) {
173
+ var origin = Js_dict.get(req.headers, "origin");
174
+ if (origin !== undefined && (origin === Env.prodEnvioAppUrl || origin === Env.envioAppUrl)) {
175
+ res.setHeader("Access-Control-Allow-Origin", origin);
176
+ }
177
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
178
+ res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
179
+ if (req.method === "OPTIONS") {
180
+ res.sendStatus(200);
181
+ return ;
182
+ } else {
183
+ return next();
184
+ }
185
+ };
186
+ app.use("/console", consoleCorsMiddleware);
187
+ app.use("/metrics", consoleCorsMiddleware);
188
+ app.use("/metrics/runtime", consoleCorsMiddleware);
189
+ app.get("/healthz", (function (_req, res) {
190
+ res.sendStatus(200);
191
+ }));
192
+ app.get("/console/state", (function (_req, res) {
193
+ var state = isDevelopmentMode ? getState() : ({
194
+ status: "disabled"
195
+ });
196
+ res.json(S$RescriptSchema.reverseConvertToJsonOrThrow(state, stateSchema));
197
+ }));
198
+ app.post("/console/syncCache", (function (_req, res) {
199
+ if (isDevelopmentMode) {
200
+ Persistence.getInitializedStorageOrThrow(ctx.persistence).dumpEffectCache().then(function () {
201
+ res.json(true);
202
+ });
203
+ } else {
204
+ res.json(false);
205
+ }
206
+ }));
207
+ var runtimeRegistry = new PromClient.Registry();
208
+ PromClient.collectDefaultMetrics({
209
+ register: runtimeRegistry
210
+ });
211
+ app.get("/metrics", (function (_req, res) {
212
+ res.set("Content-Type", PromClient.register.contentType);
213
+ PromClient.register.metrics().then(function (metrics) {
214
+ return res.end(metrics);
215
+ });
216
+ }));
217
+ app.get("/metrics/runtime", (function (_req, res) {
218
+ res.set("Content-Type", runtimeRegistry.contentType);
219
+ runtimeRegistry.metrics().then(function (metrics) {
220
+ return res.end(metrics);
221
+ });
222
+ }));
223
+ var server = app.listen(Env.serverPort);
224
+ server.on("error", (function (err) {
225
+ var code = err.code;
226
+ if (code === "EADDRINUSE") {
227
+ Logging.error("Port " + String(Env.serverPort) + " is already in use. To fix this either:" + ("\n 1. Kill the process using the port: lsof -ti :" + String(Env.serverPort) + " | xargs kill -9") + "\n 2. Use a different port by setting the ENVIO_INDEXER_PORT environment variable: ENVIO_INDEXER_PORT=9899 envio start");
228
+ } else {
229
+ Logging.errorWithExn(err, "Failed to start indexer server");
230
+ }
231
+ Process.exit(1);
232
+ }));
233
+ }
234
+
235
+ async function start(makeGeneratedConfig, persistence, isTestOpt, exitAfterFirstEventBlockOpt, patchConfig) {
236
+ var isTest = isTestOpt !== undefined ? isTestOpt : false;
237
+ var exitAfterFirstEventBlock = exitAfterFirstEventBlockOpt !== undefined ? exitAfterFirstEventBlockOpt : false;
238
+ var mainArgs = Yargs(Helpers.hideBin(process.argv)).argv;
239
+ var shouldUseTui = !isTest && !Belt_Option.getWithDefault(mainArgs["tui-off"], Env.tuiOffEnvVar);
240
+ var isDevelopmentMode = !isTest && Env.Db.password === "testing";
241
+ var configWithoutRegistrations = makeGeneratedConfig();
242
+ var registrations = await HandlerLoader.registerAllHandlers(configWithoutRegistrations);
243
+ var config = makeGeneratedConfig();
244
+ var config$1 = isTest ? ({
245
+ name: config.name,
246
+ description: config.description,
247
+ handlers: config.handlers,
248
+ contractHandlers: config.contractHandlers,
249
+ shouldRollbackOnReorg: false,
250
+ shouldSaveFullHistory: config.shouldSaveFullHistory,
251
+ multichain: config.multichain,
252
+ chainMap: config.chainMap,
253
+ defaultChain: config.defaultChain,
254
+ ecosystem: config.ecosystem,
255
+ enableRawEvents: config.enableRawEvents,
256
+ maxAddrInPartition: config.maxAddrInPartition,
257
+ batchSize: config.batchSize,
258
+ lowercaseAddresses: config.lowercaseAddresses,
259
+ addContractNameToContractNameMapping: config.addContractNameToContractNameMapping,
260
+ userEntitiesByName: config.userEntitiesByName,
261
+ userEntities: config.userEntities,
262
+ allEntities: config.allEntities,
263
+ allEnums: config.allEnums
264
+ }) : config;
265
+ var config$2 = patchConfig !== undefined ? patchConfig(config$1, registrations) : config$1;
266
+ var ctx = {
267
+ registrations: registrations,
268
+ config: config$2,
269
+ persistence: persistence
270
+ };
271
+ var envioVersion = Utils.EnvioPackage.value.version;
272
+ Prometheus.Info.set(envioVersion);
273
+ Prometheus.ProcessStartTimeSeconds.set();
274
+ Prometheus.RollbackEnabled.set(config$2.shouldRollbackOnReorg);
275
+ if (!isTest) {
276
+ startServer((function () {
277
+ var gsManager = globalGsManagerRef.contents;
278
+ if (gsManager === undefined) {
279
+ return {
280
+ status: "initializing"
281
+ };
282
+ }
283
+ var state = GlobalStateManager.getState(Caml_option.valFromOption(gsManager));
284
+ var chains = Belt_Array.map(ChainMap.values(state.chainManager.chainFetchers), (function (cf) {
285
+ var latestFetchedBlockNumber = Caml.int_max(FetchState.bufferBlockNumber(cf.fetchState), 0);
286
+ var knownHeight = ChainFetcher.hasProcessedToEndblock(cf) ? Belt_Option.getWithDefault(cf.fetchState.endBlock, cf.fetchState.knownHeight) : cf.fetchState.knownHeight;
287
+ return {
288
+ chainId: cf.chainConfig.id,
289
+ poweredByHyperSync: SourceManager.getActiveSource(cf.sourceManager).poweredByHyperSync,
290
+ firstEventBlockNumber: cf.fetchState.firstEventBlock,
291
+ latestProcessedBlock: cf.committedProgressBlockNumber === -1 ? undefined : cf.committedProgressBlockNumber,
292
+ timestampCaughtUpToHeadOrEndblock: cf.timestampCaughtUpToHeadOrEndblock,
293
+ numEventsProcessed: cf.numEventsProcessed,
294
+ latestFetchedBlockNumber: latestFetchedBlockNumber,
295
+ currentBlockHeight: knownHeight,
296
+ numBatchesFetched: 0,
297
+ startBlock: cf.fetchState.startBlock,
298
+ endBlock: cf.fetchState.endBlock,
299
+ numAddresses: FetchState.numAddresses(cf.fetchState)
300
+ };
301
+ }));
302
+ var match = config$2.multichain;
303
+ var tmp;
304
+ tmp = match === "ordered" ? false : true;
305
+ return {
306
+ status: "active",
307
+ envioVersion: envioVersion,
308
+ chains: chains,
309
+ indexerStartTime: state.indexerStartTime,
310
+ isPreRegisteringDynamicContracts: false,
311
+ isUnorderedMultichainMode: tmp,
312
+ rollbackOnReorg: config$2.shouldRollbackOnReorg
313
+ };
314
+ }), ctx, isDevelopmentMode);
315
+ }
316
+ await Persistence.init(persistence, ChainMap.values(config$2.chainMap), undefined);
317
+ var chainManager = await ChainManager.makeFromDbState(Persistence.getInitializedState(persistence), config$2, registrations);
318
+ var globalState = GlobalState.make(ctx, chainManager, isDevelopmentMode, shouldUseTui, exitAfterFirstEventBlock);
319
+ var gsManager = GlobalStateManager.make(globalState, undefined);
320
+ if (shouldUseTui) {
321
+ Tui.start(function () {
322
+ return GlobalStateManager.getState(gsManager);
323
+ });
324
+ }
325
+ globalGsManagerRef.contents = Caml_option.some(gsManager);
326
+ GlobalStateManager.dispatchTask(gsManager, {
327
+ TAG: "NextQuery",
328
+ _0: "CheckAllChains"
329
+ });
330
+ return GlobalStateManager.dispatchTask(gsManager, "ProcessEventBatch");
331
+ }
332
+
333
+ export {
334
+ chainDataSchema ,
335
+ stateSchema ,
336
+ globalGsManagerRef ,
337
+ getGlobalIndexer ,
338
+ startServer ,
339
+ start ,
340
+ }
341
+ /* chainDataSchema Not a pure module */
@@ -19,10 +19,11 @@ type initialChainState = {
19
19
  endBlock: option<int>,
20
20
  maxReorgDepth: int,
21
21
  progressBlockNumber: int,
22
- numEventsProcessed: int,
22
+ numEventsProcessed: float,
23
23
  firstEventBlockNumber: option<int>,
24
24
  timestampCaughtUpToHeadOrEndblock: option<Js.Date.t>,
25
25
  dynamicContracts: array<Internal.indexingContract>,
26
+ sourceBlockNumber: int,
26
27
  }
27
28
 
28
29
  type initialState = {
@@ -74,24 +75,9 @@ type storage = {
74
75
  ~table: Table.table,
75
76
  ~rowsSchema: S.t<array<'item>>,
76
77
  ) => promise<array<'item>>,
77
- @raises("StorageError")
78
- setOrThrow: 'item. (
79
- ~items: array<'item>,
80
- ~table: Table.table,
81
- ~itemSchema: S.t<'item>,
82
- ) => promise<unit>,
83
- @raises("StorageError")
84
- setEffectCacheOrThrow: (
85
- ~effect: Internal.effect,
86
- ~items: array<Internal.effectCacheItem>,
87
- ~initialize: bool,
88
- ) => promise<unit>,
89
78
  // This is to download cache from the database to .envio/cache
90
79
  dumpEffectCache: unit => promise<unit>,
91
- // Execute raw SQL query
92
- executeUnsafe: string => promise<unknown>,
93
- // Check if entity history has rows
94
- hasEntityHistoryRows: unit => promise<bool>,
80
+ reset: unit => promise<unit>,
95
81
  // Update chain metadata
96
82
  setChainMeta: dict<InternalTable.Chains.metaFields> => promise<unknown>,
97
83
  // Prune old checkpoints
@@ -106,7 +92,7 @@ type storage = {
106
92
  getRollbackTargetCheckpoint: (
107
93
  ~reorgChainId: int,
108
94
  ~lastKnownValidBlockNumber: int,
109
- ) => promise<array<{"id": Internal.checkpointId}>>,
95
+ ) => promise<option<Internal.checkpointId>>,
110
96
  // Get rollback progress diff
111
97
  getRollbackProgressDiff: (
112
98
  ~rollbackTargetCheckpointId: Internal.checkpointId,
@@ -156,7 +142,8 @@ let make = (
156
142
  ~allEnums,
157
143
  ~storage,
158
144
  ) => {
159
- let allEntities = userEntities->Js.Array2.concat([InternalTable.DynamicContractRegistry.config])
145
+ let allEntities =
146
+ userEntities->Js.Array2.concat([InternalTable.DynamicContractRegistry.entityConfig])
160
147
  let allEnums =
161
148
  allEnums->Js.Array2.concat([EntityHistory.RowAction.config->Table.fromGenericEnumConfig])
162
149
  {
@@ -217,8 +204,7 @@ let init = {
217
204
  resolveRef.contents()
218
205
  }
219
206
  } catch {
220
- | exn =>
221
- exn->ErrorHandling.mkLogAndRaise(~msg=`EE800: Failed to initialize the indexer storage.`)
207
+ | exn => exn->ErrorHandling.mkLogAndRaise(~msg=`Failed to initialize the indexer storage.`)
222
208
  }
223
209
  }
224
210
  }
@@ -1,6 +1,7 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
 
3
3
  import * as Utils from "./Utils.res.mjs";
4
+ import * as Config from "./Config.res.mjs";
4
5
  import * as Js_exn from "rescript/lib/es6/js_exn.js";
5
6
  import * as Logging from "./Logging.res.mjs";
6
7
  import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
@@ -9,7 +10,6 @@ import * as EntityHistory from "./db/EntityHistory.res.mjs";
9
10
  import * as ErrorHandling from "./ErrorHandling.res.mjs";
10
11
  import * as InMemoryStore from "./InMemoryStore.res.mjs";
11
12
  import * as InMemoryTable from "./InMemoryTable.res.mjs";
12
- import * as InternalTable from "./db/InternalTable.res.mjs";
13
13
  import * as Caml_exceptions from "rescript/lib/es6/caml_exceptions.js";
14
14
  import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
15
15
  import * as Caml_js_exceptions from "rescript/lib/es6/caml_js_exceptions.js";
@@ -17,7 +17,7 @@ import * as Caml_js_exceptions from "rescript/lib/es6/caml_js_exceptions.js";
17
17
  var StorageError = /* @__PURE__ */Caml_exceptions.create("Persistence.StorageError");
18
18
 
19
19
  function make(userEntities, allEnums, storage) {
20
- var allEntities = userEntities.concat([InternalTable.DynamicContractRegistry.config]);
20
+ var allEntities = userEntities.concat([Config.DynamicContractRegistry.entityConfig]);
21
21
  var allEnums$1 = allEnums.concat([EntityHistory.RowAction.config]);
22
22
  return {
23
23
  userEntities: userEntities,
@@ -88,7 +88,7 @@ async function init(persistence, chainConfigs, resetOpt) {
88
88
  }
89
89
  catch (raw_exn){
90
90
  var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
91
- return ErrorHandling.mkLogAndRaise(undefined, "EE800: Failed to initialize the indexer storage.", exn);
91
+ return ErrorHandling.mkLogAndRaise(undefined, "Failed to initialize the indexer storage.", exn);
92
92
  }
93
93
  }
94
94
 
@@ -0,0 +1,10 @@
1
+ /* TypeScript file generated from PgStorage.res by genType. */
2
+
3
+ /* eslint-disable */
4
+ /* tslint:disable */
5
+
6
+ import * as PgStorageJS from './PgStorage.res.mjs';
7
+
8
+ import type {sql as Postgres_sql} from '../src/bindings/Postgres.gen.js';
9
+
10
+ export const makeClient: () => Postgres_sql = PgStorageJS.makeClient as any;