UNPKG

batchloader

Version:

BatchLoader is a utility for data fetching layer to reduce requests via batching written in TypeScript. Inspired by Facebook's DataLoader

40 lines 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var batchloader_1 = require("./batchloader"); exports.proxyLoaderWithCache = function (cache, loader, keyToUniqueId, batchDelay, batchSize) { return new batchloader_1.BatchLoader(function (keys) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var values, len, missingKeys, missingIndexes, i, missingValues, mlen, missingKeyValues, i, value; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4, cache.mget(keys)]; case 1: values = _a.sent(); len = values.length; missingKeys = []; missingIndexes = []; for (i = 0; i < len; i += 1) { if (values[i] === undefined) { missingKeys.push(keys[i]); missingIndexes.push(i); } } if (!missingKeys.length) return [3, 3]; return [4, loader.loadMany(missingKeys)]; case 2: missingValues = _a.sent(); mlen = missingValues.length; missingKeyValues = []; for (i = 0; i < mlen; i += 1) { value = missingValues[i]; values[missingIndexes[i]] = value; missingKeyValues.push([missingKeys[i], value]); } cache.mset(missingKeyValues); _a.label = 3; case 3: return [2, values]; } }); }); }, keyToUniqueId, batchDelay, batchSize); }; //# sourceMappingURL=cacheproxyloader.js.map