@saberhq/sail
Version:
Account caching and batched loading for React-based Solana applications.
33 lines • 1.18 kB
JavaScript
import { SailGetMultipleAccountsError } from "..";
export function chunks(array, size) {
return Array.apply(0, new Array(Math.ceil(array.length / size))).map((_, index) => array.slice(index * size, (index + 1) * size));
}
const GET_MULTIPLE_ACCOUNTS_CHUNK_SIZE = 99;
export const getMultipleAccounts = async (connection, keys, onGetMultipleAccountsError, commitment = "confirmed") => {
const result = await Promise.all(chunks(keys, GET_MULTIPLE_ACCOUNTS_CHUNK_SIZE).map(async (chunk) => {
try {
return {
keys: chunk,
array: await connection.getMultipleAccountsInfo(chunk, commitment),
};
}
catch (e) {
const error = new SailGetMultipleAccountsError(chunk, commitment, e);
onGetMultipleAccountsError(error);
return {
keys: chunk,
error,
};
}
}));
const array = result
.map((el) => {
if ("error" in el) {
return el.keys.map(() => el.error);
}
return el.array;
})
.flat();
return { keys, array };
};
//# sourceMappingURL=fetchers.js.map