{"version":3,"file":"ng2-ui-auth-14.mjs","sources":["../../../projects/ng2-ui-auth-14/src/lib/utils.ts","../../../projects/ng2-ui-auth-14/src/lib/config-providers.ts","../../../projects/ng2-ui-auth-14/src/lib/storage-type.enum.ts","../../../projects/ng2-ui-auth-14/src/lib/config.service.ts","../../../projects/ng2-ui-auth-14/src/lib/storage-service.ts","../../../projects/ng2-ui-auth-14/src/lib/browser-storage.service.ts","../../../projects/ng2-ui-auth-14/src/lib/shared.service.ts","../../../projects/ng2-ui-auth-14/src/lib/interceptor.service.ts","../../../projects/ng2-ui-auth-14/src/lib/popup.service.ts","../../../projects/ng2-ui-auth-14/src/lib/oauth1.service.ts","../../../projects/ng2-ui-auth-14/src/lib/oauth2.service.ts","../../../projects/ng2-ui-auth-14/src/lib/oauth.service.ts","../../../projects/ng2-ui-auth-14/src/lib/local.service.ts","../../../projects/ng2-ui-auth-14/src/lib/auth.service.ts","../../../projects/ng2-ui-auth-14/src/lib/ng2-ui-auth-14.module.ts","../../../projects/ng2-ui-auth-14/src/ng2-ui-auth-14.ts"],"sourcesContent":["import { HttpHeaders, HttpParams } from '@angular/common/http';\n\n/**\n * Created by Ron on 17/12/2015.\n */\n\nexport function joinUrl(baseUrl: string, url: string) {\n  if (/^(?:[a-z]+:)?\\/\\//i.test(url)) {\n    return url;\n  }\n\n  const joined = [baseUrl, url].join('/');\n\n  return joined\n    .replace(/[\\/]+/g, '/')\n    .replace(/\\/\\?/g, '?')\n    .replace(/\\/\\#/g, '#')\n    .replace(/\\:\\//g, '://');\n}\n\nexport function buildQueryString(obj: object) {\n  return Object.keys(obj)\n    .map(key => (!!obj[key] ? `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}` : key))\n    .join('&');\n}\n\nexport function getWindowOrigin(w?: Window) {\n  if (!w && typeof window !== 'undefined') {\n    w = window;\n  }\n  try {\n    if (!w || !w.location) {\n      return null;\n    }\n    if (!w.location.origin) {\n      return `${w.location.protocol}//${w.location.hostname}${w.location.port ? ':' + w.location.port : ''}`;\n    }\n    return w.location.origin;\n  } catch (error) {\n    return null;\n    // ignore DOMException: Blocked a frame with origin from accessing a cross-origin frame.\n    // error instanceof DOMException && error.name === 'SecurityError'\n  }\n}\n","import { IProviders } from '../public_api';\nimport { getWindowOrigin } from './utils';\n\nexport const defaultProviders: IProviders = {\n  facebook: {\n    name: 'facebook',\n    url: '/auth/facebook',\n    redirectUri: `${getWindowOrigin()}/`,\n    authorizationEndpoint: 'https://www.facebook.com/v2.5/dialog/oauth',\n    additionalUrlParams: {\n      display: 'popup'\n    },\n    scope: ['email'],\n    scopeDelimiter: ',',\n    oauthType: '2.0',\n    popupOptions: { width: 580, height: 400 }\n  },\n  google: {\n    name: 'google',\n    url: '/auth/google',\n    authorizationEndpoint: 'https://accounts.google.com/o/oauth2/v2/auth',\n    additionalUrlParams: {\n      display: 'popup',\n      prompt: undefined,\n      login_hint: undefined,\n      access_type: undefined,\n      include_granted_scopes: undefined,\n      'openid.realm': undefined,\n      hd: undefined\n    },\n    scope: ['openid', 'email'],\n    scopeDelimiter: ' ',\n    oauthType: '2.0',\n    popupOptions: { width: 452, height: 633 },\n    state: () =>\n      encodeURIComponent(\n        Math.random()\n          .toString(36)\n          .substr(2)\n      )\n  },\n  github: {\n    name: 'github',\n    url: '/auth/github',\n    authorizationEndpoint: 'https://github.com/login/oauth/authorize',\n    scope: ['user:email'],\n    scopeDelimiter: ' ',\n    oauthType: '2.0',\n    popupOptions: { width: 1020, height: 618 }\n  },\n  instagram: {\n    name: 'instagram',\n    url: '/auth/instagram',\n    authorizationEndpoint: 'https://api.instagram.com/oauth/authorize',\n    scope: ['basic'],\n    scopeDelimiter: '+',\n    oauthType: '2.0'\n  },\n  linkedin: {\n    name: 'linkedin',\n    url: '/auth/linkedin',\n    authorizationEndpoint: 'https://www.linkedin.com/uas/oauth2/authorization',\n    scope: ['r_emailaddress'],\n    scopeDelimiter: ' ',\n    oauthType: '2.0',\n    popupOptions: { width: 527, height: 582 },\n    state: 'STATE'\n  },\n  twitter: {\n    name: 'twitter',\n    url: '/auth/twitter',\n    authorizationEndpoint: 'https://api.twitter.com/oauth/authenticate',\n    oauthType: '1.0',\n    popupOptions: { width: 495, height: 645 }\n  },\n  twitch: {\n    name: 'twitch',\n    url: '/auth/twitch',\n    authorizationEndpoint: 'https://api.twitch.tv/kraken/oauth2/authorize',\n    scope: ['user_read'],\n    scopeDelimiter: ' ',\n    additionalUrlParams: {\n      display: 'popup'\n    },\n    oauthType: '2.0',\n    popupOptions: { width: 500, height: 560 }\n  },\n  live: {\n    name: 'live',\n    url: '/auth/live',\n    authorizationEndpoint: 'https://login.live.com/oauth20_authorize.srf',\n    additionalUrlParams: {\n      display: 'popup'\n    },\n    scope: ['wl.emails'],\n    scopeDelimiter: ' ',\n    oauthType: '2.0',\n    popupOptions: { width: 500, height: 560 }\n  },\n  yahoo: {\n    name: 'yahoo',\n    url: '/auth/yahoo',\n    authorizationEndpoint: 'https://api.login.yahoo.com/oauth2/request_auth',\n    scope: [],\n    scopeDelimiter: ',',\n    oauthType: '2.0',\n    popupOptions: { width: 559, height: 519 }\n  },\n  bitbucket: {\n    name: 'bitbucket',\n    url: '/auth/bitbucket',\n    authorizationEndpoint: 'https://bitbucket.org/site/oauth2/authorize',\n    redirectUri: `${getWindowOrigin()}/`,\n    scope: ['email'],\n    scopeDelimiter: ',',\n    oauthType: '2.0',\n    popupOptions: { width: 1028, height: 529 }\n  },\n  spotify: {\n    name: 'spotify',\n    url: '/auth/spotify',\n    authorizationEndpoint: 'https://accounts.spotify.com/authorize',\n    scope: ['', 'user-read-email'],\n    scopeDelimiter: ',',\n    oauthType: '2.0',\n    popupOptions: { width: 500, height: 530 },\n    state: () =>\n      encodeURIComponent(\n        Math.random()\n          .toString(36)\n          .substr(2)\n      )\n  }\n};\n","export enum StorageType {\n  NONE = 'none',\n  MEMORY = 'memory',\n  LOCAL_STORAGE = 'localStorage',\n  SESSION_STORAGE = 'sessionStorage',\n  COOKIE = 'cookie',\n  SESSION_COOKIE = 'sessionCookie'\n}\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { IConfigOptions, IPartialConfigOptions, IProviders } from './config-interfaces';\nimport { defaultProviders } from './config-providers';\nimport { StorageType } from './storage-type.enum';\n\nexport const CONFIG_OPTIONS = new InjectionToken<any>('config.options');\n@Injectable()\nexport class ConfigService {\n  public options = {\n    withCredentials: false,\n    tokenRoot: null,\n    baseUrl: '/',\n    loginUrl: '/auth/login',\n    signupUrl: '/auth/signup',\n    unlinkUrl: '/auth/unlink/',\n    tokenName: 'token',\n    tokenSeparator: '_',\n    tokenPrefix: 'ng2-ui-auth-14',\n    authHeader: 'Authorization',\n    authToken: 'Bearer',\n    storageType: StorageType.LOCAL_STORAGE,\n    cordova: undefined,\n    resolveToken: (response: any, config: IConfigOptions) => {\n      const accessToken: string | { [key: string]: string } | null | undefined =\n        response && (response.access_token || response.token || response.data);\n      if (!accessToken) {\n        // console.warn('No token found');\n        return null;\n      }\n      if (typeof accessToken === 'string') {\n        return accessToken;\n      }\n      if (typeof accessToken !== 'object') {\n        // console.warn('No token found');\n        return null;\n      }\n      const tokenRootData =\n        config.tokenRoot &&\n        config.tokenRoot.split('.').reduce((o: any, x: any) => {\n          return o[x];\n        }, accessToken);\n      const token = tokenRootData ? tokenRootData[config.tokenName] : accessToken[config.tokenName];\n      if (token) {\n        return token;\n      }\n      // const tokenPath = this.tokenRoot ? this.tokenRoot + '.' + this.tokenName : this.tokenName;\n      // console.warn('Expecting a token named \"' + tokenPath);\n      return null;\n    },\n    providers: {}\n  };\n\n  constructor(@Inject(CONFIG_OPTIONS) options: IPartialConfigOptions) {\n    this.options = {\n      ...this.options,\n      ...options\n    };\n    this.mergeWithDefaultProviders();\n  }\n\n  updateProviders(providers: IProviders) {\n    this.options.providers = {\n      ...(this.options.providers || {}),\n      ...providers\n    };\n    this.mergeWithDefaultProviders();\n  }\n\n  mergeWithDefaultProviders() {\n    Object.keys(this.options.providers).forEach(key => {\n      if (key in defaultProviders) {\n        this.options.providers[key] = {\n          ...defaultProviders[key],\n          ...this.options.providers[key]\n        };\n      }\n    });\n  }\n}\n","import { StorageType } from './storage-type.enum';\n\nexport abstract class StorageService {\n  abstract updateStorageType(storageType: StorageType): boolean;\n\n  abstract get(key: string): string;\n\n  abstract set(key: string, value: string, date: string): void;\n\n  abstract remove(key: string): void;\n}\n","import { Injectable } from '@angular/core';\nimport { StorageService } from './storage-service';\nimport { StorageType } from './storage-type.enum';\nimport { ConfigService } from './config.service';\n\n@Injectable()\nexport class BrowserStorageService extends StorageService {\n  private store: { [key: string]: string } = {};\n  private storageType = StorageType.MEMORY;\n\n  constructor(private config: ConfigService) {\n    super();\n    if (!this.updateStorageType(config.options.storageType)) {\n      console.warn(config.options.storageType + ' is not available.');\n    }\n  }\n\n  public updateStorageType(storageType: StorageType) {\n    const isStorageAvailable = this.checkIsStorageAvailable(storageType);\n    if (!isStorageAvailable) {\n      return false;\n    }\n    this.storageType = storageType;\n    return true;\n  }\n\n  public get(key: string) {\n    switch (this.storageType) {\n      case StorageType.COOKIE:\n      case StorageType.SESSION_COOKIE:\n        return this.getCookie(key);\n      case StorageType.LOCAL_STORAGE:\n      case StorageType.SESSION_STORAGE:\n        return window[this.storageType].getItem(key);\n      case StorageType.MEMORY:\n        return this.store[key];\n      case StorageType.NONE:\n      default:\n        return null;\n    }\n  }\n\n  public set(key: string, value: string, date: string) {\n    switch (this.storageType) {\n      case StorageType.COOKIE:\n      case StorageType.SESSION_COOKIE:\n        this.setCookie(key, value, this.storageType === StorageType.COOKIE ? date : '');\n        break;\n      case StorageType.LOCAL_STORAGE:\n      case StorageType.SESSION_STORAGE:\n        window[this.storageType].setItem(key, value);\n        break;\n      case StorageType.MEMORY:\n        this.store[key] = value;\n        break;\n      case StorageType.NONE:\n      default:\n        break;\n    }\n  }\n\n  public remove(key: string) {\n    switch (this.storageType) {\n      case StorageType.COOKIE:\n      case StorageType.SESSION_COOKIE:\n        this.removeCookie(key);\n        break;\n      case StorageType.LOCAL_STORAGE:\n      case StorageType.SESSION_STORAGE:\n        window[this.storageType].removeItem(key);\n        break;\n      case StorageType.MEMORY:\n        delete this.store[key];\n        break;\n      case StorageType.NONE:\n      default:\n        break;\n    }\n  }\n\n  private checkIsStorageAvailable(storageType: StorageType) {\n    switch (storageType) {\n      case StorageType.COOKIE:\n      case StorageType.SESSION_COOKIE:\n        return this.isCookieStorageAvailable();\n      case StorageType.LOCAL_STORAGE:\n      case StorageType.SESSION_STORAGE:\n        return this.isWindowStorageAvailable(storageType);\n      case StorageType.NONE:\n      case StorageType.MEMORY:\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  private isWindowStorageAvailable(storageType: StorageType.SESSION_STORAGE | StorageType.LOCAL_STORAGE) {\n    try {\n      const supported = window && storageType in window && window[storageType] !== null;\n\n      if (supported) {\n        const key = Math.random()\n          .toString(36)\n          .substring(7);\n        window[storageType].setItem(key, '');\n        window[storageType].removeItem(key);\n      }\n\n      return supported;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  private isCookieStorageAvailable() {\n    try {\n      const supported = document && 'cookie' in document;\n\n      if (supported) {\n        const key = Math.random()\n          .toString(36)\n          .substring(7);\n        this.setCookie(key, 'test', new Date(Date.now() + 60 * 1000).toUTCString());\n        const value = this.getCookie(key);\n        this.removeCookie(key);\n        return value === 'test';\n      }\n      return false;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  private setCookie(key: string, value: string, expires = '', path = '/') {\n    document.cookie = `${key}=${value}${expires ? `; expires=${expires}` : ''}; path=${path}`;\n  }\n\n  private removeCookie(key: string, path = '/') {\n    this.setCookie(key, '', new Date(0).toUTCString(), path);\n  }\n\n  private getCookie(key: string) {\n    return document.cookie.replace(new RegExp(`(?:(?:^|.*;\\\\s*)${key}\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$`), '$1');\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { StorageType } from './storage-type.enum';\nimport { Subscriber, Observable } from 'rxjs';\nimport { StorageService } from './storage-service';\nimport { ConfigService } from './config.service';\n\n@Injectable()\nexport class SharedService {\n  public tokenName = this.config.options.tokenPrefix\n    ? [this.config.options.tokenPrefix, this.config.options.tokenName].join(this.config.options.tokenSeparator)\n    : this.config.options.tokenName;\n\n  constructor(private storage: StorageService, private config: ConfigService) {}\n\n  public getToken() {\n    return this.storage.get(this.tokenName);\n  }\n\n  public getPayload(token = this.getToken()) {\n    if (token && token.split('.').length === 3) {\n      try {\n        const base64Url = token.split('.')[1];\n        const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n        return JSON.parse(this.b64DecodeUnicode(base64));\n      } catch (e) {\n        return undefined;\n      }\n    }\n  }\n\n  public setToken(response: string | object) {\n    if (!response) {\n      // console.warn('Can\\'t set token without passing a value');\n      return;\n    }\n\n    let token: string;\n    if (typeof response === 'string') {\n      token = response;\n    } else {\n      token = this.config.options.resolveToken(response, this.config.options);\n    }\n\n    if (token) {\n      const expDate = this.getExpirationDate(token);\n      this.storage.set(this.tokenName, token, expDate ? expDate.toUTCString() : '');\n    }\n  }\n\n  public removeToken() {\n    this.storage.remove(this.tokenName);\n  }\n\n  public isAuthenticated(token = this.getToken()) {\n    // a token is present\n    if (token) {\n      // token with a valid JWT format XXX.YYY.ZZZ\n      if (token.split('.').length === 3) {\n        // could be a valid JWT or an access token with the same format\n        try {\n          const base64Url = token.split('.')[1];\n          const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n          const exp = JSON.parse(this.b64DecodeUnicode(base64)).exp;\n          // jwt with an optional expiration claims\n          if (exp) {\n            const isExpired = Math.round(new Date().getTime() / 1000) >= exp;\n            if (isExpired) {\n              // fail: Expired token\n              this.storage.remove(this.tokenName);\n              return false;\n            } else {\n              // pass: Non-expired token\n              return true;\n            }\n          }\n        } catch (e) {\n          // pass: Non-JWT token that looks like JWT\n          return true;\n        }\n      }\n      // pass: All other tokens\n      return true;\n    }\n    // lail: No token at all\n    return false;\n  }\n\n  public getExpirationDate(token = this.getToken()) {\n    const payload = this.getPayload(token);\n    if (payload && payload.exp && Math.round(new Date().getTime() / 1000) < payload.exp) {\n      const date = new Date(0);\n      date.setUTCSeconds(payload.exp);\n      return date;\n    }\n    return null;\n  }\n\n  public logout(): Observable<any> {\n    return Observable.create((observer: Subscriber<any>) => {\n      this.storage.remove(this.tokenName);\n      observer.next();\n      observer.complete();\n    });\n  }\n\n  public setStorageType(type: StorageType) {\n    return this.storage.updateStorageType(type);\n  }\n\n  private b64DecodeUnicode(str) {\n    return decodeURIComponent(Array.prototype.map.call(atob(str), c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''));\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\nimport { SharedService } from './shared.service';\nimport { ConfigService } from './config.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class JwtInterceptor implements HttpInterceptor {\n  constructor(private shared: SharedService, private config: ConfigService) {}\n\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    const { authHeader, authToken } = this.config.options;\n    const token = this.shared.getToken();\n    const isAuthenticated = this.shared.isAuthenticated();\n    const newReq =\n      isAuthenticated && !req.headers.has(authHeader) ? req.clone({ setHeaders: { [authHeader]: `${authToken} ${token}` } }) : req;\n    return next.handle(newReq);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { empty, fromEvent, interval, merge, Observable, of, throwError } from 'rxjs';\nimport { delay, map, switchMap, take } from 'rxjs/operators';\nimport { IOauth1Options, IOauth2Options, IPopupOptions } from './config-interfaces';\nimport { getWindowOrigin } from './utils';\n\ndeclare const cordova: any;\n@Injectable()\nexport class PopupService {\n  public open(url: string, options: IOauth2Options | IOauth1Options, cordova = this.isCordovaApp()) {\n    const stringifiedOptions = this.stringifyOptions(this.prepareOptions(options.popupOptions));\n    const windowName = cordova ? '_blank' : options.name;\n\n    const popupWindow = typeof window !== 'undefined' ? window.open(url, windowName, stringifiedOptions) : null;\n\n    if (popupWindow) {\n      if (popupWindow.focus) {\n        popupWindow.focus();\n      }\n      return of(popupWindow);\n    }\n    return empty();\n  }\n\n  public waitForClose(popupWindow: Window, cordova = this.isCordovaApp(), redirectUri = getWindowOrigin()) {\n    return cordova ? this.eventListener(popupWindow, redirectUri) : this.pollPopup(popupWindow, redirectUri);\n  }\n\n  private eventListener(popupWindow: Window, redirectUri = getWindowOrigin()) {\n    if (!popupWindow) {\n      throw new Error('Popup was not created');\n    }\n    return merge(\n      fromEvent<Event>(popupWindow, 'exit').pipe(\n        delay(100),\n        map(() => {\n          throw new Error('Authentication Canceled');\n        })\n      ),\n      fromEvent(popupWindow, 'loadstart')\n    ).pipe(\n      switchMap((event: Event & { url: string }) => {\n        if (!popupWindow || popupWindow.closed) {\n          throw(new Error('Authentication Canceled'));\n        }\n        if (event.url.indexOf(redirectUri) !== 0) {\n          return empty();\n        }\n\n        const parser = document.createElement('a');\n        parser.href = event.url;\n\n        if (parser.search || parser.hash) {\n          const queryParams = parser.search.substring(1).replace(/\\/$/, '');\n          const hashParams = parser.hash.substring(1).replace(/\\/$/, '');\n          const hash = this.parseQueryString(hashParams);\n          const qs = this.parseQueryString(queryParams);\n          const allParams = { ...qs, ...hash };\n\n          popupWindow.close();\n\n          if (allParams.error) {\n            throw allParams.error;\n          } else {\n            return of(allParams);\n          }\n        }\n        return empty();\n      }),\n      take(1)\n    );\n  }\n\n  private pollPopup(popupWindow: Window, redirectUri = getWindowOrigin()) {\n    return interval(50).pipe(\n      switchMap(() => {\n        if (!popupWindow || popupWindow.closed) {\n          return throwError(new Error('Authentication Canceled'));\n        }\n\n        const popupWindowOrigin = getWindowOrigin(popupWindow);\n\n        if (\n          popupWindowOrigin &&\n          (redirectUri.indexOf(popupWindowOrigin) === 0 || popupWindowOrigin.indexOf(redirectUri) === 0) &&\n          (popupWindow.location.search || popupWindow.location.hash)\n        ) {\n          const queryParams = popupWindow.location.search.substring(1).replace(/\\/$/, '');\n          const hashParams = popupWindow.location.hash.substring(1).replace(/[\\/$]/, '');\n          const hash = this.parseQueryString(hashParams);\n          const qs = this.parseQueryString(queryParams);\n          popupWindow.close();\n          const allParams = { ...qs, ...hash };\n          if (allParams.error) {\n            throw allParams.error;\n          } else {\n            return of(allParams);\n          }\n        }\n        return empty();\n      }),\n      take(1)\n    );\n  }\n\n  private prepareOptions(options?: IPopupOptions) {\n    options = options || {};\n    const width = options.width || 500;\n    const height = options.height || 500;\n    return {\n      width,\n      height,\n      left: window.screenX + (window.outerWidth - width) / 2,\n      top: window.screenY + (window.outerHeight - height) / 2.5,\n      toolbar: options.visibleToolbar ? 'yes' : 'no',\n      ...options\n    };\n  }\n\n  private stringifyOptions(options: { [index: string]: string | number | boolean | null | undefined }) {\n    return Object.keys(options)\n      .map(key => (options[key] === null || options[key] === undefined ? key : key + '=' + options[key]))\n      .join(',');\n  }\n\n  private parseQueryString(joinedKeyValue: string): any {\n    let key;\n    let value;\n    return joinedKeyValue.split('&').reduce(\n      (obj, keyValue) => {\n        if (keyValue) {\n          value = keyValue.split('=');\n          key = decodeURIComponent(value[0]);\n          obj[key] = typeof value[1] !== 'undefined' ? decodeURIComponent(value[1]) : true;\n        }\n        return obj;\n      },\n      {} as { [k: string]: string | true }\n    );\n  }\n\n  private isCordovaApp() {\n    return typeof cordova === 'object' || (document.URL.indexOf('http://') === -1 && document.URL.indexOf('https://') === -1);\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { IOauth1Options } from './config-interfaces';\nimport { ConfigService } from './config.service';\nimport { IOauthService } from './oauth-service';\nimport { PopupService } from './popup.service';\nimport { buildQueryString, joinUrl } from './utils';\n\n@Injectable()\nexport class Oauth1Service implements IOauthService {\n  constructor(private http: HttpClient, private popup: PopupService, private config: ConfigService) {}\n\n  open<T extends object | string = any>(oauthOptions: IOauth1Options, userData: object): Observable<T> {\n    const serverUrl = this.config.options.baseUrl ? joinUrl(this.config.options.baseUrl, oauthOptions.url) : oauthOptions.url;\n    return this.popup.open('about:blank', oauthOptions, this.config.options.cordova).pipe(\n      switchMap(popupWindow =>\n        this.http.post<object>(serverUrl, oauthOptions).pipe(\n          tap(authorizationData =>\n            popupWindow\n              ? popupWindow.location.replace([oauthOptions.authorizationEndpoint, buildQueryString(authorizationData)].join('?'))\n              : undefined\n          ),\n          switchMap(authorizationData =>\n            this.popup\n              .waitForClose(popupWindow, this.config.options.cordova, oauthOptions.redirectUri)\n              .pipe(map(oauthData => ({ authorizationData, oauthData })))\n          )\n        )\n      ),\n      switchMap(({ authorizationData, oauthData }) => this.exchangeForToken<T>(oauthOptions, authorizationData, oauthData, userData))\n    );\n  }\n\n  private exchangeForToken<T>(oauthOptions: IOauth1Options, authorizationData: object, oauthData: object, userData: object) {\n    const body = { oauthOptions, authorizationData, oauthData, userData };\n    const { withCredentials, baseUrl } = this.config.options;\n    const { method = 'POST', url } = oauthOptions;\n    const exchangeForTokenUrl = baseUrl ? joinUrl(baseUrl, url) : url;\n    return this.http.request<T>(method, exchangeForTokenUrl, { body, withCredentials });\n  }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { empty, Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { IOauth2Options } from './config-interfaces';\nimport { ConfigService } from './config.service';\nimport { IOauthService } from './oauth-service';\nimport { PopupService } from './popup.service';\nimport { buildQueryString, getWindowOrigin, joinUrl } from './utils';\n\n@Injectable()\nexport class Oauth2Service implements IOauthService {\n  constructor(private http: HttpClient, private popup: PopupService, private config: ConfigService) {}\n\n  open<T extends object | string = any>(oauthOptions: IOauth2Options, userData: object): Observable<T> {\n    const authorizationData = this.getAuthorizationData(oauthOptions);\n    const url = [oauthOptions.authorizationEndpoint, buildQueryString(authorizationData)].join('?');\n    return this.popup.open(url, oauthOptions, this.config.options.cordova).pipe(\n      switchMap((window?: Window) =>\n        window ? this.popup.waitForClose(window, this.config.options.cordova, oauthOptions.redirectUri) : empty()\n      ),\n      switchMap((oauthData: any) => {\n        // when no server URL provided, return popup params as-is.\n        // this is for a scenario when someone wishes to opt out from\n        // satellizer's magic by doing authorization code exchange and\n        // saving a token manually.\n        if (oauthOptions.responseType === 'token' || !oauthOptions.url) {\n          return of(oauthData);\n        }\n\n        if (oauthData.state && oauthData.state !== authorizationData.state) {\n          throw new Error('OAuth \"state\" mismatch');\n        }\n        return this.exchangeForToken<T>(oauthOptions, authorizationData, oauthData, userData);\n      })\n    );\n  }\n\n  private exchangeForToken<T>(options: IOauth2Options, authorizationData: object, oauthData: object, userData: object) {\n    const body = { authorizationData, oauthData, userData };\n    const { baseUrl, withCredentials } = this.config.options;\n    const { url, method = 'POST' } = options;\n    const exchangeForTokenUrl = baseUrl ? joinUrl(baseUrl, url) : url;\n    return this.http.request<T>(method, exchangeForTokenUrl, { body, withCredentials });\n  }\n\n  private getAuthorizationData(options: IOauth2Options) {\n    const {\n      responseType = 'code',\n      clientId,\n      redirectUri = getWindowOrigin() || '',\n      scopeDelimiter = ',',\n      scope,\n      state,\n      additionalUrlParams\n    } = options;\n    const resolvedState = typeof state === 'function' ? state() : state;\n    return [\n      ['response_type', responseType],\n      ['client_id', clientId],\n      ['redirect_uri', redirectUri],\n      ...(state ? [['state', resolvedState]] : []),\n      ...(scope ? [['scope', scope.join(scopeDelimiter)]] : []),\n      ...(additionalUrlParams\n        ? Object.keys(additionalUrlParams).map(key => {\n            const value: string | (() => string) | null | undefined = (additionalUrlParams as any)[key];\n            if (typeof value === 'string') {\n              return [key, value];\n            } else if (typeof value === 'function') {\n              return [key, value()];\n            } else if (value === null) {\n              return [key, ''];\n            }\n            return ['', ''];\n          })\n        : [])\n    ]\n      .filter(_ => !!_[0])\n      .reduce((acc, next) => ({ ...acc, [next[0]]: next[1] }), {} as { [key: string]: string });\n  }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { joinUrl } from './utils';\nimport { tap } from 'rxjs/operators';\nimport { Oauth1Service } from './oauth1.service';\nimport { Oauth2Service } from './oauth2.service';\nimport { Observable } from 'rxjs';\nimport { PopupService } from './popup.service';\nimport { ConfigService } from './config.service';\nimport { SharedService } from './shared.service';\nimport { HttpClient } from '@angular/common/http';\nimport { IOauthService } from './oauth-service';\n\n@Injectable()\nexport class OauthService {\n  readonly depProviders = [\n    { provide: HttpClient, useValue: this.http },\n    { provide: PopupService, useValue: this.popup },\n    { provide: ConfigService, useValue: this.config }\n  ];\n  readonly deps = [HttpClient, PopupService, ConfigService];\n\n  constructor(private http: HttpClient, private shared: SharedService, private config: ConfigService, private popup: PopupService) {}\n\n  public authenticate<T extends object | string>(name: string, userData?: any): Observable<T> {\n    const provider: IOauthService =\n      this.config.options.providers[name].oauthType === '1.0'\n        ? Injector.create([...this.depProviders, { provide: Oauth1Service, deps: this.deps }]).get(Oauth1Service)\n        : Injector.create([...this.depProviders, { provide: Oauth2Service, deps: this.deps }]).get(Oauth2Service);\n\n    return provider.open<T>(this.config.options.providers[name], userData || {}).pipe(\n      tap(response => {\n        // this is for a scenario when someone wishes to opt out from\n        // satellizer's magic by doing authorization code exchange and\n        // saving a token manually.\n        if (this.config.options.providers[name].url) {\n          this.shared.setToken(response);\n        }\n      })\n    );\n  }\n\n  public unlink<T>(provider: string, url = joinUrl(this.config.options.baseUrl, this.config.options.unlinkUrl), method = 'POST') {\n    return this.http.request<T>(method, url, { body: { provider } });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { SharedService } from './shared.service';\nimport { ConfigService } from './config.service';\nimport { joinUrl } from './utils';\nimport { tap } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class LocalService {\n  constructor(private http: HttpClient, private shared: SharedService, private config: ConfigService) {}\n\n  public login<T extends string | object>(user: string | object, url?: string): Observable<T> {\n    return this.http\n      .post<T>(url || joinUrl(this.config.options.baseUrl, this.config.options.loginUrl), user)\n      .pipe(tap(data => this.shared.setToken(data)));\n  }\n\n  public signup<T = any>(user: string | object, url?: string): Observable<T> {\n    return this.http.post<T>(url || joinUrl(this.config.options.baseUrl, this.config.options.signupUrl), user);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { LocalService } from './local.service';\nimport { OauthService } from './oauth.service';\nimport { SharedService } from './shared.service';\nimport { StorageType } from './storage-type.enum';\n\n@Injectable()\nexport class AuthService {\n  constructor(private shared: SharedService, private local: LocalService, private oauth: OauthService) {}\n\n  public login<T extends string | object = any>(user: string | object, url?: string): Observable<T> {\n    return this.local.login<T>(user, url);\n  }\n\n  public signup<T = any>(user: string | object, url?: string): Observable<T> {\n    return this.local.signup<T>(user, url);\n  }\n\n  public logout(): Observable<void> {\n    return this.shared.logout();\n  }\n\n  public authenticate<T extends object | string = any>(name: string, userData?: any): Observable<T> {\n    return this.oauth.authenticate<T>(name, userData);\n  }\n\n  public link<T extends object | string = any>(name: string, userData?: any): Observable<T> {\n    return this.oauth.authenticate<T>(name, userData);\n  }\n\n  public unlink<T = any>(provider: string, url?: string): Observable<T> {\n    return this.oauth.unlink<T>(provider, url);\n  }\n\n  public isAuthenticated(): boolean {\n    return this.shared.isAuthenticated();\n  }\n\n  public getToken(): string | null {\n    return this.shared.getToken();\n  }\n\n  public setToken(token: string | object): void {\n    this.shared.setToken(token);\n  }\n\n  public removeToken(): void {\n    this.shared.removeToken();\n  }\n\n  public getPayload(): any {\n    return this.shared.getPayload();\n  }\n\n  public setStorageType(type: StorageType): boolean {\n    return this.shared.setStorageType(type);\n  }\n\n  public getExpirationDate(): Date | null {\n    return this.shared.getExpirationDate();\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { IPartialConfigOptions } from './config-interfaces';\nimport { CONFIG_OPTIONS, ConfigService } from './config.service';\nimport { StorageService } from './storage-service';\nimport { BrowserStorageService } from './browser-storage.service';\nimport { SharedService } from './shared.service';\nimport { JwtInterceptor } from './interceptor.service';\nimport { OauthService } from './oauth.service';\nimport { HttpClient } from '@angular/common/http';\nimport { PopupService } from './popup.service';\nimport { LocalService } from './local.service';\nimport { AuthService } from './auth.service';\n\n@NgModule({\n  imports: [HttpClientModule],\n  declarations: [],\n  exports: []\n})\nexport class Ng2UiAuth14Module {\n  static forRoot(configOptions?: IPartialConfigOptions, defaultJwtInterceptor = true): ModuleWithProviders<Ng2UiAuth14Module> {\n    return {\n      ngModule: Ng2UiAuth14Module,\n      providers: [\n        ...(configOptions ? [{ provide: CONFIG_OPTIONS, useValue: configOptions }] : []),\n        { provide: ConfigService, useClass: ConfigService, deps: [CONFIG_OPTIONS] },\n        { provide: StorageService, useClass: BrowserStorageService, deps: [ConfigService] },\n        { provide: SharedService, useClass: SharedService, deps: [StorageService, ConfigService] },\n        { provide: LocalService, useClass: LocalService, deps: [HttpClient, SharedService, ConfigService] },\n        { provide: PopupService, useClass: PopupService, deps: [ConfigService] },\n        { provide: OauthService, useClass: OauthService, deps: [HttpClient, SharedService, ConfigService, PopupService] },\n        { provide: AuthService, useClass: AuthService, deps: [SharedService, LocalService, OauthService] },\n        ...(defaultJwtInterceptor\n          ? [{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true, deps: [SharedService, ConfigService] }]\n          : [])\n      ]\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ConfigService","i1.StorageService","i2.ConfigService","i1.SharedService","i2.PopupService","i3.ConfigService","i2.SharedService","i4.PopupService","i2.LocalService","i3.OauthService"],"mappings":"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"}