{"version":3,"file":"ngx-addons-omni-auth-cognito.mjs","sources":["../../../projects/omni-auth-cognito/src/cognito-auth-state.ts","../../../projects/omni-auth-cognito/src/configure-auth-cognito-connector.ts","../../../projects/omni-auth-cognito/src/auth-aws-cognito.service.ts","../../../projects/omni-auth-cognito/src/ngx-addons-omni-auth-cognito.ts"],"sourcesContent":["import {\n  AuthState,\n  OmniAuthError,\n  TokenProxy,\n} from '@ngx-addons/omni-auth-core';\n\nexport class CognitoAuthState implements AuthState {\n  constructor(\n    public state: 'unknown' | 'authenticated' | 'unauthenticated' | 'error',\n    public user?: {\n      displayName: string;\n      email?: string;\n      fullName?: string;\n      phone?: string;\n      verified: boolean;\n    },\n    public tokens?: TokenProxy,\n    public error?: OmniAuthError,\n  ) {}\n\n  static fromError(error: OmniAuthError) {\n    return new CognitoAuthState('error', undefined, undefined, error);\n  }\n\n  static fromAuthenticated(\n    user: {\n      displayName: string;\n      email?: string;\n      fullName?: string;\n      phone?: string;\n      verified: boolean;\n    },\n    tokens: TokenProxy,\n  ) {\n    return new CognitoAuthState('authenticated', user, tokens);\n  }\n\n  static unknown() {\n    return new CognitoAuthState('unknown');\n  }\n\n  static fromUnauthenticated() {\n    return new CognitoAuthState('unauthenticated');\n  }\n}\n","import {InjectionToken, Provider} from '@angular/core';\nimport {Amplify} from 'aws-amplify';\n\nexport type AuthCognitoConfig = {\n  /**\n   * Cognito configuration, add oauth configuration if you want to use oauth providers.\n   */\n  cognito: {\n    userPoolId: string,\n    userPoolClientId: string,\n    oauth?: {\n      domain: string,\n      providers: ['Google'],\n      redirectSignIn: string[],\n      redirectSignOut: string[],\n    }\n  };\n};\n\nexport const AUTH_COGNITO_CONFIG = new InjectionToken<AuthCognitoConfig>('AUTH_COGNITO_CONFIG');\n\nexport const configureAuthCognitoConnector = (params: AuthCognitoConfig): Provider[] => {\n  const oauth = params.cognito.oauth;\n\n  const providers: Provider = [\n    {\n      provide: AUTH_COGNITO_CONFIG,\n      useValue: params,\n    }\n  ]\n\n  if (oauth) {\n    Amplify.configure({\n      Auth: {\n        Cognito: {\n          userPoolId: params.cognito.userPoolId,\n          userPoolClientId: params.cognito.userPoolClientId,\n          loginWith: {\n            oauth: {\n              scopes: ['email', 'openid', 'aws.cognito.signin.user.admin'],\n              responseType: 'code',\n              ...oauth,\n            }\n          }\n        },\n      },\n    });\n  } else {\n    Amplify.configure({\n      Auth: {\n        Cognito: {\n          userPoolId: params.cognito.userPoolId,\n          userPoolClientId: params.cognito.userPoolClientId,\n        },\n      },\n    });\n  }\n\n  return providers;\n};\n","import {\n  computed,\n  inject,\n  Injectable,\n  resource,\n  ResourceRef,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  confirmResetPassword,\n  confirmSignIn,\n  confirmSignUp,\n  fetchAuthSession,\n  fetchUserAttributes,\n  resendSignUpCode,\n  resetPassword,\n  signIn,\n  signInWithRedirect,\n  SignInWithRedirectInput,\n  signOut,\n  signUp,\n} from 'aws-amplify/auth';\nimport { Hub } from 'aws-amplify/utils';\nimport {\n  ActionErrorCollectorService,\n  AUTH_CONFIG,\n  AuthConfig,\n  AuthRouteService,\n  AuthState,\n  FlowError,\n  JwtToken,\n  OmniAuthError,\n  OmniAuthService,\n  RuntimeError,\n  SignInProviderKey,\n  TokenFetcher,\n  TokenProxy,\n} from '@ngx-addons/omni-auth-core';\nimport { CognitoAuthState } from './cognito-auth-state';\nimport { Router } from '@angular/router';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { filter, map, startWith, Subscription, switchMap } from 'rxjs';\nimport {\n  AUTH_COGNITO_CONFIG,\n  AuthCognitoConfig,\n} from './configure-auth-cognito-connector';\n\nconst tokenFetcher: TokenFetcher = async (refresh: boolean) => {\n  const refreshedTokens = await fetchAuthSession({\n    forceRefresh: refresh,\n  });\n\n  const idToken = refreshedTokens?.tokens?.idToken;\n  const accessToken = refreshedTokens?.tokens?.accessToken;\n\n  if (!idToken || !accessToken) {\n    return null;\n  }\n\n  return {\n    idToken: new JwtToken(idToken.toString(), idToken.payload),\n    accessToken: new JwtToken(accessToken.toString(), accessToken.payload),\n  };\n};\n\n@Injectable()\nexport class AuthAwsCognitoService extends OmniAuthService {\n  #authRouteService = inject(AuthRouteService);\n  #actionErrorCollector = inject(ActionErrorCollectorService);\n  #router = inject(Router);\n  #env = inject<AuthConfig>(AUTH_CONFIG);\n  #envCognito = inject<AuthCognitoConfig>(AUTH_COGNITO_CONFIG);\n  #document = inject<Document>(DOCUMENT);\n  #navigateOnLoad$?: Subscription;\n\n  constructor() {\n    super();\n    this.startListening()\n  }\n\n  #hubListenerCancelToken = () => {};\n\n  startListening() {\n    this.#hubListenerCancelToken = Hub.listen('auth', ({ payload }) => {\n      this.#actionErrorCollector.reset();\n      switch (payload.event) {\n        case 'signInWithRedirect':\n          this.#onLoginSuccess();\n          this.stopListening();\n          break;\n        case 'signInWithRedirect_failure':\n          this.stopListening();\n          this.#handleError(\n            this.#transformError('signInWithProvider', payload.data.error),\n          );\n          break;\n        case 'customOAuthState':\n          this.stopListening();\n          this.#handleError(\n            new FlowError(\n              'signInWithProvider',\n              'invalidConfiguration',\n              new RuntimeError('Custom OAuth state handling not implemented'),\n            ),\n          );\n          break;\n      }\n    });\n  }\n\n  stopListening() {\n    this.#hubListenerCancelToken();\n  }\n\n  authState: ResourceRef<AuthState> = resource({\n    defaultValue: CognitoAuthState.unknown(),\n    loader: async () => {\n      try {\n        const session = await fetchAuthSession();\n        if (!session?.tokens) {\n          return CognitoAuthState.fromUnauthenticated();\n        }\n\n        const user = await fetchUserAttributes();\n\n        if (!user) {\n          throw 'Runtime error: user authenticated, but cannot be fetched';\n        }\n\n        return CognitoAuthState.fromAuthenticated(\n          {\n            displayName: user.name ?? user.email ?? '',\n            email: user.email,\n            fullName: user.name,\n            phone: user.phone_number,\n            verified: Boolean(user.email_verified),\n          },\n          new TokenProxy(tokenFetcher),\n        );\n      } catch (e) {\n        return CognitoAuthState.fromError(new OmniAuthError(e));\n      }\n    },\n  });\n\n  accessToken$ = toObservable(this.authState.value).pipe(\n    startWith(undefined),\n    map((state) => state?.tokens || null),\n    switchMap(async (tokenProxy) => tokenProxy?.getAccessToken() ?? null),\n  );\n\n  idToken$ = toObservable(this.authState.value).pipe(\n    startWith(undefined),\n    map((state) => state?.tokens || null),\n    switchMap(async (tokenProxy) => tokenProxy?.getIdToken() ?? null),\n  );\n\n  readonly currentUser = computed(() => {\n    const state = this.authState.value();\n\n    return state.user;\n  });\n\n  #isAuthenticated$ = toObservable(\n    computed(() => {\n      const state = this.authState.value();\n      return state.state === 'authenticated';\n    }),\n  ).pipe(filter(Boolean));\n\n  async signOut(fromAllDevices = false): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n      const window = this.#document.defaultView;\n\n      if (!window) {\n        throw new RuntimeError(\n          'Window is not available. Cannot sign out.',\n          'Make sure to run this code in a browser environment.',\n        );\n      }\n\n      const allowedRedirectUrls =\n        this.#envCognito.cognito.oauth?.redirectSignOut ?? [];\n      const baseUrl = window.location.origin;\n      const possibleUrls = [baseUrl, `${baseUrl}/`];\n\n      if (this.#env.routing?.guest) {\n        const guestUrl = `${baseUrl}/${this.#router.createUrlTree(this.#env.routing?.guest).toString()}`;\n\n        possibleUrls.unshift(guestUrl);\n        possibleUrls.unshift(`${guestUrl}/`);\n      }\n\n      const redirectUrl = possibleUrls.find((url) =>\n        allowedRedirectUrls.includes(url),\n      );\n\n      await signOut({\n        global: fromAllDevices,\n        oauth: {\n          redirectUrl,\n        },\n      });\n\n      this.authState.reload();\n      this.#authRouteService.navigateToGuestPage();\n    } catch (error) {\n      return this.#handleError(this.#transformError('signOut', error));\n    }\n  }\n\n  async signUp(params: {\n    password: string;\n    identifier: string;\n    fullName?: string;\n    attributes?: Record<string, string | boolean | number | Date>;\n  }): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n\n      const attributes = Object.fromEntries(\n        Object.entries(params.attributes || {}).map(([key, value]) => {\n          return [\n            key,\n            typeof value === 'number' ? value : String(value),\n          ];\n        }),\n      );\n\n      const email = this.#env.identifierType === 'email' ? params.identifier : undefined;\n\n      const { nextStep } = await signUp({\n        username: params.identifier,\n        password: params.password,\n        options: {\n          userAttributes: {\n            email,\n            name: params.fullName,\n            ...attributes,\n          },\n        },\n      });\n\n      switch (nextStep.signUpStep) {\n        case 'DONE':\n          this.#authRouteService.nextStep('login', { identifier: params.identifier });\n          break;\n        case 'CONFIRM_SIGN_UP':\n          this.#authRouteService.nextStep('confirm_sign_up', {\n            identifier: params.identifier,\n          });\n          break;\n        case 'COMPLETE_AUTO_SIGN_IN':\n          this.#authRouteService.nextStep('login', { identifier: params.identifier });\n          break;\n      }\n    } catch (error) {\n      return this.#handleError(this.#transformError('signUp', error));\n    }\n  }\n\n  async confirmSignIn(params: {\n    identifier: string;\n    code: string;\n  }): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n      const { nextStep } = await confirmSignIn({\n        challengeResponse: params.code,\n      });\n\n      switch (nextStep.signInStep) {\n        case 'DONE':\n          this.#onLoginSuccess();\n          break;\n        case 'CONFIRM_SIGN_UP':\n          this.#authRouteService.nextStep('confirm_sign_up', {\n            identifier: params.identifier,\n          });\n          break;\n        default:\n          throw new RuntimeError('Unexpected next step: ' + nextStep);\n      }\n\n    } catch (error: Error | any) {\n      return this.#handleError(this.#transformError('confirmSignIn', error));\n    }\n  }\n\n  async confirmSignUp(params: {\n    identifier: string;\n    code: string;\n    newPassword: string;\n  }): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n\n      const { nextStep } = await confirmSignUp({\n        username: params.identifier,\n        confirmationCode: params.code,\n      });\n\n      switch (nextStep.signUpStep) {\n        case 'DONE':\n          this.#authRouteService.nextStep('login', { identifier: params.identifier });\n          break;\n        case 'CONFIRM_SIGN_UP':\n          this.#authRouteService.nextStep('confirm_sign_up', {\n            identifier: params.identifier,\n          });\n          break;\n        case 'COMPLETE_AUTO_SIGN_IN':\n          this.#authRouteService.nextStep('login', { identifier: params.identifier });\n          break;\n        default:\n          throw new RuntimeError('Unexpected next step: ' + nextStep);\n      }\n    } catch (error: Error | any) {\n      if (\n        'message' in error &&\n        error.message ===\n          'User cannot be confirmed. Current status is CONFIRMED'\n      ) {\n        this.#authRouteService.nextStep('login', { identifier: params.identifier });\n      }\n      return this.#handleError(this.#transformError('signIn', error));\n    }\n  }\n\n  async resendSignUpCode(params: { identifier: string }): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n\n      await resendSignUpCode({\n        username: params.identifier,\n      });\n    } catch (error) {\n      return this.#handleError(this.#transformError('resendSignUpCode', error));\n    }\n  }\n\n  async signIn(params: {\n    identifier: string;\n    password?: string;\n  }): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n      let response;\n\n      if(this.#env.passwordlessEnabled) {\n        response = await signIn({\n          username: params.identifier,\n          options: {\n            authFlowType: 'USER_AUTH',\n            preferredChallenge: 'EMAIL_OTP',\n          },\n        });\n      } else {\n        response = await signIn({\n          username: params.identifier,\n          password: params.password,\n        });\n      }\n\n      switch (response.nextStep.signInStep) {\n        case 'DONE':\n          this.#onLoginSuccess();\n          break;\n        case 'CONFIRM_SIGN_UP':\n          this.#authRouteService.nextStep('confirm_sign_up', {\n            identifier: params.identifier,\n          });\n          break;\n        case 'CONFIRM_SIGN_IN_WITH_EMAIL_CODE':\n        case 'CONFIRM_SIGN_IN_WITH_SMS_CODE':\n          this.#authRouteService.nextStep('confirm_sign_in', {\n            identifier: params.identifier,\n          });\n          break;\n        case 'RESET_PASSWORD':\n          this.#authRouteService.nextStep('reset_password', {\n            identifier: params.identifier,\n          });\n          break;\n\n        default:\n          throw new RuntimeError('Unexpected next step: ' + response.nextStep);\n      }\n    } catch (error) {\n      return this.#handleError(this.#transformError('signIn', error));\n    }\n  }\n\n  async forgotPassword(params: { identifier: string }): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n\n      const { nextStep } = await resetPassword({\n        username: params.identifier,\n      });\n\n      switch (nextStep.resetPasswordStep) {\n        case 'DONE':\n          this.#authRouteService.nextStep('login', { identifier: params.identifier });\n          break;\n        case 'CONFIRM_RESET_PASSWORD_WITH_CODE':\n          this.#authRouteService.nextStep('reset_password', {\n            identifier: params.identifier,\n          });\n          break;\n        default:\n          throw new RuntimeError('Unexpected next step: ' + nextStep);\n      }\n    } catch (error) {\n      return this.#handleError(this.#transformError('forgotPassword', error));\n    }\n  }\n\n  async confirmForgotPassword(params: {\n    identifier: string;\n    code: string;\n    newPassword: string;\n  }): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n\n      await confirmResetPassword({\n        username: params.identifier,\n        confirmationCode: params.code,\n        newPassword: params.newPassword,\n      });\n\n      this.#authRouteService.nextStep('login', { identifier: params.identifier });\n    } catch (error) {\n      return this.#handleError(\n        this.#transformError('confirmForgotPassword', error),\n      );\n    }\n  }\n\n  async signInWithProvider(\n    provider: SignInProviderKey,\n  ): Promise<void | FlowError> {\n    try {\n      this.#actionErrorCollector.reset();\n\n      let amazonProvider: SignInWithRedirectInput['provider'];\n\n      switch (provider) {\n        case 'google':\n          amazonProvider = 'Google';\n          break;\n        case 'facebook':\n          amazonProvider = 'Facebook';\n          break;\n        case 'apple':\n          amazonProvider = 'Apple';\n          break;\n        case 'amazon':\n          amazonProvider = 'Amazon';\n          break;\n        default:\n          amazonProvider = {\n            custom: provider,\n          };\n      }\n\n      await signInWithRedirect({\n        provider: amazonProvider,\n      });\n    } catch (error) {\n      return this.#handleError(\n        this.#transformError('signInWithProvider', error),\n      );\n    }\n  }\n\n  #transformError(source: FlowError['source'], error: unknown) {\n    switch (true) {\n      case String(error).includes(\n        'Cannot reset password for the user as there is no registered/verified email',\n      ):\n        return new FlowError(source, 'notVerified', error);\n      case String(error).includes('already a signed in user'):\n        return new FlowError(source, 'alreadySignedIn', error);\n      case String(error).includes('User already exists.'):\n        return new FlowError(source, 'userAlreadyExists', error);\n      case String(error).includes('User is not confirmed.'):\n        return new FlowError(source, 'userIsNotConfirmed', error);\n      case String(error).includes('User does not exist.'):\n      case String(error).includes('Username/client id combination not found.'):\n        return new FlowError(source, 'userDoesNotExist', error);\n      case String(error).includes('Incorrect username or password.'):\n        return new FlowError(source, 'incorrectIdentifierOrPassword', error);\n      case String(error).includes(\n        'Invalid verification code provided, please try again',\n      ):\n        return new FlowError(source, 'invalidCode', error);\n      case String(error).includes('The given preferredRedirectUrl'):\n        console.error(error);\n        return new FlowError(source, 'invalidConfiguration', error, true);\n      case String(error).includes('User cancelled OAuth flow'):\n        console.error(error);\n        return new FlowError(source, 'cancelledFlow', error, true);\n      case String(error).includes('can not be converted to'):\n        return new FlowError(\n          source,\n          'invalidConfiguration',\n          new RuntimeError(\n            'Invalid configuration, see console for details',\n            'Make sure you set up the attributes options correctly.',\n          ),\n          true,\n        );\n      default:\n        console.error(error);\n        return new FlowError(source, 'unknown', error);\n    }\n  }\n\n  #handleError(error: FlowError) {\n    this.#actionErrorCollector.handle(error);\n    return error;\n  }\n\n  #onLoginSuccess() {\n    this.#authRouteService.nextStep('login');\n    this.authState.reload();\n\n    if (this.#navigateOnLoad$) {\n      return;\n    }\n\n    this.#navigateOnLoad$ = this.#isAuthenticated$.subscribe(() => {\n      this.#authRouteService.navigateToSecuredPage();\n      this.#navigateOnLoad$?.unsubscribe();\n      this.#navigateOnLoad$ = undefined;\n    });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}