ouisys-engine 5.1.15 → 5.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/dist/RemoteDataState-CwHLI23e.js +75 -0
  2. package/dist/RemoteDataState-CwHLI23e.js.map +1 -0
  3. package/dist/api-oPdBWsMC.js +65 -0
  4. package/dist/api-oPdBWsMC.js.map +1 -0
  5. package/dist/checkSubscriptionHander.js +140 -1
  6. package/dist/checkSubscriptionHander.js.map +1 -1
  7. package/dist/cleanSearchParams-B2jK3H1j.js +16 -0
  8. package/dist/cleanSearchParams-B2jK3H1j.js.map +1 -0
  9. package/dist/click2smsFlow.js +252 -1
  10. package/dist/click2smsFlow.js.map +1 -1
  11. package/dist/creditCardFlow.js +331 -1
  12. package/dist/creditCardFlow.js.map +1 -1
  13. package/dist/formatNumberToE164-oPCiETQk.js +476 -0
  14. package/dist/formatNumberToE164-oPCiETQk.js.map +1 -0
  15. package/dist/getConfig.js +13 -1
  16. package/dist/getConfig.js.map +1 -1
  17. package/dist/handleSubmitNumber.js +50 -1
  18. package/dist/handleSubmitNumber.js.map +1 -1
  19. package/dist/handleWaterfallRedirect-h5K2zX3N.js +21 -0
  20. package/dist/handleWaterfallRedirect-h5K2zX3N.js.map +1 -0
  21. package/dist/helpers-BIBpnXln.js +29 -0
  22. package/dist/helpers-BIBpnXln.js.map +1 -0
  23. package/dist/initTPay.js +98 -1
  24. package/dist/initTPay.js.map +1 -1
  25. package/dist/loadScriptInnerHtml-CstJVRED.js +30 -0
  26. package/dist/loadScriptInnerHtml-CstJVRED.js.map +1 -0
  27. package/dist/main-8gjJCdrT.js +448 -0
  28. package/dist/main-8gjJCdrT.js.map +1 -0
  29. package/dist/moFlow.js +322 -1
  30. package/dist/moFlow.js.map +1 -1
  31. package/dist/moRedirFlow.js +329 -1
  32. package/dist/moRedirFlow.js.map +1 -1
  33. package/dist/normaliseErrorCode-CBLYxW-a.js +44 -0
  34. package/dist/normaliseErrorCode-CBLYxW-a.js.map +1 -0
  35. package/dist/oneClickFlow.js +710 -1
  36. package/dist/oneClickFlow.js.map +1 -1
  37. package/dist/pinFlow.js +542 -1
  38. package/dist/pinFlow.js.map +1 -1
  39. package/dist/searchToObject.js +9 -1
  40. package/dist/searchToObject.js.map +1 -1
  41. package/dist/src/common-types/Either.d.ts +9 -0
  42. package/dist/src/common-types/Either.d.ts.map +1 -0
  43. package/dist/src/common-types/ICheckSubscriptionResult.d.ts +12 -0
  44. package/dist/src/common-types/ICheckSubscriptionResult.d.ts.map +1 -0
  45. package/dist/src/common-types/IError.d.ts +5 -0
  46. package/dist/src/common-types/IError.d.ts.map +1 -0
  47. package/dist/src/common-types/IHash.d.ts +4 -0
  48. package/dist/src/common-types/IHash.d.ts.map +1 -0
  49. package/dist/src/common-types/IOptInFlowName.d.ts +2 -0
  50. package/dist/src/common-types/IOptInFlowName.d.ts.map +1 -0
  51. package/dist/src/common-types/ITracker.d.ts +10 -0
  52. package/dist/src/common-types/ITracker.d.ts.map +1 -0
  53. package/dist/src/common-types/IVisitor.d.ts +51 -0
  54. package/dist/src/common-types/IVisitor.d.ts.map +1 -0
  55. package/dist/src/common-types/RemoteDataState.d.ts +39 -0
  56. package/dist/src/common-types/RemoteDataState.d.ts.map +1 -0
  57. package/dist/src/common-types/Strategy.d.ts +49 -0
  58. package/dist/src/common-types/Strategy.d.ts.map +1 -0
  59. package/dist/src/flows/click2smsFlow/api.d.ts +13 -0
  60. package/dist/src/flows/click2smsFlow/api.d.ts.map +1 -0
  61. package/dist/src/flows/click2smsFlow/click2smsFlowSlice.d.ts +18 -0
  62. package/dist/src/flows/click2smsFlow/click2smsFlowSlice.d.ts.map +1 -0
  63. package/dist/src/flows/click2smsFlow/hooks/useClick2smsFlowState.d.ts +3 -0
  64. package/dist/src/flows/click2smsFlow/hooks/useClick2smsFlowState.d.ts.map +1 -0
  65. package/dist/src/flows/click2smsFlow/hooks/useKeyWordShortCode.d.ts +4 -0
  66. package/dist/src/flows/click2smsFlow/hooks/useKeyWordShortCode.d.ts.map +1 -0
  67. package/dist/src/flows/click2smsFlow/index.d.ts +6 -0
  68. package/dist/src/flows/click2smsFlow/index.d.ts.map +1 -0
  69. package/dist/src/flows/click2smsFlow/main.d.ts +4 -0
  70. package/dist/src/flows/click2smsFlow/main.d.ts.map +1 -0
  71. package/dist/src/flows/click2smsFlow/match.d.ts +7 -0
  72. package/dist/src/flows/click2smsFlow/match.d.ts.map +1 -0
  73. package/dist/src/flows/creditCardFlow/api.d.ts +26 -0
  74. package/dist/src/flows/creditCardFlow/api.d.ts.map +1 -0
  75. package/dist/src/flows/creditCardFlow/creditCardFlowSlice.d.ts +26 -0
  76. package/dist/src/flows/creditCardFlow/creditCardFlowSlice.d.ts.map +1 -0
  77. package/dist/src/flows/creditCardFlow/hooks/useCreditCardFlowState.d.ts +3 -0
  78. package/dist/src/flows/creditCardFlow/hooks/useCreditCardFlowState.d.ts.map +1 -0
  79. package/dist/src/flows/creditCardFlow/index.d.ts +5 -0
  80. package/dist/src/flows/creditCardFlow/index.d.ts.map +1 -0
  81. package/dist/src/flows/creditCardFlow/main.d.ts +8 -0
  82. package/dist/src/flows/creditCardFlow/main.d.ts.map +1 -0
  83. package/dist/src/flows/creditCardFlow/match.d.ts +7 -0
  84. package/dist/src/flows/creditCardFlow/match.d.ts.map +1 -0
  85. package/dist/src/flows/moFlow/api.d.ts +15 -0
  86. package/dist/src/flows/moFlow/api.d.ts.map +1 -0
  87. package/dist/src/flows/moFlow/hooks/useMoFlowState.d.ts +3 -0
  88. package/dist/src/flows/moFlow/hooks/useMoFlowState.d.ts.map +1 -0
  89. package/dist/src/flows/moFlow/index.d.ts +5 -0
  90. package/dist/src/flows/moFlow/index.d.ts.map +1 -0
  91. package/dist/src/flows/moFlow/main.d.ts +13 -0
  92. package/dist/src/flows/moFlow/main.d.ts.map +1 -0
  93. package/dist/src/flows/moFlow/match.d.ts +7 -0
  94. package/dist/src/flows/moFlow/match.d.ts.map +1 -0
  95. package/dist/src/flows/moFlow/moFlowSlice.d.ts +47 -0
  96. package/dist/src/flows/moFlow/moFlowSlice.d.ts.map +1 -0
  97. package/dist/src/flows/moRedirFlow/api.d.ts +18 -0
  98. package/dist/src/flows/moRedirFlow/api.d.ts.map +1 -0
  99. package/dist/src/flows/moRedirFlow/hooks/useMoRedirFlowState.d.ts +3 -0
  100. package/dist/src/flows/moRedirFlow/hooks/useMoRedirFlowState.d.ts.map +1 -0
  101. package/dist/src/flows/moRedirFlow/index.d.ts +5 -0
  102. package/dist/src/flows/moRedirFlow/index.d.ts.map +1 -0
  103. package/dist/src/flows/moRedirFlow/main.d.ts +8 -0
  104. package/dist/src/flows/moRedirFlow/main.d.ts.map +1 -0
  105. package/dist/src/flows/moRedirFlow/match.d.ts +7 -0
  106. package/dist/src/flows/moRedirFlow/match.d.ts.map +1 -0
  107. package/dist/src/flows/moRedirFlow/moRedirFlowSlice.d.ts +38 -0
  108. package/dist/src/flows/moRedirFlow/moRedirFlowSlice.d.ts.map +1 -0
  109. package/dist/src/flows/oneClickFlow/api.d.ts +22 -0
  110. package/dist/src/flows/oneClickFlow/api.d.ts.map +1 -0
  111. package/dist/src/flows/oneClickFlow/hooks/useOneClickFlowState.d.ts +3 -0
  112. package/dist/src/flows/oneClickFlow/hooks/useOneClickFlowState.d.ts.map +1 -0
  113. package/dist/src/flows/oneClickFlow/index.d.ts +5 -0
  114. package/dist/src/flows/oneClickFlow/index.d.ts.map +1 -0
  115. package/dist/src/flows/oneClickFlow/main.d.ts +15 -0
  116. package/dist/src/flows/oneClickFlow/main.d.ts.map +1 -0
  117. package/dist/src/flows/oneClickFlow/match.d.ts +8 -0
  118. package/dist/src/flows/oneClickFlow/match.d.ts.map +1 -0
  119. package/dist/src/flows/oneClickFlow/oneClickFlowSlice.d.ts +45 -0
  120. package/dist/src/flows/oneClickFlow/oneClickFlowSlice.d.ts.map +1 -0
  121. package/dist/src/flows/pinFlow/IPinConstants.d.ts +3 -0
  122. package/dist/src/flows/pinFlow/IPinConstants.d.ts.map +1 -0
  123. package/dist/src/flows/pinFlow/api.d.ts +39 -0
  124. package/dist/src/flows/pinFlow/api.d.ts.map +1 -0
  125. package/dist/src/flows/pinFlow/hooks/usePinFlowState.d.ts +3 -0
  126. package/dist/src/flows/pinFlow/hooks/usePinFlowState.d.ts.map +1 -0
  127. package/dist/src/flows/pinFlow/index.d.ts +5 -0
  128. package/dist/src/flows/pinFlow/index.d.ts.map +1 -0
  129. package/dist/src/flows/pinFlow/main.d.ts +10 -0
  130. package/dist/src/flows/pinFlow/main.d.ts.map +1 -0
  131. package/dist/src/flows/pinFlow/match.d.ts +8 -0
  132. package/dist/src/flows/pinFlow/match.d.ts.map +1 -0
  133. package/dist/src/flows/pinFlow/pinFlowSlice.d.ts +60 -0
  134. package/dist/src/flows/pinFlow/pinFlowSlice.d.ts.map +1 -0
  135. package/dist/src/flows/strategy/api.d.ts +40 -0
  136. package/dist/src/flows/strategy/api.d.ts.map +1 -0
  137. package/dist/src/flows/strategy/hooks/useStrategyState.d.ts +3 -0
  138. package/dist/src/flows/strategy/hooks/useStrategyState.d.ts.map +1 -0
  139. package/dist/src/flows/strategy/index.d.ts +8 -0
  140. package/dist/src/flows/strategy/index.d.ts.map +1 -0
  141. package/dist/src/flows/strategy/main.d.ts +29 -0
  142. package/dist/src/flows/strategy/main.d.ts.map +1 -0
  143. package/dist/src/flows/strategy/match.d.ts +16 -0
  144. package/dist/src/flows/strategy/match.d.ts.map +1 -0
  145. package/dist/src/flows/strategy/mocks/index.d.ts +7 -0
  146. package/dist/src/flows/strategy/mocks/index.d.ts.map +1 -0
  147. package/dist/src/flows/strategy/strategies/askMobileNumber.d.ts +25 -0
  148. package/dist/src/flows/strategy/strategies/askMobileNumber.d.ts.map +1 -0
  149. package/dist/src/flows/strategy/strategies/askOperator.d.ts +14 -0
  150. package/dist/src/flows/strategy/strategies/askOperator.d.ts.map +1 -0
  151. package/dist/src/flows/strategy/strategies/callRedirectApi.d.ts +28 -0
  152. package/dist/src/flows/strategy/strategies/callRedirectApi.d.ts.map +1 -0
  153. package/dist/src/flows/strategy/strategies/detectOperatorByIp.d.ts +15 -0
  154. package/dist/src/flows/strategy/strategies/detectOperatorByIp.d.ts.map +1 -0
  155. package/dist/src/flows/strategy/strategies/headerEnrichment.d.ts +52 -0
  156. package/dist/src/flows/strategy/strategies/headerEnrichment.d.ts.map +1 -0
  157. package/dist/src/flows/strategy/strategies/injectHeaderEnrichmentScript.d.ts +11 -0
  158. package/dist/src/flows/strategy/strategies/injectHeaderEnrichmentScript.d.ts.map +1 -0
  159. package/dist/src/flows/strategy/strategySlice.d.ts +26 -0
  160. package/dist/src/flows/strategy/strategySlice.d.ts.map +1 -0
  161. package/dist/src/flows/ussdFlow/api.d.ts +4 -0
  162. package/dist/src/flows/ussdFlow/api.d.ts.map +1 -0
  163. package/dist/src/flows/ussdFlow/hooks/useUssdFlowState.d.ts +3 -0
  164. package/dist/src/flows/ussdFlow/hooks/useUssdFlowState.d.ts.map +1 -0
  165. package/dist/src/flows/ussdFlow/index.d.ts +5 -0
  166. package/dist/src/flows/ussdFlow/index.d.ts.map +1 -0
  167. package/dist/src/flows/ussdFlow/main.d.ts +10 -0
  168. package/dist/src/flows/ussdFlow/main.d.ts.map +1 -0
  169. package/dist/src/flows/ussdFlow/match.d.ts +7 -0
  170. package/dist/src/flows/ussdFlow/match.d.ts.map +1 -0
  171. package/dist/src/flows/ussdFlow/ussdFlowSlice.d.ts +38 -0
  172. package/dist/src/flows/ussdFlow/ussdFlowSlice.d.ts.map +1 -0
  173. package/dist/src/index.d.ts +2 -0
  174. package/dist/src/index.d.ts.map +1 -0
  175. package/dist/src/ips/tryGetIPRangeName.d.ts +3 -0
  176. package/dist/src/ips/tryGetIPRangeName.d.ts.map +1 -0
  177. package/dist/src/pacman/index.d.ts +7 -0
  178. package/dist/src/pacman/index.d.ts.map +1 -0
  179. package/dist/src/pacman/queryString.d.ts +4 -0
  180. package/dist/src/pacman/queryString.d.ts.map +1 -0
  181. package/dist/src/sharedApi/checkSubscription.d.ts +13 -0
  182. package/dist/src/sharedApi/checkSubscription.d.ts.map +1 -0
  183. package/dist/src/sharedApi/checkSubscriptionByRockmanIdOnly.d.ts +7 -0
  184. package/dist/src/sharedApi/checkSubscriptionByRockmanIdOnly.d.ts.map +1 -0
  185. package/dist/src/sharedApi/unblockUser.d.ts +13 -0
  186. package/dist/src/sharedApi/unblockUser.d.ts.map +1 -0
  187. package/dist/src/sharedFlowTypes/Click2smsTypes.d.ts +79 -0
  188. package/dist/src/sharedFlowTypes/Click2smsTypes.d.ts.map +1 -0
  189. package/dist/src/sharedFlowTypes/CreditCardTypes.d.ts +74 -0
  190. package/dist/src/sharedFlowTypes/CreditCardTypes.d.ts.map +1 -0
  191. package/dist/src/sharedFlowTypes/MoRedirTypes.d.ts +29 -0
  192. package/dist/src/sharedFlowTypes/MoRedirTypes.d.ts.map +1 -0
  193. package/dist/src/sharedFlowTypes/MoTypes.d.ts +45 -0
  194. package/dist/src/sharedFlowTypes/MoTypes.d.ts.map +1 -0
  195. package/dist/src/sharedFlowTypes/OneClickTypes.d.ts +78 -0
  196. package/dist/src/sharedFlowTypes/OneClickTypes.d.ts.map +1 -0
  197. package/dist/src/sharedFlowTypes/PinTypes.d.ts +135 -0
  198. package/dist/src/sharedFlowTypes/PinTypes.d.ts.map +1 -0
  199. package/dist/src/sharedFlowTypes/StrategyTypes.d.ts +285 -0
  200. package/dist/src/sharedFlowTypes/StrategyTypes.d.ts.map +1 -0
  201. package/dist/src/sharedFlowTypes/UssdTypes.d.ts +32 -0
  202. package/dist/src/sharedFlowTypes/UssdTypes.d.ts.map +1 -0
  203. package/dist/src/utilities/addEmpelloToken.d.ts +5 -0
  204. package/dist/src/utilities/addEmpelloToken.d.ts.map +1 -0
  205. package/dist/src/utilities/addUrlParamAndReload.d.ts +4 -0
  206. package/dist/src/utilities/addUrlParamAndReload.d.ts.map +1 -0
  207. package/dist/src/utilities/bupperizeCountry.d.ts +3 -0
  208. package/dist/src/utilities/bupperizeCountry.d.ts.map +1 -0
  209. package/dist/src/utilities/checkSubscriptionHander.d.ts +10 -0
  210. package/dist/src/utilities/checkSubscriptionHander.d.ts.map +1 -0
  211. package/dist/src/utilities/cleanSearchParams.d.ts +2 -0
  212. package/dist/src/utilities/cleanSearchParams.d.ts.map +1 -0
  213. package/dist/src/utilities/countryToPhoneCode.d.ts +2 -0
  214. package/dist/src/utilities/countryToPhoneCode.d.ts.map +1 -0
  215. package/dist/src/utilities/formatNumberToE164.d.ts +9 -0
  216. package/dist/src/utilities/formatNumberToE164.d.ts.map +1 -0
  217. package/dist/src/utilities/getConfig.d.ts +4 -0
  218. package/dist/src/utilities/getConfig.d.ts.map +1 -0
  219. package/dist/src/utilities/handleSubmitNumber.d.ts +24 -0
  220. package/dist/src/utilities/handleSubmitNumber.d.ts.map +1 -0
  221. package/dist/src/utilities/handleWaterfallRedirect.d.ts +2 -0
  222. package/dist/src/utilities/handleWaterfallRedirect.d.ts.map +1 -0
  223. package/dist/src/utilities/hasNumber.d.ts +2 -0
  224. package/dist/src/utilities/hasNumber.d.ts.map +1 -0
  225. package/dist/src/utilities/helpers.d.ts +6 -0
  226. package/dist/src/utilities/helpers.d.ts.map +1 -0
  227. package/dist/src/utilities/initTpay.d.ts +2 -0
  228. package/dist/src/utilities/initTpay.d.ts.map +1 -0
  229. package/dist/src/utilities/isCookieExists.d.ts +2 -0
  230. package/dist/src/utilities/isCookieExists.d.ts.map +1 -0
  231. package/dist/src/utilities/loadScriptInnerHtml.d.ts +3 -0
  232. package/dist/src/utilities/loadScriptInnerHtml.d.ts.map +1 -0
  233. package/dist/src/utilities/loadScriptSrc.d.ts +20 -0
  234. package/dist/src/utilities/loadScriptSrc.d.ts.map +1 -0
  235. package/dist/src/utilities/normaliseErrorCode.d.ts +8 -0
  236. package/dist/src/utilities/normaliseErrorCode.d.ts.map +1 -0
  237. package/dist/src/utilities/normalizePhoneNumber.d.ts +12 -0
  238. package/dist/src/utilities/normalizePhoneNumber.d.ts.map +1 -0
  239. package/dist/src/utilities/replaceUrlParam.d.ts +2 -0
  240. package/dist/src/utilities/replaceUrlParam.d.ts.map +1 -0
  241. package/dist/src/utilities/searchToObject.d.ts +3 -0
  242. package/dist/src/utilities/searchToObject.d.ts.map +1 -0
  243. package/dist/src/utilities/storeMsisdn.d.ts +4 -0
  244. package/dist/src/utilities/storeMsisdn.d.ts.map +1 -0
  245. package/dist/src/utilities/tracker.d.ts +2 -0
  246. package/dist/src/utilities/tracker.d.ts.map +1 -0
  247. package/dist/src/utilities/unblockUser.d.ts +7 -0
  248. package/dist/src/utilities/unblockUser.d.ts.map +1 -0
  249. package/dist/src/utilities/updateUrlWithParams.d.ts +2 -0
  250. package/dist/src/utilities/updateUrlWithParams.d.ts.map +1 -0
  251. package/dist/src/utilities/verifyAntifraudOnClick2Sms.d.ts +6 -0
  252. package/dist/src/utilities/verifyAntifraudOnClick2Sms.d.ts.map +1 -0
  253. package/dist/storeMsisdn-ChiBh8mI.js +58 -0
  254. package/dist/storeMsisdn-ChiBh8mI.js.map +1 -0
  255. package/dist/strategy.js +49 -1
  256. package/dist/strategy.js.map +1 -1
  257. package/dist/strategySlice-DEsw1xc-.js +1159 -0
  258. package/dist/strategySlice-DEsw1xc-.js.map +1 -0
  259. package/dist/tracker-B_zsMRN2.js +79 -0
  260. package/dist/tracker-B_zsMRN2.js.map +1 -0
  261. package/dist/tracker.js +4 -1
  262. package/dist/tracker.js.map +1 -1
  263. package/dist/types/{StrategyTypes-BlqY9peI.d.ts → StrategyTypes-LKeXDiPK.d.ts} +78 -2
  264. package/dist/types/click2smsFlow.d.ts +2 -2
  265. package/dist/types/oneClickFlow.d.ts +10 -2
  266. package/dist/types/searchToObject.d.ts +2 -2
  267. package/dist/types/strategy.d.ts +3 -3
  268. package/dist/unblockUser.js +107 -1
  269. package/dist/unblockUser.js.map +1 -1
  270. package/dist/updateUrlWithParams-ZaZt1BCf.js +15 -0
  271. package/dist/updateUrlWithParams-ZaZt1BCf.js.map +1 -0
  272. package/dist/ussdFlow.js +261 -1
  273. package/dist/ussdFlow.js.map +1 -1
  274. package/dist/verifyAntifraudOnClick2Sms.js +50 -1
  275. package/dist/verifyAntifraudOnClick2Sms.js.map +1 -1
  276. package/package.json +1 -1
  277. package/dist/RemoteDataState-lcf8PfJd.js +0 -2
  278. package/dist/RemoteDataState-lcf8PfJd.js.map +0 -1
  279. package/dist/api-geirVksI.js +0 -2
  280. package/dist/api-geirVksI.js.map +0 -1
  281. package/dist/cleanSearchParams-Dl7ZDlew.js +0 -2
  282. package/dist/cleanSearchParams-Dl7ZDlew.js.map +0 -1
  283. package/dist/formatNumberToE164-DaAFvpKD.js +0 -2
  284. package/dist/formatNumberToE164-DaAFvpKD.js.map +0 -1
  285. package/dist/handleWaterfallRedirect-DztqrthA.js +0 -2
  286. package/dist/handleWaterfallRedirect-DztqrthA.js.map +0 -1
  287. package/dist/helpers-CBmogWIZ.js +0 -2
  288. package/dist/helpers-CBmogWIZ.js.map +0 -1
  289. package/dist/loadScriptInnerHtml-B6v2-IGn.js +0 -2
  290. package/dist/loadScriptInnerHtml-B6v2-IGn.js.map +0 -1
  291. package/dist/main-CDmeQMF-.js +0 -2
  292. package/dist/main-CDmeQMF-.js.map +0 -1
  293. package/dist/normaliseErrorCode-CVpyJZ6_.js +0 -2
  294. package/dist/normaliseErrorCode-CVpyJZ6_.js.map +0 -1
  295. package/dist/storeMsisdn-Cjq8_qYH.js +0 -2
  296. package/dist/storeMsisdn-Cjq8_qYH.js.map +0 -1
  297. package/dist/strategySlice-BMNt18ck.js +0 -2
  298. package/dist/strategySlice-BMNt18ck.js.map +0 -1
  299. package/dist/tracker-DaaILhEr.js +0 -2
  300. package/dist/tracker-DaaILhEr.js.map +0 -1
  301. package/dist/types/OneClickTypes-BNg9Ru0u.d.ts +0 -71
  302. package/dist/updateUrlWithParams-C6-BX4TY.js +0 -2
  303. package/dist/updateUrlWithParams-C6-BX4TY.js.map +0 -1
@@ -1,2 +1,330 @@
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 s,L as i,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-BMNt18ck.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 _(r){var e=r.msisdnEntry;return function(r){return r.type,e(r.result)}}var h=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},g=function(n){var a=n.window,s=n.slug,i=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,g,w;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({action:"redirect",slug:s,country:i,device:c,offerId:d.toString(),rockman_id:u,page:encodeURIComponent(a.location.href),antifraud_id:a.antifraud_id||"",antifraud_id_js_code:a.antifraud_id_js_code||"",antifraud_id_js_link:a.antifraud_id_js_link||"",network_type:l?"":"wifi",ip_address:a.pac_analytics.visitor.ip||"",ip_range_operator:a.pac_analytics.visitor.ipRangeOperator||""},(null===(w=null===(g=null===(h=a.pac_analytics)||void 0===h?void 0:h.visitor)||void 0===g?void 0:g.page)||void 0===w?void 0:w.includes("agency"))&&{evinaTi:u}),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||"",_="".concat(S,"/tallyman/v1/?").concat(n).concat(r).concat(m?"&".concat(m):""),s.includes("za-mtn-beyondvr-r7")?[2,{success:!0,rockman_id:u,redirect_url:_}]:[2,fetch(_).then((function(r){return r.json()}))]}))}))};function w(n,a,s,i){return r(this,void 0,void 0,(function(){var r;return e(this,(function(e){return r=t({offer:n.pac_analytics.visitor.offer},a||{}),[2,b(n,r,s,i)]}))}))}function b(t,n,a,s){return r(this,void 0,void 0,(function(){var r,i,o,c,d,l,m,f,p,y,S,_,h,w,b;return e(this,(function(e){switch(e.label){case 0:return r=n.slug,i=n.country,o=n.device,c=n.offer,d=t.location.search.substr(1)||"",l=s||{},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"!==i?[3,2]:[4,v(y)];case 1:return _=e.sent(),[3,3];case 2:_=null,e.label=3;case 3:return[4,g({window:t,slug:r,country:i,msisdn:p,device:o,offer:c,rockmanId:S,ip_range_name:_,search:d,extraParams:l})];case 4:if(!1===(h=e.sent()).success)throw w="ALREADY SUBSCRIBED"===h.message?"AlreadySubscribed":"InvalidMSISDN",(b=new Error("".concat(w,":\n").concat(h.message))).type=w,console.error(b),b;return[2,h.redirect_url]}}))}))}var I={currentState:{type:"MSISDNEntry",result:s({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,i=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,_,g,b,I,j;return e(this,(function(e){switch(e.label){case 0:if(r=c(),!(null===(I=null===(b=null===(g=null==r?void 0:r.strategy)||void 0===g?void 0:g.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:i}),u&&v?(y=f(v,{msisdn:h(i,null===(j=null==n?void 0:n.country)||void 0===j?void 0:j.toUpperCase())}),[3,4]):[3,2];case 2:return[4,w(a,n,i,o)];case 3:y=e.sent(),e.label=4;case 4:return p=y,m.advancedInFlow("tallyman.v1-mo-redir","msisdn-submission-success",{msisdn:i}),o&&o.storeMsisdn&&"true"===o.storeMsisdn?[4,l(i).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:s({href:p})}];case 7:switch(S=e.sent(),console.warn(S),_=void 0,S.type){case"AlreadySubscribed":_="AlreadySubscribed";break;case"InvalidMSISDN":_="InvalidMSISDN";break;default:_="UnknownError"}return m.recedeInFlow("tallyman.v1-mo-redir","msisdn-submission-failure",{msisdn:i,errorType:"UnknownError"}),[2,d({errorType:_,productUrl:S.productUrl})];case 8:return[2]}}))}))})),M=n("moRedirFlow/backToStartAction",(function(t,n){var a=n.dispatch,s=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,s({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:i()}})).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,_ as moRedirFlowMatch,F as moRedirFlowReducer,D as submitMSISDNAction,S as useMoRedirFlowState};
1
+ import { __awaiter, __generator, __assign } from 'tslib';
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { S as Success, L as Loading, F as Failure, N as NothingYet } from './RemoteDataState-CwHLI23e.js';
4
+ import { c as countryToPhoneCode } from './formatNumberToE164-oPCiETQk.js';
5
+ import { searchToObject } from './searchToObject.js';
6
+ import { s as storeMsisdn } from './storeMsisdn-ChiBh8mI.js';
7
+ import { t as tracker } from './tracker-B_zsMRN2.js';
8
+ import { u as updateUrlWithParams } from './updateUrlWithParams-ZaZt1BCf.js';
9
+ import { t as tryGetIPRangeName, i as identifyStrategy } from './strategySlice-DEsw1xc-.js';
10
+ import { c as cleanSearchParams } from './cleanSearchParams-B2jK3H1j.js';
11
+ import 'pacman-client';
12
+ import 'uuid';
13
+ import './getConfig.js';
14
+ import './api-oPdBWsMC.js';
15
+
16
+ var useMoRedirFlowState = function (useSelector) {
17
+ var currentState = useSelector(function (state) { return state.moRedirFlow.currentState; });
18
+ return currentState;
19
+ };
20
+
21
+ function moRedirFlowMatch(_a) {
22
+ var msisdnEntry = _a.msisdnEntry;
23
+ return function (state) {
24
+ switch (state.type) {
25
+ case 'MSISDNEntry':
26
+ return msisdnEntry(state.result);
27
+ default:
28
+ // TODO - this should be an error or something
29
+ return msisdnEntry(state.result);
30
+ }
31
+ };
32
+ }
33
+
34
+ /**
35
+ * Normalizes a phone number by:
36
+ * 1. Stripping non-digits.
37
+ * 2. Removing the known country code if provided (and present).
38
+ * 3. Ensuring the result has a leading '0'.
39
+ *
40
+ * @param phoneNumber The user-input phone number (e.g. "+971501234567").
41
+ * @param isoCountry (optional) ISO country code (e.g. "AE", "PK").
42
+ * @returns The normalized phone number with a leading '0'.
43
+ */
44
+ var normalizePhoneNumber = function (phoneNumber, isoCountry) {
45
+ // 1. Remove non-digit characters
46
+ var cleanedNumber = phoneNumber.replace(/\D/g, '');
47
+ // 2. If a specific country is given, try removing *that* country code
48
+ if (isoCountry && countryToPhoneCode[isoCountry]) {
49
+ var countryCode = countryToPhoneCode[isoCountry];
50
+ if (cleanedNumber.startsWith(countryCode)) {
51
+ cleanedNumber = cleanedNumber.substring(countryCode.length);
52
+ }
53
+ }
54
+ // 3. Add leading zero if it’s not already present
55
+ if (!cleanedNumber.startsWith('0') && cleanedNumber.length > 0) {
56
+ cleanedNumber = "0".concat(cleanedNumber);
57
+ }
58
+ return cleanedNumber;
59
+ };
60
+
61
+ var redirect = function (_a) {
62
+ var window = _a.window, slug = _a.slug, country = _a.country, msisdn = _a.msisdn, device = _a.device, offer = _a.offer, rockmanId = _a.rockmanId, ip_range_name = _a.ip_range_name, search = _a.search, extraParams = _a.extraParams, email = _a.email, password = _a.password;
63
+ return __awaiter(void 0, void 0, void 0, function () {
64
+ var extraParamsQs, params, host, url;
65
+ var _b, _c, _d;
66
+ return __generator(this, function (_e) {
67
+ // Remove conflicting params from url
68
+ search = cleanSearchParams(search);
69
+ extraParamsQs = "&".concat(Object.keys(extraParams)
70
+ .map(function (k) { return (extraParams[k] ? "".concat(k, "=").concat(extraParams[k]) : ''); })
71
+ .filter(Boolean)
72
+ .join('&'));
73
+ params = new URLSearchParams(__assign(__assign(__assign(__assign({ action: 'redirect', slug: slug, country: country, device: device, offerId: offer.toString(), rockman_id: rockmanId, page: encodeURIComponent(window.location.href), antifraud_id: window.antifraud_id || '',
74
+ // More specific antifraud IDs will eventuallly replace antifraud_id
75
+ // https://www.notion.so/sammedia/KW-Agency-Globocom-KW-ENTERTAINMENT-STORE-GAMESOLUTELY-GLING-Landing-Page-Test-a9841b14218b42709ffb1a2d41428275?d=f2a8d09b1e8c4fd4bdab69ab5dda1f25
76
+ antifraud_id_js_code: window.antifraud_id_js_code || '', antifraud_id_js_link: window.antifraud_id_js_link || '', network_type: ip_range_name ? '' : 'wifi', ip_address: window.pac_analytics.visitor.ip || '', ip_range_operator: window.pac_analytics.visitor.ipRangeOperator || '' }, (((_d = (_c = (_b = window.pac_analytics) === null || _b === void 0 ? void 0 : _b.visitor) === null || _c === void 0 ? void 0 : _c.page) === null || _d === void 0 ? void 0 : _d.includes('agency')) && { evinaTi: rockmanId })), (window.securityProcessId && { securityProcessId: window.securityProcessId })), (window.languageCode && { language_code: window.languageCode })), (email && password ? { email: email, password: password } : { msisdn: msisdn }))).toString();
77
+ host = window.DEV_BASE_URL || '';
78
+ url = "".concat(host, "/tallyman/v1/?").concat(params).concat(extraParamsQs).concat(search ? "&".concat(search) : '');
79
+ if (slug.includes('za-mtn-beyondvr-r7')) {
80
+ return [2 /*return*/, {
81
+ success: true,
82
+ rockman_id: rockmanId,
83
+ redirect_url: url
84
+ }];
85
+ }
86
+ return [2 /*return*/, fetch(url).then(function (x) { return x.json(); })];
87
+ });
88
+ });
89
+ };
90
+
91
+ function submitMSISDN(window, maybeConfig, internationalMSISDN, extraParams) {
92
+ return __awaiter(this, void 0, void 0, function () {
93
+ var config;
94
+ return __generator(this, function (_a) {
95
+ config = __assign({ offer: window.pac_analytics.visitor.offer }, (maybeConfig || {}));
96
+ return [2 /*return*/, submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams)];
97
+ });
98
+ });
99
+ }
100
+ function submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams) {
101
+ return __awaiter(this, void 0, void 0, function () {
102
+ var slug, country, device, offer, search, newExtraParams, isSkipValidation, searchObj, msisdn, visitor, rockmanId, ip_range_name, _a, result, type, error;
103
+ return __generator(this, function (_b) {
104
+ switch (_b.label) {
105
+ case 0:
106
+ slug = config.slug, country = config.country, device = config.device, offer = config.offer;
107
+ search = window.location.search.substr(1) || '';
108
+ newExtraParams = extraParams || {};
109
+ isSkipValidation = false;
110
+ searchObj = searchToObject(window);
111
+ if (((searchObj === null || searchObj === void 0 ? void 0 : searchObj.success) === 'true' && searchObj['msisdn-alias'] === '1') || window.is_encrypted_msisdn === true) {
112
+ // Search param is set to 1 for header enrichment when the msisdn is masked
113
+ newExtraParams.encrypted_msisdn = '1';
114
+ }
115
+ if (newExtraParams.encrypted_msisdn === '1') {
116
+ isSkipValidation = true;
117
+ }
118
+ msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\d+/gi).join('');
119
+ visitor = window.pac_analytics.visitor;
120
+ rockmanId = visitor.rockmanId;
121
+ if (!(country === 'ci')) return [3 /*break*/, 2];
122
+ return [4 /*yield*/, tryGetIPRangeName(visitor)];
123
+ case 1:
124
+ _a = _b.sent();
125
+ return [3 /*break*/, 3];
126
+ case 2:
127
+ _a = null;
128
+ _b.label = 3;
129
+ case 3:
130
+ ip_range_name = _a;
131
+ return [4 /*yield*/, redirect({
132
+ window: window,
133
+ slug: slug,
134
+ country: country,
135
+ msisdn: msisdn,
136
+ device: device,
137
+ offer: offer,
138
+ rockmanId: rockmanId,
139
+ ip_range_name: ip_range_name,
140
+ search: search,
141
+ extraParams: newExtraParams
142
+ })];
143
+ case 4:
144
+ result = _b.sent();
145
+ if (result.success === false) {
146
+ type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';
147
+ error = new Error("".concat(type, ":\n").concat(result.message));
148
+ error.type = type;
149
+ console.error(error);
150
+ throw error;
151
+ }
152
+ else {
153
+ return [2 /*return*/, result.redirect_url];
154
+ }
155
+ }
156
+ });
157
+ });
158
+ }
159
+
160
+ var mockedMSISDNEntrySuccess = {
161
+ currentState: {
162
+ type: 'MSISDNEntry',
163
+ result: Success({
164
+ href: '/product'
165
+ })
166
+ }
167
+ };
168
+ var mockedMSISDNEntryFailure = {
169
+ currentState: {
170
+ type: 'MSISDNEntry',
171
+ result: Failure({
172
+ errorType: 'InvalidMSISDN',
173
+ error: 'Invalid Mobile Number'
174
+ })
175
+ }
176
+ };
177
+ var defaultInitialState = {
178
+ currentState: {
179
+ type: 'MSISDNEntry',
180
+ result: NothingYet()
181
+ }
182
+ };
183
+ var setInitialState = function (window) {
184
+ var search = searchToObject(window);
185
+ if (search['mock-flow']) {
186
+ switch (search['current-state']) {
187
+ case 'msisdn-entry-failure-state':
188
+ return mockedMSISDNEntryFailure;
189
+ case 'msisdn-entry-success-state':
190
+ return mockedMSISDNEntrySuccess;
191
+ default:
192
+ console.error('Mock Flow not supported');
193
+ return defaultInitialState;
194
+ }
195
+ }
196
+ else {
197
+ return defaultInitialState;
198
+ }
199
+ };
200
+ var initialState = setInitialState(window);
201
+ /**
202
+ * submitMSISDNAction
203
+ * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}
204
+
205
+ * Calls redirec api that returns a redirect url
206
+ * Sets completed stated
207
+ */
208
+ var submitMSISDNAction = createAsyncThunk('moRedirFlow/submitMSISDNAction', function (_a, _b) {
209
+ var window = _a.window, msisdn = _a.msisdn, extraParams = _a.extraParams;
210
+ var getState = _b.getState, rejectWithValue = _b.rejectWithValue;
211
+ return __awaiter(void 0, void 0, void 0, function () {
212
+ var state, _c, config, skipRedirectCall, redirect_url, href, _d, ex_1, errorType;
213
+ var _e, _f, _g, _h;
214
+ return __generator(this, function (_j) {
215
+ switch (_j.label) {
216
+ case 0:
217
+ state = getState();
218
+ if (!((_g = (_f = (_e = state === null || state === void 0 ? void 0 : state.strategy) === null || _e === void 0 ? void 0 : _e.currentState) === null || _f === void 0 ? void 0 : _f.data) === null || _g === void 0 ? void 0 : _g.config)) {
219
+ return [2 /*return*/, rejectWithValue({
220
+ errorType: 'UnexpectedState'
221
+ })];
222
+ }
223
+ _c = state.strategy.currentState.data, config = _c.config, skipRedirectCall = _c.skipRedirectCall, redirect_url = _c.redirect_url;
224
+ _j.label = 1;
225
+ case 1:
226
+ _j.trys.push([1, 7, , 8]);
227
+ // Start Redirect Api Call
228
+ tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn: msisdn });
229
+ if (!(skipRedirectCall && redirect_url)) return [3 /*break*/, 2];
230
+ _d = updateUrlWithParams(redirect_url, { msisdn: normalizePhoneNumber(msisdn, (_h = config === null || config === void 0 ? void 0 : config.country) === null || _h === void 0 ? void 0 : _h.toUpperCase()) });
231
+ return [3 /*break*/, 4];
232
+ case 2: return [4 /*yield*/, submitMSISDN(window, config, msisdn, extraParams)];
233
+ case 3:
234
+ _d = _j.sent();
235
+ _j.label = 4;
236
+ case 4:
237
+ href = _d;
238
+ tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn: msisdn });
239
+ if (!(extraParams && extraParams.storeMsisdn && extraParams.storeMsisdn === 'true')) return [3 /*break*/, 6];
240
+ return [4 /*yield*/, storeMsisdn(msisdn)
241
+ .then(function (data) {
242
+ if (data && data.data && data.data.success) {
243
+ tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-success');
244
+ }
245
+ else {
246
+ tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-failed');
247
+ }
248
+ })
249
+ .catch(function (error) {
250
+ tracker.customEvent('Flow', 'advance-auto', 'msisdn-stored-error', error);
251
+ })];
252
+ case 5:
253
+ _j.sent();
254
+ _j.label = 6;
255
+ case 6:
256
+ // End Store Msisdn
257
+ return [2 /*return*/, {
258
+ type: 'MSISDNEntry',
259
+ result: Success({ href: href })
260
+ }];
261
+ case 7:
262
+ ex_1 = _j.sent();
263
+ console.warn(ex_1);
264
+ errorType = void 0;
265
+ switch (ex_1.type) {
266
+ case 'AlreadySubscribed':
267
+ errorType = 'AlreadySubscribed';
268
+ break;
269
+ case 'InvalidMSISDN':
270
+ errorType = 'InvalidMSISDN';
271
+ break;
272
+ default:
273
+ errorType = 'UnknownError';
274
+ }
275
+ tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {
276
+ msisdn: msisdn,
277
+ errorType: 'UnknownError'
278
+ });
279
+ return [2 /*return*/, rejectWithValue({
280
+ errorType: errorType,
281
+ productUrl: ex_1.productUrl
282
+ })];
283
+ case 8: return [2 /*return*/];
284
+ }
285
+ });
286
+ });
287
+ });
288
+ var backToStartAction = createAsyncThunk('moRedirFlow/backToStartAction', function (_, _a) {
289
+ var dispatch = _a.dispatch, rejectWithValue = _a.rejectWithValue;
290
+ return __awaiter(void 0, void 0, void 0, function () {
291
+ return __generator(this, function (_b) {
292
+ try {
293
+ tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');
294
+ dispatch(identifyStrategy());
295
+ }
296
+ catch (ex) {
297
+ console.warn(ex);
298
+ return [2 /*return*/, rejectWithValue({
299
+ errorType: 'UnexpectedState'
300
+ })];
301
+ }
302
+ return [2 /*return*/];
303
+ });
304
+ });
305
+ });
306
+ var moRedirFlowSlice = createSlice({
307
+ name: 'moRedirFlow',
308
+ initialState: initialState,
309
+ reducers: {},
310
+ extraReducers: function (builder) {
311
+ builder
312
+ .addCase(submitMSISDNAction.pending, function (state) {
313
+ state.currentState = { type: 'MSISDNEntry', result: Loading() };
314
+ })
315
+ .addCase(submitMSISDNAction.fulfilled, function (state, action) {
316
+ state.currentState = action.payload;
317
+ })
318
+ .addCase(submitMSISDNAction.rejected, function (state, action) {
319
+ state.currentState = {
320
+ type: 'MSISDNEntry',
321
+ result: Failure(action.payload)
322
+ };
323
+ });
324
+ }
325
+ });
326
+ // Export reducers and actions
327
+ var moRedirFlowReducer = moRedirFlowSlice.reducer; moRedirFlowSlice.actions;
328
+
329
+ export { backToStartAction, moRedirFlowMatch, moRedirFlowReducer, submitMSISDNAction, useMoRedirFlowState };
2
330
  //# sourceMappingURL=moRedirFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"moRedirFlow.js","sources":["../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../src/flows/moRedirFlow/match.ts","../src/utilities/normalizePhoneNumber.ts","../src/flows/moRedirFlow/api.ts","../src/flows/moRedirFlow/main.ts","../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { countryToPhoneCode } from './countryToPhoneCode';\n\n/**\n * Normalizes a phone number by:\n * 1. Stripping non-digits.\n * 2. Removing the known country code if provided (and present).\n * 3. Ensuring the result has a leading '0'.\n *\n * @param phoneNumber The user-input phone number (e.g. \"+971501234567\").\n * @param isoCountry (optional) ISO country code (e.g. \"AE\", \"PK\").\n * @returns The normalized phone number with a leading '0'.\n */\nexport const normalizePhoneNumber = (phoneNumber: string, isoCountry?: string): string => {\n // 1. Remove non-digit characters\n let cleanedNumber = phoneNumber.replace(/\\D/g, '');\n\n // 2. If a specific country is given, try removing *that* country code\n if (isoCountry && countryToPhoneCode[isoCountry]) {\n const countryCode = countryToPhoneCode[isoCountry];\n if (cleanedNumber.startsWith(countryCode)) {\n cleanedNumber = cleanedNumber.substring(countryCode.length);\n }\n } else {\n // (Optional) Fallback behavior if no valid isoCountry is passed:\n // e.g., check all known codes OR just do nothing special\n // For demonstration, we do nothing special:\n }\n\n // 3. Add leading zero if it’s not already present\n if (!cleanedNumber.startsWith('0') && cleanedNumber.length > 0) {\n cleanedNumber = `0${cleanedNumber}`;\n }\n\n return cleanedNumber;\n};\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IHash } from '../../sharedFlowTypes/StrategyTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParams,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParams: IHash;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n\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 network_type: ip_range_name ? '' : 'wifi',\n ip_address: window.pac_analytics.visitor.ip || '',\n ip_range_operator: window.pac_analytics.visitor.ipRangeOperator || '',\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.is_encrypted_msisdn === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams.encrypted_msisdn = '1';\n }\n\n if (newExtraParams.encrypted_msisdn === '1') {\n isSkipValidation = true;\n }\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParams: newExtraParams\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { normalizePhoneNumber } from '../../utilities/normalizePhoneNumber';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { updateUrlWithParams } from '../../utilities/updateUrlWithParams';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nconst mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nconst mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\nconst defaultInitialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, 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, skipRedirectCall, redirect_url } = state.strategy.currentState.data;\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href =\n skipRedirectCall && redirect_url\n ? updateUrlWithParams(redirect_url, { msisdn: normalizePhoneNumber(msisdn, config?.country?.toUpperCase()) })\n : await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\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 type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\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 default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\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>('moRedirFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["useMoRedirFlowState","useSelector","state","moRedirFlow","currentState","moRedirFlowMatch","_a","msisdnEntry","type","result","normalizePhoneNumber","phoneNumber","isoCountry","cleanedNumber","replace","countryToPhoneCode","countryCode","startsWith","substring","length","concat","redirect","window","slug","country","msisdn","device","offer","rockmanId","ip_range_name","search","extraParams","email","password","cleanSearchParams","extraParamsQs","Object","keys","map","k","filter","Boolean","join","params","URLSearchParams","__assign","action","offerId","toString","rockman_id","page","encodeURIComponent","location","href","antifraud_id","antifraud_id_js_code","antifraud_id_js_link","network_type","ip_address","pac_analytics","visitor","ip","ip_range_operator","ipRangeOperator","_d","_c","_b","includes","evinaTi","securityProcessId","languageCode","language_code","host","DEV_BASE_URL","url","success","redirect_url","fetch","then","x","json","submitMSISDN","maybeConfig","internationalMSISDN","config","submitMSISDNWithConfig","substr","newExtraParams","isSkipValidation","searchObj","searchToObject","is_encrypted_msisdn","encrypted_msisdn","match","tryGetIPRangeName","sent","message","error","Error","console","mockedMSISDNEntrySuccess","RDS.Success","mockedMSISDNEntryFailure","RDS.Failure","errorType","defaultInitialState","RDS.NothingYet","initialState","setInitialState","submitMSISDNAction","createAsyncThunk","getState","rejectWithValue","_g","_e","strategy","_f","data","skipRedirectCall","tracker","advancedInFlow","updateUrlWithParams","_h","toUpperCase","_j","storeMsisdn","customEvent","catch","warn","ex_1","recedeInFlow","productUrl","backToStartAction","_","dispatch","identifyStrategy","ex","moRedirFlowSlice","createSlice","name","reducers","extraReducers","builder","addCase","pending","RDS.Loading","fulfilled","payload","rejected","moRedirFlowReducer","reducer","actions"],"mappings":"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"}
1
+ {"version":3,"file":"moRedirFlow.js","sources":["../../src/flows/moRedirFlow/hooks/useMoRedirFlowState.ts","../../src/flows/moRedirFlow/match.ts","../../src/utilities/normalizePhoneNumber.ts","../../src/flows/moRedirFlow/api.ts","../../src/flows/moRedirFlow/main.ts","../../src/flows/moRedirFlow/moRedirFlowSlice.ts"],"sourcesContent":["import { useSelector as IuseSelector } from 'react-redux';\nimport { RootState } from '../../../sharedFlowTypes/StrategyTypes';\n\nexport const useMoRedirFlowState = (useSelector: typeof IuseSelector) => {\n const currentState = useSelector((state: RootState) => state.moRedirFlow.currentState);\n return currentState;\n};\n","import * as RDS from '../../common-types/RemoteDataState';\nimport { MoRedirFlowCurrentState, MSISDNEntryFailure, MSISDNEntrySuccess } from '../../sharedFlowTypes/MoRedirTypes';\n\nfunction moRedirFlowMatch<R>({\n msisdnEntry\n}: {\n msisdnEntry: (rds: RDS.RemoteDataState<MSISDNEntryFailure, MSISDNEntrySuccess>) => R;\n}): (state: MoRedirFlowCurrentState) => R {\n return (state) => {\n switch (state.type) {\n case 'MSISDNEntry':\n return msisdnEntry(state.result);\n default:\n // TODO - this should be an error or something\n return msisdnEntry(state.result);\n }\n };\n}\n\nexport { moRedirFlowMatch };\n","import { countryToPhoneCode } from './countryToPhoneCode';\n\n/**\n * Normalizes a phone number by:\n * 1. Stripping non-digits.\n * 2. Removing the known country code if provided (and present).\n * 3. Ensuring the result has a leading '0'.\n *\n * @param phoneNumber The user-input phone number (e.g. \"+971501234567\").\n * @param isoCountry (optional) ISO country code (e.g. \"AE\", \"PK\").\n * @returns The normalized phone number with a leading '0'.\n */\nexport const normalizePhoneNumber = (phoneNumber: string, isoCountry?: string): string => {\n // 1. Remove non-digit characters\n let cleanedNumber = phoneNumber.replace(/\\D/g, '');\n\n // 2. If a specific country is given, try removing *that* country code\n if (isoCountry && countryToPhoneCode[isoCountry]) {\n const countryCode = countryToPhoneCode[isoCountry];\n if (cleanedNumber.startsWith(countryCode)) {\n cleanedNumber = cleanedNumber.substring(countryCode.length);\n }\n } else {\n // (Optional) Fallback behavior if no valid isoCountry is passed:\n // e.g., check all known codes OR just do nothing special\n // For demonstration, we do nothing special:\n }\n\n // 3. Add leading zero if it’s not already present\n if (!cleanedNumber.startsWith('0') && cleanedNumber.length > 0) {\n cleanedNumber = `0${cleanedNumber}`;\n }\n\n return cleanedNumber;\n};\n","import { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IHash } from '../../sharedFlowTypes/StrategyTypes';\nimport { cleanSearchParams } from '../../utilities/cleanSearchParams';\n\nconst redirect = async ({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParams,\n email,\n password\n}: {\n window: Window;\n slug: string;\n country: string;\n msisdn?: string;\n device: string;\n offer: string;\n rockmanId: string;\n ip_range_name?: string;\n search: string;\n extraParams: IHash;\n email?: string;\n password?: string;\n}): Promise<IMSISDNSubmissionResult> => {\n // Remove conflicting params from url\n search = cleanSearchParams(search);\n const extraParamsQs = `&${Object.keys(extraParams)\n .map((k) => (extraParams[k] ? `${k}=${extraParams[k]}` : ''))\n .filter(Boolean)\n .join('&')}`;\n\n const params = new URLSearchParams({\n action: 'redirect',\n slug,\n country,\n device,\n offerId: offer.toString(),\n rockman_id: rockmanId,\n page: encodeURIComponent(window.location.href),\n\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 network_type: ip_range_name ? '' : 'wifi',\n ip_address: window.pac_analytics.visitor.ip || '',\n ip_range_operator: window.pac_analytics.visitor.ipRangeOperator || '',\n ...(window.pac_analytics?.visitor?.page?.includes('agency') && { evinaTi: rockmanId }),\n ...(window.securityProcessId && { securityProcessId: window.securityProcessId }),\n ...(window.languageCode && { language_code: window.languageCode }),\n ...(email && password ? { email, password } : { msisdn })\n }).toString();\n\n const host = window.DEV_BASE_URL || '';\n const url = `${host}/tallyman/v1/?${params}${extraParamsQs}${search ? `&${search}` : ''}`;\n\n if (slug.includes('za-mtn-beyondvr-r7')) {\n return {\n success: true,\n rockman_id: rockmanId,\n redirect_url: url\n };\n }\n\n return fetch(url).then((x) => x.json());\n};\n\nexport { redirect };\n","import { IError } from '../../common-types/IError';\nimport tryGetIPRangeName from '../../ips/tryGetIPRangeName';\nimport { IMSISDNSubmissionResult } from '../../sharedFlowTypes/MoRedirTypes';\nimport { IConfig, IStrategyIDentifyUserResult } from '../../sharedFlowTypes/StrategyTypes';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { redirect } from './api';\n\nexport default async function submitMSISDN(\n window: Window,\n maybeConfig: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const config: IConfig = { offer: window.pac_analytics.visitor.offer, ...(maybeConfig || {}) };\n return submitMSISDNWithConfig(window, config, internationalMSISDN, extraParams);\n}\n\nexport async function submitMSISDNWithConfig(\n window: Window,\n config: IConfig,\n internationalMSISDN: string,\n extraParams?: { [key: string]: string }\n): Promise<string> {\n const { slug, country, device, offer } = config;\n const search = window.location.search.substr(1) || '';\n\n const newExtraParams = extraParams || {};\n let isSkipValidation = false;\n const searchObj = searchToObject(window) as IStrategyIDentifyUserResult;\n if ((searchObj?.success === 'true' && searchObj['msisdn-alias'] === '1') || window.is_encrypted_msisdn === true) {\n // Search param is set to 1 for header enrichment when the msisdn is masked\n newExtraParams.encrypted_msisdn = '1';\n }\n\n if (newExtraParams.encrypted_msisdn === '1') {\n isSkipValidation = true;\n }\n const msisdn = isSkipValidation ? internationalMSISDN || window.msisdn : internationalMSISDN.match(/\\d+/gi).join(''); // tallyman API expects international msisdn without any special character\n\n const { visitor } = window.pac_analytics;\n const { rockmanId } = visitor;\n\n const ip_range_name = country === 'ci' ? await tryGetIPRangeName(visitor) : null;\n const result: IMSISDNSubmissionResult = await redirect({\n window,\n slug,\n country,\n msisdn,\n device,\n offer,\n rockmanId,\n ip_range_name,\n search,\n extraParams: newExtraParams\n });\n\n if (result.success === false) {\n const type = result.message === 'ALREADY SUBSCRIBED' ? 'AlreadySubscribed' : 'InvalidMSISDN';\n const error = new Error(`${type}:\\n${result.message}`) as IError & { type: string };\n error.type = type;\n console.error(error);\n throw error;\n } else {\n return result.redirect_url;\n }\n}\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { IHash } from '../../common-types/IHash';\nimport * as RDS from '../../common-types/RemoteDataState';\nimport {\n MoRedirFlowState,\n MSISDNEntryErrorTypes,\n MSISDNEntryFailure,\n MSISDNEntryState,\n MSISDNEntrySuccess\n} from '../../sharedFlowTypes/MoRedirTypes';\nimport { IMockFlowParams, RootState } from '../../sharedFlowTypes/StrategyTypes';\nimport { normalizePhoneNumber } from '../../utilities/normalizePhoneNumber';\nimport { searchToObject } from '../../utilities/searchToObject';\nimport { storeMsisdn } from '../../utilities/storeMsisdn';\nimport { tracker } from '../../utilities/tracker';\nimport { updateUrlWithParams } from '../../utilities/updateUrlWithParams';\nimport { identifyStrategy } from '../strategy';\nimport submitMSISDN from './main';\n\nconst mockedMSISDNEntrySuccess: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({\n href: '/product'\n })\n }\n};\n\nconst mockedMSISDNEntryFailure: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.Failure<MSISDNEntryFailure, MSISDNEntrySuccess>({\n errorType: 'InvalidMSISDN',\n error: 'Invalid Mobile Number'\n })\n }\n};\n\nconst defaultInitialState: MoRedirFlowState = {\n currentState: {\n type: 'MSISDNEntry',\n result: RDS.NothingYet()\n }\n};\n\nconst setInitialState = (window: Window) => {\n const search = searchToObject(window) as IMockFlowParams<any>;\n if (search['mock-flow']) {\n switch (search['current-state']) {\n case 'msisdn-entry-failure-state':\n return mockedMSISDNEntryFailure;\n case 'msisdn-entry-success-state':\n return mockedMSISDNEntrySuccess;\n default:\n console.error('Mock Flow not supported');\n return defaultInitialState;\n }\n } else {\n return defaultInitialState;\n }\n};\n\nconst initialState = setInitialState(window);\n\ninterface SubmitMSISDNArgs {\n window: Window;\n msisdn: string;\n extraParams?: IHash;\n}\n/**\n * submitMSISDNAction\n * @returns {type: ' 'pinFlow/submitMSISDNAction', payload: {type: PossibleTypes, result: MSISDNEntryState}}\n \n * Calls redirec api that returns a redirect url\n * Sets completed stated\n */\nexport const submitMSISDNAction = createAsyncThunk<\n MSISDNEntryState,\n SubmitMSISDNArgs,\n {\n rejectValue: MSISDNEntryFailure;\n }\n>('moRedirFlow/submitMSISDNAction', async ({ window, msisdn, 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, skipRedirectCall, redirect_url } = state.strategy.currentState.data;\n try {\n // Start Redirect Api Call\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submitted', { msisdn });\n const href =\n skipRedirectCall && redirect_url\n ? updateUrlWithParams(redirect_url, { msisdn: normalizePhoneNumber(msisdn, config?.country?.toUpperCase()) })\n : await submitMSISDN(window, config, msisdn, extraParams);\n tracker.advancedInFlow('tallyman.v1-mo-redir', 'msisdn-submission-success', { msisdn });\n // End Redirect Api Call\n\n // Start Store Msisdn\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 type: 'MSISDNEntry',\n result: RDS.Success<MSISDNEntryFailure, MSISDNEntrySuccess>({ href })\n };\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 default:\n errorType = 'UnknownError';\n }\n\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'msisdn-submission-failure', {\n msisdn,\n errorType: 'UnknownError'\n });\n\n return rejectWithValue({\n errorType,\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>('moRedirFlow/backToStartAction', async (_, { dispatch, rejectWithValue }) => {\n try {\n tracker.recedeInFlow('tallyman.v1-mo-redir', 'mo-redir-state', 'requested to change phone number');\n dispatch(identifyStrategy());\n } catch (ex) {\n console.warn(ex);\n return rejectWithValue({\n errorType: 'UnexpectedState'\n });\n }\n});\n\nconst moRedirFlowSlice = createSlice({\n name: 'moRedirFlow',\n initialState,\n reducers: {},\n extraReducers: (builder) => {\n builder\n .addCase(submitMSISDNAction.pending, (state) => {\n state.currentState = { type: 'MSISDNEntry', result: RDS.Loading() };\n })\n .addCase(submitMSISDNAction.fulfilled, (state, action: PayloadAction<MSISDNEntryState>) => {\n state.currentState = action.payload;\n })\n .addCase(submitMSISDNAction.rejected, (state, action: PayloadAction<MSISDNEntryFailure>) => {\n state.currentState = {\n type: 'MSISDNEntry',\n result: RDS.Failure(action.payload)\n };\n });\n }\n});\n\n// Export reducers and actions\nexport const { reducer: moRedirFlowReducer, actions: moRedirFlowActions } = moRedirFlowSlice;\n\n// If you have selectors or thunks related to this slice, export them as named exports as well\nexport const selectMoRedirFlowState = (state: any) => state.moRedirFlow;\n"],"names":["RDS.Success","RDS.Failure","RDS.NothingYet","RDS.Loading"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ // Map of code → type
2
+ var ERROR_CODE_MAP = {
3
+ '1': 'Success',
4
+ '2': 'Pending',
5
+ '10': 'AlreadySubscribed',
6
+ '11': 'BlacklistedMsisdn',
7
+ '12': 'DuplicatedRequest',
8
+ '21': 'ExpiredPin',
9
+ '22': 'InvalidPin',
10
+ '23': 'PinLimitExceeded',
11
+ '24': 'PinGenerationError',
12
+ '25': 'PinAlreadyUsed',
13
+ '31': 'InactiveOperator',
14
+ '32': 'InvalidMSISDN',
15
+ '33': 'InvalidSubscriptionId',
16
+ '34': 'NotEligibleMsisdn',
17
+ '35': 'ValidationIssue',
18
+ '36': 'InsufficientBalance',
19
+ '37': 'AntiFraudError',
20
+ '38': 'VasBlocked',
21
+ '39': 'AccountSuspended',
22
+ '40': 'SalesCapReached',
23
+ '50': 'SubscriptionApiFailure',
24
+ '75': 'ReSubscriptionBlocked',
25
+ '76': 'ReLeadBlocked',
26
+ '99': 'UnspecifiedError'
27
+ };
28
+ /**
29
+ * Normalise a raw error code string into its semantic ErrorType.
30
+ * Falls back to 'Unknown' if the code isn’t in the map.
31
+ */
32
+ var normaliseErrorCode = function (errorCode) { var _a; return (_a = ERROR_CODE_MAP[errorCode]) !== null && _a !== void 0 ? _a : 'UnknownError'; };
33
+ var redirectErrorTypes = [
34
+ 'AlreadySubscribed',
35
+ 'SalesCapReached',
36
+ 'AntiFraudError',
37
+ 'BlacklistedMsisdn',
38
+ 'VasBlocked',
39
+ 'NotEligibleMsisdn',
40
+ 'UnspecifiedError'
41
+ ];
42
+
43
+ export { normaliseErrorCode as n, redirectErrorTypes as r };
44
+ //# sourceMappingURL=normaliseErrorCode-CBLYxW-a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normaliseErrorCode-CBLYxW-a.js","sources":["../../src/utilities/normaliseErrorCode.ts"],"sourcesContent":["// Define the allowed return values as a union (optional, but gives you autocomplete/validation)\nexport type ErrorType =\n | 'Success'\n | 'Pending'\n | 'AlreadySubscribed'\n | 'BlacklistedMsisdn'\n | 'DuplicatedRequest'\n | 'ExpiredPin'\n | 'InvalidPin'\n | 'PinLimitExceeded'\n | 'PinGenerationError'\n | 'PinAlreadyUsed'\n | 'InactiveOperator'\n | 'InvalidMSISDN'\n | 'InvalidSubscriptionId'\n | 'NotEligibleMsisdn'\n | 'ValidationIssue'\n | 'InsufficientBalance'\n | 'AntiFraudError'\n | 'VasBlocked'\n | 'AccountSuspended'\n | 'SalesCapReached'\n | 'SubscriptionApiFailure'\n | 'ReSubscriptionBlocked'\n | 'ReLeadBlocked'\n | 'UnspecifiedError'\n | 'UnexpectedState'\n | 'SomethingWentWrong'\n | 'TPayConfirmError'\n | 'UnknownError'\n | string;\n// Map of code → type\nconst ERROR_CODE_MAP: Record<string, ErrorType> = {\n '1': 'Success',\n '2': 'Pending',\n '10': 'AlreadySubscribed',\n '11': 'BlacklistedMsisdn',\n '12': 'DuplicatedRequest',\n '21': 'ExpiredPin',\n '22': 'InvalidPin',\n '23': 'PinLimitExceeded',\n '24': 'PinGenerationError',\n '25': 'PinAlreadyUsed',\n '31': 'InactiveOperator',\n '32': 'InvalidMSISDN',\n '33': 'InvalidSubscriptionId',\n '34': 'NotEligibleMsisdn',\n '35': 'ValidationIssue',\n '36': 'InsufficientBalance',\n '37': 'AntiFraudError',\n '38': 'VasBlocked',\n '39': 'AccountSuspended',\n '40': 'SalesCapReached',\n '50': 'SubscriptionApiFailure',\n '75': 'ReSubscriptionBlocked',\n '76': 'ReLeadBlocked',\n '99': 'UnspecifiedError'\n};\n\n/**\n * Normalise a raw error code string into its semantic ErrorType.\n * Falls back to 'Unknown' if the code isn’t in the map.\n */\nexport const normaliseErrorCode = (errorCode: string): ErrorType => ERROR_CODE_MAP[errorCode] ?? 'UnknownError';\n\nexport const redirectErrorTypes: ErrorType[] = [\n 'AlreadySubscribed',\n 'SalesCapReached',\n 'AntiFraudError',\n 'BlacklistedMsisdn',\n 'VasBlocked',\n 'NotEligibleMsisdn',\n 'UnspecifiedError'\n];\n"],"names":[],"mappings":"AA+BA;AACA,IAAM,cAAc,GAA8B;AAChD,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,oBAAoB;AAC1B,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,uBAAuB;AAC7B,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,IAAI,EAAE,kBAAkB;AACxB,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,IAAI,EAAE,uBAAuB;AAC7B,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,IAAI,EAAE,kBAAkB;CACzB,CAAC;AAEF;;;AAGG;AACU,IAAA,kBAAkB,GAAG,UAAC,SAAiB,EAAgB,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,EAAA,GAAA,cAAc,CAAC,SAAS,CAAC,mCAAI,cAAc,CAAA,GAAC;AAEnG,IAAA,kBAAkB,GAAgB;IAC7C,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,YAAY;IACZ,mBAAmB;IACnB,kBAAkB;;;;;"}