mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
26 lines
856 B
TypeScript
26 lines
856 B
TypeScript
import type { PublicClient, GetLogsParameters, Log } from 'viem';
|
|
|
|
export default async function getLogs(
|
|
publicClient: PublicClient,
|
|
baseFilter: GetLogsParameters,
|
|
fromBlock: bigint,
|
|
toBlock: bigint,
|
|
signal?: AbortSignal,
|
|
): Promise<Array<Log>> {
|
|
const filter = { ...baseFilter, fromBlock, toBlock } as GetLogsParameters;
|
|
|
|
if (signal?.aborted) {
|
|
throw new DOMException('Aborted', 'AbortError');
|
|
}
|
|
|
|
try {
|
|
return (await publicClient.getLogs(filter));
|
|
} catch {
|
|
const middle = fromBlock + (toBlock - fromBlock) / BigInt(2);
|
|
const leftPromise = getLogs(publicClient, baseFilter, fromBlock, middle, signal);
|
|
const rightPromise = getLogs(publicClient, baseFilter, middle + BigInt(1), toBlock, signal);
|
|
const [ left, right ] = await Promise.all([ leftPromise, rightPromise ]);
|
|
return [ ...left, ...right ];
|
|
}
|
|
};
|