ouisys-engine 4.7.0-alpha.1 → 4.7.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/RemoteDataState-lcf8PfJd.js +2 -0
  2. package/dist/{RemoteDataState-CwHLI23e.js.map → RemoteDataState-lcf8PfJd.js.map} +1 -1
  3. package/dist/bupperizeCountry-CEtt0MKz.js +2 -0
  4. package/dist/bupperizeCountry-CEtt0MKz.js.map +1 -0
  5. package/dist/checkSubscriptionByRockmanIdOnly-BwR1un1L.js +2 -0
  6. package/dist/{checkSubscriptionByRockmanIdOnly-C89Ph9cV.js.map → checkSubscriptionByRockmanIdOnly-BwR1un1L.js.map} +1 -1
  7. package/dist/checkSubscriptionHander.js +1 -52
  8. package/dist/checkSubscriptionHander.js.map +1 -1
  9. package/dist/click2smsFlow.js +1 -245
  10. package/dist/click2smsFlow.js.map +1 -1
  11. package/dist/creditCardFlow.js +1 -247
  12. package/dist/creditCardFlow.js.map +1 -1
  13. package/dist/getConfig.js +1 -13
  14. package/dist/getConfig.js.map +1 -1
  15. package/dist/handleClickChainFlow.js +1 -31
  16. package/dist/handleClickChainFlow.js.map +1 -1
  17. package/dist/handleSubmitNumber.js +1 -64
  18. package/dist/handleSubmitNumber.js.map +1 -1
  19. package/dist/helpers-xPhGBX-B.js +2 -0
  20. package/dist/helpers-xPhGBX-B.js.map +1 -0
  21. package/dist/loadScriptInnerHtml-BzQm-AFb.js +2 -0
  22. package/dist/loadScriptInnerHtml-BzQm-AFb.js.map +1 -0
  23. package/dist/moFlow.js +1 -274
  24. package/dist/moFlow.js.map +1 -1
  25. package/dist/moRedirFlow.js +1 -224
  26. package/dist/moRedirFlow.js.map +1 -1
  27. package/dist/oneClickFlow.js +1 -463
  28. package/dist/oneClickFlow.js.map +1 -1
  29. package/dist/pinFlow.js +1 -696
  30. package/dist/pinFlow.js.map +1 -1
  31. package/dist/searchToObject.js +1 -18
  32. package/dist/searchToObject.js.map +1 -1
  33. package/dist/storeMsisdn-Cjq8_qYH.js +2 -0
  34. package/dist/{storeMsisdn-ChiBh8mI.js.map → storeMsisdn-Cjq8_qYH.js.map} +1 -1
  35. package/dist/strategy.js +1 -49
  36. package/dist/strategy.js.map +1 -1
  37. package/dist/strategySlice-CtjrhCrS.js +2 -0
  38. package/dist/{strategySlice-bF74rxDK.js.map → strategySlice-CtjrhCrS.js.map} +1 -1
  39. package/dist/tracker-DaaILhEr.js +2 -0
  40. package/dist/tracker-DaaILhEr.js.map +1 -0
  41. package/dist/tracker.js +1 -4
  42. package/dist/tracker.js.map +1 -1
  43. package/dist/tryGetIPRangeName-QW-9NgzE.js +2 -0
  44. package/dist/tryGetIPRangeName-QW-9NgzE.js.map +1 -0
  45. package/dist/ussdFlow.js +1 -210
  46. package/dist/ussdFlow.js.map +1 -1
  47. package/package.json +2 -6
  48. package/dist/RemoteDataState-CwHLI23e.js +0 -75
  49. package/dist/bupperizeCountry-CCDIOHP6.js +0 -4
  50. package/dist/bupperizeCountry-CCDIOHP6.js.map +0 -1
  51. package/dist/checkSubscriptionByRockmanIdOnly-C89Ph9cV.js +0 -27
  52. package/dist/helpers-J_h-ZgxH.js +0 -29
  53. package/dist/helpers-J_h-ZgxH.js.map +0 -1
  54. package/dist/loadScriptInnerHtml-DPcoY467.js +0 -26
  55. package/dist/loadScriptInnerHtml-DPcoY467.js.map +0 -1
  56. package/dist/storeMsisdn-ChiBh8mI.js +0 -58
  57. package/dist/strategySlice-bF74rxDK.js +0 -842
  58. package/dist/tracker-B_zsMRN2.js +0 -79
  59. package/dist/tracker-B_zsMRN2.js.map +0 -1
  60. package/dist/tryGetIPRangeName-C69HEG5W.js +0 -42
  61. package/dist/tryGetIPRangeName-C69HEG5W.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"strategySlice-bF74rxDK.js","sources":["../src/sharedFlowTypes/StrategyTypes.ts","../src/flows/strategy/api.ts","../src/flows/strategy/main.ts","../src/flows/strategy/strategies/askMobileNumber.ts","../src/flows/strategy/strategies/askOperator.ts","../src/flows/strategy/strategies/detectOperatorByIp.ts","../src/flows/strategy/strategySlice.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable camelcase */\nimport * as RDS from '../common-types/RemoteDataState';\nimport { Click2smsFlowState } from './Click2smsTypes';\nimport { CreditCardFlowState } from './CreditCardTypes';\nimport { MoRedirFlowState } from './MoRedirTypes';\nimport { MoFlowState } from './MoTypes';\nimport { OneClickFlowState } from './OneClickTypes';\nimport { PinFlowState } from './PinTypes';\nimport { UssdFlowState } from './UssdTypes';\n\nexport type IIdentifyResult = {\n operator: string;\n flow?: string;\n success: boolean;\n rockman_id?: string;\n message?: string;\n};\n\nexport type ConfigDetails = {\n host: string;\n slug: string;\n country: string;\n device?: 'smart' | 'feature';\n queryString?: Array<[string, string]>;\n automaticallySubmitAllOperators?: boolean;\n operators?: string[];\n service: string;\n offer?: string;\n};\n\nexport type IConfig = {\n offer?: string;\n slug?: string;\n country?: string;\n host?: string;\n device?: 'smart' | 'feature';\n automaticallySubmitAllOperators?: boolean;\n operators?: string[];\n service?: string;\n serviceId?: string;\n queryString?: any;\n apiAction?: any;\n};\n\nexport type ISupportedFlows = 'pin' | 'mo' | 'oneClick' | 'click2sms' | 'moRedir' | 'ussd' | 'creditCard';\nexport type IFlow = {\n flow: ISupportedFlows;\n flowOnWifi?: ISupportedFlows;\n operator?: string;\n flowConfig: ConfigDetails;\n default?: IFlow;\n rockman_id?: string;\n};\n\nexport type StrategyConfig = {\n operators: {\n [key: string]: IFlow;\n };\n default: IFlow;\n isUseMsisdnPrefix?: boolean;\n};\n// export type IStrategy = IPinStrategy | IMoStrategy;\n\nexport type IStrategy = {\n strategy: IStrategyNames;\n country: string;\n strategyConfigs: StrategyConfig;\n};\n\nexport type IStrategyNames =\n | 'pin'\n | 'mo'\n | 'mo-redir'\n | 'click2sms'\n | 'one-click'\n | 'ussd'\n | 'tpay-he'\n | 'credit-card'\n | 'tallyman-one-click'\n | 'pin-mo-ask-operator'\n | 'pin-mo-ask-mobile-number'\n | 'pin-one-click-ask-operator'\n | 'pin-one-click-detect-operator-by-ip'\n | 'one-click-mo-pin-detect-operator-by-ip-or-msisdn'\n | 'pin-click2sms-ask-operator'\n | 'mo-redir-one-click-detect-operator-by-ip'\n | 'pin-mo-redir-ask-mobile-number'\n | 'pin-click2sms-ask-mobile-number'\n | 'mo-one-click-detect-operator-by-ip'\n | 'click2sms-one-click-detect-operator-by-ip'\n | 'pin-header-enrichment'\n | 'pin-msisdn-fowarding-pin-header-enrichment'\n | 'he-pin-mo-redir-header-enrichment'\n | 'he-pin-one-click-header-enrichment'\n | 'he-pin-one-click-ask-operator'\n | 'click2sms-one-click-ask-operator'\n | 'pin-mo-detect-operator-by-ip'\n | 'he-mo-redir-one-click-header-enrichment'\n | 'pin-combo-ask-mobile-number'\n | 'header-enrichment-script'\n | 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn'\n | 'pin-mo-mo-redir-ask-mobile-number';\n\nexport interface IHash {\n [key: string]: string;\n}\n\nexport type IDENTIFYMSISDNEntryErrorTypes = 'AlreadySubscribed' | 'UnknownError' | 'InvalidMSISDN';\n\nexport type IDENTIFYMSISDNEntryFailure = {\n errorType: IDENTIFYMSISDNEntryErrorTypes;\n error: unknown;\n};\n\nexport type IdentifyFlowOptionsResult = {\n config: IConfig;\n nextAction?: unknown;\n msisdn?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n rockman_id?: string;\n isHeaderEnrichmentSuccess?: boolean;\n autoRedirect?: boolean;\n isUseMsisdnPrefix?: boolean;\n};\n\nexport type IDENTIFYMSISDNEntrySuccess = {};\nexport type OPERATORSelectFailure = {};\nexport type OPERATORSelectSuccess = IdentifyFlowOptionsResult;\n\nexport type IDETECTYOPERATOBYIPFailure = {};\nexport type IDETECTYOPERATOBYIPSuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_OPERATOR_MSISDNEntrySuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_FLOW_HESuccess = IdentifyFlowOptionsResult;\n\nexport type OPERATORSelectFlowIdentifyFailure = {};\nexport type OPERATORSelectFlowIdentifySuccess = {\n operators: Array<string>;\n msisdn?: string;\n nextAction: 'selectOperator';\n};\nexport type IDENTIFYFailure = {};\n\nexport type IDENTIFYSuccess = {};\n\nexport type IOperatorSelectFlowIdentifyPayload = {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFlowIdentifyFailure, OPERATORSelectFlowIdentifySuccess>;\n};\n\n// export type IIdentifyByIPPayload= {\n// type:\"IDENTIFY_FLOW_BY_IP\"\n// result: RDS.RemoteDataState<IDENTIFYBYIPFailure, IDENTIFYBYIPSuccess>;\n// }\n\nexport type IDetectOperatorByIpPayload = {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n};\n\nexport enum PossibleTypes {\n IDENTIFY_STRATEGY = 'IDENTIFY_STRATEGY',\n IDENTIFY_FLOW_BY_MSISDN = 'IDENTIFY_FLOW_BY_MSISDN',\n IDENTIFY_FLOW_BY_OPERATOR_SELECT = 'IDENTIFY_FLOW_BY_OPERATOR_SELECT',\n PIN = 'PIN',\n MO = 'MO',\n MO_REDIR = 'MO_REDIR',\n ONE_CLICK = 'ONE_CLICK',\n CLICK2SMS = 'CLICK2SMS',\n USSD = 'USSD',\n TPAY_HE = 'TPAY_HE',\n CREDIT_CARD = 'CREDIT_CARD'\n}\n\nexport type IOperatorSelectPayload = {\n type: PossibleTypes;\n result: OPERATORSelectSuccess;\n};\n\nexport type ISubmitMsisdnPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByIpOperatorPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByHePayload = {\n type: PossibleTypes;\n result: IDENTIFY_FLOW_HESuccess;\n};\n\nexport type IIdentfyFlowByMsisdnNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByOperatorNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByIPOperatorNextAction = 'getRedirectUrlAction' | 'submitMSISDNAction';\n\nexport type IIdenyifyFlowByMsisdnSumbitNextData = {\n nextAction: IIdentfyFlowByMsisdnNextAction;\n msisdn?: string;\n operator?: string;\n};\n\nexport type IIdenyifyFlowByMsisdnPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IIdenyifyStrategyPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IStrategyCurrentState =\n | {\n type: 'IDENTIFY_STRATEGY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: OPERATORSelectFlowIdentifySuccess;\n }\n | {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n }\n | {\n type: 'HE_IDENTIFY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFailure, OPERATORSelectSuccess>;\n config: IConfig;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n nextData: IIdenyifyFlowByMsisdnSumbitNextData;\n }\n | {\n type: 'PIN';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'USSD';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO_REDIR';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'ONE_CLICK';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CLICK2SMS';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'TPAY_HE';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CREDIT_CARD';\n result: IdentifyFlowOptionsResult;\n };\n\nexport type IStrategyIDentifyUserResult =\n | {\n success: 'true';\n rockman_id: string;\n msisdn: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n 'redirect-back'?: string;\n 'msisdn-alias'?: string;\n }\n | {\n success: 'false';\n rockman_id: string;\n message: string;\n 'redirect-back'?: string;\n };\n\nexport type IMockFlows = 'pin' | 'mo' | 'oneclick' | 'click2sms' | 'moredir' | 'ussd' | 'tpay' | 'creditcard';\n\nexport interface IMockFlowParams<T> {\n 'mock-flow': IMockFlows;\n 'current-state': T;\n 'show-pin-entry': '1' | '0';\n 'show-thank-you': '1' | '0';\n operator: string;\n msisdn?: string;\n}\n\nexport interface IScriptHeaderEnrichmentSuccess extends CustomEvent {\n detail: {\n msisdn: string;\n operator_code: string;\n };\n}\n\nexport interface ExtraStrategyData {\n isHeaderEnrichmentSuccess?: boolean;\n config?: ConfigDetails;\n msisdn?: string;\n rockman_id?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n operators?: string[];\n}\nexport interface StrategyState {\n currentState: StrategyCurrentState;\n}\n\nexport interface StrategyCurrentState {\n type: PossibleTypes;\n result: RDS.RemoteDataState<any, any>;\n data?: ExtraStrategyData;\n}\n\nexport type IMockPinFlowStates = 'msisdn-state' | 'pin-state' | 'completed-state' | 'msisdn-failure-state';\n\nexport interface RootState {\n strategy?: StrategyState;\n pinFlow?: PinFlowState;\n moFlow?: MoFlowState;\n moRedirFlow?: MoRedirFlowState;\n click2smsFlow?: Click2smsFlowState;\n oneClickFlow?: OneClickFlowState;\n ussdFlow?: UssdFlowState;\n creditCardFlow?: CreditCardFlowState;\n}\n","import { IIdentifyResult, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\n\nconst fetchJsonp: <T>({ window, _url }: { window: Window; _url: string }) => Promise<T> = ({\n window,\n _url\n}: {\n window: Window;\n _url: string;\n}) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n (window as any)[ouisys_callback_function] = (arg: any) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\nconst identify = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n}): Promise<IIdentifyResult> => {\n const languageCode = window.languageCode ? `&language_code=${window.languageCode}` : '';\n const locationHref = encodeURIComponent(window.location.href);\n\n const host = (window as Window).DEV_BASE_URL || '';\n\n const params = {\n action: 'identify',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: locationHref,\n language_code: languageCode\n };\n\n const urlParams = new URLSearchParams(params).toString();\n const url = `${host}/tallyman/v1/?${urlParams}`;\n\n const response = await fetch(url);\n return response.json();\n};\n\nconst identifyUserGetSubscriptionUrl = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n extraParamsQs = '',\n search = ''\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParamsQs?: string;\n search?: string;\n}): Promise<IStrategyIDentifyUserResult> => {\n const xaid = window.pac_analytics.visitor.xaid || '';\n const locationHref = encodeURIComponent(window.location.href);\n const pixelUrl = encodeURIComponent(\n `http://${window.location.host}/pixels?xcid=${window.location.pathname.replace(\n '/',\n ''\n )}&xaid=${xaid}&country=${bupperizeCountry(country)}`\n );\n\n const params = {\n action: 'identify-user',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n page: locationHref,\n pixel_url: pixelUrl,\n rockman_id: rockmanId,\n extraParamsQs,\n search\n };\n\n const urlParams = new URLSearchParams(params).toString();\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${urlParams}`;\n\n const response = await fetchJsonp<IStrategyIDentifyUserResult>({\n window,\n _url: url\n });\n return response;\n};\n\nexport { identify, identifyUserGetSubscriptionUrl };\n","import PhoneNumber from 'awesome-phonenumber';\nimport { IError } from '../../common-types/IError';\nimport { IStrategy } from '../../common-types/Strategy';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport {\n IConfig,\n IFlow,\n IHash,\n IIdentifyResult,\n IStrategyIDentifyUserResult\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { identify, identifyUserGetSubscriptionUrl } from './api';\n\nexport async function determineFlowByMsidn({\n window,\n internationalMSISDN,\n configs\n}: {\n window: Window;\n internationalMSISDN: string;\n configs: IStrategy;\n}): Promise<IFlow> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError;\n submissionError.type = 'SEInvalidMSISDN';\n throw submissionError;\n }\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || ''; // tallyman API expects international msisdn without unknown special character\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const config = defaultFlowConfig.flowConfig;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n\n const indentifyFlow = async (): Promise<IIdentifyResult> => {\n const { slug, country, device } = config;\n const { rockmanId } = window.pac_analytics.visitor;\n const { offer } = window.pac_analytics.visitor;\n const flowOperatorResult: IIdentifyResult = await identify({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId\n });\n return flowOperatorResult;\n };\n const theResult = await indentifyFlow();\n\n const flow = operatorsConfig[theResult.operator] ? operatorsConfig[theResult.operator] : null;\n const cannotDetect =\n theResult.success === false && theResult.message === 'Operator could not be found for the given MSISDN';\n const hlrError =\n theResult.success === false && theResult.message?.indexOf('HLR did not find the operator for given MSISDN') !== -1;\n\n if (cannotDetect || hlrError) {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError & { msisdn: string };\n submissionError.type = 'FlowDetectFailed';\n submissionError.msisdn = msisdn;\n throw submissionError;\n } else if (flow !== null) {\n const flowObj = { operator: theResult.operator, default: defaultFlowConfig, ...flow };\n // @ts-ignore\n return flowObj;\n } else if (flow === null) {\n const flowObj = { operator: theResult.operator, ...defaultFlowConfig };\n // @ts-ignore\n return flowObj;\n } else {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError;\n submissionError.type = 'SEInvalidMSISDN';\n throw submissionError;\n }\n}\n\nexport function determineFlowByOperator({ configs, operator }: { configs: IStrategy; operator: string }): IFlow {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n\n const flowObj = {\n operator: operator?.toUpperCase(),\n default: defaultFlowConfig,\n ...operatorsConfig[operator?.toUpperCase()]\n };\n // @ts-ignore\n return flowObj;\n}\n\nexport async function determineFlowByOperatorFromIp({\n window,\n configs\n}: {\n window: Window;\n configs: IStrategy;\n}): Promise<IFlow> {\n const operator = await tryGetIPRangeName(window.pac_analytics.visitor);\n const flowObj = determineFlowByOperator({\n configs,\n operator: operator ? operator.toUpperCase() : ''\n });\n return flowObj;\n}\n\nexport function getOperators({ configs }: { configs: IStrategy }): Array<string> {\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const operators = Object.keys(operatorsConfig);\n return operators;\n}\n\nexport const identifyUser = async ({\n window,\n configs,\n extraParams\n}: {\n window: Window;\n configs: IStrategy;\n extraParams?: IHash;\n}): Promise<{\n msisdn: string | null;\n operator: string | null;\n subscription_url?: string;\n redirect_url?: string;\n}> => {\n if (typeof window === 'undefined') {\n throw new Error('Error');\n } else {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const config = defaultFlowConfig.flowConfig;\n const { country, slug, device } = config;\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n\n if (searchObj['redirect-back']) {\n if (searchObj?.success === 'false') {\n const identifyError = new Error(\n `Error in getRedirectUrl() identify-user action:\\n${searchObj?.message || 'NotOn3g'}`\n ) as IError & { type: string; next_action: string };\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n if (searchObj.subscription_url) {\n const subscription_url = window.atob(searchObj.subscription_url);\n\n const newUrl = new URL(subscription_url);\n const newQueryString = newUrl.search;\n const urlParams = new URLSearchParams(newQueryString);\n let msisdn = urlParams.get('msisdn') || searchObj?.msisdn || null;\n const operator = urlParams.get('operator') || searchObj?.operator || null;\n\n if (msisdn) {\n const pn = new PhoneNumber(msisdn, window?.pac_analytics?.visitor?.country);\n const internationalMsisdn = pn.getNumber('e164');\n msisdn = internationalMsisdn.slice(1);\n }\n\n return { subscription_url, msisdn, operator };\n }\n if (searchObj?.redirect_url) {\n const redirect_url = window.atob(searchObj?.redirect_url);\n\n const newUrl = new URL(redirect_url);\n const newQueryString = newUrl.search;\n const urlParams = new URLSearchParams(newQueryString);\n let msisdn = urlParams.get('msisdn') || searchObj?.msisdn || null;\n const operator = urlParams.get('operator') || searchObj?.operator || null;\n\n if (msisdn) {\n const pn = new PhoneNumber(msisdn, window?.pac_analytics?.visitor?.country);\n const internationalMsisdn = pn.getNumber('e164');\n msisdn = internationalMsisdn.slice(1);\n }\n\n return { redirect_url, msisdn, operator };\n }\n const newUrl = new URL(window.location.href);\n const newQueryString = newUrl.search;\n const urlParams = new URLSearchParams(newQueryString);\n let msisdn = urlParams.get('msisdn') || searchObj?.msisdn || null;\n const operator = urlParams.get('operator') || searchObj?.operator || null;\n\n if (msisdn) {\n const pn = new PhoneNumber(msisdn, window?.pac_analytics?.visitor?.country);\n const internationalMsisdn = pn.getNumber('e164');\n msisdn = internationalMsisdn.slice(1);\n }\n\n return { msisdn, operator };\n }\n } else {\n const result = await identifyUserGetSubscriptionUrl({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n extraParamsQs\n });\n if (result.success === 'false') {\n const identifyError = new Error(\n `Error in getRedirectUrl() identify-user action:\\n${result.message}`\n ) as IError & { type: string; next_action: string };\n identifyError.type = 'NotOn3g';\n // identifyError['next_action'] = result.next_action;\n throw identifyError;\n } else {\n let msisdn;\n if (result.msisdn) {\n const pn = new PhoneNumber(result.msisdn, window?.pac_analytics?.visitor?.country);\n const internationalMsisdn = pn.getNumber('e164');\n msisdn = internationalMsisdn.slice(1);\n }\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n msisdn,\n operator: result.operator\n };\n }\n }\n }\n};\n\nexport const subscribe: (_url: string) => Promise<string> = async (_url: string) =>\n // const result:ISubscribeResult = await fetch(url + \"&operator=kw_viva\").then((x)=>x.json())\n\n // if(false === result.success){\n // const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as IError & {type:string;}\n // subscribeError['type'] = \"SubscriptionError\";\n // throw subscribeError\n // }else{\n '/product';\n// }\n\nexport function mockConfig({ configs, flow }: { configs: IStrategy; flow: string }): IConfig {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const opArr = Object.keys(operatorsConfig);\n const r = opArr.filter((o) => operatorsConfig[o].flow === flow);\n const operator = r[0];\n const flowObj = { offer: '1', operator, default: defaultFlowConfig, ...operatorsConfig[operator] };\n\n return flowObj;\n}\n\n// export const mockedPinFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.PIN,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('pin')\n// }\n// }\n// };\n\n// export const mockedMoFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('mo')\n// }\n// }\n// };\n\n// export const mockedUssdFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.USSD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('ussd')\n// }\n// }\n// };\n\n// export const mockedMoRdirFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO_REDIR,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('moRedir')\n// }\n// }\n// };\n\n// export const mockedClick2smsFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CLICK2SMS,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('click2sms')\n// }\n// }\n// };\n\n// export const mockedOneClickFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.ONE_CLICK,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('oneClick')\n// }\n// }\n// };\n\n// export const mockedCreditCardFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CREDIT_CARD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('creditCard')\n// }\n// }\n// };\n// export const mockedMOFlow : State = { type: \"MO\", result:moFlow(mockTracker, mockConfig(\"mo\"))}\n// export const mockedOneClickFlow : State = { type: \"ONECLICK\", result:oneClickFlow(mockTracker, mockConfig(\"oneClick\"), {\"testextraparams\":\"1\"})}\n// export const mockedClick2smsFlow : State = { type: \"CLICK2SMS\", result:click2smsFlow(mockTracker, mockConfig(\"click2sms\"))}\n// export const mockedMORedirFlow : State = { type: \"MOREDIR\", result:moRedirFlow(mockTracker, mockConfig(\"moRedir\"))}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\n\nimport {\n IDENTIFYMSISDNEntryErrorTypes,\n IFlow,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn } from '../main';\n\nexport const askMobileNumber = (): StrategyCurrentState => ({\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.NothingYet()\n});\n\nexport const submitMSISDNAction = createAsyncThunk(\n 'strategy/submitMSISDNAction',\n async (\n {\n window,\n msisdn\n }: {\n window: Window;\n msisdn: string;\n isHeSuccess?: boolean;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n const { strategy } = configs;\n const flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n\n switch (strategy) {\n case 'pin-mo-redir-ask-mobile-number':\n return pinMoRedirAskMobileNumber(flowObj, msisdn);\n case 'pin-mo-ask-mobile-number':\n return pinMoAskMobileNumber(flowObj, msisdn);\n case 'pin-combo-ask-mobile-number':\n return pinComboAskMobileNumber(flowObj, msisdn);\n case 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn':\n return moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn(flowObj, msisdn);\n case 'pin-mo-mo-redir-ask-mobile-number':\n return pinMoMoRedirAskMobileNumber(flowObj, msisdn);\n case 'pin-click2sms-ask-mobile-number':\n return pinClick2smsAskMobileNumber(flowObj, msisdn);\n default:\n return rejectWithValue('Unknown strategy');\n }\n } catch (ex) {\n let errorType: IDENTIFYMSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'SEAlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'SEInvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n return rejectWithValue({\n errorType,\n error: ex,\n productUrl: ex.productUrl\n });\n }\n }\n);\n\nexport const headerEnrichmentScript = (flowObj: IFlow, msisdn: string, isHeaderEnrichmentSuccess: boolean) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nexport const pinMoAskMobileNumber = (flowObj: IFlow, msisdn: string) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nexport const pinComboAskMobileNumber = (flowObj: IFlow, msisdn: string) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nconst pinMoRedirAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n\nconst pinMoMoRedirAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars-experimental\nconst oneClickMoPinDetectOperatorByIpOrMsisdn = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'oneClick':\n tracker.sendOptInFlowEvent('3G click');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n rockman_id: flowObj.rockman_id\n }\n };\n }\n};\n\nexport const moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn = (\n flowObj: IFlow,\n msisdn: string\n): StrategyCurrentState => {\n switch (flowObj.flowOnWifi) {\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n default:\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n rockman_id: flowObj.rockman_id\n }\n };\n }\n};\nexport const pinClick2smsAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\n\nimport { PossibleTypes, StrategyCurrentState } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, getOperators } from '../main';\n\nexport const askOperator = (): StrategyCurrentState => {\n const configs = getConfig();\n const operators = getOperators({ configs });\n return {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.NothingYet(),\n data: {\n operators\n }\n };\n};\n\nexport const selectOperatorAction = createAsyncThunk(\n 'strategy/selectOperatorAction',\n async (\n {\n operator\n }: {\n operator: string;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n\n const flowObj = determineFlowByOperator({\n configs,\n operator\n });\n\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: {\n config: flowObj.flowConfig,\n operator\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: {\n config: flowObj.flowConfig,\n operator\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: {\n config: {\n operators: [operator],\n ...flowObj.flowConfig\n },\n operator\n }\n };\n case 'oneClick':\n tracker.sendOptInFlowEvent('3G click');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: {\n config: flowObj.flowConfig,\n operator,\n autoRedirect: true\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet()\n };\n }\n } catch (ex) {\n const errorType = 'UnkownError';\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n }\n);\n","import * as RDS from '../../../common-types/RemoteDataState';\n\nimport { IOptInFlowName } from '../../../common-types/IOptInFlowName';\nimport { ISupportedFlows, PossibleTypes } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp } from '../main';\n\n// @ts-ignore\nconst trackerEventMapping: Record<ISupportedFlows, IOptInFlowName> = {\n mo: 'Msisdn to sms',\n pin: 'Pin',\n oneClick: '3G click',\n moRedir: 'Redirect',\n click2sms: 'Click to sms',\n ussd: 'Msisdn to sms'\n};\n\nconst flowMapping: Record<ISupportedFlows, PossibleTypes> = {\n mo: PossibleTypes.MO,\n pin: PossibleTypes.PIN,\n oneClick: PossibleTypes.ONE_CLICK,\n moRedir: PossibleTypes.MO_REDIR,\n click2sms: PossibleTypes.CLICK2SMS,\n ussd: PossibleTypes.USSD,\n creditCard: PossibleTypes.CREDIT_CARD\n};\nconst detectOperatorByIp = async () => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n const getTrackerEventName = (flowType: ISupportedFlows) => trackerEventMapping[flowType];\n\n const flowType = flowObj.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator\n }\n };\n } catch (ex) {\n console.error('SSSSS', ex);\n }\n};\n\nexport { detectOperatorByIp };\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nimport {\n IMockFlowParams,\n IMockPinFlowStates,\n PossibleTypes,\n RootState,\n StrategyCurrentState,\n StrategyState\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../utilities/getConfig';\nimport { determineFlowByOperator } from './main';\nimport { askMobileNumber, submitMSISDNAction } from './strategies/askMobileNumber';\nimport { askOperator, selectOperatorAction } from './strategies/askOperator';\n\nimport { detectOperatorByIp } from './strategies/detectOperatorByIp';\n\nconst initialState: StrategyState = {\n currentState: {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.NothingYet(),\n data: undefined\n }\n};\n\nconst mockStrategyStateByUrlParam = (): StrategyCurrentState => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n\n if (search['mock-flow'] !== undefined) {\n if (search.operator !== undefined) {\n window.operator = search.operator;\n }\n switch (search['mock-flow']) {\n case 'pin':\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({})\n };\n\n case 'mo':\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({})\n };\n case 'moredir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({})\n };\n case 'oneclick':\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({})\n };\n case 'click2sms':\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({})\n };\n case 'ussd':\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({})\n };\n case 'creditcard':\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({})\n };\n default:\n throw new Error('(mockStrategyStateByUrlParam) Strategy Mock Flow not supported');\n }\n }\n};\n\n/**\n * Identify Strategy\n * @returns {type: 'strategy/identifyStrategy', payload: {type: PossibleTypes.MO, result: IdentifyFlowOptionsResult}}\n * - Add type\n * - Makes a decision on which strategy to use in order to identify the flow\n * - Strategy could be asking user's phone number, selecting an operator etc\n * - all with the intension of getting the flow and its configuration\n * - Flows are usually tied to an operator in the pages config.json\n * - But they could also be single flows\n *\n */\n\nexport const identifyStrategy = createAsyncThunk('strategy/identifyStrategy', async () => {\n const configs = getConfig();\n const { strategy, strategyConfigs } = configs;\n // const { isUseMsisdnPrefix } = strategyConfigs;\n const search = searchToObject(window) as IMockFlowParams<IMockPinFlowStates>;\n if (search['mock-flow'] !== undefined) {\n return mockStrategyStateByUrlParam();\n }\n if (\n (search['show-pin-entry'] && search['show-pin-entry'] === '1') ||\n (search['show-thank-you'] && search['show-thank-you'] === '1')\n ) {\n const flowObj = determineFlowByOperator({\n configs,\n operator: search.operator\n });\n const strategyResult: StrategyCurrentState = {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: flowObj?.flowConfig || strategyConfigs?.default?.flowConfig\n }\n };\n return strategyResult;\n }\n\n if (strategy.includes('ask-operator')) {\n return askOperator();\n }\n if (strategy.includes('detect-operator-by-ip')) {\n return detectOperatorByIp();\n }\n if (strategy?.includes('ask-mobile-number')) {\n return askMobileNumber();\n }\n\n switch (strategy) {\n case 'pin': {\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n }\n case 'mo':\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'mo-redir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'one-click':\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'click2sms':\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'ussd':\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'credit-card':\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n default:\n throw new Error('Strategy not supported');\n }\n});\n\nexport const setStrategyExtraData = createAsyncThunk(\n 'strategy/setStrategyExtraData',\n async ({ type, data }: { type: PossibleTypes; data: any }) => ({\n type,\n result: RDS.NothingYet(),\n data\n })\n);\n\nexport const strategySlice = createSlice({\n name: 'strategy',\n initialState,\n reducers: {\n // Define synchronous reducers as needed\n },\n extraReducers: (builder) => {\n builder\n .addCase(identifyStrategy.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Loading()\n };\n })\n .addCase(identifyStrategy.fulfilled, (state, action: PayloadAction<StrategyCurrentState>) => {\n state.currentState = action.payload;\n })\n .addCase(identifyStrategy.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Failure(action.error.message)\n };\n })\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.Loading()\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<StrategyCurrentState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(setStrategyExtraData.fulfilled, (state, action) => {\n state.currentState = action.payload;\n })\n .addCase(selectOperatorAction.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.Loading()\n };\n })\n .addCase(selectOperatorAction.fulfilled, (state, action: PayloadAction<any>) => {\n state.currentState = action.payload;\n })\n .addCase(selectOperatorAction.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\nexport const selectStrategyState = (state: RootState) => state.strategy;\nexport const strategyReducer = strategySlice.reducer;\n"],"names":["RDS.NothingYet","RDS.Success","RDS.Loading","RDS.Failure"],"mappings":";;;;;;;;;IAoKY,cAYX;AAZD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AACvC,IAAA,aAAA,CAAA,yBAAA,CAAA,GAAA,yBAAmD,CAAA;AACnD,IAAA,aAAA,CAAA,kCAAA,CAAA,GAAA,kCAAqE,CAAA;AACrE,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,aAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC7B,CAAC,EAZW,aAAa,KAAb,aAAa,GAYxB,EAAA,CAAA,CAAA;;AClJD,IAAM,QAAQ,GAAG,UAAO,EAgBvB,EAAA;AAfC,IAAA,IAAA,MAAM,YAAA,EACN,IAAI,UAAA,EACJ,OAAO,aAAA,EACP,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,SAAS,GAAA,EAAA,CAAA,SAAA,CAAA;;;;;;AAUH,oBAAA,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,iBAAA,CAAA,MAAA,CAAkB,MAAM,CAAC,YAAY,CAAE,GAAG,EAAE,CAAC;oBAClF,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAExD,oBAAA,IAAI,GAAI,MAAiB,CAAC,YAAY,IAAI,EAAE,CAAC;AAE7C,oBAAA,MAAM,GAAG;AACb,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,IAAI,EAAA,IAAA;AACJ,wBAAA,OAAO,EAAA,OAAA;AACP,wBAAA,MAAM,EAAA,MAAA;AACN,wBAAA,MAAM,EAAA,MAAA;AACN,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,UAAU,EAAE,SAAS;AACrB,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,aAAa,EAAE,YAAY;qBAC5B,CAAC;oBAEI,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACnD,oBAAA,GAAG,GAAG,EAAG,CAAA,MAAA,CAAA,IAAI,EAAiB,gBAAA,CAAA,CAAA,MAAA,CAAA,SAAS,CAAE,CAAC;AAE/B,oBAAA,OAAA,CAAA,CAAA,YAAM,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA;;AAA3B,oBAAA,QAAQ,GAAG,EAAgB,CAAA,IAAA,EAAA,CAAA;AACjC,oBAAA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;;;;CACxB;;ACvDK,SAAgB,oBAAoB,CAAC,EAQ1C,EAAA;;AAPC,IAAA,IAAA,MAAM,YAAA,EACN,mBAAmB,GAAA,EAAA,CAAA,mBAAA,EACnB,OAAO,GAAA,EAAA,CAAA,OAAA,CAAA;;;;;;;oBAMP,IAAI,CAAC,mBAAmB,EAAE;AAClB,wBAAA,eAAe,GAAG,IAAI,KAAK,CAAC,yCAAyC,CAAW,CAAC;AACvF,wBAAA,eAAe,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACzC,wBAAA,MAAM,eAAe,CAAC;AACvB,qBAAA;AACK,oBAAA,MAAM,GAAG,CAAA,CAAA,EAAA,GAAA,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,EAAE,CAAC,KAAI,EAAE,CAAC;oBAC5D,iBAAiB,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC;AACtD,oBAAA,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC;oBACtC,eAAe,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,CAAC;AAEtD,oBAAA,aAAa,GAAG,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;AACZ,oCAAA,IAAI,GAAsB,MAAM,CAA5B,IAAA,EAAE,OAAO,GAAa,MAAM,CAAA,OAAnB,EAAE,MAAM,GAAK,MAAM,OAAX,CAAY;AACjC,oCAAA,SAAS,GAAK,MAAM,CAAC,aAAa,CAAC,OAAO,UAAjC,CAAkC;AAC3C,oCAAA,KAAK,GAAK,MAAM,CAAC,aAAa,CAAC,OAAO,MAAjC,CAAkC;AACH,oCAAA,OAAA,CAAA,CAAA,YAAM,QAAQ,CAAC;AACzD,4CAAA,MAAM,EAAA,MAAA;AACN,4CAAA,IAAI,EAAA,IAAA;AACJ,4CAAA,OAAO,EAAA,OAAA;AACP,4CAAA,MAAM,EAAA,MAAA;AACN,4CAAA,MAAM,EAAA,MAAA;AACN,4CAAA,KAAK,EAAA,KAAA;AACL,4CAAA,SAAS,EAAA,SAAA;AACV,yCAAA,CAAC,CAAA,CAAA;;AARI,oCAAA,kBAAkB,GAAoB,EAQ1C,CAAA,IAAA,EAAA,CAAA;AACF,oCAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CAAC,CAAA;;;yBAC3B,CAAC;oBACgB,OAAM,CAAA,CAAA,YAAA,aAAa,EAAE,CAAA,CAAA;;AAAjC,oBAAA,SAAS,GAAG,EAAqB,CAAA,IAAA,EAAA,CAAA;oBAEjC,IAAI,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AACxF,oBAAA,YAAY,GAChB,SAAS,CAAC,OAAO,KAAK,KAAK,IAAI,SAAS,CAAC,OAAO,KAAK,kDAAkD,CAAC;oBACpG,QAAQ,GACZ,SAAS,CAAC,OAAO,KAAK,KAAK,IAAI,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,gDAAgD,CAAC,MAAK,CAAC,CAAC,CAAC;oBAErH,IAAI,YAAY,IAAI,QAAQ,EAAE;AACtB,wBAAA,eAAe,GAAG,IAAI,KAAK,CAAC,yCAAyC,CAAgC,CAAC;AAC5G,wBAAA,eAAe,CAAC,IAAI,GAAG,kBAAkB,CAAC;AAC1C,wBAAA,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,wBAAA,MAAM,eAAe,CAAC;AACvB,qBAAA;yBAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AAClB,wBAAA,OAAO,GAAK,QAAA,CAAA,EAAA,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAK,EAAA,IAAI,CAAE,CAAC;;AAEtF,wBAAA,OAAA,CAAA,CAAA,aAAO,OAAO,CAAC,CAAA;AAChB,qBAAA;yBAAM,IAAI,IAAI,KAAK,IAAI,EAAE;wBAClB,OAAO,GAAA,QAAA,CAAA,EAAK,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAA,EAAK,iBAAiB,CAAE,CAAC;;AAEvE,wBAAA,OAAA,CAAA,CAAA,aAAO,OAAO,CAAC,CAAA;AAChB,qBAAA;AAAM,yBAAA;AACC,wBAAA,eAAe,GAAG,IAAI,KAAK,CAAC,yCAAyC,CAAW,CAAC;AACvF,wBAAA,eAAe,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACzC,wBAAA,MAAM,eAAe,CAAC;AACvB,qBAAA;;;;AACF,CAAA;AAEK,SAAU,uBAAuB,CAAC,EAA+D,EAAA;;QAA7D,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,CAAA;AACzD,IAAA,IAAM,iBAAiB,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC;AAC5D,IAAA,IAAM,eAAe,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,CAAC;AAE5D,IAAA,IAAM,OAAO,GAAA,QAAA,CAAA,EACX,QAAQ,EAAE,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,WAAW,EAAE,EACjC,OAAO,EAAE,iBAAiB,EACvB,EAAA,eAAe,CAAC,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,WAAW,EAAE,CAAC,CAC5C,CAAC;;AAEF,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC;AAEK,SAAgB,6BAA6B,CAAC,EAMnD,EAAA;QALC,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,OAAO,GAAA,EAAA,CAAA,OAAA,CAAA;;;;;wBAKU,OAAM,CAAA,CAAA,YAAA,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA,CAAA;;AAAhE,oBAAA,QAAQ,GAAG,EAAqD,CAAA,IAAA,EAAA,CAAA;oBAChE,OAAO,GAAG,uBAAuB,CAAC;AACtC,wBAAA,OAAO,EAAA,OAAA;AACP,wBAAA,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;AACjD,qBAAA,CAAC,CAAC;AACH,oBAAA,OAAA,CAAA,CAAA,aAAO,OAAO,CAAC,CAAA;;;;AAChB,CAAA;AAEK,SAAU,YAAY,CAAC,EAAmC,EAAA;;AAAjC,IAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA,CAAA;AACpC,IAAA,IAAM,eAAe,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,CAAC;IAC5D,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/C,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAgJD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvTO,IAAM,eAAe,GAAG,YAAA,EAA4B,QAAC;IAC1D,IAAI,EAAE,aAAa,CAAC,uBAAuB;AAC3C,IAAA,MAAM,EAAEA,UAAc,EAAE;CACzB,EAAC,EAAA,CAAC;AAEU,IAAA,kBAAkB,GAAG,gBAAgB,CAChD,6BAA6B,EAC7B,UACE,EAOC,EACD,EAAmB,EAAA;QAPjB,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,MAAM,GAAA,EAAA,CAAA,MAAA,CAAA;AAMN,IAAA,IAAA,eAAe,GAAA,EAAA,CAAA,eAAA,CAAA;;;;;;;oBAGT,OAAO,GAAG,SAAS,EAAE,CAAC;oBACpB,QAAQ,GAAK,OAAO,CAAA,QAAZ,CAAa;AACb,oBAAA,OAAA,CAAA,CAAA,YAAM,oBAAoB,CAAC,EAAE,MAAM,QAAA,EAAE,mBAAmB,EAAE,MAAM,EAAE,OAAO,EAAA,OAAA,EAAE,CAAC,CAAA,CAAA;;AAAtF,oBAAA,OAAO,GAAG,EAA4E,CAAA,IAAA,EAAA,CAAA;AAE5F,oBAAA,QAAQ,QAAQ;AACd,wBAAA,KAAK,gCAAgC;AACnC,4BAAA,OAAA,CAAA,CAAA,aAAO,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AACpD,wBAAA,KAAK,0BAA0B;AAC7B,4BAAA,OAAA,CAAA,CAAA,aAAO,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AAC/C,wBAAA,KAAK,6BAA6B;AAChC,4BAAA,OAAA,CAAA,CAAA,aAAO,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AAClD,wBAAA,KAAK,iEAAiE;AACpE,4BAAA,OAAA,CAAA,CAAA,aAAO,oDAAoD,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AAC/E,wBAAA,KAAK,mCAAmC;AACtC,4BAAA,OAAA,CAAA,CAAA,aAAO,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AACtD,wBAAA,KAAK,iCAAiC;AACpC,4BAAA,OAAA,CAAA,CAAA,aAAO,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AACtD,wBAAA;AACE,4BAAA,OAAA,CAAA,CAAA,aAAO,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAC9C,qBAAA;;;AAEG,oBAAA,SAAS,SAA+B,CAAC;oBAC7C,QAAQ,IAAE,CAAC,IAAI;AACb,wBAAA,KAAK,qBAAqB;4BACxB,SAAS,GAAG,mBAAmB,CAAC;4BAChC,MAAM;AACR,wBAAA,KAAK,iBAAiB;4BACpB,SAAS,GAAG,eAAe,CAAC;4BAC5B,MAAM;AACR,wBAAA;4BACE,SAAS,GAAG,cAAc,CAAC;AAC9B,qBAAA;AACD,oBAAA,OAAA,CAAA,CAAA,aAAO,eAAe,CAAC;AACrB,4BAAA,SAAS,EAAA,SAAA;AACT,4BAAA,KAAK,EAAE,IAAE;4BACT,UAAU,EAAE,IAAE,CAAC,UAAU;AAC1B,yBAAA,CAAC,CAAC,CAAA;;;;;AAEN,CAAA,EACD;AAuDK,IAAM,oBAAoB,GAAG,UAAC,OAAc,EAAE,MAAc,EAAA;IACjE,QAAQ,OAAO,CAAC,IAAI;AAClB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;gBACxB,IAAI,EAAA,QAAA,CAAA,EACF,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,MAAM,EAAA,MAAA,EACH,GAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACvD;aACF,CAAC;AAEJ,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAC5C,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,EAAE;AACtB,gBAAA,MAAM,EAAEA,UAAc,EAAE;gBACxB,IAAI,EAAA,QAAA,CAAA,EACF,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,MAAM,EAAA,MAAA,EACH,GAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACvD;aACF,CAAC;AACJ,QAAA;AACE,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;gBACxB,IAAI,EAAA,QAAA,CAAA,EACF,MAAM,EAAE,OAAO,CAAC,UAAU,EAAA,GACtB,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACvD;aACF,CAAC;AACL,KAAA;AACH,CAAC,CAAC;AAEK,IAAM,uBAAuB,GAAG,UAAC,OAAc,EAAE,MAAc,EAAA;IACpE,QAAQ,OAAO,CAAC,IAAI;AAClB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;gBACxB,IAAI,EAAA,QAAA,CAAA,EACF,MAAM,EAAE,OAAO,CAAC,UAAU,EAC1B,MAAM,EAAA,MAAA,EACH,GAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACvD;aACF,CAAC;AACJ,QAAA;AACE,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;gBACxB,IAAI,EAAA,QAAA,CAAA,EACF,MAAM,EAAE,OAAO,CAAC,UAAU,EAAA,GACtB,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACvD;aACF,CAAC;AACL,KAAA;AACH,CAAC,CAAC;AAEF,IAAM,yBAAyB,GAAG,UAAC,OAAc,EAAE,MAAc,EAAA;IAC/D,QAAQ,OAAO,CAAC,IAAI;AAClB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oBAAA,MAAM,EAAA,MAAA;AACP,iBAAA;aACF,CAAC;AACJ,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACvC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,QAAQ;AAC5B,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC3B,iBAAA;aACF,CAAC;AACJ,QAAA;AACE,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC3B,iBAAA;aACF,CAAC;AACL,KAAA;AACH,CAAC,CAAC;AAEF,IAAM,2BAA2B,GAAG,UAAC,OAAc,EAAE,MAAc,EAAA;IACjE,QAAQ,OAAO,CAAC,IAAI;AAClB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oBAAA,MAAM,EAAA,MAAA;AACP,iBAAA;aACF,CAAC;AACJ,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAEvC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,QAAQ;AAC5B,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oBAAA,MAAM,EAAA,MAAA;AACP,iBAAA;aACF,CAAC;AACJ,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAC5C,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,EAAE;AACtB,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oBAAA,MAAM,EAAA,MAAA;AACP,iBAAA;aACF,CAAC;AACJ,QAAA;AACE,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC3B,iBAAA;aACF,CAAC;AACL,KAAA;AACH,CAAC,CAAC;AAwCK,IAAM,oDAAoD,GAAG,UAClE,OAAc,EACd,MAAc,EAAA;IAEd,QAAQ,OAAO,CAAC,UAAU;AACxB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACvC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,QAAQ;AAC5B,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oBAAA,MAAM,EAAA,MAAA;AACP,iBAAA;aACF,CAAC;AACJ,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAC5C,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,EAAE;AACtB,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oBAAA,MAAM,EAAA,MAAA;AACP,iBAAA;aACF,CAAC;AACJ,QAAA;AACE,YAAA,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACvC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,QAAQ;AAC5B,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;oBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,iBAAA;aACF,CAAC;AACL,KAAA;AACH,CAAC,CAAC;AACK,IAAM,2BAA2B,GAAG,UAAC,OAAc,EAAE,MAAc,EAAA;IACxE,QAAQ,OAAO,CAAC,IAAI;AAClB,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oBAAA,MAAM,EAAA,MAAA;AACP,iBAAA;aACF,CAAC;AACJ,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAC3C,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,SAAS;AAC7B,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oBAAA,MAAM,EAAA,MAAA;AACP,iBAAA;aACF,CAAC;AAEJ,QAAA;AACE,YAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,aAAa,CAAC,SAAS;AAC7B,gBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,UAAU;AAC3B,iBAAA;aACF,CAAC;AACL,KAAA;AACH,CAAC;;AChXM,IAAM,WAAW,GAAG,YAAA;AACzB,IAAA,IAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,IAAM,SAAS,GAAG,YAAY,CAAC,EAAE,OAAO,EAAA,OAAA,EAAE,CAAC,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,gCAAgC;AACpD,QAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,QAAA,IAAI,EAAE;AACJ,YAAA,SAAS,EAAA,SAAA;AACV,SAAA;KACF,CAAC;AACJ,CAAC,CAAC;AAEW,IAAA,oBAAoB,GAAG,gBAAgB,CAClD,+BAA+B,EAC/B,UACE,EAIC,EACD,EAAmB,EAAA;AAJjB,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,CAAA;AAIR,IAAA,IAAA,eAAe,GAAA,EAAA,CAAA,eAAA,CAAA;;;;YAEjB,IAAI;gBACI,OAAO,GAAG,SAAS,EAAE,CAAC;gBAEtB,OAAO,GAAG,uBAAuB,CAAC;AACtC,oBAAA,OAAO,EAAA,OAAA;AACP,oBAAA,QAAQ,EAAA,QAAA;AACT,iBAAA,CAAC,CAAC;gBAEH,QAAQ,OAAO,CAAC,IAAI;AAClB,oBAAA,KAAK,KAAK;AACR,wBAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;wBAClC,OAAO,CAAA,CAAA,aAAA;gCACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gCAAA,MAAM,EAAE;oCACN,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oCAAA,QAAQ,EAAA,QAAA;AACT,iCAAA;6BACF,CAAC,CAAA;AACJ,oBAAA,KAAK,IAAI;AACP,wBAAA,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;wBAC5C,OAAO,CAAA,CAAA,aAAA;gCACL,IAAI,EAAE,aAAa,CAAC,EAAE;AACtB,gCAAA,MAAM,EAAE;oCACN,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oCAAA,QAAQ,EAAA,QAAA;AACT,iCAAA;6BACF,CAAC,CAAA;AACJ,oBAAA,KAAK,WAAW;AACd,wBAAA,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;wBAC3C,OAAO,CAAA,CAAA,aAAA;gCACL,IAAI,EAAE,aAAa,CAAC,SAAS;AAC7B,gCAAA,MAAM,EAAE;oCACN,MAAM,EAAA,QAAA,CAAA,EACJ,SAAS,EAAE,CAAC,QAAQ,CAAC,EAClB,EAAA,OAAO,CAAC,UAAU,CACtB;AACD,oCAAA,QAAQ,EAAA,QAAA;AACT,iCAAA;6BACF,CAAC,CAAA;AACJ,oBAAA,KAAK,UAAU;AACb,wBAAA,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;wBACvC,OAAO,CAAA,CAAA,aAAA;gCACL,IAAI,EAAE,aAAa,CAAC,SAAS;AAC7B,gCAAA,MAAM,EAAE;oCACN,MAAM,EAAE,OAAO,CAAC,UAAU;AAC1B,oCAAA,QAAQ,EAAA,QAAA;AACR,oCAAA,YAAY,EAAE,IAAI;AACnB,iCAAA;6BACF,CAAC,CAAA;AACJ,oBAAA;AACE,wBAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;wBAElC,OAAO,CAAA,CAAA,aAAA;gCACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gCAAA,MAAM,EAAEA,UAAc,EAAE;6BACzB,CAAC,CAAA;AACL,iBAAA;AACF,aAAA;AAAC,YAAA,OAAO,EAAE,EAAE;gBACL,SAAS,GAAG,aAAa,CAAC;AAChC,gBAAA,OAAA,CAAA,CAAA,aAAO,eAAe,CAAC;AACrB,wBAAA,SAAS,EAAA,SAAA;AACT,wBAAA,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE;AACrB,qBAAA,CAAC,CAAC,CAAA;AACJ,aAAA;;;;AACF,CAAA;;ACtFH;AACA,IAAM,mBAAmB,GAA4C;AACnE,IAAA,EAAE,EAAE,eAAe;AACnB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,SAAS,EAAE,cAAc;AACzB,IAAA,IAAI,EAAE,eAAe;CACtB,CAAC;AAEF,IAAM,WAAW,GAA2C;IAC1D,EAAE,EAAE,aAAa,CAAC,EAAE;IACpB,GAAG,EAAE,aAAa,CAAC,GAAG;IACtB,QAAQ,EAAE,aAAa,CAAC,SAAS;IACjC,OAAO,EAAE,aAAa,CAAC,QAAQ;IAC/B,SAAS,EAAE,aAAa,CAAC,SAAS;IAClC,IAAI,EAAE,aAAa,CAAC,IAAI;IACxB,UAAU,EAAE,aAAa,CAAC,WAAW;CACtC,CAAC;AACF,IAAM,kBAAkB,GAAG,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;;gBAEjB,OAAO,GAAG,SAAS,EAAE,CAAC;AAEZ,gBAAA,OAAA,CAAA,CAAA,YAAM,6BAA6B,CAAC;AAClD,wBAAA,MAAM,EAAA,MAAA;AACN,wBAAA,OAAO,EAAA,OAAA;AACR,qBAAA,CAAC,CAAA,CAAA;;AAHI,gBAAA,OAAO,GAAG,EAGd,CAAA,IAAA,EAAA,CAAA;gBACI,mBAAmB,GAAG,UAAC,QAAyB,EAAK,EAAA,OAAA,mBAAmB,CAAC,QAAQ,CAAC,CAA7B,EAA6B,CAAC;AAEnF,gBAAA,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AACxB,gBAAA,OAAA,GAAQ,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAE5C,gBAAA,OAAO,CAAC,kBAAkB,CAAC,OAAK,CAAC,CAAC;gBAElC,OAAO,CAAA,CAAA,aAAA;AACL,wBAAA,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;AAC3B,wBAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,wBAAA,IAAI,EAAE;4BACJ,MAAM,EAAE,OAAO,CAAC,UAAU;4BAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC3B,yBAAA;qBACF,CAAC,CAAA;;;AAEF,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAE,CAAC,CAAC;;;;;KAE9B;;AClCD,IAAM,YAAY,GAAkB;AAClC,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,aAAa,CAAC,iBAAiB;AACrC,QAAA,MAAM,EAAEA,UAAc,EAAE;AACxB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;CACF,CAAC;AAEF,IAAM,2BAA2B,GAAG,YAAA;AAClC,IAAA,IAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAyB,CAAC;AAE9D,IAAA,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;AACrC,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;AACjC,YAAA,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACnC,SAAA;AACD,QAAA,QAAQ,MAAM,CAAC,WAAW,CAAC;AACzB,YAAA,KAAK,KAAK;gBACR,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,oBAAA,MAAM,EAAEC,OAAW,CAAC,EAAE,CAAC;iBACxB,CAAC;AAEJ,YAAA,KAAK,IAAI;gBACP,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,EAAE;AACtB,oBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;iBACxB,CAAC;AACJ,YAAA,KAAK,SAAS;gBACZ,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,QAAQ;AAC5B,oBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;iBACxB,CAAC;AACJ,YAAA,KAAK,UAAU;gBACb,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,SAAS;AAC7B,oBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;iBACxB,CAAC;AACJ,YAAA,KAAK,WAAW;gBACd,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,SAAS;AAC7B,oBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;iBACxB,CAAC;AACJ,YAAA,KAAK,MAAM;gBACT,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,IAAI;AACxB,oBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;iBACxB,CAAC;AACJ,YAAA,KAAK,YAAY;gBACf,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,WAAW;AAC/B,oBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;iBACxB,CAAC;AACJ,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACrF,SAAA;AACF,KAAA;AACH,CAAC,CAAC;AAEF;;;;;;;;;;AAUG;AAEU,IAAA,gBAAgB,GAAG,gBAAgB,CAAC,2BAA2B,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;QACtE,OAAO,GAAG,SAAS,EAAE,CAAC;QACpB,QAAQ,GAAsB,OAAO,CAA7B,QAAA,EAAE,eAAe,GAAK,OAAO,gBAAZ,CAAa;AAExC,QAAA,MAAM,GAAG,cAAc,CAAC,MAAM,CAAwC,CAAC;AAC7E,QAAA,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;YACrC,OAAO,CAAA,CAAA,aAAA,2BAA2B,EAAE,CAAC,CAAA;AACtC,SAAA;AACD,QAAA,IACE,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,GAAG;AAC7D,aAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAC9D;YACM,OAAO,GAAG,uBAAuB,CAAC;AACtC,gBAAA,OAAO,EAAA,OAAA;gBACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,aAAA,CAAC,CAAC;AACG,YAAA,cAAc,GAAyB;gBAC3C,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,gBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;AACvB,gBAAA,IAAI,EAAE;oBACJ,MAAM,EAAE,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,UAAU,MAAI,MAAA,eAAe,KAAA,IAAA,IAAf,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAA;AACpE,iBAAA;aACF,CAAC;AACF,YAAA,OAAA,CAAA,CAAA,aAAO,cAAc,CAAC,CAAA;AACvB,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YACrC,OAAO,CAAA,CAAA,aAAA,WAAW,EAAE,CAAC,CAAA;AACtB,SAAA;AACD,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;YAC9C,OAAO,CAAA,CAAA,aAAA,kBAAkB,EAAE,CAAC,CAAA;AAC7B,SAAA;QACD,IAAI,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;YAC3C,OAAO,CAAA,CAAA,aAAA,eAAe,EAAE,CAAC,CAAA;AAC1B,SAAA;AAED,QAAA,QAAQ,QAAQ;YACd,KAAK,KAAK,EAAE;gBACV,OAAO,CAAA,CAAA,aAAA;wBACL,IAAI,EAAE,aAAa,CAAC,GAAG;AACvB,wBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;AACvB,wBAAA,IAAI,EAAE;4BACJ,MAAM,EAAE,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,uBAAf,eAAe,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU;AAC7C,yBAAA;qBACF,CAAC,CAAA;AACH,aAAA;AACD,YAAA,KAAK,IAAI;gBACP,OAAO,CAAA,CAAA,aAAA;wBACL,IAAI,EAAE,aAAa,CAAC,EAAE;AACtB,wBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;AACvB,wBAAA,IAAI,EAAE;4BACJ,MAAM,EAAE,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,uBAAf,eAAe,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU;AAC7C,yBAAA;qBACF,CAAC,CAAA;AACJ,YAAA,KAAK,UAAU;gBACb,OAAO,CAAA,CAAA,aAAA;wBACL,IAAI,EAAE,aAAa,CAAC,QAAQ;AAC5B,wBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;AACvB,wBAAA,IAAI,EAAE;4BACJ,MAAM,EAAE,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,uBAAf,eAAe,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU;AAC7C,yBAAA;qBACF,CAAC,CAAA;AACJ,YAAA,KAAK,WAAW;gBACd,OAAO,CAAA,CAAA,aAAA;wBACL,IAAI,EAAE,aAAa,CAAC,SAAS;AAC7B,wBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;AACvB,wBAAA,IAAI,EAAE;4BACJ,MAAM,EAAE,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,uBAAf,eAAe,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU;AAC7C,yBAAA;qBACF,CAAC,CAAA;AACJ,YAAA,KAAK,WAAW;gBACd,OAAO,CAAA,CAAA,aAAA;wBACL,IAAI,EAAE,aAAa,CAAC,SAAS;AAC7B,wBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;AACvB,wBAAA,IAAI,EAAE;4BACJ,MAAM,EAAE,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,uBAAf,eAAe,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU;AAC7C,yBAAA;qBACF,CAAC,CAAA;AACJ,YAAA,KAAK,MAAM;gBACT,OAAO,CAAA,CAAA,aAAA;wBACL,IAAI,EAAE,aAAa,CAAC,IAAI;AACxB,wBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;AACvB,wBAAA,IAAI,EAAE;4BACJ,MAAM,EAAE,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,uBAAf,eAAe,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU;AAC7C,yBAAA;qBACF,CAAC,CAAA;AACJ,YAAA,KAAK,aAAa;gBAChB,OAAO,CAAA,CAAA,aAAA;wBACL,IAAI,EAAE,aAAa,CAAC,WAAW;AAC/B,wBAAA,MAAM,EAAEA,OAAW,CAAC,EAAE,CAAC;AACvB,wBAAA,IAAI,EAAE;4BACJ,MAAM,EAAE,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,uBAAf,eAAe,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU;AAC7C,yBAAA;qBACF,CAAC,CAAA;AACJ,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC7C,SAAA;;AACF,CAAA,CAAA,CAAA,EAAA,EAAE;IAEU,oBAAoB,GAAG,gBAAgB,CAClD,+BAA+B,EAC/B,UAAO,EAAkD,EAAA;QAAhD,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,CAAA;;;AAA2C,YAAA,OAAA,CAAA,CAAA,cAAC;AAC7D,oBAAA,IAAI,EAAA,IAAA;AACJ,oBAAA,MAAM,EAAED,UAAc,EAAE;AACxB,oBAAA,IAAI,EAAA,IAAA;AACL,iBAAA,EAAC,CAAA;;;AAAA,CAAA,EACF;AAEK,IAAM,aAAa,GAAG,WAAW,CAAC;AACvC,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,YAAY,EAAA,YAAA;AACZ,IAAA,QAAQ,EAAE;;AAET,KAAA;IACD,aAAa,EAAE,UAAC,OAAO,EAAA;QACrB,OAAO;AACJ,aAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAC,KAAK,EAAA;YACvC,KAAK,CAAC,YAAY,GAAG;gBACnB,IAAI,EAAE,aAAa,CAAC,iBAAiB;AACrC,gBAAA,MAAM,EAAEE,OAAW,EAAE;aACtB,CAAC;AACJ,SAAC,CAAC;aACD,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,KAAK,EAAE,MAA2C,EAAA;AACtF,YAAA,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,SAAC,CAAC;aACD,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAC,KAAK,EAAE,MAAM,EAAA;YAChD,KAAK,CAAC,YAAY,GAAG;gBACnB,IAAI,EAAE,aAAa,CAAC,iBAAiB;gBACrC,MAAM,EAAEC,OAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;aAC1C,CAAC;AACJ,SAAC,CAAC;AACD,aAAA,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAC,KAAK,EAAA;YACzC,KAAK,CAAC,YAAY,GAAG;gBACnB,IAAI,EAAE,aAAa,CAAC,uBAAuB;AAC3C,gBAAA,MAAM,EAAED,OAAW,EAAE;aACtB,CAAC;AACJ,SAAC,CAAC;aACD,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAC,KAAK,EAAE,MAA2C,EAAA;AACxF,YAAA,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,SAAC,CAAC;aACD,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAC,KAAK,EAAE,MAAM,EAAA;YAClD,KAAK,CAAC,YAAY,GAAG;gBACnB,IAAI,EAAE,aAAa,CAAC,uBAAuB;gBAC3C,MAAM,EAAEC,OAAW,CAAC,MAAM,CAAC,OAAO,CAAC;aACpC,CAAC;AACJ,SAAC,CAAC;aACD,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAC,KAAK,EAAE,MAAM,EAAA;AACrD,YAAA,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,SAAC,CAAC;AACD,aAAA,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAC,KAAK,EAAA;YAC3C,KAAK,CAAC,YAAY,GAAG;gBACnB,IAAI,EAAE,aAAa,CAAC,gCAAgC;AACpD,gBAAA,MAAM,EAAED,OAAW,EAAE;aACtB,CAAC;AACJ,SAAC,CAAC;aACD,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAC,KAAK,EAAE,MAA0B,EAAA;AACzE,YAAA,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,SAAC,CAAC;aACD,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE,UAAC,KAAK,EAAE,MAAM,EAAA;YACpD,KAAK,CAAC,YAAY,GAAG;gBACnB,IAAI,EAAE,aAAa,CAAC,gCAAgC;gBACpD,MAAM,EAAEC,OAAW,CAAC,MAAM,CAAC,OAAO,CAAC;aACpC,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;AACF,CAAA,CAAC,CAAC;AAGU,IAAA,eAAe,GAAG,aAAa,CAAC;;;;"}
1
+ {"version":3,"file":"strategySlice-CtjrhCrS.js","sources":["../src/sharedFlowTypes/StrategyTypes.ts","../src/flows/strategy/api.ts","../src/flows/strategy/main.ts","../src/flows/strategy/strategies/askMobileNumber.ts","../src/flows/strategy/strategies/askOperator.ts","../src/flows/strategy/strategies/detectOperatorByIp.ts","../src/flows/strategy/strategySlice.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable camelcase */\nimport * as RDS from '../common-types/RemoteDataState';\nimport { Click2smsFlowState } from './Click2smsTypes';\nimport { CreditCardFlowState } from './CreditCardTypes';\nimport { MoRedirFlowState } from './MoRedirTypes';\nimport { MoFlowState } from './MoTypes';\nimport { OneClickFlowState } from './OneClickTypes';\nimport { PinFlowState } from './PinTypes';\nimport { UssdFlowState } from './UssdTypes';\n\nexport type IIdentifyResult = {\n operator: string;\n flow?: string;\n success: boolean;\n rockman_id?: string;\n message?: string;\n};\n\nexport type ConfigDetails = {\n host: string;\n slug: string;\n country: string;\n device?: 'smart' | 'feature';\n queryString?: Array<[string, string]>;\n automaticallySubmitAllOperators?: boolean;\n operators?: string[];\n service: string;\n offer?: string;\n};\n\nexport type IConfig = {\n offer?: string;\n slug?: string;\n country?: string;\n host?: string;\n device?: 'smart' | 'feature';\n automaticallySubmitAllOperators?: boolean;\n operators?: string[];\n service?: string;\n serviceId?: string;\n queryString?: any;\n apiAction?: any;\n};\n\nexport type ISupportedFlows = 'pin' | 'mo' | 'oneClick' | 'click2sms' | 'moRedir' | 'ussd' | 'creditCard';\nexport type IFlow = {\n flow: ISupportedFlows;\n flowOnWifi?: ISupportedFlows;\n operator?: string;\n flowConfig: ConfigDetails;\n default?: IFlow;\n rockman_id?: string;\n};\n\nexport type StrategyConfig = {\n operators: {\n [key: string]: IFlow;\n };\n default: IFlow;\n isUseMsisdnPrefix?: boolean;\n};\n// export type IStrategy = IPinStrategy | IMoStrategy;\n\nexport type IStrategy = {\n strategy: IStrategyNames;\n country: string;\n strategyConfigs: StrategyConfig;\n};\n\nexport type IStrategyNames =\n | 'pin'\n | 'mo'\n | 'mo-redir'\n | 'click2sms'\n | 'one-click'\n | 'ussd'\n | 'tpay-he'\n | 'credit-card'\n | 'tallyman-one-click'\n | 'pin-mo-ask-operator'\n | 'pin-mo-ask-mobile-number'\n | 'pin-one-click-ask-operator'\n | 'pin-one-click-detect-operator-by-ip'\n | 'one-click-mo-pin-detect-operator-by-ip-or-msisdn'\n | 'pin-click2sms-ask-operator'\n | 'mo-redir-one-click-detect-operator-by-ip'\n | 'pin-mo-redir-ask-mobile-number'\n | 'pin-click2sms-ask-mobile-number'\n | 'mo-one-click-detect-operator-by-ip'\n | 'click2sms-one-click-detect-operator-by-ip'\n | 'pin-header-enrichment'\n | 'pin-msisdn-fowarding-pin-header-enrichment'\n | 'he-pin-mo-redir-header-enrichment'\n | 'he-pin-one-click-header-enrichment'\n | 'he-pin-one-click-ask-operator'\n | 'click2sms-one-click-ask-operator'\n | 'pin-mo-detect-operator-by-ip'\n | 'he-mo-redir-one-click-header-enrichment'\n | 'pin-combo-ask-mobile-number'\n | 'header-enrichment-script'\n | 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn'\n | 'pin-mo-mo-redir-ask-mobile-number';\n\nexport interface IHash {\n [key: string]: string;\n}\n\nexport type IDENTIFYMSISDNEntryErrorTypes = 'AlreadySubscribed' | 'UnknownError' | 'InvalidMSISDN';\n\nexport type IDENTIFYMSISDNEntryFailure = {\n errorType: IDENTIFYMSISDNEntryErrorTypes;\n error: unknown;\n};\n\nexport type IdentifyFlowOptionsResult = {\n config: IConfig;\n nextAction?: unknown;\n msisdn?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n rockman_id?: string;\n isHeaderEnrichmentSuccess?: boolean;\n autoRedirect?: boolean;\n isUseMsisdnPrefix?: boolean;\n};\n\nexport type IDENTIFYMSISDNEntrySuccess = {};\nexport type OPERATORSelectFailure = {};\nexport type OPERATORSelectSuccess = IdentifyFlowOptionsResult;\n\nexport type IDETECTYOPERATOBYIPFailure = {};\nexport type IDETECTYOPERATOBYIPSuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_OPERATOR_MSISDNEntrySuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_FLOW_HESuccess = IdentifyFlowOptionsResult;\n\nexport type OPERATORSelectFlowIdentifyFailure = {};\nexport type OPERATORSelectFlowIdentifySuccess = {\n operators: Array<string>;\n msisdn?: string;\n nextAction: 'selectOperator';\n};\nexport type IDENTIFYFailure = {};\n\nexport type IDENTIFYSuccess = {};\n\nexport type IOperatorSelectFlowIdentifyPayload = {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFlowIdentifyFailure, OPERATORSelectFlowIdentifySuccess>;\n};\n\n// export type IIdentifyByIPPayload= {\n// type:\"IDENTIFY_FLOW_BY_IP\"\n// result: RDS.RemoteDataState<IDENTIFYBYIPFailure, IDENTIFYBYIPSuccess>;\n// }\n\nexport type IDetectOperatorByIpPayload = {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n};\n\nexport enum PossibleTypes {\n IDENTIFY_STRATEGY = 'IDENTIFY_STRATEGY',\n IDENTIFY_FLOW_BY_MSISDN = 'IDENTIFY_FLOW_BY_MSISDN',\n IDENTIFY_FLOW_BY_OPERATOR_SELECT = 'IDENTIFY_FLOW_BY_OPERATOR_SELECT',\n PIN = 'PIN',\n MO = 'MO',\n MO_REDIR = 'MO_REDIR',\n ONE_CLICK = 'ONE_CLICK',\n CLICK2SMS = 'CLICK2SMS',\n USSD = 'USSD',\n TPAY_HE = 'TPAY_HE',\n CREDIT_CARD = 'CREDIT_CARD'\n}\n\nexport type IOperatorSelectPayload = {\n type: PossibleTypes;\n result: OPERATORSelectSuccess;\n};\n\nexport type ISubmitMsisdnPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByIpOperatorPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByHePayload = {\n type: PossibleTypes;\n result: IDENTIFY_FLOW_HESuccess;\n};\n\nexport type IIdentfyFlowByMsisdnNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByOperatorNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByIPOperatorNextAction = 'getRedirectUrlAction' | 'submitMSISDNAction';\n\nexport type IIdenyifyFlowByMsisdnSumbitNextData = {\n nextAction: IIdentfyFlowByMsisdnNextAction;\n msisdn?: string;\n operator?: string;\n};\n\nexport type IIdenyifyFlowByMsisdnPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IIdenyifyStrategyPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IStrategyCurrentState =\n | {\n type: 'IDENTIFY_STRATEGY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: OPERATORSelectFlowIdentifySuccess;\n }\n | {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n }\n | {\n type: 'HE_IDENTIFY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFailure, OPERATORSelectSuccess>;\n config: IConfig;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n nextData: IIdenyifyFlowByMsisdnSumbitNextData;\n }\n | {\n type: 'PIN';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'USSD';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO_REDIR';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'ONE_CLICK';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CLICK2SMS';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'TPAY_HE';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CREDIT_CARD';\n result: IdentifyFlowOptionsResult;\n };\n\nexport type IStrategyIDentifyUserResult =\n | {\n success: 'true';\n rockman_id: string;\n msisdn: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n 'redirect-back'?: string;\n 'msisdn-alias'?: string;\n }\n | {\n success: 'false';\n rockman_id: string;\n message: string;\n 'redirect-back'?: string;\n };\n\nexport type IMockFlows = 'pin' | 'mo' | 'oneclick' | 'click2sms' | 'moredir' | 'ussd' | 'tpay' | 'creditcard';\n\nexport interface IMockFlowParams<T> {\n 'mock-flow': IMockFlows;\n 'current-state': T;\n 'show-pin-entry': '1' | '0';\n 'show-thank-you': '1' | '0';\n operator: string;\n msisdn?: string;\n}\n\nexport interface IScriptHeaderEnrichmentSuccess extends CustomEvent {\n detail: {\n msisdn: string;\n operator_code: string;\n };\n}\n\nexport interface ExtraStrategyData {\n isHeaderEnrichmentSuccess?: boolean;\n config?: ConfigDetails;\n msisdn?: string;\n rockman_id?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n operators?: string[];\n}\nexport interface StrategyState {\n currentState: StrategyCurrentState;\n}\n\nexport interface StrategyCurrentState {\n type: PossibleTypes;\n result: RDS.RemoteDataState<any, any>;\n data?: ExtraStrategyData;\n}\n\nexport type IMockPinFlowStates = 'msisdn-state' | 'pin-state' | 'completed-state' | 'msisdn-failure-state';\n\nexport interface RootState {\n strategy?: StrategyState;\n pinFlow?: PinFlowState;\n moFlow?: MoFlowState;\n moRedirFlow?: MoRedirFlowState;\n click2smsFlow?: Click2smsFlowState;\n oneClickFlow?: OneClickFlowState;\n ussdFlow?: UssdFlowState;\n creditCardFlow?: CreditCardFlowState;\n}\n","import { IIdentifyResult, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\n\nconst fetchJsonp: <T>({ window, _url }: { window: Window; _url: string }) => Promise<T> = ({\n window,\n _url\n}: {\n window: Window;\n _url: string;\n}) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n (window as any)[ouisys_callback_function] = (arg: any) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\nconst identify = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n}): Promise<IIdentifyResult> => {\n const languageCode = window.languageCode ? `&language_code=${window.languageCode}` : '';\n const locationHref = encodeURIComponent(window.location.href);\n\n const host = (window as Window).DEV_BASE_URL || '';\n\n const params = {\n action: 'identify',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: locationHref,\n language_code: languageCode\n };\n\n const urlParams = new URLSearchParams(params).toString();\n const url = `${host}/tallyman/v1/?${urlParams}`;\n\n const response = await fetch(url);\n return response.json();\n};\n\nconst identifyUserGetSubscriptionUrl = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n extraParamsQs = '',\n search = ''\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParamsQs?: string;\n search?: string;\n}): Promise<IStrategyIDentifyUserResult> => {\n const xaid = window.pac_analytics.visitor.xaid || '';\n const locationHref = encodeURIComponent(window.location.href);\n const pixelUrl = encodeURIComponent(\n `http://${window.location.host}/pixels?xcid=${window.location.pathname.replace(\n '/',\n ''\n )}&xaid=${xaid}&country=${bupperizeCountry(country)}`\n );\n\n const params = {\n action: 'identify-user',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n page: locationHref,\n pixel_url: pixelUrl,\n rockman_id: rockmanId,\n extraParamsQs,\n search\n };\n\n const urlParams = new URLSearchParams(params).toString();\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${urlParams}`;\n\n const response = await fetchJsonp<IStrategyIDentifyUserResult>({\n window,\n _url: url\n });\n return response;\n};\n\nexport { identify, identifyUserGetSubscriptionUrl };\n","import PhoneNumber from 'awesome-phonenumber';\nimport { IError } from '../../common-types/IError';\nimport { IStrategy } from '../../common-types/Strategy';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport {\n IConfig,\n IFlow,\n IHash,\n IIdentifyResult,\n IStrategyIDentifyUserResult\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { identify, identifyUserGetSubscriptionUrl } from './api';\n\nexport async function determineFlowByMsidn({\n window,\n internationalMSISDN,\n configs\n}: {\n window: Window;\n internationalMSISDN: string;\n configs: IStrategy;\n}): Promise<IFlow> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError;\n submissionError.type = 'SEInvalidMSISDN';\n throw submissionError;\n }\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || ''; // tallyman API expects international msisdn without unknown special character\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const config = defaultFlowConfig.flowConfig;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n\n const indentifyFlow = async (): Promise<IIdentifyResult> => {\n const { slug, country, device } = config;\n const { rockmanId } = window.pac_analytics.visitor;\n const { offer } = window.pac_analytics.visitor;\n const flowOperatorResult: IIdentifyResult = await identify({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId\n });\n return flowOperatorResult;\n };\n const theResult = await indentifyFlow();\n\n const flow = operatorsConfig[theResult.operator] ? operatorsConfig[theResult.operator] : null;\n const cannotDetect =\n theResult.success === false && theResult.message === 'Operator could not be found for the given MSISDN';\n const hlrError =\n theResult.success === false && theResult.message?.indexOf('HLR did not find the operator for given MSISDN') !== -1;\n\n if (cannotDetect || hlrError) {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError & { msisdn: string };\n submissionError.type = 'FlowDetectFailed';\n submissionError.msisdn = msisdn;\n throw submissionError;\n } else if (flow !== null) {\n const flowObj = { operator: theResult.operator, default: defaultFlowConfig, ...flow };\n // @ts-ignore\n return flowObj;\n } else if (flow === null) {\n const flowObj = { operator: theResult.operator, ...defaultFlowConfig };\n // @ts-ignore\n return flowObj;\n } else {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError;\n submissionError.type = 'SEInvalidMSISDN';\n throw submissionError;\n }\n}\n\nexport function determineFlowByOperator({ configs, operator }: { configs: IStrategy; operator: string }): IFlow {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n\n const flowObj = {\n operator: operator?.toUpperCase(),\n default: defaultFlowConfig,\n ...operatorsConfig[operator?.toUpperCase()]\n };\n // @ts-ignore\n return flowObj;\n}\n\nexport async function determineFlowByOperatorFromIp({\n window,\n configs\n}: {\n window: Window;\n configs: IStrategy;\n}): Promise<IFlow> {\n const operator = await tryGetIPRangeName(window.pac_analytics.visitor);\n const flowObj = determineFlowByOperator({\n configs,\n operator: operator ? operator.toUpperCase() : ''\n });\n return flowObj;\n}\n\nexport function getOperators({ configs }: { configs: IStrategy }): Array<string> {\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const operators = Object.keys(operatorsConfig);\n return operators;\n}\n\nexport const identifyUser = async ({\n window,\n configs,\n extraParams\n}: {\n window: Window;\n configs: IStrategy;\n extraParams?: IHash;\n}): Promise<{\n msisdn: string | null;\n operator: string | null;\n subscription_url?: string;\n redirect_url?: string;\n}> => {\n if (typeof window === 'undefined') {\n throw new Error('Error');\n } else {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const config = defaultFlowConfig.flowConfig;\n const { country, slug, device } = config;\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n const extraParamsQs = !extraParams\n ? ''\n : `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n\n if (searchObj['redirect-back']) {\n if (searchObj?.success === 'false') {\n const identifyError = new Error(\n `Error in getRedirectUrl() identify-user action:\\n${searchObj?.message || 'NotOn3g'}`\n ) as IError & { type: string; next_action: string };\n identifyError.type = 'NotOn3g';\n throw identifyError;\n } else {\n if (searchObj.subscription_url) {\n const subscription_url = window.atob(searchObj.subscription_url);\n\n const newUrl = new URL(subscription_url);\n const newQueryString = newUrl.search;\n const urlParams = new URLSearchParams(newQueryString);\n let msisdn = urlParams.get('msisdn') || searchObj?.msisdn || null;\n const operator = urlParams.get('operator') || searchObj?.operator || null;\n\n if (msisdn) {\n const pn = new PhoneNumber(msisdn, window?.pac_analytics?.visitor?.country);\n const internationalMsisdn = pn.getNumber('e164');\n msisdn = internationalMsisdn.slice(1);\n }\n\n return { subscription_url, msisdn, operator };\n }\n if (searchObj?.redirect_url) {\n const redirect_url = window.atob(searchObj?.redirect_url);\n\n const newUrl = new URL(redirect_url);\n const newQueryString = newUrl.search;\n const urlParams = new URLSearchParams(newQueryString);\n let msisdn = urlParams.get('msisdn') || searchObj?.msisdn || null;\n const operator = urlParams.get('operator') || searchObj?.operator || null;\n\n if (msisdn) {\n const pn = new PhoneNumber(msisdn, window?.pac_analytics?.visitor?.country);\n const internationalMsisdn = pn.getNumber('e164');\n msisdn = internationalMsisdn.slice(1);\n }\n\n return { redirect_url, msisdn, operator };\n }\n const newUrl = new URL(window.location.href);\n const newQueryString = newUrl.search;\n const urlParams = new URLSearchParams(newQueryString);\n let msisdn = urlParams.get('msisdn') || searchObj?.msisdn || null;\n const operator = urlParams.get('operator') || searchObj?.operator || null;\n\n if (msisdn) {\n const pn = new PhoneNumber(msisdn, window?.pac_analytics?.visitor?.country);\n const internationalMsisdn = pn.getNumber('e164');\n msisdn = internationalMsisdn.slice(1);\n }\n\n return { msisdn, operator };\n }\n } else {\n const result = await identifyUserGetSubscriptionUrl({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n extraParamsQs\n });\n if (result.success === 'false') {\n const identifyError = new Error(\n `Error in getRedirectUrl() identify-user action:\\n${result.message}`\n ) as IError & { type: string; next_action: string };\n identifyError.type = 'NotOn3g';\n // identifyError['next_action'] = result.next_action;\n throw identifyError;\n } else {\n let msisdn;\n if (result.msisdn) {\n const pn = new PhoneNumber(result.msisdn, window?.pac_analytics?.visitor?.country);\n const internationalMsisdn = pn.getNumber('e164');\n msisdn = internationalMsisdn.slice(1);\n }\n return {\n subscription_url: result.subscription_url || result.redirect_url,\n msisdn,\n operator: result.operator\n };\n }\n }\n }\n};\n\nexport const subscribe: (_url: string) => Promise<string> = async (_url: string) =>\n // const result:ISubscribeResult = await fetch(url + \"&operator=kw_viva\").then((x)=>x.json())\n\n // if(false === result.success){\n // const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as IError & {type:string;}\n // subscribeError['type'] = \"SubscriptionError\";\n // throw subscribeError\n // }else{\n '/product';\n// }\n\nexport function mockConfig({ configs, flow }: { configs: IStrategy; flow: string }): IConfig {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const opArr = Object.keys(operatorsConfig);\n const r = opArr.filter((o) => operatorsConfig[o].flow === flow);\n const operator = r[0];\n const flowObj = { offer: '1', operator, default: defaultFlowConfig, ...operatorsConfig[operator] };\n\n return flowObj;\n}\n\n// export const mockedPinFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.PIN,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('pin')\n// }\n// }\n// };\n\n// export const mockedMoFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('mo')\n// }\n// }\n// };\n\n// export const mockedUssdFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.USSD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('ussd')\n// }\n// }\n// };\n\n// export const mockedMoRdirFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO_REDIR,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('moRedir')\n// }\n// }\n// };\n\n// export const mockedClick2smsFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CLICK2SMS,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('click2sms')\n// }\n// }\n// };\n\n// export const mockedOneClickFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.ONE_CLICK,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('oneClick')\n// }\n// }\n// };\n\n// export const mockedCreditCardFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CREDIT_CARD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('creditCard')\n// }\n// }\n// };\n// export const mockedMOFlow : State = { type: \"MO\", result:moFlow(mockTracker, mockConfig(\"mo\"))}\n// export const mockedOneClickFlow : State = { type: \"ONECLICK\", result:oneClickFlow(mockTracker, mockConfig(\"oneClick\"), {\"testextraparams\":\"1\"})}\n// export const mockedClick2smsFlow : State = { type: \"CLICK2SMS\", result:click2smsFlow(mockTracker, mockConfig(\"click2sms\"))}\n// export const mockedMORedirFlow : State = { type: \"MOREDIR\", result:moRedirFlow(mockTracker, mockConfig(\"moRedir\"))}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\n\nimport {\n IDENTIFYMSISDNEntryErrorTypes,\n IFlow,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn } from '../main';\n\nexport const askMobileNumber = (): StrategyCurrentState => ({\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.NothingYet()\n});\n\nexport const submitMSISDNAction = createAsyncThunk(\n 'strategy/submitMSISDNAction',\n async (\n {\n window,\n msisdn\n }: {\n window: Window;\n msisdn: string;\n isHeSuccess?: boolean;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n const { strategy } = configs;\n const flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n\n switch (strategy) {\n case 'pin-mo-redir-ask-mobile-number':\n return pinMoRedirAskMobileNumber(flowObj, msisdn);\n case 'pin-mo-ask-mobile-number':\n return pinMoAskMobileNumber(flowObj, msisdn);\n case 'pin-combo-ask-mobile-number':\n return pinComboAskMobileNumber(flowObj, msisdn);\n case 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn':\n return moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn(flowObj, msisdn);\n case 'pin-mo-mo-redir-ask-mobile-number':\n return pinMoMoRedirAskMobileNumber(flowObj, msisdn);\n case 'pin-click2sms-ask-mobile-number':\n return pinClick2smsAskMobileNumber(flowObj, msisdn);\n default:\n return rejectWithValue('Unknown strategy');\n }\n } catch (ex) {\n let errorType: IDENTIFYMSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'SEAlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'SEInvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n return rejectWithValue({\n errorType,\n error: ex,\n productUrl: ex.productUrl\n });\n }\n }\n);\n\nexport const headerEnrichmentScript = (flowObj: IFlow, msisdn: string, isHeaderEnrichmentSuccess: boolean) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nexport const pinMoAskMobileNumber = (flowObj: IFlow, msisdn: string) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nexport const pinComboAskMobileNumber = (flowObj: IFlow, msisdn: string) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nconst pinMoRedirAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n\nconst pinMoMoRedirAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars-experimental\nconst oneClickMoPinDetectOperatorByIpOrMsisdn = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'oneClick':\n tracker.sendOptInFlowEvent('3G click');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n rockman_id: flowObj.rockman_id\n }\n };\n }\n};\n\nexport const moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn = (\n flowObj: IFlow,\n msisdn: string\n): StrategyCurrentState => {\n switch (flowObj.flowOnWifi) {\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n default:\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n rockman_id: flowObj.rockman_id\n }\n };\n }\n};\nexport const pinClick2smsAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\n\nimport { PossibleTypes, StrategyCurrentState } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, getOperators } from '../main';\n\nexport const askOperator = (): StrategyCurrentState => {\n const configs = getConfig();\n const operators = getOperators({ configs });\n return {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.NothingYet(),\n data: {\n operators\n }\n };\n};\n\nexport const selectOperatorAction = createAsyncThunk(\n 'strategy/selectOperatorAction',\n async (\n {\n operator\n }: {\n operator: string;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n\n const flowObj = determineFlowByOperator({\n configs,\n operator\n });\n\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: {\n config: flowObj.flowConfig,\n operator\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: {\n config: flowObj.flowConfig,\n operator\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: {\n config: {\n operators: [operator],\n ...flowObj.flowConfig\n },\n operator\n }\n };\n case 'oneClick':\n tracker.sendOptInFlowEvent('3G click');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: {\n config: flowObj.flowConfig,\n operator,\n autoRedirect: true\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet()\n };\n }\n } catch (ex) {\n const errorType = 'UnkownError';\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n }\n);\n","import * as RDS from '../../../common-types/RemoteDataState';\n\nimport { IOptInFlowName } from '../../../common-types/IOptInFlowName';\nimport { ISupportedFlows, PossibleTypes } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp } from '../main';\n\n// @ts-ignore\nconst trackerEventMapping: Record<ISupportedFlows, IOptInFlowName> = {\n mo: 'Msisdn to sms',\n pin: 'Pin',\n oneClick: '3G click',\n moRedir: 'Redirect',\n click2sms: 'Click to sms',\n ussd: 'Msisdn to sms'\n};\n\nconst flowMapping: Record<ISupportedFlows, PossibleTypes> = {\n mo: PossibleTypes.MO,\n pin: PossibleTypes.PIN,\n oneClick: PossibleTypes.ONE_CLICK,\n moRedir: PossibleTypes.MO_REDIR,\n click2sms: PossibleTypes.CLICK2SMS,\n ussd: PossibleTypes.USSD,\n creditCard: PossibleTypes.CREDIT_CARD\n};\nconst detectOperatorByIp = async () => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n const getTrackerEventName = (flowType: ISupportedFlows) => trackerEventMapping[flowType];\n\n const flowType = flowObj.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator\n }\n };\n } catch (ex) {\n console.error('SSSSS', ex);\n }\n};\n\nexport { detectOperatorByIp };\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nimport {\n IMockFlowParams,\n IMockPinFlowStates,\n PossibleTypes,\n RootState,\n StrategyCurrentState,\n StrategyState\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../utilities/getConfig';\nimport { determineFlowByOperator } from './main';\nimport { askMobileNumber, submitMSISDNAction } from './strategies/askMobileNumber';\nimport { askOperator, selectOperatorAction } from './strategies/askOperator';\n\nimport { detectOperatorByIp } from './strategies/detectOperatorByIp';\n\nconst initialState: StrategyState = {\n currentState: {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.NothingYet(),\n data: undefined\n }\n};\n\nconst mockStrategyStateByUrlParam = (): StrategyCurrentState => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n\n if (search['mock-flow'] !== undefined) {\n if (search.operator !== undefined) {\n window.operator = search.operator;\n }\n switch (search['mock-flow']) {\n case 'pin':\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({})\n };\n\n case 'mo':\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({})\n };\n case 'moredir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({})\n };\n case 'oneclick':\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({})\n };\n case 'click2sms':\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({})\n };\n case 'ussd':\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({})\n };\n case 'creditcard':\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({})\n };\n default:\n throw new Error('(mockStrategyStateByUrlParam) Strategy Mock Flow not supported');\n }\n }\n};\n\n/**\n * Identify Strategy\n * @returns {type: 'strategy/identifyStrategy', payload: {type: PossibleTypes.MO, result: IdentifyFlowOptionsResult}}\n * - Add type\n * - Makes a decision on which strategy to use in order to identify the flow\n * - Strategy could be asking user's phone number, selecting an operator etc\n * - all with the intension of getting the flow and its configuration\n * - Flows are usually tied to an operator in the pages config.json\n * - But they could also be single flows\n *\n */\n\nexport const identifyStrategy = createAsyncThunk('strategy/identifyStrategy', async () => {\n const configs = getConfig();\n const { strategy, strategyConfigs } = configs;\n // const { isUseMsisdnPrefix } = strategyConfigs;\n const search = searchToObject(window) as IMockFlowParams<IMockPinFlowStates>;\n if (search['mock-flow'] !== undefined) {\n return mockStrategyStateByUrlParam();\n }\n if (\n (search['show-pin-entry'] && search['show-pin-entry'] === '1') ||\n (search['show-thank-you'] && search['show-thank-you'] === '1')\n ) {\n const flowObj = determineFlowByOperator({\n configs,\n operator: search.operator\n });\n const strategyResult: StrategyCurrentState = {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: flowObj?.flowConfig || strategyConfigs?.default?.flowConfig\n }\n };\n return strategyResult;\n }\n\n if (strategy.includes('ask-operator')) {\n return askOperator();\n }\n if (strategy.includes('detect-operator-by-ip')) {\n return detectOperatorByIp();\n }\n if (strategy?.includes('ask-mobile-number')) {\n return askMobileNumber();\n }\n\n switch (strategy) {\n case 'pin': {\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n }\n case 'mo':\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'mo-redir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'one-click':\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'click2sms':\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'ussd':\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'credit-card':\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n default:\n throw new Error('Strategy not supported');\n }\n});\n\nexport const setStrategyExtraData = createAsyncThunk(\n 'strategy/setStrategyExtraData',\n async ({ type, data }: { type: PossibleTypes; data: any }) => ({\n type,\n result: RDS.NothingYet(),\n data\n })\n);\n\nexport const strategySlice = createSlice({\n name: 'strategy',\n initialState,\n reducers: {\n // Define synchronous reducers as needed\n },\n extraReducers: (builder) => {\n builder\n .addCase(identifyStrategy.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Loading()\n };\n })\n .addCase(identifyStrategy.fulfilled, (state, action: PayloadAction<StrategyCurrentState>) => {\n state.currentState = action.payload;\n })\n .addCase(identifyStrategy.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Failure(action.error.message)\n };\n })\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.Loading()\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<StrategyCurrentState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(setStrategyExtraData.fulfilled, (state, action) => {\n state.currentState = action.payload;\n })\n .addCase(selectOperatorAction.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.Loading()\n };\n })\n .addCase(selectOperatorAction.fulfilled, (state, action: PayloadAction<any>) => {\n state.currentState = action.payload;\n })\n .addCase(selectOperatorAction.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\nexport const selectStrategyState = (state: RootState) => state.strategy;\nexport const strategyReducer = strategySlice.reducer;\n"],"names":["PossibleTypes","identify","_a","window","slug","country","msisdn","device","offer","rockmanId","languageCode","concat","locationHref","encodeURIComponent","location","href","host","DEV_BASE_URL","urlParams","URLSearchParams","action","offerId","rockman_id","page","language_code","toString","url","fetch","_b","sent","json","determineFlowByMsidn","internationalMSISDN","configs","submissionError","Error","type","match","join","defaultFlowConfig","_c","strategyConfigs","default","config","flowConfig","operatorsConfig","_d","operators","indentifyFlow","__awaiter","_this","pac_analytics","visitor","theResult","_f","flow","operator","cannotDetect","success","message","hlrError","_e","indexOf","__assign","determineFlowByOperator","toUpperCase","determineFlowByOperatorFromIp","tryGetIPRangeName","submitMSISDNAction","createAsyncThunk","rejectWithValue","getConfig","strategy","flowObj","pinMoRedirAskMobileNumber","pinMoAskMobileNumber","pinComboAskMobileNumber","moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn","pinMoMoRedirAskMobileNumber","pinClick2smsAskMobileNumber","errorType","ex_1","error","productUrl","tracker","sendOptInFlowEvent","PIN","result","RDS.NothingYet","data","MO","MO_REDIR","flowOnWifi","CLICK2SMS","askOperator","Object","keys","getOperators","IDENTIFY_FLOW_BY_OPERATOR_SELECT","selectOperatorAction","ONE_CLICK","autoRedirect","ex","trackerEventMapping","mo","pin","oneClick","moRedir","click2sms","ussd","flowMapping","USSD","creditCard","CREDIT_CARD","initialState","currentState","IDENTIFY_STRATEGY","undefined","mockStrategyStateByUrlParam","search","searchToObject","RDS.Success","identifyStrategy","includes","getTrackerEventName","flowType","event_1","console","IDENTIFY_FLOW_BY_MSISDN","_g","_h","setStrategyExtraData","strategyReducer","createSlice","name","reducers","extraReducers","builder","addCase","pending","state","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","reducer"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{__assign as n}from"tslib";import e from"pacman-client";import{v1 as a}from"uuid";var c=function(n,e){var a=e.replace(/[\]]/g,"\\$&"),c=new RegExp("[?&]".concat(a,"(=([^&#]*)|&|#|$)"),"i").exec(n);return c?c[2]?decodeURIComponent(c[2].replace(/\+/g," ")):"":null};function r(n,e,a){var c=n.indexOf("#"),r=-1===c?"":n.substr(c),t=n;t=-1===c?t:t.substr(0,c);var o=new RegExp("([?&])".concat(e,"=.*?(&|$)"),"i"),i=-1!==t.indexOf("?")?"&":"?";return t=t.match(o)?t.replace(o,"$1".concat(e,"=").concat(a,"$2")):t.endsWith("&")?"".concat(t+e,"=").concat(a):"".concat(t+i+e,"=").concat(a),"".concat(t+r,"&")}var t=function(r,t,o){if(!r)return{advancedInFlow:function(){},advancedInPreFlow:function(){},recedeInFlow:function(){},customEvent:function(){},sendOptInFlowEvent:function(){}};var i=r.pac_analytics?r.pac_analytics.url:c(r.location.search,"pacman-server")||"/analytics";if(!r.pac_analytics){var s=a().replace(/-/g,""),l=parseInt(c(r.location.search,"cid")||"0",10)||2;r.pac_analytics={visitor:{rockmanId:s,impressionNumber:1,country:process.env.country||"",page:process.env.page||"",xaid:c(r.location.search,"xaid")||r.xaid||"",cid:l,offer:c(r.location.search,"offer")||r.offer||"1"},startTime:(new Date).valueOf(),queryString:function(n){return c(r.location.search,n)||""},url:i,userId:s,encCampaignId:c(r.location.search,"xcid")||"",originalUrl:document.location.href}}var u=e.default({rockmanId:r.pac_analytics.visitor.rockmanId,serverUrl:process.env.pacman_server||i,impressionNumber:1,signalInterval:1e3});return n(n({},u.trackerFlowEvents),{sendOptInFlowEvent:u.sendOptInFlowEvent})}("undefined"!=typeof window?window:null);export{c as q,t,r as u};
2
+ //# sourceMappingURL=tracker-DaaILhEr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker-DaaILhEr.js","sources":["../src/pacman/queryString.ts","../src/pacman/index.ts","../src/utilities/tracker.ts"],"sourcesContent":["export default (url: string, paramName: string) => {\n const name = paramName.replace(/[\\]]/g, '\\\\$&');\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`, 'i');\n const results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n};\n\nexport function updateUrlParameter(uri: string, key: string, value: string) {\n // remove the hash part before operating on the uri\n const i = uri.indexOf('#');\n const hash = i === -1 ? '' : uri.substr(i);\n let newUri = uri;\n newUri = i === -1 ? newUri : newUri.substr(0, i);\n\n const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i');\n const separator = newUri.indexOf('?') !== -1 ? '&' : '?';\n if (newUri.match(re)) {\n newUri = newUri.replace(re, `$1${key}=${value}$2`);\n } else {\n newUri = newUri.endsWith('&') ? `${newUri + key}=${value}` : `${newUri + separator + key}=${value}`;\n }\n return `${newUri + hash}&`; // finally append the hash as well\n}\n","import mkPacmanClient from 'pacman-client';\nimport { ITrackerFlowEvents } from 'pacman-client/.build-lib/Pacman/types';\n\nimport { v1 as uuid } from 'uuid';\nimport queryString from './queryString';\n\nexport { queryString };\nexport type { ITrackerFlowEvents as ITracker };\n\nexport default (window: Window, _country?: string, _page?: string): ITrackerFlowEvents => {\n if (!window) {\n return {\n advancedInFlow: () => void 6,\n advancedInPreFlow: () => void 6,\n recedeInFlow: () => void 6,\n customEvent: () => void 6,\n sendOptInFlowEvent: () => void 6\n };\n }\n const url = window.pac_analytics\n ? window.pac_analytics.url\n : queryString(window.location.search, 'pacman-server') || '/analytics';\n\n if (!window.pac_analytics) {\n const rockmanId = uuid().replace(/-/g, '');\n\n const campaignId = parseInt(queryString(window.location.search, 'cid') || '0', 10) || 2;\n window.pac_analytics = {\n visitor: {\n rockmanId,\n impressionNumber: 1, // TODO: get impressionNumber from localStorage\n country: process.env.country || '',\n page: process.env.page || '',\n xaid: queryString(window.location.search, 'xaid') || window.xaid || '',\n cid: campaignId,\n offer: queryString(window.location.search, 'offer') || window.offer || '1' // default to 1 offer id\n },\n startTime: new Date().valueOf(),\n queryString: (key: string) => queryString(window.location.search, key) || '',\n url,\n userId: rockmanId,\n encCampaignId: queryString(window.location.search, 'xcid') || '',\n originalUrl: document.location.href\n };\n }\n // @ts-ignore\n const pacmanClient = mkPacmanClient.default({\n rockmanId: window.pac_analytics.visitor.rockmanId,\n serverUrl: process.env.pacman_server || url,\n impressionNumber: 1,\n signalInterval: 1000 // in milliseconds\n });\n\n return {\n ...pacmanClient.trackerFlowEvents,\n sendOptInFlowEvent: pacmanClient.sendOptInFlowEvent\n };\n};\n","import mkTracker from '../pacman';\n\nexport const tracker = mkTracker(typeof window !== 'undefined' ? window : null);\n"],"names":["queryString","url","paramName","name","replace","results","RegExp","concat","exec","decodeURIComponent","updateUrlParameter","uri","key","value","i","indexOf","hash","substr","newUri","re","separator","match","endsWith","tracker","window","_country","_page","advancedInFlow","advancedInPreFlow","recedeInFlow","customEvent","sendOptInFlowEvent","pac_analytics","location","search","rockmanId","uuid","campaignId","parseInt","visitor","impressionNumber","country","process","env","page","xaid","cid","offer","startTime","Date","valueOf","userId","encCampaignId","originalUrl","document","href","pacmanClient","mkPacmanClient","default","serverUrl","pacman_server","signalInterval","__assign","trackerFlowEvents","mkTracker"],"mappings":"wFAAA,IAAAA,EAAe,SAACC,EAAaC,GAC3B,IAAMC,EAAOD,EAAUE,QAAQ,QAAS,QAElCC,EADQ,IAAIC,OAAO,OAAOC,OAAAJ,EAAuB,qBAAE,KACnCK,KAAKP,GAC3B,OAAKI,EACAA,EAAQ,GACNI,mBAAmBJ,EAAQ,GAAGD,QAAQ,MAAO,MAD5B,GADH,IAGtB,WAEeM,EAAmBC,EAAaC,EAAaC,GAE3D,IAAMC,EAAIH,EAAII,QAAQ,KAChBC,GAAc,IAAPF,EAAW,GAAKH,EAAIM,OAAOH,GACpCI,EAASP,EACbO,GAAgB,IAAPJ,EAAWI,EAASA,EAAOD,OAAO,EAAGH,GAE9C,IAAMK,EAAK,IAAIb,OAAO,SAASC,OAAAK,EAAc,aAAE,KACzCQ,GAAqC,IAAzBF,EAAOH,QAAQ,KAAc,IAAM,IAMrD,OAJEG,EADEA,EAAOG,MAAMF,GACND,EAAOd,QAAQe,EAAI,KAAAZ,OAAKK,EAAG,KAAAL,OAAIM,EAAK,OAEpCK,EAAOI,SAAS,KAAO,GAAGf,OAAAW,EAASN,EAAO,KAAAL,OAAAM,GAAU,GAAGN,OAAAW,EAASE,EAAYR,EAAO,KAAAL,OAAAM,GAEvF,UAAGK,EAASF,EAAO,IAC5B,CCfA,ICPaO,EDOb,SAAgBC,EAAgBC,EAAmBC,GACjD,IAAKF,EACH,MAAO,CACLG,eAAgB,WAAY,EAC5BC,kBAAmB,WAAY,EAC/BC,aAAc,WAAY,EAC1BC,YAAa,WAAY,EACzBC,mBAAoB,WAAY,GAGpC,IAAM9B,EAAMuB,EAAOQ,cACfR,EAAOQ,cAAc/B,IACrBD,EAAYwB,EAAOS,SAASC,OAAQ,kBAAoB,aAE5D,IAAKV,EAAOQ,cAAe,CACzB,IAAMG,EAAYC,IAAOhC,QAAQ,KAAM,IAEjCiC,EAAaC,SAAStC,EAAYwB,EAAOS,SAASC,OAAQ,QAAU,IAAK,KAAO,EACtFV,EAAOQ,cAAgB,CACrBO,QAAS,CACPJ,UAASA,EACTK,iBAAkB,EAClBC,QAASC,QAAQC,IAAIF,SAAW,GAChCG,KAAMF,QAAQC,IAAIC,MAAQ,GAC1BC,KAAM7C,EAAYwB,EAAOS,SAASC,OAAQ,SAAWV,EAAOqB,MAAQ,GACpEC,IAAKT,EACLU,MAAO/C,EAAYwB,EAAOS,SAASC,OAAQ,UAAYV,EAAOuB,OAAS,KAEzEC,WAAW,IAAIC,MAAOC,UACtBlD,YAAa,SAACY,GAAgB,OAAAZ,EAAYwB,EAAOS,SAASC,OAAQtB,IAAQ,EAAE,EAC5EX,IAAGA,EACHkD,OAAQhB,EACRiB,cAAepD,EAAYwB,EAAOS,SAASC,OAAQ,SAAW,GAC9DmB,YAAaC,SAASrB,SAASsB,KAElC,CAED,IAAMC,EAAeC,EAAeC,QAAQ,CAC1CvB,UAAWX,EAAOQ,cAAcO,QAAQJ,UACxCwB,UAAWjB,QAAQC,IAAIiB,eAAiB3D,EACxCuC,iBAAkB,EAClBqB,eAAgB,MAGlB,OACKC,EAAAA,EAAA,CAAA,EAAAN,EAAaO,mBAAiB,CACjChC,mBAAoByB,EAAazB,oBAEpC,CCvDsBiC,CAA4B,oBAAXxC,OAAyBA,OAAS"}
package/dist/tracker.js CHANGED
@@ -1,5 +1,2 @@
1
- export { t as tracker } from './tracker-B_zsMRN2.js';
2
- import 'tslib';
3
- import 'pacman-client';
4
- import 'uuid';
1
+ export{t as tracker}from"./tracker-DaaILhEr.js";import"tslib";import"pacman-client";import"uuid";
5
2
  //# sourceMappingURL=tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"tracker.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import{__awaiter as n,__generator as e}from"tslib";import{q as o}from"./tracker-DaaILhEr.js";function t(t){return n(this,void 0,void 0,(function(){var n,r,i,a,c;return e(this,(function(e){switch(e.label){case 0:if(n=o(window.location.href,"mock-ip")||process.env.mock_ip,console.log("mockip",n),t.ip||"undefined"==typeof window)return[3,5];e.label=1;case 1:return e.trys.push([1,3,,4]),r=window.location.host,i=window.DEV_BASE_URL_IP||r,[4,fetch("https://".concat(i,"/api/v1/ip").concat(n?"?mock-ip=".concat(n):"")).then((function(n){return n.json()}))];case 2:return a=e.sent(),t.ip=a.ip,t.ip_range_name=a.ip_range_name,[2,a.ip_range_name];case 3:return c=e.sent(),console.warn("IP Lookup failed",c),[2,""];case 4:return[3,6];case 5:return[2,t.ip_range_name||""];case 6:return[2]}}))}))}export{t};
2
+ //# sourceMappingURL=tryGetIPRangeName-QW-9NgzE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tryGetIPRangeName-QW-9NgzE.js","sources":["../src/ips/tryGetIPRangeName.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { IVisitor } from '../common-types/IVisitor';\nimport queryString from '../pacman/queryString';\n\n// eslint-disable-next-line consistent-return\nexport default async function tryGetIPRangeName(visitor: IVisitor): Promise<string> {\n const mockip = queryString(window.location.href, 'mock-ip') || process.env.mock_ip;\n // eslint-disable-next-line no-console\n console.log('mockip', mockip);\n if (!visitor.ip && typeof window !== 'undefined') {\n try {\n const { host } = window.location;\n const newHost = window.DEV_BASE_URL_IP || host;\n const res = await fetch(`https://${newHost}/api/v1/ip${mockip ? `?mock-ip=${mockip}` : ''}`).then((x) =>\n x.json()\n );\n // return isIPInRange('37.200.146.28')\n visitor.ip = res.ip;\n visitor.ip_range_name = res.ip_range_name;\n return res.ip_range_name;\n } catch (ex) {\n console.warn('IP Lookup failed', ex);\n return '';\n }\n } else {\n return visitor.ip_range_name || '';\n }\n}\n"],"names":["tryGetIPRangeName","visitor","mockip","queryString","window","location","href","process","env","mock_ip","console","log","ip","host","newHost","DEV_BASE_URL_IP","fetch","concat","then","x","json","res","_a","sent","ip_range_name","warn","ex_1"],"mappings":"6FAK8B,SAAAA,EAAkBC,8GACxCC,EAASC,EAAYC,OAAOC,SAASC,KAAM,YAAcC,QAAQC,IAAIC,QAE3EC,QAAQC,IAAI,SAAUT,GACjBD,EAAQW,IAAwB,oBAAXR,OAAtB,MAA4C,CAAA,EAAA,oBAIhC,6BAFJS,EAAST,OAAOC,cAClBS,EAAUV,OAAOW,iBAAmBF,EACxB,CAAA,EAAAG,MAAM,WAAWC,OAAAH,uBAAoBZ,EAAS,YAAYe,OAAAf,GAAW,KAAMgB,MAAK,SAACC,GACjG,OAAAA,EAAEC,MAAM,YAKV,OANMC,EAAMC,EAEXC,OAEDtB,EAAQW,GAAKS,EAAIT,GACjBX,EAAQuB,cAAgBH,EAAIG,cACrB,CAAA,EAAAH,EAAIG,sBAGX,kBADAd,QAAQe,KAAK,mBAAoBC,GACjC,CAAA,EAAO,uBAGT,KAAA,EAAA,MAAA,CAAA,EAAOzB,EAAQuB,eAAiB,2BAEnC"}
package/dist/ussdFlow.js CHANGED
@@ -1,211 +1,2 @@
1
- import { __awaiter, __generator, __assign, __read } from 'tslib';
2
- import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
- import { S as Success, N as NothingYet, L as Loading, F as Failure } from './RemoteDataState-CwHLI23e.js';
4
- import { checkSubscriptionHander } from './checkSubscriptionHander.js';
5
- import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
6
- import { t as tracker } from './tracker-B_zsMRN2.js';
7
- import './checkSubscriptionByRockmanIdOnly-C89Ph9cV.js';
8
- import './helpers-J_h-ZgxH.js';
9
- import './searchToObject.js';
10
- import 'pacman-client';
11
- import 'uuid';
12
-
13
- var useUssdFlowState = function (useSelector) {
14
- var currentState = useSelector(function (state) { return state.ussdFlow.currentState; });
15
- return currentState;
16
- };
17
-
18
- function ussdFlowMatch(_a) {
19
- var msisdnEntry = _a.msisdnEntry;
20
- return function (state) {
21
- switch (state.type) {
22
- case 'MSISDNEntry':
23
- return msisdnEntry(state.result);
24
- default:
25
- // TODO - this should be an error or something
26
- return msisdnEntry(state.result);
27
- }
28
- };
29
- }
30
-
31
- var ussd = function (window, slug, country, msisdn, device, offer, rockmanId, search, extraParamsQs) { return __awaiter(void 0, void 0, void 0, function () {
32
- var params, host, url;
33
- return __generator(this, function (_a) {
34
- params = new URLSearchParams(__assign({ action: 'ussd', slug: slug, country: country, msisdn: msisdn, device: device, offerId: offer.toString(), rockman_id: rockmanId }, (search && { search: search })));
35
- if (extraParamsQs) {
36
- extraParamsQs.split('&').forEach(function (param) {
37
- var _a = __read(param.split('='), 2), key = _a[0], value = _a[1];
38
- if (key)
39
- params.append(key, value);
40
- });
41
- }
42
- host = window.DEV_BASE_URL || '';
43
- url = "".concat(host, "/tallyman/v1/?").concat(params.toString());
44
- return [2 /*return*/, fetch(url).then(function (response) { return response.json(); })];
45
- });
46
- }); };
47
-
48
- function submitMSISDN(window, maybeConfig, internationalMSISDN, extraParams) {
49
- return __awaiter(this, void 0, void 0, function () {
50
- var config;
51
- return __generator(this, function (_a) {
52
- config = __assign({ offer: window.pac_analytics.visitor.offer }, (maybeConfig || {}));
53
- return [2 /*return*/, submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams)];
54
- });
55
- });
56
- }
57
- function submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams) {
58
- return __awaiter(this, void 0, void 0, function () {
59
- var slug, country, device, offer, search, extraParamsQs, msisdn, rockmanId, result, type, error;
60
- return __generator(this, function (_a) {
61
- switch (_a.label) {
62
- case 0:
63
- slug = config.slug, country = config.country, device = config.device, offer = config.offer;
64
- search = window.location.search.substr(1) || '';
65
- extraParamsQs = !extraParams
66
- ? ''
67
- : "&".concat(Object.keys(extraParams)
68
- .map(function (k) { return "".concat(k, "=").concat(extraParams[k]); })
69
- .join('&'));
70
- msisdn = internationalMSISDN.match(/\d+/gi).join('');
71
- rockmanId = window.pac_analytics.visitor.rockmanId;
72
- return [4 /*yield*/, ussd(window, slug, country, msisdn, device, offer, rockmanId, search, extraParamsQs)];
73
- case 1:
74
- result = _a.sent();
75
- if (result.success === false) {
76
- type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';
77
- error = new Error("".concat(type, ":\n").concat(result.message));
78
- error.type = type;
79
- console.error(error);
80
- throw error;
81
- }
82
- else {
83
- return [2 /*return*/, result];
84
- }
85
- }
86
- });
87
- });
88
- }
89
-
90
- var initialState = {
91
- currentState: {
92
- type: 'MSISDNEntry',
93
- result: NothingYet()
94
- }
95
- };
96
- /**
97
- * submitMSISDNAction
98
- * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}
99
-
100
- * Calls ussd api that open ussd prompt on mobile
101
- *
102
- */
103
- var submitMSISDNAction = createAsyncThunk('ussdFlow/submitMSISDNAction', function (_a, _b) {
104
- var window = _a.window, msisdn = _a.msisdn, extraParams = _a.extraParams;
105
- var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
106
- return __awaiter(void 0, void 0, void 0, function () {
107
- var state, config, keywordAndShortcode, ex_1, errorType;
108
- return __generator(this, function (_c) {
109
- switch (_c.label) {
110
- case 0:
111
- state = getState();
112
- config = state.strategy.currentState.data.config;
113
- _c.label = 1;
114
- case 1:
115
- _c.trys.push([1, 5, , 6]);
116
- // Start Ussd Api Call
117
- tracker.advancedInFlow('tallyman.v1-ussd', 'msisdn-submitted', { msisdn: msisdn });
118
- return [4 /*yield*/, submitMSISDN(window, config, msisdn, extraParams)];
119
- case 2:
120
- keywordAndShortcode = _c.sent();
121
- tracker.advancedInFlow('tallyman.v1-ussd', 'msisdn-submission-success', { msisdn: msisdn });
122
- if (!(extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true')) return [3 /*break*/, 4];
123
- return [4 /*yield*/, storeMsisdn(msisdn)
124
- .then(function (data) {
125
- if (data && data.data && data.data.success) {
126
- tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');
127
- }
128
- else {
129
- tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');
130
- }
131
- })
132
- .catch(function (error) {
133
- tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);
134
- })];
135
- case 3:
136
- _c.sent();
137
- _c.label = 4;
138
- case 4:
139
- // End Store Msisdn
140
- // Check For Subscription by rockman id and redirect to product url
141
- checkSubscriptionHander({
142
- window: window,
143
- flow: 'tallyman.v1-ussd',
144
- action: 'sale',
145
- args: {
146
- msisdn: msisdn
147
- }
148
- });
149
- return [2 /*return*/, {
150
- type: 'MSISDNEntry',
151
- result: Success(__assign({}, keywordAndShortcode))
152
- }];
153
- case 5:
154
- ex_1 = _c.sent();
155
- console.warn(ex_1);
156
- errorType = void 0;
157
- switch (ex_1.type) {
158
- case 'AlreadySubscribed':
159
- errorType = 'AlreadySubscribed';
160
- break;
161
- case 'InvalidMSISDN':
162
- errorType = 'InvalidMSISDN';
163
- break;
164
- default:
165
- errorType = 'UnknownError';
166
- }
167
- tracker.recedeInFlow('tallyman.v1-ussd', 'msisdn-submission-failure', {
168
- msisdn: msisdn,
169
- errorType: errorType || 'UnknownError'
170
- });
171
- return [2 /*return*/, rejectWithValue({
172
- errorType: errorType,
173
- productUrl: ex_1.productUrl
174
- })];
175
- case 6: return [2 /*return*/];
176
- }
177
- });
178
- });
179
- });
180
- var ussdFlowSlice = createSlice({
181
- name: 'ussdFlow',
182
- initialState: initialState,
183
- reducers: {
184
- backToStartAction: function (state) {
185
- tracker.recedeInFlow('tallyman.v1-ussd', 'ussd-state', 'requested to change phone number');
186
- // TODO GO BACK TO IDENTIFY BY MSISDN BASED ON STRATEGY
187
- state.currentState = { type: 'MSISDNEntry', result: NothingYet() };
188
- }
189
- },
190
- extraReducers: function (builder) {
191
- builder
192
- .addCase(submitMSISDNAction.pending, function (state) {
193
- state.currentState = { type: 'MSISDNEntry', result: Loading() };
194
- })
195
- .addCase(submitMSISDNAction.fulfilled, function (state, action) {
196
- state.currentState = action.payload;
197
- })
198
- .addCase(submitMSISDNAction.rejected, function (state, action) {
199
- state.currentState = {
200
- type: 'MSISDNEntry',
201
- result: Failure(action.payload)
202
- };
203
- });
204
- }
205
- });
206
- // Export reducers and actions
207
- var ussdFlowReducer = ussdFlowSlice.reducer, ussdFlowActions = ussdFlowSlice.actions;
208
- var backToStartAction = ussdFlowActions.backToStartAction;
209
-
210
- export { backToStartAction, submitMSISDNAction, useUssdFlowState, ussdFlowMatch, ussdFlowReducer };
1
+ import{__awaiter as t,__generator as n,__assign as r,__read as e}from"tslib";import{createAsyncThunk as s,createSlice as a}from"@reduxjs/toolkit";import{S as o,N as c,L as i,F as u}from"./RemoteDataState-lcf8PfJd.js";import{checkSubscriptionHander as d}from"./checkSubscriptionHander.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import"./checkSubscriptionByRockmanIdOnly-BwR1un1L.js";import"./helpers-xPhGBX-B.js";import"./searchToObject.js";import"pacman-client";import"uuid";var f=function(t){return t((function(t){return t.ussdFlow.currentState}))};function v(t){var n=t.msisdnEntry;return function(t){return t.type,n(t.result)}}var S=function(s,a,o,c,i,u,d,l,m){return t(void 0,void 0,void 0,(function(){var t,f,v;return n(this,(function(n){return t=new URLSearchParams(r({action:"ussd",slug:a,country:o,msisdn:c,device:i,offerId:u.toString(),rockman_id:d},l&&{search:l})),m&&m.split("&").forEach((function(n){var r=e(n.split("="),2),s=r[0],a=r[1];s&&t.append(s,a)})),f=s.DEV_BASE_URL||"",v="".concat(f,"/tallyman/v1/?").concat(t.toString()),[2,fetch(v).then((function(t){return t.json()}))]}))}))};function p(e,s,a,o){return t(this,void 0,void 0,(function(){var t;return n(this,(function(n){return t=r({offer:e.pac_analytics.visitor.offer},s||{}),[2,y(e,t,a,o)]}))}))}function y(r,e,s,a){return t(this,void 0,void 0,(function(){var t,o,c,i,u,d,l,m,f,v,p;return n(this,(function(n){switch(n.label){case 0:return t=e.slug,o=e.country,c=e.device,i=e.offer,u=r.location.search.substr(1)||"",d=a?"&".concat(Object.keys(a).map((function(t){return"".concat(t,"=").concat(a[t])})).join("&")):"",l=s.match(/\d+/gi).join(""),m=r.pac_analytics.visitor.rockmanId,[4,S(r,t,o,l,c,i,m,u,d)];case 1:if(!1===(f=n.sent()).success)throw v="ALREADY SUBSCRIBED"===f.message?"AlreadySubscribed":"InvalidMSISDN",(p=new Error("".concat(v,":\n").concat(f.message))).type=v,console.error(p),p;return[2,f]}}))}))}var h={currentState:{type:"MSISDNEntry",result:c()}},b=s("ussdFlow/submitMSISDNAction",(function(e,s){var a=e.window,c=e.msisdn,i=e.extraParams,u=s.getState,f=s.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,s,v,S;return n(this,(function(n){switch(n.label){case 0:t=u(),e=t.strategy.currentState.data.config,n.label=1;case 1:return n.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-ussd","msisdn-submitted",{msisdn:c}),[4,p(a,e,c,i)];case 2:return s=n.sent(),m.advancedInFlow("tallyman.v1-ussd","msisdn-submission-success",{msisdn:c}),i&&i.storeMsisdn&&"true"===i.storeMsisdn?[4,l(c).then((function(t){t&&t.data&&t.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){m.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:n.sent(),n.label=4;case 4:return d({window:a,flow:"tallyman.v1-ussd",action:"sale",args:{msisdn:c}}),[2,{type:"MSISDNEntry",result:o(r({},s))}];case 5:switch(v=n.sent(),console.warn(v),S=void 0,v.type){case"AlreadySubscribed":S="AlreadySubscribed";break;case"InvalidMSISDN":S="InvalidMSISDN";break;default:S="UnknownError"}return m.recedeInFlow("tallyman.v1-ussd","msisdn-submission-failure",{msisdn:c,errorType:S||"UnknownError"}),[2,f({errorType:S,productUrl:v.productUrl})];case 6:return[2]}}))}))})),w=a({name:"ussdFlow",initialState:h,reducers:{backToStartAction:function(t){m.recedeInFlow("tallyman.v1-ussd","ussd-state","requested to change phone number"),t.currentState={type:"MSISDNEntry",result:c()}}},extraReducers:function(t){t.addCase(b.pending,(function(t){t.currentState={type:"MSISDNEntry",result:i()}})).addCase(b.fulfilled,(function(t,n){t.currentState=n.payload})).addCase(b.rejected,(function(t,n){t.currentState={type:"MSISDNEntry",result:u(n.payload)}}))}}),I=w.reducer,E=w.actions.backToStartAction;export{E as backToStartAction,b as submitMSISDNAction,f as useUssdFlowState,v as ussdFlowMatch,I as ussdFlowReducer};
211
2
  //# sourceMappingURL=ussdFlow.js.map