batchloader
Advanced tools
| import { CacheLoader, ICache } from './cacheloader'; | ||
| import { MappedBatchLoader } from './mappedbatchloader'; | ||
| import { IBatchLoader } from './types'; | ||
| export declare type BatchLoadFn<Key, Value> = (keys: Key[]) => Value[] | Promise<Value[]>; | ||
| export declare type KeyToUniqueId<Key> = (key: Key) => string; | ||
| export declare class BatchLoader<Key, Value> implements IBatchLoader<Key, Value> { | ||
| protected batchFn: BatchLoadFn<Key, Value>; | ||
| protected keyToUniqueId: KeyToUniqueId<Key> | null; | ||
| protected batchDelay: number; | ||
| protected batchSize: number; | ||
| protected queuedKeys: Key[]; | ||
| protected batchPromise: Promise<Value[]> | null; | ||
| constructor(batchFn: BatchLoadFn<Key, Value>, keyToUniqueId: KeyToUniqueId<Key> | null, batchDelay?: number, batchSize?: number); | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value, key: Key) => MappedValue): MappedBatchLoader<Key, Value, MappedValue>; | ||
| cacheLoader(cache?: ICache<Key, Value>): CacheLoader<Key, Value>; | ||
| protected triggerBatch(): Promise<Value[]>; | ||
| protected runBatchNow(): Promise<Value[]>; | ||
| private maybeBatchInChunks; | ||
| private batchInChunks; | ||
| } | ||
| //# sourceMappingURL=batchloader.d.ts.map |
| {"version":3,"file":"batchloader.d.ts","sourceRoot":"","sources":["../../src/batchloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAgB,MAAM,WAAW,CAAC;AAEvD,oBAAY,WAAW,CAAC,GAAG,EAAE,KAAK,IAAI,CACpC,IAAI,EAAE,GAAG,EAAE,KACR,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAEhC,oBAAY,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;AAOtD,qBAAa,WAAW,CAAC,GAAG,EAAE,KAAK,CAAE,YAAW,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IAKpE,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI;IAClD,SAAS,CAAC,UAAU;IACpB,SAAS,CAAC,SAAS;IAPrB,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAM;IACjC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;gBAG3C,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAChC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,EACxC,UAAU,SAAI,EACd,SAAS,SAA0B;IAGxC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IAQ9B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAcvC,SAAS,CAAC,WAAW,EAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,WAAW,GAC7C,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAItC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;IAIvE,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAY1C,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiCzC,OAAO,CAAC,kBAAkB;YAOZ,aAAa;CAqB5B"} |
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| var __generator = (this && this.__generator) || function (thisArg, body) { | ||
| var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
| return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
| function verb(n) { return function (v) { return step([n, v]); }; } | ||
| function step(op) { | ||
| if (f) throw new TypeError("Generator is already executing."); | ||
| while (_) try { | ||
| if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
| if (y = 0, t) op = [op[0] & 2, t.value]; | ||
| switch (op[0]) { | ||
| case 0: case 1: t = op; break; | ||
| case 4: _.label++; return { value: op[1], done: false }; | ||
| case 5: _.label++; y = op[1]; op = [0]; continue; | ||
| case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
| default: | ||
| if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
| if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
| if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
| if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
| if (t[2]) _.ops.pop(); | ||
| _.trys.pop(); continue; | ||
| } | ||
| op = body.call(thisArg, _); | ||
| } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
| if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
| } | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var cacheloader_1 = require("./cacheloader"); | ||
| var mappedbatchloader_1 = require("./mappedbatchloader"); | ||
| var sleep = function (ms) { | ||
| return new Promise(function (resolve) { | ||
| setTimeout(resolve, ms); | ||
| }); | ||
| }; | ||
| var BatchLoader = (function () { | ||
| function BatchLoader(batchFn, keyToUniqueId, batchDelay, batchSize) { | ||
| if (batchDelay === void 0) { batchDelay = 0; } | ||
| if (batchSize === void 0) { batchSize = Number.MAX_SAFE_INTEGER; } | ||
| this.batchFn = batchFn; | ||
| this.keyToUniqueId = keyToUniqueId; | ||
| this.batchDelay = batchDelay; | ||
| this.batchSize = batchSize; | ||
| this.queuedKeys = []; | ||
| this.batchPromise = null; | ||
| } | ||
| BatchLoader.prototype.load = function (key) { | ||
| var queuedKeys = this.queuedKeys; | ||
| var index = queuedKeys.length; | ||
| queuedKeys.push(key); | ||
| return this.triggerBatch().then(function (values) { return values[index]; }); | ||
| }; | ||
| BatchLoader.prototype.loadMany = function (keys) { | ||
| if (keys.length) { | ||
| var queuedKeys = this.queuedKeys; | ||
| var index_1 = queuedKeys.length; | ||
| queuedKeys.push.apply(queuedKeys, keys); | ||
| var length_1 = keys.length; | ||
| return this.triggerBatch().then(function (values) { | ||
| return values.slice(index_1, index_1 + length_1); | ||
| }); | ||
| } | ||
| return Promise.resolve([]); | ||
| }; | ||
| BatchLoader.prototype.mapLoader = function (mapFn) { | ||
| return new mappedbatchloader_1.MappedBatchLoader(this, mapFn); | ||
| }; | ||
| BatchLoader.prototype.cacheLoader = function (cache) { | ||
| return new cacheloader_1.CacheLoader(this, cache); | ||
| }; | ||
| BatchLoader.prototype.triggerBatch = function () { | ||
| var _this = this; | ||
| return (this.batchPromise || | ||
| (this.batchPromise = new Promise(function (resolve, reject) { | ||
| setTimeout(function () { | ||
| _this.batchPromise = null; | ||
| _this.runBatchNow().then(resolve, reject); | ||
| }, _this.batchDelay); | ||
| }))); | ||
| }; | ||
| BatchLoader.prototype.runBatchNow = function () { | ||
| var _a = this, queuedKeys = _a.queuedKeys, keyToUniqueId = _a.keyToUniqueId; | ||
| this.queuedKeys = []; | ||
| if (keyToUniqueId) { | ||
| var idMap = {}; | ||
| var indexToId_1 = []; | ||
| var idToNewIndex_1 = {}; | ||
| var newIndex = 0; | ||
| var uniqueKeys = []; | ||
| var len = queuedKeys.length; | ||
| for (var i = 0; i < len; i += 1) { | ||
| var key = queuedKeys[i]; | ||
| var id = keyToUniqueId(key); | ||
| indexToId_1[i] = id; | ||
| if (idMap[id] !== true) { | ||
| idMap[id] = true; | ||
| idToNewIndex_1[id] = newIndex; | ||
| newIndex += 1; | ||
| uniqueKeys.push(key); | ||
| } | ||
| } | ||
| return this.maybeBatchInChunks(uniqueKeys).then(function (values) { | ||
| return queuedKeys.map(function (_key, i) { return values[idToNewIndex_1[indexToId_1[i]]]; }); | ||
| }); | ||
| } | ||
| return this.maybeBatchInChunks(queuedKeys); | ||
| }; | ||
| BatchLoader.prototype.maybeBatchInChunks = function (keys) { | ||
| if (keys.length <= this.batchSize) { | ||
| return Promise.resolve(this.batchFn(keys)); | ||
| } | ||
| return this.batchInChunks(keys); | ||
| }; | ||
| BatchLoader.prototype.batchInChunks = function (keys) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var _a, batchSize, batchDelay, promises, kLen, i, results, rLen, values, i; | ||
| return __generator(this, function (_b) { | ||
| switch (_b.label) { | ||
| case 0: | ||
| _a = this, batchSize = _a.batchSize, batchDelay = _a.batchDelay; | ||
| promises = []; | ||
| kLen = keys.length; | ||
| i = 0; | ||
| _b.label = 1; | ||
| case 1: | ||
| if (!(i < kLen)) return [3, 4]; | ||
| promises.push(this.batchFn(keys.slice(i, i + batchSize))); | ||
| if (!batchDelay) return [3, 3]; | ||
| return [4, sleep(batchDelay)]; | ||
| case 2: | ||
| _b.sent(); | ||
| _b.label = 3; | ||
| case 3: | ||
| i += batchSize; | ||
| return [3, 1]; | ||
| case 4: return [4, Promise.all(promises)]; | ||
| case 5: | ||
| results = _b.sent(); | ||
| rLen = results.length; | ||
| values = []; | ||
| for (i = 0; i < rLen; i += 1) { | ||
| values = values.concat(results[i]); | ||
| } | ||
| return [2, values]; | ||
| } | ||
| }); | ||
| }); | ||
| }; | ||
| return BatchLoader; | ||
| }()); | ||
| exports.BatchLoader = BatchLoader; | ||
| //# sourceMappingURL=batchloader.js.map |
| {"version":3,"file":"batchloader.js","sourceRoot":"","sources":["../../src/batchloader.ts"],"names":[],"mappings":"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"} |
| import { MappedBatchLoader } from './mappedbatchloader'; | ||
| import { IBatchLoader, MaybePromise } from './types'; | ||
| export interface ICache<Key, Value> { | ||
| clear(): void; | ||
| delete(key: Key): boolean; | ||
| get(key: Key): Value | undefined; | ||
| set(key: Key, value: Value): void; | ||
| } | ||
| export declare class CacheLoader<Key, Value> implements IBatchLoader<Key, Value>, ICache<Key, MaybePromise<Value>> { | ||
| protected loader: IBatchLoader<Key, Value>; | ||
| cache: ICache<Key, Value>; | ||
| promiseCache: Map<Key, Promise<Value>>; | ||
| constructor(loader: IBatchLoader<Key, Value>, cache?: ICache<Key, Value>); | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value, key: Key) => MappedValue): MappedBatchLoader<Key, Value, MappedValue>; | ||
| get(key: Key): Promise<Value> | undefined; | ||
| set(key: Key, value: Value): void; | ||
| delete(key: Key): boolean; | ||
| clear(): void; | ||
| } | ||
| //# sourceMappingURL=cacheloader.d.ts.map |
| {"version":3,"file":"cacheloader.d.ts","sourceRoot":"","sources":["../../src/cacheloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,WAAW,MAAM,CAAC,GAAG,EAAE,KAAK;IAChC,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACnC;AAED,qBAAa,WAAW,CAAC,GAAG,EAAE,KAAK,CACjC,YAAW,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAInE,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;IAJ3B,YAAY,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAGlC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EACnC,KAAK,GAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAyB;IAKnD,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IAkB9B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIvC,SAAS,CAAC,WAAW,EAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,WAAW,GAC7C,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAItC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;IAczC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKjC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAMzB,KAAK,IAAI,IAAI;CAIrB"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var mappedbatchloader_1 = require("./mappedbatchloader"); | ||
| var CacheLoader = (function () { | ||
| function CacheLoader(loader, cache) { | ||
| if (cache === void 0) { cache = new Map(); } | ||
| this.loader = loader; | ||
| this.cache = cache; | ||
| this.promiseCache = new Map(); | ||
| } | ||
| CacheLoader.prototype.load = function (key) { | ||
| var _this = this; | ||
| var promiseCache = this.promiseCache; | ||
| var pv = promiseCache.get(key); | ||
| if (pv) { | ||
| return pv; | ||
| } | ||
| var value = this.cache.get(key); | ||
| pv = | ||
| value === undefined | ||
| ? this.loader.load(key).then(function (val) { | ||
| _this.set(key, val); | ||
| return val; | ||
| }) | ||
| : Promise.resolve(value); | ||
| promiseCache.set(key, pv); | ||
| return pv; | ||
| }; | ||
| CacheLoader.prototype.loadMany = function (keys) { | ||
| var _this = this; | ||
| return Promise.all(keys.map(function (key) { return _this.load(key); })); | ||
| }; | ||
| CacheLoader.prototype.mapLoader = function (mapFn) { | ||
| return new mappedbatchloader_1.MappedBatchLoader(this, mapFn); | ||
| }; | ||
| CacheLoader.prototype.get = function (key) { | ||
| var pv = this.promiseCache.get(key); | ||
| if (pv) { | ||
| return pv; | ||
| } | ||
| var v = this.cache.get(key); | ||
| if (v === undefined) { | ||
| return undefined; | ||
| } | ||
| pv = Promise.resolve(v); | ||
| this.promiseCache.set(key, pv); | ||
| return pv; | ||
| }; | ||
| CacheLoader.prototype.set = function (key, value) { | ||
| this.promiseCache.delete(key); | ||
| this.cache.set(key, value); | ||
| }; | ||
| CacheLoader.prototype.delete = function (key) { | ||
| var pDeleted = this.promiseCache.delete(key); | ||
| var deleted = this.cache.delete(key); | ||
| return pDeleted || deleted; | ||
| }; | ||
| CacheLoader.prototype.clear = function () { | ||
| this.promiseCache.clear(); | ||
| this.cache.clear(); | ||
| }; | ||
| return CacheLoader; | ||
| }()); | ||
| exports.CacheLoader = CacheLoader; | ||
| //# sourceMappingURL=cacheloader.js.map |
| {"version":3,"file":"cacheloader.js","sourceRoot":"","sources":["../../src/cacheloader.ts"],"names":[],"mappings":";;AAAA,2DAA0D;AAU1D;IAIE,qBACY,MAAgC,EACnC,KAAiD;QAAjD,sBAAA,EAAA,YAAgC,GAAG,EAAc;QAD9C,WAAM,GAAN,MAAM,CAA0B;QACnC,UAAK,GAAL,KAAK,CAA4C;QAExD,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,CAAC;IAEM,0BAAI,GAAX,UAAY,GAAQ;QAApB,iBAgBC;QAfS,IAAA,gCAAY,CAAU;QAC9B,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,EAAE;YACA,KAAK,KAAK,SAAS;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG;oBAC7B,KAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACnB,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC;gBACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,8BAAQ,GAAf,UAAgB,IAAW;QAA3B,iBAEC;QADC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAd,CAAc,CAAC,CAAC,CAAC;IACxD,CAAC;IAEM,+BAAS,GAAhB,UACE,KAA8C;QAE9C,OAAO,IAAI,qCAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEM,yBAAG,GAAV,UAAW,GAAQ;QACjB,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,yBAAG,GAAV,UAAW,GAAQ,EAAE,KAAY;QAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,4BAAM,GAAb,UAAc,GAAQ;QACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,QAAQ,IAAI,OAAO,CAAC;IAC7B,CAAC;IAEM,2BAAK,GAAZ;QACE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IACH,kBAAC;AAAD,CAAC,AApED,IAoEC;AApEY,kCAAW"} |
| import { BatchLoader, KeyToUniqueId } from './batchloader'; | ||
| import { IBatchLoader, MaybePromise } from './types'; | ||
| export interface IBatchCache<Key, Value> { | ||
| mget: (keys: Key[]) => MaybePromise<Array<Value | undefined>>; | ||
| mset: (keyValues: Array<[Key, Value]>) => MaybePromise<void>; | ||
| } | ||
| export declare const proxyLoaderWithCache: <Key, Value>(cache: IBatchCache<Key, Value>, loader: IBatchLoader<Key, Value>, keyToUniqueId: KeyToUniqueId<Key> | null, batchDelay?: number | undefined, batchSize?: number | undefined) => BatchLoader<Key, Value>; | ||
| //# sourceMappingURL=cacheproxyloader.d.ts.map |
| {"version":3,"file":"cacheproxyloader.d.ts","sourceRoot":"","sources":["../../src/cacheproxyloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,WAAW,WAAW,CAAC,GAAG,EAAE,KAAK;IACrC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,oBAAoB,sNAwC9B,CAAC"} |
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| var __generator = (this && this.__generator) || function (thisArg, body) { | ||
| var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
| return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
| function verb(n) { return function (v) { return step([n, v]); }; } | ||
| function step(op) { | ||
| if (f) throw new TypeError("Generator is already executing."); | ||
| while (_) try { | ||
| if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
| if (y = 0, t) op = [op[0] & 2, t.value]; | ||
| switch (op[0]) { | ||
| case 0: case 1: t = op; break; | ||
| case 4: _.label++; return { value: op[1], done: false }; | ||
| case 5: _.label++; y = op[1]; op = [0]; continue; | ||
| case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
| default: | ||
| if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
| if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
| if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
| if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
| if (t[2]) _.ops.pop(); | ||
| _.trys.pop(); continue; | ||
| } | ||
| op = body.call(thisArg, _); | ||
| } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
| if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
| } | ||
| }; | ||
| var _this = this; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var batchloader_1 = require("./batchloader"); | ||
| exports.proxyLoaderWithCache = function (cache, loader, keyToUniqueId, batchDelay, batchSize) { | ||
| return new batchloader_1.BatchLoader(function (keys) { return __awaiter(_this, void 0, void 0, function () { | ||
| var values, len, missingKeys, missingIndexes, i, missingValues, mlen, missingKeyValues, i, value; | ||
| return __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 |
| {"version":3,"file":"cacheproxyloader.js","sourceRoot":"","sources":["../../src/cacheproxyloader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBAiDA;;AAjDA,+CAA6D;AAQhD,QAAA,oBAAoB,GAAG,UAClC,KAA8B,EAC9B,MAAgC,EAChC,aAAwC,EACxC,UAAmB,EACnB,SAAkB;IAElB,OAAA,IAAI,yBAAW,CACb,UAAO,IAAI;;;;wBACM,WAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;oBAA/B,MAAM,GAAG,SAAsB;oBAE/B,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;oBACpB,WAAW,GAAU,EAAE,CAAC;oBACxB,cAAc,GAAa,EAAE,CAAC;oBACpC,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;wBAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;4BAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC1B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBACxB;qBACF;yBAEG,WAAW,CAAC,MAAM,EAAlB,cAAkB;oBACE,WAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAA;;oBAAlD,aAAa,GAAG,SAAkC;oBAClD,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;oBAC5B,gBAAgB,GAAwB,EAAE,CAAC;oBACjD,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;wBAC1B,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;wBAC/B,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;wBAClC,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;qBAChD;oBAGD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;wBAG/B,WAAO,MAAiB,EAAC;;;SAC1B,EACD,aAAa,EACb,UAAU,EACV,SAAS,CACV;AAjCD,CAiCC,CAAC"} |
| export * from './batchloader'; | ||
| export * from './mappedbatchloader'; | ||
| export * from './cacheproxyloader'; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"} |
| "use strict"; | ||
| function __export(m) { | ||
| for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
| } | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| __export(require("./batchloader")); | ||
| __export(require("./mappedbatchloader")); | ||
| __export(require("./cacheproxyloader")); | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,mCAA8B;AAC9B,yCAAoC;AACpC,wCAAmC"} |
| import { IBatchLoader } from './types'; | ||
| export declare class MappedBatchLoader<Key, Value, MappedValue> implements IBatchLoader<Key, MappedValue> { | ||
| protected loader: IBatchLoader<Key, Value>; | ||
| protected mapFn: (value: Value, key: Key) => MappedValue | Promise<MappedValue>; | ||
| constructor(loader: IBatchLoader<Key, Value>, mapFn: (value: Value, key: Key) => MappedValue | Promise<MappedValue>); | ||
| load(key: Key): Promise<MappedValue>; | ||
| loadMany(keys: Key[]): Promise<MappedValue[]>; | ||
| mapLoader<RemappedValue>(mapFn: (value: MappedValue, key: Key) => RemappedValue): MappedBatchLoader<Key, MappedValue, RemappedValue>; | ||
| } | ||
| //# sourceMappingURL=mappedbatchloader.d.ts.map |
| {"version":3,"file":"mappedbatchloader.d.ts","sourceRoot":"","sources":["../../src/mappedbatchloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,qBAAa,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CACpD,YAAW,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC;IAEvC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1C,SAAS,CAAC,KAAK,EAAE,CACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,KACL,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBAJ7B,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EAChC,KAAK,EAAE,CACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,KACL,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAGlC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB7C,SAAS,CAAC,aAAa,EAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,aAAa,GACrD,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC;CAGtD"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var MappedBatchLoader = (function () { | ||
| function MappedBatchLoader(loader, mapFn) { | ||
| this.loader = loader; | ||
| this.mapFn = mapFn; | ||
| } | ||
| MappedBatchLoader.prototype.load = function (key) { | ||
| var _this = this; | ||
| return this.loader.load(key).then(function (value) { return _this.mapFn(value, key); }); | ||
| }; | ||
| MappedBatchLoader.prototype.loadMany = function (keys) { | ||
| var _this = this; | ||
| return this.loader.loadMany(keys).then(function (values) { | ||
| var hasPromise = false; | ||
| var results = []; | ||
| var len = values.length; | ||
| for (var i = 0; i < len; i += 1) { | ||
| var res = _this.mapFn(values[i], keys[i]); | ||
| results.push(res); | ||
| hasPromise = | ||
| hasPromise || | ||
| (res != null && typeof res.then === 'function'); | ||
| } | ||
| return hasPromise ? Promise.all(results) : results; | ||
| }); | ||
| }; | ||
| MappedBatchLoader.prototype.mapLoader = function (mapFn) { | ||
| return new MappedBatchLoader(this, mapFn); | ||
| }; | ||
| return MappedBatchLoader; | ||
| }()); | ||
| exports.MappedBatchLoader = MappedBatchLoader; | ||
| //# sourceMappingURL=mappedbatchloader.js.map |
| {"version":3,"file":"mappedbatchloader.js","sourceRoot":"","sources":["../../src/mappedbatchloader.ts"],"names":[],"mappings":";;AAEA;IAEE,2BACY,MAAgC,EAChC,KAG6B;QAJ7B,WAAM,GAAN,MAAM,CAA0B;QAChC,UAAK,GAAL,KAAK,CAGwB;IACtC,CAAC;IAEG,gCAAI,GAAX,UAAY,GAAQ;QAApB,iBAEC;QADC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAtB,CAAsB,CAAC,CAAC;IACvE,CAAC;IAEM,oCAAQ,GAAf,UAAgB,IAAW;QAA3B,iBAcC;QAbC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,MAAM;YAC5C,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAM,OAAO,GAA8C,EAAE,CAAC;YAC9D,IAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAM,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,UAAU;oBACR,UAAU;wBACV,CAAC,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;aAC5D;YACD,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAyB,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,qCAAS,GAAhB,UACE,KAAsD;QAEtD,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACH,wBAAC;AAAD,CAAC,AAnCD,IAmCC;AAnCY,8CAAiB"} |
| export interface IBatchLoader<Key, Value> { | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value) => MappedValue): IBatchLoader<Key, MappedValue>; | ||
| } | ||
| export declare type MaybePromise<T> = T | Promise<T>; | ||
| //# sourceMappingURL=types.d.ts.map |
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,GAAG,EAAE,KAAK;IACtC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,SAAS,CAAC,WAAW,EACnB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,WAAW,GACnC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;CACnC;AAED,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=types.js.map |
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""} |
| import { CacheLoader, ICache } from './cacheloader'; | ||
| import { MappedBatchLoader } from './mappedbatchloader'; | ||
| import { IBatchLoader } from './types'; | ||
| export declare type BatchLoadFn<Key, Value> = (keys: Key[]) => Value[] | Promise<Value[]>; | ||
| export declare type KeyToUniqueId<Key> = (key: Key) => string; | ||
| export declare class BatchLoader<Key, Value> implements IBatchLoader<Key, Value> { | ||
| protected batchFn: BatchLoadFn<Key, Value>; | ||
| protected keyToUniqueId: KeyToUniqueId<Key> | null; | ||
| protected batchDelay: number; | ||
| protected batchSize: number; | ||
| protected queuedKeys: Key[]; | ||
| protected batchPromise: Promise<Value[]> | null; | ||
| constructor(batchFn: BatchLoadFn<Key, Value>, keyToUniqueId: KeyToUniqueId<Key> | null, batchDelay?: number, batchSize?: number); | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value, key: Key) => MappedValue): MappedBatchLoader<Key, Value, MappedValue>; | ||
| cacheLoader(cache?: ICache<Key, Value>): CacheLoader<Key, Value>; | ||
| protected triggerBatch(): Promise<Value[]>; | ||
| protected runBatchNow(): Promise<Value[]>; | ||
| private maybeBatchInChunks; | ||
| private batchInChunks; | ||
| } | ||
| //# sourceMappingURL=batchloader.d.ts.map |
| {"version":3,"file":"batchloader.d.ts","sourceRoot":"","sources":["../../src/batchloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAgB,MAAM,WAAW,CAAC;AAEvD,oBAAY,WAAW,CAAC,GAAG,EAAE,KAAK,IAAI,CACpC,IAAI,EAAE,GAAG,EAAE,KACR,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAEhC,oBAAY,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;AAOtD,qBAAa,WAAW,CAAC,GAAG,EAAE,KAAK,CAAE,YAAW,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IAKpE,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI;IAClD,SAAS,CAAC,UAAU;IACpB,SAAS,CAAC,SAAS;IAPrB,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAM;IACjC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;gBAG3C,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAChC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,EACxC,UAAU,SAAI,EACd,SAAS,SAA0B;IAGxC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IAQ9B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAcvC,SAAS,CAAC,WAAW,EAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,WAAW,GAC7C,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAItC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;IAIvE,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAY1C,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiCzC,OAAO,CAAC,kBAAkB;YAOZ,aAAa;CAqB5B"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const cacheloader_1 = require("./cacheloader"); | ||
| const mappedbatchloader_1 = require("./mappedbatchloader"); | ||
| const sleep = (ms) => new Promise((resolve) => { | ||
| setTimeout(resolve, ms); | ||
| }); | ||
| class BatchLoader { | ||
| constructor(batchFn, keyToUniqueId, batchDelay = 0, batchSize = Number.MAX_SAFE_INTEGER) { | ||
| this.batchFn = batchFn; | ||
| this.keyToUniqueId = keyToUniqueId; | ||
| this.batchDelay = batchDelay; | ||
| this.batchSize = batchSize; | ||
| this.queuedKeys = []; | ||
| this.batchPromise = null; | ||
| } | ||
| load(key) { | ||
| const { queuedKeys } = this; | ||
| const index = queuedKeys.length; | ||
| queuedKeys.push(key); | ||
| return this.triggerBatch().then((values) => values[index]); | ||
| } | ||
| loadMany(keys) { | ||
| if (keys.length) { | ||
| const { queuedKeys } = this; | ||
| const index = queuedKeys.length; | ||
| queuedKeys.push(...keys); | ||
| const { length } = keys; | ||
| return this.triggerBatch().then((values) => values.slice(index, index + length)); | ||
| } | ||
| return Promise.resolve([]); | ||
| } | ||
| mapLoader(mapFn) { | ||
| return new mappedbatchloader_1.MappedBatchLoader(this, mapFn); | ||
| } | ||
| cacheLoader(cache) { | ||
| return new cacheloader_1.CacheLoader(this, cache); | ||
| } | ||
| triggerBatch() { | ||
| return (this.batchPromise || | ||
| (this.batchPromise = new Promise((resolve, reject) => { | ||
| setTimeout(() => { | ||
| this.batchPromise = null; | ||
| this.runBatchNow().then(resolve, reject); | ||
| }, this.batchDelay); | ||
| }))); | ||
| } | ||
| runBatchNow() { | ||
| const { queuedKeys, keyToUniqueId } = this; | ||
| this.queuedKeys = []; | ||
| if (keyToUniqueId) { | ||
| const idMap = {}; | ||
| const indexToId = []; | ||
| const idToNewIndex = {}; | ||
| let newIndex = 0; | ||
| const uniqueKeys = []; | ||
| const len = queuedKeys.length; | ||
| for (let i = 0; i < len; i += 1) { | ||
| const key = queuedKeys[i]; | ||
| const id = keyToUniqueId(key); | ||
| indexToId[i] = id; | ||
| if (idMap[id] !== true) { | ||
| idMap[id] = true; | ||
| idToNewIndex[id] = newIndex; | ||
| newIndex += 1; | ||
| uniqueKeys.push(key); | ||
| } | ||
| } | ||
| return this.maybeBatchInChunks(uniqueKeys).then((values) => queuedKeys.map((_key, i) => values[idToNewIndex[indexToId[i]]])); | ||
| } | ||
| return this.maybeBatchInChunks(queuedKeys); | ||
| } | ||
| maybeBatchInChunks(keys) { | ||
| if (keys.length <= this.batchSize) { | ||
| return Promise.resolve(this.batchFn(keys)); | ||
| } | ||
| return this.batchInChunks(keys); | ||
| } | ||
| async batchInChunks(keys) { | ||
| const { batchSize, batchDelay } = this; | ||
| const promises = []; | ||
| const kLen = keys.length; | ||
| for (let i = 0; i < kLen; i += batchSize) { | ||
| promises.push(this.batchFn(keys.slice(i, i + batchSize))); | ||
| if (batchDelay) { | ||
| await sleep(batchDelay); | ||
| } | ||
| } | ||
| const results = await Promise.all(promises); | ||
| const rLen = results.length; | ||
| let values = []; | ||
| for (let i = 0; i < rLen; i += 1) { | ||
| values = values.concat(results[i]); | ||
| } | ||
| return values; | ||
| } | ||
| } | ||
| exports.BatchLoader = BatchLoader; | ||
| //# sourceMappingURL=batchloader.js.map |
| {"version":3,"file":"batchloader.js","sourceRoot":"","sources":["../../src/batchloader.ts"],"names":[],"mappings":"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"} |
| import { MappedBatchLoader } from './mappedbatchloader'; | ||
| import { IBatchLoader, MaybePromise } from './types'; | ||
| export interface ICache<Key, Value> { | ||
| clear(): void; | ||
| delete(key: Key): boolean; | ||
| get(key: Key): Value | undefined; | ||
| set(key: Key, value: Value): void; | ||
| } | ||
| export declare class CacheLoader<Key, Value> implements IBatchLoader<Key, Value>, ICache<Key, MaybePromise<Value>> { | ||
| protected loader: IBatchLoader<Key, Value>; | ||
| cache: ICache<Key, Value>; | ||
| promiseCache: Map<Key, Promise<Value>>; | ||
| constructor(loader: IBatchLoader<Key, Value>, cache?: ICache<Key, Value>); | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value, key: Key) => MappedValue): MappedBatchLoader<Key, Value, MappedValue>; | ||
| get(key: Key): Promise<Value> | undefined; | ||
| set(key: Key, value: Value): void; | ||
| delete(key: Key): boolean; | ||
| clear(): void; | ||
| } | ||
| //# sourceMappingURL=cacheloader.d.ts.map |
| {"version":3,"file":"cacheloader.d.ts","sourceRoot":"","sources":["../../src/cacheloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,WAAW,MAAM,CAAC,GAAG,EAAE,KAAK;IAChC,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACnC;AAED,qBAAa,WAAW,CAAC,GAAG,EAAE,KAAK,CACjC,YAAW,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAInE,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;IAJ3B,YAAY,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAGlC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EACnC,KAAK,GAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAyB;IAKnD,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IAkB9B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIvC,SAAS,CAAC,WAAW,EAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,WAAW,GAC7C,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAItC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;IAczC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKjC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAMzB,KAAK,IAAI,IAAI;CAIrB"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const mappedbatchloader_1 = require("./mappedbatchloader"); | ||
| class CacheLoader { | ||
| constructor(loader, cache = new Map()) { | ||
| this.loader = loader; | ||
| this.cache = cache; | ||
| this.promiseCache = new Map(); | ||
| } | ||
| load(key) { | ||
| const { promiseCache } = this; | ||
| let pv = promiseCache.get(key); | ||
| if (pv) { | ||
| return pv; | ||
| } | ||
| const value = this.cache.get(key); | ||
| pv = | ||
| value === undefined | ||
| ? this.loader.load(key).then((val) => { | ||
| this.set(key, val); | ||
| return val; | ||
| }) | ||
| : Promise.resolve(value); | ||
| promiseCache.set(key, pv); | ||
| return pv; | ||
| } | ||
| loadMany(keys) { | ||
| return Promise.all(keys.map((key) => this.load(key))); | ||
| } | ||
| mapLoader(mapFn) { | ||
| return new mappedbatchloader_1.MappedBatchLoader(this, mapFn); | ||
| } | ||
| get(key) { | ||
| let pv = this.promiseCache.get(key); | ||
| if (pv) { | ||
| return pv; | ||
| } | ||
| const v = this.cache.get(key); | ||
| if (v === undefined) { | ||
| return undefined; | ||
| } | ||
| pv = Promise.resolve(v); | ||
| this.promiseCache.set(key, pv); | ||
| return pv; | ||
| } | ||
| set(key, value) { | ||
| this.promiseCache.delete(key); | ||
| this.cache.set(key, value); | ||
| } | ||
| delete(key) { | ||
| const pDeleted = this.promiseCache.delete(key); | ||
| const deleted = this.cache.delete(key); | ||
| return pDeleted || deleted; | ||
| } | ||
| clear() { | ||
| this.promiseCache.clear(); | ||
| this.cache.clear(); | ||
| } | ||
| } | ||
| exports.CacheLoader = CacheLoader; | ||
| //# sourceMappingURL=cacheloader.js.map |
| {"version":3,"file":"cacheloader.js","sourceRoot":"","sources":["../../src/cacheloader.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAU1D,MAAa,WAAW;IAItB,YACY,MAAgC,EACnC,QAA4B,IAAI,GAAG,EAAc;QAD9C,WAAM,GAAN,MAAM,CAA0B;QACnC,UAAK,GAAL,KAAK,CAA4C;QAExD,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,CAAC;IAEM,IAAI,CAAC,GAAQ;QAClB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,EAAE;YACA,KAAK,KAAK,SAAS;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACnB,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC;gBACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,QAAQ,CAAC,IAAW;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAEM,SAAS,CACd,KAA8C;QAE9C,OAAO,IAAI,qCAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEM,GAAG,CAAC,GAAQ;QACjB,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,GAAG,CAAC,GAAQ,EAAE,KAAY;QAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,GAAQ;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,QAAQ,IAAI,OAAO,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AApED,kCAoEC"} |
| import { BatchLoader, KeyToUniqueId } from './batchloader'; | ||
| import { IBatchLoader, MaybePromise } from './types'; | ||
| export interface IBatchCache<Key, Value> { | ||
| mget: (keys: Key[]) => MaybePromise<Array<Value | undefined>>; | ||
| mset: (keyValues: Array<[Key, Value]>) => MaybePromise<void>; | ||
| } | ||
| export declare const proxyLoaderWithCache: <Key, Value>(cache: IBatchCache<Key, Value>, loader: IBatchLoader<Key, Value>, keyToUniqueId: KeyToUniqueId<Key> | null, batchDelay?: number | undefined, batchSize?: number | undefined) => BatchLoader<Key, Value>; | ||
| //# sourceMappingURL=cacheproxyloader.d.ts.map |
| {"version":3,"file":"cacheproxyloader.d.ts","sourceRoot":"","sources":["../../src/cacheproxyloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,WAAW,WAAW,CAAC,GAAG,EAAE,KAAK;IACrC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,oBAAoB,sNAwC9B,CAAC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const batchloader_1 = require("./batchloader"); | ||
| exports.proxyLoaderWithCache = (cache, loader, keyToUniqueId, batchDelay, batchSize) => new batchloader_1.BatchLoader(async (keys) => { | ||
| const values = await cache.mget(keys); | ||
| const len = values.length; | ||
| const missingKeys = []; | ||
| const missingIndexes = []; | ||
| for (let i = 0; i < len; i += 1) { | ||
| if (values[i] === undefined) { | ||
| missingKeys.push(keys[i]); | ||
| missingIndexes.push(i); | ||
| } | ||
| } | ||
| if (missingKeys.length) { | ||
| const missingValues = await loader.loadMany(missingKeys); | ||
| const mlen = missingValues.length; | ||
| const missingKeyValues = []; | ||
| for (let i = 0; i < mlen; i += 1) { | ||
| const value = missingValues[i]; | ||
| values[missingIndexes[i]] = value; | ||
| missingKeyValues.push([missingKeys[i], value]); | ||
| } | ||
| cache.mset(missingKeyValues); | ||
| } | ||
| return values; | ||
| }, keyToUniqueId, batchDelay, batchSize); | ||
| //# sourceMappingURL=cacheproxyloader.js.map |
| {"version":3,"file":"cacheproxyloader.js","sourceRoot":"","sources":["../../src/cacheproxyloader.ts"],"names":[],"mappings":";;AAAA,iDAA6D;AAQhD,QAAA,oBAAoB,GAAG,CAClC,KAA8B,EAC9B,MAAgC,EAChC,aAAwC,EACxC,UAAmB,EACnB,SAAkB,EACO,EAAE,CAC3B,IAAI,yBAAW,CACb,KAAK,EAAE,IAAI,EAAoB,EAAE;IAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,MAAM,WAAW,GAAU,EAAE,CAAC;IAC9B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;QAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;KACF;IAED,IAAI,WAAW,CAAC,MAAM,EAAE;QACtB,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;QAClC,MAAM,gBAAgB,GAAwB,EAAE,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;YAChC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAClC,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAChD;QAGD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC9B;IAED,OAAO,MAAiB,CAAC;AAC3B,CAAC,EACD,aAAa,EACb,UAAU,EACV,SAAS,CACV,CAAC"} |
| export * from './batchloader'; | ||
| export * from './mappedbatchloader'; | ||
| export * from './cacheproxyloader'; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"} |
| "use strict"; | ||
| function __export(m) { | ||
| for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
| } | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| __export(require("./batchloader")); | ||
| __export(require("./mappedbatchloader")); | ||
| __export(require("./cacheproxyloader")); | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,mCAA8B;AAC9B,yCAAoC;AACpC,wCAAmC"} |
| import { IBatchLoader } from './types'; | ||
| export declare class MappedBatchLoader<Key, Value, MappedValue> implements IBatchLoader<Key, MappedValue> { | ||
| protected loader: IBatchLoader<Key, Value>; | ||
| protected mapFn: (value: Value, key: Key) => MappedValue | Promise<MappedValue>; | ||
| constructor(loader: IBatchLoader<Key, Value>, mapFn: (value: Value, key: Key) => MappedValue | Promise<MappedValue>); | ||
| load(key: Key): Promise<MappedValue>; | ||
| loadMany(keys: Key[]): Promise<MappedValue[]>; | ||
| mapLoader<RemappedValue>(mapFn: (value: MappedValue, key: Key) => RemappedValue): MappedBatchLoader<Key, MappedValue, RemappedValue>; | ||
| } | ||
| //# sourceMappingURL=mappedbatchloader.d.ts.map |
| {"version":3,"file":"mappedbatchloader.d.ts","sourceRoot":"","sources":["../../src/mappedbatchloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,qBAAa,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CACpD,YAAW,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC;IAEvC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1C,SAAS,CAAC,KAAK,EAAE,CACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,KACL,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBAJ7B,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EAChC,KAAK,EAAE,CACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,KACL,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAGlC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB7C,SAAS,CAAC,aAAa,EAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,aAAa,GACrD,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC;CAGtD"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| class MappedBatchLoader { | ||
| constructor(loader, mapFn) { | ||
| this.loader = loader; | ||
| this.mapFn = mapFn; | ||
| } | ||
| load(key) { | ||
| return this.loader.load(key).then((value) => this.mapFn(value, key)); | ||
| } | ||
| loadMany(keys) { | ||
| return this.loader.loadMany(keys).then((values) => { | ||
| let hasPromise = false; | ||
| const results = []; | ||
| const len = values.length; | ||
| for (let i = 0; i < len; i += 1) { | ||
| const res = this.mapFn(values[i], keys[i]); | ||
| results.push(res); | ||
| hasPromise = | ||
| hasPromise || | ||
| (res != null && typeof res.then === 'function'); | ||
| } | ||
| return hasPromise ? Promise.all(results) : results; | ||
| }); | ||
| } | ||
| mapLoader(mapFn) { | ||
| return new MappedBatchLoader(this, mapFn); | ||
| } | ||
| } | ||
| exports.MappedBatchLoader = MappedBatchLoader; | ||
| //# sourceMappingURL=mappedbatchloader.js.map |
| {"version":3,"file":"mappedbatchloader.js","sourceRoot":"","sources":["../../src/mappedbatchloader.ts"],"names":[],"mappings":";;AAEA,MAAa,iBAAiB;IAE5B,YACY,MAAgC,EAChC,KAG6B;QAJ7B,WAAM,GAAN,MAAM,CAA0B;QAChC,UAAK,GAAL,KAAK,CAGwB;IACtC,CAAC;IAEG,IAAI,CAAC,GAAQ;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,QAAQ,CAAC,IAAW;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAChD,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,MAAM,OAAO,GAA8C,EAAE,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,UAAU;oBACR,UAAU;wBACV,CAAC,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;aAC5D;YACD,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAyB,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,SAAS,CACd,KAAsD;QAEtD,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AAnCD,8CAmCC"} |
| export interface IBatchLoader<Key, Value> { | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value) => MappedValue): IBatchLoader<Key, MappedValue>; | ||
| } | ||
| export declare type MaybePromise<T> = T | Promise<T>; | ||
| //# sourceMappingURL=types.d.ts.map |
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,GAAG,EAAE,KAAK;IACtC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,SAAS,CAAC,WAAW,EACnB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,WAAW,GACnC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;CACnC;AAED,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=types.js.map |
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""} |
| {"version":3,"file":"batchloader.d.ts","sourceRoot":"","sources":["../src/batchloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAgB,MAAM,WAAW,CAAC;AAEvD,oBAAY,WAAW,CAAC,GAAG,EAAE,KAAK,IAAI,CACpC,IAAI,EAAE,GAAG,EAAE,KACR,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAEhC,oBAAY,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;AAOtD,qBAAa,WAAW,CAAC,GAAG,EAAE,KAAK,CAAE,YAAW,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IAKpE,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI;IAClD,SAAS,CAAC,UAAU;IACpB,SAAS,CAAC,SAAS;IAPrB,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAM;IACjC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;gBAG3C,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAChC,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,EACxC,UAAU,SAAI,EACd,SAAS,SAA0B;IAGxC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IAQ9B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAcvC,SAAS,CAAC,WAAW,EAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,WAAW,GAC7C,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAItC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;IAIvE,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAY1C,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAiCzC,OAAO,CAAC,kBAAkB;YAOZ,aAAa;CAqB5B"} |
| {"version":3,"file":"cacheloader.d.ts","sourceRoot":"","sources":["../src/cacheloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,WAAW,MAAM,CAAC,GAAG,EAAE,KAAK;IAChC,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACnC;AAED,qBAAa,WAAW,CAAC,GAAG,EAAE,KAAK,CACjC,YAAW,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAInE,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;IAJ3B,YAAY,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAGlC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EACnC,KAAK,GAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAyB;IAKnD,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;IAkB9B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIvC,SAAS,CAAC,WAAW,EAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,WAAW,GAC7C,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAItC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;IAczC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKjC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAMzB,KAAK,IAAI,IAAI;CAIrB"} |
| {"version":3,"file":"cacheproxyloader.d.ts","sourceRoot":"","sources":["../src/cacheproxyloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,WAAW,WAAW,CAAC,GAAG,EAAE,KAAK;IACrC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,oBAAoB,sNAwC9B,CAAC"} |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"} |
| {"version":3,"file":"mappedbatchloader.d.ts","sourceRoot":"","sources":["../src/mappedbatchloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,qBAAa,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,CACpD,YAAW,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC;IAEvC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;IAC1C,SAAS,CAAC,KAAK,EAAE,CACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,KACL,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBAJ7B,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EAChC,KAAK,EAAE,CACf,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,KACL,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAGlC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB7C,SAAS,CAAC,aAAa,EAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,aAAa,GACrD,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC;CAGtD"} |
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,GAAG,EAAE,KAAK;IACtC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,SAAS,CAAC,WAAW,EACnB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,WAAW,GACnC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;CACnC;AAED,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"} |
@@ -23,1 +23,2 @@ import { CacheLoader, ICache } from './cacheloader'; | ||
| } | ||
| //# sourceMappingURL=batchloader.d.ts.map |
+21
-34
@@ -1,17 +0,7 @@ | ||
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const cacheloader_1 = require("./cacheloader"); | ||
| const mappedbatchloader_1 = require("./mappedbatchloader"); | ||
| import { CacheLoader } from './cacheloader'; | ||
| import { MappedBatchLoader } from './mappedbatchloader'; | ||
| const sleep = (ms) => new Promise((resolve) => { | ||
| setTimeout(resolve, ms); | ||
| }); | ||
| class BatchLoader { | ||
| export class BatchLoader { | ||
| constructor(batchFn, keyToUniqueId, batchDelay = 0, batchSize = Number.MAX_SAFE_INTEGER) { | ||
@@ -42,6 +32,6 @@ this.batchFn = batchFn; | ||
| mapLoader(mapFn) { | ||
| return new mappedbatchloader_1.MappedBatchLoader(this, mapFn); | ||
| return new MappedBatchLoader(this, mapFn); | ||
| } | ||
| cacheLoader(cache) { | ||
| return new cacheloader_1.CacheLoader(this, cache); | ||
| return new CacheLoader(this, cache); | ||
| } | ||
@@ -88,24 +78,21 @@ triggerBatch() { | ||
| } | ||
| batchInChunks(keys) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| const { batchSize, batchDelay } = this; | ||
| const promises = []; | ||
| const kLen = keys.length; | ||
| for (let i = 0; i < kLen; i += batchSize) { | ||
| promises.push(this.batchFn(keys.slice(i, i + batchSize))); | ||
| if (batchDelay) { | ||
| yield sleep(batchDelay); | ||
| } | ||
| async batchInChunks(keys) { | ||
| const { batchSize, batchDelay } = this; | ||
| const promises = []; | ||
| const kLen = keys.length; | ||
| for (let i = 0; i < kLen; i += batchSize) { | ||
| promises.push(this.batchFn(keys.slice(i, i + batchSize))); | ||
| if (batchDelay) { | ||
| await sleep(batchDelay); | ||
| } | ||
| const results = yield Promise.all(promises); | ||
| const rLen = results.length; | ||
| let values = []; | ||
| for (let i = 0; i < rLen; i += 1) { | ||
| values = values.concat(results[i]); | ||
| } | ||
| return values; | ||
| }); | ||
| } | ||
| const results = await Promise.all(promises); | ||
| const rLen = results.length; | ||
| let values = []; | ||
| for (let i = 0; i < rLen; i += 1) { | ||
| values = values.concat(results[i]); | ||
| } | ||
| return values; | ||
| } | ||
| } | ||
| exports.BatchLoader = BatchLoader; | ||
| //# sourceMappingURL=batchloader.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"batchloader.js","sourceRoot":"","sources":["../src/batchloader.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"batchloader.js","sourceRoot":"","sources":["../src/batchloader.ts"],"names":[],"mappings":"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"} |
@@ -22,1 +22,2 @@ import { MappedBatchLoader } from './mappedbatchloader'; | ||
| } | ||
| //# sourceMappingURL=cacheloader.d.ts.map |
@@ -1,5 +0,3 @@ | ||
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const mappedbatchloader_1 = require("./mappedbatchloader"); | ||
| class CacheLoader { | ||
| import { MappedBatchLoader } from './mappedbatchloader'; | ||
| export class CacheLoader { | ||
| constructor(loader, cache = new Map()) { | ||
@@ -31,3 +29,3 @@ this.loader = loader; | ||
| mapLoader(mapFn) { | ||
| return new mappedbatchloader_1.MappedBatchLoader(this, mapFn); | ||
| return new MappedBatchLoader(this, mapFn); | ||
| } | ||
@@ -61,3 +59,2 @@ get(key) { | ||
| } | ||
| exports.CacheLoader = CacheLoader; | ||
| //# sourceMappingURL=cacheloader.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"cacheloader.js","sourceRoot":"","sources":["../src/cacheloader.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAU1D,MAAa,WAAW;IAItB,YACY,MAAgC,EACnC,QAA4B,IAAI,GAAG,EAAc;QAD9C,WAAM,GAAN,MAAM,CAA0B;QACnC,UAAK,GAAL,KAAK,CAA4C;QAExD,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,CAAC;IAEM,IAAI,CAAC,GAAQ;QAClB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,EAAE;YACA,KAAK,KAAK,SAAS;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACnB,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC;gBACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,QAAQ,CAAC,IAAW;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAEM,SAAS,CACd,KAA8C;QAE9C,OAAO,IAAI,qCAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEM,GAAG,CAAC,GAAQ;QACjB,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,GAAG,CAAC,GAAQ,EAAE,KAAY;QAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,GAAQ;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,QAAQ,IAAI,OAAO,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AApED,kCAoEC"} | ||
| {"version":3,"file":"cacheloader.js","sourceRoot":"","sources":["../src/cacheloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU1D,MAAM,OAAO,WAAW;IAItB,YACY,MAAgC,EACnC,QAA4B,IAAI,GAAG,EAAc;QAD9C,WAAM,GAAN,MAAM,CAA0B;QACnC,UAAK,GAAL,KAAK,CAA4C;QAExD,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,CAAC;IAEM,IAAI,CAAC,GAAQ;QAClB,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,EAAE;YACA,KAAK,KAAK,SAAS;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACnB,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC;gBACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,QAAQ,CAAC,IAAW;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAEM,SAAS,CACd,KAA8C;QAE9C,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEM,GAAG,CAAC,GAAQ;QACjB,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,GAAG,CAAC,GAAQ,EAAE,KAAY;QAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,GAAQ;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,QAAQ,IAAI,OAAO,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"} |
@@ -8,1 +8,2 @@ import { BatchLoader, KeyToUniqueId } from './batchloader'; | ||
| export declare const proxyLoaderWithCache: <Key, Value>(cache: IBatchCache<Key, Value>, loader: IBatchLoader<Key, Value>, keyToUniqueId: KeyToUniqueId<Key> | null, batchDelay?: number | undefined, batchSize?: number | undefined) => BatchLoader<Key, Value>; | ||
| //# sourceMappingURL=cacheproxyloader.d.ts.map |
@@ -1,14 +0,4 @@ | ||
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const batchloader_1 = require("./batchloader"); | ||
| exports.proxyLoaderWithCache = (cache, loader, keyToUniqueId, batchDelay, batchSize) => new batchloader_1.BatchLoader((keys) => __awaiter(this, void 0, void 0, function* () { | ||
| const values = yield cache.mget(keys); | ||
| import { BatchLoader } from './batchloader'; | ||
| export const proxyLoaderWithCache = (cache, loader, keyToUniqueId, batchDelay, batchSize) => new BatchLoader(async (keys) => { | ||
| const values = await cache.mget(keys); | ||
| const len = values.length; | ||
@@ -24,3 +14,3 @@ const missingKeys = []; | ||
| if (missingKeys.length) { | ||
| const missingValues = yield loader.loadMany(missingKeys); | ||
| const missingValues = await loader.loadMany(missingKeys); | ||
| const mlen = missingValues.length; | ||
@@ -36,3 +26,3 @@ const missingKeyValues = []; | ||
| return values; | ||
| }), keyToUniqueId, batchDelay, batchSize); | ||
| }, keyToUniqueId, batchDelay, batchSize); | ||
| //# sourceMappingURL=cacheproxyloader.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"cacheproxyloader.js","sourceRoot":"","sources":["../src/cacheproxyloader.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,iDAA6D;AAQhD,QAAA,oBAAoB,GAAG,CAClC,KAA8B,EAC9B,MAAgC,EAChC,aAAwC,EACxC,UAAmB,EACnB,SAAkB,EACO,EAAE,CAC3B,IAAI,yBAAW,CACb,CAAO,IAAI,EAAoB,EAAE;IAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,MAAM,WAAW,GAAU,EAAE,CAAC;IAC9B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;QAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;KACF;IAED,IAAI,WAAW,CAAC,MAAM,EAAE;QACtB,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;QAClC,MAAM,gBAAgB,GAAwB,EAAE,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;YAChC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAClC,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAChD;QAGD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC9B;IAED,OAAO,MAAiB,CAAC;AAC3B,CAAC,CAAA,EACD,aAAa,EACb,UAAU,EACV,SAAS,CACV,CAAC"} | ||
| {"version":3,"file":"cacheproxyloader.js","sourceRoot":"","sources":["../src/cacheproxyloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,iBAAiB,CAAC;AAQ7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAA8B,EAC9B,MAAgC,EAChC,aAAwC,EACxC,UAAmB,EACnB,SAAkB,EACO,EAAE,CAC3B,IAAI,WAAW,CACb,KAAK,EAAE,IAAI,EAAoB,EAAE;IAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,MAAM,WAAW,GAAU,EAAE,CAAC;IAC9B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;QAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;KACF;IAED,IAAI,WAAW,CAAC,MAAM,EAAE;QACtB,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;QAClC,MAAM,gBAAgB,GAAwB,EAAE,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;YAChC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAClC,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAChD;QAGD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC9B;IAED,OAAO,MAAiB,CAAC;AAC3B,CAAC,EACD,aAAa,EACb,UAAU,EACV,SAAS,CACV,CAAC"} |
+1
-0
| export * from './batchloader'; | ||
| export * from './mappedbatchloader'; | ||
| export * from './cacheproxyloader'; | ||
| //# sourceMappingURL=index.d.ts.map |
+3
-8
@@ -1,9 +0,4 @@ | ||
| "use strict"; | ||
| function __export(m) { | ||
| for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
| } | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| __export(require("./batchloader")); | ||
| __export(require("./mappedbatchloader")); | ||
| __export(require("./cacheproxyloader")); | ||
| export * from './batchloader'; | ||
| export * from './mappedbatchloader'; | ||
| export * from './cacheproxyloader'; | ||
| //# sourceMappingURL=index.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,mCAA8B;AAC9B,yCAAoC;AACpC,wCAAmC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"} |
@@ -10,1 +10,2 @@ import { IBatchLoader } from './types'; | ||
| } | ||
| //# sourceMappingURL=mappedbatchloader.d.ts.map |
@@ -1,4 +0,2 @@ | ||
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| class MappedBatchLoader { | ||
| export class MappedBatchLoader { | ||
| constructor(loader, mapFn) { | ||
@@ -30,3 +28,2 @@ this.loader = loader; | ||
| } | ||
| exports.MappedBatchLoader = MappedBatchLoader; | ||
| //# sourceMappingURL=mappedbatchloader.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"mappedbatchloader.js","sourceRoot":"","sources":["../src/mappedbatchloader.ts"],"names":[],"mappings":";;AAEA,MAAa,iBAAiB;IAE5B,YACY,MAAgC,EAChC,KAG6B;QAJ7B,WAAM,GAAN,MAAM,CAA0B;QAChC,UAAK,GAAL,KAAK,CAGwB;IACtC,CAAC;IAEG,IAAI,CAAC,GAAQ;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,QAAQ,CAAC,IAAW;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAChD,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,MAAM,OAAO,GAA8C,EAAE,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,UAAU;oBACR,UAAU;wBACV,CAAC,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;aAC5D;YACD,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAyB,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,SAAS,CACd,KAAsD;QAEtD,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AAnCD,8CAmCC"} | ||
| {"version":3,"file":"mappedbatchloader.js","sourceRoot":"","sources":["../src/mappedbatchloader.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,iBAAiB;IAE5B,YACY,MAAgC,EAChC,KAG6B;QAJ7B,WAAM,GAAN,MAAM,CAA0B;QAChC,UAAK,GAAL,KAAK,CAGwB;IACtC,CAAC;IAEG,IAAI,CAAC,GAAQ;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,QAAQ,CAAC,IAAW;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAChD,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,MAAM,OAAO,GAA8C,EAAE,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,UAAU;oBACR,UAAU;wBACV,CAAC,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;aAC5D;YACD,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAyB,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,SAAS,CACd,KAAsD;QAEtD,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF"} |
+1
-0
@@ -7,1 +7,2 @@ export interface IBatchLoader<Key, Value> { | ||
| export declare type MaybePromise<T> = T | Promise<T>; | ||
| //# sourceMappingURL=types.d.ts.map |
+0
-2
@@ -1,3 +0,1 @@ | ||
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=types.js.map |
+15
-11
| { | ||
| "name": "batchloader", | ||
| "version": "0.0.16", | ||
| "version": "0.0.17", | ||
| "description": "BatchLoader is a utility for data fetching layer to reduce requests via batching written in TypeScript. Inspired by Facebook's DataLoader", | ||
| "main": "lib/index.js", | ||
| "module": "lib/index.js", | ||
| "main": "dist/node/index.js", | ||
| "browser": "dist/browser/index.js", | ||
| "types": "lib/index.d.ts", | ||
| "scripts": { | ||
| "all": "npm run clean && npm run format && npm run lint:fix && npm run test && npm run build && npm run build:es5", | ||
| "build": "tsc -p ./tsconfig.json && tscpaths -p ./tsconfig.json -s ./src -o ./lib", | ||
| "build:es5": "tsc -p ./tsconfig.es5.json && tscpaths -p ./tsconfig.es5.json -s ./src -o ./es5", | ||
| "clean": "rm -rf ./lib ./es5 ./es6 ./coverage", | ||
| "all": "npm run clean && npm run format && npm run lint:fix && npm run build:all && npm run test", | ||
| "build:all": "npm run build:module && npm run build:node && npm run build:browser", | ||
| "build:browser": "tsc -p ./tsconfig.browser.json && tscpaths -p ./tsconfig.browser.json -s ./src -o ./dist/browser", | ||
| "build:module": "tsc -p ./tsconfig.module.json && tscpaths -p ./tsconfig.module.json -s ./src -o ./lib", | ||
| "build:node": "tsc -p ./tsconfig.node.json && tscpaths -p ./tsconfig.node.json -s ./src -o ./dist/node", | ||
| "clean": "rm -rf ./lib ./dist ./coverage", | ||
| "format": "prettier --write \"./*.{js,jsx,ts,tsx}\" \"./src/**/*.{js,jsx,ts,tsx}\"", | ||
| "lint": "tslint -c ./tslint.json \"src/**/*\"", | ||
| "lint:fix": "tslint --fix -c ./tslint.json \"src/**/*\"", | ||
| "lint": "tslint -c ./tslint.json \"src/**/*.ts\"", | ||
| "lint:fix": "tslint --fix -c ./tslint.json \"src/**/*.ts\"", | ||
| "precommit": "npm run all", | ||
| "prepublish": "npm run all", | ||
| "reinstall": "rm -rf ./node_modules ./package-lock.json ./yarn.lock && npm i", | ||
| "reinstall": "rm -rf ./node_modules ./package-lock.json ./yarn.lock && yarn", | ||
| "start": "npm run test", | ||
@@ -43,3 +47,3 @@ "test": "jest", | ||
| "@types/jest": "^24.0.15", | ||
| "@types/node": "^12.0.12", | ||
| "@types/node": "^12.6.2", | ||
| "coveralls": "^3.0.4", | ||
@@ -54,4 +58,4 @@ "jest": "^24.8.0", | ||
| "tslint-config-prettier": "^1.18.0", | ||
| "typescript": "^3.5.2" | ||
| "typescript": "^3.5.3" | ||
| } | ||
| } |
Sorry, the diff of this file is not supported yet
| import { CacheLoader, ICache } from './cacheloader'; | ||
| import { MappedBatchLoader } from './mappedbatchloader'; | ||
| import { IBatchLoader } from './types'; | ||
| export declare type BatchLoadFn<Key, Value> = (keys: Key[]) => Value[] | Promise<Value[]>; | ||
| export declare type KeyToUniqueId<Key> = (key: Key) => string; | ||
| export declare class BatchLoader<Key, Value> implements IBatchLoader<Key, Value> { | ||
| protected batchFn: BatchLoadFn<Key, Value>; | ||
| protected keyToUniqueId: KeyToUniqueId<Key> | null; | ||
| protected batchDelay: number; | ||
| protected batchSize: number; | ||
| protected queuedKeys: Key[]; | ||
| protected batchPromise: Promise<Value[]> | null; | ||
| constructor(batchFn: BatchLoadFn<Key, Value>, keyToUniqueId: KeyToUniqueId<Key> | null, batchDelay?: number, batchSize?: number); | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value, key: Key) => MappedValue): MappedBatchLoader<Key, Value, MappedValue>; | ||
| cacheLoader(cache?: ICache<Key, Value>): CacheLoader<Key, Value>; | ||
| protected triggerBatch(): Promise<Value[]>; | ||
| protected runBatchNow(): Promise<Value[]>; | ||
| private maybeBatchInChunks; | ||
| private batchInChunks; | ||
| } |
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| var __generator = (this && this.__generator) || function (thisArg, body) { | ||
| var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
| return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
| function verb(n) { return function (v) { return step([n, v]); }; } | ||
| function step(op) { | ||
| if (f) throw new TypeError("Generator is already executing."); | ||
| while (_) try { | ||
| if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
| if (y = 0, t) op = [op[0] & 2, t.value]; | ||
| switch (op[0]) { | ||
| case 0: case 1: t = op; break; | ||
| case 4: _.label++; return { value: op[1], done: false }; | ||
| case 5: _.label++; y = op[1]; op = [0]; continue; | ||
| case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
| default: | ||
| if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
| if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
| if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
| if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
| if (t[2]) _.ops.pop(); | ||
| _.trys.pop(); continue; | ||
| } | ||
| op = body.call(thisArg, _); | ||
| } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
| if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
| } | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var cacheloader_1 = require("./cacheloader"); | ||
| var mappedbatchloader_1 = require("./mappedbatchloader"); | ||
| var sleep = function (ms) { | ||
| return new Promise(function (resolve) { | ||
| setTimeout(resolve, ms); | ||
| }); | ||
| }; | ||
| var BatchLoader = (function () { | ||
| function BatchLoader(batchFn, keyToUniqueId, batchDelay, batchSize) { | ||
| if (batchDelay === void 0) { batchDelay = 0; } | ||
| if (batchSize === void 0) { batchSize = Number.MAX_SAFE_INTEGER; } | ||
| this.batchFn = batchFn; | ||
| this.keyToUniqueId = keyToUniqueId; | ||
| this.batchDelay = batchDelay; | ||
| this.batchSize = batchSize; | ||
| this.queuedKeys = []; | ||
| this.batchPromise = null; | ||
| } | ||
| BatchLoader.prototype.load = function (key) { | ||
| var queuedKeys = this.queuedKeys; | ||
| var index = queuedKeys.length; | ||
| queuedKeys.push(key); | ||
| return this.triggerBatch().then(function (values) { return values[index]; }); | ||
| }; | ||
| BatchLoader.prototype.loadMany = function (keys) { | ||
| if (keys.length) { | ||
| var queuedKeys = this.queuedKeys; | ||
| var index_1 = queuedKeys.length; | ||
| queuedKeys.push.apply(queuedKeys, keys); | ||
| var length_1 = keys.length; | ||
| return this.triggerBatch().then(function (values) { | ||
| return values.slice(index_1, index_1 + length_1); | ||
| }); | ||
| } | ||
| return Promise.resolve([]); | ||
| }; | ||
| BatchLoader.prototype.mapLoader = function (mapFn) { | ||
| return new mappedbatchloader_1.MappedBatchLoader(this, mapFn); | ||
| }; | ||
| BatchLoader.prototype.cacheLoader = function (cache) { | ||
| return new cacheloader_1.CacheLoader(this, cache); | ||
| }; | ||
| BatchLoader.prototype.triggerBatch = function () { | ||
| var _this = this; | ||
| return (this.batchPromise || | ||
| (this.batchPromise = new Promise(function (resolve, reject) { | ||
| setTimeout(function () { | ||
| _this.batchPromise = null; | ||
| _this.runBatchNow().then(resolve, reject); | ||
| }, _this.batchDelay); | ||
| }))); | ||
| }; | ||
| BatchLoader.prototype.runBatchNow = function () { | ||
| var _a = this, queuedKeys = _a.queuedKeys, keyToUniqueId = _a.keyToUniqueId; | ||
| this.queuedKeys = []; | ||
| if (keyToUniqueId) { | ||
| var idMap = {}; | ||
| var indexToId_1 = []; | ||
| var idToNewIndex_1 = {}; | ||
| var newIndex = 0; | ||
| var uniqueKeys = []; | ||
| var len = queuedKeys.length; | ||
| for (var i = 0; i < len; i += 1) { | ||
| var key = queuedKeys[i]; | ||
| var id = keyToUniqueId(key); | ||
| indexToId_1[i] = id; | ||
| if (idMap[id] !== true) { | ||
| idMap[id] = true; | ||
| idToNewIndex_1[id] = newIndex; | ||
| newIndex += 1; | ||
| uniqueKeys.push(key); | ||
| } | ||
| } | ||
| return this.maybeBatchInChunks(uniqueKeys).then(function (values) { | ||
| return queuedKeys.map(function (_key, i) { return values[idToNewIndex_1[indexToId_1[i]]]; }); | ||
| }); | ||
| } | ||
| return this.maybeBatchInChunks(queuedKeys); | ||
| }; | ||
| BatchLoader.prototype.maybeBatchInChunks = function (keys) { | ||
| if (keys.length <= this.batchSize) { | ||
| return Promise.resolve(this.batchFn(keys)); | ||
| } | ||
| return this.batchInChunks(keys); | ||
| }; | ||
| BatchLoader.prototype.batchInChunks = function (keys) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var _a, batchSize, batchDelay, promises, kLen, i, results, rLen, values, i; | ||
| return __generator(this, function (_b) { | ||
| switch (_b.label) { | ||
| case 0: | ||
| _a = this, batchSize = _a.batchSize, batchDelay = _a.batchDelay; | ||
| promises = []; | ||
| kLen = keys.length; | ||
| i = 0; | ||
| _b.label = 1; | ||
| case 1: | ||
| if (!(i < kLen)) return [3, 4]; | ||
| promises.push(this.batchFn(keys.slice(i, i + batchSize))); | ||
| if (!batchDelay) return [3, 3]; | ||
| return [4, sleep(batchDelay)]; | ||
| case 2: | ||
| _b.sent(); | ||
| _b.label = 3; | ||
| case 3: | ||
| i += batchSize; | ||
| return [3, 1]; | ||
| case 4: return [4, Promise.all(promises)]; | ||
| case 5: | ||
| results = _b.sent(); | ||
| rLen = results.length; | ||
| values = []; | ||
| for (i = 0; i < rLen; i += 1) { | ||
| values = values.concat(results[i]); | ||
| } | ||
| return [2, values]; | ||
| } | ||
| }); | ||
| }); | ||
| }; | ||
| return BatchLoader; | ||
| }()); | ||
| exports.BatchLoader = BatchLoader; | ||
| //# sourceMappingURL=batchloader.js.map |
| {"version":3,"file":"batchloader.js","sourceRoot":"","sources":["../src/batchloader.ts"],"names":[],"mappings":"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"} |
| import { MappedBatchLoader } from './mappedbatchloader'; | ||
| import { IBatchLoader, MaybePromise } from './types'; | ||
| export interface ICache<Key, Value> { | ||
| clear(): void; | ||
| delete(key: Key): boolean; | ||
| get(key: Key): Value | undefined; | ||
| set(key: Key, value: Value): void; | ||
| } | ||
| export declare class CacheLoader<Key, Value> implements IBatchLoader<Key, Value>, ICache<Key, MaybePromise<Value>> { | ||
| protected loader: IBatchLoader<Key, Value>; | ||
| cache: ICache<Key, Value>; | ||
| promiseCache: Map<Key, Promise<Value>>; | ||
| constructor(loader: IBatchLoader<Key, Value>, cache?: ICache<Key, Value>); | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value, key: Key) => MappedValue): MappedBatchLoader<Key, Value, MappedValue>; | ||
| get(key: Key): Promise<Value> | undefined; | ||
| set(key: Key, value: Value): void; | ||
| delete(key: Key): boolean; | ||
| clear(): void; | ||
| } |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var mappedbatchloader_1 = require("./mappedbatchloader"); | ||
| var CacheLoader = (function () { | ||
| function CacheLoader(loader, cache) { | ||
| if (cache === void 0) { cache = new Map(); } | ||
| this.loader = loader; | ||
| this.cache = cache; | ||
| this.promiseCache = new Map(); | ||
| } | ||
| CacheLoader.prototype.load = function (key) { | ||
| var _this = this; | ||
| var promiseCache = this.promiseCache; | ||
| var pv = promiseCache.get(key); | ||
| if (pv) { | ||
| return pv; | ||
| } | ||
| var value = this.cache.get(key); | ||
| pv = | ||
| value === undefined | ||
| ? this.loader.load(key).then(function (val) { | ||
| _this.set(key, val); | ||
| return val; | ||
| }) | ||
| : Promise.resolve(value); | ||
| promiseCache.set(key, pv); | ||
| return pv; | ||
| }; | ||
| CacheLoader.prototype.loadMany = function (keys) { | ||
| var _this = this; | ||
| return Promise.all(keys.map(function (key) { return _this.load(key); })); | ||
| }; | ||
| CacheLoader.prototype.mapLoader = function (mapFn) { | ||
| return new mappedbatchloader_1.MappedBatchLoader(this, mapFn); | ||
| }; | ||
| CacheLoader.prototype.get = function (key) { | ||
| var pv = this.promiseCache.get(key); | ||
| if (pv) { | ||
| return pv; | ||
| } | ||
| var v = this.cache.get(key); | ||
| if (v === undefined) { | ||
| return undefined; | ||
| } | ||
| pv = Promise.resolve(v); | ||
| this.promiseCache.set(key, pv); | ||
| return pv; | ||
| }; | ||
| CacheLoader.prototype.set = function (key, value) { | ||
| this.promiseCache.delete(key); | ||
| this.cache.set(key, value); | ||
| }; | ||
| CacheLoader.prototype.delete = function (key) { | ||
| var pDeleted = this.promiseCache.delete(key); | ||
| var deleted = this.cache.delete(key); | ||
| return pDeleted || deleted; | ||
| }; | ||
| CacheLoader.prototype.clear = function () { | ||
| this.promiseCache.clear(); | ||
| this.cache.clear(); | ||
| }; | ||
| return CacheLoader; | ||
| }()); | ||
| exports.CacheLoader = CacheLoader; | ||
| //# sourceMappingURL=cacheloader.js.map |
| {"version":3,"file":"cacheloader.js","sourceRoot":"","sources":["../src/cacheloader.ts"],"names":[],"mappings":";;AAAA,2DAA0D;AAU1D;IAIE,qBACY,MAAgC,EACnC,KAAiD;QAAjD,sBAAA,EAAA,YAAgC,GAAG,EAAc;QAD9C,WAAM,GAAN,MAAM,CAA0B;QACnC,UAAK,GAAL,KAAK,CAA4C;QAExD,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,CAAC;IAEM,0BAAI,GAAX,UAAY,GAAQ;QAApB,iBAgBC;QAfS,IAAA,gCAAY,CAAU;QAC9B,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,EAAE;YACA,KAAK,KAAK,SAAS;gBACjB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG;oBAC7B,KAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACnB,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC;gBACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,8BAAQ,GAAf,UAAgB,IAAW;QAA3B,iBAEC;QADC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAd,CAAc,CAAC,CAAC,CAAC;IACxD,CAAC;IAEM,+BAAS,GAAhB,UACE,KAA8C;QAE9C,OAAO,IAAI,qCAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEM,yBAAG,GAAV,UAAW,GAAQ;QACjB,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QACD,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,SAAS,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QACD,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,yBAAG,GAAV,UAAW,GAAQ,EAAE,KAAY;QAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,4BAAM,GAAb,UAAc,GAAQ;QACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,QAAQ,IAAI,OAAO,CAAC;IAC7B,CAAC;IAEM,2BAAK,GAAZ;QACE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IACH,kBAAC;AAAD,CAAC,AApED,IAoEC;AApEY,kCAAW"} |
| import { BatchLoader, KeyToUniqueId } from './batchloader'; | ||
| import { IBatchLoader, MaybePromise } from './types'; | ||
| export interface IBatchCache<Key, Value> { | ||
| mget: (keys: Key[]) => MaybePromise<Array<Value | undefined>>; | ||
| mset: (keyValues: Array<[Key, Value]>) => MaybePromise<void>; | ||
| } | ||
| export declare const proxyLoaderWithCache: <Key, Value>(cache: IBatchCache<Key, Value>, loader: IBatchLoader<Key, Value>, keyToUniqueId: KeyToUniqueId<Key> | null, batchDelay?: number | undefined, batchSize?: number | undefined) => BatchLoader<Key, Value>; |
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| var __generator = (this && this.__generator) || function (thisArg, body) { | ||
| var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
| return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
| function verb(n) { return function (v) { return step([n, v]); }; } | ||
| function step(op) { | ||
| if (f) throw new TypeError("Generator is already executing."); | ||
| while (_) try { | ||
| if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
| if (y = 0, t) op = [op[0] & 2, t.value]; | ||
| switch (op[0]) { | ||
| case 0: case 1: t = op; break; | ||
| case 4: _.label++; return { value: op[1], done: false }; | ||
| case 5: _.label++; y = op[1]; op = [0]; continue; | ||
| case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
| default: | ||
| if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
| if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
| if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
| if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
| if (t[2]) _.ops.pop(); | ||
| _.trys.pop(); continue; | ||
| } | ||
| op = body.call(thisArg, _); | ||
| } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
| if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
| } | ||
| }; | ||
| var _this = this; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var batchloader_1 = require("./batchloader"); | ||
| exports.proxyLoaderWithCache = function (cache, loader, keyToUniqueId, batchDelay, batchSize) { | ||
| return new batchloader_1.BatchLoader(function (keys) { return __awaiter(_this, void 0, void 0, function () { | ||
| var values, len, missingKeys, missingIndexes, i, missingValues, mlen, missingKeyValues, i, value; | ||
| return __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 |
| {"version":3,"file":"cacheproxyloader.js","sourceRoot":"","sources":["../src/cacheproxyloader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBAiDA;;AAjDA,+CAA6D;AAQhD,QAAA,oBAAoB,GAAG,UAClC,KAA8B,EAC9B,MAAgC,EAChC,aAAwC,EACxC,UAAmB,EACnB,SAAkB;IAElB,OAAA,IAAI,yBAAW,CACb,UAAO,IAAI;;;;wBACM,WAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;oBAA/B,MAAM,GAAG,SAAsB;oBAE/B,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;oBACpB,WAAW,GAAU,EAAE,CAAC;oBACxB,cAAc,GAAa,EAAE,CAAC;oBACpC,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;wBAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;4BAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC1B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBACxB;qBACF;yBAEG,WAAW,CAAC,MAAM,EAAlB,cAAkB;oBACE,WAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAA;;oBAAlD,aAAa,GAAG,SAAkC;oBAClD,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;oBAC5B,gBAAgB,GAAwB,EAAE,CAAC;oBACjD,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;wBAC1B,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;wBAC/B,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;wBAClC,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;qBAChD;oBAGD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;wBAG/B,WAAO,MAAiB,EAAC;;;SAC1B,EACD,aAAa,EACb,UAAU,EACV,SAAS,CACV;AAjCD,CAiCC,CAAC"} |
| export * from './batchloader'; | ||
| export * from './mappedbatchloader'; | ||
| export * from './cacheproxyloader'; |
| "use strict"; | ||
| function __export(m) { | ||
| for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
| } | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| __export(require("./batchloader")); | ||
| __export(require("./mappedbatchloader")); | ||
| __export(require("./cacheproxyloader")); | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,mCAA8B;AAC9B,yCAAoC;AACpC,wCAAmC"} |
| import { IBatchLoader } from './types'; | ||
| export declare class MappedBatchLoader<Key, Value, MappedValue> implements IBatchLoader<Key, MappedValue> { | ||
| protected loader: IBatchLoader<Key, Value>; | ||
| protected mapFn: (value: Value, key: Key) => MappedValue | Promise<MappedValue>; | ||
| constructor(loader: IBatchLoader<Key, Value>, mapFn: (value: Value, key: Key) => MappedValue | Promise<MappedValue>); | ||
| load(key: Key): Promise<MappedValue>; | ||
| loadMany(keys: Key[]): Promise<MappedValue[]>; | ||
| mapLoader<RemappedValue>(mapFn: (value: MappedValue, key: Key) => RemappedValue): MappedBatchLoader<Key, MappedValue, RemappedValue>; | ||
| } |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var MappedBatchLoader = (function () { | ||
| function MappedBatchLoader(loader, mapFn) { | ||
| this.loader = loader; | ||
| this.mapFn = mapFn; | ||
| } | ||
| MappedBatchLoader.prototype.load = function (key) { | ||
| var _this = this; | ||
| return this.loader.load(key).then(function (value) { return _this.mapFn(value, key); }); | ||
| }; | ||
| MappedBatchLoader.prototype.loadMany = function (keys) { | ||
| var _this = this; | ||
| return this.loader.loadMany(keys).then(function (values) { | ||
| var hasPromise = false; | ||
| var results = []; | ||
| var len = values.length; | ||
| for (var i = 0; i < len; i += 1) { | ||
| var res = _this.mapFn(values[i], keys[i]); | ||
| results.push(res); | ||
| hasPromise = | ||
| hasPromise || | ||
| (res != null && typeof res.then === 'function'); | ||
| } | ||
| return hasPromise ? Promise.all(results) : results; | ||
| }); | ||
| }; | ||
| MappedBatchLoader.prototype.mapLoader = function (mapFn) { | ||
| return new MappedBatchLoader(this, mapFn); | ||
| }; | ||
| return MappedBatchLoader; | ||
| }()); | ||
| exports.MappedBatchLoader = MappedBatchLoader; | ||
| //# sourceMappingURL=mappedbatchloader.js.map |
| {"version":3,"file":"mappedbatchloader.js","sourceRoot":"","sources":["../src/mappedbatchloader.ts"],"names":[],"mappings":";;AAEA;IAEE,2BACY,MAAgC,EAChC,KAG6B;QAJ7B,WAAM,GAAN,MAAM,CAA0B;QAChC,UAAK,GAAL,KAAK,CAGwB;IACtC,CAAC;IAEG,gCAAI,GAAX,UAAY,GAAQ;QAApB,iBAEC;QADC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAtB,CAAsB,CAAC,CAAC;IACvE,CAAC;IAEM,oCAAQ,GAAf,UAAgB,IAAW;QAA3B,iBAcC;QAbC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,MAAM;YAC5C,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAM,OAAO,GAA8C,EAAE,CAAC;YAC9D,IAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAM,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,UAAU;oBACR,UAAU;wBACV,CAAC,GAAG,IAAI,IAAI,IAAI,OAAQ,GAAW,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;aAC5D;YACD,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAyB,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,qCAAS,GAAhB,UACE,KAAsD;QAEtD,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACH,wBAAC;AAAD,CAAC,AAnCD,IAmCC;AAnCY,8CAAiB"} |
| export interface IBatchLoader<Key, Value> { | ||
| load(key: Key): Promise<Value>; | ||
| loadMany(keys: Key[]): Promise<Value[]>; | ||
| mapLoader<MappedValue>(mapFn: (value: Value) => MappedValue): IBatchLoader<Key, MappedValue>; | ||
| } | ||
| export declare type MaybePromise<T> = T | Promise<T>; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| //# sourceMappingURL=types.js.map |
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
89916
57.23%75
87.5%977
35.69%1
Infinity%