Skip to content

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

readonly executing: 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

readonly executing: 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

readonly executing: 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

readonly executing: 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

protected blockTimestampCache: 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

protected config: UsedIndexerConfig<ABI>

Defined in: core/dist/indexer.d.ts:27


defaultFromBlock

readonly defaultFromBlock: number

Defined in: core/dist/indexer.d.ts:10


finality

protected finality: number

Defined in: core/dist/indexer.d.ts:28


lastSync

protected lastSync: LastSync<ABI> | undefined

Defined in: core/dist/indexer.d.ts:35


logEventFetcher

protected logEventFetcher: 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

protected processor: EventProcessor<ABI, ProcessResultType>

Defined in: core/dist/indexer.d.ts:9


provider

protected provider: EIP1193ProviderWithoutEvents

Defined in: core/dist/indexer.d.ts:25


source

protected source: IndexingSource<ABI>

Defined in: core/dist/indexer.d.ts:26


sourceHashes

protected sourceHashes: object[]

Defined in: core/dist/indexer.d.ts:29

hash

hash: string

startBlock

startBlock: number


streamConfigHash

protected streamConfigHash: 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

LoadingState

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()

protected freshLastSync(processorHash): LastSync<ABI>

Defined in: core/dist/indexer.d.ts:185

Parameters

processorHash

string

Returns

LastSync<ABI>


getBlocks()

protected getBlocks(blockHashes, unlessCancelled): Promise<object[]>

Defined in: core/dist/indexer.d.ts:168

Parameters

blockHashes

string[]

unlessCancelled

<T>(p) => Promise<T>

Returns

Promise<object[]>


getTransactions()

protected getTransactions(transactionHashes, unlessCancelled): Promise<LogTransactionData[]>

Defined in: core/dist/indexer.d.ts:171

Parameters

transactionHashes

string[]

unlessCancelled

<T>(p) => Promise<T>

Returns

Promise<LogTransactionData[]>


indexerMatches()

protected indexerMatches(lastToBlock, context): boolean

Defined in: core/dist/indexer.d.ts:172

Parameters

lastToBlock

number

context

ContextIdentifier

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()

protected promiseToFeed(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()

protected promiseToIndex(__namedParameters): Promise<LastSync<ABI>>

Defined in: core/dist/indexer.d.ts:163

Parameters

__namedParameters

CancelOperations

Returns

Promise<LastSync<ABI>>


promiseToLoad()

protected promiseToLoad(): Promise<LastSync<ABI>>

Defined in: core/dist/indexer.d.ts:153

Returns

Promise<LastSync<ABI>>


promiseToSave()

protected promiseToSave(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

ProvidedIndexerConfig<ABI>

Returns

void


reportProcessorDriftIfAny()

protected reportProcessorDriftIfAny(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

ContextIdentifier

processorHash

string

Returns

void


reset()

reset(): Promise<void>

Defined in: core/dist/indexer.d.ts:151

Returns

Promise<void>


save()

protected save(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?

ProvidedStreamConfig

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>