ouisys-engine 5.1.25 → 5.1.26

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.
package/dist/moFlow.js CHANGED
@@ -7,7 +7,7 @@ import { searchToObject } from './searchToObject.js';
7
7
  import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
8
8
  import { t as tracker } from './tracker-B_zsMRN2.js';
9
9
  import { c as cleanSearchParams } from './cleanSearchParams-B2jK3H1j.js';
10
- import { i as identifyStrategy } from './strategySlice-TZv86dqX.js';
10
+ import { i as identifyStrategy } from './strategySlice-BcZRZ0xO.js';
11
11
  import 'pacman-client';
12
12
  import 'uuid';
13
13
  import './getConfig.js';
@@ -6,7 +6,7 @@ import { searchToObject } from './searchToObject.js';
6
6
  import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
7
7
  import { t as tracker } from './tracker-B_zsMRN2.js';
8
8
  import { u as updateUrlWithParams } from './updateUrlWithParams-ZaZt1BCf.js';
9
- import { t as tryGetIPRangeName, i as identifyStrategy } from './strategySlice-TZv86dqX.js';
9
+ import { t as tryGetIPRangeName, i as identifyStrategy } from './strategySlice-BcZRZ0xO.js';
10
10
  import { c as cleanSearchParams } from './cleanSearchParams-B2jK3H1j.js';
11
11
  import 'pacman-client';
12
12
  import 'uuid';
@@ -3,7 +3,7 @@ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
3
  import { S as Success, N as NothingYet, L as Loading, F as Failure } from './RemoteDataState-CwHLI23e.js';
4
4
  import { u as updateUrlParameter, t as tracker } from './tracker-B_zsMRN2.js';
5
5
  import { searchToObject } from './searchToObject.js';
6
- import { c as setStrategyExtraData, f as flowMapping } from './strategySlice-TZv86dqX.js';
6
+ import { c as setStrategyExtraData, f as flowMapping } from './strategySlice-BcZRZ0xO.js';
7
7
  import { b as bupperizeCountry } from './api-oPdBWsMC.js';
8
8
  import { l as loadScriptInnerHtml } from './loadScriptInnerHtml-CstJVRED.js';
9
9
  import { c as cleanSearchParams } from './cleanSearchParams-B2jK3H1j.js';
package/dist/pinFlow.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { __awaiter, __generator, __assign } from 'tslib';
2
2
  import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
3
  import { N as NothingYet, L as Loading, S as Success, F as Failure } from './RemoteDataState-CwHLI23e.js';
4
- import { i as identifyStrategy, c as setStrategyExtraData, P as PossibleTypes } from './strategySlice-TZv86dqX.js';
4
+ import { i as identifyStrategy, c as setStrategyExtraData, P as PossibleTypes } from './strategySlice-BcZRZ0xO.js';
5
5
  import { h as handleResolveRedirect } from './handleResolveRedirect-5Hkm5YXF.js';
6
6
  import { r as redirectErrorTypes, g as getErrorCode } from './normaliseErrorCode-CseFd8jz.js';
7
7
  import { searchToObject } from './searchToObject.js';
package/dist/strategy.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { R as RDS } from './RemoteDataState-CwHLI23e.js';
2
- import { P as PossibleTypes } from './strategySlice-TZv86dqX.js';
3
- export { i as identifyStrategy, a as selectOperatorAction, b as strategyReducer, s as submitMSISDNAction } from './strategySlice-TZv86dqX.js';
2
+ import { P as PossibleTypes } from './strategySlice-BcZRZ0xO.js';
3
+ export { i as identifyStrategy, a as selectOperatorAction, b as strategyReducer, s as submitMSISDNAction } from './strategySlice-BcZRZ0xO.js';
4
4
  import 'tslib';
5
5
  import '@reduxjs/toolkit';
6
6
  import './searchToObject.js';
@@ -213,7 +213,7 @@ var getHeaderEnrichmentResult = function () { return __awaiter(void 0, void 0, v
213
213
  return [2 /*return*/, {
214
214
  msisdn: msisdn_1 || '',
215
215
  operator: operator_1 || '',
216
- subscription_url: searchObj.subscription_url ? raw : undefined,
216
+ subscription_url: searchObj.subscription_url ? newUrl_1.href : undefined,
217
217
  redirect_url: searchObj.redirect_url ? raw : undefined
218
218
  }];
219
219
  }
@@ -1159,4 +1159,4 @@ var strategySlice = createSlice({
1159
1159
  var strategyReducer = strategySlice.reducer;
1160
1160
 
1161
1161
  export { PossibleTypes as P, selectOperatorAction as a, strategyReducer as b, setStrategyExtraData as c, flowMapping as f, identifyStrategy as i, submitMSISDNAction as s, tryGetIPRangeName as t };
1162
- //# sourceMappingURL=strategySlice-TZv86dqX.js.map
1162
+ //# sourceMappingURL=strategySlice-BcZRZ0xO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategySlice-BcZRZ0xO.js","sources":["../../src/sharedFlowTypes/StrategyTypes.ts","../../src/ips/tryGetIPRangeName.ts","../../src/flows/strategy/main.ts","../../src/flows/strategy/strategies/askMobileNumber.ts","../../src/flows/strategy/strategies/askOperator.ts","../../src/flows/strategy/strategies/callRedirectApi.ts","../../src/flows/strategy/strategies/detectOperatorByIp.ts","../../src/flows/strategy/strategies/headerEnrichment.ts","../../src/flows/strategy/strategies/injectHeaderEnrichmentScript.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 { IStrategyNames } from '../common-types/Strategy';\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 interface HEResult {\n msisdn: string;\n operator: string;\n subscription_url?: string;\n redirect_url?: 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 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 'show-chain-link': '1' | '0';\n operator: string;\n msisdn?: string;\n 'subscription-url'?: string;\n show_custom_error?: string;\n product_url?: string;\n ui_show_default_flow?: '1' | '0';\n ui_show_pin_entry?: '1' | '0';\n ui_error_message?: string;\n}\n\nexport interface IScriptHeaderEnrichmentSuccess extends CustomEvent {\n detail: {\n msisdn: string;\n operator_code: string;\n subscription_url: boolean;\n encrypted_msisdn: boolean;\n };\n}\n\nexport interface IScriptHeaderEnrichmentFailure extends CustomEvent {\n detail: {\n encrypted_msisdn: boolean;\n error_details: {\n error: any;\n stack: any;\n };\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 strategy?: string;\n defaultConfig?: IFlow;\n defaultFlowType?: ISupportedFlows;\n skipRedirectCall?: boolean;\n apn?: 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","/* 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","import { IError } from '../../common-types/IError';\nimport { IOptInFlowName } from '../../common-types/IOptInFlowName';\nimport { IStrategy, ISupportedFlows } from '../../common-types/Strategy';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { HEResult, IConfig, IFlow, IIdentifyResult, PossibleTypes } from '../../sharedFlowTypes/StrategyTypes';\nimport { formatNumberToE164 } from '../../utilities/formatNumberToE164';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { identify } from './api';\n\nexport const 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 tpayHe: PossibleTypes.TPAY_HE,\n creditCard: PossibleTypes.CREDIT_CARD\n};\n\n// @ts-ignore\nexport const 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 tpayHe: 'Pin',\n ussd: 'Msisdn to sms'\n};\n\nexport const getTrackerEventName = (flowType: ISupportedFlows) => trackerEventMapping[flowType];\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 determineFlowByMsidn() 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 determineFlowByMsidn() 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 determineFlowByMsidn() 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.includes('_') ? 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 getHeaderEnrichmentResult = async (): Promise<HEResult> => {\n if (typeof window === 'undefined') {\n throw new Error('This function can only be run in a browser environment.');\n }\n\n const searchObj = searchToObject(window) as any; // Assumes the implementation of searchToObject\n if (searchObj.success === 'false') {\n throw new Error(`Error in getRedirectUrl() identify-user action:\\n${searchObj.message || 'NotOn3g'}`);\n }\n const responseUrl = searchObj.subscription_url || searchObj.redirect_url;\n\n if (responseUrl) {\n // Decode and parse\n const raw = window.atob(responseUrl);\n const newUrl = new URL(raw);\n\n // Enforce HTTPS\n newUrl.protocol = 'https:';\n\n const urlParams = new URLSearchParams(newUrl.search);\n const locParams = new URLSearchParams(window.location.search);\n\n let msisdn = urlParams.get('msisdn') || searchObj.msisdn;\n // Try decoded URL → searchObj → location.search for operator\n const operator = urlParams.get('operator') || searchObj.operator || locParams.get('operator') || '';\n\n if (msisdn) {\n msisdn = formatNumberToE164(msisdn, window?.pac_analytics?.visitor?.country);\n }\n\n return {\n msisdn: msisdn || '',\n operator: operator || '',\n subscription_url: searchObj.subscription_url ? newUrl.href : undefined,\n redirect_url: searchObj.redirect_url ? raw : undefined\n };\n }\n console.error('No URL provided for redirection in the url params');\n\n const newUrl = new URL(window.location.href);\n const urlParams = new URLSearchParams(newUrl.search);\n\n let msisdn = urlParams.get('msisdn') || searchObj.msisdn;\n const operator = urlParams.get('operator') || searchObj.operator;\n\n if (msisdn) {\n msisdn = formatNumberToE164(msisdn, window?.pac_analytics?.visitor?.country);\n }\n\n return {\n msisdn: msisdn || '',\n operator: operator || ''\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 ISupportedFlows,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn, flowMapping, getTrackerEventName } 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 flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n const flowType = flowObj?.flow;\n const event = getTrackerEventName(flowType);\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n msisdn\n }\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","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, flowMapping, getOperators, getTrackerEventName } 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 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 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 { ISupportedFlows } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { getRedirectUrl } from '../api';\nimport { flowMapping, getTrackerEventName } from '../main';\n\nconst callRedirectApi = async () => {\n const configs = getConfig();\n const defaultConfig = configs?.strategyConfigs.default;\n const defaultFlowType = defaultConfig.flow as ISupportedFlows;\n const { slug, country, device } = defaultConfig.flowConfig;\n const { rockmanId } = window.pac_analytics.visitor;\n const { offer } = window.pac_analytics.visitor;\n try {\n const result = await getRedirectUrl({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n });\n\n if (result.success === false) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n\n // OPERATOR NOT KNOWN\n\n // const operator = result?.operator && result?.operator !== 'unknown' ? result?.operator : null;\n\n if (result?.payload?.network_type === 'data') {\n // const flowObj = await determineFlowByOperator({\n // operator,\n // configs\n // });\n // const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName('oneClick');\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping.oneClick,\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null\n }\n };\n }\n if (result?.payload?.network_type === 'wifi') {\n // const flowObj = await determineFlowByOperator({\n // operator,\n // configs\n // });\n // const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName('moRedir');\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null,\n skipRedirectCall: true\n }\n };\n }\n\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null,\n skipRedirectCall: true\n }\n };\n } catch (ex) {\n console.error('error', ex);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n};\n\nexport { callRedirectApi };\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategyNames, ISupportedFlows } from '../../../common-types/Strategy';\n\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp, flowMapping, getTrackerEventName } from '../main';\nimport { askMobileNumber } from './askMobileNumber';\nimport { askOperator } from './askOperator';\n\nconst detectOperatorByIp = async (strategy?: IStrategyNames) => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (\n !flowObj.flow &&\n (strategy === 'all-flows-detect-operator-by-ip-or-ask-mobile-number' ||\n strategy === 'all-flows-ask-mobile-number')\n ) {\n return askMobileNumber();\n }\n\n if (!flowObj.flow && strategy === 'all-flows-detect-operator-by-ip-or-ask-operator') {\n return askOperator();\n }\n\n const flowType = flowObj.flow;\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n strategy\n }\n };\n }\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 strategy,\n defaultConfig,\n defaultFlowType\n }\n };\n } catch (ex) {\n console.error('error', ex);\n }\n};\n\nexport { detectOperatorByIp };\n","import IVisitor from '../../../common-types/IVisitor';\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategy } from '../../../common-types/Strategy';\n\nimport { ISupportedFlows } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { searchToObject } from '../../../utilities/searchToObject';\nimport { tracker } from '../../../utilities/tracker';\nimport {\n determineFlowByMsidn,\n determineFlowByOperator,\n flowMapping,\n getHeaderEnrichmentResult,\n getTrackerEventName\n} from '../main';\n\nconst resolveOperator = async (\n visitor: IVisitor,\n search: any,\n configs: IStrategy,\n msisdn: string\n): Promise<string | null> => {\n const firstSync = search?.operator ?? visitor?.heMsisdnDecryptedByApiResult?.operator;\n if (firstSync) return firstSync;\n\n const flow = await determineFlowByMsidn({\n window,\n configs,\n internationalMSISDN: msisdn\n });\n\n return flow?.operator ?? null;\n};\nconst handleHeaderEnrichment = async () => {\n const configs = getConfig();\n const defaultConfig = configs?.strategyConfigs.default;\n const defaultFlowType = defaultConfig.flow as ISupportedFlows;\n\n try {\n const visitor = (window.pac_analytics?.visitor ?? {}) as any;\n\n const search = searchToObject(window) as { operator: string; msisdn: string };\n\n const candidates: (string | undefined)[] = [\n search?.msisdn,\n visitor.heMsisdnDecryptedByApiResult?.msisdn,\n visitor.heMsisdnResult?.msisdn\n ];\n\n const msisdn = candidates.find((s) => !!s) ?? null;\n const isHeaderEnrichmentSuccess = msisdn !== null;\n\n const operator = msisdn ? await resolveOperator(visitor, search, configs, msisdn) : null;\n\n if (isHeaderEnrichmentSuccess) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn,\n operator\n });\n } else {\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure');\n }\n if (operator === null) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n\n if (configs.strategy === 'pin-header-enrichment' && isHeaderEnrichmentSuccess) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n if (window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.isContentBlocked) {\n window.isContentBlocked = true;\n tracker.customEvent('Flow', 'recede-auto', 'content-blocked', {\n errorType: 'ContentBlocked',\n error: 'ContentBlocked',\n message: 'ContentBlocked',\n ...window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult\n });\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator\n }\n };\n }\n let subscription_url = null;\n let redirect_url = null;\n const flowObj = await determineFlowByOperator({\n operator,\n configs\n });\n const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n if (flowType === 'oneClick') {\n const heResult = await getHeaderEnrichmentResult();\n\n subscription_url = heResult?.subscription_url || null;\n redirect_url = heResult?.redirect_url || null;\n }\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n subscription_url: subscription_url || null,\n redirect_url: redirect_url || null,\n isHeaderEnrichmentSuccess,\n msisdn,\n apn: visitor?.heMsisdnResult?.apn\n }\n };\n } catch (ex) {\n console.error('error', ex);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n};\n\nexport { handleHeaderEnrichment };\n","/* eslint-disable func-names */\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport {\n IConfig,\n IFlow,\n IScriptHeaderEnrichmentFailure,\n IScriptHeaderEnrichmentSuccess,\n ISupportedFlows,\n PossibleTypes\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { formatNumberToE164 } from '../../../utilities/formatNumberToE164';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getTrackerEventName } from '../main';\n\n/**\n * Creates a response object with the given parameters.\n *\n * @param {string} msisdn - The MSISDN (Mobile Station International Subscriber Directory Number).\n * @param {IConfig} config - The configuration object.\n * @param {string | null} operator - The operator (default: null).\n * @return {object} The response that sets the state.\n */\nconst createResponseObject = (config: IConfig, flow?: ISupportedFlows) => ({\n type: flowMapping[flow] || PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config\n }\n});\n\n/**\n * Injects header enrichment script based on the provided window object.\n *\n * @param {Window} window - The window object containing analytics visitor details.\n * @return {Promise} A promise that resolves based on specific events or timeouts.\n */\nconst injectHeaderEnrichmentScript = async ({ window }: { window: Window }) => {\n const configs = getConfig();\n const enableScriptTimer = configs?.enableScriptTimer;\n const { strategyConfigs } = configs;\n const config = strategyConfigs?.default?.flowConfig;\n\n return new Promise((resolve) => {\n try {\n let heMsisdn = window?.pac_analytics?.visitor?.heMsisdn;\n const country = window?.pac_analytics?.visitor?.country;\n\n if (heMsisdn && country) {\n heMsisdn = formatNumberToE164(heMsisdn, country);\n }\n\n let msisdnDetected = false;\n let timerExpired = false;\n let timerId: string | number | NodeJS.Timeout;\n\n if (enableScriptTimer) {\n timerId = setTimeout(() => {\n if (!msisdnDetected) {\n timerExpired = true;\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: '3 second timer expired'\n });\n\n window.isPrelanderClicked = true;\n resolve({\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n });\n }\n }, 3000);\n }\n\n const onSuccess = (event: Event) => {\n const { detail } = event as IScriptHeaderEnrichmentSuccess;\n heMsisdn = detail?.msisdn;\n if (detail?.msisdn && !detail?.encrypted_msisdn) {\n heMsisdn = formatNumberToE164(detail.msisdn, country);\n window.msisdn = heMsisdn;\n } else {\n window.msisdn = detail?.msisdn;\n window.is_encrypted_msisdn = detail?.encrypted_msisdn;\n }\n\n if (enableScriptTimer) {\n if (!timerExpired) {\n msisdnDetected = true;\n clearTimeout(timerId);\n\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: heMsisdn\n });\n const flowObj = determineFlowByOperator({\n configs: getConfig(),\n operator: detail?.operator_code\n });\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(headerEnrichmentScript(flowObj, heMsisdn, detail?.operator_code, true));\n }\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: heMsisdn,\n operator: detail?.operator_code\n });\n const flowObj = determineFlowByOperator({\n configs: getConfig(),\n operator: detail?.operator_code\n });\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(headerEnrichmentScript(flowObj, heMsisdn, detail?.operator_code, true));\n }\n };\n\n const onFail = (event: Event) => {\n const { detail } = event as IScriptHeaderEnrichmentFailure;\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', detail?.error_details);\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(createResponseObject(config, strategyConfigs?.default.flow as ISupportedFlows));\n };\n\n window.addEventListener('he-success', onSuccess);\n window.addEventListener('he-fail', onFail);\n\n if (!window?.heScriptUrl) {\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: 'Error he script url not set'\n });\n window.dispatchEvent(new Event('he-fail'));\n return;\n }\n window.addEventListener('error', (event) => {\n console.error('Global error:', event?.error);\n tracker.customEvent('Flow', 'recede-auto', 'global-error', {\n errorMessage: event?.error?.message,\n errorStack: event?.error?.stack\n });\n });\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.id = 'he-js-link';\n script.src = `${window.heScriptUrl}`; // URL Comes from server\n script.referrerPolicy = 'origin';\n document.head.appendChild(script);\n\n script.onerror = (error: any) => {\n console.error('Error loading Header Enrichment script.');\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: 'Error loading Header Enrichment script',\n errorMessage: error.message\n });\n window.dispatchEvent(new Event('he-fail'));\n };\n } catch (err) {\n console.error('Error in header enrichment:', err);\n resolve(createResponseObject(config, strategyConfigs?.default.flow as ISupportedFlows));\n }\n });\n};\n\nconst headerEnrichmentScript = (\n flowObj: IFlow,\n msisdn: string | null = null,\n operator: string | null = null,\n isHeaderEnrichmentSuccess: boolean\n) => {\n const defaultConfig = getConfig().strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow;\n const flowType = flowObj.flow || flowObj.default?.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n if (!flowObj.flow) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n isHeaderEnrichmentSuccess\n }\n };\n};\n\nexport { injectHeaderEnrichmentScript };\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 ISupportedFlows,\n PossibleTypes,\n RootState,\n StrategyCurrentState,\n StrategyState\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../utilities/getConfig';\nimport { determineFlowByOperator, flowMapping } from './main';\nimport { askMobileNumber, submitMSISDNAction } from './strategies/askMobileNumber';\nimport { askOperator, selectOperatorAction } from './strategies/askOperator';\n\nimport { tracker } from '../../utilities/tracker';\nimport { callRedirectApi } from './strategies/callRedirectApi';\nimport { detectOperatorByIp } from './strategies/detectOperatorByIp';\nimport { handleHeaderEnrichment } from './strategies/headerEnrichment';\nimport { injectHeaderEnrichmentScript } from './strategies/injectHeaderEnrichmentScript';\n\nwindow.tracker = tracker;\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\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 data: {\n subscription_url: search['subscription-url']\n }\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 (search.ui_show_default_flow === '1') {\n const flow = strategyConfigs?.default.flow as ISupportedFlows;\n const config = strategyConfigs?.default?.flowConfig;\n return {\n type: flowMapping[flow],\n result: RDS.NothingYet(),\n data: {\n config\n }\n };\n }\n if (\n (search['show-pin-entry'] && search['show-pin-entry'] === '1') ||\n (search['show-thank-you'] && search['show-thank-you'] === '1') ||\n (search.show_custom_error && search.show_custom_error === '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(strategy);\n }\n if (strategy?.includes('ask-mobile-number')) {\n return askMobileNumber();\n }\n\n if (strategy?.includes('detect-operator-by-redirect-api')) {\n return callRedirectApi();\n }\n\n if (strategy?.includes('header-enrichment') && strategy !== 'header-enrichment-script') {\n const n = await handleHeaderEnrichment();\n // @ts-ignore\n return n;\n }\n\n switch (strategy) {\n // REOVING THIS AS IT INJECTS UNUSED CODE\n case 'header-enrichment-script':\n // eslint-disable-next-line no-return-await\n return injectHeaderEnrichmentScript({\n window\n });\n case 'pin': {\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n }\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\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 strategy\n }\n };\n case 'one-click':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'ussd':\n tracker.sendOptInFlowEvent('USSD');\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'credit-card':\n // @ts-ignore\n tracker.sendOptInFlowEvent('Credit card');\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\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 // @ts-ignore\n builder\n .addCase(identifyStrategy.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Loading()\n };\n })\n // @ts-ignore\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":"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"}
package/dist/ussdFlow.js CHANGED
@@ -5,7 +5,7 @@ import { checkSubscriptionHander } from './checkSubscriptionHander.js';
5
5
  import { searchToObject } from './searchToObject.js';
6
6
  import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
7
7
  import { t as tracker } from './tracker-B_zsMRN2.js';
8
- import { i as identifyStrategy } from './strategySlice-TZv86dqX.js';
8
+ import { i as identifyStrategy } from './strategySlice-BcZRZ0xO.js';
9
9
  import './handleResolveRedirect-5Hkm5YXF.js';
10
10
  import './helpers-BIBpnXln.js';
11
11
  import './updateUrlWithParams-ZaZt1BCf.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ouisys-engine",
3
- "version": "5.1.25",
3
+ "version": "5.1.26",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "directories": "dist dev-tools",
@@ -1 +0,0 @@
1
- {"version":3,"file":"strategySlice-TZv86dqX.js","sources":["../../src/sharedFlowTypes/StrategyTypes.ts","../../src/ips/tryGetIPRangeName.ts","../../src/flows/strategy/main.ts","../../src/flows/strategy/strategies/askMobileNumber.ts","../../src/flows/strategy/strategies/askOperator.ts","../../src/flows/strategy/strategies/callRedirectApi.ts","../../src/flows/strategy/strategies/detectOperatorByIp.ts","../../src/flows/strategy/strategies/headerEnrichment.ts","../../src/flows/strategy/strategies/injectHeaderEnrichmentScript.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 { IStrategyNames } from '../common-types/Strategy';\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 interface HEResult {\n msisdn: string;\n operator: string;\n subscription_url?: string;\n redirect_url?: 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 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 'show-chain-link': '1' | '0';\n operator: string;\n msisdn?: string;\n 'subscription-url'?: string;\n show_custom_error?: string;\n product_url?: string;\n ui_show_default_flow?: '1' | '0';\n ui_show_pin_entry?: '1' | '0';\n ui_error_message?: string;\n}\n\nexport interface IScriptHeaderEnrichmentSuccess extends CustomEvent {\n detail: {\n msisdn: string;\n operator_code: string;\n subscription_url: boolean;\n encrypted_msisdn: boolean;\n };\n}\n\nexport interface IScriptHeaderEnrichmentFailure extends CustomEvent {\n detail: {\n encrypted_msisdn: boolean;\n error_details: {\n error: any;\n stack: any;\n };\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 strategy?: string;\n defaultConfig?: IFlow;\n defaultFlowType?: ISupportedFlows;\n skipRedirectCall?: boolean;\n apn?: 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","/* 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","import { IError } from '../../common-types/IError';\nimport { IOptInFlowName } from '../../common-types/IOptInFlowName';\nimport { IStrategy, ISupportedFlows } from '../../common-types/Strategy';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { HEResult, IConfig, IFlow, IIdentifyResult, PossibleTypes } from '../../sharedFlowTypes/StrategyTypes';\nimport { formatNumberToE164 } from '../../utilities/formatNumberToE164';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { identify } from './api';\n\nexport const 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 tpayHe: PossibleTypes.TPAY_HE,\n creditCard: PossibleTypes.CREDIT_CARD\n};\n\n// @ts-ignore\nexport const 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 tpayHe: 'Pin',\n ussd: 'Msisdn to sms'\n};\n\nexport const getTrackerEventName = (flowType: ISupportedFlows) => trackerEventMapping[flowType];\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 determineFlowByMsidn() 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 determineFlowByMsidn() 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 determineFlowByMsidn() 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.includes('_') ? 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 getHeaderEnrichmentResult = async (): Promise<HEResult> => {\n if (typeof window === 'undefined') {\n throw new Error('This function can only be run in a browser environment.');\n }\n\n const searchObj = searchToObject(window) as any; // Assumes the implementation of searchToObject\n if (searchObj.success === 'false') {\n throw new Error(`Error in getRedirectUrl() identify-user action:\\n${searchObj.message || 'NotOn3g'}`);\n }\n const responseUrl = searchObj.subscription_url || searchObj.redirect_url;\n\n if (responseUrl) {\n // Decode and parse\n const raw = window.atob(responseUrl);\n const newUrl = new URL(raw);\n\n // Enforce HTTPS\n newUrl.protocol = 'https:';\n\n const urlParams = new URLSearchParams(newUrl.search);\n const locParams = new URLSearchParams(window.location.search);\n\n let msisdn = urlParams.get('msisdn') || searchObj.msisdn;\n // Try decoded URL → searchObj → location.search for operator\n const operator = urlParams.get('operator') || searchObj.operator || locParams.get('operator') || '';\n\n if (msisdn) {\n msisdn = formatNumberToE164(msisdn, window?.pac_analytics?.visitor?.country);\n }\n\n return {\n msisdn: msisdn || '',\n operator: operator || '',\n subscription_url: searchObj.subscription_url ? raw : undefined,\n redirect_url: searchObj.redirect_url ? raw : undefined\n };\n }\n console.error('No URL provided for redirection in the url params');\n\n const newUrl = new URL(window.location.href);\n const urlParams = new URLSearchParams(newUrl.search);\n\n let msisdn = urlParams.get('msisdn') || searchObj.msisdn;\n const operator = urlParams.get('operator') || searchObj.operator;\n\n if (msisdn) {\n msisdn = formatNumberToE164(msisdn, window?.pac_analytics?.visitor?.country);\n }\n\n return {\n msisdn: msisdn || '',\n operator: operator || ''\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 ISupportedFlows,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn, flowMapping, getTrackerEventName } 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 flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n const flowType = flowObj?.flow;\n const event = getTrackerEventName(flowType);\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n msisdn\n }\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","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, flowMapping, getOperators, getTrackerEventName } 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 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 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 { ISupportedFlows } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { getRedirectUrl } from '../api';\nimport { flowMapping, getTrackerEventName } from '../main';\n\nconst callRedirectApi = async () => {\n const configs = getConfig();\n const defaultConfig = configs?.strategyConfigs.default;\n const defaultFlowType = defaultConfig.flow as ISupportedFlows;\n const { slug, country, device } = defaultConfig.flowConfig;\n const { rockmanId } = window.pac_analytics.visitor;\n const { offer } = window.pac_analytics.visitor;\n try {\n const result = await getRedirectUrl({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n });\n\n if (result.success === false) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n\n // OPERATOR NOT KNOWN\n\n // const operator = result?.operator && result?.operator !== 'unknown' ? result?.operator : null;\n\n if (result?.payload?.network_type === 'data') {\n // const flowObj = await determineFlowByOperator({\n // operator,\n // configs\n // });\n // const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName('oneClick');\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping.oneClick,\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null\n }\n };\n }\n if (result?.payload?.network_type === 'wifi') {\n // const flowObj = await determineFlowByOperator({\n // operator,\n // configs\n // });\n // const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName('moRedir');\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null,\n skipRedirectCall: true\n }\n };\n }\n\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null,\n skipRedirectCall: true\n }\n };\n } catch (ex) {\n console.error('error', ex);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n};\n\nexport { callRedirectApi };\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategyNames, ISupportedFlows } from '../../../common-types/Strategy';\n\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp, flowMapping, getTrackerEventName } from '../main';\nimport { askMobileNumber } from './askMobileNumber';\nimport { askOperator } from './askOperator';\n\nconst detectOperatorByIp = async (strategy?: IStrategyNames) => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (\n !flowObj.flow &&\n (strategy === 'all-flows-detect-operator-by-ip-or-ask-mobile-number' ||\n strategy === 'all-flows-ask-mobile-number')\n ) {\n return askMobileNumber();\n }\n\n if (!flowObj.flow && strategy === 'all-flows-detect-operator-by-ip-or-ask-operator') {\n return askOperator();\n }\n\n const flowType = flowObj.flow;\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n strategy\n }\n };\n }\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 strategy,\n defaultConfig,\n defaultFlowType\n }\n };\n } catch (ex) {\n console.error('error', ex);\n }\n};\n\nexport { detectOperatorByIp };\n","import IVisitor from '../../../common-types/IVisitor';\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategy } from '../../../common-types/Strategy';\n\nimport { ISupportedFlows } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { searchToObject } from '../../../utilities/searchToObject';\nimport { tracker } from '../../../utilities/tracker';\nimport {\n determineFlowByMsidn,\n determineFlowByOperator,\n flowMapping,\n getHeaderEnrichmentResult,\n getTrackerEventName\n} from '../main';\n\nconst resolveOperator = async (\n visitor: IVisitor,\n search: any,\n configs: IStrategy,\n msisdn: string\n): Promise<string | null> => {\n const firstSync = search?.operator ?? visitor?.heMsisdnDecryptedByApiResult?.operator;\n if (firstSync) return firstSync;\n\n const flow = await determineFlowByMsidn({\n window,\n configs,\n internationalMSISDN: msisdn\n });\n\n return flow?.operator ?? null;\n};\nconst handleHeaderEnrichment = async () => {\n const configs = getConfig();\n const defaultConfig = configs?.strategyConfigs.default;\n const defaultFlowType = defaultConfig.flow as ISupportedFlows;\n\n try {\n const visitor = (window.pac_analytics?.visitor ?? {}) as any;\n\n const search = searchToObject(window) as { operator: string; msisdn: string };\n\n const candidates: (string | undefined)[] = [\n search?.msisdn,\n visitor.heMsisdnDecryptedByApiResult?.msisdn,\n visitor.heMsisdnResult?.msisdn\n ];\n\n const msisdn = candidates.find((s) => !!s) ?? null;\n const isHeaderEnrichmentSuccess = msisdn !== null;\n\n const operator = msisdn ? await resolveOperator(visitor, search, configs, msisdn) : null;\n\n if (isHeaderEnrichmentSuccess) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn,\n operator\n });\n } else {\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure');\n }\n if (operator === null) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n\n if (configs.strategy === 'pin-header-enrichment' && isHeaderEnrichmentSuccess) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n if (window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.isContentBlocked) {\n window.isContentBlocked = true;\n tracker.customEvent('Flow', 'recede-auto', 'content-blocked', {\n errorType: 'ContentBlocked',\n error: 'ContentBlocked',\n message: 'ContentBlocked',\n ...window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult\n });\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator\n }\n };\n }\n let subscription_url = null;\n let redirect_url = null;\n const flowObj = await determineFlowByOperator({\n operator,\n configs\n });\n const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n if (flowType === 'oneClick') {\n const heResult = await getHeaderEnrichmentResult();\n\n subscription_url = heResult?.subscription_url || null;\n redirect_url = heResult?.redirect_url || null;\n }\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n subscription_url: subscription_url || null,\n redirect_url: redirect_url || null,\n isHeaderEnrichmentSuccess,\n msisdn,\n apn: visitor?.heMsisdnResult?.apn\n }\n };\n } catch (ex) {\n console.error('error', ex);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n};\n\nexport { handleHeaderEnrichment };\n","/* eslint-disable func-names */\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport {\n IConfig,\n IFlow,\n IScriptHeaderEnrichmentFailure,\n IScriptHeaderEnrichmentSuccess,\n ISupportedFlows,\n PossibleTypes\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { formatNumberToE164 } from '../../../utilities/formatNumberToE164';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getTrackerEventName } from '../main';\n\n/**\n * Creates a response object with the given parameters.\n *\n * @param {string} msisdn - The MSISDN (Mobile Station International Subscriber Directory Number).\n * @param {IConfig} config - The configuration object.\n * @param {string | null} operator - The operator (default: null).\n * @return {object} The response that sets the state.\n */\nconst createResponseObject = (config: IConfig, flow?: ISupportedFlows) => ({\n type: flowMapping[flow] || PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config\n }\n});\n\n/**\n * Injects header enrichment script based on the provided window object.\n *\n * @param {Window} window - The window object containing analytics visitor details.\n * @return {Promise} A promise that resolves based on specific events or timeouts.\n */\nconst injectHeaderEnrichmentScript = async ({ window }: { window: Window }) => {\n const configs = getConfig();\n const enableScriptTimer = configs?.enableScriptTimer;\n const { strategyConfigs } = configs;\n const config = strategyConfigs?.default?.flowConfig;\n\n return new Promise((resolve) => {\n try {\n let heMsisdn = window?.pac_analytics?.visitor?.heMsisdn;\n const country = window?.pac_analytics?.visitor?.country;\n\n if (heMsisdn && country) {\n heMsisdn = formatNumberToE164(heMsisdn, country);\n }\n\n let msisdnDetected = false;\n let timerExpired = false;\n let timerId: string | number | NodeJS.Timeout;\n\n if (enableScriptTimer) {\n timerId = setTimeout(() => {\n if (!msisdnDetected) {\n timerExpired = true;\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: '3 second timer expired'\n });\n\n window.isPrelanderClicked = true;\n resolve({\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n });\n }\n }, 3000);\n }\n\n const onSuccess = (event: Event) => {\n const { detail } = event as IScriptHeaderEnrichmentSuccess;\n heMsisdn = detail?.msisdn;\n if (detail?.msisdn && !detail?.encrypted_msisdn) {\n heMsisdn = formatNumberToE164(detail.msisdn, country);\n window.msisdn = heMsisdn;\n } else {\n window.msisdn = detail?.msisdn;\n window.is_encrypted_msisdn = detail?.encrypted_msisdn;\n }\n\n if (enableScriptTimer) {\n if (!timerExpired) {\n msisdnDetected = true;\n clearTimeout(timerId);\n\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: heMsisdn\n });\n const flowObj = determineFlowByOperator({\n configs: getConfig(),\n operator: detail?.operator_code\n });\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(headerEnrichmentScript(flowObj, heMsisdn, detail?.operator_code, true));\n }\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: heMsisdn,\n operator: detail?.operator_code\n });\n const flowObj = determineFlowByOperator({\n configs: getConfig(),\n operator: detail?.operator_code\n });\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(headerEnrichmentScript(flowObj, heMsisdn, detail?.operator_code, true));\n }\n };\n\n const onFail = (event: Event) => {\n const { detail } = event as IScriptHeaderEnrichmentFailure;\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', detail?.error_details);\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(createResponseObject(config, strategyConfigs?.default.flow as ISupportedFlows));\n };\n\n window.addEventListener('he-success', onSuccess);\n window.addEventListener('he-fail', onFail);\n\n if (!window?.heScriptUrl) {\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: 'Error he script url not set'\n });\n window.dispatchEvent(new Event('he-fail'));\n return;\n }\n window.addEventListener('error', (event) => {\n console.error('Global error:', event?.error);\n tracker.customEvent('Flow', 'recede-auto', 'global-error', {\n errorMessage: event?.error?.message,\n errorStack: event?.error?.stack\n });\n });\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.id = 'he-js-link';\n script.src = `${window.heScriptUrl}`; // URL Comes from server\n script.referrerPolicy = 'origin';\n document.head.appendChild(script);\n\n script.onerror = (error: any) => {\n console.error('Error loading Header Enrichment script.');\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: 'Error loading Header Enrichment script',\n errorMessage: error.message\n });\n window.dispatchEvent(new Event('he-fail'));\n };\n } catch (err) {\n console.error('Error in header enrichment:', err);\n resolve(createResponseObject(config, strategyConfigs?.default.flow as ISupportedFlows));\n }\n });\n};\n\nconst headerEnrichmentScript = (\n flowObj: IFlow,\n msisdn: string | null = null,\n operator: string | null = null,\n isHeaderEnrichmentSuccess: boolean\n) => {\n const defaultConfig = getConfig().strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow;\n const flowType = flowObj.flow || flowObj.default?.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n if (!flowObj.flow) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n isHeaderEnrichmentSuccess\n }\n };\n};\n\nexport { injectHeaderEnrichmentScript };\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 ISupportedFlows,\n PossibleTypes,\n RootState,\n StrategyCurrentState,\n StrategyState\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../utilities/getConfig';\nimport { determineFlowByOperator, flowMapping } from './main';\nimport { askMobileNumber, submitMSISDNAction } from './strategies/askMobileNumber';\nimport { askOperator, selectOperatorAction } from './strategies/askOperator';\n\nimport { tracker } from '../../utilities/tracker';\nimport { callRedirectApi } from './strategies/callRedirectApi';\nimport { detectOperatorByIp } from './strategies/detectOperatorByIp';\nimport { handleHeaderEnrichment } from './strategies/headerEnrichment';\nimport { injectHeaderEnrichmentScript } from './strategies/injectHeaderEnrichmentScript';\n\nwindow.tracker = tracker;\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\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 data: {\n subscription_url: search['subscription-url']\n }\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 (search.ui_show_default_flow === '1') {\n const flow = strategyConfigs?.default.flow as ISupportedFlows;\n const config = strategyConfigs?.default?.flowConfig;\n return {\n type: flowMapping[flow],\n result: RDS.NothingYet(),\n data: {\n config\n }\n };\n }\n if (\n (search['show-pin-entry'] && search['show-pin-entry'] === '1') ||\n (search['show-thank-you'] && search['show-thank-you'] === '1') ||\n (search.show_custom_error && search.show_custom_error === '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(strategy);\n }\n if (strategy?.includes('ask-mobile-number')) {\n return askMobileNumber();\n }\n\n if (strategy?.includes('detect-operator-by-redirect-api')) {\n return callRedirectApi();\n }\n\n if (strategy?.includes('header-enrichment') && strategy !== 'header-enrichment-script') {\n const n = await handleHeaderEnrichment();\n // @ts-ignore\n return n;\n }\n\n switch (strategy) {\n // REOVING THIS AS IT INJECTS UNUSED CODE\n case 'header-enrichment-script':\n // eslint-disable-next-line no-return-await\n return injectHeaderEnrichmentScript({\n window\n });\n case 'pin': {\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n }\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\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 strategy\n }\n };\n case 'one-click':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'ussd':\n tracker.sendOptInFlowEvent('USSD');\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'credit-card':\n // @ts-ignore\n tracker.sendOptInFlowEvent('Credit card');\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\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 // @ts-ignore\n builder\n .addCase(identifyStrategy.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Loading()\n };\n })\n // @ts-ignore\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":"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"}