Documentation / @etherfold/browser / EthereumIndexer
Interface: EthereumIndexer<ABI, ProcessResultType>
Defined in: core/dist/indexer.d.ts:8
Type Parameters
ABI
ABI extends Abi
ProcessResultType
ProcessResultType = void
Properties
_feed
protected_feed:object
Defined in: core/dist/indexer.d.ts:69
executing
readonlyexecuting:Promise<LastSync<ABI>> |undefined
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>>
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: core/dist/indexer.d.ts:56
executing
readonlyexecuting:Promise<LastSync<ABI>> |undefined
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>>
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: core/dist/indexer.d.ts:94
executing
readonlyexecuting:Promise<LastSync<ABI>> |undefined
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>>
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: core/dist/indexer.d.ts:107
executing
readonlyexecuting:Promise<void> |undefined
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>
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: core/dist/indexer.d.ts:52
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: core/dist/indexer.d.ts:27
defaultFromBlock
readonlydefaultFromBlock:number
Defined in: core/dist/indexer.d.ts:10
finality
protectedfinality:number
Defined in: core/dist/indexer.d.ts:28
lastSync
protectedlastSync:LastSync<ABI> |undefined
Defined in: core/dist/indexer.d.ts:35
logEventFetcher
protectedlogEventFetcher:LogEventFetcher<ABI>
Defined in: core/dist/indexer.d.ts:34
onLastSyncUpdated
onLastSyncUpdated: ((
lastSync) =>void) |undefined
Defined in: core/dist/indexer.d.ts:13
onLoad
onLoad: ((
state) =>Promise<void>) |undefined
Defined in: core/dist/indexer.d.ts:11
onProcessorDrift
onProcessorDrift: ((
report) =>void) |undefined
Defined in: core/dist/indexer.d.ts:24
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: core/dist/indexer.d.ts:12
processor
protectedprocessor:EventProcessor<ABI,ProcessResultType>
Defined in: core/dist/indexer.d.ts:9
provider
protectedprovider:EIP1193ProviderWithoutEvents
Defined in: core/dist/indexer.d.ts:25
source
protectedsource:IndexingSource<ABI>
Defined in: core/dist/indexer.d.ts:26
sourceHashes
protectedsourceHashes:object[]
Defined in: core/dist/indexer.d.ts:29
hash
hash:
string
startBlock
startBlock:
number
streamConfigHash
protectedstreamConfigHash:string
Defined in: core/dist/indexer.d.ts:33
Methods
_onLastSyncUpdated()
protected_onLastSyncUpdated():void
Defined in: core/dist/indexer.d.ts:187
Returns
void
_onLoad()
protected_onLoad(state):Promise<void>
Defined in: core/dist/indexer.d.ts:188
Parameters
state
Returns
Promise<void>
_onStateUpdated()
protected_onStateUpdated(outcome):void
Defined in: core/dist/indexer.d.ts:186
Parameters
outcome
ProcessResultType
Returns
void
disableProcessing()
disableProcessing():
void
Defined in: core/dist/indexer.d.ts:141
Returns
void
feed()
feed(
eventStream,lastSyncFetched?):Promise<LastSync<ABI>>
Defined in: core/dist/indexer.d.ts:139
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: core/dist/indexer.d.ts:164
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: core/dist/indexer.d.ts:185
Parameters
processorHash
string
Returns
LastSync<ABI>
getBlocks()
protectedgetBlocks(blockHashes,unlessCancelled):Promise<object[]>
Defined in: core/dist/indexer.d.ts:168
Parameters
blockHashes
string[]
unlessCancelled
<T>(p) => Promise<T>
Returns
Promise<object[]>
getTransactions()
protectedgetTransactions(transactionHashes,unlessCancelled):Promise<LogTransactionData[]>
Defined in: core/dist/indexer.d.ts:171
Parameters
transactionHashes
string[]
unlessCancelled
<T>(p) => Promise<T>
Returns
Promise<LogTransactionData[]>
indexerMatches()
protectedindexerMatches(lastToBlock,context):boolean
Defined in: core/dist/indexer.d.ts:172
Parameters
lastToBlock
number
context
Returns
boolean
indexMore()
indexMore():
Promise<LastSync<ABI>>
Defined in: core/dist/indexer.d.ts:140
Returns
Promise<LastSync<ABI>>
load()
load():
Promise<LastSync<ABI>>
Defined in: core/dist/indexer.d.ts:138
Returns
Promise<LastSync<ABI>>
promiseToFeed()
protectedpromiseToFeed(params,__namedParameters):Promise<LastSync<ABI>>
Defined in: core/dist/indexer.d.ts:154
Parameters
params
lastSyncFetched
LastSync<ABI>
newEvents
LogEvent<ABI>[]
__namedParameters
CancelOperations
Returns
Promise<LastSync<ABI>>
promiseToIndex()
protectedpromiseToIndex(__namedParameters):Promise<LastSync<ABI>>
Defined in: core/dist/indexer.d.ts:163
Parameters
__namedParameters
CancelOperations
Returns
Promise<LastSync<ABI>>
promiseToLoad()
protectedpromiseToLoad():Promise<LastSync<ABI>>
Defined in: core/dist/indexer.d.ts:153
Returns
Promise<LastSync<ABI>>
promiseToSave()
protectedpromiseToSave(params):Promise<void>
Defined in: core/dist/indexer.d.ts:158
Parameters
params
eventStream
LogEvent<ABI>[]
lastSync
LastSync<ABI>
source
IndexingSource<ABI>
Returns
Promise<void>
reenableProcessing()
reenableProcessing():
void
Defined in: core/dist/indexer.d.ts:142
Returns
void
reinit()
reinit(
provider,source,config):void
Defined in: core/dist/indexer.d.ts:137
Parameters
provider
EIP1193ProviderWithoutEvents
source
IndexingSource<ABI>
config
Returns
void
reportProcessorDriftIfAny()
protectedreportProcessorDriftIfAny(context,processorHash):void
Defined in: core/dist/indexer.d.ts:184
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: core/dist/indexer.d.ts:151
Returns
Promise<void>
save()
protectedsave(source,eventStream,lastSync):Promise<void>
Defined in: core/dist/indexer.d.ts:152
Parameters
source
IndexingSource<ABI>
eventStream
LogEvent<ABI>[]
lastSync
LastSync<ABI>
Returns
Promise<void>
updateIndexer()
updateIndexer(
update):Promise<void>
Defined in: core/dist/indexer.d.ts:143
Parameters
update
provider?
EIP1193ProviderWithoutEvents
source?
IndexingSource<ABI>
streamConfig?
Returns
Promise<void>
updateProcessor()
updateProcessor(
newProcessor,options?):Promise<void>
Defined in: core/dist/indexer.d.ts:148
Parameters
newProcessor
EventProcessor<ABI, ProcessResultType>
options?
force?
boolean
Returns
Promise<void>