ouisys-engine 5.0.84 → 5.0.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/moFlow.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__awaiter as t,__generator as r,__read as e,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as a}from"@reduxjs/toolkit";import{S as i,L as s,F as c,N as u}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{c as f}from"./cleanSearchParams-Dl7ZDlew.js";import{i as v}from"./strategySlice-CwiREA17.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-Bd0VHMHJ.js";var p=function(t){return t((function(t){return t.moFlow.currentState}))};function y(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var S=function(n){var o=n.window,a=n.slug,i=n.country,s=n.msisdn,c=n.device,u=n.offer,d=n.rockmanId,l=n.extraParamsQs,m=n.search;return t(void 0,void 0,void 0,(function(){var t,n,v,p,y,S,h;return r(this,(function(r){switch(r.label){case 0:return o.api_ajax_url?[4,fetch(o.api_ajax_url).then((function(t){return t.json()}))]:[3,2];case 1:return n=r.sent(),[3,3];case 2:n=null,r.label=3;case 3:return t=n,m=f(m),v={action:"trigger-message",slug:a,country:i,msisdn:s,device:c,offerId:u,rockman_id:d,page:encodeURIComponent(null===(h=null==o?void 0:o.location)||void 0===h?void 0:h.href),sam_g_token:o.reCaptchaToken||"",language_code:o.languageCode||"",partner_form_action:(null==t?void 0:t.form_action)?encodeURIComponent(null==t?void 0:t.form_action):"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||""},p=Object.entries(v).filter((function(t){var r=e(t,2);return r[0],r[1]})).map((function(t){var r=e(t,2),n=r[0],o=r[1];return"".concat(n,"=").concat(o)})).join("&"),y=o.DEV_BASE_URL||"",S="".concat(y,"/tallyman/v1/?").concat(p).concat(m?"&".concat(m):"","&").concat(l),[2,fetch(S).then((function(t){return t.json()}))]}}))}))};function h(e,o,a,i){var s,c;return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=n(n({},o||{}),{offer:null===(c=null===(s=e.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===c?void 0:c.offer}),[2,w(e,t,a,i)]}))}))}function w(e,o,a,i){var s;return t(this,void 0,void 0,(function(){var t,c,u,d,l,m,f,v,p,y,h;return r(this,(function(r){switch(r.label){case 0:return t=o.slug,c=o.country,u=o.device,d=o.offer,l=e.location.search.substr(1)||"",m=i?"&".concat(Object.keys(i).map((function(t){return"".concat(t,"=").concat(i[t])})).join("&")):"",f=(null===(s=a.match(/\d+/gi))||void 0===s?void 0:s.join(""))||"",v=e.pac_analytics.visitor.rockmanId,[4,S({window:e,slug:t,country:c,msisdn:f,device:u,offer:d,rockmanId:v,search:l,extraParamsQs:m})];case 1:if(!1===(p=r.sent()).success)throw y="ALREADY SUBSCRIBED"===p.message?"AlreadySubscribed":"InvalidMSISDN",(h=new Error("".concat(y,":\n").concat(p.message))).type=y,h.productUrl=p.product_url?p.product_url:"",console.error(h),h;return[2,n(n({},p),{keyword:p.displayKeyword})]}}))}))}var _={currentState:{type:"MSISDNEntry",result:i({keyword:"TEST OK",shortcode:"777"})}},b={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},I={currentState:{type:"MSISDNEntry",result:u()}},g=function(t){var r=d(t);if(!r["mock-flow"])return I;switch(r["current-state"]){case"msisdn-entry-failure-state":return b;case"msisdn-entry-success-state":return _;default:return console.error("Mock Flow not supported"),I}}(window),j=o("moFlow/submitMSISDNAction",(function(e,o){var a=e.window,s=e.msisdn,c=e.extraParams,u=o.getState,d=o.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,o,f,v,p,y,S;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(S=null===(y=null===(p=null==t?void 0:t.strategy)||void 0===p?void 0:p.currentState)||void 0===y?void 0:y.data)||void 0===S?void 0:S.config))return[2,d({errorType:"UnexpectedState"})];e=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:s}),[4,h(a,e,s,c)];case 2:return o=r.sent(),m.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:s}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,l(s).then((function(t){t&&t.data&&t.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){m.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:i(n({},o))}];case 5:switch(f=r.sent(),console.warn(f),v=void 0,f.type){case"AlreadySubscribed":v="AlreadySubscribed";break;case"InvalidMSISDN":v="InvalidMSISDN";break;default:v="UnknownError"}return m.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:s,errorType:v||"UnknownError"}),[2,d({errorType:v,productUrl:f.productUrl})];case 6:return[2]}}))}))})),k=o("moFlow/backToStartAction",(function(e,n){var o=n.dispatch,a=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){return r(this,(function(t){try{m.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),o(v())}catch(t){return console.warn(t),[2,a({errorType:"UnexpectedState"})]}return[2]}))}))})),E=a({name:"moFlow",initialState:g,reducers:{},extraReducers:function(t){t.addCase(j.pending,(function(t){t.currentState={type:"MSISDNEntry",result:s()}})).addCase(j.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(j.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),M=E.reducer;E.actions;export{k as backToStartAction,y as moFlowMatch,M as moFlowReducer,j as submitMSISDNAction,p as useMoFlowState};
1
+ import{__awaiter as t,__generator as r,__read as e,__assign as n}from"tslib";import{createAsyncThunk as o,createSlice as a}from"@reduxjs/toolkit";import{S as i,L as s,F as c,N as u}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{c as f}from"./cleanSearchParams-Dl7ZDlew.js";import{i as v}from"./strategySlice-DuYLxEUR.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-Bd0VHMHJ.js";var p=function(t){return t((function(t){return t.moFlow.currentState}))};function y(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var S=function(n){var o=n.window,a=n.slug,i=n.country,s=n.msisdn,c=n.device,u=n.offer,d=n.rockmanId,l=n.extraParamsQs,m=n.search;return t(void 0,void 0,void 0,(function(){var t,n,v,p,y,S,h;return r(this,(function(r){switch(r.label){case 0:return o.api_ajax_url?[4,fetch(o.api_ajax_url).then((function(t){return t.json()}))]:[3,2];case 1:return n=r.sent(),[3,3];case 2:n=null,r.label=3;case 3:return t=n,m=f(m),v={action:"trigger-message",slug:a,country:i,msisdn:s,device:c,offerId:u,rockman_id:d,page:encodeURIComponent(null===(h=null==o?void 0:o.location)||void 0===h?void 0:h.href),sam_g_token:o.reCaptchaToken||"",language_code:o.languageCode||"",partner_form_action:(null==t?void 0:t.form_action)?encodeURIComponent(null==t?void 0:t.form_action):"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||""},p=Object.entries(v).filter((function(t){var r=e(t,2);return r[0],r[1]})).map((function(t){var r=e(t,2),n=r[0],o=r[1];return"".concat(n,"=").concat(o)})).join("&"),y=o.DEV_BASE_URL||"",S="".concat(y,"/tallyman/v1/?").concat(p).concat(m?"&".concat(m):"","&").concat(l),[2,fetch(S).then((function(t){return t.json()}))]}}))}))};function h(e,o,a,i){var s,c;return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=n(n({},o||{}),{offer:null===(c=null===(s=e.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===c?void 0:c.offer}),[2,w(e,t,a,i)]}))}))}function w(e,o,a,i){var s;return t(this,void 0,void 0,(function(){var t,c,u,d,l,m,f,v,p,y,h;return r(this,(function(r){switch(r.label){case 0:return t=o.slug,c=o.country,u=o.device,d=o.offer,l=e.location.search.substr(1)||"",m=i?"&".concat(Object.keys(i).map((function(t){return"".concat(t,"=").concat(i[t])})).join("&")):"",f=(null===(s=a.match(/\d+/gi))||void 0===s?void 0:s.join(""))||"",v=e.pac_analytics.visitor.rockmanId,[4,S({window:e,slug:t,country:c,msisdn:f,device:u,offer:d,rockmanId:v,search:l,extraParamsQs:m})];case 1:if(!1===(p=r.sent()).success)throw y="ALREADY SUBSCRIBED"===p.message?"AlreadySubscribed":"InvalidMSISDN",(h=new Error("".concat(y,":\n").concat(p.message))).type=y,h.productUrl=p.product_url?p.product_url:"",console.error(h),h;return[2,n(n({},p),{keyword:p.displayKeyword})]}}))}))}var _={currentState:{type:"MSISDNEntry",result:i({keyword:"TEST OK",shortcode:"777"})}},b={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},I={currentState:{type:"MSISDNEntry",result:u()}},g=function(t){var r=d(t);if(!r["mock-flow"])return I;switch(r["current-state"]){case"msisdn-entry-failure-state":return b;case"msisdn-entry-success-state":return _;default:return console.error("Mock Flow not supported"),I}}(window),j=o("moFlow/submitMSISDNAction",(function(e,o){var a=e.window,s=e.msisdn,c=e.extraParams,u=o.getState,d=o.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,e,o,f,v,p,y,S;return r(this,(function(r){switch(r.label){case 0:if(t=u(),!(null===(S=null===(y=null===(p=null==t?void 0:t.strategy)||void 0===p?void 0:p.currentState)||void 0===y?void 0:y.data)||void 0===S?void 0:S.config))return[2,d({errorType:"UnexpectedState"})];e=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-mo","msisdn-submitted",{msisdn:s}),[4,h(a,e,s,c)];case 2:return o=r.sent(),m.advancedInFlow("tallyman.v1-mo","msisdn-submission-success",{msisdn:s}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,l(s).then((function(t){t&&t.data&&t.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){m.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return[2,{type:"MSISDNEntry",result:i(n({},o))}];case 5:switch(f=r.sent(),console.warn(f),v=void 0,f.type){case"AlreadySubscribed":v="AlreadySubscribed";break;case"InvalidMSISDN":v="InvalidMSISDN";break;default:v="UnknownError"}return m.recedeInFlow("tallyman.v1-mo","msisdn-submission-failure",{msisdn:s,errorType:v||"UnknownError"}),[2,d({errorType:v,productUrl:f.productUrl})];case 6:return[2]}}))}))})),k=o("moFlow/backToStartAction",(function(e,n){var o=n.dispatch,a=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){return r(this,(function(t){try{m.recedeInFlow("tallyman.v1-mo","mo-state","requested to change phone number"),o(v())}catch(t){return console.warn(t),[2,a({errorType:"UnexpectedState"})]}return[2]}))}))})),E=a({name:"moFlow",initialState:g,reducers:{},extraReducers:function(t){t.addCase(j.pending,(function(t){t.currentState={type:"MSISDNEntry",result:s()}})).addCase(j.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(j.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),M=E.reducer;E.actions;export{k as backToStartAction,y as moFlowMatch,M as moFlowReducer,j as submitMSISDNAction,p as useMoFlowState};
2
2
  //# sourceMappingURL=moFlow.js.map
@@ -1,2 +1,2 @@
1
- import{__awaiter as r,__generator as e,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as o,L as i,F as s,N as c}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as u}from"./storeMsisdn-Cjq8_qYH.js";import{t as l}from"./tracker-DaaILhEr.js";import{t as m,i as f}from"./strategySlice-CwiREA17.js";import{c as v}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-Bd0VHMHJ.js";var p=function(r){return r((function(r){return r.moRedirFlow.currentState}))};function y(r){var e=r.msisdnEntry;return function(r){return r.type,e(r.result)}}var S=function(n){var a=n.window,o=n.slug,i=n.country,s=n.msisdn,c=n.device,d=n.offer,u=n.rockmanId,l=n.ip_range_name,m=n.search,f=n.extraParamsQs,p=n.email,y=n.password;return r(void 0,void 0,void 0,(function(){var r,n,S,w,h,_,g,I;return e(this,(function(e){return m=v(m),r=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:o,country:i,device:c,offerId:d.toString(),rockman_id:u,page:encodeURIComponent(a.location.href),antifraud_id:a.antifraud_id||"",antifraud_id_js_code:a.antifraud_id_js_code||"",antifraud_id_js_link:a.antifraud_id_js_link||"",network_type:l?"":"wifi"},(null===(_=null===(h=null===(w=a.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===h?void 0:h.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:u}),(null===(I=null===(g=a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===I?void 0:I.ip)&&{client_ip:a.pac_analytics.visitor.ip}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),p&&y?{email:p,password:y}:{msisdn:s}),f&&{extraParams:f})).toString(),n=a.DEV_BASE_URL||"",S="".concat(n,"/tallyman/v1/?").concat(r).concat(m?"&".concat(m):""),o.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:u,redirect_url:S}]:[2,fetch(S).then((function(r){return r.json()}))]}))}))};function w(n,a,o,i){return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){return r=t({offer:n.pac_analytics.visitor.offer},a||{}),[2,h(n,r,o,i)]}))}))}function h(t,n,a,o){return r(this,void 0,void 0,(function(){var r,i,s,c,d,u,l,f,v,p,y,w,h;return e(this,(function(e){switch(e.label){case 0:return r=n.slug,i=n.country,s=n.device,c=n.offer,d=t.location.search.substr(1)||"",u=o?"&".concat(Object.keys(o).map((function(r){return"".concat(r,"=").concat(o[r])})).join("&")):"",l=a.match(/\d+/gi).join(""),f=t.pac_analytics.visitor,v=f.rockmanId,"ci"!==i?[3,2]:[4,m(f)];case 1:return p=e.sent(),[3,3];case 2:p=null,e.label=3;case 3:return[4,S({window:t,slug:r,country:i,msisdn:l,device:s,offer:c,rockmanId:v,ip_range_name:p,search:d,extraParamsQs:u})];case 4:if(!1===(y=e.sent()).success)throw w="ALREADY SUBSCRIBED"===y.message?"AlreadySubscribed":"InvalidMSISDN",(h=new Error("".concat(w,":\n").concat(y.message))).type=w,console.error(h),h;return[2,y.redirect_url]}}))}))}var _={currentState:{type:"MSISDNEntry",result:o({href:"/product"})}},g={currentState:{type:"MSISDNEntry",result:s({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},I={currentState:{type:"MSISDNEntry",result:c()}},b=function(r){var e=d(r);if(!e["mock-flow"])return I;switch(e["current-state"]){case"msisdn-entry-failure-state":return g;case"msisdn-entry-success-state":return _;default:return console.error("Mock Flow not supported"),I}}(window),j=n("moRedirFlow/submitMSISDNAction",(function(t,n){var a=t.window,i=t.msisdn,s=t.extraParams,c=n.getState,d=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,m,f,v,p,y;return e(this,(function(e){switch(e.label){case 0:if(r=c(),!(null===(y=null===(p=null===(v=null==r?void 0:r.strategy)||void 0===v?void 0:v.currentState)||void 0===p?void 0:p.data)||void 0===y?void 0:y.config))return[2,d({errorType:"UnexpectedState"})];t=r.strategy.currentState.data.config,e.label=1;case 1:return e.trys.push([1,5,,6]),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submitted",{msisdn:i}),[4,w(a,t,i,s)];case 2:return n=e.sent(),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:i}),s&&s.storeMsisdn&&"true"===s.storeMsisdn?[4,u(i).then((function(r){r&&r.data&&r.data.success?l.customEvent("Flow","advance-auto","msisdn-stored-success"):l.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(r){l.customEvent("Flow","advance-auto","msisdn-stored-error",r)}))]:[3,4];case 3:e.sent(),e.label=4;case 4:return[2,{type:"MSISDNEntry",result:o({href:n})}];case 5:switch(m=e.sent(),console.warn(m),f=void 0,m.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidMSISDN":f="InvalidMSISDN";break;default:f="UnknownError"}return l.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:i,errorType:"UnknownError"}),[2,d({errorType:f,productUrl:m.productUrl})];case 6:return[2]}}))}))})),k=n("moRedirFlow/backToStartAction",(function(t,n){var a=n.dispatch,o=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){return e(this,(function(r){try{l.recedeInFlow("tallyman.v1-mo-redir","mo-redir-state","requested to change phone number"),a(f())}catch(r){return console.warn(r),[2,o({errorType:"UnexpectedState"})]}return[2]}))}))})),E=a({name:"moRedirFlow",initialState:b,reducers:{},extraReducers:function(r){r.addCase(j.pending,(function(r){r.currentState={type:"MSISDNEntry",result:i()}})).addCase(j.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(j.rejected,(function(r,e){r.currentState={type:"MSISDNEntry",result:s(e.payload)}}))}}),M=E.reducer;E.actions;export{k as backToStartAction,y as moRedirFlowMatch,M as moRedirFlowReducer,j as submitMSISDNAction,p as useMoRedirFlowState};
1
+ import{__awaiter as r,__generator as e,__assign as t}from"tslib";import{createAsyncThunk as n,createSlice as a}from"@reduxjs/toolkit";import{S as o,L as i,F as s,N as c}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{s as u}from"./storeMsisdn-Cjq8_qYH.js";import{t as l}from"./tracker-DaaILhEr.js";import{t as m,i as f}from"./strategySlice-DuYLxEUR.js";import{c as v}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-Bd0VHMHJ.js";var p=function(r){return r((function(r){return r.moRedirFlow.currentState}))};function y(r){var e=r.msisdnEntry;return function(r){return r.type,e(r.result)}}var S=function(n){var a=n.window,o=n.slug,i=n.country,s=n.msisdn,c=n.device,d=n.offer,u=n.rockmanId,l=n.ip_range_name,m=n.search,f=n.extraParamsQs,p=n.email,y=n.password;return r(void 0,void 0,void 0,(function(){var r,n,S,w,h,_,g,I;return e(this,(function(e){return m=v(m),r=new URLSearchParams(t(t(t(t(t(t({action:"redirect",slug:o,country:i,device:c,offerId:d.toString(),rockman_id:u,page:encodeURIComponent(a.location.href),antifraud_id:a.antifraud_id||"",antifraud_id_js_code:a.antifraud_id_js_code||"",antifraud_id_js_link:a.antifraud_id_js_link||"",network_type:l?"":"wifi"},(null===(_=null===(h=null===(w=a.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===h?void 0:h.page)||void 0===_?void 0:_.includes("agency"))&&{evinaTi:u}),(null===(I=null===(g=a.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===I?void 0:I.ip)&&{client_ip:a.pac_analytics.visitor.ip}),a.securityProcessId&&{securityProcessId:a.securityProcessId}),a.languageCode&&{language_code:a.languageCode}),p&&y?{email:p,password:y}:{msisdn:s}),f&&{extraParams:f})).toString(),n=a.DEV_BASE_URL||"",S="".concat(n,"/tallyman/v1/?").concat(r).concat(m?"&".concat(m):""),o.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:u,redirect_url:S}]:[2,fetch(S).then((function(r){return r.json()}))]}))}))};function w(n,a,o,i){return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){return r=t({offer:n.pac_analytics.visitor.offer},a||{}),[2,h(n,r,o,i)]}))}))}function h(t,n,a,o){return r(this,void 0,void 0,(function(){var r,i,s,c,d,u,l,f,v,p,y,w,h;return e(this,(function(e){switch(e.label){case 0:return r=n.slug,i=n.country,s=n.device,c=n.offer,d=t.location.search.substr(1)||"",u=o?"&".concat(Object.keys(o).map((function(r){return"".concat(r,"=").concat(o[r])})).join("&")):"",l=a.match(/\d+/gi).join(""),f=t.pac_analytics.visitor,v=f.rockmanId,"ci"!==i?[3,2]:[4,m(f)];case 1:return p=e.sent(),[3,3];case 2:p=null,e.label=3;case 3:return[4,S({window:t,slug:r,country:i,msisdn:l,device:s,offer:c,rockmanId:v,ip_range_name:p,search:d,extraParamsQs:u})];case 4:if(!1===(y=e.sent()).success)throw w="ALREADY SUBSCRIBED"===y.message?"AlreadySubscribed":"InvalidMSISDN",(h=new Error("".concat(w,":\n").concat(y.message))).type=w,console.error(h),h;return[2,y.redirect_url]}}))}))}var _={currentState:{type:"MSISDNEntry",result:o({href:"/product"})}},g={currentState:{type:"MSISDNEntry",result:s({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},I={currentState:{type:"MSISDNEntry",result:c()}},b=function(r){var e=d(r);if(!e["mock-flow"])return I;switch(e["current-state"]){case"msisdn-entry-failure-state":return g;case"msisdn-entry-success-state":return _;default:return console.error("Mock Flow not supported"),I}}(window),j=n("moRedirFlow/submitMSISDNAction",(function(t,n){var a=t.window,i=t.msisdn,s=t.extraParams,c=n.getState,d=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,m,f,v,p,y;return e(this,(function(e){switch(e.label){case 0:if(r=c(),!(null===(y=null===(p=null===(v=null==r?void 0:r.strategy)||void 0===v?void 0:v.currentState)||void 0===p?void 0:p.data)||void 0===y?void 0:y.config))return[2,d({errorType:"UnexpectedState"})];t=r.strategy.currentState.data.config,e.label=1;case 1:return e.trys.push([1,5,,6]),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submitted",{msisdn:i}),[4,w(a,t,i,s)];case 2:return n=e.sent(),l.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:i}),s&&s.storeMsisdn&&"true"===s.storeMsisdn?[4,u(i).then((function(r){r&&r.data&&r.data.success?l.customEvent("Flow","advance-auto","msisdn-stored-success"):l.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(r){l.customEvent("Flow","advance-auto","msisdn-stored-error",r)}))]:[3,4];case 3:e.sent(),e.label=4;case 4:return[2,{type:"MSISDNEntry",result:o({href:n})}];case 5:switch(m=e.sent(),console.warn(m),f=void 0,m.type){case"AlreadySubscribed":f="AlreadySubscribed";break;case"InvalidMSISDN":f="InvalidMSISDN";break;default:f="UnknownError"}return l.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:i,errorType:"UnknownError"}),[2,d({errorType:f,productUrl:m.productUrl})];case 6:return[2]}}))}))})),k=n("moRedirFlow/backToStartAction",(function(t,n){var a=n.dispatch,o=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){return e(this,(function(r){try{l.recedeInFlow("tallyman.v1-mo-redir","mo-redir-state","requested to change phone number"),a(f())}catch(r){return console.warn(r),[2,o({errorType:"UnexpectedState"})]}return[2]}))}))})),E=a({name:"moRedirFlow",initialState:b,reducers:{},extraReducers:function(r){r.addCase(j.pending,(function(r){r.currentState={type:"MSISDNEntry",result:i()}})).addCase(j.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(j.rejected,(function(r,e){r.currentState={type:"MSISDNEntry",result:s(e.payload)}}))}}),M=E.reducer;E.actions;export{k as backToStartAction,y as moRedirFlowMatch,M as moRedirFlowReducer,j as submitMSISDNAction,p as useMoRedirFlowState};
2
2
  //# sourceMappingURL=moRedirFlow.js.map
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{i as d,c as l,P as p}from"./strategySlice-CwiREA17.js";import{searchToObject as v}from"./searchToObject.js";import{s as f}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{b as y}from"./bupperizeCountry-CEtt0MKz.js";import{l as S,r as w,a as h}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-DzB_RpFU.js";import{c as I}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./formatNumberToE164-Bd0VHMHJ.js";import"pacman-client";import"uuid";var _=function(e){return e((function(e){return e.pinFlow.currentState}))};function b(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 E=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},k=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,h;return t(this,(function(t){return e=E(a),n="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),p=I(p),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(h=null==i?void 0:i.location)||void 0===h?void 0:h.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:v||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||""},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()}))]}))}))},N=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,m,S,w,h;return t(this,(function(t){return e=E(a),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:y(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(h=null==i?void 0:i.location)||void 0===h?void 0:h.href),language_code:i.languageCode||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:v,uniqid:p,antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||""},m=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(m).concat(e).concat(n),[2,fetch(w).then((function(e){return e.json()}))]}))}))},U=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 j(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,M(r,e,a,e.operators,o)]:[2,D(r,e,a,o)]}))}))}var P="";function D(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,p,f,m,y,S,w,h,I,_,b,E,N;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=v(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,p=i.slug,f=i.country,m=i.device,y=i.offer,S=r.location.search.substr(1)||"",w=P&&""!==P?"&mcpUniqid=".concat(P):"",h=void 0!==r&&r.tid?r.tid:"",[4,k({window:r,country:f,slug:p,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((_=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(I.message))).message=I.message,!0){case I.message.includes("ALREADY SUBSCRIBED"):_.type="AlreadySubscribed";break;case I.message.includes("invalid"):_.type="InvalidMSISDN";break;default:_.type=null}throw _.productUrl=I.product_url?I.product_url:"",console.error(_),_;case 2:if(r.operator=I.operator,b={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&I.operator&&(b[f.toLowerCase()]&&b[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,U({window:r,country:f,slug:p,device:m,offer:y,rockmanId:l,operator:I.operator,uniqid:w})];case 4:return!1===(E=t.sent()).success?console.warn(E.message):(g(E.source),P=E.uniqid),[3,6];case 5:return N=t.sent(),console.warn(N),[3,6];case 6:return I.javascript&&g(I.javascript),[2,n({type:"SingleMSISDNSubmissionResult",pin:I.pin,uniqidResult:P,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 M(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,D(r,i,a,n(n({},s),{operator:o}))];case 1:return e=t.sent(),[2,w(n(n({},e),{operator:o}))];case 2:return c=t.sent(),[2,S(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 C(n,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,p,f,m,S,w,g,I,_,b,E,k;return t(this,(function(U){switch(U.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==(p=v(n))?void 0:p.success)&&"1"===p["msisdn-alias"]&&(l["skip-validation"]="1"),f=n.pac_analytics.visitor.rockmanId,!i)throw(m=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",m;return S=""!==P?"&mcpUniqid=".concat(P):"",w=void 0!==n&&n.tid?n.tid:"",[4,N({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:S,evinaTid:w})];case 1:if(!1!==(g=U.sent()).success)return[3,2];throw I={"pin does not match":"InvalidPIN","mcp blocked":"SessionBlocked",expired_pin:"ExpiredPIN",insufficient_balance:"InsufficientBalance"}[g.message],(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",E.message=g.message,console.error(E),E;case 2:return!0!==g.async?[3,4]:g.product_url&&""!==g.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:g.product_url}]:(_=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:y(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,h(_,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(b=U.sent()).success)return k="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:b.product_url||null,isAlreadySubscribed:k}];throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(b.message))).type="InvalidPIN",E.message=b.message,E;case 4:return k="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:g.product_url||null,isAlreadySubscribed:k}]}}))}))}var A={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},R={currentState:{type:"PINEntry",result:s({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},F={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},T={currentState:{type:"MSISDNEntry",result:o()}},B=function(e){var t=v(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 T;switch(t["current-state"]){case"msisdn-failure-state":return F;case"pin-state":return null==e||e.dispatchEvent(r),A;case"completed-state":return R;default:return console.error("Mock Flow not supported"),T}}(window),x=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,s=r.msisdn,c=r.extraParams,u=i.getState,d=i.dispatch,v=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,y,S,w,h,g,I,_,b,E,k,N,U;return t(this,(function(t){switch(t.label){case 0:if(e=u(),!(null===(N=null===(k=null===(E=null==e?void 0:e.strategy)||void 0===E?void 0:E.currentState)||void 0===k?void 0:k.data)||void 0===N?void 0:N.config))return[2,v({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(U=e.pinFlow)||void 0===U?void 0:U.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"===V(null==i?void 0:i.country,s)&&(s=s.replace("970","972")),m.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,j(a,i,s)];case 2:return w=t.sent(),m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),"SingleMSISDNSubmissionResult"===w.type&&w.redirectUrl&&(m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),m.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:w.redirectUrl}),a.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,f(s).then((function(e){e&&e.data&&e.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){m.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return h="SingleMSISDNSubmissionResult"===w.type?w.operator:"",g={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:h,pinMaxLength:""!==h&&g[h]?g[h]:null,isHeaderEnrichmentSuccess:y},"SingleMSISDNSubmissionResult"===w.type&&(null==w?void 0:w.userType)?{userType:w.userType}:{})})];case 5:switch(_=t.sent(),console.warn(_),b=void 0,_.type){case"AlreadySubscribed":b="AlreadySubscribed";break;case"InvalidMSISDN":b="InvalidMSISDN";break;default:b="UnknownError"}return m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl}),y&&d(l({type:p.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,v({errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl})];case 6:return[2]}}))}))})),L=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,v,y,S,w,h,g;return t(this,(function(t){switch(t.label){case 0:if(e=d(),!(null===(h=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===h?void 0:h.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(g=e.pinFlow)||void 0===g?void 0:g.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,C(a,c,r,u)];case 2:return p=t.sent(),m.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:c,finalUrl:p.productUrl}),p.gatewayRedirectUrl&&""!==p.gatewayRedirectUrl&&(m.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,f(o).then((function(e){e&&e.data&&e.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){m.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(v=t.sent(),console.warn(v),y=void 0,v.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 m.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,errorType:y,error:v.toString(),message:v.message,productUrl:v.productUrl}),setTimeout((function(){v.productUrl&&(a.location.href=v.productUrl)}),0),[2,l({errorType:y,error:v.toString(),message:v.message,productUrl:v.productUrl})];case 6:return[2]}}))}))})),q=i("pinFlow/backToStartAction",(function(r,n){var i=n.dispatch,a=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){return t(this,(function(e){try{m.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),i(d())}catch(e){return console.warn(e),[2,a({errorType:"UnexpectedState"})]}return[2]}))}))})),O={PS:"970"},V=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=O[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},W=a({name:"pinFlow",initialState:B,reducers:{},extraReducers:function(e){e.addCase(x.pending,(function(e){e.currentState={type:"MSISDNEntry",result:c(),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(x.rejected,(function(e,t){e.currentState={type:"MSISDNEntry",result:u(t.payload),data:e.currentState.data}})).addCase(L.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(L.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(L.rejected,(function(e,t){e.currentState={type:"PINEntry",result:u(t.payload),data:e.currentState.data}}))}}),H=W.reducer;W.actions;export{q as backToStartAction,b as pinFlowMatch,H as pinFlowReducer,x as submitMSISDNAction,L as submitPinAction,_ 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{i as d,c as l,P as p}from"./strategySlice-DuYLxEUR.js";import{searchToObject as v}from"./searchToObject.js";import{s as f}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{b as y}from"./bupperizeCountry-CEtt0MKz.js";import{l as S,r as w,a as h}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-DzB_RpFU.js";import{c as I}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./formatNumberToE164-Bd0VHMHJ.js";import"pacman-client";import"uuid";var _=function(e){return e((function(e){return e.pinFlow.currentState}))};function b(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 E=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},k=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,h;return t(this,(function(t){return e=E(a),n="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),p=I(p),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(h=null==i?void 0:i.location)||void 0===h?void 0:h.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:v||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||""},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()}))]}))}))},N=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,m,S,w,h;return t(this,(function(t){return e=E(a),n="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f={action:"verify-pin",country:y(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(h=null==i?void 0:i.location)||void 0===h?void 0:h.href),language_code:i.languageCode||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:v,uniqid:p,antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||""},m=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(m).concat(e).concat(n),[2,fetch(w).then((function(e){return e.json()}))]}))}))},U=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 j(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,M(r,e,a,e.operators,o)]:[2,D(r,e,a,o)]}))}))}var P="";function D(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,p,f,m,y,S,w,h,I,_,b,E,N;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=v(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,p=i.slug,f=i.country,m=i.device,y=i.offer,S=r.location.search.substr(1)||"",w=P&&""!==P?"&mcpUniqid=".concat(P):"",h=void 0!==r&&r.tid?r.tid:"",[4,k({window:r,country:f,slug:p,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((_=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(I.message))).message=I.message,!0){case I.message.includes("ALREADY SUBSCRIBED"):_.type="AlreadySubscribed";break;case I.message.includes("invalid"):_.type="InvalidMSISDN";break;default:_.type=null}throw _.productUrl=I.product_url?I.product_url:"",console.error(_),_;case 2:if(r.operator=I.operator,b={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&I.operator&&(b[f.toLowerCase()]&&b[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,U({window:r,country:f,slug:p,device:m,offer:y,rockmanId:l,operator:I.operator,uniqid:w})];case 4:return!1===(E=t.sent()).success?console.warn(E.message):(g(E.source),P=E.uniqid),[3,6];case 5:return N=t.sent(),console.warn(N),[3,6];case 6:return I.javascript&&g(I.javascript),[2,n({type:"SingleMSISDNSubmissionResult",pin:I.pin,uniqidResult:P,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 M(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,D(r,i,a,n(n({},s),{operator:o}))];case 1:return e=t.sent(),[2,w(n(n({},e),{operator:o}))];case 2:return c=t.sent(),[2,S(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 C(n,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,p,f,m,S,w,g,I,_,b,E,k;return t(this,(function(U){switch(U.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==(p=v(n))?void 0:p.success)&&"1"===p["msisdn-alias"]&&(l["skip-validation"]="1"),f=n.pac_analytics.visitor.rockmanId,!i)throw(m=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",m;return S=""!==P?"&mcpUniqid=".concat(P):"",w=void 0!==n&&n.tid?n.tid:"",[4,N({window:n,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:S,evinaTid:w})];case 1:if(!1!==(g=U.sent()).success)return[3,2];throw I={"pin does not match":"InvalidPIN","mcp blocked":"SessionBlocked",expired_pin:"ExpiredPIN",insufficient_balance:"InsufficientBalance"}[g.message],(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(I))).type=I||"InvalidPIN",E.message=g.message,console.error(E),E;case 2:return!0!==g.async?[3,4]:g.product_url&&""!==g.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:g.product_url}]:(_=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:y(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,h(_,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(b=U.sent()).success)return k="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:b.product_url||null,isAlreadySubscribed:k}];throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(b.message))).type="InvalidPIN",E.message=b.message,E;case 4:return k="ALREADY SUBSCRIBED"===g.message,[2,{productUrl:g.product_url||null,isAlreadySubscribed:k}]}}))}))}var A={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},R={currentState:{type:"PINEntry",result:s({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},F={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},T={currentState:{type:"MSISDNEntry",result:o()}},B=function(e){var t=v(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 T;switch(t["current-state"]){case"msisdn-failure-state":return F;case"pin-state":return null==e||e.dispatchEvent(r),A;case"completed-state":return R;default:return console.error("Mock Flow not supported"),T}}(window),x=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,s=r.msisdn,c=r.extraParams,u=i.getState,d=i.dispatch,v=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,y,S,w,h,g,I,_,b,E,k,N,U;return t(this,(function(t){switch(t.label){case 0:if(e=u(),!(null===(N=null===(k=null===(E=null==e?void 0:e.strategy)||void 0===E?void 0:E.currentState)||void 0===k?void 0:k.data)||void 0===N?void 0:N.config))return[2,v({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,y=r.isHeaderEnrichmentSuccess,S=null===(U=e.pinFlow)||void 0===U?void 0:U.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"===V(null==i?void 0:i.country,s)&&(s=s.replace("970","972")),m.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:s}),[4,j(a,i,s)];case 2:return w=t.sent(),m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),"SingleMSISDNSubmissionResult"===w.type&&w.redirectUrl&&(m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:s}),m.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:w.redirectUrl}),a.location.href=w.redirectUrl),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,f(s).then((function(e){e&&e.data&&e.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){m.customEvent("Flow","advance-auto","msisdn-stored-error",e)}))]:[3,4];case 3:t.sent(),t.label=4;case 4:return h="SingleMSISDNSubmissionResult"===w.type?w.operator:"",g={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:h,pinMaxLength:""!==h&&g[h]?g[h]:null,isHeaderEnrichmentSuccess:y},"SingleMSISDNSubmissionResult"===w.type&&(null==w?void 0:w.userType)?{userType:w.userType}:{})})];case 5:switch(_=t.sent(),console.warn(_),b=void 0,_.type){case"AlreadySubscribed":b="AlreadySubscribed";break;case"InvalidMSISDN":b="InvalidMSISDN";break;default:b="UnknownError"}return m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:s,errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl}),y&&d(l({type:p.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,v({errorType:b,error:_.toString(),message:_.message,productUrl:_.productUrl})];case 6:return[2]}}))}))})),L=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,v,y,S,w,h,g;return t(this,(function(t){switch(t.label){case 0:if(e=d(),!(null===(h=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===h?void 0:h.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(g=e.pinFlow)||void 0===g?void 0:g.currentState,t.label=1;case 1:return t.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:c}),[4,C(a,c,r,u)];case 2:return p=t.sent(),m.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:c,finalUrl:p.productUrl}),p.gatewayRedirectUrl&&""!==p.gatewayRedirectUrl&&(m.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,f(o).then((function(e){e&&e.data&&e.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(e){m.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(v=t.sent(),console.warn(v),y=void 0,v.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 m.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:c,errorType:y,error:v.toString(),message:v.message,productUrl:v.productUrl}),setTimeout((function(){v.productUrl&&(a.location.href=v.productUrl)}),0),[2,l({errorType:y,error:v.toString(),message:v.message,productUrl:v.productUrl})];case 6:return[2]}}))}))})),q=i("pinFlow/backToStartAction",(function(r,n){var i=n.dispatch,a=n.rejectWithValue;return e(void 0,void 0,void 0,(function(){return t(this,(function(e){try{m.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),i(d())}catch(e){return console.warn(e),[2,a({errorType:"UnexpectedState"})]}return[2]}))}))})),O={PS:"970"},V=function(e,t){if(!e||!t)return"";var r=e.toUpperCase(),n=O[r];return n?"+".concat(n):(console.error("Country code not found for",e),"")},W=a({name:"pinFlow",initialState:B,reducers:{},extraReducers:function(e){e.addCase(x.pending,(function(e){e.currentState={type:"MSISDNEntry",result:c(),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(x.rejected,(function(e,t){e.currentState={type:"MSISDNEntry",result:u(t.payload),data:e.currentState.data}})).addCase(L.pending,(function(e){e.currentState={type:"PINEntry",result:c(),data:e.currentState.data}})).addCase(L.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(L.rejected,(function(e,t){e.currentState={type:"PINEntry",result:u(t.payload),data:e.currentState.data}}))}}),H=W.reducer;W.actions;export{q as backToStartAction,b as pinFlowMatch,H as pinFlowReducer,x as submitMSISDNAction,L as submitPinAction,_ 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-CwiREA17.js";export{i as identifyStrategy,a as selectOperatorAction,b as strategyReducer,s as submitMSISDNAction}from"./strategySlice-CwiREA17.js";import"tslib";import"@reduxjs/toolkit";import"./searchToObject.js";import"./getConfig.js";import"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";import"./formatNumberToE164-Bd0VHMHJ.js";var e=function(t){return t((function(t){return t.strategy.currentState}))};function r(e){var r=e.identifyInitialState,o=e.identifyFlowByOperatorSelect,s=e.identifyFlowByMsisdn,a=e.pinFlow,i=e.moFlow,n=e.moRedirFlow,c=e.oneClickFlow,u=e.click2smsFlow,l=e.ussdFlow,m=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 s(e.result);case t.PIN:return a();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 m();default:throw new Error("Unexpected state type: ".concat(e.type))}}}export{t as PossibleTypes,r as strategy,e as useStrategyState};
1
+ export{R as RDS}from"./RemoteDataState-lcf8PfJd.js";import{P as t}from"./strategySlice-DuYLxEUR.js";export{i as identifyStrategy,a as selectOperatorAction,b as strategyReducer,s as submitMSISDNAction}from"./strategySlice-DuYLxEUR.js";import"tslib";import"@reduxjs/toolkit";import"./searchToObject.js";import"./getConfig.js";import"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";import"./formatNumberToE164-Bd0VHMHJ.js";var e=function(t){return t((function(t){return t.strategy.currentState}))};function r(e){var r=e.identifyInitialState,o=e.identifyFlowByOperatorSelect,s=e.identifyFlowByMsisdn,a=e.pinFlow,i=e.moFlow,n=e.moRedirFlow,c=e.oneClickFlow,u=e.click2smsFlow,l=e.ussdFlow,m=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 s(e.result);case t.PIN:return a();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 m();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 r}from"tslib";import{createAsyncThunk as o,createSlice as n}from"@reduxjs/toolkit";import{N as i,S as a,L as s,F as l}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{getConfig as u}from"./getConfig.js";import{q as c,t as f}from"./tracker-DaaILhEr.js";import{f as v}from"./formatNumberToE164-Bd0VHMHJ.js";var p;function w(r){return e(this,void 0,void 0,(function(){var e,o,n,i,a;return t(this,(function(t){switch(t.label){case 0:if(e=c(window.location.href,"mock-ip")||process.env.mock_ip,console.log("mockip",e),r.ip||"undefined"==typeof window)return[3,5];t.label=1;case 1:return t.trys.push([1,3,,4]),o=window.location.host,n=window.DEV_BASE_URL_IP||o,[4,fetch("https://".concat(n,"/api/v1/ip").concat(e?"?mock-ip=".concat(e):"")).then((function(e){return e.json()}))];case 2:return i=t.sent(),r.ip=i.ip,r.ip_range_name=i.ip_range_name,[2,i.ip_range_name];case 3:return a=t.sent(),console.warn("IP Lookup failed",a),[2,""];case 4:return[3,6];case 5:return[2,r.ip_range_name||""];case 6:return[2]}}))}))}!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 m=function(r){var o=r.window,n=r.slug,i=r.country,a=r.msisdn,s=r.device,l=r.offer,d=r.rockmanId;return e(void 0,void 0,void 0,(function(){var e,r,u,c,f;return t(this,(function(t){switch(t.label){case 0:return e=o.languageCode||"",r=encodeURIComponent(o.location.href),u=o.DEV_BASE_URL||"",c=new URLSearchParams({action:"identify",slug:n,country:i,msisdn:a,device:s,offerId:l,rockman_id:d,page:r,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},y={mo:"Msisdn to sms",pin:"Pin",oneClick:"3G click",moRedir:"Redirect",click2sms:"Click to sms",tpayHe:"Pin",ussd:"Msisdn to sms"},E=function(e){return y[e]};function S(o){var n,i,a,s,l=o.window,d=o.internationalMSISDN,u=o.configs;return e(this,void 0,void 0,(function(){var o,c,f,v,p,w,g,y,E,S,h=this;return t(this,(function(I){switch(I.label){case 0:if(!d)throw(S=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",S;return o=(null===(n=d.match(/\d+/gi))||void 0===n?void 0:n.join(""))||"",c=null===(i=null==u?void 0:u.strategyConfigs)||void 0===i?void 0:i.default,f=c.flowConfig,v=null===(a=null==u?void 0:u.strategyConfigs)||void 0===a?void 0:a.operators,p=function(){return e(h,void 0,void 0,(function(){var e,r,n,i,a;return t(this,(function(t){switch(t.label){case 0:return e=f.slug,r=f.country,n=f.device,i=l.pac_analytics.visitor.rockmanId,a=l.pac_analytics.visitor.offer,[4,m({window:l,slug:e,country:r,msisdn:o,device:n,offer:a,rockmanId:i})];case 1:return[2,t.sent()]}}))}))},[4,p()];case 1:if(w=I.sent(),g=v[w.operator]?v[w.operator]:null,y=!1===w.success&&"Operator could not be found for the given MSISDN"===w.message,E=!1===w.success&&-1!==(null===(s=w.message)||void 0===s?void 0:s.indexOf("HLR did not find the operator for given MSISDN")),y||E)throw(S=new Error("Error in submitMSISDN() identify action")).type="FlowDetectFailed",S.msisdn=o,S;if(null!==g)return[2,r({operator:w.operator,default:c},g)];if(null===g)return[2,r({operator:w.operator},c)];throw(S=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",S}}))}))}function h(e){var t,o,n=e.configs,i=e.operator,a=null===(t=null==n?void 0:n.strategyConfigs)||void 0===t?void 0:t.default,s=null===(o=null==n?void 0:n.strategyConfigs)||void 0===o?void 0:o.operators;return r({operator:null==i?void 0:i.toUpperCase(),default:a},s[null==i?void 0:i.toUpperCase()])}function I(r){var o=r.window,n=r.configs;return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){switch(t.label){case 0:return[4,w(o.pac_analytics.visitor)];case 1:return e=t.sent(),[2,h({configs:n,operator:e&&e.includes("_")?e.toUpperCase():""})]}}))}))}var _=function(){return{type:p.IDENTIFY_FLOW_BY_MSISDN,result:i()}},C=o("strategy/submitMSISDNAction",(function(r,o){var n=r.window,a=r.msisdn,s=o.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,o,l,d,c,v,p,w;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),[4,S({window:n,internationalMSISDN:a,configs:e})];case 1:return r=t.sent(),o=null==r?void 0:r.flow,l=E(o),d=null===(w=null==e?void 0:e.strategyConfigs)||void 0===w?void 0:w.default,c=null==d?void 0:d.flow,g[o]?(f.sendOptInFlowEvent(l),[2,{type:g[o],result:i(),data:{config:r.flowConfig,operator:r.operator,msisdn:a}}]):[2,{type:g[c],result:i(),data:{config:null==d?void 0:d.flowConfig}}];case 2:switch(v=t.sent(),p=void 0,v.type){case"SEAlreadySubscribed":p="AlreadySubscribed";break;case"SEInvalidMSISDN":p="InvalidMSISDN";break;default:p="UnknownError"}return[2,s({errorType:p,error:v,productUrl:v.productUrl})];case 3:return[2]}}))}))})),D=function(){var e=function(e){var t,r=e.configs,o=null===(t=null==r?void 0:r.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}}},T=o("strategy/selectOperatorAction",(function(r,o){var n=r.operator,a=o.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,o,s;return t(this,(function(t){try{return e=u(),r=h({configs:e,operator:n}),o=r.flow,s=E(o),f.sendOptInFlowEvent(s),[2,{type:g[o],result:i(),data:{config:r.flowConfig,operator:r.operator}}]}catch(e){return"UnkownError",[2,a({errorType:"UnkownError",error:e.toString()})]}return[2]}))}))})),O=function(r){return e(void 0,void 0,void 0,(function(){var e,o,n,a,s,l,d,c;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),[4,I({window:window,configs:e})];case 1:return o=t.sent(),n=null===(c=null==e?void 0:e.strategyConfigs)||void 0===c?void 0:c.default,a=null==n?void 0:n.flow,o.flow||"all-flows-detect-operator-by-ip-or-ask-mobile-number"!==r&&"all-flows-ask-mobile-number"!==r?o.flow||"all-flows-detect-operator-by-ip-or-ask-operator"!==r?(s=o.flow,g[s]?(l=E(s),f.sendOptInFlowEvent(l),[2,{type:g[s],result:i(),data:{config:o.flowConfig,operator:o.operator}}]):[2,{type:g[a],result:i(),data:{config:null==n?void 0:n.flowConfig}}]):[2,D()]:[2,_()];case 2:return d=t.sent(),console.error("error",d),[3,3];case 3:return[2]}}))}))},R=function(e){return{type:p.PIN,result:i(),data:{config:e}}},N=function(r){var o=r.window;return e(void 0,void 0,void 0,(function(){var e,r,n,i,s;return t(this,(function(t){return e=u(),r=null==e?void 0:e.enableScriptTimer,n=e.strategyConfigs,i=null===(s=null==n?void 0:n.default)||void 0===s?void 0:s.flowConfig,[2,new Promise((function(e){var t,s,l,d;try{var c=null===(s=null===(t=null==o?void 0:o.pac_analytics)||void 0===t?void 0:t.visitor)||void 0===s?void 0:s.heMsisdn,w=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&&w&&(c=v(c,w));var m,g=!1,y=!1;r&&(m=setTimeout((function(){var t;g||(y=!0,f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"3 second timer expired"}),o.isPrelanderClicked=!0,e({type:p.PIN,result:a({}),data:{config:null===(t=null==n?void 0:n.default)||void 0===t?void 0:t.flowConfig}}))}),3e3));var E=function(t){var n=t.detail;if((null==n?void 0:n.msisdn)&&(c=v(n.msisdn,w),o.msisdn=c),r){if(!y){g=!0,clearTimeout(m),f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c});var i=h({configs:u(),operator:null==n?void 0:n.operator_code});o.removeEventListener("he-success",E),o.removeEventListener("he-fail",S),e(b(i,c,null==n?void 0:n.operator_code,!0))}}else{f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c,operator:null==n?void 0:n.operator_code});i=h({configs:u(),operator:null==n?void 0:n.operator_code});o.removeEventListener("he-success",E),o.removeEventListener("he-fail",S),e(b(i,c,null==n?void 0:n.operator_code,!0))}},S=function(){o.removeEventListener("he-success",E),o.removeEventListener("he-fail",S),e(R(i))};if(o.addEventListener("he-success",E),o.addEventListener("he-fail",S),!(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 I=document.createElement("script");I.type="text/javascript",I.id="he-js-link",I.src="".concat(o.heScriptUrl),I.referrerPolicy="origin",document.head.appendChild(I),I.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(R(i))}}))]}))}))},b=function(e,t,r,o){var n,a;void 0===t&&(t=null),void 0===r&&(r=null);var s=null===(n=u().strategyConfigs)||void 0===n?void 0:n.default,l=null==s?void 0:s.flow,d=e.flow||(null===(a=e.default)||void 0===a?void 0:a.flow),c=E(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==s?void 0:s.flowConfig,operator:r,msisdn:t,isHeaderEnrichmentSuccess:o}}},F={currentState:{type:p.IDENTIFY_STRATEGY,result:i(),data:void 0}},k=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:a({})};case"mo":return{type:p.MO,result:a({})};case"moredir":return{type:p.MO_REDIR,result:a({})};case"oneclick":return{type:p.ONE_CLICK,result:a({}),data:{subscription_url:e["subscription-url"]}};case"click2sms":return{type:p.CLICK2SMS,result:a({})};case"ussd":return{type:p.USSD,result:a({})};case"creditcard":return{type:p.CREDIT_CARD,result:a({})};default:throw new Error("(mockStrategyStateByUrlParam) Strategy Mock Flow not supported")}},L=o("strategy/identifyStrategy",(function(){return e(void 0,void 0,void 0,(function(){var r,o,n,s,l,c,w,m,y,S,I,C,T;return t(this,(function(R){switch(R.label){case 0:return r=u(),o=r.strategy,n=r.strategyConfigs,void 0!==(s=d(window))["mock-flow"]?[2,k()]:s["show-pin-entry"]&&"1"===s["show-pin-entry"]||s["show-thank-you"]&&"1"===s["show-thank-you"]?(l=h({configs:r,operator:s.operator}),[2,{type:p.PIN,result:a({}),data:{config:(null==l?void 0:l.flowConfig)||(null===(c=null==n?void 0:n.default)||void 0===c?void 0:c.flowConfig)}}]):o.includes("ask-operator")?[2,D()]:o.includes("detect-operator-by-ip")?[2,O(o)]:(null==o?void 0:o.includes("ask-mobile-number"))?[2,_()]:(null==o?void 0:o.includes("header-enrichment"))&&"header-enrichment-script"!==o?[4,e(void 0,void 0,void 0,(function(){var r,o,n,a,s,l,c,p,w,m,y,S;return t(this,(function(I){switch(I.label){case 0:r=u(),o=null==r?void 0:r.strategyConfigs.default,n=o.flow,I.label=1;case 1:return I.trys.push([1,5,,6]),a=d(window),(s=(null==a?void 0:a.msisdn)&&""!==(null==a?void 0:a.msisdn))&&f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:null==a?void 0:a.msisdn,operator:null==a?void 0:a.operator}),(null==a?void 0:a.operator)?"pin-header-enrichment"===r.strategy&&s?[2,{type:g[n],result:i(),data:{config:null==o?void 0:o.flowConfig,operator:(null==a?void 0:a.operator)||null,msisdn:(null==a?void 0:a.msisdn)||null,isHeaderEnrichmentSuccess:s}}]:(l=null,c=null,[4,h({operator:null==a?void 0:a.operator,configs:r})]):[2,{type:g[n],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 2:return p=I.sent(),w=p.flow||n,m=E(w),f.sendOptInFlowEvent(m),"oneClick"!==w?[3,4]:[4,e(void 0,void 0,void 0,(function(){var e,r,o,n,i,a,s,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(!(r=e.subscription_url||e.redirect_url))throw new Error("No URL provided for redirection");return o=window.atob(r),n=new URL(o),i=new URLSearchParams(n.search),a=i.get("msisdn")||e.msisdn,s=i.get("operator")||e.operator,a&&(a=v(a,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:a||"",operator:s||"",subscription_url:e.subscription_url?o:void 0,redirect_url:e.redirect_url?o:void 0}]}))}))];case 3:y=I.sent(),l=(null==y?void 0:y.subscription_url)||null,c=(null==y?void 0:y.redirect_url)||null,I.label=4;case 4:return[2,{type:g[w],result:i(),data:{config:p.flowConfig,operator:p.operator,subscription_url:l||null,redirect_url:c||null,isHeaderEnrichmentSuccess:s}}];case 5:return S=I.sent(),console.error("error",S),[2,{type:g[n],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 6:return[2]}}))}))]:[3,2];case 1:return[2,R.sent()];case 2:switch(o){case"header-enrichment-script":return[2,N({window:window})];case"pin":return f.sendOptInFlowEvent("Pin"),[2,{type:p.PIN,result:a({}),data:{config:null===(w=null==n?void 0:n.default)||void 0===w?void 0:w.flowConfig}}];case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),[2,{type:p.MO,result:a({}),data:{config:null===(m=null==n?void 0:n.default)||void 0===m?void 0:m.flowConfig}}];case"mo-redir":return[2,{type:p.MO_REDIR,result:a({}),data:{config:null===(y=null==n?void 0:n.default)||void 0===y?void 0:y.flowConfig}}];case"one-click":return f.sendOptInFlowEvent("Redirect"),[2,{type:p.ONE_CLICK,result:a({}),data:{config:null===(S=null==n?void 0:n.default)||void 0===S?void 0:S.flowConfig}}];case"click2sms":return f.sendOptInFlowEvent("Click to sms"),[2,{type:p.CLICK2SMS,result:a({}),data:{config:null===(I=null==n?void 0:n.default)||void 0===I?void 0:I.flowConfig}}];case"ussd":return f.sendOptInFlowEvent("USSD"),[2,{type:p.USSD,result:a({}),data:{config:null===(C=null==n?void 0:n.default)||void 0===C?void 0:C.flowConfig}}];case"credit-card":return f.sendOptInFlowEvent("Credit card"),[2,{type:p.CREDIT_CARD,result:a({}),data:{config:null===(T=null==n?void 0:n.default)||void 0===T?void 0:T.flowConfig}}];default:throw new Error("Strategy not supported")}}}))}))})),M=o("strategy/setStrategyExtraData",(function(r){var o=r.type,n=r.data;return e(void 0,void 0,void 0,(function(){return t(this,(function(e){return[2,{type:o,result:i(),data:n}]}))}))})),Y=n({name:"strategy",initialState:F,reducers:{},extraReducers:function(e){e.addCase(L.pending,(function(e){e.currentState={type:p.IDENTIFY_STRATEGY,result:s()}})).addCase(L.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(L.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_STRATEGY,result:l(t.error.message)}})).addCase(C.pending,(function(e){e.currentState={type:p.IDENTIFY_FLOW_BY_MSISDN,result:s()}})).addCase(C.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(C.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_FLOW_BY_MSISDN,result:l(t.payload)}})).addCase(M.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(T.pending,(function(e){e.currentState={type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:s()}})).addCase(T.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(T.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:l(t.payload)}}))}}).reducer;export{p as P,T as a,Y as b,M as c,L as i,C as s,w as t};
2
+ //# sourceMappingURL=strategySlice-DuYLxEUR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategySlice-DuYLxEUR.js","sources":["../src/sharedFlowTypes/StrategyTypes.ts","../src/ips/tryGetIPRangeName.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 { IStrategyNames } from '../common-types/Strategy';\nimport { Click2smsFlowState } from './Click2smsTypes';\nimport { CreditCardFlowState } from './CreditCardTypes';\nimport { MoRedirFlowState } from './MoRedirTypes';\nimport { MoFlowState } from './MoTypes';\nimport { OneClickFlowState } from './OneClickTypes';\nimport { PinFlowState } from './PinTypes';\nimport { UssdFlowState } from './UssdTypes';\n\nexport type IIdentifyResult = {\n operator: string;\n flow?: string;\n success: boolean;\n rockman_id?: string;\n message?: string;\n};\n\nexport interface HEResult {\n msisdn: string;\n operator: string;\n subscription_url?: string;\n redirect_url?: string;\n}\n\nexport type ConfigDetails = {\n host: string;\n slug: string;\n country: string;\n device?: 'smart' | 'feature';\n queryString?: Array<[string, string]>;\n automaticallySubmitAllOperators?: boolean;\n operators?: string[];\n service: string;\n offer?: string;\n};\n\nexport type IConfig = {\n offer?: string;\n slug?: string;\n country?: string;\n host?: string;\n device?: 'smart' | 'feature';\n automaticallySubmitAllOperators?: boolean;\n operators?: string[];\n service?: string;\n serviceId?: string;\n queryString?: any;\n apiAction?: any;\n};\n\nexport type ISupportedFlows = 'pin' | 'mo' | 'oneClick' | 'click2sms' | 'moRedir' | 'ussd' | 'creditCard';\nexport type IFlow = {\n flow: ISupportedFlows;\n flowOnWifi?: ISupportedFlows;\n operator?: string;\n flowConfig: ConfigDetails;\n default?: IFlow;\n rockman_id?: string;\n};\n\nexport type StrategyConfig = {\n operators: {\n [key: string]: IFlow;\n };\n default: IFlow;\n isUseMsisdnPrefix?: boolean;\n};\n// export type IStrategy = IPinStrategy | IMoStrategy;\n\nexport type IStrategy = {\n strategy: IStrategyNames;\n country: string;\n strategyConfigs: StrategyConfig;\n};\n\nexport interface IHash {\n [key: string]: string;\n}\n\nexport type IDENTIFYMSISDNEntryErrorTypes = 'AlreadySubscribed' | 'UnknownError' | 'InvalidMSISDN';\n\nexport type IDENTIFYMSISDNEntryFailure = {\n errorType: IDENTIFYMSISDNEntryErrorTypes;\n error: unknown;\n};\n\nexport type IdentifyFlowOptionsResult = {\n config: IConfig;\n nextAction?: unknown;\n msisdn?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n rockman_id?: string;\n isHeaderEnrichmentSuccess?: boolean;\n autoRedirect?: boolean;\n isUseMsisdnPrefix?: boolean;\n};\n\nexport type IDENTIFYMSISDNEntrySuccess = {};\nexport type OPERATORSelectFailure = {};\nexport type OPERATORSelectSuccess = IdentifyFlowOptionsResult;\n\nexport type IDETECTYOPERATOBYIPFailure = {};\nexport type IDETECTYOPERATOBYIPSuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_OPERATOR_MSISDNEntrySuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_FLOW_HESuccess = IdentifyFlowOptionsResult;\n\nexport type OPERATORSelectFlowIdentifyFailure = {};\nexport type OPERATORSelectFlowIdentifySuccess = {\n operators: Array<string>;\n msisdn?: string;\n nextAction: 'selectOperator';\n};\nexport type IDENTIFYFailure = {};\n\nexport type IDENTIFYSuccess = {};\n\nexport type IOperatorSelectFlowIdentifyPayload = {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFlowIdentifyFailure, OPERATORSelectFlowIdentifySuccess>;\n};\n\n// export type IIdentifyByIPPayload= {\n// type:\"IDENTIFY_FLOW_BY_IP\"\n// result: RDS.RemoteDataState<IDENTIFYBYIPFailure, IDENTIFYBYIPSuccess>;\n// }\n\nexport type IDetectOperatorByIpPayload = {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n};\n\nexport enum PossibleTypes {\n IDENTIFY_STRATEGY = 'IDENTIFY_STRATEGY',\n IDENTIFY_FLOW_BY_MSISDN = 'IDENTIFY_FLOW_BY_MSISDN',\n IDENTIFY_FLOW_BY_OPERATOR_SELECT = 'IDENTIFY_FLOW_BY_OPERATOR_SELECT',\n PIN = 'PIN',\n MO = 'MO',\n MO_REDIR = 'MO_REDIR',\n ONE_CLICK = 'ONE_CLICK',\n CLICK2SMS = 'CLICK2SMS',\n USSD = 'USSD',\n TPAY_HE = 'TPAY_HE',\n CREDIT_CARD = 'CREDIT_CARD'\n}\n\nexport type IOperatorSelectPayload = {\n type: PossibleTypes;\n result: OPERATORSelectSuccess;\n};\n\nexport type ISubmitMsisdnPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByIpOperatorPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByHePayload = {\n type: PossibleTypes;\n result: IDENTIFY_FLOW_HESuccess;\n};\n\nexport type IIdentfyFlowByMsisdnNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByOperatorNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByIPOperatorNextAction = 'getRedirectUrlAction' | 'submitMSISDNAction';\n\nexport type IIdenyifyFlowByMsisdnSumbitNextData = {\n nextAction: IIdentfyFlowByMsisdnNextAction;\n msisdn?: string;\n operator?: string;\n};\n\nexport type IIdenyifyFlowByMsisdnPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IIdenyifyStrategyPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IStrategyCurrentState =\n | {\n type: 'IDENTIFY_STRATEGY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: OPERATORSelectFlowIdentifySuccess;\n }\n | {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n }\n | {\n type: 'HE_IDENTIFY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFailure, OPERATORSelectSuccess>;\n config: IConfig;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n nextData: IIdenyifyFlowByMsisdnSumbitNextData;\n }\n | {\n type: 'PIN';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'USSD';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO_REDIR';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'ONE_CLICK';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CLICK2SMS';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'TPAY_HE';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CREDIT_CARD';\n result: IdentifyFlowOptionsResult;\n };\n\nexport type IStrategyIDentifyUserResult =\n | {\n success: 'true';\n rockman_id: string;\n msisdn: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n 'redirect-back'?: string;\n 'msisdn-alias'?: string;\n }\n | {\n success: 'false';\n rockman_id: string;\n message: string;\n 'redirect-back'?: string;\n };\n\nexport type IMockFlows = 'pin' | 'mo' | 'oneclick' | 'click2sms' | 'moredir' | 'ussd' | 'tpay' | 'creditcard';\n\nexport interface IMockFlowParams<T> {\n 'mock-flow': IMockFlows;\n 'current-state': T;\n 'show-pin-entry': '1' | '0';\n 'show-thank-you': '1' | '0';\n 'show-chain-link': '1' | '0';\n operator: string;\n msisdn?: string;\n 'subscription-url'?: string;\n show_custom_error?: string;\n product_url?: string;\n}\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","/* eslint-disable no-param-reassign */\nimport { IVisitor } from '../common-types/IVisitor';\nimport queryString from '../pacman/queryString';\n\n// eslint-disable-next-line consistent-return\nexport default async function tryGetIPRangeName(visitor: IVisitor): Promise<string> {\n const mockip = queryString(window.location.href, 'mock-ip') || process.env.mock_ip;\n // eslint-disable-next-line no-console\n console.log('mockip', mockip);\n if (!visitor.ip && typeof window !== 'undefined') {\n try {\n const { host } = window.location;\n const newHost = window.DEV_BASE_URL_IP || host;\n const res = await fetch(`https://${newHost}/api/v1/ip${mockip ? `?mock-ip=${mockip}` : ''}`).then((x) =>\n x.json()\n );\n // return isIPInRange('37.200.146.28')\n visitor.ip = res.ip;\n visitor.ip_range_name = res.ip_range_name;\n return res.ip_range_name;\n } catch (ex) {\n console.warn('IP Lookup failed', ex);\n return '';\n }\n } else {\n return visitor.ip_range_name || '';\n }\n}\n","import { 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 || '';\n const locationHref = encodeURIComponent(window.location.href);\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 ISupportedFlows,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn, flowMapping, getTrackerEventName } from '../main';\n\nexport const askMobileNumber = (): StrategyCurrentState => ({\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.NothingYet()\n});\n\nexport const submitMSISDNAction = createAsyncThunk(\n 'strategy/submitMSISDNAction',\n async (\n {\n window,\n msisdn\n }: {\n window: Window;\n msisdn: string;\n isHeSuccess?: boolean;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n const flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n const flowType = flowObj?.flow;\n const event = getTrackerEventName(flowType);\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n msisdn\n }\n };\n } catch (ex) {\n let errorType: IDENTIFYMSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'SEAlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'SEInvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n return rejectWithValue({\n errorType,\n error: ex,\n productUrl: ex.productUrl\n });\n }\n }\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\n\nimport { PossibleTypes, StrategyCurrentState } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getOperators, getTrackerEventName } from '../main';\n\nexport const askOperator = (): StrategyCurrentState => {\n const configs = getConfig();\n const operators = getOperators({ configs });\n return {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.NothingYet(),\n data: {\n operators\n }\n };\n};\n\nexport const selectOperatorAction = createAsyncThunk(\n 'strategy/selectOperatorAction',\n async (\n {\n operator\n }: {\n operator: string;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n\n const flowObj = determineFlowByOperator({\n configs,\n operator\n });\n\n const flowType = flowObj.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator\n }\n };\n } catch (ex) {\n const errorType = 'UnkownError';\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n }\n);\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategyNames, ISupportedFlows } from '../../../common-types/Strategy';\n\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp, flowMapping, getTrackerEventName } from '../main';\nimport { askMobileNumber } from './askMobileNumber';\nimport { askOperator } from './askOperator';\n\nconst detectOperatorByIp = async (strategy?: IStrategyNames) => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (\n !flowObj.flow &&\n (strategy === 'all-flows-detect-operator-by-ip-or-ask-mobile-number' ||\n strategy === 'all-flows-ask-mobile-number')\n ) {\n return askMobileNumber();\n }\n\n if (!flowObj.flow && strategy === 'all-flows-detect-operator-by-ip-or-ask-operator') {\n return askOperator();\n }\n\n const flowType = flowObj.flow;\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator\n }\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 if (isHeaderEnrichmentSuccess) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: search?.msisdn,\n operator: search?.operator\n });\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 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","tryGetIPRangeName","visitor","mockip","queryString","window","location","href","process","env","mock_ip","console","log","ip","host","newHost","DEV_BASE_URL_IP","fetch","concat","then","x","json","res","_a","sent","ip_range_name","warn","ex_1","identify","slug","country","msisdn","device","offer","rockmanId","languageCode","locationHref","encodeURIComponent","DEV_BASE_URL","urlParams","URLSearchParams","action","offerId","rockman_id","page","language_code","toString","url","_b","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","Error","type","match","join","defaultFlowConfig","_c","strategyConfigs","default","config","flowConfig","operatorsConfig","_d","operators","indentifyFlow","__awaiter","_this","pac_analytics","theResult","_f","flow","operator","cannotDetect","success","message","hlrError","_e","indexOf","__assign","determineFlowByOperator","toUpperCase","determineFlowByOperatorFromIp","includes","askMobileNumber","IDENTIFY_FLOW_BY_MSISDN","result","RDS.NothingYet","submitMSISDNAction","createAsyncThunk","rejectWithValue","getConfig","flowObj","event_1","defaultConfig","defaultFlowType","tracker","sendOptInFlowEvent","data","errorType","error","productUrl","askOperator","Object","keys","getOperators","IDENTIFY_FLOW_BY_OPERATOR_SELECT","selectOperatorAction","ex","detectOperatorByIp","strategy","createResponseObject","injectHeaderEnrichmentScript","enableScriptTimer","Promise","resolve","heMsisdn_1","heMsisdn","country_1","formatNumberToE164","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","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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"}
@@ -34,6 +34,6 @@ 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' | 'pin-click2sms-ask-mobile-number' | 'all-flows-detect-operator-by-ip-or-ask-mobile-number' | 'all-flows-detect-operator-by-ip-or-ask-operator';
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' | 'all-flows-detect-operator-by-ip-or-ask-operator' | 'all-flows-ask-mobile-number';
38
38
 
39
39
  export type { ConfigDetails as C, IStrategyNames as I, IStrategy as a };
@@ -1,5 +1,5 @@
1
1
  import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
2
- import { I as IStrategyNames } from './Strategy-BMpqb_fA.js';
2
+ import { I as IStrategyNames } from './Strategy-N2e6pvR0.js';
3
3
  import { C as Click2smsFlowState } from './Click2smsTypes-BbhnGxiA.js';
4
4
  import { C as CreditCardFlowState } from './CreditCardTypes-BvAmIdgA.js';
5
5
  import { d as MoRedirFlowState } from './MoRedirTypes-CpTYupHS.js';
@@ -3,10 +3,10 @@ export { h as ICheckSubscriptionResult, f as IClick2smsConfig, i as IFetchResult
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
- import { i as IHash } from './StrategyTypes-B9Z16995.js';
6
+ import { i as IHash } from './StrategyTypes-BeRho_o_.js';
7
7
  import { useSelector } from 'react-redux';
8
8
  import { R as RemoteDataState } from './RemoteDataState-D1aFrz8W.js';
9
- import './Strategy-BMpqb_fA.js';
9
+ import './Strategy-N2e6pvR0.js';
10
10
  import './CreditCardTypes-BvAmIdgA.js';
11
11
  import './MoRedirTypes-CpTYupHS.js';
12
12
  import './MoTypes-D-UK92gs.js';
@@ -1,4 +1,4 @@
1
- import { a as IStrategy } from './Strategy-BMpqb_fA.js';
1
+ import { a as IStrategy } from './Strategy-N2e6pvR0.js';
2
2
 
3
3
  declare function setConfig(userConfig: IStrategy): void;
4
4
  declare function getConfig(): IStrategy;
@@ -1,11 +1,11 @@
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$1, b as StrategyState } from './StrategyTypes-B9Z16995.js';
4
- export { Q as ExtraStrategyData, H as HEResult, d as IConfig, s as IDENTIFYFailure, j as IDENTIFYMSISDNEntryErrorTypes, t as IDENTIFYSuccess, p as IDENTIFY_FLOW_HESuccess, o as IDENTIFY_OPERATOR_MSISDNEntrySuccess, m as IDETECTYOPERATOBYIPFailure, n as IDETECTYOPERATOBYIPSuccess, v as IDetectOperatorByIpPayload, f as IFlow, i as IHash, D as IIdentfyFlowByIPOperatorNextAction, A as IIdentfyFlowByMsisdnNextAction, B as IIdentfyFlowByOperatorNextAction, z as IIdentifyFlowByHePayload, y as IIdentifyFlowByIpOperatorPayload, c as IIdentifyResult, F as IIdenyifyFlowByMsisdnPayload, E as IIdenyifyFlowByMsisdnSumbitNextData, G as IIdenyifyStrategyPayload, M as IMockFlowParams, L as IMockFlows, R as IMockPinFlowStates, u as IOperatorSelectFlowIdentifyPayload, w as IOperatorSelectPayload, N as IScriptHeaderEnrichmentSuccess, h as IStrategy, J as IStrategyCurrentState, K as IStrategyIDentifyUserResult, x as ISubmitMsisdnPayload, e as ISupportedFlows, k as IdentifyFlowOptionsResult, O as OPERATORSelectFailure, q as OPERATORSelectFlowIdentifyFailure, r as OPERATORSelectFlowIdentifySuccess, l as OPERATORSelectSuccess, T as RootState, g as StrategyConfig } from './StrategyTypes-B9Z16995.js';
3
+ import { S as StrategyCurrentState, I as IDENTIFYMSISDNEntryFailure, a as IDENTIFYMSISDNEntrySuccess, P as PossibleTypes, C as ConfigDetails$1, b as StrategyState } from './StrategyTypes-BeRho_o_.js';
4
+ export { Q as ExtraStrategyData, H as HEResult, d as IConfig, s as IDENTIFYFailure, j as IDENTIFYMSISDNEntryErrorTypes, t as IDENTIFYSuccess, p as IDENTIFY_FLOW_HESuccess, o as IDENTIFY_OPERATOR_MSISDNEntrySuccess, m as IDETECTYOPERATOBYIPFailure, n as IDETECTYOPERATOBYIPSuccess, v as IDetectOperatorByIpPayload, f as IFlow, i as IHash, D as IIdentfyFlowByIPOperatorNextAction, A as IIdentfyFlowByMsisdnNextAction, B as IIdentfyFlowByOperatorNextAction, z as IIdentifyFlowByHePayload, y as IIdentifyFlowByIpOperatorPayload, c as IIdentifyResult, F as IIdenyifyFlowByMsisdnPayload, E as IIdenyifyFlowByMsisdnSumbitNextData, G as IIdenyifyStrategyPayload, M as IMockFlowParams, L as IMockFlows, R as IMockPinFlowStates, u as IOperatorSelectFlowIdentifyPayload, w as IOperatorSelectPayload, N as IScriptHeaderEnrichmentSuccess, h as IStrategy, J as IStrategyCurrentState, K as IStrategyIDentifyUserResult, x as ISubmitMsisdnPayload, e as ISupportedFlows, k as IdentifyFlowOptionsResult, O as OPERATORSelectFailure, q as OPERATORSelectFlowIdentifyFailure, r as OPERATORSelectFlowIdentifySuccess, l as OPERATORSelectSuccess, T as RootState, g as StrategyConfig } from './StrategyTypes-BeRho_o_.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
- import { C as ConfigDetails } from './Strategy-BMpqb_fA.js';
8
+ import { C as ConfigDetails } from './Strategy-N2e6pvR0.js';
9
9
  import * as redux from 'redux';
10
10
  import './Click2smsTypes-BbhnGxiA.js';
11
11
  import './CreditCardTypes-BvAmIdgA.js';
package/dist/ussdFlow.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__awaiter as t,__generator as r,__assign as e,__read as n}from"tslib";import{createAsyncThunk as s,createSlice as o}from"@reduxjs/toolkit";import{S as a,L as i,F as c,N as u}from"./RemoteDataState-lcf8PfJd.js";import{checkSubscriptionHander as d}from"./checkSubscriptionHander.js";import{searchToObject as l}from"./searchToObject.js";import{s as m}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{i as v}from"./strategySlice-CwiREA17.js";import"./helpers-xPhGBX-B.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-Bd0VHMHJ.js";var p=function(t){return t((function(t){return t.ussdFlow.currentState}))};function S(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var y=function(s,o,a,i,c,u,d,l,m){return t(void 0,void 0,void 0,(function(){var t,f,v;return r(this,(function(r){return t=new URLSearchParams(e({action:"ussd",slug:o,country:a,msisdn:i,device:c,offerId:u.toString(),rockman_id:d},l&&{search:l})),m&&m.split("&").forEach((function(r){var e=n(r.split("="),2),s=e[0],o=e[1];s&&t.append(s,o)})),f=s.DEV_BASE_URL||"",v="".concat(f,"/tallyman/v1/?").concat(t.toString()),[2,fetch(v).then((function(t){return t.json()}))]}))}))};function h(n,s,o,a){return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=e({offer:n.pac_analytics.visitor.offer},s||{}),[2,w(n,t,o,a)]}))}))}function w(e,n,s,o){return t(this,void 0,void 0,(function(){var t,a,i,c,u,d,l,m,f,v,p;return r(this,(function(r){switch(r.label){case 0:return t=n.slug,a=n.country,i=n.device,c=n.offer,u=e.location.search.substr(1)||"",d=o?"&".concat(Object.keys(o).map((function(t){return"".concat(t,"=").concat(o[t])})).join("&")):"",l=s.match(/\d+/gi).join(""),m=e.pac_analytics.visitor.rockmanId,[4,y(e,t,a,l,i,c,m,u,d)];case 1:if(!1===(f=r.sent()).success)throw v="ALREADY SUBSCRIBED"===f.message?"AlreadySubscribed":"InvalidMSISDN",(p=new Error("".concat(v,":\n").concat(f.message))).type=v,console.error(p),p;return[2,f]}}))}))}var b={currentState:{type:"MSISDNEntry",result:a({keyword:"TEST OK",shortcode:"777"})}},I={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},E={currentState:{type:"MSISDNEntry",result:u()}},j=function(t){var r=l(t);if(!r["mock-flow"])return E;switch(r["current-state"]){case"msisdn-entry-failure-state":return I;case"msisdn-entry-success-state":return b;default:return console.error("Mock Flow not supported"),E}}(window),g=s("ussdFlow/submitMSISDNAction",(function(n,s){var o=n.window,i=n.msisdn,c=n.extraParams,u=s.getState,l=s.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,n,s,v,p;return r(this,(function(r){switch(r.label){case 0:t=u(),n=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-ussd","msisdn-submitted",{msisdn:i}),[4,h(o,n,i,c)];case 2:return s=r.sent(),f.advancedInFlow("tallyman.v1-ussd","msisdn-submission-success",{msisdn:i}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,m(i).then((function(t){t&&t.data&&t.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){f.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return d({window:o,flow:"tallyman.v1-ussd",action:"sale",args:{msisdn:i}}),[2,{type:"MSISDNEntry",result:a(e({},s))}];case 5:switch(v=r.sent(),console.warn(v),p=void 0,v.type){case"AlreadySubscribed":p="AlreadySubscribed";break;case"InvalidMSISDN":p="InvalidMSISDN";break;default:p="UnknownError"}return f.recedeInFlow("tallyman.v1-ussd","msisdn-submission-failure",{msisdn:i,errorType:p||"UnknownError"}),[2,l({errorType:p,productUrl:v.productUrl})];case 6:return[2]}}))}))})),M=s("moRedirFlow/backToStartAction",(function(e,n){var s=n.dispatch,o=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){return r(this,(function(t){try{f.recedeInFlow("tallyman.v1-ussd","ussd-state","requested to change phone number"),s(v())}catch(t){return console.warn(t),[2,o({errorType:"UnexpectedState"})]}return[2]}))}))})),D=o({name:"ussdFlow",initialState:j,reducers:{},extraReducers:function(t){t.addCase(g.pending,(function(t){t.currentState={type:"MSISDNEntry",result:i()}})).addCase(g.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(g.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),k=D.reducer;D.actions;export{M as backToStartAction,g as submitMSISDNAction,p as useUssdFlowState,S as ussdFlowMatch,k as ussdFlowReducer};
1
+ import{__awaiter as t,__generator as r,__assign as e,__read as n}from"tslib";import{createAsyncThunk as s,createSlice as o}from"@reduxjs/toolkit";import{S as a,L as i,F as c,N as u}from"./RemoteDataState-lcf8PfJd.js";import{checkSubscriptionHander as d}from"./checkSubscriptionHander.js";import{searchToObject as l}from"./searchToObject.js";import{s as m}from"./storeMsisdn-Cjq8_qYH.js";import{t as f}from"./tracker-DaaILhEr.js";import{i as v}from"./strategySlice-DuYLxEUR.js";import"./helpers-xPhGBX-B.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-Bd0VHMHJ.js";var p=function(t){return t((function(t){return t.ussdFlow.currentState}))};function S(t){var r=t.msisdnEntry;return function(t){return t.type,r(t.result)}}var y=function(s,o,a,i,c,u,d,l,m){return t(void 0,void 0,void 0,(function(){var t,f,v;return r(this,(function(r){return t=new URLSearchParams(e({action:"ussd",slug:o,country:a,msisdn:i,device:c,offerId:u.toString(),rockman_id:d},l&&{search:l})),m&&m.split("&").forEach((function(r){var e=n(r.split("="),2),s=e[0],o=e[1];s&&t.append(s,o)})),f=s.DEV_BASE_URL||"",v="".concat(f,"/tallyman/v1/?").concat(t.toString()),[2,fetch(v).then((function(t){return t.json()}))]}))}))};function h(n,s,o,a){return t(this,void 0,void 0,(function(){var t;return r(this,(function(r){return t=e({offer:n.pac_analytics.visitor.offer},s||{}),[2,w(n,t,o,a)]}))}))}function w(e,n,s,o){return t(this,void 0,void 0,(function(){var t,a,i,c,u,d,l,m,f,v,p;return r(this,(function(r){switch(r.label){case 0:return t=n.slug,a=n.country,i=n.device,c=n.offer,u=e.location.search.substr(1)||"",d=o?"&".concat(Object.keys(o).map((function(t){return"".concat(t,"=").concat(o[t])})).join("&")):"",l=s.match(/\d+/gi).join(""),m=e.pac_analytics.visitor.rockmanId,[4,y(e,t,a,l,i,c,m,u,d)];case 1:if(!1===(f=r.sent()).success)throw v="ALREADY SUBSCRIBED"===f.message?"AlreadySubscribed":"InvalidMSISDN",(p=new Error("".concat(v,":\n").concat(f.message))).type=v,console.error(p),p;return[2,f]}}))}))}var b={currentState:{type:"MSISDNEntry",result:a({keyword:"TEST OK",shortcode:"777"})}},I={currentState:{type:"MSISDNEntry",result:c({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},E={currentState:{type:"MSISDNEntry",result:u()}},j=function(t){var r=l(t);if(!r["mock-flow"])return E;switch(r["current-state"]){case"msisdn-entry-failure-state":return I;case"msisdn-entry-success-state":return b;default:return console.error("Mock Flow not supported"),E}}(window),g=s("ussdFlow/submitMSISDNAction",(function(n,s){var o=n.window,i=n.msisdn,c=n.extraParams,u=s.getState,l=s.rejectWithValue;return t(void 0,void 0,void 0,(function(){var t,n,s,v,p;return r(this,(function(r){switch(r.label){case 0:t=u(),n=t.strategy.currentState.data.config,r.label=1;case 1:return r.trys.push([1,5,,6]),f.advancedInFlow("tallyman.v1-ussd","msisdn-submitted",{msisdn:i}),[4,h(o,n,i,c)];case 2:return s=r.sent(),f.advancedInFlow("tallyman.v1-ussd","msisdn-submission-success",{msisdn:i}),c&&c.storeMsisdn&&"true"===c.storeMsisdn?[4,m(i).then((function(t){t&&t.data&&t.data.success?f.customEvent("Flow","advance-auto","msisdn-stored-success"):f.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(t){f.customEvent("Flow","advance-auto","msisdn-stored-error",t)}))]:[3,4];case 3:r.sent(),r.label=4;case 4:return d({window:o,flow:"tallyman.v1-ussd",action:"sale",args:{msisdn:i}}),[2,{type:"MSISDNEntry",result:a(e({},s))}];case 5:switch(v=r.sent(),console.warn(v),p=void 0,v.type){case"AlreadySubscribed":p="AlreadySubscribed";break;case"InvalidMSISDN":p="InvalidMSISDN";break;default:p="UnknownError"}return f.recedeInFlow("tallyman.v1-ussd","msisdn-submission-failure",{msisdn:i,errorType:p||"UnknownError"}),[2,l({errorType:p,productUrl:v.productUrl})];case 6:return[2]}}))}))})),M=s("moRedirFlow/backToStartAction",(function(e,n){var s=n.dispatch,o=n.rejectWithValue;return t(void 0,void 0,void 0,(function(){return r(this,(function(t){try{f.recedeInFlow("tallyman.v1-ussd","ussd-state","requested to change phone number"),s(v())}catch(t){return console.warn(t),[2,o({errorType:"UnexpectedState"})]}return[2]}))}))})),D=o({name:"ussdFlow",initialState:j,reducers:{},extraReducers:function(t){t.addCase(g.pending,(function(t){t.currentState={type:"MSISDNEntry",result:i()}})).addCase(g.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(g.rejected,(function(t,r){t.currentState={type:"MSISDNEntry",result:c(r.payload)}}))}}),k=D.reducer;D.actions;export{M as backToStartAction,g as submitMSISDNAction,p as useUssdFlowState,S as ussdFlowMatch,k as ussdFlowReducer};
2
2
  //# sourceMappingURL=ussdFlow.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ouisys-engine",
3
- "version": "5.0.84",
3
+ "version": "5.0.85",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "directories": "dist dev-tools",
@@ -1,2 +0,0 @@
1
- import{__awaiter as e,__generator as t,__assign as r}from"tslib";import{createAsyncThunk as o,createSlice as n}from"@reduxjs/toolkit";import{N as i,S as a,L as s,F as l}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as d}from"./searchToObject.js";import{getConfig as u}from"./getConfig.js";import{q as c,t as f}from"./tracker-DaaILhEr.js";import{f as v}from"./formatNumberToE164-Bd0VHMHJ.js";var p;function w(r){return e(this,void 0,void 0,(function(){var e,o,n,i,a;return t(this,(function(t){switch(t.label){case 0:if(e=c(window.location.href,"mock-ip")||process.env.mock_ip,console.log("mockip",e),r.ip||"undefined"==typeof window)return[3,5];t.label=1;case 1:return t.trys.push([1,3,,4]),o=window.location.host,n=window.DEV_BASE_URL_IP||o,[4,fetch("https://".concat(n,"/api/v1/ip").concat(e?"?mock-ip=".concat(e):"")).then((function(e){return e.json()}))];case 2:return i=t.sent(),r.ip=i.ip,r.ip_range_name=i.ip_range_name,[2,i.ip_range_name];case 3:return a=t.sent(),console.warn("IP Lookup failed",a),[2,""];case 4:return[3,6];case 5:return[2,r.ip_range_name||""];case 6:return[2]}}))}))}!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 m=function(r){var o=r.window,n=r.slug,i=r.country,a=r.msisdn,s=r.device,l=r.offer,d=r.rockmanId;return e(void 0,void 0,void 0,(function(){var e,r,u,c,f;return t(this,(function(t){switch(t.label){case 0:return e=o.languageCode||"",r=encodeURIComponent(o.location.href),u=o.DEV_BASE_URL||"",c=new URLSearchParams({action:"identify",slug:n,country:i,msisdn:a,device:s,offerId:l,rockman_id:d,page:r,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},y={mo:"Msisdn to sms",pin:"Pin",oneClick:"3G click",moRedir:"Redirect",click2sms:"Click to sms",tpayHe:"Pin",ussd:"Msisdn to sms"},E=function(e){return y[e]};function S(o){var n,i,a,s,l=o.window,d=o.internationalMSISDN,u=o.configs;return e(this,void 0,void 0,(function(){var o,c,f,v,p,w,g,y,E,S,h=this;return t(this,(function(I){switch(I.label){case 0:if(!d)throw(S=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",S;return o=(null===(n=d.match(/\d+/gi))||void 0===n?void 0:n.join(""))||"",c=null===(i=null==u?void 0:u.strategyConfigs)||void 0===i?void 0:i.default,f=c.flowConfig,v=null===(a=null==u?void 0:u.strategyConfigs)||void 0===a?void 0:a.operators,p=function(){return e(h,void 0,void 0,(function(){var e,r,n,i,a;return t(this,(function(t){switch(t.label){case 0:return e=f.slug,r=f.country,n=f.device,i=l.pac_analytics.visitor.rockmanId,a=l.pac_analytics.visitor.offer,[4,m({window:l,slug:e,country:r,msisdn:o,device:n,offer:a,rockmanId:i})];case 1:return[2,t.sent()]}}))}))},[4,p()];case 1:if(w=I.sent(),g=v[w.operator]?v[w.operator]:null,y=!1===w.success&&"Operator could not be found for the given MSISDN"===w.message,E=!1===w.success&&-1!==(null===(s=w.message)||void 0===s?void 0:s.indexOf("HLR did not find the operator for given MSISDN")),y||E)throw(S=new Error("Error in submitMSISDN() identify action")).type="FlowDetectFailed",S.msisdn=o,S;if(null!==g)return[2,r({operator:w.operator,default:c},g)];if(null===g)return[2,r({operator:w.operator},c)];throw(S=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",S}}))}))}function h(e){var t,o,n=e.configs,i=e.operator,a=null===(t=null==n?void 0:n.strategyConfigs)||void 0===t?void 0:t.default,s=null===(o=null==n?void 0:n.strategyConfigs)||void 0===o?void 0:o.operators;return r({operator:null==i?void 0:i.toUpperCase(),default:a},s[null==i?void 0:i.toUpperCase()])}function I(r){var o=r.window,n=r.configs;return e(this,void 0,void 0,(function(){var e;return t(this,(function(t){switch(t.label){case 0:return[4,w(o.pac_analytics.visitor)];case 1:return e=t.sent(),[2,h({configs:n,operator:e&&e.includes("_")?e.toUpperCase():""})]}}))}))}var _=function(){return{type:p.IDENTIFY_FLOW_BY_MSISDN,result:i()}},C=o("strategy/submitMSISDNAction",(function(r,o){var n=r.window,a=r.msisdn,s=o.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,o,l,d,c,v,p,w;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),[4,S({window:n,internationalMSISDN:a,configs:e})];case 1:return r=t.sent(),o=null==r?void 0:r.flow,l=E(o),d=null===(w=null==e?void 0:e.strategyConfigs)||void 0===w?void 0:w.default,c=null==d?void 0:d.flow,g[o]?(f.sendOptInFlowEvent(l),[2,{type:g[o],result:i(),data:{config:r.flowConfig,operator:r.operator,msisdn:a}}]):[2,{type:g[c],result:i(),data:{config:null==d?void 0:d.flowConfig}}];case 2:switch(v=t.sent(),p=void 0,v.type){case"SEAlreadySubscribed":p="AlreadySubscribed";break;case"SEInvalidMSISDN":p="InvalidMSISDN";break;default:p="UnknownError"}return[2,s({errorType:p,error:v,productUrl:v.productUrl})];case 3:return[2]}}))}))})),D=function(){var e=function(e){var t,r=e.configs,o=null===(t=null==r?void 0:r.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}}},T=o("strategy/selectOperatorAction",(function(r,o){var n=r.operator,a=o.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,o,s;return t(this,(function(t){try{return e=u(),r=h({configs:e,operator:n}),o=r.flow,s=E(o),f.sendOptInFlowEvent(s),[2,{type:g[o],result:i(),data:{config:r.flowConfig,operator:r.operator}}]}catch(e){return"UnkownError",[2,a({errorType:"UnkownError",error:e.toString()})]}return[2]}))}))})),O=function(r){return e(void 0,void 0,void 0,(function(){var e,o,n,a,s,l,d,c;return t(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),e=u(),[4,I({window:window,configs:e})];case 1:return o=t.sent(),n=null===(c=null==e?void 0:e.strategyConfigs)||void 0===c?void 0:c.default,a=null==n?void 0:n.flow,o.flow||"all-flows-detect-operator-by-ip-or-ask-mobile-number"!==r?o.flow||"all-flows-detect-operator-by-ip-or-ask-operator"!==r?(s=o.flow,g[s]?(l=E(s),f.sendOptInFlowEvent(l),[2,{type:g[s],result:i(),data:{config:o.flowConfig,operator:o.operator}}]):[2,{type:g[a],result:i(),data:{config:null==n?void 0:n.flowConfig}}]):[2,D()]:[2,_()];case 2:return d=t.sent(),console.error("error",d),[3,3];case 3:return[2]}}))}))},R=function(e){return{type:p.PIN,result:i(),data:{config:e}}},N=function(r){var o=r.window;return e(void 0,void 0,void 0,(function(){var e,r,n,i,s;return t(this,(function(t){return e=u(),r=null==e?void 0:e.enableScriptTimer,n=e.strategyConfigs,i=null===(s=null==n?void 0:n.default)||void 0===s?void 0:s.flowConfig,[2,new Promise((function(e){var t,s,l,d;try{var c=null===(s=null===(t=null==o?void 0:o.pac_analytics)||void 0===t?void 0:t.visitor)||void 0===s?void 0:s.heMsisdn,w=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&&w&&(c=v(c,w));var m,g=!1,y=!1;r&&(m=setTimeout((function(){var t;g||(y=!0,f.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"3 second timer expired"}),o.isPrelanderClicked=!0,e({type:p.PIN,result:a({}),data:{config:null===(t=null==n?void 0:n.default)||void 0===t?void 0:t.flowConfig}}))}),3e3));var E=function(t){var n=t.detail;if((null==n?void 0:n.msisdn)&&(c=v(n.msisdn,w),o.msisdn=c),r){if(!y){g=!0,clearTimeout(m),f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c});var i=h({configs:u(),operator:null==n?void 0:n.operator_code});o.removeEventListener("he-success",E),o.removeEventListener("he-fail",S),e(b(i,c,null==n?void 0:n.operator_code,!0))}}else{f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c,operator:null==n?void 0:n.operator_code});i=h({configs:u(),operator:null==n?void 0:n.operator_code});o.removeEventListener("he-success",E),o.removeEventListener("he-fail",S),e(b(i,c,null==n?void 0:n.operator_code,!0))}},S=function(){o.removeEventListener("he-success",E),o.removeEventListener("he-fail",S),e(R(i))};if(o.addEventListener("he-success",E),o.addEventListener("he-fail",S),!(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 I=document.createElement("script");I.type="text/javascript",I.id="he-js-link",I.src="".concat(o.heScriptUrl),I.referrerPolicy="origin",document.head.appendChild(I),I.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(R(i))}}))]}))}))},b=function(e,t,r,o){var n,a;void 0===t&&(t=null),void 0===r&&(r=null);var s=null===(n=u().strategyConfigs)||void 0===n?void 0:n.default,l=null==s?void 0:s.flow,d=e.flow||(null===(a=e.default)||void 0===a?void 0:a.flow),c=E(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==s?void 0:s.flowConfig,operator:r,msisdn:t,isHeaderEnrichmentSuccess:o}}},F={currentState:{type:p.IDENTIFY_STRATEGY,result:i(),data:void 0}},k=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:a({})};case"mo":return{type:p.MO,result:a({})};case"moredir":return{type:p.MO_REDIR,result:a({})};case"oneclick":return{type:p.ONE_CLICK,result:a({}),data:{subscription_url:e["subscription-url"]}};case"click2sms":return{type:p.CLICK2SMS,result:a({})};case"ussd":return{type:p.USSD,result:a({})};case"creditcard":return{type:p.CREDIT_CARD,result:a({})};default:throw new Error("(mockStrategyStateByUrlParam) Strategy Mock Flow not supported")}},L=o("strategy/identifyStrategy",(function(){return e(void 0,void 0,void 0,(function(){var r,o,n,s,l,c,w,m,y,S,I,C,T;return t(this,(function(R){switch(R.label){case 0:return r=u(),o=r.strategy,n=r.strategyConfigs,void 0!==(s=d(window))["mock-flow"]?[2,k()]:s["show-pin-entry"]&&"1"===s["show-pin-entry"]||s["show-thank-you"]&&"1"===s["show-thank-you"]?(l=h({configs:r,operator:s.operator}),[2,{type:p.PIN,result:a({}),data:{config:(null==l?void 0:l.flowConfig)||(null===(c=null==n?void 0:n.default)||void 0===c?void 0:c.flowConfig)}}]):o.includes("ask-operator")?[2,D()]:o.includes("detect-operator-by-ip")?[2,O(o)]:(null==o?void 0:o.includes("ask-mobile-number"))?[2,_()]:(null==o?void 0:o.includes("header-enrichment"))&&"header-enrichment-script"!==o?[4,e(void 0,void 0,void 0,(function(){var r,o,n,a,s,l,c,p,w,m,y,S;return t(this,(function(I){switch(I.label){case 0:r=u(),o=null==r?void 0:r.strategyConfigs.default,n=o.flow,I.label=1;case 1:return I.trys.push([1,5,,6]),a=d(window),(s=(null==a?void 0:a.msisdn)&&""!==(null==a?void 0:a.msisdn))&&f.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:null==a?void 0:a.msisdn,operator:null==a?void 0:a.operator}),(null==a?void 0:a.operator)?"pin-header-enrichment"===r.strategy&&s?[2,{type:g[n],result:i(),data:{config:null==o?void 0:o.flowConfig,operator:(null==a?void 0:a.operator)||null,msisdn:(null==a?void 0:a.msisdn)||null,isHeaderEnrichmentSuccess:s}}]:(l=null,c=null,[4,h({operator:null==a?void 0:a.operator,configs:r})]):[2,{type:g[n],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 2:return p=I.sent(),w=p.flow||n,m=E(w),f.sendOptInFlowEvent(m),"oneClick"!==w?[3,4]:[4,e(void 0,void 0,void 0,(function(){var e,r,o,n,i,a,s,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(!(r=e.subscription_url||e.redirect_url))throw new Error("No URL provided for redirection");return o=window.atob(r),n=new URL(o),i=new URLSearchParams(n.search),a=i.get("msisdn")||e.msisdn,s=i.get("operator")||e.operator,a&&(a=v(a,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:a||"",operator:s||"",subscription_url:e.subscription_url?o:void 0,redirect_url:e.redirect_url?o:void 0}]}))}))];case 3:y=I.sent(),l=(null==y?void 0:y.subscription_url)||null,c=(null==y?void 0:y.redirect_url)||null,I.label=4;case 4:return[2,{type:g[w],result:i(),data:{config:p.flowConfig,operator:p.operator,subscription_url:l||null,redirect_url:c||null,isHeaderEnrichmentSuccess:s}}];case 5:return S=I.sent(),console.error("error",S),[2,{type:g[n],result:i(),data:{config:null==o?void 0:o.flowConfig}}];case 6:return[2]}}))}))]:[3,2];case 1:return[2,R.sent()];case 2:switch(o){case"header-enrichment-script":return[2,N({window:window})];case"pin":return f.sendOptInFlowEvent("Pin"),[2,{type:p.PIN,result:a({}),data:{config:null===(w=null==n?void 0:n.default)||void 0===w?void 0:w.flowConfig}}];case"mo":return f.sendOptInFlowEvent("Msisdn to sms"),[2,{type:p.MO,result:a({}),data:{config:null===(m=null==n?void 0:n.default)||void 0===m?void 0:m.flowConfig}}];case"mo-redir":return[2,{type:p.MO_REDIR,result:a({}),data:{config:null===(y=null==n?void 0:n.default)||void 0===y?void 0:y.flowConfig}}];case"one-click":return f.sendOptInFlowEvent("Redirect"),[2,{type:p.ONE_CLICK,result:a({}),data:{config:null===(S=null==n?void 0:n.default)||void 0===S?void 0:S.flowConfig}}];case"click2sms":return f.sendOptInFlowEvent("Click to sms"),[2,{type:p.CLICK2SMS,result:a({}),data:{config:null===(I=null==n?void 0:n.default)||void 0===I?void 0:I.flowConfig}}];case"ussd":return f.sendOptInFlowEvent("USSD"),[2,{type:p.USSD,result:a({}),data:{config:null===(C=null==n?void 0:n.default)||void 0===C?void 0:C.flowConfig}}];case"credit-card":return f.sendOptInFlowEvent("Credit card"),[2,{type:p.CREDIT_CARD,result:a({}),data:{config:null===(T=null==n?void 0:n.default)||void 0===T?void 0:T.flowConfig}}];default:throw new Error("Strategy not supported")}}}))}))})),M=o("strategy/setStrategyExtraData",(function(r){var o=r.type,n=r.data;return e(void 0,void 0,void 0,(function(){return t(this,(function(e){return[2,{type:o,result:i(),data:n}]}))}))})),Y=n({name:"strategy",initialState:F,reducers:{},extraReducers:function(e){e.addCase(L.pending,(function(e){e.currentState={type:p.IDENTIFY_STRATEGY,result:s()}})).addCase(L.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(L.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_STRATEGY,result:l(t.error.message)}})).addCase(C.pending,(function(e){e.currentState={type:p.IDENTIFY_FLOW_BY_MSISDN,result:s()}})).addCase(C.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(C.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_FLOW_BY_MSISDN,result:l(t.payload)}})).addCase(M.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(T.pending,(function(e){e.currentState={type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:s()}})).addCase(T.fulfilled,(function(e,t){e.currentState=t.payload})).addCase(T.rejected,(function(e,t){e.currentState={type:p.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:l(t.payload)}}))}}).reducer;export{p as P,T as a,Y as b,M as c,L as i,C as s,w as t};
2
- //# sourceMappingURL=strategySlice-CwiREA17.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strategySlice-CwiREA17.js","sources":["../src/sharedFlowTypes/StrategyTypes.ts","../src/ips/tryGetIPRangeName.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 { IStrategyNames } from '../common-types/Strategy';\nimport { Click2smsFlowState } from './Click2smsTypes';\nimport { CreditCardFlowState } from './CreditCardTypes';\nimport { MoRedirFlowState } from './MoRedirTypes';\nimport { MoFlowState } from './MoTypes';\nimport { OneClickFlowState } from './OneClickTypes';\nimport { PinFlowState } from './PinTypes';\nimport { UssdFlowState } from './UssdTypes';\n\nexport type IIdentifyResult = {\n operator: string;\n flow?: string;\n success: boolean;\n rockman_id?: string;\n message?: string;\n};\n\nexport interface HEResult {\n msisdn: string;\n operator: string;\n subscription_url?: string;\n redirect_url?: string;\n}\n\nexport type ConfigDetails = {\n host: string;\n slug: string;\n country: string;\n device?: 'smart' | 'feature';\n queryString?: Array<[string, string]>;\n automaticallySubmitAllOperators?: boolean;\n operators?: string[];\n service: string;\n offer?: string;\n};\n\nexport type IConfig = {\n offer?: string;\n slug?: string;\n country?: string;\n host?: string;\n device?: 'smart' | 'feature';\n automaticallySubmitAllOperators?: boolean;\n operators?: string[];\n service?: string;\n serviceId?: string;\n queryString?: any;\n apiAction?: any;\n};\n\nexport type ISupportedFlows = 'pin' | 'mo' | 'oneClick' | 'click2sms' | 'moRedir' | 'ussd' | 'creditCard';\nexport type IFlow = {\n flow: ISupportedFlows;\n flowOnWifi?: ISupportedFlows;\n operator?: string;\n flowConfig: ConfigDetails;\n default?: IFlow;\n rockman_id?: string;\n};\n\nexport type StrategyConfig = {\n operators: {\n [key: string]: IFlow;\n };\n default: IFlow;\n isUseMsisdnPrefix?: boolean;\n};\n// export type IStrategy = IPinStrategy | IMoStrategy;\n\nexport type IStrategy = {\n strategy: IStrategyNames;\n country: string;\n strategyConfigs: StrategyConfig;\n};\n\nexport interface IHash {\n [key: string]: string;\n}\n\nexport type IDENTIFYMSISDNEntryErrorTypes = 'AlreadySubscribed' | 'UnknownError' | 'InvalidMSISDN';\n\nexport type IDENTIFYMSISDNEntryFailure = {\n errorType: IDENTIFYMSISDNEntryErrorTypes;\n error: unknown;\n};\n\nexport type IdentifyFlowOptionsResult = {\n config: IConfig;\n nextAction?: unknown;\n msisdn?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n rockman_id?: string;\n isHeaderEnrichmentSuccess?: boolean;\n autoRedirect?: boolean;\n isUseMsisdnPrefix?: boolean;\n};\n\nexport type IDENTIFYMSISDNEntrySuccess = {};\nexport type OPERATORSelectFailure = {};\nexport type OPERATORSelectSuccess = IdentifyFlowOptionsResult;\n\nexport type IDETECTYOPERATOBYIPFailure = {};\nexport type IDETECTYOPERATOBYIPSuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_OPERATOR_MSISDNEntrySuccess = IdentifyFlowOptionsResult;\n\nexport type IDENTIFY_FLOW_HESuccess = IdentifyFlowOptionsResult;\n\nexport type OPERATORSelectFlowIdentifyFailure = {};\nexport type OPERATORSelectFlowIdentifySuccess = {\n operators: Array<string>;\n msisdn?: string;\n nextAction: 'selectOperator';\n};\nexport type IDENTIFYFailure = {};\n\nexport type IDENTIFYSuccess = {};\n\nexport type IOperatorSelectFlowIdentifyPayload = {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFlowIdentifyFailure, OPERATORSelectFlowIdentifySuccess>;\n};\n\n// export type IIdentifyByIPPayload= {\n// type:\"IDENTIFY_FLOW_BY_IP\"\n// result: RDS.RemoteDataState<IDENTIFYBYIPFailure, IDENTIFYBYIPSuccess>;\n// }\n\nexport type IDetectOperatorByIpPayload = {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n};\n\nexport enum PossibleTypes {\n IDENTIFY_STRATEGY = 'IDENTIFY_STRATEGY',\n IDENTIFY_FLOW_BY_MSISDN = 'IDENTIFY_FLOW_BY_MSISDN',\n IDENTIFY_FLOW_BY_OPERATOR_SELECT = 'IDENTIFY_FLOW_BY_OPERATOR_SELECT',\n PIN = 'PIN',\n MO = 'MO',\n MO_REDIR = 'MO_REDIR',\n ONE_CLICK = 'ONE_CLICK',\n CLICK2SMS = 'CLICK2SMS',\n USSD = 'USSD',\n TPAY_HE = 'TPAY_HE',\n CREDIT_CARD = 'CREDIT_CARD'\n}\n\nexport type IOperatorSelectPayload = {\n type: PossibleTypes;\n result: OPERATORSelectSuccess;\n};\n\nexport type ISubmitMsisdnPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByIpOperatorPayload = {\n type: PossibleTypes;\n result: IDENTIFY_OPERATOR_MSISDNEntrySuccess;\n};\n\nexport type IIdentifyFlowByHePayload = {\n type: PossibleTypes;\n result: IDENTIFY_FLOW_HESuccess;\n};\n\nexport type IIdentfyFlowByMsisdnNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByOperatorNextAction = 'submitMSISDNAction' | 'loadOc2sms';\nexport type IIdentfyFlowByIPOperatorNextAction = 'getRedirectUrlAction' | 'submitMSISDNAction';\n\nexport type IIdenyifyFlowByMsisdnSumbitNextData = {\n nextAction: IIdentfyFlowByMsisdnNextAction;\n msisdn?: string;\n operator?: string;\n};\n\nexport type IIdenyifyFlowByMsisdnPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IIdenyifyStrategyPayload = {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n data: IIdenyifyFlowByMsisdnSumbitNextData;\n};\n\nexport type IStrategyCurrentState =\n | {\n type: 'IDENTIFY_STRATEGY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_OPERATOR_SELECT';\n result: OPERATORSelectFlowIdentifySuccess;\n }\n | {\n type: 'DETECT_OPERATOR_BY_IP';\n result: RDS.RemoteDataState<IDETECTYOPERATOBYIPFailure, IDETECTYOPERATOBYIPSuccess>;\n }\n | {\n type: 'HE_IDENTIFY';\n result: RDS.RemoteDataState<IDENTIFYFailure, IDENTIFYSuccess>;\n }\n | {\n type: 'OPERATOR_SELECT';\n result: RDS.RemoteDataState<OPERATORSelectFailure, OPERATORSelectSuccess>;\n config: IConfig;\n }\n | {\n type: 'IDENTIFY_FLOW_BY_MSISDN';\n result: RDS.RemoteDataState<IDENTIFYMSISDNEntryFailure, IDENTIFYMSISDNEntrySuccess>;\n nextData: IIdenyifyFlowByMsisdnSumbitNextData;\n }\n | {\n type: 'PIN';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'USSD';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'MO_REDIR';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'ONE_CLICK';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CLICK2SMS';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'TPAY_HE';\n result: IdentifyFlowOptionsResult;\n }\n | {\n type: 'CREDIT_CARD';\n result: IdentifyFlowOptionsResult;\n };\n\nexport type IStrategyIDentifyUserResult =\n | {\n success: 'true';\n rockman_id: string;\n msisdn: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n 'redirect-back'?: string;\n 'msisdn-alias'?: string;\n }\n | {\n success: 'false';\n rockman_id: string;\n message: string;\n 'redirect-back'?: string;\n };\n\nexport type IMockFlows = 'pin' | 'mo' | 'oneclick' | 'click2sms' | 'moredir' | 'ussd' | 'tpay' | 'creditcard';\n\nexport interface IMockFlowParams<T> {\n 'mock-flow': IMockFlows;\n 'current-state': T;\n 'show-pin-entry': '1' | '0';\n 'show-thank-you': '1' | '0';\n 'show-chain-link': '1' | '0';\n operator: string;\n msisdn?: string;\n 'subscription-url'?: string;\n show_custom_error?: string;\n product_url?: string;\n}\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","/* eslint-disable no-param-reassign */\nimport { IVisitor } from '../common-types/IVisitor';\nimport queryString from '../pacman/queryString';\n\n// eslint-disable-next-line consistent-return\nexport default async function tryGetIPRangeName(visitor: IVisitor): Promise<string> {\n const mockip = queryString(window.location.href, 'mock-ip') || process.env.mock_ip;\n // eslint-disable-next-line no-console\n console.log('mockip', mockip);\n if (!visitor.ip && typeof window !== 'undefined') {\n try {\n const { host } = window.location;\n const newHost = window.DEV_BASE_URL_IP || host;\n const res = await fetch(`https://${newHost}/api/v1/ip${mockip ? `?mock-ip=${mockip}` : ''}`).then((x) =>\n x.json()\n );\n // return isIPInRange('37.200.146.28')\n visitor.ip = res.ip;\n visitor.ip_range_name = res.ip_range_name;\n return res.ip_range_name;\n } catch (ex) {\n console.warn('IP Lookup failed', ex);\n return '';\n }\n } else {\n return visitor.ip_range_name || '';\n }\n}\n","import { 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 || '';\n const locationHref = encodeURIComponent(window.location.href);\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 ISupportedFlows,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn, flowMapping, getTrackerEventName } from '../main';\n\nexport const askMobileNumber = (): StrategyCurrentState => ({\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.NothingYet()\n});\n\nexport const submitMSISDNAction = createAsyncThunk(\n 'strategy/submitMSISDNAction',\n async (\n {\n window,\n msisdn\n }: {\n window: Window;\n msisdn: string;\n isHeSuccess?: boolean;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n const flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n const flowType = flowObj?.flow;\n const event = getTrackerEventName(flowType);\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n msisdn\n }\n };\n } catch (ex) {\n let errorType: IDENTIFYMSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'SEAlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'SEInvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n return rejectWithValue({\n errorType,\n error: ex,\n productUrl: ex.productUrl\n });\n }\n }\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\n\nimport { PossibleTypes, StrategyCurrentState } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getOperators, getTrackerEventName } from '../main';\n\nexport const askOperator = (): StrategyCurrentState => {\n const configs = getConfig();\n const operators = getOperators({ configs });\n return {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.NothingYet(),\n data: {\n operators\n }\n };\n};\n\nexport const selectOperatorAction = createAsyncThunk(\n 'strategy/selectOperatorAction',\n async (\n {\n operator\n }: {\n operator: string;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n\n const flowObj = determineFlowByOperator({\n configs,\n operator\n });\n\n const flowType = flowObj.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator\n }\n };\n } catch (ex) {\n const errorType = 'UnkownError';\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n }\n);\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategyNames, ISupportedFlows } from '../../../common-types/Strategy';\n\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp, flowMapping, getTrackerEventName } from '../main';\nimport { askMobileNumber } from './askMobileNumber';\nimport { askOperator } from './askOperator';\n\nconst detectOperatorByIp = async (strategy?: IStrategyNames) => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (!flowObj.flow && strategy === 'all-flows-detect-operator-by-ip-or-ask-mobile-number') {\n return askMobileNumber();\n }\n if (!flowObj.flow && strategy === 'all-flows-detect-operator-by-ip-or-ask-operator') {\n return askOperator();\n }\n\n const flowType = flowObj.flow;\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator\n }\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 if (isHeaderEnrichmentSuccess) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: search?.msisdn,\n operator: search?.operator\n });\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 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","tryGetIPRangeName","visitor","mockip","queryString","window","location","href","process","env","mock_ip","console","log","ip","host","newHost","DEV_BASE_URL_IP","fetch","concat","then","x","json","res","_a","sent","ip_range_name","warn","ex_1","identify","slug","country","msisdn","device","offer","rockmanId","languageCode","locationHref","encodeURIComponent","DEV_BASE_URL","urlParams","URLSearchParams","action","offerId","rockman_id","page","language_code","toString","url","_b","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","Error","type","match","join","defaultFlowConfig","_c","strategyConfigs","default","config","flowConfig","operatorsConfig","_d","operators","indentifyFlow","__awaiter","_this","pac_analytics","theResult","_f","flow","operator","cannotDetect","success","message","hlrError","_e","indexOf","__assign","determineFlowByOperator","toUpperCase","determineFlowByOperatorFromIp","includes","askMobileNumber","IDENTIFY_FLOW_BY_MSISDN","result","RDS.NothingYet","submitMSISDNAction","createAsyncThunk","rejectWithValue","getConfig","flowObj","event_1","defaultConfig","defaultFlowType","tracker","sendOptInFlowEvent","data","errorType","error","productUrl","askOperator","Object","keys","getOperators","IDENTIFY_FLOW_BY_OPERATOR_SELECT","selectOperatorAction","ex","detectOperatorByIp","strategy","createResponseObject","injectHeaderEnrichmentScript","enableScriptTimer","Promise","resolve","heMsisdn_1","heMsisdn","country_1","formatNumberToE164","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","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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"}