envio 3.15.0-subgraph → 3.16.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 (186) hide show
  1. package/README.md +40 -34
  2. package/evm.schema.json +3 -3
  3. package/fuel.schema.json +2 -2
  4. package/index.d.ts +3 -3
  5. package/licenses/README.md +1 -1
  6. package/package.json +9 -10
  7. package/src/Batch.res.mjs +5 -5
  8. package/src/BatchProcessing.res +1 -0
  9. package/src/BatchProcessing.res.mjs +1 -0
  10. package/src/Bin.res +0 -7
  11. package/src/Bin.res.mjs +0 -8
  12. package/src/ChainFetching.res +17 -456
  13. package/src/ChainFetching.res.mjs +33 -404
  14. package/src/ChainState.res +48 -83
  15. package/src/ChainState.res.mjs +83 -115
  16. package/src/ChainState.resi +0 -26
  17. package/src/Clock.res +57 -0
  18. package/src/Clock.res.mjs +72 -0
  19. package/src/Config.res +7 -16
  20. package/src/Config.res.mjs +4 -11
  21. package/src/ContractRegisterContext.res +6 -3
  22. package/src/ContractRegisterContext.res.mjs +2 -4
  23. package/src/Core.res +5 -136
  24. package/src/Core.res.mjs +1 -90
  25. package/src/CrossChainState.res +2 -8
  26. package/src/CrossChainState.res.mjs +3 -3
  27. package/src/Ecosystem.res +4 -7
  28. package/src/Ecosystem.res.mjs +8 -8
  29. package/src/EffectState.res +10 -2
  30. package/src/EffectState.res.mjs +8 -4
  31. package/src/EffectState.resi +3 -1
  32. package/src/EntityId.res +2 -7
  33. package/src/EntityId.res.mjs +1 -8
  34. package/src/EntityTables.res +4 -1
  35. package/src/EntityTables.res.mjs +1 -1
  36. package/src/Env.res +0 -16
  37. package/src/Env.res.mjs +0 -11
  38. package/src/EventProcessing.res +1 -38
  39. package/src/EventProcessing.res.mjs +1 -28
  40. package/src/FetchState.res +160 -319
  41. package/src/FetchState.res.mjs +182 -292
  42. package/src/FinalizeBackfill.res +2 -4
  43. package/src/FinalizeBackfill.res.mjs +3 -4
  44. package/src/HandlerLoader.res +15 -39
  45. package/src/HandlerLoader.res.mjs +8 -27
  46. package/src/HandlerRegister.res +0 -4
  47. package/src/HandlerRegister.res.mjs +2 -5
  48. package/src/HandlerRegister.resi +0 -2
  49. package/src/InMemoryTable.res +17 -16
  50. package/src/InMemoryTable.res.mjs +14 -15
  51. package/src/IndexerState.res +28 -4
  52. package/src/IndexerState.res.mjs +19 -6
  53. package/src/IndexerState.resi +4 -0
  54. package/src/Internal.res +0 -110
  55. package/src/Internal.res.mjs +1 -115
  56. package/src/LoadLayer.res +21 -47
  57. package/src/LoadLayer.res.mjs +47 -72
  58. package/src/LoadLayer.resi +0 -26
  59. package/src/Main.res +1 -14
  60. package/src/Main.res.mjs +3 -4
  61. package/src/Persistence.res +3 -23
  62. package/src/Persistence.res.mjs +3 -3
  63. package/src/Rollback.res +0 -1
  64. package/src/Rollback.res.mjs +1 -1
  65. package/src/RunScope.res +0 -3
  66. package/src/SafeCheckpointTracking.res +4 -4
  67. package/src/SafeCheckpointTracking.res.mjs +1 -1
  68. package/src/SimulateItems.res +26 -42
  69. package/src/SimulateItems.res.mjs +16 -40
  70. package/src/StagedRows.res +106 -0
  71. package/src/StagedRows.res.mjs +102 -0
  72. package/src/Staging.res +32 -14
  73. package/src/Staging.res.mjs +17 -20
  74. package/src/Storage.res +277 -998
  75. package/src/Storage.res.mjs +216 -731
  76. package/src/Supervisor.res +75 -56
  77. package/src/Supervisor.res.mjs +55 -26
  78. package/src/TestIndexer.res +22 -27
  79. package/src/TestIndexer.res.mjs +20 -17
  80. package/src/Throttler.res +15 -8
  81. package/src/Throttler.res.mjs +9 -6
  82. package/src/Throttler.resi +1 -1
  83. package/src/UserContext.res +46 -410
  84. package/src/UserContext.res.mjs +30 -318
  85. package/src/Utils.res +0 -23
  86. package/src/Utils.res.mjs +1 -17
  87. package/src/Writing.res +0 -1
  88. package/src/Writing.res.mjs +1 -1
  89. package/src/bindings/ClickHouse.res +0 -322
  90. package/src/bindings/ClickHouse.res.mjs +0 -338
  91. package/src/bindings/StorageClient.res +107 -175
  92. package/src/bindings/StorageClient.res.mjs +19 -8
  93. package/src/bindings/Vitest.res +0 -26
  94. package/src/bindings/Vitest.res.mjs +0 -3
  95. package/src/db/Table.res +24 -150
  96. package/src/db/Table.res.mjs +38 -272
  97. package/src/sources/AddressSet.res +0 -2
  98. package/src/sources/AddressStore.res +0 -3
  99. package/src/sources/ChainSources.res +2 -0
  100. package/src/sources/ChainSources.res.mjs +2 -2
  101. package/src/sources/EvmChain.res +4 -7
  102. package/src/sources/EvmChain.res.mjs +5 -4
  103. package/src/sources/EvmHyperSyncSource.res +2 -2
  104. package/src/sources/EvmHyperSyncSource.res.mjs +1 -1
  105. package/src/sources/EvmRpcClient.res +13 -3
  106. package/src/sources/EvmRpcClient.res.mjs +4 -3
  107. package/src/sources/EvmRpcWs.res +4 -3
  108. package/src/sources/EvmRpcWs.res.mjs +2 -2
  109. package/src/sources/HeightFeed.res +31 -10
  110. package/src/sources/HeightFeed.res.mjs +10 -6
  111. package/src/sources/HeightStream.res +32 -17
  112. package/src/sources/HeightStream.res.mjs +10 -10
  113. package/src/sources/HyperSync.res +1 -2
  114. package/src/sources/HyperSync.res.mjs +1 -2
  115. package/src/sources/HyperSyncSSE.res +4 -6
  116. package/src/sources/HyperSyncSSE.res.mjs +2 -2
  117. package/src/sources/RpcSource.res +10 -1
  118. package/src/sources/RpcSource.res.mjs +4 -3
  119. package/src/sources/Source.res +3 -0
  120. package/src/sources/SourceManager.res +85 -104
  121. package/src/sources/SourceManager.res.mjs +18 -37
  122. package/src/sources/SourceManager.resi +3 -5
  123. package/src/sources/StartBlockResolver.res +1 -0
  124. package/src/sources/StartBlockResolver.res.mjs +4 -3
  125. package/src/sources/SvmHyperSyncSource.res +2 -2
  126. package/src/sources/SvmHyperSyncSource.res.mjs +1 -1
  127. package/svm.schema.json +3 -3
  128. package/src/EffectCacheLookup.res +0 -98
  129. package/src/EffectCacheLookup.res.mjs +0 -116
  130. package/src/PgWriting.res +0 -36
  131. package/src/PgWriting.res.mjs +0 -34
  132. package/src/PreloadLookahead.res +0 -184
  133. package/src/PreloadLookahead.res.mjs +0 -197
  134. package/src/SubgraphLog.res +0 -19
  135. package/src/SubgraphLog.res.mjs +0 -26
  136. package/src/SyncWrites.res +0 -101
  137. package/src/SyncWrites.res.mjs +0 -98
  138. package/src/db/IndexDefinition.res +0 -47
  139. package/src/db/IndexDefinition.res.mjs +0 -60
  140. package/src/sources/CallSource.res +0 -274
  141. package/src/sources/CallSource.res.mjs +0 -196
  142. package/src/subgraph/abi-types.ts +0 -84
  143. package/src/subgraph/aggregations.ts +0 -745
  144. package/src/subgraph/as-package.ts +0 -143
  145. package/src/subgraph/assemblyscript-regex.ts +0 -67
  146. package/src/subgraph/assemblyscript.ts +0 -731
  147. package/src/subgraph/blocks.ts +0 -398
  148. package/src/subgraph/calls-source.ts +0 -702
  149. package/src/subgraph/calls.ts +0 -258
  150. package/src/subgraph/conformance.ts +0 -106
  151. package/src/subgraph/errors.ts +0 -85
  152. package/src/subgraph/graft.ts +0 -73
  153. package/src/subgraph/graph-cli-worker.mjs +0 -35
  154. package/src/subgraph/graph-cli.ts +0 -900
  155. package/src/subgraph/graph-node-decimal.ts +0 -199
  156. package/src/subgraph/graph-ts-enums.ts +0 -28
  157. package/src/subgraph/graph-ts-types/VERSION +0 -2
  158. package/src/subgraph/graph-ts-types/chain/arweave.d.ts +0 -70
  159. package/src/subgraph/graph-ts-types/chain/cosmos.d.ts +0 -327
  160. package/src/subgraph/graph-ts-types/chain/ethereum.d.ts +0 -233
  161. package/src/subgraph/graph-ts-types/chain/near.d.ts +0 -253
  162. package/src/subgraph/graph-ts-types/chain/starknet.d.ts +0 -32
  163. package/src/subgraph/graph-ts-types/common/collections.d.ts +0 -136
  164. package/src/subgraph/graph-ts-types/common/conversion.d.ts +0 -11
  165. package/src/subgraph/graph-ts-types/common/datasource.d.ts +0 -30
  166. package/src/subgraph/graph-ts-types/common/eager-offset.d.ts +0 -0
  167. package/src/subgraph/graph-ts-types/common/json.d.ts +0 -17
  168. package/src/subgraph/graph-ts-types/common/numbers.d.ts +0 -120
  169. package/src/subgraph/graph-ts-types/common/value.d.ts +0 -120
  170. package/src/subgraph/graph-ts-types/common/yaml.d.ts +0 -90
  171. package/src/subgraph/graph-ts-types/global/global.d.ts +0 -194
  172. package/src/subgraph/graph-ts-types/helper-functions.d.ts +0 -22
  173. package/src/subgraph/graph-ts-types/index.d.ts +0 -102
  174. package/src/subgraph/graph-ts.ts +0 -4280
  175. package/src/subgraph/hosts.ts +0 -554
  176. package/src/subgraph/log.ts +0 -28
  177. package/src/subgraph/receipts.ts +0 -184
  178. package/src/subgraph/register-slots.ts +0 -93
  179. package/src/subgraph/rollup.ts +0 -109
  180. package/src/subgraph/rpc.ts +0 -337
  181. package/src/subgraph/runtime.ts +0 -2060
  182. package/src/subgraph/scope.ts +0 -177
  183. package/src/subgraph/stats.ts +0 -42
  184. package/src/subgraph/template-instances.ts +0 -66
  185. package/src/subgraph/toolchain.ts +0 -327
  186. package/src/subgraph/transient.ts +0 -176
@@ -1,18 +1,14 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
 
3
- import * as Env from "./Env.res.mjs";
4
3
  import * as Utils from "./Utils.res.mjs";
5
4
  import * as Logger from "./Logger.res.mjs";
6
- import * as Internal from "./Internal.res.mjs";
7
5
  import * as RunScope from "./RunScope.res.mjs";
8
6
  import * as Ecosystem from "./Ecosystem.res.mjs";
9
7
  import * as ChainState from "./ChainState.res.mjs";
10
- import * as FetchState from "./FetchState.res.mjs";
11
8
  import * as IndexerState from "./IndexerState.res.mjs";
12
9
  import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
13
10
  import * as ChainMetadata from "./ChainMetadata.res.mjs";
14
11
  import * as ErrorHandling from "./ErrorHandling.res.mjs";
15
- import * as Primitive_int from "@rescript/runtime/lib/es6/Primitive_int.js";
16
12
  import * as SourceManager from "./sources/SourceManager.res.mjs";
17
13
  import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
18
14
  import * as HandlerRuntime from "./HandlerRuntime.res.mjs";
@@ -24,74 +20,32 @@ function hasContractRegister(item) {
24
20
  if (item.kind === 0) {
25
21
  return item.onEventRegistration.contractRegister !== undefined;
26
22
  } else {
27
- return item.onBlockRegistration.contractRegister !== undefined;
23
+ return false;
28
24
  }
29
25
  }
30
26
 
31
27
  function invokeContractRegister(runtime, item) {
32
- if (item.kind === 0) {
33
- let onEventRegistration = item.onEventRegistration;
34
- let contractRegister = onEventRegistration.contractRegister;
35
- let contractRegister$1 = contractRegister !== undefined ? contractRegister : Stdlib_JsError.throwWithMessage("Contract register is not set for event " + onEventRegistration.eventConfig.name);
36
- return contractRegister$1({
37
- event: Ecosystem.getItemEvent(item, HandlerRuntime.ecosystem(runtime)),
38
- context: runtime.contractRegisterContext
39
- });
40
- }
41
- let block = item.block;
42
- let blockNumber = item.blockNumber;
43
- let onBlockRegistration = item.onBlockRegistration;
44
- let contractRegister$2 = onBlockRegistration.contractRegister;
45
- let contractRegister$3 = contractRegister$2 !== undefined ? contractRegister$2 : Stdlib_JsError.throwWithMessage("Contract register is not set for block handler " + onBlockRegistration.name);
46
- let ecosystem = HandlerRuntime.ecosystem(runtime);
47
- let context = runtime.contractRegisterContext;
48
- let match = ecosystem.name;
49
- let tmp;
50
- let exit = 0;
51
- switch (match) {
52
- case "evm" :
53
- case "fuel" :
54
- exit = 1;
55
- break;
56
- case "svm" :
57
- tmp = {
58
- slot: blockNumber,
59
- block: block,
60
- context: context
61
- };
62
- break;
63
- }
64
- if (exit === 1) {
65
- tmp = {
66
- block: Primitive_option.some(Stdlib_Option.getOr(block, Ecosystem.makeKeyOnlyBlock(blockNumber, ecosystem))),
67
- context: context
68
- };
69
- }
70
- return contractRegister$3(tmp);
28
+ let match = item.onEventRegistration;
29
+ let contractRegister = match.contractRegister;
30
+ let contractRegister$1 = contractRegister !== undefined ? contractRegister : Stdlib_JsError.throwWithMessage("Contract register is not set for event " + match.eventConfig.name);
31
+ return contractRegister$1({
32
+ event: Ecosystem.getItemEvent(item, HandlerRuntime.ecosystem(runtime)),
33
+ context: runtime.contractRegisterContext
34
+ });
71
35
  }
72
36
 
73
37
  async function runContractRegistersOrThrow(itemsWithContractRegister, runtime, chainState) {
74
- await ChainState.materializePageItems(Env.subgraphMode.contents ? itemsWithContractRegister.filter(item => item.kind === 0) : itemsWithContractRegister, ChainState.transactionStore(chainState), ChainState.blockStore(chainState), ChainState.shouldChecksum(chainState));
38
+ await ChainState.materializePageItems(itemsWithContractRegister, ChainState.transactionStore(chainState), ChainState.blockStore(chainState), ChainState.shouldChecksum(chainState));
75
39
  let registrations = [];
76
40
  let chainLogger = ChainState.logger(chainState);
77
41
  let ecosystem = HandlerRuntime.ecosystem(runtime);
78
- let isSubgraph = Env.subgraphMode.contents;
79
42
  await Promise.all(itemsWithContractRegister.map(async item => {
80
- let tmp;
81
- if (isSubgraph) {
82
- let tmp$1;
83
- tmp$1 = item.kind === 0 ? FetchState.creationRoundOfRegistration(ChainState.fetchState(chainState), item) : 1;
84
- tmp = tmp$1;
85
- } else {
86
- tmp = undefined;
87
- }
88
43
  let run = {
89
44
  item: item,
90
45
  isResolved: false,
91
46
  chainLogger: chainLogger,
92
47
  ecosystem: ecosystem,
93
- registrations: registrations,
94
- creationRound: tmp
48
+ registrations: registrations
95
49
  };
96
50
  let scope = {
97
51
  TAG: "ContractRegister",
@@ -103,208 +57,16 @@ async function runContractRegistersOrThrow(itemsWithContractRegister, runtime, c
103
57
  } catch (raw_exn) {
104
58
  let exn = Primitive_exceptions.internalToException(raw_exn);
105
59
  RunScope.resolve(scope);
106
- let tmp$2;
107
- tmp$2 = item.kind === 0 ? "Event contractRegister failed, please fix the error to keep the indexer running smoothly" : "Block handler contractRegister failed, please fix the error to keep the indexer running smoothly";
108
- return ErrorHandling.mkLogAndRaise(RunScope.contractRegisterLogger(run), tmp$2, exn);
60
+ return ErrorHandling.mkLogAndRaise(RunScope.contractRegisterLogger(run), "Event contractRegister failed, please fix the error to keep the indexer running smoothly", exn);
109
61
  }
110
62
  return RunScope.resolve(scope);
111
63
  }));
112
64
  return registrations;
113
65
  }
114
66
 
115
- function mergeRegisterItems(eventItems, blockItems) {
116
- let merged = [];
117
- let i = 0;
118
- let j = 0;
119
- while (i < eventItems.length || j < blockItems.length) {
120
- let match = eventItems[i];
121
- let match$1 = blockItems[j];
122
- let takeBlock;
123
- if (match !== undefined) {
124
- if (match$1 !== undefined) {
125
- let eventBlock = match.blockNumber;
126
- let blockBlock = match$1.blockNumber;
127
- takeBlock = blockBlock < eventBlock || blockBlock === eventBlock && Internal.itemRunsFirst(match$1);
128
- } else {
129
- takeBlock = false;
130
- }
131
- } else {
132
- takeBlock = true;
133
- }
134
- if (takeBlock) {
135
- merged.push(blockItems[j]);
136
- j = j + 1 | 0;
137
- } else {
138
- merged.push(eventItems[i]);
139
- i = i + 1 | 0;
140
- }
141
- };
142
- return merged;
143
- }
144
-
145
- async function runRegisterPassesOrThrow(eventItems, blockItems, runtime, chainState) {
146
- let items = mergeRegisterItems(eventItems, blockItems);
147
- let registrations = [];
148
- let start = 0;
149
- while (start < items.length) {
150
- let chunk = items.slice(start, start + 2048 | 0);
151
- registrations.push(...await runContractRegistersOrThrow(chunk, runtime, chainState));
152
- start = start + 2048 | 0;
153
- };
154
- return registrations;
155
- }
156
-
157
- function sortRegistrations(registrations) {
158
- return registrations.toSorted((a, b) => {
159
- let order = Primitive_int.compare(a.registrationBlock, b.registrationBlock);
160
- if (order !== 0) {
161
- return order;
162
- } else {
163
- return Primitive_int.compare(Stdlib_Option.getOr(a.creationRound, 1), Stdlib_Option.getOr(b.creationRound, 1));
164
- }
165
- });
166
- }
167
-
168
- async function runResponsePassesOrThrow(eventItems, through, runtime, chainState) {
169
- let registrations = [];
170
- let eventIdx = 0;
171
- let passedThrough;
172
- let after = Stdlib_Option.getOr(ChainState.blockRegisterThrough(chainState), through);
173
- let isDone = false;
174
- while (!isDone) {
175
- let match = ChainState.blockRegisterItemsAfter(chainState, after, through, 10000);
176
- let match$1 = match !== undefined ? [
177
- match[0],
178
- match[1]
179
- ] : [
180
- [],
181
- undefined
182
- ];
183
- let covered = match$1[1];
184
- let blockItems = match$1[0];
185
- let eventEnd;
186
- if (covered !== undefined) {
187
- if (covered < through) {
188
- let idx = eventIdx;
189
- while (idx < eventItems.length && eventItems[idx].blockNumber <= covered) {
190
- idx = idx + 1 | 0;
191
- };
192
- eventEnd = idx;
193
- } else {
194
- eventEnd = eventItems.length;
195
- }
196
- } else {
197
- eventEnd = eventItems.length;
198
- }
199
- let startedAt = Date.now();
200
- let windowRegistrations = await runRegisterPassesOrThrow(eventItems.slice(eventIdx, eventEnd), blockItems, runtime, chainState);
201
- Logger.trace(ChainState.logger(chainState), "Ran register passes with block passes", {
202
- after: after,
203
- through: covered,
204
- blockPasses: blockItems.length,
205
- eventPasses: eventEnd - eventIdx | 0,
206
- registrations: windowRegistrations.length,
207
- ms: Date.now() - startedAt
208
- });
209
- registrations.push(...windowRegistrations);
210
- eventIdx = eventEnd;
211
- if (covered !== undefined) {
212
- passedThrough = covered;
213
- after = covered;
214
- isDone = covered >= through && eventIdx >= eventItems.length;
215
- } else {
216
- isDone = true;
217
- }
218
- };
219
- return [
220
- sortRegistrations(registrations),
221
- passedThrough
222
- ];
223
- }
224
-
225
- let registerCallsPerItem = (() => {
226
- const cost = globalThis.__envioSubgraphRegisterCostPerItem
227
- const value = cost ? cost() : undefined
228
- return value === undefined ? undefined : value
229
- });
230
-
231
- let reportRegisterFrontier = ((chainId, block) => {
232
- const report = globalThis.__envioSubgraphRegisterFrontier
233
- if (report) report(chainId, block)
234
- });
235
-
236
- function registerChunkLimit() {
237
- if (!Env.subgraphMode.contents) {
238
- return;
239
- }
240
- if (Env.subgraphRegisterChunk !== undefined) {
241
- if (Env.subgraphRegisterChunk > 0) {
242
- return Env.subgraphRegisterChunk;
243
- } else {
244
- return;
245
- }
246
- }
247
- let cost = registerCallsPerItem();
248
- if (cost !== undefined) {
249
- if (cost < 0.5) {
250
- return;
251
- } else {
252
- return Primitive_int.max(100, 3000 / cost | 0);
253
- }
254
- } else {
255
- return 100;
256
- }
257
- }
258
-
259
- function cutAtRegisterLimit(items, latestFetchedBlock, limit) {
260
- let seen = 0;
261
- let cutIdx = -1;
262
- let idx = 0;
263
- while (cutIdx < 0 && idx < items.length) {
264
- if (hasContractRegister(items[idx])) {
265
- seen = seen + 1 | 0;
266
- if (seen >= limit) {
267
- cutIdx = idx;
268
- }
269
- }
270
- idx = idx + 1 | 0;
271
- };
272
- if (cutIdx < 0) {
273
- return [
274
- items,
275
- latestFetchedBlock
276
- ];
277
- }
278
- let cutBlock = items[cutIdx].blockNumber;
279
- let last = cutIdx;
280
- while ((last + 1 | 0) < items.length && items[last + 1 | 0].blockNumber <= cutBlock) {
281
- last = last + 1 | 0;
282
- };
283
- if ((last + 1 | 0) >= items.length && cutBlock >= latestFetchedBlock) {
284
- return [
285
- items,
286
- latestFetchedBlock
287
- ];
288
- } else {
289
- return [
290
- items.slice(0, last + 1 | 0),
291
- cutBlock
292
- ];
293
- }
294
- }
295
-
296
67
  function applyQueryResponse(state, chainId, newItems, newRegistrations, knownHeight, latestFetchedBlock, query) {
297
68
  let chainState = IndexerState.getChainState(state, chainId);
298
69
  ChainState.handleQueryResult(chainState, query, newItems, newRegistrations, latestFetchedBlock, knownHeight);
299
- if (Env.subgraphMode.contents) {
300
- let fetchState = ChainState.fetchState(chainState);
301
- let frontier = FetchState.OptimizedPartitions.getLatestFullyFetchedBlock(fetchState.optimizedPartitions);
302
- if (frontier !== undefined) {
303
- let through = fetchState.blockRegisterThrough;
304
- let frontier$1 = through !== undefined ? Primitive_int.min(frontier, through) : frontier;
305
- reportRegisterFrontier(chainId, frontier$1);
306
- }
307
- }
308
70
  if (!IndexerState.exitAfterFirstEventBlock(state)) {
309
71
  return;
310
72
  }
@@ -327,15 +89,8 @@ async function onQueryResponse(state, param, runtime, stateId, scheduleFetch, sc
327
89
  let transactionStore = response.transactionStore;
328
90
  let parsedQueueItems = response.parsedQueueItems;
329
91
  let knownHeight = response.knownHeight;
330
- let limit = registerChunkLimit();
331
- let match = limit !== undefined ? cutAtRegisterLimit(parsedQueueItems, latestFetchedBlockNumber, limit) : [
332
- parsedQueueItems,
333
- latestFetchedBlockNumber
334
- ];
335
- let latestFetchedBlockNumber$1 = match[1];
336
- let parsedQueueItems$1 = match[0];
337
- ChainState.recordBlockRangeFetch(chainState, stats["total time elapsed (s)"], Stdlib_Option.getOr(stats["parsing time (s)"], 0), parsedQueueItems$1.length, (latestFetchedBlockNumber$1 - query.fromBlock | 0) + 1 | 0);
338
- let numContractRegisterEvents = Stdlib_Array.reduce(parsedQueueItems$1, 0, (count, item) => {
92
+ ChainState.recordBlockRangeFetch(chainState, stats["total time elapsed (s)"], Stdlib_Option.getOr(stats["parsing time (s)"], 0), parsedQueueItems.length, (latestFetchedBlockNumber - query.fromBlock | 0) + 1 | 0);
93
+ let numContractRegisterEvents = Stdlib_Array.reduce(parsedQueueItems, 0, (count, item) => {
339
94
  if (hasContractRegister(item)) {
340
95
  return count + 1 | 0;
341
96
  } else {
@@ -346,15 +101,15 @@ async function onQueryResponse(state, param, runtime, stateId, scheduleFetch, sc
346
101
  Logger.trace(ChainState.logger(chainState), "Finished querying", {
347
102
  partitionId: query.partitionId,
348
103
  fromBlock: query.fromBlock,
349
- toBlock: latestFetchedBlockNumber$1,
350
- numEvents: parsedQueueItems$1.length
104
+ toBlock: latestFetchedBlockNumber,
105
+ numEvents: parsedQueueItems.length
351
106
  });
352
107
  } else {
353
108
  Logger.trace(ChainState.logger(chainState), "Finished querying", {
354
109
  partitionId: query.partitionId,
355
110
  fromBlock: query.fromBlock,
356
- toBlock: latestFetchedBlockNumber$1,
357
- numEvents: parsedQueueItems$1.length,
111
+ toBlock: latestFetchedBlockNumber,
112
+ numEvents: parsedQueueItems.length,
358
113
  numContractRegisterEvents: numContractRegisterEvents
359
114
  });
360
115
  }
@@ -363,22 +118,22 @@ async function onQueryResponse(state, param, runtime, stateId, scheduleFetch, sc
363
118
  if (typeof reorgResult !== "object") {
364
119
  rollbackWithReorgDetectedBlockNumber = undefined;
365
120
  } else {
366
- let match$1 = reorgResult._0;
367
- let scannedBlock = match$1.scannedBlock;
121
+ let match = reorgResult._0;
122
+ let scannedBlock = match.scannedBlock;
368
123
  Logger.info(ChainState.logger(chainState), `Blockchain reorg detected. ` + (
369
124
  ChainState.shouldRollbackOnReorg(chainState) ? "Initiating indexer rollback" : "NOT initiating indexer rollback due to configuration"
370
125
  ) + `.`, {
371
126
  blockNumber: scannedBlock.blockNumber,
372
127
  indexedBlockHash: scannedBlock.blockHash,
373
- receivedBlockHash: match$1.receivedBlock.blockHash
128
+ receivedBlockHash: match.receivedBlock.blockHash
374
129
  });
375
130
  ChainState.recordReorgDetected(chainState, scannedBlock.blockNumber);
376
131
  rollbackWithReorgDetectedBlockNumber = ChainState.shouldRollbackOnReorg(chainState) ? scannedBlock.blockNumber : undefined;
377
132
  }
378
133
  if (rollbackWithReorgDetectedBlockNumber !== undefined) {
379
- let match$2 = IndexerState.rollbackState(state);
134
+ let match$1 = IndexerState.rollbackState(state);
380
135
  let eventsProcessedDiffByChain;
381
- eventsProcessedDiffByChain = typeof match$2 !== "object" || match$2.TAG !== "RollbackReady" ? undefined : match$2.eventsProcessedDiffByChain;
136
+ eventsProcessedDiffByChain = typeof match$1 !== "object" || match$1.TAG !== "RollbackReady" ? undefined : match$1.eventsProcessedDiffByChain;
382
137
  Utils.Dict.forEach(IndexerState.chainStates(state), cs => ChainState.prepareReorg(cs, eventsProcessedDiffByChain !== undefined ? eventsProcessedDiffByChain[ChainState.chainConfig(cs).id] : undefined));
383
138
  IndexerState.beginReorg(state, chainId, rollbackWithReorgDetectedBlockNumber);
384
139
  return scheduleRollback();
@@ -387,86 +142,31 @@ async function onQueryResponse(state, param, runtime, stateId, scheduleFetch, sc
387
142
  ChainState.transactionStore(chainState).merge(Primitive_option.valFromOption(transactionStore));
388
143
  }
389
144
  let itemsWithContractRegister = [];
390
- for (let idx = 0, idx_finish = parsedQueueItems$1.length; idx < idx_finish; ++idx) {
391
- let item = parsedQueueItems$1[idx];
145
+ for (let idx = 0, idx_finish = parsedQueueItems.length; idx < idx_finish; ++idx) {
146
+ let item = parsedQueueItems[idx];
392
147
  if (hasContractRegister(item)) {
393
148
  itemsWithContractRegister.push(item);
394
149
  }
395
150
  }
396
- let proceed = (newRegistrations, blockRegisterThrough, newItemsOpt, latestFetchedBlockOpt) => {
397
- let newItems = newItemsOpt !== undefined ? newItemsOpt : parsedQueueItems$1;
398
- let latestFetchedBlock = latestFetchedBlockOpt !== undefined ? latestFetchedBlockOpt : latestFetchedBlockNumber$1;
151
+ let proceed = newRegistrations => {
399
152
  if (!IndexerState.isStale(state, stateId)) {
400
- applyQueryResponse(state, chainId, newItems, newRegistrations, knownHeight, latestFetchedBlock, query);
401
- if (blockRegisterThrough !== undefined) {
402
- ChainState.markBlockRegistered(chainState, blockRegisterThrough);
403
- }
153
+ applyQueryResponse(state, chainId, parsedQueueItems, newRegistrations, knownHeight, latestFetchedBlockNumber, query);
404
154
  ChainMetadata.stage(state);
405
155
  scheduleFetch();
406
156
  return scheduleProcessing();
407
157
  }
408
158
  };
409
- let blockRegisterCeiling = Primitive_int.min(latestFetchedBlockNumber$1, Primitive_int.max(knownHeight, ChainState.knownHeight(chainState)));
410
- let withBlockPasses = ChainState.hasBlockRegisters(chainState) && (Utils.$$Array.notEmpty(itemsWithContractRegister) || ChainState.canAdvanceBlockRegisters(chainState, blockRegisterCeiling));
411
- if (withBlockPasses) {
412
- let match$3 = ChainState.queueBlockRegisterRun(chainState);
413
- let finish = match$3[1];
414
- let held = ChainState.holdExtraBudget(chainState, Primitive_int.max(0, parsedQueueItems$1.length - query.itemsEst | 0));
415
- await match$3[0];
416
- if (IndexerState.isStale(state, stateId)) {
417
- ChainState.releaseExtraBudget(chainState, held);
418
- finish();
419
- return scheduleFetch();
420
- }
421
- let match$4 = ChainState.blockRegisterItemsAfter(chainState, Primitive_int.max(Stdlib_Option.getOr(ChainState.blockRegisterThrough(chainState), blockRegisterCeiling), query.fromBlock - 1 | 0), blockRegisterCeiling, 50000);
422
- let cutAt;
423
- if (match$4 !== undefined) {
424
- let covered = match$4[1];
425
- cutAt = covered < blockRegisterCeiling ? covered : undefined;
426
- } else {
427
- cutAt = undefined;
428
- }
429
- let through = Stdlib_Option.getOr(cutAt, blockRegisterCeiling);
430
- let match$5;
431
- if (cutAt !== undefined) {
432
- let isKept = item => item.blockNumber <= through;
433
- match$5 = [
434
- parsedQueueItems$1.filter(isKept),
435
- itemsWithContractRegister.filter(isKept),
436
- through
437
- ];
438
- } else {
439
- match$5 = [
440
- parsedQueueItems$1,
441
- itemsWithContractRegister,
442
- latestFetchedBlockNumber$1
443
- ];
444
- }
445
- let val;
446
- try {
447
- val = await runResponsePassesOrThrow(match$5[1], through, runtime, chainState);
448
- } catch (raw_exn) {
449
- let exn = Primitive_exceptions.internalToException(raw_exn);
450
- finish();
451
- return IndexerState.errorExit(state, ErrorHandling.make(exn, ChainState.logger(chainState), undefined));
452
- }
453
- ChainState.releaseExtraBudget(chainState, held);
454
- proceed(val[0], val[1], match$5[0], match$5[2]);
455
- return finish();
456
- }
457
159
  if (itemsWithContractRegister.length === 0) {
458
- return proceed([], undefined, undefined, undefined);
160
+ return proceed([]);
459
161
  }
460
- let held$1 = Env.subgraphMode.contents ? Primitive_option.some(ChainState.holdExtraBudget(chainState, Primitive_int.max(0, parsedQueueItems$1.length - query.itemsEst | 0))) : undefined;
461
162
  let newRegistrations;
462
163
  try {
463
164
  newRegistrations = await runContractRegistersOrThrow(itemsWithContractRegister, runtime, chainState);
464
- } catch (raw_exn$1) {
465
- let exn$1 = Primitive_exceptions.internalToException(raw_exn$1);
466
- return IndexerState.errorExit(state, ErrorHandling.make(exn$1, ChainState.logger(chainState), undefined));
165
+ } catch (raw_exn) {
166
+ let exn = Primitive_exceptions.internalToException(raw_exn);
167
+ return IndexerState.errorExit(state, ErrorHandling.make(exn, ChainState.logger(chainState), undefined));
467
168
  }
468
- Stdlib_Option.forEach(held$1, held => ChainState.releaseExtraBudget(chainState, held));
469
- return proceed(newRegistrations, undefined, undefined, undefined);
169
+ return proceed(newRegistrations);
470
170
  }
471
171
 
472
172
  function finishWaitingForNewBlock(state, chainId, knownHeight, stateId, scheduleFetch, scheduleProcessing) {
@@ -479,55 +179,11 @@ function finishWaitingForNewBlock(state, chainId, knownHeight, stateId, schedule
479
179
  scheduleProcessing();
480
180
  }
481
181
 
482
- async function catchUpBlockRegisters(state, chainId, runtime, stateId, scheduleFetch, scheduleProcessing) {
483
- let chainState = IndexerState.getChainState(state, chainId);
484
- if (!ChainState.isBlockRegisterIdle(chainState)) {
485
- return;
486
- }
487
- let match = ChainState.nextBlockRegisterItems(chainState, ChainState.blockRegisterFrontier(chainState), 10000);
488
- if (match === undefined) {
489
- return;
490
- }
491
- let through = match[1];
492
- let blockItems = match[0];
493
- let match$1 = ChainState.queueBlockRegisterRun(chainState);
494
- let finish = match$1[1];
495
- let startedAt = Date.now();
496
- let registrations;
497
- try {
498
- registrations = await runRegisterPassesOrThrow([], blockItems, runtime, chainState);
499
- } catch (raw_exn) {
500
- let exn = Primitive_exceptions.internalToException(raw_exn);
501
- finish();
502
- return IndexerState.errorExit(state, ErrorHandling.make(exn, ChainState.logger(chainState), undefined));
503
- }
504
- let isStale = IndexerState.isStale(state, stateId);
505
- Logger.trace(ChainState.logger(chainState), "Ran block passes", {
506
- through: through,
507
- blockPasses: blockItems.length,
508
- registrations: registrations.length,
509
- stale: isStale,
510
- ms: Date.now() - startedAt
511
- });
512
- if (!isStale) {
513
- ChainState.applyBlockRegisters(chainState, sortRegistrations(registrations), through);
514
- }
515
- finish();
516
- if (!isStale) {
517
- ChainMetadata.stage(state);
518
- scheduleProcessing();
519
- }
520
- return scheduleFetch();
521
- }
522
-
523
182
  async function fetchChain(state, chainId, runtime, action, stateId, scheduleFetch, scheduleProcessing, scheduleRollback) {
524
183
  let chainState = IndexerState.getChainState(state, chainId);
525
184
  if (IndexerState.isResolvingReorg(state) || IndexerState.isStopped(state)) {
526
185
  return;
527
186
  }
528
- if (ChainState.hasBlockRegisters(chainState)) {
529
- catchUpBlockRegisters(state, chainId, runtime, stateId, scheduleFetch, scheduleProcessing);
530
- }
531
187
  let isRealtime = IndexerState.isRealtime(state);
532
188
  let sourceManager = ChainState.sourceManager(chainState);
533
189
  let reducedPolling = !isRealtime && ChainState.knownHeight(chainState) > 0;
@@ -544,47 +200,20 @@ async function fetchChain(state, chainId, runtime, action, stateId, scheduleFetc
544
200
  let exn = Primitive_exceptions.internalToException(raw_exn);
545
201
  return IndexerState.errorExit(state, ErrorHandling.make(exn, IndexerState.logger(state), undefined));
546
202
  }
547
- }, knownHeight => SourceManager.waitForNewBlock(sourceManager, knownHeight, isRealtime, reducedPolling, ChainState.chainConfig(chainState).blockThrottle), knownHeight => finishWaitingForNewBlock(state, chainId, knownHeight, stateId, scheduleFetch, scheduleProcessing), action, stateId);
203
+ }, knownHeight => SourceManager.waitForNewBlock(sourceManager, knownHeight, isRealtime, reducedPolling), knownHeight => finishWaitingForNewBlock(state, chainId, knownHeight, stateId, scheduleFetch, scheduleProcessing), action, stateId);
548
204
  } catch (raw_exn) {
549
205
  let exn = Primitive_exceptions.internalToException(raw_exn);
550
206
  return IndexerState.errorExit(state, ErrorHandling.make(exn, IndexerState.logger(state), IndexerState.unexpectedErrorMsg));
551
207
  }
552
208
  }
553
209
 
554
- let blockRegisterChunk = 2048;
555
-
556
- let blockRegisterWindow = 10000;
557
-
558
- let maxResponseBlockPasses = 50000;
559
-
560
- let registerCallsPerChunk = 3000;
561
-
562
- let unknownCostChunk = 100;
563
-
564
- let minRegisterChunk = 100;
565
-
566
210
  export {
567
211
  hasContractRegister,
568
212
  invokeContractRegister,
569
213
  runContractRegistersOrThrow,
570
- mergeRegisterItems,
571
- blockRegisterChunk,
572
- blockRegisterWindow,
573
- maxResponseBlockPasses,
574
- runRegisterPassesOrThrow,
575
- sortRegistrations,
576
- runResponsePassesOrThrow,
577
- registerCallsPerItem,
578
- reportRegisterFrontier,
579
- registerCallsPerChunk,
580
- unknownCostChunk,
581
- minRegisterChunk,
582
- registerChunkLimit,
583
- cutAtRegisterLimit,
584
214
  onQueryResponse,
585
215
  applyQueryResponse,
586
216
  finishWaitingForNewBlock,
587
- catchUpBlockRegisters,
588
217
  fetchChain,
589
218
  }
590
- /* Env Not a pure module */
219
+ /* Utils Not a pure module */