envio 3.2.1 → 3.3.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/package.json +6 -7
  2. package/src/Batch.res +12 -15
  3. package/src/Batch.res.mjs +4 -5
  4. package/src/BatchProcessing.res +199 -0
  5. package/src/BatchProcessing.res.mjs +125 -0
  6. package/src/ChainFetching.res +373 -0
  7. package/src/ChainFetching.res.mjs +206 -0
  8. package/src/ChainMetadata.res +27 -0
  9. package/src/ChainMetadata.res.mjs +27 -0
  10. package/src/ChainState.res +643 -0
  11. package/src/ChainState.res.mjs +476 -0
  12. package/src/ChainState.resi +87 -0
  13. package/src/Config.res +13 -4
  14. package/src/Config.res.mjs +8 -3
  15. package/src/ContractRegisterContext.res +106 -0
  16. package/src/ContractRegisterContext.res.mjs +76 -0
  17. package/src/Core.res +3 -0
  18. package/src/CrossChainState.res +294 -0
  19. package/src/CrossChainState.res.mjs +221 -0
  20. package/src/CrossChainState.resi +39 -0
  21. package/src/Ecosystem.res +58 -0
  22. package/src/Ecosystem.res.mjs +43 -1
  23. package/src/Env.res +0 -2
  24. package/src/Env.res.mjs +0 -3
  25. package/src/EventConfigBuilder.res +2 -2
  26. package/src/EventProcessing.res +60 -46
  27. package/src/EventProcessing.res.mjs +33 -32
  28. package/src/EventUtils.res +0 -4
  29. package/src/EventUtils.res.mjs +0 -4
  30. package/src/ExitOnCaughtUp.res +10 -0
  31. package/src/ExitOnCaughtUp.res.mjs +22 -0
  32. package/src/FetchState.res +205 -73
  33. package/src/FetchState.res.mjs +242 -103
  34. package/src/InMemoryStore.res +36 -451
  35. package/src/InMemoryStore.res.mjs +20 -369
  36. package/src/IndexerLoop.res +43 -0
  37. package/src/IndexerLoop.res.mjs +46 -0
  38. package/src/IndexerState.res +536 -0
  39. package/src/IndexerState.res.mjs +543 -0
  40. package/src/IndexerState.resi +128 -0
  41. package/src/Internal.res +29 -8
  42. package/src/LoadLayer.res +20 -18
  43. package/src/LoadLayer.res.mjs +14 -12
  44. package/src/LoadLayer.resi +6 -3
  45. package/src/Logging.res +11 -44
  46. package/src/Logging.res.mjs +10 -42
  47. package/src/Main.res +54 -79
  48. package/src/Main.res.mjs +44 -56
  49. package/src/PgStorage.res +8 -71
  50. package/src/PgStorage.res.mjs +3 -47
  51. package/src/Prometheus.res +1 -13
  52. package/src/Prometheus.res.mjs +84 -96
  53. package/src/PruneStaleHistory.res +45 -0
  54. package/src/PruneStaleHistory.res.mjs +46 -0
  55. package/src/RawEvent.res +73 -0
  56. package/src/RawEvent.res.mjs +51 -0
  57. package/src/Rollback.res +204 -0
  58. package/src/Rollback.res.mjs +118 -0
  59. package/src/SimulateItems.res +12 -10
  60. package/src/SimulateItems.res.mjs +1 -1
  61. package/src/UserContext.res +26 -114
  62. package/src/UserContext.res.mjs +15 -78
  63. package/src/Writing.res +242 -0
  64. package/src/Writing.res.mjs +215 -0
  65. package/src/db/InternalTable.res +14 -27
  66. package/src/sources/Evm.res +40 -1
  67. package/src/sources/Evm.res.mjs +94 -84
  68. package/src/sources/Fuel.res +40 -1
  69. package/src/sources/Fuel.res.mjs +36 -26
  70. package/src/sources/HyperFuel.res +41 -120
  71. package/src/sources/HyperFuel.res.mjs +42 -80
  72. package/src/sources/HyperFuel.resi +1 -24
  73. package/src/sources/HyperFuelClient.res +16 -297
  74. package/src/sources/HyperFuelClient.res.mjs +5 -4
  75. package/src/sources/HyperFuelSource.res +33 -8
  76. package/src/sources/HyperFuelSource.res.mjs +56 -10
  77. package/src/sources/HyperSyncSource.res +5 -3
  78. package/src/sources/HyperSyncSource.res.mjs +1 -1
  79. package/src/sources/RpcSource.res +2 -2
  80. package/src/sources/RpcSource.res.mjs +1 -1
  81. package/src/sources/SourceManager.res +14 -23
  82. package/src/sources/SourceManager.res.mjs +27 -29
  83. package/src/sources/SourceManager.resi +4 -2
  84. package/src/sources/Svm.res +18 -1
  85. package/src/sources/Svm.res.mjs +30 -22
  86. package/src/sources/SvmHyperSyncSource.res +1 -1
  87. package/src/sources/SvmHyperSyncSource.res.mjs +1 -1
  88. package/src/tui/Tui.res +38 -36
  89. package/src/tui/Tui.res.mjs +51 -51
  90. package/src/ChainFetcher.res +0 -519
  91. package/src/ChainFetcher.res.mjs +0 -314
  92. package/src/ChainManager.res +0 -358
  93. package/src/ChainManager.res.mjs +0 -291
  94. package/src/Ctx.res +0 -6
  95. package/src/Ctx.res.mjs +0 -2
  96. package/src/GlobalState.res +0 -1056
  97. package/src/GlobalState.res.mjs +0 -1086
  98. package/src/GlobalStateManager.res +0 -57
  99. package/src/GlobalStateManager.res.mjs +0 -68
  100. package/src/GlobalStateManager.resi +0 -7
  101. package/src/Ports.res +0 -5
  102. package/src/Ports.res.mjs +0 -9
  103. package/src/adapters/MarkBatchProcessedAdapter.res +0 -5
  104. package/src/adapters/MarkBatchProcessedAdapter.res.mjs +0 -14
  105. package/src/sources/EnvioApiClient.res +0 -15
  106. package/src/sources/EnvioApiClient.res.mjs +0 -24
@@ -1,291 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Env from "./Env.res.mjs";
4
- import * as Batch from "./Batch.res.mjs";
5
- import * as Utils from "./Utils.res.mjs";
6
- import * as Config from "./Config.res.mjs";
7
- import * as ChainMap from "./ChainMap.res.mjs";
8
- import * as Prometheus from "./Prometheus.res.mjs";
9
- import * as ChainFetcher from "./ChainFetcher.res.mjs";
10
- import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
11
- import * as SafeCheckpointTracking from "./SafeCheckpointTracking.res.mjs";
12
-
13
- function isProgressInReorgThreshold(progressBlockNumber, sourceBlockNumber, maxReorgDepth) {
14
- if (maxReorgDepth > 0 && sourceBlockNumber > 0) {
15
- return progressBlockNumber > (sourceBlockNumber - maxReorgDepth | 0);
16
- } else {
17
- return false;
18
- }
19
- }
20
-
21
- function calculateTargetBufferSize(activeChainsCount) {
22
- if (Env.targetBufferSize !== undefined) {
23
- return Env.targetBufferSize;
24
- }
25
- switch (activeChainsCount) {
26
- case 1 :
27
- return 60000;
28
- case 2 :
29
- return 30000;
30
- case 3 :
31
- return 20000;
32
- case 4 :
33
- return 15000;
34
- case 5 :
35
- return 10000;
36
- default:
37
- return 5000;
38
- }
39
- }
40
-
41
- function makeFromDbState(initialState, config, registrations, reducedPollingInterval) {
42
- let isInReorgThreshold = initialState.cleanRun ? false : initialState.chains.some(chain => isProgressInReorgThreshold(chain.progressBlockNumber, chain.sourceBlockNumber, chain.maxReorgDepth));
43
- let targetBufferSize = calculateTargetBufferSize(initialState.chains.length);
44
- Prometheus.ProcessingMaxBatchSize.set(config.batchSize);
45
- Prometheus.IndexingTargetBufferSize.set(targetBufferSize);
46
- Prometheus.ReorgThreshold.set(isInReorgThreshold);
47
- Utils.Dict.forEach(initialState.cache, param => {
48
- let count = param.count;
49
- Prometheus.EffectCacheCount.set(count, param.effectName);
50
- });
51
- let isRealtime = !Env.updateSyncTimeOnRestart && initialState.chains.length !== 0 && initialState.chains.every(c => Stdlib_Option.isSome(c.timestampCaughtUpToHeadOrEndblock));
52
- let chainFetchersArr = initialState.chains.map(resumedChainState => {
53
- let chain = Config.getChain(config, resumedChainState.id);
54
- let chainConfig = ChainMap.get(config.chainMap, chain);
55
- return [
56
- chain,
57
- ChainFetcher.makeFromDbState(chainConfig, resumedChainState, initialState.reorgCheckpoints, isInReorgThreshold, isRealtime, config, registrations, targetBufferSize, reducedPollingInterval)
58
- ];
59
- });
60
- let chainFetchers = ChainMap.fromArrayUnsafe(chainFetchersArr);
61
- let allChainsReady = {
62
- contents: chainFetchersArr.length !== 0
63
- };
64
- chainFetchersArr.forEach(param => {
65
- let cf = param[1];
66
- let chain = param[0];
67
- Prometheus.ProgressBlockNumber.set(cf.committedProgressBlockNumber, chain);
68
- Prometheus.ProgressReady.init(chain);
69
- if (ChainFetcher.isReady(cf)) {
70
- return Prometheus.ProgressReady.set(chain);
71
- } else {
72
- allChainsReady.contents = false;
73
- return;
74
- }
75
- });
76
- if (allChainsReady.contents) {
77
- Prometheus.ProgressReady.setAllReady();
78
- }
79
- return {
80
- chainFetchers: chainFetchers,
81
- isInReorgThreshold: isInReorgThreshold,
82
- isRealtime: isRealtime
83
- };
84
- }
85
-
86
- function getChainFetcher(chainManager, chain) {
87
- return ChainMap.get(chainManager.chainFetchers, chain);
88
- }
89
-
90
- function setChainFetcher(chainManager, chainFetcher) {
91
- return {
92
- chainFetchers: ChainMap.set(chainManager.chainFetchers, ChainMap.Chain.makeUnsafe(chainFetcher.chainConfig.id), chainFetcher),
93
- isInReorgThreshold: chainManager.isInReorgThreshold,
94
- isRealtime: chainManager.isRealtime
95
- };
96
- }
97
-
98
- function nextItemIsNone(chainManager) {
99
- return !Batch.hasReadyItem(ChainMap.map(chainManager.chainFetchers, cf => cf.fetchState));
100
- }
101
-
102
- function createBatch(chainManager, processedCheckpointId, batchSizeTarget, isRollback) {
103
- return Batch.make(processedCheckpointId + (
104
- isRollback ? 1n : 0n
105
- ), ChainMap.map(chainManager.chainFetchers, cf => ({
106
- fetchState: cf.fetchState,
107
- reorgDetection: cf.reorgDetection,
108
- progressBlockNumber: cf.committedProgressBlockNumber,
109
- sourceBlockNumber: cf.fetchState.knownHeight,
110
- totalEventsProcessed: cf.numEventsProcessed,
111
- chainConfig: cf.chainConfig
112
- })), batchSizeTarget, chainManager.isInReorgThreshold);
113
- }
114
-
115
- function isProgressAtHead(chainManager) {
116
- return ChainMap.values(chainManager.chainFetchers).every(cf => cf.isProgressAtHead);
117
- }
118
-
119
- function isActivelyIndexing(chainManager) {
120
- return ChainMap.values(chainManager.chainFetchers).every(ChainFetcher.isActivelyIndexing);
121
- }
122
-
123
- function getSafeCheckpointId(chainManager) {
124
- let chainFetchers = ChainMap.values(chainManager.chainFetchers);
125
- let result;
126
- for (let idx = 0, idx_finish = chainFetchers.length; idx < idx_finish; ++idx) {
127
- let chainFetcher = chainFetchers[idx];
128
- let safeCheckpointTracking = chainFetcher.safeCheckpointTracking;
129
- if (safeCheckpointTracking !== undefined) {
130
- let safeCheckpointId = SafeCheckpointTracking.getSafeCheckpointId(safeCheckpointTracking, chainFetcher.fetchState.knownHeight);
131
- let current = result;
132
- if (!(current !== undefined && safeCheckpointId >= current)) {
133
- result = safeCheckpointId;
134
- }
135
- }
136
- }
137
- let id = result;
138
- if (id !== undefined && id > 0n) {
139
- return id;
140
- }
141
- }
142
-
143
- function updateProgressedChains(chainManager, batch) {
144
- let nextQueueItemIsNone = nextItemIsNone(chainManager);
145
- let allChainsAtHead = isProgressAtHead(chainManager);
146
- let allChainsReady = {
147
- contents: true
148
- };
149
- let chainFetchers = ChainMap.map(chainManager.chainFetchers, prev => {
150
- let chain = ChainMap.Chain.makeUnsafe(prev.chainConfig.id);
151
- let maybeChainAfterBatch = batch.progressedChainsById[chain];
152
- let cf;
153
- if (maybeChainAfterBatch !== undefined) {
154
- if (prev.committedProgressBlockNumber !== maybeChainAfterBatch.progressBlockNumber) {
155
- Prometheus.ProgressBlockNumber.set(maybeChainAfterBatch.progressBlockNumber, chain);
156
- }
157
- if (prev.numEventsProcessed !== maybeChainAfterBatch.totalEventsProcessed) {
158
- Prometheus.ProgressEventsCount.set(maybeChainAfterBatch.totalEventsProcessed, chain);
159
- }
160
- let eventItem = Batch.findLastEventItem(batch, chain);
161
- if (eventItem !== undefined) {
162
- let blockTimestamp = eventItem.timestamp;
163
- let currentTimeMs = Date.now() | 0;
164
- let blockTimestampMs = blockTimestamp * 1000 | 0;
165
- let latencyMs = currentTimeMs - blockTimestampMs | 0;
166
- Prometheus.ProgressLatency.set(latencyMs, chain);
167
- }
168
- let match = prev.fetchState.firstEventBlock;
169
- let tmp;
170
- if (match !== undefined) {
171
- tmp = prev.fetchState;
172
- } else {
173
- let firstEventBlock = Batch.findFirstEventBlockNumber(batch, chain);
174
- if (firstEventBlock !== undefined) {
175
- let init = prev.fetchState;
176
- tmp = {
177
- optimizedPartitions: init.optimizedPartitions,
178
- startBlock: init.startBlock,
179
- endBlock: init.endBlock,
180
- normalSelection: init.normalSelection,
181
- indexingAddresses: init.indexingAddresses,
182
- contractConfigs: init.contractConfigs,
183
- chainId: init.chainId,
184
- latestOnBlockBlockNumber: init.latestOnBlockBlockNumber,
185
- blockLag: init.blockLag,
186
- buffer: init.buffer,
187
- targetBufferSize: init.targetBufferSize,
188
- onBlockConfigs: init.onBlockConfigs,
189
- knownHeight: init.knownHeight,
190
- firstEventBlock: firstEventBlock
191
- };
192
- } else {
193
- tmp = prev.fetchState;
194
- }
195
- }
196
- let safeCheckpointTracking = prev.safeCheckpointTracking;
197
- cf = {
198
- logger: prev.logger,
199
- fetchState: tmp,
200
- sourceManager: prev.sourceManager,
201
- chainConfig: prev.chainConfig,
202
- isProgressAtHead: prev.isProgressAtHead || maybeChainAfterBatch.isProgressAtHeadWhenBatchCreated,
203
- timestampCaughtUpToHeadOrEndblock: prev.timestampCaughtUpToHeadOrEndblock,
204
- committedProgressBlockNumber: maybeChainAfterBatch.progressBlockNumber,
205
- numEventsProcessed: maybeChainAfterBatch.totalEventsProcessed,
206
- reorgDetection: prev.reorgDetection,
207
- safeCheckpointTracking: safeCheckpointTracking !== undefined ? SafeCheckpointTracking.updateOnNewBatch(safeCheckpointTracking, prev.fetchState.knownHeight, chain, batch.checkpointIds, batch.checkpointBlockNumbers, batch.checkpointChainIds) : undefined
208
- };
209
- } else {
210
- cf = prev;
211
- }
212
- let cf$1;
213
- if (ChainFetcher.hasProcessedToEndblock(cf)) {
214
- let timestampCaughtUpToHeadOrEndblock = ChainFetcher.isReady(cf) ? cf.timestampCaughtUpToHeadOrEndblock : new Date();
215
- cf$1 = {
216
- logger: cf.logger,
217
- fetchState: cf.fetchState,
218
- sourceManager: cf.sourceManager,
219
- chainConfig: cf.chainConfig,
220
- isProgressAtHead: cf.isProgressAtHead,
221
- timestampCaughtUpToHeadOrEndblock: timestampCaughtUpToHeadOrEndblock,
222
- committedProgressBlockNumber: cf.committedProgressBlockNumber,
223
- numEventsProcessed: cf.numEventsProcessed,
224
- reorgDetection: cf.reorgDetection,
225
- safeCheckpointTracking: cf.safeCheckpointTracking
226
- };
227
- } else if (!ChainFetcher.isReady(cf) && cf.isProgressAtHead) {
228
- if (nextQueueItemIsNone && allChainsAtHead) {
229
- cf$1 = {
230
- logger: cf.logger,
231
- fetchState: cf.fetchState,
232
- sourceManager: cf.sourceManager,
233
- chainConfig: cf.chainConfig,
234
- isProgressAtHead: cf.isProgressAtHead,
235
- timestampCaughtUpToHeadOrEndblock: new Date(),
236
- committedProgressBlockNumber: cf.committedProgressBlockNumber,
237
- numEventsProcessed: cf.numEventsProcessed,
238
- reorgDetection: cf.reorgDetection,
239
- safeCheckpointTracking: cf.safeCheckpointTracking
240
- };
241
- } else {
242
- let hasNoMoreEventsToProcess = ChainFetcher.hasNoMoreEventsToProcess(cf);
243
- cf$1 = hasNoMoreEventsToProcess ? ({
244
- logger: cf.logger,
245
- fetchState: cf.fetchState,
246
- sourceManager: cf.sourceManager,
247
- chainConfig: cf.chainConfig,
248
- isProgressAtHead: cf.isProgressAtHead,
249
- timestampCaughtUpToHeadOrEndblock: new Date(),
250
- committedProgressBlockNumber: cf.committedProgressBlockNumber,
251
- numEventsProcessed: cf.numEventsProcessed,
252
- reorgDetection: cf.reorgDetection,
253
- safeCheckpointTracking: cf.safeCheckpointTracking
254
- }) : cf;
255
- }
256
- } else {
257
- cf$1 = cf;
258
- }
259
- if (ChainFetcher.isReady(cf$1)) {
260
- if (!ChainFetcher.isReady(prev)) {
261
- Prometheus.ProgressReady.set(chain);
262
- }
263
- } else {
264
- allChainsReady.contents = false;
265
- }
266
- return cf$1;
267
- });
268
- if (allChainsReady.contents) {
269
- Prometheus.ProgressReady.setAllReady();
270
- }
271
- return {
272
- chainFetchers: chainFetchers,
273
- isInReorgThreshold: chainManager.isInReorgThreshold,
274
- isRealtime: chainManager.isRealtime || allChainsReady.contents
275
- };
276
- }
277
-
278
- export {
279
- isProgressInReorgThreshold,
280
- calculateTargetBufferSize,
281
- makeFromDbState,
282
- getChainFetcher,
283
- setChainFetcher,
284
- nextItemIsNone,
285
- createBatch,
286
- isProgressAtHead,
287
- isActivelyIndexing,
288
- getSafeCheckpointId,
289
- updateProgressedChains,
290
- }
291
- /* Env Not a pure module */
package/src/Ctx.res DELETED
@@ -1,6 +0,0 @@
1
- type t = {
2
- registrations: HandlerRegister.registrations,
3
- config: Config.t,
4
- persistence: Persistence.t,
5
- inMemoryStore: InMemoryStore.t,
6
- }
package/src/Ctx.res.mjs DELETED
@@ -1,2 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
- /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */