envio 2.28.0 → 2.29.0-alpha.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.d.ts +3 -0
- package/package.json +5 -5
- package/src/Batch.res +4 -14
- package/src/Batch.res.js +3 -14
- package/src/Envio.gen.ts +10 -0
- package/src/Envio.res +21 -0
- package/src/EventRegister.res +150 -31
- package/src/EventRegister.res.js +120 -33
- package/src/EventRegister.resi +11 -0
- package/src/EventUtils.res +52 -58
- package/src/EventUtils.res.js +15 -51
- package/src/FetchState.res +68 -56
- package/src/FetchState.res.js +66 -53
- package/src/Internal.gen.ts +2 -0
- package/src/Internal.res +44 -3
- package/src/InternalConfig.res +18 -0
- package/src/Logging.res +36 -24
- package/src/Logging.res.js +35 -21
- package/src/sources/HyperFuelSource.res +506 -0
- package/src/sources/HyperFuelSource.res.js +451 -0
- package/src/sources/HyperSync.res +1 -1
- package/src/sources/HyperSync.resi +1 -1
- package/src/sources/HyperSyncSource.res +569 -0
- package/src/sources/HyperSyncSource.res.js +413 -0
- package/src/sources/RpcSource.res +18 -20
- package/src/sources/RpcSource.res.js +1 -0
- package/src/sources/Source.res +1 -1
package/src/FetchState.res.js
CHANGED
|
@@ -5,6 +5,7 @@ var Caml = require("rescript/lib/js/caml.js");
|
|
|
5
5
|
var Utils = require("./Utils.res.js");
|
|
6
6
|
var Js_exn = require("rescript/lib/js/js_exn.js");
|
|
7
7
|
var Js_dict = require("rescript/lib/js/js_dict.js");
|
|
8
|
+
var Js_math = require("rescript/lib/js/js_math.js");
|
|
8
9
|
var Logging = require("./Logging.res.js");
|
|
9
10
|
var Belt_Int = require("rescript/lib/js/belt_Int.js");
|
|
10
11
|
var Caml_obj = require("rescript/lib/js/caml_obj.js");
|
|
@@ -22,7 +23,6 @@ function copy(fetchState) {
|
|
|
22
23
|
isFetchingAtHead: fetchState.isFetchingAtHead,
|
|
23
24
|
endBlock: fetchState.endBlock,
|
|
24
25
|
maxAddrInPartition: fetchState.maxAddrInPartition,
|
|
25
|
-
firstEventBlockNumber: fetchState.firstEventBlockNumber,
|
|
26
26
|
normalSelection: fetchState.normalSelection,
|
|
27
27
|
indexingContracts: fetchState.indexingContracts,
|
|
28
28
|
contractConfigs: fetchState.contractConfigs,
|
|
@@ -30,7 +30,8 @@ function copy(fetchState) {
|
|
|
30
30
|
chainId: fetchState.chainId,
|
|
31
31
|
latestFullyFetchedBlock: fetchState.latestFullyFetchedBlock,
|
|
32
32
|
blockLag: fetchState.blockLag,
|
|
33
|
-
queue: fetchState.queue.slice(0)
|
|
33
|
+
queue: fetchState.queue.slice(0),
|
|
34
|
+
onBlockConfigs: fetchState.onBlockConfigs
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
|
|
@@ -137,14 +138,12 @@ function updateInternal(fetchState, partitionsOpt, nextPartitionIndexOpt, indexi
|
|
|
137
138
|
Prometheus.IndexingPartitions.set(partitions.length, fetchState.chainId);
|
|
138
139
|
Prometheus.IndexingBufferSize.set(bufferSize, fetchState.chainId);
|
|
139
140
|
Prometheus.IndexingBufferBlockNumber.set(latestFullyFetchedBlock$1.blockNumber, fetchState.chainId);
|
|
140
|
-
var item = Utils.$$Array.last(queue);
|
|
141
141
|
return {
|
|
142
142
|
partitions: partitions,
|
|
143
143
|
nextPartitionIndex: nextPartitionIndex,
|
|
144
144
|
isFetchingAtHead: isFetchingAtHead,
|
|
145
145
|
endBlock: fetchState.endBlock,
|
|
146
146
|
maxAddrInPartition: fetchState.maxAddrInPartition,
|
|
147
|
-
firstEventBlockNumber: item !== undefined ? Utils.$$Math.minOptInt(fetchState.firstEventBlockNumber, item.blockNumber) : fetchState.firstEventBlockNumber,
|
|
148
147
|
normalSelection: fetchState.normalSelection,
|
|
149
148
|
indexingContracts: indexingContracts,
|
|
150
149
|
contractConfigs: fetchState.contractConfigs,
|
|
@@ -152,7 +151,8 @@ function updateInternal(fetchState, partitionsOpt, nextPartitionIndexOpt, indexi
|
|
|
152
151
|
chainId: fetchState.chainId,
|
|
153
152
|
latestFullyFetchedBlock: latestFullyFetchedBlock$1,
|
|
154
153
|
blockLag: blockLag,
|
|
155
|
-
queue: queue
|
|
154
|
+
queue: queue,
|
|
155
|
+
onBlockConfigs: fetchState.onBlockConfigs
|
|
156
156
|
};
|
|
157
157
|
}
|
|
158
158
|
|
|
@@ -409,7 +409,35 @@ function handleQueryResult(fetchState, query, latestFetchedBlock, newItems, curr
|
|
|
409
409
|
};
|
|
410
410
|
}
|
|
411
411
|
return Belt_Result.map(tmp, (function (partitions) {
|
|
412
|
-
|
|
412
|
+
var newQueue = Belt_Array.concat(fetchState.queue, newItems);
|
|
413
|
+
var onBlockConfigs = fetchState.onBlockConfigs;
|
|
414
|
+
if (onBlockConfigs !== undefined) {
|
|
415
|
+
var prevLatestFetchedBlockNumber = fetchState.latestFullyFetchedBlock.blockNumber;
|
|
416
|
+
var nextLatestFullyFetchedBlockNumber = latestFetchedBlock.blockNumber;
|
|
417
|
+
for(var idx = 0 ,idx_finish = partitions.length; idx < idx_finish; ++idx){
|
|
418
|
+
var p = partitions[idx];
|
|
419
|
+
if (nextLatestFullyFetchedBlockNumber > p.latestFetchedBlock.blockNumber) {
|
|
420
|
+
nextLatestFullyFetchedBlockNumber = p.latestFetchedBlock.blockNumber;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
}
|
|
424
|
+
var nextLatestFullyFetchedBlockNumber$1 = nextLatestFullyFetchedBlockNumber;
|
|
425
|
+
if (nextLatestFullyFetchedBlockNumber$1 > prevLatestFetchedBlockNumber) {
|
|
426
|
+
for(var blockNumber = prevLatestFetchedBlockNumber + 1 | 0; blockNumber <= nextLatestFullyFetchedBlockNumber$1; ++blockNumber){
|
|
427
|
+
for(var configIdx = 0 ,configIdx_finish = onBlockConfigs.length; configIdx < configIdx_finish; ++configIdx){
|
|
428
|
+
var onBlockConfig = onBlockConfigs[configIdx];
|
|
429
|
+
newQueue.push({
|
|
430
|
+
kind: 1,
|
|
431
|
+
onBlockConfig: onBlockConfig,
|
|
432
|
+
blockNumber: blockNumber,
|
|
433
|
+
logIndex: 16777216
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
}
|
|
440
|
+
return updateInternal(fetchState, partitions, undefined, undefined, undefined, currentBlockHeight, newQueue.sort(compareBufferItem), undefined);
|
|
413
441
|
}));
|
|
414
442
|
}
|
|
415
443
|
|
|
@@ -632,18 +660,6 @@ function getNextQuery(param, concurrencyLimit, targetBufferSize, currentBlockHei
|
|
|
632
660
|
}
|
|
633
661
|
}
|
|
634
662
|
|
|
635
|
-
function queueItemBlockNumber(queueItem) {
|
|
636
|
-
if (queueItem.TAG === "Item") {
|
|
637
|
-
return queueItem._0.item.blockNumber;
|
|
638
|
-
}
|
|
639
|
-
var blockNumber = queueItem.latestFetchedBlock.blockNumber;
|
|
640
|
-
if (blockNumber === 0) {
|
|
641
|
-
return 0;
|
|
642
|
-
} else {
|
|
643
|
-
return blockNumber + 1 | 0;
|
|
644
|
-
}
|
|
645
|
-
}
|
|
646
|
-
|
|
647
663
|
function makeNoItem(param) {
|
|
648
664
|
return {
|
|
649
665
|
TAG: "NoItem",
|
|
@@ -651,28 +667,6 @@ function makeNoItem(param) {
|
|
|
651
667
|
};
|
|
652
668
|
}
|
|
653
669
|
|
|
654
|
-
function qItemLt(a, b) {
|
|
655
|
-
var aBlockNumber = queueItemBlockNumber(a);
|
|
656
|
-
var bBlockNumber = queueItemBlockNumber(b);
|
|
657
|
-
if (aBlockNumber < bBlockNumber) {
|
|
658
|
-
return true;
|
|
659
|
-
} else if (aBlockNumber === bBlockNumber) {
|
|
660
|
-
if (a.TAG === "Item") {
|
|
661
|
-
if (b.TAG === "Item") {
|
|
662
|
-
return a._0.item.logIndex < b._0.item.logIndex;
|
|
663
|
-
} else {
|
|
664
|
-
return false;
|
|
665
|
-
}
|
|
666
|
-
} else if (b.TAG === "Item") {
|
|
667
|
-
return true;
|
|
668
|
-
} else {
|
|
669
|
-
return false;
|
|
670
|
-
}
|
|
671
|
-
} else {
|
|
672
|
-
return false;
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
|
|
676
670
|
function getEarliestEvent(param) {
|
|
677
671
|
var queue = param.queue;
|
|
678
672
|
var latestFullyFetchedBlock = param.latestFullyFetchedBlock;
|
|
@@ -695,7 +689,7 @@ function getEarliestEvent(param) {
|
|
|
695
689
|
}
|
|
696
690
|
}
|
|
697
691
|
|
|
698
|
-
function make(startBlock, endBlock, eventConfigs, contracts, maxAddrInPartition, chainId, blockLagOpt) {
|
|
692
|
+
function make(startBlock, endBlock, eventConfigs, contracts, maxAddrInPartition, chainId, onBlockConfigs, blockLagOpt) {
|
|
699
693
|
var blockLag = blockLagOpt !== undefined ? blockLagOpt : 0;
|
|
700
694
|
var latestFetchedBlock_blockNumber = startBlock - 1 | 0;
|
|
701
695
|
var latestFetchedBlock = {
|
|
@@ -796,7 +790,6 @@ function make(startBlock, endBlock, eventConfigs, contracts, maxAddrInPartition,
|
|
|
796
790
|
isFetchingAtHead: false,
|
|
797
791
|
endBlock: endBlock,
|
|
798
792
|
maxAddrInPartition: maxAddrInPartition,
|
|
799
|
-
firstEventBlockNumber: undefined,
|
|
800
793
|
normalSelection: normalSelection,
|
|
801
794
|
indexingContracts: indexingContracts,
|
|
802
795
|
contractConfigs: contractConfigs,
|
|
@@ -804,7 +797,8 @@ function make(startBlock, endBlock, eventConfigs, contracts, maxAddrInPartition,
|
|
|
804
797
|
chainId: chainId,
|
|
805
798
|
latestFullyFetchedBlock: latestFetchedBlock,
|
|
806
799
|
blockLag: blockLag,
|
|
807
|
-
queue: []
|
|
800
|
+
queue: [],
|
|
801
|
+
onBlockConfigs: onBlockConfigs
|
|
808
802
|
};
|
|
809
803
|
}
|
|
810
804
|
|
|
@@ -818,10 +812,15 @@ function getLatestFullyFetchedBlock(param) {
|
|
|
818
812
|
|
|
819
813
|
function pruneQueueFromFirstChangeEvent(queue, firstChangeEvent) {
|
|
820
814
|
return Belt_Array.keep(queue, (function (item) {
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
815
|
+
var tmp;
|
|
816
|
+
tmp = item.kind === 0 ? [
|
|
817
|
+
item.blockNumber,
|
|
818
|
+
item.logIndex
|
|
819
|
+
] : [
|
|
820
|
+
item.blockNumber,
|
|
821
|
+
item.logIndex
|
|
822
|
+
];
|
|
823
|
+
return Caml_obj.lessthan(tmp, [
|
|
825
824
|
firstChangeEvent.blockNumber,
|
|
826
825
|
firstChangeEvent.logIndex
|
|
827
826
|
]);
|
|
@@ -956,7 +955,13 @@ function filterAndSortForUnorderedBatch(fetchStates, maxBatchSize) {
|
|
|
956
955
|
} else if (match$1) {
|
|
957
956
|
return 1;
|
|
958
957
|
}
|
|
959
|
-
|
|
958
|
+
var match$2 = Utils.$$Array.lastUnsafe(a.queue);
|
|
959
|
+
var match$3 = Utils.$$Array.lastUnsafe(b.queue);
|
|
960
|
+
if (match$2.kind === 0 && match$3.kind === 0) {
|
|
961
|
+
return match$2.timestamp - match$3.timestamp | 0;
|
|
962
|
+
} else {
|
|
963
|
+
return Js_math.random_int(-1, 1);
|
|
964
|
+
}
|
|
960
965
|
});
|
|
961
966
|
}
|
|
962
967
|
|
|
@@ -971,13 +976,22 @@ function getProgressBlockNumber(param) {
|
|
|
971
976
|
}
|
|
972
977
|
|
|
973
978
|
function getProgressNextBlockLogIndex(param) {
|
|
974
|
-
var
|
|
975
|
-
if (
|
|
976
|
-
return
|
|
979
|
+
var match = Utils.$$Array.last(param.queue);
|
|
980
|
+
if (match === undefined) {
|
|
981
|
+
return ;
|
|
982
|
+
}
|
|
983
|
+
if (match.kind !== 0) {
|
|
984
|
+
return ;
|
|
985
|
+
}
|
|
986
|
+
var logIndex = match.logIndex;
|
|
987
|
+
if (param.latestFullyFetchedBlock.blockNumber >= match.blockNumber && logIndex > 0) {
|
|
988
|
+
return logIndex - 1 | 0;
|
|
977
989
|
}
|
|
978
990
|
|
|
979
991
|
}
|
|
980
992
|
|
|
993
|
+
var blockItemLogIndex = 16777216;
|
|
994
|
+
|
|
981
995
|
exports.copy = copy;
|
|
982
996
|
exports.mergeIntoPartition = mergeIntoPartition;
|
|
983
997
|
exports.checkIsWithinSyncRange = checkIsWithinSyncRange;
|
|
@@ -988,6 +1002,7 @@ exports.registerDynamicContracts = registerDynamicContracts;
|
|
|
988
1002
|
exports.UnexpectedPartitionNotFound = UnexpectedPartitionNotFound;
|
|
989
1003
|
exports.UnexpectedMergeQueryResponse = UnexpectedMergeQueryResponse;
|
|
990
1004
|
exports.compareBufferItem = compareBufferItem;
|
|
1005
|
+
exports.blockItemLogIndex = blockItemLogIndex;
|
|
991
1006
|
exports.handleQueryResult = handleQueryResult;
|
|
992
1007
|
exports.makePartitionQuery = makePartitionQuery;
|
|
993
1008
|
exports.startFetchingQueries = startFetchingQueries;
|
|
@@ -995,9 +1010,7 @@ exports.addressesByContractNameCount = addressesByContractNameCount;
|
|
|
995
1010
|
exports.addressesByContractNameGetAll = addressesByContractNameGetAll;
|
|
996
1011
|
exports.isFullPartition = isFullPartition;
|
|
997
1012
|
exports.getNextQuery = getNextQuery;
|
|
998
|
-
exports.queueItemBlockNumber = queueItemBlockNumber;
|
|
999
1013
|
exports.makeNoItem = makeNoItem;
|
|
1000
|
-
exports.qItemLt = qItemLt;
|
|
1001
1014
|
exports.getEarliestEvent = getEarliestEvent;
|
|
1002
1015
|
exports.make = make;
|
|
1003
1016
|
exports.bufferSize = bufferSize;
|
package/src/Internal.gen.ts
CHANGED
|
@@ -51,6 +51,8 @@ export type genericHandlerWithLoader<loader,handler,eventFilters> = {
|
|
|
51
51
|
readonly preRegisterDynamicContracts?: boolean
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
+
export type blockEvent = { readonly number: number; readonly chainId: number };
|
|
55
|
+
|
|
54
56
|
export type eventOptions<eventFilters> = {
|
|
55
57
|
readonly wildcard?: boolean;
|
|
56
58
|
readonly eventFilters?: eventFilters;
|
package/src/Internal.res
CHANGED
|
@@ -133,17 +133,58 @@ type evmContractConfig = {
|
|
|
133
133
|
events: array<evmEventConfig>,
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
type
|
|
136
|
+
// Duplicate the type from item
|
|
137
|
+
// to make item properly unboxed
|
|
138
|
+
type eventItem = private {
|
|
139
|
+
kind: [#0],
|
|
137
140
|
eventConfig: eventConfig,
|
|
138
141
|
timestamp: int,
|
|
139
142
|
chain: ChainMap.Chain.t,
|
|
140
143
|
blockNumber: int,
|
|
141
144
|
logIndex: int,
|
|
142
145
|
event: event,
|
|
143
|
-
// Reuse logger object for event
|
|
144
|
-
mutable loggerCache?: Pino.t,
|
|
145
146
|
}
|
|
146
147
|
|
|
148
|
+
@genType
|
|
149
|
+
type blockEvent = {
|
|
150
|
+
number: int,
|
|
151
|
+
chainId: int,
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
type onBlockArgs = {
|
|
155
|
+
block: blockEvent,
|
|
156
|
+
context: handlerContext,
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
type onBlockConfig = {
|
|
160
|
+
// When there are multiple onBlock handlers per chain,
|
|
161
|
+
// we want to use the order they are defined for sorting
|
|
162
|
+
index: int,
|
|
163
|
+
name: string,
|
|
164
|
+
chainId: int,
|
|
165
|
+
handler: onBlockArgs => promise<unit>,
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@tag("kind")
|
|
169
|
+
type item =
|
|
170
|
+
| @as(0)
|
|
171
|
+
Event({
|
|
172
|
+
eventConfig: eventConfig,
|
|
173
|
+
timestamp: int,
|
|
174
|
+
chain: ChainMap.Chain.t,
|
|
175
|
+
blockNumber: int,
|
|
176
|
+
logIndex: int,
|
|
177
|
+
event: event,
|
|
178
|
+
})
|
|
179
|
+
| @as(1) Block({onBlockConfig: onBlockConfig, blockNumber: int, logIndex: int})
|
|
180
|
+
|
|
181
|
+
external castUnsafeEventItem: item => eventItem = "%identity"
|
|
182
|
+
|
|
183
|
+
@get
|
|
184
|
+
external getItemBlockNumber: item => int = "blockNumber"
|
|
185
|
+
@get
|
|
186
|
+
external getItemLogIndex: item => int = "logIndex"
|
|
187
|
+
|
|
147
188
|
@genType
|
|
148
189
|
type eventOptions<'eventFilters> = {
|
|
149
190
|
wildcard?: bool,
|
package/src/InternalConfig.res
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
// And turn it into PublicConfig instead
|
|
3
3
|
// For internal use we should create Indexer.res with a stateful type
|
|
4
4
|
|
|
5
|
+
type ecosystem = | @as("evm") Evm | @as("fuel") Fuel
|
|
6
|
+
|
|
7
|
+
type sourceSyncOptions = {
|
|
8
|
+
initialBlockInterval?: int,
|
|
9
|
+
backoffMultiplicative?: float,
|
|
10
|
+
accelerationAdditive?: int,
|
|
11
|
+
intervalCeiling?: int,
|
|
12
|
+
backoffMillis?: int,
|
|
13
|
+
queryTimeoutMillis?: int,
|
|
14
|
+
fallbackStallTimeout?: int,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
type historyFlag = FullHistory | MinHistory
|
|
18
|
+
type rollbackFlag = RollbackOnReorg | NoRollback
|
|
19
|
+
type historyConfig = {rollbackFlag: rollbackFlag, historyFlag: historyFlag}
|
|
20
|
+
|
|
5
21
|
type contract = {
|
|
6
22
|
name: string,
|
|
7
23
|
abi: EvmTypes.Abi.t,
|
|
@@ -28,3 +44,5 @@ type sourceSync = {
|
|
|
28
44
|
queryTimeoutMillis: int,
|
|
29
45
|
fallbackStallTimeout: int,
|
|
30
46
|
}
|
|
47
|
+
|
|
48
|
+
type multichain = | @as("ordered") Ordered | @as("unordered") Unordered
|
package/src/Logging.res
CHANGED
|
@@ -144,29 +144,41 @@ let createChildFrom = (~logger: t, ~params: 'a) => {
|
|
|
144
144
|
logger->child(params->createChildParams)
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
let
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
147
|
+
let getItemLogger = {
|
|
148
|
+
let cacheKey = "_logger"
|
|
149
|
+
(item: Internal.item) => {
|
|
150
|
+
switch item->Utils.magic->Utils.Dict.dangerouslyGetNonOption(cacheKey) {
|
|
151
|
+
| Some(l) => l
|
|
152
|
+
| None => {
|
|
153
|
+
let l = getLogger()->child(
|
|
154
|
+
switch item {
|
|
155
|
+
| Event({eventConfig, chain, blockNumber, logIndex, event}) =>
|
|
156
|
+
{
|
|
157
|
+
"contractName": eventConfig.contractName,
|
|
158
|
+
"eventName": eventConfig.name,
|
|
159
|
+
"chainId": chain->ChainMap.Chain.toChainId,
|
|
160
|
+
"block": blockNumber,
|
|
161
|
+
"logIndex": logIndex,
|
|
162
|
+
"address": event.srcAddress,
|
|
163
|
+
}->createChildParams
|
|
164
|
+
| Block({blockNumber, onBlockConfig}) =>
|
|
165
|
+
{
|
|
166
|
+
"onBlock": onBlockConfig.name,
|
|
167
|
+
"chainId": onBlockConfig.chainId,
|
|
168
|
+
"block": blockNumber,
|
|
169
|
+
}->createChildParams
|
|
170
|
+
},
|
|
171
|
+
)
|
|
172
|
+
item->Utils.magic->Js.Dict.set(cacheKey, l)
|
|
173
|
+
l
|
|
174
|
+
}
|
|
163
175
|
}
|
|
164
176
|
}
|
|
165
177
|
}
|
|
166
178
|
|
|
167
179
|
@inline
|
|
168
|
-
let logForItem = (
|
|
169
|
-
(
|
|
180
|
+
let logForItem = (item, level: Pino.logLevel, message: string, ~params=?) => {
|
|
181
|
+
(item->getItemLogger->Utils.magic->Js.Dict.unsafeGet((level :> string)))(params, message)
|
|
170
182
|
}
|
|
171
183
|
|
|
172
184
|
let noopLogger: Envio.logger = {
|
|
@@ -177,11 +189,11 @@ let noopLogger: Envio.logger = {
|
|
|
177
189
|
errorWithExn: (_message: string, _exn) => (),
|
|
178
190
|
}
|
|
179
191
|
|
|
180
|
-
let getUserLogger = (
|
|
181
|
-
info: (message: string, ~params=?) =>
|
|
182
|
-
debug: (message: string, ~params=?) =>
|
|
183
|
-
warn: (message: string, ~params=?) =>
|
|
184
|
-
error: (message: string, ~params=?) =>
|
|
192
|
+
let getUserLogger = (item): Envio.logger => {
|
|
193
|
+
info: (message: string, ~params=?) => item->logForItem(#uinfo, message, ~params?),
|
|
194
|
+
debug: (message: string, ~params=?) => item->logForItem(#udebug, message, ~params?),
|
|
195
|
+
warn: (message: string, ~params=?) => item->logForItem(#uwarn, message, ~params?),
|
|
196
|
+
error: (message: string, ~params=?) => item->logForItem(#uerror, message, ~params?),
|
|
185
197
|
errorWithExn: (message: string, exn) =>
|
|
186
|
-
|
|
198
|
+
item->logForItem(#uerror, message, ~params={"err": exn->Utils.prettifyExn}),
|
|
187
199
|
}
|
package/src/Logging.res.js
CHANGED
|
@@ -177,25 +177,39 @@ function createChildFrom(logger, params) {
|
|
|
177
177
|
return logger.child(Pino.createChildParams(params));
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
var cacheKey = "_logger";
|
|
181
|
+
|
|
182
|
+
function getItemLogger(item) {
|
|
183
|
+
var l = item[cacheKey];
|
|
182
184
|
if (l !== undefined) {
|
|
183
|
-
return l;
|
|
185
|
+
return Caml_option.valFromOption(l);
|
|
184
186
|
}
|
|
185
|
-
var
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
187
|
+
var tmp;
|
|
188
|
+
if (item.kind === 0) {
|
|
189
|
+
var eventConfig = item.eventConfig;
|
|
190
|
+
tmp = Pino.createChildParams({
|
|
191
|
+
contractName: eventConfig.contractName,
|
|
192
|
+
eventName: eventConfig.name,
|
|
193
|
+
chainId: item.chain,
|
|
194
|
+
block: item.blockNumber,
|
|
195
|
+
logIndex: item.logIndex,
|
|
196
|
+
address: item.event.srcAddress
|
|
197
|
+
});
|
|
198
|
+
} else {
|
|
199
|
+
var onBlockConfig = item.onBlockConfig;
|
|
200
|
+
tmp = Pino.createChildParams({
|
|
201
|
+
onBlock: onBlockConfig.name,
|
|
202
|
+
chainId: onBlockConfig.chainId,
|
|
203
|
+
block: item.blockNumber
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
var l$1 = getLogger().child(tmp);
|
|
207
|
+
item[cacheKey] = l$1;
|
|
194
208
|
return l$1;
|
|
195
209
|
}
|
|
196
210
|
|
|
197
|
-
function logForItem(
|
|
198
|
-
return
|
|
211
|
+
function logForItem(item, level, message, params) {
|
|
212
|
+
return getItemLogger(item)[level](params, message);
|
|
199
213
|
}
|
|
200
214
|
|
|
201
215
|
function noopLogger_debug(_message, param) {
|
|
@@ -226,25 +240,25 @@ var noopLogger = {
|
|
|
226
240
|
errorWithExn: noopLogger_errorWithExn
|
|
227
241
|
};
|
|
228
242
|
|
|
229
|
-
function getUserLogger(
|
|
243
|
+
function getUserLogger(item) {
|
|
230
244
|
return {
|
|
231
245
|
debug: (function (message, params) {
|
|
232
|
-
|
|
246
|
+
getItemLogger(item)["udebug"](params, message);
|
|
233
247
|
}),
|
|
234
248
|
info: (function (message, params) {
|
|
235
|
-
|
|
249
|
+
getItemLogger(item)["uinfo"](params, message);
|
|
236
250
|
}),
|
|
237
251
|
warn: (function (message, params) {
|
|
238
|
-
|
|
252
|
+
getItemLogger(item)["uwarn"](params, message);
|
|
239
253
|
}),
|
|
240
254
|
error: (function (message, params) {
|
|
241
|
-
|
|
255
|
+
getItemLogger(item)["uerror"](params, message);
|
|
242
256
|
}),
|
|
243
257
|
errorWithExn: (function (message, exn) {
|
|
244
258
|
var params = {
|
|
245
259
|
err: Utils.prettifyExn(exn)
|
|
246
260
|
};
|
|
247
|
-
|
|
261
|
+
getItemLogger(item)["uerror"](params, message);
|
|
248
262
|
})
|
|
249
263
|
};
|
|
250
264
|
}
|
|
@@ -270,7 +284,7 @@ exports.childErrorWithExn = childErrorWithExn;
|
|
|
270
284
|
exports.childFatal = childFatal;
|
|
271
285
|
exports.createChild = createChild;
|
|
272
286
|
exports.createChildFrom = createChildFrom;
|
|
273
|
-
exports.
|
|
287
|
+
exports.getItemLogger = getItemLogger;
|
|
274
288
|
exports.logForItem = logForItem;
|
|
275
289
|
exports.noopLogger = noopLogger;
|
|
276
290
|
exports.getUserLogger = getUserLogger;
|