envio 3.1.2 → 3.2.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/evm.schema.json +83 -11
- package/fuel.schema.json +83 -11
- package/index.d.ts +184 -3
- package/package.json +6 -6
- package/src/Batch.res +2 -2
- package/src/ChainFetcher.res +27 -3
- package/src/ChainFetcher.res.mjs +17 -3
- package/src/ChainManager.res +163 -0
- package/src/ChainManager.res.mjs +136 -0
- package/src/Config.res +213 -30
- package/src/Config.res.mjs +102 -41
- package/src/Core.res +16 -10
- package/src/Ecosystem.res +0 -3
- package/src/Env.res +2 -2
- package/src/Env.res.mjs +2 -2
- package/src/Envio.res +101 -2
- package/src/Envio.res.mjs +2 -3
- package/src/EventConfigBuilder.res +52 -0
- package/src/EventConfigBuilder.res.mjs +32 -0
- package/src/EventUtils.res +2 -2
- package/src/FetchState.res +23 -14
- package/src/FetchState.res.mjs +21 -15
- package/src/GlobalState.res +219 -363
- package/src/GlobalState.res.mjs +314 -491
- package/src/GlobalStateManager.res +49 -59
- package/src/GlobalStateManager.res.mjs +5 -4
- package/src/GlobalStateManager.resi +1 -1
- package/src/HandlerLoader.res +12 -1
- package/src/HandlerLoader.res.mjs +6 -1
- package/src/HandlerRegister.res +9 -9
- package/src/HandlerRegister.res.mjs +9 -9
- package/src/Hasura.res +102 -32
- package/src/Hasura.res.mjs +88 -34
- package/src/InMemoryStore.res +10 -1
- package/src/InMemoryStore.res.mjs +4 -1
- package/src/InMemoryTable.res +83 -136
- package/src/InMemoryTable.res.mjs +57 -86
- package/src/Internal.res +54 -5
- package/src/Internal.res.mjs +2 -8
- package/src/LazyLoader.res +2 -2
- package/src/LazyLoader.res.mjs +3 -3
- package/src/LoadLayer.res +47 -60
- package/src/LoadLayer.res.mjs +28 -50
- package/src/LoadLayer.resi +2 -5
- package/src/LogSelection.res +4 -4
- package/src/LogSelection.res.mjs +5 -7
- package/src/Logging.res +1 -1
- package/src/Main.res +61 -2
- package/src/Main.res.mjs +37 -1
- package/src/Persistence.res +3 -16
- package/src/PgStorage.res +125 -114
- package/src/PgStorage.res.mjs +112 -95
- package/src/Ports.res +5 -0
- package/src/Ports.res.mjs +9 -0
- package/src/Prometheus.res +3 -3
- package/src/Prometheus.res.mjs +4 -4
- package/src/ReorgDetection.res +4 -4
- package/src/ReorgDetection.res.mjs +4 -5
- package/src/SafeCheckpointTracking.res +16 -16
- package/src/SafeCheckpointTracking.res.mjs +2 -2
- package/src/SimulateItems.res +10 -14
- package/src/SimulateItems.res.mjs +5 -2
- package/src/Sink.res +1 -1
- package/src/Sink.res.mjs +1 -2
- package/src/SvmTypes.res +9 -0
- package/src/SvmTypes.res.mjs +14 -0
- package/src/TestIndexer.res +17 -57
- package/src/TestIndexer.res.mjs +14 -48
- package/src/TestIndexerProxyStorage.res +23 -23
- package/src/TestIndexerProxyStorage.res.mjs +12 -15
- package/src/Throttler.res +2 -2
- package/src/Time.res +2 -2
- package/src/Time.res.mjs +2 -2
- package/src/UserContext.res +19 -118
- package/src/UserContext.res.mjs +10 -66
- package/src/Utils.res +15 -15
- package/src/Utils.res.mjs +7 -8
- package/src/adapters/MarkBatchProcessedAdapter.res +5 -0
- package/src/adapters/MarkBatchProcessedAdapter.res.mjs +14 -0
- package/src/bindings/BigDecimal.res +1 -1
- package/src/bindings/BigDecimal.res.mjs +2 -2
- package/src/bindings/ClickHouse.res +8 -6
- package/src/bindings/ClickHouse.res.mjs +5 -5
- package/src/bindings/Hrtime.res +1 -1
- package/src/bindings/Pino.res +2 -2
- package/src/bindings/Pino.res.mjs +3 -4
- package/src/db/EntityFilter.res +410 -0
- package/src/db/EntityFilter.res.mjs +424 -0
- package/src/db/EntityHistory.res +1 -1
- package/src/db/EntityHistory.res.mjs +1 -1
- package/src/db/InternalTable.res +10 -10
- package/src/db/InternalTable.res.mjs +41 -45
- package/src/db/Schema.res +2 -2
- package/src/db/Schema.res.mjs +3 -3
- package/src/db/Table.res +106 -22
- package/src/db/Table.res.mjs +84 -35
- package/src/sources/EventRouter.res +67 -2
- package/src/sources/EventRouter.res.mjs +45 -3
- package/src/sources/Evm.res +0 -7
- package/src/sources/Evm.res.mjs +0 -15
- package/src/sources/EvmChain.res +1 -1
- package/src/sources/EvmChain.res.mjs +1 -2
- package/src/sources/EvmRpcClient.res +42 -0
- package/src/sources/EvmRpcClient.res.mjs +64 -0
- package/src/sources/Fuel.res +0 -7
- package/src/sources/Fuel.res.mjs +0 -15
- package/src/sources/HyperFuelSource.res +5 -4
- package/src/sources/HyperFuelSource.res.mjs +2 -2
- package/src/sources/HyperSyncClient.res +9 -5
- package/src/sources/HyperSyncClient.res.mjs +2 -2
- package/src/sources/HyperSyncHeightStream.res +2 -2
- package/src/sources/HyperSyncHeightStream.res.mjs +2 -2
- package/src/sources/HyperSyncSource.res +10 -9
- package/src/sources/HyperSyncSource.res.mjs +4 -4
- package/src/sources/Rpc.res +1 -5
- package/src/sources/Rpc.res.mjs +1 -9
- package/src/sources/RpcSource.res +57 -21
- package/src/sources/RpcSource.res.mjs +47 -20
- package/src/sources/RpcWebSocketHeightStream.res +1 -1
- package/src/sources/SourceManager.res +3 -2
- package/src/sources/SourceManager.res.mjs +1 -1
- package/src/sources/Svm.res +3 -10
- package/src/sources/Svm.res.mjs +4 -18
- package/src/sources/SvmHyperSyncClient.res +265 -0
- package/src/sources/SvmHyperSyncClient.res.mjs +28 -0
- package/src/sources/SvmHyperSyncSource.res +638 -0
- package/src/sources/SvmHyperSyncSource.res.mjs +557 -0
- package/src/tui/Tui.res +9 -2
- package/src/tui/Tui.res.mjs +18 -3
- package/src/tui/components/BufferedProgressBar.res +2 -2
- package/src/tui/components/TuiData.res +3 -0
- package/svm.schema.json +523 -14
- package/src/TableIndices.res +0 -115
- package/src/TableIndices.res.mjs +0 -144
|
@@ -288,6 +288,37 @@ function buildEvmEventConfig(contractName, eventName, sighash, params, isWildcar
|
|
|
288
288
|
};
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
+
function buildSvmInstructionEventConfig(contractName, instructionName, programId, discriminator, discriminatorByteLen, includeTransaction, includeLogs, includeTokenBalances, accountFilters, isInner, isWildcard, handler, contractRegister, accountsOpt, argsOpt, definedTypesOpt, startBlock) {
|
|
292
|
+
let accounts = accountsOpt !== undefined ? accountsOpt : [];
|
|
293
|
+
let args = argsOpt !== undefined ? argsOpt : null;
|
|
294
|
+
let definedTypes = definedTypesOpt !== undefined ? definedTypesOpt : null;
|
|
295
|
+
let paramsSchema = Utils.Schema.coerceToJsonPgType(S$RescriptSchema.json(false));
|
|
296
|
+
return {
|
|
297
|
+
id: discriminator !== undefined ? discriminator : "none",
|
|
298
|
+
name: instructionName,
|
|
299
|
+
contractName: contractName,
|
|
300
|
+
isWildcard: isWildcard,
|
|
301
|
+
filterByAddresses: false,
|
|
302
|
+
dependsOnAddresses: !isWildcard,
|
|
303
|
+
handler: handler,
|
|
304
|
+
contractRegister: contractRegister,
|
|
305
|
+
paramsRawEventSchema: paramsSchema,
|
|
306
|
+
simulateParamsSchema: paramsSchema,
|
|
307
|
+
startBlock: startBlock,
|
|
308
|
+
programId: programId,
|
|
309
|
+
discriminator: discriminator,
|
|
310
|
+
discriminatorByteLen: discriminatorByteLen,
|
|
311
|
+
includeTransaction: includeTransaction,
|
|
312
|
+
includeLogs: includeLogs,
|
|
313
|
+
includeTokenBalances: includeTokenBalances,
|
|
314
|
+
accountFilters: accountFilters,
|
|
315
|
+
isInner: isInner,
|
|
316
|
+
accounts: accounts,
|
|
317
|
+
args: args,
|
|
318
|
+
definedTypes: definedTypes
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
|
|
291
322
|
function buildFuelEventConfig(contractName, eventName, kind, sighash, rawAbi, isWildcard, handler, contractRegister, startBlock) {
|
|
292
323
|
let fuelKind;
|
|
293
324
|
switch (kind) {
|
|
@@ -363,6 +394,7 @@ export {
|
|
|
363
394
|
alwaysIncludedBlockFields,
|
|
364
395
|
resolveFieldSelection,
|
|
365
396
|
buildEvmEventConfig,
|
|
397
|
+
buildSvmInstructionEventConfig,
|
|
366
398
|
buildFuelEventConfig,
|
|
367
399
|
}
|
|
368
400
|
/* paramMetaSchema Not a pure module */
|
package/src/EventUtils.res
CHANGED
|
@@ -45,8 +45,8 @@ let packEventIndex = (~blockNumber, ~logIndex) => {
|
|
|
45
45
|
// let logIndexMask = 65535->BigInt.fromInt
|
|
46
46
|
// let logIndex = packedEventIndex->BigInt.bitwiseAnd(logIndexMask)
|
|
47
47
|
// {
|
|
48
|
-
// blockNumber: blockNumber->BigInt.toString->
|
|
49
|
-
// logIndex: logIndex->BigInt.toString->
|
|
48
|
+
// blockNumber: blockNumber->BigInt.toString->Int.fromString->Option.getUnsafe,
|
|
49
|
+
// logIndex: logIndex->BigInt.toString->Int.fromString->Option.getUnsafe,
|
|
50
50
|
// }
|
|
51
51
|
// }
|
|
52
52
|
|
package/src/FetchState.res
CHANGED
|
@@ -336,7 +336,7 @@ module OptimizedPartitions = {
|
|
|
336
336
|
let _ = newPartitions->Array.sort(ascSortFn)
|
|
337
337
|
|
|
338
338
|
let partitionsCount = newPartitions->Array.length
|
|
339
|
-
let idsInAscOrder =
|
|
339
|
+
let idsInAscOrder = Utils.Array.jsArrayCreate(partitionsCount)
|
|
340
340
|
let entities = Dict.make()
|
|
341
341
|
for idx in 0 to partitionsCount - 1 {
|
|
342
342
|
let p = newPartitions->Array.getUnsafe(idx)
|
|
@@ -639,7 +639,7 @@ let updateInternal = (
|
|
|
639
639
|
let maxBlockNumber = switch switch mutItemsRef.contents {
|
|
640
640
|
| Some(mutItems) => mutItems
|
|
641
641
|
| None => fetchState.buffer
|
|
642
|
-
}->
|
|
642
|
+
}->Array.get(fetchState.targetBufferSize - 1) {
|
|
643
643
|
| Some(item) => item->Internal.getItemBlockNumber
|
|
644
644
|
| None =>
|
|
645
645
|
switch optimizedPartitions->OptimizedPartitions.getLatestFullyFetchedBlock {
|
|
@@ -974,6 +974,10 @@ let registerDynamicContracts = (
|
|
|
974
974
|
// so that later conflicting registrations are detected, and are persisted
|
|
975
975
|
// to envio_addresses so they can be picked up on restart with updated config.
|
|
976
976
|
let noEventsAddresses: dict<indexingAddress> = Dict.make()
|
|
977
|
+
// Batch-level view of all addresses registered so far (across contracts,
|
|
978
|
+
// including no-events ones), so two contracts registering the same address
|
|
979
|
+
// within one batch conflict the same way as against indexingAddresses.
|
|
980
|
+
let registeringAddresses: dict<indexingAddress> = Dict.make()
|
|
977
981
|
|
|
978
982
|
for itemIdx in 0 to items->Array.length - 1 {
|
|
979
983
|
let item = items->Array.getUnsafe(itemIdx)
|
|
@@ -1021,9 +1025,7 @@ let registerDynamicContracts = (
|
|
|
1021
1025
|
}
|
|
1022
1026
|
shouldRemove := true
|
|
1023
1027
|
| None =>
|
|
1024
|
-
let
|
|
1025
|
-
registeringContractsByContract->Utils.Dict.getOrInsertEmptyDict(dc.contractName)
|
|
1026
|
-
let shouldUpdate = switch registeringContracts->Utils.Dict.dangerouslyGetNonOption(
|
|
1028
|
+
let shouldUpdate = switch registeringAddresses->Utils.Dict.dangerouslyGetNonOption(
|
|
1027
1029
|
dc.address->Address.toString,
|
|
1028
1030
|
) {
|
|
1029
1031
|
| Some(registeringContract) if registeringContract.contractName != dc.contractName =>
|
|
@@ -1046,7 +1048,10 @@ let registerDynamicContracts = (
|
|
|
1046
1048
|
earliestRegisteringEventBlockNumber.contents,
|
|
1047
1049
|
dcWithStartBlock.effectiveStartBlock,
|
|
1048
1050
|
)
|
|
1049
|
-
|
|
1051
|
+
registeringContractsByContract
|
|
1052
|
+
->Utils.Dict.getOrInsertEmptyDict(dc.contractName)
|
|
1053
|
+
->Dict.set(dc.address->Address.toString, dcWithStartBlock)
|
|
1054
|
+
registeringAddresses->Dict.set(dc.address->Address.toString, dcWithStartBlock)
|
|
1050
1055
|
} else {
|
|
1051
1056
|
shouldRemove := true
|
|
1052
1057
|
}
|
|
@@ -1073,11 +1078,14 @@ let registerDynamicContracts = (
|
|
|
1073
1078
|
}
|
|
1074
1079
|
shouldRemove := true
|
|
1075
1080
|
| None =>
|
|
1076
|
-
switch
|
|
1081
|
+
switch registeringAddresses->Utils.Dict.dangerouslyGetNonOption(
|
|
1077
1082
|
dc.address->Address.toString,
|
|
1078
1083
|
) {
|
|
1079
|
-
| Some(
|
|
1080
|
-
|
|
1084
|
+
| Some(existingContract) =>
|
|
1085
|
+
if existingContract.contractName != dc.contractName {
|
|
1086
|
+
fetchState->warnDifferentContractType(~existingContract, ~dc=dcAsIndexingAddress)
|
|
1087
|
+
}
|
|
1088
|
+
// Otherwise already queued for persistence by an earlier item in this batch.
|
|
1081
1089
|
shouldRemove := true
|
|
1082
1090
|
| None =>
|
|
1083
1091
|
let logger = Logging.createChild(
|
|
@@ -1092,6 +1100,7 @@ let registerDynamicContracts = (
|
|
|
1092
1100
|
// skip partition registration since there's nothing to fetch.
|
|
1093
1101
|
logger->Logging.childWarn(`Persisting contract registration without fetching: Contract doesn't have any events to fetch. It'll be picked up on restart if you add events for the contract.`)
|
|
1094
1102
|
noEventsAddresses->Dict.set(dc.address->Address.toString, dcAsIndexingAddress)
|
|
1103
|
+
registeringAddresses->Dict.set(dc.address->Address.toString, dcAsIndexingAddress)
|
|
1095
1104
|
}
|
|
1096
1105
|
}
|
|
1097
1106
|
}
|
|
@@ -1508,7 +1517,7 @@ let getNextQuery = (
|
|
|
1508
1517
|
}
|
|
1509
1518
|
|
|
1510
1519
|
let hasReadyItem = ({buffer} as fetchState: t) => {
|
|
1511
|
-
switch buffer->
|
|
1520
|
+
switch buffer->Array.get(0) {
|
|
1512
1521
|
| Some(item) => item->Internal.getItemBlockNumber <= fetchState->bufferBlockNumber
|
|
1513
1522
|
| None => false
|
|
1514
1523
|
}
|
|
@@ -1519,7 +1528,7 @@ let getReadyItemsCount = (fetchState: t, ~targetSize: int, ~fromItem) => {
|
|
|
1519
1528
|
let acc = ref(0)
|
|
1520
1529
|
let isFinished = ref(false)
|
|
1521
1530
|
while !isFinished.contents {
|
|
1522
|
-
switch fetchState.buffer->
|
|
1531
|
+
switch fetchState.buffer->Array.get(fromItem + acc.contents) {
|
|
1523
1532
|
| Some(item) =>
|
|
1524
1533
|
let itemBlockNumber = item->Internal.getItemBlockNumber
|
|
1525
1534
|
if itemBlockNumber <= readyBlockNumber.contents {
|
|
@@ -1951,7 +1960,7 @@ let isReadyToEnterReorgThreshold = ({endBlock, blockLag, buffer, knownHeight} as
|
|
|
1951
1960
|
|
|
1952
1961
|
let sortForUnorderedBatch = {
|
|
1953
1962
|
let hasFullBatch = ({buffer} as fetchState: t, ~batchSizeTarget) => {
|
|
1954
|
-
switch buffer->
|
|
1963
|
+
switch buffer->Array.get(batchSizeTarget - 1) {
|
|
1955
1964
|
| Some(item) => item->Internal.getItemBlockNumber <= fetchState->bufferBlockNumber
|
|
1956
1965
|
| None => false
|
|
1957
1966
|
}
|
|
@@ -1966,7 +1975,7 @@ let sortForUnorderedBatch = {
|
|
|
1966
1975
|
if totalRange <= 0 {
|
|
1967
1976
|
0.
|
|
1968
1977
|
} else {
|
|
1969
|
-
let progress = switch fetchState.buffer->
|
|
1978
|
+
let progress = switch fetchState.buffer->Array.get(0) {
|
|
1970
1979
|
| Some(item) => item->Internal.getItemBlockNumber - firstEventBlock
|
|
1971
1980
|
| None => fetchState->bufferBlockNumber - firstEventBlock
|
|
1972
1981
|
}
|
|
@@ -2001,7 +2010,7 @@ let sortForUnorderedBatch = {
|
|
|
2001
2010
|
|
|
2002
2011
|
let getProgressBlockNumberAt = ({buffer} as fetchState: t, ~index) => {
|
|
2003
2012
|
let bufferBlockNumber = fetchState->bufferBlockNumber
|
|
2004
|
-
switch buffer->
|
|
2013
|
+
switch buffer->Array.get(index) {
|
|
2005
2014
|
| Some(item) if bufferBlockNumber >= item->Internal.getItemBlockNumber =>
|
|
2006
2015
|
item->Internal.getItemBlockNumber - 1
|
|
2007
2016
|
| _ => bufferBlockNumber
|
package/src/FetchState.res.mjs
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import * as Utils from "./Utils.res.mjs";
|
|
4
4
|
import * as Js_math from "@rescript/runtime/lib/es6/Js_math.js";
|
|
5
5
|
import * as Logging from "./Logging.res.mjs";
|
|
6
|
-
import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
|
|
7
6
|
import * as Prometheus from "./Prometheus.res.mjs";
|
|
8
7
|
import * as Stdlib_Int from "@rescript/runtime/lib/es6/Stdlib_Int.js";
|
|
9
8
|
import * as Primitive_int from "@rescript/runtime/lib/es6/Primitive_int.js";
|
|
@@ -271,7 +270,7 @@ function make(partitions, maxAddrInPartition, nextPartitionIndex, dynamicContrac
|
|
|
271
270
|
}
|
|
272
271
|
newPartitions.sort(ascSortFn);
|
|
273
272
|
let partitionsCount = newPartitions.length;
|
|
274
|
-
let idsInAscOrder =
|
|
273
|
+
let idsInAscOrder = Array(partitionsCount);
|
|
275
274
|
let entities = {};
|
|
276
275
|
for (let idx$2 = 0; idx$2 < partitionsCount; ++idx$2) {
|
|
277
276
|
let p$1 = newPartitions[idx$2];
|
|
@@ -489,7 +488,9 @@ function updateInternal(fetchState, optimizedPartitionsOpt, indexingAddressesOpt
|
|
|
489
488
|
let latestOnBlockBlockNumber;
|
|
490
489
|
if (onBlockConfigs.length !== 0) {
|
|
491
490
|
let mutItems$1 = mutItemsRef;
|
|
492
|
-
let item =
|
|
491
|
+
let item = (
|
|
492
|
+
mutItems$1 !== undefined ? mutItems$1 : fetchState.buffer
|
|
493
|
+
)[fetchState.targetBufferSize - 1 | 0];
|
|
493
494
|
let maxBlockNumber;
|
|
494
495
|
if (item !== undefined) {
|
|
495
496
|
maxBlockNumber = item.blockNumber;
|
|
@@ -726,6 +727,7 @@ function registerDynamicContracts(fetchState, items) {
|
|
|
726
727
|
let earliestRegisteringEventBlockNumber = Infinity;
|
|
727
728
|
let hasDCWithFilterByAddresses = false;
|
|
728
729
|
let noEventsAddresses = {};
|
|
730
|
+
let registeringAddresses = {};
|
|
729
731
|
for (let itemIdx = 0, itemIdx_finish = items.length; itemIdx < itemIdx_finish; ++itemIdx) {
|
|
730
732
|
let item = items[itemIdx];
|
|
731
733
|
let dcs = item.dcs;
|
|
@@ -761,8 +763,7 @@ function registerDynamicContracts(fetchState, items) {
|
|
|
761
763
|
}
|
|
762
764
|
shouldRemove = true;
|
|
763
765
|
} else {
|
|
764
|
-
let
|
|
765
|
-
let registeringContract = registeringContracts[dc.address];
|
|
766
|
+
let registeringContract = registeringAddresses[dc.address];
|
|
766
767
|
let shouldUpdate;
|
|
767
768
|
if (registeringContract !== undefined) {
|
|
768
769
|
if (registeringContract.contractName !== dc.contractName) {
|
|
@@ -777,7 +778,8 @@ function registerDynamicContracts(fetchState, items) {
|
|
|
777
778
|
}
|
|
778
779
|
if (shouldUpdate) {
|
|
779
780
|
earliestRegisteringEventBlockNumber = Primitive_int.min(earliestRegisteringEventBlockNumber, dcWithStartBlock_effectiveStartBlock);
|
|
780
|
-
|
|
781
|
+
Utils.Dict.getOrInsertEmptyDict(registeringContractsByContract, dc.contractName)[dc.address] = dcWithStartBlock;
|
|
782
|
+
registeringAddresses[dc.address] = dcWithStartBlock;
|
|
781
783
|
} else {
|
|
782
784
|
shouldRemove = true;
|
|
783
785
|
}
|
|
@@ -800,8 +802,11 @@ function registerDynamicContracts(fetchState, items) {
|
|
|
800
802
|
}
|
|
801
803
|
shouldRemove = true;
|
|
802
804
|
} else {
|
|
803
|
-
let
|
|
804
|
-
if (
|
|
805
|
+
let existingContract$2 = registeringAddresses[dc.address];
|
|
806
|
+
if (existingContract$2 !== undefined) {
|
|
807
|
+
if (existingContract$2.contractName !== dc.contractName) {
|
|
808
|
+
warnDifferentContractType(fetchState, existingContract$2, dcAsIndexingAddress);
|
|
809
|
+
}
|
|
805
810
|
shouldRemove = true;
|
|
806
811
|
} else {
|
|
807
812
|
let logger$1 = Logging.createChild({
|
|
@@ -811,6 +816,7 @@ function registerDynamicContracts(fetchState, items) {
|
|
|
811
816
|
});
|
|
812
817
|
Logging.childWarn(logger$1, `Persisting contract registration without fetching: Contract doesn't have any events to fetch. It'll be picked up on restart if you add events for the contract.`);
|
|
813
818
|
noEventsAddresses[dc.address] = dcAsIndexingAddress;
|
|
819
|
+
registeringAddresses[dc.address] = dcAsIndexingAddress;
|
|
814
820
|
}
|
|
815
821
|
}
|
|
816
822
|
}
|
|
@@ -888,8 +894,8 @@ function registerDynamicContracts(fetchState, items) {
|
|
|
888
894
|
}
|
|
889
895
|
}
|
|
890
896
|
}
|
|
891
|
-
let registeringContracts
|
|
892
|
-
Object.assign(newIndexingAddresses, registeringContracts
|
|
897
|
+
let registeringContracts = registeringContractsByContract[contractName];
|
|
898
|
+
Object.assign(newIndexingAddresses, registeringContracts);
|
|
893
899
|
}
|
|
894
900
|
Object.assign(newIndexingAddresses, noEventsAddresses);
|
|
895
901
|
let optimizedPartitions = createPartitionsFromIndexingAddresses(registeringContractsByContract, fetchState.contractConfigs, dynamicContractsRef, fetchState.normalSelection, fetchState.optimizedPartitions.maxAddrInPartition, fetchState.optimizedPartitions.nextPartitionIndex + newPartitions.length | 0, mutExistingPartitions.concat(newPartitions), 0);
|
|
@@ -1179,7 +1185,7 @@ function getNextQuery(fetchState, concurrencyLimit) {
|
|
|
1179
1185
|
}
|
|
1180
1186
|
|
|
1181
1187
|
function hasReadyItem(fetchState) {
|
|
1182
|
-
let item =
|
|
1188
|
+
let item = fetchState.buffer[0];
|
|
1183
1189
|
if (item !== undefined) {
|
|
1184
1190
|
return item.blockNumber <= bufferBlockNumber(fetchState);
|
|
1185
1191
|
} else {
|
|
@@ -1192,7 +1198,7 @@ function getReadyItemsCount(fetchState, targetSize, fromItem) {
|
|
|
1192
1198
|
let acc = 0;
|
|
1193
1199
|
let isFinished = false;
|
|
1194
1200
|
while (!isFinished) {
|
|
1195
|
-
let item =
|
|
1201
|
+
let item = fetchState.buffer[fromItem + acc | 0];
|
|
1196
1202
|
if (item !== undefined) {
|
|
1197
1203
|
let itemBlockNumber = item.blockNumber;
|
|
1198
1204
|
if (itemBlockNumber <= readyBlockNumber) {
|
|
@@ -1544,7 +1550,7 @@ function isReadyToEnterReorgThreshold(fetchState) {
|
|
|
1544
1550
|
}
|
|
1545
1551
|
|
|
1546
1552
|
function hasFullBatch(fetchState, batchSizeTarget) {
|
|
1547
|
-
let item =
|
|
1553
|
+
let item = fetchState.buffer[batchSizeTarget - 1 | 0];
|
|
1548
1554
|
if (item !== undefined) {
|
|
1549
1555
|
return item.blockNumber <= bufferBlockNumber(fetchState);
|
|
1550
1556
|
} else {
|
|
@@ -1561,7 +1567,7 @@ function getProgressPercentage(fetchState) {
|
|
|
1561
1567
|
if (totalRange <= 0) {
|
|
1562
1568
|
return 0;
|
|
1563
1569
|
}
|
|
1564
|
-
let item =
|
|
1570
|
+
let item = fetchState.buffer[0];
|
|
1565
1571
|
let progress = item !== undefined ? item.blockNumber - firstEventBlock | 0 : bufferBlockNumber(fetchState) - firstEventBlock | 0;
|
|
1566
1572
|
return progress / totalRange;
|
|
1567
1573
|
}
|
|
@@ -1593,7 +1599,7 @@ function sortForUnorderedBatch(fetchStates, batchSizeTarget) {
|
|
|
1593
1599
|
|
|
1594
1600
|
function getProgressBlockNumberAt(fetchState, index) {
|
|
1595
1601
|
let bufferBlockNumber$1 = bufferBlockNumber(fetchState);
|
|
1596
|
-
let item =
|
|
1602
|
+
let item = fetchState.buffer[index];
|
|
1597
1603
|
if (item !== undefined && bufferBlockNumber$1 >= item.blockNumber) {
|
|
1598
1604
|
return item.blockNumber - 1 | 0;
|
|
1599
1605
|
} else {
|