{"version":3,"file":"dmarket-angular-shared.mjs","sources":["../../src/redux/redux-helper.ts","../../src/translate/translate.helper.ts","../../src/universal/loggingMiddleware.ts","../../src/universal/response.ts","../../src/universal/request.ts","../../src/universal/state-transfer.interceptor.ts","../../src/base-url/base-url.interceptor.ts","../../src/storage/helpers/storage-helpers.ts","../../src/storage/services/cookies-helpers.service.ts","../../src/storage/services/cookies-storage.service.ts","../../src/storage/services/local-storage.service.ts","../../src/storage/services/session-storage.service.ts","../../src/storage/services/storage.service.ts","../../src/storage/storage.module.ts","../../src/user/services/session.service.ts","../../src/user/services/user-storage.service.ts","../../src/user/enums/http-methods.enum.ts","../../src/user/helpers/jwt-helpers.ts","../../src/user/services/jwt-user.service.ts","../../src/user/services/token-refresh.service.ts","../../src/user/services/user.ts","../../src/user/guards/auth.guard.ts","../../src/user/interceptors/noop.interceptor.ts","../../src/user/interceptors/auth-header.interceptor.ts","../../src/user/interceptors/refreshable-jwt.interceptor.ts","../../src/user/guards/jwt-validity.guard.ts","../../src/user/enums/session-type.enum.ts","../../src/user/interceptors/jwt-validity.interceptor.ts","../../src/user/factories/jwt-validity.factory.ts","../../src/user/user.module.ts","../../src/utils/custom-preloader-lazy-modules.ts","../../src/utils/node-debug.interceptor.ts","../../src/dmarket-angular-shared.ts"],"sourcesContent":["type Action<T = any> = any;\n\nexport interface ActionWithPayload<T extends string, P> extends Action<T> {\n  payload: P;\n}\n\nexport function createAction<T extends string>(type: T): Action<T>;\nexport function createAction<T extends string, P>(type: T, payload?: P) {\n  return payload === undefined ? {type} : {type, payload};\n}\n\ntype FunctionType = (...args: any[]) => any;\n\ninterface ActionCreatorsMapObject {\n  [action: string]: FunctionType;\n}\n\nexport type ActionsUnion<A extends ActionCreatorsMapObject> = ReturnType<A[keyof A]>;\n\ntype ActionsOfType<A, T extends string> = A extends Action<T> ? A : never;\n/**\n * NonFunctionKeys\n * @desc get union type of keys that are non-functions in object type `T`\n */\nexport type NonFunctionKeys<T> = {\n  [K in keyof T]: T[K] extends FunctionType ? never : K\n}[keyof T];\n\n/**\n * DeepReadonly\n * @desc Readonly that works for deeply nested structure\n */\nexport type DeepReadonly<T> = T extends any[]\n  ? _DeepReadonlyArray<T[number]>\n  : T extends object ? _DeepReadonlyObject<T> : T;\n\n/**\n * DeepReadonlyArray\n * @desc Nested array condition handler\n */\n// tslint:disable-next-line:class-name\nexport interface _DeepReadonlyArray<T> extends ReadonlyArray<DeepReadonly<T>> {\n}\n\n/**\n * DeepReadonlyObject\n * @desc Nested object condition handler\n */\nexport type _DeepReadonlyObject<T> = {\n  readonly [P in NonFunctionKeys<T>]: DeepReadonly<T[P]>\n};\n","function marker<T extends string | string[]>(key: T, context?: string, comment?: string): T {\n  return key;\n}\n\nexport { marker as _ }\n","export function logging() {\n  const SEPARATOR = '\\t';\n\n  return function loggingMidlevare(req, res, next) {\n    const requestStart = process.hrtime();\n\n    // The 'finish' event will emit once the response is done sending\n    res.once('finish', () => {\n      const reqDate = new Date().toISOString();\n      const reqMethod = req.method;\n      const reqAgent = req.headers['user-agent'];\n      const reqUrl = req.originalUrl;\n      const resCode = res.statusCode;\n      const hrTime = process.hrtime(requestStart);\n      // tslint:disable-next-line\n      const renderTime = (hrTime[0] * 1000 + hrTime[1] / 1000000) + 'ms'; // process.hrtime -> [secs, nanosecs]\n\n      const logString = [\n        reqDate,\n        reqMethod,\n        reqUrl,\n        resCode,\n        renderTime,\n        reqAgent,\n      ].join(SEPARATOR);\n\n      process.stdout.write(logString + '\\n');\n    });\n\n    next();\n  };\n}\n","export const RESPONSE = 'RESPONSE';\n","export const REQUEST = 'REQUEST';\n","import { isPlatformServer } from '@angular/common';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { makeStateKey, TransferState } from '@angular/platform-browser';\nimport { Observable, of } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n@Injectable()\nexport class StateTransferInterceptor implements HttpInterceptor {\n  constructor(\n    private state: TransferState,\n    @Inject(PLATFORM_ID) private platform: any,\n  ) {\n  }\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    const stateKey = makeStateKey(JSON.stringify(req));\n    const stateFound = this.state.get(stateKey, null as any);\n\n    if (req.method !== 'GET') {\n      return next.handle(req);\n    }\n\n    if (stateFound) {\n      const res = of(new HttpResponse(stateFound));\n      this.state.remove(stateKey);\n\n      return res;\n    }\n\n    return next.handle(req).pipe(\n      tap((event) => {\n        if (event instanceof HttpResponse && isPlatformServer(this.platform)) {\n          /** Update the cache */\n          this.state.set(stateKey, event as any);\n        }\n      }));\n  }\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const API_URL = new InjectionToken<string>('apiUrl');\n\nexport const ABSOLUTE_URL_REGEXP = new RegExp('^(?:[a-z]+:)?//', 'i');\n\n@Injectable()\nexport class ApiUrlInterceptor implements HttpInterceptor {\n  private preparedUrl: string;\n\n  constructor(@Inject(API_URL) private apiUrl: string = '') {\n    if (apiUrl[apiUrl.length] === '/') {\n      this.preparedUrl = apiUrl;\n    } else {\n      this.preparedUrl = apiUrl + '/';\n    }\n  }\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    req = req.clone({url: this.prepareUrl(req.url)});\n    return next.handle(req);\n  }\n\n  private isAbsoluteUrl(url: string): boolean {\n    return ABSOLUTE_URL_REGEXP.test(url);\n  }\n\n  private prepareUrl(url: string): string {\n    if (this.isAbsoluteUrl(url)) {\n      return url;\n    } else {\n      return (this.preparedUrl + url).replace(/([^:]\\/)\\/+/g, '$1');\n    }\n  }\n}\n","import { isPlatformBrowser } from '@angular/common';\n\nexport function webStorageSupported(platform): boolean {\n  return isPlatformBrowser(platform) && localStorageEnabled();\n}\n\nexport function cookiesSupported(platform): boolean {\n  return isPlatformBrowser(platform) && cookiesEnabled();\n}\n\nfunction cookiesEnabled(): boolean {\n  let enabled = navigator.cookieEnabled;\n  if (!enabled) {\n    document.cookie = 'cookie-test';\n    enabled = (document.cookie.indexOf('cookie-test') !== -1);\n  }\n  return enabled;\n}\n\nfunction localStorageEnabled(): boolean {\n  try {\n    localStorage.setItem('testKey', 'testValue');\n    localStorage.removeItem('testKey');\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\nimport { REQUEST } from '../../universal/request';\n\nexport const noValueCookieFlags = ['Secure', 'secure', 'httpOnly'];\n\nexport interface CookieOptions {\n  domain?: string;\n  path?: string;\n  expires?: any;\n}\n\n@Injectable()\nexport class CookiesHelpersService {\n  constructor(@Inject(PLATFORM_ID) private platform: any,\n              @Optional() @Inject(REQUEST) private request) {\n  }\n\n  getCookie(name: string) {\n    const matches = this.getCookieString().match(new RegExp(\n      '(?:^|; )' + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + '=([^;]*)',\n    ));\n    return matches ? decodeURIComponent(matches[1]) : void 0;\n  }\n\n  setCookie(name: string, value: string, options: CookieOptions) {\n    if (!isPlatformBrowser(this.platform)) {\n      return;\n    }\n    /* tslint:disable */\n    options = options || {};\n    let expires = options.expires;\n\n    if (typeof expires === 'number' && expires) {\n      const d = new Date();\n      d.setTime(d.getTime() + expires * 1000);\n      expires = options.expires = d;\n    }\n\n    if (expires && expires.toUTCString) {\n      options.expires = expires.toUTCString();\n    }\n    value = encodeURIComponent(value);\n    let updatedCookie = name + '=' + value;\n    for (const propName in options) {\n      if (options.hasOwnProperty(propName)) {\n        const propValue = options[propName];\n        if (noValueCookieFlags.includes(propName)) {\n          updatedCookie += propValue === true ? '; ' + propName : '';\n        } else {\n          updatedCookie += propValue === true ? '; ' + propName : '; ' + propName + '=' + propValue;\n        }\n      }\n    }\n    document.cookie = updatedCookie;\n  }\n\n  deleteCookie(name: string, options: CookieOptions = {path: '/'}) {\n    const opts = {...options, expires: -1};\n    this.setCookie(name, '', opts);\n  }\n\n  private getCookieString() {\n    if (isPlatformBrowser(this.platform)) {\n      return document.cookie;\n    }\n    if (isPlatformServer(this.platform) && this.request) {\n      return this.request.headers.cookie || '';\n    }\n    return '';\n  }\n\n}\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { IStorageOptions } from '../models/storage-options.model';\nimport { IStorage } from '../models/storage.model';\nimport { CookiesHelpersService } from './cookies-helpers.service';\n\n@Injectable()\nexport class CookiesStorageService implements IStorage {\n  SUPPORTED: boolean;\n  private readonly defaultOptions: IStorageOptions = {\n    expires: 2147483647,\n    path: '/',\n  };\n\n  constructor(@Inject(PLATFORM_ID) private currentPlatform: any,\n              private cookiesHelpersService: CookiesHelpersService) {\n    this.SUPPORTED = this.cookiesEnabled();\n  }\n\n  set(key: string, data: string, options?: IStorageOptions) {\n    const opts = {...this.defaultOptions, ...options};\n    if (this.SUPPORTED) {\n      try {\n        this.cookiesHelpersService.setCookie(key, data, opts);\n      } catch (err) {\n        throw new Error('Cookies setting failed. Consider using another storage to save data');\n      }\n    }\n  }\n\n  get(key: string): string | null {\n    if (this.SUPPORTED) {\n      const data: string | undefined = this.cookiesHelpersService.getCookie(key);\n      return data || null;\n    } else {\n      return null;\n    }\n  }\n\n  remove(key: string, options?: object): void {\n    if (this.SUPPORTED) {\n      this.cookiesHelpersService.deleteCookie(key, options);\n    }\n  }\n\n  private cookiesEnabled(): boolean {\n    if (isPlatformServer(this.currentPlatform)) {\n      return true;\n    }\n    if (isPlatformBrowser(this.currentPlatform)) {\n      let enabled = navigator.cookieEnabled;\n      if (!enabled) {\n        document.cookie = 'cookie-test';\n        enabled = (document.cookie.indexOf('cookie-test') !== -1);\n      }\n      return enabled;\n    }\n    return false;\n  }\n\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { webStorageSupported } from '../helpers/storage-helpers';\nimport { IStorage } from '../models/storage.model';\n\n@Injectable()\nexport class LocalStorageService implements IStorage {\n  SUPPORTED: boolean;\n\n  constructor(@Inject(PLATFORM_ID) private currentPlatform: any) {\n    this.SUPPORTED = webStorageSupported(this.currentPlatform);\n  }\n\n  set(key: string, data: string, options?) {\n    if (this.SUPPORTED) {\n      localStorage.setItem(key, data);\n    }\n  }\n\n  get(key: string): string | null {\n    if (this.SUPPORTED) {\n      return localStorage.getItem(key);\n    } else {\n      return null;\n    }\n  }\n\n  remove(key: string): void {\n    if (this.SUPPORTED) {\n      localStorage.removeItem(key);\n    }\n  }\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { cookiesSupported } from '../helpers/storage-helpers';\nimport { IStorage } from '../models/storage.model';\n\n@Injectable()\nexport class SessionStorageService implements IStorage {\n  SUPPORTED: boolean;\n\n  constructor(@Inject(PLATFORM_ID) private currentPlatform: any) {\n   this.SUPPORTED = cookiesSupported(this.currentPlatform);\n  }\n\n  set(key: string, data: string, options?) {\n    if (this.SUPPORTED) {\n      sessionStorage.setItem(key, data);\n    }\n  }\n\n  get(key: string): string | null {\n    if (this.SUPPORTED) {\n      return sessionStorage.getItem(key);\n    } else {\n      return null;\n    }\n  }\n\n  remove(key: string): void {\n    if (this.SUPPORTED) {\n      sessionStorage.removeItem(key);\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { IStorage } from '../models/storage.model';\n\n// The most basic service for storing data in application memory\n// Not recommended to use, you should consider use useExisting syntax to provide another storage method\n\n@Injectable()\nexport class StorageService implements IStorage {\n  readonly SUPPORTED = true;\n  private data = new Map<string, string>();\n\n  set(key: string, data: string, options?) {\n    this.data.set(key, data);\n  }\n\n  get(key: string): string {\n    return this.data.get(key) || '';\n  }\n\n  remove(key: string, options?): void {\n    this.data.delete(key);\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { cookiesSupported, webStorageSupported } from './helpers/storage-helpers';\nimport { CookiesHelpersService } from './services/cookies-helpers.service';\nimport { CookiesStorageService } from './services/cookies-storage.service';\nimport { LocalStorageService } from './services/local-storage.service';\nimport { SessionStorageService } from './services/session-storage.service';\nimport { StorageService } from './services/storage.service';\n\n@NgModule({\n  imports: [],\n  declarations: [],\n  providers: [\n    CookiesHelpersService,\n    StorageService,\n    LocalStorageService,\n    SessionStorageService,\n    CookiesStorageService,\n  ],\n})\nexport class StorageModule {\n\n  static getCompatibleStorage(currentPlatform, request) {\n    if (webStorageSupported(currentPlatform)) {\n      return new LocalStorageService(currentPlatform);\n    }\n\n    if (cookiesSupported(currentPlatform)) {\n      return new CookiesStorageService(currentPlatform, new CookiesHelpersService(currentPlatform, request));\n    }\n\n    return new StorageService();\n  }\n\n}\n","import { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID } from '@angular/core';\nimport { REQUEST } from '../../universal/request';\nimport { StorageService } from \"../../storage/services/storage.service\";\nimport { CookieOptions } from \"../../storage/services/cookies-helpers.service\";\nimport { IStorageOptions } from '../../storage';\nimport { SessionTypeEnum } from '../enums/session-type.enum';\nimport { Subject } from 'rxjs';\n\nexport const USER_COOKIE_OPTIONS = new InjectionToken<CookieOptions>('Cookie config for cookie options like path/domain/expiration');\nexport const AUTH_TOKEN_STORAGE_KEY = new InjectionToken<string>('Key in storage, where auth token is stored');\nexport const REFRESH_TOKEN_STORAGE_KEY = new InjectionToken<string>('Key in storage, where refresh token is stored');\nexport const SESSION_TYPE = new InjectionToken<SessionTypeEnum>('Session type, which identifies if session is refreshable');\n\n@Injectable()\nexport class SessionService {\n    private tokenValue: string | null = '';\n    private refreshTokenValue: string | null = '';\n    private eventTokenRefreshed = new Subject<void>();\n    eventTokenRefreshed$ = this.eventTokenRefreshed.asObservable();\n\n    constructor(private storageService: StorageService,\n                @Inject(PLATFORM_ID) private currentPlatform: any,\n                @Inject(USER_COOKIE_OPTIONS) private userCookieOptions: CookieOptions,\n                @Inject(AUTH_TOKEN_STORAGE_KEY) private tokenStorageKey: string = 'token',\n                @Optional() @Inject(REFRESH_TOKEN_STORAGE_KEY) private refreshTokenStorageKey: string = 'refresh_token',\n                @Optional() @Inject(REQUEST) private request: any) {\n    }\n\n    setToken(value: string, storageOptions: IStorageOptions = {}) {\n        this.tokenValue = value;\n        this.storageService.set(this.tokenStorageKey, value, {...storageOptions, ...this.userCookieOptions});\n        this.eventTokenRefreshed.next();\n    }\n\n    setRefreshToken(value: string, storageOptions: IStorageOptions = {}) {\n        this.refreshTokenValue = value;\n        this.storageService.set(this.refreshTokenStorageKey, value, {...storageOptions, ...this.userCookieOptions});\n    }\n\n    getToken() {\n        if (!this.tokenValue) {\n            this.tokenValue = this.storageService.get(this.tokenStorageKey);\n        }\n        return this.tokenValue;\n    }\n\n    getRefreshToken() {\n        if (!this.refreshTokenValue) {\n            this.refreshTokenValue = this.storageService.get(this.refreshTokenStorageKey);\n        }\n        return this.refreshTokenValue;\n    }\n\n    deleteToken() {\n        this.tokenValue = '';\n        this.storageService.remove(this.tokenStorageKey, this.userCookieOptions);\n    }\n\n    deleteRefreshToken() {\n        this.refreshTokenValue = '';\n        this.storageService.remove(this.refreshTokenStorageKey, this.userCookieOptions);\n    }\n\n    deleteTokens() {\n        this.deleteToken();\n        this.deleteRefreshToken();\n    }\n\n    deleteRequestToken() {\n        this.tokenValue = '';\n        this.refreshTokenValue = '';\n        if (this.request) {\n            this.request.headers.cookie = '';\n        }\n    }\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { StorageService } from '../../storage/services/storage.service';\nimport { CookieOptions } from \"../../storage/services/cookies-helpers.service\";\nimport { USER_COOKIE_OPTIONS } from \"./session.service\";\nimport { LocalStorageService } from '../../storage/services/local-storage.service';\nimport { CookiesStorageService } from '../../storage/services/cookies-storage.service';\nimport { SessionStorageService } from '../../storage/services/session-storage.service';\n\ntype STORAGES = CookiesStorageService | LocalStorageService | SessionStorageService | StorageService;\n\nexport const USER_DATA_STORAGE_KEY = new InjectionToken<string>('Key in storage, where userData is stored');\nexport const USER_DATA_STORAGE_CLASS = new InjectionToken<STORAGES>('Storage location key, where userData is stored');\n\n@Injectable()\nexport class UserStorageService<T> {\n    private storage: STORAGES;\n    constructor(@Inject(USER_COOKIE_OPTIONS) private userCookieOptions: CookieOptions,\n                @Inject(USER_DATA_STORAGE_KEY) private storageKey: string = 'userData',\n                @Inject(USER_DATA_STORAGE_CLASS) protected locationClass: any) {\n      this.storage = locationClass;\n    }\n\n    setStorage(user: T): void {\n        this.storage.set(this.storageKey, JSON.stringify(user), this.userCookieOptions);\n    }\n\n    getStoredUser(): T | null {\n        const rawUser: string = this.storage.get(this.storageKey) || '';\n        try {\n            return JSON.parse(rawUser);\n        } catch (e) {\n            return null;\n        }\n    }\n\n    clear(): void {\n        this.storage.remove(this.storageKey, this.userCookieOptions);\n    }\n}\n","export enum HttpMethodsEnum {\n    GET = 'get',\n    POST = 'post',\n}\n","import * as Buffer from 'buffer';\n\nexport const toSeconds = 1000;\nexport const defaultRadix = 10;\n\nexport function getPayloadFromJwtToken<T>(token: string): T {\n  if (token) {\n    const base64TokenBody = extractTokenBody(token);\n    try {\n      const decodedBody: string = customAtob(base64TokenBody);\n      return JSON.parse(decodedBody) as T;\n    } catch (_) {}\n  }\n  return {} as T;\n}\n\nexport function validateJwtExpirationTime(token: string): boolean { // avoid (local time could be wrong)\n  const payload: {} = getPayloadFromJwtToken(token);\n  if (!payload.hasOwnProperty('exp')) {\n    return true;\n  }\n\n  const now = new Date().getTime() / toSeconds;\n  const expiration = parseInt(payload['exp'], defaultRadix); // parseInt ?\n  return now < expiration;\n}\n\nexport function isAuthTokenExpiringSoon(token: string, timeLimit: number) {\n  const payload: {} = getPayloadFromJwtToken(token);\n  if (!payload.hasOwnProperty('exp')) {\n    return false;\n  }\n  const now = new Date().getTime() / toSeconds;\n  const expiration = parseInt(payload['exp'], defaultRadix) - timeLimit;\n  return now >= expiration;\n}\n\nfunction extractTokenBody(token: string): string {\n  const base64Body = token.split('.')[1] || '';\n  return base64Body\n    .replace('-', '+')\n    .replace('_', '/');\n}\n\nfunction customAtob(base64: string): string {\n  // atob() is unavailable in server\n  return Buffer.Buffer.from(base64, 'base64').toString('binary');\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { LocalStorageService } from '../../storage/index';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { getPayloadFromJwtToken } from '../helpers/jwt-helpers';\nimport { SessionService } from './session.service';\nimport { IUserService } from './user-service.interface';\nimport { UserStorageService } from './user-storage.service';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\n\n@Injectable()\nexport class JwtUserService<T = any> implements IUserService<T> {\n  data$: Observable<T>;\n  isLoggedIn$: Observable<boolean>;\n\n  private userDataSubject: BehaviorSubject<T>;\n  private isLoggedInSubject: BehaviorSubject<boolean>;\n\n  constructor(private sessionService: SessionService,\n              private userStorageService: UserStorageService<T>,\n              private localStorageService: LocalStorageService,\n              @Inject(PLATFORM_ID) private currentPlatform: any) {\n    const initialUser = this.userStorageService.getStoredUser() || {};\n    this.userDataSubject = new BehaviorSubject<T>(initialUser as T);\n    this.isLoggedInSubject = new BehaviorSubject<boolean>(this.isAuthenticated());\n\n    this.data$ = this.userDataSubject.asObservable();\n    this.isLoggedIn$ = this.isLoggedInSubject.asObservable();\n\n    if (this.localStorageService.SUPPORTED) {\n      window.addEventListener('storage', (e) => this.switchOtherBrowserTabs(e));\n    }\n  }\n\n  get token() {\n    return this.sessionService.getToken();\n  }\n\n  set token(token) {\n    this.sessionService.setToken(token);\n    this.isLoggedInSubject.next(this.isAuthenticated());\n    this.setUserData(getPayloadFromJwtToken<T>(token));\n  }\n\n  setToken(token: string, options?): void {\n    this.sessionService.setToken(token, options);\n    this.isLoggedInSubject.next(this.isAuthenticated());\n    this.setUserData(getPayloadFromJwtToken<T>(token));\n  }\n\n  logout() {\n    if (this.isAuthenticated() && isPlatformBrowser(this.currentPlatform)) {\n      this.logoutClient();\n    }\n    if (this.isAuthenticated() && isPlatformServer(this.currentPlatform)) {\n      this.logoutServer();\n    }\n  }\n\n  private logoutServer() {\n    this.sessionService.deleteRequestToken();\n    this.userDataSubject.next({} as T);\n    this.isLoggedInSubject.next(false);\n  }\n\n  private logoutClient() {\n    this.sessionService.deleteTokens();\n    this.userStorageService.clear();\n    this.userDataSubject.next({} as T);\n    this.isLoggedInSubject.next(this.isAuthenticated());\n  }\n\n  isAuthenticated(): boolean {\n    return !!this.token;\n  }\n\n  setUserData(userData: T) {\n    this.userStorageService.setStorage(userData);\n    this.userDataSubject.next(userData);\n  }\n\n  private switchOtherBrowserTabs(event: StorageEvent) {\n    if (event.key === 'userData') {\n      const userData = event.newValue ? JSON.parse(event.newValue) : {};\n      if (!userData.id) {\n        this.logout();\n      }\n    }\n  }\n}\n","import { Observable, timer, BehaviorSubject } from 'rxjs';\nimport { RefreshTokensResponseInterface } from '../interfaces/refresh-tokens-response.interface';\nimport { HttpMethodsEnum } from '../enums/http-methods.enum';\nimport { catchError, finalize, first, skipWhile, switchMap, tap } from 'rxjs/operators';\nimport { throwError as _throw } from 'rxjs';\nimport { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { RefreshEndpointConfigInterface } from '../interfaces/refresh-endpoint-config.interface';\nimport { JwtUserService } from '../services/jwt-user.service';\nimport { SessionService } from '../services/session.service';\nimport { HttpClient } from '@angular/common/http';\n\nexport const REFRESH_ENDPOINT_CONFIG = new InjectionToken<RefreshEndpointConfigInterface>('Key in storage, where expiration trigger time is stored');\nconst TIMER_EXPIRATION_TIME = 5000;\n\n@Injectable()\nexport class TokenRefreshService {\n    expirationTimerActive = false;\n    refreshPending = false;\n    private cachedTokens = new BehaviorSubject<RefreshTokensResponseInterface>(null as unknown as RefreshTokensResponseInterface);\n\n    constructor(\n        private http: HttpClient,\n        private sessionService: SessionService,\n        private user: JwtUserService,\n        @Optional() @Inject(REFRESH_ENDPOINT_CONFIG) private refreshEndpointConfig: RefreshEndpointConfigInterface) { }\n\n    getRefreshTokens(): Observable<RefreshTokensResponseInterface> {\n        return this.getCashedTokens().pipe(first(), switchMap((tokens) => {\n            return (tokens || this.expirationTimerActive)\n                ? this.getCashedTokens().pipe(skipWhile((tokens) => !tokens && this.refreshPending), first())\n                : this.refreshTokens();\n        }));\n    }\n\n    setCachedTokens(tokens: RefreshTokensResponseInterface): void {\n        this.cachedTokens.next(tokens);\n    }\n\n    getCashedTokens(): Observable<RefreshTokensResponseInterface> {\n        return this.cachedTokens;\n    }\n\n    clearCachedTokens(): void {\n        this.cachedTokens.next(null as unknown as RefreshTokensResponseInterface);\n    }\n\n    startCachedTokensExpirationTimer(expirationTimeSeconds: number): void {\n        this.expirationTimerActive = true;\n        timer(expirationTimeSeconds).pipe(finalize(() => this.expirationTimerActive = false)).subscribe(() => {\n            this.clearCachedTokens();\n        });\n    }\n\n    private refreshTokens(): Observable<RefreshTokensResponseInterface> {\n        this.refreshPending = true;\n        this.startCachedTokensExpirationTimer(TIMER_EXPIRATION_TIME);\n        let refreshRequest: Observable<{AuthToken: string, AuthTokenExpiresAt: string, RefreshToken: string, RefreshTokenExpiresAt: string}>;\n        switch (this.refreshEndpointConfig.httpMethod) {\n            case HttpMethodsEnum.GET:\n                refreshRequest = this.http.get<RefreshTokensResponseInterface>(this.refreshEndpointConfig.url);\n                break;\n            case HttpMethodsEnum.POST:\n                refreshRequest = this.http.post<RefreshTokensResponseInterface>(\n                    this.refreshEndpointConfig.url,\n                    { RefreshToken: this.sessionService.getRefreshToken() },\n                );\n                break;\n            default:\n                refreshRequest = refreshRequest = this.http.post<RefreshTokensResponseInterface>(\n                    this.refreshEndpointConfig.url,\n                    { RefreshToken: this.sessionService.getRefreshToken() },\n                );\n                break;\n        }\n        return refreshRequest.pipe(\n            tap((tokens) => this.setCachedTokens(tokens)),\n            finalize(() => this.refreshPending = false),\n            catchError((error) => {\n                this.user.logout();\n                return _throw(error);\n            }),\n        );\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { of } from 'rxjs';\nimport { IUserService } from './user-service.interface';\n\n@Injectable()\nexport class User<T = any> implements IUserService<T> {\n  data$ = of({} as T);\n  isLoggedIn$ = of(false);\n\n  isAuthenticated() {\n    return false;\n  }\n\n  logout() {\n    this.isLoggedIn$ = of(false);\n    this.data$ = of({} as T);\n  }\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { CanActivate, CanActivateChild, Router } from '@angular/router';\nimport { User } from '../services/user';\n\nexport const REDIRECT_URL_FOR_UNAUTHORIZED = new InjectionToken<string>(\n  'The url used in AuthGuard to redirect unauthorized user to login page. Use absolute.',\n);\n\n@Injectable({providedIn: 'root'})\nexport class AuthGuard implements CanActivate, CanActivateChild {\n  constructor(@Optional() @Inject(REDIRECT_URL_FOR_UNAUTHORIZED) private redirectUrl = '/',\n              private user: User,\n              private router: Router) {\n  }\n\n  canActivate() {\n    if (this.user.isAuthenticated()) {\n      return true;\n    } else {\n      this.router.navigate([this.redirectUrl]);\n      return false;\n    }\n  }\n\n  canActivateChild() {\n    return this.canActivate();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\n\n/** Pass untouched request through to the next request handler. */\n@Injectable()\nexport class NoopInterceptor implements HttpInterceptor {\n\n    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n        return next.handle(req);\n    }\n}","import {\n  HttpEvent,\n  HttpHandler,\n  HttpInterceptor,\n  HttpRequest,\n} from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { JwtUserService } from \"../services/jwt-user.service\";\n\n@Injectable()\nexport class AuthHeaderInterceptor<T = any> implements HttpInterceptor {\n  constructor(private user: JwtUserService<T>) {}\n\n  intercept(\n    req: HttpRequest<any>,\n    next: HttpHandler\n  ): Observable<HttpEvent<any>> {\n    const regex = /\\/*\\.(mp3|mp4|oga|ogg|wav|webm|jpg|jpeg|ico|png|svg|gif|html|txt|css|js|json)/gi;\n    if (req.method === \"GET\" && regex.test(req.url)) {\n      return next.handle(req);\n    }\n\n    const isAuthenticated = this.user.isAuthenticated();\n\n    if (isAuthenticated) {\n      req = req.clone({\n        setHeaders: {\n          Authorization: this.user.token,\n        },\n      });\n    }\n    return next.handle(req);\n  }\n}\n","import { HttpClient, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { Observable, of, throwError as _throw } from 'rxjs';\nimport { catchError, filter, switchMap } from 'rxjs/operators';\n\nimport { isAuthTokenExpiringSoon, validateJwtExpirationTime } from '../helpers/jwt-helpers';\nimport { JwtUserService } from '../services/jwt-user.service';\nimport { SessionService } from '../services/session.service';\nimport { TokenRefreshService } from '../services/token-refresh.service';\nimport { RefreshTokensResponseInterface } from '../interfaces/refresh-tokens-response.interface';\n\nexport const UNAUTHORIZED_HTTP_CODE = 401;\nconst REFRESH_TOKEN_ENDPOINT = '/refresh-token';\nexport const EXPIRATION_TRIGGER_TIME_SECONDS = new InjectionToken<string>('Key in storage, where expiration trigger time is stored');\n\n@Injectable()\nexport class RefreshableJwtInterceptor implements HttpInterceptor {\n    public jwtExpired: boolean;\n    public jwtExpiresSoon: boolean;\n\n    constructor(\n        private user: JwtUserService,\n        private tokenRefreshService: TokenRefreshService,\n        private sessionService: SessionService,\n        private http: HttpClient,\n        @Inject(EXPIRATION_TRIGGER_TIME_SECONDS) private expirationTriggerTimeSeconds: number = 120,\n    ) {\n    }\n\n    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n        return next.handle(req).pipe(\n            switchMap((response) => {\n                this.jwtExpiresSoon = isAuthTokenExpiringSoon(this.user.token, this.expirationTriggerTimeSeconds);\n                if (this.jwtExpiresSoon && !req.url.includes(REFRESH_TOKEN_ENDPOINT)) {\n                    return this.processRefreshOnSuccess(response);\n                }\n                return of(response);\n            }),\n            catchError((response) => {\n                this.jwtExpired = !validateJwtExpirationTime(this.user.token);\n                this.jwtExpiresSoon = isAuthTokenExpiringSoon(this.user.token, this.expirationTriggerTimeSeconds);\n                if (response.status === UNAUTHORIZED_HTTP_CODE && req.url.includes(REFRESH_TOKEN_ENDPOINT)) {\n                    this.user.logout();\n                    return _throw(response);\n                }\n                if (response.status === UNAUTHORIZED_HTTP_CODE || this.jwtExpired || this.jwtExpiresSoon) {\n                    return this.processRefreshOnError(req, next, response);\n                }\n                return _throw(response);\n        }));\n    }\n\n    private processRefreshOnError(req: HttpRequest<any>, next: HttpHandler, response): Observable<HttpEvent<any>> {\n        const startingReqUrl = req.url;\n        return this.tokenRefreshService.getRefreshTokens().pipe(\n            filter(() => startingReqUrl === req.url),\n            switchMap((tokens) => {\n                if (tokens) {\n                    this.setTokens(tokens);\n                }\n                if (response.status === UNAUTHORIZED_HTTP_CODE) {\n                    const request = req.clone({\n                        setHeaders: {\n                            \"Authorization\": this.user.token,\n                        }\n                    });\n                    return next.handle(request);\n                }\n                return of(response);\n            }),\n            catchError((error) => {\n                if (error.status === UNAUTHORIZED_HTTP_CODE) {\n                    this.user.logout();\n                }\n                return _throw(error);\n            }),\n        );\n    }\n\n    private processRefreshOnSuccess(response): Observable<HttpEvent<any>> {\n        return this.tokenRefreshService.getRefreshTokens().pipe(\n            switchMap((tokens) => {\n                if (tokens) {\n                    this.setTokens(tokens);\n                }\n                return of(response);\n            }),\n            catchError((error) => {\n                if (error.status === UNAUTHORIZED_HTTP_CODE) {\n                    this.user.logout();\n                }\n                return _throw(error);\n            }),\n        );\n    }\n\n    // AuthToken expiration set to refresh token expiration because of the problem of logout\n    // of user, who has been doing nothing during auth token expiration time\n    private setTokens(tokens: RefreshTokensResponseInterface) {\n        this.sessionService.setToken(tokens.AuthToken, {expires: +tokens.RefreshTokenExpiresAt});\n        this.sessionService.setRefreshToken(tokens.RefreshToken, {expires: +tokens.RefreshTokenExpiresAt});\n    }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { CanActivate, CanActivateChild, Router } from '@angular/router';\nimport { validateJwtExpirationTime } from '../helpers/jwt-helpers';\nimport { JwtUserService } from '../services/jwt-user.service';\nimport { REDIRECT_URL_FOR_UNAUTHORIZED } from './auth.guard';\n\n@Injectable({providedIn: 'root'})\nexport class JwtValidityGuard implements CanActivate, CanActivateChild {\n  constructor(@Optional() @Inject(REDIRECT_URL_FOR_UNAUTHORIZED) private redirectUrl = '/',\n              private user: JwtUserService,\n              private router: Router) {\n  }\n\n  canActivate() {\n    const jwtIsUpToDate = validateJwtExpirationTime(this.user.token);\n    if (jwtIsUpToDate === false) {\n      this.user.logout();\n      this.router.navigate([this.redirectUrl]);\n    }\n    return jwtIsUpToDate;\n  }\n\n  canActivateChild() {\n    return this.canActivate();\n  }\n}\n","export enum SessionTypeEnum {\n    Default,\n    Refreshable,\n}\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError as _throw } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { validateJwtExpirationTime } from '../helpers/jwt-helpers';\nimport { JwtUserService } from '../services/jwt-user.service';\n\nconst UNAUTHORIZED_HTTP_CODE = 401;\n\n@Injectable()\nexport class JwtValidityInterceptor implements HttpInterceptor {\n    constructor(private user: JwtUserService) {\n    }\n\n    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n        return next.handle(req).pipe(catchError((response) => {\n            if (response.status === UNAUTHORIZED_HTTP_CODE) {\n                this.user.logout();\n            }\n            return _throw(response);\n        }));\n    }\n}\n","import { JwtUserService } from '../services/jwt-user.service';\nimport { JwtValidityInterceptor } from '../interceptors/jwt-validity.interceptor';\nimport { RefreshableJwtInterceptor } from '../interceptors/refreshable-jwt.interceptor';\nimport { TokenRefreshService } from '../services/token-refresh.service';\nimport { SessionService } from '../services/session.service';\nimport { HttpClient } from '@angular/common/http';\nimport { SessionTypeEnum } from '../enums/session-type.enum';\n\nexport function jwtValidityFactory(\n    jwtUserService: JwtUserService,\n    tokenRefreshService: TokenRefreshService,\n    sessionService: SessionService,\n    httpClient: HttpClient,\n    SessionType: SessionTypeEnum = SessionTypeEnum.Default,\n    expirationTriggerTimeSeconds,\n) {\n    return SessionType === SessionTypeEnum.Default\n        ? new JwtValidityInterceptor(jwtUserService)\n        : new RefreshableJwtInterceptor(jwtUserService, tokenRefreshService, sessionService, httpClient, expirationTriggerTimeSeconds);\n}\n","import { HTTP_INTERCEPTORS, HttpClient } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { StorageModule, CookiesStorageService } from '../storage/index';\nimport { AuthHeaderInterceptor } from './interceptors/auth-header.interceptor';\nimport { AUTH_TOKEN_STORAGE_KEY, SESSION_TYPE, SessionService, USER_COOKIE_OPTIONS } from './services/session.service';\nimport { USER_DATA_STORAGE_KEY, UserStorageService, USER_DATA_STORAGE_CLASS } from './services/user-storage.service';\nimport { CookieOptions } from \"../storage/services/cookies-helpers.service\";\nimport { JwtUserService } from './services/jwt-user.service';\nimport { TokenRefreshService } from './services/token-refresh.service';\nimport { SessionTypeEnum } from './enums/session-type.enum';\nimport { jwtValidityFactory } from './factories/jwt-validity.factory';\nimport { EXPIRATION_TRIGGER_TIME_SECONDS } from \"./interceptors/refreshable-jwt.interceptor\";\n\nconst DEFAULT_USER_COOKIE_OPTIONS: CookieOptions = {path: '/', domain: '/'};\n\nexport const jwtValidityProvider = {\n        provide: HTTP_INTERCEPTORS,\n        useFactory: jwtValidityFactory,\n        deps: [JwtUserService, TokenRefreshService, SessionService, HttpClient, SESSION_TYPE, EXPIRATION_TRIGGER_TIME_SECONDS],\n        multi: true,\n};\n\n@NgModule({\n    imports: [\n        StorageModule,\n        // BrowserTransferStateModule, // for local development\n    ],\n    declarations: [],\n    providers: [\n        // {provide: PLATFORM_ID, useValue: 'browser'}, // provide for local develop\n        SessionService,\n        JwtUserService,\n        UserStorageService,\n        TokenRefreshService,\n        {provide: SESSION_TYPE, useValue: SessionTypeEnum.Default},\n        {provide: HTTP_INTERCEPTORS, useClass: AuthHeaderInterceptor, multi: true},\n        jwtValidityProvider,\n        {provide: USER_COOKIE_OPTIONS, useValue: DEFAULT_USER_COOKIE_OPTIONS},\n        {provide: AUTH_TOKEN_STORAGE_KEY, useValue: 'token'},\n        {provide: USER_DATA_STORAGE_KEY, useValue: 'userData'},\n        {provide: USER_DATA_STORAGE_CLASS, useClass: CookiesStorageService},\n        {provide: EXPIRATION_TRIGGER_TIME_SECONDS, useValue: 120},\n    ],\n})\nexport class UserModule {\n\n}\n","/* tslint:disable */\n\nimport { Observable, of } from 'rxjs';\nimport { PreloadingStrategy, Route } from \"@angular/router\";\n\nexport class CustomPreloading implements PreloadingStrategy {\n  preload(route: Route, preload: Function): Observable<any> {\n    if (route.data && route.data.preload) {\n      return preload();\n    } else {\n      return of(null);\n    }\n  }\n}\n","import {\n  HttpEvent,\n  HttpHandler,\n  HttpInterceptor,\n  HttpRequest,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class NodeDebugInterceptor implements HttpInterceptor {\n  constructor() {}\n\n  intercept(\n    req: HttpRequest<any>,\n    next: HttpHandler,\n  ): Observable<HttpEvent<any>> {\n    if (process.env.NODE_REQUEST_DEBUG === 'true') {\n      // tslint:disable-next-line\n      console.log(`Node Request ${req.method}`, req.url);\n    }\n    return next.handle(req);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.CookiesHelpersService","i1.StorageService","_throw","i1.User","i1.JwtUserService","UNAUTHORIZED_HTTP_CODE"],"mappings":"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"}