envio 2.21.5 → 2.22.1
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/index.js +2 -2
- package/package.json +11 -8
- package/rescript.json +1 -1
- package/src/Address.res.js +30 -0
- package/src/ChainMap.res.js +77 -0
- package/src/Envio.res +2 -0
- package/src/Envio.res.js +16 -0
- package/src/ErrorHandling.res +0 -26
- package/src/ErrorHandling.res.js +56 -0
- package/src/EventUtils.res.js +75 -0
- package/src/EvmTypes.res.js +16 -0
- package/src/FetchState.res.js +969 -0
- package/src/Hasura.res +297 -0
- package/src/Hasura.res.js +245 -0
- package/src/Internal.res +26 -0
- package/src/Internal.res.js +50 -0
- package/src/LazyLoader.res.js +117 -0
- package/src/LoadManager.res.js +124 -0
- package/src/LogSelection.res.js +203 -0
- package/src/Logging.res +31 -31
- package/src/Logging.res.js +247 -0
- package/src/Persistence.res +111 -0
- package/src/Persistence.res.js +90 -0
- package/src/PgStorage.res +165 -0
- package/src/PgStorage.res.js +125 -0
- package/src/Prometheus.res +75 -40
- package/src/Prometheus.res.js +750 -0
- package/src/ReorgDetection.res.js +223 -0
- package/src/Throttler.res.js +60 -0
- package/src/Time.res.js +41 -0
- package/src/TopicFilter.res.js +86 -0
- package/src/Utils.res.js +527 -0
- package/src/bindings/BigDecimal.gen.ts +1 -1
- package/src/bindings/BigDecimal.res.js +41 -0
- package/src/bindings/BigInt.res.js +138 -0
- package/src/bindings/Ethers.gen.ts +1 -1
- package/src/bindings/Ethers.res.js +109 -0
- package/src/bindings/Express.res.js +2 -0
- package/src/bindings/Hrtime.res.js +66 -0
- package/src/bindings/NodeJs.res.js +29 -0
- package/src/bindings/Pino.res.js +95 -0
- package/src/bindings/Postgres.res.js +16 -0
- package/src/bindings/PromClient.res.js +17 -0
- package/src/bindings/Promise.res +5 -0
- package/src/bindings/Promise.res.js +25 -0
- package/src/bindings/SDSL.res.js +8 -0
- package/src/bindings/Viem.res.js +45 -0
- package/src/db/EntityHistory.res +3 -3
- package/src/db/EntityHistory.res.js +307 -0
- package/src/db/Schema.res.js +54 -0
- package/src/db/Table.res.js +365 -0
- package/src/sources/Fuel.res.js +28 -0
- package/src/sources/HyperFuel.res.js +193 -0
- package/src/sources/HyperFuelClient.res.js +19 -0
- package/src/sources/HyperSync.res.js +301 -0
- package/src/sources/HyperSyncClient.res.js +99 -0
- package/src/sources/HyperSyncJsonApi.res.js +259 -0
- package/src/sources/Rpc.res.js +198 -0
- package/src/sources/Source.res.js +9 -0
- package/src/sources/SourceManager.res.js +366 -0
- package/src/vendored/Rest.res.js +574 -0
- package/src/Enum.res +0 -22
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Utils = require("./Utils.res.js");
|
|
5
|
+
var JsSdsl = require("js-sdsl");
|
|
6
|
+
var Belt_Option = require("rescript/lib/js/belt_Option.js");
|
|
7
|
+
var Caml_option = require("rescript/lib/js/caml_option.js");
|
|
8
|
+
var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
|
|
9
|
+
var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js");
|
|
10
|
+
|
|
11
|
+
var LoaderTimeout = /* @__PURE__ */Caml_exceptions.create("LazyLoader.LoaderTimeout");
|
|
12
|
+
|
|
13
|
+
function make(loaderFn, onError, cacheSizeOpt, loaderPoolSizeOpt, retryDelayMillisOpt, timeoutMillisOpt) {
|
|
14
|
+
var cacheSize = cacheSizeOpt !== undefined ? cacheSizeOpt : 10000;
|
|
15
|
+
var loaderPoolSize = loaderPoolSizeOpt !== undefined ? loaderPoolSizeOpt : 10;
|
|
16
|
+
var retryDelayMillis = retryDelayMillisOpt !== undefined ? retryDelayMillisOpt : 5000;
|
|
17
|
+
var timeoutMillis = timeoutMillisOpt !== undefined ? timeoutMillisOpt : 300000;
|
|
18
|
+
return {
|
|
19
|
+
_cacheSize: cacheSize,
|
|
20
|
+
_loaderPoolSize: loaderPoolSize,
|
|
21
|
+
_retryDelayMillis: retryDelayMillis,
|
|
22
|
+
_timeoutMillis: timeoutMillis,
|
|
23
|
+
externalPromises: new Map(),
|
|
24
|
+
resolvers: new Map(),
|
|
25
|
+
inProgress: new Set(),
|
|
26
|
+
loaderQueue: new JsSdsl.Queue(),
|
|
27
|
+
loadedKeys: new JsSdsl.Queue(),
|
|
28
|
+
loaderFn: loaderFn,
|
|
29
|
+
onError: onError
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function deleteKey(_obj, _k) {
|
|
34
|
+
((delete _obj[_k]));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function timeoutAfter(timeoutMillis) {
|
|
38
|
+
return Utils.delay(timeoutMillis).then(function () {
|
|
39
|
+
return Promise.reject({
|
|
40
|
+
RE_EXN_ID: LoaderTimeout,
|
|
41
|
+
_1: "Query took longer than " + String(timeoutMillis / 1000 | 0) + " seconds"
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function loadNext(am, k) {
|
|
47
|
+
am.inProgress.add(k);
|
|
48
|
+
var awaitTaskPromiseAndLoadNextWithTimeout = async function () {
|
|
49
|
+
var val = await Promise.race([
|
|
50
|
+
am.loaderFn(k),
|
|
51
|
+
timeoutAfter(am._timeoutMillis)
|
|
52
|
+
]);
|
|
53
|
+
Belt_Option.forEach(am.resolvers.get(k), (function (r) {
|
|
54
|
+
am.resolvers.delete(k);
|
|
55
|
+
r(val);
|
|
56
|
+
}));
|
|
57
|
+
am.inProgress.delete(k);
|
|
58
|
+
var loadedKeysNumber = am.loadedKeys.push(k);
|
|
59
|
+
if (loadedKeysNumber > am._cacheSize) {
|
|
60
|
+
var old = am.loadedKeys.pop();
|
|
61
|
+
if (old !== undefined) {
|
|
62
|
+
am.externalPromises.delete(Caml_option.valFromOption(old));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
var next = am.loaderQueue.pop();
|
|
67
|
+
if (next !== undefined) {
|
|
68
|
+
return await loadNext(am, Caml_option.valFromOption(next));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
};
|
|
72
|
+
var tmp;
|
|
73
|
+
var exit = 0;
|
|
74
|
+
var val;
|
|
75
|
+
try {
|
|
76
|
+
val = await awaitTaskPromiseAndLoadNextWithTimeout();
|
|
77
|
+
exit = 1;
|
|
78
|
+
}
|
|
79
|
+
catch (raw_err){
|
|
80
|
+
var err = Caml_js_exceptions.internalToOCamlException(raw_err);
|
|
81
|
+
var onError = am.onError;
|
|
82
|
+
if (onError !== undefined) {
|
|
83
|
+
onError(am, err);
|
|
84
|
+
}
|
|
85
|
+
await Utils.delay(am._retryDelayMillis);
|
|
86
|
+
tmp = awaitTaskPromiseAndLoadNextWithTimeout();
|
|
87
|
+
}
|
|
88
|
+
if (exit === 1) {
|
|
89
|
+
tmp = Promise.resolve();
|
|
90
|
+
}
|
|
91
|
+
return await tmp;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function get(am, k) {
|
|
95
|
+
var x = am.externalPromises.get(k);
|
|
96
|
+
if (x !== undefined) {
|
|
97
|
+
return Caml_option.valFromOption(x);
|
|
98
|
+
}
|
|
99
|
+
var promise = new Promise((function (resolve, param) {
|
|
100
|
+
am.resolvers.set(k, resolve);
|
|
101
|
+
}));
|
|
102
|
+
am.externalPromises.set(k, promise);
|
|
103
|
+
if (am.inProgress.size < am._loaderPoolSize) {
|
|
104
|
+
loadNext(am, k);
|
|
105
|
+
} else {
|
|
106
|
+
am.loaderQueue.push(k);
|
|
107
|
+
}
|
|
108
|
+
return promise;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
exports.LoaderTimeout = LoaderTimeout;
|
|
112
|
+
exports.make = make;
|
|
113
|
+
exports.deleteKey = deleteKey;
|
|
114
|
+
exports.timeoutAfter = timeoutAfter;
|
|
115
|
+
exports.loadNext = loadNext;
|
|
116
|
+
exports.get = get;
|
|
117
|
+
/* Utils Not a pure module */
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Utils = require("./Utils.res.js");
|
|
5
|
+
var Internal = require("./Internal.res.js");
|
|
6
|
+
var Belt_Array = require("rescript/lib/js/belt_Array.js");
|
|
7
|
+
var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js");
|
|
8
|
+
|
|
9
|
+
var Call = {};
|
|
10
|
+
|
|
11
|
+
var Group = {};
|
|
12
|
+
|
|
13
|
+
function make() {
|
|
14
|
+
return {
|
|
15
|
+
groups: {},
|
|
16
|
+
isCollecting: false
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async function schedule(loadManager) {
|
|
21
|
+
loadManager.isCollecting = true;
|
|
22
|
+
await Promise.resolve();
|
|
23
|
+
loadManager.isCollecting = false;
|
|
24
|
+
var groups = loadManager.groups;
|
|
25
|
+
Object.keys(groups).forEach(async function (key) {
|
|
26
|
+
var group = groups[key];
|
|
27
|
+
var calls = group.calls;
|
|
28
|
+
var inputsToLoad = [];
|
|
29
|
+
var currentInputKeys = [];
|
|
30
|
+
Object.keys(calls).forEach(function (inputKey) {
|
|
31
|
+
var call = calls[inputKey];
|
|
32
|
+
if (!call.isLoading) {
|
|
33
|
+
call.isLoading = true;
|
|
34
|
+
currentInputKeys.push(inputKey);
|
|
35
|
+
if (!group.hasInMemory(inputKey)) {
|
|
36
|
+
inputsToLoad.push(call.input);
|
|
37
|
+
return ;
|
|
38
|
+
} else {
|
|
39
|
+
return ;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
});
|
|
44
|
+
if (!Utils.$$Array.isEmpty(inputsToLoad)) {
|
|
45
|
+
try {
|
|
46
|
+
await group.load(inputsToLoad);
|
|
47
|
+
}
|
|
48
|
+
catch (raw_exn){
|
|
49
|
+
var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
|
|
50
|
+
var exn$1 = Internal.prettifyExn(exn);
|
|
51
|
+
Belt_Array.forEach(currentInputKeys, (function (inputKey) {
|
|
52
|
+
var call = calls[inputKey];
|
|
53
|
+
call.reject(exn$1);
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (Utils.$$Array.isEmpty(currentInputKeys)) {
|
|
58
|
+
return ;
|
|
59
|
+
}
|
|
60
|
+
currentInputKeys.forEach(function (inputKey) {
|
|
61
|
+
var call = calls[inputKey];
|
|
62
|
+
Utils.Dict.deleteInPlace(calls, inputKey);
|
|
63
|
+
call.resolve(group.getUnsafeInMemory(inputKey));
|
|
64
|
+
});
|
|
65
|
+
var latestGroup = groups[key];
|
|
66
|
+
if (Utils.$$Array.isEmpty(Object.keys(latestGroup.calls))) {
|
|
67
|
+
return Utils.Dict.deleteInPlace(groups, key);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function noopHasher(input) {
|
|
74
|
+
return input;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function call(loadManager, input, key, load, hasher, shouldGroup, hasInMemory, getUnsafeInMemory) {
|
|
78
|
+
var inputKey = hasher === noopHasher ? input : hasher(input);
|
|
79
|
+
if (!shouldGroup && hasInMemory(inputKey)) {
|
|
80
|
+
return Promise.resolve(getUnsafeInMemory(inputKey));
|
|
81
|
+
}
|
|
82
|
+
var group = loadManager.groups[key];
|
|
83
|
+
var group$1;
|
|
84
|
+
if (group !== undefined) {
|
|
85
|
+
group$1 = group;
|
|
86
|
+
} else {
|
|
87
|
+
var g_calls = {};
|
|
88
|
+
var g = {
|
|
89
|
+
calls: g_calls,
|
|
90
|
+
load: load,
|
|
91
|
+
getUnsafeInMemory: getUnsafeInMemory,
|
|
92
|
+
hasInMemory: hasInMemory
|
|
93
|
+
};
|
|
94
|
+
loadManager.groups[key] = g;
|
|
95
|
+
group$1 = g;
|
|
96
|
+
}
|
|
97
|
+
var c = group$1.calls[inputKey];
|
|
98
|
+
if (c !== undefined) {
|
|
99
|
+
return c.promise;
|
|
100
|
+
}
|
|
101
|
+
var promise = new Promise((function (resolve, reject) {
|
|
102
|
+
var call = {
|
|
103
|
+
input: input,
|
|
104
|
+
resolve: resolve,
|
|
105
|
+
reject: reject,
|
|
106
|
+
promise: null,
|
|
107
|
+
isLoading: false
|
|
108
|
+
};
|
|
109
|
+
group$1.calls[inputKey] = call;
|
|
110
|
+
}));
|
|
111
|
+
group$1.calls[inputKey].promise = promise;
|
|
112
|
+
if (!loadManager.isCollecting) {
|
|
113
|
+
schedule(loadManager);
|
|
114
|
+
}
|
|
115
|
+
return promise;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
exports.Call = Call;
|
|
119
|
+
exports.Group = Group;
|
|
120
|
+
exports.make = make;
|
|
121
|
+
exports.schedule = schedule;
|
|
122
|
+
exports.noopHasher = noopHasher;
|
|
123
|
+
exports.call = call;
|
|
124
|
+
/* Utils Not a pure module */
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Utils = require("./Utils.res.js");
|
|
5
|
+
var Js_exn = require("rescript/lib/js/js_exn.js");
|
|
6
|
+
var Belt_Array = require("rescript/lib/js/belt_Array.js");
|
|
7
|
+
var Belt_Option = require("rescript/lib/js/belt_Option.js");
|
|
8
|
+
var Caml_option = require("rescript/lib/js/caml_option.js");
|
|
9
|
+
var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
|
|
10
|
+
|
|
11
|
+
var MissingRequiredTopic0 = /* @__PURE__ */Caml_exceptions.create("LogSelection.MissingRequiredTopic0");
|
|
12
|
+
|
|
13
|
+
function makeTopicSelection(topic0, topic1Opt, topic2Opt, topic3Opt) {
|
|
14
|
+
var topic1 = topic1Opt !== undefined ? topic1Opt : [];
|
|
15
|
+
var topic2 = topic2Opt !== undefined ? topic2Opt : [];
|
|
16
|
+
var topic3 = topic3Opt !== undefined ? topic3Opt : [];
|
|
17
|
+
if (Utils.$$Array.isEmpty(topic0)) {
|
|
18
|
+
return {
|
|
19
|
+
TAG: "Error",
|
|
20
|
+
_0: {
|
|
21
|
+
RE_EXN_ID: MissingRequiredTopic0
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
} else {
|
|
25
|
+
return {
|
|
26
|
+
TAG: "Ok",
|
|
27
|
+
_0: {
|
|
28
|
+
topic0: topic0,
|
|
29
|
+
topic1: topic1,
|
|
30
|
+
topic2: topic2,
|
|
31
|
+
topic3: topic3
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function hasFilters(param) {
|
|
38
|
+
return Belt_Option.isSome(Caml_option.undefined_to_opt([
|
|
39
|
+
param.topic1,
|
|
40
|
+
param.topic2,
|
|
41
|
+
param.topic3
|
|
42
|
+
].find(function (topic) {
|
|
43
|
+
return !Utils.$$Array.isEmpty(topic);
|
|
44
|
+
})));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function compressTopicSelections(topicSelections) {
|
|
48
|
+
var topic0sOfSelectionsWithoutFilters = [];
|
|
49
|
+
var selectionsWithFilters = [];
|
|
50
|
+
Belt_Array.forEach(topicSelections, (function (selection) {
|
|
51
|
+
if (hasFilters(selection)) {
|
|
52
|
+
selectionsWithFilters.push(selection);
|
|
53
|
+
return ;
|
|
54
|
+
} else {
|
|
55
|
+
return Belt_Array.forEach(selection.topic0, (function (topic0) {
|
|
56
|
+
topic0sOfSelectionsWithoutFilters.push(topic0);
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
}));
|
|
60
|
+
if (topic0sOfSelectionsWithoutFilters.length === 0) {
|
|
61
|
+
return selectionsWithFilters;
|
|
62
|
+
}
|
|
63
|
+
var selectionWithoutFilters_topic1 = [];
|
|
64
|
+
var selectionWithoutFilters_topic2 = [];
|
|
65
|
+
var selectionWithoutFilters_topic3 = [];
|
|
66
|
+
var selectionWithoutFilters = {
|
|
67
|
+
topic0: topic0sOfSelectionsWithoutFilters,
|
|
68
|
+
topic1: selectionWithoutFilters_topic1,
|
|
69
|
+
topic2: selectionWithoutFilters_topic2,
|
|
70
|
+
topic3: selectionWithoutFilters_topic3
|
|
71
|
+
};
|
|
72
|
+
return Belt_Array.concat([selectionWithoutFilters], selectionsWithFilters);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function make(addresses, topicSelections) {
|
|
76
|
+
var topicSelections$1 = compressTopicSelections(topicSelections);
|
|
77
|
+
return {
|
|
78
|
+
addresses: addresses,
|
|
79
|
+
topicSelections: topicSelections$1
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
var emptyTopics = [];
|
|
84
|
+
|
|
85
|
+
function noopGetter(param) {
|
|
86
|
+
return emptyTopics;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function parseEventFiltersOrThrow(eventFilters, sighash, params, topic1Opt, topic2Opt, topic3Opt) {
|
|
90
|
+
var topic1 = topic1Opt !== undefined ? topic1Opt : noopGetter;
|
|
91
|
+
var topic2 = topic2Opt !== undefined ? topic2Opt : noopGetter;
|
|
92
|
+
var topic3 = topic3Opt !== undefined ? topic3Opt : noopGetter;
|
|
93
|
+
var filterByAddresses = {
|
|
94
|
+
contents: false
|
|
95
|
+
};
|
|
96
|
+
var topic0 = [sighash];
|
|
97
|
+
var $$default = {
|
|
98
|
+
topic0: topic0,
|
|
99
|
+
topic1: emptyTopics,
|
|
100
|
+
topic2: emptyTopics,
|
|
101
|
+
topic3: emptyTopics
|
|
102
|
+
};
|
|
103
|
+
var parse = function (eventFilters) {
|
|
104
|
+
var tmp;
|
|
105
|
+
tmp = !Array.isArray(eventFilters) && (eventFilters === null || typeof eventFilters !== "object") && typeof eventFilters !== "number" && typeof eventFilters !== "string" && typeof eventFilters !== "boolean" ? [eventFilters] : (
|
|
106
|
+
Array.isArray(eventFilters) ? (
|
|
107
|
+
eventFilters.length !== 0 ? eventFilters : [{}]
|
|
108
|
+
) : [eventFilters]
|
|
109
|
+
);
|
|
110
|
+
return tmp.map(function (eventFilter) {
|
|
111
|
+
if (!Array.isArray(eventFilter) && (eventFilter === null || typeof eventFilter !== "object") && typeof eventFilter !== "number" && typeof eventFilter !== "string" && typeof eventFilter !== "boolean") {
|
|
112
|
+
return Js_exn.raiseError("Invalid event filters configuration. Expected an object");
|
|
113
|
+
}
|
|
114
|
+
if (!(typeof eventFilter === "object" && !Array.isArray(eventFilter))) {
|
|
115
|
+
return Js_exn.raiseError("Invalid event filters configuration. Expected an object");
|
|
116
|
+
}
|
|
117
|
+
var filterKeys = Object.keys(eventFilter);
|
|
118
|
+
if (filterKeys.length !== 0) {
|
|
119
|
+
filterKeys.forEach(function (key) {
|
|
120
|
+
if (!params.includes(key)) {
|
|
121
|
+
return Js_exn.raiseError("Invalid event filters configuration. The event doesn't have an indexed parameter \"" + key + "\" and can't use it for filtering");
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
topic0: topic0,
|
|
127
|
+
topic1: topic1(eventFilter),
|
|
128
|
+
topic2: topic2(eventFilter),
|
|
129
|
+
topic3: topic3(eventFilter)
|
|
130
|
+
};
|
|
131
|
+
} else {
|
|
132
|
+
return $$default;
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
var getEventFiltersOrThrow;
|
|
137
|
+
if (eventFilters !== undefined) {
|
|
138
|
+
if (typeof eventFilters === "function") {
|
|
139
|
+
try {
|
|
140
|
+
var args = Object.defineProperty({
|
|
141
|
+
chainId: 0,
|
|
142
|
+
addresses: []
|
|
143
|
+
}, "addresses", {
|
|
144
|
+
get: (function () {
|
|
145
|
+
filterByAddresses.contents = true;
|
|
146
|
+
return [];
|
|
147
|
+
})
|
|
148
|
+
});
|
|
149
|
+
eventFilters(args);
|
|
150
|
+
}
|
|
151
|
+
catch (exn){
|
|
152
|
+
|
|
153
|
+
}
|
|
154
|
+
getEventFiltersOrThrow = filterByAddresses.contents ? (function (chain) {
|
|
155
|
+
return {
|
|
156
|
+
TAG: "Dynamic",
|
|
157
|
+
_0: (function (addresses) {
|
|
158
|
+
return parse(eventFilters({
|
|
159
|
+
chainId: chain,
|
|
160
|
+
addresses: addresses
|
|
161
|
+
}));
|
|
162
|
+
})
|
|
163
|
+
};
|
|
164
|
+
}) : (function (chain) {
|
|
165
|
+
return {
|
|
166
|
+
TAG: "Static",
|
|
167
|
+
_0: parse(eventFilters({
|
|
168
|
+
chainId: chain,
|
|
169
|
+
addresses: []
|
|
170
|
+
}))
|
|
171
|
+
};
|
|
172
|
+
});
|
|
173
|
+
} else {
|
|
174
|
+
var $$static = {
|
|
175
|
+
TAG: "Static",
|
|
176
|
+
_0: parse(eventFilters)
|
|
177
|
+
};
|
|
178
|
+
getEventFiltersOrThrow = (function (param) {
|
|
179
|
+
return $$static;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
} else {
|
|
183
|
+
var $$static$1 = {
|
|
184
|
+
TAG: "Static",
|
|
185
|
+
_0: [$$default]
|
|
186
|
+
};
|
|
187
|
+
getEventFiltersOrThrow = (function (param) {
|
|
188
|
+
return $$static$1;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
getEventFiltersOrThrow: getEventFiltersOrThrow,
|
|
193
|
+
filterByAddresses: filterByAddresses.contents
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
exports.MissingRequiredTopic0 = MissingRequiredTopic0;
|
|
198
|
+
exports.makeTopicSelection = makeTopicSelection;
|
|
199
|
+
exports.hasFilters = hasFilters;
|
|
200
|
+
exports.compressTopicSelections = compressTopicSelections;
|
|
201
|
+
exports.make = make;
|
|
202
|
+
exports.parseEventFiltersOrThrow = parseEventFiltersOrThrow;
|
|
203
|
+
/* Utils Not a pure module */
|
package/src/Logging.res
CHANGED
|
@@ -26,7 +26,7 @@ let logLevels = [
|
|
|
26
26
|
|
|
27
27
|
%%private(let logger = ref(None))
|
|
28
28
|
|
|
29
|
-
let
|
|
29
|
+
let makeLogger = (~logStrategy, ~logFilePath, ~defaultFileLogLevel, ~userLogLevel) => {
|
|
30
30
|
// Currently unused - useful if using multiple transports.
|
|
31
31
|
// let pinoRaw = {"target": "pino/file", "level": Config.userLogLevel}
|
|
32
32
|
let pinoFile: Transport.transportTarget = {
|
|
@@ -42,38 +42,38 @@ let setLogger = (~logStrategy, ~logFilePath, ~defaultFileLogLevel, ~userLogLevel
|
|
|
42
42
|
let makeMultiStreamLogger =
|
|
43
43
|
MultiStreamLogger.make(~userLogLevel, ~defaultFileLogLevel, ~customLevels=logLevels, ...)
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
...Pino.ECS.make(),
|
|
52
|
-
customLevels: logLevels,
|
|
53
|
-
},
|
|
54
|
-
Transport.make(pinoFile),
|
|
55
|
-
)
|
|
56
|
-
| EcsConsoleMultistream =>
|
|
57
|
-
makeMultiStreamLogger(~logFile=None, ~options=Some(Pino.ECS.make()))
|
|
58
|
-
| EcsConsole =>
|
|
59
|
-
make({
|
|
60
|
-
...Pino.ECS.make(),
|
|
61
|
-
level: userLogLevel,
|
|
62
|
-
customLevels: logLevels,
|
|
63
|
-
})
|
|
64
|
-
| FileOnly =>
|
|
65
|
-
makeWithOptionsAndTransport(
|
|
66
|
-
{
|
|
67
|
-
customLevels: logLevels,
|
|
68
|
-
level: defaultFileLogLevel,
|
|
69
|
-
},
|
|
70
|
-
Transport.make(pinoFile),
|
|
71
|
-
)
|
|
72
|
-
| ConsoleRaw => makeMultiStreamLogger(~logFile=None, ~options=None)
|
|
73
|
-
| ConsolePretty => makeMultiStreamLogger(~logFile=None, ~options=None)
|
|
74
|
-
| Both => makeMultiStreamLogger(~logFile=Some(logFilePath), ~options=None)
|
|
45
|
+
switch logStrategy {
|
|
46
|
+
| EcsFile =>
|
|
47
|
+
makeWithOptionsAndTransport(
|
|
48
|
+
{
|
|
49
|
+
...Pino.ECS.make(),
|
|
50
|
+
customLevels: logLevels,
|
|
75
51
|
},
|
|
52
|
+
Transport.make(pinoFile),
|
|
76
53
|
)
|
|
54
|
+
| EcsConsoleMultistream => makeMultiStreamLogger(~logFile=None, ~options=Some(Pino.ECS.make()))
|
|
55
|
+
| EcsConsole =>
|
|
56
|
+
make({
|
|
57
|
+
...Pino.ECS.make(),
|
|
58
|
+
level: userLogLevel,
|
|
59
|
+
customLevels: logLevels,
|
|
60
|
+
})
|
|
61
|
+
| FileOnly =>
|
|
62
|
+
makeWithOptionsAndTransport(
|
|
63
|
+
{
|
|
64
|
+
customLevels: logLevels,
|
|
65
|
+
level: defaultFileLogLevel,
|
|
66
|
+
},
|
|
67
|
+
Transport.make(pinoFile),
|
|
68
|
+
)
|
|
69
|
+
| ConsoleRaw => makeMultiStreamLogger(~logFile=None, ~options=None)
|
|
70
|
+
| ConsolePretty => makeMultiStreamLogger(~logFile=None, ~options=None)
|
|
71
|
+
| Both => makeMultiStreamLogger(~logFile=Some(logFilePath), ~options=None)
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
let setLogger = l => {
|
|
76
|
+
logger := Some(l)
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
let getLogger = () => {
|