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.
- package/package.json +6 -7
- package/src/Batch.res +12 -15
- package/src/Batch.res.mjs +4 -5
- package/src/BatchProcessing.res +199 -0
- package/src/BatchProcessing.res.mjs +125 -0
- package/src/ChainFetching.res +375 -0
- package/src/ChainFetching.res.mjs +206 -0
- package/src/ChainMetadata.res +27 -0
- package/src/ChainMetadata.res.mjs +27 -0
- package/src/ChainState.res +618 -0
- package/src/ChainState.res.mjs +461 -0
- package/src/ChainState.resi +85 -0
- package/src/Config.res +13 -4
- package/src/Config.res.mjs +8 -3
- package/src/ContractRegisterContext.res +106 -0
- package/src/ContractRegisterContext.res.mjs +76 -0
- package/src/Core.res +3 -0
- package/src/CrossChainState.res +269 -0
- package/src/CrossChainState.res.mjs +197 -0
- package/src/CrossChainState.resi +47 -0
- package/src/Ecosystem.res +58 -0
- package/src/Ecosystem.res.mjs +43 -1
- package/src/Env.res +7 -2
- package/src/Env.res.mjs +5 -2
- package/src/EventConfigBuilder.res +2 -2
- package/src/EventProcessing.res +60 -46
- package/src/EventProcessing.res.mjs +33 -32
- package/src/EventUtils.res +0 -4
- package/src/EventUtils.res.mjs +0 -4
- package/src/ExitOnCaughtUp.res +10 -0
- package/src/ExitOnCaughtUp.res.mjs +22 -0
- package/src/FetchState.res +124 -62
- package/src/FetchState.res.mjs +159 -93
- package/src/InMemoryStore.res +36 -451
- package/src/InMemoryStore.res.mjs +20 -369
- package/src/IndexerLoop.res +44 -0
- package/src/IndexerLoop.res.mjs +46 -0
- package/src/IndexerState.res +544 -0
- package/src/IndexerState.res.mjs +547 -0
- package/src/IndexerState.resi +132 -0
- package/src/Internal.res +29 -8
- package/src/LoadLayer.res +20 -18
- package/src/LoadLayer.res.mjs +14 -12
- package/src/LoadLayer.resi +6 -3
- package/src/Logging.res +11 -44
- package/src/Logging.res.mjs +10 -42
- package/src/Main.res +54 -79
- package/src/Main.res.mjs +44 -56
- package/src/PgStorage.res +8 -71
- package/src/PgStorage.res.mjs +3 -47
- package/src/Prometheus.res +7 -8
- package/src/Prometheus.res.mjs +7 -4
- package/src/PruneStaleHistory.res +45 -0
- package/src/PruneStaleHistory.res.mjs +46 -0
- package/src/RawEvent.res +73 -0
- package/src/RawEvent.res.mjs +51 -0
- package/src/Rollback.res +204 -0
- package/src/Rollback.res.mjs +118 -0
- package/src/SimulateItems.res +12 -10
- package/src/SimulateItems.res.mjs +1 -1
- package/src/UserContext.res +26 -114
- package/src/UserContext.res.mjs +15 -78
- package/src/Writing.res +242 -0
- package/src/Writing.res.mjs +215 -0
- package/src/db/InternalTable.res +14 -27
- package/src/sources/Evm.res +40 -1
- package/src/sources/Evm.res.mjs +94 -84
- package/src/sources/Fuel.res +40 -1
- package/src/sources/Fuel.res.mjs +36 -26
- package/src/sources/HyperFuel.res +41 -120
- package/src/sources/HyperFuel.res.mjs +42 -80
- package/src/sources/HyperFuel.resi +1 -24
- package/src/sources/HyperFuelClient.res +16 -297
- package/src/sources/HyperFuelClient.res.mjs +5 -4
- package/src/sources/HyperFuelSource.res +33 -8
- package/src/sources/HyperFuelSource.res.mjs +56 -10
- package/src/sources/HyperSyncSource.res +5 -3
- package/src/sources/HyperSyncSource.res.mjs +1 -1
- package/src/sources/RpcSource.res +2 -2
- package/src/sources/RpcSource.res.mjs +1 -1
- package/src/sources/SourceManager.res +8 -18
- package/src/sources/SourceManager.res.mjs +8 -5
- package/src/sources/SourceManager.resi +4 -1
- package/src/sources/Svm.res +18 -1
- package/src/sources/Svm.res.mjs +30 -22
- package/src/sources/SvmHyperSyncSource.res +1 -1
- package/src/sources/SvmHyperSyncSource.res.mjs +1 -1
- package/src/tui/Tui.res +38 -36
- package/src/tui/Tui.res.mjs +51 -51
- package/src/ChainFetcher.res +0 -519
- package/src/ChainFetcher.res.mjs +0 -314
- package/src/ChainManager.res +0 -358
- package/src/ChainManager.res.mjs +0 -291
- package/src/Ctx.res +0 -6
- package/src/Ctx.res.mjs +0 -2
- package/src/GlobalState.res +0 -1056
- package/src/GlobalState.res.mjs +0 -1086
- package/src/GlobalStateManager.res +0 -57
- package/src/GlobalStateManager.res.mjs +0 -68
- package/src/GlobalStateManager.resi +0 -7
- package/src/Ports.res +0 -5
- package/src/Ports.res.mjs +0 -9
- package/src/adapters/MarkBatchProcessedAdapter.res +0 -5
- package/src/adapters/MarkBatchProcessedAdapter.res.mjs +0 -14
- package/src/sources/EnvioApiClient.res +0 -15
- 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
package/src/Ports.res.mjs
DELETED
|
@@ -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 */
|