{"version":3,"file":"TokenStore.mjs","sources":["../../../../../src/providers/cognito/tokenProvider/TokenStore.ts"],"sourcesContent":["import { assertTokenProviderConfig, decodeJWT, } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../../../errors/AuthError';\nimport { AuthTokenStorageKeys, } from './types';\nimport { TokenProviderErrorCode, assert } from './errorHelpers';\nimport { AUTH_KEY_PREFIX } from './constants';\nexport class DefaultTokenStore {\n    getKeyValueStorage() {\n        if (!this.keyValueStorage) {\n            throw new AuthError({\n                name: 'KeyValueStorageNotFoundException',\n                message: 'KeyValueStorage was not found in TokenStore',\n            });\n        }\n        return this.keyValueStorage;\n    }\n    setKeyValueStorage(keyValueStorage) {\n        this.keyValueStorage = keyValueStorage;\n    }\n    setAuthConfig(authConfig) {\n        this.authConfig = authConfig;\n    }\n    async loadTokens() {\n        // TODO(v6): migration logic should be here\n        // Reading V5 tokens old format\n        try {\n            const authKeys = await this.getAuthKeys();\n            const accessTokenString = await this.getKeyValueStorage().getItem(authKeys.accessToken);\n            if (!accessTokenString) {\n                throw new AuthError({\n                    name: 'NoSessionFoundException',\n                    message: 'Auth session was not found. Make sure to call signIn.',\n                });\n            }\n            const accessToken = decodeJWT(accessTokenString);\n            const itString = await this.getKeyValueStorage().getItem(authKeys.idToken);\n            const idToken = itString ? decodeJWT(itString) : undefined;\n            const refreshToken = (await this.getKeyValueStorage().getItem(authKeys.refreshToken)) ??\n                undefined;\n            const clockDriftString = (await this.getKeyValueStorage().getItem(authKeys.clockDrift)) ?? '0';\n            const clockDrift = Number.parseInt(clockDriftString);\n            const signInDetails = await this.getKeyValueStorage().getItem(authKeys.signInDetails);\n            const tokens = {\n                accessToken,\n                idToken,\n                refreshToken,\n                deviceMetadata: (await this.getDeviceMetadata()) ?? undefined,\n                clockDrift,\n                username: await this.getLastAuthUser(),\n            };\n            if (signInDetails) {\n                tokens.signInDetails = JSON.parse(signInDetails);\n            }\n            return tokens;\n        }\n        catch (err) {\n            return null;\n        }\n    }\n    async storeTokens(tokens) {\n        assert(tokens !== undefined, TokenProviderErrorCode.InvalidAuthTokens);\n        const lastAuthUser = tokens.username;\n        await this.getKeyValueStorage().setItem(this.getLastAuthUserKey(), lastAuthUser);\n        const authKeys = await this.getAuthKeys();\n        await this.getKeyValueStorage().setItem(authKeys.accessToken, tokens.accessToken.toString());\n        if (tokens.idToken) {\n            await this.getKeyValueStorage().setItem(authKeys.idToken, tokens.idToken.toString());\n        }\n        else {\n            await this.getKeyValueStorage().removeItem(authKeys.idToken);\n        }\n        if (tokens.refreshToken) {\n            await this.getKeyValueStorage().setItem(authKeys.refreshToken, tokens.refreshToken);\n        }\n        else {\n            await this.getKeyValueStorage().removeItem(authKeys.refreshToken);\n        }\n        if (tokens.deviceMetadata) {\n            if (tokens.deviceMetadata.deviceKey) {\n                await this.getKeyValueStorage().setItem(authKeys.deviceKey, tokens.deviceMetadata.deviceKey);\n            }\n            if (tokens.deviceMetadata.deviceGroupKey) {\n                await this.getKeyValueStorage().setItem(authKeys.deviceGroupKey, tokens.deviceMetadata.deviceGroupKey);\n            }\n            await this.getKeyValueStorage().setItem(authKeys.randomPasswordKey, tokens.deviceMetadata.randomPassword);\n        }\n        if (tokens.signInDetails) {\n            await this.getKeyValueStorage().setItem(authKeys.signInDetails, JSON.stringify(tokens.signInDetails));\n        }\n        else {\n            await this.getKeyValueStorage().removeItem(authKeys.signInDetails);\n        }\n        await this.getKeyValueStorage().setItem(authKeys.clockDrift, `${tokens.clockDrift}`);\n    }\n    async clearTokens() {\n        const authKeys = await this.getAuthKeys();\n        // Not calling clear because it can remove data that is not managed by AuthTokenStore\n        await Promise.all([\n            this.getKeyValueStorage().removeItem(authKeys.accessToken),\n            this.getKeyValueStorage().removeItem(authKeys.idToken),\n            this.getKeyValueStorage().removeItem(authKeys.clockDrift),\n            this.getKeyValueStorage().removeItem(authKeys.refreshToken),\n            this.getKeyValueStorage().removeItem(authKeys.signInDetails),\n            this.getKeyValueStorage().removeItem(this.getLastAuthUserKey()),\n            this.getKeyValueStorage().removeItem(authKeys.oauthMetadata),\n        ]);\n    }\n    async getDeviceMetadata(username) {\n        const authKeys = await this.getAuthKeys(username);\n        const deviceKey = await this.getKeyValueStorage().getItem(authKeys.deviceKey);\n        const deviceGroupKey = await this.getKeyValueStorage().getItem(authKeys.deviceGroupKey);\n        const randomPassword = await this.getKeyValueStorage().getItem(authKeys.randomPasswordKey);\n        return randomPassword && deviceGroupKey && deviceKey\n            ? {\n                deviceKey,\n                deviceGroupKey,\n                randomPassword,\n            }\n            : null;\n    }\n    async clearDeviceMetadata(username) {\n        const authKeys = await this.getAuthKeys(username);\n        await Promise.all([\n            this.getKeyValueStorage().removeItem(authKeys.deviceKey),\n            this.getKeyValueStorage().removeItem(authKeys.deviceGroupKey),\n            this.getKeyValueStorage().removeItem(authKeys.randomPasswordKey),\n        ]);\n    }\n    async getAuthKeys(username) {\n        assertTokenProviderConfig(this.authConfig?.Cognito);\n        const lastAuthUser = username ?? (await this.getLastAuthUser());\n        return createKeysForAuthStorage(AUTH_KEY_PREFIX, `${this.authConfig.Cognito.userPoolClientId}.${lastAuthUser}`);\n    }\n    getLastAuthUserKey() {\n        assertTokenProviderConfig(this.authConfig?.Cognito);\n        const identifier = this.authConfig.Cognito.userPoolClientId;\n        return `${AUTH_KEY_PREFIX}.${identifier}.LastAuthUser`;\n    }\n    async getLastAuthUser() {\n        const lastAuthUser = (await this.getKeyValueStorage().getItem(this.getLastAuthUserKey())) ??\n            'username';\n        return lastAuthUser;\n    }\n    async setOAuthMetadata(metadata) {\n        const { oauthMetadata: oauthMetadataKey } = await this.getAuthKeys();\n        await this.getKeyValueStorage().setItem(oauthMetadataKey, JSON.stringify(metadata));\n    }\n    async getOAuthMetadata() {\n        const { oauthMetadata: oauthMetadataKey } = await this.getAuthKeys();\n        const oauthMetadata = await this.getKeyValueStorage().getItem(oauthMetadataKey);\n        return oauthMetadata && JSON.parse(oauthMetadata);\n    }\n}\nexport const createKeysForAuthStorage = (provider, identifier) => {\n    return getAuthStorageKeys(AuthTokenStorageKeys)(`${provider}`, identifier);\n};\nexport function getAuthStorageKeys(authKeys) {\n    const keys = Object.values({ ...authKeys });\n    return (prefix, identifier) => keys.reduce((acc, authKey) => ({\n        ...acc,\n        [authKey]: `${prefix}.${identifier}.${authKey}`,\n    }), {});\n}\n"],"names":[],"mappings":"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"}