envio 3.2.0 → 3.3.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 (113) 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 +375 -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 +618 -0
  11. package/src/ChainState.res.mjs +461 -0
  12. package/src/ChainState.resi +85 -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 +269 -0
  19. package/src/CrossChainState.res.mjs +197 -0
  20. package/src/CrossChainState.resi +47 -0
  21. package/src/Ecosystem.res +58 -0
  22. package/src/Ecosystem.res.mjs +43 -1
  23. package/src/Env.res +7 -2
  24. package/src/Env.res.mjs +5 -2
  25. package/src/EventConfigBuilder.res +35 -0
  26. package/src/EventConfigBuilder.res.mjs +21 -0
  27. package/src/EventProcessing.res +60 -46
  28. package/src/EventProcessing.res.mjs +33 -32
  29. package/src/EventUtils.res +0 -4
  30. package/src/EventUtils.res.mjs +0 -4
  31. package/src/ExitOnCaughtUp.res +10 -0
  32. package/src/ExitOnCaughtUp.res.mjs +22 -0
  33. package/src/FetchState.res +162 -113
  34. package/src/FetchState.res.mjs +181 -119
  35. package/src/HandlerLoader.res +6 -1
  36. package/src/HandlerLoader.res.mjs +13 -36
  37. package/src/InMemoryStore.res +36 -451
  38. package/src/InMemoryStore.res.mjs +20 -369
  39. package/src/IndexerLoop.res +44 -0
  40. package/src/IndexerLoop.res.mjs +46 -0
  41. package/src/IndexerState.res +544 -0
  42. package/src/IndexerState.res.mjs +547 -0
  43. package/src/IndexerState.resi +132 -0
  44. package/src/Internal.res +44 -7
  45. package/src/LoadLayer.res +20 -18
  46. package/src/LoadLayer.res.mjs +14 -12
  47. package/src/LoadLayer.resi +6 -3
  48. package/src/LogSelection.res +86 -17
  49. package/src/LogSelection.res.mjs +67 -14
  50. package/src/Logging.res +11 -44
  51. package/src/Logging.res.mjs +10 -42
  52. package/src/Main.res +54 -79
  53. package/src/Main.res.mjs +44 -56
  54. package/src/PgStorage.res +8 -71
  55. package/src/PgStorage.res.mjs +3 -47
  56. package/src/Prometheus.res +7 -8
  57. package/src/Prometheus.res.mjs +7 -4
  58. package/src/PruneStaleHistory.res +45 -0
  59. package/src/PruneStaleHistory.res.mjs +46 -0
  60. package/src/RawEvent.res +73 -0
  61. package/src/RawEvent.res.mjs +51 -0
  62. package/src/Rollback.res +204 -0
  63. package/src/Rollback.res.mjs +118 -0
  64. package/src/SimulateItems.res +12 -10
  65. package/src/SimulateItems.res.mjs +1 -1
  66. package/src/TestIndexer.res +34 -27
  67. package/src/TestIndexer.res.mjs +4 -1
  68. package/src/UserContext.res +26 -114
  69. package/src/UserContext.res.mjs +15 -78
  70. package/src/Writing.res +242 -0
  71. package/src/Writing.res.mjs +215 -0
  72. package/src/db/InternalTable.res +14 -27
  73. package/src/sources/Evm.res +40 -1
  74. package/src/sources/Evm.res.mjs +94 -84
  75. package/src/sources/Fuel.res +40 -1
  76. package/src/sources/Fuel.res.mjs +36 -26
  77. package/src/sources/HyperFuel.res +41 -120
  78. package/src/sources/HyperFuel.res.mjs +42 -80
  79. package/src/sources/HyperFuel.resi +1 -24
  80. package/src/sources/HyperFuelClient.res +16 -297
  81. package/src/sources/HyperFuelClient.res.mjs +5 -4
  82. package/src/sources/HyperFuelSource.res +33 -8
  83. package/src/sources/HyperFuelSource.res.mjs +56 -10
  84. package/src/sources/HyperSyncSource.res +7 -5
  85. package/src/sources/HyperSyncSource.res.mjs +3 -3
  86. package/src/sources/RpcSource.res +2 -2
  87. package/src/sources/RpcSource.res.mjs +1 -1
  88. package/src/sources/SourceManager.res +8 -18
  89. package/src/sources/SourceManager.res.mjs +8 -5
  90. package/src/sources/SourceManager.resi +4 -1
  91. package/src/sources/Svm.res +18 -1
  92. package/src/sources/Svm.res.mjs +30 -22
  93. package/src/sources/SvmHyperSyncSource.res +1 -1
  94. package/src/sources/SvmHyperSyncSource.res.mjs +1 -1
  95. package/src/tui/Tui.res +38 -36
  96. package/src/tui/Tui.res.mjs +51 -51
  97. package/src/ChainFetcher.res +0 -519
  98. package/src/ChainFetcher.res.mjs +0 -314
  99. package/src/ChainManager.res +0 -358
  100. package/src/ChainManager.res.mjs +0 -291
  101. package/src/Ctx.res +0 -6
  102. package/src/Ctx.res.mjs +0 -2
  103. package/src/GlobalState.res +0 -1056
  104. package/src/GlobalState.res.mjs +0 -1086
  105. package/src/GlobalStateManager.res +0 -57
  106. package/src/GlobalStateManager.res.mjs +0 -68
  107. package/src/GlobalStateManager.resi +0 -7
  108. package/src/Ports.res +0 -5
  109. package/src/Ports.res.mjs +0 -9
  110. package/src/adapters/MarkBatchProcessedAdapter.res +0 -5
  111. package/src/adapters/MarkBatchProcessedAdapter.res.mjs +0 -14
  112. package/src/sources/EnvioApiClient.res +0 -15
  113. package/src/sources/EnvioApiClient.res.mjs +0 -24
@@ -1,57 +0,0 @@
1
- type t = {
2
- mutable state: GlobalState.t,
3
- onError: exn => unit,
4
- reducers: GlobalState.reducers,
5
- }
6
-
7
- let make = (
8
- state: GlobalState.t,
9
- ~reducers: GlobalState.reducers,
10
- ~onError=e => {
11
- e->ErrorHandling.make(~msg="Indexer has failed with an unexpected error")->ErrorHandling.log
12
- NodeJs.process->NodeJs.exitWithCode(Failure)
13
- },
14
- ) => {
15
- state,
16
- onError,
17
- reducers,
18
- }
19
-
20
- let rec dispatchAction = (~stateId=0, self: t, action: GlobalState.action) => {
21
- try {
22
- let reducer = if stateId == self.state->GlobalState.getId {
23
- self.reducers.actionReducer
24
- } else {
25
- self.reducers.invalidatedActionReducer
26
- }
27
- let (nextState, nextTasks) = reducer(self.state, action)
28
- self.state = nextState
29
- nextTasks->Array.forEach(task => dispatchTask(self, task))
30
- } catch {
31
- | e => e->self.onError
32
- }
33
- }
34
- and dispatchTask = (self, task: GlobalState.task) => {
35
- let stateId = self.state->GlobalState.getId
36
- NodeJs.setImmediate(() => {
37
- if stateId !== self.state->GlobalState.getId {
38
- Logging.info("Invalidated task discarded")
39
- } else {
40
- try {
41
- self.reducers.taskReducer(self.state, task, ~dispatchAction=action =>
42
- dispatchAction(~stateId, self, action)
43
- )
44
- ->Promise.catch(e => {
45
- e->self.onError
46
- Promise.resolve()
47
- })
48
- ->ignore
49
- } catch {
50
- | e => e->self.onError
51
- }
52
- }
53
- })
54
- }
55
-
56
- let getState = self => self.state
57
- let setState = (self: t, state: GlobalState.t) => self.state = state
@@ -1,68 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Logging from "./Logging.res.mjs";
4
- import * as Process from "process";
5
- import * as GlobalState from "./GlobalState.res.mjs";
6
- import * as ErrorHandling from "./ErrorHandling.res.mjs";
7
- import * as Stdlib_Promise from "@rescript/runtime/lib/es6/Stdlib_Promise.js";
8
- import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
9
-
10
- function make(state, reducers, onErrorOpt) {
11
- let onError = onErrorOpt !== undefined ? onErrorOpt : e => {
12
- ErrorHandling.log(ErrorHandling.make(e, undefined, "Indexer has failed with an unexpected error"));
13
- Process.exit(1);
14
- };
15
- return {
16
- state: state,
17
- onError: onError,
18
- reducers: reducers
19
- };
20
- }
21
-
22
- function dispatchAction(stateIdOpt, self, action) {
23
- let stateId = stateIdOpt !== undefined ? stateIdOpt : 0;
24
- try {
25
- let reducer = stateId === GlobalState.getId(self.state) ? self.reducers.actionReducer : self.reducers.invalidatedActionReducer;
26
- let match = reducer(self.state, action);
27
- self.state = match[0];
28
- match[1].forEach(task => dispatchTask(self, task));
29
- return;
30
- } catch (raw_e) {
31
- return self.onError(Primitive_exceptions.internalToException(raw_e));
32
- }
33
- }
34
-
35
- function dispatchTask(self, task) {
36
- let stateId = GlobalState.getId(self.state);
37
- setImmediate(() => {
38
- if (stateId !== GlobalState.getId(self.state)) {
39
- return Logging.info("Invalidated task discarded");
40
- }
41
- try {
42
- Stdlib_Promise.$$catch(self.reducers.taskReducer(self.state, task, action => dispatchAction(stateId, self, action)), e => {
43
- self.onError(e);
44
- return Promise.resolve();
45
- });
46
- return;
47
- } catch (raw_e) {
48
- return self.onError(Primitive_exceptions.internalToException(raw_e));
49
- }
50
- });
51
- }
52
-
53
- function getState(self) {
54
- return self.state;
55
- }
56
-
57
- function setState(self, state) {
58
- self.state = state;
59
- }
60
-
61
- export {
62
- make,
63
- dispatchAction,
64
- dispatchTask,
65
- getState,
66
- setState,
67
- }
68
- /* Logging Not a pure module */
@@ -1,7 +0,0 @@
1
- type t
2
-
3
- let make: (GlobalState.t, ~reducers: GlobalState.reducers, ~onError: exn => unit=?) => t
4
- let dispatchAction: (~stateId: int=?, t, GlobalState.action) => unit
5
- let dispatchTask: (t, GlobalState.task) => unit
6
- let getState: t => GlobalState.t
7
- let setState: (t, GlobalState.t) => unit
package/src/Ports.res DELETED
@@ -1,5 +0,0 @@
1
- module MarkBatchProcessed = {
2
- type input = unit
3
- type output = unit
4
- type t = input => output
5
- }
package/src/Ports.res.mjs DELETED
@@ -1,9 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
-
4
- let MarkBatchProcessed = {};
5
-
6
- export {
7
- MarkBatchProcessed,
8
- }
9
- /* No side effect */
@@ -1,5 +0,0 @@
1
- let make = (~inMemoryStore: InMemoryStore.t): Ports.MarkBatchProcessed.t =>
2
- () => {
3
- inMemoryStore.isProcessing = false
4
- inMemoryStore.processedBatchesCount = inMemoryStore.processedBatchesCount + 1
5
- }
@@ -1,14 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
-
4
- function make(inMemoryStore) {
5
- return () => {
6
- inMemoryStore.isProcessing = false;
7
- inMemoryStore.processedBatchesCount = inMemoryStore.processedBatchesCount + 1 | 0;
8
- };
9
- }
10
-
11
- export {
12
- make,
13
- }
14
- /* No side effect */
@@ -1,15 +0,0 @@
1
- // Rest client for envio's own REST endpoints (e.g. the HyperSync/HyperFuel
2
- // /height poll). Tags requests with the hyperindex User-Agent so they're
3
- // attributable on the server, mirroring the SSE height stream and the Rust
4
- // data-query client which already set it.
5
- let make = (baseUrl: string): Rest.client => {
6
- let userAgent = `hyperindex/${Utils.EnvioPackage.value.version}`
7
- Rest.client(baseUrl, ~fetcher=(args: Rest.ApiFetcher.args) => {
8
- let headers = switch args.headers {
9
- | Some(headers) => headers
10
- | None => Dict.make()
11
- }
12
- headers->Dict.set("User-Agent", userAgent->(Utils.magic: string => unknown))
13
- Rest.ApiFetcher.default({...args, headers: Some(headers)})
14
- })
15
- }
@@ -1,24 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
- import * as Rest from "../vendored/Rest.res.mjs";
4
- import * as Utils from "../Utils.res.mjs";
5
-
6
- function make(baseUrl) {
7
- let userAgent = `hyperindex/` + Utils.EnvioPackage.value.version;
8
- return Rest.client(baseUrl, args => {
9
- let headers = args.headers;
10
- let headers$1 = headers !== undefined ? headers : ({});
11
- headers$1["User-Agent"] = userAgent;
12
- return Rest.ApiFetcher.$$default({
13
- body: args.body,
14
- headers: headers$1,
15
- method: args.method,
16
- path: args.path
17
- });
18
- });
19
- }
20
-
21
- export {
22
- make,
23
- }
24
- /* Rest Not a pure module */