envio 3.0.0-alpha.21 → 3.0.0-alpha.22
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/bin.mjs +2 -48
- package/evm.schema.json +67 -0
- package/fuel.schema.json +67 -0
- package/index.d.ts +822 -38
- package/index.js +5 -3
- package/package.json +10 -8
- package/rescript.json +5 -9
- package/src/Address.res +4 -5
- package/src/Address.res.mjs +9 -12
- package/src/Api.res +15 -0
- package/src/Api.res.mjs +20 -0
- package/src/Batch.res +32 -34
- package/src/Batch.res.mjs +172 -187
- package/src/Bin.res +89 -0
- package/src/Bin.res.mjs +97 -0
- package/src/ChainFetcher.res +33 -57
- package/src/ChainFetcher.res.mjs +197 -227
- package/src/ChainManager.res +6 -14
- package/src/ChainManager.res.mjs +74 -85
- package/src/ChainMap.res +14 -16
- package/src/ChainMap.res.mjs +38 -38
- package/src/Config.res +193 -135
- package/src/Config.res.mjs +566 -592
- package/src/Core.res +182 -0
- package/src/Core.res.mjs +207 -0
- package/src/Ecosystem.res +25 -4
- package/src/Ecosystem.res.mjs +12 -13
- package/src/Env.res +20 -13
- package/src/Env.res.mjs +124 -113
- package/src/EnvSafe.res +269 -0
- package/src/EnvSafe.res.mjs +296 -0
- package/src/EnvSafe.resi +18 -0
- package/src/Envio.res +37 -26
- package/src/Envio.res.mjs +59 -60
- package/src/ErrorHandling.res +2 -2
- package/src/ErrorHandling.res.mjs +15 -15
- package/src/EventConfigBuilder.res +219 -81
- package/src/EventConfigBuilder.res.mjs +259 -202
- package/src/EventProcessing.res +27 -38
- package/src/EventProcessing.res.mjs +165 -183
- package/src/EventUtils.res +11 -11
- package/src/EventUtils.res.mjs +21 -22
- package/src/EvmTypes.res +0 -1
- package/src/EvmTypes.res.mjs +5 -5
- package/src/FetchState.res +360 -256
- package/src/FetchState.res.mjs +958 -914
- package/src/GlobalState.res +365 -351
- package/src/GlobalState.res.mjs +958 -992
- package/src/GlobalStateManager.res +1 -2
- package/src/GlobalStateManager.res.mjs +36 -44
- package/src/HandlerLoader.res +107 -23
- package/src/HandlerLoader.res.mjs +128 -38
- package/src/HandlerRegister.res +127 -103
- package/src/HandlerRegister.res.mjs +164 -164
- package/src/HandlerRegister.resi +12 -4
- package/src/Hasura.res +35 -22
- package/src/Hasura.res.mjs +158 -167
- package/src/InMemoryStore.res +20 -27
- package/src/InMemoryStore.res.mjs +64 -80
- package/src/InMemoryTable.res +34 -39
- package/src/InMemoryTable.res.mjs +165 -170
- package/src/Internal.res +52 -33
- package/src/Internal.res.mjs +84 -81
- package/src/LazyLoader.res.mjs +55 -61
- package/src/LoadLayer.res +77 -78
- package/src/LoadLayer.res.mjs +160 -189
- package/src/LoadManager.res +16 -21
- package/src/LoadManager.res.mjs +79 -84
- package/src/LogSelection.res +236 -68
- package/src/LogSelection.res.mjs +211 -141
- package/src/Logging.res +13 -9
- package/src/Logging.res.mjs +130 -143
- package/src/Main.res +428 -51
- package/src/Main.res.mjs +528 -271
- package/src/Persistence.res +77 -84
- package/src/Persistence.res.mjs +131 -132
- package/src/PgStorage.res +291 -167
- package/src/PgStorage.res.mjs +797 -817
- package/src/Prometheus.res +50 -58
- package/src/Prometheus.res.mjs +345 -373
- package/src/ReorgDetection.res +22 -24
- package/src/ReorgDetection.res.mjs +100 -106
- package/src/SafeCheckpointTracking.res +7 -7
- package/src/SafeCheckpointTracking.res.mjs +40 -43
- package/src/SimulateItems.res +41 -49
- package/src/SimulateItems.res.mjs +257 -272
- package/src/Sink.res +2 -2
- package/src/Sink.res.mjs +22 -26
- package/src/TableIndices.res +1 -2
- package/src/TableIndices.res.mjs +42 -48
- package/src/TestIndexer.res +196 -189
- package/src/TestIndexer.res.mjs +536 -536
- package/src/TestIndexerProxyStorage.res +15 -16
- package/src/TestIndexerProxyStorage.res.mjs +98 -122
- package/src/TestIndexerWorker.res +4 -0
- package/src/TestIndexerWorker.res.mjs +7 -0
- package/src/Throttler.res +3 -3
- package/src/Throttler.res.mjs +23 -24
- package/src/Time.res +1 -1
- package/src/Time.res.mjs +18 -21
- package/src/TopicFilter.res +3 -3
- package/src/TopicFilter.res.mjs +29 -30
- package/src/UserContext.res +93 -54
- package/src/UserContext.res.mjs +197 -182
- package/src/Utils.res +141 -86
- package/src/Utils.res.mjs +334 -295
- package/src/bindings/BigDecimal.res +0 -2
- package/src/bindings/BigDecimal.res.mjs +19 -23
- package/src/bindings/ClickHouse.res +28 -27
- package/src/bindings/ClickHouse.res.mjs +243 -240
- package/src/bindings/DateFns.res +11 -11
- package/src/bindings/DateFns.res.mjs +7 -7
- package/src/bindings/EventSource.res.mjs +2 -2
- package/src/bindings/Express.res +2 -5
- package/src/bindings/Hrtime.res +2 -2
- package/src/bindings/Hrtime.res.mjs +30 -32
- package/src/bindings/Lodash.res.mjs +1 -1
- package/src/bindings/NodeJs.res +14 -9
- package/src/bindings/NodeJs.res.mjs +20 -20
- package/src/bindings/Pino.res +8 -10
- package/src/bindings/Pino.res.mjs +40 -43
- package/src/bindings/Postgres.res +2 -5
- package/src/bindings/Postgres.res.mjs +9 -9
- package/src/bindings/PromClient.res +17 -2
- package/src/bindings/PromClient.res.mjs +30 -7
- package/src/bindings/SDSL.res.mjs +2 -2
- package/src/bindings/Viem.res +4 -4
- package/src/bindings/Viem.res.mjs +20 -22
- package/src/bindings/Vitest.res +1 -1
- package/src/bindings/Vitest.res.mjs +2 -2
- package/src/bindings/WebSocket.res +1 -1
- package/src/db/EntityHistory.res +9 -3
- package/src/db/EntityHistory.res.mjs +84 -59
- package/src/db/InternalTable.res +62 -60
- package/src/db/InternalTable.res.mjs +271 -203
- package/src/db/Schema.res +1 -2
- package/src/db/Schema.res.mjs +28 -32
- package/src/db/Table.res +28 -27
- package/src/db/Table.res.mjs +276 -292
- package/src/sources/EventRouter.res +21 -16
- package/src/sources/EventRouter.res.mjs +55 -57
- package/src/sources/Evm.res +17 -1
- package/src/sources/Evm.res.mjs +16 -8
- package/src/sources/EvmChain.res +15 -17
- package/src/sources/EvmChain.res.mjs +40 -42
- package/src/sources/Fuel.res +14 -1
- package/src/sources/Fuel.res.mjs +16 -8
- package/src/sources/FuelSDK.res +1 -1
- package/src/sources/FuelSDK.res.mjs +6 -8
- package/src/sources/HyperFuel.res +8 -10
- package/src/sources/HyperFuel.res.mjs +113 -123
- package/src/sources/HyperFuelClient.res.mjs +6 -7
- package/src/sources/HyperFuelSource.res +19 -20
- package/src/sources/HyperFuelSource.res.mjs +339 -356
- package/src/sources/HyperSync.res +11 -13
- package/src/sources/HyperSync.res.mjs +206 -220
- package/src/sources/HyperSyncClient.res +5 -7
- package/src/sources/HyperSyncClient.res.mjs +70 -75
- package/src/sources/HyperSyncHeightStream.res +8 -9
- package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
- package/src/sources/HyperSyncJsonApi.res +18 -15
- package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
- package/src/sources/HyperSyncSource.res +17 -21
- package/src/sources/HyperSyncSource.res.mjs +268 -290
- package/src/sources/Rpc.res +5 -5
- package/src/sources/Rpc.res.mjs +168 -192
- package/src/sources/RpcSource.res +166 -167
- package/src/sources/RpcSource.res.mjs +972 -1046
- package/src/sources/RpcWebSocketHeightStream.res +10 -11
- package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
- package/src/sources/SimulateSource.res +1 -1
- package/src/sources/SimulateSource.res.mjs +35 -38
- package/src/sources/Source.res +1 -1
- package/src/sources/Source.res.mjs +3 -3
- package/src/sources/SourceManager.res +39 -20
- package/src/sources/SourceManager.res.mjs +340 -371
- package/src/sources/SourceManager.resi +2 -1
- package/src/sources/Svm.res +12 -5
- package/src/sources/Svm.res.mjs +44 -41
- package/src/tui/Tui.res +23 -12
- package/src/tui/Tui.res.mjs +292 -290
- package/src/tui/bindings/Ink.res +2 -4
- package/src/tui/bindings/Ink.res.mjs +35 -41
- package/src/tui/components/BufferedProgressBar.res +7 -7
- package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
- package/src/tui/components/CustomHooks.res +1 -2
- package/src/tui/components/CustomHooks.res.mjs +102 -122
- package/src/tui/components/Messages.res +1 -2
- package/src/tui/components/Messages.res.mjs +38 -42
- package/src/tui/components/SyncETA.res +10 -11
- package/src/tui/components/SyncETA.res.mjs +178 -196
- package/src/tui/components/TuiData.res +1 -1
- package/src/tui/components/TuiData.res.mjs +7 -6
- package/src/vendored/Rest.res +52 -66
- package/src/vendored/Rest.res.mjs +324 -364
- package/svm.schema.json +67 -0
- package/src/Address.gen.ts +0 -8
- package/src/Config.gen.ts +0 -19
- package/src/Envio.gen.ts +0 -55
- package/src/EvmTypes.gen.ts +0 -6
- package/src/InMemoryStore.gen.ts +0 -6
- package/src/Internal.gen.ts +0 -64
- package/src/PgStorage.gen.ts +0 -10
- package/src/PgStorage.res.d.mts +0 -5
- package/src/Types.ts +0 -56
- package/src/bindings/BigDecimal.gen.ts +0 -14
- package/src/bindings/BigDecimal.res.d.mts +0 -5
- package/src/bindings/BigInt.gen.ts +0 -10
- package/src/bindings/BigInt.res +0 -70
- package/src/bindings/BigInt.res.d.mts +0 -5
- package/src/bindings/BigInt.res.mjs +0 -154
- package/src/bindings/Ethers.res.d.mts +0 -5
- package/src/bindings/Pino.gen.ts +0 -17
- package/src/bindings/Postgres.gen.ts +0 -8
- package/src/bindings/Postgres.res.d.mts +0 -5
- package/src/bindings/Promise.res +0 -67
- package/src/bindings/Promise.res.mjs +0 -26
- package/src/db/InternalTable.gen.ts +0 -36
- package/src/sources/HyperSyncClient.gen.ts +0 -19
package/src/LogSelection.res.mjs
CHANGED
|
@@ -1,68 +1,67 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
3
|
import * as Utils from "./Utils.res.mjs";
|
|
4
|
-
import * as
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
8
|
-
import * as
|
|
4
|
+
import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
|
|
5
|
+
import * as Belt_Option from "@rescript/runtime/lib/es6/Belt_Option.js";
|
|
6
|
+
import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
|
|
7
|
+
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
8
|
+
import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
|
|
9
|
+
import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
let MissingRequiredTopic0 = /* @__PURE__ */Primitive_exceptions.create("LogSelection.MissingRequiredTopic0");
|
|
11
12
|
|
|
12
13
|
function makeTopicSelection(topic0, topic1Opt, topic2Opt, topic3Opt) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
let topic1 = topic1Opt !== undefined ? topic1Opt : [];
|
|
15
|
+
let topic2 = topic2Opt !== undefined ? topic2Opt : [];
|
|
16
|
+
let topic3 = topic3Opt !== undefined ? topic3Opt : [];
|
|
16
17
|
if (Utils.$$Array.isEmpty(topic0)) {
|
|
17
18
|
return {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
TAG: "Error",
|
|
20
|
+
_0: {
|
|
21
|
+
RE_EXN_ID: MissingRequiredTopic0
|
|
22
|
+
}
|
|
23
|
+
};
|
|
23
24
|
} else {
|
|
24
25
|
return {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
TAG: "Ok",
|
|
27
|
+
_0: {
|
|
28
|
+
topic0: topic0,
|
|
29
|
+
topic1: topic1,
|
|
30
|
+
topic2: topic2,
|
|
31
|
+
topic3: topic3
|
|
32
|
+
}
|
|
33
|
+
};
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
function hasFilters(param) {
|
|
37
|
-
return Belt_Option.isSome(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return !Utils.$$Array.isEmpty(topic);
|
|
43
|
-
})));
|
|
38
|
+
return Belt_Option.isSome([
|
|
39
|
+
param.topic1,
|
|
40
|
+
param.topic2,
|
|
41
|
+
param.topic3
|
|
42
|
+
].find(topic => !Utils.$$Array.isEmpty(topic)));
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
function compressTopicSelections(topicSelections) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Belt_Array.forEach(topicSelections,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
let topic0sOfSelectionsWithoutFilters = [];
|
|
47
|
+
let selectionsWithFilters = [];
|
|
48
|
+
Belt_Array.forEach(topicSelections, selection => {
|
|
49
|
+
if (hasFilters(selection)) {
|
|
50
|
+
selectionsWithFilters.push(selection);
|
|
51
|
+
return;
|
|
52
|
+
} else {
|
|
53
|
+
return Belt_Array.forEach(selection.topic0, topic0 => {
|
|
54
|
+
topic0sOfSelectionsWithoutFilters.push(topic0);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
59
58
|
if (topic0sOfSelectionsWithoutFilters.length === 0) {
|
|
60
59
|
return selectionsWithFilters;
|
|
61
60
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
let selectionWithoutFilters_topic1 = [];
|
|
62
|
+
let selectionWithoutFilters_topic2 = [];
|
|
63
|
+
let selectionWithoutFilters_topic3 = [];
|
|
64
|
+
let selectionWithoutFilters = {
|
|
66
65
|
topic0: topic0sOfSelectionsWithoutFilters,
|
|
67
66
|
topic1: selectionWithoutFilters_topic1,
|
|
68
67
|
topic2: selectionWithoutFilters_topic2,
|
|
@@ -72,139 +71,210 @@ function compressTopicSelections(topicSelections) {
|
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
function make(addresses, topicSelections) {
|
|
75
|
-
|
|
74
|
+
let topicSelections$1 = compressTopicSelections(topicSelections);
|
|
76
75
|
return {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
addresses: addresses,
|
|
77
|
+
topicSelections: topicSelections$1
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
let eventBlockRangeSchema = S$RescriptSchema.strict(S$RescriptSchema.object(s => ({
|
|
82
|
+
_gte: s.f("_gte", S$RescriptSchema.option(S$RescriptSchema.int))
|
|
83
|
+
})));
|
|
84
|
+
|
|
85
|
+
function extractStartBlock(where, onEventBlockFilterSchema, contractName) {
|
|
86
|
+
if (typeof where === "boolean") {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
let inner = S$RescriptSchema.parseOrThrow(where, onEventBlockFilterSchema);
|
|
91
|
+
if (inner !== undefined) {
|
|
92
|
+
return S$RescriptSchema.parseOrThrow(Primitive_option.valFromOption(inner), eventBlockRangeSchema)._gte;
|
|
93
|
+
} else {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
} catch (raw_exn) {
|
|
97
|
+
let exn = Primitive_exceptions.internalToException(raw_exn);
|
|
98
|
+
if (exn.RE_EXN_ID === S$RescriptSchema.Raised) {
|
|
99
|
+
return Stdlib_JsError.throwWithMessage(`Invalid where configuration for ` + contractName + `. \`block\` filter is invalid: ` + Utils.prettifyExn(exn._1) + `. Only \`_gte\` is supported on event filters — use \`indexer.onBlock\` for \`_lte\` or \`_every\`.`);
|
|
100
|
+
}
|
|
101
|
+
throw exn;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function makeChainArg(contractName, chainId, addresses) {
|
|
106
|
+
let chainObj = {};
|
|
107
|
+
chainObj["id"] = chainId;
|
|
108
|
+
chainObj[contractName] = {
|
|
109
|
+
addresses: addresses
|
|
110
|
+
};
|
|
111
|
+
return chainObj;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function makeDetectionChainArg(contractName, chainId, getAddresses) {
|
|
115
|
+
let contractObj = Object.create(null);
|
|
116
|
+
Object.defineProperty(contractObj, "addresses", {
|
|
117
|
+
enumerable: true,
|
|
118
|
+
get: getAddresses
|
|
119
|
+
});
|
|
120
|
+
let chainObj = {};
|
|
121
|
+
chainObj["id"] = chainId;
|
|
122
|
+
chainObj[contractName] = contractObj;
|
|
123
|
+
return chainObj;
|
|
80
124
|
}
|
|
81
125
|
|
|
82
|
-
|
|
126
|
+
let emptyTopics = [];
|
|
83
127
|
|
|
84
128
|
function noopGetter(param) {
|
|
85
129
|
return emptyTopics;
|
|
86
130
|
}
|
|
87
131
|
|
|
88
|
-
function parseEventFiltersOrThrow(eventFilters, sighash, params, topic1Opt, topic2Opt, topic3Opt) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
132
|
+
function parseEventFiltersOrThrow(eventFilters, sighash, params, contractName, probeChainId, onEventBlockFilterSchema, topic1Opt, topic2Opt, topic3Opt) {
|
|
133
|
+
let topic1 = topic1Opt !== undefined ? topic1Opt : noopGetter;
|
|
134
|
+
let topic2 = topic2Opt !== undefined ? topic2Opt : noopGetter;
|
|
135
|
+
let topic3 = topic3Opt !== undefined ? topic3Opt : noopGetter;
|
|
136
|
+
let filterByAddresses = {
|
|
93
137
|
contents: false
|
|
94
138
|
};
|
|
95
|
-
|
|
96
|
-
|
|
139
|
+
let startBlock;
|
|
140
|
+
let topic0 = [sighash];
|
|
141
|
+
let $$default = {
|
|
97
142
|
topic0: topic0,
|
|
98
143
|
topic1: emptyTopics,
|
|
99
144
|
topic2: emptyTopics,
|
|
100
145
|
topic3: emptyTopics
|
|
101
146
|
};
|
|
102
|
-
|
|
103
|
-
|
|
147
|
+
let paramsRecordToTopicSelection = paramsFilter => {
|
|
148
|
+
let filterKeys = Object.keys(paramsFilter);
|
|
149
|
+
if (filterKeys.length !== 0) {
|
|
150
|
+
filterKeys.forEach(key => {
|
|
151
|
+
if (!params.includes(key)) {
|
|
152
|
+
return Stdlib_JsError.throwWithMessage(`Invalid where configuration. The event doesn't have an indexed parameter "` + key + `" and can't use it for filtering`);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
return {
|
|
156
|
+
topic0: topic0,
|
|
157
|
+
topic1: topic1(paramsFilter),
|
|
158
|
+
topic2: topic2(paramsFilter),
|
|
159
|
+
topic3: topic3(paramsFilter)
|
|
160
|
+
};
|
|
161
|
+
} else {
|
|
162
|
+
return $$default;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
let acceptedWhereKeys = [
|
|
166
|
+
"params",
|
|
167
|
+
"block"
|
|
168
|
+
];
|
|
169
|
+
let parse = where => {
|
|
170
|
+
if (where === true) {
|
|
104
171
|
return [$$default];
|
|
105
172
|
}
|
|
106
|
-
if (
|
|
173
|
+
if (where === false) {
|
|
107
174
|
return [];
|
|
108
175
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
176
|
+
if (typeof where !== "object" || where === null || Array.isArray(where)) {
|
|
177
|
+
return Stdlib_JsError.throwWithMessage("Invalid where configuration. Expected an object");
|
|
178
|
+
}
|
|
179
|
+
Object.keys(where).forEach(key => {
|
|
180
|
+
if (!acceptedWhereKeys.includes(key)) {
|
|
181
|
+
return Stdlib_JsError.throwWithMessage(`Invalid where configuration. Unknown field "` + key + `". Indexed parameter filters must be nested under \`params\` and block-range filters under \`block\``);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
let match = where["params"];
|
|
185
|
+
if (match === undefined) {
|
|
186
|
+
return [$$default];
|
|
187
|
+
}
|
|
188
|
+
if (Array.isArray(match)) {
|
|
189
|
+
if (match.length !== 0) {
|
|
190
|
+
return match.map(item => {
|
|
191
|
+
if (typeof item === "object" && item !== null && !Array.isArray(item)) {
|
|
192
|
+
return paramsRecordToTopicSelection(item);
|
|
193
|
+
} else {
|
|
194
|
+
return Stdlib_JsError.throwWithMessage("Invalid where configuration. Each entry in `params` must be an object");
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
} else {
|
|
198
|
+
return [$$default];
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (match === null) {
|
|
202
|
+
return Stdlib_JsError.throwWithMessage("Invalid where configuration. Expected `params` to be an object or an array of objects");
|
|
203
|
+
}
|
|
204
|
+
switch (typeof match) {
|
|
205
|
+
case "object" :
|
|
206
|
+
return [paramsRecordToTopicSelection(match)];
|
|
207
|
+
default:
|
|
208
|
+
return Stdlib_JsError.throwWithMessage("Invalid where configuration. Expected `params` to be an object or an array of objects");
|
|
209
|
+
}
|
|
140
210
|
};
|
|
141
|
-
|
|
211
|
+
let getEventFiltersOrThrow;
|
|
142
212
|
if (eventFilters !== undefined) {
|
|
143
213
|
if (typeof eventFilters === "function") {
|
|
214
|
+
let probedResult;
|
|
144
215
|
try {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
eventFilters(args);
|
|
216
|
+
let chain = makeDetectionChainArg(contractName, probeChainId, () => {
|
|
217
|
+
filterByAddresses.contents = true;
|
|
218
|
+
return [];
|
|
219
|
+
});
|
|
220
|
+
probedResult = eventFilters({
|
|
221
|
+
chain: chain
|
|
222
|
+
});
|
|
223
|
+
} catch (exn) {
|
|
224
|
+
probedResult = undefined;
|
|
155
225
|
}
|
|
156
|
-
|
|
157
|
-
|
|
226
|
+
if (probedResult !== undefined) {
|
|
227
|
+
startBlock = extractStartBlock(probedResult, onEventBlockFilterSchema, contractName);
|
|
158
228
|
}
|
|
159
|
-
getEventFiltersOrThrow = filterByAddresses.contents ?
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
};
|
|
177
|
-
});
|
|
229
|
+
getEventFiltersOrThrow = filterByAddresses.contents ? chain => ({
|
|
230
|
+
TAG: "Dynamic",
|
|
231
|
+
_0: addresses => {
|
|
232
|
+
let chainArg = makeChainArg(contractName, chain, addresses);
|
|
233
|
+
return parse(eventFilters({
|
|
234
|
+
chain: chainArg
|
|
235
|
+
}));
|
|
236
|
+
}
|
|
237
|
+
}) : chain => {
|
|
238
|
+
let chainArg = makeDetectionChainArg(contractName, chain, () => Stdlib_JsError.throwWithMessage(`Invalid where configuration. Event callback for contract "` + contractName + `" read \`chain.` + contractName + `.addresses\` at runtime but the probe didn't detect the access on chainId ` + chain.toString() + `. Move the \`chain.` + contractName + `.addresses\` read above any \`chain.id\` branching so the probe picks up the dependency and switches to the dynamic fetch path.`));
|
|
239
|
+
return {
|
|
240
|
+
TAG: "Static",
|
|
241
|
+
_0: parse(eventFilters({
|
|
242
|
+
chain: chainArg
|
|
243
|
+
}))
|
|
244
|
+
};
|
|
245
|
+
};
|
|
178
246
|
} else {
|
|
179
|
-
|
|
247
|
+
startBlock = extractStartBlock(eventFilters, onEventBlockFilterSchema, contractName);
|
|
248
|
+
let $$static = {
|
|
180
249
|
TAG: "Static",
|
|
181
250
|
_0: parse(eventFilters)
|
|
182
251
|
};
|
|
183
|
-
getEventFiltersOrThrow =
|
|
184
|
-
return $$static;
|
|
185
|
-
});
|
|
252
|
+
getEventFiltersOrThrow = param => $$static;
|
|
186
253
|
}
|
|
187
254
|
} else {
|
|
188
|
-
|
|
255
|
+
let $$static$1 = {
|
|
189
256
|
TAG: "Static",
|
|
190
257
|
_0: [$$default]
|
|
191
258
|
};
|
|
192
|
-
getEventFiltersOrThrow =
|
|
193
|
-
return $$static$1;
|
|
194
|
-
});
|
|
259
|
+
getEventFiltersOrThrow = param => $$static$1;
|
|
195
260
|
}
|
|
196
261
|
return {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
262
|
+
getEventFiltersOrThrow: getEventFiltersOrThrow,
|
|
263
|
+
filterByAddresses: filterByAddresses.contents,
|
|
264
|
+
startBlock: startBlock
|
|
265
|
+
};
|
|
200
266
|
}
|
|
201
267
|
|
|
202
268
|
export {
|
|
203
|
-
MissingRequiredTopic0
|
|
204
|
-
makeTopicSelection
|
|
205
|
-
hasFilters
|
|
206
|
-
compressTopicSelections
|
|
207
|
-
make
|
|
208
|
-
|
|
269
|
+
MissingRequiredTopic0,
|
|
270
|
+
makeTopicSelection,
|
|
271
|
+
hasFilters,
|
|
272
|
+
compressTopicSelections,
|
|
273
|
+
make,
|
|
274
|
+
eventBlockRangeSchema,
|
|
275
|
+
extractStartBlock,
|
|
276
|
+
makeChainArg,
|
|
277
|
+
makeDetectionChainArg,
|
|
278
|
+
parseEventFiltersOrThrow,
|
|
209
279
|
}
|
|
210
|
-
/*
|
|
280
|
+
/* eventBlockRangeSchema Not a pure module */
|
package/src/Logging.res
CHANGED
|
@@ -22,7 +22,7 @@ let logLevels = [
|
|
|
22
22
|
("warn", 40),
|
|
23
23
|
("error", 50),
|
|
24
24
|
("fatal", 60),
|
|
25
|
-
]->
|
|
25
|
+
]->Dict.fromArray
|
|
26
26
|
|
|
27
27
|
%%private(let logger = ref(None))
|
|
28
28
|
|
|
@@ -39,11 +39,15 @@ let makeLogger = (~logStrategy, ~logFilePath, ~defaultFileLogLevel, ~userLogLeve
|
|
|
39
39
|
level: defaultFileLogLevel,
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
let makeMultiStreamLogger =
|
|
43
|
-
|
|
42
|
+
let makeMultiStreamLogger = MultiStreamLogger.make(
|
|
43
|
+
~userLogLevel,
|
|
44
|
+
~defaultFileLogLevel,
|
|
45
|
+
~customLevels=logLevels,
|
|
46
|
+
...
|
|
47
|
+
)
|
|
44
48
|
|
|
45
49
|
// Empty base disables pid and hostname in logs
|
|
46
|
-
let base:
|
|
50
|
+
let base: JSON.t = %raw("{}")
|
|
47
51
|
|
|
48
52
|
switch logStrategy {
|
|
49
53
|
| EcsFile =>
|
|
@@ -86,7 +90,7 @@ let setLogger = l => {
|
|
|
86
90
|
let getLogger = () => {
|
|
87
91
|
switch logger.contents {
|
|
88
92
|
| Some(logger) => logger
|
|
89
|
-
| None =>
|
|
93
|
+
| None => JsError.throwWithMessage("Unreachable code. Logger not initialized")
|
|
90
94
|
}
|
|
91
95
|
}
|
|
92
96
|
|
|
@@ -155,7 +159,7 @@ let getItemLogger = {
|
|
|
155
159
|
let cacheKey = "_logger"
|
|
156
160
|
(item: Internal.item) => {
|
|
157
161
|
switch item
|
|
158
|
-
->(Utils.magic: Internal.item =>
|
|
162
|
+
->(Utils.magic: Internal.item => dict<Pino.t>)
|
|
159
163
|
->Utils.Dict.dangerouslyGetNonOption(cacheKey) {
|
|
160
164
|
| Some(l) => l
|
|
161
165
|
| None => {
|
|
@@ -178,7 +182,7 @@ let getItemLogger = {
|
|
|
178
182
|
}->createChildParams
|
|
179
183
|
},
|
|
180
184
|
)
|
|
181
|
-
item->(Utils.magic: Internal.item =>
|
|
185
|
+
item->(Utils.magic: Internal.item => dict<Pino.t>)->Dict.set(cacheKey, l)
|
|
182
186
|
l
|
|
183
187
|
}
|
|
184
188
|
}
|
|
@@ -190,8 +194,8 @@ let logForItem = (item, level: Pino.logLevel, message: string, ~params=?) => {
|
|
|
190
194
|
(
|
|
191
195
|
item
|
|
192
196
|
->getItemLogger
|
|
193
|
-
->(Utils.magic: Pino.t =>
|
|
194
|
-
->
|
|
197
|
+
->(Utils.magic: Pino.t => dict<(option<'a>, string) => unit>)
|
|
198
|
+
->Dict.getUnsafe((level :> string))
|
|
195
199
|
)(params, message)
|
|
196
200
|
}
|
|
197
201
|
|