{"version":3,"file":"diContainer.f891b5d9c75cb907c900.bundle.js","mappings":"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","sources":["webpack://elc-service-session-mgmt/./src/api/SignInApiSdk.ts","webpack://elc-service-session-mgmt/./src/internal/domain/entities/SignInFormStoreFactory.ts","webpack://elc-service-session-mgmt/./src/internal/repositories/SignInRepository.ts","webpack://elc-service-session-mgmt/./src/service-setup/ConfigStore.ts","webpack://elc-service-session-mgmt/./src/internal/use-cases/ClearAuthSessionUseCase.ts","webpack://elc-service-session-mgmt/./src/internal/constants/constants.ts","webpack://elc-service-session-mgmt/./src/internal/domain/entities/AuthSession.ts","webpack://elc-service-session-mgmt/./src/internal/use-cases/UpdateAuthSessionUseCase.ts","webpack://elc-service-session-mgmt/./src/internal/use-cases/SetEmailUseCase.ts","webpack://elc-service-session-mgmt/./src/service-setup/ServiceBusController.ts","webpack://elc-service-session-mgmt/./src/internal/repositories/AuthSessionRepository.ts","webpack://elc-service-session-mgmt/./src/internal/domain/entities/GuestUser.ts","webpack://elc-service-session-mgmt/./src/internal/repositories/GuestRepository.ts","webpack://elc-service-session-mgmt/./src/internal/stores/SignUpFormStore.ts","webpack://elc-service-session-mgmt/./src/service-setup/diContainer.ts"],"sourcesContent":["import { Api, IConfig } from '@estee/elc-service';\nimport { IHttpTransport } from '@estee/elc-universal-utils';\nimport { ConfigStore } from '../service-setup/ConfigStore';\n\nexport interface ISignInResponse {\n token_type: string;\n access_token: string;\n expires_in: number;\n userId: string;\n userEmail: string;\n userRole: string;\n userCreationDate: string;\n}\n\ninterface IResult {\n code: number;\n data: T;\n message: string;\n}\n\nexport interface ISessionData {\n access_token: string | null;\n expires: number | null;\n spa_urls: string[] | null;\n user_id: string | null;\n}\n\nexport interface ISignInApiSdkConfig extends IConfig {\n baseUrl: string;\n configStore: ConfigStore;\n}\n\nconst { name, version } = __serviceInfo__;\n\nexport class SignInApiSdk extends Api {\n private readonly authApiUrl: string;\n private readonly baseUrl: string;\n private readonly sessionMgmtUrl: string;\n\n constructor(config: ISignInApiSdkConfig) {\n super(config, name, version);\n this.authApiUrl = 'stardust-account-proxy-v0/oauth';\n\n this.baseUrl = config.baseUrl;\n\n this.sessionMgmtUrl = `${this.baseUrl ?? ''}/stardust-account-session-mgt-v0`;\n }\n\n public get tokenUrl() {\n return `/${this.authApiUrl}/token`;\n }\n\n public guestTokenRequest = async (): Promise => {\n const response = await this.httpTransport.post({\n url: this.tokenUrl,\n body: {\n grant_type: 'client_credentials'\n }\n });\n\n return response.data;\n };\n\n public getLegacyGuestTokenIndependentFromApi = async (): Promise => {\n const url = new URL(this.tokenUrl, this.baseUrl);\n\n const request: RequestInit = {\n method: 'POST',\n body: JSON.stringify({\n grant_type: 'client_credentials'\n }),\n headers: (this.httpTransport as IHttpTransport).getStaticGlobalHeaders() as {}\n };\n\n const response = await fetch(url.toString(), request);\n const responseJson = await response.json();\n\n return responseJson as ISignInResponse;\n };\n\n public getSession = async (): Promise> => {\n const response = await fetch(`${this.sessionMgmtUrl}/sessions/current`, {\n credentials: 'include'\n });\n\n if (!(response.status >= 200 && response.status < 300)) {\n throw response;\n }\n\n const sessionData = (await response.json()) as IResult;\n\n return sessionData;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public signIn = async (signInData: any): Promise => {\n const response = await this.httpTransport.post({\n url: this.tokenUrl,\n body: signInData\n });\n\n return response.data;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public signOut = async (signOutData: any) => {\n return this.httpTransport.post({\n url: `/${this.authApiUrl}/revoke`,\n body: signOutData\n });\n };\n}\n","export const createSignInFormStore = async () => {\n const m = await import(\n /* webpackChunkName: 'SignInFormStore.js' */\n './SignInFormStore'\n );\n\n return new m.SignInFormStore();\n};\n","import { action, computed, observable } from 'mobx';\nimport { IFormStore } from '../domain/entities/IFormStore';\nimport { ISignInFormValues } from '../domain/entities/ISignInFormValues';\nimport { createSignInFormStore } from '../domain/entities/SignInFormStoreFactory';\n\nexport class SignInRepository {\n @observable formStore: IFormStore | null;\n @observable private busy = false;\n\n @action\n public ensureFormStore = async (): Promise> => {\n if (!this.formStore) {\n this.formStore = await createSignInFormStore();\n }\n\n return this.formStore;\n };\n\n @computed\n public get isBusy() {\n return this.busy;\n }\n\n @action\n public setIsBusy(busy: boolean) {\n this.busy = busy;\n }\n\n @computed\n public get email() {\n return this.formStore ? this.formStore.values.email : '';\n }\n\n @action\n public setEmail(email: string) {\n if (this.formStore) {\n this.formStore.values.email = email;\n }\n }\n\n @action\n public clearStore() {\n if (this.formStore) {\n this.formStore.clearStore();\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { observable, action } from 'mobx';\n\nexport class ConfigStore {\n @observable public config: any;\n @observable\n public breakpoints: Theme.IBreakpoints = {\n desktop: 768,\n largeScreen: 1024,\n extraLargeScreen: 1200\n };\n\n constructor(config: any) {\n this.updateConfig(config);\n }\n\n @action\n public updateConfig(config: any) {\n this.config = { ...config };\n }\n}\n","import { command, serviceCommands } from '@estee/elc-service-bus';\nimport { AuthSessionRepository } from '../repositories/AuthSessionRepository';\n\nexport class ClearAuthSessionUseCase {\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n constructor(private readonly authSessionRepository: AuthSessionRepository) {}\n\n public execute = async () => {\n void command(serviceCommands.CLEAR_USER_DATA);\n\n this.authSessionRepository.clearSession();\n if (this.authSessionRepository.enableCareConfig) {\n this.authSessionRepository.clearCareSession();\n }\n\n await this.authSessionRepository.ensureAuthSession();\n if (this.authSessionRepository.enableCareConfig) {\n await this.authSessionRepository.ensureCareAuthSession();\n }\n };\n}\n","export const AUTHENTICATION_SOURCES = Object.freeze({\n SIGN_IN: 'sign-in',\n SIGN_UP: 'sign-up',\n FORGOT_PASSWORD: 'forgot-password',\n REFRESH_AUTH_TOKEN: 'refresh-auth-token',\n CARE: 'care'\n});\n\nexport const TOKEN_TYPE = Object.freeze({\n GUEST: 'guest',\n USER: 'user'\n});\n\nexport const GUEST_COOKIE_NAMES = Object.freeze({\n AUTH_TOKEN: 'elc-auth-token-guest',\n AUTH_TYPE: 'elc-auth-token-type-guest'\n});\n\nexport const COOKIES_NAMES = Object.freeze({\n AUTH_TOKEN: 'elc-auth-token',\n AUTH_TYPE: 'elc-auth-token-type',\n CARE_AUTH_TOKEN: 'elc-care-auth-token',\n CARE_AUTH_TYPE: 'elc-care-auth-token-type'\n});\n\nexport const FAIL_LOGIN_ATTEMPT = Object.freeze({\n BAD_CREDENTIALS: 'bad_credentials',\n CAPTCHA: 'bad_credentials_captcha',\n WARNING: 'bad_credentials_warning',\n FIRST_LOCK: 'locked_user_1st',\n SECOND_LOCK: 'locked_user_2nd'\n});\n\nexport const OPT_IN_SOURCE = Object.freeze({\n SIGN_IN: 'sign-in'\n});\n\nexport const CARE_SIGNIN_STATE_NAME = 'elc-care-signin-state';\nexport const CARE_SIGNIN_DATA_NAME = 'elc-care-signin-data';\nexport const CARE_GUEST_SIGNIN_STATE_NAME = 'elc-care-guest-signin-state';\n\nexport const AUTHORIZATION_HEADER_NAME = 'AuthorizationToken';\n\nexport const CARE_QUERY_PARAM_NAME_STRATEGY = 's';\nexport const CARE_STRATEGY_SIGN_IN = 'signin';\nexport const CARE_STRATEGY_SIGN_UP = 'signup';\nexport const CARE_STRATEGY_GUEST = 'guest';\nexport const CARE_STRATEGY_LOGO = 'logo';\nexport const CARE_STRATEGY_CANCEL = 'cancel';\n\nexport enum AuthMode {\n CARE = 'care'\n}\n\n/*\n This is a list of urls that will NEVER use the new Authorizer\n */\nexport const BLACKLISTED_AUTH_URLS = [\n '/stardust-prodcat-product-',\n '/stardust-buid-configurations-',\n '/stardust-fe-logging-'\n];\n","import { observable, action, computed } from 'mobx';\nimport { TOKEN_TYPE } from '../../constants/constants';\n\nexport interface IAuthSession {\n token: string;\n source?: string;\n email?: string;\n}\n\nexport class AuthSession {\n @observable public token: string | null;\n @observable public tokenType: string | null;\n @observable public authSourceData: IAuthSession;\n @observable public expiration: number | null;\n @observable public userId: string | null;\n\n constructor(\n token: string | null,\n tokenType: string | null,\n expiration: number | null,\n userId: string | null\n ) {\n this.token = token;\n this.tokenType = tokenType;\n this.expiration = expiration;\n this.userId = userId;\n }\n\n @computed\n public get isAuthenticated() {\n const { token, tokenType } = this;\n\n return !!(token && tokenType === TOKEN_TYPE.USER);\n }\n\n @computed\n public get isAuthSessionAvailable() {\n return (\n this.token &&\n (this.tokenType === TOKEN_TYPE.USER || this.tokenType === TOKEN_TYPE.GUEST)\n );\n }\n\n @action\n private updateToken(token: string | null) {\n this.token = token;\n }\n\n @action\n private updateTokenType(tokenType: string | null) {\n this.tokenType = tokenType;\n }\n\n @action\n private updateExpiration(expiration: number | null) {\n this.expiration = expiration;\n }\n\n @action\n private updateUserId(userId: string | null) {\n this.userId = userId;\n }\n\n @action\n public updateAuthSession(authSession: AuthSession) {\n this.updateTokenType(authSession.tokenType);\n this.updateToken(authSession.token);\n this.updateExpiration(authSession.expiration);\n this.updateUserId(authSession.userId);\n }\n\n @action\n public clearToken() {\n this.updateTokenType(null);\n this.updateToken(null);\n this.updateExpiration(null);\n this.updateUserId(null);\n }\n\n @action\n public setAuthSourceData(authSourceData: IAuthSession) {\n this.authSourceData = authSourceData;\n }\n}\n","import { AuthSession } from '../domain/entities/AuthSession';\nimport { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/SessionManagementService';\nimport { AUTHENTICATION_SOURCES, TOKEN_TYPE } from '../constants/constants';\n\nexport interface IAuthSession {\n token: string;\n expiration: number;\n source?: string;\n email?: string;\n}\n\nexport class UpdateAuthSessionUseCase {\n private authSession: AuthSession;\n private careAuthSession: AuthSession;\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n constructor(private data: IAuthSession) {\n this.authSession = diContainer.get(serviceNames.authSession);\n this.careAuthSession = diContainer.get(serviceNames.careAuthSession);\n }\n\n public execute = () => {\n const authSession = new AuthSession(\n this.data.token,\n TOKEN_TYPE.USER,\n this.data.expiration,\n null\n );\n\n const targetAuthSession =\n this.data.source === AUTHENTICATION_SOURCES.CARE\n ? this.careAuthSession\n : this.authSession;\n\n targetAuthSession.updateAuthSession(authSession);\n targetAuthSession.setAuthSourceData(this.data);\n };\n}\n","import { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/SessionManagementService';\nimport { SignInRepository } from '../repositories/SignInRepository';\n\nexport class SetEmailUseCase {\n private signInRepository: SignInRepository;\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n constructor(private email: string) {\n this.signInRepository = diContainer.get(serviceNames.signInRepository);\n }\n\n public execute = async () => {\n await this.signInRepository.ensureFormStore();\n this.signInRepository.setEmail(this.email);\n };\n}\n","import { reaction } from 'mobx';\nimport { ClearAuthSessionUseCase } from '~use-cases/ClearAuthSessionUseCase';\nimport { IAuthSession, UpdateAuthSessionUseCase } from '~use-cases/UpdateAuthSessionUseCase';\nimport { SetEmailUseCase } from '~use-cases/SetEmailUseCase';\nimport { AuthSessionRepository } from '~repositories/AuthSessionRepository';\nimport { GuestRepository } from '~repositories/GuestRepository';\nimport { AuthSession } from '~domain/entities/AuthSession';\n\nexport interface IServiceBusControllerConfig {\n authSessionRepository: AuthSessionRepository;\n authSession: AuthSession;\n guestRepository: GuestRepository;\n}\n\nexport class ServiceBusController {\n constructor(\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n private readonly authSession: AuthSession,\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n private readonly careAuthSession: AuthSession,\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n private readonly authSessionRepository: AuthSessionRepository,\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n private readonly guestRepository: GuestRepository\n ) {\n reaction(() => this.authSession.token, this.tokenChanged);\n }\n\n public isAuthenticated = () => {\n if (this.authSessionRepository.enableCareConfig) {\n return !!this.careAuthSession.isAuthenticated;\n }\n\n return !!this.authSession.isAuthenticated;\n };\n\n public guestEmail = async () => {\n const guestUser = await this.guestRepository.getGuestUser();\n\n return guestUser.email;\n };\n\n public getLegacyGuestAuthToken = async () => {\n return this.authSessionRepository.getLegacyAuthToken();\n };\n\n public getGuestAuthToken = () => {\n return this.authSessionRepository.getGuestAuthToken().access_token;\n };\n\n public getAccessToken = async () => {\n return this.authSessionRepository.getAccessToken();\n };\n\n public getUserId = async () => {\n return this.authSessionRepository.getUserId();\n };\n\n public updateAccessToken = (payload: IAuthSession) => {\n const useCase = new UpdateAuthSessionUseCase(payload);\n useCase.execute();\n };\n\n public setFormEmail = async ({ email }: { email: string }) => {\n const setEmailUseCase = new SetEmailUseCase(email);\n await setEmailUseCase.execute();\n };\n\n public signedOut = () => {\n const useCase = new ClearAuthSessionUseCase(this.authSessionRepository);\n void useCase.execute();\n };\n\n public tokenChanged = () => {\n this.authSessionRepository.storeInCookie();\n };\n}\n","import { AuthSession } from '../domain/entities/AuthSession';\nimport {\n AuthMode,\n AUTHORIZATION_HEADER_NAME,\n CARE_GUEST_SIGNIN_STATE_NAME,\n CARE_SIGNIN_DATA_NAME,\n CARE_SIGNIN_STATE_NAME,\n COOKIES_NAMES,\n TOKEN_TYPE\n} from '../constants/constants';\nimport { BrowserStorage, IHttpTransport, IRequestTransformer } from '@estee/elc-universal-utils';\nimport { ISessionData, SignInApiSdk } from '../../api/SignInApiSdk';\nimport { ConfigStore } from '../../service-setup/ConfigStore';\nimport { IAccountConfig } from '../../service-setup/IAccountConfig';\nimport { IAuthRequestStateData } from '../domain/entities/IAuthRequestStateData';\nimport { encode } from 'base-64';\n\nexport interface IAuthSessionRepositoryConfig {\n authSession: AuthSession;\n careAuthSession: AuthSession;\n signInApiSdk: SignInApiSdk;\n httpTransport: IHttpTransport;\n configStore: ConfigStore;\n}\n\nconst DEFAULT_EXPIRATION_TIME_MS = 1 * 60 * 60 * 1000;\n\nexport class AuthSessionRepository {\n private readonly authSession: AuthSession;\n private readonly careAuthSession: AuthSession;\n private readonly signInApiSdk: SignInApiSdk;\n private readonly httpTransport: IHttpTransport;\n private readonly businessUnitId: string;\n\n private requestTransformer: IRequestTransformer;\n\n public readonly enableCareConfig: boolean;\n\n private ensureAuthSessionPromise: Promise | null = null;\n\n private ensureCareAuthSessionPromise: Promise | null = null;\n private accessTokenExpirationDate: Date | null = null;\n\n constructor(config: IAuthSessionRepositoryConfig) {\n this.authSession = config.authSession;\n this.careAuthSession = config.careAuthSession;\n this.businessUnitId = config.configStore.config.businessUnitId;\n\n this.signInApiSdk = config.signInApiSdk;\n this.httpTransport = config.httpTransport;\n\n const accountConfig: IAccountConfig = config.configStore.config.accountConfig || {};\n this.enableCareConfig = accountConfig.authMode === AuthMode.CARE;\n }\n\n public get authRequestState() {\n return BrowserStorage.getItem(CARE_SIGNIN_STATE_NAME, 'localStorage');\n }\n\n public get guestAuthRequestState() {\n return BrowserStorage.getItem(CARE_GUEST_SIGNIN_STATE_NAME, 'localStorage');\n }\n\n public setAuthRequestState(state: string) {\n BrowserStorage.setItem(CARE_SIGNIN_STATE_NAME, state, 'localStorage');\n }\n\n public setGuestAuthRequestState(state: string) {\n BrowserStorage.setItem(CARE_GUEST_SIGNIN_STATE_NAME, state, 'localStorage');\n }\n\n public setAuthRequestStateData(data: IAuthRequestStateData | null) {\n if (!data) {\n BrowserStorage.removeItem(CARE_SIGNIN_DATA_NAME);\n } else {\n BrowserStorage.setItem(CARE_SIGNIN_DATA_NAME, JSON.stringify(data), 'localStorage');\n }\n }\n\n public getAuthRequestStateData(): IAuthRequestStateData | null {\n const serialized = BrowserStorage.getItem(CARE_SIGNIN_DATA_NAME, 'localStorage');\n\n return serialized ? (JSON.parse(serialized) as IAuthRequestStateData) : null;\n }\n\n public storeInCookie = () => {\n // handle auth token cookie storage\n this.storeAuthSession(this.authSession, COOKIES_NAMES.AUTH_TOKEN, COOKIES_NAMES.AUTH_TYPE);\n };\n\n public storeCareToken = () => {\n this.storeAuthSession(\n this.careAuthSession,\n COOKIES_NAMES.CARE_AUTH_TOKEN,\n COOKIES_NAMES.CARE_AUTH_TYPE\n );\n };\n\n private get storedAuthSession() {\n const tokenCookie = BrowserStorage.getCookie(COOKIES_NAMES.AUTH_TOKEN);\n const tokenTypeCookie = BrowserStorage.getCookie(COOKIES_NAMES.AUTH_TYPE);\n\n return new AuthSession(tokenCookie, tokenTypeCookie, null, null);\n }\n\n private storeAuthSession(\n authSession: AuthSession,\n cookieTokenName: string,\n cookieTypeName: string\n ) {\n const { token: authToken, tokenType, expiration } = authSession;\n\n if (!authToken) {\n BrowserStorage.eraseCookie(cookieTokenName);\n BrowserStorage.eraseCookie(cookieTypeName);\n } else {\n const storedToken = BrowserStorage.getCookie(cookieTokenName);\n const storedTokenType = BrowserStorage.getCookie(cookieTypeName);\n if (!storedToken || storedToken !== authToken || storedTokenType !== tokenType) {\n // update cookie if a new token is available\n BrowserStorage.setCookie(\n cookieTokenName,\n authToken,\n new Date(Date.now() + (expiration || 0) * 1000)\n );\n BrowserStorage.setCookie(\n cookieTypeName,\n tokenType,\n new Date(Date.now() + (expiration || 0) * 1000)\n );\n }\n }\n }\n\n public getGuestAuthToken = () => {\n return {\n access_token: encode(`${this.businessUnitId}:${window.location.origin}`),\n expires_in: 86400,\n user_id: null\n };\n };\n\n public signOut = async () => {\n try {\n await this.signInApiSdk.signOut({ token: this.authSession.token });\n } catch (error) {\n throw error;\n }\n };\n\n public ensureAuthSession: () => Promise = () => {\n let result: Promise | null = this.ensureAuthSessionPromise;\n if (!result) {\n result = this.ensureAuthSessionPromise = this.doEnsureAuthSession();\n }\n\n return result as Promise;\n };\n\n private doEnsureAuthSession = async () => {\n let guestToken;\n try {\n guestToken = await this.signInApiSdk.getLegacyGuestTokenIndependentFromApi();\n this.setGuestAuthToken(guestToken);\n this.storeInCookie();\n } catch (err) {\n console.error(err);\n }\n\n this.ensureAuthSessionPromise = null;\n };\n\n private createRequestTransformer = (): IRequestTransformer => {\n return async (config) => {\n const newHeaders = new Headers(config.headers);\n const token = this.getGuestAuthToken().access_token;\n\n if (!newHeaders.has(AUTHORIZATION_HEADER_NAME)) {\n newHeaders.set(AUTHORIZATION_HEADER_NAME, token as string);\n }\n\n config.headers = newHeaders;\n };\n };\n\n private setGuestAuthToken = (response: { access_token: string; expires_in: number | null }) => {\n const newSession = new AuthSession(\n response.access_token,\n TOKEN_TYPE.GUEST,\n response.expires_in,\n null\n );\n this.authSession.updateAuthSession(newSession);\n };\n\n public getLegacyAuthToken = async () => {\n const storedAuthToken = this.authSession.token || this.storedAuthSession;\n if (!this.authSession.token) {\n await this.ensureAuthSession();\n }\n\n return storedAuthToken;\n };\n\n public getAccessToken = async (): Promise => {\n await this.ensureCareAuthSession();\n\n return this.careAuthSession.token ?? this.getGuestAuthToken().access_token;\n };\n\n public getUserId = async (): Promise => {\n await this.ensureCareAuthSession();\n\n return this.careAuthSession.userId ?? '';\n };\n\n public isAuthenticated = async (): Promise => {\n if (this.enableCareConfig) {\n await this.ensureCareAuthSession();\n\n return this.careAuthSession.isAuthenticated;\n }\n\n return this.authSession.isAuthenticated;\n };\n\n public clearSession() {\n this.authSession.clearToken();\n this.ensureAuthSessionPromise = null;\n }\n\n public clearCareSession() {\n this.careAuthSession.clearToken();\n\n this.accessTokenExpirationDate = null;\n this.ensureCareAuthSessionPromise = null;\n }\n\n public ensureCareAuthSession = async (): Promise => {\n // ensure token is not stale\n if (\n this.ensureCareAuthSessionPromise &&\n this.accessTokenExpirationDate &&\n this.accessTokenExpirationDate < new Date()\n ) {\n this.accessTokenExpirationDate = new Date(\n new Date().getTime() + DEFAULT_EXPIRATION_TIME_MS\n );\n this.ensureCareAuthSessionPromise = null;\n }\n\n if (!this.ensureCareAuthSessionPromise) {\n this.ensureCareAuthSessionPromise = this.doEnsureCareAuthSession();\n }\n\n return this.ensureCareAuthSessionPromise;\n };\n\n private doEnsureCareAuthSession = async (): Promise => {\n let session: ISessionData | null = null;\n try {\n const { data } = await this.signInApiSdk.getSession();\n if (data.access_token) {\n session = data;\n }\n } catch (err) {\n //\n }\n\n const accessToken: {\n access_token: string;\n expires_in: number | null;\n user_id: string | null;\n } =\n session && session.access_token\n ? {\n access_token: session.access_token,\n expires_in: session.expires,\n user_id: session.user_id\n }\n : this.getGuestAuthToken();\n\n this.accessTokenExpirationDate = new Date(\n new Date().getTime() + (accessToken.expires_in || DEFAULT_EXPIRATION_TIME_MS)\n );\n\n const newSession = new AuthSession(\n accessToken.access_token,\n accessToken.user_id ? TOKEN_TYPE.USER : TOKEN_TYPE.GUEST,\n accessToken.expires_in,\n accessToken.user_id\n );\n\n this.careAuthSession.updateAuthSession(newSession);\n };\n\n public ensureRequestTransformer = () => {\n if (!this.requestTransformer) {\n this.requestTransformer = this.createRequestTransformer();\n this.httpTransport.addRequestTransformer(this.requestTransformer);\n }\n };\n}\n","import { action, computed, observable } from 'mobx';\n\nexport class GuestUser {\n @observable public signUpRequired: boolean = true;\n @observable private _email: string = '';\n\n constructor(email: string) {\n this._email = email;\n }\n\n @computed\n get email() {\n return this._email;\n }\n\n @action\n public setEmail = (email: string) => {\n this._email = email;\n };\n}\n","import { GuestUser } from '../domain/entities/GuestUser';\nimport { BrowserStorage } from '@estee/elc-universal-utils';\n\nexport class GuestRepository {\n private _guestUser: GuestUser;\n\n public fetchGuestUser = () => {\n return BrowserStorage.getItem('guestEmail', 'sessionStorage');\n };\n\n public saveGuestUser = () => {\n BrowserStorage.setItem('guestEmail', this._guestUser.email, 'sessionStorage');\n };\n\n public getGuestUser = async () => {\n const init = async () => {\n const isGuestUser = this.fetchGuestUser();\n\n return new GuestUser(isGuestUser || '');\n };\n\n if (!this._guestUser) {\n this._guestUser = await init();\n }\n\n return this._guestUser;\n };\n}\n","import { action, computed, observable } from 'mobx';\nimport { FormStore, FormValidator } from '@estee/elc-form';\nimport { ConfigStore } from '../../service-setup/ConfigStore';\n\nexport interface ISignUpFormStore {\n email: string;\n}\n\nexport interface ISignUpFormStoreConfig {\n formValidator: FormValidator;\n configStore: ConfigStore;\n}\n\nexport class SignUpFormStore extends FormStore {\n public configStore: ConfigStore;\n @observable public isSignUpInProgress: boolean = false;\n\n constructor(signUpFormConfig: ISignUpFormStoreConfig) {\n super({\n initialValues: {\n email: ''\n },\n formValidator: signUpFormConfig.formValidator\n });\n this.configStore = signUpFormConfig.configStore;\n }\n\n @computed\n get isSignUpFormValid() {\n return this.isValid;\n }\n\n @action\n public updateSignUpProgress(isInProgress: boolean) {\n this.isSignUpInProgress = isInProgress;\n }\n}\n","import { ISignInApiSdkConfig, SignInApiSdk } from '../api/SignInApiSdk';\nimport { SignInRepository } from '~repositories/SignInRepository';\nimport { ConfigStore } from './ConfigStore';\nimport { Container } from 'hypo-container';\nimport { ServiceBusController } from './ServiceBusController';\nimport serviceNames, { SessionManagementService } from './SessionManagementService';\nimport { ServiceManager } from '@estee/elc-service';\nimport { root, ServiceInitializer, IAppConfig } from '@estee/elc-universal-utils';\nimport { AuthSession } from '~domain/entities/AuthSession';\nimport { AuthSessionRepository } from '~repositories/AuthSessionRepository';\nimport { GuestRepository } from '~repositories/GuestRepository';\nimport { GuestUser } from '~domain/entities/GuestUser';\nimport { SignUpFormStore } from '~stores/SignUpFormStore';\nimport { FormValidator } from '@estee/elc-form';\n\nexport const diContainer = new Container();\n\nexport const setConfig = (configJSON: IAppConfig) => {\n diContainer.config = configJSON;\n};\n\nexport const serviceInitializer: ServiceInitializer = async (config: IAppConfig) => {\n setConfig(config);\n\n const authRepo = diContainer.get(serviceNames.authSessionRepository);\n\n await authRepo.ensureRequestTransformer();\n};\n\ndiContainer\n .register(\n serviceNames.configStore,\n diContainer.factory((c) => new ConfigStore(c.config))\n )\n .register(serviceNames.formValidator, (c) => new FormValidator())\n .register(serviceNames.httpTransport, (c) => root.HttpTransport)\n .register(serviceNames.signInApiSdk, (c) => {\n const configStore: ConfigStore = c.get(serviceNames.configStore);\n const config: ISignInApiSdkConfig = {\n businessUnitId: configStore.config.businessUnitId,\n httpTransport: c.get(serviceNames.httpTransport),\n baseUrl: configStore.config.baseUrl,\n configStore\n };\n\n return new SignInApiSdk(config);\n })\n .register(\n serviceNames.signUpFormStore,\n (c) =>\n new SignUpFormStore({\n configStore: c.get(serviceNames.configStore),\n formValidator: c.get(serviceNames.formValidator)\n })\n )\n .register(\n serviceNames.serviceBusController,\n (c) =>\n new ServiceBusController(\n c.get(serviceNames.authSession),\n c.get(serviceNames.careAuthSession),\n c.get(serviceNames.authSessionRepository),\n c.get(serviceNames.guestRepository)\n )\n )\n .register(\n serviceNames.sessionManagementService,\n (c) => new SessionManagementService(serviceInitializer)\n )\n .register(serviceNames.guestRepository, (c) => new GuestRepository())\n .register(serviceNames.guestUser, (c) => new GuestUser(''))\n .register(serviceNames.signInRepository, (c) => new SignInRepository())\n .register(\n serviceNames.authSessionRepository,\n (c) =>\n new AuthSessionRepository({\n signInApiSdk: c.get(serviceNames.signInApiSdk),\n authSession: c.get(serviceNames.authSession),\n careAuthSession: c.get(serviceNames.careAuthSession),\n httpTransport: c.get(serviceNames.httpTransport),\n configStore: c.get(serviceNames.configStore)\n })\n )\n .register(serviceNames.authSession, (c) => new AuthSession(null, null, null, null))\n .register(serviceNames.careAuthSession, () => new AuthSession(null, null, null, null));\n\nexport const serviceStarter = ServiceManager.startService;\n"],"names":["name","version","SignInApiSdk","Api","constructor","config","super","guestTokenRequest","this","httpTransport","post","url","tokenUrl","body","grant_type","data","getLegacyGuestTokenIndependentFromApi","URL","baseUrl","request","method","JSON","stringify","headers","getStaticGlobalHeaders","response","fetch","toString","json","getSession","sessionMgmtUrl","credentials","status","signIn","signInData","signOut","signOutData","authApiUrl","createSignInFormStore","SignInFormStore","SignInRepository","busy","ensureFormStore","formStore","isBusy","setIsBusy","email","values","setEmail","clearStore","ConfigStore","breakpoints","desktop","largeScreen","extraLargeScreen","updateConfig","ClearAuthSessionUseCase","authSessionRepository","execute","command","serviceCommands","clearSession","enableCareConfig","clearCareSession","ensureAuthSession","ensureCareAuthSession","AUTHENTICATION_SOURCES","Object","freeze","SIGN_IN","SIGN_UP","FORGOT_PASSWORD","REFRESH_AUTH_TOKEN","CARE","TOKEN_TYPE","GUEST","USER","COOKIES_NAMES","AUTH_TOKEN","AUTH_TYPE","CARE_AUTH_TOKEN","CARE_AUTH_TYPE","CARE_SIGNIN_STATE_NAME","BAD_CREDENTIALS","CAPTCHA","WARNING","FIRST_LOCK","SECOND_LOCK","CARE_SIGNIN_DATA_NAME","CARE_GUEST_SIGNIN_STATE_NAME","AUTHORIZATION_HEADER_NAME","AuthMode","AuthSession","token","tokenType","expiration","userId","isAuthenticated","isAuthSessionAvailable","updateToken","updateTokenType","updateExpiration","updateUserId","updateAuthSession","authSession","clearToken","setAuthSourceData","authSourceData","UpdateAuthSessionUseCase","targetAuthSession","source","careAuthSession","diContainer","get","SetEmailUseCase","signInRepository","ServiceBusController","guestRepository","guestEmail","getGuestUser","getLegacyGuestAuthToken","getLegacyAuthToken","getGuestAuthToken","access_token","getAccessToken","getUserId","updateAccessToken","payload","setFormEmail","setEmailUseCase","signedOut","tokenChanged","storeInCookie","reaction","DEFAULT_EXPIRATION_TIME_MS","AuthSessionRepository","ensureAuthSessionPromise","ensureCareAuthSessionPromise","accessTokenExpirationDate","storeAuthSession","storeCareToken","encode","businessUnitId","window","location","origin","expires_in","user_id","signInApiSdk","error","result","doEnsureAuthSession","guestToken","setGuestAuthToken","err","console","createRequestTransformer","newHeaders","Headers","has","set","newSession","storedAuthToken","storedAuthSession","Date","getTime","doEnsureCareAuthSession","session","accessToken","expires","ensureRequestTransformer","requestTransformer","addRequestTransformer","configStore","accountConfig","authMode","authRequestState","guestAuthRequestState","setAuthRequestState","state","setGuestAuthRequestState","setAuthRequestStateData","getAuthRequestStateData","serialized","parse","tokenCookie","tokenTypeCookie","cookieTokenName","cookieTypeName","authToken","storedToken","storedTokenType","now","GuestUser","signUpRequired","_email","GuestRepository","fetchGuestUser","saveGuestUser","_guestUser","init","isGuestUser","SignUpFormStore","FormStore","signUpFormConfig","initialValues","formValidator","isSignUpInProgress","isSignUpFormValid","isValid","updateSignUpProgress","isInProgress","Container","setConfig","configJSON","serviceInitializer","authRepo","register","factory","c","FormValidator","SessionManagementService","serviceStarter","ServiceManager"],"sourceRoot":""}