p3x-angular-http-cache-interceptor 2024.10.103 → 2025.4.107

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/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- # 🔥 Cache every request in Angular, not only the GET, but all methods of this interceptor, and allows you to interact with the interceptor via specific headers and modify the request, and these specific headers will be not included in the final request v2024.10.103
9
+ # 🔥 Cache every request in Angular, not only the GET, but all methods of this interceptor, and allows you to interact with the interceptor via specific headers and modify the request, and these specific headers will be not included in the final request v2025.4.107
10
10
 
11
11
 
12
12
 
@@ -20,7 +20,7 @@
20
20
  ### Built on NodeJs version
21
21
 
22
22
  ```txt
23
- v22.3.0
23
+ v22.13.0
24
24
  ```
25
25
 
26
26
 
@@ -29,7 +29,7 @@ v22.3.0
29
29
  # Built on Angular
30
30
 
31
31
  ```text
32
- 18.0.5
32
+ 19.0.6
33
33
  ```
34
34
 
35
35
 
@@ -49,7 +49,7 @@ The way, we can find out what we are caching it is not simple. Usually, you woul
49
49
 
50
50
  To create this cache key, this package is using the `object-hash` package, with the following algorithm:
51
51
  ```ts
52
- import * as hash from 'object-hash'
52
+ import hash from 'object-hash'
53
53
 
54
54
  const hashOptions = {
55
55
  algorithm: 'md5',
@@ -171,6 +171,24 @@ export class AppComponent {
171
171
  ---
172
172
 
173
173
 
174
+ ## Quick and Affordable Web Development Services
175
+
176
+ If you want to quickly and affordably develop your next digital project, visit [corifeus.hu](https://corifeus.hu) for expert solutions tailored to your needs.
177
+
178
+ ---
179
+
180
+ ## Powerful Online Networking Tool
181
+
182
+ Discover the powerful and free online networking tool at [network.corifeus.com](https://network.corifeus.com).
183
+
184
+ **Free**
185
+ Designed for professionals and enthusiasts, this tool provides essential features for network analysis, troubleshooting, and management.
186
+ Additionally, it offers tools for:
187
+ - Monitoring TCP, HTTP, and Ping to ensure optimal network performance and reliability.
188
+ - Status page management to track uptime, performance, and incidents in real time with customizable dashboards.
189
+
190
+ All these features are completely free to use.
191
+
174
192
  ## Support Our Open-Source Project ❤️
175
193
  If you appreciate our work, consider starring this repository or making a donation to support server maintenance and ongoing development. Your support means the world to us—thank you!
176
194
 
@@ -178,7 +196,7 @@ If you appreciate our work, consider starring this repository or making a donati
178
196
  Our server may occasionally be down, but please be patient. Typically, it will be back online within 15-30 minutes. We appreciate your understanding.
179
197
 
180
198
  ### About My Domains
181
- All my domains, including [patrikx3.com](https://patrikx3.com) and [corifeus.com](https://corifeus.com), are developed in my spare time. While you may encounter minor errors, the sites are generally stable and fully functional.
199
+ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.hu](https://corifeus.hu) and [corifeus.com](https://corifeus.com), are developed in my spare time. While you may encounter minor errors, the sites are generally stable and fully functional.
182
200
 
183
201
  ### Versioning Policy
184
202
  **Version Structure:** We follow a Major.Minor.Patch versioning scheme:
@@ -191,7 +209,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com) and [corifeus.com
191
209
  ---
192
210
 
193
211
 
194
- [**P3X-ANGULAR-HTTP-CACHE-INTERCEPTOR**](https://corifeus.com/angular-http-cache-interceptor) Build v2024.10.103
212
+ [**P3X-ANGULAR-HTTP-CACHE-INTERCEPTOR**](https://corifeus.com/angular-http-cache-interceptor) Build v2025.4.107
195
213
 
196
214
  [![NPM](https://img.shields.io/npm/v/p3x-angular-http-cache-interceptor.svg)](https://www.npmjs.com/package/p3x-angular-http-cache-interceptor) [![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
197
215
 
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Injectable, Inject, Optional, NgModule } from '@angular/core';
3
3
  import { HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
4
4
  import { Observable, of } from 'rxjs';
5
- import * as hash from 'object-hash';
5
+ import hash from 'object-hash';
6
6
  import { tap } from 'rxjs/operators';
7
7
 
8
8
  // cache headers has to have a x- prefix
@@ -112,10 +112,10 @@ class HttpCacheInterceptorInterceptor {
112
112
  }
113
113
  */
114
114
  }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: HttpCacheInterceptorInterceptor, deps: [{ token: P3X_HTTP_CACHE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: HttpCacheInterceptorInterceptor }); }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: HttpCacheInterceptorInterceptor, deps: [{ token: P3X_HTTP_CACHE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: HttpCacheInterceptorInterceptor }); }
117
117
  }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: HttpCacheInterceptorInterceptor, decorators: [{
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: HttpCacheInterceptorInterceptor, decorators: [{
119
119
  type: Injectable
120
120
  }], ctorParameters: () => [{ type: undefined, decorators: [{
121
121
  type: Inject,
@@ -136,9 +136,9 @@ class P3XHttpCacheInterceptorModule {
136
136
  ]
137
137
  };
138
138
  }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: P3XHttpCacheInterceptorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
140
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: P3XHttpCacheInterceptorModule }); }
141
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: P3XHttpCacheInterceptorModule, providers: [
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: P3XHttpCacheInterceptorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
140
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: P3XHttpCacheInterceptorModule }); }
141
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: P3XHttpCacheInterceptorModule, providers: [
142
142
  {
143
143
  provide: HTTP_INTERCEPTORS,
144
144
  useClass: HttpCacheInterceptorInterceptor,
@@ -146,7 +146,7 @@ class P3XHttpCacheInterceptorModule {
146
146
  }
147
147
  ] }); }
148
148
  }
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: P3XHttpCacheInterceptorModule, decorators: [{
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: P3XHttpCacheInterceptorModule, decorators: [{
150
150
  type: NgModule,
151
151
  args: [{
152
152
  declarations: [],
@@ -1 +1 @@
1
- {"version":3,"file":"p3x-angular-http-cache-interceptor.mjs","sources":["../../../projects/angular-http-cache-interceptor/src/lib/caching-headers.enum.ts","../../../projects/angular-http-cache-interceptor/src/lib/caching-store.enum.ts","../../../projects/angular-http-cache-interceptor/src/lib/http-cache-config.token.ts","../../../projects/angular-http-cache-interceptor/src/lib/http-cache-interceptor.interceptor.ts","../../../projects/angular-http-cache-interceptor/src/lib/http-cache-interceptor.module.ts","../../../projects/angular-http-cache-interceptor/src/public-api.ts","../../../projects/angular-http-cache-interceptor/src/p3x-angular-http-cache-interceptor.ts"],"sourcesContent":["// cache headers has to have a x- prefix\nexport enum CachingHeaders {\n NoCache = \"x-p3x-no-cache\",\n Cache = \"x-p3x-cache\",\n}\n","// cache headers has to have a x- prefix\nexport enum CachingStore {\n Global,\n PerModule\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { HttpCacheConfig } from \"./http-cache-config\";\n\nexport const P3X_HTTP_CACHE_CONFIG = new InjectionToken(\n 'P3X_HTTP_CACHE_CONFIG'\n)\n","import {Inject, Injectable, Optional} from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport {Observable, of} from 'rxjs';\n\nimport * as hash from 'object-hash'\nimport {tap} from \"rxjs/operators\";\n\nimport {CachingHeaders} from \"./caching-headers.enum\";\nimport {CachingStore} from \"./caching-store.enum\";\n\nimport {P3X_HTTP_CACHE_CONFIG} from \"./http-cache-config.token\";\nimport {HttpCacheConfig} from \"./http-cache-config\";\n\n\nconst hashOptions = {\n algorithm: 'md5',\n encoding: 'hex'\n}\n\nconst globalCache = new Map<string, any>()\n\n@Injectable()\nexport class HttpCacheInterceptorInterceptor implements HttpInterceptor {\n\n private cachedData = new Map<string, any>()\n\n httpCacheConfig : HttpCacheConfig = {\n behavior: CachingHeaders.Cache,\n store: CachingStore.Global,\n }\n\n getCache(key: string) {\n if (this.httpCacheConfig.store === CachingStore.Global) {\n return globalCache.get(key)\n } else {\n return this.cachedData.get(key)\n }\n }\n\n setCache(key: string, value: any) {\n if (this.httpCacheConfig.store === CachingStore.Global) {\n globalCache.set(key, value)\n } else {\n this.cachedData.set(key, value)\n }\n }\n\n constructor(@Inject(P3X_HTTP_CACHE_CONFIG) @Optional() httpCacheConfigToken: HttpCacheConfig) {\n if (httpCacheConfigToken) {\n this.httpCacheConfig = httpCacheConfigToken\n }\n }\n\n httpToKey(httpRequest: HttpRequest<any>) {\n const body = JSON.parse(JSON.stringify(httpRequest.body))\n const key = httpRequest.method + '@' + httpRequest.urlWithParams + '@' + hash(httpRequest.params, hashOptions) + '@' + hash(body, hashOptions)\n return key\n }\n\n intercept(httpRequest: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n\n\n //console.log(httpRequest)\n //console.log('has', httpRequest.headers.has(CachingHeaders.NoCache))\n //console.log('value', httpRequest.headers.get(CachingHeaders.NoCache))\n\n const forcedCache = httpRequest.headers.get(CachingHeaders.Cache) !== null\n const forcedNoneCache = httpRequest.headers.get(CachingHeaders.NoCache) !== null\n\n //console.log('forcedCache', forcedCache, 'forcedNoneCache', forcedNoneCache)\n\n let headers = httpRequest.headers.delete(CachingHeaders.NoCache)\n headers = headers.delete(CachingHeaders.Cache)\n httpRequest = httpRequest.clone({\n headers: headers\n })\n\n if (forcedCache && forcedNoneCache) {\n throw new Error('You cannot use cache and non-cache header at once!')\n } else if (forcedNoneCache || (this.httpCacheConfig.behavior === CachingHeaders.NoCache && !forcedCache)) {\n return next.handle(httpRequest);\n } else if (forcedCache || (this.httpCacheConfig.behavior === CachingHeaders.Cache && !forcedNoneCache)) {\n // Checked if there is cached data for this URI\n const key = this.httpToKey(httpRequest)\n const lastResponse = this.getCache(key);\n if (lastResponse) {\n // In case of parallel requests to same URI,\n // return the request already in progress\n // otherwise return the last cached data\n\n //console.info('http cache interceptor hit cache', key)\n\n return (lastResponse instanceof Observable)\n ? lastResponse : of(lastResponse.clone());\n }\n\n //console.info('http cache interceptor', key)\n\n // If the request of going through for first time\n // then let the request proceed and cache the response\n const requestHandle = next.handle(httpRequest).pipe(\n tap((stateEvent: any) => {\n if (stateEvent instanceof HttpResponse) {\n this.setCache(\n key,\n stateEvent.clone()\n );\n }\n })\n )\n\n // Meanwhile cache the request Observable to handle parallel request\n //this.cachedData.set(key, requestHandle);\n\n return requestHandle;\n } else {\n console.error(this.httpCacheConfig)\n console.error(httpRequest.headers)\n throw new Error('There is a configuration in your setup')\n }\n\n /*\n // Also leave scope of resetting already cached data for a URI\n if (httpRequest.headers.get(\"reset-cache\")) {\n this.cachedData.delete(httpRequest.urlWithParams);\n }\n */\n\n\n }\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport { HTTP_INTERCEPTORS } from \"@angular/common/http\";\nimport { HttpCacheInterceptorInterceptor } from './http-cache-interceptor.interceptor'\n\nimport { P3X_HTTP_CACHE_CONFIG } from \"./http-cache-config.token\";\nimport { HttpCacheConfig } from \"./http-cache-config\";\n\n@NgModule({\n declarations: [],\n imports: [\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpCacheInterceptorInterceptor,\n multi: true\n }\n ],\n exports: []\n})\nexport class P3XHttpCacheInterceptorModule {\n\n static forRoot(httpCacheConfig: HttpCacheConfig): ModuleWithProviders<P3XHttpCacheInterceptorModule> {\n return {\n ngModule: P3XHttpCacheInterceptorModule,\n providers: [\n {\n provide: P3X_HTTP_CACHE_CONFIG,\n useValue: httpCacheConfig\n }\n ]\n };\n }\n\n}\n","/*\n * Public API Surface of angular-http-cache-interceptor\n */\n\nexport * from './lib/http-cache-interceptor.module';\nexport * from './lib/caching-headers.enum'\nexport * from './lib/http-cache-config'\nexport * from './lib/http-cache-config.token'\nexport * from './lib/caching-store.enum'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAAA;IACY,eAGX;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,gBAA0B,CAAA;AAC1B,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,aAAqB,CAAA;AACvB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;ACJD;IACY,aAGX;AAHD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,YAAA,CAAA,YAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACX,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA;;MCDY,qBAAqB,GAAG,IAAI,cAAc,CACrD,uBAAuB;;ACUzB,MAAM,WAAW,GAAG;AAClB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,QAAQ,EAAE,KAAK;CAChB,CAAA;AAED,MAAM,WAAW,GAAI,IAAI,GAAG,EAAe,CAAA;MAG9B,+BAA+B,CAAA;AAS1C,IAAA,QAAQ,CAAC,GAAW,EAAA;QAClB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM,EAAE;AACtD,YAAA,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SAC5B;aAAM;YACL,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SAChC;KACF;IAED,QAAQ,CAAC,GAAW,EAAE,KAAU,EAAA;QAC9B,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM,EAAE;AACtD,YAAA,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;SAC5B;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;SAChC;KACF;AAED,IAAA,WAAA,CAAuD,oBAAqC,EAAA;AAvBpF,QAAA,IAAA,CAAA,UAAU,GAAK,IAAI,GAAG,EAAe,CAAA;AAE7C,QAAA,IAAA,CAAA,eAAe,GAAqB;YAClC,QAAQ,EAAE,cAAc,CAAC,KAAK;YAC9B,KAAK,EAAE,YAAY,CAAC,MAAM;SAC3B,CAAA;QAmBC,IAAI,oBAAoB,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,GAAG,oBAAoB,CAAA;SAC5C;KACF;AAED,IAAA,SAAS,CAAC,WAA6B,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AACzD,QAAA,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,WAAW,CAAC,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AAC9I,QAAA,OAAO,GAAG,CAAA;KACX;IAED,SAAS,CAAC,WAAiC,EAAE,IAAiB,EAAA;;;;AAO5D,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,CAAA;AAC1E,QAAA,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;;AAIhF,QAAA,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAChE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;AAC9C,QAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;AAC9B,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CAAC,CAAA;AAEF,QAAA,IAAI,WAAW,IAAI,eAAe,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;SACtE;AAAM,aAAA,IAAI,eAAe,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,KAAK,cAAc,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;AACxG,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SACjC;AAAM,aAAA,IAAI,WAAW,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,KAAK,cAAc,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,EAAE;;YAEtG,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACvC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,YAAY,EAAE;;;;;AAOhB,gBAAA,OAAO,CAAC,YAAY,YAAY,UAAU;AACxC,sBAAE,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;aAC7C;;;;AAMD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,CAAC,UAAe,KAAI;AACtB,gBAAA,IAAI,UAAU,YAAY,YAAY,EAAE;oBACtC,IAAI,CAAC,QAAQ,CACX,GAAG,EACH,UAAU,CAAC,KAAK,EAAE,CACnB,CAAC;iBACH;aACF,CAAC,CACH,CAAA;;;AAKD,YAAA,OAAO,aAAa,CAAC;SACtB;aAAM;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AACnC,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;SAC1D;AAED;;;;;AAKG;KAGJ;AA3GU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,kBAyBtB,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAzB9B,+BAA+B,EAAA,CAAA,CAAA,EAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;;0BA0BI,MAAM;2BAAC,qBAAqB,CAAA;;0BAAG,QAAQ;;;MC3BzC,6BAA6B,CAAA;IAExC,OAAO,OAAO,CAAC,eAAgC,EAAA;QAC7C,OAAO;AACL,YAAA,QAAQ,EAAE,6BAA6B;AACvC,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,qBAAqB;AAC9B,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;AACF,aAAA;SACF,CAAC;KACH;8GAZU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAA7B,6BAA6B,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,EAT7B,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,+BAA+B;AACzC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,CAAA,CAAA,EAAA;;2FAGU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,EACR;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,+BAA+B;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACZ,iBAAA,CAAA;;;ACnBD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"p3x-angular-http-cache-interceptor.mjs","sources":["../../../projects/angular-http-cache-interceptor/src/lib/caching-headers.enum.ts","../../../projects/angular-http-cache-interceptor/src/lib/caching-store.enum.ts","../../../projects/angular-http-cache-interceptor/src/lib/http-cache-config.token.ts","../../../projects/angular-http-cache-interceptor/src/lib/http-cache-interceptor.interceptor.ts","../../../projects/angular-http-cache-interceptor/src/lib/http-cache-interceptor.module.ts","../../../projects/angular-http-cache-interceptor/src/public-api.ts","../../../projects/angular-http-cache-interceptor/src/p3x-angular-http-cache-interceptor.ts"],"sourcesContent":["// cache headers has to have a x- prefix\nexport enum CachingHeaders {\n NoCache = \"x-p3x-no-cache\",\n Cache = \"x-p3x-cache\",\n}\n","// cache headers has to have a x- prefix\nexport enum CachingStore {\n Global,\n PerModule\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { HttpCacheConfig } from \"./http-cache-config\";\n\nexport const P3X_HTTP_CACHE_CONFIG = new InjectionToken(\n 'P3X_HTTP_CACHE_CONFIG'\n)\n","import {Inject, Injectable, Optional} from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport {Observable, of} from 'rxjs';\n\nimport hash from 'object-hash'\nimport {tap} from \"rxjs/operators\";\n\nimport {CachingHeaders} from \"./caching-headers.enum\";\nimport {CachingStore} from \"./caching-store.enum\";\n\nimport {P3X_HTTP_CACHE_CONFIG} from \"./http-cache-config.token\";\nimport {HttpCacheConfig} from \"./http-cache-config\";\n\n\nconst hashOptions = {\n algorithm: 'md5',\n encoding: 'hex'\n}\n\nconst globalCache = new Map<string, any>()\n\n@Injectable()\nexport class HttpCacheInterceptorInterceptor implements HttpInterceptor {\n\n private cachedData = new Map<string, any>()\n\n httpCacheConfig : HttpCacheConfig = {\n behavior: CachingHeaders.Cache,\n store: CachingStore.Global,\n }\n\n getCache(key: string) {\n if (this.httpCacheConfig.store === CachingStore.Global) {\n return globalCache.get(key)\n } else {\n return this.cachedData.get(key)\n }\n }\n\n setCache(key: string, value: any) {\n if (this.httpCacheConfig.store === CachingStore.Global) {\n globalCache.set(key, value)\n } else {\n this.cachedData.set(key, value)\n }\n }\n\n constructor(@Inject(P3X_HTTP_CACHE_CONFIG) @Optional() httpCacheConfigToken: HttpCacheConfig) {\n if (httpCacheConfigToken) {\n this.httpCacheConfig = httpCacheConfigToken\n }\n }\n\n httpToKey(httpRequest: HttpRequest<any>) {\n const body = JSON.parse(JSON.stringify(httpRequest.body))\n const key = httpRequest.method + '@' + httpRequest.urlWithParams + '@' + hash(httpRequest.params, hashOptions) + '@' + hash(body, hashOptions)\n return key\n }\n\n intercept(httpRequest: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n\n\n //console.log(httpRequest)\n //console.log('has', httpRequest.headers.has(CachingHeaders.NoCache))\n //console.log('value', httpRequest.headers.get(CachingHeaders.NoCache))\n\n const forcedCache = httpRequest.headers.get(CachingHeaders.Cache) !== null\n const forcedNoneCache = httpRequest.headers.get(CachingHeaders.NoCache) !== null\n\n //console.log('forcedCache', forcedCache, 'forcedNoneCache', forcedNoneCache)\n\n let headers = httpRequest.headers.delete(CachingHeaders.NoCache)\n headers = headers.delete(CachingHeaders.Cache)\n httpRequest = httpRequest.clone({\n headers: headers\n })\n\n if (forcedCache && forcedNoneCache) {\n throw new Error('You cannot use cache and non-cache header at once!')\n } else if (forcedNoneCache || (this.httpCacheConfig.behavior === CachingHeaders.NoCache && !forcedCache)) {\n return next.handle(httpRequest);\n } else if (forcedCache || (this.httpCacheConfig.behavior === CachingHeaders.Cache && !forcedNoneCache)) {\n // Checked if there is cached data for this URI\n const key = this.httpToKey(httpRequest)\n const lastResponse = this.getCache(key);\n if (lastResponse) {\n // In case of parallel requests to same URI,\n // return the request already in progress\n // otherwise return the last cached data\n\n //console.info('http cache interceptor hit cache', key)\n\n return (lastResponse instanceof Observable)\n ? lastResponse : of(lastResponse.clone());\n }\n\n //console.info('http cache interceptor', key)\n\n // If the request of going through for first time\n // then let the request proceed and cache the response\n const requestHandle = next.handle(httpRequest).pipe(\n tap((stateEvent: any) => {\n if (stateEvent instanceof HttpResponse) {\n this.setCache(\n key,\n stateEvent.clone()\n );\n }\n })\n )\n\n // Meanwhile cache the request Observable to handle parallel request\n //this.cachedData.set(key, requestHandle);\n\n return requestHandle;\n } else {\n console.error(this.httpCacheConfig)\n console.error(httpRequest.headers)\n throw new Error('There is a configuration in your setup')\n }\n\n /*\n // Also leave scope of resetting already cached data for a URI\n if (httpRequest.headers.get(\"reset-cache\")) {\n this.cachedData.delete(httpRequest.urlWithParams);\n }\n */\n\n\n }\n}\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport { HTTP_INTERCEPTORS } from \"@angular/common/http\";\nimport { HttpCacheInterceptorInterceptor } from './http-cache-interceptor.interceptor'\n\nimport { P3X_HTTP_CACHE_CONFIG } from \"./http-cache-config.token\";\nimport { HttpCacheConfig } from \"./http-cache-config\";\n\n@NgModule({\n declarations: [],\n imports: [\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpCacheInterceptorInterceptor,\n multi: true\n }\n ],\n exports: []\n})\nexport class P3XHttpCacheInterceptorModule {\n\n static forRoot(httpCacheConfig: HttpCacheConfig): ModuleWithProviders<P3XHttpCacheInterceptorModule> {\n return {\n ngModule: P3XHttpCacheInterceptorModule,\n providers: [\n {\n provide: P3X_HTTP_CACHE_CONFIG,\n useValue: httpCacheConfig\n }\n ]\n };\n }\n\n}\n","/*\n * Public API Surface of angular-http-cache-interceptor\n */\n\nexport * from './lib/http-cache-interceptor.module';\nexport * from './lib/caching-headers.enum'\nexport * from './lib/http-cache-config'\nexport * from './lib/http-cache-config.token'\nexport * from './lib/caching-store.enum'\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
@@ -19,16 +19,14 @@
19
19
  },
20
20
  ".": {
21
21
  "types": "./index.d.ts",
22
- "esm2022": "./esm2022/p3x-angular-http-cache-interceptor.mjs",
23
- "esm": "./esm2022/p3x-angular-http-cache-interceptor.mjs",
24
22
  "default": "./fesm2022/p3x-angular-http-cache-interceptor.mjs"
25
23
  }
26
24
  },
27
25
  "sideEffects": false,
28
26
  "devDependencies": {
29
- "corifeus-builder": "^2024.10.103"
27
+ "corifeus-builder": "^2025.4.105"
30
28
  },
31
- "version": "2024.10.103",
29
+ "version": "2025.4.107",
32
30
  "description": "🔥 Cache every request in Angular, not only the GET, but all methods of this interceptor, and allows you to interact with the interceptor via specific headers and modify the request, and these specific headers will be not included in the final request",
33
31
  "repository": {
34
32
  "type": "git",
@@ -1,7 +0,0 @@
1
- // cache headers has to have a x- prefix
2
- export var CachingHeaders;
3
- (function (CachingHeaders) {
4
- CachingHeaders["NoCache"] = "x-p3x-no-cache";
5
- CachingHeaders["Cache"] = "x-p3x-cache";
6
- })(CachingHeaders || (CachingHeaders = {}));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1oZWFkZXJzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWh0dHAtY2FjaGUtaW50ZXJjZXB0b3Ivc3JjL2xpYi9jYWNoaW5nLWhlYWRlcnMuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4Qiw0Q0FBMEIsQ0FBQTtJQUMxQix1Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjYWNoZSBoZWFkZXJzIGhhcyB0byBoYXZlIGEgeC0gcHJlZml4XG5leHBvcnQgZW51bSBDYWNoaW5nSGVhZGVycyB7XG4gIE5vQ2FjaGUgPSBcIngtcDN4LW5vLWNhY2hlXCIsXG4gIENhY2hlID0gXCJ4LXAzeC1jYWNoZVwiLFxufVxuIl19
@@ -1,7 +0,0 @@
1
- // cache headers has to have a x- prefix
2
- export var CachingStore;
3
- (function (CachingStore) {
4
- CachingStore[CachingStore["Global"] = 0] = "Global";
5
- CachingStore[CachingStore["PerModule"] = 1] = "PerModule";
6
- })(CachingStore || (CachingStore = {}));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1zdG9yZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1odHRwLWNhY2hlLWludGVyY2VwdG9yL3NyYy9saWIvY2FjaGluZy1zdG9yZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3RCLG1EQUFNLENBQUE7SUFDTix5REFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLFlBQVksS0FBWixZQUFZLFFBR3ZCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY2FjaGUgaGVhZGVycyBoYXMgdG8gaGF2ZSBhIHgtIHByZWZpeFxuZXhwb3J0IGVudW0gQ2FjaGluZ1N0b3JlIHtcbiAgR2xvYmFsLFxuICBQZXJNb2R1bGVcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWh0dHAtY2FjaGUtaW50ZXJjZXB0b3Ivc3JjL2xpYi9odHRwLWNhY2hlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGluZ0hlYWRlcnN9IGZyb20gXCIuL2NhY2hpbmctaGVhZGVycy5lbnVtXCI7XG5pbXBvcnQgeyBDYWNoaW5nU3RvcmUgfSBmcm9tIFwiLi9jYWNoaW5nLXN0b3JlLmVudW1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2FjaGVDb25maWcge1xuICBiZWhhdmlvcjogQ2FjaGluZ0hlYWRlcnMsXG4gIHN0b3JlOiBDYWNoaW5nU3RvcmUsXG59XG4iXX0=
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from "@angular/core";
2
- export const P3X_HTTP_CACHE_CONFIG = new InjectionToken('P3X_HTTP_CACHE_CONFIG');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoZS1jb25maWcudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWh0dHAtY2FjaGUtaW50ZXJjZXB0b3Ivc3JjL2xpYi9odHRwLWNhY2hlLWNvbmZpZy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUNyRCx1QkFBdUIsQ0FDeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEh0dHBDYWNoZUNvbmZpZyB9IGZyb20gXCIuL2h0dHAtY2FjaGUtY29uZmlnXCI7XG5cbmV4cG9ydCBjb25zdCBQM1hfSFRUUF9DQUNIRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXG4gICdQM1hfSFRUUF9DQUNIRV9DT05GSUcnXG4pXG4iXX0=
@@ -1,112 +0,0 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
2
- import { HttpResponse } from '@angular/common/http';
3
- import { Observable, of } from 'rxjs';
4
- import * as hash from 'object-hash';
5
- import { tap } from "rxjs/operators";
6
- import { CachingHeaders } from "./caching-headers.enum";
7
- import { CachingStore } from "./caching-store.enum";
8
- import { P3X_HTTP_CACHE_CONFIG } from "./http-cache-config.token";
9
- import * as i0 from "@angular/core";
10
- const hashOptions = {
11
- algorithm: 'md5',
12
- encoding: 'hex'
13
- };
14
- const globalCache = new Map();
15
- export class HttpCacheInterceptorInterceptor {
16
- getCache(key) {
17
- if (this.httpCacheConfig.store === CachingStore.Global) {
18
- return globalCache.get(key);
19
- }
20
- else {
21
- return this.cachedData.get(key);
22
- }
23
- }
24
- setCache(key, value) {
25
- if (this.httpCacheConfig.store === CachingStore.Global) {
26
- globalCache.set(key, value);
27
- }
28
- else {
29
- this.cachedData.set(key, value);
30
- }
31
- }
32
- constructor(httpCacheConfigToken) {
33
- this.cachedData = new Map();
34
- this.httpCacheConfig = {
35
- behavior: CachingHeaders.Cache,
36
- store: CachingStore.Global,
37
- };
38
- if (httpCacheConfigToken) {
39
- this.httpCacheConfig = httpCacheConfigToken;
40
- }
41
- }
42
- httpToKey(httpRequest) {
43
- const body = JSON.parse(JSON.stringify(httpRequest.body));
44
- const key = httpRequest.method + '@' + httpRequest.urlWithParams + '@' + hash(httpRequest.params, hashOptions) + '@' + hash(body, hashOptions);
45
- return key;
46
- }
47
- intercept(httpRequest, next) {
48
- //console.log(httpRequest)
49
- //console.log('has', httpRequest.headers.has(CachingHeaders.NoCache))
50
- //console.log('value', httpRequest.headers.get(CachingHeaders.NoCache))
51
- const forcedCache = httpRequest.headers.get(CachingHeaders.Cache) !== null;
52
- const forcedNoneCache = httpRequest.headers.get(CachingHeaders.NoCache) !== null;
53
- //console.log('forcedCache', forcedCache, 'forcedNoneCache', forcedNoneCache)
54
- let headers = httpRequest.headers.delete(CachingHeaders.NoCache);
55
- headers = headers.delete(CachingHeaders.Cache);
56
- httpRequest = httpRequest.clone({
57
- headers: headers
58
- });
59
- if (forcedCache && forcedNoneCache) {
60
- throw new Error('You cannot use cache and non-cache header at once!');
61
- }
62
- else if (forcedNoneCache || (this.httpCacheConfig.behavior === CachingHeaders.NoCache && !forcedCache)) {
63
- return next.handle(httpRequest);
64
- }
65
- else if (forcedCache || (this.httpCacheConfig.behavior === CachingHeaders.Cache && !forcedNoneCache)) {
66
- // Checked if there is cached data for this URI
67
- const key = this.httpToKey(httpRequest);
68
- const lastResponse = this.getCache(key);
69
- if (lastResponse) {
70
- // In case of parallel requests to same URI,
71
- // return the request already in progress
72
- // otherwise return the last cached data
73
- //console.info('http cache interceptor hit cache', key)
74
- return (lastResponse instanceof Observable)
75
- ? lastResponse : of(lastResponse.clone());
76
- }
77
- //console.info('http cache interceptor', key)
78
- // If the request of going through for first time
79
- // then let the request proceed and cache the response
80
- const requestHandle = next.handle(httpRequest).pipe(tap((stateEvent) => {
81
- if (stateEvent instanceof HttpResponse) {
82
- this.setCache(key, stateEvent.clone());
83
- }
84
- }));
85
- // Meanwhile cache the request Observable to handle parallel request
86
- //this.cachedData.set(key, requestHandle);
87
- return requestHandle;
88
- }
89
- else {
90
- console.error(this.httpCacheConfig);
91
- console.error(httpRequest.headers);
92
- throw new Error('There is a configuration in your setup');
93
- }
94
- /*
95
- // Also leave scope of resetting already cached data for a URI
96
- if (httpRequest.headers.get("reset-cache")) {
97
- this.cachedData.delete(httpRequest.urlWithParams);
98
- }
99
- */
100
- }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: HttpCacheInterceptorInterceptor, deps: [{ token: P3X_HTTP_CACHE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
102
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: HttpCacheInterceptorInterceptor }); }
103
- }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: HttpCacheInterceptorInterceptor, decorators: [{
105
- type: Injectable
106
- }], ctorParameters: () => [{ type: undefined, decorators: [{
107
- type: Inject,
108
- args: [P3X_HTTP_CACHE_CONFIG]
109
- }, {
110
- type: Optional
111
- }] }] });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoZS1pbnRlcmNlcHRvci5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItaHR0cC1jYWNoZS1pbnRlcmNlcHRvci9zcmMvbGliL2h0dHAtY2FjaGUtaW50ZXJjZXB0b3IuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBd0QsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUE7QUFDbkMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBSWhFLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFFBQVEsRUFBRSxLQUFLO0NBQ2hCLENBQUE7QUFFRCxNQUFNLFdBQVcsR0FBSSxJQUFJLEdBQUcsRUFBZSxDQUFBO0FBRzNDLE1BQU0sT0FBTywrQkFBK0I7SUFTMUMsUUFBUSxDQUFDLEdBQVc7UUFDbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdB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QUM7Z0JBQ2pCLDRDQUE0QztnQkFDNUMseUNBQXlDO2dCQUN6Qyx3Q0FBd0M7Z0JBRXhDLHVEQUF1RDtnQkFFdkQsT0FBTyxDQUFDLFlBQVksWUFBWSxVQUFVLENBQUM7b0JBQ3pDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBRUQsNkNBQTZDO1lBRTdDLGlEQUFpRDtZQUNqRCxzREFBc0Q7WUFDdEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ2pELEdBQUcsQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFO2dCQUN0QixJQUFJLFVBQVUsWUFBWSxZQUFZLEVBQUUsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FDWCxHQUFHLEVBQ0gsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUNuQixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1lBRUQsb0VBQW9FO1lBQ3BFLDBDQUEwQztZQUUxQyxPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtRQUMzRCxDQUFDO1FBRUQ7Ozs7O1dBS0c7SUFHTCxDQUFDOzhHQTNHVSwrQkFBK0Isa0JBeUJ0QixxQkFBcUI7a0hBekI5QiwrQkFBK0I7OzJGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVU7OzBCQTBCSSxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcblxuaW1wb3J0ICogYXMgaGFzaCBmcm9tICdvYmplY3QtaGFzaCdcbmltcG9ydCB7dGFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHtDYWNoaW5nSGVhZGVyc30gZnJvbSBcIi4vY2FjaGluZy1oZWFkZXJzLmVudW1cIjtcbmltcG9ydCB7Q2FjaGluZ1N0b3JlfSBmcm9tIFwiLi9jYWNoaW5nLXN0b3JlLmVudW1cIjtcblxuaW1wb3J0IHtQM1hfSFRUUF9DQUNIRV9DT05GSUd9IGZyb20gXCIuL2h0dHAtY2FjaGUtY29uZmlnLnRva2VuXCI7XG5pbXBvcnQge0h0dHBDYWNoZUNvbmZpZ30gZnJvbSBcIi4vaHR0cC1jYWNoZS1jb25maWdcIjtcblxuXG5jb25zdCBoYXNoT3B0aW9ucyA9IHtcbiAgYWxnb3JpdGhtOiAnbWQ1JyxcbiAgZW5jb2Rpbmc6ICdoZXgnXG59XG5cbmNvbnN0IGdsb2JhbENhY2hlID0gIG5ldyBNYXA8c3RyaW5nLCBhbnk+KClcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEh0dHBDYWNoZUludGVyY2VwdG9ySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIHByaXZhdGUgY2FjaGVkRGF0YSAgPSAgbmV3IE1hcDxzdHJpbmcsIGFueT4oKVxuXG4gIGh0dHBDYWNoZUNvbmZpZyA6IEh0dHBDYWNoZUNvbmZpZyA9IHtcbiAgICBiZWhhdmlvcjogQ2FjaGluZ0hlYWRlcnMuQ2FjaGUsXG4gICAgc3RvcmU6IENhY2hpbmdTdG9yZS5HbG9iYWwsXG4gIH1cblxuICBnZXRDYWNoZShrZXk6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmh0dHBDYWNoZUNvbmZpZy5zdG9yZSA9PT0gQ2FjaGluZ1N0b3JlLkdsb2JhbCkge1xuICAgICAgcmV0dXJuIGdsb2JhbENhY2hlLmdldChrZXkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlZERhdGEuZ2V0KGtleSlcbiAgICB9XG4gIH1cblxuICBzZXRDYWNoZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLmh0dHBDYWNoZUNvbmZpZy5zdG9yZSA9PT0gQ2FjaGluZ1N0b3JlLkdsb2JhbCkge1xuICAgICAgZ2xvYmFsQ2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FjaGVkRGF0YS5zZXQoa2V5LCB2YWx1ZSlcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFAzWF9IVFRQX0NBQ0hFX0NPTkZJRykgQE9wdGlvbmFsKCkgaHR0cENhY2hlQ29uZmlnVG9rZW46IEh0dHBDYWNoZUNvbmZpZykge1xuICAgIGlmIChodHRwQ2FjaGVDb25maWdUb2tlbikge1xuICAgICAgdGhpcy5odHRwQ2FjaGVDb25maWcgPSBodHRwQ2FjaGVDb25maWdUb2tlblxuICAgIH1cbiAgfVxuXG4gIGh0dHBUb0tleShodHRwUmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IGJvZHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGh0dHBSZXF1ZXN0LmJvZHkpKVxuICAgIGNvbnN0IGtleSA9IGh0dHBSZXF1ZXN0Lm1ldGhvZCArICdAJyArIGh0dHBSZXF1ZXN0LnVybFdpdGhQYXJhbXMgKyAnQCcgKyBoYXNoKGh0dHBSZXF1ZXN0LnBhcmFtcywgaGFzaE9wdGlvbnMpICsgJ0AnICsgaGFzaChib2R5LCBoYXNoT3B0aW9ucylcbiAgICByZXR1cm4ga2V5XG4gIH1cblxuICBpbnRlcmNlcHQoaHR0cFJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XG5cblxuICAgIC8vY29uc29sZS5sb2coaHR0cFJlcXVlc3QpXG4gICAgLy9jb25zb2xlLmxvZygnaGFzJywgaHR0cFJlcXVlc3QuaGVhZGVycy5oYXMoQ2FjaGluZ0hlYWRlcnMuTm9DYWNoZSkpXG4gICAgLy9jb25zb2xlLmxvZygndmFsdWUnLCBodHRwUmVxdWVzdC5oZWFkZXJzLmdldChDYWNoaW5nSGVhZGVycy5Ob0NhY2hlKSlcblxuICAgIGNvbnN0IGZvcmNlZENhY2hlID0gaHR0cFJlcXVlc3QuaGVhZGVycy5nZXQoQ2FjaGluZ0hlYWRlcnMuQ2FjaGUpICE9PSBudWxsXG4gICAgY29uc3QgZm9yY2VkTm9uZUNhY2hlID0gaHR0cFJlcXVlc3QuaGVhZGVycy5nZXQoQ2FjaGluZ0hlYWRlcnMuTm9DYWNoZSkgIT09IG51bGxcblxuICAgIC8vY29uc29sZS5sb2coJ2ZvcmNlZENhY2hlJywgZm9yY2VkQ2FjaGUsICdmb3JjZWROb25lQ2FjaGUnLCBmb3JjZWROb25lQ2FjaGUpXG5cbiAgICBsZXQgaGVhZGVycyA9IGh0dHBSZXF1ZXN0LmhlYWRlcnMuZGVsZXRlKENhY2hpbmdIZWFkZXJzLk5vQ2FjaGUpXG4gICAgaGVhZGVycyA9IGhlYWRlcnMuZGVsZXRlKENhY2hpbmdIZWFkZXJzLkNhY2hlKVxuICAgIGh0dHBSZXF1ZXN0ID0gaHR0cFJlcXVlc3QuY2xvbmUoe1xuICAgICAgaGVhZGVyczogaGVhZGVyc1xuICAgIH0pXG5cbiAgICBpZiAoZm9yY2VkQ2FjaGUgJiYgZm9yY2VkTm9uZUNhY2hlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW5ub3QgdXNlIGNhY2hlIGFuZCBub24tY2FjaGUgaGVhZGVyIGF0IG9uY2UhJylcbiAgICB9IGVsc2UgaWYgKGZvcmNlZE5vbmVDYWNoZSB8fCAodGhpcy5odHRwQ2FjaGVDb25maWcuYmVoYXZpb3IgPT09IENhY2hpbmdIZWFkZXJzLk5vQ2FjaGUgJiYgIWZvcmNlZENhY2hlKSkge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGh0dHBSZXF1ZXN0KTtcbiAgICB9IGVsc2UgaWYgKGZvcmNlZENhY2hlIHx8ICh0aGlzLmh0dHBDYWNoZUNvbmZpZy5iZWhhdmlvciA9PT0gQ2FjaGluZ0hlYWRlcnMuQ2FjaGUgJiYgIWZvcmNlZE5vbmVDYWNoZSkpIHtcbiAgICAgIC8vIENoZWNrZWQgaWYgdGhlcmUgaXMgY2FjaGVkIGRhdGEgZm9yIHRoaXMgVVJJXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmh0dHBUb0tleShodHRwUmVxdWVzdClcbiAgICAgIGNvbnN0IGxhc3RSZXNwb25zZSA9IHRoaXMuZ2V0Q2FjaGUoa2V5KTtcbiAgICAgIGlmIChsYXN0UmVzcG9uc2UpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBwYXJhbGxlbCByZXF1ZXN0cyB0byBzYW1lIFVSSSxcbiAgICAgICAgLy8gcmV0dXJuIHRoZSByZXF1ZXN0IGFscmVhZHkgaW4gcHJvZ3Jlc3NcbiAgICAgICAgLy8gb3RoZXJ3aXNlIHJldHVybiB0aGUgbGFzdCBjYWNoZWQgZGF0YVxuXG4gICAgICAgIC8vY29uc29sZS5pbmZvKCdodHRwIGNhY2hlIGludGVyY2VwdG9yIGhpdCBjYWNoZScsIGtleSlcblxuICAgICAgICByZXR1cm4gKGxhc3RSZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpXG4gICAgICAgICAgPyBsYXN0UmVzcG9uc2UgOiBvZihsYXN0UmVzcG9uc2UuY2xvbmUoKSk7XG4gICAgICB9XG5cbiAgICAgIC8vY29uc29sZS5pbmZvKCdodHRwIGNhY2hlIGludGVyY2VwdG9yJywga2V5KVxuXG4gICAgICAvLyBJZiB0aGUgcmVxdWVzdCBvZiBnb2luZyB0aHJvdWdoIGZvciBmaXJzdCB0aW1lXG4gICAgICAvLyB0aGVuIGxldCB0aGUgcmVxdWVzdCBwcm9jZWVkIGFuZCBjYWNoZSB0aGUgcmVzcG9uc2VcbiAgICAgIGNvbnN0IHJlcXVlc3RIYW5kbGUgPSBuZXh0LmhhbmRsZShodHRwUmVxdWVzdCkucGlwZShcbiAgICAgICAgdGFwKChzdGF0ZUV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGVFdmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRDYWNoZShcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICBzdGF0ZUV2ZW50LmNsb25lKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuXG4gICAgICAvLyBNZWFud2hpbGUgY2FjaGUgdGhlIHJlcXVlc3QgT2JzZXJ2YWJsZSB0byBoYW5kbGUgcGFyYWxsZWwgcmVxdWVzdFxuICAgICAgLy90aGlzLmNhY2hlZERhdGEuc2V0KGtleSwgcmVxdWVzdEhhbmRsZSk7XG5cbiAgICAgIHJldHVybiByZXF1ZXN0SGFuZGxlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKHRoaXMuaHR0cENhY2hlQ29uZmlnKVxuICAgICAgY29uc29sZS5lcnJvcihodHRwUmVxdWVzdC5oZWFkZXJzKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSBpcyBhIGNvbmZpZ3VyYXRpb24gaW4geW91ciBzZXR1cCcpXG4gICAgfVxuXG4gICAgLypcbiAgICAvLyBBbHNvIGxlYXZlIHNjb3BlIG9mIHJlc2V0dGluZyBhbHJlYWR5IGNhY2hlZCBkYXRhIGZvciBhIFVSSVxuICAgIGlmIChodHRwUmVxdWVzdC5oZWFkZXJzLmdldChcInJlc2V0LWNhY2hlXCIpKSB7XG4gICAgICB0aGlzLmNhY2hlZERhdGEuZGVsZXRlKGh0dHBSZXF1ZXN0LnVybFdpdGhQYXJhbXMpO1xuICAgIH1cbiAgICAgKi9cblxuXG4gIH1cbn1cbiJdfQ==
@@ -1,43 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { HTTP_INTERCEPTORS } from "@angular/common/http";
3
- import { HttpCacheInterceptorInterceptor } from './http-cache-interceptor.interceptor';
4
- import { P3X_HTTP_CACHE_CONFIG } from "./http-cache-config.token";
5
- import * as i0 from "@angular/core";
6
- export class P3XHttpCacheInterceptorModule {
7
- static forRoot(httpCacheConfig) {
8
- return {
9
- ngModule: P3XHttpCacheInterceptorModule,
10
- providers: [
11
- {
12
- provide: P3X_HTTP_CACHE_CONFIG,
13
- useValue: httpCacheConfig
14
- }
15
- ]
16
- };
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: P3XHttpCacheInterceptorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.5", ngImport: i0, type: P3XHttpCacheInterceptorModule }); }
20
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: P3XHttpCacheInterceptorModule, providers: [
21
- {
22
- provide: HTTP_INTERCEPTORS,
23
- useClass: HttpCacheInterceptorInterceptor,
24
- multi: true
25
- }
26
- ] }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: P3XHttpCacheInterceptorModule, decorators: [{
29
- type: NgModule,
30
- args: [{
31
- declarations: [],
32
- imports: [],
33
- providers: [
34
- {
35
- provide: HTTP_INTERCEPTORS,
36
- useClass: HttpCacheInterceptorInterceptor,
37
- multi: true
38
- }
39
- ],
40
- exports: []
41
- }]
42
- }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWNoZS1pbnRlcmNlcHRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWh0dHAtY2FjaGUtaW50ZXJjZXB0b3Ivc3JjL2xpYi9odHRwLWNhY2hlLWludGVyY2VwdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUV0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFnQmxFLE1BQU0sT0FBTyw2QkFBNkI7SUFFeEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFnQztRQUM3QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLDZCQUE2QjtZQUN2QyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtvQkFDOUIsUUFBUSxFQUFFLGVBQWU7aUJBQzFCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs4R0FaVSw2QkFBNkI7K0dBQTdCLDZCQUE2QjsrR0FBN0IsNkJBQTZCLGFBVDdCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLCtCQUErQjtnQkFDekMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzsyRkFHVSw2QkFBNkI7a0JBYnpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUNSO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsK0JBQStCOzRCQUN6QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IEh0dHBDYWNoZUludGVyY2VwdG9ySW50ZXJjZXB0b3IgfSBmcm9tICcuL2h0dHAtY2FjaGUtaW50ZXJjZXB0b3IuaW50ZXJjZXB0b3InXG5cbmltcG9ydCB7IFAzWF9IVFRQX0NBQ0hFX0NPTkZJRyB9IGZyb20gXCIuL2h0dHAtY2FjaGUtY29uZmlnLnRva2VuXCI7XG5pbXBvcnQgeyBIdHRwQ2FjaGVDb25maWcgfSBmcm9tIFwiLi9odHRwLWNhY2hlLWNvbmZpZ1wiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxuICAgICAgdXNlQ2xhc3M6IEh0dHBDYWNoZUludGVyY2VwdG9ySW50ZXJjZXB0b3IsXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgZXhwb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgUDNYSHR0cENhY2hlSW50ZXJjZXB0b3JNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KGh0dHBDYWNoZUNvbmZpZzogSHR0cENhY2hlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxQM1hIdHRwQ2FjaGVJbnRlcmNlcHRvck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogUDNYSHR0cENhY2hlSW50ZXJjZXB0b3JNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFAzWF9IVFRQX0NBQ0hFX0NPTkZJRyxcbiAgICAgICAgICB1c2VWYWx1ZTogaHR0cENhY2hlQ29uZmlnXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDN4LWFuZ3VsYXItaHR0cC1jYWNoZS1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItaHR0cC1jYWNoZS1pbnRlcmNlcHRvci9zcmMvcDN4LWFuZ3VsYXItaHR0cC1jYWNoZS1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,9 +0,0 @@
1
- /*
2
- * Public API Surface of angular-http-cache-interceptor
3
- */
4
- export * from './lib/http-cache-interceptor.module';
5
- export * from './lib/caching-headers.enum';
6
- export * from './lib/http-cache-config';
7
- export * from './lib/http-cache-config.token';
8
- export * from './lib/caching-store.enum';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItaHR0cC1jYWNoZS1pbnRlcmNlcHRvci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYywwQkFBMEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYW5ndWxhci1odHRwLWNhY2hlLWludGVyY2VwdG9yXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaHR0cC1jYWNoZS1pbnRlcmNlcHRvci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FjaGluZy1oZWFkZXJzLmVudW0nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9odHRwLWNhY2hlLWNvbmZpZydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAtY2FjaGUtY29uZmlnLnRva2VuJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FjaGluZy1zdG9yZS5lbnVtJ1xuIl19