ouisys-engine 5.0.55 → 5.0.57
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/creditCardFlow.js +1 -1
- package/dist/creditCardFlow.js.map +1 -1
- package/dist/pinFlow.js +1 -1
- package/dist/strategy.js +1 -1
- package/dist/strategySlice-RK7roJPB.js +2 -0
- package/dist/strategySlice-RK7roJPB.js.map +1 -0
- package/dist/types/{CreditCardTypes-BLQbvMT_.d.ts → CreditCardTypes-CyluWBTE.d.ts} +1 -0
- package/dist/types/{StrategyTypes-CgSVdJ5I.d.ts → StrategyTypes-CbcYtzvr.d.ts} +1 -1
- package/dist/types/click2smsFlow.d.ts +3 -3
- package/dist/types/creditCardFlow.d.ts +2 -2
- package/dist/types/getConfig.d.ts +1 -1
- package/dist/types/strategy.d.ts +3 -3
- package/package.json +1 -1
- package/dist/strategySlice-DpsjdF6a.js +0 -2
- package/dist/strategySlice-DpsjdF6a.js.map +0 -1
package/dist/creditCardFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as i,L as o,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l}from"./loadScriptInnerHtml-BzQm-AFb.js";import{searchToObject as d}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var v=function(n){var a=n.window,i=n.slug,o=n.country,c=n.msisdn,s=n.device,l=n.offer,d=n.rockmanId,u=n.ip_range_name,v=n.search,m=n.extraParamsQs,f=n.email,y=n.password;return e(void 0,void 0,void 0,(function(){var e,n,p,g,w,_;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:i,country:o,device:s,offerId:l.toString(),rockman_id:d,page:encodeURIComponent(a.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(_=null===(w=null===(g=a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===w?void 0:w.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:d}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),f&&y?{email:f,password:y}:{msisdn:c}),m&&{extraParams:m})).toString(),n=a.DEV_BASE_URL||"",p="".concat(n,"/tallyman/v1/?").concat(e),[2,fetch(p).then((function(e){return e.json()}))]}))}))},m=function(n){var a=n.window,i=n.userDetails,o=n.extraConfig;return e(void 0,void 0,void 0,(function(){var e,n,c,s,l,u,v;return r(this,(function(r){return e="cc_number"in i,n=a.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(n,"/api/v1"),"/frontend/initiate-payment-generic",s=d(a),l=t(t(t({rockman_id:null===(v=a.pac_analytics.visitor)||void 0===v?void 0:v.rockmanId,landing_page_url:a.location.href,service_id:e?null==o?void 0:o.serviceId:"2"},(null==o?void 0:o.slug)?{slug:"".concat(null==o?void 0:o.slug).concat((null==s?void 0:s.d_country)||"")}:{}),e?{}:{user_agent:a.navigator.userAgent,ip:a.pac_analytics.visitor.ip}),i),u={method:"POST",headers:new Headers({"Content-Type":"application/json"}),body:JSON.stringify(l)},[2,fetch("".concat(c).concat("/frontend/initiate-payment-generic"),u).then((function(e){return e.json()}))]}))}))};function f(t,n,a){var i,o,c,s,l;return e(this,void 0,void 0,(function(){var e,d,u,f,y,p,g,w,_,h,S,E;return r(this,(function(r){switch(r.label){case 0:return e=n.slug,d=n.country,u=n.device,f=n.serviceId,y=t.location.search.substr(1)||"",p=t.pac_analytics.visitor,g=p.rockmanId,w={serviceId:f,slug:e},(null===(c=null===(o=null===(i=null==t?void 0:t.pac_analytics)||void 0===i?void 0:i.visitor)||void 0===o?void 0:o.page)||void 0===c?void 0:c.includes("agency"))?[4,v({window:t,slug:e,country:d,device:u,offer:null===(l=null===(s=null==t?void 0:t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===l?void 0:l.offer,rockmanId:g,email:null==a?void 0:a.email,password:null==a?void 0:a.password,search:y})]:[3,2];case 1:return h=r.sent(),[3,4];case 2:return[4,m({window:t,userDetails:a,extraConfig:w})];case 3:h=r.sent(),r.label=4;case 4:if(!1===(_=h).success)throw S="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":_.message,(E=new Error("".concat(S,":\n").concat(_.message))).type=S,console.error(E),E;return[2,{gateway_url:_.gateway_url||_.redirect_url,method:_.redirect_url?"redirection":_.method}]}}))}))}var y={currentState:{type:"USER_DETAILS_ENTRY",result:i({gateway_url:"https://www.google.com",method:"jslink"})}},p={currentState:{type:"USER_DETAILS_ENTRY",result:c({errorType:"AlreadySubscribed",error:"Already Subscribed"})}},g={currentState:{type:"USER_DETAILS_ENTRY",result:s()}},w=function(e){var r=d(e);if(!r["mock-flow"])return g;switch(r["current-state"]){case"user-details-entry-failure-state":return p;case"user-details-entry-success-state":return y;default:return console.error("Mock Flow not supported"),g}}(window),_=n("creditCardFlow/submitUserDetailsAction",(function(t,n){var a=t.window,o=t.userDetails,c=n.getState,s=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,n,d,v,m,y,p,g,w,_;return r(this,(function(r){switch(r.label){case 0:if(e=c(),!(null===(_=null===(w=null===(g=null==e?void 0:e.strategy)||void 0===g?void 0:g.currentState)||void 0===w?void 0:w.data)||void 0===_?void 0:_.config))return[2,s({errorType:"UnexpectedState"})];t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,3,,4]),u.advancedInFlow("tallyman.v1-credit-card","cc-form-submitted",{email:null==o?void 0:o.email}),[4,f(a,t,o)];case 2:return n=r.sent(),d=n.gateway_url,v=n.method,m=n.html,u.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==o?void 0:o.email,gateway_url:d}),"jslink"===v&&d&&(u.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:d}),function(e){var r=e.url,t=e.key,n=e.isRecaptcha,a=void 0!==n&&n,i=e.callBack,o=e.id,c=void 0===o?"":o,s=document.createElement("script");s.type="text/javascript",s.src=r,s.id="injected_script_".concat(c);var d=document.getElementsByTagName("head")[0];d.insertBefore(s,d.firstChild),a&&(s.onload=function(){var e='\n grecaptcha.ready(function() {\n grecaptcha.execute("'.concat(t,'", {action: \'submit\'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log("-------" + token);\n });\n });\n ');l(e,!0)}),s.onerror=function(){console.error("Error loading script",r),i&&i()}}({id:"ecardon-credit-card",url:d,callBack:function(){u.advancedInFlow("tallyman.v1-credit-card","load-script-success",{gateway_url:d})}})),"redirection"===v&&d&&(u.customEvent("Flow","advance-auto","redirect-success",{redirect_url:d}),a.location.href=d),"html"===v&&m&&u.advancedInFlow("tallyman.v1-credit-card","get-html-success"),[2,{type:"USER_DETAILS_ENTRY",result:i({gateway_url:d,method:v,html:m})}];case 3:switch(y=r.sent(),console.warn(y),p=void 0,y.type){case"AlreadySubscribed":p="AlreadySubscribed";break;case"InvalidUserDetails":p="InvalidUserDetails";break;default:p="UnknownError"}return u.recedeInFlow("tallyman.v1-credit-card","cc-form-submission-failure",{email:null==o?void 0:o.email,errorType:p||y.type}),[2,s({errorType:p,error:y.toString()})];case 4:return[2]}}))}))})),h=a({name:"creditCardFlow",initialState:w,reducers:{},extraReducers:function(e){e.addCase(_.pending,(function(e){e.currentState={type:"USER_DETAILS_ENTRY",result:o()}})).addCase(_.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(_.rejected,(function(e,r){e.currentState={type:"USER_DETAILS_ENTRY",result:c(r.payload)}}))}}),S=h.reducer;h.actions;var E=function(e){return e((function(e){return e.creditCardFlow.currentState}))};function I(e){var r=e.userDetailsEntry;return function(e){return e.type,r(e.result)}}export{I as creditCardFlowMatch,S as creditCardFlowReducer,_ as submitUserDetailsAction,E as useCreditCardFlowState};
|
|
1
|
+
import{__awaiter as e,__generator as r,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as i,L as o,F as c,N as s}from"./RemoteDataState-lcf8PfJd.js";import{l}from"./loadScriptInnerHtml-BzQm-AFb.js";import{searchToObject as d}from"./searchToObject.js";import{t as u}from"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var v=function(n){var a=n.window,i=n.slug,o=n.country,c=n.msisdn,s=n.device,l=n.offer,d=n.rockmanId,u=n.ip_range_name,v=n.search,m=n.extraParamsQs,f=n.email,y=n.password;return e(void 0,void 0,void 0,(function(){var e,n,p,g,w,_;return r(this,(function(r){return e=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:i,country:o,device:s,offerId:l.toString(),rockman_id:d,page:encodeURIComponent(a.location.href),network_type:u?"":"wifi"},v&&{search:v}),(null===(_=null===(w=null===(g=a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===w?void 0:w.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:d}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),f&&y?{email:f,password:y}:{msisdn:c}),m&&{extraParams:m})).toString(),n=a.DEV_BASE_URL||"",p="".concat(n,"/tallyman/v1/?").concat(e),[2,fetch(p).then((function(e){return e.json()}))]}))}))},m=function(n){var a=n.window,i=n.userDetails,o=n.extraConfig;return e(void 0,void 0,void 0,(function(){var e,n,c,s,l,u,v;return r(this,(function(r){return e="cc_number"in i,n=a.DEV_BASE_URL_CREDIT_CARD||"",c="".concat(n,"/api/v1"),"/frontend/initiate-payment-generic",s=d(a),l=t(t(t({rockman_id:null===(v=a.pac_analytics.visitor)||void 0===v?void 0:v.rockmanId,landing_page_url:a.location.href,service_id:e?null==o?void 0:o.serviceId:"2"},(null==o?void 0:o.slug)?{slug:"".concat(null==o?void 0:o.slug).concat((null==s?void 0:s.d_country)||"")}:{}),e?{}:{user_agent:a.navigator.userAgent,ip:a.pac_analytics.visitor.ip}),i),u={method:"POST",headers:new Headers({"Content-Type":"application/json"}),body:JSON.stringify(l)},[2,fetch("".concat(c).concat("/frontend/initiate-payment-generic"),u).then((function(e){return e.json()}))]}))}))};function f(t,n,a){var i,o,c,s,l;return e(this,void 0,void 0,(function(){var e,d,u,f,y,p,g,w,_,h,S,E;return r(this,(function(r){switch(r.label){case 0:return e=n.slug,d=n.country,u=n.device,f=n.serviceId,y=t.location.search.substr(1)||"",p=t.pac_analytics.visitor,g=p.rockmanId,w={serviceId:f,slug:e},(null===(c=null===(o=null===(i=null==t?void 0:t.pac_analytics)||void 0===i?void 0:i.visitor)||void 0===o?void 0:o.page)||void 0===c?void 0:c.includes("agency"))?[4,v({window:t,slug:e,country:d,device:u,offer:null===(l=null===(s=null==t?void 0:t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===l?void 0:l.offer,rockmanId:g,email:null==a?void 0:a.email,password:null==a?void 0:a.password,search:y})]:[3,2];case 1:return h=r.sent(),[3,4];case 2:return[4,m({window:t,userDetails:a,extraConfig:w})];case 3:h=r.sent(),r.label=4;case 4:if(!1===(_=h).success)throw S="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":_.message,(E=new Error("".concat(S,":\n").concat(_.message))).type=S,console.error(E),E;return[2,{gateway_url:_.gateway_url||_.redirect_url,method:_.redirect_url?"redirection":_.method,html:_.html}]}}))}))}var y={currentState:{type:"USER_DETAILS_ENTRY",result:i({gateway_url:"https://www.google.com",method:"jslink"})}},p={currentState:{type:"USER_DETAILS_ENTRY",result:c({errorType:"AlreadySubscribed",error:"Already Subscribed"})}},g={currentState:{type:"USER_DETAILS_ENTRY",result:s()}},w=function(e){var r=d(e);if(!r["mock-flow"])return g;switch(r["current-state"]){case"user-details-entry-failure-state":return p;case"user-details-entry-success-state":return y;default:return console.error("Mock Flow not supported"),g}}(window),_=n("creditCardFlow/submitUserDetailsAction",(function(t,n){var a=t.window,o=t.userDetails,c=n.getState,s=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,n,d,v,m,y,p,g,w,_;return r(this,(function(r){switch(r.label){case 0:if(e=c(),!(null===(_=null===(w=null===(g=null==e?void 0:e.strategy)||void 0===g?void 0:g.currentState)||void 0===w?void 0:w.data)||void 0===_?void 0:_.config))return[2,s({errorType:"UnexpectedState"})];t=e.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,3,,4]),u.advancedInFlow("tallyman.v1-credit-card","cc-form-submitted",{email:null==o?void 0:o.email}),[4,f(a,t,o)];case 2:return n=r.sent(),d=n.gateway_url,v=n.method,m=n.html,u.advancedInFlow("tallyman.v1-credit-card","cc-form-submission-success",{email:null==o?void 0:o.email,gateway_url:d}),"jslink"===v&&d&&(u.advancedInFlow("tallyman.v1-credit-card","load-script-start",{gateway_url:d}),function(e){var r=e.url,t=e.key,n=e.isRecaptcha,a=void 0!==n&&n,i=e.callBack,o=e.id,c=void 0===o?"":o,s=document.createElement("script");s.type="text/javascript",s.src=r,s.id="injected_script_".concat(c);var d=document.getElementsByTagName("head")[0];d.insertBefore(s,d.firstChild),a&&(s.onload=function(){var e='\n grecaptcha.ready(function() {\n grecaptcha.execute("'.concat(t,'", {action: \'submit\'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log("-------" + token);\n });\n });\n ');l(e,!0)}),s.onerror=function(){console.error("Error loading script",r),i&&i()}}({id:"ecardon-credit-card",url:d,callBack:function(){u.advancedInFlow("tallyman.v1-credit-card","load-script-success",{gateway_url:d})}})),"redirection"===v&&d&&(u.customEvent("Flow","advance-auto","redirect-success",{redirect_url:d}),a.location.href=d),"html"===v&&m&&u.advancedInFlow("tallyman.v1-credit-card","get-html-success"),[2,{type:"USER_DETAILS_ENTRY",result:i({gateway_url:d,method:v,html:m})}];case 3:switch(y=r.sent(),console.warn(y),p=void 0,y.type){case"AlreadySubscribed":p="AlreadySubscribed";break;case"InvalidUserDetails":p="InvalidUserDetails";break;default:p="UnknownError"}return u.recedeInFlow("tallyman.v1-credit-card","cc-form-submission-failure",{email:null==o?void 0:o.email,errorType:p||y.type}),[2,s({errorType:p,error:y.toString()})];case 4:return[2]}}))}))})),h=a({name:"creditCardFlow",initialState:w,reducers:{},extraReducers:function(e){e.addCase(_.pending,(function(e){e.currentState={type:"USER_DETAILS_ENTRY",result:o()}})).addCase(_.fulfilled,(function(e,r){e.currentState=r.payload})).addCase(_.rejected,(function(e,r){e.currentState={type:"USER_DETAILS_ENTRY",result:c(r.payload)}}))}}),S=h.reducer;h.actions;var E=function(e){return e((function(e){return e.creditCardFlow.currentState}))};function I(e){var r=e.userDetailsEntry;return function(e){return e.type,r(e.result)}}export{I as creditCardFlowMatch,S as creditCardFlowReducer,_ as submitUserDetailsAction,E as useCreditCardFlowState};
|
|
2
2
|
//# sourceMappingURL=creditCardFlow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditCardFlow.js","sources":["../src/utilities/loadScriptSrc.ts","../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { loadScriptInnerHtml } from './loadScriptInnerHtml';\n\n/**\n * Loads a script from the specified URL and optionally executes a reCAPTCHA if the `isRecaptcha` flag is set.\n *\n * @param {Object} options - An object containing the following properties:\n * - {string} url: The URL of the script to load.\n * - {string} [key]: The reCAPTCHA key to use for execution. (Optional)\n * - {boolean} [isRecaptcha]: Flag indicating whether to execute a reCAPTCHA. Defaults to false.\n * - {function} [callBack]: A callback function to be called if there is an error loading the script. (Optional)\n * - {string} [id]: The ID to assign to the injected script. Defaults to an empty string.\n * @return {void}\n */\nconst loadScriptSrc = ({\n url,\n key,\n isRecaptcha = false,\n callBack,\n id = ''\n}: {\n url: string;\n key?: string;\n isRecaptcha?: boolean;\n callBack?: () => void;\n id?: string;\n}) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n script.id = `injected_script_${id}`;\n const headElem = document.getElementsByTagName('head')[0];\n headElem.insertBefore(script, headElem.firstChild);\n\n if (isRecaptcha) {\n script.onload = () => {\n const scriptInner = `\n grecaptcha.ready(function() {\n grecaptcha.execute(\"${key}\", {action: 'submit'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log(\"-------\" + token);\n });\n });\n `;\n loadScriptInnerHtml(scriptInner, true);\n };\n }\n\n script.onerror = () => {\n console.error('Error loading script', url);\n if (callBack) {\n callBack();\n }\n };\n};\n\nexport default loadScriptSrc;\n","import { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: string; slug: string };\n}): Promise<IUserDetailsSubmissionResult> => {\n const isMaxPay = 'cc_number' in userDetails;\n const host = window.DEV_BASE_URL_CREDIT_CARD || '';\n const apiBaseURL = `${host}/api/v1`;\n const apiPath = '/frontend/initiate-payment-generic';\n const search = searchToObject(window) as any;\n // Common userDetails properties\n const commonDetails = {\n rockman_id: window.pac_analytics.visitor?.rockmanId,\n landing_page_url: window.location.href,\n // Use conditional operation for service_id as it varies\n service_id: isMaxPay ? extraConfig?.serviceId : '2',\n ...(extraConfig?.slug ? { slug: `${extraConfig?.slug}${search?.d_country || ''}` } : {}),\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n ...userDetails\n };\n\n const requestOptions = {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(commonDetails)\n };\n\n return fetch(`${apiBaseURL}${apiPath}`, requestOptions).then((response) => response.json());\n};\n\nexport { redirect, creditCardPayment };\n","import { IError } from '../../common-types/IError';\nimport { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { creditCardPayment, redirect } from './api';\n\nexport async function submitUserDetails(\n window: Window,\n config: IConfig,\n userDetails: IUserDetails | IUserDetailsEcardon\n): Promise<{\n method: string;\n gateway_url?: string;\n html?: string;\n}> {\n const { slug, country, device, serviceId } = config;\n const search = window.location.search.substr(1) || '';\n const { visitor } = window.pac_analytics;\n\n const { rockmanId } = visitor;\n const extraConfig = { serviceId, slug };\n const result: IUserDetailsSubmissionResult = window?.pac_analytics?.visitor?.page?.includes('agency')\n ? await redirect({\n window,\n slug,\n country,\n device,\n offer: window?.pac_analytics?.visitor?.offer,\n rockmanId,\n email: userDetails?.email,\n password: userDetails?.password,\n search\n })\n : await creditCardPayment({ window, userDetails, extraConfig });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return {\n gateway_url: result.gateway_url || result.redirect_url,\n method: result.redirect_url ? 'redirection' : result.method\n };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowState,\n IUserDetails,\n IUserDetailsEcardon,\n SubmitUserDetailsErrorTypes,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess,\n USERDETAILSEntryState\n} from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { submitUserDetails } from './main';\n\nconst mockedUserDetailsEntrySuccess: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n gateway_url: 'https://www.google.com',\n method: 'jslink'\n })\n }\n};\n\nconst mockedUserDetailsEntryFailure: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n errorType: 'AlreadySubscribed',\n error: 'Already Subscribed'\n })\n }\n};\n\nconst defaultInitialState: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'user-details-entry-failure-state':\n return mockedUserDetailsEntryFailure;\n case 'user-details-entry-success-state':\n return mockedUserDetailsEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitUserDetailsArgs {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n}\n/**\n * submitUserDetailsAction\n * @returns {type: ' 'pinFlow/submitUserDetailsAction', payload: {type: PossibleTypes, result: USERDETAILSEntryState}}\n \n * Calls redirect or max api and returns a url\n * \n */\nexport const submitUserDetailsAction = createAsyncThunk<\n USERDETAILSEntryState,\n SubmitUserDetailsArgs,\n {\n rejectValue: SubmitUserDetailsFailure;\n }\n>('creditCardFlow/submitUserDetailsAction', async ({ window, userDetails }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Credit Card API\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails?.email });\n const { gateway_url, method, html } = await submitUserDetails(window, config, userDetails);\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {\n email: userDetails?.email,\n gateway_url\n });\n // Start Credit Card API\n\n if (method === 'jslink' && gateway_url) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url });\n loadScriptSrc({\n id: 'ecardon-credit-card',\n url: gateway_url,\n callBack: () => {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url });\n }\n });\n }\n\n if (method === 'redirection' && gateway_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url });\n window.location.href = gateway_url;\n }\n\n if (method === 'html' && html) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'get-html-success');\n }\n return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method, html })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: SubmitUserDetailsErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidUserDetails':\n errorType = 'InvalidUserDetails';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {\n email: userDetails?.email,\n errorType: errorType || ex.type\n });\n\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n});\n\nconst creditCardFlowSlice = createSlice({\n name: 'creditCardFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitUserDetailsAction.pending, (state) => {\n state.currentState = { type: 'USER_DETAILS_ENTRY', result: RDS.Loading() };\n })\n .addCase(submitUserDetailsAction.fulfilled, (state, action: PayloadAction<USERDETAILSEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitUserDetailsAction.rejected, (state, action: PayloadAction<SubmitUserDetailsFailure>) => {\n state.currentState = {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: creditCardFlowReducer, actions: creditCardFlowActions } = creditCardFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectCreditCardFlowState = (state: any) => state.creditCardFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useCreditCardFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.creditCardFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowCurrentState,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\n\nfunction creditCardFlowMatch<R>({\n userDetailsEntry\n}: {\n userDetailsEntry: (rds: RDS.RemoteDataState<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>) => R;\n}): (state: CreditCardFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'USER_DETAILS_ENTRY':\n return userDetailsEntry(state.result);\n default:\n // TODO - this should be an error or something\n return userDetailsEntry(state.result);\n }\n };\n}\n\nexport { creditCardFlowMatch };\n"],"names":["redirect","_a","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","searchToObject","commonDetails","landing_page_url","service_id","serviceId","d_country","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","success","type","message","error","Error","console","gateway_url","redirect_url","mockedUserDetailsEntrySuccess","currentState","RDS.Success","mockedUserDetailsEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","setInitialState","submitUserDetailsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","data","tracker","advancedInFlow","sent","gateway_url_1","html","key","isRecaptcha","callBack","id","script","document","createElement","src","headElem","getElementsByTagName","insertBefore","firstChild","onload","scriptInner","loadScriptInnerHtml","onerror","loadScriptSrc","customEvent","warn","ex_1","recedeInFlow","creditCardFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","creditCardFlowReducer","reducer","actions","useCreditCardFlowState","useSelector","creditCardFlow","creditCardFlowMatch","userDetailsEntry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"creditCardFlow.js","sources":["../src/utilities/loadScriptSrc.ts","../src/flows/creditCardFlow/api.ts","../src/flows/creditCardFlow/main.ts","../src/flows/creditCardFlow/creditCardFlowSlice.ts","../src/flows/creditCardFlow/hooks/useCreditCardFlowState.ts","../src/flows/creditCardFlow/match.ts"],"sourcesContent":["import { loadScriptInnerHtml } from './loadScriptInnerHtml';\n\n/**\n * Loads a script from the specified URL and optionally executes a reCAPTCHA if the `isRecaptcha` flag is set.\n *\n * @param {Object} options - An object containing the following properties:\n * - {string} url: The URL of the script to load.\n * - {string} [key]: The reCAPTCHA key to use for execution. (Optional)\n * - {boolean} [isRecaptcha]: Flag indicating whether to execute a reCAPTCHA. Defaults to false.\n * - {function} [callBack]: A callback function to be called if there is an error loading the script. (Optional)\n * - {string} [id]: The ID to assign to the injected script. Defaults to an empty string.\n * @return {void}\n */\nconst loadScriptSrc = ({\n url,\n key,\n isRecaptcha = false,\n callBack,\n id = ''\n}: {\n url: string;\n key?: string;\n isRecaptcha?: boolean;\n callBack?: () => void;\n id?: string;\n}) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url;\n script.id = `injected_script_${id}`;\n const headElem = document.getElementsByTagName('head')[0];\n headElem.insertBefore(script, headElem.firstChild);\n\n if (isRecaptcha) {\n script.onload = () => {\n const scriptInner = `\n grecaptcha.ready(function() {\n grecaptcha.execute(\"${key}\", {action: 'submit'}).then(function(token) {\n // To be used by tallyman\n window.reCaptchaToken = token;\n console.log(\"-------\" + token);\n });\n });\n `;\n loadScriptInnerHtml(scriptInner, true);\n };\n }\n\n script.onerror = () => {\n console.error('Error loading script', url);\n if (callBack) {\n callBack();\n }\n };\n};\n\nexport default loadScriptSrc;\n","import { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParamsQs,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParamsQs?: string;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n network_type: ip_range_name ? '' : 'wifi',\n ...(search && { search }),\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn }),\n ...(extraParamsQs && { extraParams: extraParamsQs })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst creditCardPayment = async ({\n window,\n userDetails,\n extraConfig\n}: {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n extraConfig?: { serviceId: string; slug: string };\n}): Promise<IUserDetailsSubmissionResult> => {\n const isMaxPay = 'cc_number' in userDetails;\n const host = window.DEV_BASE_URL_CREDIT_CARD || '';\n const apiBaseURL = `${host}/api/v1`;\n const apiPath = '/frontend/initiate-payment-generic';\n const search = searchToObject(window) as any;\n // Common userDetails properties\n const commonDetails = {\n rockman_id: window.pac_analytics.visitor?.rockmanId,\n landing_page_url: window.location.href,\n // Use conditional operation for service_id as it varies\n service_id: isMaxPay ? extraConfig?.serviceId : '2',\n ...(extraConfig?.slug ? { slug: `${extraConfig?.slug}${search?.d_country || ''}` } : {}),\n ...(isMaxPay ? {} : { user_agent: window.navigator.userAgent, ip: window.pac_analytics.visitor.ip }),\n ...userDetails\n };\n\n const requestOptions = {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/json' }),\n body: JSON.stringify(commonDetails)\n };\n\n return fetch(`${apiBaseURL}${apiPath}`, requestOptions).then((response) => response.json());\n};\n\nexport { redirect, creditCardPayment };\n","import { IError } from '../../common-types/IError';\nimport { IUserDetails, IUserDetailsEcardon, IUserDetailsSubmissionResult } from '../../sharedFlowTypes/CreditCardTypes';\nimport { IConfig } from '../../sharedFlowTypes/StrategyTypes';\nimport { creditCardPayment, redirect } from './api';\n\nexport async function submitUserDetails(\n window: Window,\n config: IConfig,\n userDetails: IUserDetails | IUserDetailsEcardon\n): Promise<{\n method: string;\n gateway_url?: string;\n html?: string;\n}> {\n const { slug, country, device, serviceId } = config;\n const search = window.location.search.substr(1) || '';\n const { visitor } = window.pac_analytics;\n\n const { rockmanId } = visitor;\n const extraConfig = { serviceId, slug };\n const result: IUserDetailsSubmissionResult = window?.pac_analytics?.visitor?.page?.includes('agency')\n ? await redirect({\n window,\n slug,\n country,\n device,\n offer: window?.pac_analytics?.visitor?.offer,\n rockmanId,\n email: userDetails?.email,\n password: userDetails?.password,\n search\n })\n : await creditCardPayment({ window, userDetails, extraConfig });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : result.message;\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return {\n gateway_url: result.gateway_url || result.redirect_url,\n method: result.redirect_url ? 'redirection' : result.method,\n html: result.html\n };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowState,\n IUserDetails,\n IUserDetailsEcardon,\n SubmitUserDetailsErrorTypes,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess,\n USERDETAILSEntryState\n} from '../../sharedFlowTypes/CreditCardTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport loadScriptSrc from '../../utilities/loadScriptSrc';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { tracker } from '../../utilities/tracker';\nimport { submitUserDetails } from './main';\n\nconst mockedUserDetailsEntrySuccess: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n gateway_url: 'https://www.google.com',\n method: 'jslink'\n })\n }\n};\n\nconst mockedUserDetailsEntryFailure: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({\n errorType: 'AlreadySubscribed',\n error: 'Already Subscribed'\n })\n }\n};\n\nconst defaultInitialState: CreditCardFlowState = {\n currentState: {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'user-details-entry-failure-state':\n return mockedUserDetailsEntryFailure;\n case 'user-details-entry-success-state':\n return mockedUserDetailsEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitUserDetailsArgs {\n window: Window;\n userDetails: IUserDetails | IUserDetailsEcardon;\n}\n/**\n * submitUserDetailsAction\n * @returns {type: ' 'pinFlow/submitUserDetailsAction', payload: {type: PossibleTypes, result: USERDETAILSEntryState}}\n \n * Calls redirect or max api and returns a url\n * \n */\nexport const submitUserDetailsAction = createAsyncThunk<\n USERDETAILSEntryState,\n SubmitUserDetailsArgs,\n {\n rejectValue: SubmitUserDetailsFailure;\n }\n>('creditCardFlow/submitUserDetailsAction', async ({ window, userDetails }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n\n try {\n // Start Credit Card API\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submitted', { email: userDetails?.email });\n const { gateway_url, method, html } = await submitUserDetails(window, config, userDetails);\n tracker.advancedInFlow('tallyman.v1-credit-card', 'cc-form-submission-success', {\n email: userDetails?.email,\n gateway_url\n });\n // Start Credit Card API\n\n if (method === 'jslink' && gateway_url) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-start', { gateway_url });\n loadScriptSrc({\n id: 'ecardon-credit-card',\n url: gateway_url,\n callBack: () => {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'load-script-success', { gateway_url });\n }\n });\n }\n\n if (method === 'redirection' && gateway_url) {\n tracker.customEvent('Flow', 'advance-auto', 'redirect-success', { redirect_url: gateway_url });\n window.location.href = gateway_url;\n }\n\n if (method === 'html' && html) {\n tracker.advancedInFlow('tallyman.v1-credit-card', 'get-html-success');\n }\n return {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Success<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>({ gateway_url, method, html })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: SubmitUserDetailsErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidUserDetails':\n errorType = 'InvalidUserDetails';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-credit-card', 'cc-form-submission-failure', {\n email: userDetails?.email,\n errorType: errorType || ex.type\n });\n\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n});\n\nconst creditCardFlowSlice = createSlice({\n name: 'creditCardFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitUserDetailsAction.pending, (state) => {\n state.currentState = { type: 'USER_DETAILS_ENTRY', result: RDS.Loading() };\n })\n .addCase(submitUserDetailsAction.fulfilled, (state, action: PayloadAction<USERDETAILSEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitUserDetailsAction.rejected, (state, action: PayloadAction<SubmitUserDetailsFailure>) => {\n state.currentState = {\n type: 'USER_DETAILS_ENTRY',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: creditCardFlowReducer, actions: creditCardFlowActions } = creditCardFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectCreditCardFlowState = (state: any) => state.creditCardFlow;\n","import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useCreditCardFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.creditCardFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n CreditCardFlowCurrentState,\n SubmitUserDetailsFailure,\n SubmitUserDetailsSuccess\n} from '../../sharedFlowTypes/CreditCardTypes';\n\nfunction creditCardFlowMatch<R>({\n userDetailsEntry\n}: {\n userDetailsEntry: (rds: RDS.RemoteDataState<SubmitUserDetailsFailure, SubmitUserDetailsSuccess>) => R;\n}): (state: CreditCardFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'USER_DETAILS_ENTRY':\n return userDetailsEntry(state.result);\n default:\n // TODO - this should be an error or something\n return userDetailsEntry(state.result);\n }\n };\n}\n\nexport { creditCardFlowMatch };\n"],"names":["redirect","_a","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParamsQs","email","password","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","network_type","_d","_c","_b","pac_analytics","visitor","includes","evinaTi","securityProcessId","languageCode","language_code","extraParams","host","DEV_BASE_URL","url","concat","fetch","then","x","json","creditCardPayment","userDetails","extraConfig","isMaxPay","DEV_BASE_URL_CREDIT_CARD","apiBaseURL","searchToObject","commonDetails","landing_page_url","service_id","serviceId","d_country","user_agent","navigator","userAgent","ip","requestOptions","method","headers","Headers","body","JSON","stringify","response","submitUserDetails","config","substr","_e","_f","_g","result","success","type","message","error","Error","console","gateway_url","redirect_url","html","mockedUserDetailsEntrySuccess","currentState","RDS.Success","mockedUserDetailsEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","setInitialState","submitUserDetailsAction","createAsyncThunk","getState","rejectWithValue","state","strategy","data","tracker","advancedInFlow","sent","gateway_url_1","key","isRecaptcha","callBack","id","script","document","createElement","src","headElem","getElementsByTagName","insertBefore","firstChild","onload","scriptInner","loadScriptInnerHtml","onerror","loadScriptSrc","customEvent","warn","ex_1","recedeInFlow","creditCardFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","creditCardFlowReducer","reducer","actions","useCreditCardFlowState","useSelector","creditCardFlow","creditCardFlowMatch","userDetailsEntry"],"mappings":"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"}
|
package/dist/pinFlow.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__awaiter as e,__generator as t,__read as r,__assign as n}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,S as s,L as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{c as d,P as l}from"./strategySlice-DpsjdF6a.js";import{searchToObject as p}from"./searchToObject.js";import{s as v}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{b as m}from"./bupperizeCountry-CEtt0MKz.js";import{l as y,r as S,a as w}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-BzQm-AFb.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"pacman-client";import"uuid";var h=function(e){return e((function(e){return e.pinFlow.currentState}))};function I(e){var t=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return t(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var b=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},E=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.msisdn,d=n.rockmanId,l=n.extraParams,p=n.search,v=n.uniqid,f=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,m,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",antifraud_id:i.antifraud_id||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:v||""},y=Object.entries(m).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n).concat(p?"&".concat(p):""),[2,fetch(w).then((function(e){return e.json()}))]}))}))},_=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId,d=n.pin,l=n.extraParams,p=n.uniqid,v=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,f,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:m(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",antifraud_id:i.antifraud_id||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:v,uniqid:p},y=Object.entries(f).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n),[2,fetch(w).then((function(e){return e.json()}))]}))}))},k=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,u=r.rockmanId,d=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,p,v,f;return t(this,(function(t){return e=i.location.href,r=i.pac_analytics.visitor.ip,p=new URLSearchParams(n(n({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:u,client_lpu:e},d&&{operator:d}),l&&{uniqid:l})),r&&p.append("client_ip",r),v=i.DEV_BASE_URL||"",f="".concat(v,"/tallyman/v1/?").concat(p.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function N(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){return!0===(e=n({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,D(r,e,a,e.operators,o)]:[2,P(r,e,a,o)]}))}))}var U="";function P(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,v,f,m,y,S,w,h,I,b,_,N,P;return t(this,(function(t){switch(t.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,"true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,S=-1===r.location.search.indexOf("redirect-back=1")&&r.location.search.substr(1)||"",w=U&&""!==U?"&mcpUniqid=".concat(U):"",h=void 0!==r&&r.tid?r.tid:"",[4,E({window:r,country:f,slug:v,device:m,offer:y,msisdn:d,rockmanId:l,extraParams:s,search:S,uniqid:w,evinaTid:h})];case 1:if(!1!==(I=t.sent()).success)return[3,2];switch((b=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(I.message))).message=I.message,!0){case I.message.includes("ALREADY SUBSCRIBED"):b.type="AlreadySubscribed";break;case I.message.includes("invalid"):b.type="InvalidMSISDN";break;default:b.type=null}throw b.productUrl=I.product_url?I.product_url:"",console.error(b),b;case 2:if(r.operator=I.operator,_={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&I.operator&&(_[f.toLowerCase()]&&_[f.toLowerCase()][I.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];t.label=3;case 3:return t.trys.push([3,5,,6]),[4,k({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:I.operator,uniqid:w})];case 4:return!1===(N=t.sent()).success?console.warn(N.message):(g(N.source),U=N.uniqid),[3,6];case 5:return P=t.sent(),console.warn(P),[3,6];case 6:return I.javascript&&g(I.javascript),[2,n({type:"SingleMSISDNSubmissionResult",pin:I.pin,uniqidResult:U,operator:I.operator,redirectUrl:null==I?void 0:I.redirect_to_url},(null==I?void 0:I.userType)?{userType:null==I?void 0:I.userType}:{})]}}))}))}function D(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return t(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(d,void 0,void 0,(function(){var e,c;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,P(r,i,a,n(n({},s),{operator:o}))];case 1:return e=t.sent(),[2,S(n(n({},e),{operator:o}))];case 2:return c=t.sent(),[2,y(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var t;return"left"===e.type&&"AlreadySubscribed"===(null===(t=e.value)||void 0===t?void 0:t.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function M(n,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,y,S,g,h,I,b,E,k,N;return t(this,(function(P){switch(P.label){case 0:if(n.hostCountry&&n.hostSlug&&(a.country=n.hostCountry,a.slug=n.hostSlug),s=a.slug,c=a.country,u=a.device,d=n.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(n))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=n.pac_analytics.visitor.rockmanId,!i)throw(y=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",y;return S=""!==U?"&mcpUniqid=".concat(U):"",g=void 0!==n&&n.tid?n.tid:"",[4,_({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:S,evinaTid:g})];case 1:if(!1!==(h=P.sent()).success)return[3,2];throw I={"pin does not match":"InvalidPIN","mcp blocked":"SessionBlocked",expired_pin:"ExpiredPIN",insufficient_balance:"InsufficientBalance"}[h.message],(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",k.message=h.message,console.error(k),k;case 2:return!0!==h.async?[3,4]:h.product_url&&""!==h.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:h.product_url}]:(b=function(){return function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,d,l;return t(this,(function(t){return e={action:"check-subscription",country:m(a),slug:o,device:s,offerId:c,rockman_id:u},n=Object.entries(e).filter((function(e){var t=r(e,2);return t[0],null!=t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(n),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,w(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(E=P.sent()).success)return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:E.product_url||null,isAlreadySubscribed:N}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(E.message))).type="InvalidPIN",k.message=E.message,k;case 4:return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:N}]}}))}))}var j={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"PINEntry",result:s({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},C={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},R={currentState:{type:"MSISDNEntry",result:o()}},F=function(e){var t=p(e),r=new Event("onPinPage"),n=t["show-pin-entry"]&&"1"===t["show-pin-entry"],i=t["show-thank-you"]&&"1"===t["show-thank-you"],a="1"===(null==t?void 0:t.show_custom_error),c={currentState:{type:"MSISDNEntry",result:u({errorType:"SomethingWentWrong",error:null})}},d={currentState:{type:"PINEntry",result:s({finalUrl:(null==t?void 0:t.product_url)||""}),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}},l={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}};if(n)return null==e||e.dispatchEvent(r),l;if(i)return d;if(a)return c;if(!t["mock-flow"])return R;switch(t["current-state"]){case"msisdn-failure-state":return C;case"pin-state":return null==e||e.dispatchEvent(r),j;case"completed-state":return A;default:return console.error("Mock Flow not supported"),R}}(window),T=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,s=r.msisdn,c=r.extraParams,u=i.getState,p=i.dispatch,m=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,y,S,w,g,h,I,b,E,_,k,U,P;return t(this,(function(t){switch(t.label){case 0:if(e=u(),!(null===(U=null===(k=null===(_=null==e?void 0:e.strategy)||void 0===_?void 0:_.currentState)||void 0===k?void 0:k.data)||void 0===U?void 0:U.config))return[2,m({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(P=e.pinFlow)||void 0===P?void 0:P.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===L(null==i?void 0:i.country,s)&&(s=s.replace("970","972")),f.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,N(a,i,s)];case 2:return w=t.sent(),f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),"SingleMSISDNSubmissionResult"===w.type&&w.redirectUrl&&(f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),f.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:w.redirectUrl}),a.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,v(s).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return g="SingleMSISDNSubmissionResult"===w.type?w.operator:"",h={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},I=new Event("onPinPage"),null==a||a.dispatchEvent(I),[2,n(n({},S),{type:"PINEntry",result:o(),data:n({actualPIN:"SingleMSISDNSubmissionResult"===w.type?w.pin:null,msisdn:s,operator:g,pinMaxLength:""!==g&&h[g]?h[g]:null,isHeaderEnrichmentSuccess:y},"SingleMSISDNSubmissionResult"===w.type&&(null==w?void 0:w.userType)?{userType:w.userType}:{})})];case 5:switch(b=t.sent(),console.warn(b),E=void 0,b.type){case"AlreadySubscribed":E="AlreadySubscribed";break;case"InvalidMSISDN":E="InvalidMSISDN";break;default:E="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:E,error:b.toString(),message:b.message,productUrl:b.productUrl}),y&&p(d({type:l.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,m({errorType:E,error:b.toString(),message:b.message,productUrl:b.productUrl})];case 6:return[2]}}))}))})),B=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,c=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,p,m,y,S,w,g,h;return t(this,(function(t){switch(t.label){case 0:if(e=d(),!(null===(g=null===(w=null===(S=null==e?void 0:e.strategy)||void 0===S?void 0:S.currentState)||void 0===w?void 0:w.data)||void 0===g?void 0:g.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(h=e.pinFlow)||void 0===h?void 0:h.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,M(a,c,r,u)];case 2:return p=t.sent(),f.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:c,finalUrl:p.productUrl}),p.gatewayRedirectUrl&&""!==p.gatewayRedirectUrl&&(f.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:c,gatewayRedirectUrl:p.gatewayRedirectUrl}),a.location.href=p.gatewayRedirectUrl),u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,v(o).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return[2,n(n({},i),{type:"PINEntry",result:s({finalUrl:p.productUrl,isAlreadySubscribed:p.isAlreadySubscribed||!1})})];case 5:switch(m=t.sent(),console.warn(m),y=void 0,m.type){case"AlreadySubscribed":y="AlreadySubscribed";break;case"InvalidPIN":y="InvalidPIN";break;case"SessionBlocked":y="SessionBlocked";break;case"ExpiredPIN":y="ExpiredPIN";break;case"InsufficientBalance":y="InsufficientBalance";break;default:y="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl}),setTimeout((function(){m.productUrl&&(a.location.href=m.productUrl)}),0),[2,l({errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl})];case 6:return[2]}}))}))})),x={PS:"970"},L=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=x[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},q=a({name:"pinFlow",initialState:F,reducers:{backToStartAction:function(e){f.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e.currentState={type:"MSISDNEntry",result:o()}}},extraReducers:function(e){e.addCase(T.pending,(function(e){e.currentState={type:"MSISDNEntry",result:c(),data:e.currentState.data}})).addCase(T.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(T.rejected,(function(e,t){e.currentState={type:"MSISDNEntry",result:u(t.payload),data:e.currentState.data}})).addCase(B.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(B.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(B.rejected,(function(e,t){e.currentState={type:"PINEntry",result:u(t.payload),data:e.currentState.data}}))}}),O=q.reducer,V=q.actions.backToStartAction;export{V as backToStartAction,I as pinFlowMatch,O as pinFlowReducer,T as submitMSISDNAction,B as submitPinAction,h as usePinFlowState};
|
|
1
|
+
import{__awaiter as e,__generator as t,__read as r,__assign as n}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,S as s,L as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{c as d,P as l}from"./strategySlice-RK7roJPB.js";import{searchToObject as p}from"./searchToObject.js";import{s as v}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{b as m}from"./bupperizeCountry-CEtt0MKz.js";import{l as y,r as S,a as w}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-BzQm-AFb.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"pacman-client";import"uuid";var h=function(e){return e((function(e){return e.pinFlow.currentState}))};function I(e){var t=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return t(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var b=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},E=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.msisdn,d=n.rockmanId,l=n.extraParams,p=n.search,v=n.uniqid,f=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,m,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",antifraud_id:i.antifraud_id||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:v||""},y=Object.entries(m).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n).concat(p?"&".concat(p):""),[2,fetch(w).then((function(e){return e.json()}))]}))}))},_=function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId,d=n.pin,l=n.extraParams,p=n.uniqid,v=n.evinaTid;return e(void 0,void 0,void 0,(function(){var e,n,f,y,S,w,g;return t(this,(function(t){return e=b(a),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:m(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",antifraud_id:i.antifraud_id||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:v,uniqid:p},y=Object.entries(f).filter((function(e){var t=r(e,2);return t[0],t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",w="".concat(S,"/tallyman/v1/?").concat(y).concat(e).concat(n),[2,fetch(w).then((function(e){return e.json()}))]}))}))},k=function(r){var i=r.window,a=r.country,o=r.slug,s=r.device,c=r.offer,u=r.rockmanId,d=r.operator,l=r.uniqid;return e(void 0,void 0,void 0,(function(){var e,r,p,v,f;return t(this,(function(t){return e=i.location.href,r=i.pac_analytics.visitor.ip,p=new URLSearchParams(n(n({action:"mcp-shield",country:a,slug:o,device:s,offerId:c.toString(),rockman_id:u,client_lpu:e},d&&{operator:d}),l&&{uniqid:l})),r&&p.append("client_ip",r),v=i.DEV_BASE_URL||"",f="".concat(v,"/tallyman/v1/?").concat(p.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function N(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){return!0===(e=n({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,D(r,e,a,e.operators,o)]:[2,P(r,e,a,o)]}))}))}var U="";function P(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,v,f,m,y,S,w,h,I,b,_,N,P;return t(this,(function(t){switch(t.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,"true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,S=-1===r.location.search.indexOf("redirect-back=1")&&r.location.search.substr(1)||"",w=U&&""!==U?"&mcpUniqid=".concat(U):"",h=void 0!==r&&r.tid?r.tid:"",[4,E({window:r,country:f,slug:v,device:m,offer:y,msisdn:d,rockmanId:l,extraParams:s,search:S,uniqid:w,evinaTid:h})];case 1:if(!1!==(I=t.sent()).success)return[3,2];switch((b=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(I.message))).message=I.message,!0){case I.message.includes("ALREADY SUBSCRIBED"):b.type="AlreadySubscribed";break;case I.message.includes("invalid"):b.type="InvalidMSISDN";break;default:b.type=null}throw b.productUrl=I.product_url?I.product_url:"",console.error(b),b;case 2:if(r.operator=I.operator,_={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&I.operator&&(_[f.toLowerCase()]&&_[f.toLowerCase()][I.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];t.label=3;case 3:return t.trys.push([3,5,,6]),[4,k({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:I.operator,uniqid:w})];case 4:return!1===(N=t.sent()).success?console.warn(N.message):(g(N.source),U=N.uniqid),[3,6];case 5:return P=t.sent(),console.warn(P),[3,6];case 6:return I.javascript&&g(I.javascript),[2,n({type:"SingleMSISDNSubmissionResult",pin:I.pin,uniqidResult:U,operator:I.operator,redirectUrl:null==I?void 0:I.redirect_to_url},(null==I?void 0:I.userType)?{userType:null==I?void 0:I.userType}:{})]}}))}))}function D(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return t(this,(function(l){switch(l.label){case 0:return[4,Promise.all(o.map((function(o){return e(d,void 0,void 0,(function(){var e,c;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,P(r,i,a,n(n({},s),{operator:o}))];case 1:return e=t.sent(),[2,S(n(n({},e),{operator:o}))];case 2:return c=t.sent(),[2,y(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var t;return"left"===e.type&&"AlreadySubscribed"===(null===(t=e.value)||void 0===t?void 0:t.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function M(n,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,y,S,g,h,I,b,E,k,N;return t(this,(function(P){switch(P.label){case 0:if(n.hostCountry&&n.hostSlug&&(a.country=n.hostCountry,a.slug=n.hostSlug),s=a.slug,c=a.country,u=a.device,d=n.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(n))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=n.pac_analytics.visitor.rockmanId,!i)throw(y=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",y;return S=""!==U?"&mcpUniqid=".concat(U):"",g=void 0!==n&&n.tid?n.tid:"",[4,_({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:S,evinaTid:g})];case 1:if(!1!==(h=P.sent()).success)return[3,2];throw I={"pin does not match":"InvalidPIN","mcp blocked":"SessionBlocked",expired_pin:"ExpiredPIN",insufficient_balance:"InsufficientBalance"}[h.message],(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",k.message=h.message,console.error(k),k;case 2:return!0!==h.async?[3,4]:h.product_url&&""!==h.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:h.product_url}]:(b=function(){return function(n){var i=n.window,a=n.country,o=n.slug,s=n.device,c=n.offer,u=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,d,l;return t(this,(function(t){return e={action:"check-subscription",country:m(a),slug:o,device:s,offerId:c,rockman_id:u},n=Object.entries(e).filter((function(e){var t=r(e,2);return t[0],null!=t[1]})).map((function(e){var t=r(e,2),n=t[0],i=t[1];return"".concat(n,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(n),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,w(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(E=P.sent()).success)return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:E.product_url||null,isAlreadySubscribed:N}];throw(k=new Error("Error in submitMSISDN() verify-pin action:\n".concat(E.message))).type="InvalidPIN",k.message=E.message,k;case 4:return N="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:N}]}}))}))}var j={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"PINEntry",result:s({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},C={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},R={currentState:{type:"MSISDNEntry",result:o()}},F=function(e){var t=p(e),r=new Event("onPinPage"),n=t["show-pin-entry"]&&"1"===t["show-pin-entry"],i=t["show-thank-you"]&&"1"===t["show-thank-you"],a="1"===(null==t?void 0:t.show_custom_error),c={currentState:{type:"MSISDNEntry",result:u({errorType:"SomethingWentWrong",error:null})}},d={currentState:{type:"PINEntry",result:s({finalUrl:(null==t?void 0:t.product_url)||""}),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}},l={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==t?void 0:t.msisdn)||"",operator:(null==t?void 0:t.operator)||""}}};if(n)return null==e||e.dispatchEvent(r),l;if(i)return d;if(a)return c;if(!t["mock-flow"])return R;switch(t["current-state"]){case"msisdn-failure-state":return C;case"pin-state":return null==e||e.dispatchEvent(r),j;case"completed-state":return A;default:return console.error("Mock Flow not supported"),R}}(window),T=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,s=r.msisdn,c=r.extraParams,u=i.getState,p=i.dispatch,m=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,y,S,w,g,h,I,b,E,_,k,U,P;return t(this,(function(t){switch(t.label){case 0:if(e=u(),!(null===(U=null===(k=null===(_=null==e?void 0:e.strategy)||void 0===_?void 0:_.currentState)||void 0===k?void 0:k.data)||void 0===U?void 0:U.config))return[2,m({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(P=e.pinFlow)||void 0===P?void 0:P.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===L(null==i?void 0:i.country,s)&&(s=s.replace("970","972")),f.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,N(a,i,s)];case 2:return w=t.sent(),f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),"SingleMSISDNSubmissionResult"===w.type&&w.redirectUrl&&(f.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),f.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:w.redirectUrl}),a.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,v(s).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return g="SingleMSISDNSubmissionResult"===w.type?w.operator:"",h={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},I=new Event("onPinPage"),null==a||a.dispatchEvent(I),[2,n(n({},S),{type:"PINEntry",result:o(),data:n({actualPIN:"SingleMSISDNSubmissionResult"===w.type?w.pin:null,msisdn:s,operator:g,pinMaxLength:""!==g&&h[g]?h[g]:null,isHeaderEnrichmentSuccess:y},"SingleMSISDNSubmissionResult"===w.type&&(null==w?void 0:w.userType)?{userType:w.userType}:{})})];case 5:switch(b=t.sent(),console.warn(b),E=void 0,b.type){case"AlreadySubscribed":E="AlreadySubscribed";break;case"InvalidMSISDN":E="InvalidMSISDN";break;default:E="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:E,error:b.toString(),message:b.message,productUrl:b.productUrl}),y&&p(d({type:l.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,m({errorType:E,error:b.toString(),message:b.message,productUrl:b.productUrl})];case 6:return[2]}}))}))})),B=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,c=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,p,m,y,S,w,g,h;return t(this,(function(t){switch(t.label){case 0:if(e=d(),!(null===(g=null===(w=null===(S=null==e?void 0:e.strategy)||void 0===S?void 0:S.currentState)||void 0===w?void 0:w.data)||void 0===g?void 0:g.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(h=e.pinFlow)||void 0===h?void 0:h.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,M(a,c,r,u)];case 2:return p=t.sent(),f.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:c,finalUrl:p.productUrl}),p.gatewayRedirectUrl&&""!==p.gatewayRedirectUrl&&(f.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:c,gatewayRedirectUrl:p.gatewayRedirectUrl}),a.location.href=p.gatewayRedirectUrl),u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,v(o).then((function(e){e&&e.data&&e.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){f.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return[2,n(n({},i),{type:"PINEntry",result:s({finalUrl:p.productUrl,isAlreadySubscribed:p.isAlreadySubscribed||!1})})];case 5:switch(m=t.sent(),console.warn(m),y=void 0,m.type){case"AlreadySubscribed":y="AlreadySubscribed";break;case"InvalidPIN":y="InvalidPIN";break;case"SessionBlocked":y="SessionBlocked";break;case"ExpiredPIN":y="ExpiredPIN";break;case"InsufficientBalance":y="InsufficientBalance";break;default:y="UnknownError"}return f.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl}),setTimeout((function(){m.productUrl&&(a.location.href=m.productUrl)}),0),[2,l({errorType:y,error:m.toString(),message:m.message,productUrl:m.productUrl})];case 6:return[2]}}))}))})),x={PS:"970"},L=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=x[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},q=a({name:"pinFlow",initialState:F,reducers:{backToStartAction:function(e){f.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e.currentState={type:"MSISDNEntry",result:o()}}},extraReducers:function(e){e.addCase(T.pending,(function(e){e.currentState={type:"MSISDNEntry",result:c(),data:e.currentState.data}})).addCase(T.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(T.rejected,(function(e,t){e.currentState={type:"MSISDNEntry",result:u(t.payload),data:e.currentState.data}})).addCase(B.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(B.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(B.rejected,(function(e,t){e.currentState={type:"PINEntry",result:u(t.payload),data:e.currentState.data}}))}}),O=q.reducer,V=q.actions.backToStartAction;export{V as backToStartAction,I as pinFlowMatch,O as pinFlowReducer,T as submitMSISDNAction,B as submitPinAction,h as usePinFlowState};
|
|
2
2
|
//# sourceMappingURL=pinFlow.js.map
|
package/dist/strategy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{R as RDS}from"./RemoteDataState-lcf8PfJd.js";import{P as t}from"./strategySlice-
|
|
1
|
+
export{R as RDS}from"./RemoteDataState-lcf8PfJd.js";import{P as t}from"./strategySlice-RK7roJPB.js";export{i as identifyStrategy,a as selectOperatorAction,b as strategyReducer,s as submitMSISDNAction}from"./strategySlice-RK7roJPB.js";import"tslib";import"@reduxjs/toolkit";import"./searchToObject.js";import"./getConfig.js";import"./tryGetIPRangeName-QW-9NgzE.js";import"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";var e=function(t){return t((function(t){return t.strategy.currentState}))};function r(e){var r=e.identifyInitialState,o=e.identifyFlowByOperatorSelect,a=e.identifyFlowByMsisdn,s=e.pinFlow,i=e.moFlow,n=e.moRedirFlow,c=e.oneClickFlow,u=e.click2smsFlow,l=e.ussdFlow,p=e.creditCardFlow;return function(e){switch(e.type){case t.IDENTIFY_STRATEGY:return r();case t.IDENTIFY_FLOW_BY_OPERATOR_SELECT:return o();case t.IDENTIFY_FLOW_BY_MSISDN:return a(e.result);case t.PIN:return s();case t.MO:return i();case t.MO_REDIR:return n();case t.ONE_CLICK:return c();case t.CLICK2SMS:return u();case t.USSD:return l();case t.CREDIT_CARD:return p();default:throw new Error("Unexpected state type: ".concat(e.type))}}}export{t as PossibleTypes,r as strategy,e as useStrategyState};
|
|
2
2
|
//# sourceMappingURL=strategy.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{__awaiter as e,__generator as t,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as r}from"@reduxjs/toolkit";import{N as i,S as s,L as a,F as l}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{getConfig as u}from"./getConfig.js";import{t as c}from"./tryGetIPRangeName-QW-9NgzE.js";import{t as f}from"./tracker-DaaILhEr.js";var p;!function(e){e.IDENTIFY_STRATEGY="IDENTIFY_STRATEGY",e.IDENTIFY_FLOW_BY_MSISDN="IDENTIFY_FLOW_BY_MSISDN",e.IDENTIFY_FLOW_BY_OPERATOR_SELECT="IDENTIFY_FLOW_BY_OPERATOR_SELECT",e.PIN="PIN",e.MO="MO",e.MO_REDIR="MO_REDIR",e.ONE_CLICK="ONE_CLICK",e.CLICK2SMS="CLICK2SMS",e.USSD="USSD",e.TPAY_HE="TPAY_HE",e.CREDIT_CARD="CREDIT_CARD"}(p||(p={}));var v={AE:"971",BH:"973",CI:"225",SN:"221",KW:"965",AT:"43",CZ:"420",OM:"968",PK:"92",PE:"51"},w=function(e,t){var n=v[null==t?void 0:t.toUpperCase()];if(!n)throw new Error("Phone code not found for country code: ".concat(t));var o=e.replace(/\D/g,"");return o.startsWith(n)?"".concat(o):"".concat(n).concat(o)},m=function(n){var o=n.window,r=n.slug,i=n.country,s=n.msisdn,a=n.device,l=n.offer,d=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,u,c,f;return t(this,(function(t){switch(t.label){case 0:return e=o.languageCode?"&language_code=".concat(o.languageCode):"",n=encodeURIComponent(o.location.href),u=o.DEV_BASE_URL||"",c=new URLSearchParams({action:"identify",slug:r,country:i,msisdn:s,device:a,offerId:l,rockman_id:d,page:n,language_code:e}).toString(),f="".concat(u,"/tallyman/v1/?").concat(c),[4,fetch(f)];case 1:return[2,t.sent().json()]}}))}))},g={mo:p.MO,pin:p.PIN,oneClick:p.ONE_CLICK,moRedir:p.MO_REDIR,click2sms:p.CLICK2SMS,ussd:p.USSD,tpayHe:p.TPAY_HE,creditCard:p.CREDIT_CARD},E={mo:"Msisdn to sms",pin:"Pin",oneClick:"3G click",moRedir:"Redirect",click2sms:"Click to sms",tpayHe:"Pin",ussd:"Msisdn to sms"},y=function(e){return E[e]};function I(o){var r,i,s,a,l=o.window,d=o.internationalMSISDN,u=o.configs;return e(this,void 0,void 0,(function(){var o,c,f,p,v,w,g,E,y,I,C=this;return t(this,(function(S){switch(S.label){case 0:if(!d)throw(I=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",I;return o=(null===(r=d.match(/\d+/gi))||void 0===r?void 0:r.join(""))||"",c=null===(i=null==u?void 0:u.strategyConfigs)||void 0===i?void 0:i.default,f=c.flowConfig,p=null===(s=null==u?void 0:u.strategyConfigs)||void 0===s?void 0:s.operators,v=function(){return e(C,void 0,void 0,(function(){var e,n,r,i,s;return t(this,(function(t){switch(t.label){case 0:return e=f.slug,n=f.country,r=f.device,i=l.pac_analytics.visitor.rockmanId,s=l.pac_analytics.visitor.offer,[4,m({window:l,slug:e,country:n,msisdn:o,device:r,offer:s,rockmanId:i})];case 1:return[2,t.sent()]}}))}))},[4,v()];case 1:if(w=S.sent(),g=p[w.operator]?p[w.operator]:null,E=!1===w.success&&"Operator could not be found for the given MSISDN"===w.message,y=!1===w.success&&-1!==(null===(a=w.message)||void 0===a?void 0:a.indexOf("HLR did not find the operator for given MSISDN")),E||y)throw(I=new Error("Error in submitMSISDN() identify action")).type="FlowDetectFailed",I.msisdn=o,I;if(null!==g)return[2,n({operator:w.operator,default:c},g)];if(null===g)return[2,n({operator:w.operator},c)];throw(I=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",I}}))}))}function C(e){var t,o,r=e.configs,i=e.operator,s=null===(t=null==r?void 0:r.strategyConfigs)||void 0===t?void 0:t.default,a=null===(o=null==r?void 0:r.strategyConfigs)||void 0===o?void 0:o.operators;return n({operator:null==i?void 0:i.toUpperCase(),default:s},a[null==i?void 0:i.toUpperCase()])}function S(n){var o=n.window,r=n.configs;return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){switch(t.label){case 0:return[4,c(o.pac_analytics.visitor)];case 1:return e=t.sent(),[2,C({configs:r,operator:e&&e.includes("_")?e.toUpperCase():""})]}}))}))}var h=function(){return{type:p.IDENTIFY_FLOW_BY_MSISDN,result:i()}},_=o("strategy/submitMSISDNAction",(function(n,o){var r=n.window,i=n.msisdn,s=o.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,n,o,a,l;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),n=e.strategy,[4,I({window:r,internationalMSISDN:i,configs:e})];case 1:switch(o=t.sent(),n){case"pin-mo-redir-ask-mobile-number":return[2,R(o,i)];case"pin-mo-ask-mobile-number":return[2,O(o,i)];case"pin-combo-ask-mobile-number":return[2,F(o,i)];case"mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn":return[2,N(o,i)];case"pin-mo-mo-redir-ask-mobile-number":return[2,D(o,i)];case"pin-click2sms-ask-mobile-number":return[2,b(o,i)];default:return[2,s("Unknown strategy")]}case 2:switch(a=t.sent(),l=void 0,a.type){case"SEAlreadySubscribed":l="AlreadySubscribed";break;case"SEInvalidMSISDN":l="InvalidMSISDN";break;default:l="UnknownError"}return[2,s({errorType:l,error:a,productUrl:a.productUrl})];case 3:return[2]}}))}))})),O=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:p.MO,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})};default:return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:n({config:e.flowConfig},e.operator&&{operator:e.operator})}}},F=function(e,t){return"pin"===e.flow?(f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})}):(f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:n({config:e.flowConfig},e.operator&&{operator:e.operator})})},R=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:p.MO_REDIR,result:i(),data:{config:e.flowConfig}};default:return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig}}}},D=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:p.MO_REDIR,result:i(),data:{config:e.flowConfig,msisdn:t}};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:p.MO,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig}}}},N=function(e,t){switch(e.flowOnWifi){case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:p.MO_REDIR,result:i(),data:{config:e.flowConfig,msisdn:t}};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:p.MO,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Redirect"),{type:p.MO_REDIR,result:i(),data:{config:e.flowConfig,rockman_id:e.rockman_id}}}},b=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"click2sms":return f.sendOptInFlowEvent("Click to sms"),{type:p.CLICK2SMS,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Pin"),{type:p.CLICK2SMS,result:i(),data:{config:e.flowConfig}}}},T=function(){var e=function(e){var t,n=e.configs,o=null===(t=null==n?void 0:n.strategyConfigs)||void 0===t?void 0:t.operators;return Object.keys(o)}({configs:u()});return{type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:i(),data:{operators:e}}},k=o("strategy/selectOperatorAction",(function(o,r){var s=o.operator,a=r.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,o;return t(this,(function(t){try{switch(e=u(),(o=C({configs:e,operator:s})).flow){case"pin":return f.sendOptInFlowEvent("Pin"),[2,{type:p.PIN,result:{config:o.flowConfig,operator:s}}];case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),[2,{type:p.MO,result:{config:o.flowConfig,operator:s}}];case"click2sms":return f.sendOptInFlowEvent("Click to sms"),[2,{type:p.CLICK2SMS,result:{config:n({operators:[s]},o.flowConfig),operator:s}}];case"oneClick":return f.sendOptInFlowEvent("3G click"),[2,{type:p.ONE_CLICK,result:{config:o.flowConfig,operator:s,autoRedirect:!0}}];default:return f.sendOptInFlowEvent("Pin"),[2,{type:p.PIN,result:i()}]}}catch(e){return"UnkownError",[2,a({errorType:"UnkownError",error:e.toString()})]}return[2]}))}))})),M=function(n){return e(void 0,void 0,void 0,(function(){var e,o,r,s,a;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),[4,S({window:window,configs:e})];case 1:return(o=t.sent()).flow||"all-flows-detect-operator-by-ip-or-ask-mobile-number"!==n?(r=o.flow,s=y(r),f.sendOptInFlowEvent(s),[2,{type:g[r],result:i(),data:{config:o.flowConfig,operator:o.operator}}]):[2,h()];case 2:return a=t.sent(),console.error("error",a),[3,3];case 3:return[2]}}))}))},P=function(e){return{type:p.PIN,result:i(),data:{config:e}}},L=function(n){var o=n.window;return e(void 0,void 0,void 0,(function(){var e,n,r,i,a;return t(this,(function(t){return e=u(),n=null==e?void 0:e.enableScriptTimer,r=e.strategyConfigs,i=null===(a=null==r?void 0:r.default)||void 0===a?void 0:a.flowConfig,[2,new Promise((function(e){var t,a,l,d;try{var c=null===(a=null===(t=null==o?void 0:o.pac_analytics)||void 0===t?void 0:t.visitor)||void 0===a?void 0:a.heMsisdn,v=null===(d=null===(l=null==o?void 0:o.pac_analytics)||void 0===l?void 0:l.visitor)||void 0===d?void 0:d.country;c&&v&&(c=w(c,v));var m,g=!1,E=!1;n&&(m=setTimeout((function(){var t;g||(E=!0,f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"3 second timer expired"}),o.isPrelanderClicked=!0,e({type:p.PIN,result:s({}),data:{config:null===(t=null==r?void 0:r.default)||void 0===t?void 0:t.flowConfig}}))}),3e3));var y=function(t){var r=t.detail;if((null==r?void 0:r.msisdn)&&(c=w(r.msisdn,v),o.msisdn=c),n){if(!E){g=!0,clearTimeout(m),f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c});var i=C({configs:u(),operator:null==r?void 0:r.operator_code});o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(Y(i,c,null==r?void 0:r.operator_code,!0))}}else{f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c,operator:null==r?void 0:r.operator_code});i=C({configs:u(),operator:null==r?void 0:r.operator_code});o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(Y(i,c,null==r?void 0:r.operator_code,!0))}},I=function(){o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(P(i))};if(o.addEventListener("he-success",y),o.addEventListener("he-fail",I),!(null==o?void 0:o.heScriptUrl))return f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error he script url not set"}),void o.dispatchEvent(new Event("he-fail"));var S=document.createElement("script");S.type="text/javascript",S.id="he-js-link",S.src="".concat(o.heScriptUrl),S.referrerPolicy="origin",document.head.appendChild(S),S.onerror=function(){console.error("Error loading Header Enrichment script."),f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error loading Header Enrichment script."}),o.dispatchEvent(new Event("he-fail"))}}catch(t){console.error("Error in header enrichment:",t),e(P(i))}}))]}))}))},Y=function(e,t,n,o){var r,s;void 0===t&&(t=null),void 0===n&&(n=null);var a=null===(r=u().strategyConfigs)||void 0===r?void 0:r.default,l=null==a?void 0:a.flow,d=e.flow||(null===(s=e.default)||void 0===s?void 0:s.flow),c=y(d);return f.sendOptInFlowEvent(c),e.flow?{type:g[d],result:i(),data:{config:e.flowConfig,operator:e.operator,isHeaderEnrichmentSuccess:o}}:{type:g[l],result:i(),data:{config:null==a?void 0:a.flowConfig,operator:n,msisdn:t,isHeaderEnrichmentSuccess:o}}},U={currentState:{type:p.IDENTIFY_STRATEGY,result:i(),data:void 0}},A=function(){var e=d(window);if(void 0!==e["mock-flow"])switch(void 0!==e.operator&&(window.operator=e.operator),e["mock-flow"]){case"pin":return{type:p.PIN,result:s({})};case"mo":return{type:p.MO,result:s({})};case"moredir":return{type:p.MO_REDIR,result:s({})};case"oneclick":return{type:p.ONE_CLICK,result:s({}),data:{subscription_url:e["subscription-url"]}};case"click2sms":return{type:p.CLICK2SMS,result:s({})};case"ussd":return{type:p.USSD,result:s({})};case"creditcard":return{type:p.CREDIT_CARD,result:s({})};default:throw new Error("(mockStrategyStateByUrlParam) Strategy Mock Flow not supported")}},j=o("strategy/identifyStrategy",(function(){return e(void 0,void 0,void 0,(function(){var n,o,r,a,l,c,v,m,E,I,S,_,O;return t(this,(function(F){switch(F.label){case 0:return n=u(),o=n.strategy,r=n.strategyConfigs,void 0!==(a=d(window))["mock-flow"]?[2,A()]:a["show-pin-entry"]&&"1"===a["show-pin-entry"]||a["show-thank-you"]&&"1"===a["show-thank-you"]?(l=C({configs:n,operator:a.operator}),[2,{type:p.PIN,result:s({}),data:{config:(null==l?void 0:l.flowConfig)||(null===(c=null==r?void 0:r.default)||void 0===c?void 0:c.flowConfig)}}]):o.includes("ask-operator")?[2,T()]:o.includes("detect-operator-by-ip")?[2,M(o)]:(null==o?void 0:o.includes("ask-mobile-number"))?[2,h()]:(null==o?void 0:o.includes("header-enrichment"))&&"header-enrichment-script"!==o?[4,e(void 0,void 0,void 0,(function(){var n,o,r,s,a,l,c,p,v,m,E,I;return t(this,(function(S){switch(S.label){case 0:n=u(),o=null==n?void 0:n.strategyConfigs.default,r=o.flow,S.label=1;case 1:return S.trys.push([1,5,,6]),s=d(window),a=(null==s?void 0:s.msisdn)&&""!==(null==s?void 0:s.msisdn),(null==s?void 0:s.operator)?"pin-header-enrichment"===n.strategy&&a?[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig,operator:(null==s?void 0:s.operator)||null,msisdn:(null==s?void 0:s.msisdn)||null,isHeaderEnrichmentSuccess:a}}]:(l=null,c=null,[4,C({operator:null==s?void 0:s.operator,configs:n})]):[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 2:return p=S.sent(),v=p.flow||r,m=y(v),f.sendOptInFlowEvent(m),"oneClick"!==v?[3,4]:[4,e(void 0,void 0,void 0,(function(){var e,n,o,r,i,s,a,l,u;return t(this,(function(t){if("undefined"==typeof window)throw new Error("This function can only be run in a browser environment.");if("false"===(e=d(window)).success)throw new Error("Error in getRedirectUrl() identify-user action:\n".concat(e.message||"NotOn3g"));if(!(n=e.subscription_url||e.redirect_url))throw new Error("No URL provided for redirection");return o=window.atob(n),r=new URL(o),i=new URLSearchParams(r.search),s=i.get("msisdn")||e.msisdn,a=i.get("operator")||e.operator,s&&(s=w(s,null===(u=null===(l=null===window||void 0===window?void 0:window.pac_analytics)||void 0===l?void 0:l.visitor)||void 0===u?void 0:u.country)),[2,{msisdn:s||"",operator:a||"",subscription_url:e.subscription_url?o:void 0,redirect_url:e.redirect_url?o:void 0}]}))}))];case 3:""!==(null==(E=S.sent())?void 0:E.msisdn)&&f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:null==E?void 0:E.msisdn}),l=(null==E?void 0:E.subscription_url)||null,c=(null==E?void 0:E.redirect_url)||null,S.label=4;case 4:return[2,{type:g[v],result:i(),data:{config:p.flowConfig,operator:p.operator,subscription_url:l||null,redirect_url:c||null,isHeaderEnrichmentSuccess:a}}];case 5:return I=S.sent(),console.error("error",I),[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 6:return[2]}}))}))]:[3,2];case 1:return[2,F.sent()];case 2:switch(o){case"header-enrichment-script":return[2,L({window:window})];case"pin":return f.sendOptInFlowEvent("Pin"),[2,{type:p.PIN,result:s({}),data:{config:null===(v=null==r?void 0:r.default)||void 0===v?void 0:v.flowConfig}}];case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),[2,{type:p.MO,result:s({}),data:{config:null===(m=null==r?void 0:r.default)||void 0===m?void 0:m.flowConfig}}];case"mo-redir":return[2,{type:p.MO_REDIR,result:s({}),data:{config:null===(E=null==r?void 0:r.default)||void 0===E?void 0:E.flowConfig}}];case"one-click":return f.sendOptInFlowEvent("Redirect"),[2,{type:p.ONE_CLICK,result:s({}),data:{config:null===(I=null==r?void 0:r.default)||void 0===I?void 0:I.flowConfig}}];case"click2sms":return f.sendOptInFlowEvent("Click to sms"),[2,{type:p.CLICK2SMS,result:s({}),data:{config:null===(S=null==r?void 0:r.default)||void 0===S?void 0:S.flowConfig}}];case"ussd":return f.sendOptInFlowEvent("USSD"),[2,{type:p.USSD,result:s({}),data:{config:null===(_=null==r?void 0:r.default)||void 0===_?void 0:_.flowConfig}}];case"credit-card":return f.sendOptInFlowEvent("Credit card"),[2,{type:p.CREDIT_CARD,result:s({}),data:{config:null===(O=null==r?void 0:r.default)||void 0===O?void 0:O.flowConfig}}];default:throw new Error("Strategy not supported")}}}))}))})),K=o("strategy/setStrategyExtraData",(function(n){var o=n.type,r=n.data;return e(void 0,void 0,void 0,(function(){return t(this,(function(e){return[2,{type:o,result:i(),data:r}]}))}))})),W=r({name:"strategy",initialState:U,reducers:{},extraReducers:function(e){e.addCase(j.pending,(function(e){e.currentState={type:p.IDENTIFY_STRATEGY,result:a()}})).addCase(j.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(j.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_STRATEGY,result:l(t.error.message)}})).addCase(_.pending,(function(e){e.currentState={type:p.IDENTIFY_FLOW_BY_MSISDN,result:a()}})).addCase(_.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(_.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_FLOW_BY_MSISDN,result:l(t.payload)}})).addCase(K.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(k.pending,(function(e){e.currentState={type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:a()}})).addCase(k.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(k.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:l(t.payload)}}))}}).reducer;export{p as P,k as a,W as b,K as c,j as i,_ as s};
|
|
2
|
+
//# sourceMappingURL=strategySlice-RK7roJPB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategySlice-RK7roJPB.js","sources":["../src/sharedFlowTypes/StrategyTypes.ts","../src/utilities/formatNumberToE164.ts","../src/flows/strategy/api.ts","../src/flows/strategy/main.ts","../src/flows/strategy/strategies/askMobileNumber.ts","../src/flows/strategy/strategies/askOperator.ts","../src/flows/strategy/strategies/detectOperatorByIp.ts","../src/flows/strategy/strategies/injectHeaderEnrichmentScript.ts","../src/flows/strategy/strategySlice.ts","../src/flows/strategy/strategies/headerEnrichment.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable camelcase */\nimport * as RDS from '../common-types/RemoteDataState';\nimport { Click2smsFlowState } from './Click2smsTypes';\nimport { CreditCardFlowState } from './CreditCardTypes';\nimport { MoRedirFlowState } from './MoRedirTypes';\nimport { MoFlowState } from './MoTypes';\nimport { OneClickFlowState } from './OneClickTypes';\nimport { PinFlowState } from './PinTypes';\nimport { UssdFlowState } from './UssdTypes';\n\nexport type IIdentifyResult = {\n operator: string;\n flow?: string;\n success: boolean;\n rockman_id?: string;\n message?: string;\n};\n\nexport 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 type IStrategyNames =\n | 'pin'\n | 'mo'\n | 'mo-redir'\n | 'click2sms'\n | 'one-click'\n | 'ussd'\n | 'tpay-he'\n | 'credit-card'\n | 'tallyman-one-click'\n | 'pin-mo-ask-operator'\n | 'pin-mo-ask-mobile-number'\n | 'pin-one-click-ask-operator'\n | 'pin-one-click-detect-operator-by-ip'\n | 'one-click-mo-pin-detect-operator-by-ip-or-msisdn'\n | 'pin-click2sms-ask-operator'\n | 'mo-redir-one-click-detect-operator-by-ip'\n | 'pin-mo-redir-ask-mobile-number'\n | 'pin-click2sms-ask-mobile-number'\n | 'mo-one-click-detect-operator-by-ip'\n | 'click2sms-one-click-detect-operator-by-ip'\n | 'pin-header-enrichment'\n | 'pin-msisdn-fowarding-pin-header-enrichment'\n | 'he-pin-mo-redir-header-enrichment'\n | 'he-pin-one-click-header-enrichment'\n | 'he-pin-one-click-ask-operator'\n | 'click2sms-one-click-ask-operator'\n | 'pin-mo-detect-operator-by-ip'\n | 'he-mo-redir-one-click-header-enrichment'\n | 'pin-combo-ask-mobile-number'\n | 'header-enrichment-script'\n | 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn'\n | 'pin-mo-mo-redir-ask-mobile-number';\n\nexport interface IHash {\n [key: string]: string;\n}\n\nexport type IDENTIFYMSISDNEntryErrorTypes = 'AlreadySubscribed' | 'UnknownError' | 'InvalidMSISDN';\n\nexport type IDENTIFYMSISDNEntryFailure = {\n errorType: IDENTIFYMSISDNEntryErrorTypes;\n error: unknown;\n};\n\nexport type IdentifyFlowOptionsResult = {\n config: IConfig;\n nextAction?: unknown;\n msisdn?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n rockman_id?: string;\n isHeaderEnrichmentSuccess?: boolean;\n autoRedirect?: boolean;\n isUseMsisdnPrefix?: boolean;\n};\n\nexport type IDENTIFYMSISDNEntrySuccess = {};\nexport type OPERATORSelectFailure = {};\nexport type OPERATORSelectSuccess = IdentifyFlowOptionsResult;\n\nexport type IDETECTYOPERATOBYIPFailure = {};\nexport type IDETECTYOPERATOBYIPSuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_OPERATOR_MSISDNEntrySuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_FLOW_HESuccess = IdentifyFlowOptionsResult;\n\nexport type OPERATORSelectFlowIdentifyFailure = {};\nexport type OPERATORSelectFlowIdentifySuccess = {\n operators: Array<string>;\n msisdn?: string;\n nextAction: 'selectOperator';\n};\nexport type IDENTIFYFailure = {};\n\nexport type IDENTIFYSuccess = {};\n\nexport type IOperatorSelectFlowIdentifyPayload = {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFlowIdentifyFailure, OPERATORSelectFlowIdentifySuccess>;\n};\n\n// export type IIdentifyByIPPayload= {\n// type:\"IDENTIFY_FLOW_BY_IP\"\n// result: RDS.RemoteDataState<IDENTIFYBYIPFailure, IDENTIFYBYIPSuccess>;\n// }\n\nexport type IDetectOperatorByIpPayload = {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n};\n\nexport enum PossibleTypes {\n IDENTIFY_STRATEGY = 'IDENTIFY_STRATEGY',\n IDENTIFY_FLOW_BY_MSISDN = 'IDENTIFY_FLOW_BY_MSISDN',\n IDENTIFY_FLOW_BY_OPERATOR_SELECT = 'IDENTIFY_FLOW_BY_OPERATOR_SELECT',\n PIN = 'PIN',\n MO = 'MO',\n MO_REDIR = 'MO_REDIR',\n ONE_CLICK = 'ONE_CLICK',\n CLICK2SMS = 'CLICK2SMS',\n USSD = 'USSD',\n TPAY_HE = 'TPAY_HE',\n CREDIT_CARD = 'CREDIT_CARD'\n}\n\nexport type IOperatorSelectPayload = {\n type: PossibleTypes;\n result: OPERATORSelectSuccess;\n};\n\nexport type ISubmitMsisdnPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByIpOperatorPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByHePayload = {\n type: PossibleTypes;\n result: IDENTIFY_FLOW_HESuccess;\n};\n\nexport type IIdentfyFlowByMsisdnNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByOperatorNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByIPOperatorNextAction = 'getRedirectUrlAction' | 'submitMSISDNAction';\n\nexport type IIdenyifyFlowByMsisdnSumbitNextData = {\n nextAction: IIdentfyFlowByMsisdnNextAction;\n msisdn?: string;\n operator?: string;\n};\n\nexport type IIdenyifyFlowByMsisdnPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IIdenyifyStrategyPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IStrategyCurrentState =\n | {\n type: 'IDENTIFY_STRATEGY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: OPERATORSelectFlowIdentifySuccess;\n }\n | {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n }\n | {\n type: 'HE_IDENTIFY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFailure, OPERATORSelectSuccess>;\n config: IConfig;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n nextData: IIdenyifyFlowByMsisdnSumbitNextData;\n }\n | {\n type: 'PIN';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'USSD';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO_REDIR';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'ONE_CLICK';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CLICK2SMS';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'TPAY_HE';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CREDIT_CARD';\n result: IdentifyFlowOptionsResult;\n };\n\nexport type IStrategyIDentifyUserResult =\n | {\n success: 'true';\n rockman_id: string;\n msisdn: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n 'redirect-back'?: string;\n 'msisdn-alias'?: string;\n }\n | {\n success: 'false';\n rockman_id: string;\n message: string;\n 'redirect-back'?: string;\n };\n\nexport type IMockFlows = 'pin' | 'mo' | 'oneclick' | 'click2sms' | 'moredir' | 'ussd' | 'tpay' | 'creditcard';\n\nexport interface IMockFlowParams<T> {\n 'mock-flow': IMockFlows;\n 'current-state': T;\n 'show-pin-entry': '1' | '0';\n 'show-thank-you': '1' | '0';\n operator: string;\n msisdn?: string;\n 'subscription-url'?: string;\n show_custom_error?: string;\n product_url?: string;\n}\n\nexport interface IScriptHeaderEnrichmentSuccess extends CustomEvent {\n detail: {\n msisdn: string;\n operator_code: string;\n };\n}\n\nexport interface ExtraStrategyData {\n isHeaderEnrichmentSuccess?: boolean;\n config?: ConfigDetails;\n msisdn?: string;\n rockman_id?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n operators?: string[];\n}\nexport interface StrategyState {\n currentState: StrategyCurrentState;\n}\n\nexport interface StrategyCurrentState {\n type: PossibleTypes;\n result: RDS.RemoteDataState<any, any>;\n data?: ExtraStrategyData;\n}\n\nexport type IMockPinFlowStates = 'msisdn-state' | 'pin-state' | 'completed-state' | 'msisdn-failure-state';\n\nexport interface RootState {\n strategy?: StrategyState;\n pinFlow?: PinFlowState;\n moFlow?: MoFlowState;\n moRedirFlow?: MoRedirFlowState;\n click2smsFlow?: Click2smsFlowState;\n oneClickFlow?: OneClickFlowState;\n ussdFlow?: UssdFlowState;\n creditCardFlow?: CreditCardFlowState;\n}\n","const countryToPhoneCode: Record<string, string> = {\n AE: '971', // United Arab Emirates\n BH: '973', // Bahrain\n CI: '225', // Côte d'Ivoire (Ivory Coast)\n SN: '221', // Senegal\n KW: '965', // Kuwait\n AT: '43', // Austria\n CZ: '420', // Czech Republic\n OM: '968', // Oman\n PK: '92', // Pakistan\n PE: '51' // Peru\n};\n\n/**\n * Formats a phone number to E.164 format.\n *\n * @param {string} number - The phone number to format.\n * @param {string} isoCountryCode - The ISO country code of the phone number.\n * @return {string} The formatted phone number in E.164 format.\n */\nexport const formatNumberToE164 = (number: string, isoCountryCode: string) => {\n const phoneCode = countryToPhoneCode[isoCountryCode?.toUpperCase()];\n if (!phoneCode) {\n throw new Error(`Phone code not found for country code: ${isoCountryCode}`);\n }\n\n const cleanNumber = number.replace(/\\D/g, '');\n if (!cleanNumber.startsWith(phoneCode)) {\n return `${phoneCode}${cleanNumber}`;\n }\n return `${cleanNumber}`;\n};\n","import { IIdentifyResult, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\n\nconst fetchJsonp: <T>({ window, _url }: { window: Window; _url: string }) => Promise<T> = ({\n window,\n _url\n}: {\n window: Window;\n _url: string;\n}) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n (window as any)[ouisys_callback_function] = (arg: any) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\nconst identify = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n}): Promise<IIdentifyResult> => {\n const languageCode = window.languageCode ? `&language_code=${window.languageCode}` : '';\n const locationHref = encodeURIComponent(window.location.href);\n\n const host = (window as Window).DEV_BASE_URL || '';\n\n const params = {\n action: 'identify',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: locationHref,\n language_code: languageCode\n };\n\n const urlParams = new URLSearchParams(params).toString();\n const url = `${host}/tallyman/v1/?${urlParams}`;\n\n const response = await fetch(url);\n return response.json();\n};\n\nconst identifyUserGetSubscriptionUrl = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n extraParamsQs = '',\n search = ''\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParamsQs?: string;\n search?: string;\n}): Promise<IStrategyIDentifyUserResult> => {\n const xaid = window.pac_analytics.visitor.xaid || '';\n const locationHref = encodeURIComponent(window.location.href);\n const pixelUrl = encodeURIComponent(\n `http://${window.location.host}/pixels?xcid=${window.location.pathname.replace(\n '/',\n ''\n )}&xaid=${xaid}&country=${bupperizeCountry(country)}`\n );\n\n const params = {\n action: 'identify-user',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n page: locationHref,\n pixel_url: pixelUrl,\n rockman_id: rockmanId,\n extraParamsQs,\n search\n };\n\n const urlParams = new URLSearchParams(params).toString();\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${urlParams}`;\n\n const response = await fetchJsonp<IStrategyIDentifyUserResult>({\n window,\n _url: url\n });\n return response;\n};\n\nexport { identify, identifyUserGetSubscriptionUrl };\n","import { 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 submitMSISDN() identify action`) as IError;\n submissionError.type = 'SEInvalidMSISDN';\n throw submissionError;\n }\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || ''; // tallyman API expects international msisdn without unknown special character\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const config = defaultFlowConfig.flowConfig;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n\n const indentifyFlow = async (): Promise<IIdentifyResult> => {\n const { slug, country, device } = config;\n const { rockmanId } = window.pac_analytics.visitor;\n const { offer } = window.pac_analytics.visitor;\n const flowOperatorResult: IIdentifyResult = await identify({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId\n });\n return flowOperatorResult;\n };\n const theResult = await indentifyFlow();\n\n const flow = operatorsConfig[theResult.operator] ? operatorsConfig[theResult.operator] : null;\n const cannotDetect =\n theResult.success === false && theResult.message === 'Operator could not be found for the given MSISDN';\n const hlrError =\n theResult.success === false && theResult.message?.indexOf('HLR did not find the operator for given MSISDN') !== -1;\n\n if (cannotDetect || hlrError) {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError & { msisdn: string };\n submissionError.type = 'FlowDetectFailed';\n submissionError.msisdn = msisdn;\n throw submissionError;\n } else if (flow !== null) {\n const flowObj = { operator: theResult.operator, default: defaultFlowConfig, ...flow };\n // @ts-ignore\n return flowObj;\n } else if (flow === null) {\n const flowObj = { operator: theResult.operator, ...defaultFlowConfig };\n // @ts-ignore\n return flowObj;\n } else {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError;\n submissionError.type = 'SEInvalidMSISDN';\n throw submissionError;\n }\n}\n\nexport function determineFlowByOperator({ configs, operator }: { configs: IStrategy; operator: string }): IFlow {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n\n const flowObj = {\n operator: operator?.toUpperCase(),\n default: defaultFlowConfig,\n ...operatorsConfig[operator?.toUpperCase()]\n };\n // @ts-ignore\n return flowObj;\n}\n\nexport async function determineFlowByOperatorFromIp({\n window,\n configs\n}: {\n window: Window;\n configs: IStrategy;\n}): Promise<IFlow> {\n const operator = await tryGetIPRangeName(window.pac_analytics.visitor);\n const flowObj = determineFlowByOperator({\n configs,\n operator: operator && operator.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 url = searchObj.subscription_url || searchObj.redirect_url;\n if (!url) {\n throw new Error('No URL provided for redirection');\n }\n\n const decodedUrl = window.atob(url);\n const newUrl = new URL(decodedUrl);\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 subscription_url: searchObj.subscription_url ? decodedUrl : undefined,\n redirect_url: searchObj.redirect_url ? decodedUrl : undefined\n };\n};\n\nexport const subscribe: (_url: string) => Promise<string> = async (_url: string) =>\n // const result:ISubscribeResult = await fetch(url + \"&operator=kw_viva\").then((x)=>x.json())\n\n // if(false === result.success){\n // const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as IError & {type:string;}\n // subscribeError['type'] = \"SubscriptionError\";\n // throw subscribeError\n // }else{\n '/product';\n// }\n\nexport function mockConfig({ configs, flow }: { configs: IStrategy; flow: string }): IConfig {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const opArr = Object.keys(operatorsConfig);\n const r = opArr.filter((o) => operatorsConfig[o].flow === flow);\n const operator = r[0];\n const flowObj = { offer: '1', operator, default: defaultFlowConfig, ...operatorsConfig[operator] };\n\n return flowObj;\n}\n\n// export const mockedPinFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.PIN,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('pin')\n// }\n// }\n// };\n\n// export const mockedMoFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('mo')\n// }\n// }\n// };\n\n// export const mockedUssdFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.USSD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('ussd')\n// }\n// }\n// };\n\n// export const mockedMoRdirFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO_REDIR,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('moRedir')\n// }\n// }\n// };\n\n// export const mockedClick2smsFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CLICK2SMS,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('click2sms')\n// }\n// }\n// };\n\n// export const mockedOneClickFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.ONE_CLICK,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('oneClick')\n// }\n// }\n// };\n\n// export const mockedCreditCardFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CREDIT_CARD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('creditCard')\n// }\n// }\n// };\n// export const mockedMOFlow : State = { type: \"MO\", result:moFlow(mockTracker, mockConfig(\"mo\"))}\n// export const mockedOneClickFlow : State = { type: \"ONECLICK\", result:oneClickFlow(mockTracker, mockConfig(\"oneClick\"), {\"testextraparams\":\"1\"})}\n// export const mockedClick2smsFlow : State = { type: \"CLICK2SMS\", result:click2smsFlow(mockTracker, mockConfig(\"click2sms\"))}\n// export const mockedMORedirFlow : State = { type: \"MOREDIR\", result:moRedirFlow(mockTracker, mockConfig(\"moRedir\"))}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\n\nimport {\n IDENTIFYMSISDNEntryErrorTypes,\n IFlow,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn } from '../main';\n\nexport const askMobileNumber = (): StrategyCurrentState => ({\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.NothingYet()\n});\n\nexport const submitMSISDNAction = createAsyncThunk(\n 'strategy/submitMSISDNAction',\n async (\n {\n window,\n msisdn\n }: {\n window: Window;\n msisdn: string;\n isHeSuccess?: boolean;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n const { strategy } = configs;\n const flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n\n switch (strategy) {\n case 'pin-mo-redir-ask-mobile-number':\n return pinMoRedirAskMobileNumber(flowObj, msisdn);\n case 'pin-mo-ask-mobile-number':\n return pinMoAskMobileNumber(flowObj, msisdn);\n case 'pin-combo-ask-mobile-number':\n return pinComboAskMobileNumber(flowObj, msisdn);\n case 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn':\n return moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn(flowObj, msisdn);\n case 'pin-mo-mo-redir-ask-mobile-number':\n return pinMoMoRedirAskMobileNumber(flowObj, msisdn);\n case 'pin-click2sms-ask-mobile-number':\n return pinClick2smsAskMobileNumber(flowObj, msisdn);\n default:\n return rejectWithValue('Unknown strategy');\n }\n } catch (ex) {\n let errorType: IDENTIFYMSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'SEAlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'SEInvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n return rejectWithValue({\n errorType,\n error: ex,\n productUrl: ex.productUrl\n });\n }\n }\n);\n\nexport const headerEnrichmentScript = (flowObj: IFlow, msisdn: string, isHeaderEnrichmentSuccess: boolean) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nexport const pinMoAskMobileNumber = (flowObj: IFlow, msisdn: string) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nexport const pinComboAskMobileNumber = (flowObj: IFlow, msisdn: string) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nconst pinMoRedirAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n\nconst pinMoMoRedirAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars-experimental\nconst oneClickMoPinDetectOperatorByIpOrMsisdn = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'oneClick':\n tracker.sendOptInFlowEvent('3G click');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n rockman_id: flowObj.rockman_id\n }\n };\n }\n};\n\nexport const moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn = (\n flowObj: IFlow,\n msisdn: string\n): StrategyCurrentState => {\n switch (flowObj.flowOnWifi) {\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n default:\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n rockman_id: flowObj.rockman_id\n }\n };\n }\n};\nexport const pinClick2smsAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\n\nimport { PossibleTypes, StrategyCurrentState } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, getOperators } from '../main';\n\nexport const askOperator = (): StrategyCurrentState => {\n const configs = getConfig();\n const operators = getOperators({ configs });\n return {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.NothingYet(),\n data: {\n operators\n }\n };\n};\n\nexport const selectOperatorAction = createAsyncThunk(\n 'strategy/selectOperatorAction',\n async (\n {\n operator\n }: {\n operator: string;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n\n const flowObj = determineFlowByOperator({\n configs,\n operator\n });\n\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: {\n config: flowObj.flowConfig,\n operator\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: {\n config: flowObj.flowConfig,\n operator\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: {\n config: {\n operators: [operator],\n ...flowObj.flowConfig\n },\n operator\n }\n };\n case 'oneClick':\n tracker.sendOptInFlowEvent('3G click');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: {\n config: flowObj.flowConfig,\n operator,\n autoRedirect: true\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet()\n };\n }\n } catch (ex) {\n const errorType = 'UnkownError';\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n }\n);\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategyNames } 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';\n\nconst detectOperatorByIp = async (strategy?: IStrategyNames) => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n\n if (!flowObj.flow && strategy === 'all-flows-detect-operator-by-ip-or-ask-mobile-number') {\n return askMobileNumber();\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 console.error('error', ex);\n }\n};\n\nexport { detectOperatorByIp };\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IConfig, IFlow, IScriptHeaderEnrichmentSuccess, PossibleTypes } 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) => ({\n type: 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 if (detail?.msisdn) {\n heMsisdn = formatNumberToE164(detail.msisdn, country);\n window.msisdn = heMsisdn;\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 = () => {\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(createResponseObject(config));\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 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 = () => {\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 });\n window.dispatchEvent(new Event('he-fail'));\n };\n } catch (err) {\n console.error('Error in header enrichment:', err);\n resolve(createResponseObject(config));\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 PossibleTypes,\n RootState,\n StrategyCurrentState,\n StrategyState\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../utilities/getConfig';\nimport { determineFlowByOperator } from './main';\nimport { askMobileNumber, submitMSISDNAction } from './strategies/askMobileNumber';\nimport { askOperator, selectOperatorAction } from './strategies/askOperator';\n\nimport { tracker } from '../../utilities/tracker';\nimport { detectOperatorByIp } from './strategies/detectOperatorByIp';\nimport { handleHeaderEnrichment } from './strategies/headerEnrichment';\nimport { injectHeaderEnrichmentScript } from './strategies/injectHeaderEnrichmentScript';\n\nconst initialState: StrategyState = {\n currentState: {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.NothingYet(),\n data: undefined\n }\n};\n\nconst mockStrategyStateByUrlParam = (): StrategyCurrentState => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n\n if (search['mock-flow'] !== undefined) {\n if (search.operator !== undefined) {\n window.operator = search.operator;\n }\n\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 (\n (search['show-pin-entry'] && search['show-pin-entry'] === '1') ||\n (search['show-thank-you'] && search['show-thank-you'] === '1')\n ) {\n const flowObj = determineFlowByOperator({\n configs,\n operator: search.operator\n });\n const strategyResult: StrategyCurrentState = {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: flowObj?.flowConfig || strategyConfigs?.default?.flowConfig\n }\n };\n return strategyResult;\n }\n\n if (strategy.includes('ask-operator')) {\n return askOperator();\n }\n if (strategy.includes('detect-operator-by-ip')) {\n return detectOperatorByIp(strategy);\n }\n if (strategy?.includes('ask-mobile-number')) {\n return askMobileNumber();\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 }\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 }\n };\n case 'mo-redir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'one-click':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\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 }\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 }\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 }\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","import * as RDS from '../../../common-types/RemoteDataState';\n\nimport { ISupportedFlows } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { searchToObject } from '../../../utilities/searchToObject';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getHeaderEnrichmentResult, getTrackerEventName } from '../main';\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 search = searchToObject(window) as { operator: string; msisdn: string };\n const isHeaderEnrichmentSuccess = search?.msisdn && search?.msisdn !== '';\n\n if (!search?.operator) {\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: search?.operator || null,\n msisdn: search?.msisdn || null,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n let subscription_url = null;\n let redirect_url = null;\n const flowObj = await determineFlowByOperator({\n operator: search?.operator,\n configs\n });\n const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n if (flowType === 'oneClick') {\n const heResult = await getHeaderEnrichmentResult();\n if (heResult?.msisdn !== '') {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', { msisdn: heResult?.msisdn });\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 }\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"],"names":["PossibleTypes","countryToPhoneCode","AE","BH","CI","SN","KW","AT","CZ","OM","PK","PE","formatNumberToE164","number","isoCountryCode","phoneCode","toUpperCase","Error","cleanNumber","replace","startsWith","concat","identify","_a","window","slug","country","msisdn","device","offer","rockmanId","languageCode","locationHref","encodeURIComponent","location","href","host","DEV_BASE_URL","urlParams","URLSearchParams","action","offerId","rockman_id","page","language_code","toString","url","fetch","_b","sent","json","flowMapping","mo","MO","pin","PIN","oneClick","ONE_CLICK","moRedir","MO_REDIR","click2sms","CLICK2SMS","ussd","USSD","tpayHe","TPAY_HE","creditCard","CREDIT_CARD","trackerEventMapping","getTrackerEventName","flowType","determineFlowByMsidn","internationalMSISDN","configs","submissionError","type","match","join","defaultFlowConfig","_c","strategyConfigs","default","config","flowConfig","operatorsConfig","_d","operators","indentifyFlow","__awaiter","_this","pac_analytics","visitor","theResult","_f","flow","operator","cannotDetect","success","message","hlrError","_e","indexOf","__assign","determineFlowByOperator","determineFlowByOperatorFromIp","tryGetIPRangeName","includes","askMobileNumber","IDENTIFY_FLOW_BY_MSISDN","result","RDS.NothingYet","submitMSISDNAction","createAsyncThunk","rejectWithValue","getConfig","strategy","flowObj","pinMoRedirAskMobileNumber","pinMoAskMobileNumber","pinComboAskMobileNumber","moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn","pinMoMoRedirAskMobileNumber","pinClick2smsAskMobileNumber","errorType","ex_1","error","productUrl","tracker","sendOptInFlowEvent","data","flowOnWifi","askOperator","Object","keys","getOperators","IDENTIFY_FLOW_BY_OPERATOR_SELECT","selectOperatorAction","autoRedirect","ex","detectOperatorByIp","event_1","console","createResponseObject","injectHeaderEnrichmentScript","enableScriptTimer","Promise","resolve","heMsisdn_1","heMsisdn","country_1","timerId_1","msisdnDetected_1","timerExpired_1","setTimeout","customEvent","isPrelanderClicked","RDS.Success","onSuccess_1","event","detail","clearTimeout","operator_code","removeEventListener","onFail_1","headerEnrichmentScript","addEventListener","heScriptUrl","dispatchEvent","Event","script","document","createElement","id","src","referrerPolicy","head","appendChild","onerror","err","isHeaderEnrichmentSuccess","defaultConfig","defaultFlowType","initialState","currentState","IDENTIFY_STRATEGY","undefined","mockStrategyStateByUrlParam","search","searchToObject","subscription_url","identifyStrategy","redirect_url","searchObj","decodedUrl","atob","newUrl","URL","get","heResult","_j","_g","_h","setStrategyExtraData","strategyReducer","createSlice","name","reducers","extraReducers","builder","addCase","pending","state","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","reducer"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
|
|
2
|
-
import { C as CreditCardFlowState } from './CreditCardTypes-
|
|
2
|
+
import { C as CreditCardFlowState } from './CreditCardTypes-CyluWBTE.js';
|
|
3
3
|
import { e as MoRedirFlowState } from './MoRedirTypes-4tEJjT1g.js';
|
|
4
4
|
import { d as MoFlowState } from './MoTypes-D-UK92gs.js';
|
|
5
5
|
import { O as OneClickFlowState } from './OneClickTypes-CgHVbYo3.js';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { V as LOAD_OC2SMSState, W as Click2smsFlowState, j as IHash, X as IWithMultiKeywordShortcode, Y as Click2smsFlowCurrentState } from './StrategyTypes-
|
|
2
|
-
export { a5 as ICheckSubscriptionResult, a2 as IClick2smsConfig, a6 as IFetchResult, a1 as IKeywordShortcode, _ as ILOADOC2SMSFailure, $ as ILOADOC2SMSSuccess, a0 as ILoadOc2click2smsPayload, Z as MSISDNEntryErrorTypes, a4 as MultiOperatorSubmissionResult, a3 as SingleSubmissionResult } from './StrategyTypes-
|
|
1
|
+
import { V as LOAD_OC2SMSState, W as Click2smsFlowState, j as IHash, X as IWithMultiKeywordShortcode, Y as Click2smsFlowCurrentState } from './StrategyTypes-CbcYtzvr.js';
|
|
2
|
+
export { a5 as ICheckSubscriptionResult, a2 as IClick2smsConfig, a6 as IFetchResult, a1 as IKeywordShortcode, _ as ILOADOC2SMSFailure, $ as ILOADOC2SMSSuccess, a0 as ILoadOc2click2smsPayload, Z as MSISDNEntryErrorTypes, a4 as MultiOperatorSubmissionResult, a3 as SingleSubmissionResult } from './StrategyTypes-CbcYtzvr.js';
|
|
3
3
|
import * as redux from 'redux';
|
|
4
4
|
import * as _reduxjs_toolkit from '@reduxjs/toolkit';
|
|
5
5
|
import * as _reduxjs_toolkit_dist_createAsyncThunk from '@reduxjs/toolkit/dist/createAsyncThunk';
|
|
6
6
|
import { useSelector } from 'react-redux';
|
|
7
7
|
import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
|
|
8
|
-
import './CreditCardTypes-
|
|
8
|
+
import './CreditCardTypes-CyluWBTE.js';
|
|
9
9
|
import './MoRedirTypes-4tEJjT1g.js';
|
|
10
10
|
import './MoTypes-D-UK92gs.js';
|
|
11
11
|
import './OneClickTypes-CgHVbYo3.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { U as USERDETAILSEntryState, S as SubmitUserDetailsFailure, C as CreditCardFlowState, I as IUserDetails, a as IUserDetailsEcardon, b as SubmitUserDetailsSuccess, c as CreditCardFlowCurrentState } from './CreditCardTypes-
|
|
2
|
-
export { d as IEmailPasswordSubmissionResult, g as IMockCreditCardFlowStates, f as IUserDetailsSubmissionResult, e as SubmitUserDetailsErrorTypes } from './CreditCardTypes-
|
|
1
|
+
import { U as USERDETAILSEntryState, S as SubmitUserDetailsFailure, C as CreditCardFlowState, I as IUserDetails, a as IUserDetailsEcardon, b as SubmitUserDetailsSuccess, c as CreditCardFlowCurrentState } from './CreditCardTypes-CyluWBTE.js';
|
|
2
|
+
export { d as IEmailPasswordSubmissionResult, g as IMockCreditCardFlowStates, f as IUserDetailsSubmissionResult, e as SubmitUserDetailsErrorTypes } from './CreditCardTypes-CyluWBTE.js';
|
|
3
3
|
import * as _reduxjs_toolkit from '@reduxjs/toolkit';
|
|
4
4
|
import * as redux from 'redux';
|
|
5
5
|
import { useSelector } from 'react-redux';
|
|
@@ -34,7 +34,7 @@ declare type IStrategy = {
|
|
|
34
34
|
};
|
|
35
35
|
enableScriptTimer?: boolean;
|
|
36
36
|
};
|
|
37
|
-
declare type IStrategyNames = 'pin' | 'mo' | 'mo-redir' | 'click2sms' | 'one-click' | 'ussd' | 'tpay-he' | 'credit-card' | 'tallyman-one-click' | 'pin-mo-ask-operator' | 'pin-mo-ask-mobile-number' | 'pin-one-click-ask-operator' | 'pin-one-click-detect-operator-by-ip' | 'one-click-mo-pin-detect-operator-by-ip-or-msisdn' | 'pin-click2sms-ask-operator' | 'mo-redir-one-click-detect-operator-by-ip' | 'pin-mo-redir-ask-mobile-number' | 'pin-click2sms-ask-mobile-number' | 'mo-one-click-detect-operator-by-ip' | 'click2sms-one-click-detect-operator-by-ip' | 'pin-header-enrichment' | 'pin-msisdn-fowarding-pin-header-enrichment' | 'he-pin-mo-redir-header-enrichment' | 'he-pin-one-click-header-enrichment' | 'he-pin-one-click-ask-operator' | 'click2sms-one-click-ask-operator' | 'pin-mo-detect-operator-by-ip' | 'he-mo-redir-one-click-header-enrichment' | 'pin-combo-ask-mobile-number' | 'header-enrichment-script' | 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn' | 'pin-mo-mo-redir-ask-mobile-number';
|
|
37
|
+
declare type IStrategyNames = 'pin' | 'mo' | 'mo-redir' | 'click2sms' | 'one-click' | 'ussd' | 'tpay-he' | 'credit-card' | 'tallyman-one-click' | 'pin-mo-ask-operator' | 'pin-mo-ask-mobile-number' | 'pin-one-click-ask-operator' | 'pin-one-click-detect-operator-by-ip' | 'one-click-mo-pin-detect-operator-by-ip-or-msisdn' | 'pin-click2sms-ask-operator' | 'mo-redir-one-click-detect-operator-by-ip' | 'pin-mo-redir-ask-mobile-number' | 'pin-click2sms-ask-mobile-number' | 'mo-one-click-detect-operator-by-ip' | 'click2sms-one-click-detect-operator-by-ip' | 'pin-header-enrichment' | 'pin-msisdn-fowarding-pin-header-enrichment' | 'he-pin-mo-redir-header-enrichment' | 'he-pin-one-click-header-enrichment' | 'he-pin-one-click-ask-operator' | 'click2sms-one-click-ask-operator' | 'pin-mo-detect-operator-by-ip' | 'he-mo-redir-one-click-header-enrichment' | 'pin-combo-ask-mobile-number' | 'header-enrichment-script' | 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn' | 'pin-mo-mo-redir-ask-mobile-number' | 'pin-click2sms-ask-mobile-number' | 'all-flows-detect-operator-by-ip-or-ask-mobile-number';
|
|
38
38
|
|
|
39
39
|
declare function setConfig(userConfig: IStrategy): void;
|
|
40
40
|
declare function getConfig(): IStrategy;
|
package/dist/types/strategy.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
|
|
2
2
|
export { a as RDS } from './RemoteDataState-D1aFrz8W.js';
|
|
3
|
-
import { S as StrategyCurrentState, I as IDENTIFYMSISDNEntryFailure, a as IDENTIFYMSISDNEntrySuccess, P as PossibleTypes, C as ConfigDetails, b as StrategyState } from './StrategyTypes-
|
|
4
|
-
export { R as ExtraStrategyData, H as HEResult, d as IConfig, t as IDENTIFYFailure, k as IDENTIFYMSISDNEntryErrorTypes, u as IDENTIFYSuccess, q as IDENTIFY_FLOW_HESuccess, p as IDENTIFY_OPERATOR_MSISDNEntrySuccess, n as IDETECTYOPERATOBYIPFailure, o as IDETECTYOPERATOBYIPSuccess, w as IDetectOperatorByIpPayload, f as IFlow, j as IHash, E as IIdentfyFlowByIPOperatorNextAction, B as IIdentfyFlowByMsisdnNextAction, D as IIdentfyFlowByOperatorNextAction, A as IIdentifyFlowByHePayload, z as IIdentifyFlowByIpOperatorPayload, c as IIdentifyResult, G as IIdenyifyFlowByMsisdnPayload, F as IIdenyifyFlowByMsisdnSumbitNextData, J as IIdenyifyStrategyPayload, N as IMockFlowParams, M as IMockFlows, T as IMockPinFlowStates, v as IOperatorSelectFlowIdentifyPayload, x as IOperatorSelectPayload, Q as IScriptHeaderEnrichmentSuccess, h as IStrategy, K as IStrategyCurrentState, L as IStrategyIDentifyUserResult, i as IStrategyNames, y as ISubmitMsisdnPayload, e as ISupportedFlows, l as IdentifyFlowOptionsResult, O as OPERATORSelectFailure, r as OPERATORSelectFlowIdentifyFailure, s as OPERATORSelectFlowIdentifySuccess, m as OPERATORSelectSuccess, U as RootState, g as StrategyConfig } from './StrategyTypes-
|
|
3
|
+
import { S as StrategyCurrentState, I as IDENTIFYMSISDNEntryFailure, a as IDENTIFYMSISDNEntrySuccess, P as PossibleTypes, C as ConfigDetails, b as StrategyState } from './StrategyTypes-CbcYtzvr.js';
|
|
4
|
+
export { R as ExtraStrategyData, H as HEResult, d as IConfig, t as IDENTIFYFailure, k as IDENTIFYMSISDNEntryErrorTypes, u as IDENTIFYSuccess, q as IDENTIFY_FLOW_HESuccess, p as IDENTIFY_OPERATOR_MSISDNEntrySuccess, n as IDETECTYOPERATOBYIPFailure, o as IDETECTYOPERATOBYIPSuccess, w as IDetectOperatorByIpPayload, f as IFlow, j as IHash, E as IIdentfyFlowByIPOperatorNextAction, B as IIdentfyFlowByMsisdnNextAction, D as IIdentfyFlowByOperatorNextAction, A as IIdentifyFlowByHePayload, z as IIdentifyFlowByIpOperatorPayload, c as IIdentifyResult, G as IIdenyifyFlowByMsisdnPayload, F as IIdenyifyFlowByMsisdnSumbitNextData, J as IIdenyifyStrategyPayload, N as IMockFlowParams, M as IMockFlows, T as IMockPinFlowStates, v as IOperatorSelectFlowIdentifyPayload, x as IOperatorSelectPayload, Q as IScriptHeaderEnrichmentSuccess, h as IStrategy, K as IStrategyCurrentState, L as IStrategyIDentifyUserResult, i as IStrategyNames, y as ISubmitMsisdnPayload, e as ISupportedFlows, l as IdentifyFlowOptionsResult, O as OPERATORSelectFailure, r as OPERATORSelectFlowIdentifyFailure, s as OPERATORSelectFlowIdentifySuccess, m as OPERATORSelectSuccess, U as RootState, g as StrategyConfig } from './StrategyTypes-CbcYtzvr.js';
|
|
5
5
|
import { useSelector } from 'react-redux';
|
|
6
6
|
import * as _reduxjs_toolkit from '@reduxjs/toolkit';
|
|
7
7
|
import * as _reduxjs_toolkit_dist_createAsyncThunk from '@reduxjs/toolkit/dist/createAsyncThunk';
|
|
8
8
|
import * as redux from 'redux';
|
|
9
|
-
import './CreditCardTypes-
|
|
9
|
+
import './CreditCardTypes-CyluWBTE.js';
|
|
10
10
|
import './MoRedirTypes-4tEJjT1g.js';
|
|
11
11
|
import './MoTypes-D-UK92gs.js';
|
|
12
12
|
import './OneClickTypes-CgHVbYo3.js';
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{__awaiter as e,__generator as t,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as r}from"@reduxjs/toolkit";import{N as i,S as s,L as a,F as l}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{getConfig as u}from"./getConfig.js";import{t as c}from"./tryGetIPRangeName-QW-9NgzE.js";import{t as f}from"./tracker-DaaILhEr.js";var p;!function(e){e.IDENTIFY_STRATEGY="IDENTIFY_STRATEGY",e.IDENTIFY_FLOW_BY_MSISDN="IDENTIFY_FLOW_BY_MSISDN",e.IDENTIFY_FLOW_BY_OPERATOR_SELECT="IDENTIFY_FLOW_BY_OPERATOR_SELECT",e.PIN="PIN",e.MO="MO",e.MO_REDIR="MO_REDIR",e.ONE_CLICK="ONE_CLICK",e.CLICK2SMS="CLICK2SMS",e.USSD="USSD",e.TPAY_HE="TPAY_HE",e.CREDIT_CARD="CREDIT_CARD"}(p||(p={}));var v={AE:"971",BH:"973",CI:"225",SN:"221",KW:"965",AT:"43",CZ:"420",OM:"968",PK:"92",PE:"51"},w=function(e,t){var n=v[null==t?void 0:t.toUpperCase()];if(!n)throw new Error("Phone code not found for country code: ".concat(t));var o=e.replace(/\D/g,"");return o.startsWith(n)?"".concat(o):"".concat(n).concat(o)},m=function(n){var o=n.window,r=n.slug,i=n.country,s=n.msisdn,a=n.device,l=n.offer,d=n.rockmanId;return e(void 0,void 0,void 0,(function(){var e,n,u,c,f;return t(this,(function(t){switch(t.label){case 0:return e=o.languageCode?"&language_code=".concat(o.languageCode):"",n=encodeURIComponent(o.location.href),u=o.DEV_BASE_URL||"",c=new URLSearchParams({action:"identify",slug:r,country:i,msisdn:s,device:a,offerId:l,rockman_id:d,page:n,language_code:e}).toString(),f="".concat(u,"/tallyman/v1/?").concat(c),[4,fetch(f)];case 1:return[2,t.sent().json()]}}))}))},g={mo:p.MO,pin:p.PIN,oneClick:p.ONE_CLICK,moRedir:p.MO_REDIR,click2sms:p.CLICK2SMS,ussd:p.USSD,tpayHe:p.TPAY_HE,creditCard:p.CREDIT_CARD},E={mo:"Msisdn to sms",pin:"Pin",oneClick:"3G click",moRedir:"Redirect",click2sms:"Click to sms",tpayHe:"Pin",ussd:"Msisdn to sms"},y=function(e){return E[e]};function I(o){var r,i,s,a,l=o.window,d=o.internationalMSISDN,u=o.configs;return e(this,void 0,void 0,(function(){var o,c,f,p,v,w,g,E,y,I,C=this;return t(this,(function(S){switch(S.label){case 0:if(!d)throw(I=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",I;return o=(null===(r=d.match(/\d+/gi))||void 0===r?void 0:r.join(""))||"",c=null===(i=null==u?void 0:u.strategyConfigs)||void 0===i?void 0:i.default,f=c.flowConfig,p=null===(s=null==u?void 0:u.strategyConfigs)||void 0===s?void 0:s.operators,v=function(){return e(C,void 0,void 0,(function(){var e,n,r,i,s;return t(this,(function(t){switch(t.label){case 0:return e=f.slug,n=f.country,r=f.device,i=l.pac_analytics.visitor.rockmanId,s=l.pac_analytics.visitor.offer,[4,m({window:l,slug:e,country:n,msisdn:o,device:r,offer:s,rockmanId:i})];case 1:return[2,t.sent()]}}))}))},[4,v()];case 1:if(w=S.sent(),g=p[w.operator]?p[w.operator]:null,E=!1===w.success&&"Operator could not be found for the given MSISDN"===w.message,y=!1===w.success&&-1!==(null===(a=w.message)||void 0===a?void 0:a.indexOf("HLR did not find the operator for given MSISDN")),E||y)throw(I=new Error("Error in submitMSISDN() identify action")).type="FlowDetectFailed",I.msisdn=o,I;if(null!==g)return[2,n({operator:w.operator,default:c},g)];if(null===g)return[2,n({operator:w.operator},c)];throw(I=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",I}}))}))}function C(e){var t,o,r=e.configs,i=e.operator,s=null===(t=null==r?void 0:r.strategyConfigs)||void 0===t?void 0:t.default,a=null===(o=null==r?void 0:r.strategyConfigs)||void 0===o?void 0:o.operators;return n({operator:null==i?void 0:i.toUpperCase(),default:s},a[null==i?void 0:i.toUpperCase()])}function S(n){var o=n.window,r=n.configs;return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){switch(t.label){case 0:return[4,c(o.pac_analytics.visitor)];case 1:return e=t.sent(),[2,C({configs:r,operator:e?e.toUpperCase():""})]}}))}))}var h=o("strategy/submitMSISDNAction",(function(n,o){var r=n.window,i=n.msisdn,s=o.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,n,o,a,l;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),n=e.strategy,[4,I({window:r,internationalMSISDN:i,configs:e})];case 1:switch(o=t.sent(),n){case"pin-mo-redir-ask-mobile-number":return[2,F(o,i)];case"pin-mo-ask-mobile-number":return[2,_(o,i)];case"pin-combo-ask-mobile-number":return[2,O(o,i)];case"mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn":return[2,D(o,i)];case"pin-mo-mo-redir-ask-mobile-number":return[2,R(o,i)];case"pin-click2sms-ask-mobile-number":return[2,N(o,i)];default:return[2,s("Unknown strategy")]}case 2:switch(a=t.sent(),l=void 0,a.type){case"SEAlreadySubscribed":l="AlreadySubscribed";break;case"SEInvalidMSISDN":l="InvalidMSISDN";break;default:l="UnknownError"}return[2,s({errorType:l,error:a,productUrl:a.productUrl})];case 3:return[2]}}))}))})),_=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:p.MO,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})};default:return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:n({config:e.flowConfig},e.operator&&{operator:e.operator})}}},O=function(e,t){return"pin"===e.flow?(f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:n({config:e.flowConfig,msisdn:t},e.operator&&{operator:e.operator})}):(f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:n({config:e.flowConfig},e.operator&&{operator:e.operator})})},F=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:p.MO_REDIR,result:i(),data:{config:e.flowConfig}};default:return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig}}}},R=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:p.MO_REDIR,result:i(),data:{config:e.flowConfig,msisdn:t}};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:p.MO,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig}}}},D=function(e,t){switch(e.flowOnWifi){case"moRedir":return f.sendOptInFlowEvent("Redirect"),{type:p.MO_REDIR,result:i(),data:{config:e.flowConfig,msisdn:t}};case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),{type:p.MO,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Redirect"),{type:p.MO_REDIR,result:i(),data:{config:e.flowConfig,rockman_id:e.rockman_id}}}},N=function(e,t){switch(e.flow){case"pin":return f.sendOptInFlowEvent("Pin"),{type:p.PIN,result:i(),data:{config:e.flowConfig,msisdn:t}};case"click2sms":return f.sendOptInFlowEvent("Click to sms"),{type:p.CLICK2SMS,result:i(),data:{config:e.flowConfig,msisdn:t}};default:return f.sendOptInFlowEvent("Pin"),{type:p.CLICK2SMS,result:i(),data:{config:e.flowConfig}}}},T=function(){var e=function(e){var t,n=e.configs,o=null===(t=null==n?void 0:n.strategyConfigs)||void 0===t?void 0:t.operators;return Object.keys(o)}({configs:u()});return{type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:i(),data:{operators:e}}},M=o("strategy/selectOperatorAction",(function(o,r){var s=o.operator,a=r.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,o;return t(this,(function(t){try{switch(e=u(),(o=C({configs:e,operator:s})).flow){case"pin":return f.sendOptInFlowEvent("Pin"),[2,{type:p.PIN,result:{config:o.flowConfig,operator:s}}];case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),[2,{type:p.MO,result:{config:o.flowConfig,operator:s}}];case"click2sms":return f.sendOptInFlowEvent("Click to sms"),[2,{type:p.CLICK2SMS,result:{config:n({operators:[s]},o.flowConfig),operator:s}}];case"oneClick":return f.sendOptInFlowEvent("3G click"),[2,{type:p.ONE_CLICK,result:{config:o.flowConfig,operator:s,autoRedirect:!0}}];default:return f.sendOptInFlowEvent("Pin"),[2,{type:p.PIN,result:i()}]}}catch(e){return"UnkownError",[2,a({errorType:"UnkownError",error:e.toString()})]}return[2]}))}))})),P=function(e){return{type:p.PIN,result:i(),data:{config:e}}},k=function(n){var o=n.window;return e(void 0,void 0,void 0,(function(){var e,n,r,i,a;return t(this,(function(t){return e=u(),n=null==e?void 0:e.enableScriptTimer,r=e.strategyConfigs,i=null===(a=null==r?void 0:r.default)||void 0===a?void 0:a.flowConfig,[2,new Promise((function(e){var t,a,l,d;try{var c=null===(a=null===(t=null==o?void 0:o.pac_analytics)||void 0===t?void 0:t.visitor)||void 0===a?void 0:a.heMsisdn,v=null===(d=null===(l=null==o?void 0:o.pac_analytics)||void 0===l?void 0:l.visitor)||void 0===d?void 0:d.country;c&&v&&(c=w(c,v));var m,g=!1,E=!1;n&&(m=setTimeout((function(){var t;g||(E=!0,f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"3 second timer expired"}),o.isPrelanderClicked=!0,e({type:p.PIN,result:s({}),data:{config:null===(t=null==r?void 0:r.default)||void 0===t?void 0:t.flowConfig}}))}),3e3));var y=function(t){var r=t.detail;if((null==r?void 0:r.msisdn)&&(c=w(r.msisdn,v),o.msisdn=c),n){if(!E){g=!0,clearTimeout(m),f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c});var i=C({configs:u(),operator:null==r?void 0:r.operator_code});o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(b(i,c,null==r?void 0:r.operator_code,!0))}}else{f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c,operator:null==r?void 0:r.operator_code});i=C({configs:u(),operator:null==r?void 0:r.operator_code});o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(b(i,c,null==r?void 0:r.operator_code,!0))}},I=function(){o.removeEventListener("he-success",y),o.removeEventListener("he-fail",I),e(P(i))};if(o.addEventListener("he-success",y),o.addEventListener("he-fail",I),!(null==o?void 0:o.heScriptUrl))return f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error he script url not set"}),void o.dispatchEvent(new Event("he-fail"));var S=document.createElement("script");S.type="text/javascript",S.id="he-js-link",S.src="".concat(o.heScriptUrl),S.referrerPolicy="origin",document.head.appendChild(S),S.onerror=function(){console.error("Error loading Header Enrichment script."),f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error loading Header Enrichment script."}),o.dispatchEvent(new Event("he-fail"))}}catch(t){console.error("Error in header enrichment:",t),e(P(i))}}))]}))}))},b=function(e,t,n,o){var r,s;void 0===t&&(t=null),void 0===n&&(n=null);var a=null===(r=u().strategyConfigs)||void 0===r?void 0:r.default,l=null==a?void 0:a.flow,d=e.flow||(null===(s=e.default)||void 0===s?void 0:s.flow),c=y(d);return f.sendOptInFlowEvent(c),e.flow?{type:g[d],result:i(),data:{config:e.flowConfig,operator:e.operator,isHeaderEnrichmentSuccess:o}}:{type:g[l],result:i(),data:{config:null==a?void 0:a.flowConfig,operator:n,msisdn:t,isHeaderEnrichmentSuccess:o}}},L={currentState:{type:p.IDENTIFY_STRATEGY,result:i(),data:void 0}},Y=function(){var e=d(window);if(void 0!==e["mock-flow"])switch(void 0!==e.operator&&(window.operator=e.operator),e["mock-flow"]){case"pin":return{type:p.PIN,result:s({})};case"mo":return{type:p.MO,result:s({})};case"moredir":return{type:p.MO_REDIR,result:s({})};case"oneclick":return{type:p.ONE_CLICK,result:s({}),data:{subscription_url:e["subscription-url"]}};case"click2sms":return{type:p.CLICK2SMS,result:s({})};case"ussd":return{type:p.USSD,result:s({})};case"creditcard":return{type:p.CREDIT_CARD,result:s({})};default:throw new Error("(mockStrategyStateByUrlParam) Strategy Mock Flow not supported")}},U=o("strategy/identifyStrategy",(function(){return e(void 0,void 0,void 0,(function(){var n,o,r,a,l,c,v,m,E,I,h,_,O;return t(this,(function(F){switch(F.label){case 0:return n=u(),o=n.strategy,r=n.strategyConfigs,void 0!==(a=d(window))["mock-flow"]?[2,Y()]:a["show-pin-entry"]&&"1"===a["show-pin-entry"]||a["show-thank-you"]&&"1"===a["show-thank-you"]?(l=C({configs:n,operator:a.operator}),[2,{type:p.PIN,result:s({}),data:{config:(null==l?void 0:l.flowConfig)||(null===(c=null==r?void 0:r.default)||void 0===c?void 0:c.flowConfig)}}]):o.includes("ask-operator")?[2,T()]:o.includes("detect-operator-by-ip")?[2,e(void 0,void 0,void 0,(function(){var e,n,o,r,s;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),[4,S({window:window,configs:e})];case 1:return n=t.sent(),o=n.flow,r=y(o),f.sendOptInFlowEvent(r),[2,{type:g[o],result:i(),data:{config:n.flowConfig,operator:n.operator}}];case 2:return s=t.sent(),console.error("error",s),[3,3];case 3:return[2]}}))}))]:(null==o?void 0:o.includes("ask-mobile-number"))?[2,{type:p.IDENTIFY_FLOW_BY_MSISDN,result:i()}]:(null==o?void 0:o.includes("header-enrichment"))&&"header-enrichment-script"!==o?[4,e(void 0,void 0,void 0,(function(){var n,o,r,s,a,l,c,p,v,m,E,I;return t(this,(function(S){switch(S.label){case 0:n=u(),o=null==n?void 0:n.strategyConfigs.default,r=o.flow,S.label=1;case 1:return S.trys.push([1,5,,6]),s=d(window),a=(null==s?void 0:s.msisdn)&&""!==(null==s?void 0:s.msisdn),(null==s?void 0:s.operator)?"pin-header-enrichment"===n.strategy&&a?[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig,operator:(null==s?void 0:s.operator)||null,msisdn:(null==s?void 0:s.msisdn)||null,isHeaderEnrichmentSuccess:a}}]:(l=null,c=null,[4,C({operator:null==s?void 0:s.operator,configs:n})]):[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 2:return p=S.sent(),v=p.flow||r,m=y(v),f.sendOptInFlowEvent(m),"oneClick"!==v?[3,4]:[4,e(void 0,void 0,void 0,(function(){var e,n,o,r,i,s,a,l,u;return t(this,(function(t){if("undefined"==typeof window)throw new Error("This function can only be run in a browser environment.");if("false"===(e=d(window)).success)throw new Error("Error in getRedirectUrl() identify-user action:\n".concat(e.message||"NotOn3g"));if(!(n=e.subscription_url||e.redirect_url))throw new Error("No URL provided for redirection");return o=window.atob(n),r=new URL(o),i=new URLSearchParams(r.search),s=i.get("msisdn")||e.msisdn,a=i.get("operator")||e.operator,s&&(s=w(s,null===(u=null===(l=null===window||void 0===window?void 0:window.pac_analytics)||void 0===l?void 0:l.visitor)||void 0===u?void 0:u.country)),[2,{msisdn:s||"",operator:a||"",subscription_url:e.subscription_url?o:void 0,redirect_url:e.redirect_url?o:void 0}]}))}))];case 3:""!==(null==(E=S.sent())?void 0:E.msisdn)&&f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:null==E?void 0:E.msisdn}),l=(null==E?void 0:E.subscription_url)||null,c=(null==E?void 0:E.redirect_url)||null,S.label=4;case 4:return[2,{type:g[v],result:i(),data:{config:p.flowConfig,operator:p.operator,subscription_url:l||null,redirect_url:c||null,isHeaderEnrichmentSuccess:a}}];case 5:return I=S.sent(),console.error("error",I),[2,{type:g[r],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 6:return[2]}}))}))]:[3,2];case 1:return[2,F.sent()];case 2:switch(o){case"header-enrichment-script":return[2,k({window:window})];case"pin":return f.sendOptInFlowEvent("Pin"),[2,{type:p.PIN,result:s({}),data:{config:null===(v=null==r?void 0:r.default)||void 0===v?void 0:v.flowConfig}}];case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),[2,{type:p.MO,result:s({}),data:{config:null===(m=null==r?void 0:r.default)||void 0===m?void 0:m.flowConfig}}];case"mo-redir":return[2,{type:p.MO_REDIR,result:s({}),data:{config:null===(E=null==r?void 0:r.default)||void 0===E?void 0:E.flowConfig}}];case"one-click":return f.sendOptInFlowEvent("Redirect"),[2,{type:p.ONE_CLICK,result:s({}),data:{config:null===(I=null==r?void 0:r.default)||void 0===I?void 0:I.flowConfig}}];case"click2sms":return f.sendOptInFlowEvent("Click to sms"),[2,{type:p.CLICK2SMS,result:s({}),data:{config:null===(h=null==r?void 0:r.default)||void 0===h?void 0:h.flowConfig}}];case"ussd":return f.sendOptInFlowEvent("USSD"),[2,{type:p.USSD,result:s({}),data:{config:null===(_=null==r?void 0:r.default)||void 0===_?void 0:_.flowConfig}}];case"credit-card":return f.sendOptInFlowEvent("Credit card"),[2,{type:p.CREDIT_CARD,result:s({}),data:{config:null===(O=null==r?void 0:r.default)||void 0===O?void 0:O.flowConfig}}];default:throw new Error("Strategy not supported")}}}))}))})),A=o("strategy/setStrategyExtraData",(function(n){var o=n.type,r=n.data;return e(void 0,void 0,void 0,(function(){return t(this,(function(e){return[2,{type:o,result:i(),data:r}]}))}))})),j=r({name:"strategy",initialState:L,reducers:{},extraReducers:function(e){e.addCase(U.pending,(function(e){e.currentState={type:p.IDENTIFY_STRATEGY,result:a()}})).addCase(U.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(U.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_STRATEGY,result:l(t.error.message)}})).addCase(h.pending,(function(e){e.currentState={type:p.IDENTIFY_FLOW_BY_MSISDN,result:a()}})).addCase(h.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(h.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_FLOW_BY_MSISDN,result:l(t.payload)}})).addCase(A.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(M.pending,(function(e){e.currentState={type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:a()}})).addCase(M.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(M.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:l(t.payload)}}))}}).reducer;export{p as P,M as a,j as b,A as c,U as i,h as s};
|
|
2
|
-
//# sourceMappingURL=strategySlice-DpsjdF6a.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strategySlice-DpsjdF6a.js","sources":["../src/sharedFlowTypes/StrategyTypes.ts","../src/utilities/formatNumberToE164.ts","../src/flows/strategy/api.ts","../src/flows/strategy/main.ts","../src/flows/strategy/strategies/askMobileNumber.ts","../src/flows/strategy/strategies/askOperator.ts","../src/flows/strategy/strategies/injectHeaderEnrichmentScript.ts","../src/flows/strategy/strategySlice.ts","../src/flows/strategy/strategies/detectOperatorByIp.ts","../src/flows/strategy/strategies/headerEnrichment.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable camelcase */\nimport * as RDS from '../common-types/RemoteDataState';\nimport { Click2smsFlowState } from './Click2smsTypes';\nimport { CreditCardFlowState } from './CreditCardTypes';\nimport { MoRedirFlowState } from './MoRedirTypes';\nimport { MoFlowState } from './MoTypes';\nimport { OneClickFlowState } from './OneClickTypes';\nimport { PinFlowState } from './PinTypes';\nimport { UssdFlowState } from './UssdTypes';\n\nexport type IIdentifyResult = {\n operator: string;\n flow?: string;\n success: boolean;\n rockman_id?: string;\n message?: string;\n};\n\nexport 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 type IStrategyNames =\n | 'pin'\n | 'mo'\n | 'mo-redir'\n | 'click2sms'\n | 'one-click'\n | 'ussd'\n | 'tpay-he'\n | 'credit-card'\n | 'tallyman-one-click'\n | 'pin-mo-ask-operator'\n | 'pin-mo-ask-mobile-number'\n | 'pin-one-click-ask-operator'\n | 'pin-one-click-detect-operator-by-ip'\n | 'one-click-mo-pin-detect-operator-by-ip-or-msisdn'\n | 'pin-click2sms-ask-operator'\n | 'mo-redir-one-click-detect-operator-by-ip'\n | 'pin-mo-redir-ask-mobile-number'\n | 'pin-click2sms-ask-mobile-number'\n | 'mo-one-click-detect-operator-by-ip'\n | 'click2sms-one-click-detect-operator-by-ip'\n | 'pin-header-enrichment'\n | 'pin-msisdn-fowarding-pin-header-enrichment'\n | 'he-pin-mo-redir-header-enrichment'\n | 'he-pin-one-click-header-enrichment'\n | 'he-pin-one-click-ask-operator'\n | 'click2sms-one-click-ask-operator'\n | 'pin-mo-detect-operator-by-ip'\n | 'he-mo-redir-one-click-header-enrichment'\n | 'pin-combo-ask-mobile-number'\n | 'header-enrichment-script'\n | 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn'\n | 'pin-mo-mo-redir-ask-mobile-number';\n\nexport interface IHash {\n [key: string]: string;\n}\n\nexport type IDENTIFYMSISDNEntryErrorTypes = 'AlreadySubscribed' | 'UnknownError' | 'InvalidMSISDN';\n\nexport type IDENTIFYMSISDNEntryFailure = {\n errorType: IDENTIFYMSISDNEntryErrorTypes;\n error: unknown;\n};\n\nexport type IdentifyFlowOptionsResult = {\n config: IConfig;\n nextAction?: unknown;\n msisdn?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n rockman_id?: string;\n isHeaderEnrichmentSuccess?: boolean;\n autoRedirect?: boolean;\n isUseMsisdnPrefix?: boolean;\n};\n\nexport type IDENTIFYMSISDNEntrySuccess = {};\nexport type OPERATORSelectFailure = {};\nexport type OPERATORSelectSuccess = IdentifyFlowOptionsResult;\n\nexport type IDETECTYOPERATOBYIPFailure = {};\nexport type IDETECTYOPERATOBYIPSuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_OPERATOR_MSISDNEntrySuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_FLOW_HESuccess = IdentifyFlowOptionsResult;\n\nexport type OPERATORSelectFlowIdentifyFailure = {};\nexport type OPERATORSelectFlowIdentifySuccess = {\n operators: Array<string>;\n msisdn?: string;\n nextAction: 'selectOperator';\n};\nexport type IDENTIFYFailure = {};\n\nexport type IDENTIFYSuccess = {};\n\nexport type IOperatorSelectFlowIdentifyPayload = {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFlowIdentifyFailure, OPERATORSelectFlowIdentifySuccess>;\n};\n\n// export type IIdentifyByIPPayload= {\n// type:\"IDENTIFY_FLOW_BY_IP\"\n// result: RDS.RemoteDataState<IDENTIFYBYIPFailure, IDENTIFYBYIPSuccess>;\n// }\n\nexport type IDetectOperatorByIpPayload = {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n};\n\nexport enum PossibleTypes {\n IDENTIFY_STRATEGY = 'IDENTIFY_STRATEGY',\n IDENTIFY_FLOW_BY_MSISDN = 'IDENTIFY_FLOW_BY_MSISDN',\n IDENTIFY_FLOW_BY_OPERATOR_SELECT = 'IDENTIFY_FLOW_BY_OPERATOR_SELECT',\n PIN = 'PIN',\n MO = 'MO',\n MO_REDIR = 'MO_REDIR',\n ONE_CLICK = 'ONE_CLICK',\n CLICK2SMS = 'CLICK2SMS',\n USSD = 'USSD',\n TPAY_HE = 'TPAY_HE',\n CREDIT_CARD = 'CREDIT_CARD'\n}\n\nexport type IOperatorSelectPayload = {\n type: PossibleTypes;\n result: OPERATORSelectSuccess;\n};\n\nexport type ISubmitMsisdnPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByIpOperatorPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByHePayload = {\n type: PossibleTypes;\n result: IDENTIFY_FLOW_HESuccess;\n};\n\nexport type IIdentfyFlowByMsisdnNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByOperatorNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByIPOperatorNextAction = 'getRedirectUrlAction' | 'submitMSISDNAction';\n\nexport type IIdenyifyFlowByMsisdnSumbitNextData = {\n nextAction: IIdentfyFlowByMsisdnNextAction;\n msisdn?: string;\n operator?: string;\n};\n\nexport type IIdenyifyFlowByMsisdnPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IIdenyifyStrategyPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IStrategyCurrentState =\n | {\n type: 'IDENTIFY_STRATEGY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: OPERATORSelectFlowIdentifySuccess;\n }\n | {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n }\n | {\n type: 'HE_IDENTIFY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFailure, OPERATORSelectSuccess>;\n config: IConfig;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n nextData: IIdenyifyFlowByMsisdnSumbitNextData;\n }\n | {\n type: 'PIN';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'USSD';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO_REDIR';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'ONE_CLICK';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CLICK2SMS';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'TPAY_HE';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CREDIT_CARD';\n result: IdentifyFlowOptionsResult;\n };\n\nexport type IStrategyIDentifyUserResult =\n | {\n success: 'true';\n rockman_id: string;\n msisdn: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n 'redirect-back'?: string;\n 'msisdn-alias'?: string;\n }\n | {\n success: 'false';\n rockman_id: string;\n message: string;\n 'redirect-back'?: string;\n };\n\nexport type IMockFlows = 'pin' | 'mo' | 'oneclick' | 'click2sms' | 'moredir' | 'ussd' | 'tpay' | 'creditcard';\n\nexport interface IMockFlowParams<T> {\n 'mock-flow': IMockFlows;\n 'current-state': T;\n 'show-pin-entry': '1' | '0';\n 'show-thank-you': '1' | '0';\n operator: string;\n msisdn?: string;\n 'subscription-url'?: string;\n show_custom_error?: string;\n product_url?: string;\n}\n\nexport interface IScriptHeaderEnrichmentSuccess extends CustomEvent {\n detail: {\n msisdn: string;\n operator_code: string;\n };\n}\n\nexport interface ExtraStrategyData {\n isHeaderEnrichmentSuccess?: boolean;\n config?: ConfigDetails;\n msisdn?: string;\n rockman_id?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n operators?: string[];\n}\nexport interface StrategyState {\n currentState: StrategyCurrentState;\n}\n\nexport interface StrategyCurrentState {\n type: PossibleTypes;\n result: RDS.RemoteDataState<any, any>;\n data?: ExtraStrategyData;\n}\n\nexport type IMockPinFlowStates = 'msisdn-state' | 'pin-state' | 'completed-state' | 'msisdn-failure-state';\n\nexport interface RootState {\n strategy?: StrategyState;\n pinFlow?: PinFlowState;\n moFlow?: MoFlowState;\n moRedirFlow?: MoRedirFlowState;\n click2smsFlow?: Click2smsFlowState;\n oneClickFlow?: OneClickFlowState;\n ussdFlow?: UssdFlowState;\n creditCardFlow?: CreditCardFlowState;\n}\n","const countryToPhoneCode: Record<string, string> = {\n AE: '971', // United Arab Emirates\n BH: '973', // Bahrain\n CI: '225', // Côte d'Ivoire (Ivory Coast)\n SN: '221', // Senegal\n KW: '965', // Kuwait\n AT: '43', // Austria\n CZ: '420', // Czech Republic\n OM: '968', // Oman\n PK: '92', // Pakistan\n PE: '51' // Peru\n};\n\n/**\n * Formats a phone number to E.164 format.\n *\n * @param {string} number - The phone number to format.\n * @param {string} isoCountryCode - The ISO country code of the phone number.\n * @return {string} The formatted phone number in E.164 format.\n */\nexport const formatNumberToE164 = (number: string, isoCountryCode: string) => {\n const phoneCode = countryToPhoneCode[isoCountryCode?.toUpperCase()];\n if (!phoneCode) {\n throw new Error(`Phone code not found for country code: ${isoCountryCode}`);\n }\n\n const cleanNumber = number.replace(/\\D/g, '');\n if (!cleanNumber.startsWith(phoneCode)) {\n return `${phoneCode}${cleanNumber}`;\n }\n return `${cleanNumber}`;\n};\n","import { IIdentifyResult, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\n\nconst fetchJsonp: <T>({ window, _url }: { window: Window; _url: string }) => Promise<T> = ({\n window,\n _url\n}: {\n window: Window;\n _url: string;\n}) => {\n let url = _url;\n const ouisys_callback_function = `ouisys_callback_function${Math.floor(Math.random() * 10000)}`;\n return new Promise((resolve, reject) => {\n (window as any)[ouisys_callback_function] = (arg: any) => {\n resolve(arg);\n };\n\n url += url.indexOf('?') === -1 ? '?' : '&';\n url += `jsonp=${ouisys_callback_function}`;\n const script = document.createElement('script');\n script.src = url;\n script.id = ouisys_callback_function;\n document.body.appendChild(script);\n\n // Caught if got 404/500\n script.onerror = () => {\n reject(new Error(`JSONP request to ${_url} failed`));\n };\n });\n};\nconst identify = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn: string;\n device: string;\n offer: string;\n rockmanId: string;\n}): Promise<IIdentifyResult> => {\n const languageCode = window.languageCode ? `&language_code=${window.languageCode}` : '';\n const locationHref = encodeURIComponent(window.location.href);\n\n const host = (window as Window).DEV_BASE_URL || '';\n\n const params = {\n action: 'identify',\n slug,\n country,\n msisdn,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n page: locationHref,\n language_code: languageCode\n };\n\n const urlParams = new URLSearchParams(params).toString();\n const url = `${host}/tallyman/v1/?${urlParams}`;\n\n const response = await fetch(url);\n return response.json();\n};\n\nconst identifyUserGetSubscriptionUrl = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n extraParamsQs = '',\n search = ''\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParamsQs?: string;\n search?: string;\n}): Promise<IStrategyIDentifyUserResult> => {\n const xaid = window.pac_analytics.visitor.xaid || '';\n const locationHref = encodeURIComponent(window.location.href);\n const pixelUrl = encodeURIComponent(\n `http://${window.location.host}/pixels?xcid=${window.location.pathname.replace(\n '/',\n ''\n )}&xaid=${xaid}&country=${bupperizeCountry(country)}`\n );\n\n const params = {\n action: 'identify-user',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n page: locationHref,\n pixel_url: pixelUrl,\n rockman_id: rockmanId,\n extraParamsQs,\n search\n };\n\n const urlParams = new URLSearchParams(params).toString();\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${urlParams}`;\n\n const response = await fetchJsonp<IStrategyIDentifyUserResult>({\n window,\n _url: url\n });\n return response;\n};\n\nexport { identify, identifyUserGetSubscriptionUrl };\n","import { 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 submitMSISDN() identify action`) as IError;\n submissionError.type = 'SEInvalidMSISDN';\n throw submissionError;\n }\n const msisdn = internationalMSISDN.match(/\\d+/gi)?.join('') || ''; // tallyman API expects international msisdn without unknown special character\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const config = defaultFlowConfig.flowConfig;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n\n const indentifyFlow = async (): Promise<IIdentifyResult> => {\n const { slug, country, device } = config;\n const { rockmanId } = window.pac_analytics.visitor;\n const { offer } = window.pac_analytics.visitor;\n const flowOperatorResult: IIdentifyResult = await identify({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId\n });\n return flowOperatorResult;\n };\n const theResult = await indentifyFlow();\n\n const flow = operatorsConfig[theResult.operator] ? operatorsConfig[theResult.operator] : null;\n const cannotDetect =\n theResult.success === false && theResult.message === 'Operator could not be found for the given MSISDN';\n const hlrError =\n theResult.success === false && theResult.message?.indexOf('HLR did not find the operator for given MSISDN') !== -1;\n\n if (cannotDetect || hlrError) {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError & { msisdn: string };\n submissionError.type = 'FlowDetectFailed';\n submissionError.msisdn = msisdn;\n throw submissionError;\n } else if (flow !== null) {\n const flowObj = { operator: theResult.operator, default: defaultFlowConfig, ...flow };\n // @ts-ignore\n return flowObj;\n } else if (flow === null) {\n const flowObj = { operator: theResult.operator, ...defaultFlowConfig };\n // @ts-ignore\n return flowObj;\n } else {\n const submissionError = new Error(`Error in submitMSISDN() identify action`) as IError;\n submissionError.type = 'SEInvalidMSISDN';\n throw submissionError;\n }\n}\n\nexport function determineFlowByOperator({ configs, operator }: { configs: IStrategy; operator: string }): IFlow {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n\n const flowObj = {\n operator: operator?.toUpperCase(),\n default: defaultFlowConfig,\n ...operatorsConfig[operator?.toUpperCase()]\n };\n // @ts-ignore\n return flowObj;\n}\n\nexport async function determineFlowByOperatorFromIp({\n window,\n configs\n}: {\n window: Window;\n configs: IStrategy;\n}): Promise<IFlow> {\n const operator = await tryGetIPRangeName(window.pac_analytics.visitor);\n const flowObj = determineFlowByOperator({\n configs,\n operator: operator ? operator.toUpperCase() : ''\n });\n return flowObj;\n}\n\nexport function getOperators({ configs }: { configs: IStrategy }): Array<string> {\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const operators = Object.keys(operatorsConfig);\n return operators;\n}\n\nexport const 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 url = searchObj.subscription_url || searchObj.redirect_url;\n if (!url) {\n throw new Error('No URL provided for redirection');\n }\n\n const decodedUrl = window.atob(url);\n const newUrl = new URL(decodedUrl);\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 subscription_url: searchObj.subscription_url ? decodedUrl : undefined,\n redirect_url: searchObj.redirect_url ? decodedUrl : undefined\n };\n};\n\nexport const subscribe: (_url: string) => Promise<string> = async (_url: string) =>\n // const result:ISubscribeResult = await fetch(url + \"&operator=kw_viva\").then((x)=>x.json())\n\n // if(false === result.success){\n // const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as IError & {type:string;}\n // subscribeError['type'] = \"SubscriptionError\";\n // throw subscribeError\n // }else{\n '/product';\n// }\n\nexport function mockConfig({ configs, flow }: { configs: IStrategy; flow: string }): IConfig {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const opArr = Object.keys(operatorsConfig);\n const r = opArr.filter((o) => operatorsConfig[o].flow === flow);\n const operator = r[0];\n const flowObj = { offer: '1', operator, default: defaultFlowConfig, ...operatorsConfig[operator] };\n\n return flowObj;\n}\n\n// export const mockedPinFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.PIN,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('pin')\n// }\n// }\n// };\n\n// export const mockedMoFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('mo')\n// }\n// }\n// };\n\n// export const mockedUssdFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.USSD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('ussd')\n// }\n// }\n// };\n\n// export const mockedMoRdirFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO_REDIR,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('moRedir')\n// }\n// }\n// };\n\n// export const mockedClick2smsFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CLICK2SMS,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('click2sms')\n// }\n// }\n// };\n\n// export const mockedOneClickFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.ONE_CLICK,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('oneClick')\n// }\n// }\n// };\n\n// export const mockedCreditCardFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CREDIT_CARD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('creditCard')\n// }\n// }\n// };\n// export const mockedMOFlow : State = { type: \"MO\", result:moFlow(mockTracker, mockConfig(\"mo\"))}\n// export const mockedOneClickFlow : State = { type: \"ONECLICK\", result:oneClickFlow(mockTracker, mockConfig(\"oneClick\"), {\"testextraparams\":\"1\"})}\n// export const mockedClick2smsFlow : State = { type: \"CLICK2SMS\", result:click2smsFlow(mockTracker, mockConfig(\"click2sms\"))}\n// export const mockedMORedirFlow : State = { type: \"MOREDIR\", result:moRedirFlow(mockTracker, mockConfig(\"moRedir\"))}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\n\nimport {\n IDENTIFYMSISDNEntryErrorTypes,\n IFlow,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn } from '../main';\n\nexport const askMobileNumber = (): StrategyCurrentState => ({\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.NothingYet()\n});\n\nexport const submitMSISDNAction = createAsyncThunk(\n 'strategy/submitMSISDNAction',\n async (\n {\n window,\n msisdn\n }: {\n window: Window;\n msisdn: string;\n isHeSuccess?: boolean;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n const { strategy } = configs;\n const flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n\n switch (strategy) {\n case 'pin-mo-redir-ask-mobile-number':\n return pinMoRedirAskMobileNumber(flowObj, msisdn);\n case 'pin-mo-ask-mobile-number':\n return pinMoAskMobileNumber(flowObj, msisdn);\n case 'pin-combo-ask-mobile-number':\n return pinComboAskMobileNumber(flowObj, msisdn);\n case 'mo-redir-mo-click2sms-one-click-detect-operator-by-ip-or-msisdn':\n return moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn(flowObj, msisdn);\n case 'pin-mo-mo-redir-ask-mobile-number':\n return pinMoMoRedirAskMobileNumber(flowObj, msisdn);\n case 'pin-click2sms-ask-mobile-number':\n return pinClick2smsAskMobileNumber(flowObj, msisdn);\n default:\n return rejectWithValue('Unknown strategy');\n }\n } catch (ex) {\n let errorType: IDENTIFYMSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'SEAlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'SEInvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n return rejectWithValue({\n errorType,\n error: ex,\n productUrl: ex.productUrl\n });\n }\n }\n);\n\nexport const headerEnrichmentScript = (flowObj: IFlow, msisdn: string, isHeaderEnrichmentSuccess: boolean) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nexport const pinMoAskMobileNumber = (flowObj: IFlow, msisdn: string) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nexport const pinComboAskMobileNumber = (flowObj: IFlow, msisdn: string) => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n ...(flowObj.operator && { operator: flowObj.operator })\n }\n };\n }\n};\n\nconst pinMoRedirAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n\nconst pinMoMoRedirAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars-experimental\nconst oneClickMoPinDetectOperatorByIpOrMsisdn = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'oneClick':\n tracker.sendOptInFlowEvent('3G click');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n rockman_id: flowObj.rockman_id\n }\n };\n }\n};\n\nexport const moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn = (\n flowObj: IFlow,\n msisdn: string\n): StrategyCurrentState => {\n switch (flowObj.flowOnWifi) {\n case 'moRedir':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n default:\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n rockman_id: flowObj.rockman_id\n }\n };\n }\n};\nexport const pinClick2smsAskMobileNumber = (flowObj: IFlow, msisdn: string): StrategyCurrentState => {\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n msisdn\n }\n };\n\n default:\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig\n }\n };\n }\n};\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\n\nimport { PossibleTypes, StrategyCurrentState } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, getOperators } from '../main';\n\nexport const askOperator = (): StrategyCurrentState => {\n const configs = getConfig();\n const operators = getOperators({ configs });\n return {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.NothingYet(),\n data: {\n operators\n }\n };\n};\n\nexport const selectOperatorAction = createAsyncThunk(\n 'strategy/selectOperatorAction',\n async (\n {\n operator\n }: {\n operator: string;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n\n const flowObj = determineFlowByOperator({\n configs,\n operator\n });\n\n switch (flowObj.flow) {\n case 'pin':\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: {\n config: flowObj.flowConfig,\n operator\n }\n };\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: {\n config: flowObj.flowConfig,\n operator\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: {\n config: {\n operators: [operator],\n ...flowObj.flowConfig\n },\n operator\n }\n };\n case 'oneClick':\n tracker.sendOptInFlowEvent('3G click');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: {\n config: flowObj.flowConfig,\n operator,\n autoRedirect: true\n }\n };\n default:\n tracker.sendOptInFlowEvent('Pin');\n\n return {\n type: PossibleTypes.PIN,\n result: RDS.NothingYet()\n };\n }\n } catch (ex) {\n const errorType = 'UnkownError';\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n }\n);\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IConfig, IFlow, IScriptHeaderEnrichmentSuccess, PossibleTypes } 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) => ({\n type: 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 if (detail?.msisdn) {\n heMsisdn = formatNumberToE164(detail.msisdn, country);\n window.msisdn = heMsisdn;\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 = () => {\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(createResponseObject(config));\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 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 = () => {\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 });\n window.dispatchEvent(new Event('he-fail'));\n };\n } catch (err) {\n console.error('Error in header enrichment:', err);\n resolve(createResponseObject(config));\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 PossibleTypes,\n RootState,\n StrategyCurrentState,\n StrategyState\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../utilities/getConfig';\nimport { determineFlowByOperator } from './main';\nimport { askMobileNumber, submitMSISDNAction } from './strategies/askMobileNumber';\nimport { askOperator, selectOperatorAction } from './strategies/askOperator';\n\nimport { tracker } from '../../utilities/tracker';\nimport { detectOperatorByIp } from './strategies/detectOperatorByIp';\nimport { handleHeaderEnrichment } from './strategies/headerEnrichment';\nimport { injectHeaderEnrichmentScript } from './strategies/injectHeaderEnrichmentScript';\n\nconst initialState: StrategyState = {\n currentState: {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.NothingYet(),\n data: undefined\n }\n};\n\nconst mockStrategyStateByUrlParam = (): StrategyCurrentState => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n\n if (search['mock-flow'] !== undefined) {\n if (search.operator !== undefined) {\n window.operator = search.operator;\n }\n\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 (\n (search['show-pin-entry'] && search['show-pin-entry'] === '1') ||\n (search['show-thank-you'] && search['show-thank-you'] === '1')\n ) {\n const flowObj = determineFlowByOperator({\n configs,\n operator: search.operator\n });\n const strategyResult: StrategyCurrentState = {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: flowObj?.flowConfig || strategyConfigs?.default?.flowConfig\n }\n };\n return strategyResult;\n }\n\n if (strategy.includes('ask-operator')) {\n return askOperator();\n }\n if (strategy.includes('detect-operator-by-ip')) {\n return detectOperatorByIp();\n }\n if (strategy?.includes('ask-mobile-number')) {\n return askMobileNumber();\n }\n\n 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 }\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 }\n };\n case 'mo-redir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n };\n case 'one-click':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\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 }\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 }\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 }\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","import * as RDS from '../../../common-types/RemoteDataState';\n\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp, flowMapping, getTrackerEventName } from '../main';\n\nconst detectOperatorByIp = async () => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\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 console.error('error', ex);\n }\n};\n\nexport { detectOperatorByIp };\n","import * as RDS from '../../../common-types/RemoteDataState';\n\nimport { ISupportedFlows } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { searchToObject } from '../../../utilities/searchToObject';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getHeaderEnrichmentResult, getTrackerEventName } from '../main';\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 search = searchToObject(window) as { operator: string; msisdn: string };\n const isHeaderEnrichmentSuccess = search?.msisdn && search?.msisdn !== '';\n\n if (!search?.operator) {\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: search?.operator || null,\n msisdn: search?.msisdn || null,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n let subscription_url = null;\n let redirect_url = null;\n const flowObj = await determineFlowByOperator({\n operator: search?.operator,\n configs\n });\n const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n if (flowType === 'oneClick') {\n const heResult = await getHeaderEnrichmentResult();\n if (heResult?.msisdn !== '') {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', { msisdn: heResult?.msisdn });\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 }\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"],"names":["PossibleTypes","countryToPhoneCode","AE","BH","CI","SN","KW","AT","CZ","OM","PK","PE","formatNumberToE164","number","isoCountryCode","phoneCode","toUpperCase","Error","cleanNumber","replace","startsWith","concat","identify","_a","window","slug","country","msisdn","device","offer","rockmanId","languageCode","locationHref","encodeURIComponent","location","href","host","DEV_BASE_URL","urlParams","URLSearchParams","action","offerId","rockman_id","page","language_code","toString","url","fetch","_b","sent","json","flowMapping","mo","MO","pin","PIN","oneClick","ONE_CLICK","moRedir","MO_REDIR","click2sms","CLICK2SMS","ussd","USSD","tpayHe","TPAY_HE","creditCard","CREDIT_CARD","trackerEventMapping","getTrackerEventName","flowType","determineFlowByMsidn","internationalMSISDN","configs","submissionError","type","match","join","defaultFlowConfig","_c","strategyConfigs","default","config","flowConfig","operatorsConfig","_d","operators","indentifyFlow","__awaiter","_this","pac_analytics","visitor","theResult","_f","flow","operator","cannotDetect","success","message","hlrError","_e","indexOf","__assign","determineFlowByOperator","determineFlowByOperatorFromIp","tryGetIPRangeName","submitMSISDNAction","createAsyncThunk","rejectWithValue","getConfig","strategy","flowObj","pinMoRedirAskMobileNumber","pinMoAskMobileNumber","pinComboAskMobileNumber","moRedirMoClick2smsOneClickDetectOperatorByIpOrMsisdn","pinMoMoRedirAskMobileNumber","pinClick2smsAskMobileNumber","errorType","ex_1","error","productUrl","tracker","sendOptInFlowEvent","result","RDS.NothingYet","data","flowOnWifi","askOperator","Object","keys","getOperators","IDENTIFY_FLOW_BY_OPERATOR_SELECT","selectOperatorAction","autoRedirect","ex","createResponseObject","injectHeaderEnrichmentScript","enableScriptTimer","Promise","resolve","heMsisdn_1","heMsisdn","country_1","timerId_1","msisdnDetected_1","timerExpired_1","setTimeout","customEvent","isPrelanderClicked","RDS.Success","onSuccess_1","event","detail","clearTimeout","operator_code","removeEventListener","onFail_1","headerEnrichmentScript","addEventListener","heScriptUrl","dispatchEvent","Event","script","document","createElement","id","src","referrerPolicy","head","appendChild","onerror","console","err","isHeaderEnrichmentSuccess","defaultConfig","defaultFlowType","initialState","currentState","IDENTIFY_STRATEGY","undefined","mockStrategyStateByUrlParam","search","searchToObject","subscription_url","identifyStrategy","includes","event_1","IDENTIFY_FLOW_BY_MSISDN","redirect_url","searchObj","decodedUrl","atob","newUrl","URL","get","heResult","_j","_g","_h","setStrategyExtraData","strategyReducer","createSlice","name","reducers","extraReducers","builder","addCase","pending","state","RDS.Loading","fulfilled","payload","rejected","RDS.Failure","reducer"],"mappings":"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"}
|