{"version":3,"file":"pb92-angularx-social-login.mjs","sources":["../../../projects/lib/src/entities/base-login-provider.ts","../../../projects/lib/src/entities/social-user.ts","../../../projects/lib/src/providers/google-login-provider.ts","../../../projects/lib/src/socialauth.service.ts","../../../projects/lib/src/directives/google-signin-button.directive.ts","../../../projects/lib/src/sociallogin.module.ts","../../../projects/lib/src/providers/dummy-login-provider.ts","../../../projects/lib/src/providers/facebook-login-provider.ts","../../../projects/lib/src/providers/amazon-login-provider.ts","../../../projects/lib/src/providers/vk-login-provider.ts","../../../projects/lib/src/providers/microsoft-login-provider.ts","../../../projects/lib/src/pb92-angularx-social-login.ts"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nimport { LoginProvider } from './login-provider';\nimport { SocialUser } from './social-user';\n\nexport abstract class BaseLoginProvider implements LoginProvider {\n  constructor() {}\n  readonly changeUser?: EventEmitter<SocialUser>;\n  abstract initialize(autoLogin?: boolean): Promise<void>;\n  abstract getLoginStatus(): Promise<SocialUser>;\n  abstract signIn(signInOptions?: object): Promise<SocialUser>;\n  abstract signOut(revoke?: boolean): Promise<void>;\n  refreshToken?(): Promise<SocialUser | null>;\n\n  protected loadScript(\n    id: string,\n    src: string,\n    onload: any,\n    parentElement = null\n  ): void {\n    // get document if platform is only browser\n    if (typeof document !== 'undefined' && !document.getElementById(id)) {\n      let signInJS = document.createElement('script');\n\n      signInJS.async = true;\n      signInJS.src = src;\n      signInJS.onload = onload;\n\n      if (!parentElement) {\n        parentElement = document.head;\n      }\n\n      parentElement.appendChild(signInJS);\n    }\n  }\n}\n","export class SocialUser {\n  provider: string;\n  id: string;\n  email: string;\n  name: string;\n  photoUrl: string;\n  firstName: string;\n  lastName: string;\n  authToken: string;\n\n  idToken: string; // Reference https://developers.google.com/identity/sign-in/web/backend-auth\n  authorizationCode: string; // Reference https://developers.google.com/identity/sign-in/web/reference#googleauthgrantofflineaccessoptions\n\n  response: any;\n}\n","import { BaseLoginProvider } from '../entities/base-login-provider';\nimport { SocialUser } from '../entities/social-user';\nimport { EventEmitter } from '@angular/core';\nimport { BehaviorSubject, filter, skip, take } from 'rxjs';\n\nexport interface GoogleInitOptions {\n  /**\n   * enables the One Tap mechanism, and makes auto-login possible\n   */\n  oneTapEnabled?: boolean;\n  /**\n   * list of permission scopes to grant in case we request an access token\n   */\n  scopes?: string | string[];\n}\n\nconst defaultInitOptions: GoogleInitOptions = {\n  oneTapEnabled: true,\n};\n\nexport class GoogleLoginProvider extends BaseLoginProvider {\n  public static readonly PROVIDER_ID: string = 'GOOGLE';\n\n  public readonly changeUser = new EventEmitter<SocialUser | null>();\n\n  private readonly _socialUser = new BehaviorSubject<SocialUser | null>(null);\n  private readonly _accessToken = new BehaviorSubject<string | null>(null);\n  private readonly _receivedAccessToken = new EventEmitter<string>();\n  private _tokenClient: google.accounts.oauth2.TokenClient | undefined;\n\n  constructor(\n    private clientId: string,\n    private readonly initOptions?: GoogleInitOptions\n  ) {\n    super();\n\n    this.initOptions = { ...defaultInitOptions, ...this.initOptions };\n\n    // emit changeUser events but skip initial value from behaviorSubject\n    this._socialUser.pipe(skip(1)).subscribe(this.changeUser);\n\n    // emit receivedAccessToken but skip initial value from behaviorSubject\n    this._accessToken.pipe(skip(1)).subscribe(this._receivedAccessToken);\n  }\n\n  initialize(autoLogin?: boolean): Promise<void> {\n    return new Promise((resolve, reject) => {\n      try {\n        this.loadScript(\n          GoogleLoginProvider.PROVIDER_ID,\n          'https://accounts.google.com/gsi/client',\n          () => {\n            google.accounts.id.initialize({\n              client_id: this.clientId,\n              auto_select: autoLogin,\n              callback: ({ credential }) => {\n                const socialUser = this.createSocialUser(credential);\n                this._socialUser.next(socialUser);\n              },\n            });\n\n            if (this.initOptions.oneTapEnabled) {\n              this._socialUser\n                .pipe(filter((user) => user === null))\n                .subscribe(() => google.accounts.id.prompt(console.debug));\n            }\n\n            if (this.initOptions.scopes) {\n              const scope =\n                this.initOptions.scopes instanceof Array\n                  ? this.initOptions.scopes.filter((s) => s).join(' ')\n                  : this.initOptions.scopes;\n\n              this._tokenClient = google.accounts.oauth2.initTokenClient({\n                client_id: this.clientId,\n                scope,\n                callback: (tokenResponse) => {\n                  if (tokenResponse.error) {\n                    this._accessToken.error({\n                      code: tokenResponse.error,\n                      description: tokenResponse.error_description,\n                      uri: tokenResponse.error_uri,\n                    });\n                  } else {\n                    this._accessToken.next(tokenResponse.access_token);\n                  }\n                },\n              });\n            }\n\n            resolve();\n          }\n        );\n      } catch (err) {\n        reject(err);\n      }\n    });\n  }\n\n  getLoginStatus(): Promise<SocialUser> {\n    return new Promise((resolve, reject) => {\n      if (this._socialUser.value) {\n        resolve(this._socialUser.value);\n      } else {\n        reject(\n          `No user is currently logged in with ${GoogleLoginProvider.PROVIDER_ID}`\n        );\n      }\n    });\n  }\n\n  refreshToken(): Promise<SocialUser | null> {\n    return new Promise((resolve, reject) => {\n      google.accounts.id.revoke(this._socialUser.value.id, (response) => {\n        if (response.error) reject(response.error);\n        else resolve(this._socialUser.value);\n      });\n    });\n  }\n\n  getAccessToken(): Promise<string> {\n    return new Promise((resolve, reject) => {\n      if (!this._tokenClient) {\n        if (this._socialUser.value) {\n          reject(\n            'No token client was instantiated, you should specify some scopes.'\n          );\n        } else {\n          reject('You should be logged-in first.');\n        }\n      } else {\n        this._tokenClient.requestAccessToken({\n          hint: this._socialUser.value?.email,\n        });\n        this._receivedAccessToken.pipe(take(1)).subscribe(resolve);\n      }\n    });\n  }\n\n  revokeAccessToken(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (!this._tokenClient) {\n        reject(\n          'No token client was instantiated, you should specify some scopes.'\n        );\n      } else if (!this._accessToken.value) {\n        reject('No access token to revoke');\n      } else {\n        google.accounts.oauth2.revoke(this._accessToken.value, () => {\n          this._accessToken.next(null);\n          resolve();\n        });\n      }\n    });\n  }\n\n  signIn(): Promise<SocialUser> {\n    return Promise.reject(\n      'You should not call this method directly for Google, use \"<asl-google-signin-button>\" wrapper ' +\n        'or generate the button yourself with \"google.accounts.id.renderButton()\" ' +\n        '(https://developers.google.com/identity/gsi/web/guides/display-button#javascript)'\n    );\n  }\n\n  async signOut(): Promise<void> {\n    google.accounts.id.disableAutoSelect();\n    this._socialUser.next(null);\n  }\n\n  private createSocialUser(idToken: string) {\n    const user = new SocialUser();\n    user.idToken = idToken;\n    const payload = this.decodeJwt(idToken);\n    user.id = payload.sub;\n    user.name = payload.name;\n    user.email = payload.email;\n    user.photoUrl = payload.picture;\n    user.firstName = payload['given_name'];\n    user.lastName = payload['family_name'];\n    return user;\n  }\n\n  private decodeJwt(idToken: string): Record<string, string | undefined> {\n    return JSON.parse(window.atob(idToken.split('.')[1]));\n  }\n}\n","import { Inject, Injectable, Injector, NgZone, Type } from '@angular/core';\nimport { AsyncSubject, isObservable, Observable, ReplaySubject } from 'rxjs';\nimport { LoginProvider } from './entities/login-provider';\nimport { SocialUser } from './entities/social-user';\nimport { GoogleLoginProvider } from './providers/google-login-provider';\n\n/**\n * An interface to define the shape of the service configuration options.\n */\nexport interface SocialAuthServiceConfig {\n  autoLogin?: boolean;\n  providers: { id: string; provider: LoginProvider | Type<LoginProvider> }[];\n  onError?: (error: any) => any;\n}\n\n/**\n * The service encapsulating the social login functionality. Exposes methods like\n * `signIn`, `signOut`. Also, exposes an `authState` `Observable` that one can\n * subscribe to get the current logged in user information.\n *\n * @dynamic\n */\n@Injectable({ providedIn: 'root' })\nexport class SocialAuthService {\n  private static readonly ERR_LOGIN_PROVIDER_NOT_FOUND =\n    'Login provider not found';\n  private static readonly ERR_NOT_LOGGED_IN = 'Not logged in';\n  private static readonly ERR_NOT_INITIALIZED =\n    'Login providers not ready yet. Are there errors on your console?';\n  private static readonly ERR_NOT_SUPPORTED_FOR_REFRESH_TOKEN =\n    'Chosen login provider is not supported for refreshing a token';\n  private static readonly ERR_NOT_SUPPORTED_FOR_ACCESS_TOKEN =\n    'Chosen login provider is not supported for getting an access token';\n\n  private providers: Map<string, LoginProvider> = new Map();\n  private autoLogin = false;\n\n  private _user: SocialUser | null = null;\n  private _authState: ReplaySubject<SocialUser | null> = new ReplaySubject(1);\n\n  /* Consider making this an enum comprising LOADING, LOADED, FAILED etc. */\n  private initialized = false;\n  private _initState: AsyncSubject<boolean> = new AsyncSubject();\n\n  /** An `Observable` that one can subscribe to get the current logged in user information */\n  get authState(): Observable<SocialUser> {\n    return this._authState.asObservable();\n  }\n\n  /** An `Observable` to communicate the readiness of the service and associated login providers */\n  get initState(): Observable<boolean> {\n    return this._initState.asObservable();\n  }\n\n  /**\n   * @param config A `SocialAuthServiceConfig` object or a `Promise` that resolves to a `SocialAuthServiceConfig` object\n   */\n  constructor(\n    @Inject('SocialAuthServiceConfig')\n    config: SocialAuthServiceConfig | Promise<SocialAuthServiceConfig>,\n    private readonly _ngZone: NgZone,\n    private readonly _injector: Injector\n  ) {\n    if (config instanceof Promise) {\n      config.then((config: SocialAuthServiceConfig) => {\n        this.initialize(config);\n      });\n    } else {\n      this.initialize(config);\n    }\n  }\n\n  private initialize(config: SocialAuthServiceConfig) {\n    this.autoLogin = config.autoLogin !== undefined ? config.autoLogin : false;\n    const { onError = console.error } = config;\n\n    config.providers.forEach((item) => {\n      this.providers.set(\n        item.id,\n        'prototype' in item.provider\n          ? this._injector.get(item.provider)\n          : item.provider\n      );\n    });\n\n    Promise.all(\n      Array.from(this.providers.values()).map((provider) =>\n        provider.initialize(this.autoLogin)\n      )\n    )\n      .then(() => {\n        if (this.autoLogin) {\n          const loginStatusPromises = [];\n          let loggedIn = false;\n\n          this.providers.forEach((provider: LoginProvider, key: string) => {\n            const promise = provider.getLoginStatus();\n            loginStatusPromises.push(promise);\n            promise\n              .then((user: SocialUser) => {\n                this.setUser(user, key);\n                loggedIn = true;\n              })\n              .catch(console.debug);\n          });\n          Promise.all(loginStatusPromises).catch(() => {\n            if (!loggedIn) {\n              this._user = null;\n              this._authState.next(null);\n            }\n          });\n        }\n\n        this.providers.forEach((provider, key) => {\n          if (isObservable(provider.changeUser)) {\n            provider.changeUser.subscribe((user) => {\n              this._ngZone.run(() => {\n                this.setUser(user, key);\n              });\n            });\n          }\n        });\n      })\n      .catch((error) => {\n        onError(error);\n      })\n      .finally(() => {\n        this.initialized = true;\n        this._initState.next(this.initialized);\n        this._initState.complete();\n      });\n  }\n\n  async getAccessToken(providerId: string): Promise<string> {\n    const providerObject = this.providers.get(providerId);\n    if (!this.initialized) {\n      throw SocialAuthService.ERR_NOT_INITIALIZED;\n    } else if (!providerObject) {\n      throw SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND;\n    } else if (!(providerObject instanceof GoogleLoginProvider)) {\n      throw SocialAuthService.ERR_NOT_SUPPORTED_FOR_ACCESS_TOKEN;\n    }\n\n    return await providerObject.getAccessToken();\n  }\n\n  refreshAuthToken(providerId: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (!this.initialized) {\n        reject(SocialAuthService.ERR_NOT_INITIALIZED);\n      } else {\n        const providerObject = this.providers.get(providerId);\n        if (providerObject) {\n          if (typeof providerObject.refreshToken !== 'function') {\n            reject(SocialAuthService.ERR_NOT_SUPPORTED_FOR_REFRESH_TOKEN);\n          } else {\n            providerObject\n              .refreshToken()\n              .then((user) => {\n                this.setUser(user, providerId);\n                resolve();\n              })\n              .catch((err) => {\n                reject(err);\n              });\n          }\n        } else {\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\n        }\n      }\n    });\n  }\n\n  refreshAccessToken(providerId: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (!this.initialized) {\n        reject(SocialAuthService.ERR_NOT_INITIALIZED);\n      } else if (providerId !== GoogleLoginProvider.PROVIDER_ID) {\n        reject(SocialAuthService.ERR_NOT_SUPPORTED_FOR_REFRESH_TOKEN);\n      } else {\n        const providerObject = this.providers.get(providerId);\n        if (providerObject instanceof GoogleLoginProvider) {\n          providerObject.revokeAccessToken().then(resolve).catch(reject);\n        } else {\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\n        }\n      }\n    });\n  }\n\n  /**\n   * A method used to sign in a user with a specific `LoginProvider`.\n   *\n   * @param providerId Id with which the `LoginProvider` has been registered with the service\n   * @param signInOptions Optional `LoginProvider` specific arguments\n   * @returns A `Promise` that resolves to the authenticated user information\n   */\n  signIn(providerId: string, signInOptions?: any): Promise<SocialUser> {\n    return new Promise((resolve, reject) => {\n      if (!this.initialized) {\n        reject(SocialAuthService.ERR_NOT_INITIALIZED);\n      } else {\n        let providerObject = this.providers.get(providerId);\n        if (providerObject) {\n          providerObject\n            .signIn(signInOptions)\n            .then((user: SocialUser) => {\n              this.setUser(user, providerId);\n              resolve(user);\n            })\n            .catch((err) => {\n              reject(err);\n            });\n        } else {\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\n        }\n      }\n    });\n  }\n\n  /**\n   * A method used to sign out the currently loggen in user.\n   *\n   * @param revoke Optional parameter to specify whether a hard sign out is to be performed\n   * @returns A `Promise` that resolves if the operation is successful, rejects otherwise\n   */\n  signOut(revoke: boolean = false): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (!this.initialized) {\n        reject(SocialAuthService.ERR_NOT_INITIALIZED);\n      } else if (!this._user) {\n        reject(SocialAuthService.ERR_NOT_LOGGED_IN);\n      } else {\n        let providerId = this._user.provider;\n        let providerObject = this.providers.get(providerId);\n        if (providerObject) {\n          providerObject\n            .signOut(revoke)\n            .then(() => {\n              resolve();\n              this.setUser(null);\n            })\n            .catch((err) => {\n              reject(err);\n            });\n        } else {\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\n        }\n      }\n    });\n  }\n\n  private setUser(user: SocialUser | null, id?: string) {\n    if (user && id) user.provider = id;\n    this._user = user;\n    this._authState.next(user);\n  }\n}\n","import { Directive, ElementRef} from '@angular/core';\nimport { take } from 'rxjs';\nimport { SocialAuthService } from '../socialauth.service';\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'asl-google-signin-button',\n})\nexport class GoogleSigninButtonDirective {\n  constructor(\n    el: ElementRef,\n    socialAuthService: SocialAuthService\n  ) {\n    socialAuthService.initState.pipe(take(1)).subscribe(() => {\n      google.accounts.id.renderButton(el.nativeElement, {\n        type: 'standard',\n        shape: \"pill\",\n        theme:\"outline\",\n        text:\"signin_with\",\n        size:\"large\",\n        logo_alignment:\"left\",\n        width:\"300\"\n      });\n    })\n  }\n}\n","import {\n  NgModule,\n  Optional,\n  SkipSelf,\n  ModuleWithProviders\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SocialAuthService, SocialAuthServiceConfig } from './socialauth.service';\nimport { GoogleSigninButtonDirective } from './directives/google-signin-button.directive';\n\n/**\n * The main module of angularx-social-login library.\n */\n@NgModule({\n  declarations: [GoogleSigninButtonDirective],\n  imports: [\n    CommonModule\n  ],\n  providers: [\n    SocialAuthService\n  ],\n  exports: [GoogleSigninButtonDirective]\n})\nexport class SocialLoginModule {\n  public static initialize(config: SocialAuthServiceConfig): ModuleWithProviders<SocialLoginModule> {\n    return {\n      ngModule: SocialLoginModule,\n      providers: [\n        SocialAuthService,\n        {\n          provide: 'SocialAuthServiceConfig',\n          useValue: config\n        }\n      ]\n    };\n  }\n\n  constructor(@Optional() @SkipSelf() parentModule: SocialLoginModule) {\n    if (parentModule) {\n      throw new Error(\n        'SocialLoginModule is already loaded. Import it in the AppModule only');\n    }\n  }\n}\n","import { BaseLoginProvider } from '../entities/base-login-provider';\nimport { SocialUser } from '../entities/social-user';\n\n// Simulates login / logout without actually requiring an Internet connection.\n//\n// Useful for certain development situations.\n//\n// For example, if you want to simulate the greatest football referee England has ever produced:\n//\n//  const dummyUser: SocialUser = {\n//     id: '0123456789',\n//     name: 'Howard Webb',\n//     email: 'howard@webb.com',\n//     firstName: 'Howard',\n//     lastName: 'Webb',\n//     authToken: 'dummyAuthToken',\n//     photoUrl: 'https://en.wikipedia.org/wiki/Howard_Webb#/media/File:Howard_Webb_march11.jpg',\n//     provider: 'DUMMY',\n//     idToken: 'dummyIdToken',\n//     authorizationCode: 'dummyAuthCode'\n// };\n//\n//  let config = new AuthServiceConfig([\n//  { ... },\n//  {\n//       id: DummyLoginProvider.PROVIDER_ID,\n//       provider: new DummyLoginProvider(dummyUser)  // Pass your user into the constructor\n//   },\n//  { ... }\n//  ]);\n\nexport class DummyLoginProvider extends BaseLoginProvider {\n  public static readonly PROVIDER_ID: string = 'DUMMY';\n\n  static readonly DEFAULT_USER = {\n    id: '1234567890',\n    name: 'Mickey Mouse',\n    email: 'mickey@mouse.com',\n    firstName: 'Mickey',\n    lastName: 'Mouse',\n    authToken: 'dummyAuthToken',\n    photoUrl: 'https://en.wikipedia.org/wiki/File:Mickey_Mouse.png',\n    provider: 'DUMMY',\n    idToken: 'dummyIdToken',\n    authorizationCode: 'dummyAuthCode',\n    response: {},\n  };\n\n  private dummy: SocialUser;\n\n  private loggedIn: boolean;\n\n  constructor(dummy?: SocialUser) {\n    super();\n    if (dummy) {\n      this.dummy = dummy;\n    } else {\n      this.dummy = DummyLoginProvider.DEFAULT_USER;\n    }\n\n    // Start not logged in\n    this.loggedIn = false;\n  }\n\n  getLoginStatus(): Promise<SocialUser> {\n    return new Promise((resolve, reject) => {\n      if (this.loggedIn) {\n        resolve(this.dummy);\n      } else {\n        reject('No user is currently logged in.');\n      }\n    });\n  }\n\n  initialize(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      resolve();\n    });\n  }\n\n  signIn(): Promise<SocialUser> {\n    return new Promise((resolve, reject) => {\n      this.loggedIn = true;\n      resolve(this.dummy);\n    });\n  }\n\n  signOut(revoke?: boolean): Promise<void> {\n    return new Promise((resolve, reject) => {\n      this.loggedIn = false;\n      resolve();\n    });\n  }\n}\n","import { BaseLoginProvider } from '../entities/base-login-provider';\nimport { SocialUser } from '../entities/social-user';\n\ndeclare let FB: any;\n\nexport class FacebookLoginProvider extends BaseLoginProvider {\n  public static readonly PROVIDER_ID: string = 'FACEBOOK';\n\n  private requestOptions = {\n    scope: 'email,public_profile',\n    locale: 'en_US',\n    fields: 'name,email,picture,first_name,last_name',\n    version: 'v10.0',\n  };\n\n  constructor(private clientId: string, initOptions: Object = {}) {\n    super();\n\n    this.requestOptions = {\n      ...this.requestOptions,\n      ...initOptions,\n    };\n  }\n\n  initialize(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      try {\n        this.loadScript(\n          FacebookLoginProvider.PROVIDER_ID,\n          `//connect.facebook.net/${this.requestOptions.locale}/sdk.js`,\n          () => {\n            FB.init({\n              appId: this.clientId,\n              autoLogAppEvents: true,\n              cookie: true,\n              xfbml: true,\n              version: this.requestOptions.version,\n            });\n\n            resolve();\n          }\n        );\n      } catch (err) {\n        reject(err);\n      }\n    });\n  }\n\n  getLoginStatus(): Promise<SocialUser> {\n    return new Promise((resolve, reject) => {\n      FB.getLoginStatus((response: any) => {\n        if (response.status === 'connected') {\n          let authResponse = response.authResponse;\n          FB.api(`/me?fields=${this.requestOptions.fields}`, (fbUser: any) => {\n            let user: SocialUser = new SocialUser();\n\n            user.id = fbUser.id;\n            user.name = fbUser.name;\n            user.email = fbUser.email;\n            user.photoUrl =\n              'https://graph.facebook.com/' +\n              fbUser.id +\n              '/picture?type=normal&access_token=' +\n              authResponse.accessToken;\n            user.firstName = fbUser.first_name;\n            user.lastName = fbUser.last_name;\n            user.authToken = authResponse.accessToken;\n\n            user.response = fbUser;\n\n            resolve(user);\n          });\n        } else {\n          reject(\n            `No user is currently logged in with ${FacebookLoginProvider.PROVIDER_ID}`\n          );\n        }\n      });\n    });\n  }\n\n  signIn(signInOptions?: any): Promise<SocialUser> {\n    const options = { ...this.requestOptions, ...signInOptions };\n    return new Promise((resolve, reject) => {\n      FB.login((response: any) => {\n        if (response.authResponse) {\n          let authResponse = response.authResponse;\n          FB.api(`/me?fields=${options.fields}`, (fbUser: any) => {\n            let user: SocialUser = new SocialUser();\n\n            user.id = fbUser.id;\n            user.name = fbUser.name;\n            user.email = fbUser.email;\n            user.photoUrl =\n              'https://graph.facebook.com/' +\n              fbUser.id +\n              '/picture?type=normal';\n            user.firstName = fbUser.first_name;\n            user.lastName = fbUser.last_name;\n            user.authToken = authResponse.accessToken;\n\n            user.response = fbUser;\n\n            resolve(user);\n          });\n        } else {\n          reject('User cancelled login or did not fully authorize.');\n        }\n      }, options);\n    });\n  }\n\n  signOut(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      FB.logout((response: any) => {\n        resolve();\n      });\n    });\n  }\n}\n","import { BaseLoginProvider } from '../entities/base-login-provider';\nimport { SocialUser } from '../entities/social-user';\n\ndeclare let amazon: any, window: any;\n\nexport class AmazonLoginProvider extends BaseLoginProvider {\n  public static readonly PROVIDER_ID: string = 'AMAZON';\n\n  constructor(\n    private clientId: string,\n    private initOptions: any = {\n      scope: 'profile',\n      scope_data: {\n        profile: { essential: false },\n      },\n      redirect_uri: location.origin,\n    }\n  ) {\n    super();\n  }\n\n  initialize(): Promise<void> {\n    let amazonRoot = null;\n    if (document) {\n      amazonRoot = document.createElement('div');\n      amazonRoot.id = 'amazon-root';\n      document.body.appendChild(amazonRoot);\n    }\n\n    window.onAmazonLoginReady = () => {\n      amazon.Login.setClientId(this.clientId);\n    };\n\n    return new Promise((resolve, reject) => {\n      try {\n        this.loadScript(\n          'amazon-login-sdk',\n          'https://assets.loginwithamazon.com/sdk/na/login1.js',\n          () => {\n            resolve();\n          },\n          amazonRoot\n        );\n      } catch (err) {\n        reject(err);\n      }\n    });\n  }\n\n  getLoginStatus(): Promise<SocialUser> {\n    return new Promise((resolve, reject) => {\n      let token = this.retrieveToken();\n\n      if (token) {\n        amazon.Login.retrieveProfile(token, (response) => {\n          if (response.success) {\n            let user: SocialUser = new SocialUser();\n\n            user.id = response.profile.CustomerId;\n            user.name = response.profile.Name;\n            user.email = response.profile.PrimaryEmail;\n            user.response = response.profile;\n\n            resolve(user);\n          } else {\n            reject(response.error);\n          }\n        });\n      } else {\n        reject(`No user is currently logged in with ${AmazonLoginProvider.PROVIDER_ID}`);\n      }\n    });\n  }\n\n  signIn(signInOptions?: any): Promise<SocialUser> {\n    const options = { ...this.initOptions, ...signInOptions };\n    return new Promise((resolve, reject) => {\n      amazon.Login.authorize(options, (authResponse) => {\n        if (authResponse.error) {\n          reject(authResponse.error);\n        } else {\n          amazon.Login.retrieveProfile(\n            authResponse.access_token,\n            (response) => {\n              let user: SocialUser = new SocialUser();\n\n              user.id = response.profile.CustomerId;\n              user.name = response.profile.Name;\n              user.email = response.profile.PrimaryEmail;\n              user.authToken = authResponse.access_token;\n              user.response = response.profile;\n\n              this.persistToken(authResponse.access_token);\n\n              resolve(user);\n            }\n          );\n        }\n      });\n    });\n  }\n\n  signOut(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      try {\n        amazon.Login.logout();\n\n        this.clearToken();\n        resolve();\n      } catch (err) {\n        reject(err.message);\n      }\n    });\n  }\n\n  private persistToken(token: string): void {\n    localStorage.setItem(`${AmazonLoginProvider.PROVIDER_ID}_token`, token);\n  }\n\n  private retrieveToken(): string {\n    return localStorage.getItem(`${AmazonLoginProvider.PROVIDER_ID}_token`);\n  }\n\n  private clearToken(): void {\n    localStorage.removeItem(`${AmazonLoginProvider.PROVIDER_ID}_token`);\n  }\n}\n","import { BaseLoginProvider } from '../entities/base-login-provider';\nimport { SocialUser } from '../entities/social-user';\n\ndeclare let VK: any;\n\nexport class VKLoginProvider extends BaseLoginProvider {\n  constructor(\n    private clientId: string,\n    private initOptions: any = {\n      fields: 'photo_max,contacts',\n      version: '5.124',\n    }\n  ) {\n    super();\n  }\n\n  public static readonly PROVIDER_ID: string = 'VK';\n\n  private readonly VK_API_URL = '//vk.com/js/api/openapi.js';\n  private readonly VK_API_GET_USER = 'users.get';\n\n  initialize(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      try {\n        this.loadScript(\n          VKLoginProvider.PROVIDER_ID,\n          this.VK_API_URL,\n          () => {\n            VK.init({\n              apiId: this.clientId,\n            });\n\n            resolve();\n          }\n        );\n      } catch (err) {\n        reject(err);\n      }\n    });\n  }\n\n  getLoginStatus(): Promise<SocialUser> {\n    return new Promise<SocialUser>((resolve: any, reject: any) =>\n      this.getLoginStatusInternal(resolve, reject)\n    );\n  }\n\n  signIn(): Promise<SocialUser> {\n    return new Promise<SocialUser>((resolve: any, reject: any) =>\n      this.signInInternal(resolve, reject)\n    );\n  }\n\n  signOut(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      VK.Auth.logout((response: any) => {\n        resolve();\n      });\n    });\n  }\n\n  private signInInternal(resolve: any, reject: any) {\n    VK.Auth.login((loginResponse: any) => {\n      if (loginResponse.status === 'connected') {\n        this.getUser(\n          loginResponse.session.mid,\n          loginResponse.session.sid,\n          resolve\n        );\n      }\n    });\n  }\n\n  private getUser(userId: any, token: any, resolve: any) {\n    VK.Api.call(\n      this.VK_API_GET_USER,\n      {\n        user_id: userId,\n        fields: this.initOptions.fields,\n        v: this.initOptions.version,\n      },\n      (userResponse: any) => {\n        resolve(\n          this.createUser(\n            Object.assign({}, { token }, userResponse.response[0])\n          )\n        );\n      }\n    );\n  }\n\n  private getLoginStatusInternal(resolve: any, reject: any) {\n    VK.Auth.getLoginStatus((loginResponse: any) => {\n      if (loginResponse.status === 'connected') {\n        this.getUser(\n          loginResponse.session.mid,\n          loginResponse.session.sid,\n          resolve\n        );\n      }\n    });\n  }\n\n  private createUser(response: any): SocialUser {\n    const user: SocialUser = new SocialUser();\n    user.id = response.id;\n    user.name = `${response.first_name} ${response.last_name}`;\n    user.photoUrl = response.photo_max;\n    user.authToken = response.token;\n    return user;\n  }\n}\n","import { BaseLoginProvider } from '../entities/base-login-provider';\nimport { SocialUser } from '../entities/social-user';\n\n/**\n * Protocol modes supported by MSAL.\n */\nexport enum ProtocolMode {\n  AAD = 'AAD',\n  OIDC = 'OIDC'\n}\n\n/**\n * Initialization Options for Microsoft Provider: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/initialization.md\n * Details (not all options are supported): https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\n */\nexport type MicrosoftOptions = {\n  redirect_uri?: string,\n  logout_redirect_uri?: string,\n  authority?: string,\n  knownAuthorities?: string[],\n  protocolMode?: ProtocolMode,\n  clientCapabilities?: string[],\n  cacheLocation?: string,\n  scopes?: string[],\n  prompt?: string,\n};\n\n// Collection of internal MSAL interfaces from: https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser/src\n\ninterface MSALAccount {\n  environment: string;\n  homeAccountId: string;\n  tenantId: string;\n  username: string;\n}\n\ninterface MSGraphUserInfo {\n  businessPhones: string[];\n  displayName: string;\n  givenName: string;\n  id: string;\n  jobTitle: string;\n  mail: string;\n  mobilePhone: string;\n  officeLocation: string;\n  preferredLanguage: string;\n  surname: string;\n  userPrincipalName: string;\n}\n\ninterface MSALLoginRequest {\n  scopes?: string[];\n  sid?: string;\n  loginHint?: string;\n  domainHint?: string;\n  prompt?: string;\n}\n\ninterface MSALLoginResponse {\n  accessToken: string;\n  account: MSALAccount;\n  expiresOn: Date;\n  extExpiresOn: Date;\n  familyId: string;\n  fromCache: boolean;\n  idToken: string;\n  idTokenClaims: any;\n  scopes: string[];\n  state: string;\n  tenantId: string;\n  uniqueId: string;\n}\n\ninterface MSALLogoutRequest {\n  account?: MSALAccount;\n  postLogoutRedirectUri?: string;\n  authority?: string;\n  correlationId?: string;\n}\n\ninterface MSALClientApplication {\n  getAllAccounts(): MSALAccount[];\n  logoutPopup(logoutRequest?: MSALLogoutRequest): Promise<void>;\n  loginPopup(loginRequest: MSALLoginRequest): Promise<MSALLoginResponse>;\n  ssoSilent(loginRequest: MSALLoginRequest): Promise<MSALLoginResponse>;\n  acquireTokenSilent(loginRequest: MSALLoginRequest): Promise<MSALLoginResponse>;\n  getAccountByHomeId(homeAccountId: string): MSALAccount;\n}\n\ndeclare let msal: any;\n\nconst COMMON_AUTHORITY: string = 'https://login.microsoftonline.com/common/';\n\n/**\n * Microsoft Authentication using MSAL v2: https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser\n */\nexport class MicrosoftLoginProvider extends BaseLoginProvider {\n  private _instance: MSALClientApplication;\n  public static readonly PROVIDER_ID: string = 'MICROSOFT';\n\n  private initOptions: MicrosoftOptions = {\n    authority: COMMON_AUTHORITY,\n    scopes: ['openid', 'email', 'profile', 'User.Read'],\n    knownAuthorities: [],\n    protocolMode: ProtocolMode.AAD,\n    clientCapabilities: [],\n    cacheLocation: 'sessionStorage'\n  };\n\n  constructor(\n    private clientId: string,\n    initOptions?: MicrosoftOptions\n  ) {\n    super();\n\n    this.initOptions = {\n      ...this.initOptions,\n      ...initOptions\n    };\n  }\n\n  initialize(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      this.loadScript(\n        MicrosoftLoginProvider.PROVIDER_ID,\n        'https://alcdn.msauth.net/browser/2.13.1/js/msal-browser.min.js',\n        () => {\n          try {\n            const config = {\n              auth: {\n                clientId: this.clientId,\n                redirectUri: this.initOptions.redirect_uri ?? location.origin,\n                authority: this.initOptions.authority,\n                knownAuthorities: this.initOptions.knownAuthorities,\n                protocolMode: this.initOptions.protocolMode,\n                clientCapabilities: this.initOptions.clientCapabilities\n              },\n              cache: !this.initOptions.cacheLocation ? null : {\n                cacheLocation: this.initOptions.cacheLocation\n              }\n            };\n\n            this._instance = new msal.PublicClientApplication(config);\n            resolve();\n          } catch (e) {\n            reject(e);\n          }\n        }\n      );\n    });\n  }\n\n  private getSocialUser(loginResponse): Promise<SocialUser> {\n    return new Promise<SocialUser>((resolve, reject) => {\n      //After login, use Microsoft Graph API to get user info\n      let meRequest = new XMLHttpRequest();\n      meRequest.onreadystatechange = () => {\n        if (meRequest.readyState == 4) {\n          try {\n            if (meRequest.status == 200) {\n              let userInfo = <MSGraphUserInfo>JSON.parse(meRequest.responseText);\n\n              let user: SocialUser = new SocialUser();\n              user.provider = MicrosoftLoginProvider.PROVIDER_ID;\n              user.id = loginResponse.idToken;\n              user.authToken = loginResponse.accessToken;\n              user.name = loginResponse.idTokenClaims.name;\n              user.email = loginResponse.account.username;\n              user.idToken = loginResponse.idToken;\n              user.response = loginResponse;\n              user.firstName = userInfo.givenName;\n              user.lastName = userInfo.surname;\n\n              resolve(user);\n            } else {\n              reject(`Error retrieving user info: ${meRequest.status}`);\n            }\n          } catch (err) {\n            reject(err);\n          }\n        }\n      };\n\n      //Microsoft Graph ME Endpoint: https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http\n      meRequest.open('GET', 'https://graph.microsoft.com/v1.0/me');\n      meRequest.setRequestHeader('Authorization', `Bearer ${loginResponse.accessToken}`);\n      try {\n        meRequest.send();\n      } catch (err) {\n        reject(err);\n      }\n    });\n  }\n\n  async getLoginStatus(): Promise<SocialUser> {\n    const accounts = this._instance.getAllAccounts();\n    if (accounts?.length > 0) {\n      const loginResponse = await this._instance.ssoSilent({\n        scopes: this.initOptions.scopes,\n        loginHint: accounts[0].username\n      });\n      return await this.getSocialUser(loginResponse);\n    } else {\n      throw `No user is currently logged in with ${MicrosoftLoginProvider.PROVIDER_ID}`;\n    }\n  }\n\n  async signIn(): Promise<SocialUser> {\n    const loginResponse = await this._instance.loginPopup({\n      scopes: this.initOptions.scopes,\n      prompt: this.initOptions.prompt,\n    });\n    return await this.getSocialUser(loginResponse);\n  }\n\n  async signOut(revoke?: boolean): Promise<void> {\n    const accounts = this._instance.getAllAccounts();\n    if (accounts?.length > 0) {\n      await this._instance.logoutPopup({\n        account: accounts[0],\n        postLogoutRedirectUri: this.initOptions.logout_redirect_uri ?? this.initOptions.redirect_uri ?? location.href\n      })\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SocialAuthService"],"mappings":"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"}