{"version":3,"file":"vipstorage-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/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/directives/google-signin-button.directive.ts","../../../projects/lib/src/directives/google-signin-button.module.ts","../../../projects/lib/src/vipstorage-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, map, ReplaySubject } from 'rxjs';\nimport { filter, skip, take } from 'rxjs/operators';\n\nexport interface GoogleInitOptions {\n  /**\n   * enables the One Tap mechanism, and makes auto-login possible\n   */\n  oneTapEnabled?: boolean;\n\n  /**\n   * Allow the browser to control user sign-in prompts and mediate the\n   * sign-in flow between your website and Google. Defaults to false.\n   */\n  useFedCMForPrompt?: boolean;\n\n  /**\n   * list of permission scopes to grant in case we request an access token\n   */\n  scopes?: string | string[];\n\n  /**\n   * Optional, defaults to 'select_account'.\n   * A space-delimited, case-sensitive list of prompts to present the\n   * user.\n   * Possible values are:\n   * empty string The user will be prompted only the first time your\n   *     app requests access. Cannot be specified with other values.\n   * 'none' Do not display any authentication or consent screens. Must\n   *     not be specified with other values.\n   * 'consent' Prompt the user for consent.\n   * 'select_account' Prompt the user to select an account.\n   */\n  prompt? : '' | 'none' | 'consent' | 'select_account';\n\n  /**\n   * Optional, defaults to 'popup'\n   * UX mode specified by Google, if using 'redirect' you must have a backend server setup to handle the request\n   * Possible values are:\n   * popup - Show the login form in a popup window\n   * redirect - Show the login form in the same window\n   */\n  uxMode?: 'popup' | 'redirect'\n\n  /**\n   * Sets the title and message in the One Tap prompt\n   * Available contexts:\n   *   signin \"Sign in with Google\"\n   *   signup \"Sign up with Google\"\n   *   use    \"Use with Google\"\n   */\n  context?: 'signin' | 'signup' | 'use';\n\n  /**\n   * The URL of your login endpoint.\n   * Defaults to the URI of the current page, or the value you\n   * specify.\n   * Only used when ux_mode: \"redirect\" is set.\n   */\n  loginURI?: string;\n\n  /**\n   * Optional.\n   * If your application knows which user should authorize the\n   * request, it can use this property to provide a hint to Google.\n   * The email address for the target user. For more information, see\n   * the login_hint field in the OpenID Connect docs.\n   */\n  hint?: string;\n\n  /**\n   * Optional.\n   * If your application knows the Workspace domain the user belongs\n   * to, use this to provide a hint to Google. For more information,\n   * see the hd field in the OpenID Connect docs.\n   */\n  hostedDomain?: string;\n\n  /**\n   * Cancels the prompt if the user clicks outside the prompt.\n   * Default value is true.\n   */\n  cancelOnTapOutside?: boolean;\n\n  /**\n   * If you need to call One Tap in the parent domain and its\n   * subdomains, pass the parent domain to this field so that a single\n   * shared cookie is used.\n   */\n  stateCookieDomain?: string;\n\n  /**\n   * The origins that are allowed to embed the intermediate iframe.\n   * One Tap will run in the intermediate iframe mode if this field\n   * presents.\n   */\n  allowedParentOrigin?: string | string[];\n\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 tokenClientError = new EventEmitter<any>();\n  public readonly changeUser = new EventEmitter<SocialUser | null>();\n\n  private readonly _initialized = new ReplaySubject<boolean>();\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              itp_support: this.initOptions.oneTapEnabled,\n              ux_mode: this.initOptions.uxMode || 'popup',\n              context: this.initOptions.context || 'use',\n              login_uri: this.initOptions.loginURI,\n              cancel_on_tap_outside: this.initOptions.cancelOnTapOutside,\n              state_cookie_domain: this.initOptions.stateCookieDomain,\n              allowed_parent_origin: this.initOptions.allowedParentOrigin,\n              use_fedcm_for_prompt: this.initOptions.useFedCMForPrompt,\n            });\n\n            this._initialized.next(true);\n\n            if (this.initOptions.oneTapEnabled) {\n              this._socialUser\n                .pipe(filter((user) => user === null))\n                .subscribe(() => google.accounts.id.prompt());\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\n              this._tokenClient = google.accounts.oauth2.initTokenClient({\n                client_id: this.clientId,\n                scope,\n                hint: this.initOptions.hint,\n                hosted_domain: this.initOptions.hostedDomain,\n                prompt : this.initOptions.prompt,\n                error_callback: (error) => {\n                  this.tokenClientError.emit(error);\n                },\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(accessToken?: string): 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 && !accessToken) {\n        reject('No access token to revoke');\n      } else {\n        google.accounts.oauth2.revoke(this._accessToken.value || accessToken, () => {\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  dismissPrompt() {\n    return this._initialized.pipe(\n      map(() => {\n        return google.accounts.id.cancel();\n      })\n    )\n  }\n\n  setSocialUser(user: SocialUser | string) {\n    if (typeof user === 'string') {\n      const socialUser = this.createSocialUser(user);\n      this._socialUser.next(socialUser);\n    } else\n      this._socialUser.next(user);\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    const base64Url = idToken.split(\".\")[1];\n    const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    const jsonPayload = decodeURIComponent(\n      window.atob(base64)\n        .split(\"\")\n        .map(function (c) {\n          return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n        })\n        .join(\"\")\n    );\n    return JSON.parse(jsonPayload);\n  }\n}\n","import { Inject, Injectable, Injector, NgZone, Type } from '@angular/core';\nimport {AsyncSubject, firstValueFrom, 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  onProviderError?: (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  private static readonly ERR_NOT_SUPPORTED_FOR_DISMISSING_PROMPT =\n    'Chosen login provider is not supported for dismissing a prompt';\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   * @param _ngZone\n   * @param _injector\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\n  /**\n   * Dismisses the authentication prompt for a specific provider.\n   *\n   * @param {string} providerId - The ID of the provider.\n   * @return {Promise} - A Promise that resolves if the prompt is successfully dismissed, and rejects with an error if it fails.\n   *\n   * @throws {ERR_NOT_INITIALIZED} - If the SocialAuthService is not initialized.\n   * @throws {ERR_NOT_SUPPORTED_FOR_DISMISSING_PROMPT} - If the provider is not supported for dismissing the prompt.\n   * @throws {ERR_LOGIN_PROVIDER_NOT_FOUND} - If the login provider is not found.\n   */\n  dismissAuthPrompt(providerId: string): Promise<void> {\n    return new Promise((resolve, reject) => {\n      if (providerId !== GoogleLoginProvider.PROVIDER_ID) {\n        reject(SocialAuthService.ERR_NOT_SUPPORTED_FOR_DISMISSING_PROMPT);\n      } else {\n        const providerObject = this.providers.get(providerId);\n        if (providerObject instanceof GoogleLoginProvider) {\n          providerObject.dismissPrompt().subscribe(() => {\n            resolve();\n          });\n        } else {\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\n        }\n      }\n    });\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, existingToken?: 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(existingToken).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 handle provider errors\n   * @param providerId\n   */\n  handleProviderErrors(providerId: string): Observable<any> {\n    return new Observable(subscriber => {\n      const providerObject = this.providers.get(providerId);\n      if (providerObject instanceof GoogleLoginProvider) {\n        providerObject.tokenClientError.subscribe(subscriber);\n      } else {\n       subscriber.error(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\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  /**\n   * Manually set the SocialUser which is useful if you're managing tokens outside of this library\n   * Warning: only implemented for Google right now\n   *\n   * @param user - SocialUser or ID token\n   * @param providerId – ID with which the LoginProvider has been registered with the service\n   * @returns A `Promise` that resolves if the operation is successful, rejects otherwise\n   */\n  setUser(user: SocialUser | string, providerId: string): Promise<void> {\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 instanceof GoogleLoginProvider) {\n          providerObject.setSocialUser(user);\n          resolve();\n        } else {\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\n        }\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 {\n  NgModule,\n  Optional,\n  SkipSelf,\n  ModuleWithProviders,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport {\n  SocialAuthService,\n  SocialAuthServiceConfig,\n} from './socialauth.service';\n\n/**\n * The main module of angularx-social-login library.\n */\n@NgModule({\n  imports: [CommonModule],\n  providers: [SocialAuthService],\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\nconst permissionTypes = {\n  notify: 1,\n  friends: 2,\n  photos: 4,\n  audio: 8,\n  video: 16,\n  offers: 32,\n  questions: 64,\n  pages: 128,\n  links: 256,\n  status: 1024,\n  notes: 2048,\n  messages: 4096,\n  wall: 8192,\n  ads: 32768,\n  offline: 65536, \n  docs: 131072,\n  groups: 262144,\n  notifications: 524288,\n  stats: 1048576,\n  email: 4194304,\n  market: 134217728\n};\n\nexport class VKLoginProvider extends BaseLoginProvider {\n  constructor(\n    private clientId: string,\n    private initOptions = {\n      fields: 'photo_max,contacts',\n      version: '5.131',\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: (value: SocialUser) => void) =>\n      this.getLoginStatusInternal(resolve)\n    );\n  }\n\n  signIn(permissions: string[]): Promise<SocialUser> {\n    if (permissions?.includes('offers')) {\n      console.warn('The \"offers\" permission is outdated.');\n    }\n\n    if (permissions?.includes('questions')) {\n      console.warn('The \"questions\" permission is outdated.');\n    }\n\n    if (permissions?.includes('messages')) {\n      console.warn('The \"messages\" permission is unavailable for non-standalone applications.');\n    }\n\n    const scope = permissions?.reduce((accumulator, current) => {\n        const index = Object.keys(permissionTypes).findIndex(pt => pt === current);\n        return index > -1 ? accumulator + permissionTypes[current] : 0;\n      }, 0);\n\n    return new Promise<SocialUser>((resolve: (value: SocialUser) => void) =>\n      this.signInInternal(resolve, scope)\n    );\n  }\n\n  signOut(): Promise<void> {\n    return new Promise((resolve: (value: void | PromiseLike<void>) => void) => {\n      VK.Auth.logout(() => {\n        resolve();\n      });\n    });\n  }\n\n  private signInInternal(\n    resolve: (value: SocialUser) => void, \n    scope:any\n  ) {\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    }, scope);\n  }\n\n  private getUser(\n    userId: number, \n    token: string, \n    resolve: (value: SocialUser) => void\n  ) {\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: (value: SocialUser) => void) {\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","import { Directive, ElementRef, Input } from '@angular/core';\nimport { take } from 'rxjs/operators';\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  @Input()\n  type: 'icon' | 'standard' = 'icon';\n\n  @Input()\n  size: 'small' | 'medium' | 'large' = 'medium';\n\n  @Input()\n  text: 'signin_with' | 'signup_with' | 'continue_with' = 'signin_with';\n\n  @Input()\n  shape: 'square' | 'circle' | 'pill' | 'rectangular' = 'rectangular';\n\n  @Input()\n  theme: 'outline' | 'filled_blue' | 'filled_black' = 'outline';\n\n  @Input()\n  logo_alignment: 'left' | 'center' = 'left';\n\n  @Input()\n  width: number = 0;\n\n  @Input()\n  locale: string = '';\n\n  constructor(el: ElementRef, socialAuthService: SocialAuthService) {\n    socialAuthService.initState.pipe(take(1)).subscribe(() => {\n      Promise.resolve(this.width).then((value) => {\n        if (value > 400 || (value < 200 && value != 0)) {\n          Promise.reject(\n            'Please note .. max-width 400 , min-width 200 ' +\n              '(https://developers.google.com/identity/gsi/web/tools/configurator)'\n          );\n        } else {\n          google.accounts.id.renderButton(el.nativeElement, {\n            type: this.type,\n            size: this.size,\n            text: this.text,\n            width: parseInt(`${this.width}`),\n            shape: this.shape,\n            theme: this.theme,\n            logo_alignment: this.logo_alignment,\n            locale: this.locale,\n          });\n        }\n      });\n    });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { GoogleSigninButtonDirective } from './google-signin-button.directive';\n\n@NgModule({\n  declarations: [GoogleSigninButtonDirective],\n  exports: [GoogleSigninButtonDirective],\n})\nexport class GoogleSigninButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SocialAuthService"],"mappings":"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"}