ouisys-engine 5.0.128 → 5.0.130

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-CPnzsspR.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.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"})}},j={currentState:{type:"MSISDNEntry",result:u()}},I=function(t){var r=d(t);if(!r["mock-flow"])return j;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"),j}}(window),g=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:I,reducers:{},extraReducers:function(t){t.addCase(g.pending,(function(t){t.currentState={type:"MSISDNEntry",result:s()}})).addCase(g.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(g.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,g 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-BqABgMaS.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.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"})}},j={currentState:{type:"MSISDNEntry",result:u()}},I=function(t){var r=d(t);if(!r["mock-flow"])return j;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"),j}}(window),g=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:I,reducers:{},extraReducers:function(t){t.addCase(g.pending,(function(t){t.currentState={type:"MSISDNEntry",result:s()}})).addCase(g.fulfilled,(function(t,r){t.currentState=r.payload})).addCase(g.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,g 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 i,L as s,F as o,N as c}from"./RemoteDataState-lcf8PfJd.js";import{c as d}from"./formatNumberToE164-DaAFvpKD.js";import{searchToObject as u}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{u as f}from"./updateUrlWithParams-C6-BX4TY.js";import{t as v,i as p}from"./strategySlice-CPnzsspR.js";import{c as y}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./api-geirVksI.js";var S=function(r){return r((function(r){return r.moRedirFlow.currentState}))};function h(r){var e=r.msisdnEntry;return function(r){return r.type,e(r.result)}}var _=function(r,e){var t=r.replace(/\D/g,"");if(e&&d[e]){var n=d[e];t.startsWith(n)&&(t=t.substring(n.length))}return!t.startsWith("0")&&t.length>0&&(t="0".concat(t)),t},w=function(n){var a=n.window,i=n.slug,s=n.country,o=n.msisdn,c=n.device,d=n.offer,u=n.rockmanId,l=n.ip_range_name,m=n.search,f=n.extraParams,v=n.email,p=n.password;return r(void 0,void 0,void 0,(function(){var r,n,S,h,_,w,g,b,I;return e(this,(function(e){return m=y(m),r="&".concat(Object.keys(f).map((function(r){return f[r]?"".concat(r,"=").concat(f[r]):""})).filter(Boolean).join("&")),n=new URLSearchParams(t(t(t(t(t({action:"redirect",slug:i,country:s,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===(g=null===(w=null===(_=a.pac_analytics)||void 0===_?void 0:_.visitor)||void 0===w?void 0:w.page)||void 0===g?void 0:g.includes("agency"))&&{evinaTi:u}),(null===(I=null===(b=a.pac_analytics)||void 0===b?void 0:b.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}),v&&p?{email:v,password:p}:{msisdn:o})).toString(),S=a.DEV_BASE_URL||"",h="".concat(S,"/tallyman/v1/?").concat(n).concat(r).concat(m?"&".concat(m):""),i.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:u,redirect_url:h}]:[2,fetch(h).then((function(r){return r.json()}))]}))}))};function g(n,a,i,s){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,b(n,r,i,s)]}))}))}function b(t,n,a,i){return r(this,void 0,void 0,(function(){var r,s,o,c,d,l,m,f,p,y,S,h,_,g,b;return e(this,(function(e){switch(e.label){case 0:return r=n.slug,s=n.country,o=n.device,c=n.offer,d=t.location.search.substr(1)||"",l=i||{},m=!1,("true"===(null==(f=u(t))?void 0:f.success)&&"1"===f["msisdn-alias"]||!0===t.is_encrypted_msisdn)&&(l.encrypted_msisdn="1"),"1"===l.encrypted_msisdn&&(m=!0),p=m?a||t.msisdn:a.match(/\d+/gi).join(""),y=t.pac_analytics.visitor,S=y.rockmanId,"ci"!==s?[3,2]:[4,v(y)];case 1:return h=e.sent(),[3,3];case 2:h=null,e.label=3;case 3:return[4,w({window:t,slug:r,country:s,msisdn:p,device:o,offer:c,rockmanId:S,ip_range_name:h,search:d,extraParams:l})];case 4:if(!1===(_=e.sent()).success)throw g="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":"InvalidMSISDN",(b=new Error("".concat(g,":\n").concat(_.message))).type=g,console.error(b),b;return[2,_.redirect_url]}}))}))}var I={currentState:{type:"MSISDNEntry",result:i({href:"/product"})}},j={currentState:{type:"MSISDNEntry",result:o({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},k={currentState:{type:"MSISDNEntry",result:c()}},E=function(r){var e=u(r);if(!e["mock-flow"])return k;switch(e["current-state"]){case"msisdn-entry-failure-state":return j;case"msisdn-entry-success-state":return I;default:return console.error("Mock Flow not supported"),k}}(window),D=n("moRedirFlow/submitMSISDNAction",(function(t,n){var a=t.window,s=t.msisdn,o=t.extraParams,c=n.getState,d=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,u,v,p,y,S,h,w,b,I,j;return e(this,(function(e){switch(e.label){case 0:if(r=c(),!(null===(I=null===(b=null===(w=null==r?void 0:r.strategy)||void 0===w?void 0:w.currentState)||void 0===b?void 0:b.data)||void 0===I?void 0:I.config))return[2,d({errorType:"UnexpectedState"})];t=r.strategy.currentState.data,n=t.config,u=t.skipRedirectCall,v=t.redirect_url,e.label=1;case 1:return e.trys.push([1,7,,8]),m.advancedInFlow("tallyman.v1-mo-redir","msisdn-submitted",{msisdn:s}),u&&v?(y=f(v,{msisdn:_(s,null===(j=null==n?void 0:n.country)||void 0===j?void 0:j.toUpperCase())}),[3,4]):[3,2];case 2:return[4,g(a,n,s,o)];case 3:y=e.sent(),e.label=4;case 4:return p=y,m.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:s}),o&&o.storeMsisdn&&"true"===o.storeMsisdn?[4,l(s).then((function(r){r&&r.data&&r.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(r){m.customEvent("Flow","advance-auto","msisdn-stored-error",r)}))]:[3,6];case 5:e.sent(),e.label=6;case 6:return[2,{type:"MSISDNEntry",result:i({href:p})}];case 7:switch(S=e.sent(),console.warn(S),h=void 0,S.type){case"AlreadySubscribed":h="AlreadySubscribed";break;case"InvalidMSISDN":h="InvalidMSISDN";break;default:h="UnknownError"}return m.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:s,errorType:"UnknownError"}),[2,d({errorType:h,productUrl:S.productUrl})];case 8:return[2]}}))}))})),M=n("moRedirFlow/backToStartAction",(function(t,n){var a=n.dispatch,i=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){return e(this,(function(r){try{m.recedeInFlow("tallyman.v1-mo-redir","mo-redir-state","requested to change phone number"),a(p())}catch(r){return console.warn(r),[2,i({errorType:"UnexpectedState"})]}return[2]}))}))})),N=a({name:"moRedirFlow",initialState:E,reducers:{},extraReducers:function(r){r.addCase(D.pending,(function(r){r.currentState={type:"MSISDNEntry",result:s()}})).addCase(D.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(D.rejected,(function(r,e){r.currentState={type:"MSISDNEntry",result:o(e.payload)}}))}}),F=N.reducer;N.actions;export{M as backToStartAction,h as moRedirFlowMatch,F as moRedirFlowReducer,D as submitMSISDNAction,S 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 i,L as s,F as o,N as c}from"./RemoteDataState-lcf8PfJd.js";import{c as d}from"./formatNumberToE164-DaAFvpKD.js";import{searchToObject as u}from"./searchToObject.js";import{s as l}from"./storeMsisdn-Cjq8_qYH.js";import{t as m}from"./tracker-DaaILhEr.js";import{u as f}from"./updateUrlWithParams-C6-BX4TY.js";import{t as v,i as p}from"./strategySlice-BqABgMaS.js";import{c as y}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./api-geirVksI.js";var S=function(r){return r((function(r){return r.moRedirFlow.currentState}))};function h(r){var e=r.msisdnEntry;return function(r){return r.type,e(r.result)}}var _=function(r,e){var t=r.replace(/\D/g,"");if(e&&d[e]){var n=d[e];t.startsWith(n)&&(t=t.substring(n.length))}return!t.startsWith("0")&&t.length>0&&(t="0".concat(t)),t},w=function(n){var a=n.window,i=n.slug,s=n.country,o=n.msisdn,c=n.device,d=n.offer,u=n.rockmanId,l=n.ip_range_name,m=n.search,f=n.extraParams,v=n.email,p=n.password;return r(void 0,void 0,void 0,(function(){var r,n,S,h,_,w,g,b,I;return e(this,(function(e){return m=y(m),r="&".concat(Object.keys(f).map((function(r){return f[r]?"".concat(r,"=").concat(f[r]):""})).filter(Boolean).join("&")),n=new URLSearchParams(t(t(t(t(t({action:"redirect",slug:i,country:s,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===(g=null===(w=null===(_=a.pac_analytics)||void 0===_?void 0:_.visitor)||void 0===w?void 0:w.page)||void 0===g?void 0:g.includes("agency"))&&{evinaTi:u}),(null===(I=null===(b=a.pac_analytics)||void 0===b?void 0:b.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}),v&&p?{email:v,password:p}:{msisdn:o})).toString(),S=a.DEV_BASE_URL||"",h="".concat(S,"/tallyman/v1/?").concat(n).concat(r).concat(m?"&".concat(m):""),i.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:u,redirect_url:h}]:[2,fetch(h).then((function(r){return r.json()}))]}))}))};function g(n,a,i,s){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,b(n,r,i,s)]}))}))}function b(t,n,a,i){return r(this,void 0,void 0,(function(){var r,s,o,c,d,l,m,f,p,y,S,h,_,g,b;return e(this,(function(e){switch(e.label){case 0:return r=n.slug,s=n.country,o=n.device,c=n.offer,d=t.location.search.substr(1)||"",l=i||{},m=!1,("true"===(null==(f=u(t))?void 0:f.success)&&"1"===f["msisdn-alias"]||!0===t.is_encrypted_msisdn)&&(l.encrypted_msisdn="1"),"1"===l.encrypted_msisdn&&(m=!0),p=m?a||t.msisdn:a.match(/\d+/gi).join(""),y=t.pac_analytics.visitor,S=y.rockmanId,"ci"!==s?[3,2]:[4,v(y)];case 1:return h=e.sent(),[3,3];case 2:h=null,e.label=3;case 3:return[4,w({window:t,slug:r,country:s,msisdn:p,device:o,offer:c,rockmanId:S,ip_range_name:h,search:d,extraParams:l})];case 4:if(!1===(_=e.sent()).success)throw g="ALREADY SUBSCRIBED"===_.message?"AlreadySubscribed":"InvalidMSISDN",(b=new Error("".concat(g,":\n").concat(_.message))).type=g,console.error(b),b;return[2,_.redirect_url]}}))}))}var I={currentState:{type:"MSISDNEntry",result:i({href:"/product"})}},j={currentState:{type:"MSISDNEntry",result:o({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},k={currentState:{type:"MSISDNEntry",result:c()}},E=function(r){var e=u(r);if(!e["mock-flow"])return k;switch(e["current-state"]){case"msisdn-entry-failure-state":return j;case"msisdn-entry-success-state":return I;default:return console.error("Mock Flow not supported"),k}}(window),D=n("moRedirFlow/submitMSISDNAction",(function(t,n){var a=t.window,s=t.msisdn,o=t.extraParams,c=n.getState,d=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,u,v,p,y,S,h,w,b,I,j;return e(this,(function(e){switch(e.label){case 0:if(r=c(),!(null===(I=null===(b=null===(w=null==r?void 0:r.strategy)||void 0===w?void 0:w.currentState)||void 0===b?void 0:b.data)||void 0===I?void 0:I.config))return[2,d({errorType:"UnexpectedState"})];t=r.strategy.currentState.data,n=t.config,u=t.skipRedirectCall,v=t.redirect_url,e.label=1;case 1:return e.trys.push([1,7,,8]),m.advancedInFlow("tallyman.v1-mo-redir","msisdn-submitted",{msisdn:s}),u&&v?(y=f(v,{msisdn:_(s,null===(j=null==n?void 0:n.country)||void 0===j?void 0:j.toUpperCase())}),[3,4]):[3,2];case 2:return[4,g(a,n,s,o)];case 3:y=e.sent(),e.label=4;case 4:return p=y,m.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:s}),o&&o.storeMsisdn&&"true"===o.storeMsisdn?[4,l(s).then((function(r){r&&r.data&&r.data.success?m.customEvent("Flow","advance-auto","msisdn-stored-success"):m.customEvent("Flow","advance-auto","msisdn-stored-failed")})).catch((function(r){m.customEvent("Flow","advance-auto","msisdn-stored-error",r)}))]:[3,6];case 5:e.sent(),e.label=6;case 6:return[2,{type:"MSISDNEntry",result:i({href:p})}];case 7:switch(S=e.sent(),console.warn(S),h=void 0,S.type){case"AlreadySubscribed":h="AlreadySubscribed";break;case"InvalidMSISDN":h="InvalidMSISDN";break;default:h="UnknownError"}return m.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:s,errorType:"UnknownError"}),[2,d({errorType:h,productUrl:S.productUrl})];case 8:return[2]}}))}))})),M=n("moRedirFlow/backToStartAction",(function(t,n){var a=n.dispatch,i=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){return e(this,(function(r){try{m.recedeInFlow("tallyman.v1-mo-redir","mo-redir-state","requested to change phone number"),a(p())}catch(r){return console.warn(r),[2,i({errorType:"UnexpectedState"})]}return[2]}))}))})),N=a({name:"moRedirFlow",initialState:E,reducers:{},extraReducers:function(r){r.addCase(D.pending,(function(r){r.currentState={type:"MSISDNEntry",result:s()}})).addCase(D.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(D.rejected,(function(r,e){r.currentState={type:"MSISDNEntry",result:o(e.payload)}}))}}),F=N.reducer;N.actions;export{M as backToStartAction,h as moRedirFlowMatch,F as moRedirFlowReducer,D as submitMSISDNAction,S as useMoRedirFlowState};
2
2
  //# sourceMappingURL=moRedirFlow.js.map
@@ -1,2 +1,2 @@
1
- import{__awaiter as r,__generator as e,__assign as t,__read as n}from"tslib";import{createAsyncThunk as o,createSlice as c}from"@reduxjs/toolkit";import{S as i,N as a,L as u,F as s}from"./RemoteDataState-lcf8PfJd.js";import{u as d,t as l}from"./tracker-DaaILhEr.js";import{searchToObject as v}from"./searchToObject.js";import{c as f,f as p}from"./strategySlice-CPnzsspR.js";import{b as _}from"./api-geirVksI.js";import{l as m}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as w}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";var y=function(r){return r((function(r){return r.oneClickFlow.currentState}))};function g(r){var e=r.getRedirectUrl,t=r.subscribe;return function(r){switch(r.type){case"GET_REDIRECT_URL":default:return e(r.result);case"SUBCRIBE_AJAX":return t(r.result)}}}function h(t){var n=t.currentRedirectUrl,o=t.country;return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){switch(e.label){case 0:return"pe"!==o.toLowerCase()?[3,3]:[4,new Promise((function(r){var e=setInterval((function(){window.Empello&&(clearInterval(e),r())}),100)}))];case 1:return e.sent(),"undefined"!=typeof window&&window.Empello?[4,new Promise((function(r){var e;null===(e=window.Empello)||void 0===e||e.getToken((function(e){r(e)}))}))]:[3,3];case 2:return r=e.sent(),[2,d(n,"empello_token",r)];case 3:return[2,n]}}))}))}var E=function(o){var c=o.window,i=o.extraParams,a=o.search,u=o.url;return r(void 0,void 0,void 0,(function(){var r,o,s,d,l;return e(this,(function(e){switch(e.label){case 0:a=w(a),r=(null==c?void 0:c.tid)||"",o=(null==c?void 0:c.shouldBlock)?"false":"true",s=Object.entries(i||{}).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(encodeURIComponent(o))})).join("&"),e.label=1;case 1:return e.trys.push([1,4,,5]),v=u,f=t({sam_evina_tid:r,antifraud_id:c.antifraud_id||"",antifraud_id_js_code:c.antifraud_id_js_code||"",antifraud_id_js_link:c.antifraud_id_js_link||"","is-clean-traffic":o},Object.fromEntries(new URLSearchParams(s))),p=new URLSearchParams(f).toString(),d="".concat(v,"&").concat(p),[4,fetch("".concat(d).concat(a?"&".concat(a):""))];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw l=e.sent(),console.error("Error fetching subscription:",l),l;case 5:return[2]}var v,f,p}))}))},R=function(t){var o=t.window,c=t.country,i=t.slug,a=t.device,u=t.offer,s=t.msisdn,d=t.operator,l=t.rockmanId,v=t.extraParams,f=t.search,p=t.evinaTid;return r(void 0,void 0,void 0,(function(){var r,t,_,m,y,g;return e(this,(function(e){return r="&".concat(Object.keys(v).map((function(r){return v[r]?"".concat(r,"=").concat(v[r]):""})).filter(Boolean).join("&")),f=w(f),t={action:"one-click-subscribe",country:c,slug:i,device:a,offerId:u,msisdn:s,operator:d,rockman_id:l,sam_evina_tid:p,page:encodeURIComponent(null===(g=null==o?void 0:o.location)||void 0===g?void 0:g.href),language_code:o.languageCode||"",partner_transaction_id:o.partner_transaction_id||"",partner_timestamp:o.partner_timestamp||"",partner_cid:o.partner_cid||"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||"",zain_antifraud_id:o.zain_antifraud_id||"",korek_antifraud_id:o.korek_antifraud_id||""},_=Object.entries(t).filter((function(r){var e=n(r,2);return e[0],e[1]})).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)})).join("&"),m=o.DEV_BASE_URL||"",y="".concat(m,"/tallyman/v1/?").concat(_).concat(r).concat(f?"&".concat(f):""),[2,fetch(y).then((function(r){return r.json()}))]}))}))},b=function(r){var e=r,t="ouisys_callback_function".concat(Math.floor(1e4*Math.random()));return new Promise((function(n,o){window[t]=function(r){n(r)},e+=-1===e.indexOf("?")?"?":"&",e+="jsonp=".concat(t);var c=document.createElement("script");c.src=e,c.id=t,document.body.appendChild(c),c.onerror=function(){o(new Error("JSONP request to ".concat(r," failed")))}}))},k=function(o){var c=o.window,i=o.maybeConfig,a=o.extraParams;return r(void 0,void 0,void 0,(function(){var r,o,u,s,d,l,f,p,w,y,g,h,E,R,k,U,j,I,C,T,A,B;return e(this,(function(e){switch(e.label){case 0:if(void 0!==c)return[3,1];throw"javascript: console.error('SSR'); void 6";case 1:return r=i.country,o=i.slug,u=i.queryString,s=i.apiAction,d=void 0!==c&&c.tid?c.tid:"",l=c.pac_analytics.visitor.offer,f=c.location.search.substr(1),p=(f&&f.length>0?[f]:[]).concat((u||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),Object.keys(a).forEach((function(r,e){p.length>0&&(p+="&"),p="".concat(function(r,e,t){void 0===t&&(t="");var n=new RegExp("\\b(".concat(e,"=).*?(&|#|$)"));if(r.search(n)>=0)return r.replace(n,"$1".concat(t,"$2"));var o=r.replace(/[?#]$/,"");return"".concat(o+e,"=").concat(t,"&")}(p,r,a[r])).concat(1===e?"&":"")})),w=c.pac_analytics.visitor.rockmanId,"identify-user"!==s?[3,3]:(h=c.DEV_BASE_URL||"",R="".concat(h,"/tallyman/v1/?action=identify-user&country=").concat(_(r),"&slug=").concat(o,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(w,"&sam_evina_tid=").concat(d,"&").concat(p),[4,b(R)]);case 2:if(!1===(y=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(y.message))).type="NotOn3g",U;return[2,{subscription_url:y.subscription_url||y.redirect_url,action:function(){return S(y.subscription_url,i)}}];case 3:return"he"!==s?[3,5]:(h=c.DEV_BASE_URL||"",R="".concat(h,"/tallyman/v1/?action=he&country=").concat(_(r),"&slug=").concat(o,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(w,"&sam_evina_tid=").concat(d,"&").concat(p),[4,fetch(R).then((function(r){return r.json()}))]);case 4:if(!1===(k=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(k.message))).type="NotOn3g",U;return m(k.source),[2,{redirect_url:k.redirectUrlWithReplacedUniqid}];case 5:if("om"===r.toLowerCase()){if("false"===(g=v(c)).success)throw(U=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",U;return[2,{redirect_url:g.redirect_url||g.url}]}return h=c.DEV_BASE_URL||"",E=new URLSearchParams(t(t({action:"redirect",device:"smart",slug:o,offerId:l,country:_(r),rockman_id:w,sam_evina_tid:d},(null===(j=null==c?void 0:c.location)||void 0===j?void 0:j.href)&&{page:encodeURIComponent(null===(I=null==c?void 0:c.location)||void 0===I?void 0:I.href)}),(null===(T=null===(C=null==c?void 0:c.pac_analytics)||void 0===C?void 0:C.visitor)||void 0===T?void 0:T.ip)&&{ip_address:null===(B=null===(A=null==c?void 0:c.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===B?void 0:B.ip})),R="".concat(h,"/tallyman/v1/?").concat(E.toString()).concat(p?"&".concat(p):""),[4,fetch(R).then((function(r){return r.json()}))];case 6:if(!1===(k=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(k.message))).type="NotOn3g",U;return[2,{redirect_url:k.redirect_url}];case 7:return[2]}}))}))},S=function(o,c,i){return r(void 0,void 0,void 0,(function(){var r,a,u,s,d,l,v,f,p,_,m,w,y,g,h,b,k,S,U,j,I,C,T,A;return e(this,(function(e){switch(e.label){case 0:return r=null,o&&""!==o?(a=c.queryString,u=window.location.search.substr(1),y=(u&&u.length>0?[u]:[]).concat((a||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),[4,E({window:window,extraParams:i,search:y,url:o})]):[3,2];case 1:return e.sent(),[3,4];case 2:return s=t({offer:window.pac_analytics.visitor.offer},c||{}),d=i||{},!1===(null===(S=null===(k=null===(b=null===window||void 0===window?void 0:window.pac_analytics)||void 0===b?void 0:b.visitor)||void 0===k?void 0:k.heMsisdnDecryptedByApiResult)||void 0===S?void 0:S.validateMsisdn)&&(d["skip-validation"]="1"),l=null===(I=null===(j=null===(U=null===window||void 0===window?void 0:window.pac_analytics)||void 0===U?void 0:U.visitor)||void 0===j?void 0:j.heMsisdnDecryptedByApiResult)||void 0===I?void 0:I.msisdn,v=null===(A=null===(T=null===(C=null===window||void 0===window?void 0:window.pac_analytics)||void 0===C?void 0:C.visitor)||void 0===T?void 0:T.heMsisdnDecryptedByApiResult)||void 0===A?void 0:A.operator,f=window.pac_analytics.visitor.rockmanId,p=s.slug,_=s.country,m=s.device,w=s.offer,y=window.location.search.substr(1)||"",g="undefined"!=typeof window&&window.tid?window.tid:"",[4,R({window:window,country:_,slug:p,device:m,offer:w,msisdn:l,operator:v,rockmanId:f,extraParams:d,search:y,evinaTid:g})];case 3:r=e.sent(),e.label=4;case 4:if(!1===r.success)throw(h=new Error("Error in subscribe() one-click-subscribe action:\n".concat(r.message))).type="ALREADY SUBSCRIBED"===r.message?"AlreadySubscribed":"SubscriptionError",h.productUrl=r.product_url?r.product_url:"",h.message=r.message,h;return[2,r.product_url||r.redirect_url]}}))}))},U=function(t,o,c){return r(void 0,void 0,void 0,(function(){var r,i,a,u,s,d,l,v,f,p,m,w,y,g,h;return e(this,(function(e){return void 0===t?[2,"javascript: console.error('SSR'); void 6"]:(r=o.country,i=o.slug,a=o.queryString,u=t.pac_analytics.visitor.offer,s=t.location.search.substr(1),d=(s&&s.length>0?[s]:[]).concat((a||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),l=c?"&".concat(Object.keys(c).map((function(r){return"".concat(r,"=").concat(c[r])})).join("&")):"",v=t.location.href.split("/")[3].split("?")[0],f=void 0!==t&&t.tid?t.tid:"",p=(null===(y=null===(w=null==t?void 0:t.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===y?void 0:y.bupperRedirectHost)?t.atob(null===(h=null===(g=null==t?void 0:t.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===h?void 0:h.bupperRedirectHost):null,m=p||t.DEV_BASE_URL_BUPPER||"",[2,"".concat(m,"/").concat(_(r),"/").concat(i,"?offer=").concat(u,"&atmobirun=1&rockman_id=").concat(t.pac_analytics.visitor.rockmanId,"&redirPixels=").concat(t.location.host,"&sam_evina_tid=").concat(f,"&x-xcid=").concat(v).concat(l,"&").concat(d)])}))}))},j={currentState:{type:"GET_REDIRECT_URL",result:i({redirectUrl:"/product"})}},I={currentState:{type:"SUBCRIBE_AJAX",result:a()}},C={currentState:{type:"GET_REDIRECT_URL",result:a()}},T=function(r){var e=v(r);if(!e["mock-flow"])return C;switch(e["current-state"]){case"redirect-url-success-state":return j;case"subscribe-ajax-state":return I;default:return console.error("Mock Flow not supported"),C}}(window),A=o("oneClickFlow/getRedirectUrlAction",(function(n,o){var c=n.window,u=n.isGetRedirectBupperWay,s=n.extraParams,d=n.autoRedirect,_=o.getState,m=o.dispatch,w=o.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,o,y,g,E,R,b,S,j,I,C,A,B,F,D,L,x,P,O,G;return e(this,(function(e){switch(e.label){case 0:if(r=_(),v(c)["mock-flow"])return[2,T.currentState];if(!(null===(x=null===(L=null===(D=null==r?void 0:r.strategy)||void 0===D?void 0:D.currentState)||void 0===L?void 0:L.data)||void 0===x?void 0:x.config))return[2,w({errorType:"UnexpectedState"})];n=r.strategy.currentState.data,o=n.config,y=n.subscription_url,g=n.redirect_url,E=n.operator,R=n.strategy,b=n.defaultConfig,S=n.defaultFlowType,e.label=1;case 1:return e.trys.push([1,10,,11]),!0!==u?[3,4]:[4,U(c,o,t(t({},E&&{operator:E}),s))];case 2:return[4,h({currentRedirectUrl:e.sent(),country:o.country})];case 3:return j=e.sent(),l.customEvent("Flow","advance-auto","redirect-success",{redirect_url:j}),!0!==c.isAutoFraudScreener?!0===d?(l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:j}),setTimeout((function(){c.location.href=j}),0),[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:j})}]):[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:j})}]:(I=setInterval((function(){c.isEvinaSessionChecked&&(clearInterval(I),l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:j}),setTimeout((function(){c.location.href=j}),0))}),100),[3,9]);case 4:return y&&null!=y||(null===(G=null===(O=null===(P=null==c?void 0:c.pac_analytics)||void 0===P?void 0:P.visitor)||void 0===O?void 0:O.heMsisdnDecryptedByApiResult)||void 0===G?void 0:G.msisdn)?[2,{type:"SUBCRIBE_AJAX",result:a()}]:g?(l.customEvent("Flow","advance-auto","redirect-success",{redirect_url:g}),[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:g})}]):(l.advancedInFlow("tallyman.v1-one-click","get-redirect-url"),[4,k({window:c,maybeConfig:o,extraParams:t(t({},E&&{operator:E}),s)})]);case 5:return C=e.sent().redirect_url,l.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),C?[4,h({currentRedirectUrl:C,country:o.country})]:[3,7];case 6:return B=e.sent(),[3,8];case 7:B=null,e.label=8;case 8:if(!(A=B))return l.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),"one-click"!==R&&m(f({type:p[S],data:{config:b.flowConfig}})),[2,w({errorType:"UnknownError",message:"Could not get rediredt url",error:"Could not get rediredt url"})];if(l.customEvent("Flow","advance-auto","redirect-success",{updated_redirect_url:A}),!(!0===d||!0===c.isAutoFraudScreener&&A))return[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:A})}];l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{updated_redirect_url:A}),setTimeout((function(){c.location.href=A}),0),e.label=9;case 9:return[3,11];case 10:return F=e.sent(),console.warn(F),l.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),"one-click"!==R&&m(f({type:p[S],data:{config:b.flowConfig}})),[2,w({errorType:"UnknownError",message:F.message,error:F.toString()})];case 11:return[2]}}))}))})),B=o("oneClickFlow/subscribeUrlAction",(function(t,n){var o=t.window,c=t.autoRedirect,a=t.extraParams,u=n.getState,s=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,d,v,f,p,_,m;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(m=null===(_=null===(p=null==r?void 0:r.strategy)||void 0===p?void 0:p.currentState)||void 0===_?void 0:_.data)||void 0===m?void 0:m.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data,n=t.subscription_url,d=t.config,e.label=1;case 1:return e.trys.push([1,3,,4]),l.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,S(n,d,a)];case 2:return v=e.sent(),l.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:v}),!0===c&&(l.customEvent("Flow","advance-auto","click-product-url",{product_url:v}),o.location.href=v),[2,{type:"SUBCRIBE_AJAX",result:i({productUrl:v})}];case 3:return f=e.sent(),console.warn(f),l.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:f.toString()}),[2,s({errorType:"UnknownError",error:f.toString(),productUrl:f.productUrl,message:f.message||""})];case 4:return[2]}}))}))})),F=c({name:"oneClickFlow",initialState:T,reducers:{},extraReducers:function(r){r.addCase(A.pending,(function(r){r.currentState={type:"GET_REDIRECT_URL",result:u()}})).addCase(A.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(A.rejected,(function(r,e){r.currentState={type:"GET_REDIRECT_URL",result:s(e.payload)}})).addCase(B.pending,(function(r){r.currentState={type:"SUBCRIBE_AJAX",result:u()}})).addCase(B.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(B.rejected,(function(r,e){r.currentState={type:"SUBCRIBE_AJAX",result:s(e.payload)}}))}}),D=F.reducer;F.actions;export{A as getRedirectUrlAction,g as oneClickFlowMatch,D as oneClickFlowReducer,B as subscribeUrlAction,y as useOneClickFlowState};
1
+ import{__awaiter as r,__generator as e,__assign as t,__read as n}from"tslib";import{createAsyncThunk as o,createSlice as c}from"@reduxjs/toolkit";import{S as i,N as a,L as u,F as s}from"./RemoteDataState-lcf8PfJd.js";import{u as d,t as l}from"./tracker-DaaILhEr.js";import{searchToObject as v}from"./searchToObject.js";import{c as f,f as p}from"./strategySlice-BqABgMaS.js";import{b as _}from"./api-geirVksI.js";import{l as m}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as w}from"./cleanSearchParams-Dl7ZDlew.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";var y=function(r){return r((function(r){return r.oneClickFlow.currentState}))};function g(r){var e=r.getRedirectUrl,t=r.subscribe;return function(r){switch(r.type){case"GET_REDIRECT_URL":default:return e(r.result);case"SUBCRIBE_AJAX":return t(r.result)}}}function h(t){var n=t.currentRedirectUrl,o=t.country;return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){switch(e.label){case 0:return"pe"!==o.toLowerCase()?[3,3]:[4,new Promise((function(r){var e=setInterval((function(){window.Empello&&(clearInterval(e),r())}),100)}))];case 1:return e.sent(),"undefined"!=typeof window&&window.Empello?[4,new Promise((function(r){var e;null===(e=window.Empello)||void 0===e||e.getToken((function(e){r(e)}))}))]:[3,3];case 2:return r=e.sent(),[2,d(n,"empello_token",r)];case 3:return[2,n]}}))}))}var E=function(o){var c=o.window,i=o.extraParams,a=o.search,u=o.url;return r(void 0,void 0,void 0,(function(){var r,o,s,d,l;return e(this,(function(e){switch(e.label){case 0:a=w(a),r=(null==c?void 0:c.tid)||"",o=(null==c?void 0:c.shouldBlock)?"false":"true",s=Object.entries(i||{}).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(encodeURIComponent(o))})).join("&"),e.label=1;case 1:return e.trys.push([1,4,,5]),v=u,f=t({sam_evina_tid:r,antifraud_id:c.antifraud_id||"",antifraud_id_js_code:c.antifraud_id_js_code||"",antifraud_id_js_link:c.antifraud_id_js_link||"","is-clean-traffic":o},Object.fromEntries(new URLSearchParams(s))),p=new URLSearchParams(f).toString(),d="".concat(v,"&").concat(p),[4,fetch("".concat(d).concat(a?"&".concat(a):""))];case 2:return[4,e.sent().json()];case 3:return[2,e.sent()];case 4:throw l=e.sent(),console.error("Error fetching subscription:",l),l;case 5:return[2]}var v,f,p}))}))},R=function(t){var o=t.window,c=t.country,i=t.slug,a=t.device,u=t.offer,s=t.msisdn,d=t.operator,l=t.rockmanId,v=t.extraParams,f=t.search,p=t.evinaTid;return r(void 0,void 0,void 0,(function(){var r,t,_,m,y,g;return e(this,(function(e){return r="&".concat(Object.keys(v).map((function(r){return v[r]?"".concat(r,"=").concat(v[r]):""})).filter(Boolean).join("&")),f=w(f),t={action:"one-click-subscribe",country:c,slug:i,device:a,offerId:u,msisdn:s,operator:d,rockman_id:l,sam_evina_tid:p,page:encodeURIComponent(null===(g=null==o?void 0:o.location)||void 0===g?void 0:g.href),language_code:o.languageCode||"",partner_transaction_id:o.partner_transaction_id||"",partner_timestamp:o.partner_timestamp||"",partner_cid:o.partner_cid||"",antifraud_id:o.antifraud_id||"",antifraud_id_js_code:o.antifraud_id_js_code||"",antifraud_id_js_link:o.antifraud_id_js_link||"",zain_antifraud_id:o.zain_antifraud_id||"",korek_antifraud_id:o.korek_antifraud_id||""},_=Object.entries(t).filter((function(r){var e=n(r,2);return e[0],e[1]})).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)})).join("&"),m=o.DEV_BASE_URL||"",y="".concat(m,"/tallyman/v1/?").concat(_).concat(r).concat(f?"&".concat(f):""),[2,fetch(y).then((function(r){return r.json()}))]}))}))},b=function(r){var e=r,t="ouisys_callback_function".concat(Math.floor(1e4*Math.random()));return new Promise((function(n,o){window[t]=function(r){n(r)},e+=-1===e.indexOf("?")?"?":"&",e+="jsonp=".concat(t);var c=document.createElement("script");c.src=e,c.id=t,document.body.appendChild(c),c.onerror=function(){o(new Error("JSONP request to ".concat(r," failed")))}}))},k=function(o){var c=o.window,i=o.maybeConfig,a=o.extraParams;return r(void 0,void 0,void 0,(function(){var r,o,u,s,d,l,f,p,w,y,g,h,E,R,k,U,j,I,C,T,A,B;return e(this,(function(e){switch(e.label){case 0:if(void 0!==c)return[3,1];throw"javascript: console.error('SSR'); void 6";case 1:return r=i.country,o=i.slug,u=i.queryString,s=i.apiAction,d=void 0!==c&&c.tid?c.tid:"",l=c.pac_analytics.visitor.offer,f=c.location.search.substr(1),p=(f&&f.length>0?[f]:[]).concat((u||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),Object.keys(a).forEach((function(r,e){p.length>0&&(p+="&"),p="".concat(function(r,e,t){void 0===t&&(t="");var n=new RegExp("\\b(".concat(e,"=).*?(&|#|$)"));if(r.search(n)>=0)return r.replace(n,"$1".concat(t,"$2"));var o=r.replace(/[?#]$/,"");return"".concat(o+e,"=").concat(t,"&")}(p,r,a[r])).concat(1===e?"&":"")})),w=c.pac_analytics.visitor.rockmanId,"identify-user"!==s?[3,3]:(h=c.DEV_BASE_URL||"",R="".concat(h,"/tallyman/v1/?action=identify-user&country=").concat(_(r),"&slug=").concat(o,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(w,"&sam_evina_tid=").concat(d,"&").concat(p),[4,b(R)]);case 2:if(!1===(y=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(y.message))).type="NotOn3g",U;return[2,{subscription_url:y.subscription_url||y.redirect_url,action:function(){return S(y.subscription_url,i)}}];case 3:return"he"!==s?[3,5]:(h=c.DEV_BASE_URL||"",R="".concat(h,"/tallyman/v1/?action=he&country=").concat(_(r),"&slug=").concat(o,"&device=").concat("smart","&offerId=").concat(l,"&rockman_id=").concat(w,"&sam_evina_tid=").concat(d,"&").concat(p),[4,fetch(R).then((function(r){return r.json()}))]);case 4:if(!1===(k=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(k.message))).type="NotOn3g",U;return m(k.source),[2,{redirect_url:k.redirectUrlWithReplacedUniqid}];case 5:if("om"===r.toLowerCase()){if("false"===(g=v(c)).success)throw(U=new Error("Error in getRedirectUrl() identify-user")).type="NotOn3g",U;return[2,{redirect_url:g.redirect_url||g.url}]}return h=c.DEV_BASE_URL||"",E=new URLSearchParams(t(t({action:"redirect",device:"smart",slug:o,offerId:l,country:_(r),rockman_id:w,sam_evina_tid:d},(null===(j=null==c?void 0:c.location)||void 0===j?void 0:j.href)&&{page:encodeURIComponent(null===(I=null==c?void 0:c.location)||void 0===I?void 0:I.href)}),(null===(T=null===(C=null==c?void 0:c.pac_analytics)||void 0===C?void 0:C.visitor)||void 0===T?void 0:T.ip)&&{ip_address:null===(B=null===(A=null==c?void 0:c.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===B?void 0:B.ip})),R="".concat(h,"/tallyman/v1/?").concat(E.toString()).concat(p?"&".concat(p):""),[4,fetch(R).then((function(r){return r.json()}))];case 6:if(!1===(k=e.sent()).success)throw(U=new Error("Error in getRedirectUrl() identify-user action:\n".concat(k.message))).type="NotOn3g",U;return[2,{redirect_url:k.redirect_url}];case 7:return[2]}}))}))},S=function(o,c,i){return r(void 0,void 0,void 0,(function(){var r,a,u,s,d,l,v,f,p,_,m,w,y,g,h,b,k,S,U,j,I,C,T,A;return e(this,(function(e){switch(e.label){case 0:return r=null,o&&""!==o?(a=c.queryString,u=window.location.search.substr(1),y=(u&&u.length>0?[u]:[]).concat((a||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),[4,E({window:window,extraParams:i,search:y,url:o})]):[3,2];case 1:return e.sent(),[3,4];case 2:return s=t({offer:window.pac_analytics.visitor.offer},c||{}),d=i||{},!1===(null===(S=null===(k=null===(b=null===window||void 0===window?void 0:window.pac_analytics)||void 0===b?void 0:b.visitor)||void 0===k?void 0:k.heMsisdnDecryptedByApiResult)||void 0===S?void 0:S.validateMsisdn)&&(d["skip-validation"]="1"),l=null===(I=null===(j=null===(U=null===window||void 0===window?void 0:window.pac_analytics)||void 0===U?void 0:U.visitor)||void 0===j?void 0:j.heMsisdnDecryptedByApiResult)||void 0===I?void 0:I.msisdn,v=null===(A=null===(T=null===(C=null===window||void 0===window?void 0:window.pac_analytics)||void 0===C?void 0:C.visitor)||void 0===T?void 0:T.heMsisdnDecryptedByApiResult)||void 0===A?void 0:A.operator,f=window.pac_analytics.visitor.rockmanId,p=s.slug,_=s.country,m=s.device,w=s.offer,y=window.location.search.substr(1)||"",g="undefined"!=typeof window&&window.tid?window.tid:"",[4,R({window:window,country:_,slug:p,device:m,offer:w,msisdn:l,operator:v,rockmanId:f,extraParams:d,search:y,evinaTid:g})];case 3:r=e.sent(),e.label=4;case 4:if(!1===r.success)throw(h=new Error("Error in subscribe() one-click-subscribe action:\n".concat(r.message))).type="ALREADY SUBSCRIBED"===r.message?"AlreadySubscribed":"SubscriptionError",h.productUrl=r.product_url?r.product_url:"",h.message=r.message,h;return[2,r.product_url||r.redirect_url]}}))}))},U=function(t,o,c){return r(void 0,void 0,void 0,(function(){var r,i,a,u,s,d,l,v,f,p,m,w,y,g,h;return e(this,(function(e){return void 0===t?[2,"javascript: console.error('SSR'); void 6"]:(r=o.country,i=o.slug,a=o.queryString,u=t.pac_analytics.visitor.offer,s=t.location.search.substr(1),d=(s&&s.length>0?[s]:[]).concat((a||[]).map((function(r){var e=n(r,2),t=e[0],o=e[1];return"".concat(t,"=").concat(o)}))).join("&"),l=c?"&".concat(Object.keys(c).map((function(r){return"".concat(r,"=").concat(c[r])})).join("&")):"",v=t.location.href.split("/")[3].split("?")[0],f=void 0!==t&&t.tid?t.tid:"",p=(null===(y=null===(w=null==t?void 0:t.pac_analytics)||void 0===w?void 0:w.visitor)||void 0===y?void 0:y.bupperRedirectHost)?t.atob(null===(h=null===(g=null==t?void 0:t.pac_analytics)||void 0===g?void 0:g.visitor)||void 0===h?void 0:h.bupperRedirectHost):null,m=p||t.DEV_BASE_URL_BUPPER||"",[2,"".concat(m,"/").concat(_(r),"/").concat(i,"?offer=").concat(u,"&atmobirun=1&rockman_id=").concat(t.pac_analytics.visitor.rockmanId,"&redirPixels=").concat(t.location.host,"&sam_evina_tid=").concat(f,"&x-xcid=").concat(v).concat(l,"&").concat(d)])}))}))},j={currentState:{type:"GET_REDIRECT_URL",result:i({redirectUrl:"/product"})}},I={currentState:{type:"SUBCRIBE_AJAX",result:a()}},C={currentState:{type:"GET_REDIRECT_URL",result:a()}},T=function(r){var e=v(r);if(!e["mock-flow"])return C;switch(e["current-state"]){case"redirect-url-success-state":return j;case"subscribe-ajax-state":return I;default:return console.error("Mock Flow not supported"),C}}(window),A=o("oneClickFlow/getRedirectUrlAction",(function(n,o){var c=n.window,u=n.isGetRedirectBupperWay,s=n.extraParams,d=n.autoRedirect,_=o.getState,m=o.dispatch,w=o.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,n,o,y,g,E,R,b,S,j,I,C,A,B,F,D,L,x,P,O,G;return e(this,(function(e){switch(e.label){case 0:if(r=_(),v(c)["mock-flow"])return[2,T.currentState];if(!(null===(x=null===(L=null===(D=null==r?void 0:r.strategy)||void 0===D?void 0:D.currentState)||void 0===L?void 0:L.data)||void 0===x?void 0:x.config))return[2,w({errorType:"UnexpectedState"})];n=r.strategy.currentState.data,o=n.config,y=n.subscription_url,g=n.redirect_url,E=n.operator,R=n.strategy,b=n.defaultConfig,S=n.defaultFlowType,e.label=1;case 1:return e.trys.push([1,10,,11]),!0!==u?[3,4]:[4,U(c,o,t(t({},E&&{operator:E}),s))];case 2:return[4,h({currentRedirectUrl:e.sent(),country:o.country})];case 3:return j=e.sent(),l.customEvent("Flow","advance-auto","redirect-success",{redirect_url:j}),!0!==c.isAutoFraudScreener?!0===d?(l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:j}),setTimeout((function(){c.location.href=j}),0),[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:j})}]):[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:j})}]:(I=setInterval((function(){c.isEvinaSessionChecked&&(clearInterval(I),l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{redirect_url:j}),setTimeout((function(){c.location.href=j}),0))}),100),[3,9]);case 4:return y&&null!=y||(null===(G=null===(O=null===(P=null==c?void 0:c.pac_analytics)||void 0===P?void 0:P.visitor)||void 0===O?void 0:O.heMsisdnDecryptedByApiResult)||void 0===G?void 0:G.msisdn)?[2,{type:"SUBCRIBE_AJAX",result:a()}]:g?(l.customEvent("Flow","advance-auto","redirect-success",{redirect_url:g}),[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:g})}]):(l.advancedInFlow("tallyman.v1-one-click","get-redirect-url"),[4,k({window:c,maybeConfig:o,extraParams:t(t({},E&&{operator:E}),s)})]);case 5:return C=e.sent().redirect_url,l.advancedInFlow("tallyman.v1-one-click","get-redirect-url-success"),C?[4,h({currentRedirectUrl:C,country:o.country})]:[3,7];case 6:return B=e.sent(),[3,8];case 7:B=null,e.label=8;case 8:if(!(A=B))return l.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),"one-click"!==R&&m(f({type:p[S],data:{config:b.flowConfig}})),[2,w({errorType:"UnknownError",message:"Could not get rediredt url",error:"Could not get rediredt url"})];if(l.customEvent("Flow","advance-auto","redirect-success",{updated_redirect_url:A}),!(!0===d||!0===c.isAutoFraudScreener&&A))return[2,{type:"GET_REDIRECT_URL",result:i({redirectUrl:A})}];l.advancedInFlow("tallyman.v1-one-click","click-redirect-url",{updated_redirect_url:A}),setTimeout((function(){c.location.href=A}),0),e.label=9;case 9:return[3,11];case 10:return F=e.sent(),console.warn(F),l.recedeInFlow("tallyman.v1-one-click","get-redirect-url-failure",{errorType:"UnknownError"}),"one-click"!==R&&m(f({type:p[S],data:{config:b.flowConfig}})),[2,w({errorType:"UnknownError",message:F.message,error:F.toString()})];case 11:return[2]}}))}))})),B=o("oneClickFlow/subscribeUrlAction",(function(t,n){var o=t.window,c=t.autoRedirect,a=t.extraParams,u=n.getState,s=n.rejectWithValue;return r(void 0,void 0,void 0,(function(){var r,t,n,d,v,f,p,_,m;return e(this,(function(e){switch(e.label){case 0:if(r=u(),!(null===(m=null===(_=null===(p=null==r?void 0:r.strategy)||void 0===p?void 0:p.currentState)||void 0===_?void 0:_.data)||void 0===m?void 0:m.config))return[2,s({errorType:"UnexpectedState"})];t=r.strategy.currentState.data,n=t.subscription_url,d=t.config,e.label=1;case 1:return e.trys.push([1,3,,4]),l.advancedInFlow("tallyman.v1-one-click","click-subscribe"),[4,S(n,d,a)];case 2:return v=e.sent(),l.advancedInFlow("tallyman.v1-one-click","click-subscribe-success",{product_url:v}),!0===c&&(l.customEvent("Flow","advance-auto","click-product-url",{product_url:v}),o.location.href=v),[2,{type:"SUBCRIBE_AJAX",result:i({productUrl:v})}];case 3:return f=e.sent(),console.warn(f),l.recedeInFlow("tallyman.v1-one-click","click-subscribe-failure",{error:f.toString()}),[2,s({errorType:"UnknownError",error:f.toString(),productUrl:f.productUrl,message:f.message||""})];case 4:return[2]}}))}))})),F=c({name:"oneClickFlow",initialState:T,reducers:{},extraReducers:function(r){r.addCase(A.pending,(function(r){r.currentState={type:"GET_REDIRECT_URL",result:u()}})).addCase(A.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(A.rejected,(function(r,e){r.currentState={type:"GET_REDIRECT_URL",result:s(e.payload)}})).addCase(B.pending,(function(r){r.currentState={type:"SUBCRIBE_AJAX",result:u()}})).addCase(B.fulfilled,(function(r,e){r.currentState=e.payload})).addCase(B.rejected,(function(r,e){r.currentState={type:"SUBCRIBE_AJAX",result:s(e.payload)}}))}}),D=F.reducer;F.actions;export{A as getRedirectUrlAction,g as oneClickFlowMatch,D as oneClickFlowReducer,B as subscribeUrlAction,y as useOneClickFlowState};
2
2
  //# sourceMappingURL=oneClickFlow.js.map
package/dist/pinFlow.js CHANGED
@@ -1,2 +1,2 @@
1
- import{__awaiter as e,__generator as n,__read as r,__assign as t}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,L as s,S as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{i as d,c as l,P as v}from"./strategySlice-CPnzsspR.js";import{searchToObject as p}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"./api-geirVksI.js";import{l as w,r as S,a as g}from"./helpers-xPhGBX-B.js";import{l as _}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as h}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"pacman-client";import"uuid";var I=function(e){return e((function(e){return e.pinFlow.currentState}))};function b(e){var n=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return n(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var k=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},E=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.msisdn,d=t.rockmanId,l=t.extraParams,v=t.search,p=t.uniqid,f=t.evinaTid;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,S,g;return n(this,(function(n){return e=k(a),t="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),v=h(v),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:p||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",S="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(v?"&".concat(v):""),[2,fetch(S).then((function(e){return e.json()}))]}))}))},N=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.rockmanId,d=t.pin,l=t.extraParams,v=t.uniqid,p=t.evinaTid,f=t.search;return e(void 0,void 0,void 0,(function(){var e,t,m,w,S,g,_;return n(this,(function(n){return e=k(a),t="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f=h(f),m={action:"verify-pin",country:y(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(_=null==i?void 0:i.location)||void 0===_?void 0:_.href),language_code:i.languageCode||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:p,uniqid:v,antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},w=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",g="".concat(S,"/tallyman/v1/?").concat(w).concat(e).concat(t).concat(f?"&".concat(f):""),[2,fetch(g).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,v,p,f;return n(this,(function(n){return e=i.location.href,r=i.pac_analytics.visitor.ip,v=new URLSearchParams(t(t({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&&v.append("client_ip",r),p=i.DEV_BASE_URL||"",f="".concat(p,"/tallyman/v1/?").concat(v.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function P(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return n(this,(function(n){return!0===(e=t({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,C(r,e,a,e.operators,o)]:[2,j(r,e,a,o)]}))}))}var D="";function j(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,v,f,m,y,w,S,g,h,I,b,k,N;return n(this,(function(n){switch(n.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,("true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]||!0===r.skip_validation)&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a||r.msisdn:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,w=r.location.search.substr(1)||"",S=D&&""!==D?"&mcpUniqid=".concat(D):"",g=void 0!==r&&r.tid?r.tid:"",[4,E({window:r,country:f,slug:v,device:m,offer:y,msisdn:d,rockmanId:l,extraParams:s,search:w,uniqid:S,evinaTid:g})];case 1:if(!0===(h=n.sent()).isContentBlocked&&(r.isContentBlocked=!0),!1!==h.success)return[3,2];switch((I=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(h.message))).message=h.message,!0){case h.message.includes("ALREADY SUBSCRIBED"):I.type="AlreadySubscribed";break;case h.message.includes("invalid"):I.type="InvalidMSISDN";break;case h.message.includes("duplicated_request"):I.type="DuplicatedRequest";break;default:I.type=null}throw I.productUrl=h.product_url?h.product_url:"",console.error(I),I;case 2:if(r.operator=h.operator,b={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&h.operator&&(b[f.toLowerCase()]&&b[f.toLowerCase()][h.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];n.label=3;case 3:return n.trys.push([3,5,,6]),[4,U({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:h.operator,uniqid:S})];case 4:return!1===(k=n.sent()).success?console.warn(k.message):(_(k.source),D=k.uniqid),[3,6];case 5:return N=n.sent(),console.warn(N),[3,6];case 6:return h.javascript&&_(h.javascript),[2,t({type:"SingleMSISDNSubmissionResult",pin:h.pin,uniqidResult:D,operator:h.operator,redirectUrl:null==h?void 0:h.redirect_to_url},(null==h?void 0:h.userType)?{userType:null==h?void 0:h.userType}:{})]}}))}))}function C(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return n(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 n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,j(r,i,a,t(t({},s),{operator:o}))];case 1:return e=n.sent(),[2,S(t(t({},e),{operator:o}))];case 2:return c=n.sent(),[2,w(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var n;return"left"===e.type&&"AlreadySubscribed"===(null===(n=e.value)||void 0===n?void 0:n.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function R(t,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,m,w,S,_,h,I,b,k,E,U;return n(this,(function(P){switch(P.label){case 0:if(t.hostCountry&&t.hostSlug&&(a.country=t.hostCountry,a.slug=t.hostSlug),s=a.slug,c=a.country,u=a.device,d=t.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(t))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=t.pac_analytics.visitor.rockmanId,!i)throw(m=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",m;return w=""!==D?"&mcpUniqid=".concat(D):"",S=void 0!==t&&t.tid?t.tid:"",_=t.location.search.substr(1)||"",[4,N({window:t,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:w,evinaTid:S,search:_})];case 1:if(!1!==(h=P.sent()).success)return[3,2];switch(I=void 0,!0){case h.message.includes("pin does not match"):I="InvalidPIN";break;case h.message.includes("mcp blocked"):I="SessionBlocked";break;case h.message.includes("expired_pin"):I="ExpiredPIN";break;case h.message.includes("insufficient_balance"):I="InsufficientBalance";break;case h.message.includes("duplicated_request"):I="DuplicatedRequest";break;case h.message.includes("ALREADY SUBSCRIBED"):I="AlreadySubscribed";break;default:I="InvalidPIN"}throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(h.message))).type=I,console.error(E),E;case 2:return!0!==h.async?[3,4]:h.product_url&&""!==h.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:h.product_url}]:(b=function(){return function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.rockmanId;return e(void 0,void 0,void 0,(function(){var e,t,d,l;return n(this,(function(n){return e={action:"check-subscription",country:y(a),slug:o,device:s,offerId:c,rockman_id:u},t=Object.entries(e).filter((function(e){var n=r(e,2);return n[0],null!=n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(t),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:t,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,g(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(k=P.sent()).success)return U="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:k.product_url||null,isAlreadySubscribed:U}];throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(k.message))).type="InvalidPIN",E.message=k.message,E;case 4:return U="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:U}]}}))}))}var M={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},T={currentState:{type:"PINEntry",result:c({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},F={currentState:{type:"MSISDNEntry",result:o()}},B=function(e){var n,r=p(e),t=new Event("onPinPage"),i=r.ui_show_pin_entry&&"1"===r.ui_show_pin_entry||r["show-pin-entry"]&&"1"===r["show-pin-entry"],a=r["show-thank-you"]&&"1"===r["show-thank-you"],s="1"===(null==r?void 0:r.show_custom_error),d=(null!==(n=null==r?void 0:r.ui_error_message)&&void 0!==n?n:"").replace(/\+/g,"%20"),l=decodeURIComponent(d),v={currentState:{type:"MSISDNEntry",result:u({errorType:{"This mobile number is blacklisted":"BlacklistedNumber"}[l]||"SomethingWentWrong",error:l})}},f={currentState:{type:"PINEntry",result:c({finalUrl:(null==r?void 0:r.product_url)||""}),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}},m={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}};if(i)return null==e||e.dispatchEvent(t),m;if(a)return f;if(s)return v;if(!r["mock-flow"])return F;switch(r["current-state"]){case"msisdn-failure-state":return A;case"pin-state":return null==e||e.dispatchEvent(t),M;case"completed-state":return T;default:return console.error("Mock Flow not supported"),F}}(window),q=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,c=r.msisdn,u=r.extraParams,d=i.getState,y=i.dispatch,w=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,S,g,_,h,I,b,k,E,N,U,D,j,C,R,M,T,A,F;return n(this,(function(n){switch(n.label){case 0:if(e=d(),!(null===(M=null===(R=null===(C=null==e?void 0:e.strategy)||void 0===C?void 0:C.currentState)||void 0===R?void 0:R.data)||void 0===M?void 0:M.config))return[2,w({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,S=r.isHeaderEnrichmentSuccess,g=null===(T=e.pinFlow)||void 0===T?void 0:T.currentState,_=p(a),n.label=1;case 1:return n.trys.push([1,7,,8]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===V(null==i?void 0:i.country,c)&&(c=c.replace("970","972")),"tpay"!==(null==(h=null===(F=null===(A=null==a?void 0:a.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===F?void 0:F.genericJsLinkResult)?void 0:h.gateway)||(null==_?void 0:_.ui_show_pin_entry)?[3,3]:(m.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,P(a,i,c)]);case 2:if(n.sent(),a.msisdn=c,a.callConfirm)try{return a.callConfirm(),[2,t(t({},g),{type:"MSISDNEntry",result:s()})]}catch(e){return I="Confirm function failed",m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:(null==e?void 0:e.toString())||"Error calling window.callConfirm function",message:e.message}),[2,w({errorType:"TPayConfirmError",error:I,message:I})]}return b="Confirm function not found",m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:b,message:b}),[2,w({errorType:"TPayConfirmError",error:b,message:b})];case 3:return m.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,P(a,i,c)];case 4:return k=n.sent(),m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),"SingleMSISDNSubmissionResult"===k.type&&k.redirectUrl?(m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),m.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:k.redirectUrl}),a.location.href=k.redirectUrl,[2]):u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,f(c).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,6];case 5:n.sent(),n.label=6;case 6:return E="SingleMSISDNSubmissionResult"===(null==k?void 0:k.type)?null==k?void 0:k.operator:"",N={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},U=new Event("onPinPage"),null==a||a.dispatchEvent(U),[2,t(t({},g),{type:"PINEntry",result:o(),data:t({actualPIN:"SingleMSISDNSubmissionResult"===k.type?k.pin:null,msisdn:c,operator:E,pinMaxLength:""!==E&&N[E]?N[E]:null,isHeaderEnrichmentSuccess:S},"SingleMSISDNSubmissionResult"===k.type&&(null==k?void 0:k.userType)?{userType:k.userType}:{})})];case 7:switch(D=n.sent(),console.warn(D),j=void 0,D.type){case"AlreadySubscribed":j="AlreadySubscribed";break;case"InvalidMSISDN":j="InvalidMSISDN";break;case"DuplicatedRequest":j="DuplicatedRequest";break;default:j="UnknownError"}return m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:j,error:D.toString(),message:D.message,productUrl:D.productUrl}),S&&y(l({type:v.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,w({errorType:j,error:D.toString(),message:D.message,productUrl:D.productUrl})];case 8:return[2]}}))}))})),L=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,s=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,v,p,y,w,S,g,_;return n(this,(function(n){switch(n.label){case 0:if(e=d(),!(null===(g=null===(S=null===(w=null==e?void 0:e.strategy)||void 0===w?void 0:w.currentState)||void 0===S?void 0:S.data)||void 0===g?void 0:g.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(_=e.pinFlow)||void 0===_?void 0:_.currentState,n.label=1;case 1:return n.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:s}),[4,R(a,s,r,u)];case 2:return v=n.sent(),m.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:s,finalUrl:v.productUrl}),v.gatewayRedirectUrl&&""!==v.gatewayRedirectUrl&&(m.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:s,gatewayRedirectUrl:v.gatewayRedirectUrl}),a.location.href=v.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:n.sent(),n.label=4;case 4:return[2,t(t({},i),{type:"PINEntry",result:c({finalUrl:v.productUrl,isAlreadySubscribed:v.isAlreadySubscribed||!1})})];case 5:switch(p=n.sent(),console.warn(p),y=void 0,p.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;case"DuplicatedRequest":y="DuplicatedRequest";break;default:y="UnknownError"}return m.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:s,errorType:y,error:p.toString(),message:p.message,productUrl:p.productUrl}),setTimeout((function(){p.productUrl&&(a.location.href=p.productUrl)}),0),[2,l({errorType:y,error:p.toString(),message:p.message,productUrl:p.productUrl})];case 6:return[2]}}))}))})),x=i("pinFlow/backToStartAction",(function(r,t){var i=t.getState,a=t.dispatch,s=t.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,t,c;return n(this,(function(n){try{if(m.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e=i(),!(null===(c=null===(t=null===(r=null==e?void 0:e.strategy)||void 0===r?void 0:r.currentState)||void 0===t?void 0:t.data)||void 0===c?void 0:c.config))return[2,s({errorType:"UnexpectedState"})];if("pin"===e.strategy.currentState.data.strategy)return[2,{type:"MSISDNEntry",result:o()}];a(d())}catch(e){return console.warn(e),[2,s({errorType:"UnexpectedState"})]}return[2]}))}))})),O={PS:"970"},V=function(e,n){if(!e||!n)return"";var r=e.toUpperCase(),t=O[r];return t?"+".concat(t):(console.error("Country code not found for",e),"")},W=a({name:"pinFlow",initialState:B,reducers:{},extraReducers:function(e){e.addCase(q.pending,(function(e){var n,r,t,i,a,o,c;e.currentState={type:(null===(r=null===(n=null===window||void 0===window?void 0:window.location)||void 0===n?void 0:n.search)||void 0===r?void 0:r.includes("ui_show_pin_entry"))||(null===(i=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.search)||void 0===i?void 0:i.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(o=null===(a=null===window||void 0===window?void 0:window.pac_analytics)||void 0===a?void 0:a.visitor)||void 0===o?void 0:o.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:s(),data:e.currentState.data}})).addCase(q.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(q.rejected,(function(e,n){var r,t,i,a,o,s,c;e.currentState={type:(null===(t=null===(r=null===window||void 0===window?void 0:window.location)||void 0===r?void 0:r.search)||void 0===t?void 0:t.includes("ui_show_pin_entry"))||(null===(a=null===(i=null===window||void 0===window?void 0:window.location)||void 0===i?void 0:i.search)||void 0===a?void 0:a.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(s=null===(o=null===window||void 0===window?void 0:window.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===s?void 0:s.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:u(n.payload),data:e.currentState.data}})).addCase(L.pending,(function(e){e.currentState={type:"PINEntry",result:s(),data:e.currentState.data}})).addCase(L.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(L.rejected,(function(e,n){e.currentState={type:"PINEntry",result:u(n.payload),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,n){e.currentState=n.payload}))}}),Y=W.reducer;W.actions;export{x as backToStartAction,b as pinFlowMatch,Y as pinFlowReducer,q as submitMSISDNAction,L as submitPinAction,I as usePinFlowState};
1
+ import{__awaiter as e,__generator as n,__read as r,__assign as t}from"tslib";import{createAsyncThunk as i,createSlice as a}from"@reduxjs/toolkit";import{N as o,L as s,S as c,F as u}from"./RemoteDataState-lcf8PfJd.js";import{i as d,c as l,P as v}from"./strategySlice-BqABgMaS.js";import{searchToObject as p}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"./api-geirVksI.js";import{l as w,r as S,a as _}from"./helpers-xPhGBX-B.js";import{l as g}from"./loadScriptInnerHtml-B6v2-IGn.js";import{c as h}from"./cleanSearchParams-Dl7ZDlew.js";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"pacman-client";import"uuid";var I=function(e){return e((function(e){return e.pinFlow.currentState}))};function b(e){var n=e.msisdnEntry,r=e.pinEntry;return function(e){switch(e.type){case"MSISDNEntry":return n(e.result);case"PINEntry":return r(e.result,e.data);default:throw new Error("Invalid State")}}}var k=function(e){return"be"===e?"undefined"!=typeof window&&!0===window.shouldBlock?"&is-clean-traffic=false":"&is-clean-traffic=true":""},E=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.msisdn,d=t.rockmanId,l=t.extraParams,v=t.search,p=t.uniqid,f=t.evinaTid;return e(void 0,void 0,void 0,(function(){var e,t,m,y,w,S,_;return n(this,(function(n){return e=k(a),t="&".concat(Object.keys(l).map((function(e){return l[e]?"".concat(e,"=").concat(l[e]):""})).filter(Boolean).join("&")),v=h(v),m={action:"trigger-pin",country:a,slug:o,device:s,offerId:c,msisdn:u,rockman_id:d,sam_evina_tid:f,page:encodeURIComponent(null===(_=null==i?void 0:i.location)||void 0===_?void 0:_.href),language_code:i.languageCode||"",partner_transaction_id:i.partner_transaction_id||"",partner_timestamp:i.partner_timestamp||"",partner_cid:i.partner_cid||"",uniqid:p||"",antifraud_id:i.antifraud_id||"",antifraud_id_js_code:i.antifraud_id_js_code||"",antifraud_id_js_link:i.antifraud_id_js_link||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},y=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),w=i.DEV_BASE_URL||"",S="".concat(w,"/tallyman/v1/?").concat(y).concat(e).concat(t).concat(v?"&".concat(v):""),[2,fetch(S).then((function(e){return e.json()}))]}))}))},N=function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.rockmanId,d=t.pin,l=t.extraParams,v=t.uniqid,p=t.evinaTid,f=t.search;return e(void 0,void 0,void 0,(function(){var e,t,m,w,S,_,g;return n(this,(function(n){return e=k(a),t="&".concat(Object.keys(l).map((function(e){return"".concat(e,"=").concat(l[e])})).join("&")),f=h(f),m={action:"verify-pin",country:y(a),slug:o,device:s,offerId:c,rockman_id:u,pin:d,page:encodeURIComponent(null===(g=null==i?void 0:i.location)||void 0===g?void 0:g.href),language_code:i.languageCode||"",ClickID:i.antifraud_click_id||"",partner_cid:i.partner_cid||"",sam_evina_tid:p,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||"",zain_antifraud_id:i.zain_antifraud_id||"",korek_antifraud_id:i.korek_antifraud_id||""},w=Object.entries(m).filter((function(e){var n=r(e,2);return n[0],n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(i)})).join("&"),S=i.DEV_BASE_URL||"",_="".concat(S,"/tallyman/v1/?").concat(w).concat(e).concat(t).concat(f?"&".concat(f):""),[2,fetch(_).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,v,p,f;return n(this,(function(n){return e=i.location.href,r=i.pac_analytics.visitor.ip,v=new URLSearchParams(t(t({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&&v.append("client_ip",r),p=i.DEV_BASE_URL||"",f="".concat(p,"/tallyman/v1/?").concat(v.toString()),[2,fetch(f).then((function(e){return e.json()}))]}))}))};function P(r,i,a,o){return e(this,void 0,void 0,(function(){var e;return n(this,(function(n){return!0===(e=t({offer:r.pac_analytics.visitor.offer},i||{})).automaticallySubmitAllOperators&&e.operators&&e.operators.length>0?[2,C(r,e,a,e.operators,o)]:[2,j(r,e,a,o)]}))}))}var D="";function j(r,i,a,o){return e(this,void 0,void 0,(function(){var e,s,c,u,d,l,v,f,m,y,w,S,_,h,I,b,k,N;return n(this,(function(n){switch(n.label){case 0:if(!a)throw(e=new Error("Error in submitMSISDN() trigger-pin action")).type="InvalidMSISDN",e;return s=o||{},c=!1,("true"===(null==(u=p(r))?void 0:u.success)&&"1"===u["msisdn-alias"]||!0===r.skip_validation)&&(s["skip-validation"]="1"),"1"===s["skip-validation"]&&(c=!0),d=c?a||r.msisdn:a.match(/\d+/gi).join(""),l=r.pac_analytics.visitor.rockmanId,v=i.slug,f=i.country,m=i.device,y=i.offer,w=r.location.search.substr(1)||"",S=D&&""!==D?"&mcpUniqid=".concat(D):"",_=void 0!==r&&r.tid?r.tid:"",[4,E({window:r,country:f,slug:v,device:m,offer:y,msisdn:d,rockmanId:l,extraParams:s,search:w,uniqid:S,evinaTid:_})];case 1:if(!0===(h=n.sent()).isContentBlocked&&(r.isContentBlocked=!0),!1!==h.success)return[3,2];switch((I=new Error("Error in submitMSISDN() trigger-pin action:\n".concat(h.message))).message=h.message,!0){case h.message.includes("ALREADY SUBSCRIBED"):I.type="AlreadySubscribed";break;case h.message.includes("invalid"):I.type="InvalidMSISDN";break;case h.message.includes("duplicated_request"):I.type="DuplicatedRequest";break;default:I.type=null}throw I.productUrl=h.product_url?h.product_url:"",console.error(I),I;case 2:if(r.operator=h.operator,b={kw:{kw_viva:"kw_viva"},k2:{k2_viva:"k2_viva"},bh:{bh_viva:"bh_viva"}},!(f&&h.operator&&(b[f.toLowerCase()]&&b[f.toLowerCase()][h.operator.toLowerCase()]||"iq"===f.toLowerCase()))||r.isCallBlockApi||r.Empello)return[3,6];n.label=3;case 3:return n.trys.push([3,5,,6]),[4,U({window:r,country:f,slug:v,device:m,offer:y,rockmanId:l,operator:h.operator,uniqid:S})];case 4:return!1===(k=n.sent()).success?console.warn(k.message):(g(k.source),D=k.uniqid),[3,6];case 5:return N=n.sent(),console.warn(N),[3,6];case 6:return h.javascript&&g(h.javascript),[2,t({type:"SingleMSISDNSubmissionResult",pin:h.pin,uniqidResult:D,operator:h.operator,redirectUrl:null==h?void 0:h.redirect_to_url},(null==h?void 0:h.userType)?{userType:null==h?void 0:h.userType}:{})]}}))}))}function C(r,i,a,o,s){return e(this,void 0,void 0,(function(){var c,u,d=this;return n(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 n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,j(r,i,a,t(t({},s),{operator:o}))];case 1:return e=n.sent(),[2,S(t(t({},e),{operator:o}))];case 2:return c=n.sent(),[2,w(c)];case 3:return[2]}}))}))})))];case 1:if(c=l.sent(),u=c.find((function(e){var n;return"left"===e.type&&"AlreadySubscribed"===(null===(n=e.value)||void 0===n?void 0:n.type)})),c.every((function(e){return"left"===e.type})))throw c[0].value;if(u)throw u.value;return[2,{type:"MultiOperatorMSISDNSubmissionResult"}]}}))}))}function R(t,i,a,o){return e(this,void 0,void 0,(function(){var s,c,u,d,l,v,f,m,w,S,g,h,I,b,k,E,U;return n(this,(function(P){switch(P.label){case 0:if(t.hostCountry&&t.hostSlug&&(a.country=t.hostCountry,a.slug=t.hostSlug),s=a.slug,c=a.country,u=a.device,d=t.pac_analytics.visitor.offer,l=o||{},"true"===(null==(v=p(t))?void 0:v.success)&&"1"===v["msisdn-alias"]&&(l["skip-validation"]="1"),f=t.pac_analytics.visitor.rockmanId,!i)throw(m=new Error("Error in submitMSISDN() verify-pin action:\n Pin Cannot Be Empty")).type="InvalidPIN",m;return w=""!==D?"&mcpUniqid=".concat(D):"",S=void 0!==t&&t.tid?t.tid:"",g=t.location.search.substr(1)||"",[4,N({window:t,country:c,slug:s,device:u,offer:d,rockmanId:f,pin:i,extraParams:l,uniqid:w,evinaTid:S,search:g})];case 1:if(!1!==(h=P.sent()).success)return[3,2];switch(I=void 0,!0){case h.message.includes("pin does not match"):I="InvalidPIN";break;case h.message.includes("mcp blocked"):I="SessionBlocked";break;case h.message.includes("expired_pin"):I="ExpiredPIN";break;case h.message.includes("insufficient_balance"):I="InsufficientBalance";break;case h.message.includes("duplicated_request"):I="DuplicatedRequest";break;case h.message.includes("ALREADY SUBSCRIBED"):I="AlreadySubscribed";break;default:I="InvalidPIN"}throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(h.message))).type=I,console.error(E),E;case 2:return!0!==h.async?[3,4]:h.product_url&&""!==h.product_url&&"es"===(null==c?void 0:c.toLowerCase())?[2,{gatewayRedirectUrl:h.product_url}]:(b=function(){return function(t){var i=t.window,a=t.country,o=t.slug,s=t.device,c=t.offer,u=t.rockmanId;return e(void 0,void 0,void 0,(function(){var e,t,d,l;return n(this,(function(n){return e={action:"check-subscription",country:y(a),slug:o,device:s,offerId:c,rockman_id:u},t=Object.entries(e).filter((function(e){var n=r(e,2);return n[0],null!=n[1]})).map((function(e){var n=r(e,2),t=n[0],i=n[1];return"".concat(t,"=").concat(encodeURIComponent(i))})).join("&"),d=i.DEV_BASE_URL||"",l="".concat(d,"/tallyman/v1/?").concat(t),[2,fetch(l).then((function(e){return e.json()}))]}))}))}({window:t,country:c,slug:s,device:u,offer:d,rockmanId:f,extraParams:o})},[4,_(b,100,(function(e){return e.success||"invalid_pin"===e.message}),0)]);case 3:if(!0===(k=P.sent()).success)return U="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:k.product_url||null,isAlreadySubscribed:U}];throw(E=new Error("Error in submitMSISDN() verify-pin action:\n".concat(k.message))).type="InvalidPIN",E.message=k.message,E;case 4:return U="ALREADY SUBSCRIBED"===h.message,[2,{productUrl:h.product_url||null,isAlreadySubscribed:U}]}}))}))}var M={currentState:{type:"PINEntry",result:o(),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},T={currentState:{type:"PINEntry",result:c({finalUrl:"/product"}),data:{actualPIN:"",msisdn:"",operator:"",pinMaxLength:4}}},A={currentState:{type:"MSISDNEntry",result:u({errorType:"InvalidMSISDN",error:"Invalid Mobile Number"})}},F={currentState:{type:"MSISDNEntry",result:o()}},B=function(e){var n,r=p(e),t=new Event("onPinPage"),i=r.ui_show_pin_entry&&"1"===r.ui_show_pin_entry||r["show-pin-entry"]&&"1"===r["show-pin-entry"],a=r["show-thank-you"]&&"1"===r["show-thank-you"],s="1"===(null==r?void 0:r.show_custom_error),d=(null!==(n=null==r?void 0:r.ui_error_message)&&void 0!==n?n:"").replace(/\+/g,"%20"),l=decodeURIComponent(d),v={currentState:{type:"MSISDNEntry",result:u({errorType:{"This mobile number is blacklisted":"BlacklistedNumber"}[l]||"SomethingWentWrong",error:l})}},f={currentState:{type:"PINEntry",result:c({finalUrl:(null==r?void 0:r.product_url)||""}),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}},m={currentState:{type:"PINEntry",result:o(),data:{msisdn:(null==r?void 0:r.msisdn)||"",operator:(null==r?void 0:r.operator)||""}}};if(i)return null==e||e.dispatchEvent(t),m;if(a)return f;if(s)return v;if(!r["mock-flow"])return F;switch(r["current-state"]){case"msisdn-failure-state":return A;case"pin-state":return null==e||e.dispatchEvent(t),M;case"completed-state":return T;default:return console.error("Mock Flow not supported"),F}}(window),q=i("pinFlow/submitMSISDNAction",(function(r,i){var a=r.window,c=r.msisdn,u=r.extraParams,d=i.getState,y=i.dispatch,w=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,S,_,g,h,I,b,k,E,N,U,D,j,C,R,M,T,A,F;return n(this,(function(n){switch(n.label){case 0:if(e=d(),!(null===(M=null===(R=null===(C=null==e?void 0:e.strategy)||void 0===C?void 0:C.currentState)||void 0===R?void 0:R.data)||void 0===M?void 0:M.config))return[2,w({errorType:"UnexpectedState"})];r=e.strategy.currentState.data,i=r.config,S=r.isHeaderEnrichmentSuccess,_=null===(T=e.pinFlow)||void 0===T?void 0:T.currentState,g=p(a),n.label=1;case 1:return n.trys.push([1,7,,8]),"ps"===(null==i?void 0:i.country.toLowerCase())&&(null==i?void 0:i.slug.includes("shemaroo"))&&"+970"===V(null==i?void 0:i.country,c)&&(c=c.replace("970","972")),"tpay"!==(null==(h=null===(F=null===(A=null==a?void 0:a.pac_analytics)||void 0===A?void 0:A.visitor)||void 0===F?void 0:F.genericJsLinkResult)?void 0:h.gateway)||(null==g?void 0:g.ui_show_pin_entry)?[3,3]:(m.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,P(a,i,c)]);case 2:if(n.sent(),a.msisdn=c,a.callConfirm)try{return a.callConfirm(),[2,t(t({},_),{type:"MSISDNEntry",result:s()})]}catch(e){return I="Confirm function failed",m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:(null==e?void 0:e.toString())||"Error calling window.callConfirm function",message:e.message}),[2,w({errorType:"TPayConfirmError",error:I,message:I})]}return b="Confirm function not found",m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:"TPayConfirmError",error:b,message:b}),[2,w({errorType:"TPayConfirmError",error:b,message:b})];case 3:return m.advancedInFlow("tallyman.v1-pin","msisdn-submitted",{msisdn:c}),[4,P(a,i,c)];case 4:return k=n.sent(),m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),"SingleMSISDNSubmissionResult"===k.type&&k.redirectUrl?(m.advancedInFlow("tallyman.v1-pin","msisdn-submission-success",{msisdn:c}),m.customEvent("Flow","advance-auto","msisdn-redirect",{redirectUrl:k.redirectUrl}),a.location.href=k.redirectUrl,[2]):u&&u.storeMsisdn&&"true"===u.storeMsisdn?[4,f(c).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,6];case 5:n.sent(),n.label=6;case 6:return E="SingleMSISDNSubmissionResult"===(null==k?void 0:k.type)?null==k?void 0:k.operator:"",N={SA_MOBILY:6,SA_STC:4,SA_ZAIN:4},U=new Event("onPinPage"),null==a||a.dispatchEvent(U),[2,t(t({},_),{type:"PINEntry",result:o(),data:t({actualPIN:"SingleMSISDNSubmissionResult"===k.type?k.pin:null,msisdn:c,operator:E,pinMaxLength:""!==E&&N[E]?N[E]:null,isHeaderEnrichmentSuccess:S},"SingleMSISDNSubmissionResult"===k.type&&(null==k?void 0:k.userType)?{userType:k.userType}:{})})];case 7:switch(D=n.sent(),console.warn(D),j=void 0,D.type){case"AlreadySubscribed":j="AlreadySubscribed";break;case"InvalidMSISDN":j="InvalidMSISDN";break;case"DuplicatedRequest":j="DuplicatedRequest";break;default:j="UnknownError"}return m.recedeInFlow("tallyman.v1-pin","msisdn-submission-failure",{msisdn:c,errorType:j,error:D.toString(),message:D.message,productUrl:D.productUrl}),S&&y(l({type:v.PIN,data:{isHeaderEnrichmentSuccess:!1,config:i}})),[2,w({errorType:j,error:D.toString(),message:D.message,productUrl:D.productUrl})];case 8:return[2]}}))}))})),L=i("pinFlow/submitPinAction",(function(r,i){var a=r.window,o=r.msisdn,s=r.pin,u=r.extraParams,d=i.getState,l=i.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,i,v,p,y,w,S,_,g;return n(this,(function(n){switch(n.label){case 0:if(e=d(),!(null===(_=null===(S=null===(w=null==e?void 0:e.strategy)||void 0===w?void 0:w.currentState)||void 0===S?void 0:S.data)||void 0===_?void 0:_.config))return[2,l({errorType:"UnexpectedState"})];r=e.strategy.currentState.data.config,i=null===(g=e.pinFlow)||void 0===g?void 0:g.currentState,n.label=1;case 1:return n.trys.push([1,5,,6]),m.advancedInFlow("tallyman.v1-pin","pin-submitted",{msisdn:o,pin:s}),[4,R(a,s,r,u)];case 2:return v=n.sent(),m.advancedInFlow("tallyman.v1-pin","pin-submission-success",{msisdn:o,pin:s,finalUrl:v.productUrl}),v.gatewayRedirectUrl&&""!==v.gatewayRedirectUrl&&(m.advancedInFlow("tallyman.v1-pin","gateway-redirect",{msisdn:o,pin:s,gatewayRedirectUrl:v.gatewayRedirectUrl}),a.location.href=v.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:n.sent(),n.label=4;case 4:return[2,t(t({},i),{type:"PINEntry",result:c({finalUrl:v.productUrl,isAlreadySubscribed:v.isAlreadySubscribed||!1})})];case 5:switch(p=n.sent(),console.warn(p),y=void 0,p.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;case"DuplicatedRequest":y="DuplicatedRequest";break;default:y="UnknownError"}return m.recedeInFlow("tallyman.v1-pin","pin-submission-failure",{msisdn:o,pin:s,errorType:y,error:p.toString(),message:p.message,productUrl:p.productUrl}),setTimeout((function(){p.productUrl&&(a.location.href=p.productUrl)}),0),[2,l({errorType:y,error:p.toString(),message:p.message,productUrl:p.productUrl})];case 6:return[2]}}))}))})),x=i("pinFlow/backToStartAction",(function(r,t){var i=t.getState,a=t.dispatch,s=t.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,t,c;return n(this,(function(n){try{if(m.recedeInFlow("tallyman.v1-pin","pin-state","requested to change phone number"),e=i(),!(null===(c=null===(t=null===(r=null==e?void 0:e.strategy)||void 0===r?void 0:r.currentState)||void 0===t?void 0:t.data)||void 0===c?void 0:c.config))return[2,s({errorType:"UnexpectedState"})];if("pin"===e.strategy.currentState.data.strategy)return[2,{type:"MSISDNEntry",result:o()}];a(d())}catch(e){return console.warn(e),[2,s({errorType:"UnexpectedState"})]}return[2]}))}))})),O={PS:"970"},V=function(e,n){if(!e||!n)return"";var r=e.toUpperCase(),t=O[r];return t?"+".concat(t):(console.error("Country code not found for",e),"")},W=a({name:"pinFlow",initialState:B,reducers:{},extraReducers:function(e){e.addCase(q.pending,(function(e){var n,r,t,i,a,o,c;e.currentState={type:(null===(r=null===(n=null===window||void 0===window?void 0:window.location)||void 0===n?void 0:n.search)||void 0===r?void 0:r.includes("ui_show_pin_entry"))||(null===(i=null===(t=null===window||void 0===window?void 0:window.location)||void 0===t?void 0:t.search)||void 0===i?void 0:i.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(o=null===(a=null===window||void 0===window?void 0:window.pac_analytics)||void 0===a?void 0:a.visitor)||void 0===o?void 0:o.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:s(),data:e.currentState.data}})).addCase(q.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(q.rejected,(function(e,n){var r,t,i,a,o,s,c;e.currentState={type:(null===(t=null===(r=null===window||void 0===window?void 0:window.location)||void 0===r?void 0:r.search)||void 0===t?void 0:t.includes("ui_show_pin_entry"))||(null===(a=null===(i=null===window||void 0===window?void 0:window.location)||void 0===i?void 0:i.search)||void 0===a?void 0:a.includes("show-pin-entry"))&&"tpay"===(null===(c=null===(s=null===(o=null===window||void 0===window?void 0:window.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===s?void 0:s.genericJsLinkResult)||void 0===c?void 0:c.gateway)?"PINEntry":"MSISDNEntry",result:u(n.payload),data:e.currentState.data}})).addCase(L.pending,(function(e){e.currentState={type:"PINEntry",result:s(),data:e.currentState.data}})).addCase(L.fulfilled,(function(e,n){e.currentState=n.payload})).addCase(L.rejected,(function(e,n){e.currentState={type:"PINEntry",result:u(n.payload),data:e.currentState.data}})).addCase(x.fulfilled,(function(e,n){e.currentState=n.payload}))}}),Y=W.reducer;W.actions;export{x as backToStartAction,b as pinFlowMatch,Y as pinFlowReducer,q as submitMSISDNAction,L as submitPinAction,I as usePinFlowState};
2
2
  //# sourceMappingURL=pinFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pinFlow.js","sources":["../src/flows/pinFlow/hooks/usePinFlowState.ts","../src/flows/pinFlow/match.ts","../src/sharedApi/checkSubscription.ts","../src/flows/pinFlow/api.ts","../src/flows/pinFlow/main.ts","../src/flows/pinFlow/pinFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const usePinFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.pinFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IMsisdnSumbitNextData,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryFailure,\n PINEntrySuccess,\n PinFlowCurrentState\n} from '../../sharedFlowTypes/PinTypes';\n\nfunction pinFlowMatch<R>({\n msisdnEntry,\n pinEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n pinEntry: (rds: RDS.RemoteDataState<PINEntryFailure, PINEntrySuccess>, nextData: IMsisdnSumbitNextData) => R;\n}): (state: PinFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n case 'PINEntry':\n return pinEntry(state.result, state.data);\n default:\n throw new Error('Invalid State');\n }\n };\n}\n\nexport { pinFlowMatch };\n","import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IHash } from '../common-types/IHash';\nimport { bupperizeCountry } from '../utilities/bupperizeCountry';\n\nconst checkSubscription = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParams?: IHash; // Marked as optional if currently unused\n}): Promise<ICheckSubscriptionResult> => {\n const params = {\n action: 'check-subscription',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}`;\n return fetch(url).then((response) => response.json());\n};\n\nexport { checkSubscription };\n","import { IHash, IMcpShieldResult, IMSISDNSubmissionResult, IPINSubmissionResult } from '../../sharedFlowTypes/PinTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst checkIsCleanTraffic = (country: string): string => {\n if (country === 'be') {\n if (typeof window !== 'undefined' && window.shouldBlock === true) {\n return '&is-clean-traffic=false';\n }\n return '&is-clean-traffic=true';\n }\n return '';\n};\nconst triggerPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams,\n search,\n uniqid,\n evinaTid\n}: {\n window?: Window;\n country: string;\n slug: string;\n device: 'smart' | 'feature';\n offer: string;\n msisdn: string;\n rockmanId: string;\n extraParams: IHash;\n search: string;\n uniqid?: string;\n evinaTid?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n\n // Base parameters object\n const params = {\n action: 'trigger-pin',\n country,\n slug,\n device,\n offerId: offer,\n msisdn,\n rockman_id: rockmanId,\n sam_evina_tid: evinaTid,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n partner_transaction_id: window.partner_transaction_id || '',\n partner_timestamp: window.partner_timestamp || '',\n partner_cid: window.partner_cid || '',\n uniqid: uniqid || '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst verifyPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams,\n uniqid,\n evinaTid,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n pin: string;\n extraParams: IHash;\n uniqid: string;\n evinaTid: string;\n search: string;\n}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n // Base parameters object\n const params = {\n action: 'verify-pin',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n pin,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n ClickID: window.antifraud_click_id || '',\n partner_cid: window.partner_cid || '',\n sam_evina_tid: evinaTid,\n uniqid,\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst mcpShield = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator,\n uniqid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n operator?: string;\n uniqid?: string;\n}): Promise<IMcpShieldResult> => {\n const pageUrl = window.location.href;\n const ipAdd = window.pac_analytics.visitor.ip;\n\n const params = new URLSearchParams({\n action: 'mcp-shield',\n country,\n slug,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n client_lpu: pageUrl,\n ...(operator && { operator }),\n ...(uniqid && { uniqid })\n });\n\n // Conditionally add client_ip if it exists\n if (ipAdd) {\n params.append('client_ip', ipAdd);\n }\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params.toString()}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { triggerPin, verifyPin, mcpShield };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { checkSubscription } from '../../sharedApi/checkSubscription';\nimport {\n IHash,\n IMcpShieldResult,\n IMSISDNSubmissionResult,\n IPINSubmissionResult,\n MultiOperatorMSISDNSubmissionResult,\n SingleMSISDNSubmissionResult\n} from '../../sharedFlowTypes/PinTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { left, loop, right } from '../../utilities/helpers';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { mcpShield, triggerPin, verifyPin } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult | MultiOperatorMSISDNSubmissionResult> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return submitMSISDNForMultipleOperators(window, config, internationalMSISDN, config.operators, extraParams);\n }\n return submitMSISDNOnce(window, config, internationalMSISDN, extraParams);\n}\n\nlet uniqidResult = '';\n// eslint-disable-next-line consistent-return\nexport async function loadMcpShield(window: Window, config: IConfig): Promise<IMcpShieldResult> {\n if (config) {\n const { slug, country, device } = config;\n\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({ window, country, slug, device, offer, rockmanId });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n return mcpShieldResult;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nasync function submitMSISDNOnce(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() trigger-pin action`) as IError & { type: string };\n submissionError.type = 'InvalidMSISDN';\n throw submissionError;\n }\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n // @ts-ignore\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.skip_validation === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n if (newExtraParams['skip-validation'] === '1') {\n isSkipValidation = true;\n }\n\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n const { rockmanId } = window.pac_analytics.visitor;\n\n const { slug, country, device, offer } = config;\n\n const search = window.location.search.substr(1) || '';\n const uniqid = !!uniqidResult && uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const result: IMSISDNSubmissionResult = await triggerPin({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams: newExtraParams,\n search,\n uniqid,\n evinaTid\n });\n\n if (result.isContentBlocked === true) {\n window.isContentBlocked = true;\n }\n if (result.success === false) {\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n error.message = result.message;\n switch (true) {\n case result.message.includes('ALREADY SUBSCRIBED'):\n error.type = 'AlreadySubscribed';\n break;\n case result.message.includes('invalid'):\n error.type = 'InvalidMSISDN';\n break;\n case result.message.includes('duplicated_request'):\n error.type = 'DuplicatedRequest';\n break;\n default:\n error.type = null;\n }\n // error.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n error.productUrl = result.product_url ? result.product_url : '';\n console.error(error);\n throw error;\n } else {\n window.operator = result.operator; // currently used on server for KW_STC if present dont call empello for Shemaroo\n const codesWithMcpShied: { [key: string]: { [key: string]: string } } = {\n kw: {\n kw_viva: 'kw_viva'\n },\n k2: {\n k2_viva: 'k2_viva'\n },\n bh: {\n bh_viva: 'bh_viva'\n }\n };\n if (\n country &&\n result.operator &&\n ((codesWithMcpShied[country.toLowerCase()] &&\n codesWithMcpShied[country.toLowerCase()][result.operator.toLowerCase()]) ||\n country.toLowerCase() === 'iq') &&\n !window.isCallBlockApi &&\n !window.Empello // set on server https://www.notion.so/sammedia/KW-Agency-Shemaroo-STC-integration-1a114991683d4af79eb01a4d96789f30\n ) {\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator: result.operator,\n uniqid\n });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n\n if (result.javascript) {\n loadScriptInnerHtml(result.javascript);\n }\n\n return {\n type: 'SingleMSISDNSubmissionResult',\n pin: result.pin,\n uniqidResult,\n operator: result.operator,\n redirectUrl: result?.redirect_to_url, // For pin redirect empello\n ...(result?.userType ? { userType: result?.userType } : {}) // For Peru user plan if prepaid or postpaid\n };\n }\n}\n\nasync function submitMSISDNForMultipleOperators(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n operators: string[],\n extraParams?: IHash\n): Promise<MultiOperatorMSISDNSubmissionResult> {\n const results = await Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await submitMSISDNOnce(window, config, internationalMSISDN, {\n ...extraParams,\n operator: o\n });\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const alreadySubscribed = results.find((r: any) => r.type === 'left' && r.value?.type === 'AlreadySubscribed');\n\n if (results.every((r) => r.type === 'left')) {\n // no submission worked\n throw results[0].value;\n } else if (alreadySubscribed) {\n throw alreadySubscribed.value;\n } else {\n return {\n type: 'MultiOperatorMSISDNSubmissionResult'\n };\n }\n}\n\nexport async function submitPIN(\n window: Window,\n pin: string,\n config: IConfig,\n extraParams: IHash\n): Promise<{ productUrl?: string; isAlreadySubscribed?: boolean; gatewayRedirectUrl?: string }> {\n if (window.hostCountry && window.hostSlug) {\n config.country = window.hostCountry;\n config.slug = window.hostSlug;\n }\n const { slug, country, device } = config;\n const { offer } = window.pac_analytics.visitor;\n\n const newExtraParams = extraParams || {};\n const searchObj = searchToObject(window) as any;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n newExtraParams['skip-validation'] = '1';\n }\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (!pin) {\n const emptyPinError = new Error(`Error in submitMSISDN() verify-pin action:\\n Pin Cannot Be Empty`) as IError & {\n type: string;\n };\n emptyPinError.type = 'InvalidPIN';\n throw emptyPinError;\n }\n const uniqid = uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n const search = window.location.search.substr(1) || '';\n\n const pinResult: IPINSubmissionResult = await verifyPin({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams: newExtraParams,\n uniqid,\n evinaTid,\n search\n });\n if (pinResult.success === false) {\n let errorType: string;\n\n switch (true) {\n case pinResult.message.includes('pin does not match'):\n errorType = 'InvalidPIN';\n break;\n case pinResult.message.includes('mcp blocked'):\n errorType = 'SessionBlocked';\n break;\n case pinResult.message.includes('expired_pin'):\n errorType = 'ExpiredPIN';\n break;\n case pinResult.message.includes('insufficient_balance'):\n errorType = 'InsufficientBalance';\n break;\n case pinResult.message.includes('duplicated_request'):\n errorType = 'DuplicatedRequest';\n break;\n case pinResult.message.includes('ALREADY SUBSCRIBED'):\n errorType = 'AlreadySubscribed';\n break;\n default:\n errorType = 'InvalidPIN';\n }\n\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${pinResult.message}`) as IError & {\n type: string;\n };\n pinError.type = errorType;\n console.error(pinError);\n throw pinError;\n } else if (pinResult.async === true) {\n // Needed for ES https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n if (pinResult.product_url && pinResult.product_url !== '' && country?.toLowerCase() === 'es') {\n return { gatewayRedirectUrl: pinResult.product_url };\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n checkSubscription({ window, country, slug, device, offer, rockmanId, extraParams });\n\n const checkResult: ICheckSubscriptionResult = await loop(\n check,\n 100,\n (r) => r.success || r.message === 'invalid_pin',\n 0\n );\n if (checkResult.success === true) {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: checkResult.product_url || null, isAlreadySubscribed };\n }\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${checkResult.message}`) as IError & {\n type: string;\n };\n pinError.type = 'InvalidPIN';\n\n pinError.message = checkResult.message;\n\n throw pinError;\n } else {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: pinResult.product_url || null, isAlreadySubscribed };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IHash,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy, setStrategyExtraData } from '../strategy/strategySlice';\nimport submitMSISDN, { submitPIN } from './main';\n\nconst mockedPINState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet<PINEntryFailure, PINEntrySuccess>(),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedCompletedState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({ finalUrl: '/product' }),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedMSISDNEntryFailure: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\n// Define the initial state\nconst defaultInitialState: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\n/**\n * Sets the initial state of the pin flow based on the search parameters in the URL or the default state.\n *\n * @param {Window} window - The window object.\n * @return {PinFlowState} The initial state of the pin flow.\n */\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n const pinPageEvent = new Event('onPinPage');\n const isPinEntryStep =\n (search.ui_show_pin_entry && search.ui_show_pin_entry === '1') ||\n (search['show-pin-entry'] && search['show-pin-entry'] === '1');\n const isShowThankYouStep = search['show-thank-you'] && search['show-thank-you'] === '1';\n const isShowCustomError = search?.show_custom_error === '1';\n\n const rawParam = search?.ui_error_message ?? '';\n const normalizedParam = rawParam.replace(/\\+/g, '%20');\n const errorMsg = decodeURIComponent(normalizedParam);\n const mapParamError: { [key: string]: string } = {\n 'This mobile number is blacklisted': 'BlacklistedNumber'\n };\n\n const msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: mapParamError[errorMsg] || 'SomethingWentWrong',\n error: errorMsg\n })\n }\n };\n\n const thankYouState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: search?.product_url || ''\n }),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n\n const initalPinEntryState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet(),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n if (isPinEntryStep) {\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return initalPinEntryState;\n }\n if (isShowThankYouStep) {\n return thankYouState;\n }\n if (isShowCustomError) {\n return msisdnError;\n }\n\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-failure-state':\n return mockedMSISDNEntryFailure;\n case 'pin-state':\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return mockedPINState;\n case 'completed-state':\n return mockedCompletedState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls trigger-pin api that sends a pin to the user\n * Sets state to show pin entry\n */\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\nexport const submitMSISDNAction = createAsyncThunk<\n PINEntryState | MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, isHeaderEnrichmentSuccess } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n const searchObj = searchToObject(window) as { ui_show_pin_entry: string };\n\n try {\n /**\n * Palestine calling code is +970\n * But there was a request to have it as +972 only for gateway shemaroo\n */\n // Start PS Calling code temp fix\n if (config?.country.toLowerCase() === 'ps' && config?.slug.includes('shemaroo')) {\n const prefix = getInputValuePrefix(config?.country, msisdn);\n if (prefix === '+970') {\n msisdn = msisdn.replace('970', '972');\n }\n }\n // END PS Calling code temp fix\n\n const jsLinkResult = window?.pac_analytics?.visitor?.genericJsLinkResult;\n\n // If the flow is TPAY the above trigger pin will only do tracking on the backend and not actually request a pin from gateway\n // The code below handles that request\n if (jsLinkResult?.gateway === 'tpay' && !searchObj?.ui_show_pin_entry) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n await submitMSISDN(window, config, msisdn); // trigger pin call requested here by Adrian for BE tracking\n window.msisdn = msisdn;\n if (window.callConfirm) {\n try {\n window.callConfirm();\n return {\n ...pinFlowCurrentState,\n type: 'MSISDNEntry',\n result: RDS.Loading()\n };\n } catch (ex) {\n // Catch any unexpected errors\n const errorMsg = 'Confirm function failed';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: ex?.toString() || 'Error calling window.callConfirm function',\n message: ex.message\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n }\n }\n // Catch any unexpected errors\n const errorMsg = 'Confirm function not found';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n\n // END TPAY TRIGGER PIN\n }\n\n // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n // End Trigger Pin\n\n /**\n * Some flows require us to redirect to a url after trigger pin to check for fraud\n * The url will then do some processing and return back to ouisys with\n * extra param in the url that will tell us to show pin entry step or error\n */\n\n // Start Pin Redirect\n if (msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult.redirectUrl) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-redirect', {\n redirectUrl: msisdnSubmissionResult.redirectUrl\n });\n window.location.href = msisdnSubmissionResult.redirectUrl;\n return;\n }\n // End Pin Redirect\n\n // Start handle store msisdn\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End handle store msisdn\n\n const operator: string =\n msisdnSubmissionResult?.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult?.operator : '';\n\n const pinMaxLengthByOp: { [key: string]: number } = {\n SA_MOBILY: 6,\n SA_STC: 4,\n SA_ZAIN: 4\n };\n\n /**\n * onPinPage\n * some scripts on the server need to be injected on pin page/view\n * This event will be handled on server\n */\n const pinPageEvent = new Event('onPinPage');\n window?.dispatchEvent(pinPageEvent);\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.NothingYet(),\n data: {\n actualPIN: msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.pin : null,\n msisdn,\n operator,\n pinMaxLength: operator !== '' && pinMaxLengthByOp[operator] ? pinMaxLengthByOp[operator] : null,\n isHeaderEnrichmentSuccess,\n ...(msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult?.userType\n ? { userType: msisdnSubmissionResult.userType }\n : {})\n }\n };\n // END NORMAL TRIGGER PIN\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess: false,\n config\n }\n })\n );\n }\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\n/**\n * submitPinAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: 'PINEntry', result: RDS.NothingYet()}}\n \n * Calls verify-pin api that check if the user enters a valid pin\n * Sets state to show thank you page if pin is valid\n */\ninterface SubmitPINArgs {\n window: Window;\n msisdn: string;\n pin: string;\n extraParams?: IHash;\n}\n\nexport const submitPinAction = createAsyncThunk<\n PINEntryState,\n SubmitPINArgs,\n {\n rejectValue: PINEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitPinAction', async ({ window, msisdn, pin, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submitted', { msisdn, pin });\n const result = await submitPIN(window, pin, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submission-success', {\n msisdn,\n pin,\n finalUrl: result.productUrl\n });\n\n /**\n * Gateway redirect\n * Value returned in this case is actually the gateway url instead of the product url\n * More details on this ticket:\n * https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n */\n // Start Gateway redirect\n if (result.gatewayRedirectUrl && result.gatewayRedirectUrl !== '') {\n tracker.advancedInFlow('tallyman.v1-pin', 'gateway-redirect', {\n msisdn,\n pin,\n gatewayRedirectUrl: result.gatewayRedirectUrl\n });\n window.location.href = result.gatewayRedirectUrl;\n }\n // End Gateway redirect\n\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End store msisdn\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: result.productUrl,\n isAlreadySubscribed: result.isAlreadySubscribed || false\n })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: PINEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidPIN':\n errorType = 'InvalidPIN';\n break;\n case 'SessionBlocked':\n errorType = 'SessionBlocked';\n break;\n case 'ExpiredPIN':\n errorType = 'ExpiredPIN';\n break;\n case 'InsufficientBalance':\n errorType = 'InsufficientBalance';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\n break;\n default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n // Redirect to the product url if returned in the exception\n setTimeout(() => {\n if (ex.productUrl) {\n window.location.href = ex.productUrl;\n }\n }, 0);\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('pinFlow/backToStartAction', async (_, { getState, dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { strategy } = state.strategy.currentState.data;\n if (strategy === 'pin') {\n return {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n };\n }\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\ntype CountryCodeMap = { [country: string]: string };\n\nconst countryCodes: CountryCodeMap = {\n PS: '970'\n // Add other countries and codes here\n};\n\nconst getInputValuePrefix = (country: string, international: string): string => {\n if (!country || !international) return '';\n\n // Convert the country to uppercase and retrieve the country code\n const normalizedCountry = country.toUpperCase();\n const countryCode = countryCodes[normalizedCountry];\n\n // Check if the country code exists in the mapping\n if (!countryCode) {\n console.error('Country code not found for', country);\n return '';\n }\n\n return `+${countryCode}`;\n};\n\n// Define your slice\nconst pinFlowSlice = createSlice({\n name: 'pinFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Loading(),\n data: state.currentState.data\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState | MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n data: state.currentState.data\n };\n })\n .addCase(submitPinAction.pending, (state) => {\n state.currentState = { type: 'PINEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitPinAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitPinAction.rejected, (state, action: PayloadAction<PINEntryFailure>) => {\n state.currentState = { type: 'PINEntry', result: RDS.Failure(action.payload), data: state.currentState.data };\n })\n .addCase(backToStartAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n });\n }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\n\nexport const selectPinFlowState = (state: any) => state.pinFlow;\n"],"names":["usePinFlowState","useSelector","state","pinFlow","currentState","pinFlowMatch","_a","msisdnEntry","pinEntry","type","result","data","Error","checkIsCleanTraffic","country","window","shouldBlock","triggerPin","slug","device","offer","msisdn","rockmanId","extraParams","search","uniqid","evinaTid","cleanTrafficString","extraParamsQs","concat","Object","keys","map","k","filter","Boolean","join","cleanSearchParams","params","action","offerId","rockman_id","sam_evina_tid","page","encodeURIComponent","_b","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","zain_antifraud_id","korek_antifraud_id","queryString","entries","__read","key","value","host","DEV_BASE_URL","url","fetch","then","x","json","verifyPin","pin","bupperizeCountry","ClickID","antifraud_click_id","mcpShield","operator","pageUrl","ipAdd","pac_analytics","visitor","ip","URLSearchParams","__assign","toString","client_lpu","append","submitMSISDN","maybeConfig","internationalMSISDN","config","automaticallySubmitAllOperators","operators","length","submitMSISDNForMultipleOperators","submitMSISDNOnce","uniqidResult","submissionError","newExtraParams","isSkipValidation","searchObj","searchToObject","success","skip_validation","match","substr","tid","sent","isContentBlocked","error","message","includes","productUrl","product_url","console","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","warn","loadScriptInnerHtml","source","err_2","javascript","redirectUrl","redirect_to_url","userType","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorType","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","ui_show_pin_entry","isShowThankYouStep","isShowCustomError","show_custom_error","normalizedParam","ui_error_message","replace","errorMsg","decodeURIComponent","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","jsLinkResult","_j","_h","genericJsLinkResult","gateway","tracker","advancedInFlow","_k","callConfirm","RDS.Loading","ex","errorMsg_1","recedeInFlow","msisdnSubmissionResult","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","setStrategyExtraData","PossibleTypes","PIN","submitPinAction","ex_2","setTimeout","backToStartAction","_","identifyStrategy","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"pinFlow.js","sources":["../src/flows/pinFlow/hooks/usePinFlowState.ts","../src/flows/pinFlow/match.ts","../src/sharedApi/checkSubscription.ts","../src/flows/pinFlow/api.ts","../src/flows/pinFlow/main.ts","../src/flows/pinFlow/pinFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const usePinFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.pinFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport {\n IMsisdnSumbitNextData,\n MSISDNEntryFailure,\n MSISDNEntrySuccess,\n PINEntryFailure,\n PINEntrySuccess,\n PinFlowCurrentState\n} from '../../sharedFlowTypes/PinTypes';\n\nfunction pinFlowMatch<R>({\n msisdnEntry,\n pinEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n pinEntry: (rds: RDS.RemoteDataState<PINEntryFailure, PINEntrySuccess>, nextData: IMsisdnSumbitNextData) => R;\n}): (state: PinFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n case 'PINEntry':\n return pinEntry(state.result, state.data);\n default:\n throw new Error('Invalid State');\n }\n };\n}\n\nexport { pinFlowMatch };\n","import { ICheckSubscriptionResult } from '../common-types/ICheckSubscriptionResult';\nimport { IHash } from '../common-types/IHash';\nimport { bupperizeCountry } from '../utilities/bupperizeCountry';\n\nconst checkSubscription = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n extraParams?: IHash; // Marked as optional if currently unused\n}): Promise<ICheckSubscriptionResult> => {\n const params = {\n action: 'check-subscription',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId\n };\n\n const queryString = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}`;\n return fetch(url).then((response) => response.json());\n};\n\nexport { checkSubscription };\n","import { IHash, IMcpShieldResult, IMSISDNSubmissionResult, IPINSubmissionResult } from '../../sharedFlowTypes/PinTypes';\nimport { bupperizeCountry } from '../../utilities/bupperizeCountry';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst checkIsCleanTraffic = (country: string): string => {\n if (country === 'be') {\n if (typeof window !== 'undefined' && window.shouldBlock === true) {\n return '&is-clean-traffic=false';\n }\n return '&is-clean-traffic=true';\n }\n return '';\n};\nconst triggerPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams,\n search,\n uniqid,\n evinaTid\n}: {\n window?: Window;\n country: string;\n slug: string;\n device: 'smart' | 'feature';\n offer: string;\n msisdn: string;\n rockmanId: string;\n extraParams: IHash;\n search: string;\n uniqid?: string;\n evinaTid?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n\n // Base parameters object\n const params = {\n action: 'trigger-pin',\n country,\n slug,\n device,\n offerId: offer,\n msisdn,\n rockman_id: rockmanId,\n sam_evina_tid: evinaTid,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n partner_transaction_id: window.partner_transaction_id || '',\n partner_timestamp: window.partner_timestamp || '',\n partner_cid: window.partner_cid || '',\n uniqid: uniqid || '',\n\n antifraud_id: window.antifraud_id || '',\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst verifyPin = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams,\n uniqid,\n evinaTid,\n search\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n pin: string;\n extraParams: IHash;\n uniqid: string;\n evinaTid: string;\n search: string;\n}): Promise<IPINSubmissionResult> => {\n const cleanTrafficString = checkIsCleanTraffic(country);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => `${k}=${extraParams[k]}`)\n .join('&')}`;\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n // Base parameters object\n const params = {\n action: 'verify-pin',\n country: bupperizeCountry(country),\n slug,\n device,\n offerId: offer,\n rockman_id: rockmanId,\n pin,\n page: encodeURIComponent(window?.location?.href),\n language_code: window.languageCode || '',\n ClickID: window.antifraud_click_id || '',\n partner_cid: window.partner_cid || '',\n sam_evina_tid: evinaTid,\n uniqid,\n // More specific antifraud IDs will eventuallly replace antifraud_id\n // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25\n antifraud_id: window.antifraud_id || '',\n antifraud_id_js_code: window.antifraud_id_js_code || '',\n antifraud_id_js_link: window.antifraud_id_js_link || '',\n zain_antifraud_id: window.zain_antifraud_id || '',\n korek_antifraud_id: window.korek_antifraud_id || ''\n };\n\n // Convert params object to query string\n const queryString = Object.entries(params)\n .filter(([_, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${queryString}${cleanTrafficString}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nconst mcpShield = async ({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator,\n uniqid\n}: {\n window: Window;\n country: string;\n slug: string;\n device: string;\n offer: string;\n rockmanId: string;\n operator?: string;\n uniqid?: string;\n}): Promise<IMcpShieldResult> => {\n const pageUrl = window.location.href;\n const ipAdd = window.pac_analytics.visitor.ip;\n\n const params = new URLSearchParams({\n action: 'mcp-shield',\n country,\n slug,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n client_lpu: pageUrl,\n ...(operator && { operator }),\n ...(uniqid && { uniqid })\n });\n\n // Conditionally add client_ip if it exists\n if (ipAdd) {\n params.append('client_ip', ipAdd);\n }\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params.toString()}`;\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { triggerPin, verifyPin, mcpShield };\n","import { ICheckSubscriptionResult } from '../../common-types/ICheckSubscriptionResult';\nimport { IError } from '../../common-types/IError';\nimport { checkSubscription } from '../../sharedApi/checkSubscription';\nimport {\n IHash,\n IMcpShieldResult,\n IMSISDNSubmissionResult,\n IPINSubmissionResult,\n MultiOperatorMSISDNSubmissionResult,\n SingleMSISDNSubmissionResult\n} from '../../sharedFlowTypes/PinTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { left, loop, right } from '../../utilities/helpers';\nimport { loadScriptInnerHtml } from '../../utilities/loadScriptInnerHtml';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { mcpShield, triggerPin, verifyPin } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult | MultiOperatorMSISDNSubmissionResult> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n if (config.automaticallySubmitAllOperators === true && !!config.operators && config.operators.length > 0) {\n return submitMSISDNForMultipleOperators(window, config, internationalMSISDN, config.operators, extraParams);\n }\n return submitMSISDNOnce(window, config, internationalMSISDN, extraParams);\n}\n\nlet uniqidResult = '';\n// eslint-disable-next-line consistent-return\nexport async function loadMcpShield(window: Window, config: IConfig): Promise<IMcpShieldResult> {\n if (config) {\n const { slug, country, device } = config;\n\n const { offer } = window.pac_analytics.visitor;\n const { rockmanId } = window.pac_analytics.visitor;\n\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({ window, country, slug, device, offer, rockmanId });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n return mcpShieldResult;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nasync function submitMSISDNOnce(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: IHash\n): Promise<SingleMSISDNSubmissionResult> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in submitMSISDN() trigger-pin action`) as IError & { type: string };\n submissionError.type = 'InvalidMSISDN';\n throw submissionError;\n }\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n // @ts-ignore\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.skip_validation === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams['skip-validation'] = '1';\n }\n\n if (newExtraParams['skip-validation'] === '1') {\n isSkipValidation = true;\n }\n\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n const { rockmanId } = window.pac_analytics.visitor;\n\n const { slug, country, device, offer } = config;\n\n const search = window.location.search.substr(1) || '';\n const uniqid = !!uniqidResult && uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n\n const result: IMSISDNSubmissionResult = await triggerPin({\n window,\n country,\n slug,\n device,\n offer,\n msisdn,\n rockmanId,\n extraParams: newExtraParams,\n search,\n uniqid,\n evinaTid\n });\n\n if (result.isContentBlocked === true) {\n window.isContentBlocked = true;\n }\n if (result.success === false) {\n const error = new Error(`Error in submitMSISDN() trigger-pin action:\\n${result.message}`) as IError & {\n type: string;\n productUrl: string;\n };\n error.message = result.message;\n switch (true) {\n case result.message.includes('ALREADY SUBSCRIBED'):\n error.type = 'AlreadySubscribed';\n break;\n case result.message.includes('invalid'):\n error.type = 'InvalidMSISDN';\n break;\n case result.message.includes('duplicated_request'):\n error.type = 'DuplicatedRequest';\n break;\n default:\n error.type = null;\n }\n // error.type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n error.productUrl = result.product_url ? result.product_url : '';\n console.error(error);\n throw error;\n } else {\n window.operator = result.operator; // currently used on server for KW_STC if present dont call empello for Shemaroo\n const codesWithMcpShied: { [key: string]: { [key: string]: string } } = {\n kw: {\n kw_viva: 'kw_viva'\n },\n k2: {\n k2_viva: 'k2_viva'\n },\n bh: {\n bh_viva: 'bh_viva'\n }\n };\n if (\n country &&\n result.operator &&\n ((codesWithMcpShied[country.toLowerCase()] &&\n codesWithMcpShied[country.toLowerCase()][result.operator.toLowerCase()]) ||\n country.toLowerCase() === 'iq') &&\n !window.isCallBlockApi &&\n !window.Empello // set on server https://www.notion.so/sammedia/KW-Agency-Shemaroo-STC-integration-1a114991683d4af79eb01a4d96789f30\n ) {\n try {\n const mcpShieldResult: IMcpShieldResult = await mcpShield({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n operator: result.operator,\n uniqid\n });\n if (mcpShieldResult.success === false) {\n console.warn(mcpShieldResult.message);\n } else {\n loadScriptInnerHtml(mcpShieldResult.source);\n uniqidResult = mcpShieldResult.uniqid;\n }\n } catch (err) {\n console.warn(err);\n }\n }\n\n if (result.javascript) {\n loadScriptInnerHtml(result.javascript);\n }\n\n return {\n type: 'SingleMSISDNSubmissionResult',\n pin: result.pin,\n uniqidResult,\n operator: result.operator,\n redirectUrl: result?.redirect_to_url, // For pin redirect empello\n ...(result?.userType ? { userType: result?.userType } : {}) // For Peru user plan if prepaid or postpaid\n };\n }\n}\n\nasync function submitMSISDNForMultipleOperators(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n operators: string[],\n extraParams?: IHash\n): Promise<MultiOperatorMSISDNSubmissionResult> {\n const results = await Promise.all(\n operators.map(async (o) => {\n try {\n const singleResult = await submitMSISDNOnce(window, config, internationalMSISDN, {\n ...extraParams,\n operator: o\n });\n return right({ ...singleResult, operator: o });\n } catch (error) {\n return left(error);\n }\n })\n );\n\n const alreadySubscribed = results.find((r: any) => r.type === 'left' && r.value?.type === 'AlreadySubscribed');\n\n if (results.every((r) => r.type === 'left')) {\n // no submission worked\n throw results[0].value;\n } else if (alreadySubscribed) {\n throw alreadySubscribed.value;\n } else {\n return {\n type: 'MultiOperatorMSISDNSubmissionResult'\n };\n }\n}\n\nexport async function submitPIN(\n window: Window,\n pin: string,\n config: IConfig,\n extraParams: IHash\n): Promise<{ productUrl?: string; isAlreadySubscribed?: boolean; gatewayRedirectUrl?: string }> {\n if (window.hostCountry && window.hostSlug) {\n config.country = window.hostCountry;\n config.slug = window.hostSlug;\n }\n const { slug, country, device } = config;\n const { offer } = window.pac_analytics.visitor;\n\n const newExtraParams = extraParams || {};\n const searchObj = searchToObject(window) as any;\n if (searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') {\n newExtraParams['skip-validation'] = '1';\n }\n\n const { rockmanId } = window.pac_analytics.visitor;\n\n if (!pin) {\n const emptyPinError = new Error(`Error in submitMSISDN() verify-pin action:\\n Pin Cannot Be Empty`) as IError & {\n type: string;\n };\n emptyPinError.type = 'InvalidPIN';\n throw emptyPinError;\n }\n const uniqid = uniqidResult !== '' ? `&mcpUniqid=${uniqidResult}` : '';\n const evinaTid = typeof window !== 'undefined' && window.tid ? window.tid : '';\n const search = window.location.search.substr(1) || '';\n\n const pinResult: IPINSubmissionResult = await verifyPin({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId,\n pin,\n extraParams: newExtraParams,\n uniqid,\n evinaTid,\n search\n });\n if (pinResult.success === false) {\n let errorType: string;\n\n switch (true) {\n case pinResult.message.includes('pin does not match'):\n errorType = 'InvalidPIN';\n break;\n case pinResult.message.includes('mcp blocked'):\n errorType = 'SessionBlocked';\n break;\n case pinResult.message.includes('expired_pin'):\n errorType = 'ExpiredPIN';\n break;\n case pinResult.message.includes('insufficient_balance'):\n errorType = 'InsufficientBalance';\n break;\n case pinResult.message.includes('duplicated_request'):\n errorType = 'DuplicatedRequest';\n break;\n case pinResult.message.includes('ALREADY SUBSCRIBED'):\n errorType = 'AlreadySubscribed';\n break;\n default:\n errorType = 'InvalidPIN';\n }\n\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${pinResult.message}`) as IError & {\n type: string;\n };\n pinError.type = errorType;\n console.error(pinError);\n throw pinError;\n } else if (pinResult.async === true) {\n // Needed for ES https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n if (pinResult.product_url && pinResult.product_url !== '' && country?.toLowerCase() === 'es') {\n return { gatewayRedirectUrl: pinResult.product_url };\n }\n const check: () => Promise<ICheckSubscriptionResult> = () =>\n checkSubscription({ window, country, slug, device, offer, rockmanId, extraParams });\n\n const checkResult: ICheckSubscriptionResult = await loop(\n check,\n 100,\n (r) => r.success || r.message === 'invalid_pin',\n 0\n );\n if (checkResult.success === true) {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: checkResult.product_url || null, isAlreadySubscribed };\n }\n const pinError = new Error(`Error in submitMSISDN() verify-pin action:\\n${checkResult.message}`) as IError & {\n type: string;\n };\n pinError.type = 'InvalidPIN';\n\n pinError.message = checkResult.message;\n\n throw pinError;\n } else {\n const isAlreadySubscribed = pinResult.message === 'ALREADY SUBSCRIBED';\n return { productUrl: pinResult.product_url || null, isAlreadySubscribed };\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n IHash,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess,\n PINEntryErrorTypes,\n PINEntryFailure,\n PINEntryState,\n PINEntrySuccess,\n PinFlowState\n} from '../../sharedFlowTypes/PinTypes';\nimport { IMockFlowParams, PossibleTypes, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { identifyStrategy, setStrategyExtraData } from '../strategy/strategySlice';\nimport submitMSISDN, { submitPIN } from './main';\n\nconst mockedPINState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet<PINEntryFailure, PINEntrySuccess>(),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedCompletedState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({ finalUrl: '/product' }),\n data: {\n actualPIN: '',\n msisdn: '',\n operator: '',\n pinMaxLength: 4\n }\n }\n};\n\nconst mockedMSISDNEntryFailure: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\n// Define the initial state\nconst defaultInitialState: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\n/**\n * Sets the initial state of the pin flow based on the search parameters in the URL or the default state.\n *\n * @param {Window} window - The window object.\n * @return {PinFlowState} The initial state of the pin flow.\n */\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n const pinPageEvent = new Event('onPinPage');\n const isPinEntryStep =\n (search.ui_show_pin_entry && search.ui_show_pin_entry === '1') ||\n (search['show-pin-entry'] && search['show-pin-entry'] === '1');\n const isShowThankYouStep = search['show-thank-you'] && search['show-thank-you'] === '1';\n const isShowCustomError = search?.show_custom_error === '1';\n\n const rawParam = search?.ui_error_message ?? '';\n const normalizedParam = rawParam.replace(/\\+/g, '%20');\n const errorMsg = decodeURIComponent(normalizedParam);\n const mapParamError: { [key: string]: string } = {\n 'This mobile number is blacklisted': 'BlacklistedNumber'\n };\n\n const msisdnError: PinFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: mapParamError[errorMsg] || 'SomethingWentWrong',\n error: errorMsg\n })\n }\n };\n\n const thankYouState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: search?.product_url || ''\n }),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n\n const initalPinEntryState: PinFlowState = {\n currentState: {\n type: 'PINEntry',\n result: RDS.NothingYet(),\n // @ts-ignore\n data: {\n msisdn: search?.msisdn || '',\n operator: search?.operator || ''\n }\n }\n };\n if (isPinEntryStep) {\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return initalPinEntryState;\n }\n if (isShowThankYouStep) {\n return thankYouState;\n }\n if (isShowCustomError) {\n return msisdnError;\n }\n\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-failure-state':\n return mockedMSISDNEntryFailure;\n case 'pin-state':\n // Needed for shemroo the handler is injected on server\n window?.dispatchEvent(pinPageEvent);\n return mockedPINState;\n case 'completed-state':\n return mockedCompletedState;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes.MO, result: PINEntryState}}\n \n * Calls trigger-pin api that sends a pin to the user\n * Sets state to show pin entry\n */\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\nexport const submitMSISDNAction = createAsyncThunk<\n PINEntryState | MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitMSISDNAction', async ({ window, msisdn, extraParams }, { getState, dispatch, rejectWithValue }) => {\n const state: RootState = getState();\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config, isHeaderEnrichmentSuccess } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n const searchObj = searchToObject(window) as { ui_show_pin_entry: string };\n\n try {\n /**\n * Palestine calling code is +970\n * But there was a request to have it as +972 only for gateway shemaroo\n */\n // Start PS Calling code temp fix\n if (config?.country.toLowerCase() === 'ps' && config?.slug.includes('shemaroo')) {\n const prefix = getInputValuePrefix(config?.country, msisdn);\n if (prefix === '+970') {\n msisdn = msisdn.replace('970', '972');\n }\n }\n // END PS Calling code temp fix\n\n const jsLinkResult = window?.pac_analytics?.visitor?.genericJsLinkResult;\n\n // If the flow is TPAY the above trigger pin will only do tracking on the backend and not actually request a pin from gateway\n // The code below handles that request\n if (jsLinkResult?.gateway === 'tpay' && !searchObj?.ui_show_pin_entry) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n await submitMSISDN(window, config, msisdn); // trigger pin call requested here by Adrian for BE tracking\n window.msisdn = msisdn;\n if (window.callConfirm) {\n try {\n window.callConfirm();\n return {\n ...pinFlowCurrentState,\n type: 'MSISDNEntry',\n result: RDS.Loading()\n };\n } catch (ex) {\n // Catch any unexpected errors\n const errorMsg = 'Confirm function failed';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: ex?.toString() || 'Error calling window.callConfirm function',\n message: ex.message\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n }\n }\n // Catch any unexpected errors\n const errorMsg = 'Confirm function not found';\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n return rejectWithValue({\n errorType: 'TPayConfirmError',\n error: errorMsg,\n message: errorMsg\n });\n\n // END TPAY TRIGGER PIN\n }\n\n // Start Trigger Pin\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submitted', { msisdn });\n const msisdnSubmissionResult = await submitMSISDN(window, config, msisdn);\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n // End Trigger Pin\n\n /**\n * Some flows require us to redirect to a url after trigger pin to check for fraud\n * The url will then do some processing and return back to ouisys with\n * extra param in the url that will tell us to show pin entry step or error\n */\n\n // Start Pin Redirect\n if (msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult.redirectUrl) {\n tracker.advancedInFlow('tallyman.v1-pin', 'msisdn-submission-success', { msisdn });\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-redirect', {\n redirectUrl: msisdnSubmissionResult.redirectUrl\n });\n window.location.href = msisdnSubmissionResult.redirectUrl;\n return;\n }\n // End Pin Redirect\n\n // Start handle store msisdn\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End handle store msisdn\n\n const operator: string =\n msisdnSubmissionResult?.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult?.operator : '';\n\n const pinMaxLengthByOp: { [key: string]: number } = {\n SA_MOBILY: 6,\n SA_STC: 4,\n SA_ZAIN: 4\n };\n\n /**\n * onPinPage\n * some scripts on the server need to be injected on pin page/view\n * This event will be handled on server\n */\n const pinPageEvent = new Event('onPinPage');\n window?.dispatchEvent(pinPageEvent);\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.NothingYet(),\n data: {\n actualPIN: msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' ? msisdnSubmissionResult.pin : null,\n msisdn,\n operator,\n pinMaxLength: operator !== '' && pinMaxLengthByOp[operator] ? pinMaxLengthByOp[operator] : null,\n isHeaderEnrichmentSuccess,\n ...(msisdnSubmissionResult.type === 'SingleMSISDNSubmissionResult' && msisdnSubmissionResult?.userType\n ? { userType: msisdnSubmissionResult.userType }\n : {})\n }\n };\n // END NORMAL TRIGGER PIN\n } catch (ex) {\n console.warn(ex);\n let errorType: MSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\n break;\n default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-pin', 'msisdn-submission-failure', {\n msisdn,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n\n if (isHeaderEnrichmentSuccess) {\n dispatch(\n setStrategyExtraData({\n type: PossibleTypes.PIN,\n data: {\n isHeaderEnrichmentSuccess: false,\n config\n }\n })\n );\n }\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\n/**\n * submitPinAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: 'PINEntry', result: RDS.NothingYet()}}\n \n * Calls verify-pin api that check if the user enters a valid pin\n * Sets state to show thank you page if pin is valid\n */\ninterface SubmitPINArgs {\n window: Window;\n msisdn: string;\n pin: string;\n extraParams?: IHash;\n}\n\nexport const submitPinAction = createAsyncThunk<\n PINEntryState,\n SubmitPINArgs,\n {\n rejectValue: PINEntryFailure; // Type for rejectWithValue\n }\n>('pinFlow/submitPinAction', async ({ window, msisdn, pin, extraParams }, { getState, rejectWithValue }) => {\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { config } = state.strategy.currentState.data;\n const pinFlowCurrentState = state.pinFlow?.currentState;\n try {\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submitted', { msisdn, pin });\n const result = await submitPIN(window, pin, config, extraParams);\n tracker.advancedInFlow('tallyman.v1-pin', 'pin-submission-success', {\n msisdn,\n pin,\n finalUrl: result.productUrl\n });\n\n /**\n * Gateway redirect\n * Value returned in this case is actually the gateway url instead of the product url\n * More details on this ticket:\n * https://www.notion.so/sammedia/ES-OnMobile-Movistar-Direct-Ouisys-Integration-XR-Academy-ca60b176b0ea40a7b170e5d9e7deb491\n */\n // Start Gateway redirect\n if (result.gatewayRedirectUrl && result.gatewayRedirectUrl !== '') {\n tracker.advancedInFlow('tallyman.v1-pin', 'gateway-redirect', {\n msisdn,\n pin,\n gatewayRedirectUrl: result.gatewayRedirectUrl\n });\n window.location.href = result.gatewayRedirectUrl;\n }\n // End Gateway redirect\n\n // if storeMsisdn is true, encrypt msisdn and save it in cookie, localStorage, and zürch\n if (extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true') {\n await storeMsisdn(msisdn)\n .then((data: any) => {\n if (data && data.data && data.data.success) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');\n }\n })\n .catch((error) => {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);\n });\n }\n // End store msisdn\n\n return {\n ...pinFlowCurrentState,\n type: 'PINEntry',\n result: RDS.Success<PINEntryFailure, PINEntrySuccess>({\n finalUrl: result.productUrl,\n isAlreadySubscribed: result.isAlreadySubscribed || false\n })\n };\n } catch (ex) {\n console.warn(ex);\n let errorType: PINEntryErrorTypes;\n switch (ex.type) {\n case 'AlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'InvalidPIN':\n errorType = 'InvalidPIN';\n break;\n case 'SessionBlocked':\n errorType = 'SessionBlocked';\n break;\n case 'ExpiredPIN':\n errorType = 'ExpiredPIN';\n break;\n case 'InsufficientBalance':\n errorType = 'InsufficientBalance';\n break;\n case 'DuplicatedRequest':\n errorType = 'DuplicatedRequest';\n break;\n default:\n errorType = 'UnknownError';\n break;\n }\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-submission-failure', {\n msisdn,\n pin,\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n // Redirect to the product url if returned in the exception\n setTimeout(() => {\n if (ex.productUrl) {\n window.location.href = ex.productUrl;\n }\n }, 0);\n\n return rejectWithValue({\n errorType,\n error: ex.toString(),\n message: ex.message,\n productUrl: ex.productUrl\n });\n }\n});\n\nexport const backToStartAction = createAsyncThunk<\n any,\n any,\n {\n rejectValue: any; // Type for rejectWithValue\n }\n>('pinFlow/backToStartAction', async (_, { getState, dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-pin', 'pin-state', 'requested to change phone number');\n const state: RootState = getState();\n\n if (!state?.strategy?.currentState?.data?.config) {\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n const { strategy } = state.strategy.currentState.data;\n if (strategy === 'pin') {\n return {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n };\n }\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\ntype CountryCodeMap = { [country: string]: string };\n\nconst countryCodes: CountryCodeMap = {\n PS: '970'\n // Add other countries and codes here\n};\n\nconst getInputValuePrefix = (country: string, international: string): string => {\n if (!country || !international) return '';\n\n // Convert the country to uppercase and retrieve the country code\n const normalizedCountry = country.toUpperCase();\n const countryCode = countryCodes[normalizedCountry];\n\n // Check if the country code exists in the mapping\n if (!countryCode) {\n console.error('Country code not found for', country);\n return '';\n }\n\n return `+${countryCode}`;\n};\n\n// Define your slice\nconst pinFlowSlice = createSlice({\n name: 'pinFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Loading(),\n data: state.currentState.data\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<PINEntryState | MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n // @ts-ignore\n state.currentState = {\n type:\n window?.location?.search?.includes('ui_show_pin_entry') ||\n (window?.location?.search?.includes('show-pin-entry') &&\n window?.pac_analytics?.visitor?.genericJsLinkResult?.gateway === 'tpay')\n ? 'PINEntry'\n : 'MSISDNEntry',\n result: RDS.Failure(action.payload),\n data: state.currentState.data\n };\n })\n .addCase(submitPinAction.pending, (state) => {\n state.currentState = { type: 'PINEntry', result: RDS.Loading(), data: state.currentState.data };\n })\n .addCase(submitPinAction.fulfilled, (state, action: PayloadAction<PINEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitPinAction.rejected, (state, action: PayloadAction<PINEntryFailure>) => {\n state.currentState = { type: 'PINEntry', result: RDS.Failure(action.payload), data: state.currentState.data };\n })\n .addCase(backToStartAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n });\n }\n});\n\nexport const { reducer: pinFlowReducer, actions: pinFlowActions } = pinFlowSlice;\n\nexport const selectPinFlowState = (state: any) => state.pinFlow;\n"],"names":["usePinFlowState","useSelector","state","pinFlow","currentState","pinFlowMatch","_a","msisdnEntry","pinEntry","type","result","data","Error","checkIsCleanTraffic","country","window","shouldBlock","triggerPin","slug","device","offer","msisdn","rockmanId","extraParams","search","uniqid","evinaTid","cleanTrafficString","extraParamsQs","concat","Object","keys","map","k","filter","Boolean","join","cleanSearchParams","params","action","offerId","rockman_id","sam_evina_tid","page","encodeURIComponent","_b","location","href","language_code","languageCode","partner_transaction_id","partner_timestamp","partner_cid","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","zain_antifraud_id","korek_antifraud_id","queryString","entries","__read","key","value","host","DEV_BASE_URL","url","fetch","then","x","json","verifyPin","pin","bupperizeCountry","ClickID","antifraud_click_id","mcpShield","operator","pageUrl","ipAdd","pac_analytics","visitor","ip","URLSearchParams","__assign","toString","client_lpu","append","submitMSISDN","maybeConfig","internationalMSISDN","config","automaticallySubmitAllOperators","operators","length","submitMSISDNForMultipleOperators","submitMSISDNOnce","uniqidResult","submissionError","newExtraParams","isSkipValidation","searchObj","searchToObject","success","skip_validation","match","substr","tid","sent","isContentBlocked","error","message","includes","productUrl","product_url","console","codesWithMcpShied","kw","kw_viva","k2","k2_viva","bh","bh_viva","toLowerCase","isCallBlockApi","Empello","mcpShieldResult","warn","loadScriptInnerHtml","source","err_2","javascript","redirectUrl","redirect_to_url","userType","Promise","all","o","__awaiter","_this","singleResult","right","left","error_1","results","alreadySubscribed","find","r","every","submitPIN","hostCountry","hostSlug","emptyPinError","pinResult","errorType","pinError","async","gatewayRedirectUrl","check","response","checkSubscription","loop","checkResult","isAlreadySubscribed","mockedPINState","RDS.NothingYet","actualPIN","pinMaxLength","mockedCompletedState","RDS.Success","finalUrl","mockedMSISDNEntryFailure","RDS.Failure","defaultInitialState","initialState","pinPageEvent","Event","isPinEntryStep","ui_show_pin_entry","isShowThankYouStep","isShowCustomError","show_custom_error","normalizedParam","ui_error_message","replace","errorMsg","decodeURIComponent","msisdnError","thankYouState","initalPinEntryState","dispatchEvent","setInitialState","submitMSISDNAction","createAsyncThunk","getState","dispatch","rejectWithValue","_f","_d","strategy","_e","_c","isHeaderEnrichmentSuccess","pinFlowCurrentState","_g","getInputValuePrefix","jsLinkResult","_j","_h","genericJsLinkResult","gateway","tracker","advancedInFlow","_k","callConfirm","RDS.Loading","ex","errorMsg_1","recedeInFlow","msisdnSubmissionResult","customEvent","storeMsisdn","catch","pinMaxLengthByOp","SA_MOBILY","SA_STC","SA_ZAIN","ex_1","setStrategyExtraData","PossibleTypes","PIN","submitPinAction","ex_2","setTimeout","backToStartAction","_","identifyStrategy","countryCodes","PS","international","normalizedCountry","toUpperCase","countryCode","pinFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","fulfilled","payload","rejected","pinFlowReducer","reducer","actions"],"mappings":"+sBAGO,IAAMA,EAAkB,SAACC,GAE9B,OADqBA,GAAY,SAACC,GAAqB,OAAAA,EAAMC,QAAQC,YAAd,GAEzD,ECIA,SAASC,EAAgBC,OACvBC,EAAWD,EAAAC,YACXC,EAAQF,EAAAE,SAKR,OAAO,SAACN,GACN,OAAQA,EAAMO,MACZ,IAAK,cACH,OAAOF,EAAYL,EAAMQ,QAC3B,IAAK,WACH,OAAOF,EAASN,EAAMQ,OAAQR,EAAMS,MACtC,QACE,MAAM,IAAIC,MAAM,iBAEtB,CACF,CCvBA,ICAMC,EAAsB,SAACC,GAC3B,MAAgB,OAAZA,EACoB,oBAAXC,SAAiD,IAAvBA,OAAOC,YACnC,0BAEF,yBAEF,EACT,EACMC,EAAa,SAAOX,GACxB,IAAAS,EAAMT,EAAAS,OACND,EAAOR,EAAAQ,QACPI,EAAIZ,EAAAY,KACJC,EAAMb,EAAAa,OACNC,UACAC,EAAMf,EAAAe,OACNC,EAAShB,EAAAgB,UACTC,EAAWjB,EAAAiB,YACXC,EAAMlB,EAAAkB,OACNC,EAAMnB,EAAAmB,OACNC,EAAQpB,EAAAoB,gGAyDR,OA3CMC,EAAqBd,EAAoBC,GACzCc,EAAgB,IAAIC,OAAAC,OAAOC,KAAKR,GACnCS,KAAI,SAACC,GAAM,OAACV,EAAYU,GAAK,GAAAJ,OAAGI,EAAC,KAAAJ,OAAIN,EAAYU,IAAO,MACxDC,OAAOC,SACPC,KAAK,MAGRZ,EAASa,EAAkBb,GAGrBc,EAAS,CACbC,OAAQ,cACRzB,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNqB,QAASpB,EACTC,OAAMA,EACNoB,WAAYnB,EACZoB,cAAehB,EACfiB,KAAMC,mBAAmC,QAAhBC,EAAA9B,aAAM,EAANA,EAAQ+B,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,MAC3CC,cAAejC,EAAOkC,cAAgB,GACtCC,uBAAwBnC,EAAOmC,wBAA0B,GACzDC,kBAAmBpC,EAAOoC,mBAAqB,GAC/CC,YAAarC,EAAOqC,aAAe,GACnC3B,OAAQA,GAAU,GAElB4B,aAActC,EAAOsC,cAAgB,GAGrCC,qBAAsBvC,EAAOuC,sBAAwB,GACrDC,qBAAsBxC,EAAOwC,sBAAwB,GACrDC,kBAAmBzC,EAAOyC,mBAAqB,GAC/CC,mBAAoB1C,EAAO0C,oBAAsB,IAI7CC,EAAc5B,OAAO6B,QAAQrB,GAChCJ,QAAO,SAAC5B,GAAA,IAAAuC,EAAAe,OAAe,OAAbf,EAAA,GAAOA,EAAA,EAAM,IACvBb,KAAI,SAAC1B,GAAA,IAAAuC,EAAAe,OAACC,EAAGhB,EAAA,GAAEiB,EAAKjB,EAAA,GAAM,MAAA,GAAGhB,OAAAgC,EAAO,KAAAhC,OAAAiC,EAAV,IACtB1B,KAAK,KACF2B,EAAOhD,EAAOiD,cAAgB,GAC9BC,EAAM,UAAGF,EAAI,kBAAAlC,OAAiB6B,GAAc7B,OAAAF,GAAqBE,OAAAD,GAAgBC,OAAAL,EAAS,WAAIA,GAAW,IAE/G,CAAA,EAAO0C,MAAMD,GAAKE,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YAG1BC,EAAY,SAAOhE,GACvB,IAAAS,EAAMT,EAAAS,OACND,EAAOR,EAAAQ,QACPI,EAAIZ,EAAAY,KACJC,EAAMb,EAAAa,OACNC,UACAE,EAAShB,EAAAgB,UACTiD,EAAGjE,EAAAiE,IACHhD,EAAWjB,EAAAiB,YACXE,EAAMnB,EAAAmB,OACNC,EAAQpB,EAAAoB,SACRF,EAAMlB,EAAAkB,8FAqDN,OAvCMG,EAAqBd,EAAoBC,GACzCc,EAAgB,IAAIC,OAAAC,OAAOC,KAAKR,GACnCS,KAAI,SAACC,GAAM,MAAA,GAAGJ,OAAAI,EAAK,KAAAJ,OAAAN,EAAYU,GAAI,IACnCG,KAAK,MAERZ,EAASa,EAAkBb,GAErBc,EAAS,CACbC,OAAQ,aACRzB,QAAS0D,EAAiB1D,GAC1BI,KAAIA,EACJC,OAAMA,EACNqB,QAASpB,EACTqB,WAAYnB,EACZiD,IAAGA,EACH5B,KAAMC,mBAAmC,QAAhBC,EAAA9B,aAAM,EAANA,EAAQ+B,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,MAC3CC,cAAejC,EAAOkC,cAAgB,GACtCwB,QAAS1D,EAAO2D,oBAAsB,GACtCtB,YAAarC,EAAOqC,aAAe,GACnCV,cAAehB,EACfD,OAAMA,EAGN4B,aAActC,EAAOsC,cAAgB,GACrCC,qBAAsBvC,EAAOuC,sBAAwB,GACrDC,qBAAsBxC,EAAOwC,sBAAwB,GACrDC,kBAAmBzC,EAAOyC,mBAAqB,GAC/CC,mBAAoB1C,EAAO0C,oBAAsB,IAI7CC,EAAc5B,OAAO6B,QAAQrB,GAChCJ,QAAO,SAAC5B,GAAA,IAAAuC,EAAAe,OAAe,OAAbf,EAAA,GAAOA,EAAA,EAAM,IACvBb,KAAI,SAAC1B,GAAA,IAAAuC,EAAAe,OAACC,EAAGhB,EAAA,GAAEiB,EAAKjB,EAAA,GAAM,MAAA,GAAGhB,OAAAgC,EAAO,KAAAhC,OAAAiC,EAAV,IACtB1B,KAAK,KAEF2B,EAAOhD,EAAOiD,cAAgB,GAC9BC,EAAM,UAAGF,EAAI,kBAAAlC,OAAiB6B,GAAc7B,OAAAF,GAAqBE,OAAAD,GAAgBC,OAAAL,EAAS,WAAIA,GAAW,IAE/G,CAAA,EAAO0C,MAAMD,GAAKE,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YAG1BM,EAAY,SAAOrE,OACvBS,EAAMT,EAAAS,OACND,EAAOR,EAAAQ,QACPI,EAAIZ,EAAAY,KACJC,EAAMb,EAAAa,OACNC,EAAKd,EAAAc,MACLE,EAAShB,EAAAgB,UACTsD,EAAQtE,EAAAsE,SACRnD,EAAMnB,EAAAmB,0FAkCN,OAvBMoD,EAAU9D,EAAO+B,SAASC,KAC1B+B,EAAQ/D,EAAOgE,cAAcC,QAAQC,GAErC3C,EAAS,IAAI4C,gBAAeC,EAAAA,EAAA,CAChC5C,OAAQ,aACRzB,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNqB,QAASpB,EAAMgE,WACf3C,WAAYnB,EACZ+D,WAAYR,GACRD,GAAY,CAAEA,SAAQA,IACtBnD,GAAU,CAAEA,OAAMA,KAIpBqD,GACFxC,EAAOgD,OAAO,YAAaR,GAGvBf,EAAOhD,EAAOiD,cAAgB,GAC9BC,EAAM,UAAGF,EAAI,kBAAAlC,OAAiBS,EAAO8C,YAE3C,CAAA,EAAOlB,MAAMD,GAAKE,MAAK,SAACC,GAAM,OAAAA,EAAEC,MAAF,YChLlB,SAAgBkB,EAC5BxE,EACAyE,EACAC,EACAlE,4EAKA,OAA+C,KADzCmE,KAAoBtE,MAAOL,EAAOgE,cAAcC,QAAQ5D,OAAWoE,GAAe,CAAA,IAC7EG,iCAA8CD,EAAOE,WAAaF,EAAOE,UAAUC,OAAS,EACrG,CAAA,EAAOC,EAAiC/E,EAAQ2E,EAAQD,EAAqBC,EAAOE,UAAWrE,IAE1F,CAAA,EAAAwE,EAAiBhF,EAAQ2E,EAAQD,EAAqBlE,SAC9D,CAED,IAAIyE,EAAe,GAwBnB,SAAeD,EACbhF,EACA2E,EACAD,EACAlE,qIAEA,IAAKkE,EAGH,MAFMQ,EAAkB,IAAIrF,MAAM,+CAClBH,KAAO,gBACjBwF,EAwBgC,OAtBlCC,EAAiB3E,GAAe,GAClC4E,GAAmB,GAGK,UAAvBC,OAFCA,EAAYC,EAAetF,WAE5BqF,EAAWE,UAAoD,MAA9BF,EAAU,kBAAuD,IAA3BrF,EAAOwF,mBAEjFL,EAAe,mBAAqB,KAGI,MAAtCA,EAAe,qBACjBC,GAAmB,GAGf9E,EAAS8E,EAAmBV,GAAuB1E,EAAOM,OAASoE,EAAoBe,MAAM,SAASpE,KAAK,IACzGd,EAAcP,EAAOgE,cAAcC,kBAEnC9D,EAAiCwE,EAAMxE,KAAjCJ,EAA2B4E,EAApB5E,QAAEK,EAAkBuE,EAAZvE,OAAEC,EAAUsE,QAEnClE,EAAST,EAAO+B,SAAStB,OAAOiF,OAAO,IAAM,GAC7ChF,EAAWuE,GAAiC,KAAjBA,EAAsB,qBAAcA,GAAiB,GAChFtE,OAA6B,IAAXX,GAA0BA,EAAO2F,IAAM3F,EAAO2F,IAAM,GAEpC,CAAA,EAAMzF,EAAW,CACvDF,OAAMA,EACND,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNC,MAAKA,EACLC,OAAMA,EACNC,UAASA,EACTC,YAAa2E,EACb1E,OAAMA,EACNC,OAAMA,EACNC,SAAQA,YAMN,IAH4B,KAd1BhB,EAAkCJ,EAYtCqG,QAESC,mBACT7F,EAAO6F,kBAAmB,IAEL,IAAnBlG,EAAO4F,QAAP,MAAwB,CAAA,EAAA,GAM1B,QALMO,EAAQ,IAAIjG,MAAM,gDAAAiB,OAAgDnB,EAAOoG,WAIzEA,QAAUpG,EAAOoG,SACf,GACN,KAAKpG,EAAOoG,QAAQC,SAAS,sBAC3BF,EAAMpG,KAAO,oBACb,MACF,KAAKC,EAAOoG,QAAQC,SAAS,WAC3BF,EAAMpG,KAAO,gBACb,MACF,KAAKC,EAAOoG,QAAQC,SAAS,sBAC3BF,EAAMpG,KAAO,oBACb,MACF,QACEoG,EAAMpG,KAAO,KAKjB,MAFAoG,EAAMG,WAAatG,EAAOuG,YAAcvG,EAAOuG,YAAc,GAC7DC,QAAQL,MAAMA,GACRA,SAeJ,GAbF9F,EAAO6D,SAAWlE,EAAOkE,SACnBuC,EAAkE,CACtEC,GAAI,CACFC,QAAS,WAEXC,GAAI,CACFC,QAAS,WAEXC,GAAI,CACFC,QAAS,cAIX3G,GACAJ,EAAOkE,WACLuC,EAAkBrG,EAAQ4G,gBAC1BP,EAAkBrG,EAAQ4G,eAAehH,EAAOkE,SAAS8C,gBAC/B,OAA1B5G,EAAQ4G,iBACT3G,EAAO4G,gBACP5G,EAAO6G,QANR,MAAA,CAAA,EAAA,oBAS4C,6BAAA,CAAA,EAAMjD,EAAU,CACxD5D,OAAMA,EACND,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNC,MAAKA,EACLE,UAASA,EACTsD,SAAUlE,EAAOkE,SACjBnD,OAAMA,mBAEwB,KAV1BoG,EAAoCvH,EASxCqG,QACkBL,QAClBY,QAAQY,KAAKD,EAAgBf,UAE7BiB,EAAoBF,EAAgBG,QACpChC,EAAe6B,EAAgBpG,uCAGjCyF,QAAQY,KAAKG,gBAQjB,OAJIvH,EAAOwH,YACTH,EAAoBrH,EAAOwH,YAI3B,CAAA,EAAA/C,EAAA,CAAA1E,KAAM,+BACN8D,IAAK7D,EAAO6D,IACZyB,aAAYA,EACZpB,SAAUlE,EAAOkE,SACjBuD,YAAazH,aAAM,EAANA,EAAQ0H,kBACjB1H,aAAA,EAAAA,EAAQ2H,UAAW,CAAEA,SAAU3H,aAAM,EAANA,EAAQ2H,UAAa,CAAE,UAG/D,CAED,SAAevC,EACb/E,EACA2E,EACAD,EACAG,EACArE,4GAEgB,MAAM,CAAA,EAAA+G,QAAQC,IAC5B3C,EAAU5D,KAAI,SAAOwG,GAAC,OAAAC,EAAAC,OAAA,OAAA,GAAA,qEAEG,6BAAA,CAAA,EAAM3C,EAAiBhF,EAAQ2E,EAAQD,EACvDN,EAAAA,EAAA,CAAA,EAAA5D,GACH,CAAAqD,SAAU4D,aAEZ,OAJMG,EAAerI,EAGnBqG,OACK,CAAA,EAAAiC,SAAWD,GAAY,CAAE/D,SAAU4D,aAE1C,kBAAA,CAAA,EAAOK,EAAKC,wBAEf,GAAA,aAKH,GAhBMC,EAAUzI,EAYfqG,OAEKqC,EAAoBD,EAAQE,MAAK,SAACC,GAAW,IAAA5I,EAAA,MAAW,SAAX4I,EAAEzI,MAAqC,uBAAX,QAAPH,EAAA4I,EAAEpF,aAAK,IAAAxD,OAAA,EAAAA,EAAEG,KAA4B,IAEzGsI,EAAQI,OAAM,SAACD,GAAM,MAAW,SAAXA,EAAEzI,IAAF,IAEvB,MAAMsI,EAAQ,GAAGjF,MACZ,GAAIkF,EACT,MAAMA,EAAkBlF,MAExB,MAAO,CAAA,EAAA,CACLrD,KAAM,8CAGX,CAEK,SAAgB2I,EACpBrI,EACAwD,EACAmB,EACAnE,mIAiBA,GAfIR,EAAOsI,aAAetI,EAAOuI,WAC/B5D,EAAO5E,QAAUC,EAAOsI,YACxB3D,EAAOxE,KAAOH,EAAOuI,UAEfpI,EAA0BwE,EAAtBxE,KAAEJ,EAAoB4E,EAAM5E,QAAjBK,EAAWuE,SAC1BtE,EAAUL,EAAOgE,cAAcC,cAEjCkB,EAAiB3E,GAAe,GAEX,UAAvB6E,OADEA,EAAYC,EAAetF,SACpB,EAATqF,EAAWE,UAAoD,MAA9BF,EAAU,kBAC7CF,EAAe,mBAAqB,KAG9B5E,EAAcP,EAAOgE,cAAcC,mBAEtCT,EAKH,MAJMgF,EAAgB,IAAI3I,MAAM,qEAGlBH,KAAO,aACf8I,EAMgC,OAJlC9H,EAA0B,KAAjBuE,EAAsB,cAAcnE,OAAAmE,GAAiB,GAC9DtE,OAA6B,IAAXX,GAA0BA,EAAO2F,IAAM3F,EAAO2F,IAAM,GACtElF,EAAST,EAAO+B,SAAStB,OAAOiF,OAAO,IAAM,GAEX,CAAA,EAAMnC,EAAU,CACtDvD,OAAMA,EACND,QAAOA,EACPI,KAAIA,EACJC,OAAMA,EACNC,MAAKA,EACLE,UAASA,EACTiD,IAAGA,EACHhD,YAAa2E,EACbzE,OAAMA,EACNC,SAAQA,EACRF,OAAMA,YAEJ,IAAsB,KAbpBgI,EAAkClJ,EAYtCqG,QACYL,QAAV,MAA2B,CAAA,EAAA,GAG7B,OAFImD,UAEI,GACN,KAAKD,EAAU1C,QAAQC,SAAS,sBAC9B0C,EAAY,aACZ,MACF,KAAKD,EAAU1C,QAAQC,SAAS,eAC9B0C,EAAY,iBACZ,MACF,KAAKD,EAAU1C,QAAQC,SAAS,eAC9B0C,EAAY,aACZ,MACF,KAAKD,EAAU1C,QAAQC,SAAS,wBAC9B0C,EAAY,sBACZ,MACF,KAAKD,EAAU1C,QAAQC,SAAS,sBAC9B0C,EAAY,oBACZ,MACF,KAAKD,EAAU1C,QAAQC,SAAS,sBAC9B0C,EAAY,oBACZ,MACF,QACEA,EAAY,aAQhB,MALMC,EAAW,IAAI9I,MAAM,+CAAAiB,OAA+C2H,EAAU1C,WAG3ErG,KAAOgJ,EAChBvC,QAAQL,MAAM6C,GACRA,SACG,OAAoB,IAApBF,EAAUG,MAAc,CAAA,EAAA,GAE7BH,EAAUvC,aAAyC,KAA1BuC,EAAUvC,aAAiD,QAA3BnG,aAAA,EAAAA,EAAS4G,eACpE,CAAA,EAAO,CAAEkC,mBAAoBJ,EAAUvC,eAEnC4C,EAAiD,WACrD,OF9SoB,SAAOvJ,GAC/B,IAAAS,EAAMT,EAAAS,OACND,EAAOR,EAAAQ,QACPI,EAAIZ,EAAAY,KACJC,WACAC,EAAKd,EAAAc,MACLE,EAAShB,EAAAgB,2FA0BT,OAhBMgB,EAAS,CACbC,OAAQ,qBACRzB,QAAS0D,EAAiB1D,GAC1BI,KAAIA,EACJC,OAAMA,EACNqB,QAASpB,EACTqB,WAAYnB,GAGRoC,EAAc5B,OAAO6B,QAAQrB,GAChCJ,QAAO,SAAC5B,GAAA,IAAAuC,EAAAe,OAAe,OAAbf,EAAA,GAAaiB,MAANjB,EAAA,EAAM,IACvBb,KAAI,SAAC1B,GAAA,IAAAuC,EAAAe,OAACC,EAAGhB,EAAA,GAAEiB,EAAKjB,EAAA,GAAM,MAAA,UAAGgB,EAAG,KAAAhC,OAAIe,mBAAmBkB,GAA7B,IACtB1B,KAAK,KAEF2B,EAAOhD,EAAOiD,cAAgB,GAC9BC,EAAM,GAAGpC,OAAAkC,EAAqB,kBAAAlC,OAAA6B,GACpC,CAAA,EAAOQ,MAAMD,GAAKE,MAAK,SAAC2F,GAAa,OAAAA,EAASzF,MAAT,WE8QjC0F,CAAkB,CAAEhJ,OAAMA,EAAED,QAAOA,EAAEI,KAAIA,EAAEC,OAAMA,EAAEC,MAAKA,EAAEE,YAAWC,YAAWA,GAAhF,EAEkD,CAAA,EAAAyI,EAClDH,EACA,KACA,SAACX,GAAM,OAAAA,EAAE5C,SAAyB,gBAAd4C,EAAEpC,OAAyB,GAC/C,YAEF,IAA4B,KANtBmD,EAAwC3J,EAK7CqG,QACeL,QAEd,OADM4D,EAA4C,uBAAtBV,EAAU1C,QACtC,CAAA,EAAO,CAAEE,WAAYiD,EAAYhD,aAAe,KAAMiD,oBAAmBA,IAS3E,MAPMR,EAAW,IAAI9I,MAAM,+CAAAiB,OAA+CoI,EAAYnD,WAG7ErG,KAAO,aAEhBiJ,EAAS5C,QAAUmD,EAAYnD,QAEzB4C,SAGN,OADMQ,EAA4C,uBAAtBV,EAAU1C,QACtC,CAAA,EAAO,CAAEE,WAAYwC,EAAUvC,aAAe,KAAMiD,oBAAmBA,UAE1E,CCrTD,IAAMC,EAA+B,CACnC/J,aAAc,CACZK,KAAM,WACNC,OAAQ0J,IACRzJ,KAAM,CACJ0J,UAAW,GACXhJ,OAAQ,GACRuD,SAAU,GACV0F,aAAc,KAKdC,EAAqC,CACzCnK,aAAc,CACZK,KAAM,WACNC,OAAQ8J,EAA8C,CAAEC,SAAU,aAClE9J,KAAM,CACJ0J,UAAW,GACXhJ,OAAQ,GACRuD,SAAU,GACV0F,aAAc,KAKdI,EAAyC,CAC7CtK,aAAc,CACZK,KAAM,cACNC,OAAQiK,EAAoD,CAC1DlB,UAAW,gBACX5C,MAAO,4BAMP+D,EAAoC,CACxCxK,aAAc,CACZK,KAAM,cACNC,OAAQ0J,MA4FNS,EAlFkB,SAAC9J,SACjBS,EAAS6E,EAAetF,GACxB+J,EAAe,IAAIC,MAAM,aACzBC,EACHxJ,EAAOyJ,mBAAkD,MAA7BzJ,EAAOyJ,mBACnCzJ,EAAO,mBAAkD,MAA7BA,EAAO,kBAChC0J,EAAqB1J,EAAO,mBAAkD,MAA7BA,EAAO,kBACxD2J,EAAkD,OAA9B3J,aAAA,EAAAA,EAAQ4J,mBAG5BC,GADuC,QAA5B/K,EAAAkB,aAAA,EAAAA,EAAQ8J,wBAAoB,IAAAhL,EAAAA,EAAA,IACZiL,QAAQ,MAAO,OAC1CC,EAAWC,mBAAmBJ,GAK9BK,EAA4B,CAChCtL,aAAc,CACZK,KAAM,cACNC,OAAQiK,EAAoD,CAC1DlB,UAR2C,CAC/C,oCAAqC,qBAOR+B,IAAa,qBACtC3E,MAAO2E,MAKPG,EAA8B,CAClCvL,aAAc,CACZK,KAAM,WACNC,OAAQ8J,EAA8C,CACpDC,UAAUjJ,eAAAA,EAAQyF,cAAe,KAGnCtG,KAAM,CACJU,QAAQG,eAAAA,EAAQH,SAAU,GAC1BuD,UAAUpD,eAAAA,EAAQoD,WAAY,MAK9BgH,EAAoC,CACxCxL,aAAc,CACZK,KAAM,WACNC,OAAQ0J,IAERzJ,KAAM,CACJU,QAAQG,eAAAA,EAAQH,SAAU,GAC1BuD,UAAUpD,eAAAA,EAAQoD,WAAY,MAIpC,GAAIoG,EAGF,OADAjK,SAAAA,EAAQ8K,cAAcf,GACfc,EAET,GAAIV,EACF,OAAOS,EAET,GAAIR,EACF,OAAOO,EAGT,IAAIlK,EAAO,aAeT,OAAOoJ,EAdP,OAAQpJ,EAAO,kBACb,IAAK,uBACH,OAAOkJ,EACT,IAAK,YAGH,OADA3J,SAAAA,EAAQ8K,cAAcf,GACfX,EACT,IAAK,kBACH,OAAOI,EACT,QAEE,OADArD,QAAQL,MAAM,2BACP+D,EAKf,CAEqBkB,CAAgB/K,QAcxBgL,EAAqBC,EAMhC,8BAA8B,SAAO1L,EAAiCuC,GAA/B,IAAA9B,WAAQM,EAAMf,EAAAe,OAAEE,EAAWjB,EAAAiB,YAAM0K,aAAUC,EAAQrJ,EAAAqJ,SAAEC,EAAetJ,EAAAsJ,0JAE3G,GADMjM,EAAmB+L,MACiB,QAArCG,EAA6B,kBAA7BC,EAAAnM,aAAK,EAALA,EAAOoM,+BAAUlM,oBAAY,IAAAmM,OAAA,EAAAA,EAAE5L,YAAM,IAAAyL,OAAA,EAAAA,EAAA1G,QACxC,MAAA,CAAA,EAAOyG,EAAgB,CACrB1C,UAAW,qBAGT+C,EAAwCtM,EAAMoM,SAASlM,aAAaO,KAAlE+E,EAAM8G,EAAA9G,OAAE+G,8BACVC,EAAmC,QAAbC,EAAAzM,EAAMC,eAAO,IAAAwM,OAAA,EAAAA,EAAEvM,aACrCgG,EAAYC,EAAetF,iDAQO,QAAlC2E,aAAM,EAANA,EAAQ5E,QAAQ4G,iBAA0BhC,aAAA,EAAAA,EAAQxE,KAAK6F,SAAS,cAEnD,SADA6F,EAAoBlH,aAAA,EAAAA,EAAQ5E,QAASO,KAElDA,EAASA,EAAOkK,QAAQ,MAAO,QASL,UAA1BsB,OAJEA,EAA6C,QAA9BC,EAAqB,QAArBC,EAAAhM,aAAM,EAANA,EAAQgE,qBAAa,IAAAgI,OAAA,EAAAA,EAAE/H,eAAO,IAAA8H,OAAA,EAAAA,EAAEE,4BAIjDH,EAAcI,WAAuB7G,aAAA,EAAAA,EAAW6E,mBAAiB,CAAA,EAAA,IACnEiC,EAAQC,eAAe,kBAAmB,mBAAoB,CAAE9L,OAAMA,IAChE,CAAA,EAAAkE,EAAaxE,EAAQ2E,EAAQrE,YAEnC,GAFA+L,EAA0CzG,OAC1C5F,EAAOM,OAASA,EACZN,EAAOsM,YACT,IAEE,OADAtM,EAAOsM,cACP,CAAA,EAAAlI,EAAAA,EAAA,CAAA,EACKuH,GAAmB,CACtBjM,KAAM,cACNC,OAAQ4M,MAEX,CAAC,MAAOC,GASP,OAPMC,EAAW,0BACjBN,EAAQO,aAAa,kBAAmB,4BAA6B,CACnEpM,OAAMA,EACNoI,UAAW,mBACX5C,OAAO0G,aAAA,EAAAA,EAAInI,aAAc,4CACzB0B,QAASyG,EAAGzG,UAEd,CAAA,EAAOqF,EAAgB,CACrB1C,UAAW,mBACX5C,MAAO2G,EACP1G,QAAS0G,IAEZ,CAUH,OAPMhC,EAAW,6BACjB0B,EAAQO,aAAa,kBAAmB,4BAA6B,CACnEpM,OAAMA,EACNoI,UAAW,mBACX5C,MAAO2E,EACP1E,QAAS0E,IAEX,CAAA,EAAOW,EAAgB,CACrB1C,UAAW,mBACX5C,MAAO2E,EACP1E,QAAS0E,YAQkB,OAD/B0B,EAAQC,eAAe,kBAAmB,mBAAoB,CAAE9L,OAAMA,IACjC,CAAA,EAAAkE,EAAaxE,EAAQ2E,EAAQrE,WAWlE,OAXMqM,EAAyBN,EAA0CzG,OACzEuG,EAAQC,eAAe,kBAAmB,4BAA6B,CAAE9L,OAAMA,IAU3C,iCAAhCqM,EAAuBjN,MAA2CiN,EAAuBvF,aAC3F+E,EAAQC,eAAe,kBAAmB,4BAA6B,CAAE9L,OAAMA,IAC/E6L,EAAQS,YAAY,OAAQ,eAAgB,kBAAmB,CAC7DxF,YAAauF,EAAuBvF,cAEtCpH,EAAO+B,SAASC,KAAO2K,EAAuBvF,YACvC,CAAA,IAKL5G,GAAeA,EAAYqM,aAA2C,SAA5BrM,EAAYqM,YAClD,CAAA,EAAAA,EAAYvM,GACf8C,MAAK,SAACxD,GACDA,GAAQA,EAAKA,MAAQA,EAAKA,KAAK2F,QACjC4G,EAAQS,YAAY,OAAQ,eAAgB,yBAE5CT,EAAQS,YAAY,OAAQ,eAAgB,uBAEhD,IACCE,OAAM,SAAChH,GACNqG,EAAQS,YAAY,OAAQ,eAAgB,sBAAuB9G,EACpE,KAX2E,CAAA,EAAA,UAC9EuG,EAAAzG,wBA+BF,OAjBM/B,EAC6B,kCAAjC8I,eAAAA,EAAwBjN,MAA0CiN,aAAA,EAAAA,EAAwB9I,SAAW,GAEjGkJ,EAA8C,CAClDC,UAAW,EACXC,OAAQ,EACRC,QAAS,GAQLnD,EAAe,IAAIC,MAAM,aAC/BhK,SAAAA,EAAQ8K,cAAcf,GAEtB,CAAA,EAAA3F,EAAAA,EAAA,CAAA,EACKuH,GACH,CAAAjM,KAAM,WACNC,OAAQ0J,IACRzJ,KAAIwE,EAAA,CACFkF,UAA2C,iCAAhCqD,EAAuBjN,KAA0CiN,EAAuBnJ,IAAM,KACzGlD,OAAMA,EACNuD,SAAQA,EACR0F,aAA2B,KAAb1F,GAAmBkJ,EAAiBlJ,GAAYkJ,EAAiBlJ,GAAY,KAC3F6H,0BAAyBA,GACW,iCAAhCiB,EAAuBjN,OAA2CiN,eAAAA,EAAwBrF,UAC1F,CAAEA,SAAUqF,EAAuBrF,UACnC,CAAE,aAOV,kBAFAnB,QAAQY,KAAKoG,GACTzE,SACIyE,EAAGzN,MACT,IAAK,oBACHgJ,EAAY,oBACZ,MACF,IAAK,gBACHA,EAAY,gBACZ,MACF,IAAK,oBACHA,EAAY,oBACZ,MACF,QACEA,EAAY,eAuBhB,OApBAyD,EAAQO,aAAa,kBAAmB,4BAA6B,CACnEpM,OAAMA,EACNoI,UAASA,EACT5C,MAAOqH,EAAG9I,WACV0B,QAASoH,EAAGpH,QACZE,WAAYkH,EAAGlH,aAGbyF,GACFP,EACEiC,EAAqB,CACnB1N,KAAM2N,EAAcC,IACpB1N,KAAM,CACJ8L,2BAA2B,EAC3B/G,OAAMA,MAMd,CAAA,EAAOyG,EAAgB,CACrB1C,UAASA,EACT5C,MAAOqH,EAAG9I,WACV0B,QAASoH,EAAGpH,QACZE,WAAYkH,EAAGlH,qCAGpB,IAgBYsH,EAAkBtC,EAM7B,2BAA2B,SAAO1L,EAAsCuC,OAApC9B,EAAMT,EAAAS,OAAEM,EAAMf,EAAAe,OAAEkD,EAAGjE,EAAAiE,IAAEhD,EAAWjB,EAAAiB,YAAM0K,EAAQpJ,EAAAoJ,SAAEE,EAAetJ,EAAAsJ,oIAGnG,GAFMjM,EAAmB+L,MAEiB,QAArCM,EAA6B,kBAA7BC,EAAAtM,aAAK,EAALA,EAAOoM,+BAAUlM,oBAAY,IAAAiM,OAAA,EAAAA,EAAE1L,YAAM,IAAA4L,OAAA,EAAAA,EAAA7G,QACxC,MAAA,CAAA,EAAOyG,EAAgB,CACrB1C,UAAW,qBAGP/D,EAAWxF,EAAMoM,SAASlM,aAAaO,KAAI+E,OAC7CgH,EAAmC,QAAbN,EAAAlM,EAAMC,eAAO,IAAAiM,OAAA,EAAAA,EAAEhM,8BAG1B,6BADf8M,EAAQC,eAAe,kBAAmB,gBAAiB,CAAE9L,SAAQkD,IAAGA,IACnD,CAAA,EAAA6E,EAAUrI,EAAQwD,EAAKmB,EAAQnE,WAyBhD,OAzBEb,EAASiM,EAAiDhG,OAChEuG,EAAQC,eAAe,kBAAmB,yBAA0B,CAClE9L,OAAMA,EACNkD,IAAGA,EACHkG,SAAU/J,EAAOsG,aAUftG,EAAOkJ,oBAAoD,KAA9BlJ,EAAOkJ,qBACtCsD,EAAQC,eAAe,kBAAmB,mBAAoB,CAC5D9L,OAAMA,EACNkD,IAAGA,EACHqF,mBAAoBlJ,EAAOkJ,qBAE7B7I,EAAO+B,SAASC,KAAOrC,EAAOkJ,oBAK5BrI,GAAeA,EAAYqM,aAA2C,SAA5BrM,EAAYqM,YAClD,CAAA,EAAAA,EAAYvM,GACf8C,MAAK,SAACxD,GACDA,GAAQA,EAAKA,MAAQA,EAAKA,KAAK2F,QACjC4G,EAAQS,YAAY,OAAQ,eAAgB,yBAE5CT,EAAQS,YAAY,OAAQ,eAAgB,uBAEhD,IACCE,OAAM,SAAChH,GACNqG,EAAQS,YAAY,OAAQ,eAAgB,sBAAuB9G,EACpE,KAX2E,CAAA,EAAA,UAC9E8F,EAAAhG,wBAcF,MACK,CAAA,EAAAxB,EAAAA,EAAA,CAAA,EAAAuH,GACH,CAAAjM,KAAM,WACNC,OAAQ8J,EAA8C,CACpDC,SAAU/J,EAAOsG,WACjBkD,oBAAqBxJ,EAAOwJ,sBAAuB,cAMvD,kBAFAhD,QAAQY,KAAKyG,GACT9E,SACI8E,EAAG9N,MACT,IAAK,oBACHgJ,EAAY,oBACZ,MACF,IAAK,aACHA,EAAY,aACZ,MACF,IAAK,iBACHA,EAAY,iBACZ,MACF,IAAK,aACHA,EAAY,aACZ,MACF,IAAK,sBACHA,EAAY,sBACZ,MACF,IAAK,oBACHA,EAAY,oBACZ,MACF,QACEA,EAAY,eAkBhB,OAfAyD,EAAQO,aAAa,kBAAmB,yBAA0B,CAChEpM,OAAMA,EACNkD,IAAGA,EACHkF,UAASA,EACT5C,MAAO0H,EAAGnJ,WACV0B,QAASyH,EAAGzH,QACZE,WAAYuH,EAAGvH,aAGjBwH,YAAW,WACLD,EAAGvH,aACLjG,EAAO+B,SAASC,KAAOwL,EAAGvH,WAE7B,GAAE,GAEH,CAAA,EAAOmF,EAAgB,CACrB1C,UAASA,EACT5C,MAAO0H,EAAGnJ,WACV0B,QAASyH,EAAGzH,QACZE,WAAYuH,EAAGvH,qCAGpB,IAEYyH,EAAoBzC,EAM/B,6BAA6B,SAAO0C,EAAGpO,GAAE,IAAA2L,aAAUC,EAAQ5L,EAAA4L,SAAEC,EAAe7L,EAAA6L,iGAC5E,IAIE,GAHAe,EAAQO,aAAa,kBAAmB,YAAa,oCAC/CvN,EAAmB+L,MAEiB,QAArCI,EAA6B,kBAA7BxJ,EAAA3C,aAAK,EAALA,EAAOoM,+BAAUlM,oBAAY,IAAAoM,OAAA,EAAAA,EAAE7L,YAAM,IAAA0L,OAAA,EAAAA,EAAA3G,QACxC,MAAA,CAAA,EAAOyG,EAAgB,CACrB1C,UAAW,qBAIf,GAAiB,QADIvJ,EAAMoM,SAASlM,aAAaO,KAAI2L,SAEnD,MAAO,CAAA,EAAA,CACL7L,KAAM,cACNC,OAAQ0J,MAGZ8B,EAASyC,IACV,CAAC,MAAOpB,GAEP,OADArG,QAAQY,KAAKyF,GACb,CAAA,EAAOpB,EAAgB,CACrB1C,UAAW,oBAEd,gBACF,IAIKmF,EAA+B,CACnCC,GAAI,OAIAjC,EAAsB,SAAC9L,EAAiBgO,GAC5C,IAAKhO,IAAYgO,EAAe,MAAO,GAGvC,IAAMC,EAAoBjO,EAAQkO,cAC5BC,EAAcL,EAAaG,GAGjC,OAAKE,EAKE,IAAApN,OAAIoN,IAJT/H,QAAQL,MAAM,6BAA8B/F,GACrC,GAIX,EAGMoO,EAAeC,EAAY,CAC/BC,KAAM,UACNvE,aAAYA,EACZwE,SAAU,CAAE,EACZC,cAAe,SAACC,GACdA,EACGC,QAAQzD,EAAmB0D,SAAS,SAACvP,qBAEpCA,EAAME,aAAe,CACnBK,cACEoC,EAAkB,QAAlBvC,SAAAS,aAAM,IAANA,YAAM,EAANA,OAAQ+B,gBAAU,IAAAxC,OAAA,EAAAA,EAAAkB,6BAAQuF,SAAS,wBACV,QAAxBsF,UAAAG,EAAM,OAANzL,aAAA,IAAAA,YAAA,EAAAA,OAAQ+B,+BAAUtB,cAAM,IAAA6K,OAAA,EAAAA,EAAEtF,SAAS,oBAC+B,oBAAjC,QAAhCqF,EAAqB,QAArBG,EAAA,OAAAxL,iBAAAA,cAAAA,OAAQgE,qBAAa,IAAAwH,OAAA,EAAAA,EAAEvH,eAAS,IAAAoH,OAAA,EAAAA,EAAAY,0CAAqBC,SACnD,WACA,cACNvM,OAAQ4M,IACR3M,KAAMT,EAAME,aAAaO,KAE7B,IACC6O,QAAQzD,EAAmB2D,WAAW,SAACxP,EAAOqC,GAC7CrC,EAAME,aAAemC,EAAOoN,OAC9B,IACCH,QAAQzD,EAAmB6D,UAAU,SAAC1P,EAAOqC,qBAE5CrC,EAAME,aAAe,CACnBK,cACEoC,EAAkB,QAAlBvC,SAAAS,aAAM,IAANA,YAAM,EAANA,OAAQ+B,gBAAU,IAAAxC,OAAA,EAAAA,EAAAkB,6BAAQuF,SAAS,wBACV,QAAxBsF,UAAAG,EAAM,OAANzL,aAAA,IAAAA,YAAA,EAAAA,OAAQ+B,+BAAUtB,cAAM,IAAA6K,OAAA,EAAAA,EAAEtF,SAAS,oBAC+B,oBAAjC,QAAhCqF,EAAqB,QAArBG,EAAA,OAAAxL,iBAAAA,cAAAA,OAAQgE,qBAAa,IAAAwH,OAAA,EAAAA,EAAEvH,eAAS,IAAAoH,OAAA,EAAAA,EAAAY,0CAAqBC,SACnD,WACA,cACNvM,OAAQiK,EAAYpI,EAAOoN,SAC3BhP,KAAMT,EAAME,aAAaO,KAE7B,IACC6O,QAAQlB,EAAgBmB,SAAS,SAACvP,GACjCA,EAAME,aAAe,CAAEK,KAAM,WAAYC,OAAQ4M,IAAe3M,KAAMT,EAAME,aAAaO,KAC3F,IACC6O,QAAQlB,EAAgBoB,WAAW,SAACxP,EAAOqC,GAC1CrC,EAAME,aAAemC,EAAOoN,OAC9B,IACCH,QAAQlB,EAAgBsB,UAAU,SAAC1P,EAAOqC,GACzCrC,EAAME,aAAe,CAAEK,KAAM,WAAYC,OAAQiK,EAAYpI,EAAOoN,SAAUhP,KAAMT,EAAME,aAAaO,KACzG,IACC6O,QAAQf,EAAkBiB,WAAW,SAACxP,EAAOqC,GAC5CrC,EAAME,aAAemC,EAAOoN,OAC9B,GACH,IAGqBE,EAA4CX,EAA9BY,QAA8BZ,EAAYa"}
package/dist/strategy.js CHANGED
@@ -1,2 +1,2 @@
1
- export{R as RDS}from"./RemoteDataState-lcf8PfJd.js";import{P as t}from"./strategySlice-CPnzsspR.js";export{i as identifyStrategy,a as selectOperatorAction,b as strategyReducer,s as submitMSISDNAction}from"./strategySlice-CPnzsspR.js";import"tslib";import"@reduxjs/toolkit";import"./searchToObject.js";import"./getConfig.js";import"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.js";var e=function(t){return t((function(t){return t.strategy.currentState}))};function r(e){var r=e.identifyInitialState,o=e.identifyFlowByOperatorSelect,i=e.identifyFlowByMsisdn,s=e.pinFlow,a=e.moFlow,n=e.moRedirFlow,c=e.oneClickFlow,u=e.click2smsFlow,p=e.ussdFlow,l=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 i(e.result);case t.PIN:return s();case t.MO:return a();case t.MO_REDIR:return n();case t.ONE_CLICK:return c();case t.CLICK2SMS:return u();case t.USSD:return p();case t.CREDIT_CARD:return l();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-BqABgMaS.js";export{i as identifyStrategy,a as selectOperatorAction,b as strategyReducer,s as submitMSISDNAction}from"./strategySlice-BqABgMaS.js";import"tslib";import"@reduxjs/toolkit";import"./searchToObject.js";import"./getConfig.js";import"./tracker-DaaILhEr.js";import"pacman-client";import"uuid";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.js";var e=function(t){return t((function(t){return t.strategy.currentState}))};function r(e){var r=e.identifyInitialState,o=e.identifyFlowByOperatorSelect,i=e.identifyFlowByMsisdn,s=e.pinFlow,a=e.moFlow,n=e.moRedirFlow,c=e.oneClickFlow,u=e.click2smsFlow,p=e.ussdFlow,l=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 i(e.result);case t.PIN:return s();case t.MO:return a();case t.MO_REDIR:return n();case t.ONE_CLICK:return c();case t.CLICK2SMS:return u();case t.USSD:return p();case t.CREDIT_CARD:return l();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 o,__assign as t}from"tslib";import{createAsyncThunk as r,createSlice as n}from"@reduxjs/toolkit";import{N as i,S as l,L as d,F as s}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as a}from"./searchToObject.js";import{getConfig as u}from"./getConfig.js";import{q as c,t as v}from"./tracker-DaaILhEr.js";import{f}from"./formatNumberToE164-DaAFvpKD.js";import{i as p,g as w}from"./api-geirVksI.js";var y;function g(t){return e(this,void 0,void 0,(function(){var e,r,n,i,l;return o(this,(function(o){switch(o.label){case 0:if(e=c(window.location.href,"mock-ip")||process.env.mock_ip,console.log("mockip",e),t.ip||"undefined"==typeof window)return[3,5];o.label=1;case 1:return o.trys.push([1,3,,4]),r=window.location.host,n=window.DEV_BASE_URL_IP||r,[4,fetch("https://".concat(n,"/api/v1/ip").concat(e?"?mock-ip=".concat(e):"")).then((function(e){return e.json()}))];case 2:return i=o.sent(),t.ip=i.ip,t.ip_range_name=i.ip_range_name,[2,i.ip_range_name];case 3:return l=o.sent(),console.warn("IP Lookup failed",l),[2,""];case 4:return[3,6];case 5:return[2,t.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"}(y||(y={}));var m={mo:y.MO,pin:y.PIN,oneClick:y.ONE_CLICK,moRedir:y.MO_REDIR,click2sms:y.CLICK2SMS,ussd:y.USSD,tpayHe:y.TPAY_HE,creditCard:y.CREDIT_CARD},E={mo:"Msisdn to sms",pin:"Pin",oneClick:"3G click",moRedir:"Redirect",click2sms:"Click to sms",tpayHe:"Pin",ussd:"Msisdn to sms"},_=function(e){return E[e]};function C(r){var n,i,l,d,s=r.window,a=r.internationalMSISDN,u=r.configs;return e(this,void 0,void 0,(function(){var r,c,v,f,w,y,g,m,E,_,C=this;return o(this,(function(h){switch(h.label){case 0:if(!a)throw(_=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",_;return r=(null===(n=a.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,v=c.flowConfig,f=null===(l=null==u?void 0:u.strategyConfigs)||void 0===l?void 0:l.operators,w=function(){return e(C,void 0,void 0,(function(){var e,t,n,i,l;return o(this,(function(o){switch(o.label){case 0:return e=v.slug,t=v.country,n=v.device,i=s.pac_analytics.visitor.rockmanId,l=s.pac_analytics.visitor.offer,[4,p({window:s,slug:e,country:t,msisdn:r,device:n,offer:l,rockmanId:i})];case 1:return[2,o.sent()]}}))}))},[4,w()];case 1:if(y=h.sent(),g=f[y.operator]?f[y.operator]:null,m=!1===y.success&&"Operator could not be found for the given MSISDN"===y.message,E=!1===y.success&&-1!==(null===(d=y.message)||void 0===d?void 0:d.indexOf("HLR did not find the operator for given MSISDN")),m||E)throw(_=new Error("Error in submitMSISDN() identify action")).type="FlowDetectFailed",_.msisdn=r,_;if(null!==g)return[2,t({operator:y.operator,default:c},g)];if(null===g)return[2,t({operator:y.operator},c)];throw(_=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",_}}))}))}function h(e){var o,r,n=e.configs,i=e.operator,l=null===(o=null==n?void 0:n.strategyConfigs)||void 0===o?void 0:o.default,d=null===(r=null==n?void 0:n.strategyConfigs)||void 0===r?void 0:r.operators;return t({operator:null==i?void 0:i.toUpperCase(),default:l},d[null==i?void 0:i.toUpperCase()])}function S(t){var r=t.window,n=t.configs;return e(this,void 0,void 0,(function(){var e;return o(this,(function(o){switch(o.label){case 0:return[4,g(r.pac_analytics.visitor)];case 1:return e=o.sent(),[2,h({configs:n,operator:e&&e.includes("_")?e.toUpperCase():""})]}}))}))}var I=function(){return{type:y.IDENTIFY_FLOW_BY_MSISDN,result:i()}},D=r("strategy/submitMSISDNAction",(function(t,r){var n=t.window,l=t.msisdn,d=r.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,r,s,a,c,f,p,w;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),e=u(),[4,C({window:n,internationalMSISDN:l,configs:e})];case 1:return t=o.sent(),r=null==t?void 0:t.flow,s=_(r),a=null===(w=null==e?void 0:e.strategyConfigs)||void 0===w?void 0:w.default,c=null==a?void 0:a.flow,m[r]?(v.sendOptInFlowEvent(s),[2,{type:m[r],result:i(),data:{config:t.flowConfig,operator:t.operator,msisdn:l}}]):[2,{type:m[c],result:i(),data:{config:null==a?void 0:a.flowConfig}}];case 2:switch(f=o.sent(),p=void 0,f.type){case"SEAlreadySubscribed":p="AlreadySubscribed";break;case"SEInvalidMSISDN":p="InvalidMSISDN";break;default:p="UnknownError"}return[2,d({errorType:p,error:f,productUrl:f.productUrl})];case 3:return[2]}}))}))})),k=function(){var e=function(e){var o,t=e.configs,r=null===(o=null==t?void 0:t.strategyConfigs)||void 0===o?void 0:o.operators;return Object.keys(r)}({configs:u()});return{type:y.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:i(),data:{operators:e}}},R=r("strategy/selectOperatorAction",(function(t,r){var n=t.operator,l=r.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,t,r,d;return o(this,(function(o){try{return e=u(),t=h({configs:e,operator:n}),r=t.flow,d=_(r),v.sendOptInFlowEvent(d),[2,{type:m[r],result:i(),data:{config:t.flowConfig,operator:t.operator}}]}catch(e){return"UnkownError",[2,l({errorType:"UnkownError",error:e.toString()})]}return[2]}))}))})),T=function(t){return e(void 0,void 0,void 0,(function(){var e,r,n,l,d,s,a,c;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),e=u(),[4,S({window:window,configs:e})];case 1:return r=o.sent(),n=null===(c=null==e?void 0:e.strategyConfigs)||void 0===c?void 0:c.default,l=null==n?void 0:n.flow,r.flow||"all-flows-detect-operator-by-ip-or-ask-mobile-number"!==t&&"all-flows-ask-mobile-number"!==t?r.flow||"all-flows-detect-operator-by-ip-or-ask-operator"!==t?(d=r.flow,m[d]?(s=_(d),v.sendOptInFlowEvent(s),[2,{type:m[d],result:i(),data:{config:r.flowConfig,operator:r.operator,strategy:t,defaultConfig:n,defaultFlowType:l}}]):[2,{type:m[l],result:i(),data:{config:null==n?void 0:n.flowConfig,strategy:t}}]):[2,k()]:[2,I()];case 2:return a=o.sent(),console.error("error",a),[3,3];case 3:return[2]}}))}))},O=function(e,o){return{type:m[o]||y.PIN,result:i(),data:{config:e}}},b=function(t){var r=t.window;return e(void 0,void 0,void 0,(function(){var e,t,n,i,d;return o(this,(function(o){return e=u(),t=null==e?void 0:e.enableScriptTimer,n=e.strategyConfigs,i=null===(d=null==n?void 0:n.default)||void 0===d?void 0:d.flowConfig,[2,new Promise((function(e){var o,d,s,a;try{var c=null===(d=null===(o=null==r?void 0:r.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===d?void 0:d.heMsisdn,p=null===(a=null===(s=null==r?void 0:r.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===a?void 0:a.country;c&&p&&(c=f(c,p));var w,g=!1,m=!1;t&&(w=setTimeout((function(){var o;g||(m=!0,v.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"3 second timer expired"}),r.isPrelanderClicked=!0,e({type:y.PIN,result:l({}),data:{config:null===(o=null==n?void 0:n.default)||void 0===o?void 0:o.flowConfig}}))}),3e3));var E=function(o){var n=o.detail;if(c=null==n?void 0:n.msisdn,(null==n?void 0:n.msisdn)&&!(null==n?void 0:n.encrypted_msisdn)?(c=f(n.msisdn,p),r.msisdn=c):(r.msisdn=null==n?void 0:n.msisdn,r.is_encrypted_msisdn=null==n?void 0:n.encrypted_msisdn),t){if(!m){g=!0,clearTimeout(w),v.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c});var i=h({configs:u(),operator:null==n?void 0:n.operator_code});r.removeEventListener("he-success",E),r.removeEventListener("he-fail",_),e(F(i,c,null==n?void 0:n.operator_code,!0))}}else{v.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});r.removeEventListener("he-success",E),r.removeEventListener("he-fail",_),e(F(i,c,null==n?void 0:n.operator_code,!0))}},_=function(o){var t=o.detail;v.customEvent("Flow","recede-auto","msisdn-detection-failure",null==t?void 0:t.error_details),r.removeEventListener("he-success",E),r.removeEventListener("he-fail",_),e(O(i,null==n?void 0:n.default.flow))};if(r.addEventListener("he-success",E),r.addEventListener("he-fail",_),!(null==r?void 0:r.heScriptUrl))return v.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error he script url not set"}),void r.dispatchEvent(new Event("he-fail"));r.addEventListener("error",(function(e){var o,t;console.error("Global error:",null==e?void 0:e.error),v.customEvent("Flow","recede-auto","global-error",{errorMessage:null===(o=null==e?void 0:e.error)||void 0===o?void 0:o.message,errorStack:null===(t=null==e?void 0:e.error)||void 0===t?void 0:t.stack})}));var C=document.createElement("script");C.type="text/javascript",C.id="he-js-link",C.src="".concat(r.heScriptUrl),C.referrerPolicy="origin",document.head.appendChild(C),C.onerror=function(e){console.error("Error loading Header Enrichment script."),v.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error loading Header Enrichment script",errorMessage:e.message}),r.dispatchEvent(new Event("he-fail"))}}catch(o){console.error("Error in header enrichment:",o),e(O(i,null==n?void 0:n.default.flow))}}))]}))}))},F=function(e,o,t,r){var n,l;void 0===o&&(o=null),void 0===t&&(t=null);var d=null===(n=u().strategyConfigs)||void 0===n?void 0:n.default,s=null==d?void 0:d.flow,a=e.flow||(null===(l=e.default)||void 0===l?void 0:l.flow),c=_(a);return v.sendOptInFlowEvent(c),e.flow?{type:m[a],result:i(),data:{config:e.flowConfig,operator:e.operator,isHeaderEnrichmentSuccess:r}}:{type:m[s],result:i(),data:{config:null==d?void 0:d.flowConfig,operator:t,msisdn:o,isHeaderEnrichmentSuccess:r}}};window.tracker=v;var N={currentState:{type:y.IDENTIFY_STRATEGY,result:i(),data:void 0}},M=function(){var e=a(window);if(void 0!==e["mock-flow"])switch(void 0!==e.operator&&(window.operator=e.operator),e["mock-flow"]){case"pin":return{type:y.PIN,result:l({})};case"mo":return{type:y.MO,result:l({})};case"moredir":return{type:y.MO_REDIR,result:l({})};case"oneclick":return{type:y.ONE_CLICK,result:l({}),data:{subscription_url:e["subscription-url"]}};case"click2sms":return{type:y.CLICK2SMS,result:l({})};case"ussd":return{type:y.USSD,result:l({})};case"creditcard":return{type:y.CREDIT_CARD,result:l({})};default:throw new Error("(mockStrategyStateByUrlParam) Strategy Mock Flow not supported")}},L=r("strategy/identifyStrategy",(function(){return e(void 0,void 0,void 0,(function(){var r,n,d,s,c,p,g,E,C,S,D,R,O,F,N,L;return o(this,(function(Y){switch(Y.label){case 0:return r=u(),n=r.strategy,d=r.strategyConfigs,void 0!==(s=a(window))["mock-flow"]?[2,M()]:"1"===s.ui_show_default_flow?(c=null==d?void 0:d.default.flow,p=null===(E=null==d?void 0:d.default)||void 0===E?void 0:E.flowConfig,[2,{type:m[c],result:i(),data:{config:p}}]):s["show-pin-entry"]&&"1"===s["show-pin-entry"]||s["show-thank-you"]&&"1"===s["show-thank-you"]||s.show_custom_error&&"1"===s.show_custom_error?(g=h({configs:r,operator:s.operator}),[2,{type:y.PIN,result:l({}),data:{config:(null==g?void 0:g.flowConfig)||(null===(C=null==d?void 0:d.default)||void 0===C?void 0:C.flowConfig)}}]):n.includes("ask-operator")?[2,k()]:n.includes("detect-operator-by-ip")?[2,T(n)]:(null==n?void 0:n.includes("ask-mobile-number"))?[2,I()]:(null==n?void 0:n.includes("detect-operator-by-redirect-api"))?[2,e(void 0,void 0,void 0,(function(){var e,t,r,n,l,d,s,a,c,f,p,y,g,E,C;return o(this,(function(o){switch(o.label){case 0:e=u(),t=null==e?void 0:e.strategyConfigs.default,r=t.flow,n=t.flowConfig,l=n.slug,d=n.country,s=n.device,a=window.pac_analytics.visitor.rockmanId,c=window.pac_analytics.visitor.offer,o.label=1;case 1:return o.trys.push([1,3,,4]),[4,w({window:window,country:d,slug:l,device:s,offer:c,rockmanId:a})];case 2:return!1===(f=o.sent()).success?[2,{type:m[r],result:i(),data:{config:null==t?void 0:t.flowConfig}}]:"data"===(null===(E=null==f?void 0:f.payload)||void 0===E?void 0:E.network_type)?(p=_("oneClick"),v.sendOptInFlowEvent(p),[2,{type:m.oneClick,result:i(),data:{config:null==t?void 0:t.flowConfig,redirect_url:f.redirect_url||null}}]):"wifi"===(null===(C=null==f?void 0:f.payload)||void 0===C?void 0:C.network_type)?(y=_("moRedir"),v.sendOptInFlowEvent(y),[2,{type:m[r],result:i(),data:{config:null==t?void 0:t.flowConfig,redirect_url:f.redirect_url||null,skipRedirectCall:!0}}]):[2,{type:m[r],result:i(),data:{config:null==t?void 0:t.flowConfig,redirect_url:f.redirect_url||null,skipRedirectCall:!0}}];case 3:return g=o.sent(),console.error("error",g),[2,{type:m[r],result:i(),data:{config:null==t?void 0:t.flowConfig}}];case 4:return[2]}}))}))]:(null==n?void 0:n.includes("header-enrichment"))&&"header-enrichment-script"!==n?[4,e(void 0,void 0,void 0,(function(){var r,n,l,d,s,c,p,w,y,g,E,C,S,I,D,k,R,T,O,b,F,N,M,L,Y,A,P,U;return o(this,(function(B){switch(B.label){case 0:r=u(),n=null==r?void 0:r.strategyConfigs.default,l=n.flow,B.label=1;case 1:return B.trys.push([1,5,,6]),d=a(window),s=(null==d?void 0:d.operator)||(null===(R=null===(k=null===(D=null===window||void 0===window?void 0:window.pac_analytics)||void 0===D?void 0:D.visitor)||void 0===k?void 0:k.heMsisdnDecryptedByApiResult)||void 0===R?void 0:R.operator)||null,c=""!==(null==d?void 0:d.msisdn)||""!==(null===(b=null===(O=null===(T=null===window||void 0===window?void 0:window.pac_analytics)||void 0===T?void 0:T.visitor)||void 0===O?void 0:O.heMsisdnDecryptedByApiResult)||void 0===b?void 0:b.msisdn),p=(null==d?void 0:d.msisdn)||(null===(M=null===(N=null===(F=null===window||void 0===window?void 0:window.pac_analytics)||void 0===F?void 0:F.visitor)||void 0===N?void 0:N.heMsisdnDecryptedByApiResult)||void 0===M?void 0:M.msisdn)||null,c&&v.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:p,operator:s}),null===s?[2,{type:m[l],result:i(),data:{config:null==n?void 0:n.flowConfig}}]:"pin-header-enrichment"===r.strategy&&c?[2,{type:m[l],result:i(),data:{config:null==n?void 0:n.flowConfig,operator:s,msisdn:p,isHeaderEnrichmentSuccess:c}}]:(null===(A=null===(Y=null===(L=null===window||void 0===window?void 0:window.pac_analytics)||void 0===L?void 0:L.visitor)||void 0===Y?void 0:Y.heMsisdnDecryptedByApiResult)||void 0===A?void 0:A.isContentBlocked)?(window.isContentBlocked=!0,v.customEvent("Flow","recede-auto","content-blocked",t({errorType:"ContentBlocked",error:"ContentBlocked",message:"ContentBlocked"},null===(U=null===(P=null===window||void 0===window?void 0:window.pac_analytics)||void 0===P?void 0:P.visitor)||void 0===U?void 0:U.heMsisdnDecryptedByApiResult)),[2,{type:m[l],result:i(),data:{config:null==n?void 0:n.flowConfig,operator:s}}]):(w=null,y=null,[4,h({operator:s,configs:r})]);case 2:return g=B.sent(),E=g.flow||l,C=_(E),v.sendOptInFlowEvent(C),"oneClick"!==E?[3,4]:[4,e(void 0,void 0,void 0,(function(){var e,t,r,n,i,l,d,s,u,c,v,p,w,y,g;return o(this,(function(o){if("undefined"==typeof window)throw new Error("This function can only be run in a browser environment.");if("false"===(e=a(window)).success)throw new Error("Error in getRedirectUrl() identify-user action:\n".concat(e.message||"NotOn3g"));return(t=e.subscription_url||e.redirect_url)?(r=window.atob(t),n=new URL(r),i=new URLSearchParams(n.search),l=i.get("msisdn")||e.msisdn,d=i.get("operator")||e.operator,l&&(l=f(l,null===(w=null===(p=null===window||void 0===window?void 0:window.pac_analytics)||void 0===p?void 0:p.visitor)||void 0===w?void 0:w.country)),[2,{msisdn:l||"",operator:d||"",subscription_url:e.subscription_url?r:void 0,redirect_url:e.redirect_url?r:void 0}]):(console.error("No URL provided for redirection in the url params"),s=new URL(window.location.href),u=new URLSearchParams(s.search),c=u.get("msisdn")||e.msisdn,v=u.get("operator")||e.operator,c&&(c=f(c,null===(g=null===(y=null===window||void 0===window?void 0:window.pac_analytics)||void 0===y?void 0:y.visitor)||void 0===g?void 0:g.country)),[2,{msisdn:c||"",operator:v||""}])}))}))];case 3:S=B.sent(),w=(null==S?void 0:S.subscription_url)||null,y=(null==S?void 0:S.redirect_url)||null,B.label=4;case 4:return[2,{type:m[E],result:i(),data:{config:g.flowConfig,operator:g.operator,subscription_url:w||null,redirect_url:y||null,isHeaderEnrichmentSuccess:c}}];case 5:return I=B.sent(),console.error("error",I),[2,{type:m[l],result:i(),data:{config:null==n?void 0:n.flowConfig}}];case 6:return[2]}}))}))]:[3,2];case 1:return[2,Y.sent()];case 2:switch(n){case"header-enrichment-script":return[2,b({window:window})];case"pin":return v.sendOptInFlowEvent("Pin"),[2,{type:y.PIN,result:l({}),data:{config:null===(S=null==d?void 0:d.default)||void 0===S?void 0:S.flowConfig,strategy:n}}];case"mo":return v.sendOptInFlowEvent("Msisdn to sms"),[2,{type:y.MO,result:l({}),data:{config:null===(D=null==d?void 0:d.default)||void 0===D?void 0:D.flowConfig,strategy:n}}];case"mo-redir":return[2,{type:y.MO_REDIR,result:l({}),data:{config:null===(R=null==d?void 0:d.default)||void 0===R?void 0:R.flowConfig,strategy:n}}];case"one-click":return v.sendOptInFlowEvent("Redirect"),[2,{type:y.ONE_CLICK,result:l({}),data:{config:null===(O=null==d?void 0:d.default)||void 0===O?void 0:O.flowConfig,strategy:n}}];case"click2sms":return v.sendOptInFlowEvent("Click to sms"),[2,{type:y.CLICK2SMS,result:l({}),data:{config:null===(F=null==d?void 0:d.default)||void 0===F?void 0:F.flowConfig,strategy:n}}];case"ussd":return v.sendOptInFlowEvent("USSD"),[2,{type:y.USSD,result:l({}),data:{config:null===(N=null==d?void 0:d.default)||void 0===N?void 0:N.flowConfig,strategy:n}}];case"credit-card":return v.sendOptInFlowEvent("Credit card"),[2,{type:y.CREDIT_CARD,result:l({}),data:{config:null===(L=null==d?void 0:d.default)||void 0===L?void 0:L.flowConfig,strategy:n}}];default:throw new Error("Strategy not supported")}}}))}))})),Y=r("strategy/setStrategyExtraData",(function(t){var r=t.type,n=t.data;return e(void 0,void 0,void 0,(function(){return o(this,(function(e){return[2,{type:r,result:i(),data:n}]}))}))})),A=n({name:"strategy",initialState:N,reducers:{},extraReducers:function(e){e.addCase(L.pending,(function(e){e.currentState={type:y.IDENTIFY_STRATEGY,result:d()}})).addCase(L.fulfilled,(function(e,o){e.currentState=o.payload})).addCase(L.rejected,(function(e,o){e.currentState={type:y.IDENTIFY_STRATEGY,result:s(o.error.message)}})).addCase(D.pending,(function(e){e.currentState={type:y.IDENTIFY_FLOW_BY_MSISDN,result:d()}})).addCase(D.fulfilled,(function(e,o){e.currentState=o.payload})).addCase(D.rejected,(function(e,o){e.currentState={type:y.IDENTIFY_FLOW_BY_MSISDN,result:s(o.payload)}})).addCase(Y.fulfilled,(function(e,o){e.currentState=o.payload})).addCase(R.pending,(function(e){e.currentState={type:y.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:d()}})).addCase(R.fulfilled,(function(e,o){e.currentState=o.payload})).addCase(R.rejected,(function(e,o){e.currentState={type:y.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:s(o.payload)}}))}}).reducer;export{y as P,R as a,A as b,Y as c,m as f,L as i,D as s,g as t};
2
+ //# sourceMappingURL=strategySlice-BqABgMaS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"strategySlice-CPnzsspR.js","sources":["../src/sharedFlowTypes/StrategyTypes.ts","../src/ips/tryGetIPRangeName.ts","../src/flows/strategy/main.ts","../src/flows/strategy/strategies/askMobileNumber.ts","../src/flows/strategy/strategies/askOperator.ts","../src/flows/strategy/strategies/detectOperatorByIp.ts","../src/flows/strategy/strategies/injectHeaderEnrichmentScript.ts","../src/flows/strategy/strategySlice.ts","../src/flows/strategy/strategies/callRedirectApi.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 ui_show_default_flow?: '1' | '0';\n ui_show_pin_entry?: '1' | '0';\n ui_error_message?: string;\n}\n\nexport interface IScriptHeaderEnrichmentSuccess extends CustomEvent {\n detail: {\n msisdn: string;\n operator_code: string;\n subscription_url: boolean;\n encrypted_msisdn: boolean;\n };\n}\n\nexport interface IScriptHeaderEnrichmentFailure extends CustomEvent {\n detail: {\n encrypted_msisdn: boolean;\n error_details: {\n error: any;\n stack: any;\n };\n };\n}\n\nexport interface ExtraStrategyData {\n isHeaderEnrichmentSuccess?: boolean;\n config?: ConfigDetails;\n msisdn?: string;\n rockman_id?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n operators?: string[];\n strategy?: string;\n defaultConfig?: IFlow;\n defaultFlowType?: ISupportedFlows;\n skipRedirectCall?: boolean;\n}\nexport interface StrategyState {\n currentState: StrategyCurrentState;\n}\n\nexport interface StrategyCurrentState {\n type: PossibleTypes;\n result: RDS.RemoteDataState<any, any>;\n data?: ExtraStrategyData;\n}\n\nexport type IMockPinFlowStates = 'msisdn-state' | 'pin-state' | 'completed-state' | 'msisdn-failure-state';\n\nexport interface RootState {\n strategy?: StrategyState;\n pinFlow?: PinFlowState;\n moFlow?: MoFlowState;\n moRedirFlow?: MoRedirFlowState;\n click2smsFlow?: Click2smsFlowState;\n oneClickFlow?: OneClickFlowState;\n ussdFlow?: UssdFlowState;\n creditCardFlow?: CreditCardFlowState;\n}\n","/* eslint-disable no-param-reassign */\nimport { IVisitor } from '../common-types/IVisitor';\nimport queryString from '../pacman/queryString';\n\n// eslint-disable-next-line consistent-return\nexport default async function tryGetIPRangeName(visitor: IVisitor): Promise<string> {\n const mockip = queryString(window.location.href, 'mock-ip') || process.env.mock_ip;\n // eslint-disable-next-line no-console\n console.log('mockip', mockip);\n if (!visitor.ip && typeof window !== 'undefined') {\n try {\n const { host } = window.location;\n const newHost = window.DEV_BASE_URL_IP || host;\n const res = await fetch(`https://${newHost}/api/v1/ip${mockip ? `?mock-ip=${mockip}` : ''}`).then((x) =>\n x.json()\n );\n // return isIPInRange('37.200.146.28')\n visitor.ip = res.ip;\n visitor.ip_range_name = res.ip_range_name;\n return res.ip_range_name;\n } catch (ex) {\n console.warn('IP Lookup failed', ex);\n return '';\n }\n } else {\n return visitor.ip_range_name || '';\n }\n}\n","import { IError } from '../../common-types/IError';\nimport { IOptInFlowName } from '../../common-types/IOptInFlowName';\nimport { IStrategy, ISupportedFlows } from '../../common-types/Strategy';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { HEResult, IConfig, IFlow, IIdentifyResult, PossibleTypes } from '../../sharedFlowTypes/StrategyTypes';\nimport { formatNumberToE164 } from '../../utilities/formatNumberToE164';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { identify } from './api';\n\nexport const flowMapping: Record<ISupportedFlows, PossibleTypes> = {\n mo: PossibleTypes.MO,\n pin: PossibleTypes.PIN,\n oneClick: PossibleTypes.ONE_CLICK,\n moRedir: PossibleTypes.MO_REDIR,\n click2sms: PossibleTypes.CLICK2SMS,\n ussd: PossibleTypes.USSD,\n tpayHe: PossibleTypes.TPAY_HE,\n creditCard: PossibleTypes.CREDIT_CARD\n};\n\n// @ts-ignore\nexport const trackerEventMapping: Record<ISupportedFlows, IOptInFlowName> = {\n mo: 'Msisdn to sms',\n pin: 'Pin',\n oneClick: '3G click',\n moRedir: 'Redirect',\n click2sms: 'Click to sms',\n tpayHe: 'Pin',\n ussd: 'Msisdn to sms'\n};\n\nexport const getTrackerEventName = (flowType: ISupportedFlows) => trackerEventMapping[flowType];\n\nexport async function determineFlowByMsidn({\n window,\n internationalMSISDN,\n configs\n}: {\n window: Window;\n internationalMSISDN: string;\n configs: IStrategy;\n}): Promise<IFlow> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in 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 resonseUrl = searchObj.subscription_url || searchObj.redirect_url;\n\n if (resonseUrl) {\n const decodedUrl = window.atob(resonseUrl);\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 console.error('No URL provided for redirection in the url params');\n\n const newUrl = new URL(window.location.href);\n const urlParams = new URLSearchParams(newUrl.search);\n\n let msisdn = urlParams.get('msisdn') || searchObj.msisdn;\n const operator = urlParams.get('operator') || searchObj.operator;\n\n if (msisdn) {\n msisdn = formatNumberToE164(msisdn, window?.pac_analytics?.visitor?.country);\n }\n\n return {\n msisdn: msisdn || '',\n operator: operator || ''\n };\n};\n\nexport const subscribe: (_url: string) => Promise<string> = async (_url: string) =>\n // const result:ISubscribeResult = await fetch(url + \"&operator=kw_viva\").then((x)=>x.json())\n\n // if(false === result.success){\n // const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as IError & {type:string;}\n // subscribeError['type'] = \"SubscriptionError\";\n // throw subscribeError\n // }else{\n '/product';\n// }\n\nexport function mockConfig({ configs, flow }: { configs: IStrategy; flow: string }): IConfig {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const opArr = Object.keys(operatorsConfig);\n const r = opArr.filter((o) => operatorsConfig[o].flow === flow);\n const operator = r[0];\n const flowObj = { offer: '1', operator, default: defaultFlowConfig, ...operatorsConfig[operator] };\n\n return flowObj;\n}\n\n// export const mockedPinFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.PIN,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('pin')\n// }\n// }\n// };\n\n// export const mockedMoFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('mo')\n// }\n// }\n// };\n\n// export const mockedUssdFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.USSD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('ussd')\n// }\n// }\n// };\n\n// export const mockedMoRdirFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO_REDIR,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('moRedir')\n// }\n// }\n// };\n\n// export const mockedClick2smsFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CLICK2SMS,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('click2sms')\n// }\n// }\n// };\n\n// export const mockedOneClickFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.ONE_CLICK,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('oneClick')\n// }\n// }\n// };\n\n// export const mockedCreditCardFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CREDIT_CARD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('creditCard')\n// }\n// }\n// };\n// export const mockedMOFlow : State = { type: \"MO\", result:moFlow(mockTracker, mockConfig(\"mo\"))}\n// export const mockedOneClickFlow : State = { type: \"ONECLICK\", result:oneClickFlow(mockTracker, mockConfig(\"oneClick\"), {\"testextraparams\":\"1\"})}\n// export const mockedClick2smsFlow : State = { type: \"CLICK2SMS\", result:click2smsFlow(mockTracker, mockConfig(\"click2sms\"))}\n// export const mockedMORedirFlow : State = { type: \"MOREDIR\", result:moRedirFlow(mockTracker, mockConfig(\"moRedir\"))}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\n\nimport {\n IDENTIFYMSISDNEntryErrorTypes,\n ISupportedFlows,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn, flowMapping, getTrackerEventName } from '../main';\n\nexport const askMobileNumber = (): StrategyCurrentState => ({\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.NothingYet()\n});\n\nexport const submitMSISDNAction = createAsyncThunk(\n 'strategy/submitMSISDNAction',\n async (\n {\n window,\n msisdn\n }: {\n window: Window;\n msisdn: string;\n isHeSuccess?: boolean;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n const flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n const flowType = flowObj?.flow;\n const event = getTrackerEventName(flowType);\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n msisdn\n }\n };\n } catch (ex) {\n let errorType: IDENTIFYMSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'SEAlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'SEInvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n return rejectWithValue({\n errorType,\n error: ex,\n productUrl: ex.productUrl\n });\n }\n }\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\n\nimport { PossibleTypes, StrategyCurrentState } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getOperators, getTrackerEventName } from '../main';\n\nexport const askOperator = (): StrategyCurrentState => {\n const configs = getConfig();\n const operators = getOperators({ configs });\n return {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.NothingYet(),\n data: {\n operators\n }\n };\n};\n\nexport const selectOperatorAction = createAsyncThunk(\n 'strategy/selectOperatorAction',\n async (\n {\n operator\n }: {\n operator: string;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n\n const flowObj = determineFlowByOperator({\n configs,\n operator\n });\n\n const flowType = flowObj.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator\n }\n };\n } catch (ex) {\n const errorType = 'UnkownError';\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n }\n);\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategyNames, ISupportedFlows } from '../../../common-types/Strategy';\n\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp, flowMapping, getTrackerEventName } from '../main';\nimport { askMobileNumber } from './askMobileNumber';\nimport { askOperator } from './askOperator';\n\nconst detectOperatorByIp = async (strategy?: IStrategyNames) => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (\n !flowObj.flow &&\n (strategy === 'all-flows-detect-operator-by-ip-or-ask-mobile-number' ||\n strategy === 'all-flows-ask-mobile-number')\n ) {\n return askMobileNumber();\n }\n\n if (!flowObj.flow && strategy === 'all-flows-detect-operator-by-ip-or-ask-operator') {\n return askOperator();\n }\n\n const flowType = flowObj.flow;\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n strategy\n }\n };\n }\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n strategy,\n defaultConfig,\n defaultFlowType\n }\n };\n } catch (ex) {\n console.error('error', ex);\n }\n};\n\nexport { detectOperatorByIp };\n","/* eslint-disable func-names */\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport {\n IConfig,\n IFlow,\n IScriptHeaderEnrichmentFailure,\n IScriptHeaderEnrichmentSuccess,\n ISupportedFlows,\n PossibleTypes\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { formatNumberToE164 } from '../../../utilities/formatNumberToE164';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getTrackerEventName } from '../main';\n\n/**\n * Creates a response object with the given parameters.\n *\n * @param {string} msisdn - The MSISDN (Mobile Station International Subscriber Directory Number).\n * @param {IConfig} config - The configuration object.\n * @param {string | null} operator - The operator (default: null).\n * @return {object} The response that sets the state.\n */\nconst createResponseObject = (config: IConfig, flow?: ISupportedFlows) => ({\n type: flowMapping[flow] || PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config\n }\n});\n\n/**\n * Injects header enrichment script based on the provided window object.\n *\n * @param {Window} window - The window object containing analytics visitor details.\n * @return {Promise} A promise that resolves based on specific events or timeouts.\n */\nconst injectHeaderEnrichmentScript = async ({ window }: { window: Window }) => {\n const configs = getConfig();\n const enableScriptTimer = configs?.enableScriptTimer;\n const { strategyConfigs } = configs;\n const config = strategyConfigs?.default?.flowConfig;\n\n return new Promise((resolve) => {\n try {\n let heMsisdn = window?.pac_analytics?.visitor?.heMsisdn;\n const country = window?.pac_analytics?.visitor?.country;\n\n if (heMsisdn && country) {\n heMsisdn = formatNumberToE164(heMsisdn, country);\n }\n\n let msisdnDetected = false;\n let timerExpired = false;\n let timerId: string | number | NodeJS.Timeout;\n\n if (enableScriptTimer) {\n timerId = setTimeout(() => {\n if (!msisdnDetected) {\n timerExpired = true;\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: '3 second timer expired'\n });\n\n window.isPrelanderClicked = true;\n resolve({\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n });\n }\n }, 3000);\n }\n\n const onSuccess = (event: Event) => {\n const { detail } = event as IScriptHeaderEnrichmentSuccess;\n heMsisdn = detail?.msisdn;\n if (detail?.msisdn && !detail?.encrypted_msisdn) {\n heMsisdn = formatNumberToE164(detail.msisdn, country);\n window.msisdn = heMsisdn;\n } else {\n window.msisdn = detail?.msisdn;\n window.is_encrypted_msisdn = detail?.encrypted_msisdn;\n }\n\n if (enableScriptTimer) {\n if (!timerExpired) {\n msisdnDetected = true;\n clearTimeout(timerId);\n\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: heMsisdn\n });\n const flowObj = determineFlowByOperator({\n configs: getConfig(),\n operator: detail?.operator_code\n });\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(headerEnrichmentScript(flowObj, heMsisdn, detail?.operator_code, true));\n }\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: heMsisdn,\n operator: detail?.operator_code\n });\n const flowObj = determineFlowByOperator({\n configs: getConfig(),\n operator: detail?.operator_code\n });\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(headerEnrichmentScript(flowObj, heMsisdn, detail?.operator_code, true));\n }\n };\n\n const onFail = (event: Event) => {\n const { detail } = event as IScriptHeaderEnrichmentFailure;\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', detail?.error_details);\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(createResponseObject(config, strategyConfigs?.default.flow as ISupportedFlows));\n };\n\n window.addEventListener('he-success', onSuccess);\n window.addEventListener('he-fail', onFail);\n\n if (!window?.heScriptUrl) {\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: 'Error he script url not set'\n });\n window.dispatchEvent(new Event('he-fail'));\n return;\n }\n window.addEventListener('error', (event) => {\n console.error('Global error:', event?.error);\n tracker.customEvent('Flow', 'recede-auto', 'global-error', {\n errorMessage: event?.error?.message,\n errorStack: event?.error?.stack\n });\n });\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.id = 'he-js-link';\n script.src = `${window.heScriptUrl}`; // URL Comes from server\n script.referrerPolicy = 'origin';\n document.head.appendChild(script);\n\n script.onerror = (error: any) => {\n console.error('Error loading Header Enrichment script.');\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: 'Error loading Header Enrichment script',\n errorMessage: error.message\n });\n window.dispatchEvent(new Event('he-fail'));\n };\n } catch (err) {\n console.error('Error in header enrichment:', err);\n resolve(createResponseObject(config, strategyConfigs?.default.flow as ISupportedFlows));\n }\n });\n};\n\nconst headerEnrichmentScript = (\n flowObj: IFlow,\n msisdn: string | null = null,\n operator: string | null = null,\n isHeaderEnrichmentSuccess: boolean\n) => {\n const defaultConfig = getConfig().strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow;\n const flowType = flowObj.flow || flowObj.default?.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n if (!flowObj.flow) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n isHeaderEnrichmentSuccess\n }\n };\n};\n\nexport { injectHeaderEnrichmentScript };\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nimport {\n IMockFlowParams,\n IMockPinFlowStates,\n ISupportedFlows,\n PossibleTypes,\n RootState,\n StrategyCurrentState,\n StrategyState\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../utilities/getConfig';\nimport { determineFlowByOperator, flowMapping } from './main';\nimport { askMobileNumber, submitMSISDNAction } from './strategies/askMobileNumber';\nimport { askOperator, selectOperatorAction } from './strategies/askOperator';\n\nimport { tracker } from '../../utilities/tracker';\nimport { callRedirectApi } from './strategies/callRedirectApi';\nimport { detectOperatorByIp } from './strategies/detectOperatorByIp';\nimport { handleHeaderEnrichment } from './strategies/headerEnrichment';\nimport { injectHeaderEnrichmentScript } from './strategies/injectHeaderEnrichmentScript';\n\nwindow.tracker = tracker;\nconst initialState: StrategyState = {\n currentState: {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.NothingYet(),\n data: undefined\n }\n};\n\nconst mockStrategyStateByUrlParam = (): StrategyCurrentState => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n\n if (search['mock-flow'] !== undefined) {\n if (search.operator !== undefined) {\n window.operator = search.operator;\n }\n\n switch (search['mock-flow']) {\n case 'pin':\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({})\n };\n\n case 'mo':\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({})\n };\n case 'moredir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({})\n };\n case 'oneclick':\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n subscription_url: search['subscription-url']\n }\n };\n case 'click2sms':\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({})\n };\n case 'ussd':\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({})\n };\n case 'creditcard':\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({})\n };\n default:\n throw new Error('(mockStrategyStateByUrlParam) Strategy Mock Flow not supported');\n }\n }\n};\n\n/**\n * Identify Strategy\n * @returns {type: 'strategy/identifyStrategy', payload: {type: PossibleTypes.MO, result: IdentifyFlowOptionsResult}}\n * - Add type\n * - Makes a decision on which strategy to use in order to identify the flow\n * - Strategy could be asking user's phone number, selecting an operator etc\n * - all with the intension of getting the flow and its configuration\n * - Flows are usually tied to an operator in the pages config.json\n * - But they could also be single flows\n *\n */\n\nexport const identifyStrategy = createAsyncThunk('strategy/identifyStrategy', async () => {\n const configs = getConfig();\n const { strategy, strategyConfigs } = configs;\n // const { isUseMsisdnPrefix } = strategyConfigs;\n const search = searchToObject(window) as IMockFlowParams<IMockPinFlowStates>;\n if (search['mock-flow'] !== undefined) {\n return mockStrategyStateByUrlParam();\n }\n if (search.ui_show_default_flow === '1') {\n const flow = strategyConfigs?.default.flow as ISupportedFlows;\n const config = strategyConfigs?.default?.flowConfig;\n return {\n type: flowMapping[flow],\n result: RDS.NothingYet(),\n data: {\n config\n }\n };\n }\n if (\n (search['show-pin-entry'] && search['show-pin-entry'] === '1') ||\n (search['show-thank-you'] && search['show-thank-you'] === '1') ||\n (search.show_custom_error && search.show_custom_error === '1')\n ) {\n const flowObj = determineFlowByOperator({\n configs,\n operator: search.operator\n });\n const strategyResult: StrategyCurrentState = {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: flowObj?.flowConfig || strategyConfigs?.default?.flowConfig\n }\n };\n return strategyResult;\n }\n\n if (strategy.includes('ask-operator')) {\n return askOperator();\n }\n if (strategy.includes('detect-operator-by-ip')) {\n return detectOperatorByIp(strategy);\n }\n if (strategy?.includes('ask-mobile-number')) {\n return askMobileNumber();\n }\n\n if (strategy?.includes('detect-operator-by-redirect-api')) {\n return callRedirectApi();\n }\n\n if (strategy?.includes('header-enrichment') && strategy !== 'header-enrichment-script') {\n const n = await handleHeaderEnrichment();\n // @ts-ignore\n return n;\n }\n\n switch (strategy) {\n // REOVING THIS AS IT INJECTS UNUSED CODE\n case 'header-enrichment-script':\n // eslint-disable-next-line no-return-await\n return injectHeaderEnrichmentScript({\n window\n });\n case 'pin': {\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n }\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'mo-redir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'one-click':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'ussd':\n tracker.sendOptInFlowEvent('USSD');\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'credit-card':\n // @ts-ignore\n tracker.sendOptInFlowEvent('Credit card');\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n default:\n throw new Error('Strategy not supported');\n }\n});\n\nexport const setStrategyExtraData = createAsyncThunk(\n 'strategy/setStrategyExtraData',\n async ({ type, data }: { type: PossibleTypes; data: any }) => ({\n type,\n result: RDS.NothingYet(),\n data\n })\n);\n\nexport const strategySlice = createSlice({\n name: 'strategy',\n initialState,\n reducers: {\n // Define synchronous reducers as needed\n },\n extraReducers: (builder) => {\n // @ts-ignore\n builder\n .addCase(identifyStrategy.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Loading()\n };\n })\n // @ts-ignore\n .addCase(identifyStrategy.fulfilled, (state, action: PayloadAction<StrategyCurrentState>) => {\n state.currentState = action.payload;\n })\n .addCase(identifyStrategy.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Failure(action.error.message)\n };\n })\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.Loading()\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<StrategyCurrentState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(setStrategyExtraData.fulfilled, (state, action) => {\n state.currentState = action.payload;\n })\n .addCase(selectOperatorAction.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.Loading()\n };\n })\n .addCase(selectOperatorAction.fulfilled, (state, action: PayloadAction<any>) => {\n state.currentState = action.payload;\n })\n .addCase(selectOperatorAction.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\nexport const selectStrategyState = (state: RootState) => state.strategy;\nexport const strategyReducer = strategySlice.reducer;\n","import * as RDS from '../../../common-types/RemoteDataState';\n\nimport { ISupportedFlows } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { getRedirectUrl } from '../api';\nimport { flowMapping, getTrackerEventName } from '../main';\n\nconst callRedirectApi = async () => {\n const configs = getConfig();\n const defaultConfig = configs?.strategyConfigs.default;\n const defaultFlowType = defaultConfig.flow as ISupportedFlows;\n const { slug, country, device } = defaultConfig.flowConfig;\n const { rockmanId } = window.pac_analytics.visitor;\n const { offer } = window.pac_analytics.visitor;\n try {\n const result = await getRedirectUrl({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n });\n\n if (result.success === false) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n\n // OPERATOR NOT KNOWN\n\n // const operator = result?.operator && result?.operator !== 'unknown' ? result?.operator : null;\n\n if (result?.payload?.network_type === 'data') {\n // const flowObj = await determineFlowByOperator({\n // operator,\n // configs\n // });\n // const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName('oneClick');\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping.oneClick,\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null\n }\n };\n }\n if (result?.payload?.network_type === 'wifi') {\n // const flowObj = await determineFlowByOperator({\n // operator,\n // configs\n // });\n // const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName('moRedir');\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null,\n skipRedirectCall: true\n }\n };\n }\n\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null,\n skipRedirectCall: true\n }\n };\n } catch (ex) {\n console.error('error', ex);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n};\n\nexport { callRedirectApi };\n","import * as RDS from '../../../common-types/RemoteDataState';\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 operator = search?.operator || window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.operator || null;\n\n const isHeaderEnrichmentSuccess =\n search?.msisdn !== '' || window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.msisdn !== '';\n const msisdn = search?.msisdn || window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.msisdn || null;\n\n if (isHeaderEnrichmentSuccess) {\n if (window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.isContentBlocked) {\n window.isContentBlocked = true;\n }\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn,\n operator\n });\n }\n if (operator === null) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n\n if (configs.strategy === 'pin-header-enrichment' && isHeaderEnrichmentSuccess) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n let subscription_url = null;\n let redirect_url = null;\n\n const flowObj = await determineFlowByOperator({\n operator,\n configs\n });\n const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\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","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","msisdn","_b","match","join","defaultFlowConfig","_c","strategyConfigs","default","config","flowConfig","operatorsConfig","_d","operators","indentifyFlow","__awaiter","_this","slug","country","device","rockmanId","pac_analytics","offer","identify","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","toString","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","encrypted_msisdn","is_encrypted_msisdn","clearTimeout","operator_code","removeEventListener","onFail_1","headerEnrichmentScript","error_details","addEventListener","heScriptUrl","dispatchEvent","Event","errorMessage","errorStack","stack","script","document","createElement","id","src","referrerPolicy","head","appendChild","onerror","err","isHeaderEnrichmentSuccess","initialState","currentState","IDENTIFY_STRATEGY","undefined","mockStrategyStateByUrlParam","search","searchToObject","subscription_url","identifyStrategy","ui_show_default_flow","show_custom_error","getRedirectUrl","payload","network_type","redirect_url","event_2","skipRedirectCall","heMsisdnDecryptedByApiResult","_j","_h","_g","_l","_k","_m","isContentBlocked","_o","searchObj","resonseUrl","decodedUrl","atob","newUrl_1","URL","urlParams_1","URLSearchParams","msisdn_1","get","operator_1","newUrl","urlParams","heResult","setStrategyExtraData","strategyReducer","createSlice","name","reducers","extraReducers","builder","addCase","pending","state","RDS.Loading","fulfilled","action","rejected","RDS.Failure","reducer"],"mappings":"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"}
1
+ {"version":3,"file":"strategySlice-BqABgMaS.js","sources":["../src/sharedFlowTypes/StrategyTypes.ts","../src/ips/tryGetIPRangeName.ts","../src/flows/strategy/main.ts","../src/flows/strategy/strategies/askMobileNumber.ts","../src/flows/strategy/strategies/askOperator.ts","../src/flows/strategy/strategies/detectOperatorByIp.ts","../src/flows/strategy/strategies/injectHeaderEnrichmentScript.ts","../src/flows/strategy/strategySlice.ts","../src/flows/strategy/strategies/callRedirectApi.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 ui_show_default_flow?: '1' | '0';\n ui_show_pin_entry?: '1' | '0';\n ui_error_message?: string;\n}\n\nexport interface IScriptHeaderEnrichmentSuccess extends CustomEvent {\n detail: {\n msisdn: string;\n operator_code: string;\n subscription_url: boolean;\n encrypted_msisdn: boolean;\n };\n}\n\nexport interface IScriptHeaderEnrichmentFailure extends CustomEvent {\n detail: {\n encrypted_msisdn: boolean;\n error_details: {\n error: any;\n stack: any;\n };\n };\n}\n\nexport interface ExtraStrategyData {\n isHeaderEnrichmentSuccess?: boolean;\n config?: ConfigDetails;\n msisdn?: string;\n rockman_id?: string;\n operator?: string;\n subscription_url?: string;\n redirect_url?: string;\n operators?: string[];\n strategy?: string;\n defaultConfig?: IFlow;\n defaultFlowType?: ISupportedFlows;\n skipRedirectCall?: boolean;\n}\nexport interface StrategyState {\n currentState: StrategyCurrentState;\n}\n\nexport interface StrategyCurrentState {\n type: PossibleTypes;\n result: RDS.RemoteDataState<any, any>;\n data?: ExtraStrategyData;\n}\n\nexport type IMockPinFlowStates = 'msisdn-state' | 'pin-state' | 'completed-state' | 'msisdn-failure-state';\n\nexport interface RootState {\n strategy?: StrategyState;\n pinFlow?: PinFlowState;\n moFlow?: MoFlowState;\n moRedirFlow?: MoRedirFlowState;\n click2smsFlow?: Click2smsFlowState;\n oneClickFlow?: OneClickFlowState;\n ussdFlow?: UssdFlowState;\n creditCardFlow?: CreditCardFlowState;\n}\n","/* eslint-disable no-param-reassign */\nimport { IVisitor } from '../common-types/IVisitor';\nimport queryString from '../pacman/queryString';\n\n// eslint-disable-next-line consistent-return\nexport default async function tryGetIPRangeName(visitor: IVisitor): Promise<string> {\n const mockip = queryString(window.location.href, 'mock-ip') || process.env.mock_ip;\n // eslint-disable-next-line no-console\n console.log('mockip', mockip);\n if (!visitor.ip && typeof window !== 'undefined') {\n try {\n const { host } = window.location;\n const newHost = window.DEV_BASE_URL_IP || host;\n const res = await fetch(`https://${newHost}/api/v1/ip${mockip ? `?mock-ip=${mockip}` : ''}`).then((x) =>\n x.json()\n );\n // return isIPInRange('37.200.146.28')\n visitor.ip = res.ip;\n visitor.ip_range_name = res.ip_range_name;\n return res.ip_range_name;\n } catch (ex) {\n console.warn('IP Lookup failed', ex);\n return '';\n }\n } else {\n return visitor.ip_range_name || '';\n }\n}\n","import { IError } from '../../common-types/IError';\nimport { IOptInFlowName } from '../../common-types/IOptInFlowName';\nimport { IStrategy, ISupportedFlows } from '../../common-types/Strategy';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { HEResult, IConfig, IFlow, IIdentifyResult, PossibleTypes } from '../../sharedFlowTypes/StrategyTypes';\nimport { formatNumberToE164 } from '../../utilities/formatNumberToE164';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { identify } from './api';\n\nexport const flowMapping: Record<ISupportedFlows, PossibleTypes> = {\n mo: PossibleTypes.MO,\n pin: PossibleTypes.PIN,\n oneClick: PossibleTypes.ONE_CLICK,\n moRedir: PossibleTypes.MO_REDIR,\n click2sms: PossibleTypes.CLICK2SMS,\n ussd: PossibleTypes.USSD,\n tpayHe: PossibleTypes.TPAY_HE,\n creditCard: PossibleTypes.CREDIT_CARD\n};\n\n// @ts-ignore\nexport const trackerEventMapping: Record<ISupportedFlows, IOptInFlowName> = {\n mo: 'Msisdn to sms',\n pin: 'Pin',\n oneClick: '3G click',\n moRedir: 'Redirect',\n click2sms: 'Click to sms',\n tpayHe: 'Pin',\n ussd: 'Msisdn to sms'\n};\n\nexport const getTrackerEventName = (flowType: ISupportedFlows) => trackerEventMapping[flowType];\n\nexport async function determineFlowByMsidn({\n window,\n internationalMSISDN,\n configs\n}: {\n window: Window;\n internationalMSISDN: string;\n configs: IStrategy;\n}): Promise<IFlow> {\n if (!internationalMSISDN) {\n const submissionError = new Error(`Error in 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 resonseUrl = searchObj.subscription_url || searchObj.redirect_url;\n\n if (resonseUrl) {\n const decodedUrl = window.atob(resonseUrl);\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 console.error('No URL provided for redirection in the url params');\n\n const newUrl = new URL(window.location.href);\n const urlParams = new URLSearchParams(newUrl.search);\n\n let msisdn = urlParams.get('msisdn') || searchObj.msisdn;\n const operator = urlParams.get('operator') || searchObj.operator;\n\n if (msisdn) {\n msisdn = formatNumberToE164(msisdn, window?.pac_analytics?.visitor?.country);\n }\n\n return {\n msisdn: msisdn || '',\n operator: operator || ''\n };\n};\n\nexport const subscribe: (_url: string) => Promise<string> = async (_url: string) =>\n // const result:ISubscribeResult = await fetch(url + \"&operator=kw_viva\").then((x)=>x.json())\n\n // if(false === result.success){\n // const subscribeError = new Error(`Error in subscribe() one-click-subscribe action:\\n${result.message}`) as IError & {type:string;}\n // subscribeError['type'] = \"SubscriptionError\";\n // throw subscribeError\n // }else{\n '/product';\n// }\n\nexport function mockConfig({ configs, flow }: { configs: IStrategy; flow: string }): IConfig {\n const defaultFlowConfig = configs?.strategyConfigs?.default;\n const operatorsConfig = configs?.strategyConfigs?.operators;\n const opArr = Object.keys(operatorsConfig);\n const r = opArr.filter((o) => operatorsConfig[o].flow === flow);\n const operator = r[0];\n const flowObj = { offer: '1', operator, default: defaultFlowConfig, ...operatorsConfig[operator] };\n\n return flowObj;\n}\n\n// export const mockedPinFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.PIN,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('pin')\n// }\n// }\n// };\n\n// export const mockedMoFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('mo')\n// }\n// }\n// };\n\n// export const mockedUssdFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.USSD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('ussd')\n// }\n// }\n// };\n\n// export const mockedMoRdirFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.MO_REDIR,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('moRedir')\n// }\n// }\n// };\n\n// export const mockedClick2smsFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CLICK2SMS,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('click2sms')\n// }\n// }\n// };\n\n// export const mockedOneClickFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.ONE_CLICK,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('oneClick')\n// }\n// }\n// };\n\n// export const mockedCreditCardFlow: StrategyState = {\n// currentState: {\n// type: PossibleTypes.CREDIT_CARD,\n// result: RDS.NothingYet(),\n// data: {\n// config: mockConfig('creditCard')\n// }\n// }\n// };\n// export const mockedMOFlow : State = { type: \"MO\", result:moFlow(mockTracker, mockConfig(\"mo\"))}\n// export const mockedOneClickFlow : State = { type: \"ONECLICK\", result:oneClickFlow(mockTracker, mockConfig(\"oneClick\"), {\"testextraparams\":\"1\"})}\n// export const mockedClick2smsFlow : State = { type: \"CLICK2SMS\", result:click2smsFlow(mockTracker, mockConfig(\"click2sms\"))}\n// export const mockedMORedirFlow : State = { type: \"MOREDIR\", result:moRedirFlow(mockTracker, mockConfig(\"moRedir\"))}\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\n\nimport {\n IDENTIFYMSISDNEntryErrorTypes,\n ISupportedFlows,\n PossibleTypes,\n StrategyCurrentState\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { determineFlowByMsidn, flowMapping, getTrackerEventName } from '../main';\n\nexport const askMobileNumber = (): StrategyCurrentState => ({\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.NothingYet()\n});\n\nexport const submitMSISDNAction = createAsyncThunk(\n 'strategy/submitMSISDNAction',\n async (\n {\n window,\n msisdn\n }: {\n window: Window;\n msisdn: string;\n isHeSuccess?: boolean;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n const flowObj = await determineFlowByMsidn({ window, internationalMSISDN: msisdn, configs });\n const flowType = flowObj?.flow;\n const event = getTrackerEventName(flowType);\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n msisdn\n }\n };\n } catch (ex) {\n let errorType: IDENTIFYMSISDNEntryErrorTypes;\n switch (ex.type) {\n case 'SEAlreadySubscribed':\n errorType = 'AlreadySubscribed';\n break;\n case 'SEInvalidMSISDN':\n errorType = 'InvalidMSISDN';\n break;\n default:\n errorType = 'UnknownError';\n }\n return rejectWithValue({\n errorType,\n error: ex,\n productUrl: ex.productUrl\n });\n }\n }\n);\n","import { createAsyncThunk } from '@reduxjs/toolkit';\nimport * as RDS from '../../../common-types/RemoteDataState';\n\nimport { PossibleTypes, StrategyCurrentState } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getOperators, getTrackerEventName } from '../main';\n\nexport const askOperator = (): StrategyCurrentState => {\n const configs = getConfig();\n const operators = getOperators({ configs });\n return {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.NothingYet(),\n data: {\n operators\n }\n };\n};\n\nexport const selectOperatorAction = createAsyncThunk(\n 'strategy/selectOperatorAction',\n async (\n {\n operator\n }: {\n operator: string;\n },\n { rejectWithValue }\n ) => {\n try {\n const configs = getConfig();\n\n const flowObj = determineFlowByOperator({\n configs,\n operator\n });\n\n const flowType = flowObj.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator\n }\n };\n } catch (ex) {\n const errorType = 'UnkownError';\n return rejectWithValue({\n errorType,\n error: ex.toString()\n });\n }\n }\n);\n","import * as RDS from '../../../common-types/RemoteDataState';\nimport { IStrategyNames, ISupportedFlows } from '../../../common-types/Strategy';\n\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperatorFromIp, flowMapping, getTrackerEventName } from '../main';\nimport { askMobileNumber } from './askMobileNumber';\nimport { askOperator } from './askOperator';\n\nconst detectOperatorByIp = async (strategy?: IStrategyNames) => {\n try {\n const configs = getConfig();\n\n const flowObj = await determineFlowByOperatorFromIp({\n window,\n configs\n });\n const defaultConfig = configs?.strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow as ISupportedFlows;\n\n if (\n !flowObj.flow &&\n (strategy === 'all-flows-detect-operator-by-ip-or-ask-mobile-number' ||\n strategy === 'all-flows-ask-mobile-number')\n ) {\n return askMobileNumber();\n }\n\n if (!flowObj.flow && strategy === 'all-flows-detect-operator-by-ip-or-ask-operator') {\n return askOperator();\n }\n\n const flowType = flowObj.flow;\n if (!flowMapping[flowType]) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n strategy\n }\n };\n }\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n strategy,\n defaultConfig,\n defaultFlowType\n }\n };\n } catch (ex) {\n console.error('error', ex);\n }\n};\n\nexport { detectOperatorByIp };\n","/* eslint-disable func-names */\nimport * as RDS from '../../../common-types/RemoteDataState';\nimport {\n IConfig,\n IFlow,\n IScriptHeaderEnrichmentFailure,\n IScriptHeaderEnrichmentSuccess,\n ISupportedFlows,\n PossibleTypes\n} from '../../../sharedFlowTypes/StrategyTypes';\nimport { formatNumberToE164 } from '../../../utilities/formatNumberToE164';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { determineFlowByOperator, flowMapping, getTrackerEventName } from '../main';\n\n/**\n * Creates a response object with the given parameters.\n *\n * @param {string} msisdn - The MSISDN (Mobile Station International Subscriber Directory Number).\n * @param {IConfig} config - The configuration object.\n * @param {string | null} operator - The operator (default: null).\n * @return {object} The response that sets the state.\n */\nconst createResponseObject = (config: IConfig, flow?: ISupportedFlows) => ({\n type: flowMapping[flow] || PossibleTypes.PIN,\n result: RDS.NothingYet(),\n data: {\n config\n }\n});\n\n/**\n * Injects header enrichment script based on the provided window object.\n *\n * @param {Window} window - The window object containing analytics visitor details.\n * @return {Promise} A promise that resolves based on specific events or timeouts.\n */\nconst injectHeaderEnrichmentScript = async ({ window }: { window: Window }) => {\n const configs = getConfig();\n const enableScriptTimer = configs?.enableScriptTimer;\n const { strategyConfigs } = configs;\n const config = strategyConfigs?.default?.flowConfig;\n\n return new Promise((resolve) => {\n try {\n let heMsisdn = window?.pac_analytics?.visitor?.heMsisdn;\n const country = window?.pac_analytics?.visitor?.country;\n\n if (heMsisdn && country) {\n heMsisdn = formatNumberToE164(heMsisdn, country);\n }\n\n let msisdnDetected = false;\n let timerExpired = false;\n let timerId: string | number | NodeJS.Timeout;\n\n if (enableScriptTimer) {\n timerId = setTimeout(() => {\n if (!msisdnDetected) {\n timerExpired = true;\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: '3 second timer expired'\n });\n\n window.isPrelanderClicked = true;\n resolve({\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig\n }\n });\n }\n }, 3000);\n }\n\n const onSuccess = (event: Event) => {\n const { detail } = event as IScriptHeaderEnrichmentSuccess;\n heMsisdn = detail?.msisdn;\n if (detail?.msisdn && !detail?.encrypted_msisdn) {\n heMsisdn = formatNumberToE164(detail.msisdn, country);\n window.msisdn = heMsisdn;\n } else {\n window.msisdn = detail?.msisdn;\n window.is_encrypted_msisdn = detail?.encrypted_msisdn;\n }\n\n if (enableScriptTimer) {\n if (!timerExpired) {\n msisdnDetected = true;\n clearTimeout(timerId);\n\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: heMsisdn\n });\n const flowObj = determineFlowByOperator({\n configs: getConfig(),\n operator: detail?.operator_code\n });\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(headerEnrichmentScript(flowObj, heMsisdn, detail?.operator_code, true));\n }\n } else {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn: heMsisdn,\n operator: detail?.operator_code\n });\n const flowObj = determineFlowByOperator({\n configs: getConfig(),\n operator: detail?.operator_code\n });\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(headerEnrichmentScript(flowObj, heMsisdn, detail?.operator_code, true));\n }\n };\n\n const onFail = (event: Event) => {\n const { detail } = event as IScriptHeaderEnrichmentFailure;\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', detail?.error_details);\n window.removeEventListener('he-success', onSuccess);\n window.removeEventListener('he-fail', onFail);\n resolve(createResponseObject(config, strategyConfigs?.default.flow as ISupportedFlows));\n };\n\n window.addEventListener('he-success', onSuccess);\n window.addEventListener('he-fail', onFail);\n\n if (!window?.heScriptUrl) {\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: 'Error he script url not set'\n });\n window.dispatchEvent(new Event('he-fail'));\n return;\n }\n window.addEventListener('error', (event) => {\n console.error('Global error:', event?.error);\n tracker.customEvent('Flow', 'recede-auto', 'global-error', {\n errorMessage: event?.error?.message,\n errorStack: event?.error?.stack\n });\n });\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.id = 'he-js-link';\n script.src = `${window.heScriptUrl}`; // URL Comes from server\n script.referrerPolicy = 'origin';\n document.head.appendChild(script);\n\n script.onerror = (error: any) => {\n console.error('Error loading Header Enrichment script.');\n tracker.customEvent('Flow', 'recede-auto', 'msisdn-detection-failure', {\n errorType: 'Error loading Header Enrichment script',\n errorMessage: error.message\n });\n window.dispatchEvent(new Event('he-fail'));\n };\n } catch (err) {\n console.error('Error in header enrichment:', err);\n resolve(createResponseObject(config, strategyConfigs?.default.flow as ISupportedFlows));\n }\n });\n};\n\nconst headerEnrichmentScript = (\n flowObj: IFlow,\n msisdn: string | null = null,\n operator: string | null = null,\n isHeaderEnrichmentSuccess: boolean\n) => {\n const defaultConfig = getConfig().strategyConfigs?.default;\n const defaultFlowType = defaultConfig?.flow;\n const flowType = flowObj.flow || flowObj.default?.flow;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\n if (!flowObj.flow) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n return {\n type: flowMapping[flowType],\n result: RDS.NothingYet(),\n data: {\n config: flowObj.flowConfig,\n operator: flowObj.operator,\n isHeaderEnrichmentSuccess\n }\n };\n};\n\nexport { injectHeaderEnrichmentScript };\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport { searchToObject } from '../../utilities/searchToObject';\n\nimport {\n IMockFlowParams,\n IMockPinFlowStates,\n ISupportedFlows,\n PossibleTypes,\n RootState,\n StrategyCurrentState,\n StrategyState\n} from '../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../utilities/getConfig';\nimport { determineFlowByOperator, flowMapping } from './main';\nimport { askMobileNumber, submitMSISDNAction } from './strategies/askMobileNumber';\nimport { askOperator, selectOperatorAction } from './strategies/askOperator';\n\nimport { tracker } from '../../utilities/tracker';\nimport { callRedirectApi } from './strategies/callRedirectApi';\nimport { detectOperatorByIp } from './strategies/detectOperatorByIp';\nimport { handleHeaderEnrichment } from './strategies/headerEnrichment';\nimport { injectHeaderEnrichmentScript } from './strategies/injectHeaderEnrichmentScript';\n\nwindow.tracker = tracker;\nconst initialState: StrategyState = {\n currentState: {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.NothingYet(),\n data: undefined\n }\n};\n\nconst mockStrategyStateByUrlParam = (): StrategyCurrentState => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n\n if (search['mock-flow'] !== undefined) {\n if (search.operator !== undefined) {\n window.operator = search.operator;\n }\n\n switch (search['mock-flow']) {\n case 'pin':\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({})\n };\n\n case 'mo':\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({})\n };\n case 'moredir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({})\n };\n case 'oneclick':\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n subscription_url: search['subscription-url']\n }\n };\n case 'click2sms':\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({})\n };\n case 'ussd':\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({})\n };\n case 'creditcard':\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({})\n };\n default:\n throw new Error('(mockStrategyStateByUrlParam) Strategy Mock Flow not supported');\n }\n }\n};\n\n/**\n * Identify Strategy\n * @returns {type: 'strategy/identifyStrategy', payload: {type: PossibleTypes.MO, result: IdentifyFlowOptionsResult}}\n * - Add type\n * - Makes a decision on which strategy to use in order to identify the flow\n * - Strategy could be asking user's phone number, selecting an operator etc\n * - all with the intension of getting the flow and its configuration\n * - Flows are usually tied to an operator in the pages config.json\n * - But they could also be single flows\n *\n */\n\nexport const identifyStrategy = createAsyncThunk('strategy/identifyStrategy', async () => {\n const configs = getConfig();\n const { strategy, strategyConfigs } = configs;\n // const { isUseMsisdnPrefix } = strategyConfigs;\n const search = searchToObject(window) as IMockFlowParams<IMockPinFlowStates>;\n if (search['mock-flow'] !== undefined) {\n return mockStrategyStateByUrlParam();\n }\n if (search.ui_show_default_flow === '1') {\n const flow = strategyConfigs?.default.flow as ISupportedFlows;\n const config = strategyConfigs?.default?.flowConfig;\n return {\n type: flowMapping[flow],\n result: RDS.NothingYet(),\n data: {\n config\n }\n };\n }\n if (\n (search['show-pin-entry'] && search['show-pin-entry'] === '1') ||\n (search['show-thank-you'] && search['show-thank-you'] === '1') ||\n (search.show_custom_error && search.show_custom_error === '1')\n ) {\n const flowObj = determineFlowByOperator({\n configs,\n operator: search.operator\n });\n const strategyResult: StrategyCurrentState = {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: flowObj?.flowConfig || strategyConfigs?.default?.flowConfig\n }\n };\n return strategyResult;\n }\n\n if (strategy.includes('ask-operator')) {\n return askOperator();\n }\n if (strategy.includes('detect-operator-by-ip')) {\n return detectOperatorByIp(strategy);\n }\n if (strategy?.includes('ask-mobile-number')) {\n return askMobileNumber();\n }\n\n if (strategy?.includes('detect-operator-by-redirect-api')) {\n return callRedirectApi();\n }\n\n if (strategy?.includes('header-enrichment') && strategy !== 'header-enrichment-script') {\n const n = await handleHeaderEnrichment();\n // @ts-ignore\n return n;\n }\n\n switch (strategy) {\n // REOVING THIS AS IT INJECTS UNUSED CODE\n case 'header-enrichment-script':\n // eslint-disable-next-line no-return-await\n return injectHeaderEnrichmentScript({\n window\n });\n case 'pin': {\n tracker.sendOptInFlowEvent('Pin');\n return {\n type: PossibleTypes.PIN,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n }\n case 'mo':\n tracker.sendOptInFlowEvent('Msisdn to sms');\n return {\n type: PossibleTypes.MO,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'mo-redir':\n return {\n type: PossibleTypes.MO_REDIR,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'one-click':\n tracker.sendOptInFlowEvent('Redirect');\n return {\n type: PossibleTypes.ONE_CLICK,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'click2sms':\n tracker.sendOptInFlowEvent('Click to sms');\n return {\n type: PossibleTypes.CLICK2SMS,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'ussd':\n tracker.sendOptInFlowEvent('USSD');\n return {\n type: PossibleTypes.USSD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n case 'credit-card':\n // @ts-ignore\n tracker.sendOptInFlowEvent('Credit card');\n return {\n type: PossibleTypes.CREDIT_CARD,\n result: RDS.Success({}),\n data: {\n config: strategyConfigs?.default?.flowConfig,\n strategy\n }\n };\n default:\n throw new Error('Strategy not supported');\n }\n});\n\nexport const setStrategyExtraData = createAsyncThunk(\n 'strategy/setStrategyExtraData',\n async ({ type, data }: { type: PossibleTypes; data: any }) => ({\n type,\n result: RDS.NothingYet(),\n data\n })\n);\n\nexport const strategySlice = createSlice({\n name: 'strategy',\n initialState,\n reducers: {\n // Define synchronous reducers as needed\n },\n extraReducers: (builder) => {\n // @ts-ignore\n builder\n .addCase(identifyStrategy.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Loading()\n };\n })\n // @ts-ignore\n .addCase(identifyStrategy.fulfilled, (state, action: PayloadAction<StrategyCurrentState>) => {\n state.currentState = action.payload;\n })\n .addCase(identifyStrategy.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_STRATEGY,\n result: RDS.Failure(action.error.message)\n };\n })\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.Loading()\n };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<StrategyCurrentState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_MSISDN,\n result: RDS.Failure(action.payload)\n };\n })\n .addCase(setStrategyExtraData.fulfilled, (state, action) => {\n state.currentState = action.payload;\n })\n .addCase(selectOperatorAction.pending, (state) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.Loading()\n };\n })\n .addCase(selectOperatorAction.fulfilled, (state, action: PayloadAction<any>) => {\n state.currentState = action.payload;\n })\n .addCase(selectOperatorAction.rejected, (state, action) => {\n state.currentState = {\n type: PossibleTypes.IDENTIFY_FLOW_BY_OPERATOR_SELECT,\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\nexport const selectStrategyState = (state: RootState) => state.strategy;\nexport const strategyReducer = strategySlice.reducer;\n","import * as RDS from '../../../common-types/RemoteDataState';\n\nimport { ISupportedFlows } from '../../../sharedFlowTypes/StrategyTypes';\nimport { getConfig } from '../../../utilities/getConfig';\nimport { tracker } from '../../../utilities/tracker';\nimport { getRedirectUrl } from '../api';\nimport { flowMapping, getTrackerEventName } from '../main';\n\nconst callRedirectApi = async () => {\n const configs = getConfig();\n const defaultConfig = configs?.strategyConfigs.default;\n const defaultFlowType = defaultConfig.flow as ISupportedFlows;\n const { slug, country, device } = defaultConfig.flowConfig;\n const { rockmanId } = window.pac_analytics.visitor;\n const { offer } = window.pac_analytics.visitor;\n try {\n const result = await getRedirectUrl({\n window,\n country,\n slug,\n device,\n offer,\n rockmanId\n });\n\n if (result.success === false) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n\n // OPERATOR NOT KNOWN\n\n // const operator = result?.operator && result?.operator !== 'unknown' ? result?.operator : null;\n\n if (result?.payload?.network_type === 'data') {\n // const flowObj = await determineFlowByOperator({\n // operator,\n // configs\n // });\n // const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName('oneClick');\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping.oneClick,\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null\n }\n };\n }\n if (result?.payload?.network_type === 'wifi') {\n // const flowObj = await determineFlowByOperator({\n // operator,\n // configs\n // });\n // const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName('moRedir');\n tracker.sendOptInFlowEvent(event);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null,\n skipRedirectCall: true\n }\n };\n }\n\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n redirect_url: result.redirect_url || null,\n skipRedirectCall: true\n }\n };\n } catch (ex) {\n console.error('error', ex);\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n};\n\nexport { callRedirectApi };\n","import * as RDS from '../../../common-types/RemoteDataState';\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 operator = search?.operator || window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.operator || null;\n\n const isHeaderEnrichmentSuccess =\n search?.msisdn !== '' || window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.msisdn !== '';\n const msisdn = search?.msisdn || window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.msisdn || null;\n\n if (isHeaderEnrichmentSuccess) {\n tracker.customEvent('Flow', 'advance-auto', 'msisdn-detected', {\n msisdn,\n operator\n });\n }\n if (operator === null) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig\n }\n };\n }\n\n if (configs.strategy === 'pin-header-enrichment' && isHeaderEnrichmentSuccess) {\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator,\n msisdn,\n isHeaderEnrichmentSuccess\n }\n };\n }\n\n if (window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult?.isContentBlocked) {\n window.isContentBlocked = true;\n tracker.customEvent('Flow', 'recede-auto', 'content-blocked', {\n errorType: 'ContentBlocked',\n error: 'ContentBlocked',\n message: 'ContentBlocked',\n ...window?.pac_analytics?.visitor?.heMsisdnDecryptedByApiResult\n });\n return {\n type: flowMapping[defaultFlowType],\n result: RDS.NothingYet(),\n data: {\n config: defaultConfig?.flowConfig,\n operator\n }\n };\n }\n let subscription_url = null;\n let redirect_url = null;\n\n const flowObj = await determineFlowByOperator({\n operator,\n configs\n });\n const flowType = flowObj.flow || defaultFlowType;\n const event = getTrackerEventName(flowType);\n\n tracker.sendOptInFlowEvent(event);\n\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","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","msisdn","_b","match","join","defaultFlowConfig","_c","strategyConfigs","default","config","flowConfig","operatorsConfig","_d","operators","indentifyFlow","__awaiter","_this","slug","country","device","rockmanId","pac_analytics","offer","identify","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","toString","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","encrypted_msisdn","is_encrypted_msisdn","clearTimeout","operator_code","removeEventListener","onFail_1","headerEnrichmentScript","error_details","addEventListener","heScriptUrl","dispatchEvent","Event","errorMessage","errorStack","stack","script","document","createElement","id","src","referrerPolicy","head","appendChild","onerror","err","isHeaderEnrichmentSuccess","initialState","currentState","IDENTIFY_STRATEGY","undefined","mockStrategyStateByUrlParam","search","searchToObject","subscription_url","identifyStrategy","ui_show_default_flow","show_custom_error","getRedirectUrl","payload","network_type","redirect_url","event_2","skipRedirectCall","heMsisdnDecryptedByApiResult","_j","_h","_g","_l","_k","_m","isContentBlocked","_p","_o","_q","searchObj","resonseUrl","decodedUrl","atob","newUrl_1","URL","urlParams_1","URLSearchParams","msisdn_1","get","operator_1","newUrl","urlParams","heResult","setStrategyExtraData","strategyReducer","createSlice","name","reducers","extraReducers","builder","addCase","pending","state","RDS.Loading","fulfilled","action","rejected","RDS.Failure","reducer"],"mappings":"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"}
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 p}from"./strategySlice-CPnzsspR.js";import"./helpers-xPhGBX-B.js";import"./updateUrlWithParams-C6-BX4TY.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.js";var v=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,p;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||"",p="".concat(f,"/tallyman/v1/?").concat(t.toString()),[2,fetch(p).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,p,v;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 p="ALREADY SUBSCRIBED"===f.message?"AlreadySubscribed":"InvalidMSISDN",(v=new Error("".concat(p,":\n").concat(f.message))).type=p,console.error(v),v;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"})}},j={currentState:{type:"MSISDNEntry",result:u()}},E=function(t){var r=l(t);if(!r["mock-flow"])return j;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"),j}}(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,p,v;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(p=r.sent(),console.warn(p),v=void 0,p.type){case"AlreadySubscribed":v="AlreadySubscribed";break;case"InvalidMSISDN":v="InvalidMSISDN";break;default:v="UnknownError"}return f.recedeInFlow("tallyman.v1-ussd","msisdn-submission-failure",{msisdn:i,errorType:v||"UnknownError"}),[2,l({errorType:v,productUrl:p.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(p())}catch(t){return console.warn(t),[2,o({errorType:"UnexpectedState"})]}return[2]}))}))})),D=o({name:"ussdFlow",initialState:E,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,v 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 p}from"./strategySlice-BqABgMaS.js";import"./helpers-xPhGBX-B.js";import"./updateUrlWithParams-C6-BX4TY.js";import"pacman-client";import"uuid";import"./getConfig.js";import"./formatNumberToE164-DaAFvpKD.js";import"./api-geirVksI.js";var v=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,p;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||"",p="".concat(f,"/tallyman/v1/?").concat(t.toString()),[2,fetch(p).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,p,v;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 p="ALREADY SUBSCRIBED"===f.message?"AlreadySubscribed":"InvalidMSISDN",(v=new Error("".concat(p,":\n").concat(f.message))).type=p,console.error(v),v;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"})}},j={currentState:{type:"MSISDNEntry",result:u()}},E=function(t){var r=l(t);if(!r["mock-flow"])return j;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"),j}}(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,p,v;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(p=r.sent(),console.warn(p),v=void 0,p.type){case"AlreadySubscribed":v="AlreadySubscribed";break;case"InvalidMSISDN":v="InvalidMSISDN";break;default:v="UnknownError"}return f.recedeInFlow("tallyman.v1-ussd","msisdn-submission-failure",{msisdn:i,errorType:v||"UnknownError"}),[2,l({errorType:v,productUrl:p.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(p())}catch(t){return console.warn(t),[2,o({errorType:"UnexpectedState"})]}return[2]}))}))})),D=o({name:"ussdFlow",initialState:E,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,v 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.128",
3
+ "version": "5.0.130",
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 o,__assign as r}from"tslib";import{createAsyncThunk as t,createSlice as n}from"@reduxjs/toolkit";import{N as i,S as l,L as d,F as s}from"./RemoteDataState-lcf8PfJd.js";import{searchToObject as a}from"./searchToObject.js";import{getConfig as u}from"./getConfig.js";import{q as c,t as v}from"./tracker-DaaILhEr.js";import{f}from"./formatNumberToE164-DaAFvpKD.js";import{i as p,g as w}from"./api-geirVksI.js";var y;function g(r){return e(this,void 0,void 0,(function(){var e,t,n,i,l;return o(this,(function(o){switch(o.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];o.label=1;case 1:return o.trys.push([1,3,,4]),t=window.location.host,n=window.DEV_BASE_URL_IP||t,[4,fetch("https://".concat(n,"/api/v1/ip").concat(e?"?mock-ip=".concat(e):"")).then((function(e){return e.json()}))];case 2:return i=o.sent(),r.ip=i.ip,r.ip_range_name=i.ip_range_name,[2,i.ip_range_name];case 3:return l=o.sent(),console.warn("IP Lookup failed",l),[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"}(y||(y={}));var m={mo:y.MO,pin:y.PIN,oneClick:y.ONE_CLICK,moRedir:y.MO_REDIR,click2sms:y.CLICK2SMS,ussd:y.USSD,tpayHe:y.TPAY_HE,creditCard:y.CREDIT_CARD},E={mo:"Msisdn to sms",pin:"Pin",oneClick:"3G click",moRedir:"Redirect",click2sms:"Click to sms",tpayHe:"Pin",ussd:"Msisdn to sms"},_=function(e){return E[e]};function h(t){var n,i,l,d,s=t.window,a=t.internationalMSISDN,u=t.configs;return e(this,void 0,void 0,(function(){var t,c,v,f,w,y,g,m,E,_,h=this;return o(this,(function(C){switch(C.label){case 0:if(!a)throw(_=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",_;return t=(null===(n=a.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,v=c.flowConfig,f=null===(l=null==u?void 0:u.strategyConfigs)||void 0===l?void 0:l.operators,w=function(){return e(h,void 0,void 0,(function(){var e,r,n,i,l;return o(this,(function(o){switch(o.label){case 0:return e=v.slug,r=v.country,n=v.device,i=s.pac_analytics.visitor.rockmanId,l=s.pac_analytics.visitor.offer,[4,p({window:s,slug:e,country:r,msisdn:t,device:n,offer:l,rockmanId:i})];case 1:return[2,o.sent()]}}))}))},[4,w()];case 1:if(y=C.sent(),g=f[y.operator]?f[y.operator]:null,m=!1===y.success&&"Operator could not be found for the given MSISDN"===y.message,E=!1===y.success&&-1!==(null===(d=y.message)||void 0===d?void 0:d.indexOf("HLR did not find the operator for given MSISDN")),m||E)throw(_=new Error("Error in submitMSISDN() identify action")).type="FlowDetectFailed",_.msisdn=t,_;if(null!==g)return[2,r({operator:y.operator,default:c},g)];if(null===g)return[2,r({operator:y.operator},c)];throw(_=new Error("Error in submitMSISDN() identify action")).type="SEInvalidMSISDN",_}}))}))}function C(e){var o,t,n=e.configs,i=e.operator,l=null===(o=null==n?void 0:n.strategyConfigs)||void 0===o?void 0:o.default,d=null===(t=null==n?void 0:n.strategyConfigs)||void 0===t?void 0:t.operators;return r({operator:null==i?void 0:i.toUpperCase(),default:l},d[null==i?void 0:i.toUpperCase()])}function S(r){var t=r.window,n=r.configs;return e(this,void 0,void 0,(function(){var e;return o(this,(function(o){switch(o.label){case 0:return[4,g(t.pac_analytics.visitor)];case 1:return e=o.sent(),[2,C({configs:n,operator:e&&e.includes("_")?e.toUpperCase():""})]}}))}))}var I=function(){return{type:y.IDENTIFY_FLOW_BY_MSISDN,result:i()}},D=t("strategy/submitMSISDNAction",(function(r,t){var n=r.window,l=r.msisdn,d=t.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,t,s,a,c,f,p,w;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),e=u(),[4,h({window:n,internationalMSISDN:l,configs:e})];case 1:return r=o.sent(),t=null==r?void 0:r.flow,s=_(t),a=null===(w=null==e?void 0:e.strategyConfigs)||void 0===w?void 0:w.default,c=null==a?void 0:a.flow,m[t]?(v.sendOptInFlowEvent(s),[2,{type:m[t],result:i(),data:{config:r.flowConfig,operator:r.operator,msisdn:l}}]):[2,{type:m[c],result:i(),data:{config:null==a?void 0:a.flowConfig}}];case 2:switch(f=o.sent(),p=void 0,f.type){case"SEAlreadySubscribed":p="AlreadySubscribed";break;case"SEInvalidMSISDN":p="InvalidMSISDN";break;default:p="UnknownError"}return[2,d({errorType:p,error:f,productUrl:f.productUrl})];case 3:return[2]}}))}))})),R=function(){var e=function(e){var o,r=e.configs,t=null===(o=null==r?void 0:r.strategyConfigs)||void 0===o?void 0:o.operators;return Object.keys(t)}({configs:u()});return{type:y.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:i(),data:{operators:e}}},T=t("strategy/selectOperatorAction",(function(r,t){var n=r.operator,l=t.rejectWithValue;return e(void 0,void 0,void 0,(function(){var e,r,t,d;return o(this,(function(o){try{return e=u(),r=C({configs:e,operator:n}),t=r.flow,d=_(t),v.sendOptInFlowEvent(d),[2,{type:m[t],result:i(),data:{config:r.flowConfig,operator:r.operator}}]}catch(e){return"UnkownError",[2,l({errorType:"UnkownError",error:e.toString()})]}return[2]}))}))})),k=function(r){return e(void 0,void 0,void 0,(function(){var e,t,n,l,d,s,a,c;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),e=u(),[4,S({window:window,configs:e})];case 1:return t=o.sent(),n=null===(c=null==e?void 0:e.strategyConfigs)||void 0===c?void 0:c.default,l=null==n?void 0:n.flow,t.flow||"all-flows-detect-operator-by-ip-or-ask-mobile-number"!==r&&"all-flows-ask-mobile-number"!==r?t.flow||"all-flows-detect-operator-by-ip-or-ask-operator"!==r?(d=t.flow,m[d]?(s=_(d),v.sendOptInFlowEvent(s),[2,{type:m[d],result:i(),data:{config:t.flowConfig,operator:t.operator,strategy:r,defaultConfig:n,defaultFlowType:l}}]):[2,{type:m[l],result:i(),data:{config:null==n?void 0:n.flowConfig,strategy:r}}]):[2,R()]:[2,I()];case 2:return a=o.sent(),console.error("error",a),[3,3];case 3:return[2]}}))}))},O=function(e,o){return{type:m[o]||y.PIN,result:i(),data:{config:e}}},b=function(r){var t=r.window;return e(void 0,void 0,void 0,(function(){var e,r,n,i,d;return o(this,(function(o){return e=u(),r=null==e?void 0:e.enableScriptTimer,n=e.strategyConfigs,i=null===(d=null==n?void 0:n.default)||void 0===d?void 0:d.flowConfig,[2,new Promise((function(e){var o,d,s,a;try{var c=null===(d=null===(o=null==t?void 0:t.pac_analytics)||void 0===o?void 0:o.visitor)||void 0===d?void 0:d.heMsisdn,p=null===(a=null===(s=null==t?void 0:t.pac_analytics)||void 0===s?void 0:s.visitor)||void 0===a?void 0:a.country;c&&p&&(c=f(c,p));var w,g=!1,m=!1;r&&(w=setTimeout((function(){var o;g||(m=!0,v.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"3 second timer expired"}),t.isPrelanderClicked=!0,e({type:y.PIN,result:l({}),data:{config:null===(o=null==n?void 0:n.default)||void 0===o?void 0:o.flowConfig}}))}),3e3));var E=function(o){var n=o.detail;if(c=null==n?void 0:n.msisdn,(null==n?void 0:n.msisdn)&&!(null==n?void 0:n.encrypted_msisdn)?(c=f(n.msisdn,p),t.msisdn=c):(t.msisdn=null==n?void 0:n.msisdn,t.is_encrypted_msisdn=null==n?void 0:n.encrypted_msisdn),r){if(!m){g=!0,clearTimeout(w),v.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c});var i=C({configs:u(),operator:null==n?void 0:n.operator_code});t.removeEventListener("he-success",E),t.removeEventListener("he-fail",_),e(F(i,c,null==n?void 0:n.operator_code,!0))}}else{v.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c,operator:null==n?void 0:n.operator_code});i=C({configs:u(),operator:null==n?void 0:n.operator_code});t.removeEventListener("he-success",E),t.removeEventListener("he-fail",_),e(F(i,c,null==n?void 0:n.operator_code,!0))}},_=function(o){var r=o.detail;v.customEvent("Flow","recede-auto","msisdn-detection-failure",null==r?void 0:r.error_details),t.removeEventListener("he-success",E),t.removeEventListener("he-fail",_),e(O(i,null==n?void 0:n.default.flow))};if(t.addEventListener("he-success",E),t.addEventListener("he-fail",_),!(null==t?void 0:t.heScriptUrl))return v.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error he script url not set"}),void t.dispatchEvent(new Event("he-fail"));t.addEventListener("error",(function(e){var o,r;console.error("Global error:",null==e?void 0:e.error),v.customEvent("Flow","recede-auto","global-error",{errorMessage:null===(o=null==e?void 0:e.error)||void 0===o?void 0:o.message,errorStack:null===(r=null==e?void 0:e.error)||void 0===r?void 0:r.stack})}));var h=document.createElement("script");h.type="text/javascript",h.id="he-js-link",h.src="".concat(t.heScriptUrl),h.referrerPolicy="origin",document.head.appendChild(h),h.onerror=function(e){console.error("Error loading Header Enrichment script."),v.customEvent("Flow","recede-auto","msisdn-detection-failure",{errorType:"Error loading Header Enrichment script",errorMessage:e.message}),t.dispatchEvent(new Event("he-fail"))}}catch(o){console.error("Error in header enrichment:",o),e(O(i,null==n?void 0:n.default.flow))}}))]}))}))},F=function(e,o,r,t){var n,l;void 0===o&&(o=null),void 0===r&&(r=null);var d=null===(n=u().strategyConfigs)||void 0===n?void 0:n.default,s=null==d?void 0:d.flow,a=e.flow||(null===(l=e.default)||void 0===l?void 0:l.flow),c=_(a);return v.sendOptInFlowEvent(c),e.flow?{type:m[a],result:i(),data:{config:e.flowConfig,operator:e.operator,isHeaderEnrichmentSuccess:t}}:{type:m[s],result:i(),data:{config:null==d?void 0:d.flowConfig,operator:r,msisdn:o,isHeaderEnrichmentSuccess:t}}};window.tracker=v;var N={currentState:{type:y.IDENTIFY_STRATEGY,result:i(),data:void 0}},L=function(){var e=a(window);if(void 0!==e["mock-flow"])switch(void 0!==e.operator&&(window.operator=e.operator),e["mock-flow"]){case"pin":return{type:y.PIN,result:l({})};case"mo":return{type:y.MO,result:l({})};case"moredir":return{type:y.MO_REDIR,result:l({})};case"oneclick":return{type:y.ONE_CLICK,result:l({}),data:{subscription_url:e["subscription-url"]}};case"click2sms":return{type:y.CLICK2SMS,result:l({})};case"ussd":return{type:y.USSD,result:l({})};case"creditcard":return{type:y.CREDIT_CARD,result:l({})};default:throw new Error("(mockStrategyStateByUrlParam) Strategy Mock Flow not supported")}},M=t("strategy/identifyStrategy",(function(){return e(void 0,void 0,void 0,(function(){var r,t,n,d,s,c,p,g,E,h,S,D,T,O,F,N;return o(this,(function(M){switch(M.label){case 0:return r=u(),t=r.strategy,n=r.strategyConfigs,void 0!==(d=a(window))["mock-flow"]?[2,L()]:"1"===d.ui_show_default_flow?(s=null==n?void 0:n.default.flow,c=null===(g=null==n?void 0:n.default)||void 0===g?void 0:g.flowConfig,[2,{type:m[s],result:i(),data:{config:c}}]):d["show-pin-entry"]&&"1"===d["show-pin-entry"]||d["show-thank-you"]&&"1"===d["show-thank-you"]||d.show_custom_error&&"1"===d.show_custom_error?(p=C({configs:r,operator:d.operator}),[2,{type:y.PIN,result:l({}),data:{config:(null==p?void 0:p.flowConfig)||(null===(E=null==n?void 0:n.default)||void 0===E?void 0:E.flowConfig)}}]):t.includes("ask-operator")?[2,R()]:t.includes("detect-operator-by-ip")?[2,k(t)]:(null==t?void 0:t.includes("ask-mobile-number"))?[2,I()]:(null==t?void 0:t.includes("detect-operator-by-redirect-api"))?[2,e(void 0,void 0,void 0,(function(){var e,r,t,n,l,d,s,a,c,f,p,y,g,E,h;return o(this,(function(o){switch(o.label){case 0:e=u(),r=null==e?void 0:e.strategyConfigs.default,t=r.flow,n=r.flowConfig,l=n.slug,d=n.country,s=n.device,a=window.pac_analytics.visitor.rockmanId,c=window.pac_analytics.visitor.offer,o.label=1;case 1:return o.trys.push([1,3,,4]),[4,w({window:window,country:d,slug:l,device:s,offer:c,rockmanId:a})];case 2:return!1===(f=o.sent()).success?[2,{type:m[t],result:i(),data:{config:null==r?void 0:r.flowConfig}}]:"data"===(null===(E=null==f?void 0:f.payload)||void 0===E?void 0:E.network_type)?(p=_("oneClick"),v.sendOptInFlowEvent(p),[2,{type:m.oneClick,result:i(),data:{config:null==r?void 0:r.flowConfig,redirect_url:f.redirect_url||null}}]):"wifi"===(null===(h=null==f?void 0:f.payload)||void 0===h?void 0:h.network_type)?(y=_("moRedir"),v.sendOptInFlowEvent(y),[2,{type:m[t],result:i(),data:{config:null==r?void 0:r.flowConfig,redirect_url:f.redirect_url||null,skipRedirectCall:!0}}]):[2,{type:m[t],result:i(),data:{config:null==r?void 0:r.flowConfig,redirect_url:f.redirect_url||null,skipRedirectCall:!0}}];case 3:return g=o.sent(),console.error("error",g),[2,{type:m[t],result:i(),data:{config:null==r?void 0:r.flowConfig}}];case 4:return[2]}}))}))]:(null==t?void 0:t.includes("header-enrichment"))&&"header-enrichment-script"!==t?[4,e(void 0,void 0,void 0,(function(){var r,t,n,l,d,s,c,p,w,y,g,E,h,S,I,D,R,T,k,O,b,F,N,L,M,Y;return o(this,(function(P){switch(P.label){case 0:r=u(),t=null==r?void 0:r.strategyConfigs.default,n=t.flow,P.label=1;case 1:return P.trys.push([1,5,,6]),l=a(window),d=(null==l?void 0:l.operator)||(null===(R=null===(D=null===(I=null===window||void 0===window?void 0:window.pac_analytics)||void 0===I?void 0:I.visitor)||void 0===D?void 0:D.heMsisdnDecryptedByApiResult)||void 0===R?void 0:R.operator)||null,s=""!==(null==l?void 0:l.msisdn)||""!==(null===(O=null===(k=null===(T=null===window||void 0===window?void 0:window.pac_analytics)||void 0===T?void 0:T.visitor)||void 0===k?void 0:k.heMsisdnDecryptedByApiResult)||void 0===O?void 0:O.msisdn),c=(null==l?void 0:l.msisdn)||(null===(N=null===(F=null===(b=null===window||void 0===window?void 0:window.pac_analytics)||void 0===b?void 0:b.visitor)||void 0===F?void 0:F.heMsisdnDecryptedByApiResult)||void 0===N?void 0:N.msisdn)||null,s&&((null===(Y=null===(M=null===(L=null===window||void 0===window?void 0:window.pac_analytics)||void 0===L?void 0:L.visitor)||void 0===M?void 0:M.heMsisdnDecryptedByApiResult)||void 0===Y?void 0:Y.isContentBlocked)&&(window.isContentBlocked=!0),v.customEvent("Flow","advance-auto","msisdn-detected",{msisdn:c,operator:d})),null===d?[2,{type:m[n],result:i(),data:{config:null==t?void 0:t.flowConfig}}]:"pin-header-enrichment"===r.strategy&&s?[2,{type:m[n],result:i(),data:{config:null==t?void 0:t.flowConfig,operator:d,msisdn:c,isHeaderEnrichmentSuccess:s}}]:(p=null,w=null,[4,C({operator:d,configs:r})]);case 2:return y=P.sent(),g=y.flow||n,E=_(g),v.sendOptInFlowEvent(E),"oneClick"!==g?[3,4]:[4,e(void 0,void 0,void 0,(function(){var e,r,t,n,i,l,d,s,u,c,v,p,w,y,g;return o(this,(function(o){if("undefined"==typeof window)throw new Error("This function can only be run in a browser environment.");if("false"===(e=a(window)).success)throw new Error("Error in getRedirectUrl() identify-user action:\n".concat(e.message||"NotOn3g"));return(r=e.subscription_url||e.redirect_url)?(t=window.atob(r),n=new URL(t),i=new URLSearchParams(n.search),l=i.get("msisdn")||e.msisdn,d=i.get("operator")||e.operator,l&&(l=f(l,null===(w=null===(p=null===window||void 0===window?void 0:window.pac_analytics)||void 0===p?void 0:p.visitor)||void 0===w?void 0:w.country)),[2,{msisdn:l||"",operator:d||"",subscription_url:e.subscription_url?t:void 0,redirect_url:e.redirect_url?t:void 0}]):(console.error("No URL provided for redirection in the url params"),s=new URL(window.location.href),u=new URLSearchParams(s.search),c=u.get("msisdn")||e.msisdn,v=u.get("operator")||e.operator,c&&(c=f(c,null===(g=null===(y=null===window||void 0===window?void 0:window.pac_analytics)||void 0===y?void 0:y.visitor)||void 0===g?void 0:g.country)),[2,{msisdn:c||"",operator:v||""}])}))}))];case 3:h=P.sent(),p=(null==h?void 0:h.subscription_url)||null,w=(null==h?void 0:h.redirect_url)||null,P.label=4;case 4:return[2,{type:m[g],result:i(),data:{config:y.flowConfig,operator:y.operator,subscription_url:p||null,redirect_url:w||null,isHeaderEnrichmentSuccess:s}}];case 5:return S=P.sent(),console.error("error",S),[2,{type:m[n],result:i(),data:{config:null==t?void 0:t.flowConfig}}];case 6:return[2]}}))}))]:[3,2];case 1:return[2,M.sent()];case 2:switch(t){case"header-enrichment-script":return[2,b({window:window})];case"pin":return v.sendOptInFlowEvent("Pin"),[2,{type:y.PIN,result:l({}),data:{config:null===(h=null==n?void 0:n.default)||void 0===h?void 0:h.flowConfig,strategy:t}}];case"mo":return v.sendOptInFlowEvent("Msisdn to sms"),[2,{type:y.MO,result:l({}),data:{config:null===(S=null==n?void 0:n.default)||void 0===S?void 0:S.flowConfig,strategy:t}}];case"mo-redir":return[2,{type:y.MO_REDIR,result:l({}),data:{config:null===(D=null==n?void 0:n.default)||void 0===D?void 0:D.flowConfig,strategy:t}}];case"one-click":return v.sendOptInFlowEvent("Redirect"),[2,{type:y.ONE_CLICK,result:l({}),data:{config:null===(T=null==n?void 0:n.default)||void 0===T?void 0:T.flowConfig,strategy:t}}];case"click2sms":return v.sendOptInFlowEvent("Click to sms"),[2,{type:y.CLICK2SMS,result:l({}),data:{config:null===(O=null==n?void 0:n.default)||void 0===O?void 0:O.flowConfig,strategy:t}}];case"ussd":return v.sendOptInFlowEvent("USSD"),[2,{type:y.USSD,result:l({}),data:{config:null===(F=null==n?void 0:n.default)||void 0===F?void 0:F.flowConfig,strategy:t}}];case"credit-card":return v.sendOptInFlowEvent("Credit card"),[2,{type:y.CREDIT_CARD,result:l({}),data:{config:null===(N=null==n?void 0:n.default)||void 0===N?void 0:N.flowConfig,strategy:t}}];default:throw new Error("Strategy not supported")}}}))}))})),Y=t("strategy/setStrategyExtraData",(function(r){var t=r.type,n=r.data;return e(void 0,void 0,void 0,(function(){return o(this,(function(e){return[2,{type:t,result:i(),data:n}]}))}))})),P=n({name:"strategy",initialState:N,reducers:{},extraReducers:function(e){e.addCase(M.pending,(function(e){e.currentState={type:y.IDENTIFY_STRATEGY,result:d()}})).addCase(M.fulfilled,(function(e,o){e.currentState=o.payload})).addCase(M.rejected,(function(e,o){e.currentState={type:y.IDENTIFY_STRATEGY,result:s(o.error.message)}})).addCase(D.pending,(function(e){e.currentState={type:y.IDENTIFY_FLOW_BY_MSISDN,result:d()}})).addCase(D.fulfilled,(function(e,o){e.currentState=o.payload})).addCase(D.rejected,(function(e,o){e.currentState={type:y.IDENTIFY_FLOW_BY_MSISDN,result:s(o.payload)}})).addCase(Y.fulfilled,(function(e,o){e.currentState=o.payload})).addCase(T.pending,(function(e){e.currentState={type:y.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:d()}})).addCase(T.fulfilled,(function(e,o){e.currentState=o.payload})).addCase(T.rejected,(function(e,o){e.currentState={type:y.IDENTIFY_FLOW_BY_OPERATOR_SELECT,result:s(o.payload)}}))}}).reducer;export{y as P,T as a,P as b,Y as c,m as f,M as i,D as s,g as t};
2
- //# sourceMappingURL=strategySlice-CPnzsspR.js.map