{"version":3,"file":"signInStore.mjs","sources":["../../../../../src/client/utils/store/signInStore.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { syncSessionStorage } from '@aws-amplify/core';\n// Minutes until stored session invalidates is defaulted to 3 minutes\n// to maintain parity with Amazon Cognito user pools API behavior\nconst MS_TO_EXPIRY = 3 * 60 * 1000;\nconst TGT_STATE = 'CognitoSignInState';\nconst SIGN_IN_STATE_KEYS = {\n    username: `${TGT_STATE}.username`,\n    challengeName: `${TGT_STATE}.challengeName`,\n    signInSession: `${TGT_STATE}.signInSession`,\n    expiry: `${TGT_STATE}.expiry`,\n};\nconst signInReducer = (state, action) => {\n    switch (action.type) {\n        case 'SET_SIGN_IN_SESSION':\n            persistSignInState({ signInSession: action.value });\n            return {\n                ...state,\n                signInSession: action.value,\n            };\n        case 'SET_SIGN_IN_STATE':\n            persistSignInState(action.value);\n            return {\n                ...action.value,\n            };\n        case 'SET_CHALLENGE_NAME':\n            persistSignInState({ challengeName: action.value });\n            return {\n                ...state,\n                challengeName: action.value,\n            };\n        case 'SET_USERNAME':\n            persistSignInState({ username: action.value });\n            return {\n                ...state,\n                username: action.value,\n            };\n        case 'SET_INITIAL_STATE':\n            return getInitialState();\n        case 'RESET_STATE':\n            clearPersistedSignInState();\n            return getDefaultState();\n        // this state is never reachable\n        default:\n            return state;\n    }\n};\nconst isExpired = (expiryDate) => {\n    const expiryTimestamp = Number(expiryDate);\n    const currentTimestamp = Date.now();\n    return expiryTimestamp <= currentTimestamp;\n};\nexport const resetActiveSignInState = () => {\n    signInStore.dispatch({ type: 'RESET_STATE' });\n};\nconst clearPersistedSignInState = () => {\n    for (const stateKey of Object.values(SIGN_IN_STATE_KEYS)) {\n        syncSessionStorage.removeItem(stateKey);\n    }\n};\nconst getDefaultState = () => ({\n    username: undefined,\n    challengeName: undefined,\n    signInSession: undefined,\n});\n// Hydrate signInStore from syncSessionStorage if the session has not expired\nconst getInitialState = () => {\n    const expiry = syncSessionStorage.getItem(SIGN_IN_STATE_KEYS.expiry);\n    if (!expiry || isExpired(expiry)) {\n        clearPersistedSignInState();\n        return getDefaultState();\n    }\n    const username = syncSessionStorage.getItem(SIGN_IN_STATE_KEYS.username) ?? undefined;\n    const challengeName = (syncSessionStorage.getItem(SIGN_IN_STATE_KEYS.challengeName) ?? undefined);\n    const signInSession = syncSessionStorage.getItem(SIGN_IN_STATE_KEYS.signInSession) ?? undefined;\n    return {\n        username,\n        challengeName,\n        signInSession,\n    };\n};\nconst createStore = reducer => {\n    let currentState = reducer(getDefaultState(), { type: 'SET_INITIAL_STATE' });\n    return {\n        getState: () => currentState,\n        dispatch: action => {\n            currentState = reducer(currentState, action);\n        },\n    };\n};\nexport const signInStore = createStore(signInReducer);\nexport function setActiveSignInState(state) {\n    signInStore.dispatch({\n        type: 'SET_SIGN_IN_STATE',\n        value: state,\n    });\n}\n// Save local state into Session Storage\nexport const persistSignInState = ({ challengeName, signInSession, username, }) => {\n    username && syncSessionStorage.setItem(SIGN_IN_STATE_KEYS.username, username);\n    challengeName &&\n        syncSessionStorage.setItem(SIGN_IN_STATE_KEYS.challengeName, challengeName);\n    if (signInSession) {\n        syncSessionStorage.setItem(SIGN_IN_STATE_KEYS.signInSession, signInSession);\n        // Updates expiry when session is passed\n        syncSessionStorage.setItem(SIGN_IN_STATE_KEYS.expiry, String(Date.now() + MS_TO_EXPIRY));\n    }\n};\n"],"names":[],"mappings":"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"}