@bringg/dashboard-sdk 9.91.0 → 9.91.1-pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Vehicle/v2/vehicles-api.d.ts +3 -3
- package/dist/Vehicle/v2/vehicles-api.js +19 -0
- package/dist/Vehicle/v2/vehicles-api.js.map +1 -1
- package/dist/bringg-dashboard-sdk-cjs2.js +219 -1
- package/dist/bringg-dashboard-sdk-cjs2.js.map +1 -1
- package/dist/bringg-dashboard-sdk.js +13 -2
- package/dist/bringg-dashboard-sdk.min.js +1 -1
- package/dist/bringg-dashboard-sdk.min.js.map +1 -1
- package/dist/utils/decorators/negative-cache.d.ts +27 -0
- package/dist/utils/decorators/negative-cache.js +192 -0
- package/dist/utils/decorators/negative-cache.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { KeysetPaginationResponse, MerchantConfigurationCSVField, Vehicle, VehicleChange } from '@bringg/types';
|
|
2
|
-
import { StorableEventUnsubscribe } from '../../Data/storable-types';
|
|
3
2
|
import { DataOptions, GroupValue } from '../../data-entity';
|
|
4
3
|
import Session from '../../Services/Identity/Session';
|
|
5
4
|
import { PagedVehiclesFilters, PagedVehiclesResponse, VehicleGroup, VehiclesCsvImportResponse } from '../Vehicle.consts';
|
|
6
5
|
type VehicleDTO = Vehicle & {
|
|
7
6
|
default_parking_spot_external_id?: string;
|
|
8
7
|
};
|
|
8
|
+
export declare const MISSING_VEHICLES_CACHE_TTL: number;
|
|
9
9
|
export default class VehiclesApi {
|
|
10
10
|
private readonly vehiclesStore;
|
|
11
11
|
private readonly vehiclesService;
|
|
@@ -23,8 +23,8 @@ export default class VehiclesApi {
|
|
|
23
23
|
create(vehicleData: Partial<VehicleDTO>): Promise<Vehicle>;
|
|
24
24
|
updateStoreOnEvents(): void;
|
|
25
25
|
private mapVehicle;
|
|
26
|
-
onUpdate(callback: (vehicle: Vehicle) => void): StorableEventUnsubscribe;
|
|
27
|
-
onDelete(callback: (vehicle: Vehicle) => void): StorableEventUnsubscribe;
|
|
26
|
+
onUpdate(callback: (vehicle: Vehicle) => void): import("../../Data/storable-types").StorableEventUnsubscribe;
|
|
27
|
+
onDelete(callback: (vehicle: Vehicle) => void): import("../../Data/storable-types").StorableEventUnsubscribe;
|
|
28
28
|
onUnassigned(callback: (vehicle: Vehicle) => void): () => void;
|
|
29
29
|
get(id: number): Vehicle;
|
|
30
30
|
getAll(): Vehicle[];
|
|
@@ -10,6 +10,12 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
14
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
16
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
17
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
18
|
+
};
|
|
13
19
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
20
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
21
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -50,14 +56,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
50
56
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
57
|
};
|
|
52
58
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59
|
+
exports.MISSING_VEHICLES_CACHE_TTL = void 0;
|
|
53
60
|
var types_1 = require("@bringg/types");
|
|
54
61
|
var lodash_1 = require("lodash");
|
|
55
62
|
var data_entity_1 = require("../../data-entity");
|
|
56
63
|
var data_store_1 = __importDefault(require("../../data-store"));
|
|
57
64
|
var storable_data_service_1 = __importDefault(require("../../storable-data-service"));
|
|
65
|
+
var negative_cache_1 = __importDefault(require("../../utils/decorators/negative-cache"));
|
|
58
66
|
var Vehicle_consts_1 = require("../Vehicle.consts");
|
|
59
67
|
var vehicle_realtime_subscriptions_1 = __importDefault(require("./vehicle-realtime-subscriptions"));
|
|
60
68
|
var vehicles_service_1 = __importDefault(require("./vehicles-service"));
|
|
69
|
+
// How long a vehicle id the server did not return stays out of `batch_get` requests.
|
|
70
|
+
exports.MISSING_VEHICLES_CACHE_TTL = 1000 * 60 * 10; // 10 minutes
|
|
61
71
|
var VehiclesApi = /** @class */ (function () {
|
|
62
72
|
function VehiclesApi(session) {
|
|
63
73
|
var _this = this;
|
|
@@ -82,6 +92,9 @@ var VehiclesApi = /** @class */ (function () {
|
|
|
82
92
|
var _this = this;
|
|
83
93
|
return this.storableDataService.loadAll('loadAllByTeam', function () { return _this.vehiclesService.loadAllByTeam(teamId); }, __assign(__assign({}, options), { groupType: Vehicle_consts_1.VehicleGroup.Team, groupValue: teamId }));
|
|
84
94
|
};
|
|
95
|
+
// Suppression assumes an id absent from the response is ones the backend can not return for the current user.
|
|
96
|
+
// Note! Items dropped by the backend because ids.length is greater than limit hardcoded on the backend side
|
|
97
|
+
// also fall in this bucket.
|
|
85
98
|
VehiclesApi.prototype.loadMany = function (ids, options) {
|
|
86
99
|
if (options === void 0) { options = data_entity_1.DEFAULT_OPTIONS; }
|
|
87
100
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -240,6 +253,12 @@ var VehiclesApi = /** @class */ (function () {
|
|
|
240
253
|
});
|
|
241
254
|
});
|
|
242
255
|
};
|
|
256
|
+
__decorate([
|
|
257
|
+
(0, negative_cache_1.default)({
|
|
258
|
+
ttlMs: exports.MISSING_VEHICLES_CACHE_TTL,
|
|
259
|
+
hasItem: function (vehiclesApi, id) { return !(0, lodash_1.isNil)(vehiclesApi.get(id)); }
|
|
260
|
+
})
|
|
261
|
+
], VehiclesApi.prototype, "loadMany", null);
|
|
243
262
|
return VehiclesApi;
|
|
244
263
|
}());
|
|
245
264
|
exports.default = VehiclesApi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vehicles-api.js","sourceRoot":"","sources":["../../../src/Vehicle/v2/vehicles-api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vehicles-api.js","sourceRoot":"","sources":["../../../src/Vehicle/v2/vehicles-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -24784,7 +24784,7 @@ var BringgException_1 = __webpack_require__(43605);
|
|
|
24784
24784
|
var client_page_1 = __webpack_require__(16573);
|
|
24785
24785
|
var Logger_1 = __importDefault(__webpack_require__(55860));
|
|
24786
24786
|
var abort_1 = __webpack_require__(34179);
|
|
24787
|
-
var version = '9.91.
|
|
24787
|
+
var version = '9.91.1-pre';
|
|
24788
24788
|
function logErrorResponse(response) {
|
|
24789
24789
|
var data = response.data, status = response.status;
|
|
24790
24790
|
try {
|
|
@@ -34649,6 +34649,12 @@ var __assign = (this && this.__assign) || function () {
|
|
|
34649
34649
|
};
|
|
34650
34650
|
return __assign.apply(this, arguments);
|
|
34651
34651
|
};
|
|
34652
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
34653
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
34654
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
34655
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
34656
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
34657
|
+
};
|
|
34652
34658
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
34653
34659
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
34654
34660
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -34689,14 +34695,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
34689
34695
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
34690
34696
|
};
|
|
34691
34697
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
34698
|
+
exports.MISSING_VEHICLES_CACHE_TTL = void 0;
|
|
34692
34699
|
var types_1 = __webpack_require__(63127);
|
|
34693
34700
|
var lodash_1 = __webpack_require__(96486);
|
|
34694
34701
|
var data_entity_1 = __webpack_require__(91083);
|
|
34695
34702
|
var data_store_1 = __importDefault(__webpack_require__(73135));
|
|
34696
34703
|
var storable_data_service_1 = __importDefault(__webpack_require__(45297));
|
|
34704
|
+
var negative_cache_1 = __importDefault(__webpack_require__(2521));
|
|
34697
34705
|
var Vehicle_consts_1 = __webpack_require__(84010);
|
|
34698
34706
|
var vehicle_realtime_subscriptions_1 = __importDefault(__webpack_require__(25240));
|
|
34699
34707
|
var vehicles_service_1 = __importDefault(__webpack_require__(87386));
|
|
34708
|
+
// How long a vehicle id the server did not return stays out of `batch_get` requests.
|
|
34709
|
+
exports.MISSING_VEHICLES_CACHE_TTL = 1000 * 60 * 10; // 10 minutes
|
|
34700
34710
|
var VehiclesApi = /** @class */ (function () {
|
|
34701
34711
|
function VehiclesApi(session) {
|
|
34702
34712
|
var _this = this;
|
|
@@ -34721,6 +34731,9 @@ var VehiclesApi = /** @class */ (function () {
|
|
|
34721
34731
|
var _this = this;
|
|
34722
34732
|
return this.storableDataService.loadAll('loadAllByTeam', function () { return _this.vehiclesService.loadAllByTeam(teamId); }, __assign(__assign({}, options), { groupType: Vehicle_consts_1.VehicleGroup.Team, groupValue: teamId }));
|
|
34723
34733
|
};
|
|
34734
|
+
// Suppression assumes an id absent from the response is ones the backend can not return for the current user.
|
|
34735
|
+
// Note! Items dropped by the backend because ids.length is greater than limit hardcoded on the backend side
|
|
34736
|
+
// also fall in this bucket.
|
|
34724
34737
|
VehiclesApi.prototype.loadMany = function (ids, options) {
|
|
34725
34738
|
if (options === void 0) { options = data_entity_1.DEFAULT_OPTIONS; }
|
|
34726
34739
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -34879,6 +34892,12 @@ var VehiclesApi = /** @class */ (function () {
|
|
|
34879
34892
|
});
|
|
34880
34893
|
});
|
|
34881
34894
|
};
|
|
34895
|
+
__decorate([
|
|
34896
|
+
(0, negative_cache_1.default)({
|
|
34897
|
+
ttlMs: exports.MISSING_VEHICLES_CACHE_TTL,
|
|
34898
|
+
hasItem: function (vehiclesApi, id) { return !(0, lodash_1.isNil)(vehiclesApi.get(id)); }
|
|
34899
|
+
})
|
|
34900
|
+
], VehiclesApi.prototype, "loadMany", null);
|
|
34882
34901
|
return VehiclesApi;
|
|
34883
34902
|
}());
|
|
34884
34903
|
exports["default"] = VehiclesApi;
|
|
@@ -37343,6 +37362,205 @@ exports["default"] = withPromiseCache;
|
|
|
37343
37362
|
|
|
37344
37363
|
/***/ }),
|
|
37345
37364
|
|
|
37365
|
+
/***/ 2521:
|
|
37366
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
37367
|
+
|
|
37368
|
+
"use strict";
|
|
37369
|
+
|
|
37370
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37371
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37372
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
37373
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
37374
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
37375
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
37376
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
37377
|
+
});
|
|
37378
|
+
};
|
|
37379
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
37380
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
37381
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37382
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
37383
|
+
function step(op) {
|
|
37384
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
37385
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
37386
|
+
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;
|
|
37387
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
37388
|
+
switch (op[0]) {
|
|
37389
|
+
case 0: case 1: t = op; break;
|
|
37390
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
37391
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
37392
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
37393
|
+
default:
|
|
37394
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37395
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
37396
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
37397
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
37398
|
+
if (t[2]) _.ops.pop();
|
|
37399
|
+
_.trys.pop(); continue;
|
|
37400
|
+
}
|
|
37401
|
+
op = body.call(thisArg, _);
|
|
37402
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
37403
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
37404
|
+
}
|
|
37405
|
+
};
|
|
37406
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37407
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37408
|
+
};
|
|
37409
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
37410
|
+
exports.DEFAULT_NEGATIVE_CACHE_MAX_SIZE = void 0;
|
|
37411
|
+
var Logger_1 = __importDefault(__webpack_require__(55860));
|
|
37412
|
+
exports.DEFAULT_NEGATIVE_CACHE_MAX_SIZE = 5000;
|
|
37413
|
+
var instanceCaches = new WeakMap();
|
|
37414
|
+
var getCache = function (instance) {
|
|
37415
|
+
var cache = instanceCaches.get(instance);
|
|
37416
|
+
if (!cache) {
|
|
37417
|
+
cache = { misses: new Map(), lastSweptAt: Date.now() };
|
|
37418
|
+
instanceCaches.set(instance, cache);
|
|
37419
|
+
}
|
|
37420
|
+
return cache;
|
|
37421
|
+
};
|
|
37422
|
+
// Entries are only ever added by the decorated method, so sweeping on call covers every growth path
|
|
37423
|
+
// without a timer that would pin the instance and defeat the WeakMap. An entry recorded just after a
|
|
37424
|
+
// sweep survives until the sweep after next, so worst-case lifetime is ~2x ttlMs.
|
|
37425
|
+
var sweep = function (cache, ttlMs, now, logScope) {
|
|
37426
|
+
if (now - cache.lastSweptAt < ttlMs) {
|
|
37427
|
+
return;
|
|
37428
|
+
}
|
|
37429
|
+
var expired = [];
|
|
37430
|
+
cache.misses.forEach(function (missedAt, id) {
|
|
37431
|
+
if (now - missedAt >= ttlMs) {
|
|
37432
|
+
expired.push(id);
|
|
37433
|
+
}
|
|
37434
|
+
});
|
|
37435
|
+
expired.forEach(function (id) { return cache.misses.delete(id); });
|
|
37436
|
+
cache.lastSweptAt = now;
|
|
37437
|
+
if (expired.length) {
|
|
37438
|
+
Logger_1.default.info("".concat(logScope, ": swept expired"), expired.length, 'remaining', cache.misses.size);
|
|
37439
|
+
}
|
|
37440
|
+
};
|
|
37441
|
+
// A burst of distinct misses inside one ttl window has nothing to sweep - drop oldest first.
|
|
37442
|
+
// Map keeps insertion order and entries are inserted at miss time, so the front is the oldest.
|
|
37443
|
+
// Runs AFTER recording, so a single call that overshoots the cap is trimmed by that same call.
|
|
37444
|
+
var enforceCap = function (cache, maxSize, logScope) {
|
|
37445
|
+
if (cache.misses.size <= maxSize) {
|
|
37446
|
+
return;
|
|
37447
|
+
}
|
|
37448
|
+
var overflow = cache.misses.size - maxSize;
|
|
37449
|
+
var oldestFirst = cache.misses.keys();
|
|
37450
|
+
for (var i = 0; i < overflow; i++) {
|
|
37451
|
+
cache.misses.delete(oldestFirst.next().value);
|
|
37452
|
+
}
|
|
37453
|
+
Logger_1.default.info("".concat(logScope, ": dropped oldest over ").concat(maxSize, " cap"), overflow);
|
|
37454
|
+
};
|
|
37455
|
+
/**
|
|
37456
|
+
* Suppresses ids the server repeatedly fails to return.
|
|
37457
|
+
*
|
|
37458
|
+
* Decorates a `loadMany(ids, options?)` method: ids the previous response omitted are dropped from the
|
|
37459
|
+
* next request until `ttlMs` elapses, so an id the backend cannot return (soft-deleted, scoped to another
|
|
37460
|
+
* team, external, other company) is requested once per TTL instead of on every call.
|
|
37461
|
+
*
|
|
37462
|
+
* TODO(TS 5.x): written as a legacy decorator (`experimentalDecorators`, TS 4.9 here - standard Stage 3
|
|
37463
|
+
* decorators need TS 5.0+). Upgrade when the repo moves to TS 5.x: a Stage 3 method decorator takes
|
|
37464
|
+
* `(originalMethod, context)` and returns the replacement function, so the `PropertyDescriptor`
|
|
37465
|
+
* plumbing below goes away. `./cached-promise.ts` needs the same treatment at that point.
|
|
37466
|
+
*/
|
|
37467
|
+
function withNegativeCache(_a) {
|
|
37468
|
+
var ttlMs = _a.ttlMs, hasItem = _a.hasItem, _b = _a.maxSize, maxSize = _b === void 0 ? exports.DEFAULT_NEGATIVE_CACHE_MAX_SIZE : _b;
|
|
37469
|
+
return function (target, propertyName, propertyDescriptor) {
|
|
37470
|
+
var method = propertyDescriptor.value;
|
|
37471
|
+
var logScope = "".concat(propertyName, " negative cache");
|
|
37472
|
+
propertyDescriptor.value = function (ids, options) {
|
|
37473
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
37474
|
+
var instanceCache, cache, bypassed, expired, held, suppressed, idsToLoad, items, returnedIds, now, missed, resolved;
|
|
37475
|
+
var _this = this;
|
|
37476
|
+
return __generator(this, function (_a) {
|
|
37477
|
+
switch (_a.label) {
|
|
37478
|
+
case 0:
|
|
37479
|
+
// Nothing to load, and no instance to key the per-instance cache on when the method was
|
|
37480
|
+
// detached from it (`const { loadMany } = api`).
|
|
37481
|
+
if (!this || !(ids === null || ids === void 0 ? void 0 : ids.length)) {
|
|
37482
|
+
return [2 /*return*/, method.call(this, ids, options)];
|
|
37483
|
+
}
|
|
37484
|
+
instanceCache = getCache(this);
|
|
37485
|
+
cache = instanceCache.misses;
|
|
37486
|
+
sweep(instanceCache, ttlMs, Date.now(), logScope);
|
|
37487
|
+
if ((options === null || options === void 0 ? void 0 : options.useCache) === false) {
|
|
37488
|
+
bypassed = ids.filter(function (id) { return cache.delete(id); });
|
|
37489
|
+
if (bypassed.length) {
|
|
37490
|
+
Logger_1.default.info("".concat(logScope, ": evicted on useCache=false"), bypassed);
|
|
37491
|
+
}
|
|
37492
|
+
}
|
|
37493
|
+
expired = [];
|
|
37494
|
+
held = [];
|
|
37495
|
+
suppressed = [];
|
|
37496
|
+
idsToLoad = ids.filter(function (id) {
|
|
37497
|
+
var missedAt = cache.get(id);
|
|
37498
|
+
if (missedAt === undefined) {
|
|
37499
|
+
return true;
|
|
37500
|
+
}
|
|
37501
|
+
// Expired, or the item showed up by another route - either way it is requestable again.
|
|
37502
|
+
if (Date.now() - missedAt >= ttlMs) {
|
|
37503
|
+
cache.delete(id);
|
|
37504
|
+
expired.push(id);
|
|
37505
|
+
return true;
|
|
37506
|
+
}
|
|
37507
|
+
if (hasItem(_this, id)) {
|
|
37508
|
+
cache.delete(id);
|
|
37509
|
+
held.push(id);
|
|
37510
|
+
return true;
|
|
37511
|
+
}
|
|
37512
|
+
suppressed.push(id);
|
|
37513
|
+
return false;
|
|
37514
|
+
});
|
|
37515
|
+
if (expired.length) {
|
|
37516
|
+
Logger_1.default.info("".concat(logScope, ": evicted after ").concat(ttlMs, "ms ttl"), expired);
|
|
37517
|
+
}
|
|
37518
|
+
if (held.length) {
|
|
37519
|
+
Logger_1.default.info("".concat(logScope, ": evicted, now held by the instance"), held);
|
|
37520
|
+
}
|
|
37521
|
+
if (suppressed.length) {
|
|
37522
|
+
Logger_1.default.info("".concat(logScope, ": suppressed"), suppressed);
|
|
37523
|
+
}
|
|
37524
|
+
if (!idsToLoad.length) {
|
|
37525
|
+
return [2 /*return*/, []];
|
|
37526
|
+
}
|
|
37527
|
+
return [4 /*yield*/, method.call(this, idsToLoad, options)];
|
|
37528
|
+
case 1:
|
|
37529
|
+
items = _a.sent();
|
|
37530
|
+
returnedIds = new Set(items.map(function (item) { return item.id; }));
|
|
37531
|
+
now = Date.now();
|
|
37532
|
+
missed = [];
|
|
37533
|
+
resolved = [];
|
|
37534
|
+
idsToLoad.forEach(function (id) {
|
|
37535
|
+
if (returnedIds.has(id)) {
|
|
37536
|
+
if (cache.delete(id)) {
|
|
37537
|
+
resolved.push(id);
|
|
37538
|
+
}
|
|
37539
|
+
return;
|
|
37540
|
+
}
|
|
37541
|
+
cache.set(id, now);
|
|
37542
|
+
missed.push(id);
|
|
37543
|
+
});
|
|
37544
|
+
if (resolved.length) {
|
|
37545
|
+
Logger_1.default.info("".concat(logScope, ": evicted, returned by the server"), resolved);
|
|
37546
|
+
}
|
|
37547
|
+
if (missed.length) {
|
|
37548
|
+
Logger_1.default.info("".concat(logScope, ": recorded as missing"), missed, 'cache size', cache.size);
|
|
37549
|
+
}
|
|
37550
|
+
enforceCap(instanceCache, maxSize, logScope);
|
|
37551
|
+
return [2 /*return*/, items];
|
|
37552
|
+
}
|
|
37553
|
+
});
|
|
37554
|
+
});
|
|
37555
|
+
};
|
|
37556
|
+
return propertyDescriptor;
|
|
37557
|
+
};
|
|
37558
|
+
}
|
|
37559
|
+
exports["default"] = withNegativeCache;
|
|
37560
|
+
//# sourceMappingURL=negative-cache.js.map
|
|
37561
|
+
|
|
37562
|
+
/***/ }),
|
|
37563
|
+
|
|
37346
37564
|
/***/ 52581:
|
|
37347
37565
|
/***/ ((__unused_webpack_module, exports) => {
|
|
37348
37566
|
|