@saberhq/sail
Version:
Account caching and batched loading for React-based Solana applications.
34 lines • 1.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchKeysUsingLoader = void 0;
const tslib_1 = require("tslib");
const lodash_zip_1 = tslib_1.__importDefault(require("lodash.zip"));
const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
const errors_1 = require("../errors");
const fetchKeysUsingLoader = async (loader, keys) => {
const keysWithIndex = keys.map((k, i) => [k, i]);
const result = await loader.loadMany(keysWithIndex.map((k) => k[0]));
const nextData = keys.map(() => ({ data: null }));
(0, lodash_zip_1.default)(keysWithIndex, result).forEach(([indexInfo, keyResult]) => {
(0, tiny_invariant_1.default)(indexInfo, "index info missing");
(0, tiny_invariant_1.default)(keyResult !== undefined, "key result missing");
const [accountId, nextIndex] = indexInfo;
if (keyResult instanceof Error) {
return (nextData[nextIndex] = {
data: null,
error: new errors_1.SailAccountLoadError(keyResult, accountId),
});
}
return (nextData[nextIndex] = {
data: keyResult
? {
accountId,
accountInfo: keyResult,
}
: null,
});
});
return nextData;
};
exports.fetchKeysUsingLoader = fetchKeysUsingLoader;
//# sourceMappingURL=fetchKeysUsingLoader.js.map
;