export async function batchFetch(
addresses: Array,
fetchBatch: (chunk: Array) => Promise>,
chunkSize: number = 100 // limit for web3 client getMultipleAccounts fetch
): Promise> {
const results: Array> = await Promise.all(chunks(addresses, chunkSize).map((chunk) => fetchBatch(chunk)));
return results.reduce((acc, curr) => acc.concat(...curr), new Array());
}
export function chunks(array: T[], size: number): T[][] {
return [...new Array(Math.ceil(array.length / size)).keys()].map((_, index) =>
array.slice(index * size, (index + 1) * size)
);
}