Documentation / @etherfold/core / EthereumIndexer
Class: EthereumIndexer<ABI, ProcessResultType>
Defined in: packages/core/src/indexer.ts:66
Type Parameters
ABI
ABI extends Abi
ProcessResultType
ProcessResultType = void
Constructors
Constructor
new EthereumIndexer<
ABI,ProcessResultType>(provider,processor,source,config?):EthereumIndexer<ABI,ProcessResultType>
Defined in: packages/core/src/indexer.ts:139
Parameters
provider
EIP1193ProviderWithoutEvents
processor
EventProcessor<ABI, ProcessResultType>
source
IndexingSource<ABI>
config?
ProvidedIndexerConfig<ABI> = {}
Returns
EthereumIndexer<ABI, ProcessResultType>
Properties
_feed
protected_feed:object
Defined in: packages/core/src/indexer.ts:125
ifNotExecuting
ifNotExecuting: (
args) =>Promise<LastSync<ABI>>
Parameters
args
lastSyncFetched
LastSync<ABI>
newEvents
LogEvent<ABI>[]
Returns
Promise<LastSync<ABI>>
next
next: (
args) =>Promise<LastSync<ABI>>
Parameters
args
lastSyncFetched
LastSync<ABI>
newEvents
LogEvent<ABI>[]
Returns
Promise<LastSync<ABI>>
now
now: (
args) =>Promise<LastSync<ABI>>
Parameters
args
lastSyncFetched
LastSync<ABI>
newEvents
LogEvent<ABI>[]
Returns
Promise<LastSync<ABI>>
once
once: (
args) =>Promise<LastSync<ABI>>
Parameters
args
lastSyncFetched
LastSync<ABI>
newEvents
LogEvent<ABI>[]
Returns
Promise<LastSync<ABI>>
executing
Get Signature
get executing():
Promise<T> |undefined
Returns
Promise<T> | undefined
block()
block():
void
Returns
void
cancel()
cancel():
void
Returns
void
getContext()
getContext():
undefined
Returns
undefined
reset()
reset():
void
Returns
void
setContext()
setContext(
context):void
Parameters
context
undefined
Returns
void
unblock()
unblock():
void
Returns
void
_index
protected_index:object
Defined in: packages/core/src/indexer.ts:124
ifNotExecuting
ifNotExecuting: () =>
Promise<LastSync<ABI>>
Returns
Promise<LastSync<ABI>>
next
next: () =>
Promise<LastSync<ABI>>
Returns
Promise<LastSync<ABI>>
now
now: () =>
Promise<LastSync<ABI>>
Returns
Promise<LastSync<ABI>>
once
once: () =>
Promise<LastSync<ABI>>
Returns
Promise<LastSync<ABI>>
executing
Get Signature
get executing():
Promise<T> |undefined
Returns
Promise<T> | undefined
block()
block():
void
Returns
void
cancel()
cancel():
void
Returns
void
getContext()
getContext():
undefined
Returns
undefined
reset()
reset():
void
Returns
void
setContext()
setContext(
context):void
Parameters
context
undefined
Returns
void
unblock()
unblock():
void
Returns
void
_load
protected_load:object
Defined in: packages/core/src/indexer.ts:128
ifNotExecuting
ifNotExecuting: () =>
Promise<LastSync<ABI>>
Returns
Promise<LastSync<ABI>>
next
next: () =>
Promise<LastSync<ABI>>
Returns
Promise<LastSync<ABI>>
now
now: () =>
Promise<LastSync<ABI>>
Returns
Promise<LastSync<ABI>>
once
once: () =>
Promise<LastSync<ABI>>
Returns
Promise<LastSync<ABI>>
executing
Get Signature
get executing():
Promise<T> |undefined
Returns
Promise<T> | undefined
block()
block():
void
Returns
void
cancel()
cancel():
void
Returns
void
getContext()
getContext():
undefined
Returns
undefined
reset()
reset():
void
Returns
void
setContext()
setContext(
context):void
Parameters
context
undefined
Returns
void
unblock()
unblock():
void
Returns
void
_save
protected_save:object
Defined in: packages/core/src/indexer.ts:129
ifNotExecuting
ifNotExecuting: (
args) =>Promise<void>
Parameters
args
eventStream
LogEvent<ABI>[]
lastSync
LastSync<ABI>
source
IndexingSource<ABI>
Returns
Promise<void>
next
next: (
args) =>Promise<void>
Parameters
args
eventStream
LogEvent<ABI>[]
lastSync
LastSync<ABI>
source
IndexingSource<ABI>
Returns
Promise<void>
now
now: (
args) =>Promise<void>
Parameters
args
eventStream
LogEvent<ABI>[]
lastSync
LastSync<ABI>
source
IndexingSource<ABI>
Returns
Promise<void>
once
once: (
args) =>Promise<void>
Parameters
args
eventStream
LogEvent<ABI>[]
lastSync
LastSync<ABI>
source
IndexingSource<ABI>
Returns
Promise<void>
executing
Get Signature
get executing():
Promise<T> |undefined
Returns
Promise<T> | undefined
block()
block():
void
Returns
void
cancel()
cancel():
void
Returns
void
getContext()
getContext():
LogEvent<ABI>[] |undefined
Returns
LogEvent<ABI>[] | undefined
reset()
reset():
void
Returns
void
setContext()
setContext(
context):void
Parameters
context
LogEvent<ABI>[]
Returns
void
unblock()
unblock():
void
Returns
void
blockTimestampCache
protectedblockTimestampCache:Map<string, {number:number;timestamp:number; }>
Defined in: packages/core/src/indexer.ts:119
Block timestamps already fetched, so the unconfirmed window is not re-fetched every round.
Only ever populated on the fallback path, for nodes that do not put blockTimestamp on the log. Those nodes cost one eth_getBlockByHash per block, and getFromBlock deliberately re-scans back to latestBlock - finality on every round to catch reorgs, so without a cache the same unconfirmed blocks are fetched again on every single round.
Keyed by block HASH, and that is what makes it safe. A hash uniquely determines a block, so a cached timestamp cannot become wrong: a reorged-out block's hash simply never appears again. Keying by NUMBER would be silently wrong across exactly the reorgs the re-scan exists to detect, since the same height would return the dead branch's timestamp.
config
protectedconfig:UsedIndexerConfig<ABI>
Defined in: packages/core/src/indexer.ts:93
defaultFromBlock
readonlydefaultFromBlock:number
Defined in: packages/core/src/indexer.ts:71
finality
protectedfinality:number
Defined in: packages/core/src/indexer.ts:94
lastSync
protectedlastSync:LastSync<ABI> |undefined
Defined in: packages/core/src/indexer.ts:101
logEventFetcher
protectedlogEventFetcher:LogEventFetcher<ABI>
Defined in: packages/core/src/indexer.ts:99
onLastSyncUpdated
onLastSyncUpdated: ((
lastSync) =>void) |undefined
Defined in: packages/core/src/indexer.ts:74
onLoad
onLoad: ((
state) =>Promise<void>) |undefined
Defined in: packages/core/src/indexer.ts:72
onProcessorDrift
onProcessorDrift: ((
report) =>void) |undefined
Defined in: packages/core/src/indexer.ts:85
Called when the processor's declared version is unchanged but its code is not: the "author edited a handler and forgot to bump version" case.
The report is ALSO logged at error level through named-logs, so a host that sets nothing is never silent; this exists because a log line is hard to alert on, and routing a drift to a pager or a CI failure is a decision only the host can make. Set strictProcessorDrift in the config to refuse to start instead.
onStateUpdated
onStateUpdated: ((
state) =>void) |undefined
Defined in: packages/core/src/indexer.ts:73
processor
protectedprocessor:EventProcessor<ABI,ProcessResultType>
Defined in: packages/core/src/indexer.ts:141
provider
protectedprovider:EIP1193ProviderWithoutEvents
Defined in: packages/core/src/indexer.ts:90
source
protectedsource:IndexingSource<ABI>
Defined in: packages/core/src/indexer.ts:91
sourceHashes
protectedsourceHashes:object[]
Defined in: packages/core/src/indexer.ts:96
hash
hash:
string
startBlock
startBlock:
number
streamConfigHash
protectedstreamConfigHash:string
Defined in: packages/core/src/indexer.ts:97
Methods
_onLastSyncUpdated()
protected_onLastSyncUpdated():void
Defined in: packages/core/src/indexer.ts:892
Returns
void
_onLoad()
protected_onLoad(state):Promise<void>
Defined in: packages/core/src/indexer.ts:902
Parameters
state
Returns
Promise<void>
_onStateUpdated()
protected_onStateUpdated(outcome):void
Defined in: packages/core/src/indexer.ts:882
Parameters
outcome
ProcessResultType
Returns
void
disableProcessing()
disableProcessing():
void
Defined in: packages/core/src/indexer.ts:229
Returns
void
feed()
feed(
eventStream,lastSyncFetched?):Promise<LastSync<ABI>>
Defined in: packages/core/src/indexer.ts:196
Parameters
eventStream
LogEvent<ABI>[]
lastSyncFetched?
LastSync<ABI>
Returns
Promise<LastSync<ABI>>
fetchLogsFromProvider()
fetchLogsFromProvider<
ABI>(lastSync,unlessCancelled):Promise<{eventStream:LogEvent<ABI>[];lastSync:LastSync<ABI>; }>
Defined in: packages/core/src/indexer.ts:633
Type Parameters
ABI
ABI extends Abi
Parameters
lastSync
LastSync<ABI>
unlessCancelled
<T>(p) => Promise<T>
Returns
Promise<{ eventStream: LogEvent<ABI>[]; lastSync: LastSync<ABI>; }>
freshLastSync()
protectedfreshLastSync(processorHash):LastSync<ABI>
Defined in: packages/core/src/indexer.ts:861
Parameters
processorHash
string
Returns
LastSync<ABI>
getBlocks()
protectedgetBlocks(blockHashes,unlessCancelled):Promise<object[]>
Defined in: packages/core/src/indexer.ts:782
Parameters
blockHashes
string[]
unlessCancelled
<T>(p) => Promise<T>
Returns
Promise<object[]>
getTransactions()
protectedgetTransactions(transactionHashes,unlessCancelled):Promise<LogTransactionData[]>
Defined in: packages/core/src/indexer.ts:799
Parameters
transactionHashes
string[]
unlessCancelled
<T>(p) => Promise<T>
Returns
Promise<LogTransactionData[]>
indexerMatches()
protectedindexerMatches(lastToBlock,context):boolean
Defined in: packages/core/src/indexer.ts:817
Parameters
lastToBlock
number
context
Returns
boolean
indexMore()
indexMore():
Promise<LastSync<ABI>>
Defined in: packages/core/src/indexer.ts:214
Returns
Promise<LastSync<ABI>>
load()
load():
Promise<LastSync<ABI>>
Defined in: packages/core/src/indexer.ts:183
Returns
Promise<LastSync<ABI>>
promiseToFeed()
protectedpromiseToFeed(params,__namedParameters):Promise<LastSync<ABI>>
Defined in: packages/core/src/indexer.ts:480
Parameters
params
lastSyncFetched
LastSync<ABI>
newEvents
LogEvent<ABI>[]
__namedParameters
CancelOperations
Returns
Promise<LastSync<ABI>>
promiseToIndex()
protectedpromiseToIndex(__namedParameters):Promise<LastSync<ABI>>
Defined in: packages/core/src/indexer.ts:576
Parameters
__namedParameters
CancelOperations
Returns
Promise<LastSync<ABI>>
promiseToLoad()
protectedpromiseToLoad():Promise<LastSync<ABI>>
Defined in: packages/core/src/indexer.ts:364
Returns
Promise<LastSync<ABI>>
promiseToSave()
protectedpromiseToSave(params):Promise<void>
Defined in: packages/core/src/indexer.ts:550
Parameters
params
eventStream
LogEvent<ABI>[]
lastSync
LastSync<ABI>
source
IndexingSource<ABI>
Returns
Promise<void>
reenableProcessing()
reenableProcessing():
void
Defined in: packages/core/src/indexer.ts:237
Returns
void
reinit()
reinit(
provider,source,config):void
Defined in: packages/core/src/indexer.ts:148
Parameters
provider
EIP1193ProviderWithoutEvents
source
IndexingSource<ABI>
config
Returns
void
reportProcessorDriftIfAny()
protectedreportProcessorDriftIfAny(context,processorHash):void
Defined in: packages/core/src/indexer.ts:832
Compare the fingerprint of the code that computed the persisted state with the code loaded now, and report if they differ.
Either side missing means "unknown", never "drifted": a cursor written before this field existed, or a processor that cannot fingerprint itself, must not report on every boot. The stored fingerprint is deliberately NOT refreshed afterwards, because it describes the code that produced the state, so the report repeats every boot until the author bumps version (which discards the state) rather than going quiet after being seen once.
Parameters
context
processorHash
string
Returns
void
reset()
reset():
Promise<void>
Defined in: packages/core/src/indexer.ts:343
Returns
Promise<void>
save()
protectedsave(source,eventStream,lastSync):Promise<void>
Defined in: packages/core/src/indexer.ts:360
Parameters
source
IndexingSource<ABI>
eventStream
LogEvent<ABI>[]
lastSync
LastSync<ABI>
Returns
Promise<void>
updateIndexer()
updateIndexer(
update):Promise<void>
Defined in: packages/core/src/indexer.ts:241
Parameters
update
provider?
EIP1193ProviderWithoutEvents
source?
IndexingSource<ABI>
streamConfig?
Returns
Promise<void>
updateProcessor()
updateProcessor(
newProcessor,options?):Promise<void>
Defined in: packages/core/src/indexer.ts:308
Parameters
newProcessor
EventProcessor<ABI, ProcessResultType>
options?
force?
boolean
Returns
Promise<void>