@kovalenko/http-request-cache 1.2.1 → 1.2.2

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 CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.2.2](https://github.com/menelai/http-request-cache/compare/v1.2.1...v1.2.2) (2022-06-28)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * remove unnecessary console.log ([ae2333f](https://github.com/menelai/http-request-cache/commit/ae2333f3cfbe4f4a47d0d640b9034616f9de4bd9))
7
+
1
8
  ## [1.2.1](https://github.com/menelai/http-request-cache/compare/v1.2.0...v1.2.1) (2022-06-28)
2
9
 
3
10
 
@@ -41,7 +41,6 @@ export const HttpRequestCache = (optionsHandler) => {
41
41
  let observable = storage.getItem(key);
42
42
  if (!observable) {
43
43
  observable = refreshOn.pipe(startWith(true), switchMap(() => originalMethod.apply(this, [...args])), tap(() => {
44
- console.log(working);
45
44
  delete working[key];
46
45
  }), shareReplay({
47
46
  bufferSize: 1,
@@ -64,4 +63,4 @@ export const HttpRequestCache = (optionsHandler) => {
64
63
  return descriptor;
65
64
  };
66
65
  };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LWNhY2hlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1jYWNoZS9zcmMvbGliL2h0dHAtcmVxdWVzdC1jYWNoZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFJN0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBZ0MsY0FBNkQsRUFBRSxFQUFFO0lBQy9ILE9BQU8sQ0FBQyxNQUFTLEVBQUUsVUFBa0IsRUFBRSxVQUEyRCxFQUFtRCxFQUFFO1FBQ3JKLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLFlBQVksUUFBUSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxLQUFLLENBQUMseUZBQXlGLENBQUMsQ0FBQztTQUN4RztRQUVELE1BQU0sY0FBYyxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbEUsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFDO1FBQzVDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUVwQixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVMsR0FBRyxJQUFXO1lBQ3hDLE1BQU0sT0FBTyxHQUFHLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBUyxFQUFF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QkFDeEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFDRixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNsQztZQUVELFdBQVcsRUFBRSxDQUFDO1lBRWQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2FjaGVPcHRpb25zfSBmcm9tICcuL2h0dHAtY2FjaGUtb3B0aW9ucyc7XG5pbXBvcnQge2ZpbHRlciwgZmluYWxpemUsIG1lcmdlLCBORVZFUiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0RlZmF1bHRTdG9yYWdlfSBmcm9tICcuL2RlZmF1bHQtc3RvcmFnZSc7XG5pbXBvcnQge1JlcXVlc3RUaW1lc30gZnJvbSAnLi9yZXF1ZXN0LXRpbWVzJztcblxudHlwZSBIdHRwUmVxdWVzdENhY2hlTWV0aG9kID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueT47XG5cbmV4cG9ydCBjb25zdCBIdHRwUmVxdWVzdENhY2hlID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihvcHRpb25zSGFuZGxlcj86IChvYmo6IFQsIC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwQ2FjaGVPcHRpb25zKSA9PiB7XG4gIHJldHVybiAodGFyZ2V0OiBULCBtZXRob2ROYW1lOiBzdHJpbmcsIGRlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPEh0dHBSZXF1ZXN0Q2FjaGVNZXRob2Q+KTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8SHR0cFJlcXVlc3RDYWNoZU1ldGhvZD4gPT4ge1xuICAgIGlmICghKGRlc2NyaXB0b3I/LnZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XG4gICAgICB0aHJvdyBFcnJvcihgJ0BIdHRwUmVxdWVzdENhY2hlJyBjYW4gYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhbiBPYnNlcnZhYmxlYCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVLZXlQcmVmaXggPSBgJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1fJHttZXRob2ROYW1lfWA7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IHdvcmtpbmc6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gICAgbGV0IHN1YnNjcmliZXJzID0gMDtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiguLi5hcmdzOiBhbnlbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uc0hhbmRsZXI/LmNhbGwodGhpcyBhcyBULCB0aGlzIGFzIFQsIC4uLmFyZ3MpO1xuXG4gICAgICBpZiAoIW9wdGlvbnM/LnN0b3JhZ2UgJiYgISh0YXJnZXQgYXMgYW55KS5fX19fX3N0b3JhZ2VfX19fXykge1xuICAgICAgICAodGFyZ2V0IGFzIGFueSkuX19fX19zdG9yYWdlX19fX18gPSBuZXcgRGVmYXVsdFN0b3JhZ2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnM/LnR0bCAmJiAhKHRhcmdldCBhcyBhbnkpLl9fX19fdHRsX3N0b3JhZ2VfX19fXykge1xuICAgICAgICAodGFyZ2V0IGFzIGFueSkuX19fX190dGxfc3RvcmFnZV9fX19fID0gbmV3IFJlcXVlc3RUaW1lcygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdG9yYWdlID0gb3B0aW9ucz8uc3RvcmFnZSA/PyAodGFyZ2V0IGFzIGFueSkuX19fX19zdG9yYWdlX19fX187XG5cbiAgICAgIGNvbnN0IGtleSA9IGAke2NhY2hlS2V5UHJlZml4fV8ke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWA7XG5cbiAgICAgIGxldCB0dGw6IHtyZXF1ZXN0VGltZTogbnVtYmVyLCBzdWJqZWN0OiBTdWJqZWN0PHZvaWQ+fSA9IHVuZGVmaW5lZCBhcyBhbnk7XG5cbiAgICAgIGlmIChvcHRpb25zPy50dGwpIHtcbiAgICAgICAgdHRsID0gKHRhcmdldCBhcyBhbnkpLl9fX19fdHRsX3N0b3JhZ2VfX19fXy5nZXRJdGVtKGtleSk7XG5cbiAgICAgICAgaWYgKCF0dGwpIHtcbiAgICAgICAgICB0dGwgPSB7XG4gICAgICAgICAgICByZXF1ZXN0VGltZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIHN1YmplY3Q6IG5ldyBTdWJqZWN0KCksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICh0dGwucmVxdWVzdFRpbWUgKyBvcHRpb25zLnR0bCA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgICAgd29ya2luZ1trZXldID0gdHJ1ZTtcbiAgICAgICAgICB0dGwucmVxdWVzdFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIHR0bC5zdWJqZWN0Lm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgICh0YXJnZXQgYXMgYW55KS5fX19fX3R0bF9zdG9yYWdlX19fX18uc2V0SXRlbShrZXksIHR0bCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlZnJlc2hPbiA9IG1lcmdlKFxuICAgICAgICBvcHRpb25zPy5yZWZyZXNoT24gPz8gTkVWRVIgYXMgT2JzZXJ2YWJsZTx1bmtub3duPixcbiAgICAgICAgIHR0bD8uc3ViamVjdCA/PyBORVZFUixcbiAgICAgICk7XG5cbiAgICAgIGxldCBvYnNlcnZhYmxlID0gc3RvcmFnZS5nZXRJdGVtKGtleSk7XG5cbiAgICAgIGlmICghb2JzZXJ2YWJsZSkge1xuICAgICAgICBvYnNlcnZhYmxlID0gcmVmcmVzaE9uLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBbLi4uYXJnc10pKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2cod29ya2luZyk7XG4gICAgICAgICAgICBkZWxldGUgd29ya2luZ1trZXldO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgICAgICByZWZDb3VudDogb3B0aW9ucz8ucmVmQ291bnQgPz8gZmFsc2UsXG4gICAgICAgICAgICB3aW5kb3dUaW1lOiBvcHRpb25zPy53aW5kb3dUaW1lID8/IEluZmluaXR5LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXdvcmtpbmdba2V5XTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICBzdWJzY3JpYmVycy0tO1xuICAgICAgICAgICAgaWYgKHN1YnNjcmliZXJzID09PSAwICYmIG9wdGlvbnM/LnJlZkNvdW50KSB7XG4gICAgICAgICAgICAgIHN0b3JhZ2UuZGVsZXRlSXRlbShrZXkpO1xuICAgICAgICAgICAgICAodGFyZ2V0IGFzIGFueSkuX19fX190dGxfc3RvcmFnZV9fX19fPy5kZWxldGVJdGVtKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgb2JzZXJ2YWJsZSk7XG4gICAgICB9XG5cbiAgICAgIHN1YnNjcmliZXJzKys7XG5cbiAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfVxufVxuXG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LWNhY2hlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1jYWNoZS9zcmMvbGliL2h0dHAtcmVxdWVzdC1jYWNoZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFJN0MsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBZ0MsY0FBNkQsRUFBRSxFQUFFO0lBQy9ILE9BQU8sQ0FBQyxNQUFTLEVBQUUsVUFBa0IsRUFBRSxVQUEyRCxFQUFtRCxFQUFFO1FBQ3JKLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLFlBQVksUUFBUSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxLQUFLLENBQUMseUZBQXlGLENBQUMsQ0FBQztTQUN4RztRQUVELE1BQU0sY0FBYyxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbEUsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFDO1FBQzVDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUVwQixVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVMsR0FBRyxJQUFXO1lBQ3hDLE1BQU0sT0FBTyxHQUFHLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBUyxFQUFF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LENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNsQztZQUVELFdBQVcsRUFBRSxDQUFDO1lBRWQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2FjaGVPcHRpb25zfSBmcm9tICcuL2h0dHAtY2FjaGUtb3B0aW9ucyc7XG5pbXBvcnQge2ZpbHRlciwgZmluYWxpemUsIG1lcmdlLCBORVZFUiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7c2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0RlZmF1bHRTdG9yYWdlfSBmcm9tICcuL2RlZmF1bHQtc3RvcmFnZSc7XG5pbXBvcnQge1JlcXVlc3RUaW1lc30gZnJvbSAnLi9yZXF1ZXN0LXRpbWVzJztcblxudHlwZSBIdHRwUmVxdWVzdENhY2hlTWV0aG9kID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBPYnNlcnZhYmxlPGFueT47XG5cbmV4cG9ydCBjb25zdCBIdHRwUmVxdWVzdENhY2hlID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihvcHRpb25zSGFuZGxlcj86IChvYmo6IFQsIC4uLmFyZ3M6IGFueVtdKSA9PiBIdHRwQ2FjaGVPcHRpb25zKSA9PiB7XG4gIHJldHVybiAodGFyZ2V0OiBULCBtZXRob2ROYW1lOiBzdHJpbmcsIGRlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPEh0dHBSZXF1ZXN0Q2FjaGVNZXRob2Q+KTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8SHR0cFJlcXVlc3RDYWNoZU1ldGhvZD4gPT4ge1xuICAgIGlmICghKGRlc2NyaXB0b3I/LnZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pKSB7XG4gICAgICB0aHJvdyBFcnJvcihgJ0BIdHRwUmVxdWVzdENhY2hlJyBjYW4gYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhbiBPYnNlcnZhYmxlYCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVLZXlQcmVmaXggPSBgJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX1fJHttZXRob2ROYW1lfWA7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IHdvcmtpbmc6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gICAgbGV0IHN1YnNjcmliZXJzID0gMDtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiguLi5hcmdzOiBhbnlbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0gb3B0aW9uc0hhbmRsZXI/LmNhbGwodGhpcyBhcyBULCB0aGlzIGFzIFQsIC4uLmFyZ3MpO1xuXG4gICAgICBpZiAoIW9wdGlvbnM/LnN0b3JhZ2UgJiYgISh0YXJnZXQgYXMgYW55KS5fX19fX3N0b3JhZ2VfX19fXykge1xuICAgICAgICAodGFyZ2V0IGFzIGFueSkuX19fX19zdG9yYWdlX19fX18gPSBuZXcgRGVmYXVsdFN0b3JhZ2UoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnM/LnR0bCAmJiAhKHRhcmdldCBhcyBhbnkpLl9fX19fdHRsX3N0b3JhZ2VfX19fXykge1xuICAgICAgICAodGFyZ2V0IGFzIGFueSkuX19fX190dGxfc3RvcmFnZV9fX19fID0gbmV3IFJlcXVlc3RUaW1lcygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdG9yYWdlID0gb3B0aW9ucz8uc3RvcmFnZSA/PyAodGFyZ2V0IGFzIGFueSkuX19fX19zdG9yYWdlX19fX187XG5cbiAgICAgIGNvbnN0IGtleSA9IGAke2NhY2hlS2V5UHJlZml4fV8ke0pTT04uc3RyaW5naWZ5KGFyZ3MpfWA7XG5cbiAgICAgIGxldCB0dGw6IHtyZXF1ZXN0VGltZTogbnVtYmVyLCBzdWJqZWN0OiBTdWJqZWN0PHZvaWQ+fSA9IHVuZGVmaW5lZCBhcyBhbnk7XG5cbiAgICAgIGlmIChvcHRpb25zPy50dGwpIHtcbiAgICAgICAgdHRsID0gKHRhcmdldCBhcyBhbnkpLl9fX19fdHRsX3N0b3JhZ2VfX19fXy5nZXRJdGVtKGtleSk7XG5cbiAgICAgICAgaWYgKCF0dGwpIHtcbiAgICAgICAgICB0dGwgPSB7XG4gICAgICAgICAgICByZXF1ZXN0VGltZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIHN1YmplY3Q6IG5ldyBTdWJqZWN0KCksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmICh0dGwucmVxdWVzdFRpbWUgKyBvcHRpb25zLnR0bCA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgICAgd29ya2luZ1trZXldID0gdHJ1ZTtcbiAgICAgICAgICB0dGwucmVxdWVzdFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIHR0bC5zdWJqZWN0Lm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgICh0YXJnZXQgYXMgYW55KS5fX19fX3R0bF9zdG9yYWdlX19fX18uc2V0SXRlbShrZXksIHR0bCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlZnJlc2hPbiA9IG1lcmdlKFxuICAgICAgICBvcHRpb25zPy5yZWZyZXNoT24gPz8gTkVWRVIgYXMgT2JzZXJ2YWJsZTx1bmtub3duPixcbiAgICAgICAgIHR0bD8uc3ViamVjdCA/PyBORVZFUixcbiAgICAgICk7XG5cbiAgICAgIGxldCBvYnNlcnZhYmxlID0gc3RvcmFnZS5nZXRJdGVtKGtleSk7XG5cbiAgICAgIGlmICghb2JzZXJ2YWJsZSkge1xuICAgICAgICBvYnNlcnZhYmxlID0gcmVmcmVzaE9uLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBbLi4uYXJnc10pKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIHdvcmtpbmdba2V5XTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICAgICAgcmVmQ291bnQ6IG9wdGlvbnM/LnJlZkNvdW50ID8/IGZhbHNlLFxuICAgICAgICAgICAgd2luZG93VGltZTogb3B0aW9ucz8ud2luZG93VGltZSA/PyBJbmZpbml0eSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF3b3JraW5nW2tleV07XG4gICAgICAgICAgfSksXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaWJlcnMtLTtcbiAgICAgICAgICAgIGlmIChzdWJzY3JpYmVycyA9PT0gMCAmJiBvcHRpb25zPy5yZWZDb3VudCkge1xuICAgICAgICAgICAgICBzdG9yYWdlLmRlbGV0ZUl0ZW0oa2V5KTtcbiAgICAgICAgICAgICAgKHRhcmdldCBhcyBhbnkpLl9fX19fdHRsX3N0b3JhZ2VfX19fXz8uZGVsZXRlSXRlbShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbShrZXksIG9ic2VydmFibGUpO1xuICAgICAgfVxuXG4gICAgICBzdWJzY3JpYmVycysrO1xuXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gIH1cbn1cblxuIl19
@@ -71,7 +71,6 @@ const HttpRequestCache = (optionsHandler) => {
71
71
  let observable = storage.getItem(key);
72
72
  if (!observable) {
73
73
  observable = refreshOn.pipe(startWith(true), switchMap(() => originalMethod.apply(this, [...args])), tap(() => {
74
- console.log(working);
75
74
  delete working[key];
76
75
  }), shareReplay({
77
76
  bufferSize: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"kovalenko-http-request-cache.mjs","sources":["../../../projects/http-request-cache/src/lib/default-storage.ts","../../../projects/http-request-cache/src/lib/request-times.ts","../../../projects/http-request-cache/src/lib/http-request-cache.decorator.ts","../../../projects/http-request-cache/src/public-api.ts","../../../projects/http-request-cache/src/kovalenko-http-request-cache.ts"],"sourcesContent":["import {HttpCacheStorage} from './http-cache-storage';\nimport {Observable} from 'rxjs';\n\nexport class DefaultStorage implements HttpCacheStorage {\n private storage = new Map<string, Observable<any>>();\n\n getItem(key: string): Observable<any> | undefined {\n return this.storage.get(key);\n }\n\n setItem(key: string, item: Observable<any>): void {\n this.storage.set(key, item);\n }\n\n deleteItem(key: string): void {\n this.storage.delete(key);\n }\n}\n","import {HttpCacheStorage} from './http-cache-storage';\nimport {Observable} from 'rxjs';\n\nexport class RequestTimes implements HttpCacheStorage {\n private storage = new Map<string, Observable<any>>();\n\n getItem(key: string): Observable<any> | undefined {\n return this.storage.get(key);\n }\n\n setItem(key: string, item: Observable<any>): void {\n this.storage.set(key, item);\n }\n\n deleteItem(key: string): void {\n this.storage.delete(key);\n }\n}\n","import {HttpCacheOptions} from './http-cache-options';\nimport {filter, finalize, merge, NEVER, Observable, Subject, tap} from 'rxjs';\nimport {shareReplay, startWith, switchMap} from 'rxjs/operators';\nimport {DefaultStorage} from './default-storage';\nimport {RequestTimes} from './request-times';\n\ntype HttpRequestCacheMethod = (...args: any[]) => Observable<any>;\n\nexport const HttpRequestCache = <T extends Record<string, any>>(optionsHandler?: (obj: T, ...args: any[]) => HttpCacheOptions) => {\n return (target: T, methodName: string, descriptor: TypedPropertyDescriptor<HttpRequestCacheMethod>): TypedPropertyDescriptor<HttpRequestCacheMethod> => {\n if (!(descriptor?.value instanceof Function)) {\n throw Error(`'@HttpRequestCache' can be applied only to the class method which returns an Observable`);\n }\n\n const cacheKeyPrefix = `${target.constructor.name}_${methodName}`;\n const originalMethod = descriptor.value;\n const working: Record<string, boolean> = {};\n let subscribers = 0;\n\n descriptor.value = function(...args: any[]): Observable<any> {\n const options = optionsHandler?.call(this as T, this as T, ...args);\n\n if (!options?.storage && !(target as any)._____storage_____) {\n (target as any)._____storage_____ = new DefaultStorage();\n }\n\n if (options?.ttl && !(target as any)._____ttl_storage_____) {\n (target as any)._____ttl_storage_____ = new RequestTimes();\n }\n\n const storage = options?.storage ?? (target as any)._____storage_____;\n\n const key = `${cacheKeyPrefix}_${JSON.stringify(args)}`;\n\n let ttl: {requestTime: number, subject: Subject<void>} = undefined as any;\n\n if (options?.ttl) {\n ttl = (target as any)._____ttl_storage_____.getItem(key);\n\n if (!ttl) {\n ttl = {\n requestTime: Date.now(),\n subject: new Subject(),\n };\n } else if (ttl.requestTime + options.ttl <= Date.now()) {\n working[key] = true;\n ttl.requestTime = Date.now();\n ttl.subject.next();\n }\n\n (target as any)._____ttl_storage_____.setItem(key, ttl);\n }\n\n const refreshOn = merge(\n options?.refreshOn ?? NEVER as Observable<unknown>,\n ttl?.subject ?? NEVER,\n );\n\n let observable = storage.getItem(key);\n\n if (!observable) {\n observable = refreshOn.pipe(\n startWith(true),\n switchMap(() => originalMethod.apply(this, [...args])),\n tap(() => {\n console.log(working);\n delete working[key];\n }),\n shareReplay({\n bufferSize: 1,\n refCount: options?.refCount ?? false,\n windowTime: options?.windowTime ?? Infinity,\n }),\n filter(() => {\n return !working[key];\n }),\n finalize(() => {\n subscribers--;\n if (subscribers === 0 && options?.refCount) {\n storage.deleteItem(key);\n (target as any)._____ttl_storage_____?.deleteItem(key);\n }\n })\n );\n storage.setItem(key, observable);\n }\n\n subscribers++;\n\n return observable;\n };\n\n return descriptor;\n }\n}\n\n","/*\n * Public API Surface of http-request-cache\n */\n\nexport * from './lib/http-request-cache.decorator';\nexport * from './lib/http-cache-storage';\nexport * from './lib/http-cache-options';\nexport * from './lib/default-storage';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kovalenko-http-request-cache.mjs","sources":["../../../projects/http-request-cache/src/lib/default-storage.ts","../../../projects/http-request-cache/src/lib/request-times.ts","../../../projects/http-request-cache/src/lib/http-request-cache.decorator.ts","../../../projects/http-request-cache/src/public-api.ts","../../../projects/http-request-cache/src/kovalenko-http-request-cache.ts"],"sourcesContent":["import {HttpCacheStorage} from './http-cache-storage';\nimport {Observable} from 'rxjs';\n\nexport class DefaultStorage implements HttpCacheStorage {\n private storage = new Map<string, Observable<any>>();\n\n getItem(key: string): Observable<any> | undefined {\n return this.storage.get(key);\n }\n\n setItem(key: string, item: Observable<any>): void {\n this.storage.set(key, item);\n }\n\n deleteItem(key: string): void {\n this.storage.delete(key);\n }\n}\n","import {HttpCacheStorage} from './http-cache-storage';\nimport {Observable} from 'rxjs';\n\nexport class RequestTimes implements HttpCacheStorage {\n private storage = new Map<string, Observable<any>>();\n\n getItem(key: string): Observable<any> | undefined {\n return this.storage.get(key);\n }\n\n setItem(key: string, item: Observable<any>): void {\n this.storage.set(key, item);\n }\n\n deleteItem(key: string): void {\n this.storage.delete(key);\n }\n}\n","import {HttpCacheOptions} from './http-cache-options';\nimport {filter, finalize, merge, NEVER, Observable, Subject, tap} from 'rxjs';\nimport {shareReplay, startWith, switchMap} from 'rxjs/operators';\nimport {DefaultStorage} from './default-storage';\nimport {RequestTimes} from './request-times';\n\ntype HttpRequestCacheMethod = (...args: any[]) => Observable<any>;\n\nexport const HttpRequestCache = <T extends Record<string, any>>(optionsHandler?: (obj: T, ...args: any[]) => HttpCacheOptions) => {\n return (target: T, methodName: string, descriptor: TypedPropertyDescriptor<HttpRequestCacheMethod>): TypedPropertyDescriptor<HttpRequestCacheMethod> => {\n if (!(descriptor?.value instanceof Function)) {\n throw Error(`'@HttpRequestCache' can be applied only to the class method which returns an Observable`);\n }\n\n const cacheKeyPrefix = `${target.constructor.name}_${methodName}`;\n const originalMethod = descriptor.value;\n const working: Record<string, boolean> = {};\n let subscribers = 0;\n\n descriptor.value = function(...args: any[]): Observable<any> {\n const options = optionsHandler?.call(this as T, this as T, ...args);\n\n if (!options?.storage && !(target as any)._____storage_____) {\n (target as any)._____storage_____ = new DefaultStorage();\n }\n\n if (options?.ttl && !(target as any)._____ttl_storage_____) {\n (target as any)._____ttl_storage_____ = new RequestTimes();\n }\n\n const storage = options?.storage ?? (target as any)._____storage_____;\n\n const key = `${cacheKeyPrefix}_${JSON.stringify(args)}`;\n\n let ttl: {requestTime: number, subject: Subject<void>} = undefined as any;\n\n if (options?.ttl) {\n ttl = (target as any)._____ttl_storage_____.getItem(key);\n\n if (!ttl) {\n ttl = {\n requestTime: Date.now(),\n subject: new Subject(),\n };\n } else if (ttl.requestTime + options.ttl <= Date.now()) {\n working[key] = true;\n ttl.requestTime = Date.now();\n ttl.subject.next();\n }\n\n (target as any)._____ttl_storage_____.setItem(key, ttl);\n }\n\n const refreshOn = merge(\n options?.refreshOn ?? NEVER as Observable<unknown>,\n ttl?.subject ?? NEVER,\n );\n\n let observable = storage.getItem(key);\n\n if (!observable) {\n observable = refreshOn.pipe(\n startWith(true),\n switchMap(() => originalMethod.apply(this, [...args])),\n tap(() => {\n delete working[key];\n }),\n shareReplay({\n bufferSize: 1,\n refCount: options?.refCount ?? false,\n windowTime: options?.windowTime ?? Infinity,\n }),\n filter(() => {\n return !working[key];\n }),\n finalize(() => {\n subscribers--;\n if (subscribers === 0 && options?.refCount) {\n storage.deleteItem(key);\n (target as any)._____ttl_storage_____?.deleteItem(key);\n }\n })\n );\n storage.setItem(key, observable);\n }\n\n subscribers++;\n\n return observable;\n };\n\n return descriptor;\n }\n}\n\n","/*\n * Public API Surface of http-request-cache\n */\n\nexport * from './lib/http-request-cache.decorator';\nexport * from './lib/http-cache-storage';\nexport * from './lib/http-cache-options';\nexport * from './lib/default-storage';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -70,7 +70,6 @@ const HttpRequestCache = (optionsHandler) => {
70
70
  let observable = storage.getItem(key);
71
71
  if (!observable) {
72
72
  observable = refreshOn.pipe(startWith(true), switchMap(() => originalMethod.apply(this, [...args])), tap(() => {
73
- console.log(working);
74
73
  delete working[key];
75
74
  }), shareReplay({
76
75
  bufferSize: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"kovalenko-http-request-cache.mjs","sources":["../../../projects/http-request-cache/src/lib/default-storage.ts","../../../projects/http-request-cache/src/lib/request-times.ts","../../../projects/http-request-cache/src/lib/http-request-cache.decorator.ts","../../../projects/http-request-cache/src/public-api.ts","../../../projects/http-request-cache/src/kovalenko-http-request-cache.ts"],"sourcesContent":["import {HttpCacheStorage} from './http-cache-storage';\nimport {Observable} from 'rxjs';\n\nexport class DefaultStorage implements HttpCacheStorage {\n private storage = new Map<string, Observable<any>>();\n\n getItem(key: string): Observable<any> | undefined {\n return this.storage.get(key);\n }\n\n setItem(key: string, item: Observable<any>): void {\n this.storage.set(key, item);\n }\n\n deleteItem(key: string): void {\n this.storage.delete(key);\n }\n}\n","import {HttpCacheStorage} from './http-cache-storage';\nimport {Observable} from 'rxjs';\n\nexport class RequestTimes implements HttpCacheStorage {\n private storage = new Map<string, Observable<any>>();\n\n getItem(key: string): Observable<any> | undefined {\n return this.storage.get(key);\n }\n\n setItem(key: string, item: Observable<any>): void {\n this.storage.set(key, item);\n }\n\n deleteItem(key: string): void {\n this.storage.delete(key);\n }\n}\n","import {HttpCacheOptions} from './http-cache-options';\nimport {filter, finalize, merge, NEVER, Observable, Subject, tap} from 'rxjs';\nimport {shareReplay, startWith, switchMap} from 'rxjs/operators';\nimport {DefaultStorage} from './default-storage';\nimport {RequestTimes} from './request-times';\n\ntype HttpRequestCacheMethod = (...args: any[]) => Observable<any>;\n\nexport const HttpRequestCache = <T extends Record<string, any>>(optionsHandler?: (obj: T, ...args: any[]) => HttpCacheOptions) => {\n return (target: T, methodName: string, descriptor: TypedPropertyDescriptor<HttpRequestCacheMethod>): TypedPropertyDescriptor<HttpRequestCacheMethod> => {\n if (!(descriptor?.value instanceof Function)) {\n throw Error(`'@HttpRequestCache' can be applied only to the class method which returns an Observable`);\n }\n\n const cacheKeyPrefix = `${target.constructor.name}_${methodName}`;\n const originalMethod = descriptor.value;\n const working: Record<string, boolean> = {};\n let subscribers = 0;\n\n descriptor.value = function(...args: any[]): Observable<any> {\n const options = optionsHandler?.call(this as T, this as T, ...args);\n\n if (!options?.storage && !(target as any)._____storage_____) {\n (target as any)._____storage_____ = new DefaultStorage();\n }\n\n if (options?.ttl && !(target as any)._____ttl_storage_____) {\n (target as any)._____ttl_storage_____ = new RequestTimes();\n }\n\n const storage = options?.storage ?? (target as any)._____storage_____;\n\n const key = `${cacheKeyPrefix}_${JSON.stringify(args)}`;\n\n let ttl: {requestTime: number, subject: Subject<void>} = undefined as any;\n\n if (options?.ttl) {\n ttl = (target as any)._____ttl_storage_____.getItem(key);\n\n if (!ttl) {\n ttl = {\n requestTime: Date.now(),\n subject: new Subject(),\n };\n } else if (ttl.requestTime + options.ttl <= Date.now()) {\n working[key] = true;\n ttl.requestTime = Date.now();\n ttl.subject.next();\n }\n\n (target as any)._____ttl_storage_____.setItem(key, ttl);\n }\n\n const refreshOn = merge(\n options?.refreshOn ?? NEVER as Observable<unknown>,\n ttl?.subject ?? NEVER,\n );\n\n let observable = storage.getItem(key);\n\n if (!observable) {\n observable = refreshOn.pipe(\n startWith(true),\n switchMap(() => originalMethod.apply(this, [...args])),\n tap(() => {\n console.log(working);\n delete working[key];\n }),\n shareReplay({\n bufferSize: 1,\n refCount: options?.refCount ?? false,\n windowTime: options?.windowTime ?? Infinity,\n }),\n filter(() => {\n return !working[key];\n }),\n finalize(() => {\n subscribers--;\n if (subscribers === 0 && options?.refCount) {\n storage.deleteItem(key);\n (target as any)._____ttl_storage_____?.deleteItem(key);\n }\n })\n );\n storage.setItem(key, observable);\n }\n\n subscribers++;\n\n return observable;\n };\n\n return descriptor;\n }\n}\n\n","/*\n * Public API Surface of http-request-cache\n */\n\nexport * from './lib/http-request-cache.decorator';\nexport * from './lib/http-cache-storage';\nexport * from './lib/http-cache-options';\nexport * from './lib/default-storage';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAGa,cAAc,CAAA;AAA3B,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;KAatD;AAXC,IAAA,OAAO,CAAC,GAAW,EAAA;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,GAAW,EAAE,IAAqB,EAAA;QACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC7B;AAED,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC1B;AACF;;MCdY,YAAY,CAAA;AAAzB,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;KAatD;AAXC,IAAA,OAAO,CAAC,GAAW,EAAA;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9B;IAED,OAAO,CAAC,GAAW,EAAE,IAAqB,EAAA;QACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC7B;AAED,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC1B;AACF;;ACTY,MAAA,gBAAgB,GAAG,CAAgC,cAA6D,KAAI;AAC/H,IAAA,OAAO,CAAC,MAAS,EAAE,UAAkB,EAAE,UAA2D,KAAqD;QACrJ,IAAI,EAAE,UAAU,EAAE,KAAK,YAAY,QAAQ,CAAC,EAAE;AAC5C,YAAA,MAAM,KAAK,CAAC,CAAyF,uFAAA,CAAA,CAAC,CAAC;AACxG,SAAA;QAED,MAAM,cAAc,GAAG,CAAA,EAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;AAClE,QAAA,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QACxC,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,IAAI,WAAW,GAAG,CAAC,CAAC;AAEpB,QAAA,UAAU,CAAC,KAAK,GAAG,UAAS,GAAG,IAAW,EAAA;AACxC,YAAA,MAAM,OAAO,GAAG,cAAc,EAAE,IAAI,CAAC,IAAS,EAAE,IAAS,EAAE,GAAG,IAAI,CAAC,CAAC;YAEpE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAE,MAAc,CAAC,iBAAiB,EAAE;AAC1D,gBAAA,MAAc,CAAC,iBAAiB,GAAG,IAAI,cAAc,EAAE,CAAC;AAC1D,aAAA;YAED,IAAI,OAAO,EAAE,GAAG,IAAI,CAAE,MAAc,CAAC,qBAAqB,EAAE;AACzD,gBAAA,MAAc,CAAC,qBAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5D,aAAA;YAED,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAK,MAAc,CAAC,iBAAiB,CAAC;AAEtE,YAAA,MAAM,GAAG,GAAG,CAAG,EAAA,cAAc,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;YAExD,IAAI,GAAG,GAAkD,SAAgB,CAAC;YAE1E,IAAI,OAAO,EAAE,GAAG,EAAE;gBAChB,GAAG,GAAI,MAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAEzD,IAAI,CAAC,GAAG,EAAE;AACR,oBAAA,GAAG,GAAG;AACJ,wBAAA,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;wBACvB,OAAO,EAAE,IAAI,OAAO,EAAE;qBACvB,CAAC;AACH,iBAAA;AAAM,qBAAA,IAAI,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AACtD,oBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACpB,oBAAA,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7B,oBAAA,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,iBAAA;gBAEA,MAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACzD,aAAA;AAED,YAAA,MAAM,SAAS,GAAG,KAAK,CACrB,OAAO,EAAE,SAAS,IAAI,KAA4B,EACjD,GAAG,EAAE,OAAO,IAAI,KAAK,CACvB,CAAC;YAEF,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEtC,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,UAAU,GAAG,SAAS,CAAC,IAAI,CACzB,SAAS,CAAC,IAAI,CAAC,EACf,SAAS,CAAC,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EACtD,GAAG,CAAC,MAAK;AACP,oBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrB,oBAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;iBACrB,CAAC,EACF,WAAW,CAAC;AACV,oBAAA,UAAU,EAAE,CAAC;AACb,oBAAA,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK;AACpC,oBAAA,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,QAAQ;AAC5C,iBAAA,CAAC,EACF,MAAM,CAAC,MAAK;AACV,oBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvB,iBAAC,CAAC,EACF,QAAQ,CAAC,MAAK;AACZ,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,IAAI,WAAW,KAAK,CAAC,IAAI,OAAO,EAAE,QAAQ,EAAE;AAC1C,wBAAA,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACvB,wBAAA,MAAc,CAAC,qBAAqB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;AACxD,qBAAA;iBACF,CAAC,CACH,CAAC;AACF,gBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClC,aAAA;AAED,YAAA,WAAW,EAAE,CAAC;AAEd,YAAA,OAAO,UAAU,CAAC;AACpB,SAAC,CAAC;AAEF,QAAA,OAAO,UAAU,CAAC;AACpB,KAAC,CAAA;AACH;;AC9FA;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"kovalenko-http-request-cache.mjs","sources":["../../../projects/http-request-cache/src/lib/default-storage.ts","../../../projects/http-request-cache/src/lib/request-times.ts","../../../projects/http-request-cache/src/lib/http-request-cache.decorator.ts","../../../projects/http-request-cache/src/public-api.ts","../../../projects/http-request-cache/src/kovalenko-http-request-cache.ts"],"sourcesContent":["import {HttpCacheStorage} from './http-cache-storage';\nimport {Observable} from 'rxjs';\n\nexport class DefaultStorage implements HttpCacheStorage {\n private storage = new Map<string, Observable<any>>();\n\n getItem(key: string): Observable<any> | undefined {\n return this.storage.get(key);\n }\n\n setItem(key: string, item: Observable<any>): void {\n this.storage.set(key, item);\n }\n\n deleteItem(key: string): void {\n this.storage.delete(key);\n }\n}\n","import {HttpCacheStorage} from './http-cache-storage';\nimport {Observable} from 'rxjs';\n\nexport class RequestTimes implements HttpCacheStorage {\n private storage = new Map<string, Observable<any>>();\n\n getItem(key: string): Observable<any> | undefined {\n return this.storage.get(key);\n }\n\n setItem(key: string, item: Observable<any>): void {\n this.storage.set(key, item);\n }\n\n deleteItem(key: string): void {\n this.storage.delete(key);\n }\n}\n","import {HttpCacheOptions} from './http-cache-options';\nimport {filter, finalize, merge, NEVER, Observable, Subject, tap} from 'rxjs';\nimport {shareReplay, startWith, switchMap} from 'rxjs/operators';\nimport {DefaultStorage} from './default-storage';\nimport {RequestTimes} from './request-times';\n\ntype HttpRequestCacheMethod = (...args: any[]) => Observable<any>;\n\nexport const HttpRequestCache = <T extends Record<string, any>>(optionsHandler?: (obj: T, ...args: any[]) => HttpCacheOptions) => {\n return (target: T, methodName: string, descriptor: TypedPropertyDescriptor<HttpRequestCacheMethod>): TypedPropertyDescriptor<HttpRequestCacheMethod> => {\n if (!(descriptor?.value instanceof Function)) {\n throw Error(`'@HttpRequestCache' can be applied only to the class method which returns an Observable`);\n }\n\n const cacheKeyPrefix = `${target.constructor.name}_${methodName}`;\n const originalMethod = descriptor.value;\n const working: Record<string, boolean> = {};\n let subscribers = 0;\n\n descriptor.value = function(...args: any[]): Observable<any> {\n const options = optionsHandler?.call(this as T, this as T, ...args);\n\n if (!options?.storage && !(target as any)._____storage_____) {\n (target as any)._____storage_____ = new DefaultStorage();\n }\n\n if (options?.ttl && !(target as any)._____ttl_storage_____) {\n (target as any)._____ttl_storage_____ = new RequestTimes();\n }\n\n const storage = options?.storage ?? (target as any)._____storage_____;\n\n const key = `${cacheKeyPrefix}_${JSON.stringify(args)}`;\n\n let ttl: {requestTime: number, subject: Subject<void>} = undefined as any;\n\n if (options?.ttl) {\n ttl = (target as any)._____ttl_storage_____.getItem(key);\n\n if (!ttl) {\n ttl = {\n requestTime: Date.now(),\n subject: new Subject(),\n };\n } else if (ttl.requestTime + options.ttl <= Date.now()) {\n working[key] = true;\n ttl.requestTime = Date.now();\n ttl.subject.next();\n }\n\n (target as any)._____ttl_storage_____.setItem(key, ttl);\n }\n\n const refreshOn = merge(\n options?.refreshOn ?? NEVER as Observable<unknown>,\n ttl?.subject ?? NEVER,\n );\n\n let observable = storage.getItem(key);\n\n if (!observable) {\n observable = refreshOn.pipe(\n startWith(true),\n switchMap(() => originalMethod.apply(this, [...args])),\n tap(() => {\n delete working[key];\n }),\n shareReplay({\n bufferSize: 1,\n refCount: options?.refCount ?? false,\n windowTime: options?.windowTime ?? Infinity,\n }),\n filter(() => {\n return !working[key];\n }),\n finalize(() => {\n subscribers--;\n if (subscribers === 0 && options?.refCount) {\n storage.deleteItem(key);\n (target as any)._____ttl_storage_____?.deleteItem(key);\n }\n })\n );\n storage.setItem(key, observable);\n }\n\n subscribers++;\n\n return observable;\n };\n\n return descriptor;\n }\n}\n\n","/*\n * Public API Surface of http-request-cache\n */\n\nexport * from './lib/http-request-cache.decorator';\nexport * from './lib/http-cache-storage';\nexport * from './lib/http-cache-options';\nexport * from './lib/default-storage';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kovalenko/http-request-cache",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "peerDependencies": {
5
5
  "rxjs": ">=7"
6
6
  },