{"version":3,"file":"static/js/services-group3.40f24182.chunk.js","mappings":"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","sources":["app-react/services/deep-link/deeplink-consts.ts","app-react/services/deep-link/deep-link.service.ts","app-react/services/deep-link/legacy/deep-link-builders/deeplink-json-object-builder/deeplink-json-object-builder.ts","app-react/services/deep-link/legacy/deep-link-parsers/parsers/deep-link-json-object-parser/deep-link-json-object-parser.ts","app-react/services/deep-link/legacy/deep-link-parsers/deep-link-parser.service.ts","app-react/services/deep-link/unified/deep-link-action-factory/unified-deep-link-action.ts","app-react/services/deep-link/unified/deep-link-action-factory/deep-link-actions-factory-unified.strategy.ts","app-react/services/deep-link/legacy/deep-link-actions/casino-legacy-deep-link-action-base.ts","app-react/services/deep-link/legacy/deep-link-actions/cashier/cashier-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/register/register-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/login/login-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/my-account/my-account-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/play-game/play-game-deep-link-action-base.ts","app-react/services/deep-link/legacy/deep-link-actions/play-game/play-game-real/play-game-real-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/play-game/play-game-demo/play-game-demo-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/redirect/redirect-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/terminate/terminate-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/upload-document/my-account-upload-document-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/free-to-play/free-to-play-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/open-list/open-list-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/freeplay/freeplay-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/control-center/control-center-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/forgot-password/forgot-password.deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/cross/cross-deep-link-action.ts","app-react/services/deep-link/legacy/deep-link-action-factory/deep-link-actions-factory-legacy.strategy.ts","app-react/services/deep-link/deep-link-action-factory/deep-link-actions-factory.service.ts"],"sourcesContent":["export const DEEP_LINK_HASH_PARAM = 'deeplink=';\nexport const DEEP_LINK_QUERY_PARAM = 'deeplink';","import {ServiceBase} from '../ServiceBase';\nimport {IDeepLinkService} from './deep-link.service.interface';\nimport {IServiceFactoryExtended} from '../service-factory-extended.interface';\nimport {Check} from '@sparkware/app-utils';\nimport { observable, reaction, runInAction, makeObservable } from 'mobx';\nimport {IReactionPublic} from 'mobx';\nimport {ICasinoDeepLinkAction} from \"./casino-deep-link-action.interface\";\nimport { DEEP_LINK_QUERY_PARAM } from './deeplink-consts';\n\n\n\n/**\n Deep link can come from\n 1. route\n 2. SDK event\n 3. direct call window.orbit.deepLink\n 4. post message\n */\n\nexport class DeepLinkService extends ServiceBase implements IDeepLinkService {\n\n constructor(services: IServiceFactoryExtended) {\n super(services);\n\n makeObservable(this);\n\n this._subscribeToCurrentUriReaction(true);\n\n this.services.sdk.events.onDeepLinkReceived(this._executeDeepLinkFromSdkEvent);\n this.services.window.subscribeTo.postMessage(this._executeDeepLinkFromPostMessage);\n }\n\n\n private _subscribeToCurrentUriReaction(fireImmediately: boolean): void{\n reaction(() => this.services.location.currentUri,\n (arg, prev, reaction) => this._executeDeepLinkFromCurrentRoute(reaction),\n {\n fireImmediately: fireImmediately\n });\n }\n\n @observable.ref\n lastTimeDeepLinkWasExecuted: number;\n\n\n get isExecuting(): boolean {\n return Boolean(this._currentExecutingAction);\n }\n\n\n private async _waitForAutologin(): Promise {\n try {\n await this.services.user.waitForAutoLogin();\n } catch (err) {\n // we will continue the deep link flow if waiting for auto login to complete fails.\n // if there are any issues with the auto login probably the login screen will pop up\n // depending on the deep link action\n this.services.logger.error('Waiting for auto login to complete failed', err);\n }\n }\n\n private _currentExecutingAction: Promise | null = null;\n\n private async _waitForCurrentExecutingAction(): Promise {\n if(!this._currentExecutingAction) {\n return;\n }\n\n try {\n await this._currentExecutingAction;\n } catch (err) {\n this.services.logger.error(\"Current executing action failed\", err);\n }\n }\n\n private async _executeAction(action: ICasinoDeepLinkAction): Promise {\n\n if(this.isExecuting) {\n await this._waitForCurrentExecutingAction();\n }\n\n try {\n this._currentExecutingAction = action.execute();\n await this._currentExecutingAction;\n } finally {\n this._currentExecutingAction = null;\n runInAction(() => this.lastTimeDeepLinkWasExecuted = Date.now())\n }\n\n }\n\n\n\n private async _executeDeepLinkFromCurrentRoute(reactionDisposer: IReactionPublic): Promise {\n\n\n try {\n reactionDisposer.dispose(); // we unsubscribe from this.services.location.currentUri reaction so if the currentUri changes inside the waitForAutoLogin or for any other reasons it will not trigger another deep link execution\n\n await this._waitForAutologin();\n\n // In case there is an auto login we want to create the deep link action after the auto login finishes\n // so any code that looks for isAuthorized during the action creation to find it on true\n let action = await (await this.services.deepLinkActionsFactory).createActionFromCurrentRoute();\n if(!action) {\n return;\n }\n\n this.services.logger.debug('Execute deep link from current route: ' + this.services.location.currentUri.toString());\n\n const urlWithoutHash = this.services.location.currentUri.removeSearchParam(DEEP_LINK_QUERY_PARAM).getUrlWithoutHash();\n await this.services.location.replace(urlWithoutHash);\n\n await this._executeAction(action);\n\n } finally {\n this._subscribeToCurrentUriReaction(false);\n }\n\n\n }\n\n private _executeDeepLinkFromSdkEvent = async (deepLinkObject: any): Promise => {\n\n await this._waitForAutologin();\n\n let action = await (await this.services.deepLinkActionsFactory).createActionFromDeepLinkObject(deepLinkObject);\n if(action) {\n this.services.logger.debug('Execute deep link object in _executeDeepLinkFromSdkEvent: ' + JSON.stringify(deepLinkObject));\n return this._executeAction(action);\n } else if (Check.isNullOrUndefined(deepLinkObject)){\n this.services.logger.warning(`${deepLinkObject} deep link object received from SDK DEEPLINK_RECEIVED event`);\n } else {\n this.services.logger.error(`Received deep link object from the SDK DEEPLINK_RECEIVED is not a valid deep link object. Received data: ${JSON.stringify(deepLinkObject)}`);\n }\n };\n\n async executeDeepLink(deepLinkObject: any, navigate?: any): Promise {\n if(!Check.isObject(deepLinkObject)) {\n this.services.logger.error(`_executeDeepLinkFromDirectCall was called with a deepLinkObject argument that is not an object`);\n return;\n }\n if(Check.isEmpty(deepLinkObject)) {\n this.services.logger.error(`_executeDeepLinkFromDirectCall was called with an empty deep deepLinkObject argument`);\n return;\n }\n\n this.services.logger.debug('Execute deep link object in executeDeepLink: ' + JSON.stringify(deepLinkObject));\n\n await this._waitForAutologin();\n\n let action = await (await this.services.deepLinkActionsFactory).createActionFromDeepLinkObject(deepLinkObject);\n if(action) {\n if(Check.isString(navigate)) {\n this.services.location.push(navigate as string);\n } else if(Check.isArrayOfStrings(navigate)) {\n if(navigate.length > 0) {\n await this.services.location.push('/' + (navigate as Array).join('/'));\n }\n } else if(!Check.isNullOrUndefined(navigate)) {\n this.services.logger.error(`expecting _executeDeepLinkFromDirectCall to be called with a navigate parameter that is string or an array of strings but it was ${JSON.stringify(navigate)}`);\n }\n\n await this._executeAction(action);\n } else {\n this.services.logger.error(`_executeDeepLinkFromDirectCall was called with an invalid deep link object ${JSON.stringify(deepLinkObject)}`);\n }\n };\n\n private _executeDeepLinkFromPostMessage = async (postEvent: any): Promise => {\n let messageData = postEvent && postEvent.data;\n if(!messageData) {\n return;\n }\n\n if(messageData.ActionName !== 'deeplink') {\n return;\n }\n\n\n if(!messageData.data) {\n this.services.logger.error(`Received deep link post message action with ${messageData.data} data`);\n return;\n }\n\n let deepLinkJsonObject = null;\n\n try {\n deepLinkJsonObject = JSON.parse(messageData.data);\n } catch (err) {\n this.services.logger.error(`Failed to parse deep link object from post message: ${messageData.data}`, err);\n return;\n }\n\n await this._waitForAutologin();\n\n let action = await (await this.services.deepLinkActionsFactory).createActionFromDeepLinkObject(deepLinkJsonObject);\n\n if(action) {\n this.services.logger.debug('Execute deep link object in _executeDeepLinkFromPostMessage: ' + messageData.data);\n return this._executeAction(action);\n } else {\n this.services.logger.error(`Received post message with invalid deep link object ${messageData.data}`);\n }\n\n }\n}\n\n","import {IDeepLinkBuilder} from '../deep-link-builder.interface';\nimport {ICasinoLegacyDeepLinkActionChain} from '../../deep-link-actions/casino-legacy-deep-link-action-chain';\n\nexport class DeepLinkJsonObjectBuilder implements IDeepLinkBuilder {\n buildDeepLinkUrl(actionsChain: ICasinoLegacyDeepLinkActionChain): string {\n\n let deepLinkObject: any = {};\n let resultedMarketingParams: any = {};\n\n let currentActionIndex = -1;\n\n let currentActionsChainPointer: ICasinoLegacyDeepLinkActionChain | null = actionsChain;\n while(currentActionsChainPointer) {\n let actionPropName = '';\n let idPropName = '';\n\n if(currentActionIndex === -1) {\n actionPropName = 'action';\n idPropName = 'id'\n } else if(currentActionIndex === 0) {\n actionPropName = 'action_next';\n idPropName = 'id_next'\n } else {\n actionPropName = 'action_next' + currentActionIndex;\n idPropName = 'id_next' + currentActionIndex;\n }\n\n deepLinkObject[actionPropName] = currentActionsChainPointer.descriptor.action;\n if(currentActionsChainPointer.descriptor.actionParams && currentActionsChainPointer.descriptor.actionParams.id) {\n deepLinkObject[idPropName] = currentActionsChainPointer.descriptor.actionParams.id;\n }\n\n let marketingParams = currentActionsChainPointer.descriptor.marketingParams;\n if(marketingParams) {\n if(marketingParams.dl) {\n resultedMarketingParams.dl = marketingParams.dl;\n }\n\n if(marketingParams.wtc) {\n resultedMarketingParams.wtc = marketingParams.wtc;\n }\n }\n\n currentActionsChainPointer = currentActionsChainPointer.nextAction;\n currentActionIndex++;\n }\n\n if(Object.keys(deepLinkObject).length === 0) {\n return ''\n }\n\n deepLinkObject = {...deepLinkObject, ...resultedMarketingParams};\n\n // replace \" with ' - for some reason cause to JSON parsing to fail.\n const deepLinkObjectAfterConvert = JSON.stringify(deepLinkObject).split('\"').join('\\'')\n\n return \"#deeplink=\" + deepLinkObjectAfterConvert;\n }\n}\n","import {DeepLinkActionDescriptor, IDeepLinkParser} from '../deep-link-parser.interface';\nimport {Check} from '@sparkware/app-utils';\nimport {IDeepLinkBuilder} from '../../../deep-link-builders/deep-link-builder.interface';\nimport {DeepLinkJsonObjectBuilder} from '../../../deep-link-builders/deeplink-json-object-builder/deeplink-json-object-builder';\n\n\n\nexport class DeepLinkJsonObjectParser implements IDeepLinkParser {\n\n constructor(public deepLinkObject: any) {\n\n }\n\n\n getActionsDescriptors(): DeepLinkActionDescriptor[] {\n\n let marketingParams = {\n dl: this.deepLinkObject.dl,\n wtc: this.deepLinkObject.wtc\n };\n\n const promoCode = this.deepLinkObject.promoCode;\n\n\n let result: DeepLinkActionDescriptor[] = [];\n\n result.push({\n action: this.deepLinkObject.action,\n marketingParams: marketingParams,\n promoCode: promoCode,\n actionParams: {\n id: this.deepLinkObject.id\n }\n });\n\n for(let i = 0; i <= 2; i++) {\n let actionNextPropName = i === 0 ? 'action_next' : 'action_next' + i;\n let idNextPropName = i === 0 ? 'id_next' : 'id_next' + i;\n\n if(!Check.isNullOrUndefined(this.deepLinkObject[actionNextPropName])) {\n let params = {\n id: this.deepLinkObject[idNextPropName],\n };\n\n result.push({\n action: this.deepLinkObject[actionNextPropName],\n marketingParams: marketingParams,\n promoCode: promoCode,\n actionParams: params\n });\n }\n }\n\n return result;\n }\n\n\n getDeepLinkBuilder(): IDeepLinkBuilder {\n return new DeepLinkJsonObjectBuilder();\n }\n\n}\n","import {ServiceBase} from '../../../ServiceBase';\nimport {IDeepLinkParserService} from './deep-link-parser.service.interface';\nimport {IDeepLinkParser} from './parsers/deep-link-parser.interface';\nimport {DeepLinkJsonObjectParser} from './parsers/deep-link-json-object-parser/deep-link-json-object-parser';\nimport {Check} from '@sparkware/app-utils';\nimport {decodeUriComponentRecursive} from '../../../../../utils/url-utils';\nimport {DEEP_LINK_HASH_PARAM, DEEP_LINK_QUERY_PARAM} from \"../../deeplink-consts\";\n\nconst SPECIFIC_NAVIGATION = 'specificNavigation';\nconst SPECIFIC_NAVIGATION_PARAM = SPECIFIC_NAVIGATION + '=';\n\n\nexport class DeepLinkParserService extends ServiceBase implements IDeepLinkParserService {\n getParserFromCurrentRoute(): IDeepLinkParser | null {\n\n if(!this.services.location.currentUri) {\n return null;\n }\n\n let deepLinkJson = this._extractDeepLinkJsonFromFragment();\n\n\n if(!deepLinkJson) {\n deepLinkJson = this._extractDeepLinkJsonFromDeepLinkQueryParam();\n }\n\n let isDeepLinkFromSpecificNavigation = false;\n if(!deepLinkJson) {\n deepLinkJson = this._extractDeepLinkJsonFromSpecificNavigationQueryParam();\n if(deepLinkJson) {\n isDeepLinkFromSpecificNavigation = true;\n }\n }\n\n\n if(Check.isEmpty(deepLinkJson)) {\n return null;\n }\n\n try {\n let deepLinkObject: string | null = null;\n if(Check.isString(deepLinkJson)) {\n deepLinkObject = JSON.parse(deepLinkJson);\n } else if(Check.isObject(deepLinkJson)) {\n deepLinkObject = deepLinkJson;\n } else {\n return null;\n }\n\n if(this._isDeepLinkObject(deepLinkObject)) {\n return new DeepLinkJsonObjectParser(deepLinkObject);\n }\n\n return null;\n\n } catch (err) {\n if(isDeepLinkFromSpecificNavigation) {\n this.services.logger.info(`Current route specific navigation doesn't contain a deep link: ${this.services.location.currentUri.toString()}`);\n } else {\n this.services.logger.error(`Failed to parse deep link object from current route ${this.services.location.currentUri.toString()}`);\n }\n\n return null;\n }\n }\n\n\n getParserFromDeepLinkObject(deepLinkObject: any): IDeepLinkParser | null {\n if(this._isDeepLinkObject(deepLinkObject)) {\n return new DeepLinkJsonObjectParser(deepLinkObject);\n }\n return null;\n }\n\n private _isDeepLinkObject(obj: any): boolean {\n if(!Check.isObject(obj)) {\n return false;\n }\n\n if(!obj['action']){\n return false;\n }\n\n return true;\n }\n\n private _extractDeepLinkJsonFromFragment(): string | null {\n let fragment = this.services.location.currentUri.hash.value;\n if(!fragment) {\n return null;\n }\n\n fragment = decodeUriComponentRecursive(fragment);\n\n if(fragment.indexOf(DEEP_LINK_HASH_PARAM) !== 0 && fragment.indexOf(SPECIFIC_NAVIGATION_PARAM) !== 0) {\n return null;\n }\n\n return fragment.replace(DEEP_LINK_HASH_PARAM, '').replace(SPECIFIC_NAVIGATION_PARAM, '');\n }\n\n\n\n private _extractDeepLinkJsonFromDeepLinkQueryParam(): string | null {\n if (this.services.location.currentUri.queryParams.isEmpty) {\n return null;\n }\n\n return decodeUriComponentRecursive(this.services.location.currentUri.queryParams.getParamValue(DEEP_LINK_QUERY_PARAM) || '');\n }\n\n private _extractDeepLinkJsonFromSpecificNavigationQueryParam(): string | null {\n\n if (this.services.location.currentUri.queryParams.isEmpty) {\n return null;\n }\n\n return decodeUriComponentRecursive(this.services.location.currentUri.queryParams.getParamValue(SPECIFIC_NAVIGATION) || '');\n }\n\n}\n","import {ICasinoDeepLinkAction} from \"../../casino-deep-link-action.interface\";\nimport {IServiceFactoryExtended} from \"../../../service-factory-extended.interface\";\nimport {\n AppIdentifiers,\n IDeepLink,\n IPerformActionPayloadBase, IRegisterActionData,\n TriggerType\n} from \"@sparkware/uc-sdk-core\";\nimport {CHANNEL_SOURCE} from \"../../../../../common/const/casinofied-analytics-consts\";\nimport {\n IFullCashierSpecificParams\n} from \"@sparkware/uc-sdk-core/lib/apps/full-cashier/full-cashier.interfaces\";\n\n\nexport class UnifiedDeepLinkAction implements ICasinoDeepLinkAction {\n constructor(private readonly services: IServiceFactoryExtended,\n private readonly deepLink: IDeepLink) {\n }\n async execute(): Promise {\n\n let actions = this.deepLink.actions;\n for(let i = 0; i < actions.length; i++) {\n let deepLinkAction = actions[i];\n const channelAction = this.services.messageBroker.channels.performAction.topics[deepLinkAction.actionID];\n if(!channelAction) {\n throw new Error(`Invalid deep link action id ${deepLinkAction.actionID}`);\n }\n\n\n let actionData: IRegisterActionData = {\n ...deepLinkAction.actionData\n }\n\n if(deepLinkAction.actionID === \"register\") {\n\n const cashierActionIndex = actions.findIndex(a => a.actionID === \"openCashier\");\n if(cashierActionIndex >= 0) {\n let cashierParams = actions[cashierActionIndex].appSpecificParameters as IFullCashierSpecificParams;\n if(cashierParams) {\n actionData = {\n ...actionData,\n promoCode: cashierParams.promoCode\n }\n }\n }\n }\n\n const correlationId = this.services.tools.getGuid();\n const payload: IPerformActionPayloadBase = {\n correlationID: correlationId,\n actionData: actionData,\n launchInfo: {\n channel: {\n area: this.deepLink.area,\n source: this.deepLink.source,\n element: this.deepLink.element ?? CHANNEL_SOURCE.casinoClient\n },\n appSpecificParameters: deepLinkAction.appSpecificParameters,\n businessCorrelationID: correlationId,\n trigger: TriggerType.automaticFlow,\n sourceAppID: AppIdentifiers.CasinoClient,\n sourceAppVersion: this.services.sdk.getSkin().getVersion()\n }\n };\n\n await channelAction.execute(payload as any);\n\n if(deepLinkAction.actionID === 'register') {\n return; // we ignore any other action that comes after registration action\n }\n\n }\n }\n\n}","import {IDeepLinkActionsFactoryService} from \"../../deep-link-action-factory/deep-link-actions-factory.service.inteface\";\nimport {ICasinoDeepLinkAction} from \"../../casino-deep-link-action.interface\";\nimport {IServiceFactoryExtended} from \"../../../service-factory-extended.interface\";\nimport {decodeUriComponentRecursive} from \"../../../../../utils/url-utils\";\nimport {DEEP_LINK_HASH_PARAM, DEEP_LINK_QUERY_PARAM} from \"../../deeplink-consts\";\nimport {UnifiedDeepLinkAction} from \"./unified-deep-link-action\";\n\n\nexport class DeepLinkActionsFactoryUnifiedStrategy implements IDeepLinkActionsFactoryService {\n constructor(private readonly services: IServiceFactoryExtended) {\n }\n\n async createActionFromCurrentRoute(): Promise {\n let jsonObject = this._extractDeepLinkJsonFromHash();\n if(!jsonObject) {\n jsonObject = this._extractDeepLinkJsonFromDeepLinkQueryParam();\n }\n return this.createActionFromDeepLinkObject(jsonObject);\n }\n\n private _extractDeepLinkJsonFromHash(): any {\n let hash = this.services.location.currentUri.hash.value;\n if(!hash) {\n return null;\n }\n\n hash = decodeUriComponentRecursive(hash);\n\n if(hash.indexOf(DEEP_LINK_HASH_PARAM) !== 0) {\n return null;\n }\n\n hash = hash.replace(DEEP_LINK_HASH_PARAM, '');\n\n try {\n return JSON.parse(hash);\n } catch (err) {\n this.services.logger.error(`Invalid unified deeplink format in hash: ${hash}`, err);\n return null;\n }\n\n }\n\n private _extractDeepLinkJsonFromDeepLinkQueryParam(): string | null {\n if (this.services.location.currentUri.queryParams.isEmpty) {\n return null;\n }\n\n const json = decodeUriComponentRecursive(this.services.location.currentUri.queryParams.getParamValue(DEEP_LINK_QUERY_PARAM) || '');\n if(!json) {\n return null;\n }\n\n try {\n return JSON.parse(json);\n } catch (err) {\n this.services.logger.error(`Invalid unified deeplink format in query string: ${json}`, err);\n return null;\n }\n }\n\n\n async createActionFromDeepLinkObject(deepLinkObject: any): Promise {\n if(deepLinkObject?.actions) {\n return new UnifiedDeepLinkAction(this.services, deepLinkObject);\n }\n\n return null;\n }\n\n}","import {IServiceFactoryExtended} from '../../../service-factory-extended.interface';\nimport {DeepLinkActionDescriptor} from '../deep-link-parsers/parsers/deep-link-parser.interface';\nimport {ICasinoLegacyDeepLinkActionChain} from './casino-legacy-deep-link-action-chain';\nimport {IDeepLinkBuilder} from '../deep-link-builders/deep-link-builder.interface';\nimport {DeepLinkExecutionContext} from './deep-link-execution-context.interface';\n\n\nexport abstract class CasinoLegacyDeepLinkActionBase implements ICasinoLegacyDeepLinkActionChain {\n\n public constructor(protected context: DeepLinkExecutionContext) {\n\n }\n\n shouldSkipAction = false;\n skipAction(): void {\n this.shouldSkipAction = true;\n }\n\n get services(): IServiceFactoryExtended {\n return this.context.services;\n }\n\n get descriptor(): DeepLinkActionDescriptor{\n return this.context.descriptor;\n }\n\n get nextAction(): ICasinoLegacyDeepLinkActionChain | null {\n return this.context.nextAction;\n }\n\n get deepLinkBuilder(): IDeepLinkBuilder{\n return this.context.deepLinkBuilder;\n }\n\n\n abstract execute(): Promise;\n\n protected _executeNextAction(): Promise {\n let nextAction = this.context.nextAction;\n while (nextAction) {\n if(nextAction.shouldSkipAction) {\n nextAction = nextAction.nextAction;\n } else {\n return this.context.nextAction.execute();\n }\n }\n\n return Promise.resolve();\n }\n\n deepLinkToString(): string {\n let result = `\"action\":\"${this.descriptor.action}\"`;\n Object.keys(this.descriptor.actionParams).forEach(param => {\n result += `,\"${param}\":\"${this.descriptor.actionParams[param]}\"`;\n });\n return \"{\" + result + \"}\";\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\nimport {CHANNEL_ELEMENTS, CHANNEL_SOURCE} from \"../../../../../../common/const/casinofied-analytics-consts\";\nimport {AppIdentifiers, AreaType, CashierSessionType, TriggerType} from \"@sparkware/uc-sdk-core\";\nimport {IFullCashierSpecificParams} from \"@sparkware/uc-sdk-core/lib/apps/full-cashier/full-cashier.interfaces\";\n\n\nexport class CashierDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\n\n async execute(): Promise {\n const businessCorrelationId = this.services.tools.getGuid();\n await this.services.messageBroker.channels.performAction.topics.openCashier.execute({\n correlationID: businessCorrelationId,\n launchInfo: {\n businessCorrelationID: businessCorrelationId,\n trigger: TriggerType.automaticFlow,\n sourceAppVersion: this.services.sdk.getSkin().getVersion(),\n channel: {\n source: CHANNEL_SOURCE.casinoClient,\n area: AreaType.externalClick,\n element: CHANNEL_ELEMENTS.deepLink\n },\n sourceAppID: AppIdentifiers.CasinoClient,\n appSpecificParameters: {\n sessionType: CashierSessionType.FullCashier,\n ...this.getCashierSpecificParameters()\n }\n }\n });\n\n await this._executeNextAction();\n }\n\n public getCashierSpecificParameters(): Partial {\n const options: Partial = {\n sessionType: CashierSessionType.FullCashier\n };\n\n let params = this.descriptor.actionParams && this.descriptor.actionParams.id;\n if(params) {\n let cashierParams = params.toString().split(',');\n if(cashierParams.length > 0) {\n options.sessionType = cashierParams[0].trim();\n if(cashierParams.length > 1) {\n options.promoCode = cashierParams[1].trim();\n }\n }\n }\n\n if(this.descriptor.promoCode) {\n options.promoCode = this.descriptor.promoCode;\n }\n\n return options;\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\nimport {CashierDeepLinkAction} from \"../cashier/cashier-deeplink-action\";\nimport {IRegisterActionData} from \"@sparkware/uc-sdk-core\";\n\nexport class RegisterDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\n\n private _findCashierActionAndSkipAllSubsequentActions(): CashierDeepLinkAction | null {\n let nextAction = this.nextAction;\n let cashierAction: CashierDeepLinkAction | null = null;\n while (nextAction) {\n if(nextAction instanceof CashierDeepLinkAction) {\n cashierAction = nextAction;\n }\n\n nextAction.skipAction();\n nextAction = nextAction.nextAction;\n }\n\n return cashierAction;\n }\n\n async execute(): Promise {\n\n const cashierDeepLinkAction = this._findCashierActionAndSkipAllSubsequentActions();\n\n let cashierSpecificParams: IRegisterActionData = {};\n if(cashierDeepLinkAction) {\n const params = cashierDeepLinkAction.getCashierSpecificParameters();\n if(params?.promoCode) {\n cashierSpecificParams = {\n promoCode: params.promoCode\n }\n }\n cashierDeepLinkAction.skipAction();\n }\n\n if(this.descriptor.promoCode) {\n cashierSpecificParams.promoCode = this.descriptor.promoCode;\n }\n\n await this.services.messageBroker.channels.performAction.topics.register.execute({\n actionData: {\n ...this.descriptor.marketingParams,\n ...cashierSpecificParams\n }\n });\n await this._executeNextAction();\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\n\nexport class LoginDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\n async execute(): Promise {\n await this.services.messageBroker.channels.performAction.topics.login.execute({});\n await this._executeNextAction();\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\n\nexport class MyAccountDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\n async execute(): Promise {\n let tabId = this.descriptor.actionParams?.id && parseInt(this.descriptor.actionParams.id);\n await this.services.messageBroker.channels.performAction.topics.openMyAccount.execute({\n actionData: {\n tabId: tabId\n }\n });\n\n await this._executeNextAction();\n }\n\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\n\nexport abstract class PlayGameDeepLinkActionBase extends CasinoLegacyDeepLinkActionBase {\n\n protected abstract getIsRealMode(): boolean;\n\n // Play Game never execute the next action\n async execute(): Promise {\n\n const gameType = this._getGameType();\n\n if(!gameType) {\n return;\n }\n\n await this.services.messageBroker.channels.performAction.topics.openCasinoGame.execute({\n actionData: {\n gameType: gameType,\n isReal: this.getIsRealMode()\n }\n });\n }\n\n\n private _getGameType(): number | null | undefined {\n if(!this.descriptor.actionParams && !this.descriptor.actionParams.id) {\n this.services.logger.error('No parameters were specified for play game deep link action');\n return null;\n }\n let gameTypes = this.descriptor.actionParams.id.toString().split(',').map(gameType => gameType.trim());\n\n if(gameTypes.length === 1) {\n return parseInt(gameTypes[0]);\n }\n\n if(gameTypes.length > 1) {\n if(this.services.device.os.isMobileOS) {\n return parseInt(gameTypes[1]);\n } else {\n return parseInt(gameTypes[0]);\n }\n }\n }\n\n\n}\n","import {PlayGameDeepLinkActionBase} from '../play-game-deep-link-action-base';\n\nexport class PlayGameRealDeepLinkAction extends PlayGameDeepLinkActionBase {\n protected getIsRealMode(): boolean {\n return true;\n }\n}\n","import {PlayGameDeepLinkActionBase} from '../play-game-deep-link-action-base';\n\nexport class PlayGameDemoDeepLinkAction extends PlayGameDeepLinkActionBase {\n protected getIsRealMode(): boolean {\n return false;\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\n\nexport class RedirectDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\n async execute(): Promise {\n\n let id:string = this.descriptor.actionParams && this.descriptor.actionParams.id;\n if(id) {\n await this.services.location.push(id);\n }\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\n\nexport class TerminateDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\n execute(): Promise {\n return Promise.resolve();\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\n\nexport class MyAccountUploadDocumentDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\n\n async execute(): Promise {\n await this.services.messageBroker.channels.performAction.topics.uploadDocumentsFromCashier.execute({});\n }\n}\n","import { CasinoLegacyDeepLinkActionBase } from \"../casino-legacy-deep-link-action-base\";\nimport {\n CasinoFreeToPlayGameStage\n} from \"@sparkware/uc-sdk-core/lib/apps/casino-free-to-play/casino-free-to-play.interfaces\";\nimport {AppIdentifiers, AreaType, TriggerType} from \"@sparkware/uc-sdk-core\";\nimport {CHANNEL_ELEMENTS, CHANNEL_SOURCE} from \"../../../../../../common/const/casinofied-analytics-consts\";\n\nexport class FreeToPlayDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\n async execute(): Promise {\n\n const id = this.descriptor.actionParams.id;\n\n let gameStage: CasinoFreeToPlayGameStage;\n switch (id) {\n case \"1\":\n gameStage = CasinoFreeToPlayGameStage.DailyWish;\n break;\n case \"2\":\n gameStage = CasinoFreeToPlayGameStage.DepositWheel;\n break;\n\n default:\n gameStage = CasinoFreeToPlayGameStage.MiniArena;\n break;\n }\n\n await this.services.messageBroker.channels.performAction.topics.openCasinoFreeToPlay.execute({\n launchInfo: {\n businessCorrelationID: this.services.tools.getGuid(),\n channel: {\n area: AreaType.externalClick,\n element: CHANNEL_ELEMENTS.deepLink,\n source: CHANNEL_SOURCE.casinoClient\n },\n appSpecificParameters: {\n gameStage: gameStage\n },\n sourceAppVersion: this.services.sdk.getSkin().getVersion(),\n sourceAppID: AppIdentifiers.CasinoClient,\n trigger: TriggerType.automaticFlow\n }\n });\n\n await this._executeNextAction();\n }\n\n\n}","import { SwiperGamesListConfiguration } from \"../../../../configurations/config-data-sections/arenas.configuration\";\nimport {CasinoLegacyDeepLinkActionBase} from \"../casino-legacy-deep-link-action-base\";\n\n\nabstract class OpenListDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\n abstract getListConfig(id: string): SwiperGamesListConfiguration;\n\n async execute() {\n const id = this.descriptor.actionParams.id?.toString();\n let swiper: SwiperGamesListConfiguration = this.getListConfig(id);\n if (swiper) {\n const verticalGamesList = await this.services.verticalGamesList;\n await verticalGamesList.renderList(swiper);\n } else {\n this.services.logger.error(`For deeplink action ${this.descriptor.action} cannot find list with specified id: ${id}`);\n }\n }\n}\n\nexport class OpenListDeeplinkByTitleAction extends OpenListDeeplinkAction {\n getListConfig(title: string): SwiperGamesListConfiguration {\n return this.services.configuration.getGamesListByTitle(title);\n }\n}\n\nexport class OpenListDeeplinkByIdAction extends OpenListDeeplinkAction {\n getListConfig(id: string): SwiperGamesListConfiguration {\n return this.services.configuration.getGamesListById(Number(id));\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\n\nexport class FreePlayDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\n async execute(): Promise {\n\n\n if(!await this.services.user.ensureUserIsLoggedIn('FreePlayDeepLinkAction')){\n throw new Error('FreePlayDeepLinkAction failed because user is not logged in')\n }\n\n this.services.freePlay.registerActionToExecuteWhenFreePlayIsAvailable(async () => {\n if(this.services.freePlay.hasVouchers) {\n (await this.services.userMenu).openRewards();\n }\n });\n\n await this._executeNextAction();\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from \"../casino-legacy-deep-link-action-base\";\nimport {\n AppIdentifiers,\n AreaType,\n ControlCenterDeeplink,\n ControlCenterOpenSource,\n IControlCenterFullSpecificParams,\n TriggerType\n} from \"@sparkware/uc-sdk-core\";\nimport {CHANNEL_ELEMENTS, CHANNEL_SOURCE} from \"../../../../../../common/const/casinofied-analytics-consts\";\nimport {Check} from \"@sparkware/app-utils\";\n\nexport class ControlCenterDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\n async execute() {\n\n let params = this._extractParams(this.descriptor.actionParams?.id);\n\n await this.services.messageBroker.channels.performAction.topics.openControlCenterFull.execute({\n launchInfo: {\n businessCorrelationID: this.services.tools.getGuid(),\n channel: {\n area: AreaType.externalClick,\n element: CHANNEL_ELEMENTS.deepLink,\n source: CHANNEL_SOURCE.casinoClient\n },\n appSpecificParameters: {\n source: ControlCenterOpenSource.Lobby,\n ...params\n },\n sourceAppVersion: this.services.sdk.getSkin().getVersion(),\n sourceAppID: AppIdentifiers.CasinoClient,\n trigger: TriggerType.automaticFlow\n }\n });\n await this._executeNextAction();\n }\n\n private _extractParams(params: string | number | undefined | null): Partial {\n if(Check.isEmpty(params)) {\n return {\n deeplink: ControlCenterDeeplink.Main\n };\n }\n if(Check.isNumber(params)) {\n return {\n deeplink: params\n };\n }\n\n const splittedParams = params.split('|');\n\n let deeplink = parseInt(splittedParams[0]);\n if(!Check.isNumber(deeplink)) {\n deeplink = ControlCenterDeeplink.Main;\n }\n\n let isIncreaseLimitsDisabled = splittedParams[1]?.toLowerCase() === 'true';\n return {\n deeplink: deeplink,\n isIncreaseLimitsDisabled: isIncreaseLimitsDisabled\n };\n\n }\n}\n","import {CasinoLegacyDeepLinkActionBase} from \"../casino-legacy-deep-link-action-base\";\n\nexport class ForgotPasswordDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\n async execute(): Promise {\n await this.services.messageBroker.channels.performAction.topics.openForgotPassword.execute({});\n await this._executeNextAction();\n }\n}","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\n\nexport class CrossDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\n async execute(): Promise {\n const id = this.descriptor.actionParams.id;\n switch (id) {\n case 'poker':\n await this.services.linksNavigation.openPoker();\n break;\n\n case 'sport':\n await this.services.linksNavigation.openSport();\n break;\n }\n\n await this._executeNextAction();\n }\n}\n","import {IDeepLinkActionsFactoryService} from \"../../deep-link-action-factory/deep-link-actions-factory.service.inteface\";\nimport {CashierDeepLinkAction} from \"../deep-link-actions/cashier/cashier-deeplink-action\";\nimport {RegisterDeepLinkAction} from \"../deep-link-actions/register/register-deeplink-action\";\nimport {LoginDeepLinkAction} from \"../deep-link-actions/login/login-deeplink-action\";\nimport {MyAccountDeepLinkAction} from \"../deep-link-actions/my-account/my-account-deeplink-action\";\nimport {\n PlayGameRealDeepLinkAction\n} from \"../deep-link-actions/play-game/play-game-real/play-game-real-deeplink-action\";\nimport {\n PlayGameDemoDeepLinkAction\n} from \"../deep-link-actions/play-game/play-game-demo/play-game-demo-deeplink-action\";\nimport {RedirectDeepLinkAction} from \"../deep-link-actions/redirect/redirect-deeplink-action\";\nimport {TerminateDeepLinkAction} from \"../deep-link-actions/terminate/terminate-deeplink-action\";\nimport {\n MyAccountUploadDocumentDeeplinkAction\n} from \"../deep-link-actions/upload-document/my-account-upload-document-deeplink-action\";\nimport {FreeToPlayDeeplinkAction} from \"../deep-link-actions/free-to-play/free-to-play-deeplink-action\";\nimport {\n OpenListDeeplinkByIdAction,\n OpenListDeeplinkByTitleAction\n} from \"../deep-link-actions/open-list/open-list-deeplink-action\";\nimport {FreePlayDeepLinkAction} from \"../deep-link-actions/freeplay/freeplay-deeplink-action\";\nimport {\n ControlCenterDeeplinkAction\n} from \"../deep-link-actions/control-center/control-center-deeplink-action\";\nimport {\n ForgotPasswordDeeplinkAction\n} from \"../deep-link-actions/forgot-password/forgot-password.deeplink-action\";\nimport {ICasinoLegacyDeepLinkAction} from \"../deep-link-actions/casino-legacy-deep-link-action.interface\";\nimport {IDeepLinkParser} from \"../deep-link-parsers/parsers/deep-link-parser.interface\";\nimport {ICasinoLegacyDeepLinkActionChain} from \"../deep-link-actions/casino-legacy-deep-link-action-chain\";\nimport {DeepLinkExecutionContext} from \"../deep-link-actions/deep-link-execution-context.interface\";\nimport {IServiceFactoryExtended} from \"../../../service-factory-extended.interface\";\nimport { CrossDeepLinkAction } from \"../deep-link-actions/cross/cross-deep-link-action\";\n\nexport class DeepLinkActionsFactoryLegacyStrategy implements IDeepLinkActionsFactoryService {\n constructor(private readonly services: IServiceFactoryExtended) {\n }\n private _actionsPrototypes = {\n cashier: CashierDeepLinkAction,\n register: RegisterDeepLinkAction,\n login: LoginDeepLinkAction,\n my_account: MyAccountDeepLinkAction,\n 'game-real': PlayGameRealDeepLinkAction,\n 'game-demo': PlayGameDemoDeepLinkAction,\n redirect: RedirectDeepLinkAction,\n terminate: TerminateDeepLinkAction,\n 'upload-document': MyAccountUploadDocumentDeeplinkAction,\n 'free-to-play': FreeToPlayDeeplinkAction,\n 'open-list': OpenListDeeplinkByTitleAction,\n 'open-list-id': OpenListDeeplinkByIdAction,\n 'freeplay': FreePlayDeepLinkAction,\n 'control-center': ControlCenterDeeplinkAction,\n 'forgot-password': ForgotPasswordDeeplinkAction,\n 'cross': CrossDeepLinkAction\n };\n\n async createActionFromCurrentRoute(): Promise {\n\n let parser = (await this.services.deepLinkParser).getParserFromCurrentRoute();\n\n if(parser) {\n return this._createActionsFromParser(parser);\n }\n\n return null;\n }\n\n async createActionFromDeepLinkObject(deepLinkObject: any): Promise {\n let parser = (await this.services.deepLinkParser).getParserFromDeepLinkObject(deepLinkObject);\n if(parser) {\n return this._createActionsFromParser(parser);\n }\n\n return null;\n }\n\n private _createActionsFromParser(parser: IDeepLinkParser) : ICasinoLegacyDeepLinkAction | null {\n let actionsDescriptors = parser.getActionsDescriptors();\n let deepLinkBuilder = parser.getDeepLinkBuilder();\n\n let action: ICasinoLegacyDeepLinkActionChain | null = null;\n for(let i = actionsDescriptors.length - 1; i >= 0; i--) {\n let actionDescriptor = actionsDescriptors[i];\n let actionPrototype = this._actionsPrototypes[actionDescriptor.action];\n if(actionPrototype) {\n let actionExecutionContext: DeepLinkExecutionContext = {\n services: this.services,\n deepLinkBuilder: deepLinkBuilder,\n nextAction: action,\n descriptor: actionDescriptor\n };\n\n action = new actionPrototype(actionExecutionContext) as ICasinoLegacyDeepLinkActionChain;\n } else {\n this.services.logger.error(`Can't handle deep link action '${actionDescriptor.action}'`);\n return null;\n }\n }\n\n return action;\n }\n}","import {IDeepLinkActionsFactoryService} from './deep-link-actions-factory.service.inteface';\nimport {ServiceBase} from '../../ServiceBase';\nimport {ICasinoDeepLinkAction} from \"../casino-deep-link-action.interface\";\nimport {IServiceFactoryExtended} from \"../../service-factory-extended.interface\";\nimport {DeepLinkActionsFactoryUnifiedStrategy} from \"../unified/deep-link-action-factory/deep-link-actions-factory-unified.strategy\";\nimport {DeepLinkActionsFactoryLegacyStrategy} from \"../legacy/deep-link-action-factory/deep-link-actions-factory-legacy.strategy\";\n\nexport class DeepLinkActionsFactoryService extends ServiceBase implements IDeepLinkActionsFactoryService {\n\n constructor(services: IServiceFactoryExtended) {\n super(services);\n this._strategies = [\n new DeepLinkActionsFactoryUnifiedStrategy(services),\n new DeepLinkActionsFactoryLegacyStrategy(services)\n ];\n }\n\n private readonly _strategies: IDeepLinkActionsFactoryService[];\n\n async createActionFromCurrentRoute(): Promise {\n for(let strategy of this._strategies) {\n let action = await strategy.createActionFromCurrentRoute();\n if(action) {\n return action;\n }\n }\n\n return null;\n }\n\n async createActionFromDeepLinkObject(deepLinkObject: any): Promise {\n for(let strategy of this._strategies) {\n let action = await strategy.createActionFromDeepLinkObject(deepLinkObject);\n if(action) {\n return action;\n }\n }\n\n return null;\n }\n\n}\n"],"names":["DEEP_LINK_HASH_PARAM","DEEP_LINK_QUERY_PARAM","DeepLinkService","observable","services","_currentExecutingAction","_executeDeepLinkFromSdkEvent","deepLinkObject","_waitForAutologin","deepLinkActionsFactory","createActionFromDeepLinkObject","action","logger","debug","JSON","stringify","_executeAction","Check","warning","error","_executeDeepLinkFromPostMessage","postEvent","messageData","data","ActionName","deepLinkJsonObject","parse","makeObservable","_subscribeToCurrentUriReaction","sdk","events","onDeepLinkReceived","window","subscribeTo","postMessage","fireImmediately","reaction","location","currentUri","arg","prev","_executeDeepLinkFromCurrentRoute","Boolean","this","user","waitForAutoLogin","isExecuting","_waitForCurrentExecutingAction","execute","runInAction","lastTimeDeepLinkWasExecuted","Date","now","reactionDisposer","dispose","createActionFromCurrentRoute","toString","urlWithoutHash","removeSearchParam","getUrlWithoutHash","replace","navigate","push","length","join","ServiceBase","DeepLinkJsonObjectBuilder","actionsChain","resultedMarketingParams","currentActionIndex","currentActionsChainPointer","actionPropName","idPropName","descriptor","actionParams","id","marketingParams","dl","wtc","nextAction","Object","keys","split","DeepLinkJsonObjectParser","promoCode","result","i","actionNextPropName","idNextPropName","params","SPECIFIC_NAVIGATION","SPECIFIC_NAVIGATION_PARAM","DeepLinkParserService","deepLinkJson","_extractDeepLinkJsonFromFragment","_extractDeepLinkJsonFromDeepLinkQueryParam","isDeepLinkFromSpecificNavigation","_extractDeepLinkJsonFromSpecificNavigationQueryParam","_isDeepLinkObject","err","info","obj","fragment","hash","value","decodeUriComponentRecursive","indexOf","queryParams","isEmpty","getParamValue","UnifiedDeepLinkAction","deepLink","actions","deepLinkAction","channelAction","messageBroker","channels","performAction","topics","actionID","Error","actionData","cashierActionIndex","findIndex","a","cashierParams","appSpecificParameters","correlationId","tools","getGuid","payload","correlationID","launchInfo","channel","area","source","element","CHANNEL_SOURCE","businessCorrelationID","trigger","TriggerType","sourceAppID","AppIdentifiers","sourceAppVersion","getSkin","getVersion","DeepLinkActionsFactoryUnifiedStrategy","jsonObject","_extractDeepLinkJsonFromHash","json","CasinoLegacyDeepLinkActionBase","context","shouldSkipAction","deepLinkBuilder","Promise","resolve","forEach","param","CashierDeepLinkAction","businessCorrelationId","openCashier","AreaType","CHANNEL_ELEMENTS","sessionType","CashierSessionType","getCashierSpecificParameters","_executeNextAction","options","trim","RegisterDeepLinkAction","cashierAction","skipAction","cashierDeepLinkAction","_findCashierActionAndSkipAllSubsequentActions","cashierSpecificParams","register","LoginDeepLinkAction","login","MyAccountDeepLinkAction","tabId","parseInt","openMyAccount","PlayGameDeepLinkActionBase","gameType","_getGameType","openCasinoGame","isReal","getIsRealMode","gameTypes","map","device","os","isMobileOS","PlayGameRealDeepLinkAction","PlayGameDemoDeepLinkAction","RedirectDeepLinkAction","TerminateDeepLinkAction","MyAccountUploadDocumentDeeplinkAction","uploadDocumentsFromCashier","FreeToPlayDeeplinkAction","gameStage","CasinoFreeToPlayGameStage","openCasinoFreeToPlay","OpenListDeeplinkAction","swiper","getListConfig","verticalGamesList","renderList","OpenListDeeplinkByTitleAction","title","configuration","getGamesListByTitle","OpenListDeeplinkByIdAction","getGamesListById","Number","FreePlayDeepLinkAction","ensureUserIsLoggedIn","freePlay","registerActionToExecuteWhenFreePlayIsAvailable","hasVouchers","userMenu","openRewards","ControlCenterDeeplinkAction","_extractParams","openControlCenterFull","ControlCenterOpenSource","deeplink","ControlCenterDeeplink","splittedParams","isIncreaseLimitsDisabled","toLowerCase","ForgotPasswordDeeplinkAction","openForgotPassword","CrossDeepLinkAction","linksNavigation","openPoker","openSport","DeepLinkActionsFactoryLegacyStrategy","_actionsPrototypes","cashier","my_account","redirect","terminate","deepLinkParser","parser","getParserFromCurrentRoute","_createActionsFromParser","getParserFromDeepLinkObject","actionsDescriptors","getActionsDescriptors","getDeepLinkBuilder","actionDescriptor","actionPrototype","DeepLinkActionsFactoryService","_strategies","strategy"],"sourceRoot":""}