@saberhq/sail
Version:
Account caching and batched loading for React-based Solana applications.
38 lines • 1.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMultipleAccounts = exports.chunks = void 0;
const __1 = require("..");
function chunks(array, size) {
return Array.apply(0, new Array(Math.ceil(array.length / size))).map((_, index) => array.slice(index * size, (index + 1) * size));
}
exports.chunks = chunks;
const GET_MULTIPLE_ACCOUNTS_CHUNK_SIZE = 99;
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 __1.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 };
};
exports.getMultipleAccounts = getMultipleAccounts;
//# sourceMappingURL=fetchers.js.map
;