{"version":3,"file":"ng-doc-ui-kit-interceptors.mjs","sources":["../../../../libs/ui-kit/interceptors/cache.interceptor.ts","../../../../libs/ui-kit/interceptors/ng-doc-ui-kit-interceptors.ts"],"sourcesContent":["import {\n\tHttpEvent,\n\tHttpHandler,\n\tHttpInterceptor,\n\tHttpRequest,\n\tHttpResponse,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { shareReplay, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class NgDocCacheInterceptor implements HttpInterceptor {\n\tstatic readonly TOKEN: string = Math.random().toString(36).slice(-8);\n\tprivate cache: Map<string, Observable<HttpEvent<unknown>>> = new Map<\n\t\tstring,\n\t\tObservable<HttpEvent<unknown>>\n\t>();\n\n\tintercept<T>(request: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {\n\t\t// Only GET requests can be cached\n\t\tif (request.method !== 'GET') {\n\t\t\treturn next.handle(request);\n\t\t}\n\n\t\t// Do not cache request when the token is not provided\n\t\tif (!request.params.has(NgDocCacheInterceptor.TOKEN)) {\n\t\t\treturn next.handle(request);\n\t\t}\n\n\t\t// Return cached response\n\t\tconst cachedRequest: Observable<HttpEvent<T>> | undefined = this.cache.get(\n\t\t\trequest.url,\n\t\t) as Observable<HttpEvent<T>>;\n\n\t\tif (cachedRequest) {\n\t\t\treturn cachedRequest;\n\t\t}\n\n\t\t// Clone the request, delete the TOKEN from the params\n\t\tconst newRequest: HttpRequest<T> = request.clone({\n\t\t\tparams: request.params.delete(NgDocCacheInterceptor.TOKEN),\n\t\t});\n\n\t\t// Create a new request handler\n\t\tconst newHandler: Observable<HttpEvent<T>> = next.handle(newRequest).pipe(\n\t\t\ttap({\n\t\t\t\terror: (event: HttpEvent<Error>) => {\n\t\t\t\t\tif (event instanceof HttpResponse) {\n\t\t\t\t\t\tthis.cache.delete(event.url || '');\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}),\n\t\t\tshareReplay(1),\n\t\t);\n\n\t\t// Cache the request and return the new handler\n\t\tthis.cache.set(request.url, newHandler);\n\n\t\treturn newHandler;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAYa,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAGS,QAAA,IAAA,CAAA,KAAK,GAAgD,IAAI,GAAG,EAGjE;AA4CH;AAhDgB,IAAA,SAAA,IAAA,CAAA,KAAK,GAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAMrE,SAAS,CAAI,OAAuB,EAAE,IAAiB,EAAA;;AAEtD,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;;AAI5B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;AACrD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;;AAI5B,QAAA,MAAM,aAAa,GAAyC,IAAI,CAAC,KAAK,CAAC,GAAG,CACzE,OAAO,CAAC,GAAG,CACiB;QAE7B,IAAI,aAAa,EAAE;AAClB,YAAA,OAAO,aAAa;;;AAIrB,QAAA,MAAM,UAAU,GAAmB,OAAO,CAAC,KAAK,CAAC;YAChD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAC1D,SAAA,CAAC;;AAGF,QAAA,MAAM,UAAU,GAA6B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC;AACH,YAAA,KAAK,EAAE,CAAC,KAAuB,KAAI;AAClC,gBAAA,IAAI,KAAK,YAAY,YAAY,EAAE;oBAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;;aAEnC;AACD,SAAA,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACd;;QAGD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC;AAEvC,QAAA,OAAO,UAAU;;8GA/CN,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACXD;;AAEG;;;;"}