envio 3.2.1 → 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 (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 +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 +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 +124 -62
  33. package/src/FetchState.res.mjs +159 -93
  34. package/src/InMemoryStore.res +36 -451
  35. package/src/InMemoryStore.res.mjs +20 -369
  36. package/src/IndexerLoop.res +44 -0
  37. package/src/IndexerLoop.res.mjs +46 -0
  38. package/src/IndexerState.res +544 -0
  39. package/src/IndexerState.res.mjs +547 -0
  40. package/src/IndexerState.resi +132 -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 +7 -8
  52. package/src/Prometheus.res.mjs +7 -4
  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 +8 -18
  82. package/src/sources/SourceManager.res.mjs +8 -5
  83. package/src/sources/SourceManager.resi +4 -1
  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,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 */