UNPKG

@saberhq/sail

Version:

Account caching and batched loading for React-based Solana applications.

34 lines 1.44 kB
"use strict"; 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