@kovalenko/http-request-cache 1.2.2 → 1.2.3
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/CHANGELOG.md +7 -0
- package/esm2020/kovalenko-http-request-cache.mjs +5 -2
- package/esm2020/lib/default-storage.mjs +6 -2
- package/esm2020/lib/http-cache-options.mjs +2 -1
- package/esm2020/lib/http-cache-storage.mjs +2 -1
- package/esm2020/lib/http-request-cache.decorator.mjs +18 -14
- package/esm2020/lib/request-times.mjs +6 -2
- package/esm2020/public-api.mjs +8 -5
- package/fesm2015/kovalenko-http-request-cache.mjs +4 -103
- package/fesm2015/kovalenko-http-request-cache.mjs.map +1 -1
- package/fesm2020/kovalenko-http-request-cache.mjs +4 -101
- package/fesm2020/kovalenko-http-request-cache.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.2.3](https://github.com/menelai/http-request-cache/compare/v1.2.2...v1.2.3) (2022-07-27)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* build commonjs ([9cf8f32](https://github.com/menelai/http-request-cache/commit/9cf8f3244d38aea807e9106492222e353ce95307))
|
|
7
|
+
|
|
1
8
|
## [1.2.2](https://github.com/menelai/http-request-cache/compare/v1.2.1...v1.2.2) (2022-06-28)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Generated bundle index. Do not edit.
|
|
3
4
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
tslib_1.__exportStar(require("./public-api"), exports);
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia292YWxlbmtvLWh0dHAtcmVxdWVzdC1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1jYWNoZS9zcmMva292YWxlbmtvLWh0dHAtcmVxdWVzdC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILHVEQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultStorage = void 0;
|
|
4
|
+
class DefaultStorage {
|
|
2
5
|
constructor() {
|
|
3
6
|
this.storage = new Map();
|
|
4
7
|
}
|
|
@@ -12,4 +15,5 @@ export class DefaultStorage {
|
|
|
12
15
|
this.storage.delete(key);
|
|
13
16
|
}
|
|
14
17
|
}
|
|
15
|
-
|
|
18
|
+
exports.DefaultStorage = DefaultStorage;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LWNhY2hlL3NyYy9saWIvZGVmYXVsdC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLE1BQWEsY0FBYztJQUEzQjtRQUNVLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQWF2RCxDQUFDO0lBWEMsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxJQUFxQjtRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQWRELHdDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2FjaGVTdG9yYWdlfSBmcm9tICcuL2h0dHAtY2FjaGUtc3RvcmFnZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFN0b3JhZ2UgaW1wbGVtZW50cyBIdHRwQ2FjaGVTdG9yYWdlIHtcbiAgcHJpdmF0ZSBzdG9yYWdlID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4oKTtcblxuICBnZXRJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldChrZXkpO1xuICB9XG5cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgaXRlbTogT2JzZXJ2YWJsZTxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldChrZXksIGl0ZW0pO1xuICB9XG5cbiAgZGVsZXRlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5kZWxldGUoa2V5KTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
3
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LWNhY2hlL3NyYy9saWIvaHR0cC1jYWNoZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0h0dHBDYWNoZVN0b3JhZ2V9IGZyb20gJy4vaHR0cC1jYWNoZS1zdG9yYWdlJztcblxuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2FjaGVPcHRpb25zIHtcbiAgcmVmQ291bnQ/OiBib29sZWFuO1xuICB3aW5kb3dUaW1lPzogbnVtYmVyO1xuICB0dGw/OiBudW1iZXI7XG4gIHN0b3JhZ2U/OiBIdHRwQ2FjaGVTdG9yYWdlO1xuICByZWZyZXNoT24/OiBPYnNlcnZhYmxlPHVua25vd24+IHwgU3ViamVjdDx1bmtub3duPiB8IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPjtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
3
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoZS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LWNhY2hlL3NyYy9saWIvaHR0cC1jYWNoZS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDYWNoZVN0b3JhZ2Uge1xuICBzZXRJdGVtKGtleTogc3RyaW5nLCBpdGVtOiBPYnNlcnZhYmxlPGFueT4pOiB2b2lkO1xuICBnZXRJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgdW5kZWZpbmVkO1xuICBkZWxldGVJdGVtKGtleTogc3RyaW5nKTogdm9pZDtcbn1cbiJdfQ==
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpRequestCache = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const default_storage_1 = require("./default-storage");
|
|
7
|
+
const request_times_1 = require("./request-times");
|
|
8
|
+
const HttpRequestCache = (optionsHandler) => {
|
|
6
9
|
return (target, methodName, descriptor) => {
|
|
7
10
|
if (!(descriptor?.value instanceof Function)) {
|
|
8
11
|
throw Error(`'@HttpRequestCache' can be applied only to the class method which returns an Observable`);
|
|
@@ -14,10 +17,10 @@ export const HttpRequestCache = (optionsHandler) => {
|
|
|
14
17
|
descriptor.value = function (...args) {
|
|
15
18
|
const options = optionsHandler?.call(this, this, ...args);
|
|
16
19
|
if (!options?.storage && !target._____storage_____) {
|
|
17
|
-
target._____storage_____ = new DefaultStorage();
|
|
20
|
+
target._____storage_____ = new default_storage_1.DefaultStorage();
|
|
18
21
|
}
|
|
19
22
|
if (options?.ttl && !target._____ttl_storage_____) {
|
|
20
|
-
target._____ttl_storage_____ = new RequestTimes();
|
|
23
|
+
target._____ttl_storage_____ = new request_times_1.RequestTimes();
|
|
21
24
|
}
|
|
22
25
|
const storage = options?.storage ?? target._____storage_____;
|
|
23
26
|
const key = `${cacheKeyPrefix}_${JSON.stringify(args)}`;
|
|
@@ -27,7 +30,7 @@ export const HttpRequestCache = (optionsHandler) => {
|
|
|
27
30
|
if (!ttl) {
|
|
28
31
|
ttl = {
|
|
29
32
|
requestTime: Date.now(),
|
|
30
|
-
subject: new Subject(),
|
|
33
|
+
subject: new rxjs_1.Subject(),
|
|
31
34
|
};
|
|
32
35
|
}
|
|
33
36
|
else if (ttl.requestTime + options.ttl <= Date.now()) {
|
|
@@ -37,18 +40,18 @@ export const HttpRequestCache = (optionsHandler) => {
|
|
|
37
40
|
}
|
|
38
41
|
target._____ttl_storage_____.setItem(key, ttl);
|
|
39
42
|
}
|
|
40
|
-
const refreshOn = merge(options?.refreshOn ?? NEVER, ttl?.subject ?? NEVER);
|
|
43
|
+
const refreshOn = (0, rxjs_1.merge)(options?.refreshOn ?? rxjs_1.NEVER, ttl?.subject ?? rxjs_1.NEVER);
|
|
41
44
|
let observable = storage.getItem(key);
|
|
42
45
|
if (!observable) {
|
|
43
|
-
observable = refreshOn.pipe(startWith(true), switchMap(() => originalMethod.apply(this, [...args])), tap(() => {
|
|
46
|
+
observable = refreshOn.pipe((0, operators_1.startWith)(true), (0, operators_1.switchMap)(() => originalMethod.apply(this, [...args])), (0, rxjs_1.tap)(() => {
|
|
44
47
|
delete working[key];
|
|
45
|
-
}), shareReplay({
|
|
48
|
+
}), (0, operators_1.shareReplay)({
|
|
46
49
|
bufferSize: 1,
|
|
47
50
|
refCount: options?.refCount ?? false,
|
|
48
51
|
windowTime: options?.windowTime ?? Infinity,
|
|
49
|
-
}), filter(() => {
|
|
52
|
+
}), (0, rxjs_1.filter)(() => {
|
|
50
53
|
return !working[key];
|
|
51
|
-
}), finalize(() => {
|
|
54
|
+
}), (0, rxjs_1.finalize)(() => {
|
|
52
55
|
subscribers--;
|
|
53
56
|
if (subscribers === 0 && options?.refCount) {
|
|
54
57
|
storage.deleteItem(key);
|
|
@@ -63,4 +66,5 @@ export const HttpRequestCache = (optionsHandler) => {
|
|
|
63
66
|
return descriptor;
|
|
64
67
|
};
|
|
65
68
|
};
|
|
66
|
-
|
|
69
|
+
exports.HttpRequestCache = HttpRequestCache;
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LWNhY2hlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1jYWNoZS9zcmMvbGliL2h0dHAtcmVxdWVzdC1jYWNoZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQThFO0FBQzlFLDhDQUFpRTtBQUNqRSx1REFBaUQ7QUFDakQsbURBQTZDO0FBSXRDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBZ0MsY0FBNkQsRUFBRSxFQUFFO0lBQy9ILE9BQU8sQ0FBQyxNQUFTLEVBQUUsVUFBa0IsRUFBRSxVQUEyRCxFQUFtRCxFQUFFO1FBQ3JKLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLFlBQVksUUFBUSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxLQUFLLENBQUMseUZBQXlGLENBQUMsQ0FBQztTQUN4RztRQUVELE1BQU0sY0FBYyxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbEUsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFDO1FBQzVDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUVwQixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVMsR0FBRyxJQUFXO1lBQ3hDLE1BQU0sT0FBTyxHQUFHLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBUyxFQUFFLElBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRXBFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLENBQUUsTUFBYyxDQUFDLGlCQUFpQixFQUFFO2dCQUMxRCxNQUFjLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxnQ0FBYyxFQUFFLENBQUM7YUFDMUQ7WUFFRCxJQUFJLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBRSxNQUFjLENBQUMs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QXJGWSxRQUFBLGdCQUFnQixvQkFxRjVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2FjaGVPcHRpb25zfSBmcm9tICcuL2h0dHAtY2FjaGUtb3B0aW9ucyc7XG5pbXBvcnQge2ZpbHRlciwgZmluYWxpemUsIG1lcmdlLCBORVZFUiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0RlZmF1bHRTdG9yYWdlfSBmcm9tICcuL2RlZmF1bHQtc3RvcmFnZSc7XG5pbXBvcnQge1JlcXVlc3RUaW1lc30gZnJvbSAnLi9yZXF1ZXN0LXRpbWVzJztcblxudHlwZSBIdHRwUmVxdWVzdENhY2hlTWV0aG9kID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueT47XG5cbmV4cG9ydCBjb25zdCBIdHRwUmVxdWVzdENhY2hlID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihvcHRpb25zSGFuZGxlcj86IChvYmo6IFQsIC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwQ2FjaGVPcHRpb25zKSA9PiB7XG4gIHJldHVybiAodGFyZ2V0OiBULCBtZXRob2ROYW1lOiBzdHJpbmcsIGRlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPEh0dHBSZXF1ZXN0Q2FjaGVNZXRob2Q+KTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8SHR0cFJlcXVlc3RDYWNoZU1ldGhvZD4gPT4ge1xuICAgIGlmICghKGRlc2NyaXB0b3I/LnZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XG4gICAgICB0aHJvdyBFcnJvcihgJ0BIdHRwUmVxdWVzdENhY2hlJyBjYW4gYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhbiBPYnNlcnZhYmxlYCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVLZXlQcmVmaXggPSBgJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1fJHttZXRob2ROYW1lfWA7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IHdvcmtpbmc6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gICAgbGV0IHN1YnNjcmliZXJzID0gMDtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiguLi5hcmdzOiBhbnlbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uc0hhbmRsZXI/LmNhbGwodGhpcyBhcyBULCB0aGlzIGFzIFQsIC4uLmFyZ3MpO1xuXG4gICAgICBpZiAoIW9wdGlvbnM/LnN0b3JhZ2UgJiYgISh0YXJnZXQgYXMgYW55KS5fX19fX3N0b3JhZ2VfX19fXykge1xuICAgICAgICAodGFyZ2V0IGFzIGFueSkuX19fX19zdG9yYWdlX19fX18gPSBuZXcgRGVmYXVsdFN0b3JhZ2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnM/LnR0bCAmJiAhKHRhcmdldCBhcyBhbnkpLl9fX19fdHRsX3N0b3JhZ2VfX19fXykge1xuICAgICAgICAodGFyZ2V0IGFzIGFueSkuX19fX190dGxfc3RvcmFnZV9fX19fID0gbmV3IFJlcXVlc3RUaW1lcygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdG9yYWdlID0gb3B0aW9ucz8uc3RvcmFnZSA/PyAodGFyZ2V0IGFzIGFueSkuX19fX19zdG9yYWdlX19fX187XG5cbiAgICAgIGNvbnN0IGtleSA9IGAke2NhY2hlS2V5UHJlZml4fV8ke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWA7XG5cbiAgICAgIGxldCB0dGw6IHtyZXF1ZXN0VGltZTogbnVtYmVyLCBzdWJqZWN0OiBTdWJqZWN0PHZvaWQ+fSA9IHVuZGVmaW5lZCBhcyBhbnk7XG5cbiAgICAgIGlmIChvcHRpb25zPy50dGwpIHtcbiAgICAgICAgdHRsID0gKHRhcmdldCBhcyBhbnkpLl9fX19fdHRsX3N0b3JhZ2VfX19fXy5nZXRJdGVtKGtleSk7XG5cbiAgICAgICAgaWYgKCF0dGwpIHtcbiAgICAgICAgICB0dGwgPSB7XG4gICAgICAgICAgICByZXF1ZXN0VGltZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIHN1YmplY3Q6IG5ldyBTdWJqZWN0KCksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICh0dGwucmVxdWVzdFRpbWUgKyBvcHRpb25zLnR0bCA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgICAgd29ya2luZ1trZXldID0gdHJ1ZTtcbiAgICAgICAgICB0dGwucmVxdWVzdFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIHR0bC5zdWJqZWN0Lm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgICh0YXJnZXQgYXMgYW55KS5fX19fX3R0bF9zdG9yYWdlX19fX18uc2V0SXRlbShrZXksIHR0bCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlZnJlc2hPbiA9IG1lcmdlKFxuICAgICAgICBvcHRpb25zPy5yZWZyZXNoT24gPz8gTkVWRVIgYXMgT2JzZXJ2YWJsZTx1bmtub3duPixcbiAgICAgICAgIHR0bD8uc3ViamVjdCA/PyBORVZFUixcbiAgICAgICk7XG5cbiAgICAgIGxldCBvYnNlcnZhYmxlID0gc3RvcmFnZS5nZXRJdGVtKGtleSk7XG5cbiAgICAgIGlmICghb2JzZXJ2YWJsZSkge1xuICAgICAgICBvYnNlcnZhYmxlID0gcmVmcmVzaE9uLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBbLi4uYXJnc10pKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIHdvcmtpbmdba2V5XTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICAgICAgcmVmQ291bnQ6IG9wdGlvbnM/LnJlZkNvdW50ID8/IGZhbHNlLFxuICAgICAgICAgICAgd2luZG93VGltZTogb3B0aW9ucz8ud2luZG93VGltZSA/PyBJbmZpbml0eSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF3b3JraW5nW2tleV07XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaWJlcnMtLTtcbiAgICAgICAgICAgIGlmIChzdWJzY3JpYmVycyA9PT0gMCAmJiBvcHRpb25zPy5yZWZDb3VudCkge1xuICAgICAgICAgICAgICBzdG9yYWdlLmRlbGV0ZUl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgKHRhcmdldCBhcyBhbnkpLl9fX19fdHRsX3N0b3JhZ2VfX19fXz8uZGVsZXRlSXRlbShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShrZXksIG9ic2VydmFibGUpO1xuICAgICAgfVxuXG4gICAgICBzdWJzY3JpYmVycysrO1xuXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gIH1cbn1cblxuIl19
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestTimes = void 0;
|
|
4
|
+
class RequestTimes {
|
|
2
5
|
constructor() {
|
|
3
6
|
this.storage = new Map();
|
|
4
7
|
}
|
|
@@ -12,4 +15,5 @@ export class RequestTimes {
|
|
|
12
15
|
this.storage.delete(key);
|
|
13
16
|
}
|
|
14
17
|
}
|
|
15
|
-
|
|
18
|
+
exports.RequestTimes = RequestTimes;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC10aW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1jYWNoZS9zcmMvbGliL3JlcXVlc3QtdGltZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsTUFBYSxZQUFZO0lBQXpCO1FBQ1UsWUFBTyxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO0lBYXZELENBQUM7SUFYQyxPQUFPLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLElBQXFCO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBZEQsb0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDYWNoZVN0b3JhZ2V9IGZyb20gJy4vaHR0cC1jYWNoZS1zdG9yYWdlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0VGltZXMgaW1wbGVtZW50cyBIdHRwQ2FjaGVTdG9yYWdlIHtcbiAgcHJpdmF0ZSBzdG9yYWdlID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4oKTtcblxuICBnZXRJdGVtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldChrZXkpO1xuICB9XG5cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgaXRlbTogT2JzZXJ2YWJsZTxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldChrZXksIGl0ZW0pO1xuICB9XG5cbiAgZGVsZXRlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5kZWxldGUoa2V5KTtcbiAgfVxufVxuIl19
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Public API Surface of http-request-cache
|
|
3
4
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
tslib_1.__exportStar(require("./lib/http-request-cache.decorator"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./lib/http-cache-storage"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./lib/http-cache-options"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./lib/default-storage"), exports);
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1jYWNoZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILDZFQUFtRDtBQUNuRCxtRUFBeUM7QUFDekMsbUVBQXlDO0FBQ3pDLGdFQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaHR0cC1yZXF1ZXN0LWNhY2hlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaHR0cC1yZXF1ZXN0LWNhY2hlLmRlY29yYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9odHRwLWNhY2hlLXN0b3JhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaHR0cC1jYWNoZS1vcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RlZmF1bHQtc3RvcmFnZSc7XG4iXX0=
|
|
@@ -1,107 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import { startWith, switchMap, shareReplay } from 'rxjs/operators';
|
|
3
|
-
|
|
4
|
-
class DefaultStorage {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.storage = new Map();
|
|
7
|
-
}
|
|
8
|
-
getItem(key) {
|
|
9
|
-
return this.storage.get(key);
|
|
10
|
-
}
|
|
11
|
-
setItem(key, item) {
|
|
12
|
-
this.storage.set(key, item);
|
|
13
|
-
}
|
|
14
|
-
deleteItem(key) {
|
|
15
|
-
this.storage.delete(key);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
class RequestTimes {
|
|
20
|
-
constructor() {
|
|
21
|
-
this.storage = new Map();
|
|
22
|
-
}
|
|
23
|
-
getItem(key) {
|
|
24
|
-
return this.storage.get(key);
|
|
25
|
-
}
|
|
26
|
-
setItem(key, item) {
|
|
27
|
-
this.storage.set(key, item);
|
|
28
|
-
}
|
|
29
|
-
deleteItem(key) {
|
|
30
|
-
this.storage.delete(key);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const HttpRequestCache = (optionsHandler) => {
|
|
35
|
-
return (target, methodName, descriptor) => {
|
|
36
|
-
if (!((descriptor === null || descriptor === void 0 ? void 0 : descriptor.value) instanceof Function)) {
|
|
37
|
-
throw Error(`'@HttpRequestCache' can be applied only to the class method which returns an Observable`);
|
|
38
|
-
}
|
|
39
|
-
const cacheKeyPrefix = `${target.constructor.name}_${methodName}`;
|
|
40
|
-
const originalMethod = descriptor.value;
|
|
41
|
-
const working = {};
|
|
42
|
-
let subscribers = 0;
|
|
43
|
-
descriptor.value = function (...args) {
|
|
44
|
-
var _a, _b, _c, _d, _e;
|
|
45
|
-
const options = optionsHandler === null || optionsHandler === void 0 ? void 0 : optionsHandler.call(this, this, ...args);
|
|
46
|
-
if (!(options === null || options === void 0 ? void 0 : options.storage) && !target._____storage_____) {
|
|
47
|
-
target._____storage_____ = new DefaultStorage();
|
|
48
|
-
}
|
|
49
|
-
if ((options === null || options === void 0 ? void 0 : options.ttl) && !target._____ttl_storage_____) {
|
|
50
|
-
target._____ttl_storage_____ = new RequestTimes();
|
|
51
|
-
}
|
|
52
|
-
const storage = (_a = options === null || options === void 0 ? void 0 : options.storage) !== null && _a !== void 0 ? _a : target._____storage_____;
|
|
53
|
-
const key = `${cacheKeyPrefix}_${JSON.stringify(args)}`;
|
|
54
|
-
let ttl = undefined;
|
|
55
|
-
if (options === null || options === void 0 ? void 0 : options.ttl) {
|
|
56
|
-
ttl = target._____ttl_storage_____.getItem(key);
|
|
57
|
-
if (!ttl) {
|
|
58
|
-
ttl = {
|
|
59
|
-
requestTime: Date.now(),
|
|
60
|
-
subject: new Subject(),
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
else if (ttl.requestTime + options.ttl <= Date.now()) {
|
|
64
|
-
working[key] = true;
|
|
65
|
-
ttl.requestTime = Date.now();
|
|
66
|
-
ttl.subject.next();
|
|
67
|
-
}
|
|
68
|
-
target._____ttl_storage_____.setItem(key, ttl);
|
|
69
|
-
}
|
|
70
|
-
const refreshOn = merge((_b = options === null || options === void 0 ? void 0 : options.refreshOn) !== null && _b !== void 0 ? _b : NEVER, (_c = ttl === null || ttl === void 0 ? void 0 : ttl.subject) !== null && _c !== void 0 ? _c : NEVER);
|
|
71
|
-
let observable = storage.getItem(key);
|
|
72
|
-
if (!observable) {
|
|
73
|
-
observable = refreshOn.pipe(startWith(true), switchMap(() => originalMethod.apply(this, [...args])), tap(() => {
|
|
74
|
-
delete working[key];
|
|
75
|
-
}), shareReplay({
|
|
76
|
-
bufferSize: 1,
|
|
77
|
-
refCount: (_d = options === null || options === void 0 ? void 0 : options.refCount) !== null && _d !== void 0 ? _d : false,
|
|
78
|
-
windowTime: (_e = options === null || options === void 0 ? void 0 : options.windowTime) !== null && _e !== void 0 ? _e : Infinity,
|
|
79
|
-
}), filter(() => {
|
|
80
|
-
return !working[key];
|
|
81
|
-
}), finalize(() => {
|
|
82
|
-
var _a;
|
|
83
|
-
subscribers--;
|
|
84
|
-
if (subscribers === 0 && (options === null || options === void 0 ? void 0 : options.refCount)) {
|
|
85
|
-
storage.deleteItem(key);
|
|
86
|
-
(_a = target._____ttl_storage_____) === null || _a === void 0 ? void 0 : _a.deleteItem(key);
|
|
87
|
-
}
|
|
88
|
-
}));
|
|
89
|
-
storage.setItem(key, observable);
|
|
90
|
-
}
|
|
91
|
-
subscribers++;
|
|
92
|
-
return observable;
|
|
93
|
-
};
|
|
94
|
-
return descriptor;
|
|
95
|
-
};
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
/*
|
|
99
|
-
* Public API Surface of http-request-cache
|
|
100
|
-
*/
|
|
101
|
-
|
|
1
|
+
"use strict";
|
|
102
2
|
/**
|
|
103
3
|
* Generated bundle index. Do not edit.
|
|
104
4
|
*/
|
|
105
|
-
|
|
106
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
tslib_1.__exportStar(require("./public-api"), exports);
|
|
107
8
|
//# sourceMappingURL=kovalenko-http-request-cache.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kovalenko-http-request-cache.mjs","sources":["../../../projects/http-request-cache/src/
|
|
1
|
+
{"version":3,"file":"kovalenko-http-request-cache.mjs","sources":["../../../projects/http-request-cache/src/kovalenko-http-request-cache.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";AAAA;;AAEG;;;AAEH,OAA6B,CAAA,YAAA,CAAA,OAAA,CAAA,cAAA,CAAA,EAAA,OAAA,CAAA"}
|
|
@@ -1,105 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import { startWith, switchMap, shareReplay } from 'rxjs/operators';
|
|
3
|
-
|
|
4
|
-
class DefaultStorage {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.storage = new Map();
|
|
7
|
-
}
|
|
8
|
-
getItem(key) {
|
|
9
|
-
return this.storage.get(key);
|
|
10
|
-
}
|
|
11
|
-
setItem(key, item) {
|
|
12
|
-
this.storage.set(key, item);
|
|
13
|
-
}
|
|
14
|
-
deleteItem(key) {
|
|
15
|
-
this.storage.delete(key);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
class RequestTimes {
|
|
20
|
-
constructor() {
|
|
21
|
-
this.storage = new Map();
|
|
22
|
-
}
|
|
23
|
-
getItem(key) {
|
|
24
|
-
return this.storage.get(key);
|
|
25
|
-
}
|
|
26
|
-
setItem(key, item) {
|
|
27
|
-
this.storage.set(key, item);
|
|
28
|
-
}
|
|
29
|
-
deleteItem(key) {
|
|
30
|
-
this.storage.delete(key);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const HttpRequestCache = (optionsHandler) => {
|
|
35
|
-
return (target, methodName, descriptor) => {
|
|
36
|
-
if (!(descriptor?.value instanceof Function)) {
|
|
37
|
-
throw Error(`'@HttpRequestCache' can be applied only to the class method which returns an Observable`);
|
|
38
|
-
}
|
|
39
|
-
const cacheKeyPrefix = `${target.constructor.name}_${methodName}`;
|
|
40
|
-
const originalMethod = descriptor.value;
|
|
41
|
-
const working = {};
|
|
42
|
-
let subscribers = 0;
|
|
43
|
-
descriptor.value = function (...args) {
|
|
44
|
-
const options = optionsHandler?.call(this, this, ...args);
|
|
45
|
-
if (!options?.storage && !target._____storage_____) {
|
|
46
|
-
target._____storage_____ = new DefaultStorage();
|
|
47
|
-
}
|
|
48
|
-
if (options?.ttl && !target._____ttl_storage_____) {
|
|
49
|
-
target._____ttl_storage_____ = new RequestTimes();
|
|
50
|
-
}
|
|
51
|
-
const storage = options?.storage ?? target._____storage_____;
|
|
52
|
-
const key = `${cacheKeyPrefix}_${JSON.stringify(args)}`;
|
|
53
|
-
let ttl = undefined;
|
|
54
|
-
if (options?.ttl) {
|
|
55
|
-
ttl = target._____ttl_storage_____.getItem(key);
|
|
56
|
-
if (!ttl) {
|
|
57
|
-
ttl = {
|
|
58
|
-
requestTime: Date.now(),
|
|
59
|
-
subject: new Subject(),
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
else if (ttl.requestTime + options.ttl <= Date.now()) {
|
|
63
|
-
working[key] = true;
|
|
64
|
-
ttl.requestTime = Date.now();
|
|
65
|
-
ttl.subject.next();
|
|
66
|
-
}
|
|
67
|
-
target._____ttl_storage_____.setItem(key, ttl);
|
|
68
|
-
}
|
|
69
|
-
const refreshOn = merge(options?.refreshOn ?? NEVER, ttl?.subject ?? NEVER);
|
|
70
|
-
let observable = storage.getItem(key);
|
|
71
|
-
if (!observable) {
|
|
72
|
-
observable = refreshOn.pipe(startWith(true), switchMap(() => originalMethod.apply(this, [...args])), tap(() => {
|
|
73
|
-
delete working[key];
|
|
74
|
-
}), shareReplay({
|
|
75
|
-
bufferSize: 1,
|
|
76
|
-
refCount: options?.refCount ?? false,
|
|
77
|
-
windowTime: options?.windowTime ?? Infinity,
|
|
78
|
-
}), filter(() => {
|
|
79
|
-
return !working[key];
|
|
80
|
-
}), finalize(() => {
|
|
81
|
-
subscribers--;
|
|
82
|
-
if (subscribers === 0 && options?.refCount) {
|
|
83
|
-
storage.deleteItem(key);
|
|
84
|
-
target._____ttl_storage_____?.deleteItem(key);
|
|
85
|
-
}
|
|
86
|
-
}));
|
|
87
|
-
storage.setItem(key, observable);
|
|
88
|
-
}
|
|
89
|
-
subscribers++;
|
|
90
|
-
return observable;
|
|
91
|
-
};
|
|
92
|
-
return descriptor;
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
/*
|
|
97
|
-
* Public API Surface of http-request-cache
|
|
98
|
-
*/
|
|
99
|
-
|
|
1
|
+
"use strict";
|
|
100
2
|
/**
|
|
101
3
|
* Generated bundle index. Do not edit.
|
|
102
4
|
*/
|
|
103
|
-
|
|
104
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
tslib_1.__exportStar(require("./public-api"), exports);
|
|
105
8
|
//# sourceMappingURL=kovalenko-http-request-cache.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kovalenko-http-request-cache.mjs","sources":["../../../projects/http-request-cache/src/
|
|
1
|
+
{"version":3,"file":"kovalenko-http-request-cache.mjs","sources":["../../../projects/http-request-cache/src/kovalenko-http-request-cache.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";AAAA;;AAEG;;;AAEH,OAA6B,CAAA,YAAA,CAAA,OAAA,CAAA,cAAA,CAAA,EAAA,OAAA,CAAA"}
|