UNPKG

@aws-amplify/auth

Version:

Auth category of aws-amplify

61 lines (51 loc) • 1.86 kB
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { AuthConfig, AuthTokens, ClientMetadataProvider, FetchAuthSessionOptions, KeyValueStorageInterface, defaultStorage, } from '@aws-amplify/core'; import { refreshAuthTokens } from '../utils/refreshAuthTokens'; import { DefaultTokenStore } from './TokenStore'; import { TokenOrchestrator } from './TokenOrchestrator'; import { CognitoUserPoolTokenProviderType } from './types'; export class CognitoUserPoolsTokenProvider implements CognitoUserPoolTokenProviderType { authTokenStore: DefaultTokenStore; tokenOrchestrator: TokenOrchestrator; constructor() { this.authTokenStore = new DefaultTokenStore(); this.authTokenStore.setKeyValueStorage(defaultStorage); this.authTokenStore.setupNotify(); this.tokenOrchestrator = new TokenOrchestrator(); this.tokenOrchestrator.setAuthTokenStore(this.authTokenStore); this.tokenOrchestrator.setTokenRefresher(refreshAuthTokens); } getTokens(options: FetchAuthSessionOptions = {}): Promise<AuthTokens | null> { return this.tokenOrchestrator.getTokens(options); } setKeyValueStorage(keyValueStorage: KeyValueStorageInterface): void { this.authTokenStore.setKeyValueStorage(keyValueStorage); } /** * Tears down the cross-tab storage listener held by the underlying token * store. Intended for tests, HMR, and micro-frontend teardown; safe no-op * when notify was never set up. */ teardownNotify(): void { this.authTokenStore.teardownNotify(); } setClientMetadataProvider( clientMetadataProvider: ClientMetadataProvider, ): void { this.tokenOrchestrator.setClientMetadataProvider(clientMetadataProvider); } setAuthConfig(authConfig: AuthConfig) { this.authTokenStore.setAuthConfig(authConfig); this.tokenOrchestrator.setAuthConfig(authConfig); } }