{"version":3,"sources":["jsdelivr-header.js","/projects/ngx-api-utils/src/lib/auth-token/token-payload/token-payload.ts","/projects/ngx-api-utils/src/lib/auth-token/token-decoder/token-decoder.ts","/projects/ngx-api-utils/src/lib/auth-token/token-storage/token-storage.ts","/projects/ngx-api-utils/src/lib/auth-token/auth-token-name.ts","/projects/ngx-api-utils/src/lib/auth-token/auth-token-auto-remove.ts","/projects/ngx-api-utils/src/lib/auth-token/auth-token.service.ts","/projects/ngx-api-utils/src/lib/api-auth-guard/api-auth-guard-public-only-routes.ts","/projects/ngx-api-utils/src/lib/api-auth-guard/api-auth-guard-url-for-authenticated.ts","/projects/ngx-api-utils/src/lib/api-auth-guard/api-auth-guard-url-for-authentication.ts","/projects/ngx-api-utils/src/lib/api-auth-guard/api-auth-guard.service.ts","/projects/ngx-api-utils/src/lib/api-http/interceptors.ts","/projects/ngx-api-utils/src/lib/api-http/api-http-base-url.ts","/projects/ngx-api-utils/src/lib/api-http/interceptors/api-base-url/api-base-url.interceptor.ts","/projects/ngx-api-utils/src/lib/api-http/api-http-default-headers.ts","/projects/ngx-api-utils/src/lib/api-http/interceptors/api-default-headers/api-default-headers.interceptor.ts","/projects/ngx-api-utils/src/lib/api-http/api-http-authorization-header-name.ts","/projects/ngx-api-utils/src/lib/api-http/api-http-authorization-header-token-type-prefix.ts","/projects/ngx-api-utils/src/lib/api-http/interceptors/api-authorization-header/api-authorization-header.interceptor.ts","/projects/ngx-api-utils/src/lib/api-http/api-http-handler/api-http-handler.service.ts","/node_modules/tslib/tslib.es6.js","/projects/ngx-api-utils/src/lib/api-http/api-http.service.ts","/projects/ngx-api-utils/src/lib/ngx-api-utils.module.ts","/projects/ngx-api-utils/src/lib/utils/prepare-params.ts"],"names":[],"mappings":"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","file":"/npm/ngx-api-utils@1.0.12/bundles/ngx-api-utils.umd.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ngx-api-utils@1.0.12/bundles/ngx-api-utils.umd.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export class TokenPayload {\n  /**\n   * Shows if the token is valid, e.g. it has not expired\n   */\n  isValid(): boolean {\n    return this.expires ? Date.now() < +this.expires : true;\n  }\n  /**\n   * Unix timestamp in microseconds\n   */\n  get expires(): number | undefined {\n    // by default check the JWT exp property @see https://tools.ietf.org/html/rfc7519#section-4.1.4\n    return (this as any).exp && (this as any).exp * 1000;\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {TokenPayload} from '../token-payload/token-payload';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TokenDecoder<T extends TokenPayload = TokenPayload> {\n  decode(token: string): T {\n    return new TokenPayload() as T;\n  }\n}\n","import {Injectable} from '@angular/core';\n\nexport function localStorageFactory(): TokenStorage {\n  return typeof localStorage !== 'undefined' ? localStorage : undefined;\n}\n/**\n * TokenStorage to use basically it is a subset of Storage (localStorage or sessionStorage)\n */\n@Injectable({\n  providedIn: 'root',\n  useFactory: localStorageFactory\n})\nexport abstract class TokenStorage implements Partial<Storage> {\n  abstract getItem(key: string): string | null;\n  abstract removeItem(key: string): void;\n  abstract setItem(key: string, value: string): void;\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const AUTH_TOKEN_NAME = new InjectionToken<string>('AUTH_TOKEN_NAME', {\n  providedIn: 'root',\n  factory: () => 'id_token'\n});\n","import {InjectionToken} from '@angular/core';\n\nexport const AUTH_TOKEN_AUTO_REMOVE = new InjectionToken<boolean>('AUTH_TOKEN_AUTO_REMOVE', {\n  providedIn: 'root',\n  factory: () => true\n});\n","import {Injectable, OnDestroy, Optional, Inject} from '@angular/core';\nimport {BehaviorSubject, Observable, of, Subscription, NEVER} from 'rxjs';\nimport {switchMap, delay, filter, map} from 'rxjs/operators';\nimport {TokenPayload} from './token-payload/token-payload';\nimport {TokenStorage} from './token-storage/token-storage';\nimport {TokenDecoder} from './token-decoder/token-decoder';\nimport {AUTH_TOKEN_NAME} from './auth-token-name';\nimport {AUTH_TOKEN_AUTO_REMOVE} from './auth-token-auto-remove';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AuthTokenService<T extends TokenPayload = TokenPayload> implements OnDestroy {\n  /**\n   * RxJS BehaviorSubject that stores the token so that observers can subscribe to the subject to receive\n   * the last (or initial) value and all subsequent notifications.\n   * WARNING: This stream never completes, so you have to unsubscribe manually from it!!!\n   *\n   * In most cases it should be sufficient to just use {@link AuthTokenService#value} in case you are not\n   * interested in changes over time\n   */\n  readonly value$: BehaviorSubject<string | undefined>;\n\n  /**\n   * The current raw value of the token\n   */\n  get value(): string | undefined {\n    return this.value$.value;\n  }\n\n  get payload(): undefined | Readonly<T> {\n    return this.tokenPayload;\n  }\n\n  protected authTokenName = 'id_token';\n  protected tokenPayload: undefined | Readonly<T> = undefined;\n  protected autoRemoveTokenSubscription: Subscription;\n\n  constructor(\n    protected storage: TokenStorage,\n    protected decoder: TokenDecoder<T>,\n    @Inject(AUTH_TOKEN_AUTO_REMOVE) protected autoRemove: boolean,\n    @Optional()\n    @Inject(AUTH_TOKEN_NAME)\n    authTokenName?: string\n  ) {\n    this.authTokenName = authTokenName || this.authTokenName;\n    this.value$ = new BehaviorSubject(this.getToken());\n    this.value$.subscribe((token) => this.setToken(token));\n    if (this.autoRemove) {\n      this.activateTokenAutoRemove();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.value$.unsubscribe();\n    this.deactivateTokenAutoRemove();\n  }\n\n  isValid(): boolean {\n    return !!(this.payload && this.payload.isValid());\n  }\n\n  activateTokenAutoRemove(): void {\n    this.deactivateTokenAutoRemove();\n    this.autoRemoveTokenSubscription = this.removeTokenWhenNotValidOrExpires();\n    this.autoRemove = true;\n  }\n\n  deactivateTokenAutoRemove(): void {\n    if (this.autoRemoveTokenSubscription) {\n      this.autoRemoveTokenSubscription.unsubscribe();\n      this.autoRemoveTokenSubscription = undefined;\n    }\n    this.autoRemove = false;\n  }\n\n  protected setToken(token: string | undefined): void {\n    if (token) {\n      this.storage.setItem(this.authTokenName, token);\n      this.tokenPayload = Object.freeze(this.decoder.decode(token));\n    } else {\n      this.storage.removeItem(this.authTokenName);\n      this.tokenPayload = undefined;\n    }\n  }\n\n  protected getToken(): string | undefined {\n    return this.storage.getItem(this.authTokenName) || undefined;\n  }\n\n  protected removeTokenWhenNotValidOrExpires(): Subscription {\n    return this.value$\n      .pipe(\n        filter((token) => !!token),\n        switchMap(() => {\n          const isValid = this.isValid();\n          if (!isValid) {\n            return of({\n              reason: '_token_not_valid_'\n            });\n          }\n          return of(this.payload).pipe(\n            switchMap((payload) => this.whenTokenExpires(payload)),\n            map((expires) => {\n              return {\n                reason: '_token_expired_'\n              };\n            })\n          );\n        })\n      )\n      .subscribe(() => this.value$.next(undefined));\n  }\n\n  protected whenTokenExpires(payload?: T): Observable<number> {\n    return of(payload).pipe(\n      switchMap(({expires}) => {\n        if (expires) {\n          // the token has an expiration date, so check and use it\n          const expiresAfter = expires - Date.now();\n          const delayTo = expiresAfter > 0 ? new Date(expires) : 0;\n          return of(expires).pipe(delay(delayTo));\n        } else {\n          // the token never expires\n          return NEVER;\n        }\n      })\n    );\n  }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const API_AUTH_GUARD_PUBLIC_ONLY_ROUTES = new InjectionToken<RegExp>('API_AUTH_GUARD_PUBLIC_ONLY_ROUTES');\n","import {InjectionToken} from '@angular/core';\n\nexport const API_AUTH_GUARD_URL_FOR_AUTHENTICATED = new InjectionToken<string>('API_AUTH_GUARD_URL_FOR_AUTHENTICATED', {\n  providedIn: 'root',\n  factory: () => '/'\n});\n","import {InjectionToken} from '@angular/core';\n\nexport const API_AUTH_GUARD_URL_FOR_AUTHENTICATION = new InjectionToken<string>('API_AUTH_GUARD_URL_FOR_AUTHENTICATION', {\n  providedIn: 'root',\n  factory: () => '/login'\n});\n","import {Injectable, OnDestroy, Optional, Inject} from '@angular/core';\nimport {CanActivate, CanActivateChild, Router, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';\nimport {Subscription} from 'rxjs';\nimport {AuthTokenService} from '../auth-token/public-api';\nimport {API_AUTH_GUARD_PUBLIC_ONLY_ROUTES} from './api-auth-guard-public-only-routes';\nimport {API_AUTH_GUARD_URL_FOR_AUTHENTICATED} from './api-auth-guard-url-for-authenticated';\nimport {API_AUTH_GUARD_URL_FOR_AUTHENTICATION} from './api-auth-guard-url-for-authentication';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiAuthGuardService implements CanActivate, CanActivateChild, OnDestroy {\n  protected onAuthTokenChangeSubscription: Subscription;\n  protected returnUrlQueryParam = 'returnUrl';\n\n  constructor(\n    protected authToken: AuthTokenService,\n    protected router: Router,\n    @Optional()\n    @Inject(API_AUTH_GUARD_URL_FOR_AUTHENTICATED)\n    protected urlForAuthenticated?: string,\n    @Optional()\n    @Inject(API_AUTH_GUARD_URL_FOR_AUTHENTICATION)\n    protected urlForAuthentication?: string,\n    @Optional()\n    @Inject(API_AUTH_GUARD_PUBLIC_ONLY_ROUTES)\n    protected publicOnlyRoutes?: RegExp\n  ) {\n    this.urlForAuthenticated = this.urlForAuthenticated || '/';\n    this.urlForAuthentication = this.urlForAuthentication || '/login';\n    this.onAuthTokenChangeSubscription = this.authToken.value$.subscribe(() => {\n      this.checkCurrentUrl();\n    });\n  }\n\n  ngOnDestroy(): void {\n    if (this.onAuthTokenChangeSubscription) {\n      this.onAuthTokenChangeSubscription.unsubscribe();\n      this.onAuthTokenChangeSubscription = undefined;\n    }\n  }\n\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n    const url = state.url;\n    const tokenIsValid = this.authToken.isValid();\n    // Check if the user is logged in and trying to get on e.g. /login in that case -> /dashboard\n    const isPublicOnlyPage = this.publicOnlyRoutes && this.publicOnlyRoutes.test(url);\n    if (tokenIsValid) {\n      // logged in user\n      if (isPublicOnlyPage) {\n        // logged in user tries accessing public only page e.g. /login so Deny and redirect -> /dashboard\n        this.navigateForAuthenticated(route, state);\n        return false;\n      } else {\n        // logged in user tries accessing page for logged in users so Allow\n        return true;\n      }\n    } else {\n      // not logged in user\n      if (isPublicOnlyPage) {\n        // not logged in user tries accessing public only page e.g. /login so Allow\n        return true;\n      } else {\n        // not logged in user tries accessing protected page e.g. /dashboard so Deny\n        this.navigateForAuthentication(route, state);\n        return false;\n      }\n    }\n  }\n\n  canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n    return this.canActivate(route, state);\n  }\n\n  checkCurrentUrl(): void {\n    if (this.router.navigated) {\n      this.canActivate(this.router.routerState.root.snapshot, this.router.routerState.snapshot);\n    }\n  }\n\n  /**\n   * Navigate from public only route to route for authenticated users\n   */\n  protected navigateForAuthenticated(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\n    const gotoUrl = route.queryParams[this.returnUrlQueryParam] || this.urlForAuthenticated;\n    return this.router.navigateByUrl(gotoUrl);\n  }\n\n  /**\n   * Navigate from route for authenticated users to route to authenticate\n   */\n  protected navigateForAuthentication(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\n    const returnUrl = route.queryParams[this.returnUrlQueryParam] || state.url;\n    // Store the attempted URL for login form to return back to returnUrl\n    return this.router.navigate([this.urlForAuthentication], {\n      queryParams: {\n        [this.returnUrlQueryParam]: returnUrl\n      }\n    });\n  }\n}\n","import {HttpHandler, HttpInterceptor, HttpRequest, HttpEvent} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {InjectionToken} from '@angular/core';\n\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n * @see https://github.com/angular/angular/blob/6.0.x/packages/common/http/src/interceptor.ts#L52\n */\nexport class HttpInterceptorHandler implements HttpHandler {\n  constructor(private next: HttpHandler, private interceptor: HttpInterceptor) {}\n\n  handle(req: HttpRequest<any>): Observable<HttpEvent<any>> {\n    return this.interceptor.intercept(req, this.next);\n  }\n}\n\n/**\n * A multi-provider token which represents the array of `HttpInterceptor`s that\n * are registered for ApiHttp\n *\n *\n */\nexport const API_HTTP_INTERCEPTORS = new InjectionToken<HttpInterceptor[]>('API_HTTP_INTERCEPTORS');\n\nexport const API_HTTP_INTERCEPTORS_INJECTION_TOKEN = new InjectionToken<InjectionToken<HttpInterceptor[]>>(\n  'API_HTTP_INTERCEPTORS_INJECTION_TOKEN',\n  {providedIn: 'root', factory: () => API_HTTP_INTERCEPTORS}\n);\n","import {InjectionToken} from '@angular/core';\n\nexport const API_HTTP_BASE_URL = new InjectionToken<string>('API_HTTP_BASE_URL', {\n  providedIn: 'root',\n  factory: () => '/api'\n});\n","import {Injectable, Inject} from '@angular/core';\nimport {HttpInterceptor, HttpRequest, HttpHandler, HttpEvent} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {API_HTTP_BASE_URL} from '../../api-http-base-url';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiBaseUrlInterceptor implements HttpInterceptor {\n  constructor(@Inject(API_HTTP_BASE_URL) public apiHttpBaseUrl: string) {\n    // trim the last / e.g. `//localhost:3000/api/` -> `//localhost:3000/api`\n    this.apiHttpBaseUrl = apiHttpBaseUrl.replace(/\\/+$/, '');\n  }\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    req = req.clone({\n      url: `${this.apiHttpBaseUrl}${req.url}`\n    });\n    return next.handle(req);\n  }\n}\n","import {InjectionToken} from '@angular/core';\nimport {HttpHeaders} from '@angular/common/http';\n\nexport type ApiHttpDefaultHeadersStruct = HttpHeaders | string | {[name: string]: string | string[]};\n\nexport const API_HTTP_DEFAULT_HEADERS = new InjectionToken<ApiHttpDefaultHeadersStruct>('API_HTTP_DEFAULT_HEADERS', {\n  providedIn: 'root',\n  factory: () => ({\n    accept: 'application/json, */*'\n  })\n});\n","import {Injectable, Optional, Inject} from '@angular/core';\nimport {HttpRequest, HttpHandler, HttpEvent, HttpHeaders, HttpInterceptor} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {ApiHttpDefaultHeadersStruct, API_HTTP_DEFAULT_HEADERS} from '../../api-http-default-headers';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiDefaultHeadersInterceptor implements HttpInterceptor {\n  defaultHeaders: HttpHeaders;\n\n  constructor(\n    @Optional()\n    @Inject(API_HTTP_DEFAULT_HEADERS)\n    apiHttpDefaultHeaders?: ApiHttpDefaultHeadersStruct\n  ) {\n    if (!(apiHttpDefaultHeaders instanceof HttpHeaders)) {\n      apiHttpDefaultHeaders = new HttpHeaders(apiHttpDefaultHeaders);\n    }\n    this.defaultHeaders = apiHttpDefaultHeaders;\n  }\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    req = this.reqWithDefaultHeaders(req);\n    return next.handle(req);\n  }\n\n  private reqWithDefaultHeaders(req: HttpRequest<any>): HttpRequest<any> {\n    const headers = Array.from(this.defaultHeaders.keys()).reduce((prevHeaders, headerName) => {\n      // override only if not defined already\n      if (!prevHeaders.has(headerName)) {\n        prevHeaders = prevHeaders.set(headerName, this.defaultHeaders.get(headerName));\n      }\n      return prevHeaders;\n    }, req.headers);\n    return req.clone({\n      headers\n    });\n  }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const API_HTTP_AUTHORIZATION_HEADER_NAME = new InjectionToken<string>('API_HTTP_AUTHORIZATION_HEADER_NAME', {\n  factory: () => 'Authorization'\n});\n","import {InjectionToken} from '@angular/core';\n\nexport const API_HTTP_AUTHORIZATION_HEADER_TOKEN_TYPE_PREFIX = new InjectionToken<string>(\n  'API_HTTP_AUTHORIZATION_HEADER_TOKEN_TYPE_PREFIX',\n  {\n    factory: () => 'Bearer '\n  }\n);\n","import {Injectable, Inject} from '@angular/core';\nimport {HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {AuthTokenService} from '../../../auth-token/public-api';\nimport {API_HTTP_AUTHORIZATION_HEADER_NAME} from '../../api-http-authorization-header-name';\nimport {API_HTTP_AUTHORIZATION_HEADER_TOKEN_TYPE_PREFIX} from '../../api-http-authorization-header-token-type-prefix';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiAuthorizationHeaderInterceptor implements HttpInterceptor {\n  constructor(\n    @Inject(API_HTTP_AUTHORIZATION_HEADER_NAME) public apiHttpAuthorizationHeaderName: string,\n    @Inject(API_HTTP_AUTHORIZATION_HEADER_TOKEN_TYPE_PREFIX) public apiHttpAuthorizationHeaderTokenTypePrefix: string,\n    private authTokenService: AuthTokenService\n  ) {}\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    req = this.reqWithAuthorizationHeader(req);\n    return next.handle(req);\n  }\n\n  /**\n   * @experimental the headersWithNoAuthorization support is experimental\n   * it might be considered in future this capability to be extracted\n   * in an abstract class `ApiNoAuthorizationHeaderInterceptor`\n   * then we can have `ApiAuthorizationHeaderInterceptor` implement the interface\n   * and provide it using forwardRef or similar.\n   * Yet this seems too complex for this stage.\n   */\n  headersWithNoAuthorization(headers?: HttpHeaders | string | {[name: string]: string | string[]}): HttpHeaders {\n    headers = headers instanceof HttpHeaders ? headers : new HttpHeaders(headers);\n    return headers.set(this.apiHttpAuthorizationHeaderName, '');\n  }\n\n  private reqWithAuthorizationHeader(req: HttpRequest<any>): HttpRequest<any> {\n    if (!req.headers.has(this.apiHttpAuthorizationHeaderName)) {\n      // if header is set use the default token\n      if (!this.authTokenService.isValid()) {\n        throw new Error(`No valid AuthToken present when requesting: '${req.method} ${req.url}'`);\n      }\n      req = req.clone({\n        headers: req.headers.set(\n          this.apiHttpAuthorizationHeaderName,\n          `${this.apiHttpAuthorizationHeaderTokenTypePrefix}${this.authTokenService.value}`\n        )\n      });\n    } else if (!req.headers.get(this.apiHttpAuthorizationHeaderName)) {\n      // if header is set and is given token, ensure the header is deleted\n      req = req.clone({\n        headers: req.headers.delete(this.apiHttpAuthorizationHeaderName)\n      });\n    }\n    // otherwise leave whatever is set so far\n    return req;\n  }\n}\n","import {Injectable, Inject, Injector, InjectionToken} from '@angular/core';\nimport {HttpHandler, HttpRequest, HttpEvent, HttpInterceptor, HttpHeaders} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {HttpInterceptorHandler, API_HTTP_INTERCEPTORS_INJECTION_TOKEN} from '../interceptors';\nimport {ApiAuthorizationHeaderInterceptor} from '../interceptors/api-authorization-header/api-authorization-header.interceptor';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiHttpHandlerService implements HttpHandler {\n  protected chain: HttpHandler | null = null;\n  protected apiAuthorizationInterceptor: ApiAuthorizationHeaderInterceptor | null = null;\n\n  constructor(\n    protected backend: HttpHandler,\n    protected injector: Injector,\n    @Inject(API_HTTP_INTERCEPTORS_INJECTION_TOKEN) protected apiHttpInterceptorsInjectionToken: InjectionToken<HttpInterceptor[]>\n  ) {}\n\n  handle(req: HttpRequest<any>): Observable<HttpEvent<any>> {\n    if (this.chain === null) {\n      const interceptors = this.injector.get(this.apiHttpInterceptorsInjectionToken, []);\n      this.chain = interceptors.reduceRight((next, interceptor) => new HttpInterceptorHandler(next, interceptor), this.backend);\n    }\n    return this.chain.handle(req);\n  }\n\n  /**\n   * @experimental the headersWithNoAuthorization support is experimental\n   * see {@link ApiAuthorizationHeaderInterceptor#headersWithNoAuthorization} for details\n   */\n  headersWithNoAuthorization(headers?: HttpHeaders | string | {[name: string]: string | string[]}): HttpHeaders {\n    if (this.apiAuthorizationInterceptor === null) {\n      this.apiAuthorizationInterceptor = this.injector\n        .get(this.apiHttpInterceptorsInjectionToken, [])\n        .find((interceptor) => interceptor instanceof ApiAuthorizationHeaderInterceptor) as ApiAuthorizationHeaderInterceptor;\n    }\n    return this.apiAuthorizationInterceptor.headersWithNoAuthorization(headers);\n  }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {ApiHttpHandlerService} from './api-http-handler/api-http-handler.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiHttpService extends HttpClient {\n  constructor(protected apiHttpHandler: ApiHttpHandlerService) {\n    super(apiHttpHandler);\n  }\n\n  /**\n   * @experimental the headersWithNoAuthorization support is experimental\n   * see {@link ApiAuthorizationHeaderInterceptor#headersWithNoAuthorization} for details\n   */\n  headersWithNoAuthorization(headers?: HttpHeaders | string | {[name: string]: string | string[]}): HttpHeaders {\n    return this.apiHttpHandler.headersWithNoAuthorization(headers);\n  }\n}\n","import {NgModule} from '@angular/core';\nimport {HttpClientModule} from '@angular/common/http';\nimport {\n  API_HTTP_INTERCEPTORS,\n  ApiBaseUrlInterceptor,\n  ApiDefaultHeadersInterceptor,\n  ApiAuthorizationHeaderInterceptor\n} from './api-http/public-api';\n\n@NgModule({\n  imports: [HttpClientModule],\n  declarations: [],\n  exports: [],\n  providers: [\n    {\n      provide: API_HTTP_INTERCEPTORS,\n      useExisting: ApiBaseUrlInterceptor,\n      multi: true\n    },\n    {\n      provide: API_HTTP_INTERCEPTORS,\n      useExisting: ApiDefaultHeadersInterceptor,\n      multi: true\n    },\n    {\n      provide: API_HTTP_INTERCEPTORS,\n      useExisting: ApiAuthorizationHeaderInterceptor,\n      multi: true\n    }\n  ]\n})\nexport class NgxApiUtilsModule {}\n","/**\n * Filters object properties stripping any `undefined` value and naively casting any value to string\n * This is quite useful for preparing params for GET requests\n */\nexport function prepareParams(params: Record<string, any>): Record<string, string> {\n  return Object.keys(params).reduce((preparedParams, k) => {\n    const v = params[k];\n    if (v !== undefined) {\n      preparedParams[k] = String(v);\n    }\n    return preparedParams;\n  }, {} as Record<string, string>);\n}\n"]}